libIDL is a library licensed under the GNU LGPL for creating trees of
CORBA Interface Definition Language (IDL) files, which is a
specification for defining portable interfaces. libIDL was initially
written for ORBit (the ORB from the GNOME project, and the primary
means of libIDL distribution). However, the functionality was designed
to be as reusable and portable as possible.
It is written in C, and the aim is to retain the ability to compile
it on a system with a standard C compiler. Preprocessed parser files
are included so you are not forced to rebuild the parser, however an
effort is made to keep the parser and lexer compatible with standard
Unix yacc and lex (although bison and flex are more efficient, and are
used for the preprocessed parsers in the distribution).
With libIDL, you can parse an IDL file which will be automatically
run through the C preprocessor (on systems with one available), and have
detailed error and warning messages displayed. On a compilation
without errors, the tree is returned to the custom application. libIDL
performs compilation phases from lexical analysis to nearly full
semantic analysis with some optimizations, and will attempt to generate
meaningful errors and warnings for invalid or deprecated IDL.
libIDL exports functionality used to generate detailed conforming
error and warning messages in gcc-like format, and also comes with a
default backend to generate IDL into a file or string (useful for
customized messages or comments in the output). The IDL backend is
complete enough that most generated IDL can be reparsed by libIDL
without errors. libIDL returns separate syntax and namespace trees, and
includes functionality to hide syntactical information from the primary
tree, while keeping it accessible through the namespace for type
information and name lookup.
Optional extensions to standard IDL can be enabled using parse flags.
These include node properties, embedded code fragments, and XPIDL.
Nodes can also have declarations tags which assign particular
attributions to certain IDL constructs to further facilitate custom
automatically generated byinfo2html