Pork: a C++ parsing and rewriting tool chain
Pork is a C++ parsing and rewriting tool chain. The core of Pork is a C++ parser that provides exact character positions for the start and end of every AST node, as well as the set of macro expansions that contain any location. This information allows C++ to be automatically rewritten in a precise way. The inputs driving the rewriting would normally be provided by a program-analysis system outside of Pork. (See Dehydra, Treehydra).
Pork is based on the Elkhound/Elsa/Oink tool chain, and the MCPP preprocessor.