| Juphoon ABNF Compiler |
| Augmented BNF (ABNF) is simple and powerful. So it is the most used definition tool of text describing language at Internet domain. In addition to a variety of text languages defined by ABNF, such as C/C++, Java, VB, etc., more usually ABNF is used to define the format of a textual protocol. Many well-known protocol packets have complicated formats defined according to ABNF grammar. |
Because of the efficiency of the grammar defined by ABNF, traditional compiler of BNF is not applicable to commercialised software for the processing protocol packets codec. In order to solve this problem, Juphoon dedicates itself to research on compiling tools which can satisfy the requirements of industrial intensity and high efficiency. |
| Framework£º |
|
| Modules£º |
| ZOS Lib |
ZOS Lib is provided to seal API which is of different operating systems and to supply a series of useful data structures and algorithms for protocol processing. It consists of binary object files and header files which are of different operating systems and compiled by the C source codes of ZOS. |
| ABNF Lib |
ABNF Lib provides the realization of codec mechanism of the abstract unified ABNF data stream and a series of useful library functions. It consists of object files and header files which are of different operating systems and compiled by the source codes of the ABNF Library. |
| ABNF2Html / ABNF2TC / ABNF2Code |
ABNF2Html / ABNF2TC / ABNF2Code provide main business functions of ABNF Compiler. In addition to providing functions as the automatic generations of HTML, packet testing cases and the ABNF codec codes of ABNF, it also provides configuration management, error and log managements and other common functions. |
| ABNF Console UI / ABNF Windows UI |
ABNF Console UI is the console interface of ABNF. Versions running in Win32, Linux and Solaris will be provided.
ABNF Windows UI is the windows interface of ABNF. It has strong capability of representation. Also it can display grammar trees and can manipulate the trees' nodes. Only the version of Windows UI running in MS-Windows is realized by now.
|
| Language Port / ABNF Codec Instance |
Language Port is used to generate a suite of codes for the integration between different languages. For instance, the Language Port of Java is specially used to visit the local codes of ABNF Lib and ZOS Lib.
|
| User Application |
User Application is referred to the users' application programs. Actually it is an external program and is the same layer as ABNF UI. |
| Implementation Description: |
1. Realized with ANSI C
2. Support the operating systems such as Win32¡¢VxWorks¡¢Linux¡¢Solaris and etc.
3. Optimized algorithms of character bit calculation and string suiting thus speed up the processing
4. High spacial efficiency, optimized data structure and code size
5. Optimized grammar parsing especially applicable to process protocol packet
6. The code is thread safe
7. The control system of memory pool and buffer can avoid the cost of OS's memory management
8. Clear error-located
mechanism
9.
Codes of codec is very easy to understand and modify
10.
The code produced by compiler has friendly user interface and is easy to use
11.
Strict programming regulations and logic which can benefit mapping the code and the rules which is defined by ABNF |
| Features£º |
1.
Optimization and error manipulation of ABNF Grammar Tree include converting to LL(1) grammer, simplifying regulation in the grammar and etc.
2. Realization of ABNF2Html which is referred to ABNF to Html, automatic production of hyper-text of ABNF
3. Realization of ABNF2TC which is referred to ABNF to Test Case
4.
Realization of ABNF2Code which is referred to automatic production of ABNF Codec code
5. ABNF Codec code supports C/C++, Java, Delphi |
| Applications£º |
1. Applications about ABNF Codec development, including SIP, HTTP, MGCP, SDP and etc.
2. Tests for the 3rd softwares, which are about ABNF Codec packets
3. ABNF assistant constructing |
| Resources£º |
ABNF2HTML HTML files based on ABNF Grammar file(Windows Version) |
ABNF RFC2234 ABNF2HTML ABNF ABNF2HTML file |
SIP RFC3261 ABNF2HTML SIP ABNF2HTML file |
SDP RFC2327 ABNF2HTML SDP ABNF2HTML file |
MGCP RFC3435 ABNF2HTML MGCP ABNF2HTML file |
MEGACO/H.248 RFC3525 ABNF2HTML H.248/MEGACO ABNF2HTML file |
RTSP RFC2326 ABNF2HTML RTSP ABNF2HTML file |
| |