]> granicus.if.org Git - clang/commitdiff
simplify the lexer a bit, pulling stuff out of the default case.
authorChris Lattner <sabre@nondot.org>
Thu, 3 Jan 2008 17:58:54 +0000 (17:58 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 3 Jan 2008 17:58:54 +0000 (17:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45540 91177308-0d34-0410-b5e6-96231b3b80d8

Lex/Lexer.cpp

index 7e08acf67307a84e4c76f977dc7b4828bc76bcbd..3439356b560a5a086cc42cea5bbbbf875efe02de 100644 (file)
@@ -1275,7 +1275,15 @@ LexNextToken:
     }
     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 @@ LexNextToken:
     // 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 @@ LexNextToken:
     }
     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;
   }