我目前在空闲时间阅读《龙书》。该书指出,当且仅当对于任何产生式 A -> a|b,语法是 LL,以下两个条件适用。
1) FIRST(a) 和 FIRST(b) 是不相交的。这意味着它们不能都导出 EMPTY
2) 如果 'b' 可以导出 EMPTY,那么 'a' 不能导出任何以 FOLLOW(A) 开头的字符串
我知道 LL 解析器一般不能处理左递归,但是如果我做一个语法
S -> S(S) | 空的,
FIRST(S) = {'('} 和 FOLLOW(S) = {EOF}。这似乎与两条规则中的任何一条都不矛盾,我是否遗漏了什么?
提前谢谢你,迈克尔