作业5 –语法制导翻译1. 已知程序的文法G[P]如下:
P→D
D→D; D| id: T | proc id; D;S
(2)请写一个翻译模式,输出程序中每变量id的嵌套深度。P→{D.d=1} D
D →{ D1.d=D.d} D1; { D2.d=D.d}D2
D → id: T {print(D.d)}
D→ proc id; { D1.d=D.d+1} D1; S
2.有表示二进制无符号数的文法G[S]:
S → L . L | L
L →L B | B
B →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 →L1 B {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}