sas Tue Jun 3 10:16:44 2003 EDT Modified files: (Branch: PHP_4_3) /php4/ext/ircg ircg_scanner.c Log: sync
Index: php4/ext/ircg/ircg_scanner.c diff -u php4/ext/ircg/ircg_scanner.c:1.19.8.2 php4/ext/ircg/ircg_scanner.c:1.19.8.3 --- php4/ext/ircg/ircg_scanner.c:1.19.8.2 Tue Jan 28 09:34:18 2003 +++ php4/ext/ircg/ircg_scanner.c Tue Jun 3 10:16:43 2003 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.5 on Tue Jan 28 15:32:52 2003 */ +/* Generated by re2c 0.5 on Tue Jun 3 16:16:33 2003 */ #line 1 "ircg_scanner.re" /* +----------------------------------------------------------------------+ @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: ircg_scanner.c,v 1.19.8.2 2003/01/28 14:34:18 sas Exp $ */ +/* $Id: ircg_scanner.c,v 1.19.8.3 2003/06/03 14:16:43 sas Exp $ */ #include <ext/standard/php_smart_str.h> #include <stdio.h> @@ -38,20 +38,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; @@ -59,12 +51,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 79 +#line 75 #define YYFILL(n) do { } while (0) @@ -76,10 +70,13 @@ #define STD_PARA ircg_msg_scanner *ctx, const char *start, const char *YYCURSOR #define STD_ARGS ctx, start, YYCURSOR -static inline void passthru(STD_PARA) -{ - smart_str_appendl_ex(ctx->result, start, YYCURSOR - start, 1); -} +#define passthru(na,nb,nc) 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) { @@ -120,6 +117,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) @@ -184,6 +186,18 @@ } } +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 add_entity(STD_PARA, const char *entity) { smart_str_appends_ex(ctx->result, entity, 1); @@ -217,14 +231,15 @@ yych = *YYCURSOR; switch(yych){ case '\000': goto yy2; - case '\002': goto yy17; + case '\002': goto yy19; case '\003': goto yy5; - case '\026': goto yy21; - case '\036': goto yy15; - case '\037': goto yy19; - case '&': goto yy11; - case '<': goto yy7; - case '>': goto yy9; + case '\004': goto yy7; + case '\035': goto yy23; + case '\036': goto yy17; + case '\037': goto yy21; + case '&': goto yy13; + case '<': goto yy9; + case '>': goto yy11; case 'A': case 'B': case 'C': @@ -277,8 +292,8 @@ case 'y': case 'z': goto yy3; case '\204': case '\223': - case '\224': goto yy13; - default: goto yy23; + case '\224': goto yy15; + default: goto yy25; } yy2: YYCURSOR = YYMARKER; switch(yyaccept){ @@ -347,54 +362,58 @@ case 'w': case 'x': case 'y': - case 'z': goto yy25; + case 'z': goto yy27; default: goto yy4; } yy4: -#line 232 +#line 249 { passthru(STD_ARGS); goto state_plain; } yy5: yych = *++YYCURSOR; yy6: -#line 223 +#line 239 { mctx.fg_code = mctx.bg_code = -1; goto state_color_fg; } yy7: yych = *++YYCURSOR; yy8: -#line 224 - { add_entity(STD_ARGS, "<"); goto state_plain; } +#line 240 + { mctx.fg_color[0] = mctx.bg_color[0] = 0; goto state_color_hex; } yy9: yych = *++YYCURSOR; yy10: -#line 225 - { add_entity(STD_ARGS, ">"); goto state_plain; } +#line 241 + { add_entity(STD_ARGS, "<"); goto state_plain; } yy11: yych = *++YYCURSOR; yy12: -#line 226 - { add_entity(STD_ARGS, "&"); goto state_plain; } +#line 242 + { add_entity(STD_ARGS, ">"); goto state_plain; } yy13: yych = *++YYCURSOR; yy14: -#line 227 - { add_entity(STD_ARGS, """); goto state_plain; } +#line 243 + { add_entity(STD_ARGS, "&"); goto state_plain; } yy15: yych = *++YYCURSOR; yy16: -#line 228 - { if (gen_br) smart_str_appendl_ex(ctx->result, "<br>", 4, 1); goto state_plain; } +#line 244 + { add_entity(STD_ARGS, """); goto state_plain; } yy17: yych = *++YYCURSOR; yy18: -#line 229 - { handle_bold(STD_ARGS, 0); goto state_plain; } +#line 245 + { if (gen_br) smart_str_appendl_ex(ctx->result, "<br>", 4, 1); goto state_plain; } yy19: yych = *++YYCURSOR; yy20: -#line 230 - { handle_underline(STD_ARGS, 0); goto state_plain; } +#line 246 + { handle_bold(STD_ARGS, 0); goto state_plain; } yy21: yych = *++YYCURSOR; yy22: -#line 231 - { handle_italic(STD_ARGS, 0); goto state_plain; } +#line 247 + { handle_underline(STD_ARGS, 0); goto state_plain; } yy23: yych = *++YYCURSOR; +yy24: +#line 248 + { handle_italic(STD_ARGS, 0); goto state_plain; } +yy25: yych = *++YYCURSOR; goto yy4; -yy24: ++YYCURSOR; +yy26: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy25: switch(yych){ +yy27: switch(yych){ case '0': case '1': case '2': @@ -454,36 +473,411 @@ case 'w': case 'x': case 'y': - case 'z': goto yy24; - case ':': goto yy26; + case 'z': goto yy26; + case ':': goto yy28; default: goto yy2; } -yy26: yych = *++YYCURSOR; +yy28: yych = *++YYCURSOR; switch(yych){ - case '/': goto yy27; + case '/': goto yy29; default: goto yy2; } -yy27: yych = *++YYCURSOR; +yy29: yych = *++YYCURSOR; switch(yych){ - case '/': goto yy28; + case '/': goto yy30; default: goto yy2; } -yy28: yych = *++YYCURSOR; -yy29: -#line 222 +yy30: yych = *++YYCURSOR; +yy31: +#line 238 { if (auto_links) { handle_scheme(STD_ARGS); goto state_url; } else { passthru(STD_ARGS); goto state_plain; } } } -#line 233 +#line 250 -state_url: +statc_color_hex: start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy30; -yy31: ++YYCURSOR; -yy30: + goto yy32; +yy33: ++YYCURSOR; +yy32: + if((YYLIMIT - YYCURSOR) < 6) YYFILL(6); + yych = *YYCURSOR; + switch(yych){ + case ',': goto yy36; + 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 yy34; + default: goto yy38; + } +yy34: 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 yy39; + default: goto yy35; + } +yy35: +#line 257 + { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); goto state_plain; } +yy36: yych = *++YYCURSOR; +yy37: +#line 256 + { goto state_color_hex_bg; } +yy38: yych = *++YYCURSOR; + goto yy35; +yy39: 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 yy41; + default: goto yy40; + } +yy40: YYCURSOR = YYMARKER; + switch(yyaccept){ + case 0: goto yy35; + } +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 yy42; + default: goto yy40; + } +yy42: 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 yy40; + } +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 yy40; + } +yy44: yych = *++YYCURSOR; +yy45: +#line 255 + { handle_hex(STD_ARGS, 0); goto state_color_hex_bg; } +} +#line 258 + + + +state_color_hex_comma: + start = YYCURSOR; +{ + YYCTYPE yych; + unsigned int yyaccept; + goto yy46; +yy47: ++YYCURSOR; +yy46: + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + switch(yych){ + case ',': goto yy48; + default: goto yy50; + } +yy48: yych = *++YYCURSOR; +yy49: +#line 264 + { goto state_color_hex_bg; } +yy50: yych = *++YYCURSOR; +yy51: +#line 265 + { YYCURSOR--; commit_color_hex(STD_ARGS); goto state_plain; } +} +#line 266 + + + +state_color_hex_bg: + start = YYCURSOR; +{ + YYCTYPE yych; + unsigned int yyaccept; + goto yy52; +yy53: ++YYCURSOR; +yy52: + 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 yy54; + default: goto yy56; + } +yy54: 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 yy57; + default: goto yy55; + } +yy55: +#line 273 + { commit_color_hex(STD_ARGS); passthru(STD_ARGS); goto state_plain; } +yy56: yych = *++YYCURSOR; + goto yy55; +yy57: 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 yy59; + default: goto yy58; + } +yy58: YYCURSOR = YYMARKER; + switch(yyaccept){ + case 0: goto yy55; + } +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 yy60; + default: goto yy58; + } +yy60: 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 yy58; + } +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 yy58; + } +yy62: yych = *++YYCURSOR; +yy63: +#line 272 + { handle_hex(STD_ARGS, 1); commit_color_hex(STD_ARGS); goto state_plain; } +} +#line 274 + + +state_url: + start = YYCURSOR; +{ + YYCTYPE yych; + unsigned int yyaccept; + goto yy64; +yy65: ++YYCURSOR; +yy64: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch(yych){ @@ -563,22 +957,22 @@ case 'w': case 'x': case 'y': - case 'z': case '~': goto yy32; - default: goto yy34; + case 'z': case '~': goto yy66; + default: goto yy68; } -yy32: yych = *++YYCURSOR; - goto yy37; -yy33: -#line 238 +yy66: yych = *++YYCURSOR; + goto yy71; +yy67: +#line 279 { handle_url(STD_ARGS); goto state_plain; } -yy34: yych = *++YYCURSOR; -yy35: -#line 239 +yy68: yych = *++YYCURSOR; +yy69: +#line 280 { passthru(STD_ARGS); goto state_plain; } -yy36: ++YYCURSOR; +yy70: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; -yy37: switch(yych){ +yy71: switch(yych){ case '!': case '#': case '$': case '%': @@ -655,11 +1049,11 @@ case 'w': case 'x': case 'y': - case 'z': case '~': goto yy36; - default: goto yy33; + case 'z': case '~': goto yy70; + default: goto yy67; } } -#line 240 +#line 281 @@ -668,12 +1062,13 @@ { YYCTYPE yych; unsigned int yyaccept; - goto yy38; -yy39: ++YYCURSOR; -yy38: + goto yy72; +yy73: ++YYCURSOR; +yy72: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch(yych){ + case ',': goto yy76; case '0': case '1': case '2': @@ -683,10 +1078,10 @@ case '6': case '7': case '8': - case '9': goto yy40; - default: goto yy42; + case '9': goto yy74; + default: goto yy78; } -yy40: yych = *++YYCURSOR; +yy74: yych = *++YYCURSOR; switch(yych){ case '0': case '1': @@ -697,58 +1092,62 @@ case '6': case '7': case '8': - case '9': goto yy44; - default: goto yy41; + case '9': goto yy80; + default: goto yy75; } -yy41: -#line 246 +yy75: +#line 287 { handle_color_digit(STD_ARGS, 0); goto state_color_comma; } -yy42: yych = *++YYCURSOR; -yy43: -#line 247 +yy76: yych = *++YYCURSOR; +yy77: +#line 288 + { goto state_color_bg; } +yy78: yych = *++YYCURSOR; +yy79: +#line 289 { finish_color_stuff(STD_ARGS); passthru(STD_ARGS); goto state_plain; } -yy44: yych = *++YYCURSOR; - goto yy41; +yy80: yych = *++YYCURSOR; + goto yy75; } -#line 248 +#line 290 - + state_color_comma: start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy45; -yy46: ++YYCURSOR; -yy45: + goto yy81; +yy82: ++YYCURSOR; +yy81: if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych){ - case ',': goto yy47; - default: goto yy49; + case ',': goto yy83; + default: goto yy85; } -yy47: yych = *++YYCURSOR; -yy48: -#line 254 +yy83: yych = *++YYCURSOR; +yy84: +#line 296 { goto state_color_bg; } -yy49: yych = *++YYCURSOR; -yy50: -#line 255 +yy85: yych = *++YYCURSOR; +yy86: +#line 297 { YYCURSOR--; commit_color_stuff(STD_ARGS); goto state_plain; } } -#line 256 - +#line 298 + state_color_bg: start = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept; - goto yy51; -yy52: ++YYCURSOR; -yy51: + goto yy87; +yy88: ++YYCURSOR; +yy87: if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch(yych){ @@ -761,10 +1160,10 @@ case '6': case '7': case '8': - case '9': goto yy53; - default: goto yy55; + case '9': goto yy89; + default: goto yy91; } -yy53: yych = *++YYCURSOR; +yy89: yych = *++YYCURSOR; switch(yych){ case '0': case '1': @@ -775,20 +1174,20 @@ case '6': case '7': case '8': - case '9': goto yy57; - default: goto yy54; + case '9': goto yy93; + default: goto yy90; } -yy54: -#line 262 +yy90: +#line 304 { handle_color_digit(STD_ARGS, 1); commit_color_stuff(STD_ARGS); goto state_plain; } -yy55: yych = *++YYCURSOR; -yy56: -#line 263 - { commit_color_stuff(STD_ARGS); goto state_plain; } -yy57: yych = *++YYCURSOR; - goto yy54; +yy91: yych = *++YYCURSOR; +yy92: +#line 305 + { commit_color_stuff(STD_ARGS); passthru(STD_ARGS); goto state_plain; } +yy93: yych = *++YYCURSOR; + goto yy90; } -#line 264 +#line 306 stop:
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php