语义分析和中间代码生成.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文档。上传文档
查看更多

3.转移语句的四元式条件转移(jrop,P1,P2,0)(jnz,P1,-,0)无条件转移(j,-,-,0)4.翻译方案B→i{B.T:=ip;gen(jnz,entry(i),-,0);B.F:=ip;gen(j,-,-,0)}B→i1ropi2{B.T:=ip;gen(jrop,entry(i1),entry(i2),0);B.F:=ip;gen(j,-,-,0)}二.无条件转移语句的翻译1.gotoL的两种情形(1)L已经定义…L:.../*此时,将L登记入符号表*/…gotoL;/*查表,发现L已定义,生成四元式*/…(2)L未定义…gotoL;/*将L记入符号表,定义否标记为“否”*/…gotoL;/*拉链*/…L:…/*定义否标记改为“是”,回填*/…名字类型…定义否地址L标号未r……(p)(j,_,_,0)……(q)(j,_,_,p)……(r)(j,_,_,q)……………2.带标号语句的处理方法设文法:S→labelSlabel→i:当用label→i:进行归约时(1)若i(假定为L)不在符号表中,则把它填入,置“类型”栏为“标号”,“定义否”栏为“已”,“地址”栏为ip的当前值;(2)若L已在符号表中,但“类型”不为“标号”,或“定义否”为“已”,则“名字重定义”;(3)若L已在符号表中,但“类型”为“标号”,则把标志“未”改为“已”,然后把“地址栏”中的链首取出,同时把ip当前值填入其中,最后执行backpatch(q,ip)语义过程进行回填。其中,backpatch(q,ip)为语义过程:把q为链首的链上所有四元式的第四区段都填为ip。三.条件语句的翻译1.文法及其分析S→ifBthenS1│ifBthenS1elseS2L→S│L;SBS1?ifBthenS1B为假B为真S1的第一条四元式用以“回填BS1S2?ifBthenS1elseS2B为假B为真S1、S2的第一条四元式用以“回填”此处产生一无条件转移语句由上面几个图可见:(1)B具有真假出口B为真假时的转向不同在翻译B时其真假出口有待“回填”(2)因if语句的嵌套,必须记录不确定转移目标的四元式的地址—拉链技术2.改写文法M→ifBthenN→MS1elseS→MS1|NS1L→SL→XSX→L;3.语句变量及过程(1)N.CHAIN:记录不确定转移目标的四元式形成的链;如:S.CHAIN记录了S中不确定转移目标的且转向地址均相同的四元式(这些四元式形成一个链,S.CHAIN为链头)如:(p)(j,-,-,0)……(q)(j,-,-,p)……(r)(j,-,-,q)S.CHAIN=r(2)merge(t1,t2):语义函数,将t1、t2合并,返回合并后的链头t2;(3)backpatch(t1,code):语义过程,用code回填t1;如:(p)(j,-,-,0)(u)(j,-,-,0)………...(q)(j,-,-,p)(v)(j,-,-,u)………...(r)(j,-,-,q)(w)(j,-,-,v)t1=rt2=w执行merge(t1,t2)后得(p)(j,-,-,0)(u)(j,-,-,r)………...(q)(j,-,-,p)(v)(j,-,-,u)……

文档评论(0)

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

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

1亿VIP精品文档

相关文档