自底向上分析概述
- 从分析树的底部(叶节点)向顶部(根节点)方向构造分析树
- 可以看成是将输入串w归约为文法的开始符号S的过程
- 自顶向下的语法分析采用最左推导方式
- 自底向上的语法分析采用最左归约方式(反向构造最右推导)
- 自底向上语法分析的通用框架:移入-归约分析(Shift-Reduce Parsing)
【例】移入-归约分析
$
表示栈底和栈顶- 开始时栈中没有任何符号
- 第一步,将
id
入栈 - 第二步,因为
id
是第四个产生式的右部,所以将id
归约为E
,id
出栈,E
入栈 - ……
- 每次归约的符号串称为"句柄",一旦句柄在栈顶出现,我们就立即将其归约,从而保证我们的每一次归约都是最左归约
- 栈内符号串+剩余输入=规范句型
移入-归约分析的工作过程
- 在对输入串的一次从左到右扫描