作业5-黄孝喜班(语法制导翻译)答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

作业5–语法制导翻译1.已知程序的文法G[P]如下:PDDD;D|id:T|procid;D;S(1)请写一个语法制导定义,输出程序中一共声明了多少个id。产生式语义规则PDPrint(D.c)DD1;D2D.c=D1.c+D2.cDid:TD.c=1Dprocid;D1;SD.c=D1.c+1(2)请写一个翻译模式,输出程序中每变量id的嵌套深度。P{D.d=1}DD{D1.d=D.d}D1;{D2.d=D.d}D2Did:T{print(D.d)}Dprocid;{D1.d=D.d+1}D1;S2.有表示二进制无符号数的文法G[S]:S→L.L|LL→LB|BB→0|1请构造一个翻译模式,将二进制表示的数转换为十进制数。S’→S{print(S.val)}S→L1.L2{S.val=L1.val+L2.val/L2.w}S→L{S.val=L.val}L→L1B{L.val=L1.val*2+B.val;L.w=L1.w*2}L→B{L.val=B.val;L.w=2}B→0{B.val=0}B→1{B.val=1}3.已知有文法G[E]:E→E+T|TT→num.num|num该文法对整型常数和实型常数进行加法运算,当两个整型数相加时,结果仍为整型数,否则结果为实型数。(1)试给出确定每个子表达式结果类型的语法制导定义。产生式语义规则E→E1+TIF(E1.type==int)&&(T.type==int)THENE.type=int;ELSEE.type=real;E→TE.type=T.typeT→num.numT.type=realT→numT.type=int(2)扩充上面的语法制导定义,使之把表达式翻译成后缀形式,同时也能确定结果的类型。注意使用一元运算符inttoreal把整型数转换为实型数,int+和real+分别表示整型数加法运算和实型数加法运算。产生式语义规则E→E1+TIF(E1.type==int)&&(T.type==int)THENE.type=int;E.code=E1.code||T.code||“int+”ELSEIF(E1.type==real)&&(T.type==int)THENE.type=real;E.code=E1.code||T.code||inttoreal||“real+”ELSEIF(E1.type==int)&&(T.type==real)THENE.type=real;E.code=E1.code||inttoreal||T.code||“real+”ELSEE.type=real;E.code=E1.code||T.code||“real+”E→TE.type=T.typeE.code=T.codeT→num.numT.type=realT.code=num.numT→numT.type=intT.code=num

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功