介绍
巴科斯-诺尔范式缩写为: BNF , 是一种用形式化符号精确描述程序设计语言的语法的一种形式系统.实际上,BNF范式等价于乔姆斯基的2型文法.它是一种典型的元语言,可以严格地表示语法规则,且描述的文法是上下文无关文法.
语法
1 | //这里<>并非规则,可忽略该符号 |
规则
规则 | 实例 | 描述 |
---|---|---|
::= | var ::= Name | 定义为 |
“” | “word” | 在双引号中的字符代表其本身,双引号外则为语法本身 |
<> | <>内包含的为必选项 | |
[] | [a] | []内包含的为可选项 |
{} | {a} | {}内包含可重复0~无穷次的项 |
| | a|b | 或者 |
实例
Java For循环
FOR_STATEMENT ::=
“for”
“(“ ( variable_declaration |( expression “;” ) | “;” )
[ expression ] “;”
[ expression ]
“)” statement
Lua For 循环
stat ::= for namelist in explist do block end
namelist ::= Name {`,´ Name}