编译原理4—6章案例复习总结
4—6章总结
4、自上而下文法—LL(1)文法
(1)first集
(2)follow集 ——利用到select集
(3)select集 ——利用到first、select集合
(4)构造自上而下分析表 —利用select集
(5)句子分析—利用LL(1)分析表,注意倒序入栈—符号栈是将表中查询到的产生式倒着写入,栈内只剩下 # 为止
5、规范推导—移进规约法—直接利用推导式规约,顺序入栈,栈内只剩下第一个非终结符S为止
6、LR文法
状态 | ACTION | GOTO |
---|---|---|
0 | … | … |
额,,不太像回事,,再来一张表
(1)分析句子–使用LR文法表 初始化—步骤从0开始,状态栈存放一个0,符号栈存放一个#
(2)LR(0)项目集规范族,(拓广文法S’,让开始的符号只出现在开头,)
(3)LR(0)分析表的构造 ——利用项目集规范族
特点:整行都归约
SLR(1)分析表 ——利用项目集规范族、follow集
特点:有选择的归约,对输入符号属于 接受项目follow集合,执行归约,其它输入该移进的移进,不该移进归约的报错
LR(1)分析表 ——利用含搜索符的项目集规范族
LALR(1)分析表 ——利用同心项目集
特点:用来合并LR(1)状态,缩减空间
(最后,附上四种文法的关系)