
On Tue, Jan 24, 2012 at 2:06 AM, Christopher Brown
Hi,
I have stumbled across language-c on hackage and I was wondering if anyone is aware if there exists a full C++ parser written in Haskell?
I don't think one exists. I've heard it's quite difficult to get template parsing working in an efficient manner. My understanding is that "real" C++ compilers use the Edison Design Group's parser: http://www.edg.com/index.php?location=c_frontend For example, the Intel C++ compiler uses the edg front-end: http://en.wikipedia.org/wiki/Intel_C%2B%2B_Compiler I thought even microsoft's compiler (which is surprisingly c++ compliant) uses it but I can't find details on google about that. There is at least one open source project using it, rose, so it's not unthinkingable to use it from Haskell: http://rosecompiler.org/ Rose has had working haskell bindings in the past but they have bit rotted a bit. With rose you get support for much more than parsing C++. You also get C and Fortran parsers as well as a fair bit of static analysis. The downside is that rose is a big pile of C++ itself and is hard to compile on some platforms. If you made a BSD3 licensed, fully functional, efficient C++ parser that would be great. If you made it so that it preserves comments and the input well enough to do source to source transformations (unparsing) that would be very useful. I often wish I had rose implemented in Haskell instead of C++. Jason