]> granicus.if.org Git - php/commitdiff
- Generated with a bit more recent re2c version
authorJani Taskinen <jani@php.net>
Wed, 10 Oct 2007 09:27:13 +0000 (09:27 +0000)
committerJani Taskinen <jani@php.net>
Wed, 10 Oct 2007 09:27:13 +0000 (09:27 +0000)
ext/standard/url_scanner_ex.c

index 74bf82b875c56e8a52611a577ec2b3dd6695b63a..4244d9f5af96a96a74090638781c839129449c0d 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.11.0 on Tue Oct  9 20:28:45 2007 */
+/* Generated by re2c 0.12.1 on Wed Oct 10 12:26:17 2007 */
 #line 1 "ext/standard/url_scanner_ex.re"
 /*
   +----------------------------------------------------------------------+
@@ -109,48 +109,78 @@ static inline void append_modified_url(smart_str *url, smart_str *dest, smart_st
        q = (p = url->c) + url->len;
 
 scan:
-
-#line 114 "ext/standard/url_scanner_ex.c"
 {
-       YYCTYPE yych;
-
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case '#':       goto yy6;
-       case ':':       goto yy2;
-       case '?':       goto yy4;
-       default:        goto yy8;
-       }
-yy2:
-       ++YYCURSOR;
+       static const unsigned char yybm[] = {
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128,   0, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128,   0, 128, 128, 128, 128,   0, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+       };
+
+#line 149 "ext/standard/url_scanner_ex.c"
+       {
+               YYCTYPE yych;
+
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
+               if(yybm[0+yych] & 128) {
+                       goto yy8;
+               }
+               if(yych <= '9') goto yy6;
+               if(yych >= ';') goto yy4;
+               ++YYCURSOR;
 #line 116 "ext/standard/url_scanner_ex.re"
-       { smart_str_append(dest, url); return; }
-#line 130 "ext/standard/url_scanner_ex.c"
+               { smart_str_append(dest, url); return; }
+#line 163 "ext/standard/url_scanner_ex.c"
 yy4:
-       ++YYCURSOR;
+               ++YYCURSOR;
 #line 117 "ext/standard/url_scanner_ex.re"
-       { sep = separator; goto scan; }
-#line 135 "ext/standard/url_scanner_ex.c"
+               { sep = separator; goto scan; }
+#line 168 "ext/standard/url_scanner_ex.c"
 yy6:
-       ++YYCURSOR;
+               ++YYCURSOR;
 #line 118 "ext/standard/url_scanner_ex.re"
-       { bash = p - 1; goto done; }
-#line 140 "ext/standard/url_scanner_ex.c"
+               { bash = p - 1; goto done; }
+#line 173 "ext/standard/url_scanner_ex.c"
 yy8:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case '#':
-       case ':':
-       case '?':       goto yy10;
-       default:        goto yy8;
-       }
-yy10:
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
+               if(yybm[0+yych] & 128) {
+                       goto yy8;
+               }
 #line 119 "ext/standard/url_scanner_ex.re"
-       { goto scan; }
-#line 154 "ext/standard/url_scanner_ex.c"
+               { goto scan; }
+#line 183 "ext/standard/url_scanner_ex.c"
+       }
 }
 #line 120 "ext/standard/url_scanner_ex.re"
 
@@ -331,174 +361,141 @@ state_plain_begin:
        
 state_plain:
        start = YYCURSOR;
-
-#line 336 "ext/standard/url_scanner_ex.c"
 {
-       YYCTYPE yych;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case '<':       goto yy13;
-       default:        goto yy15;
-       }
-yy13:
-       ++YYCURSOR;
+       static const unsigned char yybm[] = {
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128,   0, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+       };
+
+#line 401 "ext/standard/url_scanner_ex.c"
+       {
+               YYCTYPE yych;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
+               if(yybm[0+yych] & 128) {
+                       goto yy15;
+               }
+               ++YYCURSOR;
 #line 299 "ext/standard/url_scanner_ex.re"
-       { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; }
-#line 349 "ext/standard/url_scanner_ex.c"
+               { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; }
+#line 412 "ext/standard/url_scanner_ex.c"
 yy15:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case '<':       goto yy17;
-       default:        goto yy15;
-       }
-yy17:
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
+               if(yybm[0+yych] & 128) {
+                       goto yy15;
+               }
 #line 300 "ext/standard/url_scanner_ex.re"
-       { passthru(STD_ARGS); goto state_plain; }
-#line 361 "ext/standard/url_scanner_ex.c"
+               { passthru(STD_ARGS); goto state_plain; }
+#line 422 "ext/standard/url_scanner_ex.c"
+       }
 }
 #line 301 "ext/standard/url_scanner_ex.re"
 
 
 state_tag:     
        start = YYCURSOR;
-
-#line 369 "ext/standard/url_scanner_ex.c"
 {
-       YYCTYPE yych;
-       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
-       switch(yych) {
-       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':
-       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 yy20;
-       default:        goto yy22;
-       }
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0, 128,   0,   0,   0,   0,   0, 
+                 0, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128,   0,   0,   0,   0,   0, 
+                 0, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+
+#line 466 "ext/standard/url_scanner_ex.c"
+       {
+               YYCTYPE yych;
+               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+               yych = *YYCURSOR;
+               if(yych <= '@') {
+                       if(yych != ':') goto yy22;
+               } else {
+                       if(yych <= 'Z') goto yy20;
+                       if(yych <= '`') goto yy22;
+                       if(yych >= '{') goto yy22;
+               }
 yy20:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       goto yy25;
+               ++YYCURSOR;
+               yych = *YYCURSOR;
+               goto yy25;
 yy21:
 #line 306 "ext/standard/url_scanner_ex.re"
-       { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; }
-#line 437 "ext/standard/url_scanner_ex.c"
+               { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; }
+#line 485 "ext/standard/url_scanner_ex.c"
 yy22:
-       ++YYCURSOR;
+               ++YYCURSOR;
 #line 307 "ext/standard/url_scanner_ex.re"
-       { passthru(STD_ARGS); goto state_plain_begin; }
-#line 442 "ext/standard/url_scanner_ex.c"
+               { passthru(STD_ARGS); goto state_plain_begin; }
+#line 490 "ext/standard/url_scanner_ex.c"
 yy24:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
 yy25:
-       switch(yych) {
-       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':
-       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 yy24;
-       default:        goto yy21;
+               if(yybm[0+yych] & 128) {
+                       goto yy24;
+               }
+               goto yy21;
        }
 }
 #line 308 "ext/standard/url_scanner_ex.re"
@@ -509,108 +506,98 @@ state_next_arg_begin:
        
 state_next_arg:
        start = YYCURSOR;
-
-#line 514 "ext/standard/url_scanner_ex.c"
 {
-       YYCTYPE yych;
-       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case 0x09:
-       case 0x0A:
-       case 0x0B:
-       case 0x0D:
-       case ' ':       goto yy30;
-       case '>':       goto yy28;
-       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 '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 yy32;
-       default:        goto yy34;
-       }
-yy28:
-       ++YYCURSOR;
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0, 128, 128, 128,   0, 128,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+               128,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+
+#line 546 "ext/standard/url_scanner_ex.c"
+       {
+               YYCTYPE yych;
+               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+               yych = *YYCURSOR;
+               if(yych <= ' ') {
+                       if(yych <= 0x0C) {
+                               if(yych <= 0x08) goto yy34;
+                               if(yych <= 0x0B) goto yy30;
+                               goto yy34;
+                       } else {
+                               if(yych <= 0x0D) goto yy30;
+                               if(yych <= 0x1F) goto yy34;
+                               goto yy30;
+                       }
+               } else {
+                       if(yych <= '@') {
+                               if(yych != '>') goto yy34;
+                       } else {
+                               if(yych <= 'Z') goto yy32;
+                               if(yych <= '`') goto yy34;
+                               if(yych <= 'z') goto yy32;
+                               goto yy34;
+                       }
+               }
+               ++YYCURSOR;
 #line 316 "ext/standard/url_scanner_ex.re"
-       { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; }
-#line 584 "ext/standard/url_scanner_ex.c"
+               { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; }
+#line 574 "ext/standard/url_scanner_ex.c"
 yy30:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       goto yy37;
+               ++YYCURSOR;
+               yych = *YYCURSOR;
+               goto yy37;
 yy31:
 #line 317 "ext/standard/url_scanner_ex.re"
-       { passthru(STD_ARGS); goto state_next_arg; }
-#line 592 "ext/standard/url_scanner_ex.c"
+               { passthru(STD_ARGS); goto state_next_arg; }
+#line 582 "ext/standard/url_scanner_ex.c"
 yy32:
-       ++YYCURSOR;
+               ++YYCURSOR;
 #line 318 "ext/standard/url_scanner_ex.re"
-       { --YYCURSOR; STATE = STATE_ARG; goto state_arg; }
-#line 597 "ext/standard/url_scanner_ex.c"
+               { --YYCURSOR; STATE = STATE_ARG; goto state_arg; }
+#line 587 "ext/standard/url_scanner_ex.c"
 yy34:
-       ++YYCURSOR;
+               ++YYCURSOR;
 #line 319 "ext/standard/url_scanner_ex.re"
-       { passthru(STD_ARGS); goto state_plain_begin; }
-#line 602 "ext/standard/url_scanner_ex.c"
+               { passthru(STD_ARGS); goto state_plain_begin; }
+#line 592 "ext/standard/url_scanner_ex.c"
 yy36:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
 yy37:
-       switch(yych) {
-       case 0x09:
-       case 0x0A:
-       case 0x0B:
-       case 0x0D:
-       case ' ':       goto yy36;
-       default:        goto yy31;
+               if(yybm[0+yych] & 128) {
+                       goto yy36;
+               }
+               goto yy31;
        }
 }
 #line 320 "ext/standard/url_scanner_ex.re"
@@ -618,140 +605,73 @@ yy37:
 
 state_arg:
        start = YYCURSOR;
-
-#line 623 "ext/standard/url_scanner_ex.c"
 {
-       YYCTYPE yych;
-       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
-       switch(yych) {
-       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 '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 yy40;
-       default:        goto yy42;
-       }
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0, 128,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128,   0,   0,   0,   0,   0, 
+                 0, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128, 128, 128, 128, 128, 128, 
+               128, 128, 128,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+
+#line 645 "ext/standard/url_scanner_ex.c"
+       {
+               YYCTYPE yych;
+               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+               yych = *YYCURSOR;
+               if(yych <= '@') goto yy42;
+               if(yych <= 'Z') goto yy40;
+               if(yych <= '`') goto yy42;
+               if(yych >= '{') goto yy42;
 yy40:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       goto yy45;
+               ++YYCURSOR;
+               yych = *YYCURSOR;
+               goto yy45;
 yy41:
 #line 325 "ext/standard/url_scanner_ex.re"
-       { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; }
-#line 690 "ext/standard/url_scanner_ex.c"
+               { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; }
+#line 661 "ext/standard/url_scanner_ex.c"
 yy42:
-       ++YYCURSOR;
+               ++YYCURSOR;
 #line 326 "ext/standard/url_scanner_ex.re"
-       { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; }
-#line 695 "ext/standard/url_scanner_ex.c"
+               { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; }
+#line 666 "ext/standard/url_scanner_ex.c"
 yy44:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
 yy45:
-       switch(yych) {
-       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':
-       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 yy44;
-       default:        goto yy41;
+               if(yybm[0+yych] & 128) {
+                       goto yy44;
+               }
+               goto yy41;
        }
 }
 #line 327 "ext/standard/url_scanner_ex.re"
@@ -759,60 +679,87 @@ yy45:
 
 state_before_val:
        start = YYCURSOR;
-
-#line 764 "ext/standard/url_scanner_ex.c"
 {
-       YYCTYPE yych;
-       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case ' ':       goto yy48;
-       case '=':       goto yy50;
-       default:        goto yy52;
-       }
+       static const unsigned char yybm[] = {
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+               128,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+                 0,   0,   0,   0,   0,   0,   0,   0, 
+       };
+
+#line 719 "ext/standard/url_scanner_ex.c"
+       {
+               YYCTYPE yych;
+               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+               yych = *YYCURSOR;
+               if(yych == ' ') goto yy48;
+               if(yych == '=') goto yy50;
+               goto yy52;
 yy48:
-       yych = *(YYMARKER = ++YYCURSOR);
-       switch(yych) {
-       case ' ':       goto yy55;
-       case '=':       goto yy53;
-       default:        goto yy49;
-       }
+               yych = *(YYMARKER = ++YYCURSOR);
+               if(yych == ' ') goto yy55;
+               if(yych == '=') goto yy53;
 yy49:
 #line 333 "ext/standard/url_scanner_ex.re"
-       { --YYCURSOR; goto state_next_arg_begin; }
-#line 784 "ext/standard/url_scanner_ex.c"
+               { --YYCURSOR; goto state_next_arg_begin; }
+#line 734 "ext/standard/url_scanner_ex.c"
 yy50:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       goto yy54;
+               ++YYCURSOR;
+               yych = *YYCURSOR;
+               goto yy54;
 yy51:
 #line 332 "ext/standard/url_scanner_ex.re"
-       { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; }
-#line 792 "ext/standard/url_scanner_ex.c"
+               { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; }
+#line 742 "ext/standard/url_scanner_ex.c"
 yy52:
-       yych = *++YYCURSOR;
-       goto yy49;
+               yych = *++YYCURSOR;
+               goto yy49;
 yy53:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
 yy54:
-       switch(yych) {
-       case ' ':       goto yy53;
-       default:        goto yy51;
-       }
+               if(yybm[0+yych] & 128) {
+                       goto yy53;
+               }
+               goto yy51;
 yy55:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case ' ':       goto yy55;
-       case '=':       goto yy53;
-       default:        goto yy57;
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
+               if(yych == ' ') goto yy55;
+               if(yych == '=') goto yy53;
+               YYCURSOR = YYMARKER;
+               goto yy49;
        }
-yy57:
-       YYCURSOR = YYMARKER;
-       goto yy49;
 }
 #line 334 "ext/standard/url_scanner_ex.re"
 
@@ -820,137 +767,154 @@ yy57:
 
 state_val:
        start = YYCURSOR;
-
-#line 825 "ext/standard/url_scanner_ex.c"
 {
-       YYCTYPE yych;
-       if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case 0x09:
-       case 0x0A:
-       case 0x0D:
-       case ' ':
-       case '>':       goto yy64;
-       case '"':       goto yy60;
-       case '\'':      goto yy62;
-       default:        goto yy63;
-       }
-yy60:
-       yych = *(YYMARKER = ++YYCURSOR);
-       goto yy77;
+       static const unsigned char yybm[] = {
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 160, 160, 248, 248, 160, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               160, 248,  56, 248, 248, 248, 248, 200, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248,   0, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+               248, 248, 248, 248, 248, 248, 248, 248, 
+       };
+
+#line 807 "ext/standard/url_scanner_ex.c"
+       {
+               YYCTYPE yych;
+               if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+               yych = *YYCURSOR;
+               if(yych <= ' ') {
+                       if(yych <= 0x0C) {
+                               if(yych <= 0x08) goto yy63;
+                               if(yych <= 0x0A) goto yy64;
+                               goto yy63;
+                       } else {
+                               if(yych <= 0x0D) goto yy64;
+                               if(yych <= 0x1F) goto yy63;
+                               goto yy64;
+                       }
+               } else {
+                       if(yych <= '&') {
+                               if(yych != '"') goto yy63;
+                       } else {
+                               if(yych <= '\'') goto yy62;
+                               if(yych == '>') goto yy64;
+                               goto yy63;
+                       }
+               }
+               yych = *(YYMARKER = ++YYCURSOR);
+               goto yy77;
 yy61:
 #line 342 "ext/standard/url_scanner_ex.re"
-       { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; }
-#line 846 "ext/standard/url_scanner_ex.c"
+               { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; }
+#line 836 "ext/standard/url_scanner_ex.c"
 yy62:
-       yych = *(YYMARKER = ++YYCURSOR);
-       goto yy69;
+               yych = *(YYMARKER = ++YYCURSOR);
+               goto yy69;
 yy63:
-       yych = *++YYCURSOR;
-       goto yy67;
+               yych = *++YYCURSOR;
+               goto yy67;
 yy64:
-       ++YYCURSOR;
+               ++YYCURSOR;
 #line 343 "ext/standard/url_scanner_ex.re"
-       { passthru(STD_ARGS); goto state_next_arg_begin; }
-#line 857 "ext/standard/url_scanner_ex.c"
+               { passthru(STD_ARGS); goto state_next_arg_begin; }
+#line 847 "ext/standard/url_scanner_ex.c"
 yy66:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
 yy67:
-       switch(yych) {
-       case 0x09:
-       case 0x0A:
-       case 0x0D:
-       case ' ':
-       case '>':       goto yy61;
-       default:        goto yy66;
-       }
+               if(yybm[0+yych] & 8) {
+                       goto yy66;
+               }
+               goto yy61;
 yy68:
-       YYMARKER = ++YYCURSOR;
-       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+               YYMARKER = ++YYCURSOR;
+               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+               yych = *YYCURSOR;
 yy69:
-       switch(yych) {
-       case 0x09:
-       case 0x0A:
-       case 0x0D:
-       case ' ':       goto yy72;
-       case '\'':      goto yy70;
-       case '>':       goto yy61;
-       default:        goto yy68;
-       }
-yy70:
-       ++YYCURSOR;
-       switch((yych = *YYCURSOR)) {
-       case 0x09:
-       case 0x0A:
-       case 0x0D:
-       case ' ':
-       case '>':       goto yy71;
-       default:        goto yy66;
-       }
+               if(yybm[0+yych] & 16) {
+                       goto yy68;
+               }
+               if(yych <= '&') goto yy72;
+               if(yych >= '(') goto yy61;
+               ++YYCURSOR;
+               if(yybm[0+(yych = *YYCURSOR)] & 8) {
+                       goto yy66;
+               }
 yy71:
 #line 341 "ext/standard/url_scanner_ex.re"
-       { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; }
-#line 898 "ext/standard/url_scanner_ex.c"
+               { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; }
+#line 874 "ext/standard/url_scanner_ex.c"
 yy72:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case '\'':      goto yy75;
-       case '>':       goto yy74;
-       default:        goto yy72;
-       }
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
+               if(yybm[0+yych] & 32) {
+                       goto yy72;
+               }
+               if(yych <= '=') goto yy75;
 yy74:
-       YYCURSOR = YYMARKER;
-       goto yy61;
+               YYCURSOR = YYMARKER;
+               goto yy61;
 yy75:
-       yych = *++YYCURSOR;
-       goto yy71;
+               yych = *++YYCURSOR;
+               goto yy71;
 yy76:
-       YYMARKER = ++YYCURSOR;
-       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+               YYMARKER = ++YYCURSOR;
+               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+               yych = *YYCURSOR;
 yy77:
-       switch(yych) {
-       case 0x09:
-       case 0x0A:
-       case 0x0D:
-       case ' ':       goto yy80;
-       case '"':       goto yy78;
-       case '>':       goto yy61;
-       default:        goto yy76;
-       }
-yy78:
-       ++YYCURSOR;
-       switch((yych = *YYCURSOR)) {
-       case 0x09:
-       case 0x0A:
-       case 0x0D:
-       case ' ':
-       case '>':       goto yy79;
-       default:        goto yy66;
-       }
+               if(yybm[0+yych] & 64) {
+                       goto yy76;
+               }
+               if(yych <= '!') goto yy80;
+               if(yych >= '#') goto yy61;
+               ++YYCURSOR;
+               if(yybm[0+(yych = *YYCURSOR)] & 8) {
+                       goto yy66;
+               }
 yy79:
 #line 340 "ext/standard/url_scanner_ex.re"
-       { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; }
-#line 941 "ext/standard/url_scanner_ex.c"
+               { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; }
+#line 906 "ext/standard/url_scanner_ex.c"
 yy80:
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       switch(yych) {
-       case '"':       goto yy82;
-       case '>':       goto yy74;
-       default:        goto yy80;
+               ++YYCURSOR;
+               if(YYLIMIT == YYCURSOR) YYFILL(1);
+               yych = *YYCURSOR;
+               if(yybm[0+yych] & 128) {
+                       goto yy80;
+               }
+               if(yych >= '>') goto yy74;
+               ++YYCURSOR;
+               yych = *YYCURSOR;
+               goto yy79;
        }
-yy82:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       goto yy79;
 }
 #line 344 "ext/standard/url_scanner_ex.re"