编译原理第七章 语义分析和中间代码的产生

第七章 语义分析和中间代码的产生

·内容小结

    语义分析和中间代码的产生式编译程序的第三个步骤,它将对语法分析所识别的各类语法范畴,分析其含义,并进行初步翻译,产生中间代码。这一章主要有以下内容:中间代码的产生、简单赋值语句的翻译、布尔表达式的翻译、控制语句的翻译、说明语句的翻译、数组和结构的翻译符号表。

    中间代码的形式有:逆波兰式、图表示法、三地址代码(四元式、三元式、间接三元式)。逆波兰式是把操作数写在前面,算符写在后面。图示法包括抽象树和DAG,抽象树是将语法分析树去掉不必要的信息变换而成的,DAG(无循环有向圈)与抽象向树类似,不同点是代表公共表达式的节点具有多个父节点。三地址式一般形式为x=y op z,每个语句右边只能有一个运算符;三地址式的具体实现有3种:三元式、间接三元式和四元式;三元式表示为(op,operand1,operand2),间接三元式在三元式的基础上使用了间接表,四元式表示为(op,operand1,operand2result)。

    逻辑表达式的中间代码描述,采用优化策略:1).A or B 解释成if A then true else B  2)A and B 解释成if A then B else false  3not A解释成if A then false else true

    控制语句的翻译,控制语句有条件语句、条件循环语句和技术循环语句,对应的语句可以翻译成相应的三地址形式。

    数组元素的复制过程的中间代码内容主要介绍了数组元素的地址计算公式、二维数组的处理和含数组元素的赋值语句的翻译。

·课后练习


·感想

    这章主要学习了中间代码产生过程的相关问题,内容相比较于第五章来说简单许多,中间代码的形式表示很容易理解,比较难的地方在于将相关语句写成三地址式然后转化成四元式的形式,主要是在于写成三地址式这个过程,有优化和非优化两种情况,一旦写出三地址式,转化成四元式就比较轻松了,注意的是要使用使用回填策略,得到的四元式就和我们之前接触的汇编语言有相似之处,这就产生了初步的代码。另外一个问题就是数组的地址计算问题,由于在数据结构中也涉及相关问题,需要自己花时间推推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值