
【计】 Backus-Naur form; BNF
bar; be close to; cling to; hope earnestly
【化】 bar
【医】 bar
a branch of academic study; family; pass a sentence; section
【化】 family
【医】 department; family; family systematic
【经】 accountant's department; division head; section
this
【化】 geepound
【计】 normal form
巴科斯范式(Backus-Naur Form,BNF)是一种用于精确描述编程语言、数据格式或协议语法结构的元语言,由约翰·巴科斯(John Backus)和彼得·诺尔(Peter Naur)在20世纪50年代提出,并首次应用于ALGOL 60编程语言规范。该范式通过递归规则定义符号的组合方式,其核心结构包含三个要素:
在权威技术文档中,BNF被广泛应用于国际标准定义。例如,ISO/IEC 14977标准对扩展巴科斯范式(EBNF)的规范化描述,以及互联网工程任务组(IETF)在RFC文档中对协议语法的正式说明。现代编程语言如Python和XML规范也采用BNF变体来确保语法无二义性。
值得注意的演进版本包括:
该形式化方法对编译原理发展具有里程碑意义,其数学基础源自诺姆·乔姆斯基的上下文无关文法理论。通过BNF,语言设计者能实现从自然语言描述到机器可解析语法的跨越,这一特性使其成为计算机科学教育中的核心教学内容。
巴科斯范式(Backus-Naur Form,BNF)是一种用于描述上下文无关文法的形式化符号系统,主要用于定义编程语言、指令集和通信协议的语法规则。以下是其核心要点:
基本概念
BNF通过符号和表达式构建字符串生成规则,属于上下文无关文法。它用非终结符(如<digit>
)和终结符(如数字0-9)的组合来定义语言结构。
历史背景
由约翰·巴科斯(John Backus)和彼得·诺尔(Peter Naur)在20世纪50年代提出,最初用于描述ALGOL 60编程语言的语法。
BNF的语法规则包含以下符号:
::=
:表示“被定义为”,如 <digit> ::= 0|1|2|...|9
。|
:表示“或”,用于分隔多个可选选项。<非终结符>
:用尖括号包裹,需通过其他规则进一步定义(如<title>
可被替换为Mr、Mrs等)。以定义“数字”为例:
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<digit>
需通过右侧规则展开。EBNF在BNF基础上增加了简化符号:
[]
:表示可选项(0或1次)。{}
:表示可重复项(0到多次)。
例如:<name> ::= Dr. { <middle-name> } <last-name>
。BNF通过简洁的符号系统,为复杂语法提供了一种标准化的描述方式,是计算机语言理论的重要工具。如需更完整的符号说明,可参考和中的详细规则。
侧隙承包商待多同位素比较法肺反射复数介电常数高速翼面光符识别纸甲二磺酸间接费用数量效率差异煎煮家庭保险箱鸡结膜轲赖氏体控制变更库雷拉氏散剂轮齿规内部跟踪结构帕尔氏浊度计清洗剂TS-101乳糜性水肿三己精三指节畸形砂心垫砂声分支审计功能实电解质实图象术语符号微薄的