
- •Автор: старший преподаватель кафедры Прикладной Математики и Информатики им. Ю.В.Кожевникова Сергей Викторович Сотников.
- •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-5 повторить (хотя достаточно выполнить шаги 2 и 3).
1.2.1. Определение пустоты языка
Определение: Язык называется пустым, если множество его слов пусто.
1.2.1.1. Алгоритм определения пустоты языка
Вход: КС-грамматика .
Выход: Если
-выдать
«НЕТ»;
-выдать
«ДА».
Метод:
1.
;
2.
;
3. Если
,
то переходим к шагу 4;
если
,
то
и переходим к шагу 2;
4. Если
,
то язык не пуст и выдать «ДА»;
если
,
то язык пуст и выдать «НЕТ».
Пример :
.
Решение:
1.
;
2.
;
3.
;
4.
;
5.
,
алгоритм останавливается;
6.
- «Нет» (пуст).
Ответ: язык пуст.
1.2.2. Удаление недостижимых символов
Определение: Символ
является недостижимым,
если он не появляется в правых частях
правил данной грамматики.
1.2.2.1. Алгоритм удаления недостижимых символов
Вход: КС-грамматика .
Выход: Грамматика
без недостижимых символов.
Метод:
1.
;
2.
;
3. Если
,
то переходим к шагу 4;
если
,
то
и переходим к шагу 2;
4.
;
;
;
- новое множество правил включает в
себя только те правила исходной
грамматики, которые состоят из символов,
построенного множества
и имеет вид
.
Пример :
.
Решение:
1.
;
2.
;
3.
;
4.
;
5.
;
6.
;
7.
;
8.
;
;
- Целевой символ
.
1.2.3. Удаление бесплодных (бесполезных) символов
Определение: Символ
называется
бесплодным
(бесполезным),
если множество выводов для данного
символа пусто, т.е.
.
(символ не порождающий терминальной цепочки).
1.2.3.1. Алгоритм удаления бесплодных символов
Вход: КС-грамматика .
Выход: Грамматика без бесплодных символов.
Метод:
1. ;
2.
;
3. Если , то переходим к шагу 4;
если , то и переходим к шагу 2;
4.
,
,
,
.
1.2.4. Удаление пустых правил
Определение: КС-грамматика называется грамматикой без пустых правил ( -правил) или неукорачивающей
1) Если в ней
отсутствуют правила вида
;
2) Если присутствует
одно правило вида
,
где
целевой символ, и он не встречается в
правых частях других правил данной
грамматики.
1.2.4.1. Алгоритм удаления пустых правил
Вход: КС-грамматика .
Выход: Грамматика без пустых правил.
Метод:
1.
,
;
2.
;
3. Если , то переходим к шагу 4;
если , то и переходим к шагу 2;
4.
;
;
- содержит все правила из .
5. Если в новом
множестве правил
присутствует правило вида
,
причем элементы цепочки
содержат символы из построенного
множества
,
то в новое множество правил
добавляются правила вида
,
где
- цепочка, которая формируется из цепочки
путем исключения всевозможных комбинаций
элементов
,
кроме пустых правил.
6. Если целевой
символ
исходной грамматики
попал в построенное множество
,
т.е.
,
то во множество правил
результирующей грамматики
добавляются правила вида
,
и целевым символом грамматики
будет новый символ
.
1.2.5. Удаление цепных правил
Определение: Правило
вида
называется цепным.
Определение: Циклическим выводом называется вывод вида
;
;
.