JDBCPersistence is an Object Relational Mapping framework. Designed for use in high volume online banking applications, the package delivers performance matching that exhibited by hand-written JDBC code. It uses a bytecode generation technique to create bytecode for classes that implement logic used for persisting the data. As the framework uses SQL for querying data, the learning curve is reduced. The footprint of the package is under 200KB.
cstor is a cross-reference compiler and reverse engineering tool. It compiles one text file (database) from multiple source modules (currently reads C, C++, and Perl). The tool combines reverse engineering capabilities, code validation, and an HTML documentation generator. The database can then be reused from own scripts and programs, e.g. to implement cross-compilers, validate coding conventions, build statistics etc. The builtin documentation generators are actually an application of the database.
Oink is a collaboration of backends for the Elsa C and C++ frontend. It aims to be industrial-strength for immediate utility in finding bugs, extensible for ease in adding backends, and composable for ease in combining existing ones. It computes expression-level and type-level data flow, and statement-level intra-procedural control flow (by delegating to Elsa). It's easy to get started by using the two demo backends that print graphs of these flows. It also comes with a client of the data flow analysis that does type qualifier inference: Cqual++, a C/C++ frontend for Cqual. Whole-program analyses may be attempted using the linker imitator.
Ccide reads C, C++, BASIC, or bash source code containing embedded decision tables from stdin, expands the tables, copies the remaining statements, and forms a compilable C or C++ source module, executable bash script, or interpretable BASIC program. Erratic side effects are avoided by evaluating all condition expressions at exactly the same time, and by performing all evaluations and actions in the original sequence.
Sparse is a semantic parser of source files. It's neither a compiler (although it could be used as a front-end for one) nor a preprocessor (although it contains a preprocessing phase). It is meant to be a small, simple, easy to use library. Its function is to create a semantic parse tree for some arbitrary user for further analysis. It's not a tokenizer, nor is it a generic context-free parser. Context (semantics) is what it's all about: figuring out not just what the grouping of tokens are, but what the types are that the grouping implies.