让属性“ val”给出以下语法中S生成的二进制数的值:
S→LL |大号
L→LB |乙
B→0 | 1个
例如,输入101.101给出S.val = 5.625
仅使用合成属性构造语法定向翻译方案,以确定S.val。回答:
说明:给定的语法是:-
S -> L.L | L
L-> LB | B
B -> 0 | 1
现在,仅使用合成属性的语法定向翻译方案为:
S -> L.L { S.val = L.Val + L.val / L.nb }
S -> L { S.val = L.val}
L -> LB { L.val = 2 * L.Val + B.val , L.nb = L.nb + B.nb }
L -> B { L.val = B.val , L.nb = B.nb}
B -> 0 { B.val = 0 , B.nb = 1 }
B -> 1 { B.val = 1 , B.nb = 1 }
其中,val =十进制值,nb =位数
这个问题的测验