>> This may be a dumb question, but is there any reason the C++ parser in
>> llvm/clang can't be used? It is compatible with gcc, and AFAIK it is
>> rather easy to make it spit out an AST in the format you want.
>> The LLVM developers are very open to suggestions, and many people have
>> used LLVM in their own projects.
>> Apparently LLVM ships with OCaml bindings by default, so it may not be
>> too hard to use it.
>
> Perhaps it relies on CPP (ie expansion of macros) having been performed in
> advance?  Coccinelle needs to parse the code as it is, not parse it into
> some simplified internal representation, so that it can reconstruct the
> code after transformation.  This includes keeping information about all
> whitespace and comments.

According to:
http://clang.llvm.org/comparison.html#elsa

"Elsa does not have an integrated preprocessor, which makes it
extremely difficult to accurately map from a source location in the
AST back to its original position before preprocessing. Like GCC, it
does not keep track of macro expansions."

which probably implies that clang (as opposed to elsa) has such an
integrated preprocessor. Maybe it makes
it possible to do some refactoring. Maybe they have something similar
to the OriginTok and ExpandedTok in ast_c.ml



>
> julia
> _______________________________________________
> Cocci mailing list
> [email protected]
> http://lists.diku.dk/mailman/listinfo/cocci
> (Web access from inside DIKUs LAN only)
>
_______________________________________________
Cocci mailing list
[email protected]
http://lists.diku.dk/mailman/listinfo/cocci
(Web access from inside DIKUs LAN only)

Reply via email to