cvs: php4 /ext/ircg ircg_scanner.c ircg_scanner.re
| From: | Sascha Schumann | Date: | Mon, 09 Jul 2001 17:50:26 +0000 |
| Subject: | cvs: php4 /ext/ircg ircg_scanner.c ircg_scanner.re | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-6134@lists.php.net to get a copy of this message | ||
sas Mon Jul 9 13:50:26 2001 EDT
Modified files:
/php4/ext/ircg ircg_scanner.c ircg_scanner.re
Log:
Flush some untested changes:
This reorganizes the scanner in the way as proposed by Cowan et al.
Index: php4/ext/ircg/ircg_scanner.c diff -u php4/ext/ircg/ircg_scanner.c:1.11 php4/ext/ircg/ircg_scanner.c:1.12 --- php4/ext/ircg/ircg_scanner.c:1.11 Thu May 24 10:57:19 2001 +++ php4/ext/ircg/ircg_scanner.c Mon Jul 9 13:50:25 2001 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.5 on Thu May 24 16:58:10 2001 */ +/* Generated by re2c 0.5 on Mon Jul 9 19:47:08 2001 */ #line 1 "ircg_scanner.re" /* +----------------------------------------------------------------------+ @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ircg_scanner.c,v 1.11 2001/05/24 14:57:19 sas Exp $ */ +/* $Id: ircg_scanner.c,v 1.12 2001/07/09 17:50:25 sas Exp $ */ #include <ext/standard/php_smart_str.h> #include <stdio.h> @@ -72,7 +72,6 @@ #define YYCURSOR xp #define YYLIMIT end #define YYMARKER q -#define STATE mode #define STD_PARA ircg_msg_scanner *ctx, const char *start, const char *YYCURSOR #define STD_ARGS ctx, start, YYCURSOR @@ -191,7 +190,6 @@ } void ircg_mirc_color(const char *msg, smart_str *result, size_t msg_len) { - int mode = STATE_PLAIN; const char *end, *xp, *q, *start; ircg_msg_scanner mctx, *ctx = &mctx; @@ -204,81 +202,83 @@ end = msg + msg_len; xp = msg; - while (1) { - start = YYCURSOR; - switch (STATE) { - - case STATE_PLAIN: +state_plain: + start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; 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, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 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, + 32, 64, 0, 0, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 0, 64, + 64, 64, 64, 64, 64, 64, 64, 0, + 64, 64, 64, 64, 64, 64, 0, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 0, 64, 0, 64, 0, 64, + 64, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 64, 64, 64, 64, 64, + 64, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, }; goto yy0; yy1: ++YYCURSOR; yy0: if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; - if(yych <= '%'){ - if(yych <= '\003'){ - if(yych <= '\000') goto yy19; - if(yych <= '\001') goto yy18; - if(yych <= '\002') goto yy12; - goto yy4; - } else { - if(yych <= '\026'){ - if(yych <= '\025') goto yy18; - goto yy16; + if(yych <= '&'){ + if(yych <= '\025'){ + if(yych <= '\001'){ + if(yych <= '\000') goto yy20; + goto yy18; } else { - if(yych == '\037') goto yy14; + if(yych <= '\002') goto yy12; + if(yych <= '\003') goto yy4; goto yy18; } + } else { + if(yych <= '\036'){ + if(yych <= '\026') goto yy16; + goto yy18; + } else { + if(yych <= '\037') goto yy14; + if(yych <= '%') goto yy18; + goto yy10; + } } } else { - if(yych <= '>'){ - if(yych <= ';'){ - if(yych <= '&') goto yy10; - goto yy18; + if(yych <= '='){ + if(yych <= ':'){ + if(yych <= '9') goto yy18; + goto yy19; } else { - if(yych <= '<') goto yy6; - if(yych <= '=') goto yy18; - goto yy8; + if(yych == '<') goto yy6; + goto yy18; } } else { if(yych <= 'Z'){ + if(yych <= '>') goto yy8; if(yych <= '@') goto yy18; } else { if(yych <= '`') goto yy18; @@ -288,77 +288,211 @@ } yy2: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@'){ - if(yych <= '/') goto yy3; - if(yych <= ':') goto yy22; + if(yybm[0+yych] & 128) goto yy28; + if(yych <= '%'){ + if(yych <= '\025'){ + if(yych <= '\001') goto yy23; + if(yych >= '\004') goto yy23; + } else { + if(yych <= '\026') goto yy3; + if(yych != '\037') goto yy23; + } } else { - if(yych <= 'Z') goto yy22; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy22; + if(yych <= ';'){ + if(yych <= '&') goto yy3; + if(yych == ':') goto yy30; + goto yy23; + } else { + if(yych == '=') goto yy23; + if(yych >= '?') goto yy23; + } } yy3: -#line 231 - { passthru(STD_ARGS); continue; } +#line 226 + { passthru(STD_ARGS); goto state_plain; } yy4: yych = *++YYCURSOR; yy5: -#line 224 - { mctx.fg_code = mctx.bg_code = -1; STATE = STATE_COLOR_FG; continue; } +#line 219 + { mctx.fg_code = mctx.bg_code = -1; goto state_color_fg; } yy6: yych = *++YYCURSOR; yy7: -#line 225 - { add_entity(STD_ARGS, "<"); continue; } +#line 220 + { add_entity(STD_ARGS, "<"); goto state_plain; } yy8: yych = *++YYCURSOR; yy9: -#line 226 - { add_entity(STD_ARGS, ">"); continue; } +#line 221 + { add_entity(STD_ARGS, ">"); goto state_plain; } yy10: yych = *++YYCURSOR; yy11: -#line 227 - { add_entity(STD_ARGS, "&"); continue; } +#line 222 + { add_entity(STD_ARGS, "&"); goto state_plain; } yy12: yych = *++YYCURSOR; yy13: -#line 228 - { handle_bold(STD_ARGS, 0); continue; } +#line 223 + { handle_bold(STD_ARGS, 0); goto state_plain; } yy14: yych = *++YYCURSOR; yy15: -#line 229 - { handle_underline(STD_ARGS, 0); continue; } +#line 224 + { handle_underline(STD_ARGS, 0); goto state_plain; } yy16: yych = *++YYCURSOR; yy17: -#line 230 - { handle_italic(STD_ARGS, 0); continue; } -yy18: yych = *++YYCURSOR; - goto yy3; +#line 225 + { handle_italic(STD_ARGS, 0); goto state_plain; } +yy18: yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if(yych <= '%'){ + if(yych <= '\025'){ + if(yych <= '\001') goto yy23; + if(yych <= '\003') goto yy3; + goto yy23; + } else { + if(yych <= '\026') goto yy3; + if(yych == '\037') goto yy3; + goto yy23; + } + } else { + if(yych <= ';'){ + if(yych <= '&') goto yy3; + if(yych == ':') goto yy3; + goto yy23; + } else { + if(yych == '=') goto yy23; + if(yych <= '>') goto yy3; + goto yy23; + } + } yy19: yych = *++YYCURSOR; -yy20: -#line 232 + goto yy3; +yy20: yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if(yych <= '%'){ + if(yych <= '\025'){ + if(yych <= '\001') goto yy23; + if(yych >= '\004') goto yy23; + } else { + if(yych <= '\026') goto yy21; + if(yych != '\037') goto yy23; + } + } else { + if(yych <= ';'){ + if(yych <= '&') goto yy21; + if(yych != ':') goto yy23; + } else { + if(yych == '=') goto yy23; + if(yych >= '?') goto yy23; + } + } +yy21: +#line 228 { goto stop; } -yy21: ++YYCURSOR; +yy22: yyaccept = 2; + YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy22: if(yybm[0+yych] & 128) goto yy21; - if(yych == ':') goto yy24; -yy23: YYCURSOR = YYMARKER; +yy23: if(yybm[0+yych] & 32) goto yy22; + if(yych <= '%'){ + if(yych <= '\025'){ + if(yych <= '\001') goto yy25; + if(yych >= '\004') goto yy25; + } else { + if(yych <= '\026') goto yy24; + if(yych != '\037') goto yy25; + } + } else { + if(yych <= ';'){ + if(yych <= '&') goto yy24; + if(yych != ':') goto yy25; + } else { + if(yych == '=') goto yy25; + if(yych >= '?') goto yy25; + } + } +yy24: +#line 227 + { --YYCURSOR; passthru(STD_ARGS); goto stop; } +yy25: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy26: if(yybm[0+yych] & 32) goto yy22; + if(yych <= '%'){ + if(yych <= '\025'){ + if(yych <= '\001') goto yy25; + if(yych >= '\004') goto yy25; + } else { + if(yych <= '\026') goto yy27; + if(yych != '\037') goto yy25; + } + } else { + if(yych <= ';'){ + if(yych <= '&') goto yy27; + if(yych != ':') goto yy25; + } else { + if(yych == '=') goto yy25; + if(yych >= '?') goto yy25; + } + } +yy27: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy3; + case 2: goto yy24; + case 1: goto yy21; } -yy24: yych = *++YYCURSOR; - if(yych != '/') goto yy23; -yy25: yych = *++YYCURSOR; - if(yych != '/') goto yy23; -yy26: yych = *++YYCURSOR; -yy27: -#line 223 - { handle_scheme(STD_ARGS); STATE = STATE_URL; continue; } +yy28: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy29: if(yybm[0+yych] & 32) goto yy22; + if(yych <= '9'){ + if(yych <= '\036'){ + if(yych <= '\003'){ + if(yych <= '\001') goto yy25; + goto yy27; + } else { + if(yych == '\026') goto yy27; + goto yy25; + } + } else { + if(yych <= '%'){ + if(yych <= '\037') goto yy27; + goto yy25; + } else { + if(yych <= '&') goto yy27; + if(yych <= '/') goto yy25; + goto yy28; + } + } + } else { + if(yych <= '>'){ + if(yych <= ';'){ + if(yych >= ';') goto yy25; + } else { + if(yych == '=') goto yy25; + goto yy27; + } + } else { + if(yych <= 'Z'){ + if(yych <= '@') goto yy25; + goto yy28; + } else { + if(yych <= '`') goto yy25; + if(yych <= 'z') goto yy28; + goto yy25; + } + } + } +yy30: yych = *++YYCURSOR; + if(yych != '/') goto yy27; +yy31: yych = *++YYCURSOR; + if(yych != '/') goto yy27; +yy32: yych = *++YYCURSOR; +yy33: +#line 218 + { handle_scheme(STD_ARGS); goto state_url; } } -#line 233 - - - break; +#line 229 - case STATE_URL: - +state_url: + start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; @@ -396,132 +530,127 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - goto yy28; -yy29: ++YYCURSOR; -yy28: + goto yy34; +yy35: ++YYCURSOR; +yy34: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= '>'){ if(yych <= '"'){ - if(yych != '!') goto yy32; + if(yych != '!') goto yy38; } else { - if(yych == '<') goto yy32; - if(yych >= '>') goto yy32; + if(yych == '<') goto yy38; + if(yych >= '>') goto yy38; } } else { if(yych <= '`'){ - if(yych <= 'Z') goto yy30; - if(yych != '_') goto yy32; + if(yych <= 'Z') goto yy36; + if(yych != '_') goto yy38; } else { - if(yych <= 'z') goto yy30; - if(yych != '~') goto yy32; + if(yych <= 'z') goto yy36; + if(yych != '~') goto yy38; } } -yy30: yych = *++YYCURSOR; - goto yy35; -yy31: -#line 241 - { handle_url(STD_ARGS); STATE = STATE_PLAIN; continue; } -yy32: yych = *++YYCURSOR; -yy33: -#line 242 - { passthru(STD_ARGS); STATE = STATE_PLAIN; continue; } -yy34: ++YYCURSOR; +yy36: yych = *++YYCURSOR; + goto yy41; +yy37: +#line 234 + { handle_url(STD_ARGS); goto state_plain; } +yy38: yych = *++YYCURSOR; +yy39: +#line 235 + { passthru(STD_ARGS); goto state_plain; } +yy40: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy35: if(yybm[0+yych] & 128) goto yy34; - goto yy31; +yy41: if(yybm[0+yych] & 128) goto yy40; + goto yy37; } -#line 243 +#line 236 - break; - case STATE_COLOR_FG: - +state_color_fg: + start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy36; -yy37: ++YYCURSOR; -yy36: + goto yy42; +yy43: ++YYCURSOR; +yy42: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= '/') goto yy40; - if(yych >= ':') goto yy40; -yy38: yych = *++YYCURSOR; - if(yych <= '/') goto yy39; - if(yych <= '9') goto yy42; -yy39: -#line 250 - { handle_color_digit(STD_ARGS, 0); STATE = STATE_COLOR_COMMA; continue; } -yy40: yych = *++YYCURSOR; -yy41: -#line 251 - { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); STATE = STATE_PLAIN; continue; } -yy42: yych = *++YYCURSOR; - goto yy39; + if(yych <= '/') goto yy46; + if(yych >= ':') goto yy46; +yy44: yych = *++YYCURSOR; + if(yych <= '/') goto yy45; + if(yych <= '9') goto yy48; +yy45: +#line 242 + { handle_color_digit(STD_ARGS, 0); goto state_color_comma; } +yy46: yych = *++YYCURSOR; +yy47: +#line 243 + { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); goto state_plain; } +yy48: yych = *++YYCURSOR; + goto yy45; } -#line 252 +#line 244 - break; - - case STATE_COLOR_COMMA: +state_color_comma: + start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy43; -yy44: ++YYCURSOR; -yy43: + goto yy49; +yy50: ++YYCURSOR; +yy49: if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych != ',') goto yy47; -yy45: yych = *++YYCURSOR; -yy46: -#line 259 - { STATE = STATE_COLOR_BG; continue; } -yy47: yych = *++YYCURSOR; -yy48: -#line 260 - { YYCURSOR--; commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } + if(yych != ',') goto yy53; +yy51: yych = *++YYCURSOR; +yy52: +#line 250 + { goto state_color_bg; } +yy53: yych = *++YYCURSOR; +yy54: +#line 251 + { YYCURSOR--; commit_color_stuff(STD_ARGS); goto state_plain; } } -#line 261 - +#line 252 - break; - case STATE_COLOR_BG: +state_color_bg: + start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy49; -yy50: ++YYCURSOR; -yy49: + goto yy55; +yy56: ++YYCURSOR; +yy55: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; -yy51: yych = *++YYCURSOR; - if(yych <= '/') goto yy52; - if(yych <= '9') goto yy55; -yy52: -#line 268 - { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } -yy53: yych = *++YYCURSOR; -yy54: -#line 269 - { commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } -yy55: yych = *++YYCURSOR; - goto yy52; + if(yych <= '/') goto yy59; + if(yych >= ':') goto yy59; +yy57: yych = *++YYCURSOR; + if(yych <= '/') goto yy58; + if(yych <= '9') goto yy61; +yy58: +#line 258 + { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); goto state_plain; } +yy59: yych = *++YYCURSOR; +yy60: +#line 259 + { commit_color_stuff(STD_ARGS); goto state_plain; } +yy61: yych = *++YYCURSOR; + goto yy58; } -#line 270 +#line 260 - break; - } - } + stop: smart_str_free_ex(&ctx->scheme, 1); Index: php4/ext/ircg/ircg_scanner.re diff -u php4/ext/ircg/ircg_scanner.re:1.11 php4/ext/ircg/ircg_scanner.re:1.12 --- php4/ext/ircg/ircg_scanner.re:1.11 Thu May 24 10:57:19 2001 +++ php4/ext/ircg/ircg_scanner.re Mon Jul 9 13:50:25 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ircg_scanner.re,v 1.11 2001/05/24 14:57:19 sas Exp $ */ +/* $Id: ircg_scanner.re,v 1.12 2001/07/09 17:50:25 sas Exp $ */ #include <ext/standard/php_smart_str.h> #include <stdio.h> @@ -81,7 +81,6 @@ #define YYCURSOR xp #define YYLIMIT end #define YYMARKER q -#define STATE mode #define STD_PARA ircg_msg_scanner *ctx, const char *start, const char *YYCURSOR #define STD_ARGS ctx, start, YYCURSOR @@ -200,7 +199,6 @@ } void ircg_mirc_color(const char *msg, smart_str *result, size_t msg_len) { - int mode = STATE_PLAIN; const char *end, *xp, *q, *start; ircg_msg_scanner mctx, *ctx = &mctx; @@ -213,64 +211,54 @@ end = msg + msg_len; xp = msg; - while (1) { - start = YYCURSOR; - switch (STATE) { - - case STATE_PLAIN: +state_plain: + start = YYCURSOR; /*!re2c - scheme "://" { handle_scheme(STD_ARGS); STATE = STATE_URL; continue; } - coloresc { mctx.fg_code = mctx.bg_code = -1; STATE = STATE_COLOR_FG; continue; } - "<" { add_entity(STD_ARGS, "<"); continue; } - ">" { add_entity(STD_ARGS, ">"); continue; } - "&" { add_entity(STD_ARGS, "&"); continue; } - bold { handle_bold(STD_ARGS, 0); continue; } - underline { handle_underline(STD_ARGS, 0); continue; } - italic { handle_italic(STD_ARGS, 0); continue; } - anynoneof { passthru(STD_ARGS); continue; } + scheme "://" { handle_scheme(STD_ARGS); goto state_url; } + coloresc { mctx.fg_code = mctx.bg_code = -1; goto state_color_fg; } + "<" { add_entity(STD_ARGS, "<"); goto state_plain; } + ">" { add_entity(STD_ARGS, ">"); goto state_plain; } + "&" { add_entity(STD_ARGS, "&"); goto state_plain; } + bold { handle_bold(STD_ARGS, 0); goto state_plain; } + underline { handle_underline(STD_ARGS, 0); goto state_plain; } + italic { handle_italic(STD_ARGS, 0); goto state_plain; } + anynoneof { passthru(STD_ARGS); goto state_plain; } + (any\[<>\037&:])+ eof { --YYCURSOR; passthru(STD_ARGS); goto stop; } eof { goto stop; } */ - - break; - - case STATE_URL: - +state_url: + start = YYCURSOR; /*!re2c - [-a-zA-Z0-9~_?=.@&+/#:;!*'()%,$]+ { handle_url(STD_ARGS); STATE = STATE_PLAIN; continue; } - any { passthru(STD_ARGS); STATE = STATE_PLAIN; continue; } + [-a-zA-Z0-9~_?=.@&+/#:;!*'()%,$]+ { handle_url(STD_ARGS); goto state_plain; } + any { passthru(STD_ARGS); goto state_plain; } */ - break; - case STATE_COLOR_FG: - +state_color_fg: + start = YYCURSOR; /*!re2c - digit digit? { handle_color_digit(STD_ARGS, 0); STATE = STATE_COLOR_COMMA; continue; } - any { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); STATE = STATE_PLAIN; continue; } + digit digit? { handle_color_digit(STD_ARGS, 0); goto state_color_comma; } + any { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); goto state_plain; } */ - break; - case STATE_COLOR_COMMA: - +state_color_comma: + start = YYCURSOR; /*!re2c - "," { STATE = STATE_COLOR_BG; continue; } - any { YYCURSOR--; commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } + "," { goto state_color_bg; } + any { YYCURSOR--; commit_color_stuff(STD_ARGS); goto state_plain; } */ - break; - - case STATE_COLOR_BG: +state_color_bg: + start = YYCURSOR; /*!re2c - digit digit? { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } - any { commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } + digit digit? { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); goto state_plain; } + any { commit_color_stuff(STD_ARGS); goto state_plain; } */ - break; - } - } + stop: smart_str_free_ex(&ctx->scheme, 1);
Index: php4/ext/ircg/ircg_scanner.c diff -u php4/ext/ircg/ircg_scanner.c:1.11 php4/ext/ircg/ircg_scanner.c:1.12 --- php4/ext/ircg/ircg_scanner.c:1.11 Thu May 24 10:57:19 2001 +++ php4/ext/ircg/ircg_scanner.c Mon Jul 9 13:50:25 2001 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.5 on Thu May 24 16:58:10 2001 */ +/* Generated by re2c 0.5 on Mon Jul 9 19:47:08 2001 */ #line 1 "ircg_scanner.re" /* +----------------------------------------------------------------------+ @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ircg_scanner.c,v 1.11 2001/05/24 14:57:19 sas Exp $ */ +/* $Id: ircg_scanner.c,v 1.12 2001/07/09 17:50:25 sas Exp $ */ #include <ext/standard/php_smart_str.h> #include <stdio.h> @@ -72,7 +72,6 @@ #define YYCURSOR xp #define YYLIMIT end #define YYMARKER q -#define STATE mode #define STD_PARA ircg_msg_scanner *ctx, const char *start, const char *YYCURSOR #define STD_ARGS ctx, start, YYCURSOR @@ -191,7 +190,6 @@ } void ircg_mirc_color(const char *msg, smart_str *result, size_t msg_len) { - int mode = STATE_PLAIN; const char *end, *xp, *q, *start; ircg_msg_scanner mctx, *ctx = &mctx; @@ -204,81 +202,83 @@ end = msg + msg_len; xp = msg; - while (1) { - start = YYCURSOR; - switch (STATE) { - - case STATE_PLAIN: +state_plain: + start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; 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, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 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, + 32, 64, 0, 0, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 0, 64, + 64, 64, 64, 64, 64, 64, 64, 0, + 64, 64, 64, 64, 64, 64, 0, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 0, 64, 0, 64, 0, 64, + 64, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 64, 64, 64, 64, 64, + 64, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, }; goto yy0; yy1: ++YYCURSOR; yy0: if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; - if(yych <= '%'){ - if(yych <= '\003'){ - if(yych <= '\000') goto yy19; - if(yych <= '\001') goto yy18; - if(yych <= '\002') goto yy12; - goto yy4; - } else { - if(yych <= '\026'){ - if(yych <= '\025') goto yy18; - goto yy16; + if(yych <= '&'){ + if(yych <= '\025'){ + if(yych <= '\001'){ + if(yych <= '\000') goto yy20; + goto yy18; } else { - if(yych == '\037') goto yy14; + if(yych <= '\002') goto yy12; + if(yych <= '\003') goto yy4; goto yy18; } + } else { + if(yych <= '\036'){ + if(yych <= '\026') goto yy16; + goto yy18; + } else { + if(yych <= '\037') goto yy14; + if(yych <= '%') goto yy18; + goto yy10; + } } } else { - if(yych <= '>'){ - if(yych <= ';'){ - if(yych <= '&') goto yy10; - goto yy18; + if(yych <= '='){ + if(yych <= ':'){ + if(yych <= '9') goto yy18; + goto yy19; } else { - if(yych <= '<') goto yy6; - if(yych <= '=') goto yy18; - goto yy8; + if(yych == '<') goto yy6; + goto yy18; } } else { if(yych <= 'Z'){ + if(yych <= '>') goto yy8; if(yych <= '@') goto yy18; } else { if(yych <= '`') goto yy18; @@ -288,77 +288,211 @@ } yy2: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@'){ - if(yych <= '/') goto yy3; - if(yych <= ':') goto yy22; + if(yybm[0+yych] & 128) goto yy28; + if(yych <= '%'){ + if(yych <= '\025'){ + if(yych <= '\001') goto yy23; + if(yych >= '\004') goto yy23; + } else { + if(yych <= '\026') goto yy3; + if(yych != '\037') goto yy23; + } } else { - if(yych <= 'Z') goto yy22; - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy22; + if(yych <= ';'){ + if(yych <= '&') goto yy3; + if(yych == ':') goto yy30; + goto yy23; + } else { + if(yych == '=') goto yy23; + if(yych >= '?') goto yy23; + } } yy3: -#line 231 - { passthru(STD_ARGS); continue; } +#line 226 + { passthru(STD_ARGS); goto state_plain; } yy4: yych = *++YYCURSOR; yy5: -#line 224 - { mctx.fg_code = mctx.bg_code = -1; STATE = STATE_COLOR_FG; continue; } +#line 219 + { mctx.fg_code = mctx.bg_code = -1; goto state_color_fg; } yy6: yych = *++YYCURSOR; yy7: -#line 225 - { add_entity(STD_ARGS, "<"); continue; } +#line 220 + { add_entity(STD_ARGS, "<"); goto state_plain; } yy8: yych = *++YYCURSOR; yy9: -#line 226 - { add_entity(STD_ARGS, ">"); continue; } +#line 221 + { add_entity(STD_ARGS, ">"); goto state_plain; } yy10: yych = *++YYCURSOR; yy11: -#line 227 - { add_entity(STD_ARGS, "&"); continue; } +#line 222 + { add_entity(STD_ARGS, "&"); goto state_plain; } yy12: yych = *++YYCURSOR; yy13: -#line 228 - { handle_bold(STD_ARGS, 0); continue; } +#line 223 + { handle_bold(STD_ARGS, 0); goto state_plain; } yy14: yych = *++YYCURSOR; yy15: -#line 229 - { handle_underline(STD_ARGS, 0); continue; } +#line 224 + { handle_underline(STD_ARGS, 0); goto state_plain; } yy16: yych = *++YYCURSOR; yy17: -#line 230 - { handle_italic(STD_ARGS, 0); continue; } -yy18: yych = *++YYCURSOR; - goto yy3; +#line 225 + { handle_italic(STD_ARGS, 0); goto state_plain; } +yy18: yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if(yych <= '%'){ + if(yych <= '\025'){ + if(yych <= '\001') goto yy23; + if(yych <= '\003') goto yy3; + goto yy23; + } else { + if(yych <= '\026') goto yy3; + if(yych == '\037') goto yy3; + goto yy23; + } + } else { + if(yych <= ';'){ + if(yych <= '&') goto yy3; + if(yych == ':') goto yy3; + goto yy23; + } else { + if(yych == '=') goto yy23; + if(yych <= '>') goto yy3; + goto yy23; + } + } yy19: yych = *++YYCURSOR; -yy20: -#line 232 + goto yy3; +yy20: yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if(yych <= '%'){ + if(yych <= '\025'){ + if(yych <= '\001') goto yy23; + if(yych >= '\004') goto yy23; + } else { + if(yych <= '\026') goto yy21; + if(yych != '\037') goto yy23; + } + } else { + if(yych <= ';'){ + if(yych <= '&') goto yy21; + if(yych != ':') goto yy23; + } else { + if(yych == '=') goto yy23; + if(yych >= '?') goto yy23; + } + } +yy21: +#line 228 { goto stop; } -yy21: ++YYCURSOR; +yy22: yyaccept = 2; + YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy22: if(yybm[0+yych] & 128) goto yy21; - if(yych == ':') goto yy24; -yy23: YYCURSOR = YYMARKER; +yy23: if(yybm[0+yych] & 32) goto yy22; + if(yych <= '%'){ + if(yych <= '\025'){ + if(yych <= '\001') goto yy25; + if(yych >= '\004') goto yy25; + } else { + if(yych <= '\026') goto yy24; + if(yych != '\037') goto yy25; + } + } else { + if(yych <= ';'){ + if(yych <= '&') goto yy24; + if(yych != ':') goto yy25; + } else { + if(yych == '=') goto yy25; + if(yych >= '?') goto yy25; + } + } +yy24: +#line 227 + { --YYCURSOR; passthru(STD_ARGS); goto stop; } +yy25: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy26: if(yybm[0+yych] & 32) goto yy22; + if(yych <= '%'){ + if(yych <= '\025'){ + if(yych <= '\001') goto yy25; + if(yych >= '\004') goto yy25; + } else { + if(yych <= '\026') goto yy27; + if(yych != '\037') goto yy25; + } + } else { + if(yych <= ';'){ + if(yych <= '&') goto yy27; + if(yych != ':') goto yy25; + } else { + if(yych == '=') goto yy25; + if(yych >= '?') goto yy25; + } + } +yy27: YYCURSOR = YYMARKER; switch(yyaccept){ case 0: goto yy3; + case 2: goto yy24; + case 1: goto yy21; } -yy24: yych = *++YYCURSOR; - if(yych != '/') goto yy23; -yy25: yych = *++YYCURSOR; - if(yych != '/') goto yy23; -yy26: yych = *++YYCURSOR; -yy27: -#line 223 - { handle_scheme(STD_ARGS); STATE = STATE_URL; continue; } +yy28: ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; +yy29: if(yybm[0+yych] & 32) goto yy22; + if(yych <= '9'){ + if(yych <= '\036'){ + if(yych <= '\003'){ + if(yych <= '\001') goto yy25; + goto yy27; + } else { + if(yych == '\026') goto yy27; + goto yy25; + } + } else { + if(yych <= '%'){ + if(yych <= '\037') goto yy27; + goto yy25; + } else { + if(yych <= '&') goto yy27; + if(yych <= '/') goto yy25; + goto yy28; + } + } + } else { + if(yych <= '>'){ + if(yych <= ';'){ + if(yych >= ';') goto yy25; + } else { + if(yych == '=') goto yy25; + goto yy27; + } + } else { + if(yych <= 'Z'){ + if(yych <= '@') goto yy25; + goto yy28; + } else { + if(yych <= '`') goto yy25; + if(yych <= 'z') goto yy28; + goto yy25; + } + } + } +yy30: yych = *++YYCURSOR; + if(yych != '/') goto yy27; +yy31: yych = *++YYCURSOR; + if(yych != '/') goto yy27; +yy32: yych = *++YYCURSOR; +yy33: +#line 218 + { handle_scheme(STD_ARGS); goto state_url; } } -#line 233 - - - break; +#line 229 - case STATE_URL: - +state_url: + start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; @@ -396,132 +530,127 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - goto yy28; -yy29: ++YYCURSOR; -yy28: + goto yy34; +yy35: ++YYCURSOR; +yy34: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= '>'){ if(yych <= '"'){ - if(yych != '!') goto yy32; + if(yych != '!') goto yy38; } else { - if(yych == '<') goto yy32; - if(yych >= '>') goto yy32; + if(yych == '<') goto yy38; + if(yych >= '>') goto yy38; } } else { if(yych <= '`'){ - if(yych <= 'Z') goto yy30; - if(yych != '_') goto yy32; + if(yych <= 'Z') goto yy36; + if(yych != '_') goto yy38; } else { - if(yych <= 'z') goto yy30; - if(yych != '~') goto yy32; + if(yych <= 'z') goto yy36; + if(yych != '~') goto yy38; } } -yy30: yych = *++YYCURSOR; - goto yy35; -yy31: -#line 241 - { handle_url(STD_ARGS); STATE = STATE_PLAIN; continue; } -yy32: yych = *++YYCURSOR; -yy33: -#line 242 - { passthru(STD_ARGS); STATE = STATE_PLAIN; continue; } -yy34: ++YYCURSOR; +yy36: yych = *++YYCURSOR; + goto yy41; +yy37: +#line 234 + { handle_url(STD_ARGS); goto state_plain; } +yy38: yych = *++YYCURSOR; +yy39: +#line 235 + { passthru(STD_ARGS); goto state_plain; } +yy40: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy35: if(yybm[0+yych] & 128) goto yy34; - goto yy31; +yy41: if(yybm[0+yych] & 128) goto yy40; + goto yy37; } -#line 243 +#line 236 - break; - case STATE_COLOR_FG: - +state_color_fg: + start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy36; -yy37: ++YYCURSOR; -yy36: + goto yy42; +yy43: ++YYCURSOR; +yy42: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= '/') goto yy40; - if(yych >= ':') goto yy40; -yy38: yych = *++YYCURSOR; - if(yych <= '/') goto yy39; - if(yych <= '9') goto yy42; -yy39: -#line 250 - { handle_color_digit(STD_ARGS, 0); STATE = STATE_COLOR_COMMA; continue; } -yy40: yych = *++YYCURSOR; -yy41: -#line 251 - { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); STATE = STATE_PLAIN; continue; } -yy42: yych = *++YYCURSOR; - goto yy39; + if(yych <= '/') goto yy46; + if(yych >= ':') goto yy46; +yy44: yych = *++YYCURSOR; + if(yych <= '/') goto yy45; + if(yych <= '9') goto yy48; +yy45: +#line 242 + { handle_color_digit(STD_ARGS, 0); goto state_color_comma; } +yy46: yych = *++YYCURSOR; +yy47: +#line 243 + { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); goto state_plain; } +yy48: yych = *++YYCURSOR; + goto yy45; } -#line 252 +#line 244 - break; - - case STATE_COLOR_COMMA: +state_color_comma: + start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy43; -yy44: ++YYCURSOR; -yy43: + goto yy49; +yy50: ++YYCURSOR; +yy49: if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if(yych != ',') goto yy47; -yy45: yych = *++YYCURSOR; -yy46: -#line 259 - { STATE = STATE_COLOR_BG; continue; } -yy47: yych = *++YYCURSOR; -yy48: -#line 260 - { YYCURSOR--; commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } + if(yych != ',') goto yy53; +yy51: yych = *++YYCURSOR; +yy52: +#line 250 + { goto state_color_bg; } +yy53: yych = *++YYCURSOR; +yy54: +#line 251 + { YYCURSOR--; commit_color_stuff(STD_ARGS); goto state_plain; } } -#line 261 - +#line 252 - break; - case STATE_COLOR_BG: +state_color_bg: + start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy49; -yy50: ++YYCURSOR; -yy49: + goto yy55; +yy56: ++YYCURSOR; +yy55: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; - if(yych <= '/') goto yy53; - if(yych >= ':') goto yy53; -yy51: yych = *++YYCURSOR; - if(yych <= '/') goto yy52; - if(yych <= '9') goto yy55; -yy52: -#line 268 - { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } -yy53: yych = *++YYCURSOR; -yy54: -#line 269 - { commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } -yy55: yych = *++YYCURSOR; - goto yy52; + if(yych <= '/') goto yy59; + if(yych >= ':') goto yy59; +yy57: yych = *++YYCURSOR; + if(yych <= '/') goto yy58; + if(yych <= '9') goto yy61; +yy58: +#line 258 + { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); goto state_plain; } +yy59: yych = *++YYCURSOR; +yy60: +#line 259 + { commit_color_stuff(STD_ARGS); goto state_plain; } +yy61: yych = *++YYCURSOR; + goto yy58; } -#line 270 +#line 260 - break; - } - } + stop: smart_str_free_ex(&ctx->scheme, 1); Index: php4/ext/ircg/ircg_scanner.re diff -u php4/ext/ircg/ircg_scanner.re:1.11 php4/ext/ircg/ircg_scanner.re:1.12 --- php4/ext/ircg/ircg_scanner.re:1.11 Thu May 24 10:57:19 2001 +++ php4/ext/ircg/ircg_scanner.re Mon Jul 9 13:50:25 2001 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ircg_scanner.re,v 1.11 2001/05/24 14:57:19 sas Exp $ */ +/* $Id: ircg_scanner.re,v 1.12 2001/07/09 17:50:25 sas Exp $ */ #include <ext/standard/php_smart_str.h> #include <stdio.h> @@ -81,7 +81,6 @@ #define YYCURSOR xp #define YYLIMIT end #define YYMARKER q -#define STATE mode #define STD_PARA ircg_msg_scanner *ctx, const char *start, const char *YYCURSOR #define STD_ARGS ctx, start, YYCURSOR @@ -200,7 +199,6 @@ } void ircg_mirc_color(const char *msg, smart_str *result, size_t msg_len) { - int mode = STATE_PLAIN; const char *end, *xp, *q, *start; ircg_msg_scanner mctx, *ctx = &mctx; @@ -213,64 +211,54 @@ end = msg + msg_len; xp = msg; - while (1) { - start = YYCURSOR; - switch (STATE) { - - case STATE_PLAIN: +state_plain: + start = YYCURSOR; /*!re2c - scheme "://" { handle_scheme(STD_ARGS); STATE = STATE_URL; continue; } - coloresc { mctx.fg_code = mctx.bg_code = -1; STATE = STATE_COLOR_FG; continue; } - "<" { add_entity(STD_ARGS, "<"); continue; } - ">" { add_entity(STD_ARGS, ">"); continue; } - "&" { add_entity(STD_ARGS, "&"); continue; } - bold { handle_bold(STD_ARGS, 0); continue; } - underline { handle_underline(STD_ARGS, 0); continue; } - italic { handle_italic(STD_ARGS, 0); continue; } - anynoneof { passthru(STD_ARGS); continue; } + scheme "://" { handle_scheme(STD_ARGS); goto state_url; } + coloresc { mctx.fg_code = mctx.bg_code = -1; goto state_color_fg; } + "<" { add_entity(STD_ARGS, "<"); goto state_plain; } + ">" { add_entity(STD_ARGS, ">"); goto state_plain; } + "&" { add_entity(STD_ARGS, "&"); goto state_plain; } + bold { handle_bold(STD_ARGS, 0); goto state_plain; } + underline { handle_underline(STD_ARGS, 0); goto state_plain; } + italic { handle_italic(STD_ARGS, 0); goto state_plain; } + anynoneof { passthru(STD_ARGS); goto state_plain; } + (any\[<>\037&:])+ eof { --YYCURSOR; passthru(STD_ARGS); goto stop; } eof { goto stop; } */ - - break; - - case STATE_URL: - +state_url: + start = YYCURSOR; /*!re2c - [-a-zA-Z0-9~_?=.@&+/#:;!*'()%,$]+ { handle_url(STD_ARGS); STATE = STATE_PLAIN; continue; } - any { passthru(STD_ARGS); STATE = STATE_PLAIN; continue; } + [-a-zA-Z0-9~_?=.@&+/#:;!*'()%,$]+ { handle_url(STD_ARGS); goto state_plain; } + any { passthru(STD_ARGS); goto state_plain; } */ - break; - case STATE_COLOR_FG: - +state_color_fg: + start = YYCURSOR; /*!re2c - digit digit? { handle_color_digit(STD_ARGS, 0); STATE = STATE_COLOR_COMMA; continue; } - any { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); STATE = STATE_PLAIN; continue; } + digit digit? { handle_color_digit(STD_ARGS, 0); goto state_color_comma; } + any { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); goto state_plain; } */ - break; - case STATE_COLOR_COMMA: - +state_color_comma: + start = YYCURSOR; /*!re2c - "," { STATE = STATE_COLOR_BG; continue; } - any { YYCURSOR--; commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } + "," { goto state_color_bg; } + any { YYCURSOR--; commit_color_stuff(STD_ARGS); goto state_plain; } */ - break; - - case STATE_COLOR_BG: +state_color_bg: + start = YYCURSOR; /*!re2c - digit digit? { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } - any { commit_color_stuff(STD_ARGS); STATE = STATE_PLAIN; continue; } + digit digit? { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); goto state_plain; } + any { commit_color_stuff(STD_ARGS); goto state_plain; } */ - break; - } - } + stop: smart_str_free_ex(&ctx->scheme, 1);