<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jul 20, 2012, at 8:48 AM, Douglas Gregor wrote:</div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jul 19, 2012, at 10:00 AM, Alexander Kornienko <<a href="mailto:alexfh@google.com">alexfh@google.com</a>> wrote:</div><blockquote type="cite"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jul 17, 2012 at 7:55 PM, Douglas Gregor <span dir="ltr"><<a href="mailto:dgregor@apple.com" target="_blank">dgregor@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">Okay, that's fair; but this could trivially be added as a parameter to the existing XML dumper. We don't need a whole separate, single-purpose tool for this.<br></div>
<div class="im">...</div><div class="im">
> Overall, a way to dump the AST is critical to writing clang tools,<br>
> especially while you're learning the AST. Being able to dump parts of<br>
> the AST of the source you want to work on makes it far easier to find<br>
> out why the AST looks the way it does at a certain place where your<br>
> refactoring doesn't work than trying to reproduce that with a minimal<br>
> source file that doesn't use any non-builtin includes. Many tool<br>
> writers are not hardcore C++ experts (the ones that are obviously<br>
> don't need the tool that much), and one of the goals for us is to make<br>
> writing C++ tools possible for normal people ;)<br>
<br>
</div>The XML dump isn't really a great way to learn the AST. Our normal dumper is far better for that purpose, IMO, because it's more complete and produces less noise.</blockquote></div><div><br></div><div>Basically, we don't need XML, we only need a format which is closer to an actual AST structure than just a C++ listing. Both XML and normal dumper use the same format for statements, which is nice. The problem with the normal dumper is how it outputs declarations. It basically outputs fragments in C++, which isn't much useful for those trying to figure out how AST looks like for declarations.If we could change its output to that LISP-style format used for statements, it would be much more helpful in our use-case.</div>
<div><br></div><div>Are there reasons for the normal dumper to exist in its current state? </div></div></blockquote><div><br></div><div>I think it's simply laziness.</div><br><blockquote type="cite"><div class="gmail_extra"><div>If there are no serious reasons, I could work on switching it's format. Otherwise we could add another dump format for declarations (consistent with the one used for statements), or replace XML with it.</div>
<div><br></div><div>What do you think about this?</div></div></blockquote><div><br></div><div>I think this is the right way to go. -ast-dump should dump declarations in the same tree format used for statements. -ast-print will still persist for those who want to see pretty-printed ASTs rather than the actual form of the ASTs.</div></div></div></blockquote><div><br></div>If we do this, we can just drop the XML dumper.</div><div><br></div><div>John.</div></body></html>