[llvm-commits] [llvm] r81046 - in /llvm/trunk: include/llvm/MC/MCAsmLexer.h tools/llvm-mc/AsmLexer.cpp tools/llvm-mc/AsmLexer.h tools/llvm-mc/AsmParser.h tools/llvm-mc/llvm-mc.cpp

Daniel Dunbar daniel at zuster.org
Wed Sep 16 00:36:24 PDT 2009


Hi Kevin,

On Fri, Sep 4, 2009 at 2:45 PM, Kevin Enderby <enderby at apple.com> wrote:
> Author: enderby
> Date: Fri Sep  4 16:45:34 2009
> New Revision: 81046
>
> URL: http://llvm.org/viewvc/llvm-project?rev=81046&view=rev
> Log:
> Added the AsmToken::Hash enum constant to MCAsmLexer.h in preparation of
> supporting other targets.  Changed the code to pass MCAsmInfo to the parser
> and the lexer.  Then changed the lexer to use CommentString from MCAsmInfo
> instead of a literal '#' character.

>
> -  while (*CurPtr != '#' &&  // Start of line comment.
> -         *CurPtr != ';' &&  // End of statement marker.
> +  while (*CurPtr != ';' &&  // End of statement marker.
>          *CurPtr != '\n' &&
>          *CurPtr != '\r' &&
> -         (*CurPtr != 0 || CurPtr != CurBuf->getBufferEnd()))
> +         (*CurPtr != 0 || CurPtr != CurBuf->getBufferEnd())) {
> +    // check for start of line comment.
> +    for (const char *p = MAI.getCommentString(); *p != 0; ++p)
> +      if (*CurPtr == *p)
> +        break;
>     ++CurPtr;
> +  }

I don't think this does the right thing, this will never break out of
the enclosing while loop based on the comment string?

> @@ -244,6 +250,10 @@
>   // This always consumes at least one character.
>   int CurChar = getNextChar();
>
> +  for (const char *p = MAI.getCommentString(); *p != 0; ++p)
> +    if (CurChar == *p)
> +      return LexLineComment();

Similarly this I think only works for single character comment
strings? It may make sense to have a lexer "isAtStartOfComment"
method, which both of these two places call.

 - Daniel




More information about the llvm-commits mailing list