[cfe-dev] Source-to-source translation using LibTooling

Manuel Klimek klimek at google.com
Thu Jan 10 01:03:40 PST 2013


On Thu, Jan 10, 2013 at 8:44 AM, Antoine Trouve <trouve at isit.or.jp> wrote:

> Hello everybody,
>
> I have successfully written a source-to-source translator using
> LibTooling, and I am now willing to go further and do some source-to-source
> translation.
> However, I can't figure out how to output modified code with LibTooling.
>
> I have used in the past the class "Rewriter", coupled with a
> "RewriterBuffer" to do this job, but without the LibTooling (I was
> manipulating "CompilerInstance" object directly).
> However, a "RewriterBuffer" requires a file ID (that I used to get from a
> "SourceManager") to be created, and I don't have access to such information
> anymore, because I'm calling my tool using "Tool.run" from a custom
> "FrontEndAction".
>
> I've spotted the example called "loop-convert" in the clang-tools-extra
> repository, that is using class derived from "RefactoringTool" to do
> source-to-source transformation. I kind of made sense of this code, but the
> way it works would require me to change my code deeply in order to fill the
> so-called replacement list.
>

> Does someone has any experience on this matter in order to give some
> advices on the best approach I should adopt ?
>

I'm not 100% sure what you're looking for - as you said, the
RefactoringTool is what's meant to be used to write out changed code - I'm
open to changes to that interface if it helps your use case, but I don't
know your code, so it's hard for me to tell exactly why that would be a
deep change, or how to fit it into your project.

My intuition would be that at the point at which you would make changes vie
the Rewriter, you would instead fill the Replacements...

Cheers,
/Manuel


>
> Best regards,
>
> - Antoine
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20130110/7040924a/attachment.html>


More information about the cfe-dev mailing list