产生式 语义规则
E -> E1 + T E.type = E1.type == float || T.type == float ? float : int
E -> T E.type = T.type
T -> num.num T.type = float
T -> num T.type = int
消除左递归
B->1 B' B'.inh=1 B.val=B'.val
B'->0 B1' B1'.inh=2*B'.inh+0 B'.val=B1'.val
B'->1 B1' B1'.inh=2*B'.inh+1 B'.val=B1'.val
B'->Σ B'.val=B'.inh
SDT
B->1 {B'.inh=1;} B' {B.val=B'.val}
B'->{B1'.inh=2*B'.inh} 0 {B1'.inh=B1'.inh+0} B1' {B'.val=B1'.val}
B'->{B1'.inh=2*B'.inh} 1 {B1'.inh=B1'.inh+1} B1' {B'.val=B1'.val}
B'->Σ {B'.val=B'.inh}