二义性(说话装X有罪)

发布时间:2023年12月25日

二义性

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

那么其对应的语法分析树可以为

在这里插入图片描述

或者

在这里插入图片描述

根据上述两棵语法分析树产生的结果分别式62,很明显,一条计算表达式是不可能产生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

3 总结

说话要说明白,意思表达要唯一,不要没事装X!
各位记住了,有人在你面前说话不清楚,讲东扯西,非奸即盗!

文章来源:https://blog.csdn.net/JimFire/article/details/135200653
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。