题目
一、给定文法G[E],完成下列单选题和判断题。 Earrow E+E|E-T|T Tarrow T*T|T/F|F Farrow a(E)|d 注:(、)不是元符号,是文法符号。 句型(E+T)/a*F的语法树的子树棵数为()(本题3A. 7B. 8C. 9D. 10
一、给定文法G[E],完成下列单选题和判断题。 $E\rightarrow E+E|E-T|T$ $T\rightarrow T*T|T/F|F$ $F\rightarrow a(E)|d$ 注:(、)不是元符号,是文法符号。 <|im_end|> 句型(E+T)/a*F的语法树的子树棵数为()(本题3
A. 7
B. 8
C. 9
D. 10
题目解答
答案
C. 9
解析
本题考查的知识点是根据给定的文法和句型构建语法树,并计算语法树的子树棵数。解题思路是先依据文法规则构建句型 (E+T)/a*F 的语法树,然后统计语法树的子树棵数。
下面我们来构建语法树:
- 从最外层开始,
(E+T)/a*F可以看作是由E推导而来,E又可以进一步推导为E+E,这里我们把E替换为(E+T),得到(E+T)+E。 - 接着看
(E+T)/a*F中的/部分,T可以推导为T/F,我们把T替换为(E+T),F替换为a,得到(E+T)/a。 - 再看
*部分,T可以推导为T*T,我们把T替换为(E+T),得到(E+T)/a*T。 - 最后把
T替换为F,得到(E+T)/a*F。
构建好语法树后,我们来统计子树棵数:
- 最外层的
(E+T)/a*F是一棵子树。 (E+T)是一棵子树。E+T是一棵子树。E是一棵子树。T是一棵子树。/部分的(E+T)/a是一棵子树。a是一棵子树。*部分的(E+T)/a*F是一棵子树。F是一棵子树。