Fixed some problems with the logic of parsing line comments by adding

isAtStartOfComment and using that instead in two places where a loop
to check if the char was in MAI.getCommentString().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82059 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Kevin Enderby 2009-09-16 18:08:00 +00:00
parent 0d6cd00dbe
commit b5db830840
2 changed files with 13 additions and 9 deletions

View File

@ -232,27 +232,30 @@ AsmToken AsmLexer::LexQuote() {
StringRef AsmLexer::LexUntilEndOfStatement() {
TokStart = CurPtr;
while (*CurPtr != ';' && // End of statement marker.
while (!isAtStartOfComment(*CurPtr) && // Start of line comment.
*CurPtr != ';' && // End of statement marker.
*CurPtr != '\n' &&
*CurPtr != '\r' &&
(*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;
}
return StringRef(TokStart, CurPtr-TokStart);
}
bool AsmLexer::isAtStartOfComment(char Char) {
for (const char *p = MAI.getCommentString(); *p != 0; ++p)
if (Char == *p)
return true;
return false;
}
AsmToken AsmLexer::LexToken() {
TokStart = CurPtr;
// This always consumes at least one character.
int CurChar = getNextChar();
for (const char *p = MAI.getCommentString(); *p != 0; ++p)
if (CurChar == *p)
return LexLineComment();
if (isAtStartOfComment(CurChar))
return LexLineComment();
switch (CurChar) {
default:

View File

@ -55,7 +55,8 @@ public:
SMLoc getLoc() const;
StringRef LexUntilEndOfStatement();
bool isAtStartOfComment(char Char);
/// EnterIncludeFile - Enter the specified file. This returns true on failure.
bool EnterIncludeFile(const std::string &Filename);