第6章LR分析 ■LR分析法 ◆LR分析法概述 ◆LR分析器 ◆LR(O)分析 ◆SLR(1)分析 ◆LR(1)分析 ◆LALR(1)分析 ◆LR分析法小结 ■自底向上语法分析小结 ■本章练习 ■作业 2025/4/3 课程目录 ☑1
2025/4/3 1 第6章 LR分析 ◼LR分析法 ◆LR分析法概述 ◆LR分析器 ◆LR(0)分析 ◆SLR(1)分析 ◆LR(1)分析 ◆LALR(1)分析 ◆LR分析法小结 ◼自底向上语法分析小结 ◼本章练习 ◼作业 课程目录
LR(k)分析法概述p123 ■是一种自下而上语法分析技术 ◆L从左到右扫描输入符号 ◆R构造一个最右推导的逆过程—一最左归约 ◆k超前读入k个符号,以便确定归约用的产生式 ■LR分析器 ◆移进归约分析器+LR分析表 ■特殊性 ◆栈=状态栈+文法符号栈 ◆分析表=动作表action+状态转移表goto 2025/4/3 ☒D 2
2025/4/3 2 LR(k)分析法概述 p123 ◼是一种自下而上语法分析技术 ◆L 从左到右扫描输入符号 ◆R 构造一个最右推导的逆过程——最左归约 ◆k 超前读入k个符号,以便确定归约用的产生式 ◼LR分析器 ◆移进归约分析器 + LR分析表 ◼特殊性 ◆栈 = 状态栈 + 文法符号栈 ◆分析表 = 动作表action + 状态转移表goto
各种LR分析表p123 ■采用不同的构造方法 ◆LR(O)表构造法一—基础 ◆简单LR(SLR(1))表构造法 一理论过渡 ◆规范LR(1)表构造法一理论过渡 ◆向前LR(LALR(1)表构造法一实用 ■不同点 ◆构造分析表的方法不同 ◆分析能力不同,实现效率不同 ■共同点 ◆逻辑结构 ◆工作原理(状态转移) 2025/4/3 章节目录 ☑3
2025/4/3 3 各种 LR 分析表 p123 ◼ 采用不同的构造方法 ◆LR(0)表构造法——基础 ◆简单LR(SLR(1))表构造法——理论过渡 ◆规范LR(1)表构造法——理论过渡 ◆向前LR(LALR(1))表构造法——实用 ◼ 不同点 ◆构造分析表的方法不同 ◆分析能力不同,实现效率不同 ◼ 共同点 ◆逻辑结构 ◆工作原理(状态转移) 章节目录
LR分析器模型p124图7.1 1 .an 状态栈符号栈 输入缓冲区 Sm Xm 工R分析程序 心产生式 Sm-1 m-1 序列 .S% 动作表 转移表 LR # action goto 分析表 SHAHMADEHHMAAMAMMMEMAAMEMMHHAMMDHHEMAHHMMDDAMHHMAMHHMADAHMMMH 2025/4/3 小节目录
2025/4/3 4 LR分析器模型 p124 图7.1 a1 . ai . an # LR分析程序 动作表 action 转移表 goto 产生式 序列 状态栈 输入缓冲区 LR 分析表 Sm Sm-1 . . . S1 S0 Xm Xm-1 . . . X1 # 符号栈 小节目录
LR文法的定义p123 ■LR文法 ◆能够构造一张不含多重入口的LR分析表的文 法,即LR分析表的每个入口均是唯一确定的 ■LR(k)文法 ◆能用一个每步顶多向前检查k个输入符号的 LR分析器进行分析的文法 ◆对大多数的程序设计语言来说,k=0或1就足 够了 ■因此,我们只考虑k≤1的情形 非LR文法 ◆栈顶内容和输入符号已知时仍无法唯一确定 应采取的动作 2025/4/3 小节目录 ☒5
2025/4/3 5 LR文法的定义 p123 ◼LR文法 ◆能够构造一张不含多重入口的LR分析表的文 法,即LR分析表的每个入口均是唯一确定的 ◼LR(k)文法 ◆能用一个每步顶多向前检查k个输入符号的 LR分析器进行分析的文法 ◆对大多数的程序设计语言来说,k=0或1就足 够了 ◼因此,我们只考虑k≤1的情形 ◼非LR文法 ◆栈顶内容和输入符号已知时仍无法唯一确定 应采取的动作 小节目录