LR(0)文法
有自动机
自底向上:由语句归约回文法
扩充文法:
保证从一个符号开始推导出来的文法
项目
- A → a. 归约项目
- A → a.B 待约项目
- A → a.b 移进项目
判断
自动机状态中无冲突项目(移进-规约冲突和归约-归约冲突(一个状态中同时存在这两个项目))
自动机状态
等价项目的项目集闭包
NFA
分析过程
分析表
非上述文法的分析表,重点看图下的解释
ACTION:终结符
sn:移进T且状态转移为n
rn:该状态为归约项目时,用第n个推导式归约
GOTO:非终结符
n:经过N到达n状态
SLR(1)文法
判断
- 有冲突项目(移进-规约冲突和归约-归约冲突)
- 移进符号不在归约符号的FOLLOW集中
分析表
A → a. 归约项目只在FOLLOW{A} = {a} 中填 A → a.
其余填移进项目
LR(1)文法
判断
- 有向前搜索符号“,”
- 无归约-归约冲突
自动机状态
通式:A → ɑ . β , a
A → ɑ . Bβ , a的等价项目:
B → . г , b中,b = FIRST(βa)
-
β = ε ,b = a
-
β ≠ ε ,b = FIRST(β)
分析表
归约项目rn根据展望符填写
LALR(1)文法
判断
合并同心集后无归约-归约冲突
自动机状态
A → d , a
合并为:A → d , a / c
A → d , c