| 总结上面LR分析算法为: 置ip指向输入串w的第一个符号 令Si为栈顶状态 a是ip指向的符号(当前输入符号) begin (重复开始) if ACTION[Si,a]=Sj then begin PUSH j,a (进栈) ip 前进(指向下一输入符号) end else if ACTION[Si,a]=rj(若第j条产生式 为A→β) then begin pop |β| 项 若当前栈顶状态为Sk push GOTO[Sk,A] 和A(进栈) end else if ACTION[Si,a]=acc then return (成功) else error end . (重复结束) 对于上面的分析过程我们可以知道LR分析器的关键部分是分析表的构造,那么可提出以下问题: 一个文法的LR分析表是如何得到的? 对于一个文法,状态集是如何确定的? 为了解决这些问题引入可归前缀与活前缀概念 |