编译原理实验三-中间代码生成器

实验要求

考虑下面的三地址码的文法,其中<>括起来的为非终结符,粗体为终结符。
id = | id =
id | num
+ | – | * | /
goto label | if goto label
> | < | >= | <= | == | !=
halt

要求:生成给定的C语言程序中间代码,输出得到的三地址语句。
输入样例:
sum = 0;
x = 9;
while (sum <= 100) sum = sum + x;
if (sum > 101) sum = sum - 100;
输出样例:
100: sum = 0
101: x = 9
102: if sum <= 100 goto 104
103: goto 107
104: T1 = sum + x
105: sum = T1
106: goto 102
107: if sum > 101 goto 109
108: goto 111
109: T1 = sum - 100
110: sum = T1
111: halt

本实验将用一个解释器TACVM执行生成的中间代码。该解释器执行每一条三地址语句后输出变量的值。例如,执行上述中间代码的输出为:
D:\Teaching\Compiler\2021\TACVM\Debug>TACVM.exe d:\Teaching\Compiler\2021\TACVM\hello.tac
sum = 0
x = 9
T1 = 9
sum = 9
T1 = 18
sum = 18
T1 = 27
sum = 27
T1 = 36
sum = 36
T1 = 45
sum = 45
T1 = 54
sum = 54
T1 = 63
sum = 63
T1 = 72
sum = 72
T1 = 81
sum = 81
T1 = 90
sum = 90
T1 = 99
sum = 99
T1 = 108
sum = 108
T1 = 8
sum = 8

实验报告截图

在这里插入图片描述

运行截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
中间代码:
在这里插入图片描述
测试样例2(代码有错误):
在这里插入图片描述
在这里插入图片描述

下载地址

点击跳转

https://download.csdn.net/download/qq_45823731/86847962

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

太极生两鱼

要天天开心哦!

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

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

打赏作者

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

抵扣说明:

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

余额充值