网站大量收购独家精品文档,联系QQ:2885784924

ch赋值语句与布尔表达式的翻译张素琴.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch赋值语句与布尔表达式的翻译张素琴

* 课堂练习:根据如上语法制导的定义使用回填技术写出下面句子的四元式翻译结果: 1、ab and cd or ef * 辛明影 * 1、 x=y op z 常用语句的四元式手工翻译: 2、 x=op y 3、goto L 4、if x rop y goto L 5、x=y 6、parm x call p,n (op , y , z , x) (op , y , , x) (jump , , , L) (jrop ,x ,y , L) (= , y , ,x) (param, , ,x) (=[] , y[i] , ,x) (= , y , , x) 8、x=y x=*y 7、x=y[i] * 8.4 简单赋值语句的翻译 为了实现赋值语句x=y 语法制导的自动翻译成四元式: (= , y , ,x) (1)需要定义赋值语句的属性文法; (2)语法分析的同时执行语义规则,由emit自动生成四元式。 * id=E                                     赋值语句的属性文法: E=E1+E2                  E=E1*E2                 { p:=lookup(id.name);        if pnil then emit(p:= E.place)   else error } {E.place=newtemp; emit(E.place:=E1.place+E2.place)} {E.place=newtemp; emit(E.place‘=’E1.place‘*E2.place)} * E=(E1) E =-E1                   { E.place:=newtemp;         emit(E.place ′ := ′ ′uminus′E1.place} {E.place:=E1.place} 语义过程emit将生成的四元式送到输出文件上,如emit(+ , E1.place,E2.place, E.place); 过程lookup ( id.name)负责在符号表中查找标示符符的名字; 语义变量E.Place表示存放E的变量在符号表中的登录项; 语义过程newtemp表示生产一临时变量。 * {E.place=newtemp; If E1.type=int and E2.type=int then {emit(E.place,‘:=’,E1.place,‘*‘,E2.place) E.type:=int} else if E1.type=real and E2.type=real then {emit(E.place,‘:=’,E1.place,‘*‘,E2.place) E.type:=real} else if E1.type=int and E2.type=real then {t:=newtemp; emit(t,‘:=’,’itr’,E1.place); emit(E.place,‘:=’,t,‘*‘,E2.place); E.type:=real} else {t:=newtemp; emit(t,‘:=’,’itr’,E2.place); emit(E.place,‘:=’, E2.place, ‘*‘,t); E.type:=real} } E→E1*E2                 语义变量E.type是E的类型,一目算符itr将整数转换成实数 * 布尔表达式的文法: 布尔表达式的作用: 1. 用作计算逻辑值 2.用作控制流语句如if-then,if-then-else和while-do等之中的条件表达式 布尔表达式: 用布尔运算符号(and,or,not)作用到布尔变量或关系表达式上而组成 E→E or E|E and E| not E|(E)| id relop id |true|false Relop关系运算符 8.5 布尔表达式的翻译 * 布尔表达式:a or b and not c 手工翻译成四元式代码序列: 100 : t1:=not c 101 : t2:=b and t1 102 : t3:=a or t2 用1表示真,0表示

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档