Beispiel #1
0
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"; }
}

}
Beispiel #2
0
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"

}
Beispiel #3
0
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"

}
Beispiel #4
0
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"

}
Beispiel #5
0
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"

}
Beispiel #6
0
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"

}
Beispiel #7
0
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';
	}
}

}
Beispiel #9
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"

}
Beispiel #10
0
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;
}
Beispiel #11
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;
}
Beispiel #12
0
/* 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';
	}
}

}
Beispiel #13
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;
}
Beispiel #14
0
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"

}
Beispiel #15
0
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"

}
Beispiel #16
0
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"

	}
}
Beispiel #17
0
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;
}
Beispiel #18
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
Beispiel #20
0
/* 
 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;
}
Beispiel #21
0
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;
}
Beispiel #22
0
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;
	}
}

}
Beispiel #23
0
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";
        }
    }

}
Beispiel #24
0
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;
}
Beispiel #25
0
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;
}
Beispiel #26
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);
}
Beispiel #27
0
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;
}
Beispiel #28
0
/* 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
}
Beispiel #29
0
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"

}
Beispiel #30
0
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"

}