版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设程序结构定义如下:PSSifEthenSSifEthenSelseSS
whileEdoSSbeginLendSAL
L;SLS
布尔表达式E及赋值语句A定义见书上
为能及时地回填有关四元式串的转移地址,改写文法如下:PSCifEthenSCS1TpCSelseSTPS2WwhileWdWEdoSWdS3SbeginLendSALSL;LLSS1自底向上语法制导翻译方案实现过程分析(关于控制结构的翻译)翻译中使用回填-拉链技术翻译
while(a<b)doif(c>d)thenx=y+z步骤1:移进while,并按如下产生式归约
Wwhile{W.codebegin=nextstat;}
四元式表内容如下:
nextstat100
W.codebegin句型变为
W(a<b)doif(c>d)thenx=y+z步骤2:对于句型W(a<b)doif(c>d)thenx=y+z
移进(a<b)
并按如下产生式归约
Ei1relop
i2{E.true=nextstat;E.false=nextstat+1;E.codebegin=nextstat;
gen(ifa<bgoto_);gen(goto_);}E(E1){E.true=E1.true;E.false=E1.false;E.codebegin=E1.codebegin;}四元式表内容如下:
E.true100ifa<bgoto_W.codebeginE.false101goto_句型变为WEdoif(c>d)thenx=y+z步骤3:对于句型WEdoif(c>d)thenx=y+z
移进do
并按如下产生式归约
WdWEdo{backpatch(E.true,nextstat);Wd.chain=E.false;Wd.codebegin=W.codebegin;}四元式表内容如下:
100ifa<bgoto102Wd.codebegin
Wd.chain101goto_nextstat102句型变为
Wd
if(c>d)thenx=y+z步骤4:对于句型Wd
if(c>d)thenx=y+z
移进if(c>d),并按如下产生式归约
Ei1
relop
i2{E.true=nextstat;E.false=nextstat+1;E.codebegin=nextstat;gen(ifa<bgoto_);gen(goto_);}E(E1){E.true=E1.true;E.false=E1.false;E.codebegin=E1.codebegin;}四元式表内容:
100ifa<bgoto102Wd.codebegin
Wd.chain101goto_nextstat102ifc>dgoto_103goto_104E.trueE.false句型变为WdifEthenx=y+z步骤5:对于句型WdifEthenx=y+z
按如下产生式归约
CifEthen
{backpatch(E.true,nextstat); C.chain=E.false;}四元式表内容:
100ifa<bgoto102Wd.codebegin
Wd.chain101goto_nextstat102ifc>dgoto104103goto_104C.chain句型变为
WdCx=y+z步骤6:对于句型WdCx=y+z
移进x=y+z,按如下产生式归约Bi{p=lookup();if(pnil)E.place=pelseerror}BB1+B2{B.place=newtemp;gen(B.place=B1.place+B2.place;}Ai=B
{p=lookup();if(pnil)gen(p=E.place)elseerror}
四元式表内容:
100ifa<bgoto102Wd.codebegin
Wd.chain101goto_nextstat102ifc>dgoto104103goto_104t=y+zC.chain句型变为:WdC
A105x=t106步骤7:对于句型WdC
A,按如下产生式归约SA{S.chain=0}SCS1{S.chain=merge(C.chain,S1.chain);}//可能S1ifathenx=1elsex=2;四元式表内容:
100ifa<bgoto102Wd.codebegin
Wd.chain101goto_nextstat102ifc>dgoto104103goto_104t=y+zS.chain句型变为:WdS105x=t106步骤8:对于句型WdS,按如下产生式归约SWdS1{backpatch(S1.chain,Wd
.codebegin);
gen(gotoWd
.codebegin);S.chain=Wd
.chain}四元式表内容:
100ifa<bgoto102Wd.codebegin
S
.chain
101goto_nextstat102ifc>dgoto104103goto100104t=y+z句型变为:S105x=t106goto100107步骤9:对于句型S,按如下产生式归约(假设忽略说明语句)PS{backpatch(S.chain,nextstat);
gen(return//返回主函数}四元式表内容:
100ifa<bgoto102101goto107nextstat102ifc>dgoto104103goto100104t=y+z105x=t106goto100107return108递归下降语法制导翻译方案中实现控制结构的翻译:
翻译思路:布尔表达式求值,并设置标号避免回填<if>
if(E)@getlabel@gen(JZ,E.place,_,label1)S1@getlabel
@gen(JP,_,_,label2)@setlabel(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年湖南机电职业技术学院单招职业技能测试题库及参考答案详解一套
- 2026年河北青年管理干部学院单招职业倾向性考试题库含答案详解
- 2026年湖南外国语职业学院单招综合素质考试题库及参考答案详解
- 四川省成都市蓉城名校联盟2024-2025学年高二上学期期中考试政治考试政治参考答案及评分标准
- 云南税务面试题目及答案
- 安全攻防面试题及答案
- 2025~2026学年济南天桥区泺口实验学校九年级上学期12月份物理考试试卷以及答案
- 2019年7月国开电大行管专科《监督学》期末纸质考试试题及答案
- 质量检验员培训
- 2025年台州市中医院卫技高层次人才公开招聘备考题库及参考答案详解
- 大连市社区工作者管理办法
- 2025年河北地质大学公开招聘工作人员48名笔试模拟试题及答案解析
- 餐饮充值合同协议
- 火灾探测器的安装课件
- 酒店转让合同协议书范本大全
- DB21∕T 3722.3-2023 高标准农田建设指南 第3部分:项目预算定额
- 压力管道质量保证体系培训
- 2025年度数据中心基础设施建设及运维服务合同范本3篇
- 深圳大学《光学原理》2021-2022学年第一学期期末试卷
- 智能屋面状况监测与诊断
- 筋膜刀的临床应用
评论
0/150
提交评论