跳至内容

计算理论:巴科斯范式

来自维基教科书,开放的书籍,开放的世界

试卷 1 - ⇑ 计算理论 ⇑

← 正则表达式 巴科斯范式 算法分类 →


巴科斯范式(也称为巴科斯范式 (BNF) 或简称BNF)是一种用于表达计算机语言语法的符号技术。表达式被放在列表中,可用于检查所写语法的有效性。

结构和布局

[编辑 | 编辑源代码]

BNF 使用以下符号表示

 ::=   'is defined as'
 |     'or'
 <>    category names

这些符号的布局方式如下

 <Parent Expression> ::= <Child Expression 1> | <Child Expression 2>

简单来说,上面的表达式表示“父表达式定义为子表达式 1 或子表达式 2”。这意味着要构成父表达式,它必须包含一个子表达式,而子表达式又是由其他东西组成的。

在本例中,BNF 结构正在分解语法以创建

家庭住址的巴科斯范式分解
 <Address> ::= <House Number> <Street Name> <Town Name> <City Name> <Country> <Postcode> | <House Number> <Street Name> <City Name> <Country> <Post Code>
 <Postcode> ::= <Area Code> <Street Code>
 <Area Code> ::= <City Prefix> <digit> | <City Prefix> <digit> <digit>
 <Street Name> ::= <Name> <Street Type>
 <Flat Number> ::= <character> | <digit>
 <House Number> ::= <number> | <digit> <number>
 <number>::= <digit> | <digit> <number>
 <Name> ::= <string>
 <Street Type> ::= <string>
 <City Prefix> ::= <string>
 <Street Code> ::= <string>
 <Town Name> ::= <string>
 <City Name> ::= <string>
 <Country> ::= <string>
 <string> ::= <character> | <character><string>
 <character> ::= A|B|C|D|E|F|G|H|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
 <digit> ::= 0|1|2|3|4|5|6|7|8|9
一张展示地址 BNF 布局方式的图片。

练习题

[编辑 | 编辑源代码]
使用上面关于地址的示例中的 BNF,说明每个输入是否有效输入。

15 Jubilee Lane Blackpool England FY98 5ER

答案

15 Jubilee Lane Blackpool England FY423 5ER

答案

32 Parkstone Road Syston England Leicester LE7 3ZY

答案

华夏公益教科书