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