
- •Автор: старший преподаватель кафедры Прикладной Математики и Информатики им. Ю.В.Кожевникова Сергей Викторович Сотников.
- •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. Общие методы синтаксического анализа универсальные методы синтаксического анализа. Табличные методы синтаксического анализа Алгоритм Кока-Янгера-Касами
- •Алгоритм разбора Кока-Янгера-Касами
- •Алгоритм нахождения левого разбора по таблице разбора
- •Алгоритм Эрли
- •Алгоритм разбора Эрли
- •Алгоритм построения правого разбора по списку разбора
1.5.3.1. Алгоритм построения мп-автомата по мп-автомату, допускающего цепочки опустошением магазина
Вход: - МП-автомат, допускающий цепочки опустошением магазина
Выход:
- МП-автомат такой, что
Метод:
Идея метода:
будет моделировать
,
используя в надлежащий момент специальный
символ
,
находящийся на дне магазина. В тот
момент, когда автомат
может прочесть
,
он будет переходить в новое заключительное
состояние
.
Домашнее задание: Самостоятельно рассмотреть алгоритм построения МП-автомата по МП-автомату, допускающему цепочки опустошением магазина.
1.6. Эквивалентность мп-автоматов и кс-грамматик
Лемма: Для любой КС-грамматики можно построить соответствующий МП-автомат и наоборот.
Построим естественный (недетерминированный) «нисходящий» распознаватель, эквивалентный данной КС-грамматике.
1.6.1. Алгоритм построения мп-автомата по произвольной кс-грамматике
Вход: - произвольная КС-грамматика.
Выход:
- МП-автомат, допускающий цепочки
опустошением магазина, такой, что
.
Метод:
Множество состояний МП-автомата примет вид
;
Входной алфавит МП-автомата совпадает с алфавитом терминальных символов исходной грамматики;
Алфавит магазинных символов будет следующим
;
Начальным состоянием будет единственное состояние, т.е.
;
Начальным магазинным символом будет целевой символ КС-грамматики
;
Множество заключительных состояний МП-автомата можно сделать либо пустым, либо оно будет содержать одно единственное состояние. Для определенности положим
;
Определим множество результирующего МП-автомата следующим образом:
Если множество правил исходной грамматики содержит правило вида
,
,
, то во множество функций перехода автомата добавляется функция перехода вида
для
,
, ;
Во множество функций перехода автомата добавляются все переходы вида
для , .
Пример :
Построить МП-автомат, распознающий язык, заданный множеством , и порождающийся КС-грамматикой
с правилами вида ;
Построить последовательность тактов работы МП-автомата для цепочек , .
Решение:
МП-автомат будет иметь вид
где функции перехода будут следующие
,
,
.
Теперь построим последовательность тактов работы автомата для различных цепочек
Последовательность тактов работы автомата для цепочки будет иметь вид
Последовательность тактов работы автомата для цепочки будет иметь вид
Домашнее задание: Построить для нижеследующей грамматики МП-автомат
.
И построить последовательность тактов работы МП-автомата для цепочки
.
Домашнее задание (убрать в практику): Построить для нижеследующей грамматики МП-автомат
,
где
.
И построить последовательность тактов работы МП-автомата для цепочки
.
Тип синтаксического анализа, проводимого для КС-грамматики МП автоматом, построенном выше, называется «нисходящим анализом» («анализом сверху вниз») или «предсказывающим анализом», потому что при этом дерево вывода строится по существу сверху (от корня) вниз, а каждый такт вида можно трактовать как предсказание очередного шага левого вывода.
Можно построить расширенный МП-автомат, который работает «сверху-вниз» как «восходящий анализатор», моделируя в обратном порядке правые выводы в КС-грамматике.
По произвольной
КС-грамматике
можно построить эквивалентный расширенный
МП-автомат
.
Здесь удобно представить себе магазин
в виде цепочки, верхним символом которой
является самый правый, а не самый левый
символ. В силу этого соглашения
конфигурации расширенного МП-автомата
определяются точно так же, как и раньше,
а отношение
несколько иначе. Если
,
то будем писать
для
,
.
Видно, что обозначение МП-автомата в виде семерки можно интерпретировать как два различных МП-автомата в зависимости от того, какой из символов – правый или левый – считается верхним. Можно заметить, что удобство обозначений, создаваемое этими двумя соглашениями, перевешивает возможность путаницы в исходных понятиях. В дальнейшем, если не оговорено противное, будем считать, что у обычного МП-автомата верх магазина расположен слева, а у расширенного – справа.
Лемма: Для любой КС-грамматики можно построить соответствующий расширенный МП-автомат и наоборот.