一 定义
BNF: Backus-Naur Form
以美国人巴科斯(Backus)和丹麦人诺尔(Naur)的名字命名的一种形式化的语法表示方法。
a formal grammar for expressing context-free grammars.
二 语法
1 在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。
2 在双引号外的字(有可能有下划线)代表着语法部分。
3 尖括号( < > )内包含的为必选项。
4 方括号( [ ] )内包含的为可选项。
5 大括号( { } )内包含的为可重复0至无数次的项。
6 竖线( | )表示在其左右两边任选一项,相当于"OR"。
7 ::= 是“被定义为”。
三 举例
在CQL(the Cassandra Query Language)中的使用
term ::= constant | literal | function_call | arithmetic_operation | type_hint | bind_marker
literal ::= collection_literal | udt_literal | tuple_literal
function_call ::= identifier '(' [ term (',' term)* ] ')'
arithmetic_operation ::= '-' term | term ('+' | '-' | '*' | '/' | '%') term
type_hint ::= '(' cql_type `)` term
bind_marker ::= '?' | ':' identifier
四 ABNF
ABNF,扩展的BNF。最先在RFC2234中定义。RFC4234废弃了RFC2234,RFC5234废弃了RFC4234,RFC7405对RFC5234进行了更新。