WriteTarget is a universal text generator based on Bash text substitution. It can be used to generate text in any programming or markup language. The generator does not define its own language; it rather defines several functions, making it possible to use Bash for creating simple or sophisticated templates.
The Java Exorcist is a simple Java syntax extender. By default (with no extensions), it only compiles standard Java code, but with each extension to Exorcist a new Java language construct can be defined or redefined. The Exorcist preserves line numbering at runtime and at compile-time. It can be invoked on the command line and through an ant task.
JCPP is a complete, compliant, standalone, pure Java implementation of the C preprocessor. It is intended to be of use to people writing C-style compilers in Java using tools like sablecc, antlr, JLex, CUP, and so forth. It has been used to successfully preprocess much of the source code of the GNU C library.
PySTDF is a Python module which makes it easy to work with STDF (Teradyne's Standard Test Data Format). STDF is a commonly-used file format in semiconductor tests. Automated test equipment (ATE) from such vendors as Teradyne, Verigy, LTX, Credence, and others supports this format. PySTDF provides event-based stream parsing of STDF version 4, indexers that help structure the data into a more useful tabular form, and the ability to generate missing summary records or new types of derivative records. The parser architecture is very flexible and can easily be extended to support STDF version 3 and custom record types.
Pyspice is an easily extendable SPICE pre-processor written in Python to reduce simulation times with little loss in accuracy. It was inspired by John Sheahan's spicepp and developed as a modular and extensible method of pre-processing netlists. Primarily, it has been used to reduce netlists from the output of layout extraction tools. It combines parallel MOSFETs and capacitors, and optionally drops small capacitors. Planned improvements include a hierarchical namespace (e.g. .subckt/.ends and .alter blocks), more devices, and .include/.model support. Unlike other pre-processors, comments and blank lines are preserved in their relative positions. This keeps the output netlist readable for subsequent editing or processing.
Sunifdef is a command line tool for eliminating superfluous preprocessor clutter from C and C++ source files. It is a more powerful successor to the FreeBSD 'unifdef' tool. Sunifdef is most useful to developers of constantly evolving products with large code bases, where preprocessor conditionals are used to configure the feature sets, APIs or implementations of different releases. In these environments, the code base steadily accumulates #ifdef-pollution as transient configuration options become obselete. Sunifdef can largely automate the recurrent task of purging redundant #if logic from the code.
The MetaC programming language is a 100% backward compatible extension to the C language that adds reflections and the ability to analyze and modify C source code at compile time. It has been specially designed to search for arbitrary code structures and instantiate new source code. Typical applications for MetaC based meta-programs are development tasks concerning embedded and real-time software. Examples are API abstraction and retargeting to a new API (ever been locked to a vendor-specific API?), application specific debugging and profiling on an embedded target, and WCET measurements.
"jscpp" is an ANSI C preprocessor and language parser that can analyze and instrument C code. Currently, its most prominent application is to add tracing to existing C programs simply by recompiling and linking it with the "jscc" compiler frontend. The standard tracing shows when a function is entered or left along with the parameters passed or return values. It is also possible to trace each source line and watch read/write access to simple variables. Tracing is achieved by instrumenting the source code before calling the system compiler. The program is modular and can be easily extended to other kinds of source code modifications.