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