45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 编程代码 > 阅读资讯:巴科斯范式介绍

巴科斯范式介绍

2016-09-03 09:46:15 来源:www.45fan.com 【

巴科斯范式介绍

巴科斯范式(也称为巴科斯-瑙尔范式巴克斯-诺尔范式)是一种用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。尽管巴科斯范式也能表示一部分自然语言的语法,它还是更广泛地使用于程序设计语言、命令集、通信协议的语法表示中。大多数程序设计语言或者形式语义方面的教科书都采用巴科斯范式。在各种文献中还存在巴科斯范式的一些变体,如扩展巴科斯范式或者参数化的巴科斯范式。de:Backus-Naur-Form en:Backus-Naur form fr:Forme de Backus-Naur ja:BNF记法 nl:Backus-Naur-formalisme pl:Notacja BNF tr:Backus-Naur form

什么是巴科斯范式?

巴科斯范式(BNF:Backus-NaurForm的缩写)是由JohnBackus和PeterNaur首先引入的用来描述计算机语言语法的符号集。
现在,几乎每一位新编程语言书籍的作者都使用巴科斯范式来定义编程语言的语法规则。

巴科斯范式的内容


在双引号中的字("word")代表着这些字符本身。而double_quote用来代表双引号。
在双引号外的字(有可能有下划线)代表着语法部分。
尖括号(<>)内包含的为必选项。
方括号([])内包含的为可选项。
大括号({})内包含的为可重复0至无数次的项。
竖线(|)表示在其左右两边任选一项,相当于"OR"的意思。
::=是“被定义为”的意思。


巴科斯范式示例


这是用BNF来定义的Java语言中的For语句的实例:
for_statement
::=
"for""("(variable_declaration|
(expression";")|";")
[expression]";"
[expression]";"
")"statement



这是Oraclepackages的BNF定义:
package_body::="package"package_name"is"
package_obj_body{package_obj_body}
["begin"seq_of_statements]
"end"[package_name]";"

package_obj_body::=variable_declaration
|subtype_declaration
|cursor_declaration
|cursor_body
|exception_declaration
|record_declaration
|plsql_table_declaration
|procedure_body
|function_body

procedure_body::="procedure"procedure_name
["("argument{","argument}")"]
"return"return_type
"is"
["declare"declare_spec";"{declare_spec";"}]
"begin"
seq_of_statements
["exception"exception_handler{exception_handler}]
"end"[procedure_name]";"

statement::=comment
|assignment_statement
|exit_statement
|goto_statement
|if_statement
|loop_statement
|null_statement
|raise_statement
|return_statement
|sql_statement
|plsql_block



这是用BNF来定义的BNF本身的例子:

syntax::={rule}
rule::=identifier"::="expression
expression::=term{"|"term}
term::=factor{factor}
factor::=identifier|
quoted_symbol|
"("expression")"|
"["expression"]"|
"{"expression"}"
identifier::=letter{letter|digit}
quoted_symbol::="""{any_character}"""



扩展的巴科斯范式AugmentedBNF

RFC2234定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中ABNF被广泛使用。ABNF做了更多的改进,比如说,在ABNF中,尖括号不再需要。
 

本文地址:http://www.45fan.com/bcdm/71683.html
Tags: 范式 科斯 克斯
编辑:路饭网
推广内容
推荐阅读
热门推荐
推荐文章
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部