- •Автор: старший преподаватель кафедры Прикладной Математики и Информатики им. Ю.В.Кожевникова Сергей Викторович Сотников.
- •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.3. Общие методы синтаксического анализа 81
Алгоритм нахождения левого разбора по таблице разбора 86
1. Класс контекстно-свободных языков (V-3.0 28.02.2009)
1.1. Свойства кс-языков
Определение:
Язык
называется контекстно-свободным
(КС-языком),
если множество правил грамматики
,
которая порождает данный язык, выглядит
следующим образом
:
,
,
.
Определение: Язык называется укорачивающимся контекстно-свободным (УКС-языком), если множество правил грамматики , которая порождает данный язык, выглядит следующим образом
:
,
,
.
Определение: Пусть
- класс языков и язык
принадлежит
.
Допустим, что алфавит
,
где
,
является алфавитом языка
и языки
принадлежат классу
.
Тогда класс
замкнут
относительно операции подстановки,
если для произвольного набора
язык
,
где
;
;
,
также принадлежит классу КС-языков.
Теорема: Класс контекстно-свободных языков (КС-языков) замкнут относительно операции подстановки.
Пример :
;
;
.
Решение:
.
Домашнее задание: Построить язык , используя операцию подстановки.
;
;
.
Следствие: Класс контекстно-свободных языков (КС-языков) замкнут относительно следующих операций:
Объединение;
Конкатенация;
Итерация;
Положительная итерация;
Гомоморфизм;
Маркированного объединения;
;
Маркированной конкатенации;
Маркированной итерации.
.
1.1.1. Теорема Огдена. Лемма о разрастании кс-языков
Лемма позволяет определить является ли язык контекстно-свободным. Она дает необходимое условие, но не достаточное условие того, что язык является контекстно-свободным, то есть при наличии удовлетворяющих лемме условий язык не обязательно является контекстно-свободным.
Лемма: Пусть
язык
является КС-языком, тогда существует
такое число
-
целое и положительное, для которого
можно выделить цепочку
,
причем длина, которой не меньше, чем
и которую можно представить в следующем
виде
,
где
;
.
Тогда вновь
получаемая цепочка
,
будет иметь вид
,
,
также будет принадлежать исходному языку .
Пример : Проверить необходимое условие для языка
.
Решение:
,
;
;
;
;
;
;
;
:
;
:
;
:
;
;
:
;
Данный язык удовлетворяет условиям теоремы Огдена.
Пример : Проверить необходимое условие для языка
;
Решение:
Пусть
.
Тогда
.
Так как
,
то в цепочке
не могут быть вхождения каждого из
символов
,
и
.
Таким образом цепочка
,
которая по лемме о разрастании КС-языков
принадлежит
,
содержит либо
символов
,
либо
символов
.
Но она не может иметь
вхождений каждого из символов
,
и
,
потому что
.
Значит вхождений какого-то из символов
в
больше, чем другого, и, следовательно,
.
Полученное противоречие позволяет
заключить, что
- не КС-язык.
Пример : Проверить необходимое условие для языка
;
.
Решение:
;
;
;
;
;
Данный язык удовлетворяет условиям теоремы Огдена, но не является контекстно-свободным.
Домашнее задание: Написать грамматику типа 2 и грамматику типа 1 для языка .
Домашнее задание: Проверить равенства
1.
.
2.
.
1.2. Приведение кс-грамматик
Алгоритм приведения состоит из шести шагов:
