算术表达式语义分析程序 c语言,编写语义分析和翻译程序,实现对算术表达式的类型...-卓优商学院问答...

推荐回答

第五章语法制导翻译5.1计算语义规则的方法1.分析树法:输入串----分析树----依赖图----计算次序2.基于规则的方法:在构造编译器时,用手工或专门的工具来分析语义规则,确定属性值的计算顺序。3.忽略语义规则的方法:在分析过程中翻译,那么计算顺序由分析方法来确定而表面上与语义规则无关。实际上,限制语法制导定义,使属性值的计算顺序能和语法分析过程同步进行。5.2语法树表示程序层次结构的树,它把分析树中对语义无关紧要的成分去掉,是分析树的抽象形式,也称作语法结构树,或结构树。语法树是常用的一种中间表示形式。Csg++把语法分析和翻译分开。语法分析过程中完成翻译有许多优点,但也有一些不足:1.适于语法分析的文法可能不完全反映语言成分的自然层次结构;2.语法分析方法限制,对分析树结点的访问序和翻译需要的访问序不一致。5.3L-属性定义语法分析过程中进行语义分析和翻译,属性的计算顺序受到语法分析建立分析树结点顺序的限制。一种自然的计算属性的顺序是按深度优先访问分析树结点的顺序,它适应多种自底向上和自顶向下的翻译方法。L-属性定义可用于按深度优先顺序计算属性值。定义:一个语法制导定义是L-属性定义,如果"A→X1X2…XnÎP,其每一个语义规则中的每一个属性都是一个综合属性,或是Xj1£j£n的一个继承属性,这个继承属性仅依赖于1.产生式中Xj的左边符号X1,X2,…Xj-1的属性;2.A的继承属性。每一个S-属性定义都是L-属性定义5.4翻译模式定义翻译模式是语法制导定义的一种便于翻译的书写形式。其中属性与文法符号相对应,语义规则或语义动作用花括号{}括起来,可被插入到产生式右部的任何合适的位置上。这是一种语法分析和语义动作交错的表示法,他表达在按深度优先遍历分析树的过程中何时执行语义动作。翻译模式给出了使用语义规则进行计算的顺序。可看成是分析过程中翻译的注释。5.5类型表达式定义类型表达式的定义如下:1)类型名和基本类型是类型表达式。integer、char、real、boolean是基本类型,所以它们是类型表达式。另外,void表示“无类型”,type_error表示“出错类型”,它们也是类型表达式。2)类型构造符作用于类型表达式的结果仍然是类型表达式。类型构造符包括:a)数组构造符ARRAY:若T是类型表达式,则ARRAY类型表达式中可出现类型变量,变量值是类型表达式。我都不了解是什么东东。

齐春正2019-12-22 09:59:14

卓优商学院提示您:回答为网友贡献,仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值