Why CheaderParsing is used:
Headerfiles of the C or C++ programming language contain structural informations about data and maybe about calling possibilities (function prototypes, methods).
The data structures may be able to use in other contexts, at example:
Access to data from other tools, a description of data structures where need.
UML-representation of data
Access to the data from Java, contained in byte-arrays
Simple descriptions of data interface, able to generate from
The usage of that possibilities is shown in other examples of ZBNF too. This example is proper only for a simple test of the parser and the Header syntax.
The syntax of a header file:
It is contained in the file
zbnfjax/zbnf/Cheader.zbnf. The syntax is checked with some headerfiles in praxis, but it may be considered not all variants yet.
There is a principal problem: A C-or C++-compiler runs at first the preprocessor, which includes some other files, regards conditional compiling and replaces macros with its defined values. This is a formal textual process, not a parsing process. That result is read from the compiler to parse. The here used ZBNF-parser takes the content of the header file immediately without preprocessing.
In the practice there were less problems with a lot of variants of headerfiles, at example generated from an UML-tool. But, if a user writes a complexly content, which uses special defines, a parsing process isn't able. Than a preprocessor of a C/C++-compiler should prepare the headerfile before parsing.
At the other hand the comment may contain some informations:
Structuring of classes: combination of
struct-definitions and function prototypes, which uses this structures, to build a class context in C-language.
Special Annotations in the comment.
The ZBNF-Parser is able to read informations from commentation. If a preprocessor runs, the comment is removed mostly. Therefore it isn't practical to use a standard preprocessor. But a special preprocessor, which preserves the comments, may be proper to use.
The example contains:
readme.html del_results.bat testCheader.bat example.h Object_Jc.h example.reference.xml Object_Jc.reference.xml
del_results.bat: helper to clean.
testCheader.bat: Windows-batch file to call both parsings only using ZBNF.
example.h: A test header file.
Object_Jc.h: A header file from practical use (see CRuntimeJavalike).
*.reference.xml: The results of the parsing process to compare: Test results with changed conditions should be compared with it.
testCheader.bat is invoked, the following files should be created:
example.h.rpt example.xml Object_Jc.h.rpt Object_Jc.xml