[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