LR分析法 1.LR(K)分析法 自底向上的LR分析法是指从左向右扫描 输入串,每次分析由分析栈中符号及向前 搜索K个输入符号以确定作为产生式右部 的短语(句柄)是否已在分析栈的栈顶形成, 从而决定应采取的动作。这种分析方法称 为LR(K)分析法。一般只考虑K的情况
二. LR分析法 1. LR(K) 分析法 自底向上的LR分析法是指从左向右扫描 输入串,每次分析由分析栈中符号及向前 搜索K个输入符号,以确定作为产生式右部 的短语(句柄)是否已在分析栈的栈顶形成, 从而决定应采取的动作。这种分析方法称 为LR(K)分析法。一般只考虑K1的情况
其组成为分析栈控制程序分析表输入串 输入串a1 a1 分析栈 驱动程序 输出 action goto 分析表
其组成为:分析栈,控制程序,分析表,输入串 输入串 分析栈 驱动程序 输出 action goto 分析表 s0 . . . sm-1 sm a1 ... ai ... $
2.分析栈 存放状态初始时置初始状态s栈里的 每一状态概括了从分析开始到某一时刻 已进行的分析工作
2. 分析栈 存放状态;初始时,置初始状态s0 ;栈里的 每一状态概括了从分析开始到某一时刻 已进行的分析工作
3.分析表 由 action[s,a]和 gotos, x]两个子表组成。 (1) action s, a定义了在状态s下,当前输入符号为 a时应采取的分析动作:移进归约接受,出错。 (2)goto表是一个状态及非终结符的二维矩阵, gotolS, X定义了在状态s下,面对文法符号x时的 状态转换
3. 分析表 由action[s,a]和goto[s,x]两个子表组成。 (1)action[s,a]定义了在状态s下, 当前输入符号为 a时应采取的分析动作: 移进, 归约,接受, 出错。 (2)goto表是一个状态及非终结符的二维矩阵, goto[s,x]定义了在状态s下, 面对文法符号x时的 状态转换
例G(E) 1)E→E+T (2)E→T (3)T→TF (4)T→>F (5)F→(E) (6F)i 的LR分析表如后
例 G0 (E) (1)E→E+T (2)E→T (3)T→T*F (4)T→F (5)F→(E) (6)F→i 的LR分析表如后