<div class="gmail_quote">On Sun, Nov 6, 2011 at 8:35 AM, Abramo Bagnara <span dir="ltr"><<a href="mailto:abramo.bagnara@gmail.com">abramo.bagnara@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div id=":47q">b) NamedDecl* from string "ns::v" (or NULL if this is not parsable)<br>
<br>
What's the Right(TM) way to do that using clang library?</div></blockquote></div><br><div>At least for this last case, there is a DeclContext for the translation unit, and all DeclContext's have a 'lookup' method. For the more complex cases, I would look at how Sema and other parts of Clang use the lookup method and their surrounding code.</div>
<div><br></div><div>However, I suspect the real challenge here is parsing "ns::v". That isn't a single name lookup, that as two, with the parser for nested-name-specifiers building on the first to issue the second. Doing each name lookup will be easy, but the rules for parsing a NNS are moderately complex. How far do you want to go? ;]</div>
<div><br></div><div>I do think it would be very handy to have a well defined set of routines to build a Clang parser for you that assumes a particular parse context (relative to an AST), and parses a string of text into a new AST-fragment. Tools like LLDB clearly need this so some form of it may already exist. Getting it into Clang's Parser library would be very useful I think.</div>