[cfe-dev] from source location to token?

steve naroff snaroff at apple.com
Mon Nov 24 06:53:42 PST 2008


Hi Paolo,

I'm not sure what you are trying to do, however here is some info...

- The AST's don't currently store Tokens (they are transient), and we  
have no mechanism for associating an AST with a list/stream of Tokens.
- The NamedDecl AST stores a DeclarationName (which is commonly an  
IdentifierInfo).
- The DeclRefExpr AST stores a NamedDecl.

You can, as you figured out, get a character stream from a  
SourceLocation (and lex/parse again).

It would be interesting to know a little bit more about what you are  
doing. In general, re-lexing/re-parsing isn't very desirable (though  
it may be appropriate if it's uncommon).

HTH,

snaroff

On Nov 24, 2008, at 5:38 AM, Paolo Bolzoni wrote:

> dear cfe list,
> I am implementing an AST visitor, and I seldom need to know the  
> exact token
> that generated the AST vertex.
>
> I can get the source location using the virtual function  
> getSourceRange(),
> the clang::SourceLocation can be used with the SourceManager, but I  
> can't
> find a natural way to get the clang::Token or the IdentifierInfo.
>
> Or I must use const char* clang::SourceManager::getCharacterData()  
> and parse
> again?
>
> Thanks for help.
> pb
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev




More information about the cfe-dev mailing list