On Nov 28, 2010, at 9:24 AM, Carl-Daniel Hailfinger wrote: > Hi, > > I added the llvm cfe-dev mailing list to CC so you can get answers > directly from the source. > The quoted mail is archived at > http://lists.diku.dk/pipermail/cocci/2010-November/001348.html and you > can go forward/backward in the archive if you want to see more context.
I don't know much about Coccinelle, but Clang certainly does track accurate source locations, including the original and ultimate location of macro expansions: http://clang.llvm.org/docs/InternalsManual.html#SourceLocation Clang was built with the intention of supporting refactoring in the future, and we have a suite of source code rewriting applications already in tree. -Chris > > On 27.11.2010 22:49, Julia Lawall wrote: >> On Sat, 27 Nov 2010, Carl-Daniel Hailfinger wrote: >> >>> On 27.11.2010 17:46, Julia Lawall wrote: >>> >>>> On Sat, 27 Nov 2010, Jani Monoses wrote >>>> >>>>> On 11/27/2010 02:44 PM, Julia Lawall wrote: >>>>> >>>>> >>>>>> I think it is possible, and indeed a C++ parser has been written that is >>>>>> compatible with Coccinelle. Doing the simple case as you suggest is even >>>>>> probably not too hard. But at the moment we do not have the resources to >>>>>> look into it. >>>>>> >>>>>> >>>>> thanks for the prompt reply. >>>>> Is the C++ parser code available along with some documentation on how it >>>>> can >>>>> be used with Coccinelle? >>>>> >>>>> >>>> There is no documentation. Furthermore, it is only a parser, it does not >>>> construct an abstract syntax tree, so compatible with Coccinelle may not >>>> mean much more than it is written in ocaml. I think it is available, but >>>> I am not sure where. Perhaps Nicolas or Yoann can answer. >>>> >>>> >>> 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. >> > > > Regards, > Carl-Daniel > _______________________________________________ > cfe-dev mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev _______________________________________________ Cocci mailing list [email protected] http://lists.diku.dk/mailman/listinfo/cocci (Web access from inside DIKUs LAN only)
