Упражнение 2.1.25 |
Синтаксический разбор
Определение 13.1.22. Сентенциальной формой (sentential form) грамматики называется любое слово в алфавите , выводимое из начального символа S.
Пример 13.1.23. Слова S, aSeaceSbb, aceaacecbecbb являются сентенциальными формами грамматики из примера 13.1.3.
Определение 13.1.24. Пусть дана контекстно-свободная грамматика . Определим три функции , и , связанные с грамматикой G. Для краткости будем писать просто FIRST, FOLLOW и DIRECTOR.
Функция FIRST ставит в соответствие каждому слову множество тех терминальных символов, с которых начинаются слова, выводимые из , то есть
Функция FOLLOW ставит в соответствие каждому нетерминальному символу A множество тех терминальных символов, которые могут встречаться в сентенциальных формах непосредственно справа от A, то есть
Функция DIRECTOR ставит в соответствие каждому правилу множество терминальных символов, определяемое следующим образом: если , то
иначеПример 13.1.25. Рассмотрим контекстно-свободную грамматику из примера 13.1.3. Очевидно, что
Пример 13.1.26. Рассмотрим контекстно-свободную грамматику из примера 13.1.17. Очевидно, что
Пример 13.1.27. Пусть контекстно-свободная грамматика не содержит бесполезных символов. Пусть даны правило и символ . Тогда утверждение
равносильно тому, что найдутся такие , и , чтоТеорема 13.1.28. Пусть дана контекстно-свободная грамматика . Пусть - соответствующая контекстно-свободная грамматика с маркером конца строки, приведенная в определении 13.1.16. Обозначим через M МП-автомат , где
, и Тогда МП-автомат M является нисходящим магазинным анализатором для грамматики G.Доказательство. Индукцией по количеству тактов можно доказать, что если , где , то . Следовательно, .
С другой стороны, докажем, что если в грамматике выводится и , где , , , , то .
Проведем доказательство индукцией по сумме длины слова bw и длины вывода . Случай |bw| = 1, образует базис индукции (очевидно, что ). Проверим теперь шаг индукции. Так как и , то . Если , где , то вывод имеет вид
где и в силу леммы 13.1.27 . Отсюда получаем, что , и остается применить предположение индукции для левосторонних выводов и . Если же , где , то, очевидно, a = b и . Если , то и в силу леммы 13.1.19 , но этот случай уже рассмотрен в базисе индукции. Пусть . Тогда w = b'w' для некоторых и . Обозначим u' = ub. Применяя предположение индукции для левосторонних выводов и , получаем . Согласно построению МП-автомата M имеем Шаг индукции доказан. Теперь легко проверить, что выполняется .Гомоморфизм задается соотношениями