Решение. Эти буквы принадлежат направляющим множествам различных правил.
Доказать, что если слово выводимо в LL(1)-грамматике, то его левый вывод единствен.
Решение. Предыдущая задача показывает, что на каждом шаге левый вывод продолжается однозначно.
Грамматика называется леворекурсивной, если из некоторого нетерминала K выводится слово, начинающееся с K, но не совпадающее с ним. Доказать, что леворекурсивная грамматика, в которой из каждого нетерминала выводится хотя бы одно непустое слово из терминалов и для каждого нетерминала существует вывод (начинающийся с начального нетерминала), в котором он встречается, не является LL(1)-грамматикой.
Решение. Пусть из K выводится KU, где K —нетерминал, а U —непустое слово. Можно считать, что это левый вывод (другие нетерминалы можно не заменять). Рассмотрим вывод K -‑> KU -‑> KUU ->... (знак -‑> обозначает несколько шагов вывода) и левый вывод K -> A, где A —непустое слово из терминалов. На каком-то шаге второй вывод отклоняется от первого, а между тем по обоим путям может быть получено слово, начинающееся на A (в первом случае это возможно, так как сохраняется нетерминал K, который может впоследствии быть заменен на A). Это противоречит возможности однозначного определения правила, применяемого на очередном шаге поиска левого вывода. (Oднозначность выполняется для выводов из начального нетерманала, и надо воспользоваться тем, что K по предположению встречается в таком выводе.)
Таким образом, к леворекурсивным грамматикам (кроме тривиальных случаев) LL(1)-наука неприменима. Их приходится преобразовывать к эквивалентным LL(1)-грамматикам —или пользоваться другими методами распознавания.
Дата добавления: 2015-10-05; просмотров: 584;