diff options
Diffstat (limited to 'ext/standard/url_scanner_ex.c')
-rw-r--r-- | ext/standard/url_scanner_ex.c | 1077 |
1 files changed, 526 insertions, 551 deletions
diff --git a/ext/standard/url_scanner_ex.c b/ext/standard/url_scanner_ex.c index 21723f96d..6ccbd5d49 100644 --- a/ext/standard/url_scanner_ex.c +++ b/ext/standard/url_scanner_ex.c @@ -1,9 +1,9 @@ -/* Generated by re2c 0.9.11 on Tue Feb 28 09:38:22 2006 */ +/* Generated by re2c 0.11.0 on Tue Jun 5 19:51:02 2007 */ /* +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2007 The PHP Group | + | Copyright (c) 1997-2006 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: url_scanner_ex.c,v 1.95.2.4.2.1 2007/01/01 09:36:09 sebastian Exp $ */ +/* $Id: url_scanner_ex.c,v 1.95.2.4.2.3 2007/06/06 12:27:24 nlopess Exp $ */ #include "php.h" @@ -107,42 +107,69 @@ static inline void append_modified_url(smart_str *url, smart_str *dest, smart_st q = (p = url->c) + url->len; scan: - { - YYCTYPE yych; - goto yy0; - ++YYCURSOR; -yy0: - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - switch(yych){ - case '#': goto yy6; - case ':': goto yy2; - case '?': goto yy4; - default: goto yy8; - } -yy2: ++YYCURSOR; - goto yy3; -yy3: -{ smart_str_append(dest, url); return; } -yy4: ++YYCURSOR; - goto yy5; -yy5: -{ sep = separator; goto scan; } -yy6: ++YYCURSOR; - goto yy7; -yy7: -{ bash = p - 1; goto done; } -yy8: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - goto yy9; -yy9: switch(yych){ - case '#': case ':': case '?': goto yy10; - default: goto yy8; + static 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, + }; + + { + 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; + { smart_str_append(dest, url); return; } +yy4: + ++YYCURSOR; + { sep = separator; goto scan; } +yy6: + ++YYCURSOR; + { bash = p - 1; goto done; } +yy8: + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if(yybm[0+yych] & 128) { + goto yy8; + } + { goto scan; } } -yy10: -{ goto scan; } } done: @@ -311,165 +338,130 @@ state_plain_begin: state_plain: start = YYCURSOR; - { - YYCTYPE yych; - goto yy11; - ++YYCURSOR; -yy11: - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - switch(yych){ - case '<': goto yy13; - default: goto yy15; - } -yy13: ++YYCURSOR; - goto yy14; -yy14: -{ passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; } -yy15: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - goto yy16; -yy16: switch(yych){ - case '<': goto yy17; - default: goto yy15; + static 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, + }; + + { + YYCTYPE yych; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if(yybm[0+yych] & 128) { + goto yy15; + } + ++YYCURSOR; + { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; } +yy15: + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if(yybm[0+yych] & 128) { + goto yy15; + } + { passthru(STD_ARGS); goto state_plain; } } -yy17: -{ passthru(STD_ARGS); goto state_plain; } } state_tag: start = YYCURSOR; - { - YYCTYPE yych; - goto yy18; - ++YYCURSOR; -yy18: - 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 yy20; - default: goto yy22; - } -yy20: ++YYCURSOR; - yych = *YYCURSOR; - goto yy25; + static 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, + }; + + { + 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; yy21: -{ handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; } -yy22: ++YYCURSOR; - goto yy23; -yy23: -{ passthru(STD_ARGS); goto state_plain_begin; } -yy24: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - goto yy25; -yy25: 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 yy24; - default: goto yy21; + { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; } +yy22: + ++YYCURSOR; + { passthru(STD_ARGS); goto state_plain_begin; } +yy24: + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy25: + if(yybm[0+yych] & 128) { + goto yy24; + } + goto yy21; } } @@ -479,288 +471,238 @@ state_next_arg_begin: state_next_arg: start = YYCURSOR; - { - YYCTYPE yych; - goto yy26; - ++YYCURSOR; -yy26: - 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; - goto yy29; -yy29: -{ passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; } -yy30: ++YYCURSOR; - yych = *YYCURSOR; - goto yy37; + static 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, + }; + + { + 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; + { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; } +yy30: + ++YYCURSOR; + yych = *YYCURSOR; + goto yy37; yy31: -{ passthru(STD_ARGS); goto state_next_arg; } -yy32: ++YYCURSOR; - goto yy33; -yy33: -{ --YYCURSOR; STATE = STATE_ARG; goto state_arg; } -yy34: ++YYCURSOR; - goto yy35; -yy35: -{ passthru(STD_ARGS); goto state_plain_begin; } -yy36: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - goto yy37; -yy37: switch(yych){ - case 0x09: - case 0x0A: - case 0x0B: case 0x0D: case ' ': goto yy36; - default: goto yy31; + { passthru(STD_ARGS); goto state_next_arg; } +yy32: + ++YYCURSOR; + { --YYCURSOR; STATE = STATE_ARG; goto state_arg; } +yy34: + ++YYCURSOR; + { passthru(STD_ARGS); goto state_plain_begin; } +yy36: + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy37: + if(yybm[0+yych] & 128) { + goto yy36; + } + goto yy31; } } state_arg: start = YYCURSOR; - { - YYCTYPE yych; - goto yy38; - ++YYCURSOR; -yy38: - 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; - } -yy40: ++YYCURSOR; - yych = *YYCURSOR; - goto yy45; + static 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, + }; + + { + 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; yy41: -{ passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; } -yy42: ++YYCURSOR; - goto yy43; -yy43: -{ passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; } -yy44: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - goto yy45; -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; + { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; goto state_before_val; } +yy42: + ++YYCURSOR; + { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; } +yy44: + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy45: + if(yybm[0+yych] & 128) { + goto yy44; + } + goto yy41; } } state_before_val: start = YYCURSOR; - { - YYCTYPE yych; - unsigned int yyaccept = 0; - goto yy46; - ++YYCURSOR; -yy46: - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - switch(yych){ - case ' ': goto yy48; - case '=': goto yy50; - default: goto yy52; - } -yy48: yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - switch(yych){ - case ' ': goto yy55; - case '=': goto yy53; - default: goto yy49; - } + static 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, + }; + + { + YYCTYPE yych; + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if(yych == ' ') goto yy48; + if(yych == '=') goto yy50; + goto yy52; +yy48: + yych = *(YYMARKER = ++YYCURSOR); + if(yych == ' ') goto yy55; + if(yych == '=') goto yy53; yy49: -{ --YYCURSOR; goto state_next_arg_begin; } -yy50: ++YYCURSOR; - yych = *YYCURSOR; - goto yy54; + { --YYCURSOR; goto state_next_arg_begin; } +yy50: + ++YYCURSOR; + yych = *YYCURSOR; + goto yy54; yy51: -{ passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; } -yy52: yych = *++YYCURSOR; - goto yy49; -yy53: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - goto yy54; -yy54: switch(yych){ - case ' ': goto yy53; - default: goto yy51; - } -yy55: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - goto yy56; -yy56: switch(yych){ - case ' ': goto yy55; - case '=': goto yy53; - default: goto yy57; - } -yy57: YYCURSOR = YYMARKER; - switch(yyaccept){ - case 0: goto yy49; + { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; } +yy52: + yych = *++YYCURSOR; + goto yy49; +yy53: + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy54: + if(yybm[0+yych] & 128) { + goto yy53; + } + goto yy51; +yy55: + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if(yych == ' ') goto yy55; + if(yych == '=') goto yy53; + YYCURSOR = YYMARKER; + goto yy49; } } @@ -768,112 +710,145 @@ yy57: YYCURSOR = YYMARKER; state_val: start = YYCURSOR; - { - YYCTYPE yych; - unsigned int yyaccept = 0; - goto yy58; - ++YYCURSOR; -yy58: - 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: yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - goto yy77; + static 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, + }; + + { + 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: -{ handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; } -yy62: yyaccept = 0; - yych = *(YYMARKER = ++YYCURSOR); - goto yy69; -yy63: yych = *++YYCURSOR; - goto yy67; -yy64: ++YYCURSOR; - goto yy65; -yy65: -{ passthru(STD_ARGS); goto state_next_arg_begin; } -yy66: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - goto yy67; -yy67: switch(yych){ - case 0x09: - case 0x0A: case 0x0D: case ' ': case '>': goto yy61; - default: goto yy66; - } -yy68: yyaccept = 0; - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - goto yy69; -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; - } + { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; } +yy62: + yych = *(YYMARKER = ++YYCURSOR); + goto yy69; +yy63: + yych = *++YYCURSOR; + goto yy67; +yy64: + ++YYCURSOR; + { passthru(STD_ARGS); goto state_next_arg_begin; } +yy66: + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy67: + if(yybm[0+yych] & 8) { + goto yy66; + } + goto yy61; +yy68: + YYMARKER = ++YYCURSOR; + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; +yy69: + 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: -{ handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; } -yy72: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - goto yy73; -yy73: switch(yych){ - case '\'': goto yy75; - case '>': goto yy74; - default: goto yy72; - } -yy74: YYCURSOR = YYMARKER; - switch(yyaccept){ - case 0: goto yy61; - } -yy75: yych = *++YYCURSOR; - goto yy71; -yy76: yyaccept = 0; - YYMARKER = ++YYCURSOR; - if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - goto yy77; -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; - } + { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; } +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; +yy75: + yych = *++YYCURSOR; + goto yy71; +yy76: + YYMARKER = ++YYCURSOR; + if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; +yy77: + 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: -{ handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; } -yy80: ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - goto yy81; -yy81: switch(yych){ - case '"': goto yy82; - case '>': goto yy74; - default: goto yy80; + { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; } +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; } |