---> 考虑下面的语法:
S->SaS|bB
B->AcB| ε
A->dAd| ε
对于上面给出的语法,编写打印正在解析的字符串的语法指导定义,并为字符串“bddcab”构造一个带注释的解析树。
解决方案:
现在重写上面的语法我们有:
S->S1aS2
S->bB
B->AcB1
B-> ε
A->dA1d
A-> ε
( The numbers 1 and 2 following the non-terminal actually denote subscripts. And the subscripts in above grammar denote instances of the non-terminal.)
上述语法以及语义规则。
Productions Semantic Rules
S->S1aS2 S.val=S1.val+a.lexval + S2.val { print S.val }
S->bB S.val=b.lexval + B.val { Print S.val}
B->AcB1 B.val=A.val+c.lexval + B1.val
B-> ε
A->dA1d A.val=d.lexval + A1.val + d.lexval
A-> ε
** The '+' operator is merely for concatenation.
这个解决方案好吗?我有一种感觉,它可能不准确。
这是带注释的解析树。