[now to the list, apart from Gabriel]
Hello,
In general, the AST transformation should be gradual, like in logic rewriting systems kind of Maude. So the AST definitions should be lightweight as possible and passes declarative. In the end you have a "final" OCaml AST, with types or without, with blank tokens and comments or without, and it would be CIL or something else depending what you want.
I am not opposing inventing new frontend, but would rather think what kind of goodness we can get from the existing solutions. I think sticking with Clang (or gcc) as a frontend and exporting, maybe automatically the AST looks like a sane solution, as a bonus we have a C++ frontend that passes all the conformance testing.
hope that helps,
Wojciech