Напомним, что грамматика G
равна LL(1)
тогда и только тогда, когда A → u
и A → v
являются отдельными произведениями в G
, выполняются следующие условия:
- Для нет терминал
a
do u
и v
получают строки, начинающиеся с a
. - Не более одного из
u
и v
получают пустую строку λ
- Если
u ⇒* λ
, то v
не выводит никаких строк, начинающихся с терминала в FOLLOW(A)
.
Второе и третье условия тривиальны, потому что никакая последовательность терминальных и нетерминальных символов не выводит пустую строку в вашей грамматике. Теперь рассмотрим произведения S → E / S
и S → E
. Можете ли вы найти два вывода S ⇒ E / S ⇒* au
и S ⇒ E ⇒* av
, где a
является терминалом, который нарушает первое условие? Этот вопрос, очевидно, домашнее задание, поэтому я оставлю вам ответ на этот вопрос.