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

Reply via email to