
6-LALR预测分析表
pridelizihao研究LALR的原因
- 规范LR分析表的状态数偏多
LALR特点
- LALR和SLR的分析表有同样多的状态,比规范LR分析表要小得多
- LALR的能力介于SLR和规范LR之间
- LALR的能力在很多情况下已经够用
LALR分析表构造方法
- 通过合并规范LR(1)项目集来得到
- 合并核心项
写出自动机,发现有共同点
合并之后的
分析表
该报错的依旧是报错
是否会引起冲突
对于 LR(1) 文法, 合并得到的 LALR(1) 分析表是否会引入冲突?
· 不会引入移入/归约冲突
假设合并后出现冲突,[A → α·, a] 与 [B → β · aγ, b]
则在 LR(1) 自动机中, 存在某状态同时包含 [A → α·, a] 与 [B → β · aγ, c] (c随便是什么)
· 可能会引入归约/归约冲突
总结
语法分析:
自顶向下: LL(1)
自底向上: LR(0), SLR(1), LALR(1), LR(1)
LL(1), LR(0), SLR(1), LALR(1), LR(1)文法之间的关系
https://blog.csdn.net/zuzhiang/article/details/79047743
LR(0) < SLR(1) < LALR(1) < LR(1)
即某个文法,如果是LR(0)文法,
那其一定是SLR(1)文法,
反过不成立。
什么是LR(0)文法?
LR(0)自动机, LR(0)分析表
LL(1) 和他们没关系
所有的二义性文法都不是上述文法.
评论
匿名评论隐私政策