巴科斯范式(BNF: Backus-Naur Form的缩写)是由John Backus 和 Peter Naur首次引入一种形式化符号来描述给定语言的语法.
格式:
- 双引号中的字("word")代表字符本身
- 双引号外的字(有可能是下划线)代表语法部分
- 尖括号( <>) 内包含的为必选项
- 方括号( [] )内包含的为可选项
- 大括号( { } )内包含的为可重复0至无数次的项
- 竖线( | )表示在其左右两边任选一项,相当于“OR”
- ::= 是“被定义为”的意思
示例:
用BNF来定义C++语言中的for语句:
FOR_STATEMENT ::=
"for" "(" ( variable_declaration |
( expression ";" ) | ";" )
[ expression ] ";"
[ expression ]
")" statement