LR0
从左到右 规范推导
拓广文法:只需要把多选改掉

最开始从初始符号开始,列出初始符号可以迭代推出的文法序列,用一个指针标识输入串当前分析位置位于文法里的什么位置
找到 输入串下一个符号 = 文法的下一个符号 对应的文法,并移进,重复操作直至到达文法的终结位置,此时再规约,位置回退
构建一个下推自动机,读入某字符就转到某个文法序列的状态
活前缀:句型αβt,β是句柄,则αβ的任何前缀都是该句型的活前缀
有效项目:A → β1.β2 对 活前缀αβ1 有效的条件是 存在规范推导 E ⇒* αAw ⇒ αβ1β2w

活前缀 → 有效项目集:首先找到规约到当前状态时应该运用的最后一条规则(可能不唯一),把点打在活前缀的右边
对于上面的例子,即为T->T*.F (活前缀E + T *)
接着如果“.”后面的第一个符号是非终结符号,则将该符号的规则全部列出,对于上面的例子,即为F->.(E),F->.i,一直迭代下去找到闭包(其实就是那条规则推出来的一个项目集)
SLR


注意#和推出epsilon的情况
epsilon可以直接规约
动态存储分配

源程序中间形式
波兰表示
N-元
- 间接三元式会省去三元式的重复代码
动作序列 + 输入序列,最终结果输出的终结符号串为活动序列
L-ATG
SL-ATG

数组模板
代码优化
- 基本块划分
- DAG图——公共子表达式删除

- 到达定义分析

- 定义使用链
- 活跃变量分析
- 冲突图
- 出现在同一个in或者同一个out的:全部都算

- 寄存器分配
- 全局
- 局部


