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