Python文档中到处都有::=
:
例如:
atom ::= identifier | literal | enclosure
我搜索并了解了它的BNF语法。
从几十个文件中获得一个简短的想法并不容易。
在python中:
可以被视为'赋值'符号=
的变体,
在Django的模板语法中,|
是函数符号。
BFN中的::=
和|
是什么?
答案 0 :(得分:0)
在适用于许多语言语法的Backus-Naur形式中,::=
表示某种语法元素的定义,几乎就像一个宏。每the Wikipedia page:
“:: =”表示左侧的符号必须替换为右侧的表达式。
因此,假设形式的定义:
symbol ::= expression
表示出现symbol
的地方,请替换为expression
。
|
表示“或”,因为atom
被定义为标识符,文字或附件。再次,从维基百科页面:
更多的序列由竖线“|”分隔,表示选择,整体可能替换左边的符号。
因此,当用“|”分隔时,左边的符号可以是左表达式中的多个符号之一。总之,文档有效地说:“只要有atom
,就意味着那里可能有文字,标识符或附件”。
答案 1 :(得分:0)
来自wikipedia:
" :: ="表示左侧的符号必须替换为右侧的表达式。
|
符号代表独占OR
。
因此,这意味着您必须将atom
替换为identifier
,literal
或enclosure
。