Q83 Part_A
考虑上下文无关的语法
E→E + E
E→(E * E)
E→id
其中E为起始符号,终端集为{id,(,+,),*},非终端集为{E}。
根据上述语法进行解析时,以下哪个终端字符串具有不止一个解析树?
(A) ID + ID + ID + ID
(B) ID +(ID *(ID * ID))
(C) (id *(id * id))+ id
(D) ((id * id + id)* id)答案: (A)
解释:
根据最左边的推导: E-> E + E(使用E-> E + E)
E-> E + E + E(使用E-> E + E)
E-> E + E + E + E(使用E-> E + id)
E-> id + E + E + E(使用E-> id)
E-> id + id + E + E(使用E-> id)
E-> id + id + id + E (使用E-> id)
E-> ID + ID + ID + ID
根据最右边的推导: E-> E + E (使用E-> E + E)
E-> E + E + E (使用E-> E + E)
E-> E + E + E + E (使用E-> E + id)
E-> E + E + E + id(使用E-> id)
E-> E + E + id + id(使用E-> id)
E-> E + id + id + E (使用E-> id)
E-> ID + ID + ID + ID
因此,选项(A)是正确的。
如果您在以上文章中发现任何错误,请在下面发表评论。
这个问题的测验