欢迎来到天天文库
浏览记录
ID:56769244
大小:33.50 KB
页数:2页
时间:2020-07-08
《作业5_黄孝喜班(语法制导翻译)答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、作业5–语法制导翻译1.已知程序的文法G[P]如下:P®DD®D;D
2、id:T
3、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
4、LL→LB
5、BB→0
6、
7、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
8、TT→num.num
9、num该文法对整型常数和实型常数进行加法运算,当两个整型数相加时,结果仍为整型数,否则结果为实型数。(1)试给出确定每个子表达式结果类型的语法制导定义。产生式语义规则E→E1+TIF(
10、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
11、
12、T.code
13、
14、“int+”
15、ELSEIF(E1.type==real)&&(T.type==int)THENE.type=real;E.code=E1.code
16、
17、T.code
18、
19、inttoreal
20、
21、“real+”ELSEIF(E1.type==int)&&(T.type==real)THENE.type=real;E.code=E1.code
22、
23、inttoreal
24、
25、T.code
26、
27、“real+”ELSEE.type=real;E.code=E1.code
28、
29、T.code
30、
31、“real+”E→TE.type=T.typeE.code=T.codeT→num.numT.type=realT.code=num.numT
32、→numT.type=intT.code=num
此文档下载收益归作者所有