[PATCH] First revision of the dynamic ASTMatcher library

Samuel Benzaquen sbenza at google.com
Fri May 3 12:23:30 PDT 2013



================
Comment at: lib/ASTMatchers/Dynamic/Parser.cpp:97-98
@@ +96,4 @@
+      size_t TokenLength = 0;
+      while (TokenLength < Code.size() && isAlphanumeric(Code[TokenLength]))
+        ++TokenLength;
+      Result.Kind = TokenInfo::TK_IDENT;
----------------
Dmitri Gribenko wrote:
> What if this loop executes 0 times?  This should be an error.
Fixed. Added an 'invalid' token kind.

================
Comment at: lib/ASTMatchers/Dynamic/Parser.cpp:242
@@ +241,3 @@
+/// parse function.
+bool parseToken(const TokenInfo &Token, CodeTokenizer *Tokenizer,
+                Parser::TokenProcessor *Processor, VariantValue *Value,
----------------
Dmitri Gribenko wrote:
> Samuel Benzaquen wrote:
> > Dmitri Gribenko wrote:
> > > Why doesn't lexer do this?  Every token could have an associated value (optional, of course).
> > It could do the rest of the parsing, except for the matchers. I would have to pass more state to it, though.
> It would be best to associate values with single-token literals in the lexer.  Recursive-descent parsing will be simplified because you will need to parse only high-level constructs in the parser.
Done. Literals are handled by the lexer, and changed TK_STRING to TK_LITERAL that will include other literals too.


http://llvm-reviews.chandlerc.com/D714

BRANCH
  svn

ARCANIST PROJECT
  clang



More information about the cfe-commits mailing list