编译原理7.4–布尔表达式的翻译.pptVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理7.4–布尔表达式的翻译

第七章 语义分析和中间代码生成 7.1 中间语言 7.2 说明语句 7.3 赋值语句的翻译 7.4 布尔表达式的翻译 7.5 控制语句的翻译 7.6 过程调用的处理 7.7 类型检查 7.4 布尔表达式的翻译 布尔表达式文法G E?E1 or E2 | E1 and E2 | not E1 | ( E1 ) | id1 relop id2 | true | false | id3 布尔运算符: or 、and 、 not 关系运算符: relop:<、≤、=、≠、>和≥ 布尔常量: true和false 布尔变量: id3 计算布尔表达式的值通常有两种办法 1. 如同计算算术表达式,一步不差地从表达式各部分的值计算出整个表达式的值。 2. 采取某种优化措施, 只计算部分表达式 把A or B解释成 if A then true else B 布尔表达式的两个作用 计算逻辑值 1 or(not 0 and 0)or 0 用做改变控制流语句中的条件表达式 if-then if-then-else while-do 以上对应两种不同的翻译方案 7.4.1 数值表示法 从左到右按类似算术表达式的求值方法来计算 例如,对于布尔表达式: a or b and not c 将被翻译成如下三地址序列: T1 := not c T2 := b and T1 T3 := a or T2 一个形如 a<b 的关系表达式可等价地写成 if a<b then 1 else 0, 并可将它翻译成如下三地址语句序列 (我们假定语句序号从100开始) 7.4.2 作为条件控制的布尔式翻译 出现在条件语句 if E then S1 else S2 中的布尔表达式E, 它的作用仅在于控制对S1和S2的选择。 无须保留E的值。 例7.3 考虑表达式 : a<b or c<d and e<f 假定整个表达式的真假出口已分别置为Ltrue和Lfalse,则按生成如下的代码: if a<b or c<d and e>f then S1 else S2 的四元式序列 (1) if a<b goto (7) // E.true (2) goto (3) (3) if c<d goto (5) (4) goto (p+1) // E.false (5) if e>f goto (7) // E.true (6) goto (p+1) // E.false (7) (关于S1的四元式)   … (p) goto (q) (p+1) (关于S2的四元式)   … (q) 100 if A<B goto 102 101 goto 107  102 if C<D goto 104 103 goto 100 104 T∶=Y+Z 105 X∶=T 106 goto 100 107 … * * * 1 or (not 0 and 0) or 0 = 1 or (1 and 0) or 0 = 1 or 0 or 0 = 1 or 0 = 1 把A and B解释成 if A then B else false 把not A解释成 if A then false else true (100) if a<b goto 103 (101) T:=0 (102) goto 104 (103) T:= 1 (104) T - 临时变量,存放布尔表达式a<b的值 例7.2 翻译布尔表达式 ab or cd and ef 108: if ef goto 111 109: T3 =0 110: goto 112 111: T3 =1 112: T4 = T2 and T3 113: T5 = T1 or T4 100: if ab goto 103 101: T1 =0 102: goto 104 103: T1 =1 104: if cd goto 107 105: T2 =0 106: goto 108 107: T2 =1 表7.15 if – then – else 语句 的代码结构 S2.code … Goto S.next S1.code E.Code to E.true to E.false E.false: E.true: S.next: “真”出口 “假”出口 if a<b goto Ltrue goto L1 L1 : if c<d goto

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档