BNF, ABNF, EBNF, TBNF

BNF被用来形式化定义语言的语法,以使其规则没有歧义。(如C、Java、ASN.1都可以通过BNF进行描述)事实上,BNF非常精确,围绕这些语法有很多数学理论,使得人们竟然可以机械地为基于BNF语法的语言构造解析器。(有些语法不能实现,但通常可以手工地通过转换成其他形式来实现)。实现这个功能的程序叫做编译器,最有名的是YACC,当然,还有很多很多。

http://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_Form


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


rfc4234 Augmented BNF for Syntax Specifications: ABNF (老版本为rfc2234)

RFC2234 定义了扩展的巴科斯范式(ABNF)。近年来在Internet的定义中ABNF被广泛使用。ABNF做了更多的改进。扩充巴科斯-瑙尔范式(ABNF)基于了巴科斯-瑙尔范式(BNF),但由它自己的语法和推导规则构成。这种元语言的发起原则是描述作为通信协议(双向规范)的语言的形式系统。它建档于 RFC 4234 中通常充当 IETF 通信协议的定义语言


ABNF:

rule = definition ; comment CR LF

1. rule不需要用尖括号括起来,与BNF不同

2. 不区分大小写

3. 如果期望明确定义,则使用%d97代表a

4. 终结符就是可以直接出现在语言中的符号,非终结符就是语言中某些抽象的概念。

5. '::=' 意味着必须被替换



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值