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

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

【问题讨论】:

    标签: language-agnostic symbols


    【解决方案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 | "_")*
      

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

      【讨论】:

        猜你喜欢
        • 2019-09-14
        • 2012-10-09
        • 2012-09-25
        • 1970-01-01
        • 2013-05-18
        • 1970-01-01
        • 1970-01-01
        • 2011-01-17
        相关资源
        最近更新 更多