[5分问题]
让合成属性val给出以下语法中S生成的二进制数的值。例如,在输出101.101上,S.val = 5.625
S→LL |大号
L→LB |乙
B→0 | 1个
编写与每个产品对应的S属性值以找到S.val。回答:
说明:对于上述语法,下面给出了与找到S.val的每个产品相对应的S属性值。
在此,val表示值,nb表示位数。
S → L.L { S.val=L1.val + L2.val / 2^L2.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 }
这个问题的测验