[cfe-commits] r45540 - /cfe/trunk/Lex/Lexer.cpp
Chris Lattner
sabre at nondot.org
Thu Jan 3 09:58:54 PST 2008
Author: lattner
Date: Thu Jan 3 11:58:54 2008
New Revision: 45540
URL: http://llvm.org/viewvc/llvm-project?rev=45540&view=rev
Log:
simplify the lexer a bit, pulling stuff out of the default case.
Modified:
cfe/trunk/Lex/Lexer.cpp
Modified: cfe/trunk/Lex/Lexer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Lex/Lexer.cpp?rev=45540&r1=45539&r2=45540&view=diff
==============================================================================
--- cfe/trunk/Lex/Lexer.cpp (original)
+++ cfe/trunk/Lex/Lexer.cpp Thu Jan 3 11:58:54 2008
@@ -1275,7 +1275,15 @@
}
goto LexNextToken; // GCC isn't tail call eliminating.
- case 'L':
+ // C99 6.4.4.1: Integer Constants.
+ // C99 6.4.4.2: Floating Constants.
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ // Notify MIOpt that we read a non-whitespace/non-comment token.
+ MIOpt.ReadToken();
+ return LexNumericConstant(Result, CurPtr);
+
+ case 'L': // Identifier (Loony) or wide literal (L'x' or L"xyz").
// Notify MIOpt that we read a non-whitespace/non-comment token.
MIOpt.ReadToken();
Char = getCharAndSize(CurPtr, SizeTmp);
@@ -1303,14 +1311,17 @@
// Notify MIOpt that we read a non-whitespace/non-comment token.
MIOpt.ReadToken();
return LexIdentifier(Result, CurPtr);
+
+ case '$': // $ in identifiers.
+ if (Features.DollarIdents) {
+ Diag(CurPtr-1, diag::ext_dollar_in_identifier);
+ // Notify MIOpt that we read a non-whitespace/non-comment token.
+ MIOpt.ReadToken();
+ return LexIdentifier(Result, CurPtr);
+ }
- // C99 6.4.4.1: Integer Constants.
- // C99 6.4.4.2: Floating Constants.
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- // Notify MIOpt that we read a non-whitespace/non-comment token.
- MIOpt.ReadToken();
- return LexNumericConstant(Result, CurPtr);
+ Result.setKind(tok::unknown);
+ break;
// C99 6.4.4: Character Constants.
case '\'':
@@ -1626,21 +1637,18 @@
}
break;
+ case '@':
+ // Objective C support.
+ if (CurPtr[-1] == '@' && Features.ObjC1)
+ Result.setKind(tok::at);
+ else
+ Result.setKind(tok::unknown);
+ break;
+
case '\\':
// FIXME: UCN's.
// FALL THROUGH.
default:
- // Objective C support.
- if (CurPtr[-1] == '@' && Features.ObjC1) {
- Result.setKind(tok::at);
- break;
- } else if (CurPtr[-1] == '$' && Features.DollarIdents) {// $ in identifiers.
- Diag(CurPtr-1, diag::ext_dollar_in_identifier);
- // Notify MIOpt that we read a non-whitespace/non-comment token.
- MIOpt.ReadToken();
- return LexIdentifier(Result, CurPtr);
- }
-
Result.setKind(tok::unknown);
break;
}
More information about the cfe-commits
mailing list