📜  门|门 CS 1999 |第 57 题

📅  最后修改于: 2021-09-24 06:09:16             🧑  作者: Mango

【5分题】

让合成属性val给出以下语法中 S 生成的二进制数的值。例如,在输出 101.101 上,S.val=5.625

S → LL |升

L → LB |乙

乙 → 0 | 1

写出对应于每个产生式的 S 属性值以找到 S.val。回答:
说明:对于上面的语法,下面给出了每个产生式对应的 S 属性值来找到 S.val。

这里,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 }  

这个问题的测验