[cfe-dev] annotation token documentation
    Chris Lattner 
    clattner at apple.com
       
    Mon Jan  5 22:13:17 PST 2009
    
    
  
After my little fun hacking on annotation tokens, I decided to write  
up some documentation so that I'd remember how they work the next time  
around:
http://clang.llvm.org/docs/InternalsManual.html#AnnotationToken
Argiris, I've come around to being a true believer in the approach, I  
think it is very nifty.  I have a couple of concerns about the current  
implementation though: first it looks like the template-id handling  
code is not really complete.  I added some FIXME's to the  
documentation above, I assume that the implementation is just in  
progress.  I'd appreciate it if someone clueful could review the doc.
Second, I think it would be interesting to consider handling the  
"negative" case (when an identifier is not a type) by turning the  
identifier into an annotation token as well, representing the variable  
it resolves to (which could be null if it refers to nothing).  Right  
now, if we see an identifier in the token stream, we don't know if  
that means it is unresolved or whether it means that it is a variable  
and backtracking already analyzed but did not change it.
Argiris, do you think it would make sense to make a new annot_variable  
that contains a (potentially null) pointer to a variable decl?  Even  
without backtracking, this would reduce name lookups in C: right now  
we try to decide if something is a type (which requires a lookup) then  
decide its not, so we handle it as a variable (requiring another  
lookup).  Specifically, things like:
int x = sizeof(x);
first call Sema::isTypeName then call Sema::LookupDecl.  If the parser  
just called a "lookup the decl for this identifier" method, it could  
annotate it once and avoid the second lookup.
-Chris
    
    
More information about the cfe-dev
mailing list