- •Введение
- •Формальные грамматики. Выводы Основные понятия
- •Способы задания языков
- •Операции над языками
- •Формальные грамматики. Выводы
- •Преобразования кс-грамматик Основные понятия
- •Устранение лишних символов
- •Исключение лишних правил
- •Исключение -правил
- •Устранение цепных правил
- •Выделение нетерминала
- •Левая факторизация
- •Устранение левой рекурсии
- •Устранение правой рекурсии
- •Нормальная форма Хомского
- •Нормальная форма Грейбах
- •Операторная кс-грамматика
- •Регулярные языки и конечные распознаватели Правосторонние грамматики
- •Левосторонние грамматики
- •Связь правосторонних и левосторонних грамматик
- •Преобразование кс-грамматики произвольного вида в правостороннюю
- •Конечные распознаватели. Основные понятия
- •Преобразование недетерминированных конечных распознавателей с -переходами в детерминированные
- •Эквивалентность состояний конечных детерминированных распознавателей
- •Эквивалентность конечных детерминированных распознавателей
- •Минимизация конечных детерминированных распознавателей
- •Регулярные множества и регулярные выражения
- •Регулярные выражения и конечные распознаватели
- •Получение регулярного выражения из конечного распознавателя
- •Построение конечного распознавателя по регулярному выражению
- •Конечные распознаватели и регулярные грамматики
- •Получение грамматики из конечного распознавателя
- •Построение конечных распознавателей по регулярным грамматикам
- •Ещё один способ взаимного преобразования право- и левосторонних грамматик
- •Программная реализация конечных детерминированных распознавателей
- •Лексический анализ
- •Принципы построения лексических анализаторов
- •Определение границ лексем
- •Выполнение действий, связанных с лексемами
- •Выделение ключевых слов
- •Программная реализация лексических анализаторов
- •Глава 3. Синтаксический анализ
- •3.1. Автомат с магазинной памятью
- •3.2. Таблично-управляемый предсказывающий разбор
- •3.2.1. Алгоритм разбора сверху-вниз
- •3.2.2. Множества first и follow
- •3.2.3. Конструирование таблиц предсказывающего анализатора
- •3.2.4. Ll(1)-грамматики
- •3.2.7. Рекурсивный спуск
- •3.3. Разбор снизу-вверх типа сдвиг-свертка
- •3.3.1. Основа
- •3.3.2. Lr(k)-анализаторы
- •3.3.4. Конфликты разбора типа сдвиг-свертка
Эквивалентность конечных детерминированных распознавателей
Конечные распознаватели А и А’ эквивалентны, если равны допускаемые ими языки L(A)=L(A’). Множество цепочек, допускаемых состоянием s0 , образует язык L(s0). Естественно, что L(A)=L(s0), если s0 – начальное состояние распознавателя А и L(A’)=L(s0’), если s0’ - начальное состояние распознавателя А’ . Следовательно, для проверки истинности равенства L(A)=L(A’), т.е. проверки эквивалентности распознавателей А и А’, достаточно проверить истинность равенства L(s0)=L(s0’), т.е. проверить эквивалентность начальных состояний распознавателей А и А’. Таким образом, проверка эквивалентности конечных распознавателей сводится к проверки эквивалентности состояний. При выполнении алгоритма проверки эквивалентности состояний различных распознавателей нужно учитывать то, что в дереве проверки не может быть конечных вершин – вершин, содержащих одинаковые состояния.
Пример 1.
Граф конечного распознавателя А.
ц
ц
ц . ц
+
- .
ц
.
Граф конечного детерминированного распознавателя А’.
ц .
.
+ ц ц
. ц ц
- . ц
ц ц . ц
Дерево проверки эквивалентности распознавателей А и А’.
ц + _ .
ц . ц . ц . ц
ц . ц ц
ц
В дереве проверки эквивалентности нет различающих вершин, следовательно эквивалентны начальные состояния проверяемых на эквива-лентность распознавателей А и А’ и эквивалентны распознаватели А и А’.
Пример 2.
Граф конечного распознавателя А.
ц
ц
ц . ц
+
- .
ц
.
Граф конечного распознавателя А’.
ц
ц
ц ц
+ .
- .
ц
.
Дерево проверки эквивалентности распознавателей А и А’.
1
ц + _ .
2
3 4 5
ц .
6 7
В вершине 7 состояние s4 распознавателя А –допускающее, а состояние s3 распознавателя А’ – отвергающее, следовательно распознаватели А и А’ – неэквивалентны, цепочка ц. является различающей, она допускается распознавателем А и отвергается распознавателем А’.
