1 /* Generated by re2c */
2 #line 1 "calc_001.re"
3 // re2c $INPUT -o $OUTPUT
4 /* re2c lesson 001_upn_calculator, calc_001, (c) M. Boerger 2006 - 2007 */
5 #line 43 "calc_001.re"
6 
7 
8 #include <stdlib.h>
9 #include <stdio.h>
10 #include <string.h>
11 
scan(char * s,int l)12 int scan(char *s, int l)
13 {
14 	char *p = s;
15 	char *q = 0;
16 #define YYCTYPE         char
17 #define YYCURSOR        p
18 #define YYLIMIT         (s+l)
19 #define YYMARKER        q
20 #define YYFILL(n)
21 
22 	for(;;)
23 	{
24 
25 #line 26 "calc_001.c"
26 		{
27 			YYCTYPE yych;
28 			if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
29 			yych = *YYCURSOR;
30 			switch (yych) {
31 			case 0x00:	goto yy2;
32 			case '+':	goto yy6;
33 			case '-':	goto yy8;
34 			case '0':	goto yy10;
35 			case '1':
36 			case '2':
37 			case '3':
38 			case '4':
39 			case '5':
40 			case '6':
41 			case '7':
42 			case '8':
43 			case '9':	goto yy12;
44 			default:	goto yy4;
45 			}
46 yy2:
47 			++YYCURSOR;
48 #line 68 "calc_001.re"
49 			{ printf("EOF\n");	return 0; }
50 #line 51 "calc_001.c"
51 yy4:
52 			++YYCURSOR;
53 #line 69 "calc_001.re"
54 			{ printf("ERR\n");	return 1; }
55 #line 56 "calc_001.c"
56 yy6:
57 			++YYCURSOR;
58 #line 66 "calc_001.re"
59 			{ printf("+\n");	continue; }
60 #line 61 "calc_001.c"
61 yy8:
62 			++YYCURSOR;
63 #line 67 "calc_001.re"
64 			{ printf("-\n");	continue; }
65 #line 66 "calc_001.c"
66 yy10:
67 			yych = *++YYCURSOR;
68 			switch (yych) {
69 			case '0':
70 			case '1':
71 			case '2':
72 			case '3':
73 			case '4':
74 			case '5':
75 			case '6':
76 			case '7':
77 			case '8':
78 			case '9':	goto yy15;
79 			default:	goto yy11;
80 			}
81 yy11:
82 #line 65 "calc_001.re"
83 			{ printf("Num\n");	continue; }
84 #line 85 "calc_001.c"
85 yy12:
86 			++YYCURSOR;
87 			if (YYLIMIT <= YYCURSOR) YYFILL(1);
88 			yych = *YYCURSOR;
89 			switch (yych) {
90 			case '0':
91 			case '1':
92 			case '2':
93 			case '3':
94 			case '4':
95 			case '5':
96 			case '6':
97 			case '7':
98 			case '8':
99 			case '9':	goto yy12;
100 			default:	goto yy14;
101 			}
102 yy14:
103 #line 64 "calc_001.re"
104 			{ printf("Num\n");	continue; }
105 #line 106 "calc_001.c"
106 yy15:
107 			++YYCURSOR;
108 			if (YYLIMIT <= YYCURSOR) YYFILL(1);
109 			yych = *YYCURSOR;
110 			switch (yych) {
111 			case '0':
112 			case '1':
113 			case '2':
114 			case '3':
115 			case '4':
116 			case '5':
117 			case '6':
118 			case '7':
119 			case '8':
120 			case '9':	goto yy15;
121 			default:	goto yy17;
122 			}
123 yy17:
124 #line 63 "calc_001.re"
125 			{ printf("Oct\n");	continue; }
126 #line 127 "calc_001.c"
127 		}
128 #line 70 "calc_001.re"
129 
130 	}
131 }
132 
main(int argc,char ** argv)133 int main(int argc, char **argv)
134 {
135 	if (argc > 1)
136 	{
137 		return scan(argv[1], strlen(argv[1]));
138 	}
139 	else
140 	{
141 		fprintf(stderr, "%s <expr>\n", argv[0]);
142 		return 1;
143 	}
144 }
145