[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