问题
单项选择题
一个文法G是岐义性(又称二义性)文法的含义是()。
A.文法G中有多余的产生式
B.在L(G)中至少存在一个句子,它的语义有多于一种解释
C.在L(G)中至少存在一个句型,它有两个不同的最左推导
D.在L(G)中至少存在一个句子,它有两个不同的最左推导或最右推导
答案
参考答案:D
解析:
可以如下给出文法二义性的定义,如果一文法的句子存在两棵分析树,那么该句子是二义性的。如果一文法能产生二义性的句子,则说这个文法是二义性的;否则,该文法是无二义性的。换句话说,如果一个文法的句子能构造出两棵分析树,那么这个文法是二义性的。一个文法的句子能构造出两棵分析树的依据是这个句子有两个不同的最左推导或最右推导。
我们常常使用无二义性文法,使得构造出的编译程序的分析过程是唯一的。但是,一个语言的二义性文法常比无二义性文法简单明了。因此,在描述语言语法和构造编译程序时,也使用二义性文法。显然,在使用二义性文法时,要清楚知道使用的二义性文法因何会出现二义性,以及在什么条件的约束下可消除这种二义性。