自上而上的语法分析是根据语法树的叶子节点来推回到树根的语法分析技术。这种由叶子到树根的推导叫做归约。
做个更进一步的解释,比如有一个最右推导E -> i1+i2,如果我们依次读入到i1、+、i2的话,就可以"推出"他们所组成的产生式的开始符E,这种最右推导的逆向过程就叫做归约。
理解了归约就明白了自下而上分析法的核心思想。
下面来讲解LR分析法,LR的意思是从左到右扫描输入,反向构造最右推导序列。
LR分析相比自上而下的语法分析,最重要的数据结构不是树,而是栈。我们用栈的栈顶元素来表示语法分析当前所处的状态,然后根据对输入串的扫描,不断改变栈顶存储的状态。下面给出了LR语法分析的模型: