形式原因为什么LL语法排除左递归

时间:2012-12-22 23:06:46

标签: ll

我目前正在空闲时间阅读龙书。该书指出,语法是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}。这似乎与两条规则中的任何一条都没有矛盾,我错过了什么?

提前谢谢你, 迈克尔

1 个答案:

答案 0 :(得分:2)

已经有一段时间了,但我想FOLLOWS(S)= {EOF,')','('}。