1

我目前在空闲时间阅读《龙书》。该书指出,当且仅当对于任何产生式 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}。这似乎与两条规则中的任何一条都不矛盾,我是否遗漏了什么?

提前谢谢你,迈克尔

4

1 回答 1

2

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

于 2012-12-22T23:33:55.670 回答