最近一直在做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 = "0" / "1" CHAR = %x01-7F ; any 7-bit US-ASCII character, excluding NUL CR = %x0D ; carriage return CRLF = CR LF ; Internet standard newline CTL = %x00-1F / %x7F ; controls DIGIT = %x30-39 ; 0-9 DQUOTE = %x22 ; " (Double Quote) HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" HTAB = %x09 ; horizontal tab LF = %x0A ; linefeed LWSP = *(WSP / CRLF WSP) ; linear white space (past newline) OCTET = %x00-FF ; 8 bits of data SP = %x20 ; space VCHAR = %x21-7E ; visible (printing) characters WSP = SP / HTAB ; white space
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索generator
, sip
, 语法
, space
, parser generator
, 一个
, 生成器
, 语法介绍
Parsing
abnf语法、abnf语法 例子、讯飞 abnf语法、abnf语法开发指南、abnf语法解析器,以便于您获取更多的相关知识。