void scan(unsigned int* in) { { YYCTYPE yych; static void *yyctable[2] = { &&yyc_r1, &&yyc_r2, }; goto *yyctable[YYGETCONDITION()]; /* *********************************** */ yyc_r1: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '2') { if (yych <= '0') goto yy3; if (yych <= '1') goto yy6; goto yy4; } else { if (yych <= '`') goto yy3; if (yych <= 'a') goto yy8; if (yych <= 'b') goto yy10; } yy3: yy4: ++YYCURSOR; { return "2"; } yy6: ++YYCURSOR; { return "1"; } yy8: ++YYCURSOR; { return "a"; } yy10: ++YYCURSOR; { return "b"; } /* *********************************** */ yyc_r2: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '2') { if (yych <= '0') goto yy14; if (yych <= '1') goto yy17; goto yy15; } else { if (yych == 'b') goto yy19; } yy14: yy15: ++YYCURSOR; { return "2"; } yy17: ++YYCURSOR; { return "1"; } yy19: ++YYCURSOR; { return "b"; } } }
char *scan0(char *p) { char *q; #line 15 "config3.c" { YYCTYPE yych; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy4; default: goto yy2; } yy2: ++YYCURSOR; #line 14 "config3.re" { return NULL; } #line 37 "config3.c" yy4: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy4; default: goto yy6; } yy6: #line 13 "config3.re" { return YYCURSOR; } #line 58 "config3.c" } #line 15 "config3.re" }
char *scan(char *p) { char *q; #line 176 "config3.c" { YYCTYPE yych; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy25; default: goto yy23; } yy23: ++YYCURSOR; #line 44 "config3.re" { return NULL; } #line 198 "config3.c" yy25: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy25; default: goto yy27; } yy27: #line 43 "config3.re" { return YYCURSOR; } #line 219 "config3.c" } #line 45 "config3.re" }
char *scan0(char *p) { char *q; #line 15 "<stdout>" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy2; default: goto yy4; } yy2: ++YYCURSOR; yych = *YYCURSOR; goto yy7; yy3: #line 13 "config3.re" { return YYCURSOR; } #line 41 "<stdout>" yy4: ++YYCURSOR; #line 14 "config3.re" { return NULL; } #line 46 "<stdout>" yy6: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy7: switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy6; default: goto yy3; } } #line 15 "config3.re" }
char *scan1(char *p) { char *q; #line 74 "<stdout>" { YYCTYPE yych; yy8: if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy10; default: goto yy12; } yy10: ++YYCURSOR; yych = *YYCURSOR; goto yy15; yy11: #line 23 "config3.re" { return YYCURSOR; } #line 100 "<stdout>" yy12: ++YYCURSOR; #line 24 "config3.re" { return NULL; } #line 105 "<stdout>" yy14: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy15: switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy14; default: goto yy11; } } #line 25 "config3.re" }
char *scan2(char *p) { char *q; #line 133 "<stdout>" { YYCTYPE yych; startLabel: if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy18; default: goto yy20; } yy18: ++YYCURSOR; yych = *YYCURSOR; goto yy23; yy19: #line 33 "config3.re" { return YYCURSOR; } #line 159 "<stdout>" yy20: ++YYCURSOR; #line 34 "config3.re" { return NULL; } #line 164 "<stdout>" yy22: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy23: switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy22; default: goto yy19; } } #line 35 "config3.re" }
char *scan(char *p) { char *q; #line 192 "<stdout>" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy26; default: goto yy28; } yy26: ++YYCURSOR; yych = *YYCURSOR; goto yy31; yy27: #line 43 "config3.re" { return YYCURSOR; } #line 217 "<stdout>" yy28: ++YYCURSOR; #line 44 "config3.re" { return NULL; } #line 222 "<stdout>" yy30: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy31: switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy30; default: goto yy27; } } #line 45 "config3.re" }
/* Generated by re2c */ char scan(const unsigned char *s) { { YYCTYPE yych; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '=') { if (yych == 0x07) goto yy5; goto yy7; } else { if (yych <= '"') goto yy3; if (yych <= 0xFF) goto yy7; } yy3: ++YYCURSOR; { return '"'; } yy5: ++YYCURSOR; { return '\x2F'; } yy7: ++YYCURSOR; { return '\0'; } } }
int scan(char *p) { int n = 0; char *q; printf("[--------------\n"); printf("%s\n", p); printf("]--------------\n"); start: #line 29 "bug1472770.f.c" switch (YYGETSTATE()) { default: goto yy0; case 0: goto yyFillLabel0; } goto yy0; yy1: ++YYCURSOR; yy0: YYSETSTATE(0); if (YYLIMIT <= YYCURSOR) YYFILL(1); yyFillLabel0: yych = *YYCURSOR; switch (yych) { case 0x00: goto yy5; case '\n': goto yy3; default: goto yy1; } yy3: ++YYCURSOR; #line 27 "bug1472770.f.re" { ++n; goto start; } #line 55 "bug1472770.f.c" yy5: ++YYCURSOR; #line 32 "bug1472770.f.re" { return n; } #line 62 "bug1472770.f.c" #line 35 "bug1472770.f.re" }
int main(int argc, char** argv) { char* YYCURSOR = argv[1]; char* YYLIMIT = YYCURSOR + strlen(YYCURSOR); #define YYFILL(n) do { } while(0) #line 14 "bug46_infinite_loop.c" { unsigned char yych; #line 13 "bug46_infinite_loop.re" { } #line 19 "bug46_infinite_loop.c" } #line 14 "bug46_infinite_loop.re" /* BUG BEGINS HERE */ #line 26 "bug46_infinite_loop.c" { unsigned char yych; goto yy3; yy4: ++YYCURSOR; yy3: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 'a': goto yy7; case 'b': case 'c': goto yy6; default: goto yy4; } yy6: #line 18 "bug46_infinite_loop.re" { printf("exit 0\n"); return 0; } #line 44 "bug46_infinite_loop.c" yy7: ++YYCURSOR; goto yy6; } #line 19 "bug46_infinite_loop.re" printf("exit 1\n"); return 0; }
static YYCTYPE * save_line(yasm_parser_gas *parser_gas, YYCTYPE *cursor) { yasm_scanner *s = &parser_gas->s; int i = 0; YYCTYPE *saveline; parser_gas->save_last ^= 1; saveline = parser_gas->save_line[parser_gas->save_last]; /* save next line into cur_line */ if ((YYLIMIT - YYCURSOR) < 80) YYFILL(80); for (i=0; i<79 && &cursor[i] < s->lim && cursor[i] != '\n'; i++) saveline[i] = cursor[i]; saveline[i] = '\0'; return cursor; }
/* Generated by re2c */ char scan(const unsigned char *s) { { YYCTYPE yych; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 0x07: goto yy6; case 0x61: goto yy4; case 0x7F: goto yy2; default: goto yy8; } yy2: ++YYCURSOR; { return '"'; } yy4: ++YYCURSOR; { return '\x2F'; } yy6: ++YYCURSOR; { return '\x7F'; } yy8: ++YYCURSOR; { return '\0'; } } }
static inline void xx_mainloop(url_adapt_state_ex_t *ctx, const char *newdata, size_t newlen TSRMLS_DC) { char *end, *q; char *xp; char *start; int rest; smart_str_appendl(&ctx->buf, newdata, newlen); YYCURSOR = ctx->buf.c; YYLIMIT = ctx->buf.c + ctx->buf.len; switch (STATE) { case STATE_PLAIN: goto state_plain; case STATE_TAG: goto state_tag; case STATE_NEXT_ARG: goto state_next_arg; case STATE_ARG: goto state_arg; case STATE_BEFORE_VAL: goto state_before_val; case STATE_VAL: goto state_val; } state_plain_begin: STATE = STATE_PLAIN; state_plain: start = YYCURSOR; { YYCTYPE yych; 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, }; 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; } } state_tag: start = YYCURSOR; { YYCTYPE yych; 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, }; 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; { 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; } state_next_arg_begin: STATE = STATE_NEXT_ARG; state_next_arg: start = YYCURSOR; { YYCTYPE yych; 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, }; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= ' ') { if (yych <= '\f') { if (yych <= 0x08) goto yy34; if (yych <= '\v') goto yy30; goto yy34; } else { if (yych <= '\r') 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; { --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; 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, }; 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; { 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; 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, }; 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; yy51: { 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; } state_val: start = YYCURSOR; { YYCTYPE yych; 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, }; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= ' ') { if (yych <= '\f') { if (yych <= 0x08) goto yy63; if (yych <= '\n') goto yy64; goto yy63; } else { if (yych <= '\r') 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: 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; 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; if (yybm[0+yych] & 128) { goto yy80; } if (yych >= '>') goto yy74; ++YYCURSOR; yych = *YYCURSOR; goto yy79; } stop: rest = YYLIMIT - start; scdebug(("stopped in state %d at pos %d (%d:%c) %d\n", STATE, YYCURSOR - ctx->buf.c, *YYCURSOR, *YYCURSOR, rest)); /* XXX: Crash avoidance. Need to work with reporter to figure out what goes wrong */ if (rest < 0) rest = 0; if (rest) memmove(ctx->buf.c, start, rest); ctx->buf.len = rest; }
int Scanner::scan() { char *cursor = cur; uint depth; scan: tchar = cursor - pos; tline = cline; tok = cursor; if (iscfg == 1) { goto config; } else if (iscfg == 2) { goto value; } #line 281 "<stdout>" { YYCTYPE yych; unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; switch (yych) { case '\t': case ' ': goto yy50; case '\n': goto yy52; case '\r': goto yy54; case '"': goto yy37; case '\'': goto yy39; case '(': case ')': case ';': case '=': case '\\': case '|': goto yy43; case '*': goto yy35; case '+': case '?': goto yy44; case '.': goto yy48; case '/': goto yy33; 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 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy47; case '[': goto yy41; case 'r': goto yy45; case '{': goto yy31; default: goto yy56; } yy31: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ',': goto yy97; case '0': goto yy94; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy95; default: goto yy32; } yy32: #line 166 "scanner.re" { depth = 1; goto code; } #line 383 "<stdout>" yy33: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case '*': goto yy92; default: goto yy34; } yy34: #line 196 "scanner.re" { RETURN(*tok); } #line 393 "<stdout>" yy35: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case '/': goto yy90; default: goto yy36; } yy36: #line 198 "scanner.re" { yylval.op = *tok; RETURN(CLOSE); } #line 404 "<stdout>" yy37: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\n': goto yy38; default: goto yy86; } yy38: #line 183 "scanner.re" { fatal("unterminated string constant (missing \")"); } #line 415 "<stdout>" yy39: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\n': goto yy40; default: goto yy81; } yy40: #line 184 "scanner.re" { fatal("unterminated string constant (missing ')"); } #line 426 "<stdout>" yy41: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\n': goto yy42; case '^': goto yy72; default: goto yy71; } yy42: #line 194 "scanner.re" { fatal("unterminated range (missing ])"); } #line 438 "<stdout>" yy43: yych = *++YYCURSOR; goto yy34; yy44: yych = *++YYCURSOR; goto yy36; yy45: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case 'e': goto yy62; default: goto yy61; } yy46: #line 225 "scanner.re" { cur = cursor; yylval.symbol = Symbol::find(token()); return ID; } #line 456 "<stdout>" yy47: yych = *++YYCURSOR; goto yy61; yy48: ++YYCURSOR; #line 229 "scanner.re" { cur = cursor; yylval.regexp = mkDot(); return RANGE; } #line 467 "<stdout>" yy50: ++YYCURSOR; yych = *YYCURSOR; goto yy59; yy51: #line 234 "scanner.re" { goto scan; } #line 475 "<stdout>" yy52: ++YYCURSOR; yy53: #line 236 "scanner.re" { if(cursor == eof) RETURN(0); pos = cursor; cline++; goto scan; } #line 484 "<stdout>" yy54: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case '\n': goto yy57; default: goto yy55; } yy55: #line 241 "scanner.re" { std::ostringstream msg; msg << "unexpected character: "; prtChOrHex(msg, *tok); fatal(msg.str().c_str()); goto scan; } #line 499 "<stdout>" yy56: yych = *++YYCURSOR; goto yy55; yy57: yych = *++YYCURSOR; goto yy53; yy58: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy59: switch (yych) { case '\t': case ' ': goto yy58; default: goto yy51; } yy60: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy61: 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 '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 yy60; default: goto yy46; } yy62: yych = *++YYCURSOR; switch (yych) { case '2': goto yy63; default: goto yy61; } yy63: yych = *++YYCURSOR; switch (yych) { case 'c': goto yy64; default: goto yy61; } yy64: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case ':': goto yy65; default: goto yy61; } yy65: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); 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 yy67; default: goto yy66; } yy66: YYCURSOR = YYMARKER; switch (yyaccept) { case 0: goto yy32; case 1: goto yy38; case 2: goto yy40; case 3: goto yy42; case 4: goto yy46; case 5: goto yy69; default: goto yy98; } yy67: yyaccept = 5; YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); 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 '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 '_': 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 yy67; case ':': goto yy65; default: goto yy69; } yy69: #line 218 "scanner.re" { cur = cursor; tok+= 5; /* skip "re2c:" */ iscfg = 1; yylval.str = new Str(token()); return CONFIG; } #line 755 "<stdout>" yy70: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy71: switch (yych) { case '\n': goto yy66; case '\\': goto yy74; case ']': goto yy75; default: goto yy70; } yy72: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy66; case '\\': goto yy77; case ']': goto yy78; default: goto yy72; } yy74: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy66; default: goto yy70; } yy75: ++YYCURSOR; #line 190 "scanner.re" { cur = cursor; yylval.regexp = ranToRE(token()); return RANGE; } #line 791 "<stdout>" yy77: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy66; default: goto yy72; } yy78: ++YYCURSOR; #line 186 "scanner.re" { cur = cursor; yylval.regexp = invToRE(token()); return RANGE; } #line 806 "<stdout>" yy80: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy81: switch (yych) { case '\n': goto yy66; case '\'': goto yy83; case '\\': goto yy82; default: goto yy80; } yy82: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy66; default: goto yy80; } yy83: ++YYCURSOR; #line 179 "scanner.re" { cur = cursor; yylval.regexp = strToCaseInsensitiveRE(token()); return STRING; } #line 832 "<stdout>" yy85: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy86: switch (yych) { case '\n': goto yy66; case '"': goto yy88; case '\\': goto yy87; default: goto yy85; } yy87: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy66; default: goto yy85; } yy88: ++YYCURSOR; #line 175 "scanner.re" { cur = cursor; yylval.regexp = strToRE(token()); return STRING; } #line 858 "<stdout>" yy90: ++YYCURSOR; #line 172 "scanner.re" { tok = cursor; RETURN(0); } #line 864 "<stdout>" yy92: ++YYCURSOR; #line 169 "scanner.re" { depth = 1; goto comment; } #line 870 "<stdout>" yy94: yych = *++YYCURSOR; switch (yych) { case ',': goto yy108; default: goto yy96; } yy95: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; yy96: switch (yych) { case ',': goto yy101; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy95; case '}': goto yy99; default: goto yy66; } yy97: ++YYCURSOR; yy98: #line 216 "scanner.re" { fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); } #line 902 "<stdout>" yy99: ++YYCURSOR; #line 204 "scanner.re" { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = atoi((char *)tok+1); RETURN(CLOSESIZE); } #line 909 "<stdout>" yy101: yyaccept = 6; 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': goto yy104; case '}': goto yy102; default: goto yy98; } yy102: ++YYCURSOR; #line 212 "scanner.re" { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = -1; RETURN(CLOSESIZE); } #line 933 "<stdout>" yy104: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy104; case '}': goto yy106; default: goto yy66; } yy106: ++YYCURSOR; #line 208 "scanner.re" { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1)); RETURN(CLOSESIZE); } #line 958 "<stdout>" yy108: yyaccept = 6; 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': goto yy104; case '}': goto yy109; default: goto yy98; } yy109: ++YYCURSOR; #line 201 "scanner.re" { yylval.op = '*'; RETURN(CLOSE); } #line 981 "<stdout>" } #line 247 "scanner.re" code: #line 988 "<stdout>" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { case '\n': goto yy117; case '"': goto yy121; case '\'': goto yy122; case '{': goto yy115; case '}': goto yy113; default: goto yy119; } yy113: ++YYCURSOR; #line 251 "scanner.re" { if(--depth == 0){ cur = cursor; yylval.token = new Token(token(), tline); return CODE; } goto code; } #line 1010 "<stdout>" yy115: ++YYCURSOR; #line 257 "scanner.re" { ++depth; goto code; } #line 1016 "<stdout>" yy117: ++YYCURSOR; #line 259 "scanner.re" { if(cursor == eof) fatal("missing '}'"); pos = cursor; cline++; goto code; } #line 1024 "<stdout>" yy119: ++YYCURSOR; yy120: #line 263 "scanner.re" { goto code; } #line 1030 "<stdout>" yy121: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\n': goto yy120; default: goto yy128; } yy122: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\n': goto yy120; default: goto yy124; } yy123: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy124: switch (yych) { case '\n': goto yy125; case '\'': goto yy119; case '\\': goto yy126; default: goto yy123; } yy125: YYCURSOR = YYMARKER; goto yy120; yy126: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy125; default: goto yy123; } yy127: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy128: switch (yych) { case '\n': goto yy125; case '"': goto yy119; case '\\': goto yy129; default: goto yy127; } yy129: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy125; default: goto yy127; } } #line 264 "scanner.re" comment: #line 1090 "<stdout>" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { case '\n': goto yy135; case '*': goto yy132; case '/': goto yy134; default: goto yy137; } yy132: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case '/': goto yy140; default: goto yy133; } yy133: #line 279 "scanner.re" { if(cursor == eof) RETURN(0); goto comment; } #line 1111 "<stdout>" yy134: yych = *++YYCURSOR; switch (yych) { case '*': goto yy138; default: goto yy133; } yy135: ++YYCURSOR; #line 275 "scanner.re" { if(cursor == eof) RETURN(0); tok = pos = cursor; cline++; goto comment; } #line 1125 "<stdout>" yy137: yych = *++YYCURSOR; goto yy133; yy138: ++YYCURSOR; #line 272 "scanner.re" { ++depth; fatal("ambiguous /* found"); goto comment; } #line 1135 "<stdout>" yy140: ++YYCURSOR; #line 268 "scanner.re" { if(--depth == 0) goto scan; else goto comment; } #line 1143 "<stdout>" } #line 281 "scanner.re" config: #line 1150 "<stdout>" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { case '\t': case ' ': goto yy144; case '=': goto yy146; default: goto yy148; } yy144: ++YYCURSOR; yych = *YYCURSOR; goto yy153; yy145: #line 285 "scanner.re" { goto config; } #line 1168 "<stdout>" yy146: ++YYCURSOR; yych = *YYCURSOR; goto yy151; yy147: #line 286 "scanner.re" { iscfg = 2; cur = cursor; RETURN('='); } #line 1179 "<stdout>" yy148: ++YYCURSOR; #line 290 "scanner.re" { fatal("missing '='"); } #line 1184 "<stdout>" yy150: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy151: switch (yych) { case '\t': case ' ': goto yy150; default: goto yy147; } yy152: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy153: switch (yych) { case '\t': case ' ': goto yy152; default: goto yy145; } } #line 291 "scanner.re" value: #line 1211 "<stdout>" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch (yych) { case '\t': case '\n': case '\r': case ' ': case ';': goto yy156; case '"': goto yy164; case '\'': goto yy166; case '-': goto yy159; case '0': goto yy157; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy160; default: goto yy162; } yy156: #line 300 "scanner.re" { cur = cursor; yylval.str = new Str(token()); iscfg = 0; return VALUE; } #line 1244 "<stdout>" yy157: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case '\t': case '\n': case '\r': case ' ': case ';': goto yy158; default: goto yy162; } yy158: #line 295 "scanner.re" { cur = cursor; yylval.number = atoi(token().to_string().c_str()); iscfg = 0; return NUMBER; } #line 1262 "<stdout>" yy159: yych = *++YYCURSOR; switch (yych) { case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy160; default: goto yy163; } yy160: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\t': case '\n': case '\r': case ' ': case ';': goto yy158; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy160; default: goto yy162; } yy162: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy163: switch (yych) { case '\t': case '\n': case '\r': case ' ': case ';': goto yy156; default: goto yy162; } yy164: YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': case ';': goto yy174; case '\n': goto yy156; case '"': goto yy162; case '\\': goto yy176; default: goto yy164; } yy166: YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': case ';': goto yy168; case '\n': goto yy156; case '\'': goto yy162; case '\\': goto yy171; default: goto yy166; } yy168: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy170; case '\'': goto yy172; case '\\': goto yy173; default: goto yy168; } yy170: YYCURSOR = YYMARKER; goto yy156; yy171: YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': case ';': goto yy168; case '\n': goto yy156; default: goto yy166; } yy172: yych = *++YYCURSOR; goto yy156; yy173: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy170; default: goto yy168; } yy174: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy170; case '"': goto yy172; case '\\': goto yy177; default: goto yy174; } yy176: YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\t': case '\r': case ' ': case ';': goto yy174; case '\n': goto yy156; default: goto yy164; } yy177: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '\n': goto yy170; default: goto yy174; } } #line 305 "scanner.re" }
int Scanner::echo() { char *cursor = cur; bool ignore_eoc = false; if (eof && cursor == eof) // Catch EOF { return 0; } tok = cursor; echo: #line 96 "<stdout>" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; switch (yych) { case 0x00: goto yy7; case '\n': goto yy5; case '*': goto yy4; case '/': goto yy2; default: goto yy9; } yy2: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '*': goto yy12; default: goto yy3; } yy3: #line 141 "scanner.re" { goto echo; } #line 120 "<stdout>" yy4: yych = *++YYCURSOR; switch (yych) { case '/': goto yy10; default: goto yy3; } yy5: ++YYCURSOR; #line 130 "scanner.re" { out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok)); tok = pos = cursor; cline++; goto echo; } #line 135 "<stdout>" yy7: ++YYCURSOR; #line 135 "scanner.re" { out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok) - 1); // -1 so we don't write out the \0 if(cursor == eof) { RETURN(0); } } #line 145 "<stdout>" yy9: yych = *++YYCURSOR; goto yy3; yy10: ++YYCURSOR; #line 121 "scanner.re" { if (ignore_eoc) { ignore_eoc = false; } else { out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok)); } tok = pos = cursor; goto echo; } #line 161 "<stdout>" yy12: yych = *++YYCURSOR; switch (yych) { case '!': goto yy14; default: goto yy13; } yy13: YYCURSOR = YYMARKER; goto yy3; yy14: yych = *++YYCURSOR; switch (yych) { case 'm': goto yy15; case 'r': goto yy16; default: goto yy13; } yy15: yych = *++YYCURSOR; switch (yych) { case 'a': goto yy21; default: goto yy13; } yy16: yych = *++YYCURSOR; switch (yych) { case 'e': goto yy17; default: goto yy13; } yy17: yych = *++YYCURSOR; switch (yych) { case '2': goto yy18; default: goto yy13; } yy18: yych = *++YYCURSOR; switch (yych) { case 'c': goto yy19; default: goto yy13; } yy19: ++YYCURSOR; #line 110 "scanner.re" { out.write((const char*)(tok), (const char*)(&cursor[-7]) - (const char*)(tok)); tok = cursor; RETURN(1); } #line 210 "<stdout>" yy21: yych = *++YYCURSOR; switch (yych) { case 'x': goto yy22; default: goto yy13; } yy22: yych = *++YYCURSOR; switch (yych) { case ':': goto yy23; default: goto yy13; } yy23: yych = *++YYCURSOR; switch (yych) { case 'r': goto yy24; default: goto yy13; } yy24: yych = *++YYCURSOR; switch (yych) { case 'e': goto yy25; default: goto yy13; } yy25: yych = *++YYCURSOR; switch (yych) { case '2': goto yy26; default: goto yy13; } yy26: yych = *++YYCURSOR; switch (yych) { case 'c': goto yy27; default: goto yy13; } yy27: ++YYCURSOR; #line 115 "scanner.re" { out << "#define YYMAXFILL " << maxFill << std::endl; tok = pos = cursor; ignore_eoc = true; goto echo; } #line 256 "<stdout>" } #line 144 "scanner.re" }
Token *Lexer::scan() { #define YYCTYPE char #define YYCURSOR (this->cursor) #define YYLIMIT (this->lim) #define YYMARKER (this->marker) #define YYFILL(n) {fill();} for(;;) { capture_begin(); #line 22 "<stdout>" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; switch (yych) { case 0x00: goto yy26; case '\t': case '\f': case ' ': goto yy30; case '\n': case '\r': goto yy28; case '(': goto yy22; case ')': goto yy24; case '*': goto yy18; case '+': goto yy14; case ',': goto yy10; case '-': goto yy16; case '.': goto yy8; case '/': goto yy20; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy6; case ':': goto yy12; 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 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy5; case 'd': goto yy2; case 'p': goto yy4; default: goto yy32; } yy2: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case 'e': goto yy46; default: goto yy41; } yy3: #line 31 "LexerX.re" { return create_name_token(capture_string()); } #line 117 "<stdout>" yy4: yych = *++YYCURSOR; switch (yych) { case 'a': goto yy42; default: goto yy41; } yy5: yych = *++YYCURSOR; goto yy41; yy6: yych = *(YYMARKER = ++YYCURSOR); goto yy39; yy7: #line 33 "LexerX.re" { return create_int_token(capture_int()); } #line 133 "<stdout>" yy8: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy33; default: goto yy9; } yy9: #line 59 "LexerX.re" { printf( "Unrecognized character: %c\n", *(this->ccursor) ); continue; } #line 155 "<stdout>" yy10: ++YYCURSOR; #line 37 "LexerX.re" { return create_token(TOKEN_COMMA); } #line 160 "<stdout>" yy12: ++YYCURSOR; #line 39 "LexerX.re" { return create_token(TOKEN_COLON); } #line 165 "<stdout>" yy14: ++YYCURSOR; #line 41 "LexerX.re" { return create_token(TOKEN_ADD); } #line 170 "<stdout>" yy16: ++YYCURSOR; #line 43 "LexerX.re" { return create_token(TOKEN_SUB); } #line 175 "<stdout>" yy18: ++YYCURSOR; #line 45 "LexerX.re" { return create_token(TOKEN_MUL); } #line 180 "<stdout>" yy20: ++YYCURSOR; #line 47 "LexerX.re" { return create_token(TOKEN_DIV); } #line 185 "<stdout>" yy22: ++YYCURSOR; #line 49 "LexerX.re" { return create_token(TOKEN_LPAREN); } #line 190 "<stdout>" yy24: ++YYCURSOR; #line 51 "LexerX.re" { return create_token(TOKEN_RPAREN); } #line 195 "<stdout>" yy26: ++YYCURSOR; #line 53 "LexerX.re" { return create_token(TOKEN_EOF); } #line 200 "<stdout>" yy28: ++YYCURSOR; #line 55 "LexerX.re" { return emit_newline(); } #line 205 "<stdout>" yy30: ++YYCURSOR; #line 57 "LexerX.re" { continue; } #line 210 "<stdout>" yy32: yych = *++YYCURSOR; goto yy9; yy33: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy33; default: goto yy35; } yy35: #line 35 "LexerX.re" { return create_float_token(capture_float()); } #line 234 "<stdout>" yy36: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy33; default: goto yy37; } yy37: YYCURSOR = YYMARKER; goto yy7; yy38: YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; yy39: 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': goto yy38; default: goto yy7; } yy40: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy41: 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 yy3; } yy42: yych = *++YYCURSOR; switch (yych) { case 's': goto yy43; default: goto yy41; } yy43: yych = *++YYCURSOR; switch (yych) { case 's': goto yy44; default: goto yy41; } yy44: ++YYCURSOR; switch ((yych = *YYCURSOR)) { 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 yy45; } yy45: #line 29 "LexerX.re" { return create_token(TOKEN_PASS); } #line 404 "<stdout>" yy46: yych = *++YYCURSOR; switch (yych) { case 'f': goto yy47; default: goto yy41; } yy47: ++YYCURSOR; switch ((yych = *YYCURSOR)) { 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 yy48; } yy48: #line 27 "LexerX.re" { return create_token(TOKEN_DEF); } #line 471 "<stdout>" } #line 63 "LexerX.re" } }
PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) { const unsigned char *cursor, *limit, *marker, *start; zval **rval_ref; limit = max; cursor = *p; if (YYCURSOR >= YYLIMIT) { return 0; } if (var_hash && cursor[0] != 'R') { var_push(var_hash, rval); } start = cursor; #line 425 "ext/standard/var_unserializer.c" { YYCTYPE yych; 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7); yych = *YYCURSOR; switch (yych) { case 'C': case 'O': goto yy13; case 'N': goto yy5; case 'R': goto yy2; case 'S': goto yy10; case 'a': goto yy11; case 'b': goto yy6; case 'd': goto yy8; case 'i': goto yy7; case 'o': goto yy12; case 'r': goto yy4; case 's': goto yy9; case '}': goto yy14; default: goto yy16; } yy2: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy95; yy3: #line 747 "ext/standard/var_unserializer.re" { return 0; } #line 487 "ext/standard/var_unserializer.c" yy4: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy89; goto yy3; yy5: yych = *++YYCURSOR; if (yych == ';') goto yy87; goto yy3; yy6: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy83; goto yy3; yy7: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy77; goto yy3; yy8: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy53; goto yy3; yy9: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy46; goto yy3; yy10: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy39; goto yy3; yy11: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy32; goto yy3; yy12: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy25; goto yy3; yy13: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy17; goto yy3; yy14: ++YYCURSOR; #line 741 "ext/standard/var_unserializer.re" { /* this is the case where we have less data than planned */ php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Unexpected end of serialized data"); return 0; /* not sure if it should be 0 or 1 here? */ } #line 536 "ext/standard/var_unserializer.c" yy16: yych = *++YYCURSOR; goto yy3; yy17: yych = *++YYCURSOR; if (yybm[0+yych] & 128) { goto yy20; } if (yych == '+') goto yy19; yy18: YYCURSOR = YYMARKER; goto yy3; yy19: yych = *++YYCURSOR; if (yybm[0+yych] & 128) { goto yy20; } goto yy18; yy20: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 128) { goto yy20; } if (yych != ':') goto yy18; yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; #line 624 "ext/standard/var_unserializer.re" { size_t len, len2, len3, maxlen; long elements; char *class_name; zend_class_entry *ce; zend_class_entry **pce; int incomplete_class = 0; int custom_object = 0; zval *user_func; zval *retval_ptr; zval **args[1]; zval *arg_func_name; if (*start == 'C') { custom_object = 1; } INIT_PZVAL(*rval); len2 = len = parse_uiv(start + 2); maxlen = max - YYCURSOR; if (maxlen < len || len == 0) { *p = start + 2; return 0; } class_name = (char*)YYCURSOR; YYCURSOR += len; if (*(YYCURSOR) != '"') { *p = YYCURSOR; return 0; } if (*(YYCURSOR+1) != ':') { *p = YYCURSOR+1; return 0; } len3 = strspn(class_name, "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\\"); if (len3 != len) { *p = YYCURSOR + len3 - len; return 0; } class_name = estrndup(class_name, len); do { /* Try to find class directly */ if (zend_lookup_class(class_name, len2, &pce TSRMLS_CC) == SUCCESS) { ce = *pce; break; } /* Check for unserialize callback */ if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) { incomplete_class = 1; ce = PHP_IC_ENTRY; break; } /* Call unserialize callback */ MAKE_STD_ZVAL(user_func); ZVAL_STRING(user_func, PG(unserialize_callback_func), 1); args[0] = &arg_func_name; MAKE_STD_ZVAL(arg_func_name); ZVAL_STRING(arg_func_name, class_name, 1); if (call_user_function_ex(CG(function_table), NULL, user_func, &retval_ptr, 1, args, 0, NULL TSRMLS_CC) != SUCCESS) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "defined (%s) but not found", user_func->value.str.val); incomplete_class = 1; ce = PHP_IC_ENTRY; zval_ptr_dtor(&user_func); zval_ptr_dtor(&arg_func_name); break; } if (retval_ptr) { zval_ptr_dtor(&retval_ptr); } /* The callback function may have defined the class */ if (zend_lookup_class(class_name, len2, &pce TSRMLS_CC) == SUCCESS) { ce = *pce; } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function %s() hasn't defined the class it was called for", user_func->value.str.val); incomplete_class = 1; ce = PHP_IC_ENTRY; } zval_ptr_dtor(&user_func); zval_ptr_dtor(&arg_func_name); break; } while (1); *p = YYCURSOR; if (custom_object) { int ret = object_custom(UNSERIALIZE_PASSTHRU, ce); if (ret && incomplete_class) { php_store_class_name(*rval, class_name, len2); } efree(class_name); return ret; } elements = object_common1(UNSERIALIZE_PASSTHRU, ce); if (incomplete_class) { php_store_class_name(*rval, class_name, len2); } efree(class_name); return object_common2(UNSERIALIZE_PASSTHRU, elements); } #line 683 "ext/standard/var_unserializer.c" yy25: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy18; } else { if (yych <= '-') goto yy26; if (yych <= '/') goto yy18; if (yych <= '9') goto yy27; goto yy18; } yy26: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy27: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy27; if (yych >= ';') goto yy18; yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; #line 616 "ext/standard/var_unserializer.re" { INIT_PZVAL(*rval); return object_common2(UNSERIALIZE_PASSTHRU, object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR)); } #line 716 "ext/standard/var_unserializer.c" yy32: yych = *++YYCURSOR; if (yych == '+') goto yy33; if (yych <= '/') goto yy18; if (yych <= '9') goto yy34; goto yy18; yy33: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy34: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy34; if (yych >= ';') goto yy18; yych = *++YYCURSOR; if (yych != '{') goto yy18; ++YYCURSOR; #line 596 "ext/standard/var_unserializer.re" { long elements = parse_iv(start + 2); /* use iv() not uiv() in order to check data range */ *p = YYCURSOR; if (elements < 0) { return 0; } INIT_PZVAL(*rval); array_init_size(*rval, elements); if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_PP(rval), elements, 0)) { return 0; } return finish_nested_data(UNSERIALIZE_PASSTHRU); } #line 757 "ext/standard/var_unserializer.c" yy39: yych = *++YYCURSOR; if (yych == '+') goto yy40; if (yych <= '/') goto yy18; if (yych <= '9') goto yy41; goto yy18; yy40: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy41: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy41; if (yych >= ';') goto yy18; yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; #line 567 "ext/standard/var_unserializer.re" { size_t len, maxlen; char *str; len = parse_uiv(start + 2); maxlen = max - YYCURSOR; if (maxlen < len) { *p = start + 2; return 0; } if ((str = unserialize_str(&YYCURSOR, &len, maxlen)) == NULL) { return 0; } if (*(YYCURSOR) != '"') { efree(str); *p = YYCURSOR; return 0; } YYCURSOR += 2; *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_STRINGL(*rval, str, len, 0); return 1; } #line 807 "ext/standard/var_unserializer.c" yy46: yych = *++YYCURSOR; if (yych == '+') goto yy47; if (yych <= '/') goto yy18; if (yych <= '9') goto yy48; goto yy18; yy47: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy48: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy48; if (yych >= ';') goto yy18; yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; #line 539 "ext/standard/var_unserializer.re" { size_t len, maxlen; char *str; len = parse_uiv(start + 2); maxlen = max - YYCURSOR; if (maxlen < len) { *p = start + 2; return 0; } str = (char*)YYCURSOR; YYCURSOR += len; if (*(YYCURSOR) != '"') { *p = YYCURSOR; return 0; } YYCURSOR += 2; *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_STRINGL(*rval, str, len, 1); return 1; } #line 856 "ext/standard/var_unserializer.c" yy53: yych = *++YYCURSOR; if (yych <= '/') { if (yych <= ',') { if (yych == '+') goto yy57; goto yy18; } else { if (yych <= '-') goto yy55; if (yych <= '.') goto yy60; goto yy18; } } else { if (yych <= 'I') { if (yych <= '9') goto yy58; if (yych <= 'H') goto yy18; goto yy56; } else { if (yych != 'N') goto yy18; } } yych = *++YYCURSOR; if (yych == 'A') goto yy76; goto yy18; yy55: yych = *++YYCURSOR; if (yych <= '/') { if (yych == '.') goto yy60; goto yy18; } else { if (yych <= '9') goto yy58; if (yych != 'I') goto yy18; } yy56: yych = *++YYCURSOR; if (yych == 'N') goto yy72; goto yy18; yy57: yych = *++YYCURSOR; if (yych == '.') goto yy60; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy58: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; if (yych <= ':') { if (yych <= '.') { if (yych <= '-') goto yy18; goto yy70; } else { if (yych <= '/') goto yy18; if (yych <= '9') goto yy58; goto yy18; } } else { if (yych <= 'E') { if (yych <= ';') goto yy63; if (yych <= 'D') goto yy18; goto yy65; } else { if (yych == 'e') goto yy65; goto yy18; } } yy60: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy61: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; if (yych <= ';') { if (yych <= '/') goto yy18; if (yych <= '9') goto yy61; if (yych <= ':') goto yy18; } else { if (yych <= 'E') { if (yych <= 'D') goto yy18; goto yy65; } else { if (yych == 'e') goto yy65; goto yy18; } } yy63: ++YYCURSOR; #line 529 "ext/standard/var_unserializer.re" { #if SIZEOF_LONG == 4 use_double: #endif *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL)); return 1; } #line 954 "ext/standard/var_unserializer.c" yy65: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy18; } else { if (yych <= '-') goto yy66; if (yych <= '/') goto yy18; if (yych <= '9') goto yy67; goto yy18; } yy66: yych = *++YYCURSOR; if (yych <= ',') { if (yych == '+') goto yy69; goto yy18; } else { if (yych <= '-') goto yy69; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; } yy67: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy67; if (yych == ';') goto yy63; goto yy18; yy69: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy67; goto yy18; yy70: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; if (yych <= ';') { if (yych <= '/') goto yy18; if (yych <= '9') goto yy70; if (yych <= ':') goto yy18; goto yy63; } else { if (yych <= 'E') { if (yych <= 'D') goto yy18; goto yy65; } else { if (yych == 'e') goto yy65; goto yy18; } } yy72: yych = *++YYCURSOR; if (yych != 'F') goto yy18; yy73: yych = *++YYCURSOR; if (yych != ';') goto yy18; ++YYCURSOR; #line 514 "ext/standard/var_unserializer.re" { *p = YYCURSOR; INIT_PZVAL(*rval); if (!strncmp(start + 2, "NAN", 3)) { ZVAL_DOUBLE(*rval, php_get_nan()); } else if (!strncmp(start + 2, "INF", 3)) { ZVAL_DOUBLE(*rval, php_get_inf()); } else if (!strncmp(start + 2, "-INF", 4)) { ZVAL_DOUBLE(*rval, -php_get_inf()); } return 1; } #line 1028 "ext/standard/var_unserializer.c" yy76: yych = *++YYCURSOR; if (yych == 'N') goto yy73; goto yy18; yy77: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy18; } else { if (yych <= '-') goto yy78; if (yych <= '/') goto yy18; if (yych <= '9') goto yy79; goto yy18; } yy78: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy79: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy79; if (yych != ';') goto yy18; ++YYCURSOR; #line 487 "ext/standard/var_unserializer.re" { #if SIZEOF_LONG == 4 int digits = YYCURSOR - start - 3; if (start[2] == '-' || start[2] == '+') { digits--; } /* Use double for large long values that were serialized on a 64-bit system */ if (digits >= MAX_LENGTH_OF_LONG - 1) { if (digits == MAX_LENGTH_OF_LONG - 1) { int cmp = strncmp(YYCURSOR - MAX_LENGTH_OF_LONG, long_min_digits, MAX_LENGTH_OF_LONG - 1); if (!(cmp < 0 || (cmp == 0 && start[2] == '-'))) { goto use_double; } } else { goto use_double; } } #endif *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_LONG(*rval, parse_iv(start + 2)); return 1; } #line 1082 "ext/standard/var_unserializer.c" yy83: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= '2') goto yy18; yych = *++YYCURSOR; if (yych != ';') goto yy18; ++YYCURSOR; #line 480 "ext/standard/var_unserializer.re" { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_BOOL(*rval, parse_iv(start + 2)); return 1; } #line 1097 "ext/standard/var_unserializer.c" yy87: ++YYCURSOR; #line 473 "ext/standard/var_unserializer.re" { *p = YYCURSOR; INIT_PZVAL(*rval); ZVAL_NULL(*rval); return 1; } #line 1107 "ext/standard/var_unserializer.c" yy89: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy18; } else { if (yych <= '-') goto yy90; if (yych <= '/') goto yy18; if (yych <= '9') goto yy91; goto yy18; } yy90: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy91: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy91; if (yych != ';') goto yy18; ++YYCURSOR; #line 450 "ext/standard/var_unserializer.re" { long id; *p = YYCURSOR; if (!var_hash) return 0; id = parse_iv(start + 2) - 1; if (id == -1 || var_access(var_hash, id, &rval_ref) != SUCCESS) { return 0; } if (*rval == *rval_ref) return 0; if (*rval != NULL) { zval_ptr_dtor(rval); } *rval = *rval_ref; Z_ADDREF_PP(rval); Z_UNSET_ISREF_PP(rval); return 1; } #line 1153 "ext/standard/var_unserializer.c" yy95: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy18; } else { if (yych <= '-') goto yy96; if (yych <= '/') goto yy18; if (yych <= '9') goto yy97; goto yy18; } yy96: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy97: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy97; if (yych != ';') goto yy18; ++YYCURSOR; #line 429 "ext/standard/var_unserializer.re" { long id; *p = YYCURSOR; if (!var_hash) return 0; id = parse_iv(start + 2) - 1; if (id == -1 || var_access(var_hash, id, &rval_ref) != SUCCESS) { return 0; } if (*rval != NULL) { zval_ptr_dtor(rval); } *rval = *rval_ref; Z_ADDREF_PP(rval); Z_SET_ISREF_PP(rval); return 1; } #line 1197 "ext/standard/var_unserializer.c" } #line 749 "ext/standard/var_unserializer.re" return 0; }
static int jx_scan(jx_shell_scanner_state * s) { jx_char *cursor = s->cur; std: s->tok = cursor; #line 170 "<stdout>" { YYCTYPE yych; unsigned int yyaccept = 0; if((YYLIMIT - YYCURSOR) < 6) YYFILL(6); yych = *YYCURSOR; switch (yych) { case 0x00: goto yy42; case 0x09: case 0x0B: case 0x0C: case ' ': goto yy36; case 0x0A: goto yy40; case '"': goto yy8; case '#': goto yy38; case '\'': goto yy9; case '(': goto yy23; case ')': goto yy25; case '+': case '-': goto yy2; case ',': goto yy27; case '.': goto yy7; case '0': goto yy4; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy6; case ':': goto yy19; case ';': goto yy34; case '=': goto yy21; 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 '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'o': case 'p': case 'q': case 'r': case 's': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy33; case '[': goto yy11; case ']': goto yy13; case '`': goto yy10; case 'f': goto yy31; case 'n': goto yy32; case 't': goto yy29; case '{': goto yy15; case '}': goto yy17; default: goto yy44; } yy2: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy125; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy99; default: goto yy3; } yy3: #line 227 "jx_shell_scan.re" { #ifdef JX_SHELL_PARSER_DEBUG printf("unexpected character: %c\n", *s->tok); #endif RET(JX_SHELL_ERROR); } #line 291 "<stdout>" yy4: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'L': case 'U': case 'l': case 'u': goto yy97; case 'X': case 'x': goto yy118; default: goto yy117; } yy5: #line 207 "jx_shell_scan.re" { RET(JX_SHELL_ICON); } #line 307 "<stdout>" yy6: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); goto yy100; yy7: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy89; default: goto yy3; } yy8: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case 0x0A: goto yy3; default: goto yy80; } yy9: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 0x00: case 0x0A: goto yy3; default: goto yy70; } yy10: 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 ':': 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 '_': 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 yy66; default: goto yy3; } yy11: ++YYCURSOR; #line 188 "jx_shell_scan.re" { RET(JX_SHELL_OPEN_RECT_BRACE); } #line 416 "<stdout>" yy13: ++YYCURSOR; #line 189 "jx_shell_scan.re" { RET(JX_SHELL_CLOSE_RECT_BRACE); } #line 421 "<stdout>" yy15: ++YYCURSOR; #line 191 "jx_shell_scan.re" { RET(JX_SHELL_OPEN_CURLY_BRACE); } #line 426 "<stdout>" yy17: ++YYCURSOR; #line 192 "jx_shell_scan.re" { RET(JX_SHELL_CLOSE_CURLY_BRACE); } #line 431 "<stdout>" yy19: ++YYCURSOR; #line 193 "jx_shell_scan.re" { RET(JX_SHELL_COLON); } #line 436 "<stdout>" yy21: ++YYCURSOR; #line 195 "jx_shell_scan.re" { RET(JX_SHELL_EQUALS); } #line 441 "<stdout>" yy23: ++YYCURSOR; #line 197 "jx_shell_scan.re" { RET(JX_SHELL_OPEN_PAR); } #line 446 "<stdout>" yy25: ++YYCURSOR; #line 198 "jx_shell_scan.re" { RET(JX_SHELL_CLOSE_PAR); } #line 451 "<stdout>" yy27: ++YYCURSOR; #line 200 "jx_shell_scan.re" { RET(JX_SHELL_COMMA); } #line 456 "<stdout>" yy29: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'r': goto yy62; default: goto yy48; } yy30: #line 205 "jx_shell_scan.re" { RET(JX_SHELL_IDENT); } #line 467 "<stdout>" yy31: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'a': goto yy57; default: goto yy48; } yy32: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'u': goto yy53; default: goto yy48; } yy33: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); goto yy48; yy34: ++YYCURSOR; #line 209 "jx_shell_scan.re" { RET(JX_SHELL_SEMICOLON); } #line 490 "<stdout>" yy36: ++YYCURSOR; yych = *YYCURSOR; goto yy46; yy37: #line 211 "jx_shell_scan.re" { goto std; } #line 498 "<stdout>" yy38: ++YYCURSOR; #line 213 "jx_shell_scan.re" { goto comment; } #line 503 "<stdout>" yy40: ++YYCURSOR; #line 215 "jx_shell_scan.re" { s->line++; s->eof = NULL; RET(JX_SHELL_EOL); } #line 512 "<stdout>" yy42: ++YYCURSOR; #line 222 "jx_shell_scan.re" { if(cursor == s->eof) RET(JX_SHELL_EOI); RET(JX_SHELL_EOI); } #line 520 "<stdout>" yy44: yych = *++YYCURSOR; goto yy3; yy45: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy46: switch (yych) { case 0x09: case 0x0B: case 0x0C: case ' ': goto yy45; default: goto yy37; } yy47: yyaccept = 2; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy48: switch (yych) { case '.': goto yy49; 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 '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 '_': 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 yy47; default: goto yy30; } yy49: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); 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 '_': 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 yy51; default: goto yy50; } yy50: YYCURSOR = YYMARKER; switch (yyaccept) { case 0: goto yy3; case 1: goto yy5; case 2: goto yy30; case 3: goto yy56; case 4: goto yy61; case 5: goto yy65; case 6: goto yy91; } yy51: yyaccept = 2; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '.': goto yy49; 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 '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 '_': 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 yy51; default: goto yy30; } yy53: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'l': goto yy54; default: goto yy48; } yy54: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'l': goto yy55; default: goto yy48; } yy55: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy49; 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 '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 '_': 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 yy47; default: goto yy56; } yy56: #line 203 "jx_shell_scan.re" { RET(JX_SHELL_NULL); } #line 839 "<stdout>" yy57: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'l': goto yy58; default: goto yy48; } yy58: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 's': goto yy59; default: goto yy48; } yy59: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'e': goto yy60; default: goto yy48; } yy60: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy49; 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 '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 '_': 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 yy47; default: goto yy61; } yy61: #line 202 "jx_shell_scan.re" { RET(JX_SHELL_FALSE); } #line 934 "<stdout>" yy62: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'u': goto yy63; default: goto yy48; } yy63: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'e': goto yy64; default: goto yy48; } yy64: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '.': goto yy49; 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 '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 '_': 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 yy47; default: goto yy65; } yy65: #line 201 "jx_shell_scan.re" { RET(JX_SHELL_TRUE); } #line 1022 "<stdout>" yy66: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); 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 ':': 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 '_': 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 yy66; default: goto yy68; } yy68: #line 186 "jx_shell_scan.re" { RET(JX_SHELL_BUILTIN); } #line 1097 "<stdout>" yy69: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy70: switch (yych) { case 0x00: case 0x0A: goto yy50; case '\'': goto yy72; case '\\': goto yy71; default: goto yy69; } yy71: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '"': case '\'': case '?': case '\\': case 'a': case 'b': case 'f': case 'n': case 'r': case 't': case 'v': goto yy69; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy75; case 'x': goto yy74; default: goto yy50; } yy72: ++YYCURSOR; #line 184 "jx_shell_scan.re" { RET(JX_SHELL_SCON); } #line 1141 "<stdout>" yy74: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); 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 yy77; default: goto yy50; } yy75: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 0x00: case 0x0A: goto yy50; case '\'': goto yy72; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy75; case '\\': goto yy71; default: goto yy69; } yy77: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 0x00: case 0x0A: goto yy50; case '\'': goto yy72; 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 yy77; case '\\': goto yy71; default: goto yy69; } yy79: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy80: switch (yych) { case 0x00: case 0x0A: goto yy50; case '"': goto yy82; case '\\': goto yy81; default: goto yy79; } yy81: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '"': case '\'': case '?': case '\\': case 'a': case 'b': case 'f': case 'n': case 'r': case 't': case 'v': goto yy79; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy85; case 'x': goto yy84; default: goto yy50; } yy82: ++YYCURSOR; #line 182 "jx_shell_scan.re" { RET(JX_SHELL_SCON); } #line 1266 "<stdout>" yy84: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); 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 yy87; default: goto yy50; } yy85: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 0x00: case 0x0A: goto yy50; case '"': goto yy82; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy85; case '\\': goto yy81; default: goto yy79; } yy87: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 0x00: case 0x0A: goto yy50; case '"': goto yy82; 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 yy87; case '\\': goto yy81; default: goto yy79; } yy89: yyaccept = 6; YYMARKER = ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy89; case 'E': case 'e': goto yy92; case 'F': case 'L': case 'f': case 'l': goto yy93; default: goto yy91; } yy91: #line 180 "jx_shell_scan.re" { RET(JX_SHELL_FCON); } #line 1375 "<stdout>" yy92: yych = *++YYCURSOR; switch (yych) { case '+': case '-': goto yy94; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy95; default: goto yy50; } yy93: yych = *++YYCURSOR; goto yy91; yy94: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy95; default: goto yy50; } yy95: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy95; case 'F': case 'L': case 'f': case 'l': goto yy93; default: goto yy91; } yy97: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 'L': case 'U': case 'l': case 'u': goto yy97; default: goto yy5; } yy99: yyaccept = 1; YYMARKER = ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; yy100: switch (yych) { case '.': goto yy101; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy99; case 'E': case 'e': goto yy102; case 'L': case 'U': case 'l': case 'u': goto yy97; default: goto yy5; } yy101: yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'E': case 'e': goto yy108; default: goto yy107; } yy102: yych = *++YYCURSOR; switch (yych) { case '+': case '-': goto yy103; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy104; default: goto yy50; } yy103: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy104; default: goto yy50; } yy104: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy104; case 'F': case 'L': case 'f': case 'l': goto yy93; default: goto yy91; } yy106: yyaccept = 6; YYMARKER = ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; yy107: switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy106; case 'E': case 'e': goto yy112; case 'F': case 'L': case 'f': case 'l': goto yy93; default: goto yy91; } yy108: yych = *++YYCURSOR; switch (yych) { case '+': case '-': goto yy109; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy110; default: goto yy50; } yy109: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy110; default: goto yy50; } yy110: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy110; case 'F': case 'L': case 'f': case 'l': goto yy93; default: goto yy91; } yy112: yych = *++YYCURSOR; switch (yych) { case '+': case '-': goto yy113; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy114; default: goto yy50; } yy113: yych = *++YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy114; default: goto yy50; } yy114: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy114; case 'F': case 'L': case 'f': case 'l': goto yy93; default: goto yy91; } yy116: yyaccept = 1; YYMARKER = ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; yy117: switch (yych) { case '.': goto yy101; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy116; case 'E': case 'e': goto yy102; case 'L': case 'U': case 'l': case 'u': goto yy123; default: goto yy5; } yy118: 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 yy119; default: goto yy50; } yy119: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); 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 yy119; case 'L': case 'U': case 'l': case 'u': goto yy121; default: goto yy5; } yy121: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 'L': case 'U': case 'l': case 'u': goto yy121; default: goto yy5; } yy123: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 'L': case 'U': case 'l': case 'u': goto yy123; default: goto yy5; } yy125: ++YYCURSOR; switch ((yych = *YYCURSOR)) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy89; default: goto yy50; } } #line 234 "jx_shell_scan.re" comment: #line 1790 "<stdout>" { YYCTYPE yych; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch (yych) { case 0x00: goto yy128; case 0x0A: goto yy129; default: goto yy131; } yy128: yy129: ++YYCURSOR; #line 239 "jx_shell_scan.re" { s->pos = cursor; s->line++; s->eof = NULL; goto std; } #line 1809 "<stdout>" yy131: ++YYCURSOR; #line 246 "jx_shell_scan.re" { goto comment; } #line 1814 "<stdout>" } #line 247 "jx_shell_scan.re" }
Token preprocessor_lexer(IncludeState *s) { const uchar *cursor = (const uchar *) s->source; const uchar *token = cursor; const uchar *matchptr; const uchar *limit = cursor + s->bytes_left; int eoi = 0; // preprocessor directives are only valid at start of line. if (s->tokenval == ((Token) '\n')) goto ppdirective; // may jump back to scanner_loop. scanner_loop: if (YYLIMIT == YYCURSOR) YYFILL(1); token = cursor; { YYCTYPE yych; unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; switch (yych) { case 0x00: goto yy61; case '\t': case '\v': case '\f': case ' ': goto yy63; case '\n': goto yy65; case '\r': goto yy67; case '!': goto yy35; case '"': goto yy14; case '#': goto yy37; case '%': goto yy25; case '&': goto yy29; case '\'': goto yy11; case '(': goto yy39; case ')': goto yy41; case '*': goto yy23; case '+': goto yy19; case ',': goto yy47; case '-': goto yy21; case '.': goto yy12; case '/': goto yy4; case '0': goto yy8; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy10; case ':': goto yy51; case ';': goto yy59; case '<': goto yy17; case '=': goto yy33; case '>': goto yy15; case '?': goto yy57; 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 '_': 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 yy6; case '[': goto yy43; case '\\': goto yy2; case ']': goto yy45; case '^': goto yy27; case '{': goto yy53; case '|': goto yy31; case '}': goto yy55; case '~': goto yy49; default: goto yy68; } yy2: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x08) goto yy3; if (yych <= '\r') goto yy177; if (yych == ' ') goto yy177; yy3: { goto bad_chars; } yy4: ++YYCURSOR; if ((yych = *YYCURSOR) <= '.') { if (yych == '*') goto yy174; } else { if (yych <= '/') goto yy172; if (yych == '=') goto yy170; } { RET('/'); } yy6: ++YYCURSOR; yych = *YYCURSOR; goto yy169; yy7: { RET(TOKEN_IDENTIFIER); } yy8: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { if (yych <= 'T') { if (yych == 'L') goto yy144; goto yy160; } else { if (yych <= 'U') goto yy144; if (yych <= 'W') goto yy160; goto yy161; } } else { if (yych <= 't') { if (yych == 'l') goto yy144; goto yy160; } else { if (yych <= 'u') goto yy144; if (yych == 'x') goto yy161; goto yy160; } } yy9: { RET(TOKEN_INT_LITERAL); } yy10: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); goto yy142; yy11: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy3; if (yych == '\r') goto yy3; goto yy132; yy12: ++YYCURSOR; if ((yych = *YYCURSOR) <= '/') goto yy13; if (yych <= '9') goto yy123; yy13: { RET('.'); } yy14: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy3; if (yych == '\r') goto yy3; goto yy113; yy15: ++YYCURSOR; if ((yych = *YYCURSOR) <= '<') goto yy16; if (yych <= '=') goto yy106; if (yych <= '>') goto yy108; yy16: { RET('>'); } yy17: ++YYCURSOR; if ((yych = *YYCURSOR) <= ';') goto yy18; if (yych <= '<') goto yy102; if (yych <= '=') goto yy100; yy18: { RET('<'); } yy19: ++YYCURSOR; if ((yych = *YYCURSOR) == '+') goto yy96; if (yych == '=') goto yy98; { RET('+'); } yy21: ++YYCURSOR; if ((yych = *YYCURSOR) == '-') goto yy92; if (yych == '=') goto yy94; { RET('-'); } yy23: ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy90; { RET('*'); } yy25: ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy88; { RET('%'); } yy27: ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy86; { RET('^'); } yy29: ++YYCURSOR; if ((yych = *YYCURSOR) == '&') goto yy82; if (yych == '=') goto yy84; { RET('&'); } yy31: ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy80; if (yych == '|') goto yy78; { RET('|'); } yy33: ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy76; { RET('='); } yy35: ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy74; { RET('!'); } yy37: ++YYCURSOR; if ((yych = *YYCURSOR) == '#') goto yy72; { RET(TOKEN_HASH); } yy39: ++YYCURSOR; { RET('('); } yy41: ++YYCURSOR; { RET(')'); } yy43: ++YYCURSOR; { RET('['); } yy45: ++YYCURSOR; { RET(']'); } yy47: ++YYCURSOR; { RET(','); } yy49: ++YYCURSOR; { RET('~'); } yy51: ++YYCURSOR; { RET(':'); } yy53: ++YYCURSOR; { RET('{'); } yy55: ++YYCURSOR; { RET('}'); } yy57: ++YYCURSOR; { RET('?'); } yy59: ++YYCURSOR; { if (s->asm_comments) goto singlelinecomment; RET(';'); } yy61: ++YYCURSOR; { if (eoi) { RET(TOKEN_EOI); } goto bad_chars; } yy63: ++YYCURSOR; yych = *YYCURSOR; goto yy71; yy64: { if (s->report_whitespace) RET(' '); goto scanner_loop; } yy65: ++YYCURSOR; yy66: { s->line++; RET('\n'); } yy67: yych = *++YYCURSOR; if (yych == '\n') goto yy69; goto yy66; yy68: yych = *++YYCURSOR; goto yy3; yy69: yych = *++YYCURSOR; goto yy66; yy70: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy71: if (yych <= '\n') { if (yych == '\t') goto yy70; goto yy64; } else { if (yych <= '\f') goto yy70; if (yych == ' ') goto yy70; goto yy64; } yy72: ++YYCURSOR; { RET(TOKEN_HASHHASH); } yy74: ++YYCURSOR; { RET(TOKEN_NEQ); } yy76: ++YYCURSOR; { RET(TOKEN_EQL); } yy78: ++YYCURSOR; { RET(TOKEN_OROR); } yy80: ++YYCURSOR; { RET(TOKEN_ORASSIGN); } yy82: ++YYCURSOR; { RET(TOKEN_ANDAND); } yy84: ++YYCURSOR; { RET(TOKEN_ANDASSIGN); } yy86: ++YYCURSOR; { RET(TOKEN_XORASSIGN); } yy88: ++YYCURSOR; { RET(TOKEN_MODASSIGN); } yy90: ++YYCURSOR; { RET(TOKEN_MULTASSIGN); } yy92: ++YYCURSOR; { RET(TOKEN_DECREMENT); } yy94: ++YYCURSOR; { RET(TOKEN_SUBASSIGN); } yy96: ++YYCURSOR; { RET(TOKEN_INCREMENT); } yy98: ++YYCURSOR; { RET(TOKEN_ADDASSIGN); } yy100: ++YYCURSOR; { RET(TOKEN_LEQ); } yy102: ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy104; { RET(TOKEN_LSHIFT); } yy104: ++YYCURSOR; { RET(TOKEN_LSHIFTASSIGN); } yy106: ++YYCURSOR; { RET(TOKEN_GEQ); } yy108: ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy110; { RET(TOKEN_RSHIFT); } yy110: ++YYCURSOR; { RET(TOKEN_RSHIFTASSIGN); } yy112: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy113: if (yych <= '\r') { if (yych == '\n') goto yy114; if (yych <= '\f') goto yy112; } else { if (yych <= '"') { if (yych <= '!') goto yy112; goto yy116; } else { if (yych == '\\') goto yy115; goto yy112; } } yy114: YYCURSOR = YYMARKER; if (yyaccept <= 1) { if (yyaccept <= 0) { goto yy3; } else { goto yy9; } } else { goto yy125; } yy115: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'b') { if (yych <= '7') { if (yych <= '&') { if (yych == '"') goto yy112; goto yy114; } else { if (yych <= '\'') goto yy112; if (yych <= '/') goto yy114; goto yy119; } } else { if (yych <= '[') { if (yych == '?') goto yy112; goto yy114; } else { if (yych <= '\\') goto yy112; if (yych <= '`') goto yy114; goto yy112; } } } else { if (yych <= 'r') { if (yych <= 'm') { if (yych == 'f') goto yy112; goto yy114; } else { if (yych <= 'n') goto yy112; if (yych <= 'q') goto yy114; goto yy112; } } else { if (yych <= 'u') { if (yych == 't') goto yy112; goto yy114; } else { if (yych <= 'v') goto yy112; if (yych == 'x') goto yy118; goto yy114; } } } yy116: ++YYCURSOR; { RET(TOKEN_STRING_LITERAL); } yy118: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy114; if (yych <= '9') goto yy121; goto yy114; } else { if (yych <= 'F') goto yy121; if (yych <= '`') goto yy114; if (yych <= 'f') goto yy121; goto yy114; } yy119: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '!') { if (yych <= '\n') { if (yych <= '\t') goto yy112; goto yy114; } else { if (yych == '\r') goto yy114; goto yy112; } } else { if (yych <= '7') { if (yych <= '"') goto yy116; if (yych <= '/') goto yy112; goto yy119; } else { if (yych == '\\') goto yy115; goto yy112; } } yy121: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') { if (yych <= '\f') { if (yych == '\n') goto yy114; goto yy112; } else { if (yych <= '\r') goto yy114; if (yych == '"') goto yy116; goto yy112; } } else { if (yych <= '[') { if (yych <= '9') goto yy121; if (yych <= '@') goto yy112; if (yych <= 'F') goto yy121; goto yy112; } else { if (yych <= '\\') goto yy115; if (yych <= '`') goto yy112; if (yych <= 'f') goto yy121; goto yy112; } } yy123: yyaccept = 2; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= 'G') { if (yych <= 'D') { if (yych <= '/') goto yy125; if (yych <= '9') goto yy123; } else { if (yych <= 'E') goto yy126; if (yych <= 'F') goto yy127; } } else { if (yych <= 'e') { if (yych <= 'H') goto yy127; if (yych >= 'e') goto yy126; } else { if (yych == 'g') goto yy125; if (yych <= 'h') goto yy127; } } yy125: { RET(TOKEN_FLOAT_LITERAL); } yy126: yych = *++YYCURSOR; if (yych <= ',') { if (yych == '+') goto yy128; goto yy114; } else { if (yych <= '-') goto yy128; if (yych <= '/') goto yy114; if (yych <= '9') goto yy129; goto yy114; } yy127: yych = *++YYCURSOR; goto yy125; yy128: yych = *++YYCURSOR; if (yych <= '/') goto yy114; if (yych >= ':') goto yy114; yy129: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'G') { if (yych <= '9') { if (yych <= '/') goto yy125; goto yy129; } else { if (yych == 'F') goto yy127; goto yy125; } } else { if (yych <= 'f') { if (yych <= 'H') goto yy127; if (yych <= 'e') goto yy125; goto yy127; } else { if (yych == 'h') goto yy127; goto yy125; } } yy131: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy132: if (yych <= '\r') { if (yych == '\n') goto yy114; if (yych <= '\f') goto yy131; goto yy114; } else { if (yych <= '\'') { if (yych <= '&') goto yy131; goto yy134; } else { if (yych != '\\') goto yy131; } } yy133: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'b') { if (yych <= '7') { if (yych <= '&') { if (yych == '"') goto yy131; goto yy114; } else { if (yych <= '\'') goto yy131; if (yych <= '/') goto yy114; goto yy136; } } else { if (yych <= '[') { if (yych == '?') goto yy131; goto yy114; } else { if (yych <= '\\') goto yy131; if (yych <= '`') goto yy114; goto yy131; } } } else { if (yych <= 'r') { if (yych <= 'm') { if (yych == 'f') goto yy131; goto yy114; } else { if (yych <= 'n') goto yy131; if (yych <= 'q') goto yy114; goto yy131; } } else { if (yych <= 'u') { if (yych == 't') goto yy131; goto yy114; } else { if (yych <= 'v') goto yy131; if (yych == 'x') goto yy135; goto yy114; } } } yy134: yych = *++YYCURSOR; goto yy9; yy135: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy114; if (yych <= '9') goto yy138; goto yy114; } else { if (yych <= 'F') goto yy138; if (yych <= '`') goto yy114; if (yych <= 'f') goto yy138; goto yy114; } yy136: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '&') { if (yych <= '\n') { if (yych <= '\t') goto yy131; goto yy114; } else { if (yych == '\r') goto yy114; goto yy131; } } else { if (yych <= '7') { if (yych <= '\'') goto yy134; if (yych <= '/') goto yy131; goto yy136; } else { if (yych == '\\') goto yy133; goto yy131; } } yy138: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') { if (yych <= '\f') { if (yych == '\n') goto yy114; goto yy131; } else { if (yych <= '\r') goto yy114; if (yych == '\'') goto yy134; goto yy131; } } else { if (yych <= '[') { if (yych <= '9') goto yy138; if (yych <= '@') goto yy131; if (yych <= 'F') goto yy138; goto yy131; } else { if (yych <= '\\') goto yy133; if (yych <= '`') goto yy131; if (yych <= 'f') goto yy138; goto yy131; } } yy140: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'E') goto yy151; if (yych == 'e') goto yy151; goto yy150; yy141: yyaccept = 1; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; yy142: if (yych <= 'L') { if (yych <= '9') { if (yych == '.') goto yy140; if (yych <= '/') goto yy9; goto yy141; } else { if (yych == 'E') goto yy143; if (yych <= 'K') goto yy9; goto yy144; } } else { if (yych <= 'e') { if (yych == 'U') goto yy144; if (yych <= 'd') goto yy9; } else { if (yych <= 'l') { if (yych <= 'k') goto yy9; goto yy144; } else { if (yych == 'u') goto yy144; goto yy9; } } } yy143: yych = *++YYCURSOR; if (yych <= ',') { if (yych == '+') goto yy146; goto yy114; } else { if (yych <= '-') goto yy146; if (yych <= '/') goto yy114; if (yych <= '9') goto yy147; goto yy114; } yy144: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'U') { if (yych == 'L') goto yy144; if (yych <= 'T') goto yy9; goto yy144; } else { if (yych <= 'l') { if (yych <= 'k') goto yy9; goto yy144; } else { if (yych == 'u') goto yy144; goto yy9; } } yy146: yych = *++YYCURSOR; if (yych <= '/') goto yy114; if (yych >= ':') goto yy114; yy147: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'G') { if (yych <= '9') { if (yych <= '/') goto yy125; goto yy147; } else { if (yych == 'F') goto yy127; goto yy125; } } else { if (yych <= 'f') { if (yych <= 'H') goto yy127; if (yych <= 'e') goto yy125; goto yy127; } else { if (yych == 'h') goto yy127; goto yy125; } } yy149: yyaccept = 2; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; yy150: if (yych <= 'G') { if (yych <= 'D') { if (yych <= '/') goto yy125; if (yych <= '9') goto yy149; goto yy125; } else { if (yych <= 'E') goto yy155; if (yych <= 'F') goto yy127; goto yy125; } } else { if (yych <= 'e') { if (yych <= 'H') goto yy127; if (yych <= 'd') goto yy125; goto yy155; } else { if (yych == 'g') goto yy125; if (yych <= 'h') goto yy127; goto yy125; } } yy151: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy114; } else { if (yych <= '-') goto yy152; if (yych <= '/') goto yy114; if (yych <= '9') goto yy153; goto yy114; } yy152: yych = *++YYCURSOR; if (yych <= '/') goto yy114; if (yych >= ':') goto yy114; yy153: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'G') { if (yych <= '9') { if (yych <= '/') goto yy125; goto yy153; } else { if (yych == 'F') goto yy127; goto yy125; } } else { if (yych <= 'f') { if (yych <= 'H') goto yy127; if (yych <= 'e') goto yy125; goto yy127; } else { if (yych == 'h') goto yy127; goto yy125; } } yy155: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy114; } else { if (yych <= '-') goto yy156; if (yych <= '/') goto yy114; if (yych <= '9') goto yy157; goto yy114; } yy156: yych = *++YYCURSOR; if (yych <= '/') goto yy114; if (yych >= ':') goto yy114; yy157: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'G') { if (yych <= '9') { if (yych <= '/') goto yy125; goto yy157; } else { if (yych == 'F') goto yy127; goto yy125; } } else { if (yych <= 'f') { if (yych <= 'H') goto yy127; if (yych <= 'e') goto yy125; goto yy127; } else { if (yych == 'h') goto yy127; goto yy125; } } yy159: yyaccept = 1; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; yy160: if (yych <= 'L') { if (yych <= '9') { if (yych == '.') goto yy140; if (yych <= '/') goto yy9; goto yy159; } else { if (yych == 'E') goto yy143; if (yych <= 'K') goto yy9; goto yy166; } } else { if (yych <= 'e') { if (yych == 'U') goto yy166; if (yych <= 'd') goto yy9; goto yy143; } else { if (yych <= 'l') { if (yych <= 'k') goto yy9; goto yy166; } else { if (yych == 'u') goto yy166; goto yy9; } } } yy161: yych = *++YYCURSOR; if (yych <= '@') { if (yych <= '/') goto yy114; if (yych >= ':') goto yy114; } else { if (yych <= 'F') goto yy162; if (yych <= '`') goto yy114; if (yych >= 'g') goto yy114; } yy162: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'T') { if (yych <= '@') { if (yych <= '/') goto yy9; if (yych <= '9') goto yy162; goto yy9; } else { if (yych <= 'F') goto yy162; if (yych != 'L') goto yy9; } } else { if (yych <= 'k') { if (yych <= 'U') goto yy164; if (yych <= '`') goto yy9; if (yych <= 'f') goto yy162; goto yy9; } else { if (yych <= 'l') goto yy164; if (yych != 'u') goto yy9; } } yy164: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'U') { if (yych == 'L') goto yy164; if (yych <= 'T') goto yy9; goto yy164; } else { if (yych <= 'l') { if (yych <= 'k') goto yy9; goto yy164; } else { if (yych == 'u') goto yy164; goto yy9; } } yy166: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'U') { if (yych == 'L') goto yy166; if (yych <= 'T') goto yy9; goto yy166; } else { if (yych <= 'l') { if (yych <= 'k') goto yy9; goto yy166; } else { if (yych == 'u') goto yy166; goto yy9; } } yy168: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy169: if (yych <= 'Z') { if (yych <= '/') goto yy7; if (yych <= '9') goto yy168; if (yych <= '@') goto yy7; goto yy168; } else { if (yych <= '_') { if (yych <= '^') goto yy7; goto yy168; } else { if (yych <= '`') goto yy7; if (yych <= 'z') goto yy168; goto yy7; } } yy170: ++YYCURSOR; { RET(TOKEN_DIVASSIGN); } yy172: ++YYCURSOR; { goto singlelinecomment; } yy174: ++YYCURSOR; { goto multilinecomment; } yy176: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; yy177: if (yych <= '\f') { if (yych <= 0x08) goto yy114; if (yych != '\n') goto yy176; } else { if (yych <= '\r') goto yy180; if (yych == ' ') goto yy176; goto yy114; } yy178: ++YYCURSOR; yy179: { s->line++; goto scanner_loop; } yy180: ++YYCURSOR; if ((yych = *YYCURSOR) == '\n') goto yy178; goto yy179; } multilinecomment: if (YYLIMIT == YYCURSOR) YYFILL(1); matchptr = cursor; // The "*\/" is just to avoid screwing up text editor syntax highlighting. { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '\f') { if (yych <= 0x00) goto yy188; if (yych == '\n') goto yy185; goto yy190; } else { if (yych <= '\r') goto yy187; if (yych != '*') goto yy190; } ++YYCURSOR; if ((yych = *YYCURSOR) == '/') goto yy192; yy184: { goto multilinecomment; } yy185: ++YYCURSOR; yy186: { s->line++; goto multilinecomment; } yy187: yych = *++YYCURSOR; if (yych == '\n') goto yy191; goto yy186; yy188: ++YYCURSOR; { if (eoi) RET(TOKEN_INCOMPLETE_COMMENT); goto multilinecomment; } yy190: yych = *++YYCURSOR; goto yy184; yy191: yych = *++YYCURSOR; goto yy186; yy192: ++YYCURSOR; { if (s->report_comments) RET(TOKEN_MULTI_COMMENT); else if (s->report_whitespace) RET(' '); // Microsoft's preprocessor allows multiline comments // before a preprocessor directive, even though C/C++ // doesn't. See if we've hit this case. #if MATCH_MICROSOFT_PREPROCESSOR if (s->tokenval == ((Token) '\n')) // was start of line? { update_state(s, eoi, cursor, token, (Token) '\n'); goto ppdirective; // may jump back to scanner_loop. } #endif goto scanner_loop; } } singlelinecomment: if (YYLIMIT == YYCURSOR) YYFILL(1); matchptr = cursor; { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '\n') { if (yych <= 0x00) goto yy199; if (yych <= '\t') goto yy201; } else { if (yych == '\r') goto yy198; goto yy201; } ++YYCURSOR; yy197: { s->line++; if (s->report_comments) { cursor = matchptr; // so we RET('\n') next. RET(TOKEN_SINGLE_COMMENT); } token = matchptr; RET('\n'); } yy198: yych = *++YYCURSOR; if (yych == '\n') goto yy203; goto yy197; yy199: ++YYCURSOR; { if (eoi) { if (s->report_comments) RET(TOKEN_SINGLE_COMMENT); else RET(TOKEN_EOI); } goto singlelinecomment; } yy201: ++YYCURSOR; { goto singlelinecomment; } yy203: ++YYCURSOR; yych = *YYCURSOR; goto yy197; } ppdirective: if (YYLIMIT == YYCURSOR) YYFILL(1); { YYCTYPE yych; unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); yych = *YYCURSOR; if (yych <= '\f') { if (yych == '\t') goto yy208; if (yych <= '\n') goto yy210; goto yy208; } else { if (yych <= ' ') { if (yych <= 0x1F) goto yy210; goto yy208; } else { if (yych != '#') goto yy210; } } yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'h') { if (yych <= 0x1F) { if (yych == '\t') goto yy214; } else { if (yych <= ' ') goto yy214; if (yych <= 'c') goto yy207; if (yych <= 'e') goto yy214; } } else { if (yych <= 'o') { if (yych <= 'i') goto yy214; if (yych == 'l') goto yy214; } else { if (yych <= 'p') goto yy214; if (yych == 'u') goto yy214; } } yy207: { token = cursor = (const uchar *) s->source; limit = cursor + s->bytes_left; goto scanner_loop; } yy208: ++YYCURSOR; yych = *YYCURSOR; goto yy212; yy209: { goto ppdirective; } yy210: yych = *++YYCURSOR; goto yy207; yy211: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy212: if (yych <= '\n') { if (yych == '\t') goto yy211; goto yy209; } else { if (yych <= '\f') goto yy211; if (yych == ' ') goto yy211; goto yy209; } yy213: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7); yych = *YYCURSOR; yy214: if (yych <= 'h') { if (yych <= ' ') { if (yych == '\t') goto yy213; if (yych >= ' ') goto yy213; } else { if (yych <= 'c') goto yy215; if (yych <= 'd') goto yy220; if (yych <= 'e') goto yy217; } } else { if (yych <= 'o') { if (yych <= 'i') goto yy218; if (yych == 'l') goto yy221; } else { if (yych <= 'p') goto yy216; if (yych == 'u') goto yy219; } } yy215: YYCURSOR = YYMARKER; if (yyaccept <= 0) { goto yy207; } else { goto yy239; } yy216: yych = *++YYCURSOR; if (yych == 'r') goto yy272; goto yy215; yy217: yych = *++YYCURSOR; if (yych <= 'm') { if (yych == 'l') goto yy255; goto yy215; } else { if (yych <= 'n') goto yy256; if (yych == 'r') goto yy257; goto yy215; } yy218: yych = *++YYCURSOR; if (yych == 'f') goto yy238; if (yych == 'n') goto yy237; goto yy215; yy219: yych = *++YYCURSOR; if (yych == 'n') goto yy232; goto yy215; yy220: yych = *++YYCURSOR; if (yych == 'e') goto yy226; goto yy215; yy221: yych = *++YYCURSOR; if (yych != 'i') goto yy215; yych = *++YYCURSOR; if (yych != 'n') goto yy215; yych = *++YYCURSOR; if (yych != 'e') goto yy215; ++YYCURSOR; { RET(TOKEN_PP_LINE); } yy226: yych = *++YYCURSOR; if (yych != 'f') goto yy215; yych = *++YYCURSOR; if (yych != 'i') goto yy215; yych = *++YYCURSOR; if (yych != 'n') goto yy215; yych = *++YYCURSOR; if (yych != 'e') goto yy215; ++YYCURSOR; { RET(TOKEN_PP_DEFINE); } yy232: yych = *++YYCURSOR; if (yych != 'd') goto yy215; yych = *++YYCURSOR; if (yych != 'e') goto yy215; yych = *++YYCURSOR; if (yych != 'f') goto yy215; ++YYCURSOR; { RET(TOKEN_PP_UNDEF); } yy237: yych = *++YYCURSOR; if (yych == 'c') goto yy249; goto yy215; yy238: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'd') goto yy241; if (yych == 'n') goto yy240; yy239: { RET(TOKEN_PP_IF); } yy240: yych = *++YYCURSOR; if (yych == 'd') goto yy245; goto yy215; yy241: yych = *++YYCURSOR; if (yych != 'e') goto yy215; yych = *++YYCURSOR; if (yych != 'f') goto yy215; ++YYCURSOR; { RET(TOKEN_PP_IFDEF); } yy245: yych = *++YYCURSOR; if (yych != 'e') goto yy215; yych = *++YYCURSOR; if (yych != 'f') goto yy215; ++YYCURSOR; { RET(TOKEN_PP_IFNDEF); } yy249: yych = *++YYCURSOR; if (yych != 'l') goto yy215; yych = *++YYCURSOR; if (yych != 'u') goto yy215; yych = *++YYCURSOR; if (yych != 'd') goto yy215; yych = *++YYCURSOR; if (yych != 'e') goto yy215; ++YYCURSOR; { RET(TOKEN_PP_INCLUDE); } yy255: yych = *++YYCURSOR; if (yych == 'i') goto yy266; if (yych == 's') goto yy267; goto yy215; yy256: yych = *++YYCURSOR; if (yych == 'd') goto yy262; goto yy215; yy257: yych = *++YYCURSOR; if (yych != 'r') goto yy215; yych = *++YYCURSOR; if (yych != 'o') goto yy215; yych = *++YYCURSOR; if (yych != 'r') goto yy215; ++YYCURSOR; { RET(TOKEN_PP_ERROR); } yy262: yych = *++YYCURSOR; if (yych != 'i') goto yy215; yych = *++YYCURSOR; if (yych != 'f') goto yy215; ++YYCURSOR; { RET(TOKEN_PP_ENDIF); } yy266: yych = *++YYCURSOR; if (yych == 'f') goto yy270; goto yy215; yy267: yych = *++YYCURSOR; if (yych != 'e') goto yy215; ++YYCURSOR; { RET(TOKEN_PP_ELSE); } yy270: ++YYCURSOR; { RET(TOKEN_PP_ELIF); } yy272: yych = *++YYCURSOR; if (yych != 'a') goto yy215; yych = *++YYCURSOR; if (yych != 'g') goto yy215; yych = *++YYCURSOR; if (yych != 'm') goto yy215; yych = *++YYCURSOR; if (yych != 'a') goto yy215; ++YYCURSOR; { RET(TOKEN_PP_PRAGMA); } } bad_chars: if (YYLIMIT == YYCURSOR) YYFILL(1); { YYCTYPE yych; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '#') { if (yych <= '\r') { if (yych <= 0x00) goto yy282; if (yych <= 0x08) goto yy284; } else { if (yych <= 0x1F) goto yy284; if (yych == '"') goto yy284; } } else { if (yych <= '@') { if (yych <= '$') goto yy284; if (yych >= '@') goto yy284; } else { if (yych == '`') goto yy284; if (yych >= 0x7F) goto yy284; } } ++YYCURSOR; { cursor--; RET(TOKEN_BAD_CHARS); } yy282: ++YYCURSOR; { if (eoi) { assert( !((token >= sentinel) && (token < sentinel+YYMAXFILL)) ); eoi = 0; cursor = (uchar *) s->source_base + s->orig_length; RET(TOKEN_BAD_CHARS); // next call will be EOI. } goto bad_chars; } yy284: ++YYCURSOR; { goto bad_chars; } } assert(0 && "Shouldn't hit this code"); RET(TOKEN_UNKNOWN); } // preprocessor_lexer
/* cron string is on format "minute hour day month wday" where fields may have a numeric type, an asterix, a sequence of numbers or a range */ int Time_incron(const char *cron, time_t time) { assert(cron); #undef YYCURSOR #undef YYLIMIT #undef YYMARKER #define YYCURSOR cron #define YYLIMIT end #define YYMARKER m #define YYTOKEN t const char *m; const char *t; const char *end = cron + strlen(cron); int n = 0; int found = 0; int fields[] = {Time_minutes(time), Time_hour(time), Time_day(time), Time_month(time), Time_weekday(time)}; parse: if (YYCURSOR >= YYLIMIT) return found == 5; YYTOKEN = YYCURSOR; { YYCTYPE yych; 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= ' ') { if (yych <= '\f') { if (yych <= 0x08) goto yy70; if (yych >= '\v') goto yy70; } else { if (yych <= '\r') goto yy62; if (yych <= 0x1F) goto yy70; } } else { if (yych <= '+') { if (yych == '*') goto yy64; goto yy70; } else { if (yych <= ',') goto yy66; if (yych <= '/') goto yy70; if (yych <= '9') goto yy68; goto yy70; } } yy62: ++YYCURSOR; { goto parse; } yy64: ++YYCURSOR; { n++; found++; goto parse; } yy66: ++YYCURSOR; { n--; // backtrack on field advance assert(n < 5 && n >= 0); goto parse; } yy68: yych = *(YYMARKER = ++YYCURSOR); goto yy73; yy69: { int v = Str_parseInt(YYTOKEN); if (fields[n] == v) found++; n++; goto parse; } yy70: ++YYCURSOR; { return false; } yy72: YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; yy73: if (yybm[0+yych] & 128) { goto yy72; } if (yych != '-') goto yy69; yych = *++YYCURSOR; if (yych <= '/') goto yy75; if (yych <= '9') goto yy76; yy75: YYCURSOR = YYMARKER; goto yy69; yy76: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy78; if (yych <= '9') goto yy76; yy78: { int from = Str_parseInt(YYTOKEN); int to = Str_parseInt(strchr(YYTOKEN, '-') + 1); if ((fields[n] <= to) && (fields[n] >= from)) found++; n++; goto parse; } } return found == 5; }
static time_t parseDate(const char *date) { #define YYCTYPE char #define YYCURSOR date #define YYLIMIT end #define YYMARKER m #define YYFILL(n) ((void)0) const char *t; const char *m; struct tm time = {0}; const char *end = date + strlen(date); time.tm_mon = -1; time.tm_year = -1; time.tm_mday = -1; time.tm_isdst = -1; for (;;) { if (YYCURSOR >= YYLIMIT) { if (time.tm_mon== -1 || time.tm_year== -1 || time.tm_mday== -1) return -1; return mktime(&time); } t = YYCURSOR; { YYCTYPE yych; unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); yych = *YYCURSOR; switch (yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy11; case 'A': case 'a': goto yy6; case 'D': case 'd': goto yy10; case 'F': case 'f': goto yy4; case 'J': case 'j': goto yy2; case 'M': case 'm': goto yy5; case 'N': case 'n': goto yy9; case 'O': case 'o': goto yy8; case 'S': case 's': goto yy7; default: goto yy12; } yy2: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { if (yych == 'A') goto yy53; if (yych >= 'U') goto yy52; } else { if (yych <= 'a') { if (yych >= 'a') goto yy53; } else { if (yych == 'u') goto yy52; } } yy3: { continue; } yy4: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'E') goto yy49; if (yych == 'e') goto yy49; goto yy3; yy5: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'A') goto yy44; if (yych == 'a') goto yy44; goto yy3; yy6: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { if (yych == 'P') goto yy39; if (yych <= 'T') goto yy3; goto yy38; } else { if (yych <= 'p') { if (yych <= 'o') goto yy3; goto yy39; } else { if (yych == 'u') goto yy38; goto yy3; } } yy7: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'E') goto yy35; if (yych == 'e') goto yy35; goto yy3; yy8: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'C') goto yy32; if (yych == 'c') goto yy32; goto yy3; yy9: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'O') goto yy29; if (yych == 'o') goto yy29; goto yy3; yy10: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'E') goto yy26; if (yych == 'e') goto yy26; goto yy3; yy11: yych = *++YYCURSOR; if (yych <= '/') goto yy3; if (yych <= '9') goto yy13; goto yy3; yy12: yych = *++YYCURSOR; goto yy3; yy13: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') goto yy14; if (yych <= '9') goto yy15; if (yych <= ':') goto yy17; yy14: { if (sscanf(t, "%d", &time.tm_mday) != 1) time.tm_mday = -1; continue; } yy15: yych = *++YYCURSOR; if (yych <= '/') goto yy16; if (yych <= '9') goto yy24; yy16: YYCURSOR = YYMARKER; if (yyaccept <= 0) { goto yy3; } else { goto yy14; } yy17: yych = *++YYCURSOR; if (yych <= '/') goto yy16; if (yych >= ':') goto yy16; yych = *++YYCURSOR; if (yych <= '/') goto yy16; if (yych >= ':') goto yy16; yych = *++YYCURSOR; if (yych != ':') goto yy16; yych = *++YYCURSOR; if (yych <= '/') goto yy16; if (yych >= ':') goto yy16; yych = *++YYCURSOR; if (yych <= '/') goto yy16; if (yych >= ':') goto yy16; ++YYCURSOR; { sscanf(t, "%d:%d:%d", &time.tm_hour, &time.tm_min, &time.tm_sec); continue; } yy24: ++YYCURSOR; { if (sscanf(t, "%d", &time.tm_year) == 1) time.tm_year -=1900; else time.tm_year = -1; continue; } yy26: yych = *++YYCURSOR; if (yych == 'C') goto yy27; if (yych != 'c') goto yy16; yy27: ++YYCURSOR; { time.tm_mon = 11; continue; } yy29: yych = *++YYCURSOR; if (yych == 'V') goto yy30; if (yych != 'v') goto yy16; yy30: ++YYCURSOR; { time.tm_mon = 10; continue; } yy32: yych = *++YYCURSOR; if (yych == 'T') goto yy33; if (yych != 't') goto yy16; yy33: ++YYCURSOR; { time.tm_mon = 9; continue; } yy35: yych = *++YYCURSOR; if (yych == 'P') goto yy36; if (yych != 'p') goto yy16; yy36: ++YYCURSOR; { time.tm_mon = 8; continue; } yy38: yych = *++YYCURSOR; if (yych == 'G') goto yy42; if (yych == 'g') goto yy42; goto yy16; yy39: yych = *++YYCURSOR; if (yych == 'R') goto yy40; if (yych != 'r') goto yy16; yy40: ++YYCURSOR; { time.tm_mon = 3; continue; } yy42: ++YYCURSOR; { time.tm_mon = 7; continue; } yy44: yych = *++YYCURSOR; if (yych <= 'Y') { if (yych == 'R') goto yy45; if (yych <= 'X') goto yy16; goto yy47; } else { if (yych <= 'r') { if (yych <= 'q') goto yy16; } else { if (yych == 'y') goto yy47; goto yy16; } } yy45: ++YYCURSOR; { time.tm_mon = 2; continue; } yy47: ++YYCURSOR; { time.tm_mon = 4; continue; } yy49: yych = *++YYCURSOR; if (yych == 'B') goto yy50; if (yych != 'b') goto yy16; yy50: ++YYCURSOR; { time.tm_mon = 1; continue; } yy52: yych = *++YYCURSOR; if (yych <= 'N') { if (yych == 'L') goto yy58; if (yych <= 'M') goto yy16; goto yy56; } else { if (yych <= 'l') { if (yych <= 'k') goto yy16; goto yy58; } else { if (yych == 'n') goto yy56; goto yy16; } } yy53: yych = *++YYCURSOR; if (yych == 'N') goto yy54; if (yych != 'n') goto yy16; yy54: ++YYCURSOR; { time.tm_mon = 0; continue; } yy56: ++YYCURSOR; { time.tm_mon = 5; continue; } yy58: ++YYCURSOR; { time.tm_mon = 6; continue; } } } return -1; }
ArrayTokenType array_scan(const char*& p) { char* q = 0; #define YYCTYPE char #define YYCURSOR p #define YYLIMIT p #define YYMARKER q #define YYFILL(n) 0 { YYCTYPE yych; if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; switch(yych) { case 0x00: goto yy13; case 0x09: case 0x0B: case 0x0C: case ' ': case 'h': goto yy8; case 0x0A: goto yy11; case 0x0D: goto yy10; case ',': goto yy6; case '[': goto yy2; case ']': goto yy4; default: goto yy15; } yy2: ++YYCURSOR; {return ArrayTokenType_LEFT_SQUARE_BRACKET;} yy4: ++YYCURSOR; {return ArrayTokenType_RIGHT_SQUARE_BRACKET;} yy6: ++YYCURSOR; {return ArrayTokenType_COMMA;} yy8: ++YYCURSOR; switch((yych = *YYCURSOR)) { case 0x09: case 0x0B: case 0x0C: case 0x0D: case ' ': case 'h': goto yy21; case ',': case '[': case ']': goto yy9; default: goto yy17; } yy9: {return ArrayTokenType_SPACE;} yy10: yych = *++YYCURSOR; switch(yych) { case 0x09: case 0x0B: case 0x0C: case ' ': case 'h': goto yy21; case 0x0A: goto yy19; case 0x0D: goto yy23; case ',': case '[': case ']': goto yy9; default: goto yy17; } yy11: ++YYCURSOR; switch((yych = *YYCURSOR)) { case 0x0A: case 0x0D: goto yy19; case ',': case '[': case ']': goto yy12; default: goto yy17; } yy12: {return ArrayTokenType_EOF;} yy13: ++YYCURSOR; switch((yych = *YYCURSOR)) { case ',': case '[': case ']': goto yy14; default: goto yy17; } yy14: {return ArrayTokenType_EOL;} yy15: ++YYCURSOR; yych = *YYCURSOR; goto yy18; yy16: {return ArrayTokenType_VALUE;} yy17: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy18: switch(yych) { case ',': case '[': case ']': goto yy16; default: goto yy17; } yy19: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych) { case 0x0A: case 0x0D: goto yy19; case ',': case '[': case ']': goto yy12; default: goto yy17; } yy21: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych) { case 0x09: case 0x0B: case 0x0C: case 0x0D: case ' ': case 'h': goto yy21; case ',': case '[': case ']': goto yy9; default: goto yy17; } yy23: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych) { case 0x09: case 0x0B: case 0x0C: case ' ': case 'h': goto yy21; case 0x0A: goto yy19; case 0x0D: goto yy23; case ',': case '[': case ']': goto yy9; default: goto yy17; } } }
void scan(unsigned char* in) { { YYCTYPE yych; static void *yyctable[2] = { &&yyc_r1, &&yyc_r2, }; goto *yyctable[YYGETCONDITION()]; /* *********************************** */ yyc_r1: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; { static void *yytarget[256] = { &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy3, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy6, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy8, &&yy10, &&yy12, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4 }; goto *yytarget[yych]; } yy3: yy4: ++YYCURSOR; { return "."; } yy6: ++YYCURSOR; { return "1"; } yy8: ++YYCURSOR; { return "a"; } yy10: ++YYCURSOR; { return "b"; } yy12: ++YYCURSOR; { return "c"; } /* *********************************** */ yyc_r2: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '`') { if (yych != '\n') goto yy17; } else { if (yych <= 'a') goto yy19; if (yych == 'c') goto yy21; goto yy17; } yy17: ++YYCURSOR; { return "."; } yy19: ++YYCURSOR; { return "a"; } yy21: ++YYCURSOR; { return "c"; } } } void scan(unsigned short* in) { { YYCTYPE yych; static void *yyctable[2] = { &&yyc_r1, &&yyc_r2, }; goto *yyctable[YYGETCONDITION()]; /* *********************************** */ yyc_r1: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; { static void *yytarget[256] = { &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy3, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy6, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy8, &&yy10, &&yy12, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4, &&yy4 }; goto *yytarget[yych]; } yy3: yy4: ++YYCURSOR; { return "."; } yy6: ++YYCURSOR; { return "2"; } yy8: ++YYCURSOR; { return "a"; } yy10: ++YYCURSOR; { return "b"; } yy12: ++YYCURSOR; { return "c"; } /* *********************************** */ yyc_r2: if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '`') { if (yych != '\n') goto yy17; } else { if (yych <= 'a') goto yy19; if (yych == 'c') goto yy21; goto yy17; } yy17: ++YYCURSOR; { return "."; } yy19: ++YYCURSOR; { return "a"; } yy21: ++YYCURSOR; { return "c"; } } }
void scan(YYCTYPE *pText, size_t *pSize, int *pbChanged) { // rule // scan lines // find $ in lines // compact $<keyword>: .. $ to $<keyword>$ YYCTYPE *output; const YYCTYPE *cursor, *limit, *marker; cursor = marker = output = *pText; size_t insize = *pSize; size_t outsize = 0; limit = cursor + insize; while(1) { loop: #line 43 "<stdout>" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; if (yych != '$') goto yy4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'D': goto yy10; case 'I': goto yy9; case 'L': goto yy8; case 'R': goto yy7; case 'S': goto yy5; default: goto yy3; } yy3: #line 53 "cvsignore.s.re" { output[outsize++] = cursor[-1]; if (cursor >= limit) break; goto loop; } #line 62 "<stdout>" yy4: yych = *++YYCURSOR; goto yy3; yy5: yych = *++YYCURSOR; if (yych == 'o') goto yy44; yy6: YYCURSOR = YYMARKER; goto yy3; yy7: yych = *++YYCURSOR; if (yych == 'e') goto yy32; goto yy6; yy8: yych = *++YYCURSOR; if (yych == 'o') goto yy25; goto yy6; yy9: yych = *++YYCURSOR; if (yych == 'd') goto yy19; goto yy6; yy10: yych = *++YYCURSOR; if (yych != 'a') goto yy6; yych = *++YYCURSOR; if (yych != 't') goto yy6; yych = *++YYCURSOR; if (yych != 'e') goto yy6; yych = *++YYCURSOR; if (yych == '$') goto yy15; if (yych != ':') goto yy6; yych = *++YYCURSOR; if (yych == '$') goto yy6; goto yy18; yy15: ++YYCURSOR; #line 48 "cvsignore.s.re" { APPEND(L"$" L"Date$"); goto loop; } #line 101 "<stdout>" yy17: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy18: if (yych == '\n') goto yy6; if (yych == '$') goto yy15; goto yy17; yy19: yych = *++YYCURSOR; if (yych == '$') goto yy21; if (yych != ':') goto yy6; yych = *++YYCURSOR; if (yych == '$') goto yy6; goto yy24; yy21: ++YYCURSOR; #line 49 "cvsignore.s.re" { APPEND(L"$" L"Id$"); goto loop; } #line 121 "<stdout>" yy23: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy24: if (yych == '\n') goto yy6; if (yych == '$') goto yy21; goto yy23; yy25: yych = *++YYCURSOR; if (yych != 'g') goto yy6; yych = *++YYCURSOR; if (yych == '$') goto yy28; if (yych != ':') goto yy6; yych = *++YYCURSOR; if (yych == '$') goto yy6; goto yy31; yy28: ++YYCURSOR; #line 50 "cvsignore.s.re" { APPEND(L"$" L"Log$"); goto loop; } #line 143 "<stdout>" yy30: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy31: if (yych == '\n') goto yy6; if (yych == '$') goto yy28; goto yy30; yy32: yych = *++YYCURSOR; if (yych != 'v') goto yy6; yych = *++YYCURSOR; if (yych != 'i') goto yy6; yych = *++YYCURSOR; if (yych != 's') goto yy6; yych = *++YYCURSOR; if (yych != 'i') goto yy6; yych = *++YYCURSOR; if (yych != 'o') goto yy6; yych = *++YYCURSOR; if (yych != 'n') goto yy6; yych = *++YYCURSOR; if (yych == '$') goto yy40; if (yych != ':') goto yy6; yych = *++YYCURSOR; if (yych == '$') goto yy6; goto yy43; yy40: ++YYCURSOR; #line 51 "cvsignore.s.re" { APPEND(L"$" L"Revision$"); goto loop; } #line 175 "<stdout>" yy42: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy43: if (yych == '\n') goto yy6; if (yych == '$') goto yy40; goto yy42; yy44: yych = *++YYCURSOR; if (yych != 'u') goto yy6; yych = *++YYCURSOR; if (yych != 'r') goto yy6; yych = *++YYCURSOR; if (yych != 'c') goto yy6; yych = *++YYCURSOR; if (yych != 'e') goto yy6; yych = *++YYCURSOR; if (yych == '$') goto yy50; if (yych != ':') goto yy6; yych = *++YYCURSOR; if (yych == '$') goto yy6; goto yy53; yy50: ++YYCURSOR; #line 52 "cvsignore.s.re" { APPEND(L"$" L"Source$"); goto loop; } #line 203 "<stdout>" yy52: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy53: if (yych == '\n') goto yy6; if (yych == '$') goto yy50; goto yy52; } #line 55 "cvsignore.s.re" } output[outsize] = '\0'; // set the new size *pSize = outsize; *pbChanged = (insize == outsize) ? 0 : 1; }
PHPAPI int php_var_unserialize_ex(UNSERIALIZE_PARAMETER) { const unsigned char *cursor, *limit, *marker, *start; zval *rval_ref; limit = max; cursor = *p; if (YYCURSOR >= YYLIMIT) { return 0; } if (var_hash && (*p)[0] != 'R') { var_push(var_hash, rval); } start = cursor; #line 518 "ext/standard/var_unserializer.c" { YYCTYPE yych; 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7); yych = *YYCURSOR; switch (yych) { case 'C': case 'O': goto yy13; case 'N': goto yy5; case 'R': goto yy2; case 'S': goto yy10; case 'a': goto yy11; case 'b': goto yy6; case 'd': goto yy8; case 'i': goto yy7; case 'o': goto yy12; case 'r': goto yy4; case 's': goto yy9; case '}': goto yy14; default: goto yy16; } yy2: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy95; yy3: #line 873 "ext/standard/var_unserializer.re" { return 0; } #line 580 "ext/standard/var_unserializer.c" yy4: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy89; goto yy3; yy5: yych = *++YYCURSOR; if (yych == ';') goto yy87; goto yy3; yy6: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy83; goto yy3; yy7: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy77; goto yy3; yy8: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy53; goto yy3; yy9: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy46; goto yy3; yy10: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy39; goto yy3; yy11: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy32; goto yy3; yy12: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy25; goto yy3; yy13: yych = *(YYMARKER = ++YYCURSOR); if (yych == ':') goto yy17; goto yy3; yy14: ++YYCURSOR; #line 867 "ext/standard/var_unserializer.re" { /* this is the case where we have less data than planned */ php_error_docref(NULL, E_NOTICE, "Unexpected end of serialized data"); return 0; /* not sure if it should be 0 or 1 here? */ } #line 629 "ext/standard/var_unserializer.c" yy16: yych = *++YYCURSOR; goto yy3; yy17: yych = *++YYCURSOR; if (yybm[0+yych] & 128) { goto yy20; } if (yych == '+') goto yy19; yy18: YYCURSOR = YYMARKER; goto yy3; yy19: yych = *++YYCURSOR; if (yybm[0+yych] & 128) { goto yy20; } goto yy18; yy20: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 128) { goto yy20; } if (yych <= '/') goto yy18; if (yych >= ';') goto yy18; yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; #line 722 "ext/standard/var_unserializer.re" { size_t len, len2, len3, maxlen; zend_long elements; char *str; zend_string *class_name; zend_class_entry *ce; int incomplete_class = 0; int custom_object = 0; zval user_func; zval retval; zval args[1]; if (!var_hash) return 0; if (*start == 'C') { custom_object = 1; } len2 = len = parse_uiv(start + 2); maxlen = max - YYCURSOR; if (maxlen < len || len == 0) { *p = start + 2; return 0; } str = (char*)YYCURSOR; YYCURSOR += len; if (*(YYCURSOR) != '"') { *p = YYCURSOR; return 0; } if (*(YYCURSOR+1) != ':') { *p = YYCURSOR+1; return 0; } len3 = strspn(str, "0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377\\"); if (len3 != len) { *p = YYCURSOR + len3 - len; return 0; } class_name = zend_string_init(str, len, 0); do { if(!unserialize_allowed_class(class_name, classes)) { incomplete_class = 1; ce = PHP_IC_ENTRY; break; } /* Try to find class directly */ BG(serialize_lock)++; ce = zend_lookup_class(class_name); if (ce) { BG(serialize_lock)--; if (EG(exception)) { zend_string_release(class_name); return 0; } break; } BG(serialize_lock)--; if (EG(exception)) { zend_string_release(class_name); return 0; } /* Check for unserialize callback */ if ((PG(unserialize_callback_func) == NULL) || (PG(unserialize_callback_func)[0] == '\0')) { incomplete_class = 1; ce = PHP_IC_ENTRY; break; } /* Call unserialize callback */ ZVAL_STRING(&user_func, PG(unserialize_callback_func)); ZVAL_STR_COPY(&args[0], class_name); BG(serialize_lock)++; if (call_user_function_ex(CG(function_table), NULL, &user_func, &retval, 1, args, 0, NULL) != SUCCESS) { BG(serialize_lock)--; if (EG(exception)) { zend_string_release(class_name); zval_ptr_dtor(&user_func); zval_ptr_dtor(&args[0]); return 0; } php_error_docref(NULL, E_WARNING, "defined (%s) but not found", Z_STRVAL(user_func)); incomplete_class = 1; ce = PHP_IC_ENTRY; zval_ptr_dtor(&user_func); zval_ptr_dtor(&args[0]); break; } BG(serialize_lock)--; zval_ptr_dtor(&retval); if (EG(exception)) { zend_string_release(class_name); zval_ptr_dtor(&user_func); zval_ptr_dtor(&args[0]); return 0; } /* The callback function may have defined the class */ if ((ce = zend_lookup_class(class_name)) == NULL) { php_error_docref(NULL, E_WARNING, "Function %s() hasn't defined the class it was called for", Z_STRVAL(user_func)); incomplete_class = 1; ce = PHP_IC_ENTRY; } zval_ptr_dtor(&user_func); zval_ptr_dtor(&args[0]); break; } while (1); *p = YYCURSOR; if (custom_object) { int ret; ret = object_custom(UNSERIALIZE_PASSTHRU, ce); if (ret && incomplete_class) { php_store_class_name(rval, ZSTR_VAL(class_name), len2); } zend_string_release(class_name); return ret; } elements = object_common1(UNSERIALIZE_PASSTHRU, ce); if (incomplete_class) { php_store_class_name(rval, ZSTR_VAL(class_name), len2); } zend_string_release(class_name); return object_common2(UNSERIALIZE_PASSTHRU, elements); } #line 805 "ext/standard/var_unserializer.c" yy25: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy18; } else { if (yych <= '-') goto yy26; if (yych <= '/') goto yy18; if (yych <= '9') goto yy27; goto yy18; } yy26: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy27: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy27; if (yych >= ';') goto yy18; yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; #line 715 "ext/standard/var_unserializer.re" { if (!var_hash) return 0; return object_common2(UNSERIALIZE_PASSTHRU, object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR)); } #line 837 "ext/standard/var_unserializer.c" yy32: yych = *++YYCURSOR; if (yych == '+') goto yy33; if (yych <= '/') goto yy18; if (yych <= '9') goto yy34; goto yy18; yy33: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy34: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy34; if (yych >= ';') goto yy18; yych = *++YYCURSOR; if (yych != '{') goto yy18; ++YYCURSOR; #line 691 "ext/standard/var_unserializer.re" { zend_long elements = parse_iv(start + 2); /* use iv() not uiv() in order to check data range */ *p = YYCURSOR; if (!var_hash) return 0; if (elements < 0) { return 0; } array_init_size(rval, elements); //??? we can't convert from packed to hash during unserialization, because //??? reference to some zvals might be keept in var_hash (to support references) if (elements) { zend_hash_real_init(Z_ARRVAL_P(rval), 0); } if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_P(rval), elements, 0)) { return 0; } return finish_nested_data(UNSERIALIZE_PASSTHRU); } #line 882 "ext/standard/var_unserializer.c" yy39: yych = *++YYCURSOR; if (yych == '+') goto yy40; if (yych <= '/') goto yy18; if (yych <= '9') goto yy41; goto yy18; yy40: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy41: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy41; if (yych >= ';') goto yy18; yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; #line 663 "ext/standard/var_unserializer.re" { size_t len, maxlen; zend_string *str; len = parse_uiv(start + 2); maxlen = max - YYCURSOR; if (maxlen < len) { *p = start + 2; return 0; } if ((str = unserialize_str(&YYCURSOR, len, maxlen)) == NULL) { return 0; } if (*(YYCURSOR) != '"') { zend_string_free(str); *p = YYCURSOR; return 0; } YYCURSOR += 2; *p = YYCURSOR; ZVAL_STR(rval, str); return 1; } #line 931 "ext/standard/var_unserializer.c" yy46: yych = *++YYCURSOR; if (yych == '+') goto yy47; if (yych <= '/') goto yy18; if (yych <= '9') goto yy48; goto yy18; yy47: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy48: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy48; if (yych >= ';') goto yy18; yych = *++YYCURSOR; if (yych != '"') goto yy18; ++YYCURSOR; #line 636 "ext/standard/var_unserializer.re" { size_t len, maxlen; char *str; len = parse_uiv(start + 2); maxlen = max - YYCURSOR; if (maxlen < len) { *p = start + 2; return 0; } str = (char*)YYCURSOR; YYCURSOR += len; if (*(YYCURSOR) != '"') { *p = YYCURSOR; return 0; } YYCURSOR += 2; *p = YYCURSOR; ZVAL_STRINGL(rval, str, len); return 1; } #line 979 "ext/standard/var_unserializer.c" yy53: yych = *++YYCURSOR; if (yych <= '/') { if (yych <= ',') { if (yych == '+') goto yy57; goto yy18; } else { if (yych <= '-') goto yy55; if (yych <= '.') goto yy60; goto yy18; } } else { if (yych <= 'I') { if (yych <= '9') goto yy58; if (yych <= 'H') goto yy18; goto yy56; } else { if (yych != 'N') goto yy18; } } yych = *++YYCURSOR; if (yych == 'A') goto yy76; goto yy18; yy55: yych = *++YYCURSOR; if (yych <= '/') { if (yych == '.') goto yy60; goto yy18; } else { if (yych <= '9') goto yy58; if (yych != 'I') goto yy18; } yy56: yych = *++YYCURSOR; if (yych == 'N') goto yy72; goto yy18; yy57: yych = *++YYCURSOR; if (yych == '.') goto yy60; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy58: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; if (yych <= ':') { if (yych <= '.') { if (yych <= '-') goto yy18; goto yy70; } else { if (yych <= '/') goto yy18; if (yych <= '9') goto yy58; goto yy18; } } else { if (yych <= 'E') { if (yych <= ';') goto yy63; if (yych <= 'D') goto yy18; goto yy65; } else { if (yych == 'e') goto yy65; goto yy18; } } yy60: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy61: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; if (yych <= ';') { if (yych <= '/') goto yy18; if (yych <= '9') goto yy61; if (yych <= ':') goto yy18; } else { if (yych <= 'E') { if (yych <= 'D') goto yy18; goto yy65; } else { if (yych == 'e') goto yy65; goto yy18; } } yy63: ++YYCURSOR; #line 627 "ext/standard/var_unserializer.re" { #if SIZEOF_ZEND_LONG == 4 use_double: #endif *p = YYCURSOR; ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL)); return 1; } #line 1076 "ext/standard/var_unserializer.c" yy65: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy18; } else { if (yych <= '-') goto yy66; if (yych <= '/') goto yy18; if (yych <= '9') goto yy67; goto yy18; } yy66: yych = *++YYCURSOR; if (yych <= ',') { if (yych == '+') goto yy69; goto yy18; } else { if (yych <= '-') goto yy69; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; } yy67: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy67; if (yych == ';') goto yy63; goto yy18; yy69: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy67; goto yy18; yy70: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; if (yych <= ';') { if (yych <= '/') goto yy18; if (yych <= '9') goto yy70; if (yych <= ':') goto yy18; goto yy63; } else { if (yych <= 'E') { if (yych <= 'D') goto yy18; goto yy65; } else { if (yych == 'e') goto yy65; goto yy18; } } yy72: yych = *++YYCURSOR; if (yych != 'F') goto yy18; yy73: yych = *++YYCURSOR; if (yych != ';') goto yy18; ++YYCURSOR; #line 611 "ext/standard/var_unserializer.re" { *p = YYCURSOR; if (!strncmp((char*)start + 2, "NAN", 3)) { ZVAL_DOUBLE(rval, php_get_nan()); } else if (!strncmp((char*)start + 2, "INF", 3)) { ZVAL_DOUBLE(rval, php_get_inf()); } else if (!strncmp((char*)start + 2, "-INF", 4)) { ZVAL_DOUBLE(rval, -php_get_inf()); } else { ZVAL_NULL(rval); } return 1; } #line 1151 "ext/standard/var_unserializer.c" yy76: yych = *++YYCURSOR; if (yych == 'N') goto yy73; goto yy18; yy77: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy18; } else { if (yych <= '-') goto yy78; if (yych <= '/') goto yy18; if (yych <= '9') goto yy79; goto yy18; } yy78: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy79: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy79; if (yych != ';') goto yy18; ++YYCURSOR; #line 585 "ext/standard/var_unserializer.re" { #if SIZEOF_ZEND_LONG == 4 int digits = YYCURSOR - start - 3; if (start[2] == '-' || start[2] == '+') { digits--; } /* Use double for large zend_long values that were serialized on a 64-bit system */ if (digits >= MAX_LENGTH_OF_LONG - 1) { if (digits == MAX_LENGTH_OF_LONG - 1) { int cmp = strncmp((char*)YYCURSOR - MAX_LENGTH_OF_LONG, long_min_digits, MAX_LENGTH_OF_LONG - 1); if (!(cmp < 0 || (cmp == 0 && start[2] == '-'))) { goto use_double; } } else { goto use_double; } } #endif *p = YYCURSOR; ZVAL_LONG(rval, parse_iv(start + 2)); return 1; } #line 1204 "ext/standard/var_unserializer.c" yy83: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= '2') goto yy18; yych = *++YYCURSOR; if (yych != ';') goto yy18; ++YYCURSOR; #line 579 "ext/standard/var_unserializer.re" { *p = YYCURSOR; ZVAL_BOOL(rval, parse_iv(start + 2)); return 1; } #line 1218 "ext/standard/var_unserializer.c" yy87: ++YYCURSOR; #line 573 "ext/standard/var_unserializer.re" { *p = YYCURSOR; ZVAL_NULL(rval); return 1; } #line 1227 "ext/standard/var_unserializer.c" yy89: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy18; } else { if (yych <= '-') goto yy90; if (yych <= '/') goto yy18; if (yych <= '9') goto yy91; goto yy18; } yy90: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy91: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy91; if (yych != ';') goto yy18; ++YYCURSOR; #line 548 "ext/standard/var_unserializer.re" { zend_long id; *p = YYCURSOR; if (!var_hash) return 0; id = parse_iv(start + 2) - 1; if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) { return 0; } if (rval_ref == rval) { return 0; } if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) { ZVAL_UNDEF(rval); return 1; } ZVAL_COPY(rval, rval_ref); return 1; } #line 1275 "ext/standard/var_unserializer.c" yy95: yych = *++YYCURSOR; if (yych <= ',') { if (yych != '+') goto yy18; } else { if (yych <= '-') goto yy96; if (yych <= '/') goto yy18; if (yych <= '9') goto yy97; goto yy18; } yy96: yych = *++YYCURSOR; if (yych <= '/') goto yy18; if (yych >= ':') goto yy18; yy97: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy18; if (yych <= '9') goto yy97; if (yych != ';') goto yy18; ++YYCURSOR; #line 522 "ext/standard/var_unserializer.re" { zend_long id; *p = YYCURSOR; if (!var_hash) return 0; id = parse_iv(start + 2) - 1; if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) { return 0; } zval_ptr_dtor(rval); if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) { ZVAL_UNDEF(rval); return 1; } if (Z_ISREF_P(rval_ref)) { ZVAL_COPY(rval, rval_ref); } else { ZVAL_NEW_REF(rval_ref, rval_ref); ZVAL_COPY(rval, rval_ref); } return 1; } #line 1324 "ext/standard/var_unserializer.c" } #line 875 "ext/standard/var_unserializer.re" return 0; }
static inline void append_modified_url(smart_str *url, smart_str *dest, smart_str *url_app, const char *separator) { register const char *p, *q; const char *bash = NULL; const char *sep = "?"; q = (p = url->c) + url->len; scan: { YYCTYPE yych; 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, }; 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; } } done: /* Don't modify URLs of the format "#mark" */ if (bash && bash - url->c == 0) { smart_str_append(dest, url); return; } if (bash) smart_str_appendl(dest, url->c, bash - url->c); else smart_str_append(dest, url); smart_str_appends(dest, sep); smart_str_append(dest, url_app); if (bash) smart_str_appendl(dest, bash, q - bash); }
bool scan(const char *text) { YYCTYPE *start = (YYCTYPE *)text; YYCTYPE *cursor = (YYCTYPE *)text; YYCTYPE *marker = (YYCTYPE *)text; next: YYCTYPE *token = cursor; #line 20 "bug1163046.c" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 45) YYFILL(45); yych = *YYCURSOR; switch (yych) { case 0x00: goto yy2; case '(': goto yy6; default: goto yy4; } yy2: ++YYCURSOR; #line 25 "bug1163046.re" { return false; } #line 34 "bug1163046.c" yy4: ++YYCURSOR; yy5: #line 23 "bug1163046.re" { goto next; } #line 40 "bug1163046.c" yy6: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case 'T': case 't': goto yy7; default: goto yy5; } yy7: yych = *++YYCURSOR; switch (yych) { case 'H': case 'h': goto yy9; default: goto yy8; } yy8: YYCURSOR = YYMARKER; goto yy5; yy9: yych = *++YYCURSOR; switch (yych) { case 'I': case 'i': goto yy10; default: goto yy8; } yy10: yych = *++YYCURSOR; switch (yych) { case 'S': case 's': goto yy11; default: goto yy8; } yy11: yych = *++YYCURSOR; switch (yych) { case ' ': goto yy12; default: goto yy8; } yy12: yych = *++YYCURSOR; switch (yych) { case 'F': case 'f': goto yy13; default: goto yy8; } yy13: yych = *++YYCURSOR; switch (yych) { case 'I': case 'i': goto yy14; default: goto yy8; } yy14: yych = *++YYCURSOR; switch (yych) { case 'L': case 'l': goto yy15; default: goto yy8; } yy15: yych = *++YYCURSOR; switch (yych) { case 'E': case 'e': goto yy16; default: goto yy8; } yy16: yych = *++YYCURSOR; switch (yych) { case ' ': goto yy17; default: goto yy8; } yy17: yych = *++YYCURSOR; switch (yych) { case 'M': case 'm': goto yy18; default: goto yy8; } yy18: yych = *++YYCURSOR; switch (yych) { case 'U': case 'u': goto yy19; default: goto yy8; } yy19: yych = *++YYCURSOR; switch (yych) { case 'S': case 's': goto yy20; default: goto yy8; } yy20: yych = *++YYCURSOR; switch (yych) { case 'T': case 't': goto yy21; default: goto yy8; } yy21: yych = *++YYCURSOR; switch (yych) { case ' ': goto yy22; default: goto yy8; } yy22: yych = *++YYCURSOR; switch (yych) { case 'B': case 'b': goto yy23; default: goto yy8; } yy23: yych = *++YYCURSOR; switch (yych) { case 'E': case 'e': goto yy24; default: goto yy8; } yy24: yych = *++YYCURSOR; switch (yych) { case ' ': goto yy25; default: goto yy8; } yy25: yych = *++YYCURSOR; switch (yych) { case 'C': case 'c': goto yy26; default: goto yy8; } yy26: yych = *++YYCURSOR; switch (yych) { case 'O': case 'o': goto yy27; default: goto yy8; } yy27: yych = *++YYCURSOR; switch (yych) { case 'N': case 'n': goto yy28; default: goto yy8; } yy28: yych = *++YYCURSOR; switch (yych) { case 'V': case 'v': goto yy29; default: goto yy8; } yy29: yych = *++YYCURSOR; switch (yych) { case 'E': case 'e': goto yy30; default: goto yy8; } yy30: yych = *++YYCURSOR; switch (yych) { case 'R': case 'r': goto yy31; default: goto yy8; } yy31: yych = *++YYCURSOR; switch (yych) { case 'T': case 't': goto yy32; default: goto yy8; } yy32: yych = *++YYCURSOR; switch (yych) { case 'E': case 'e': goto yy33; default: goto yy8; } yy33: yych = *++YYCURSOR; switch (yych) { case 'D': case 'd': goto yy34; default: goto yy8; } yy34: yych = *++YYCURSOR; switch (yych) { case ' ': goto yy35; default: goto yy8; } yy35: yych = *++YYCURSOR; switch (yych) { case 'W': case 'w': goto yy36; default: goto yy8; } yy36: yych = *++YYCURSOR; switch (yych) { case 'I': case 'i': goto yy37; default: goto yy8; } yy37: yych = *++YYCURSOR; switch (yych) { case 'T': case 't': goto yy38; default: goto yy8; } yy38: yych = *++YYCURSOR; switch (yych) { case 'H': case 'h': goto yy39; default: goto yy8; } yy39: yych = *++YYCURSOR; switch (yych) { case ' ': goto yy40; default: goto yy8; } yy40: yych = *++YYCURSOR; switch (yych) { case 'B': case 'b': goto yy41; default: goto yy8; } yy41: yych = *++YYCURSOR; switch (yych) { case 'I': case 'i': goto yy42; default: goto yy8; } yy42: yych = *++YYCURSOR; switch (yych) { case 'N': case 'n': goto yy43; default: goto yy8; } yy43: yych = *++YYCURSOR; switch (yych) { case 'H': case 'h': goto yy44; default: goto yy8; } yy44: yych = *++YYCURSOR; switch (yych) { case 'E': case 'e': goto yy45; default: goto yy8; } yy45: yych = *++YYCURSOR; switch (yych) { case 'X': case 'x': goto yy46; default: goto yy8; } yy46: yych = *++YYCURSOR; switch (yych) { case ' ': goto yy47; default: goto yy8; } yy47: yych = *++YYCURSOR; switch (yych) { case '4': goto yy48; default: goto yy8; } yy48: yych = *++YYCURSOR; switch (yych) { case '.': goto yy49; default: goto yy8; } yy49: yych = *++YYCURSOR; switch (yych) { case '0': goto yy50; default: goto yy8; } yy50: yych = *++YYCURSOR; switch (yych) { case ')': goto yy51; default: goto yy8; } yy51: ++YYCURSOR; #line 18 "bug1163046.re" { if (token == start || *(token - 1) == '\n') return true; else goto next; } #line 348 "bug1163046.c" } #line 26 "bug1163046.re" return false; }
/* Tokenize a header. tokens may be NULL, in which case the number of tokens are counted, allowing the caller to allocate enough room */ static void tokenize(const char *header, php_rfc822_token_t *tokens, int *ntokens, int report_errors) { register const char *p, *q, *start; int in_bracket = 0; /* NB: parser assumes that the header has two bytes of NUL terminator */ YYCURSOR = header; YYLIMIT = YYCURSOR + strlen(YYCURSOR) + 1; *ntokens = 0; state_ground: start = YYCURSOR; #if DEBUG_RFC822_SCANNER printf("ground: start=%p limit=%p cursor=%p: [%d] %s\n", start, YYLIMIT, YYCURSOR, *YYCURSOR, YYCURSOR); #endif { YYCTYPE yych; static const unsigned char yybm[] = { 0, 192, 192, 192, 192, 192, 192, 192, 192, 96, 96, 192, 192, 96, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 96, 64, 0, 192, 192, 64, 192, 192, 64, 64, 192, 192, 64, 192, 64, 64, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 64, 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, 192, 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, 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, 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, 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, 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, 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, 192, 192, 192, 192, 192, 192, }; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 32) { goto yy4; } if (yych <= '-') { if (yych <= '%') { if (yych <= '!') { if (yych <= 0x00) goto yy2; if (yych <= ' ') goto yy21; goto yy19; } else { if (yych <= '"') goto yy12; if (yych <= '$') goto yy21; goto yy19; } } else { if (yych <= ')') { if (yych <= '\'') goto yy21; if (yych <= '(') goto yy10; goto yy7; } else { if (yych == ',') goto yy19; goto yy21; } } } else { if (yych <= '>') { if (yych <= ';') { if (yych <= '/') goto yy19; if (yych <= '9') goto yy21; goto yy19; } else { if (yych <= '<') goto yy15; if (yych <= '=') goto yy19; goto yy17; } } else { if (yych <= '[') { if (yych <= '@') goto yy19; if (yych <= 'Z') goto yy21; goto yy19; } else { if (yych <= '\\') goto yy9; if (yych <= ']') goto yy19; goto yy21; } } } yy2: ++YYCURSOR; { goto stop; } yy4: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 32) { goto yy4; } { DBG_STATE("SPACE"); goto state_ground; } yy7: ++YYCURSOR; yy8: { REPORT_ERR("token not valid in ground state"); goto state_ground; } yy9: yych = *++YYCURSOR; if (yybm[0+yych] & 128) { goto yy21; } goto yy8; yy10: ++YYCURSOR; { DBG_STATE("START COMMENT"); if (tokens) { tokens->token = '('; tokens->value = start; tokens->valuelen = 0; } goto state_comment; } yy12: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 64) { goto yy12; } if (yych >= 0x01) goto yy26; yy15: ++YYCURSOR; if ((yych = *YYCURSOR) == '>') goto yy24; { DBG_STATE("LANGLE"); if (in_bracket) { REPORT_ERR("already in < bracket"); goto state_ground; } in_bracket = 1; ADD_ATOM_TOKEN(); goto state_ground; } yy17: ++YYCURSOR; { DBG_STATE("RANGLE"); if (!in_bracket) { REPORT_ERR("not in < bracket"); goto state_ground; } in_bracket = 0; ADD_ATOM_TOKEN(); goto state_ground; } yy19: ++YYCURSOR; { DBG_STATE("ATOM"); ADD_ATOM_TOKEN(); goto state_ground; } yy21: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 128) { goto yy21; } { DBG_STATE("ANY"); if (tokens) { tokens->token = 0; tokens->valuelen = YYCURSOR - start; tokens->value = start; tokens++; } ++*ntokens; goto state_ground; } yy24: ++YYCURSOR; { DBG_STATE("NULL <>"); ADD_ATOM_TOKEN(); if (tokens) { tokens->token = 0; tokens->value = ""; tokens->valuelen = 0; tokens++; } ++*ntokens; start++; ADD_ATOM_TOKEN(); goto state_ground; } yy26: ++YYCURSOR; { DBG_STATE("QUOTE STRING"); if (tokens) { tokens->token = '"'; tokens->value = start + 1; tokens->valuelen = YYCURSOR - start - 2; tokens++; } ++*ntokens; goto state_ground; } } state_comment: { int comment_depth = 1; while (1) { if (*YYCURSOR == 0) { /* unexpected end of header */ REPORT_ERR("unexpected end of header"); /* fake a quoted string for this last token */ if (tokens) tokens->token = '"'; ++*ntokens; return; } else if (*YYCURSOR == '(') { comment_depth++; } else if (*YYCURSOR == ')' && --comment_depth == 0) { /* end of nested comment sequence */ YYCURSOR++; if (tokens) tokens->valuelen++; break; } else if (*YYCURSOR == '\\' && YYCURSOR[1]) { YYCURSOR++; if (tokens) tokens->valuelen++; } YYCURSOR++; } if (tokens) { tokens->valuelen = YYCURSOR - tokens->value; tokens++; } ++*ntokens; goto state_ground; } stop: #if DEBUG_RFC822_SCANNER printf("STOPing parser ntokens=%d YYCURSOR=%p YYLIMIT=%p start=%p " "cursor=[%d] %s start=%s\n", *ntokens, YYCURSOR, YYLIMIT, start, *YYCURSOR, YYCURSOR, start); #else ; #endif }
char *scan281(char *p) { char *q; start: #line 18 "<stdout>" { YYCTYPE yych; unsigned int yyaccept = 0; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; if (yych <= 'f') { if (yych <= 'a') { if (yych <= '/') { if (yych <= 0x00) goto yy16; goto yy15; } else { if (yych <= '9') goto yy14; if (yych <= '`') goto yy15; } } else { if (yych <= 'c') { if (yych <= 'b') goto yy4; goto yy5; } else { if (yych <= 'd') goto yy6; if (yych <= 'e') goto yy7; goto yy8; } } } else { if (yych <= 'q') { if (yych <= 'l') { if (yych <= 'k') goto yy15; goto yy9; } else { if (yych == 'p') goto yy10; goto yy15; } } else { if (yych <= 'v') { if (yych <= 'r') goto yy13; if (yych <= 'u') goto yy15; goto yy11; } else { if (yych == 'x') goto yy12; goto yy15; } } } yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'd') goto yy172; yy3: #line 32 "bug1479044.s.re" { goto start; } #line 72 "<stdout>" yy4: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'd') goto yy170; goto yy3; yy5: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'd') goto yy168; goto yy3; yy6: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { if (yych == 'h') goto yy154; goto yy3; } else { if (yych <= 'o') goto yy153; if (yych == 's') goto yy155; goto yy3; } yy7: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'd') goto yy151; goto yy3; yy8: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'd') goto yy149; goto yy3; yy9: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'd') goto yy147; goto yy3; yy10: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'p') { if (yych <= 'n') goto yy3; if (yych <= 'o') goto yy137; goto yy136; } else { if (yych == 'r') goto yy135; goto yy3; } yy11: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'd') goto yy133; goto yy3; yy12: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 's') goto yy108; goto yy3; yy13: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == 'h') goto yy71; goto yy3; yy14: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == '-') goto yy18; if (yych <= '/') goto yy3; if (yych <= '9') goto yy20; goto yy3; yy15: yych = *++YYCURSOR; goto yy3; yy16: ++YYCURSOR; #line 37 "bug1479044.s.re" { return NULL; } #line 151 "<stdout>" yy18: yych = *++YYCURSOR; if (yych <= '/') goto yy19; if (yych <= '9') goto yy22; yy19: YYCURSOR = YYMARKER; if (yyaccept <= 1) { if (yyaccept == 0) { goto yy3; } else { goto yy63; } } else { if (yyaccept == 2) { goto yy107; } else { goto yy132; } } yy20: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych == '-') goto yy18; if (yych <= '/') goto yy19; if (yych <= '9') goto yy20; goto yy19; yy22: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych == '-') goto yy24; if (yych <= '/') goto yy19; if (yych <= '9') goto yy22; goto yy19; yy24: yych = *++YYCURSOR; if (yych <= '/') goto yy19; if (yych >= ':') goto yy19; yy25: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych == '-') goto yy27; if (yych <= '/') goto yy19; if (yych <= '9') goto yy25; goto yy19; yy27: yych = *++YYCURSOR; if (yych <= '/') goto yy19; if (yych >= ':') goto yy19; yy28: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8); yych = *YYCURSOR; if (yych == '.') goto yy30; if (yych <= '/') goto yy19; if (yych <= '9') goto yy28; goto yy19; yy30: yych = *++YYCURSOR; if (yych == 'b') goto yy34; if (yych != 'd') goto yy33; yych = *++YYCURSOR; if (yych == 'h') goto yy69; goto yy33; yy32: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy33: if (yych == '\n') goto yy19; if (yych == 'm') goto yy35; goto yy32; yy34: yych = *++YYCURSOR; if (yych == 'o') goto yy64; goto yy33; yy35: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'l') { if (yych == '\n') goto yy19; goto yy32; } else { if (yych <= 'm') goto yy35; if (yych != 'o') goto yy32; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'c') { if (yych == '\n') goto yy19; goto yy32; } else { if (yych <= 'd') goto yy38; if (yych == 'm') goto yy35; goto yy32; } yy38: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'd') { if (yych == '\n') goto yy19; goto yy32; } else { if (yych <= 'e') goto yy39; if (yych == 'm') goto yy35; goto yy32; } yy39: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy19; if (yych != 'm') goto yy32; yy40: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych >= '.') goto yy44; } else { if (yych <= 'm') { if (yych >= 'm') goto yy40; } else { if (yych == 'o') goto yy46; } } yy42: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy42; } else { if (yych <= '.') goto yy44; if (yych == 'm') goto yy40; goto yy42; } yy44: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'm') { if (yych <= 'l') goto yy42; goto yy40; } else { if (yych == 'w') goto yy49; goto yy42; } } yy46: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'd') { if (yych <= 'c') goto yy42; } else { if (yych == 'm') goto yy40; goto yy42; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'e') { if (yych <= 'd') goto yy42; } else { if (yych == 'm') goto yy40; goto yy42; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy42; } else { if (yych <= '.') goto yy44; if (yych == 'm') goto yy40; goto yy42; } yy49: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'a') { if (yych <= '`') goto yy42; } else { if (yych == 'm') goto yy40; goto yy42; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'm') { if (yych <= 'l') goto yy42; goto yy40; } else { if (yych != 's') goto yy42; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'h') { if (yych <= 'g') goto yy42; } else { if (yych == 'm') goto yy40; goto yy42; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'i') { if (yych <= 'h') goto yy42; } else { if (yych == 'm') goto yy40; goto yy42; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'l') goto yy42; if (yych <= 'm') goto yy40; if (yych >= 'o') goto yy42; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'g') { if (yych <= 'f') goto yy42; } else { if (yych == 'm') goto yy40; goto yy42; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'm') { if (yych <= 'l') goto yy42; goto yy40; } else { if (yych != 't') goto yy42; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'm') { if (yych <= 'l') goto yy42; goto yy40; } else { if (yych != 'o') goto yy42; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'l') goto yy42; if (yych <= 'm') goto yy40; if (yych >= 'o') goto yy42; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy42; } else { if (yych <= '.') goto yy59; if (yych == 'm') goto yy40; goto yy42; } yy59: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'd') { if (yych <= '\n') { if (yych <= '\t') goto yy42; goto yy19; } else { if (yych == '.') goto yy44; goto yy42; } } else { if (yych <= 'm') { if (yych <= 'e') goto yy60; if (yych <= 'l') goto yy42; goto yy40; } else { if (yych == 'w') goto yy49; goto yy42; } } yy60: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'd') { if (yych <= 'c') goto yy42; } else { if (yych == 'm') goto yy40; goto yy42; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy42; goto yy44; } else { if (yych <= 'm') { if (yych <= 'l') goto yy42; goto yy40; } else { if (yych != 'u') goto yy42; } } yyaccept = 1; YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych != '\n') goto yy42; } else { if (yych <= '.') goto yy44; if (yych == 'm') goto yy40; goto yy42; } yy63: #line 27 "bug1479044.s.re" { return "edu"; } #line 565 "<stdout>" yy64: yych = *++YYCURSOR; if (yych != 't') goto yy33; yych = *++YYCURSOR; if (yych != 'h') goto yy33; yych = *++YYCURSOR; if (yych != 'e') goto yy33; yych = *++YYCURSOR; if (yych != 'l') goto yy33; yych = *++YYCURSOR; if (yych == 'l') goto yy42; goto yy33; yy69: yych = *++YYCURSOR; if (yych != 'c') goto yy33; yych = *++YYCURSOR; if (yych == 'p') goto yy42; goto yy33; yy71: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy19; if (yych != '-') goto yy71; yy73: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= ',') { if (yych == '\n') goto yy19; goto yy71; } else { if (yych <= '-') goto yy73; if (yych <= '/') goto yy71; if (yych >= ':') goto yy71; } yy75: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= ',') { if (yych == '\n') goto yy19; goto yy71; } else { if (yych <= '-') goto yy77; if (yych <= '/') goto yy71; if (yych <= '9') goto yy75; goto yy71; } yy77: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= ',') { if (yych == '\n') goto yy19; goto yy71; } else { if (yych <= '-') goto yy73; if (yych <= '/') goto yy71; if (yych >= ':') goto yy71; } yy78: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy71; goto yy77; } else { if (yych <= '.') goto yy80; if (yych <= '/') goto yy71; if (yych <= '9') goto yy78; goto yy71; } yy80: yych = *++YYCURSOR; if (yych != '.') goto yy82; yy81: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy82: if (yych <= ',') { if (yych == '\n') goto yy19; goto yy81; } else { if (yych <= '-') goto yy83; if (yych <= '.') goto yy85; goto yy81; } yy83: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych <= '/') goto yy81; if (yych <= '9') goto yy87; goto yy81; } yy85: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych == 'r') goto yy92; goto yy81; } yy87: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; } else { if (yych <= '.') goto yy85; if (yych <= '/') goto yy81; if (yych <= '9') goto yy87; goto yy81; } yy89: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych <= '/') goto yy81; if (yych >= ':') goto yy81; } yy90: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy89; } else { if (yych <= '.') goto yy85; if (yych <= '/') goto yy81; if (yych <= '9') goto yy90; goto yy81; } yy92: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych != 'e') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych != 's') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych != 'n') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych != 'e') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych != 't') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= ',') { if (yych == '\n') goto yy19; goto yy81; } else { if (yych <= '-') goto yy83; if (yych >= '/') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych <= '\n') { if (yych <= '\t') goto yy81; goto yy19; } else { if (yych <= ',') goto yy81; if (yych <= '-') goto yy83; goto yy85; } } else { if (yych <= 'p') { if (yych <= 'o') goto yy81; } else { if (yych == 'r') goto yy92; goto yy81; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych != 'i') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych != 't') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych != 't') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= ',') { if (yych == '\n') goto yy19; goto yy81; } else { if (yych <= '-') goto yy83; if (yych >= '/') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych <= '\n') { if (yych <= '\t') goto yy81; goto yy19; } else { if (yych <= ',') goto yy81; if (yych <= '-') goto yy83; goto yy85; } } else { if (yych <= 'e') { if (yych <= 'd') goto yy81; } else { if (yych == 'r') goto yy92; goto yy81; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych != 'd') goto yy81; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; if (yych <= ',') goto yy81; goto yy83; } else { if (yych <= '.') goto yy85; if (yych != 'u') goto yy81; } yyaccept = 2; YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= ',') { if (yych != '\n') goto yy81; } else { if (yych <= '-') goto yy83; if (yych <= '.') goto yy85; goto yy81; } yy107: #line 22 "bug1479044.s.re" { return "resnet"; } #line 911 "<stdout>" yy108: yych = *++YYCURSOR; if (yych != 't') goto yy19; yych = *++YYCURSOR; if (yych != 't') goto yy19; yych = *++YYCURSOR; if (yych != 'l') goto yy19; yych = *++YYCURSOR; if (yych != 'd') goto yy19; yych = *++YYCURSOR; if (yych != 's') goto yy19; yych = *++YYCURSOR; if (yych != 'l') goto yy19; yy114: yych = *++YYCURSOR; if (yych == '.') goto yy19; goto yy116; yy115: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; yy116: if (yych <= '/') { if (yych <= ',') goto yy19; if (yych <= '-') goto yy115; if (yych >= '/') goto yy19; } else { if (yych <= '9') goto yy115; if (yych <= '`') goto yy19; if (yych <= 'k') goto yy115; goto yy19; } yych = *++YYCURSOR; if (yych == '\n') goto yy19; yy118: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy19; if (yych != '.') goto yy118; yy120: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy118; } else { if (yych <= '.') goto yy120; if (yych != 'u') goto yy118; } yy122: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy118; } else { if (yych <= '.') goto yy120; if (yych != 's') goto yy118; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy118; } else { if (yych <= '.') goto yy120; if (yych != 'w') goto yy118; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy118; } else { if (yych <= '.') goto yy120; if (yych != 'e') goto yy118; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy118; } else { if (yych <= '.') goto yy120; if (yych != 's') goto yy118; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy118; } else { if (yych <= '.') goto yy120; if (yych != 't') goto yy118; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy19; if (yych != '.') goto yy118; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '.') { if (yych == '\n') goto yy19; if (yych <= '-') goto yy118; goto yy120; } else { if (yych <= 'n') { if (yych <= 'm') goto yy118; } else { if (yych == 'u') goto yy122; goto yy118; } } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy118; } else { if (yych <= '.') goto yy120; if (yych != 'e') goto yy118; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '-') { if (yych == '\n') goto yy19; goto yy118; } else { if (yych <= '.') goto yy120; if (yych != 't') goto yy118; } yyaccept = 3; YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy132; if (yych == '.') goto yy120; goto yy118; yy132: #line 17 "bug1479044.s.re" { return "dsl"; } #line 1066 "<stdout>" yy133: yych = *++YYCURSOR; if (yych != 's') goto yy19; yych = *++YYCURSOR; if (yych == 'l') goto yy114; goto yy19; yy135: yych = *++YYCURSOR; if (yych == 'e') goto yy142; goto yy19; yy136: yych = *++YYCURSOR; if (yych == 'p') goto yy139; goto yy19; yy137: yych = *++YYCURSOR; if (yych != 'o') goto yy19; yych = *++YYCURSOR; if (yych == 'l') goto yy114; goto yy19; yy139: yych = *++YYCURSOR; if (yych != 'd') goto yy19; yych = *++YYCURSOR; if (yych != 's') goto yy19; yych = *++YYCURSOR; if (yych == 'l') goto yy114; goto yy19; yy142: yych = *++YYCURSOR; if (yych != 'm') goto yy19; yych = *++YYCURSOR; if (yych != 'i') goto yy19; yych = *++YYCURSOR; if (yych != 'u') goto yy19; yych = *++YYCURSOR; if (yych != 'm') goto yy19; yych = *++YYCURSOR; if (yych == 'C') goto yy114; goto yy19; yy147: yych = *++YYCURSOR; if (yych != 's') goto yy19; yych = *++YYCURSOR; if (yych == 'l') goto yy114; goto yy19; yy149: yych = *++YYCURSOR; if (yych != 's') goto yy19; yych = *++YYCURSOR; if (yych == 'l') goto yy114; goto yy19; yy151: yych = *++YYCURSOR; if (yych != 's') goto yy19; yych = *++YYCURSOR; if (yych == 'l') goto yy114; goto yy19; yy153: yych = *++YYCURSOR; if (yych == 'r') goto yy166; goto yy19; yy154: yych = *++YYCURSOR; if (yych == 'c') goto yy165; goto yy19; yy155: yych = *++YYCURSOR; if (yych != 'l') goto yy19; yych = *++YYCURSOR; if (yych == 'g') goto yy158; if (yych != 'p') goto yy19; yych = *++YYCURSOR; if (yych == 'p') goto yy164; goto yy19; yy158: yych = *++YYCURSOR; if (yych != 'w') goto yy19; yych = *++YYCURSOR; if (yych != '4') goto yy19; yych = *++YYCURSOR; if (yych != 'p') goto yy19; yych = *++YYCURSOR; if (yych != 'o') goto yy19; yych = *++YYCURSOR; if (yych != 'o') goto yy19; yych = *++YYCURSOR; if (yych == 'l') goto yy114; goto yy19; yy164: yych = *++YYCURSOR; if (yych == 'p') goto yy114; goto yy19; yy165: yych = *++YYCURSOR; if (yych == 'p') goto yy71; goto yy19; yy166: yych = *++YYCURSOR; if (yych != 'm') goto yy19; yych = *++YYCURSOR; if (yych == 's') goto yy71; goto yy19; yy168: yych = *++YYCURSOR; if (yych != 's') goto yy19; yych = *++YYCURSOR; if (yych == 'l') goto yy114; goto yy19; yy170: yych = *++YYCURSOR; if (yych != 's') goto yy19; yych = *++YYCURSOR; if (yych == 'l') goto yy114; goto yy19; yy172: yych = *++YYCURSOR; if (yych != 's') goto yy19; yych = *++YYCURSOR; if (yych != 'l') goto yy19; yych = *++YYCURSOR; if (yych == '.') goto yy19; if (yych != 'p') goto yy116; yych = *++YYCURSOR; if (yych != 'p') goto yy19; ++YYCURSOR; if ((yych = *YYCURSOR) == 'p') goto yy114; goto yy19; } #line 40 "bug1479044.s.re" }
int scan(Scanner &s) { YYCTYPE *cursor = s.cur; if(cursor == s.lim) return EOI; std: s.tok = cursor; #line 50 "ctx.s.c" { YYCTYPE yych; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= ' ') { if (yych <= 0x08) goto yy2; if (yych <= '\n') goto yy4; if (yych >= ' ') goto yy4; } else { if (yych <= '9') { if (yych >= '0') goto yy6; } else { if (yych <= '`') goto yy2; if (yych <= 'b') goto yy9; } } yy2: ++YYCURSOR; yy3: #line 60 "ctx.s.re" { return UNEXPECTED; } #line 74 "ctx.s.c" yy4: ++YYCURSOR; #line 53 "ctx.s.re" { if(s.cur == s.lim) return EOI; cursor = s.cur; goto std; } #line 84 "ctx.s.c" yy6: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy8; if (yych <= '9') goto yy6; yy8: #line 50 "ctx.s.re" { return NUMBER; } #line 94 "ctx.s.c" yy9: yych = *++YYCURSOR; if (yych <= '/') goto yy3; if (yych == '1') { YYCTXMARKER = YYCURSOR; goto yy13; } if (yych >= ':') goto yy3; YYCTXMARKER = YYCURSOR; yy10: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy12; if (yych <= '9') goto yy10; yy12: YYCURSOR = YYCTXMARKER; #line 49 "ctx.s.re" { return KEYWORD; } #line 114 "ctx.s.c" yy13: yych = *++YYCURSOR; if (yych <= '/') goto yy14; if (yych <= '9') goto yy10; yy14: YYCURSOR -= 1; #line 48 "ctx.s.re" { return KEYWORD; } #line 123 "ctx.s.c" } #line 63 "ctx.s.re" }