
- •Автор: старший преподаватель кафедры Прикладной Математики и Информатики им. Ю.В.Кожевникова Сергей Викторович Сотников.
- •2.3. Общие методы синтаксического анализа 81
- •1. Класс контекстно-свободных языков (V-3.0 28.02.2009)
- •1.1. Свойства кс-языков
- •1.1.1. Теорема Огдена. Лемма о разрастании кс-языков
- •1.2. Приведение кс-грамматик
- •Удаление недостижимых символов;
- •Удаление бесплодных (бесполезных) символов;
- •Удаление цепных правил;
- •1.2.5. Удаление цепных правил
- •1.2.5.1. Алгоритм удаления цепных правил
- •1.3. Нормализация грамматик (Приведение кс-грамматик к нормальной форме)
- •1.3.1.1. Алгоритм преобразования к нормальной форме Хомского
- •1.3.2.1. Устранение левой (правой) рекурсии
- •1.3.2.1.1. Алгоритм устранения левой рекурсии
- •1.3.2.2. Преобразование нелеворекурсивной приведенной кс-грамматики к нормальной форме Грейбах
- •1.3.2.2.1. Алгоритм преобразования нелеворекурсивной приведенной кс-грамматики к нормальной форме Грейбах
- •1.3.2.3. Другой способ преобразования кс-грамматики к нормальной форме Грейбах (Метод Розенкранца)
- •1.3.2.3.1. Алгоритм метода Розенкранца
- •1.4. Автоматы с магазинной памятью (mп-автоматы)
- •1.5. Соотношения между различными мп-автоматами
- •1.5.1. Алгоритм построения мп-автомата по расширенному мп-автомату
- •1.5.2. Алгоритм построения расширенного мп-автомата по мп-автомату
- •1.5.3.1. Алгоритм построения по мп-автомату мп-автомата, допускающего цепочки опустошением магазина
- •1.5.3.1. Алгоритм построения мп-автомата по мп-автомату, допускающего цепочки опустошением магазина
- •1.6. Эквивалентность мп-автоматов и кс-грамматик
- •1.6.1. Алгоритм построения мп-автомата по произвольной кс-грамматике
- •1.6.2. Алгоритм построения расширенного мп-автомата по произвольной кс-грамматике
- •1.6.3. Алгоритм построения кс-грамматики для произвольного мп-автомата
- •1.6.4. Алгоритм построения кс-грамматики для произвольного расширенного мп-автомата
- •2. Методы трансляции
- •2.1. Теория перевода
- •2.1.1. Формализмы, используемые для определения перевода
- •2.1.1.1. Перевод и семантика
- •2.1.1.2. Схемы синтаксически управляемого перевода ( су-схемы)
- •2.1.1.3. Конечные преобразователи
- •2.1.1.4. Преобразователь с магазинной памятью
- •2.1.1.5. Эквивалентность простых су-схем и преобразователей с магазинной памятью
- •2.1.1.5.1. Алгоритм построения мп-преобразователя для простой су-схемы
- •2.1.1.5.2. Алгоритм построения простой су-схемы по мп-преобразователю
- •2.1.2. Лексический анализ
- •2.1.2.1. Непрямой лексический анализ
- •2.1.2.2. Прямой лексический анализ
- •2.1.2.3. Программное моделирование конечных преобразователей
- •2.1.3. Синтаксический анализ
- •2.1.3.1. Определение разбора
- •2.2. Общие методы синтаксического анализа
- •2.2.1. Синтаксический анализ с возвратами
- •2.2.1.1. Алгоритм нисходящего разбора с возвратами
- •2.2.1.2. Проблемы алгоритм нисходящего разбора с возвратами
- •2.2.1.3. Алгоритм восходящего разбора с возвратами
- •Синтаксический анализ с возвратами
- •2.3. Общие методы синтаксического анализа универсальные методы синтаксического анализа. Табличные методы синтаксического анализа Алгоритм Кока-Янгера-Касами
- •Алгоритм разбора Кока-Янгера-Касами
- •Алгоритм нахождения левого разбора по таблице разбора
- •Алгоритм Эрли
- •Алгоритм разбора Эрли
- •Алгоритм построения правого разбора по списку разбора
Синтаксический анализ с возвратами
Домашнее задание: Самостоятельно рассмотреть алгоритмы восходящего и нисходящего анализа с возвратами.
2.3. Общие методы синтаксического анализа универсальные методы синтаксического анализа. Табличные методы синтаксического анализа Алгоритм Кока-Янгера-Касами
Метод работает
следующим образом. Пусть
- КС-грамматика без пустых правил (ВСЕХ!)
в нормальной форме Хомского. Пусть
- входная цепочка, которую нужно разобрать
согласно грамматике
.
Суть метода состоит в построении
треугольной таблицы разбора
,
элементы которой обозначим
,
где
,
.
Значениями переменных
будут подмножества множества
,
т.е.
.
Нетерминал
тогда и только тогда, когда
,
т.е. когда из
выводятся
входных символов, начиная с позиции
.
В частности, входная цепочка
тогда и только тогда, когда
.
Алгоритм разбора Кока-Янгера-Касами
Вход: КС-грамматика
в нормальной форме Хомского без пустых
правил (ВСЕХ!!!) и входная цепочка
.
Выход: Таблица разбора для цепочки , такая, что. тогда и только тогда, когда
Метод:
Положить
. Очевидно, что
.
Допустим, что уже вычислены
. Тогда
Так как
,
то
и
.
Таким образом,
и
вычисляются раньше, чем
.
После этого из
следует, что
Повторяем шаг 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 |
|
|
|
|
|
Делаем проверку
на принадлежность входной цепочки
заданному языку. Так как
,
то
.