
定理
存在一种LR语法分析方法,保证句柄总是出现在栈顶
定理给出了存在性证明,句柄并不一定出现在栈顶,但这可能会给我们的算法带来很多负担,因此我们使用栈顶的这种。

shift移进 reduce规约/回溯 goto
状态刻画了当前 所有观察到的针对所有产生式的右部的前缀。
状态是项集。
点指示了栈顶,左边是栈中内容(路径),右边是期望看到的文法符号串。
CLOSURE({[E'→.E]})
接收状态
GOTO函数被拆分成ACTION表(终结符)和GOTO表(非终结符)
LR(0)分析表构造
LR0分析,自动机是本质,栈是实现
LR0的0指的是规约时不需要向前看,无脑规约
SLR(1) simple
LR(1) SLR相较于LR(1)可能算是比较静态的
LR(1)项中新增一个记录当前句柄之后的符号的
只有下一个输入符号为a时,才可以规约
期望剩余输入的开头可以由βa推导出(要写a是因为β可能可以推出ε)
(只有)闭包规则的修改如下:
初始状态为
LR(1)缺点是产生的状态数太多了(相当于将每个LR0项又细分开)
LALR(1)将具有相同LR(0)项的状态合并(合并方法:先从没有出边的开始)
得到状态数和SLR(1)相当的自动机,能力介于SLR(1)和LR(1)之间
可以证明LALR(1)的改造不会引进规约/移入冲突
存在方法可以直接构造LALR(1)而不是从LR(1)改造