我现在正在业余时间阅读龙之书。书上说文法是LL 当且仅当对于任何产物a -> a|b,满足以下两个条件。
1) FIRST(a)和FIRST(b)不相交。这意味着它们不能同时派生出EMPTY
2)如果'b'可以派生EMPTY,那么'a'不能派生任何以FOLLOW(a)
开头的字符串我知道LL解析器一般不能处理左递归,但是如果我创建一个语法
S -> S(S) | EMPTY,
FIRST(S) = {'('} and FOLLOW(S) = {EOF}。这似乎与两条规则都不矛盾,我错过了什么吗?
提前谢谢你,迈克尔。
已经有一段时间了,但我认为following (S) = {EOF,')','('}。