【问题标题】:Formal Reason Why LL Grammar excludes Left-RecursionLL 语法排除左递归的形式原因
【发布时间】:2012-12-22 23:06:46
【问题描述】:

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

提前谢谢你, 迈克尔

【问题讨论】:

    标签: ll


    【解决方案1】:

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

    【讨论】:

    • 现在我觉得自己很笨 XD。非常感谢您的澄清!
    猜你喜欢
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多