文档中的`::=` 和`|`

`::=` and `|` in Documentation

Python文档中到处都是::=

例如:

atom      ::=  identifier | literal | enclosure

我搜索并学习了它的 BNF 语法。

从几十个文件中提炼出一个大概的想法,确实不容易

在python中:可以被认为是'assignment'符号的变体=,

在Django的模板语法中,|是函数符号。

BFN 中的 ::=| 是什么?

在适用于许多语言文法的巴科斯-诺尔范式中,::=表示对某个句法元素的定义,几乎就像一个宏。每 the Wikipedia page:

The "::=" means that the symbol on the left must be replaced with the expression on the right.

因此,假设定义了以下形式:

symbol ::= expression

表示出现symbol的地方,替换为expression

| 表示 "or",因为 atom 被定义为标识符、文字或封装。同样,来自维基百科页面:

more sequences are separated by the vertical bar "|", indicating a choice, the whole being a possible substitution for the symbol on the left.

因此,当用“|”分隔时,左边的符号可以是左边表达式中的许多符号中的任何一个。总之,文档有效地说:"wherever there is an atom, it means that there could be a literal, identifier, or enclosure there".

来自wikipedia

The "::=" means that the symbol on the left must be replaced with the expression on the right.

|符号代表独占OR.

因此,这意味着您必须将 atom 替换为 identifierliteralenclosure