Parsing 非LALR的LL(1)语法示例?

Parsing 非LALR的LL(1)语法示例?,parsing,compilation,Parsing,Compilation,我现在正在学习编译理论课程中的解析器。 我需要在LL(1)中找到一个语法示例,但在LALR中没有。 我知道它应该存在。请帮我想出这个问题最简单的例子。来自《龙之书》(第二版,第242页): 可以使用LR方法解析的语法类是可以使用预测或LL方法解析的语法类的适当超集。对于要成为LR(k)的语法,我们必须能够以正确的句子形式识别产生式右侧的出现,并使用k个先行输入符号。这一要求远没有LL(k)语法严格,在LL(k)语法中,我们必须能够识别出只看到右边派生的前k个符号的产生式的使用。因此,LR语法可以

我现在正在学习编译理论课程中的解析器。 我需要在LL(1)中找到一个语法示例,但在LALR中没有。 我知道它应该存在。请帮我想出这个问题最简单的例子。

来自《龙之书》(第二版,第242页):

可以使用LR方法解析的语法类是可以使用预测或LL方法解析的语法类的适当超集。对于要成为LR(k)的语法,我们必须能够以正确的句子形式识别产生式右侧的出现,并使用k个先行输入符号。这一要求远没有LL(k)语法严格,在LL(k)语法中,我们必须能够识别出只看到右边派生的前k个符号的产生式的使用。因此,LR语法可以比LL语法描述更多的语言就不足为奇了

为非LALR(1)语法(即LL(1))提供此示例:

LALR(1)构造失败,因为E和F之间存在reduce-reduce冲突。在LR(0)状态集中,有一个由

E ::= A . ;
F ::= A . ;
这对于S和X上下文都是必需的。因此,这些项目的LALR(1)先行设置会混淆来自S和X产品的令牌。这与LR(1)不同,在LR(1)中,这些情况有不同的状态


对于LL(1),决策是通过查看第一组备选方案来做出的,其中“')”和“]”总是出现在不同的备选方案中。

您确定这不是一个骗人的问题,还是可能将其颠倒过来。我的印象是(从上学期的编译器课程来看),LL(1)是LALR的一个子集,因此,所有LL(1)语法都是LALR。我可能记错了,让我把我的龙书翻出来。首先,谢谢你的回答。其次,这个回答并不违背LL(1)中有语法,而LALR中没有语法的假设。这是因为正如你所知,LALRE ::= A . ; F ::= A . ;