例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分析表如后
LR分析表 状态 action goto SETF y4 2 0123456 s6 acc r2 [4 746 S4 246 r4 2 r6 r 6r6 y4 3 s5 10 73 Sr r r 5 5 135 r r5
LR分析表 状态0123456789 10 11 action goto i + * ( ) $ E T F s5 s4 1 2 3 s6 acc r2 s7 r2 r2 r4 r4 r4 r4 s5 s4 8 2 3 r6 r6 r6 r6 s5 s4 9 3 s5 s4 10 s6 s11 r1 s7 r1 r1 r3 r3 r3 r3 r5 r5 r5 r5
4控制程序的工作 据 action s,a进行 (1)若 action[s, a=s,则将状态推入栈顶输入指针指向 下一输入符号; (2)右 action s2a,如 按第j个产生式A→>β归约,设阝t 应在分析栈栈顶上托个状态出栈呈现栈顶的状态设 为s,则根据si及归约后的非终结符A,查goto表, goto[si,A,则将状态j下推入分析栈栈顶。 (3)若 action[s, a=acc,则结束分析输入串被接受。 (4)若 action[s, a或 goto[s, A不是上述情况,转出错处理 程序
4. 控制程序的工作 据action[s,a]进行: (1)若action[s,a]=sj, 则将状态j推入栈顶, 输入指针指向 下一输入符号; (2)若action[s,a]=rj, 则按第j个产生式A→归约, 设||=t, 应在分析栈栈顶上托t个状态出栈, 呈现栈顶的状态设 为si, 则根据si及归约后的非终结符A, 查goto表, goto[si,A]=j, 则将状态j下推入分析栈栈顶。 (3)若action[s,a]=acc, 则结束分析,输入串被接受。 (4)若action[s,a]或goto[s,A]不是上述情况, 转出错处理 程序