【编译原理】4 语义分析和中间代码生成

1 属性文法

属性文法

2 三地址代码的具体实现(中间代码)

三地址代码的具体实现
常见的三地址语句

3 表达式及赋值语句的翻译

3.1 简单算术表达式和赋值语句的翻译

  • 语义子程序(在归约的同时执行)所涉及的语义变量、语义函数说明:
  1. 对非终结符E(算术表达式)定义语义变量E.place,即用E.place表示存放E值的变量名在符号表中的入口地址或临时变量名的整数码
  2. 定义语义函数newtemp(),即每次调用newtemp()时都将回送一个代表新临时变量的整数码
    临时变量名按产生的顺序可设为: T 1 、 T 2 、 ⋯ T_1 、T_2 、⋯ T1T2
  3. 定义语义函数emit(op,arg1,arg2,result):产生一个四元式并填入四元式表中
  4. 定义语义函数lookup(i.name):审查i.name是否出现在符号表中,是则返回i.name在符号表的入口指针,否则返回NULL

3.2 布尔表达式的翻译

布尔表达式

  1. 计算布尔表达式的值的方式
    (1)仿照计算算术表达式的方法,按布尔表达式的运算顺序一步步地计算出真假
    (2)根据布尔运算的特点实施某种优化,省略不影响运算结果的运算
  2. 确定一个表达式的真假出口
    真假出口1
    真假出口2
  3. 处理E.tc和E.fc引入的语义变量和函数
    布尔表达式处理1
    布尔表达式2

4 控制语句的翻译

4.1 条件语句if的翻译

if1
if2
if3
if4

4.2 循环语句的翻译

while1
while2
while3
while4

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

社恐患者

赚钱不易呜呜呜

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值