




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设程序结构定义如下:PSSifEthenSSifEthenSelseSSwhileEdoSSbeginLendSALL;SLS布尔表达式E及赋值语句A定义见书上,为能及时地回填有关四元式串的转移地址,改写文法如下:PSC,ifEthen,SCS1,TpCSelse,STPS2,Wwhile,WdWEdo,SWdS3,SbeginLend,SA,LSL;,LLSS1,自底向上语法制导翻译方案实现过程分析(关于控制结构的翻译),翻译中使用回填-拉链技术翻译while(ad)thenx=y+z,步骤1:移进while,并按如下产生式归约WwhileW.codebegin=nextstat;四元式表内容如下:,nextstat100,W.codebegin,句型变为W(ad)thenx=y+z,步骤2:对于句型W(ad)thenx=y+z移进(ab)并按如下产生式归约Ei1relopi2E.true=nextstat;E.false=nextstat+1;E.codebegin=nextstat;gen(ifad)thenx=y+z移进do并按如下产生式归约WdWEdobackpatch(E.true,nextstat);Wd.chain=E.false;Wd.codebegin=W.codebegin;四元式表内容如下:,100ifad)thenx=y+z,步骤4:对于句型Wdif(cd)thenx=y+z移进if(cd),并按如下产生式归约Ei1relopi2E.true=nextstat;E.false=nextstat+1;E.codebegin=nextstat;gen(ifabgoto_);gen(goto_);E(E1)E.true=E1.true;E.false=E1.false;E.codebegin=E1.codebegin;四元式表内容:,100ifadgoto_,103goto_,104,E.true,E.false,句型变为WdifEthenx=y+z,步骤5:对于句型WdifEthenx=y+z按如下产生式归约CifEthenbackpatch(E.true,nextstat);C.chain=E.false;四元式表内容:,100ifadgoto104,103goto_,104,C.chain,句型变为WdCx=y+z,步骤6:对于句型WdCx=y+z移进x=y+z,按如下产生式归约Bip=lookup();if(pnil)E.place=pelseerrorBB1+B2B.place=newtemp;gen(B.place=B1.place+B2.place;Ai=Bp=lookup();if(pnil)gen(p=E.place)elseerror四元式表内容:,100ifadgoto104,103goto_,104t=y+z,C.chain,句型变为:WdCA,105x=t,106,步骤7:对于句型WdCA,按如下产生式归约SAS.chain=0SCS1S.chain=merge(C.chain,S1.chain);/可能S1ifathenx=1elsex=2;四元式表内容:,100ifadgoto104,103goto_,104t=y+z,S.chain,句型变为:WdS,105x=t,106,步骤8:对于句型WdS,按如下产生式归约SWdS1backpatch(S1.chain,Wd.codebegin);gen(gotoWd.codebegin);S.chain=Wd.chain四元式表内容:,100ifadgoto104,103goto100,104t=y+z,句型变为:S,105x=t,106goto100,107,步骤9:对于句型S,按如下产生式归约(假设忽略说明语句)PSbackpatch(S.chain,nextstat);gen(return/返回主函数四元式表内容:,100ifadgoto104,103goto100,104t=y+z,105x=t,106goto100,107return,108,递归下降语法制导翻译方案中实现控制结构的翻译:翻译思路:布尔表达式求值,并设置标号避免回填,if(E)getlabelgen(JZ,E.place,_,label1)S1getlabelgen(JP,_,_,label2)setlabel(label1:)elseS1setlabel(label2:)whilegetlabelsetlabel(label1:)(E)getlabelgen(JZ,E.place,_,label2)doSgen(JP,_,_,label1)setlabel(label2:),label1,label2,label1,label2,for(E1;getlabelsetlabel(label1:)E2getlabelgetlabelgen(JZ,E2.place,_,label2)gen(JP,_,_,label3);getlabelsetlabel(label4:)E3gen(JP,_,_,label1)setlabel(label3:)Sgen(JP,_,_,label4)setlabel(labe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年欧美同学会会计准则强化题集
- 2025年人事代理招聘笔试模拟题及答案解析
- 2025年安全员考证模拟试卷及答案详解
- 2025年村级养老站社工笔试冲刺题
- 2025年幼师面试模拟题及答案解析
- 2025年物流无人机面试模拟题与答案解析
- 2025年安全员资格证考试模拟题及答案集
- 2025年红白理事会面试常见问题解析
- 2025年心理健康师中级考试复习
- 机电仪安全知识培训课件
- 北京外国语大学611英语基础测试(技能)历年考研真题及详解
- 弱电工程施工进度表(甘特图)
- GB 1886.232-2016食品安全国家标准食品添加剂羧甲基纤维素钠
- 2023年赣州市建兴控股投资集团有限公司招聘笔试题库及答案解析
- 地理信息系统技术概述课件
- 脑梗死病人-护理查房课件
- 人类行为与社会环境全套课件
- 医院介入手术病人护送交接流程
- 学校家庭教育指导(班主任培训班) 课件
- 骨关节结核教案
- 楼板厚度检测报告
评论
0/150
提交评论