Another interesting comparison between clang/llvm and cparser/firm has to do with their respective preprocessors and underlying AST structures. cparser's entity_t and related structures are clean, clear, and very easy to work with. That, together with the fact that cparser is written in C, allows you to effortlessly walk the AST while having access to its entire informationwithout the help of an iterator, and without having to call any specialized functions. Having worked with both (lib)clang and (lib)cparser, I consider cparser the better and easier library for source analysis, as well source-to-source transformation tools. Other areas where cparser's AST could be nicely exploited: a source editor that provides, in addition to syntax highlighting, information about linkage and effective optimization, and a source generation tool based on the user's own code gallery.