📜  门| GATE CS 1999 |第57章

📅  最后修改于: 2021-06-29 04:05:33             🧑  作者: Mango

[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 }  

这个问题的测验