资源描述:
《翻译while生成四元式--2例.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、例1:语法制导翻译下列语句为四元式形式:whilexbthenx:=x+1elsex:=y解:语法制导翻译生成四元式过程如下:语法制导翻译生成四元式栈内容输入串语义规则(生成四元式)#whileM1xbthenx:=x+1elsey:=x#M1.quad=100P195产生式(3)#whileM1xbthenx:=x+1elsey:=x##whileM1E1doifa>bthenx:=x+1elsey:=x#100(j<,x,y,0)(E1.t_l=100;E1.f_l=101;)101(j,_,_,0)#wh
2、ileM1E1doM2ifa>bthenx:=x+1elsey:=x#M2.quad=102P195产生式(3)#whileM1E1doM2ifa>bthenx:=x+1elsey:=x##whileM1E1doM2ifE2thenx:=x+1elsey:=x#102(j>,a,b,0)(E2.t_l=102;E2.f_l=103;)103(j,_,_,0)#whileM1E1doM2ifE2thenM3x:=x+1elsey:=x#M3.quad=104P195产生式(3)#whileM1E1doM2ifE2thenM3x:=x+1elsey:=x#104
3、(+,x,1,T)105(:=,T,_,x)#whileM1E1doM2ifE2thenM3S1elsey:=x#S1.nextlist=’∧’#whileM1E1doM2ifE2thenM3S1Nelsey:=x#N.nextlist=106106(j,_,_,0)#whileM1E1doM2ifE2thenM3S1Nelsey:=x#P195产生式(2)#whileM1E1doM2ifE2thenM3S1NelseM4y:=x#M4.quad=107P195产生式(3)#whileM1E1doM2ifE2thenM3S1NelseM4y:=x##whil
4、eM1E1doM2ifE2thenM3S1NelseM4S2#107(:=,x,_,y)S2.nextlist=’∧’#whileM1E1doM2S3#P195产生式(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,M1.quad)使106(j,_
5、,_,100)backpatch(E1.t_l,M2.quad)使100(j<,x,y,102)S.nextlist:=E1.f_l=101使101(j,_,_,109)108(j,_,_,M1.quad)使108(j,_,_,100)E1.coed100(j<,x,y,102)101(j,_,_,109)whilexbthenx:=x+1elsey:=xE2.codewhileE1doifE2thenS1elseS2102(j>,a,b,104)whileE1doS103(j,_,_,107)S1.code104(+,x,1,T)S.cod
6、e105(:=,T,_,x)106(j,_,_,100)S2.code107(:=,x,_,y)108(j,_,_,100)109例2:语法制导翻译下列语句为四元式形式:whileaydoz:=x+1elsex:=y解:语法制导翻译生成四元式过程如下:语法制导翻译生成四元式栈内容输入串语义规则(生成四元式)#whileM1aydoz:=x+1…#M1.quad=100P195产生式(3)#whileM1aydoz:=x+1else…##wh
7、ileM1E1doifc<5thenwhilex>ydoz:=x+1else…#100(j<,a,b,0)(E1.t_l=100;E1.f_l=101;)101(j,_,_,0)#whileM1E1doM2ifc<5thenwhilex>ydoz:=x+1else…#M2.quad=102P195产生式(3)#whileM1E1doM2ifc<5thenwhilex>ydoz:=x+1else…##whileM1E1doM2ifE2thenwhilex>ydoz:=x+1elsex:=y#102(j<,c,5,0)(E2.t_l=102;E2.f_l=103
8、;)103(j,_,_,0)#whileM1E1do