4.2.3
在这一小节,我们先来分析一下基本表达式PrimaryExpression的语义检查,由C的标准文法,我们可以知道与PrimaryExpression相关的产生式如下所示,即加了一对小括号的表达式(Expression)在语法上也相当于标志符ID、常量CONST和字符串StringLiteral。
primary-expression:
ID
constant
string-literal
( expression )
例如,对于表达式(a+b)+c而言,(a+b)和c都是基本表达式PrimaryExpression,其语法
地位是相当的,但经语法分析后,我们为(a+b)+c生成的抽象语法树如下所示:
(+ (+ a b) c)
对(+ a b)这棵进行加法运算的语法子树而言,因为其运算符+是二元运算符,所以其语义检查是在CheckBinaryExpression函数中完成的,而语法子树c则是在CheckPrimaryExpression函数中完成。换言之,在对基本表达式PrimaryExpression进行语义检查时,我们只需要考虑标志符ID、字符串StringLiteral和常量constant,而不需要考虑(Expression)。我们先