二义性
1 什么是二义性
1.1 举例
普通生活中的二义性,二义性的一个例子
地理教过,中国产煤最多的地方是辽宁省抚顺,产铁最多是辽宁省鞍山,所以抚顺被称为中国的“煤都”,鞍山称为“铁都”。 某次月考试题:中国的煤都是( ),中国的铁都是( )。 结果某张试卷上:中国的煤都是(黑的),中国的铁都是(硬的)。 考完还说:这次老师怎么出那么简单的题目?
讯享网
数理逻辑中的二义性,如何理解二义性? - 知乎 (zhihu.com))
讯享网选令狐冲或任我行为武林盟主
这里的或不清除是排它或还是相容或?
排它或
如意思是武林盟主只能是令狐冲、任我行两者之一时,或为排斥或,此时选令狐冲为盟主句子为真、选任我行为盟主句子为真,但选两者一起为盟主为假
相容或
如果允许令狐冲、任我行同时为盟主,则为相容或,此时选令狐冲为盟主、选任我行为盟主,选两者一起为盟主都为真。
1.2 定义
上述二者都是二义性表达,在离散数学上来看都不具有唯一表示。在《编译原理(第二版)》中对二义性有这样的定义
一个文法可能有多棵语法分析树能够生成同一个给定的终结符号串,这样的文法称为具有二义性(ambiguous)。
注:ambiguous,在英文中是模糊的意思。
那么反言之,如果表达式不具有二义性则应为
讯享网一个文法如果有且只有一棵语法分析树可以生成给定的终结符号串,那么该文法不具有二义性。
有关语法分析树的内容参见语法分析树(先看例子再看定义)-CSDN博客
2 二义性语法分析树举例
如果将9-5+2的文法产生式改写为
string -> string + string | string - string |0|1|2|3|4|5|6|7|8|9
那么其对应的语法分析树可以为

或者

根据上述两棵语法分析树产生的结果分别式6和2,很明显,一条计算表达式是不可能产生2个不同的结果的。这证明该文法产生式是有问题的,因为它可以使用2棵语法分析树产生同一条终结符号串。
我们再来看看下面的文法产生式
讯享网list -> list + digit | list - digit | digit digit -> 0|1|2|3|4|5|6|7|8|9
如果对9-5+2会不会使用像上面一样的2棵语法分析树生成终结符号串?
很明显不能,因为list不能直接为0|1|2|3|4|5|6|7|8|9,这就导致了list -> list -digit必须是list - 数字而不能是string - string。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/51454.html