翻译while生成四元式_第1页
翻译while生成四元式_第2页
翻译while生成四元式_第3页
翻译while生成四元式_第4页
翻译while生成四元式_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

例1:语法制导翻译下列语句为四元式形式:whilex<ydoifa>bthenx:=x+1elsex:=y法制导翻译生成四元式过程如下:语法制导翻译生成四元栈内容语义规则(生成四元式)栈内容语义规则(生成四元式)输入串#whileM1 x<ydoifa>bthenx:=x+1elsey:=x#M1・quad=100P195产生式(3)#whileM1x<y doifa>bthenx:=x+1elsey:=x##whileM1E1 doifa>bthenx:=x+1elsey:=x#100(j<,x,y,0)E1・f_l=101; 101(j,_#whileM1E1doM2112M2・quad=102P195产生式#whileM1E1doM2ifa>b112#whileMEdoMifE1122102(j>,a,b,0)103(j,_,_,0)

( E1.t_l=1000)ifa>bthenx:=x+1elsey:=x#3)thenx:=x+1elsey:=x#thenx:=x+1elsey:=x#(E2.t_l=102;E2・f_l=103;elsey:=x#elsey:=x#y:=x#y:=x##elsey:=x#elsey:=x#y:=x#y:=x####x:=x+1elsey:=x#咖昨呻進E2thenM3M3・quad=104 P195产生式(3)x:=x+1elsey:=x##whileM1E1doM2ifE2thenM3x:=x+1 elsey:=x#104(+,x,1,T)105(:=,T,_,x)#whileMEdoMifEthenMSTOC\o"1-5"\h\z11 2 2 31S1.nextlist='A'#whileM1E1doM2ifE2thenM3S1N11 2 2 31N・nextlist=106106(j,_,_,0)#whileM1E1doM2ifE2thenM3S1Nelse11 2 2 31P195产生式(2)#whileM1E1doM2ifE2thenM3S1NelseM411 2 2 31 4M4・quad=107 P195产生式(3)#whileM1E1doM2ifE2thenM3S1NelseM4y:=x#whileM1E1doM2ifE2thenM3S1NelseM4S211 2 2 31 42107(:=,x,_,y)S2.nextlist='A'#whileM1E1doM2S311 23P195产生式(1)backpatch(E2・t_l,M3.quad)使102(j>,a,b,104)backpatch(E2.f_l,M4・quad)使103(j,_,_,107)S3.nextlist=(S1.nextlist,N.nextlist,S2.nextlist)使S3.nextlist=106#S

P195产生式(5)backpatch(S3.nextlist,Ml.quad)使106(j,_,_,1。。)backpatch(E1・t_l,M2・quad)使1。。(jv,x,y,W2)S・nextlist:=E1.f_l=101使S・nextlist:=E1.f_l=101使_,_,M1・quad)使D8(j,_,_,W))v,x,y,102),_,_,W9)・)2(v,x,y,102),_,_,W9)・)2(j>,a,b,104)(j,_,_,W7)」(+,x,1,T))3)4)5(:=,T, x))6(j,_,_,ioo)・E2・cod、S1.codeS.codewhilexvydoifa>bthenx:=x+1elsey:=xwhileif]else)7(:=,x,_,y)}S2・code)71)8(j,_,_,W)) ’1L例2:语法制导翻译下列语句为四元式形式:whileavbdoifcv5thenwhilex>ydoz:=x+1elsex:=y解:语法制导翻译生成四元式过程如下:语法制导翻译生成四元式栈内容输入串

栈内容ifc<5else…#M2.quad=102thenwhilex>ydoz:=x+1P195ifc<5else…#M2.quad=102thenwhilex>ydoz:=x+1P195产生式(3)#whileM1E1doM2ifc<5else…#thenwhilex>ydoz:=x+1#whileM1z:=x+1…#a<bdoifc<5thenwhilex>ydoM1・quad=100P195产生式(3)#whileMa<b1doifc<5thenwhilex>ydoz:=x+1else…##whileME11doifc<5thenwhilex>ydoz:=x+1else…#100(j<,a,b,0)( E1.t_l=100 ;E1・f_l=101;101(j,_,_,0)#whileM1E1doM2ifE2 thenwhilex>ydoz:=x+1elsex:=y#102(j<,c,5,0)(E2.t_l=102;E2.f_l=103;)103(j,_,_,0)#whileM1E1doM2ifE2thenM3 whilex>ydoz:=x+1elsex:=y#M3・quad=104 P195产生式(3)#whileM1E1doM2ifE2thenM3whileM4 doz:=x+1elsex:=y#M4・quad=104 P195产生式(3)#whileM1E1doM2ifE2thenM3whileM4x>ydoz:=x+1else

#whileMEdoMifEthenMwhileMEdoz:=x+1else1122343x:=y# (E3・t_l=104;E3・f_l=105;)#whileMEdoMifEthenMwhileMEdoMz:=x+1elseTOC\o"1-5"\h\z11 2 2 3 43 5x:=y# M5・quad=106 P195产生式(3)#whileMEdoMifEthenMwhileMEdoMz:=x+1else11 2 2 3 43 5x:=y# 106(+,x,1,T)107(:=,T,_,z)#whileM1E1doM2ifE2thenM3whileM4E3doM5S1 else11 2 2 3 43 51x:=y# S1.nextlist='A'#whileM1E1doM2ifE2thenM3S2 else11 2 2 32x:=y# 108(j,_,_,104)因M4.quad=104S1.nextlist为空,不需回填。backpatch(E3・t_l,M5・quad)使104(j>,x,y,106)S2.nextlist:=E3.f_l=105#whileM1E1doM2if E2thenM3S2N11 2 2 32elsex:=y# N.nextlist=109109(j,_,_,0)#whileM1E1doM2if E2thenM3S2NelseM511 2 2 32 5x:=y# |M5.quad=110P195产生式(3)#whileM1E1doM2if E2thenM3S2NelseM5x:=y# 110(:=,x,_,y)S3.nextlist='A'#whileM1#whileM1E1doM2if#E2thenM3S2NelseM5S3#whileM1E1doM2S4backpatch(E2・t_l,M3・quad)使102(j<,c,5,104)backpatch(E2.f_l,M5・quad)使103(j,_,_,110)S4.nextlist=(S2.nextlist,N.nextlist,S3.nextlist),使109(j,_,_,105)S4.nextlist=109#S #P195产生式(5)backpatch(S4.nextlist,M1・quad)使 109(j,_,_,100)105(j,亠,100)backpatch(E1・t_l,M2・quad)使 100(j<,a,b,102)S.nextlist:=E1・f_l=101可使 101(j,_,_,112)111(j,_,_,M1・quad)即使111(j,_,_,100)对上述过程形成的结果,按从后往前顺序依次写出各四元式,得翻译结果如下:100(j<,a,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论