除了LALR(1)的状态似乎比LR(1)少,我似乎无法理解LALR(1)和LR(1)之间的区别。
我想知道是否有人有例子说明差异和一些解释。
谢谢
《龙书》中有一个示例(示例4.44;如果是第二版,则为4.58):
S' → S
S → aAd | bBd | aBe | bAe
A → c
B → c
由于语法仅生成四个字符串,因此创建LR项目集非常容易。执行此操作时,您会看到有两个集合具有相同的项目,但前瞻不同,分别对应于前缀ac
和bc
。没有冲突,因此语法为LR(1)。
LALR算法结合了项目集相同的状态,有效地合并了它们的先行状态。这会产生减少/减少冲突,因此语法不是LALR(1)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句