write style-preserving source-to-source transformations such as
refactorings on C or C++ source code, parsing the code and representing it
internally as-is.  In particular, it understands cpp macros and preserves
whitespaces, newlines, indentation and comments. 