XmlPlus xsd2cpp is a tool that compiles an XML schema into C++ data bindings. When invoked on an input XSD file, it generates the C++ sources (implementation/headers) for the supplied XML schema, a main.cpp template to demonstrate how generated sources can be consumed, and the automake/autoconf files for building the generated source.
nyu is a combination of modern academic approaches to parsing formal grammars from PEGs and expression grammars that represents the new state of the art in parser generators. nyu grammars are written in a powerful language based on PEGs (parsing expression grammars) but with modifications to allow both the AST and the parser to be specified intuitively in a single grammar. nyu outputs parsers that take advantage of the chilon::parser meta-programming library for C++. The generated parsers are almost as concise and readable as the input grammars, yet perform as well as hand-written C code. nyu ASTs are built using tuples, variant types, and lists, and allow self referential parsers and AST nodes to be manipulated. Advanced features such as hashed containers and grammar inheritance are also possible and well tested. nyu is currently powerful enough to deal with complex grammars and bootstraps its own parser.
WSF Staff is Web Service Framework for C++, AJAX, and J2ME that is based on Apache Axis2/C. WSF Staff wraps Apache Axis2/C code into C++, and also provides many additional features: a stateful Web services implementation in C++ with instance support, a synchronous and asynchronous client implementation in C++, AJAX, and J2ME, a service-component architecture implementation, support for RESTful Web services and clients, WSDL support with xsd import and export, J2ME client support (based on ksoap), a flexible and extensible code generator to generate any sort of Web service related source code (not only in C++), security support (users, groups, sessions, ACLs, etc.), and a Web application toolkit (webapp) with widget support.
Data2l is a language neutral, platform neutral way for describing large sets of proprietary binary data. An example of this kind of data is car navigation data, which is about 1GB to 15GB in a typical embedded navigation. With Data2l you can easily describe almost any binary data format using primitive description blocks like basic type, array, structure, or alternative and using a functional dependency description language. Using such a description, one can generate source code optimized for certain tasks, like a lightweight data reading layer, fast querying code, or code suitable for data generation and transformation.
mutest is a micro unit testing framework for C (with some C++ support). It is easy to use and has no dependencies. The idea is simple: a source file is a test suite, and a function is a test case (special functions can be used for test suite initialization and termination) that can can have several checks. Checks comes in 2 flavors: one that only prints an error, and one that terminates the current test case too. A (normally) automated test program run all the test suites and prints some stats. It fails (returns non-zero) if any test suite fails.
CocoXml is a combination of programming language scanner/parser generator (defined by .atg) and XML language scanner/parser generator (defined by .xatg). The generated sources can be updated by updating the .atg or .xatg. Source inclusion, automatic indentation, and backslash newline are supported. Some real usable scanners and parsers are provided for CExpr, JSON, Kconfig, patch, and RSS.
Lookup Tables C Code Generator consists of two programs: mkhashtable for generating C source to match a set of integers, and mkstringswitch for creating a switch statement to match a set of strings. Both programs allow specifying result values and/or actions to be run when an input value matches. The generators are highly customizable.
Flex Bison C++ Template is a code template that can be used to integrate a Flex scanner and Bison parser pair into a modern C++ program. These two universal tools are very difficult to incorporate into a good C++ design. The template utilizes both Flex and Bison in C++ mode and their output are encapsulated into classes. Thus the lexer and parser become fully reentrant, and multiple distinct lexer-parser pairs can easily be linked into one binary. The code implements a simple infix-notation calculator as an example, which can be used as a starting-point for you to insert your grammar.