在编程文档中,双冒号后跟等号 (::=) 是啥意思?

Posted

技术标签:

【中文标题】在编程文档中,双冒号后跟等号 (::=) 是啥意思?【英文标题】:What does a double colon followed by an equals sign (::=) mean in programming documentation?在编程文档中,双冒号后跟等号 (::=) 是什么意思? 【发布时间】:2012-03-01 01:12:24 【问题描述】:

::= 在编程文档中是什么意思? 例如在Lua documentation: 或Python documentation。

【问题讨论】:

【参考方案1】:

代表Backus–Naur Form中的“符号推导规则”

意思是:

<symbol> ::= __expression__ 

非终结符&lt;symbol&gt;__expression__ 组成(定义为、构造自、派生自)__expression__

用于描述语言语法。

请注意,这两个示例都在 Extended Backus–Naur Form 中,但使用了传统的 BNF 符号表达式分隔符 (::=)。

【讨论】:

您的答案中使用的 和 m0skit0 的答案中使用的“标识符”之间有什么区别吗?看起来两者都是名称,即识别或引用数据的方式。 @AudiOishi no,&lt;&gt; 仅用于标记终端和非终端之间的区别。在 EBNF 中省略它们是正常的,因为引用了终端。在 BNF 中,终端不必被引用,因此必须有某种方法将它们与非终端区分开来。 我们有时还会看到一个冒号后跟一个等号(例如ietf.org/rfc/rfc1806.txt)。意思是一样的吗? @ShaunLuttin 是的,但它可能会与赋值运算符混淆。【参考方案2】:

这是描述语言的Backus-Naur Form (BNF) 符号。 ::= 在这种情况下意味着被定义为

例如,在您引用的 Python 语言文档中,标识符定义为一个字母或下划线,后跟一个字母、数字或下划线。然后符号继续描述字母和数字的定义,依此类推。

【讨论】:

有没有解释为什么::= 的意思是“被定义为”?像 +=&lt;&gt; 这样的符号有意义吗?【参考方案3】:

正如其他人已经说过的,它是 BNF 表示法的一部分。***有一个explanation and some examples,这里不再赘述。

::= 符号本身的历史和演变在The History of the ALGOL Effort(从第 29 页开始)中进行了说明。

【讨论】:

【参考方案4】:

给定的元素语法。例如:

identifier ::=  (letter|"_") (letter | digit | "_")*

表示所有标识符必须符合给定的语法规则。

【讨论】:

以上是关于在编程文档中,双冒号后跟等号 (::=) 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:等号冒号 =: 在更新语句中是啥意思?

C语言中的冒号(:)是啥意思?

C语言里两个冒号是啥意思?

c里面冒号的意思,C语言中的冒号(:是啥意思

C语言中变量加冒号是啥意思

在编程的上下文中,“代数”是啥意思?