辽宁大学_编译原理part7技术报告.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 控制结构翻译中的其他问题 分层结构的记录 涉及变量的作用域 转移目标的先引用后定义 使用回填技术 涉及循环语句、条件语句、转移标号 * * 思考题 1、P218 4、6、7 2、设m维数组A[n1,n2,…,nm]是按照列优先存放的,其各维的下界是0,首地址为a,请给出A [i1,i2,…,im]的地址的计算公式,并给出相应的语法制导定义。 * * 习题 1.把下列语句翻译成三地址代码 while a 10 do if b = 100 then while a 20 do a := a + b – 1 2.把下列语句翻译成三地址代码 if a10 and cd then if b=100 then a := a / b else a := a * b * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 表达式翻译中的其它问题 临时变量空间的统计 了解需求、及时释放 运算合法性检查 利用符号表保存的名字类型 类型自动转换 填加专用指令 * * 类型转换: itr,rti S → id := E S.code := E.code || {if id.type=E.type then gen( id.place:=E.place ) else if id.type=real then gen(id.place’:=‘ itr( E.place) else gen(id.place’:=‘rti ( E.place)} E → E1 + E2 E.place := newtemp; E.code := E1.code || E2.code || {E.type:=E1.type; if E1.type=E2.type then gen(E.place:=E1.place+E2.place) else{ if E1.type=real then gen(E.place:=E1.place+‘itr(E2.place)) else gen(E.place:=itr(E1.place)+‘E2.place); E.type=real}} * * 7.5 控制语句的翻译 高级语言的控制结构 顺序 begin 语句; … ;语句end 条件 if_then_else、if_then switch、case 循环 while_do、do_while for、repeat_until 三地址码 goto n (j,_,_,n) if x relop y goto n (jrelop,x,y,n) * * 布尔表达式的翻译 基本文法 E→E1 or E2 | E1 and E2 | not E1 | ( E1 ) | id1 relop id2 | id 处理方式 数值表示法(与算术表达式的处理类似) 真:E.place=1 假:E.place=0 newtemp——申请临时工作单元 真假出口表示法(作为条件控制) 真出口:E.true 假出口:E.false newlab——申请新标号 * * 数值表示法——使用综合属性 E → E1 or E2 E.place := newtemp; E.code := E1.code || E2.code || gen(E.place:=E1.place‘orE2.place) E → E1 and E2 E.place := newtemp; E.code := E1.code || E2.code || gen(E.place:=E1.place‘andE2.place) E → not E1 E.place := newtemp; E.code :=E1.code || gen(E.place:= notE1.place) * *

文档评论(0)

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

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档