
_START_ARTICLE_
巴科斯范式
_START_PARAGRAPH_
巴科斯范式（英语：Backus Normal Form，缩写为BNF），又称为巴科斯-诺尔范式（英语：Backus-Naur Form，缩写同样为BNF，也译为巴科斯-瑙尔范式、巴克斯-诺尔范式），是一种用于表示上下文无关文法的语言，上下文无关文法描述了一类形式语言。它是由约翰·巴科斯（John Backus）和彼得·诺尔（Peter Naur）首先引入的用来描述计算机语言语法的符号集。_NEWLINE_尽管巴科斯范式也能表示一部分自然语言的语法，它还是更广泛地使用于程序设计语言、指令集、通信协议的语法表示中。大多数程序设计语言或者形式语义方面的教科书都采用巴科斯范式。在各种文献中还存在巴科斯范式的一些变体，如扩展巴科斯范式 EBNF 或扩充巴科斯范式 ABNF。
_START_SECTION_
发展历史
_START_PARAGRAPH_
约翰·巴科斯首次在ALGOL 58中实现巴科斯范式。彼得·诺尔在ALGOL 60之中，进一步发展它的概念并将它的符号加以简化，称其为巴科斯范式（Backus Normal Form）。但高德纳主张应称为巴科斯-诺尔范式（Backus–Naur Form），因为它不算是一种正规形式（Normal form）。
_START_SECTION_
介绍
_START_PARAGRAPH_
BNF 规定是推导规则(产生式)的集合，写为：_NEWLINE_<符号> ::= <使用符号的表达式>_NEWLINE_这里的<符号> 是非终结符，而表达式由一个符号序列，或用指示选择的竖杠 '|' 分隔的多个符号序列构成，每个符号序列整体都是左端的符号的一种可能的替代。从未在左端出现的符号叫做终结符。
_START_SECTION_
引用
_START_PARAGRAPH_
本条目部分或全部内容出自以GFDL授权发布的《自由线上电脑词典》（FOLDOC）。