C编译器剖析_4.2 语义检查_表达式的语义检查(3)_字符串与标识符

本文深入剖析C编译器的语义检查过程,特别是针对基本表达式PrimaryExpression的处理。讲解了如何处理字符串StringLiteral和标识符ID,包括字符串的命名、存储和类型转换,以及对未声明标识符的处理策略。
摘要由CSDN通过智能技术生成

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)。我们先

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值