int scan(char *s)
{
	unsigned char *p = (unsigned char*)s;
	unsigned char *t;
	int res = 0;
	
#define YYCTYPE         unsigned char
#define YYCURSOR        p
	
	while(!res)
	{
		t = p;

#line 69 "<stdout>"
		{
			YYCTYPE yych;
			static const unsigned char yybm[] = {
				  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, 
				128,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				 64,  64,  64,  64,  64,  64,  64,  64, 
				 64,  64,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
				  0,   0,   0,   0,   0,   0,   0,   0, 
			};

			yych = *YYCURSOR;
			if (yych <= '*') {
				if (yych <= '\t') {
					if (yych <= 0x00) goto yy11;
					if (yych <= 0x08) goto yy13;
				} else {
					if (yych != ' ') goto yy13;
				}
			} else {
				if (yych <= '-') {
					if (yych <= '+') goto yy7;
					if (yych <= ',') goto yy13;
					goto yy9;
				} else {
					if (yych <= '/') goto yy13;
					if (yych <= '0') goto yy4;
					if (yych <= '9') goto yy6;
					goto yy13;
				}
			}
			++YYCURSOR;
			yych = *YYCURSOR;
			goto yy21;
yy3:
#line 80 "calc_007.b.re"
			{ continue; }
#line 133 "<stdout>"
yy4:
			++YYCURSOR;
			if ((yych = *YYCURSOR) <= '/') goto yy5;
			if (yych <= '9') goto yy17;
yy5:
#line 82 "calc_007.b.re"
			{ res = push_num(t, p, 10); continue; }
#line 141 "<stdout>"
yy6:
			yych = *++YYCURSOR;
			goto yy16;
yy7:
			++YYCURSOR;
#line 83 "calc_007.b.re"
			{ res = stack_add();		continue; }
#line 149 "<stdout>"
yy9:
			++YYCURSOR;
#line 84 "calc_007.b.re"
			{ res = stack_sub();		continue; }
#line 154 "<stdout>"
yy11:
			++YYCURSOR;
#line 85 "calc_007.b.re"
			{ res = depth == 1 ? 0 : 2;	break; }
#line 159 "<stdout>"
yy13:
			++YYCURSOR;
#line 86 "calc_007.b.re"
			{ res = 1; 					continue; }
#line 164 "<stdout>"
yy15:
			++YYCURSOR;
			yych = *YYCURSOR;
yy16:
			if (yybm[0+yych] & 64) {
				goto yy15;
			}
			goto yy5;
yy17:
			++YYCURSOR;
			yych = *YYCURSOR;
			if (yych <= '/') goto yy19;
			if (yych <= '9') goto yy17;
yy19:
#line 81 "calc_007.b.re"
			{ res = push_num(t, p, 8);	continue; }
#line 181 "<stdout>"
yy20:
			++YYCURSOR;
			yych = *YYCURSOR;
yy21:
			if (yybm[0+yych] & 128) {
				goto yy20;
			}
			goto yy3;
		}
#line 87 "calc_007.b.re"

	}
	return res;
}
Exemplo n.º 2
0
int scan(char *s)
{
	unsigned char *p = (unsigned char*)s;
	unsigned char *t;
	int res = 0;
	
#define YYCTYPE         unsigned char
#define YYCURSOR        p
	
	while(!res)
	{
		t = p;

#line 69 "main.c"
		{
			YYCTYPE yych;

			yych = *YYCURSOR;
			switch (yych) {
			case 0x00:	goto yy11;
			case '\t':
			case ' ':	goto yy2;
			case '+':	goto yy7;
			case '-':	goto yy9;
			case '0':	goto yy4;
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':	goto yy6;
			default:	goto yy13;
			}
yy2:
			++YYCURSOR;
			yych = *YYCURSOR;
			goto yy21;
yy3:
#line 80 "main.re"
			{ continue; }
#line 99 "main.c"
yy4:
			++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 yy17;
			default:	goto yy5;
			}
yy5:
#line 82 "main.re"
			{ res = push_num(t, p, 10); continue; }
#line 118 "main.c"
yy6:
			yych = *++YYCURSOR;
			goto yy16;
yy7:
			++YYCURSOR;
#line 83 "main.re"
			{ res = stack_add();		continue; }
#line 126 "main.c"
yy9:
			++YYCURSOR;
#line 84 "main.re"
			{ res = stack_sub();		continue; }
#line 131 "main.c"
yy11:
			++YYCURSOR;
#line 85 "main.re"
			{ res = depth == 1 ? 0 : 2;	break; }
#line 136 "main.c"
yy13:
			++YYCURSOR;
#line 86 "main.re"
			{ res = 1; 					continue; }
#line 141 "main.c"
yy15:
			++YYCURSOR;
			yych = *YYCURSOR;
yy16:
			switch (yych) {
			case '0':
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':	goto yy15;
			default:	goto yy5;
			}
yy17:
			++YYCURSOR;
			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 yy17;
			default:	goto yy19;
			}
yy19:
#line 81 "main.re"
			{ res = push_num(t, p, 8);	continue; }
#line 178 "main.c"
yy20:
			++YYCURSOR;
			yych = *YYCURSOR;
yy21:
			switch (yych) {
			case '\t':
			case ' ':	goto yy20;
			default:	goto yy3;
			}
		}
