]> granicus.if.org Git - php/commitdiff
Better generated parser
authorIlia Alshanetsky <iliaa@php.net>
Fri, 2 Feb 2007 00:03:33 +0000 (00:03 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Fri, 2 Feb 2007 00:03:33 +0000 (00:03 +0000)
ext/pdo/pdo_sql_parser.c

index 00f0fea0c3d7fe4f44d0f4c01292443cd55e803a..c2b508cd9748bdf4a91beb678cb722bc787b378b 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.11.0 on Wed Jan 31 18:53:45 2007 */
+/* Generated by re2c 0.11.0 on Thu Feb  1 19:01:11 2007 */
 #line 1 "ext/pdo/pdo_sql_parser.re"
 /*
   +----------------------------------------------------------------------+
@@ -49,248 +49,142 @@ static int scan(Scanner *s)
        #line 54 "ext/pdo/pdo_sql_parser.re"
 
 
-       
-#line 54 "ext/pdo/pdo_sql_parser.c"
-{
-       YYCTYPE yych;
-
-       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case 0x00:      goto yy11;
-       case '"':       goto yy2;
-       case '\'':      goto yy4;
-       case ':':       goto yy5;
-       case '?':       goto yy6;
-       default:        goto yy8;
-       }
+       {
+       static unsigned char yybm[] = {
+               192, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200,  64, 200, 200, 200, 200, 128, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               232, 232, 232, 232, 232, 232, 232, 232, 
+               232, 232, 208, 200, 200, 200, 200, 208, 
+               200, 232, 232, 232, 232, 232, 232, 232, 
+               232, 232, 232, 232, 232, 232, 232, 232, 
+               232, 232, 232, 232, 232, 232, 232, 232, 
+               232, 232, 232, 200, 200, 200, 200, 232, 
+               200, 232, 232, 232, 232, 232, 232, 232, 
+               232, 232, 232, 232, 232, 232, 232, 232, 
+               232, 232, 232, 232, 232, 232, 232, 232, 
+               232, 232, 232, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+               200, 200, 200, 200, 200, 200, 200, 200, 
+       };
+
+#line 89 "ext/pdo/pdo_sql_parser.c"
+       {
+               YYCTYPE yych;
+
+               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+               yych = *YYCURSOR;
+               if(yybm[0+yych] & 8) {
+                       goto yy8;
+               }
+               if(yych <= 0x00) goto yy11;
+               if(yych <= '&') goto yy2;
+               if(yych <= '\'') goto yy4;
+               if(yych <= '>') goto yy5;
+               goto yy6;
 yy2:
-       yych = *++YYCURSOR;
-       goto yy24;
+               yych = *++YYCURSOR;
+               goto yy24;
 yy3:
 #line 62 "ext/pdo/pdo_sql_parser.re"
-       { RET(PDO_PARSER_TEXT); }
-#line 74 "ext/pdo/pdo_sql_parser.c"
+               { RET(PDO_PARSER_TEXT); }
+#line 109 "ext/pdo/pdo_sql_parser.c"
 yy4:
-       yych = *++YYCURSOR;
-       goto yy20;
+               yych = *++YYCURSOR;
+               goto yy20;
 yy5:
-       yych = *++YYCURSOR;
-       switch(yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':
-       case 'A':
-       case 'B':
-       case 'C':
-       case 'D':
-       case 'E':
-       case 'F':
-       case 'G':
-       case 'H':
-       case 'I':
-       case 'J':
-       case 'K':
-       case 'L':
-       case 'M':
-       case 'N':
-       case 'O':
-       case 'P':
-       case 'Q':
-       case 'R':
-       case 'S':
-       case 'T':
-       case 'U':
-       case 'V':
-       case 'W':
-       case 'X':
-       case 'Y':
-       case 'Z':
-       case '_':
-       case 'a':
-       case 'b':
-       case 'c':
-       case 'd':
-       case 'e':
-       case 'f':
-       case 'g':
-       case 'h':
-       case 'i':
-       case 'j':
-       case 'k':
-       case 'l':
-       case 'm':
-       case 'n':
-       case 'o':
-       case 'p':
-       case 'q':
-       case 'r':
-       case 's':
-       case 't':
-       case 'u':
-       case 'v':
-       case 'w':
-       case 'x':
-       case 'y':
-       case 'z':       goto yy16;
-       case ':':
-       case '?':       goto yy13;
-       default:        goto yy3;
-       }
+               yych = *++YYCURSOR;
+               if(yybm[0+yych] & 32) {
+                       goto yy16;
+               }
+               if(yych == ':') goto yy13;
+               if(yych == '?') goto yy13;
+               goto yy3;
 yy6:
-       ++YYCURSOR;
-       switch((yych = *YYCURSOR)) {
-       case ':':
-       case '?':       goto yy13;
-       default:        goto yy7;
-       }
-yy7:
+               ++YYCURSOR;
+               if(yybm[0+(yych = *YYCURSOR)] & 16) {
+                       goto yy13;
+               }
 #line 61 "ext/pdo/pdo_sql_parser.re"
-       { RET(PDO_PARSER_BIND_POS); }
-#line 158 "ext/pdo/pdo_sql_parser.c"
+               { RET(PDO_PARSER_BIND_POS); }
+#line 128 "ext/pdo/pdo_sql_parser.c"
 yy8:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case 0x00:
-       case '"':
-       case '\'':
-       case ':':
-       case '?':       goto yy10;
-       default:        goto yy8;
-       }
-yy10:
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
+               if(yybm[0+yych] & 8) {
+                       goto yy8;
+               }
 #line 63 "ext/pdo/pdo_sql_parser.re"
-       { RET(PDO_PARSER_TEXT); }
-#line 174 "ext/pdo/pdo_sql_parser.c"
+               { RET(PDO_PARSER_TEXT); }
+#line 138 "ext/pdo/pdo_sql_parser.c"
 yy11:
-       ++YYCURSOR;
+               ++YYCURSOR;
 #line 64 "ext/pdo/pdo_sql_parser.re"
-       { RET(PDO_PARSER_EOI); }
-#line 179 "ext/pdo/pdo_sql_parser.c"
+               { RET(PDO_PARSER_EOI); }
+#line 143 "ext/pdo/pdo_sql_parser.c"
 yy13:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case ':':
-       case '?':       goto yy13;
-       default:        goto yy15;
-       }
-yy15:
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
+               if(yybm[0+yych] & 16) {
+                       goto yy13;
+               }
 #line 59 "ext/pdo/pdo_sql_parser.re"
-       { RET(PDO_PARSER_TEXT); }
-#line 192 "ext/pdo/pdo_sql_parser.c"
+               { RET(PDO_PARSER_TEXT); }
+#line 153 "ext/pdo/pdo_sql_parser.c"
 yy16:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':
-       case 'A':
-       case 'B':
-       case 'C':
-       case 'D':
-       case 'E':
-       case 'F':
-       case 'G':
-       case 'H':
-       case 'I':
-       case 'J':
-       case 'K':
-       case 'L':
-       case 'M':
-       case 'N':
-       case 'O':
-       case 'P':
-       case 'Q':
-       case 'R':
-       case 'S':
-       case 'T':
-       case 'U':
-       case 'V':
-       case 'W':
-       case 'X':
-       case 'Y':
-       case 'Z':
-       case '_':
-       case 'a':
-       case 'b':
-       case 'c':
-       case 'd':
-       case 'e':
-       case 'f':
-       case 'g':
-       case 'h':
-       case 'i':
-       case 'j':
-       case 'k':
-       case 'l':
-       case 'm':
-       case 'n':
-       case 'o':
-       case 'p':
-       case 'q':
-       case 'r':
-       case 's':
-       case 't':
-       case 'u':
-       case 'v':
-       case 'w':
-       case 'x':
-       case 'y':
-       case 'z':       goto yy16;
-       default:        goto yy18;
-       }
-yy18:
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
+               if(yybm[0+yych] & 32) {
+                       goto yy16;
+               }
 #line 60 "ext/pdo/pdo_sql_parser.re"
-       { RET(PDO_PARSER_BIND); }
-#line 266 "ext/pdo/pdo_sql_parser.c"
+               { RET(PDO_PARSER_BIND); }
+#line 163 "ext/pdo/pdo_sql_parser.c"
 yy19:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
 yy20:
-       switch(yych) {
-       case '\'':      goto yy21;
-       default:        goto yy19;
-       }
-yy21:
-       ++YYCURSOR;
+               if(yybm[0+yych] & 64) {
+                       goto yy19;
+               }
+               ++YYCURSOR;
 #line 58 "ext/pdo/pdo_sql_parser.re"
-       { RET(PDO_PARSER_TEXT); }
-#line 280 "ext/pdo/pdo_sql_parser.c"
+               { RET(PDO_PARSER_TEXT); }
+#line 175 "ext/pdo/pdo_sql_parser.c"
 yy23:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
 yy24:
-       switch(yych) {
-       case '"':       goto yy25;
-       default:        goto yy23;
-       }
-yy25:
-       ++YYCURSOR;
+               if(yybm[0+yych] & 128) {
+                       goto yy23;
+               }
+               ++YYCURSOR;
 #line 57 "ext/pdo/pdo_sql_parser.re"
-       { RET(PDO_PARSER_TEXT); }
-#line 294 "ext/pdo/pdo_sql_parser.c"
+               { RET(PDO_PARSER_TEXT); }
+#line 187 "ext/pdo/pdo_sql_parser.c"
+       }
 }
 #line 65 "ext/pdo/pdo_sql_parser.re"