还剩1页未读,继续阅读
文本内容:
习题第8章语法制导翻译和中间代码生成-课本练习部分第202-203页
8.1123471ab@c+*3abed㊀/+*+4abAc-idVV7xy+z*0=sab+c*:=sab*c*:=¥
8.2(注¥表不if-then-else运算)注一定要按照运算的顺序三元式1+ab0-«/+cd*12+ab+5c-,46间接三元式序列间接码表D+ab1⑵⑴/2⑶十cd34*1245+lc16-
3158.3参考书本
8.5注以后在描述语义规则时统一用C语言的书写格式;一般来说要求大家构造的属性文法只包含综合属性,因此大家可以采用自底向上的分析方法检查属性文法是否符合要求引入属性vaL用来记录二进制的数值;引入属性工㊀ngth用来记录二进制的长度
8.612二补充部分B
8.1设有文法G[S]:Sf(T)SfiT-JS(首先要将产生式中左部和右部相同的非终结符区分开)T-S
(1)请写出关于配对括号数目p的属性文法;
(2)请写出关于括号嵌套层数㊀的属性文法B
8.2将下列程序段翻译成四元式序列Ifc5thenwhilexydoz:=x+lelsex:=y翻译结果如下100if5goto102101goto108102ifxygoto104103goto107104tl:=x+l105z:=tl106goto102107goto110108t2:=y109x:=t2文法规则语义规则S^Ll.L2S.val=LI.val+L
2.val/2L2-lengthS—LS.val=L.valLfLIBL.val=LI.val*2+B.valL.length=LI.length+1LfBL.val=B.valL.length=1B-0B.val=0Bf1B.val=1文法规则语义规则E—El+TIFEl.type==integerT.type==integerE.type=int㊀g㊀r;ELSEE.type=realEfTE.type=T.typeTfn・nT.type=real产生式语义规则E-E1+TIFEl.type==integerT.type==integer{E.type=integer;Print+,;ELSE{E.type=real;IFEl.type==integerEltype:=real;El.val:=inttorealEl.val;}IFT・type==integerT・type:=real;T.val:=inttorealT.val;}Print+,;E—TE.type=T.type;E.val=T.val;PrintE.valTfnnT.type=realT.val=n.n.lexvalTfnT.type=integerT.val=n.lexval文法规则语义规则SfTS.p=T.p+1S-iS.p=0Tf『,$T.p=T.p+S.pT-ST.p=S.p文法规则语义规则S一TS•㊀=T.g+1SfiS.e=0T—T,$IfTA.eS.eT.e=TAe;ElseT.e=S.eTfST.e=S.㊀。