#line 87 "main.re"

	}
	return res;
}
Exemplo n.º 3
0
int scan(char *s, int l)
{
	char *p = s;
	char *q = 0;
	char *t;
	int res = 0;

#define YYCTYPE         char
#define YYCURSOR        p
#define YYLIMIT         (s+l+1)
#define YYMARKER        q
#define YYFILL(n)		{ return depth == 1 ? 0 : 2; }
	
	while(!res)
	{
		t = p;

#line 71 "calc_005.c"
		{
			YYCTYPE yych;
			if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
			yych = *YYCURSOR;
			switch (yych) {
			case '\t':
			case ' ':	goto yy2;
			case '+':	goto yy7;
			case '-':	goto yy9;
			case '0':	goto yy4;
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':	goto yy6;
			default:	goto yy11;
			}
yy2:
			++YYCURSOR;
			yych = *YYCURSOR;
			goto yy19;
yy3:
#line 91 "calc_005.re"
			{ continue; }
#line 100 "calc_005.c"
yy4:
			++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 yy15;
			default:	goto yy5;
			}
yy5:
#line 93 "calc_005.re"
			{ res = push_num(t, p, 10); continue; }
#line 119 "calc_005.c"
yy6:
			yych = *++YYCURSOR;
			goto yy14;
yy7:
			++YYCURSOR;
#line 94 "calc_005.re"
			{ res = stack_add();		continue; }
#line 127 "calc_005.c"
yy9:
			++YYCURSOR;
#line 95 "calc_005.re"
			{ res = stack_sub();		continue; }
#line 132 "calc_005.c"
yy11:
			++YYCURSOR;
#line 96 "calc_005.re"
			{ res = 1; 					continue; }
#line 137 "calc_005.c"
yy13:
			++YYCURSOR;
			if (YYLIMIT <= YYCURSOR) YYFILL(1);
			yych = *YYCURSOR;
yy14:
			switch (yych) {
			case '0':
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':	goto yy13;
			default:	goto yy5;
			}
yy15:
			++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 yy15;
			default:	goto yy17;
			}
yy17:
#line 92 "calc_005.re"
			{ res = push_num(t, p, 8);	continue; }
#line 176 "calc_005.c"
yy18:
			++YYCURSOR;
			if (YYLIMIT <= YYCURSOR) YYFILL(1);
			yych = *YYCURSOR;
yy19:
			switch (yych) {
			case '\t':
			case ' ':	goto yy18;
			default:	goto yy3;
			}
		}
#line 97 "calc_005.re"

	}
	return res;
}