Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
эл.лекции.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
6.74 Mб
Скачать

Синтаксический анализ с возвратами

Домашнее задание: Самостоятельно рассмотреть алгоритмы восходя­щего и нисходящего анализа с возвратами.

2.3. Общие методы синтаксического анализа универсальные методы синтаксического анализа. Табличные методы синтаксического анализа Алгоритм Кока-Янгера-Касами

Метод работает следующим образом. Пусть - КС-грамматика без пустых правил (ВСЕХ!) в нормальной форме Хомского. Пусть - входная цепочка, которую нужно разобрать согласно грамматике . Суть метода состоит в построении треугольной таблицы разбора , элементы которой обозначим , где , . Значениями переменных будут подмножества множества , т.е. . Нетерминал тогда и только тогда, когда , т.е. когда из выводятся входных символов, начиная с позиции . В частности, входная цепочка тогда и только тогда, когда .

Алгоритм разбора Кока-Янгера-Касами

Вход: КС-грамматика в нормальной форме Хомского без пустых правил (ВСЕХ!!!) и входная цепочка .

Выход: Таблица разбора для цепочки , такая, что. тогда и только тогда, когда

Метод:

  1. Положить . Очевидно, что .

  2. Допустим, что уже вычислены . Тогда

Так как , то и . Таким образом, и вычисляются раньше, чем . После этого из следует, что

  1. Повторяем шаг 3 до тех пор, пока не станут известны .

Пример №1

Задание.

Пусть задана грамматика в нормальной форме Хомского с правилами

и пусть - входная цепочка.

Решение.

Таблица разбора для данной цепочки строится следующим образом. Выполняем шаг 1 алгоритма, т.е. определяем элементы :

.

Таблица разбора будет выглядеть следующим образом

1

2

3

4

5

1

2

3

4

`5

Выполняем шаг 2 при .

Для получаем

,

т.к.

.

Для получаем

,

т.к.

.

Для получаем

,

т.к.

.

Для получаем

,

т.к.

.

Таблица разбора будет выглядеть следующим образом

1

2

3

4

5

1

2

3

4

`5

Выполняем шаг 2 при .

Для получаем

,

т.к.

.

Для получаем

,

т.к.

.

Для получаем

,

т.к.

.

Таблица разбора будет выглядеть следующим образом

1

2

3

4

5

1

2

3

4

`5

Выполняем шаг 2 при .

Для получаем

,

т.к.

.

Для получаем

,

т.к.

.

Таблица разбора будет выглядеть следующим образом

1

2

3

4

5

1

2

3

4

`5

Выполняем шаг 2 при .

Для получаем

,

т.к.

.

Таблица разбора будет выглядеть следующим образом

1

2

3

4

5

1

2

3

4

`5

Делаем проверку на принадлежность входной цепочки заданному языку. Так как , то .