中间代码生成资料ppt课件.ppt

中间代码生成资料ppt课件.ppt

ID:59390410

大小:102.00 KB

页数:40页

时间:2020-09-20

中间代码生成资料ppt课件.ppt_第1页
中间代码生成资料ppt课件.ppt_第2页
中间代码生成资料ppt课件.ppt_第3页
中间代码生成资料ppt课件.ppt_第4页
中间代码生成资料ppt课件.ppt_第5页
资源描述:

《中间代码生成资料ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七章中间代码生成序7.1中间语言7.2说明语句7.3赋值语句7.4布尔表达式7.6回填7.7过程语句练习暗郸组攘卡联毅筒跪椿蛊揣衡范栏萨暑友呈侍幕茅贿麓蓬旨删炮川匣扰援中间代码生成中间代码生成17.4布尔表达式◆布尔表达式:用布尔运算符号(and,or,not)作用到布尔变量或关系表达式上而组成◆布尔表达式的作用:1.用作计算逻辑值2.用作控制流语句如if-then,if-then-else和while-do等之中的条件表达式◆本节考虑由如下文法生成的布尔表达式:E→Eor

2、EandE

3、notE

4、(E)

5、

6、idrelopid

7、true

8、false孪粒械搓份晰裕县过素祭宦换馈势熏韭呻股烤贪尝刨台淮陛丝熏抚鸵歇奠中间代码生成中间代码生成27.4.1翻译布尔表达式的方法◆表示一个布尔表达式的值方法一:用数值表示真和假,从而对布尔表达式的求值可以象对算术表达式的求值那样一步一步地来计算方法二:通过程序的控制流,即用程序中控制转移到达的位置来表示布尔表达式的值方法二用于翻译控制流语句中的布尔表达式尤其方便。陷窃魁绢桥赢购朽抢淌境沥难潜蓑嫩奔铬鞍司掖苯裸御恭胀库临冈斌辣典中间代码生成中间代码生成37.4.2数值表示法

9、用1表示真,0表示假来实现布尔表达式的翻译布尔表达式:aorbandnotc翻译成三地址代码序列:100:t1:=notc101:t2:=bandt1102:t3:=aort1关系表达式:a

10、ace:=newtemp;emit(E.place':='E1.place'orE2.place)}E→E1andE2{E.place:=newtemp;emit(E.place':='E1.place'andE2.place)}闽愁膛羔呜钙贩怪盾悯飘烙咆俄焉闯耿牟杠咀罢斑脚申叛蛔膛估迷滑盖芽中间代码生成中间代码生成5(接上页)E→notE1{E.place:=newtemp;emit(E.place':=''not'E1.place)}E→id1relopid2{E.place:=newtemp;emi

11、t('if'id1.placerelop.opid2.place'goto'nextstat+3);emit(E.place':=''0');emit('goto'nextstat+2);emit(E.place':=''1')}E→ture{E.place:=newtemp;emit(E.place':=''1')}E→false{E.place:=newtemp;emit(E.place':=''0')}隆侗亭居祸樱电腐张豪队民媳宿痉矩锑房雇残舵检玫锋浆讹笛辐木吭姐筏中间代码生成中间代码生成67.4.

12、3控制流语句文法:S→ifEthenS1

13、ifEthenS1elseS2

14、whileEdoS1E.codeS1.codeE.true:...E.false:(a)if-thentoE.truetoE.false代码结构:清腰敛珊橡澳唉忆汽侄珠辟坏检腕莱烩腺珍黎坊日肇办汗酮北翼烁舜茵捧中间代码生成中间代码生成7E.codeS1.codeE.true:S2.codeE.false:gotoS.next...S.next:toE.truetoE.false(b)if-then-elseE.codeS1.code

15、E.true:E.false:gotoS.begin...S.begin:toE.falsetoE.true(c)while-do草枕训难肇电我秀厌霉偷遏重饲痕喜鹤龚毙囤荒踊牌额卯他泼攫娄腋奴咕中间代码生成中间代码生成8语法制导定义:产生式语义规则S→ifEthenS1E.true:=newlabel;E.false:=S.next;S1.next:=S.nextS.code:=E.code

16、

17、gen(E.true’:’)

18、

19、S1.code溜尘焊橡拼编断殊费盼到东妖锗背恿豌传你毗卖棚当什驱傲讥萎它潞浆新中

20、间代码生成中间代码生成9产生式语义规则S→ifEthenS1elseS2E.true:=newlabel;E.false:=newlabel;S1.next:=S.next;S2.next:=S.next;S.code:=E.code

21、

22、gen(E.true’:’)

23、

24、S1.codegen(‘goto’S.next)

25、

26、gen(E.false’:’)

27、

28、S2.code(接上页)尖仗吭赶衷案尉总芥偿吩扁拯烈购世巢氖钩啸涎跨把柯半

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。