在编程文档中,双冒号后跟等号 (::=) 是啥意思?
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__
非终结符<symbol>
由__expression__
组成(定义为、构造自、派生自)__expression__
用于描述语言语法。
请注意,这两个示例都在 Extended Backus–Naur Form 中,但使用了传统的 BNF 符号表达式分隔符 (::=
)。
【讨论】:
您的答案中使用的<
和 >
仅用于标记终端和非终端之间的区别。在 EBNF 中省略它们是正常的,因为引用了终端。在 BNF 中,终端不必被引用,因此必须有某种方法将它们与非终端区分开来。
我们有时还会看到一个冒号后跟一个等号(例如ietf.org/rfc/rfc1806.txt)。意思是一样的吗?
@ShaunLuttin 是的,但它可能会与赋值运算符混淆。【参考方案2】:
这是描述语言的Backus-Naur Form (BNF) 符号。 ::=
在这种情况下意味着被定义为。
例如,在您引用的 Python 语言文档中,标识符定义为一个字母或下划线,后跟一个字母、数字或下划线。然后符号继续描述字母和数字的定义,依此类推。
【讨论】:
有没有解释为什么::=
的意思是“被定义为”?像 +=
和 <>
这样的符号有意义吗?【参考方案3】:
正如其他人已经说过的,它是 BNF 表示法的一部分。***有一个explanation and some examples,这里不再赘述。
::=
符号本身的历史和演变在The History of the ALGOL Effort(从第 29 页开始)中进行了说明。
【讨论】:
【参考方案4】:给定的元素语法。例如:
identifier ::= (letter|"_") (letter | digit | "_")*
表示所有标识符必须符合给定的语法规则。
【讨论】:
以上是关于在编程文档中,双冒号后跟等号 (::=) 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章