基于Predictive Parsing的ABNF语法介绍

最近一直在做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语法解析器,以便于您获取更多的相关知识。

时间: 2024-11-01 22:46:55

基于Predictive Parsing的ABNF语法介绍的相关文章

Groovy语法介绍

1. 介绍 Groovy 是基于 JRE 的脚本语言,和Perl,Python等等脚本语言一样,它能以快速简洁的方式来完成一些工作:如访问数据库,编写单元测试用例,快速实现产品原型等等. Groovy 是由James Strachan 和 Bob McWhirter 这两位天才发明的(JSR 241 2004 年 3 月).Groovy 完全以Java API为基础,使用了Java开发人员最熟悉的功能和库.Groovy 的语法近似Java,并吸收了 Ruby 的一些特点,因此 Groovy 在某

XSL语法介绍

语法   例子已经放在上面,下面我们可以来仔细的分析其中的语法结果和关键所在:       首先注意到的是,XSL文件本身即是一份 XML文件,所以在XSL文件的开头,一样有和XML文件相同的声明.W3C这个XML的标准机构为XSL定义了很多标记(元素),XSL文件就是这些标记和HTML标记的组合.在XSL文件中,必须有如下一行的代码:       <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">      

markdown简介和语法介绍_相关技巧

一.前言 之前有了解过markdown,但一直没实际使用,今天试用了下,感觉很爽,推荐给大家,特别是在编写规范.接口文档等方面非常适合,因为其简单易用也有很多人用来写网络小说. 二.介绍 Markdown 的目标是实现易读易写,可以直接在问编辑器书写和保存,除本身具有非常好的可读写外,还可以生存格式非常好看的html代码发布在互联网中. Markdown 不是想要取代 HTML,甚至也没有要和它相近,它的语法种类很少,只对应 HTML 标记的一小部分.Markdown 的构想不是要使得 HTML

asp+语法介绍(一)

asp+|语法 /* 文章出处:http://www.aspCool.com 转载请注明处处,谢谢! */ASP+ 现在支持两种语言C# (简称 "C Sharp"), Visual Basic, and JScript. 基于习惯,在以下的语言介绍中,我们采用的练习和例程采用VB和C#语言来开发Web应用程序.如果想要得到关于.Net技术的详细资料,请去MS的站点 查看关于 NGWS SDK! 在下面的列表中,你可以看到关于这两种语言的语法的简要介绍 1.变量声名 C# 语法 int

asp+语法介绍(二)-书写我们的第一个asp+ 文件

asp+|语法 /* 文章出处:http://www.aspCool.com 转载请注明,谢谢! */ asp+ 页面的文件和asp 一样,也是一个 文本的文件,但是他的后缀名称已经不再是 .asp 而是 .asp+ 当客户端浏览器向 IIS 发出.aspx 的文件请求后,IIS 会 首先将.aspx文件编译成运行状态的NGWS 类文件来运行,请注意,这个编译的过程只在第一次运行的时候发生,以后就直接以运行态的NGWS 类运行了(和 .jsp 是不是很类似??--豆腐添加,原文没有) 一个 最简

asp+语法介绍(三)----asp+的服务器端编程初步

asp+|编程|服务器|语法|服务器 /* 文章出处:http://www.aspCool.com 转载请注明,谢谢! */ 这一章介绍关于Asp+的服务器端的控件 除了使用<%%>号以外,asp+ 的程序开发者目前可以使用新的标签来生成动态的页面了,新的服务器控可以在asp+ 文件中利用一个特殊的tag runat=server来声明 下面的例子中用到了以下几个服务器控件, , , and 在运行的过程中他们都会自动生成HTML代码 Name: Category: psychology bu

asp+语法介绍(六)----数据库篇

asp+|数据|数据库|语法 /*文章出处:http://www.aspCool.com 转载请注明,谢谢!*/列表,数据和数据棒定asp+ 给我们提供了一套数据表格和数据列表的控件.这些控件可以帮助我们定制我们UI(user interFace 用户界面)而不去考虑一种数据库或者其他的数据库.例如:在下面的例子中,我们将要介绍一下<asp:datagrid runat=server>控件是怎么样通过sql 语句给我们提供数据的<%@ Import Namespace="Sys

JSP语法介绍

js|语法 JSP页面中的元素 一,释:三种注释,<!-- -->会打印到客户端,剩下的两种被JSP引擎忽略. 二,模板元素:指JSP中的静态HTLM或者XML内容,它影响页面的结构和美观程度,但那是美工的事,与程序员无关. 三,脚本元素:包括声明(Declaration),表达式(Expression)和Scriptlets,除去一些微小的差异外,Scriptlets完全可以取代前两种的功能. 四,指令元素: JSP指令是JSP向JSP包容器发送的消息.他们用来设置全局值,如类声明,要实现的

javaScript基础语法介绍

本文从javascript简介开始,介绍了javascript的语法以及注意事项.动态语言.引用外部JS文件.变量命名规则.判断是否已经声明.不存在块级作用域这些方面的内容,是篇相当不错的基础语法的介绍文章,推荐给小伙伴们 简介 JavaScript是一种脚本语言. (脚本,一条条的文字命令.执行时由系统的一个解释器,将其一条条的翻译成机器可识别的指令,然后执行.常见的脚本:批处理脚本.T-SQL脚本.VBScript等.) HTML只是描述网页长相的标记语言,没有计算.判断能力,如果所有计算.