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

时间:2017-11-08 04:21:01

标签: python django bnf

Python文档中到处都有::=

例如:

atom      ::=  identifier | literal | enclosure

我搜索并了解了它的BNF语法。

从几十个文件中获得一个简短的想法并不容易。

在python中:可以被视为'赋值'符号=的变体,

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

BFN中的::=|是什么?

2 个答案:

答案 0 :(得分:0)

在适用于许多语言语法的Backus-Naur形式中,::=表示某种语法元素的定义,几乎就像一个宏。每the Wikipedia page

  

“:: =”表示左侧的符号必须替换为右侧的表达式。

因此,假设形式的定义:

symbol ::= expression

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

|表示“或”,因为atom被定义为标识符,文字或附件。再次,从维基百科页面:

  

更多的序列由竖线“|”分隔,表示选择,整体可能替换左边的符号。

因此,当用“|”分隔时,左边的符号可以是左表达式中的多个符号之一。总之,文档有效地说:“只要有atom,就意味着那里可能有文字,标识符或附件”。

答案 1 :(得分:0)

来自wikipedia

  

" :: ="表示左侧的符号必须替换为右侧的表达式。

|符号代表独占OR

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