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 has been tested mostly on Linux, but in theory it should be possible to make it work on other systems.
Pork is based on the Elsa (and Oink) tool chain, and the MCPP preprocessor. As of October 2009 Oink incorporates the Pork functionality into its standard distribution; look for files and tests having the prefix "xform".