OSDN Git Service

(yylex, case '0'..'9','.'): For cases '0' and '1', check for single
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Feb 1996 02:13:37 +0000 (02:13 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Feb 1996 02:13:37 +0000 (02:13 +0000)
digit constant before resorting to general number processing.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@11297 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/c-lex.c

index 26f3911..89ff60b 100644 (file)
@@ -1118,7 +1118,23 @@ yylex ()
 
       break;
 
-    case '0':  case '1':  case '2':  case '3':  case '4':
+    case '0':  case '1':
+      {
+       int next_c;
+       /* Check first for common special case:  single-digit 0 or 1.  */
+
+       next_c = getc (finput);
+       ungetc (next_c, finput);        /* Always undo this lookahead.  */
+       if (!isalnum (next_c) && next_c != '.')
+         {
+           token_buffer[0] = (char)c,  token_buffer[1] = '\0';
+           yylval.ttype = (c == '0') ? integer_zero_node : integer_one_node;
+           value = CONSTANT;
+           break;
+         }
+       /*FALLTHRU*/
+      }
+    case '2':  case '3':  case '4':
     case '5':  case '6':  case '7':  case '8':  case '9':
     case '.':
       {