sas Tue Jun 3 10:26:38 2003 EDT Modified files: /php4/ext/ircg ircg_scanner.c Log: sync
Index: php4/ext/ircg/ircg_scanner.c diff -u php4/ext/ircg/ircg_scanner.c:1.25 php4/ext/ircg/ircg_scanner.c:1.26 --- php4/ext/ircg/ircg_scanner.c:1.25 Sat Apr 26 16:43:36 2003 +++ php4/ext/ircg/ircg_scanner.c Tue Jun 3 10:26:38 2003 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.5 on Sat Apr 26 22:43:29 2003 */ +/* Generated by re2c 0.5 on Tue Jun 3 16:26:05 2003 */ #line 1 "ircg_scanner.re" /* +----------------------------------------------------------------------+ @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ircg_scanner.c,v 1.25 2003/04/26 20:43:36 sas Exp $ */ +/* $Id: ircg_scanner.c,v 1.26 2003/06/03 14:26:38 sas Exp $ */ #include "php_ircg_alloc.h" @@ -40,20 +40,12 @@ "teal", "lightcyan", "lightblue", - "pink", - "gray", + "#ff00ff", + "#bebebe", "lightgrey" }; -enum { - STATE_PLAIN, - STATE_URL, - STATE_COLOR_FG, - STATE_COLOR_COMMA, - STATE_COLOR_BG -}; - typedef struct { int bg_code; int fg_code; @@ -61,12 +53,14 @@ int bold_tag_open; int underline_tag_open; int italic_tag_open; + char fg_color[6]; + char bg_color[6]; smart_str scheme; smart_str *result; } ircg_msg_scanner; -#line 82 +#line 78 #define YYFILL(n) do { } while (0) @@ -78,8 +72,12 @@ #define STD_PARA ircg_msg_scanner *ctx, const char *start, const char *YYCURSOR #define STD_ARGS ctx, start, YYCURSOR -#define PASSTHRU() do { \ - smart_str_appendl_ex(result, start, YYCURSOR - start, 1); \ +#define PASSTHRU() do { \ + size_t __len = xp - start; \ + if (__len == 1) \ + smart_str_appendc_ex(mctx.result, start, 1); \ + else \ + smart_str_appendl_ex(mctx.result, start, __len, 1); \ } while (0) static inline void handle_scheme(STD_PARA) @@ -121,6 +119,11 @@ } } +static void handle_hex(STD_PARA, int mode) +{ + memcpy(mode == 0 ? ctx->fg_color : ctx->bg_color, start, 6); +} + #define IS_VALID_CODE(n) (n >= 0 && n <= 15) static void finish_color_stuff(STD_PARA) @@ -189,6 +192,18 @@ smart_str_appends_ex(result, entity, 1); \ } while (0) +static void commit_color_hex(STD_PARA) +{ + finish_color_stuff(STD_ARGS); + + if (ctx->fg_color[0] != 0) { + smart_str_appends_ex(ctx->result, "<font color=\"", 1); + smart_str_appendl_ex(ctx->result, ctx->fg_color, 6, 1); + smart_str_appends_ex(ctx->result, "\">", 1); + ctx->font_tag_open = 1; + } +} + static void do_reset(STD_PARA) { finish_color_stuff(STD_ARGS); @@ -225,12 +240,13 @@ yych = *YYCURSOR; switch(yych){ case '\000': goto yy2; - case '\002': goto yy17; + case '\002': goto yy19; case '\003': goto yy5; - case '\017': goto yy23; - case '\026': goto yy21; + case '\004': goto yy17; + case '\017': goto yy25; + case '\035': goto yy23; case '\036': goto yy15; - case '\037': goto yy19; + case '\037': goto yy21; case '&': goto yy11; case '<': goto yy7; case '>': goto yy9; @@ -287,7 +303,7 @@ case 'z': goto yy3; case '\204': case '\223': case '\224': goto yy13; - default: goto yy25; + default: goto yy27; } yy2: YYCURSOR = YYMARKER; switch(yyaccept){ @@ -356,58 +372,62 @@ case 'w': case 'x': case 'y': - case 'z': goto yy27; + case 'z': goto yy29; default: goto yy4; } yy4: -#line 242 +#line 260 { PASSTHRU(); goto state_plain; } yy5: yych = *++YYCURSOR; yy6: -#line 232 +#line 249 { mctx.fg_code = mctx.bg_code = -1; goto state_color_fg; } yy7: yych = *++YYCURSOR; yy8: -#line 233 +#line 250 { ADD_CONST("<"); goto state_plain; } yy9: yych = *++YYCURSOR; yy10: -#line 234 +#line 251 { ADD_CONST(">"); goto state_plain; } yy11: yych = *++YYCURSOR; yy12: -#line 235 +#line 252 { ADD_CONST("&"); goto state_plain; } yy13: yych = *++YYCURSOR; yy14: -#line 236 +#line 253 { ADD_CONST("""); goto state_plain; } yy15: yych = *++YYCURSOR; yy16: -#line 237 +#line 254 { if (gen_br) ADD_CONST("<br>"); goto state_plain; } yy17: yych = *++YYCURSOR; yy18: -#line 238 - { handle_bold(STD_ARGS, 0); goto state_plain; } +#line 255 + { mctx.fg_color[0] = mctx.bg_color[0] = 0; goto state_color_hex; } yy19: yych = *++YYCURSOR; yy20: -#line 239 - { handle_underline(STD_ARGS, 0); goto state_plain; } +#line 256 + { handle_bold(STD_ARGS, 0); goto state_plain; } yy21: yych = *++YYCURSOR; yy22: -#line 240 - { handle_italic(STD_ARGS, 0); goto state_plain; } +#line 257 + { handle_underline(STD_ARGS, 0); goto state_plain; } yy23: yych = *++YYCURSOR; yy24: -#line 241 - { do_reset(STD_ARGS); goto state_plain; } +#line 258 + { handle_italic(STD_ARGS, 0); goto state_plain; } yy25: yych = *++YYCURSOR; +yy26: +#line 259 + { do_reset(STD_ARGS); goto state_plain; } +yy27: yych = *++YYCURSOR; goto yy4; -yy26: ++YYCURSOR; +yy28: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy27: switch(yych){ +yy29: switch(yych){ case '0': case '1': case '2': @@ -467,36 +487,411 @@ case 'w': case 'x': case 'y': - case 'z': goto yy26; - case ':': goto yy28; + case 'z': goto yy28; + case ':': goto yy30; default: goto yy2; } -yy28: yych = *++YYCURSOR; +yy30: yych = *++YYCURSOR; switch(yych){ - case '/': goto yy29; + case '/': goto yy31; default: goto yy2; } -yy29: yych = *++YYCURSOR; +yy31: yych = *++YYCURSOR; switch(yych){ - case '/': goto yy30; + case '/': goto yy32; default: goto yy2; } -yy30: yych = *++YYCURSOR; -yy31: -#line 231 +yy32: yych = *++YYCURSOR; +yy33: +#line 248 { if (auto_links) { handle_scheme(STD_ARGS); goto state_url; } else { PASSTHRU(); goto state_plain; } } } -#line 243 +#line 261 + + +statc_color_hex: + start = YYCURSOR; +{ + YYCTYPE yych; + unsigned int yyaccept; + goto yy34; +yy35: ++YYCURSOR; +yy34: + if((YYLIMIT - YYCURSOR) < 6) YYFILL(6); + yych = *YYCURSOR; + switch(yych){ + case ',': goto yy38; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy36; + default: goto yy40; + } +yy36: yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy41; + default: goto yy37; + } +yy37: +#line 268 + { finish_color_stuff(STD_ARGS); PASSTHRU(); goto state_plain; } +yy38: yych = *++YYCURSOR; +yy39: +#line 267 + { goto state_color_hex_bg; } +yy40: yych = *++YYCURSOR; + goto yy37; +yy41: yych = *++YYCURSOR; + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy43; + default: goto yy42; + } +yy42: YYCURSOR = YYMARKER; + switch(yyaccept){ + case 0: goto yy37; + } +yy43: yych = *++YYCURSOR; + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy44; + default: goto yy42; + } +yy44: yych = *++YYCURSOR; + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy45; + default: goto yy42; + } +yy45: yych = *++YYCURSOR; + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy46; + default: goto yy42; + } +yy46: yych = *++YYCURSOR; +yy47: +#line 266 + { handle_hex(STD_ARGS, 0); goto state_color_hex_bg; } +} +#line 269 + + + +state_color_hex_comma: + start = YYCURSOR; +{ + YYCTYPE yych; + unsigned int yyaccept; + goto yy48; +yy49: ++YYCURSOR; +yy48: + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch(yych){ + case ',': goto yy50; + default: goto yy52; + } +yy50: yych = *++YYCURSOR; +yy51: +#line 275 + { goto state_color_hex_bg; } +yy52: yych = *++YYCURSOR; +yy53: +#line 276 + { YYCURSOR--; commit_color_hex(STD_ARGS); goto state_plain; } +} +#line 277 + + + +state_color_hex_bg: + start = YYCURSOR; +{ + YYCTYPE yych; + unsigned int yyaccept; + goto yy54; +yy55: ++YYCURSOR; +yy54: + if((YYLIMIT - YYCURSOR) < 6) YYFILL(6); + yych = *YYCURSOR; + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy56; + default: goto yy58; + } +yy56: yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy59; + default: goto yy57; + } +yy57: +#line 284 + { commit_color_hex(STD_ARGS); PASSTHRU(); goto state_plain; } +yy58: yych = *++YYCURSOR; + goto yy57; +yy59: yych = *++YYCURSOR; + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy61; + default: goto yy60; + } +yy60: YYCURSOR = YYMARKER; + switch(yyaccept){ + case 0: goto yy57; + } +yy61: yych = *++YYCURSOR; + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy62; + default: goto yy60; + } +yy62: yych = *++YYCURSOR; + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy63; + default: goto yy60; + } +yy63: yych = *++YYCURSOR; + switch(yych){ + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': goto yy64; + default: goto yy60; + } +yy64: yych = *++YYCURSOR; +yy65: +#line 283 + { handle_hex(STD_ARGS, 1); commit_color_hex(STD_ARGS); goto state_plain; } +} +#line 285 -state_url: +state_url: start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy32; -yy33: ++YYCURSOR; -yy32: + goto yy66; +yy67: ++YYCURSOR; +yy66: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch(yych){ @@ -576,22 +971,22 @@ case 'w': case 'x': case 'y': - case 'z': case '~': goto yy34; - default: goto yy36; + case 'z': case '~': goto yy68; + default: goto yy70; } -yy34: yych = *++YYCURSOR; - goto yy39; -yy35: -#line 248 +yy68: yych = *++YYCURSOR; + goto yy73; +yy69: +#line 290 { handle_url(STD_ARGS); goto state_plain; } -yy36: yych = *++YYCURSOR; -yy37: -#line 249 +yy70: yych = *++YYCURSOR; +yy71: +#line 291 { PASSTHRU(); goto state_plain; } -yy38: ++YYCURSOR; +yy72: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy39: switch(yych){ +yy73: switch(yych){ case '!': case '#': case '$': case '%': @@ -668,11 +1063,11 @@ case 'w': case 'x': case 'y': - case 'z': case '~': goto yy38; - default: goto yy35; + case 'z': case '~': goto yy72; + default: goto yy69; } } -#line 250 +#line 292 @@ -681,12 +1076,13 @@ { YYCTYPE yych; unsigned int yyaccept; - goto yy40; -yy41: ++YYCURSOR; -yy40: + goto yy74; +yy75: ++YYCURSOR; +yy74: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch(yych){ + case ',': goto yy78; case '0': case '1': case '2': @@ -696,10 +1092,10 @@ case '6': case '7': case '8': - case '9': goto yy42; - default: goto yy44; + case '9': goto yy76; + default: goto yy80; } -yy42: yych = *++YYCURSOR; +yy76: yych = *++YYCURSOR; switch(yych){ case '0': case '1': @@ -710,58 +1106,62 @@ case '6': case '7': case '8': - case '9': goto yy46; - default: goto yy43; + case '9': goto yy82; + default: goto yy77; } -yy43: -#line 256 +yy77: +#line 298 { handle_color_digit(STD_ARGS, 0); goto state_color_comma; } -yy44: yych = *++YYCURSOR; -yy45: -#line 257 +yy78: yych = *++YYCURSOR; +yy79: +#line 299 + { goto state_color_bg; } +yy80: yych = *++YYCURSOR; +yy81: +#line 300 { finish_color_stuff(STD_ARGS); PASSTHRU(); goto state_plain; } -yy46: yych = *++YYCURSOR; - goto yy43; +yy82: yych = *++YYCURSOR; + goto yy77; } -#line 258 +#line 301 - + state_color_comma: start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy47; -yy48: ++YYCURSOR; -yy47: + goto yy83; +yy84: ++YYCURSOR; +yy83: if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych){ - case ',': goto yy49; - default: goto yy51; + case ',': goto yy85; + default: goto yy87; } -yy49: yych = *++YYCURSOR; -yy50: -#line 264 +yy85: yych = *++YYCURSOR; +yy86: +#line 307 { goto state_color_bg; } -yy51: yych = *++YYCURSOR; -yy52: -#line 265 +yy87: yych = *++YYCURSOR; +yy88: +#line 308 { YYCURSOR--; commit_color_stuff(STD_ARGS); goto state_plain; } } -#line 266 - +#line 309 + state_color_bg: start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy53; -yy54: ++YYCURSOR; -yy53: + goto yy89; +yy90: ++YYCURSOR; +yy89: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch(yych){ @@ -774,10 +1174,10 @@ case '6': case '7': case '8': - case '9': goto yy55; - default: goto yy57; + case '9': goto yy91; + default: goto yy93; } -yy55: yych = *++YYCURSOR; +yy91: yych = *++YYCURSOR; switch(yych){ case '0': case '1': @@ -788,20 +1188,20 @@ case '6': case '7': case '8': - case '9': goto yy59; - default: goto yy56; + case '9': goto yy95; + default: goto yy92; } -yy56: -#line 272 +yy92: +#line 315 { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); goto state_plain; } -yy57: yych = *++YYCURSOR; -yy58: -#line 273 - { commit_color_stuff(STD_ARGS); goto state_plain; } -yy59: yych = *++YYCURSOR; - goto yy56; +yy93: yych = *++YYCURSOR; +yy94: +#line 316 + { commit_color_stuff(STD_ARGS); PASSTHRU(); goto state_plain; } +yy95: yych = *++YYCURSOR; + goto yy92; } -#line 274 +#line 317 stop:
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php