| 菊风ABNF编译器 |
| ABNF(一种扩展的BNF)由于其简单而强大,是互联网领域中最常用的文本描述语言的定义工具,大多数的互联网领域中文本描述语言的规格化定义都使用ABNF 。ABNF 除了可以定义各类文本语言,如C/C++、Java、VB等语言之外,更加常用的是定义文本协议报文格式,如HTTP、SIP、SMTP 等各著名的协议报文都有比较复杂的ABNF文法的形式化定义。 |
由于用ABNF定义的文法的效率问题,传统的BNF编译器不能适用于商业化的协议报文处理软件的需要,为此菊风公司致力于研制适合符合工业级性能强度和效率需求的编译工具软件。 |
| 协议框架: |
|
| 协议模块: |
| ZOS Lib |
提供ZOS Lib的目的是封装不同操作系统的API ,以及提供适用于协议处理的一系列实用的数据结构和算法,它由ZOS平台C语言源代码编译为不同操作系统版本的目标文件和ZOS头文件构成。 |
| ABNF Lib |
ABNF Lib提供抽象统一的ABNF数据流的编解码处理机制的实现和一系列实用库函数。它由ABNF库源代码编译为不同操作系统版本的目标文件和ABNF头文件构成。 |
| ABNF2Html / ABNF2TC / ABNF2Code |
ABNF2Html / ABNF2TC / ABNF2Code 提供了ABNF编译软件的主要的业务实现,除了提供自动生成Html,自动生成报文测试用例,自动生成ABNF编解码代码等功能以外,还提供配置管理、错误和日志管理等常规功能。 |
| ABNF Console UI / ABNF Windows UI |
ABNF Console UI 即为ABNF软件的控制台界面,我们将提供Win32、Linux 、Solaris几个版本。
ABNF Windows UI即为ABNF软件的窗口图形界面,表现力强,可显示语法树,并对其节点进行操作。但我们只实现Win32版本的窗口图形界面。 |
| Language Port / ABNF Codec Instance |
Language Port的作用是生成一套代码,供不同语言之间的整合。如Java的Language Port,实际上就是专用于访问ABNF Lib和ZOS Lib的Java本地调用代码。 |
| User Application |
User Application即为用户的应用程序,这实际上是一个外部程序,它跟ABNF UI是同一个层次。 |
| 实现说明: |
1. 用ANSI C实现
2. 支持(Win32、VxWorks、Linux、Solaris等操作系统)
3. 优化的字符位运算算法和字符串匹配算法,大大加快了处理速度
4. 空间效率高,优化数据结构和代码尺寸
5. 优化的语法分析,特别适用于协议报文处理
6. 生成的代码线程安全
7. 内存池和缓冲区控制机制,避免系统内存操作的开销
8. 清晰的错误定位机制
9. 编解码处理简洁直观,容易二次修改
10. 用户界面友好,编译生成的代码可读性强
11. 严格的编码规范和编码逻辑跟ABNF语法能够统一 |
| 软件特性: |
1. ABNF语法树的错误处理和优化,包括转换为LL(1)文法,文法简化规则识别等
2. 实现ABNF2Html,即ABNF to Html,ABNF超文本自动生成
3. 实现ABNF2TC,即ABNF to Test Case,测试用例自动生成
4. 实现ABNF2Code,即ABNF编解码代码自动生成功能
5. ABNF Codec代码支持C/C++、Java、Delphi |
| 软件应用: |
1. 所有关于ABNF文法的编解码开发应用,包括SIP、HTTP、MGCP、SDP等等
2. 所有关于ABNF文法编解码报文的第三方软件的测试
3. ABNF文法构造辅助 |
| 软件资源: |
ABNF2HTML 根据ABNF语法产生HTML文件(Windows版本) |
ABNF RFC2234 ABNF2HTML ABNF语法HTML版本 |
SIP RFC3261 ABNF2HTML SIP ABNF语法HTML版本 |
SDP RFC2327 ABNF2HTML SDP ABNF语法HTML版本 |
MGCP RFC3435 ABNF2HTML MGCP ABNF语法HTML版本 |
MEGACO/H.248 RFC3525 ABNF2HTML H.248/MEGACO ABNF语法HTML版本 |
RTSP RFC2326 ABNF2HTML RTSP ABNF语法HTML版本 |