В книге о драконах грамматика LL определяется следующим образом:
Грамматика является LL тогда и только тогда, когда для любой продукции A -> a|b
применяются следующие два условия.
FIRST(a)
иFIRST(b)
не пересекаются. Это означает, что они не могут оба вывестиEMPTY
Если
b
может вывестиEMPTY
, тоa
не может вывести строку, начинающуюся сFOLLOW(A)
, то естьFIRST(a)
иFOLLOW(A)
должны быть непересекающимися.
И я знаю, что грамматику ЯЛ нельзя оставлять рекурсивной, но какова формальная причина? Я предполагаю, что леворекурсивная грамматика будет противоречить правилу 2, верно? например, я написал следующую грамматику:
S->SA|empty
A->a
Поскольку FIRST(SA) = {a, empty}
и FOLLOW(S) ={$, a}
, то FIRST(SA)
и FOLLOW(S)
не пересекаются, поэтому эта грамматика не является LL. Но я не знаю, это левая рекурсия делает FIRST(SA)
и FOLLOW(S)
непересекающимися, или есть какая-то другая причина? Иными словами, верно ли, что каждая леворекурсивная грамматика будет иметь продукцию, которая будет нарушать условие 2 грамматики ЯЛ?
LA(S->SA)
иLA(S->e)
содержатa
. Смотрите мой ответ для более интуитивного объяснения. - person Apalala   schedule 24.04.2013