Elsa is a C++ front-end designed and primarily implemented by Scott McPeak. It is as factored as Scott and I could make it and provides features that no other C++ front end provides, such as the ability to stop the parser after it has parsed but before it has disambiguated and print the ambiguous "parse forest".
Oink is a static-analysis framework using Elsa. In particular Oink provides a dataflow analysis and a source-to-source transformation tool (added by Mozilla). The point of Oink is that you can write a static analysis specific to your project; one consequence of the Halting Problem is that you will always need to do this: no generic static analysis will ever be enough. "C++" isn't really a thing, but more of a "cloud" of similar languages, each implementation and version providing different semantics. The gcc people keep changing the defaults, the tool itself may not compile with the latest versions of g++ (we may have namespace collisions with Scott's version of string; he didn't like the STL). A few features have been added in C++11; these should be really easy to add (given our parser design tolerates ambiguities in the grammar). The hardest problem is that some template features may be missing so processing heavily-templatized input can have incomplete semantics or sometimes fail. Getting Elsa "done" may be too hard of a job, but it should be possible to get it to work for any particular project. Daniel http://daniel-wilkerson.appspot.com/oink/index.html https://github.com/dsw/oink-stack
