📜  资质 |门 CS 1998 |第 80 题

📅  最后修改于: 2021-09-25 05:10:22             🧑  作者: Mango

让属性 ‘val’ 在以下语法中给出由 S 生成的二进制数的值:

S → LL |升
L→ LB |乙
乙 → 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 = 位数
这个问题的测验