已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026建信住房租赁私募基金管理有限公司校园招聘4人备考题库含答案详解(黄金题型)
- 2026福建省面向上海大学选调生选拔工作备考题库参考答案详解
- 2026秋季杭州银行校园招聘备考题库附答案详解(基础题)
- 2025重庆医科大学招聘若干人(第11批)备考考点题库及答案解析
- 2025广东湛江市徐闻县选聘廉洁征兵监督员5人笔试考试备考试题及答案解析
- 2025云南临沧市消防救援局招聘政府专职消防员46人备考题库及答案详解(各地真题)
- 2026河南农商银行系统校园招聘1736人备考题库及答案详解(考点梳理)
- 2026中国工商银行江苏省分行校园招聘备考题库有答案详解
- 2026中国工商银行票据营业部校园招聘12人备考题库含答案详解(典型题)
- 2026广东省科学技术厅招录选调生3人备考题库及参考答案详解
- 2025年Unity3D交互设计冲刺模拟专项卷
- 家畜环境卫生学第四章
- 2025江苏镇江市京口产业投资发展集团有限公司招聘2人备考题库(含答案详解)
- 宁夏物理会考试题及答案
- 2026考研政治模拟预测卷及答案
- 双管35毫米高射炮课件
- 女儿国遇难课件
- (2025年)医院药房的考试试题及答案
- 2025年教师职称考试(学前教育)(幼儿园)综合能力测试题及答案
- 模具配件专业知识培训课件
- 山东省青岛市市南区2023-2024学年八上期末数学试题(解析版)
评论
0/150
提交评论