[cfe-dev] Bug 11806

Grzegorz Jablonski grzejabl at gmail.com
Sun Oct 7 14:47:47 PDT 2012


On 10/07/2012 11:37 PM, Richard Smith wrote:
> On Sun, Oct 7, 2012 at 2:17 PM, Grzegorz Jablonski <grzejabl at gmail.com 
> <mailto:grzejabl at gmail.com>> wrote:
>
>     Hi,
>
>     there is a bug http://llvm.org/bugs/show_bug.cgi?id=11806 about
>     -ast-print not being production quality. I am using clang to
>     rewrite C++ source. Is anyone else using clang in that way? Some
>     comments on the bug pages suggest, that nobody is using this feature.
>
>
> Yes, various people use Clang to rewrite C++ source, but mainly not by 
> pretty-printing. Instead, targeted rewrites are performed on the 
> original source file in each place that needs to be changed (see the 
> Rewriter class). This has the advantage of preserving source 
> formatting, comments, macros, header inclusions, etc. Generally 
> speaking, pretty-printing isn't a good way to perform rewrites if you 
> want to produce code for a person to maintain, because it loses all 
> this information. Also, since the AST is intended to be essentially 
> immutable, if you want to perform rewrites you are likely to find it 
> easier to perform them textually rather than writing a pass to build a 
> rewritten AST.
>
>
My work is based on the Scout project:

https://fusionforge.zih.tu-dresden.de/scm/viewvc.php?root=hicfd&view=rev

They have provided quite extensive AST rewrite facilities, including 
cloning of the subtrees, and their approach seems quite elegant to me. 
They use a hybrid approach - they use pretty printing on the modified 
functions, the rest is copied from the original. It is a pity, that it 
is not possible to clone all kinds of AST nodes.

-- 
Grzegorz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20121007/f070ad56/attachment.html>


More information about the cfe-dev mailing list