回填拉链翻译举例

回填拉链翻译举例

ID:40144658

大小:270.81 KB

页数:13页

时间:2019-07-23

回填拉链翻译举例_第1页
回填拉链翻译举例_第2页
回填拉链翻译举例_第3页
回填拉链翻译举例_第4页
回填拉链翻译举例_第5页
资源描述:

《回填拉链翻译举例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、设程序结构定义如下:PSSifEthenSSifEthenSelseSSwhileEdoSSbeginLendSALL;SLS布尔表达式E及赋值语句A定义见书上为能及时地回填有关四元式串的转移地址,改写文法如下:PSCifEthenSCS1TpCSelseSTPS2WwhileWdWEdoSWdS3SbeginLendSALSL;LLSS1自底向上语法制导翻译方案实现过程分析(关于控制结构的翻译)翻译中使用回填-拉链技术翻译while(ad)thenx=y+z步骤1:移进while,并按如下产生式

2、归约Wwhile{W.codebegin=nextstat;}四元式表内容如下:nextstat100W.codebegin句型变为W(ad)thenx=y+z步骤2:对于句型W(ad)thenx=y+z移进(a

3、=E1.false;E.codebegin=E1.codebegin;}四元式表内容如下:E.true100ifad)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

4、debeginWd.chain101goto_nextstat102句型变为Wdif(c>d)thenx=y+z步骤4:对于句型Wdif(c>d)thenx=y+z移进if(c>d),并按如下产生式归约Ei1relopi2{E.true=nextstat;E.false=nextstat+1;E.codebegin=nextstat;gen(ifa

5、元式表内容:100ifadgoto_103goto_104E.trueE.false句型变为WdifEthenx=y+z步骤5:对于句型WdifEthenx=y+z按如下产生式归约CifEthen{backpatch(E.true,nextstat);C.chain=E.false;}四元式表内容:100ifad

6、goto104103goto_104C.chain句型变为WdCx=y+z步骤6:对于句型WdCx=y+z移进x=y+z,按如下产生式归约Bi{p=lookup(i.name);if(pnil)E.place=pelseerror}BB1+B2{B.place=newtemp;gen(B.place=B1.place+B2.place;}Ai=B{p=lookup(i.name);if(pnil)gen(p=E.place)elseerror}四元式表内容:100ifa

7、d.chain101goto_nextstat102ifc>dgoto104103goto_104t=y+zC.chain句型变为:WdCA105x=t106步骤7:对于句型WdCA,按如下产生式归约SA{S.chain=0}SCS1{S.chain=merge(C.chain,S1.chain);}//可能S1ifathenx=1elsex=2;四元式表内容:100ifadgoto104103goto_104t=

8、y+zS.chain句型变为:WdS105x=t106步骤8:对于句型WdS,按如下产生式归约SWdS1{backpatch(S1.chain,Wd.codebegin);gen(gotoWd.codebegin);S.chain=Wd.chain}四元式表内容:100ifa

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。