哈工大编译原理6-2.ppt

哈工大编译原理6-2.ppt

ID:51497349

大小:823.00 KB

页数:80页

时间:2020-03-25

哈工大编译原理6-2.ppt_第1页
哈工大编译原理6-2.ppt_第2页
哈工大编译原理6-2.ppt_第3页
哈工大编译原理6-2.ppt_第4页
哈工大编译原理6-2.ppt_第5页
资源描述:

《哈工大编译原理6-2.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本节考虑由如下文法生成的布尔表达式:布尔表达式的作用:1.用作计算逻辑值2.用作控制流语句如if-then,if-then-else和while-do等之中的条件表达式布尔表达式:用布尔运算符号(and,or,not)作用到布尔变量或关系表达式上而组成6.2.3布尔表达式E→EorE

2、EandE

3、notE

4、(E)

5、idrelopid

6、true

7、false1优先级:not、and、orAnd、or左结合not右结合1、布尔表达式的表示一、布尔表达式的翻译方法例1or(not0and0)or0方法一:用数值表示真和假,从而对布尔表达式的求值可以象对算术表达式的求值那样一步一步地来计算=

8、1or(1and0)or0=1or0or0=1or0=12方法二用于翻译控制流语句中的布尔表达式尤其方便。方法二:另一种方法是根据布尔表达式的特点,采用了某种优化措施。例:AorB如果A为真,那么B的值就不必计算,此时AorB的值已定,为真。同理,AandB如果A为假,那么B的值就不必计算,此时AandB的值已定,为假。3布尔表达式:aorbandnotc翻译成三地址代码序列:100:t1:=notc101:t2:=bandt1102:t3:=aort1用1表示真,0表示假来实现布尔表达式的翻译二、数值表示的布尔表达式的翻译方法4关系表达式:a

9、01:t:=0102:gotol04。103:t:=1104:等价于ifa

10、E1{E.place:=newtemp;②emit(E.place=notE1.place)}E→E1andE2{E.place:=newtemp;①emit(E.place=E1.placeandE2.place)}7E→ture{E.place:=newtemp;④emit(E.place=1)}E→false{E.place:=newtemp;⑤emit(E.place=0)}E→id1relopid2{E.place:=newtemp;emit(ifid1.placerelop.opid2.placegotonextstart+3);emit(E.place=0);③emi

11、t(gotonextstat+2);emit(E.place=1)}8例:布尔表达式a

12、it(E.place‘=’‘0’)emit(‘goto’nextstart+2)emit(E.place‘=’‘1’)}{E.place=newtemp;emit(E.place‘=’E1.place‘and’E2.place)}108:t3=t1andt2{E.place=newtemp;emit(‘if’id1.placerelop.opid2.place‘goto’nextstart+3)emit(E.place‘=’‘0’)emit(‘goto’nextstart+2)emit(E.place‘=’‘1’)}109:ife

13、13112:t4=1{E.place=newtemp;emit(E.place‘=’E1.place‘and’E2.place)}113:t5=t3andt410四、控制流语句中的布尔表达式的翻译对于出现在条件语句ifEthens1elses2中的布尔表达式E,其作用就是控制对S1和S2的选择因此,作为条件的布尔表达式,为它设计两个出口:E.true和E.false考虑E的上下文,对于IF语句,E.true指向S1,E.false指向S2;对于while语句E.tru

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

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

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