欢迎来到天天文库
浏览记录
ID:33363371
大小:255.51 KB
页数:43页
时间:2018-05-25
《编译原理与技术讲义ppt教学课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译原理与技术中间代码生成10/8/20211《编译原理与技术》讲义中间代码生成-布尔表达式翻译-控制流语句翻译10/8/20212《编译原理与技术》讲义布尔表达式的翻译布尔表达式文法G4EE1orE2
2、E1andE2
3、notE1
4、(E1)
5、id1relopid2
6、true
7、false
8、id3布尔运算符or、and和not(优先级、结合性)关系运算符relop:<、≤、=、≠、>和≥布尔常量:true和false布尔变量:id310/8/20213《编译原理与技术》讲义布尔表达式的翻译两种翻译方法-数值表
9、示法(完全计算)类似算术表达式的翻译,如布尔表达式trueandfalseor(2>1)的计算为falseor(2>1)falseortruetrue-短路计算法(不完全计算或解释法)AorBifAthentrueelseBAandBifAthenBelsefalsenotAifAthenfalseelsetrue借助控制流语句的思路,部分(不完全地-用转移语句)“计算”布尔表达式的值以确定整个表达式的真、假。10/8/20214《编译原理与技术》讲义布尔表达式的翻译数值表示法用1表示true,
10、0代表false。(1)EE1orE2{t:=newtemp;emit(t“:=”E1.place“or”E2.place);E.place:=t}(2)EE1andE2(3)EnotE1(4)E(E1)10/8/20215《编译原理与技术》讲义布尔表达式的翻译数值表示法(5)Eid1relopid2{t:=newtemp;emit(“if”id1.placerelop.opid2.placegotonextcode+3);emit(t“:=”0);emit(“goto”nextcode+2);e
11、mit(t“:=”1);E.place:=t;}nextcode:emit产生三地址语句的编号;产生后,nextcode++10/8/20216《编译原理与技术》讲义id1relopid2(关系表达式)ifid1relopid2gotoi+3i:t:=0i+1:gotoi+4i+2:t:=1i+3:i+4:truefalse10/8/20217《编译原理与技术》讲义布尔表达式的翻译数值表示法(6)Etrue{t:=newtemp;emit(t“:=”1);E.place:=t}(7)Efalse{t:=
12、newtemp;emit(t“:=”0);E.place:=t}(8)Eid3{t:=newtemp;emit(ifid.place“goto”nexcode+3);emit(t“:=”0);emit(“goto”nextcode+2);emit(t“:=”1);E.place:=t}10/8/20218《编译原理与技术》讲义id(布尔变量)ifidgotoi+3i:t:=0i+1:gotoi+4i+2:t:=1i+3:i+4:truefalse10/8/20219《编译原理与技术》讲义e.g.16a
13、orc=dandnote>f的三地址码:(100)ifaf的三地址码:(108)ife>fgoto111(109)t3:=0(110)goto112(111)t3:=1//以上为e>f的翻译(112)
14、t4:=nott3//以上为note>f的翻译(113)t5:=t2andt4//以上为c=dandnote>f的翻译(115)t6:=t1ort5//以上为af的翻译10/8/202111《编译原理与技术》讲义af布尔表达式的翻译-短路计算trueL_truefalsetruefalseL_falsefalsetrueL_true-真出口:整个布尔表达式为真时,控制流应转移到的目标语句(代码);反之为假时则转到L_false-假出口。表示转移到的
15、目标语句在有关布尔表达式翻译时尚未确定。10/8/202112《编译原理与技术》讲义布尔表达式的翻译短路计算e.g.17af的短路计算三地址码:ifafgotoL_falsegotoL_true10/8/202113《编译原理与技术》讲义短路计算E1orME2truefalse真出口假
此文档下载收益归作者所有