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