基于Predictive Parsing的ABNF语法分析器(一)——ABNF语法介绍

本文介绍了SIP协议中使用的ABNF(Augmented BNF)语法,并探讨了如何基于Predictive Parsing手动编写ABNF解析器。文章指出,尽管存在ABNF解析器生成器,但从编译原理角度出发,自己实现能带来更深刻的理解。ABNF语法包含Core Rules和主体部分,与上下文无关文法BNF相似但略有差异,如缺少空符号并引入重复操作符。
摘要由CSDN通过智能技术生成

最近一直在做Session Initiation Protocol (SIP)协议方面的开发,SIP在电信VoIP领域应用非常广泛,是一个基于文本语法的协议。SIP的语法规范是使用ABNF来定义的。对SIP语法有兴趣的同学请移步其Augmented BNF for the SIP Protocol章节。Augmented BNF for Syntax Specifications: ABNF本身也是一种语法规范,ABNF形式上可以由其自身来定义,有兴趣的童鞋请参考其第4章“ABNF Definition of ABNF”。

因此,如果想做一个SIP协议栈,首先要有一个SIP的语法解析器,这个语法解析器属于ABNF语法解析器。网上搜索ABNF语法解析器的生成器(ABNF parser generator)能够搜索到不少。当然,如果从学习编译原理的角度来说,我们更倾向于自己去写一个ABNF parser generator,因为如果我们自己动手写过,以后就算用开源的生成器,用起来肯定会有更深刻的体会。

ABNF的语法定义很短,主要分为两部分,Core Rules和ABNF的主体部分。Core Rules主要是一些最基础的符号定义:

        ALPHA          =  %x41-5A / %x61-7A   ; A-Z / a-z

        BIT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值