ный алгоритм не имеет, т.к. он основан на переборе всех применимых на текущем
шаге действий. Используемые на практике КС–грамматики языков программиро-
вания удовлетворяют дополнительным ограничениям, которые позволяют строить
более эффективные алгоритмы синтаксического анализа. Как правило, КС–грамма-
тики языков программирования обладают такими свойствами, что существуют ал-
горитмы грамматического разбора с временной сложностью порядка O(|x|), где |x|
— длина анализируемой цепочки.
Тем не менее алгоритм разбора с возвратом представляет не только теоретиче-
ский, но и практический интерес, т.к. общая схема нисходящего синтаксического
анализа произвольной КС–грамматики, основанная на замене нетерминала в вер-
хушке магазина правой частью правила, остается неизменной и для алгоритмов
эффективного разбора.
В качестве упражнения оставляется задача реализации универсального рекурсив-
ного восходящего анализатора — программы грамматического разбора с возвратом
по восходящей стратегии разбора. Замечание относительно эффективности грамма-
тического разбора по нисходящей стратегии с возвратом полностью справедливо и
для восходящей стратегии разбора.
8.10 Контрольные вопросы к разделу
1. Что представляет собой память автомата?
2. Приведите иерархию автоматов по сложности .
3. Чем отличаются автоматы — преобразователи от автоматов — распознавате-
лей?
4. Перечислением каких объектов задается конечный автомат?
5. Какое множество называется регулярным?
6. Какие операции не выводят из класса регулярных множеств?
7. Как построить автомат, распознающий объединение регулярных множеств?
8. Почему при доказательстве теоремы об объединении двух регулярных языков
необходимым условием является отсутствие циклов в начальных состояниях конеч-
ных автоматов, распознающих эти языки?
9. Почему при доказательстве теоремы о дополнении регулярного языка необхо-
димым условием явлется детерминированность конечного автомата?
10. Как построить автомат, распознающий дополнение регулярного множества?
11. Какие два состояния конечного автомата называются k–эквивалентными?
12. Почему при доказательстве теоремы о минимизации конечного автомата на
первом шаге все заключительные состояния отделяются от незаключительных?
13. Дайте определение автомата с магазинной памятью.
14. Как для заданной грамматики построить МП–автомат, выполняющий восхо-
дящий разбор?
15. Как для заданной грамматики построить МП–автомат, выполняющий нисхо-
дящий разбор?
16. Почему МП–автомат, построенный для произвольной КС–грамматики, явля-
ется в общем случае недетерминированным?
17. Как написать программу, выполняющую восходящий грамматический разбор
в соответствии с командами недетерминированного МП–автомата?
18. Как написать программу, выполняющую нисходящий грамматический разбор
в соответствии с командами недетерминированного МП–автомата?
241