1.2.2 语法分析

语法分析是编译的第二个步骤。语法分析器读入词法单元流,基于语言的语法规则推导并构建语法分析树,若输入的词法单元流在语法规则下能够被推导并构建为语法分析树,则认为该程序不包含语法错误,语法分析器输出语法分析树,交予语义分析器进行语义检查。

例如,对于词法分析获得的词法单元流:

其通过语法分析构造的语法分析树如下:

语法分析器分析得知,这条语句是一条赋值语句,首先声明了变量iVarDec),然后给i赋值为123+b*c。语法推导过程中,符号的归约具有优先级,例如乘法的运算优先级高于加法,乘法应当在加法之前进行计算,因此首先归约b*c,然后归约123+b*c

在第2章中,我们将讨论以下内容:

●上下文无关文法,几乎所有程序设计语言的语法规则都是通过上下文无关文法来定义的。

●自顶向下的语法分析算法。

●自底向上的语法分析算法。