语义分析——声明语句、赋值语句、条件语句和循环语句的翻译

接下来介绍各种常用语句在语义分析中如何翻译。

声明语句的翻译

程序语言中的声明语句都是给编译程序提供信息的,其作用是告知编译器把某个名字和某个类型联系起来,并为它分配相应的内存空间。

因此对声明语句一般不生成代码,只是在编译时把有关信息填入相应表格即可。

  • 为局部名字建立符号表条目,其中包含名字的类型和分配给它的存储单元的相对地址等信息

赋值语句的翻译

简单算术表达式的赋值语句

所谓简单指不考虑数组元素、记录、函数引用等情况。

如C语言中的:

a = 1;

对应的四元式为:

(=, a, _, 1)

类型转换

有的程序设计语言允许混合运算,有的不允许。如果不允许,则发现有类型不相同的运算分量就应该报错。如果允许,就要进行隐式类型转换

控制流语句的翻译

条件语句中布尔表达式的翻译

出现在条件语句 if E then S1 else S2 中的布尔表达式E,它的作用仅在于控制对S1或S2的选择,亦即提供“真”、“假”出口。除非在条件语句之后还有对E的引用(这种情况很少),否则其值无需保留。大致翻译模板为:

在这里插入图片描述
其中,可以没有跳转到E.true的语句,因为在布尔语句之后便是E.true,因此只需要跳转到E.false即可。

循环语句的翻译

while,do-while语句

while语句的模板:

在这里插入图片描述
do-while语句的模板:

在这里插入图片描述

for循环

在这里插入图片描述

其他跳转语句

1、break

在这里插入图片描述
2、continue

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

花无凋零之时

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值