Open Cpp

Program-Transformation.Org: The Program Transformation Wiki

Open C++ is a version of CPP with the Metaobject Protocol providing
reflection capabilities.

The programmer who want to use Open C++ writes a meta-level program, which specifies how to translate or analyze a C++ program. It is written in C++ and defines a small number of classes. Then the meta-level program is compiled by the Open C++ compiler and (dynamically or statically)
linked to the compiler itself as a compiler plug-in. The resulting compiler translates or analyzes a source program (it is called a base-level program for distinction) as the meta-level program specifies.