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