- 281
- 0
- 约5.4千字
- 约 20页
- 2018-08-11 发布于江苏
- 举报
5.3.5 LALR分析表的构造 对 LR(1) ☆来说, 存在着某些状态, 这些状态除向前搜索符不同外, 其核心部分都是相同的. 同心集: 两个LR(1)项目集具有相同的心, 即除去搜索符之后, 这两个集合是相同的。 能否将核心部分相同的诸状态合并为一个状态? 这种合并是否会产生冲突? LALR方法 : 在LR(1)项目集规范族基础上, 合并同心集. 合并同心集 构造 LALR(1)分析表算法 (3) 从C? 构造ACTION表 ①若[A→α·aB, b]∈Jk ,且GO(Jk, a)= Jj, 则置ACTION[k, a]为 sj ②若[A→α·, a]∈Jk,j是产生式A→α的编号 则置ACTION[k, a]为 rj, ③若[S→S·, # ]∈Jk,则置ACTION[k, #]为 acc (4) GOTO表的构造 若GO(Jk, A)=Ji,则置GOTO[k, A] = i (5) 分析表中凡不能用(3)、(4)填入信息的空白格均填上“出错标志”。 经上述步骤构造的分析表若不存在冲突,则称它为文法的LALR分析表 存在这种分析表的文法称为LALR文法 对于同一个文法,LALR分析表和LR(0)以及SLR分析表永远具有相同数目的状态。 例:写出输入符号串 #aab# 的LR分析过程和LALR分析过程 LR分析小结 LR分
原创力文档

文档评论(0)