1 /* Generated by re2c */
2 #line 1 "cunroll.re"
3 // re2c $INPUT -o $OUTPUT
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <string.h>
7 
8 #define	ADDEQ	257
9 #define	ANDAND	258
10 #define	ANDEQ	259
11 #define	ARRAY	260
12 #define	ASM	261
13 #define	AUTO	262
14 #define	BREAK	263
15 #define	CASE	264
16 #define	CHAR	265
17 #define	CONST	266
18 #define	CONTINUE	267
19 #define	DECR	268
20 #define	DEFAULT	269
21 #define	DEREF	270
22 #define	DIVEQ	271
23 #define	DO	272
24 #define	DOUBLE	273
25 #define	ELLIPSIS	274
26 #define	ELSE	275
27 #define	ENUM	276
28 #define	EQL	277
29 #define	EXTERN	278
30 #define	FCON	279
31 #define	FLOAT	280
32 #define	FOR	281
33 #define	FUNCTION	282
34 #define	GEQ	283
35 #define	GOTO	284
36 #define	ICON	285
37 #define	ID	286
38 #define	IF	287
39 #define	INCR	288
40 #define	INT	289
41 #define	LEQ	290
42 #define	LONG	291
43 #define	LSHIFT	292
44 #define	LSHIFTEQ	293
45 #define	MODEQ	294
46 #define	MULEQ	295
47 #define	NEQ	296
48 #define	OREQ	297
49 #define	OROR	298
50 #define	POINTER	299
51 #define	REGISTER	300
52 #define	RETURN	301
53 #define	RSHIFT	302
54 #define	RSHIFTEQ	303
55 #define	SCON	304
56 #define	SHORT	305
57 #define	SIGNED	306
58 #define	SIZEOF	307
59 #define	STATIC	308
60 #define	STRUCT	309
61 #define	SUBEQ	310
62 #define	SWITCH	311
63 #define	TYPEDEF	312
64 #define	UNION	313
65 #define	UNSIGNED	314
66 #define	VOID	315
67 #define	VOLATILE	316
68 #define	WHILE	317
69 #define	XOREQ	318
70 #define	EOI	319
71 
72 typedef unsigned int uint;
73 typedef unsigned char uchar;
74 
75 #define	BSIZE	8192
76 
77 #define	YYCTYPE		uchar
78 #define	YYCURSOR	cursor
79 #define	YYLIMIT		s->lim
80 #define	YYMARKER	s->ptr
81 #define	YYFILL(n)	{cursor = fill(s, cursor);}
82 
83 #define	RET(i)	{s->cur = cursor; return i;}
84 
85 typedef struct Scanner {
86     int			fd;
87     uchar		*bot, *tok, *ptr, *cur, *pos, *lim, *top, *eof;
88     uint		line;
89 } Scanner;
90 
fill(Scanner * s,uchar * cursor)91 uchar *fill(Scanner *s, uchar *cursor){
92     if(!s->eof){
93 	uint cnt = s->tok - s->bot;
94 	if(cnt){
95 	    memcpy(s->bot, s->tok, s->lim - s->tok);
96 	    s->tok = s->bot;
97 	    s->ptr -= cnt;
98 	    cursor -= cnt;
99 	    s->pos -= cnt;
100 	    s->lim -= cnt;
101 	}
102 	if((s->top - s->lim) < BSIZE){
103 	    uchar *buf = (uchar*) malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar));
104 	    memcpy(buf, s->tok, s->lim - s->tok);
105 	    s->tok = buf;
106 	    s->ptr = &buf[s->ptr - s->bot];
107 	    cursor = &buf[cursor - s->bot];
108 	    s->pos = &buf[s->pos - s->bot];
109 	    s->lim = &buf[s->lim - s->bot];
110 	    s->top = &s->lim[BSIZE];
111 	    free(s->bot);
112 	    s->bot = buf;
113 	}
114 	if((cnt = read(s->fd, (char*) s->lim, BSIZE)) != BSIZE){
115 	    s->eof = &s->lim[cnt]; *(s->eof)++ = '\n';
116 	}
117 	s->lim += cnt;
118     }
119     return cursor;
120 }
121 
scan(Scanner * s)122 int scan(Scanner *s){
123 	uchar *cursor = s->cur;
124 std:
125 	s->tok = cursor;
126 #line 136 "cunroll.re"
127 
128 
129 
130 #line 131 "cunroll.c"
131 {
132 	YYCTYPE yych;
133 	unsigned int yyaccept = 0;
134 	if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
135 	yych = *YYCURSOR;
136 	switch (yych) {
137 	case '\t':
138 	case '\v':
139 	case '\f':
140 	case ' ':	goto yy4;
141 	case '\n':	goto yy7;
142 	case '!':	goto yy9;
143 	case '"':	goto yy11;
144 	case '%':	goto yy12;
145 	case '&':	goto yy14;
146 	case '\'':	goto yy16;
147 	case '(':	goto yy17;
148 	case ')':	goto yy19;
149 	case '*':	goto yy21;
150 	case '+':	goto yy23;
151 	case ',':	goto yy25;
152 	case '-':	goto yy27;
153 	case '.':	goto yy29;
154 	case '/':	goto yy31;
155 	case '0':	goto yy33;
156 	case '1':
157 	case '2':
158 	case '3':
159 	case '4':
160 	case '5':
161 	case '6':
162 	case '7':
163 	case '8':
164 	case '9':	goto yy35;
165 	case ':':	goto yy37;
166 	case ';':	goto yy39;
167 	case '<':	goto yy41;
168 	case '=':	goto yy43;
169 	case '>':	goto yy45;
170 	case '?':	goto yy47;
171 	case 'A':
172 	case 'B':
173 	case 'C':
174 	case 'D':
175 	case 'E':
176 	case 'F':
177 	case 'G':
178 	case 'H':
179 	case 'I':
180 	case 'J':
181 	case 'K':
182 	case 'L':
183 	case 'M':
184 	case 'N':
185 	case 'O':
186 	case 'P':
187 	case 'Q':
188 	case 'R':
189 	case 'S':
190 	case 'T':
191 	case 'U':
192 	case 'V':
193 	case 'W':
194 	case 'X':
195 	case 'Y':
196 	case 'Z':
197 	case '_':
198 	case 'a':
199 	case 'b':
200 	case 'c':
201 	case 'd':
202 	case 'e':
203 	case 'f':
204 	case 'g':
205 	case 'h':
206 	case 'i':
207 	case 'j':
208 	case 'k':
209 	case 'l':
210 	case 'm':
211 	case 'n':
212 	case 'o':
213 	case 'p':
214 	case 'q':
215 	case 'r':
216 	case 's':
217 	case 't':
218 	case 'u':
219 	case 'v':
220 	case 'w':
221 	case 'x':
222 	case 'y':
223 	case 'z':	goto yy49;
224 	case '[':	goto yy51;
225 	case ']':	goto yy53;
226 	case '^':	goto yy55;
227 	case '{':	goto yy57;
228 	case '|':	goto yy59;
229 	case '}':	goto yy61;
230 	case '~':	goto yy63;
231 	default:	goto yy2;
232 	}
233 yy2:
234 	++YYCURSOR;
235 yy3:
236 #line 220 "cunroll.re"
237 	{
238 		printf("unexpected character: %c\n", *s->tok);
239 		goto std;
240 	    }
241 #line 242 "cunroll.c"
242 yy4:
243 	++YYCURSOR;
244 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
245 	yych = *YYCURSOR;
246 	switch (yych) {
247 	case '\t':
248 	case '\v':
249 	case '\f':
250 	case ' ':	goto yy4;
251 	default:	goto yy6;
252 	}
253 yy6:
254 #line 210 "cunroll.re"
255 	{ goto std; }
256 #line 257 "cunroll.c"
257 yy7:
258 	++YYCURSOR;
259 #line 213 "cunroll.re"
260 	{
261 		if(cursor == s->eof) RET(EOI);
262 		s->pos = cursor; s->line++;
263 		goto std;
264 	    }
265 #line 266 "cunroll.c"
266 yy9:
267 	yych = *++YYCURSOR;
268 	switch (yych) {
269 	case '=':	goto yy65;
270 	default:	goto yy10;
271 	}
272 yy10:
273 #line 196 "cunroll.re"
274 	{ RET('!'); }
275 #line 276 "cunroll.c"
276 yy11:
277 	yyaccept = 0;
278 	yych = *(YYMARKER = ++YYCURSOR);
279 	switch (yych) {
280 	case '\n':	goto yy3;
281 	default:	goto yy68;
282 	}
283 yy12:
284 	yych = *++YYCURSOR;
285 	switch (yych) {
286 	case '=':	goto yy73;
287 	default:	goto yy13;
288 	}
289 yy13:
290 #line 202 "cunroll.re"
291 	{ RET('%'); }
292 #line 293 "cunroll.c"
293 yy14:
294 	yych = *++YYCURSOR;
295 	switch (yych) {
296 	case '&':	goto yy75;
297 	case '=':	goto yy77;
298 	default:	goto yy15;
299 	}
300 yy15:
301 #line 195 "cunroll.re"
302 	{ RET('&'); }
303 #line 304 "cunroll.c"
304 yy16:
305 	yyaccept = 0;
306 	yych = *(YYMARKER = ++YYCURSOR);
307 	switch (yych) {
308 	case '\n':	goto yy3;
309 	default:	goto yy80;
310 	}
311 yy17:
312 	++YYCURSOR;
313 #line 190 "cunroll.re"
314 	{ RET('('); }
315 #line 316 "cunroll.c"
316 yy19:
317 	++YYCURSOR;
318 #line 191 "cunroll.re"
319 	{ RET(')'); }
320 #line 321 "cunroll.c"
321 yy21:
322 	yych = *++YYCURSOR;
323 	switch (yych) {
324 	case '=':	goto yy83;
325 	default:	goto yy22;
326 	}
327 yy22:
328 #line 200 "cunroll.re"
329 	{ RET('*'); }
330 #line 331 "cunroll.c"
331 yy23:
332 	yych = *++YYCURSOR;
333 	switch (yych) {
334 	case '+':	goto yy85;
335 	case '=':	goto yy87;
336 	default:	goto yy24;
337 	}
338 yy24:
339 #line 199 "cunroll.re"
340 	{ RET('+'); }
341 #line 342 "cunroll.c"
342 yy25:
343 	++YYCURSOR;
344 #line 187 "cunroll.re"
345 	{ RET(','); }
346 #line 347 "cunroll.c"
347 yy27:
348 	yych = *++YYCURSOR;
349 	switch (yych) {
350 	case '-':	goto yy89;
351 	case '=':	goto yy91;
352 	case '>':	goto yy93;
353 	default:	goto yy28;
354 	}
355 yy28:
356 #line 198 "cunroll.re"
357 	{ RET('-'); }
358 #line 359 "cunroll.c"
359 yy29:
360 	yyaccept = 1;
361 	yych = *(YYMARKER = ++YYCURSOR);
362 	switch (yych) {
363 	case '.':	goto yy95;
364 	case '0':
365 	case '1':
366 	case '2':
367 	case '3':
368 	case '4':
369 	case '5':
370 	case '6':
371 	case '7':
372 	case '8':
373 	case '9':	goto yy96;
374 	default:	goto yy30;
375 	}
376 yy30:
377 #line 194 "cunroll.re"
378 	{ RET('.'); }
379 #line 380 "cunroll.c"
380 yy31:
381 	yych = *++YYCURSOR;
382 	switch (yych) {
383 	case '*':	goto yy99;
384 	case '=':	goto yy101;
385 	default:	goto yy32;
386 	}
387 yy32:
388 #line 201 "cunroll.re"
389 	{ RET('/'); }
390 #line 391 "cunroll.c"
391 yy33:
392 	yyaccept = 2;
393 	yych = *(YYMARKER = ++YYCURSOR);
394 	switch (yych) {
395 	case 'X':
396 	case 'x':	goto yy106;
397 	default:	goto yy36;
398 	}
399 yy34:
400 #line 154 "cunroll.re"
401 	{ RET(ICON); }
402 #line 403 "cunroll.c"
403 yy35:
404 	yyaccept = 2;
405 	YYMARKER = ++YYCURSOR;
406 	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
407 	yych = *YYCURSOR;
408 yy36:
409 	switch (yych) {
410 	case '.':	goto yy96;
411 	case '0':
412 	case '1':
413 	case '2':
414 	case '3':
415 	case '4':
416 	case '5':
417 	case '6':
418 	case '7':
419 	case '8':
420 	case '9':	goto yy35;
421 	case 'E':
422 	case 'e':	goto yy103;
423 	case 'L':
424 	case 'U':
425 	case 'l':
426 	case 'u':	goto yy104;
427 	default:	goto yy34;
428 	}
429 yy37:
430 	++YYCURSOR;
431 #line 188 "cunroll.re"
432 	{ RET(':'); }
433 #line 434 "cunroll.c"
434 yy39:
435 	++YYCURSOR;
436 #line 184 "cunroll.re"
437 	{ RET(';'); }
438 #line 439 "cunroll.c"
439 yy41:
440 	yych = *++YYCURSOR;
441 	switch (yych) {
442 	case '<':	goto yy107;
443 	case '=':	goto yy109;
444 	default:	goto yy42;
445 	}
446 yy42:
447 #line 203 "cunroll.re"
448 	{ RET('<'); }
449 #line 450 "cunroll.c"
450 yy43:
451 	yych = *++YYCURSOR;
452 	switch (yych) {
453 	case '=':	goto yy111;
454 	default:	goto yy44;
455 	}
456 yy44:
457 #line 189 "cunroll.re"
458 	{ RET('='); }
459 #line 460 "cunroll.c"
460 yy45:
461 	yych = *++YYCURSOR;
462 	switch (yych) {
463 	case '=':	goto yy113;
464 	case '>':	goto yy115;
465 	default:	goto yy46;
466 	}
467 yy46:
468 #line 204 "cunroll.re"
469 	{ RET('>'); }
470 #line 471 "cunroll.c"
471 yy47:
472 	++YYCURSOR;
473 #line 207 "cunroll.re"
474 	{ RET('?'); }
475 #line 476 "cunroll.c"
476 yy49:
477 	yych = *++YYCURSOR;
478 	switch (yych) {
479 	case '0':
480 	case '1':
481 	case '2':
482 	case '3':
483 	case '4':
484 	case '5':
485 	case '6':
486 	case '7':
487 	case '8':
488 	case '9':
489 	case 'A':
490 	case 'B':
491 	case 'C':
492 	case 'D':
493 	case 'E':
494 	case 'F':
495 	case 'G':
496 	case 'H':
497 	case 'I':
498 	case 'J':
499 	case 'K':
500 	case 'L':
501 	case 'M':
502 	case 'N':
503 	case 'O':
504 	case 'P':
505 	case 'Q':
506 	case 'R':
507 	case 'S':
508 	case 'T':
509 	case 'U':
510 	case 'V':
511 	case 'W':
512 	case 'X':
513 	case 'Y':
514 	case 'Z':
515 	case '_':
516 	case 'a':
517 	case 'b':
518 	case 'c':
519 	case 'd':
520 	case 'e':
521 	case 'f':
522 	case 'g':
523 	case 'h':
524 	case 'i':
525 	case 'j':
526 	case 'k':
527 	case 'l':
528 	case 'm':
529 	case 'n':
530 	case 'o':
531 	case 'p':
532 	case 'q':
533 	case 'r':
534 	case 's':
535 	case 't':
536 	case 'u':
537 	case 'v':
538 	case 'w':
539 	case 'x':
540 	case 'y':
541 	case 'z':	goto yy117;
542 	default:	goto yy50;
543 	}
544 yy50:
545 #line 142 "cunroll.re"
546 	{ RET(ID); }
547 #line 548 "cunroll.c"
548 yy51:
549 	++YYCURSOR;
550 #line 192 "cunroll.re"
551 	{ RET('['); }
552 #line 553 "cunroll.c"
553 yy53:
554 	++YYCURSOR;
555 #line 193 "cunroll.re"
556 	{ RET(']'); }
557 #line 558 "cunroll.c"
558 yy55:
559 	yych = *++YYCURSOR;
560 	switch (yych) {
561 	case '=':	goto yy119;
562 	default:	goto yy56;
563 	}
564 yy56:
565 #line 205 "cunroll.re"
566 	{ RET('^'); }
567 #line 568 "cunroll.c"
568 yy57:
569 	++YYCURSOR;
570 #line 185 "cunroll.re"
571 	{ RET('{'); }
572 #line 573 "cunroll.c"
573 yy59:
574 	yych = *++YYCURSOR;
575 	switch (yych) {
576 	case '=':	goto yy121;
577 	case '|':	goto yy123;
578 	default:	goto yy60;
579 	}
580 yy60:
581 #line 206 "cunroll.re"
582 	{ RET('|'); }
583 #line 584 "cunroll.c"
584 yy61:
585 	++YYCURSOR;
586 #line 186 "cunroll.re"
587 	{ RET('}'); }
588 #line 589 "cunroll.c"
589 yy63:
590 	++YYCURSOR;
591 #line 197 "cunroll.re"
592 	{ RET('~'); }
593 #line 594 "cunroll.c"
594 yy65:
595 	++YYCURSOR;
596 #line 183 "cunroll.re"
597 	{ RET(NEQ); }
598 #line 599 "cunroll.c"
599 yy67:
600 	++YYCURSOR;
601 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
602 	yych = *YYCURSOR;
603 yy68:
604 	switch (yych) {
605 	case '\n':	goto yy69;
606 	case '"':	goto yy70;
607 	case '\\':	goto yy72;
608 	default:	goto yy67;
609 	}
610 yy69:
611 	YYCURSOR = YYMARKER;
612 	switch (yyaccept) {
613 	case 0:
614 		goto yy3;
615 	case 1:
616 		goto yy30;
617 	case 2:
618 		goto yy34;
619 	default:
620 		goto yy98;
621 	}
622 yy70:
623 	++YYCURSOR;
624 #line 160 "cunroll.re"
625 	{ RET(SCON); }
626 #line 627 "cunroll.c"
627 yy72:
628 	++YYCURSOR;
629 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
630 	yych = *YYCURSOR;
631 	switch (yych) {
632 	case '"':
633 	case '\'':
634 	case '0':
635 	case '1':
636 	case '2':
637 	case '3':
638 	case '4':
639 	case '5':
640 	case '6':
641 	case '7':
642 	case '?':
643 	case '\\':
644 	case 'a':
645 	case 'b':
646 	case 'f':
647 	case 'n':
648 	case 'r':
649 	case 't':
650 	case 'v':	goto yy67;
651 	case 'x':	goto yy125;
652 	default:	goto yy69;
653 	}
654 yy73:
655 	++YYCURSOR;
656 #line 169 "cunroll.re"
657 	{ RET(MODEQ); }
658 #line 659 "cunroll.c"
659 yy75:
660 	++YYCURSOR;
661 #line 178 "cunroll.re"
662 	{ RET(ANDAND); }
663 #line 664 "cunroll.c"
664 yy77:
665 	++YYCURSOR;
666 #line 170 "cunroll.re"
667 	{ RET(ANDEQ); }
668 #line 669 "cunroll.c"
669 yy79:
670 	++YYCURSOR;
671 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
672 	yych = *YYCURSOR;
673 yy80:
674 	switch (yych) {
675 	case '\n':	goto yy69;
676 	case '\'':	goto yy81;
677 	case '\\':	goto yy82;
678 	default:	goto yy79;
679 	}
680 yy81:
681 	++YYCURSOR;
682 	goto yy34;
683 yy82:
684 	++YYCURSOR;
685 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
686 	yych = *YYCURSOR;
687 	switch (yych) {
688 	case '"':
689 	case '\'':
690 	case '0':
691 	case '1':
692 	case '2':
693 	case '3':
694 	case '4':
695 	case '5':
696 	case '6':
697 	case '7':
698 	case '?':
699 	case '\\':
700 	case 'a':
701 	case 'b':
702 	case 'f':
703 	case 'n':
704 	case 'r':
705 	case 't':
706 	case 'v':	goto yy79;
707 	case 'x':	goto yy126;
708 	default:	goto yy69;
709 	}
710 yy83:
711 	++YYCURSOR;
712 #line 167 "cunroll.re"
713 	{ RET(MULEQ); }
714 #line 715 "cunroll.c"
715 yy85:
716 	++YYCURSOR;
717 #line 175 "cunroll.re"
718 	{ RET(INCR); }
719 #line 720 "cunroll.c"
720 yy87:
721 	++YYCURSOR;
722 #line 165 "cunroll.re"
723 	{ RET(ADDEQ); }
724 #line 725 "cunroll.c"
725 yy89:
726 	++YYCURSOR;
727 #line 176 "cunroll.re"
728 	{ RET(DECR); }
729 #line 730 "cunroll.c"
730 yy91:
731 	++YYCURSOR;
732 #line 166 "cunroll.re"
733 	{ RET(SUBEQ); }
734 #line 735 "cunroll.c"
735 yy93:
736 	++YYCURSOR;
737 #line 177 "cunroll.re"
738 	{ RET(DEREF); }
739 #line 740 "cunroll.c"
740 yy95:
741 	yych = *++YYCURSOR;
742 	switch (yych) {
743 	case '.':	goto yy127;
744 	default:	goto yy69;
745 	}
746 yy96:
747 	yyaccept = 3;
748 	YYMARKER = ++YYCURSOR;
749 	if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
750 	yych = *YYCURSOR;
751 	switch (yych) {
752 	case '0':
753 	case '1':
754 	case '2':
755 	case '3':
756 	case '4':
757 	case '5':
758 	case '6':
759 	case '7':
760 	case '8':
761 	case '9':	goto yy96;
762 	case 'E':
763 	case 'e':	goto yy103;
764 	case 'F':
765 	case 'L':
766 	case 'f':
767 	case 'l':	goto yy129;
768 	default:	goto yy98;
769 	}
770 yy98:
771 #line 157 "cunroll.re"
772 	{ RET(FCON); }
773 #line 774 "cunroll.c"
774 yy99:
775 	++YYCURSOR;
776 #line 139 "cunroll.re"
777 	{ goto comment; }
778 #line 779 "cunroll.c"
779 yy101:
780 	++YYCURSOR;
781 #line 168 "cunroll.re"
782 	{ RET(DIVEQ); }
783 #line 784 "cunroll.c"
784 yy103:
785 	yych = *++YYCURSOR;
786 	switch (yych) {
787 	case '+':
788 	case '-':	goto yy130;
789 	case '0':
790 	case '1':
791 	case '2':
792 	case '3':
793 	case '4':
794 	case '5':
795 	case '6':
796 	case '7':
797 	case '8':
798 	case '9':	goto yy131;
799 	default:	goto yy69;
800 	}
801 yy104:
802 	++YYCURSOR;
803 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
804 	yych = *YYCURSOR;
805 	switch (yych) {
806 	case 'L':
807 	case 'U':
808 	case 'l':
809 	case 'u':	goto yy104;
810 	default:	goto yy34;
811 	}
812 yy106:
813 	yych = *++YYCURSOR;
814 	switch (yych) {
815 	case '0':
816 	case '1':
817 	case '2':
818 	case '3':
819 	case '4':
820 	case '5':
821 	case '6':
822 	case '7':
823 	case '8':
824 	case '9':
825 	case 'A':
826 	case 'B':
827 	case 'C':
828 	case 'D':
829 	case 'E':
830 	case 'F':
831 	case 'a':
832 	case 'b':
833 	case 'c':
834 	case 'd':
835 	case 'e':
836 	case 'f':	goto yy133;
837 	default:	goto yy69;
838 	}
839 yy107:
840 	yych = *++YYCURSOR;
841 	switch (yych) {
842 	case '=':	goto yy135;
843 	default:	goto yy108;
844 	}
845 yy108:
846 #line 174 "cunroll.re"
847 	{ RET(LSHIFT); }
848 #line 849 "cunroll.c"
849 yy109:
850 	++YYCURSOR;
851 #line 180 "cunroll.re"
852 	{ RET(LEQ); }
853 #line 854 "cunroll.c"
854 yy111:
855 	++YYCURSOR;
856 #line 182 "cunroll.re"
857 	{ RET(EQL); }
858 #line 859 "cunroll.c"
859 yy113:
860 	++YYCURSOR;
861 #line 181 "cunroll.re"
862 	{ RET(GEQ); }
863 #line 864 "cunroll.c"
864 yy115:
865 	yych = *++YYCURSOR;
866 	switch (yych) {
867 	case '=':	goto yy137;
868 	default:	goto yy116;
869 	}
870 yy116:
871 #line 173 "cunroll.re"
872 	{ RET(RSHIFT); }
873 #line 874 "cunroll.c"
874 yy117:
875 	yych = *++YYCURSOR;
876 	switch (yych) {
877 	case '0':
878 	case '1':
879 	case '2':
880 	case '3':
881 	case '4':
882 	case '5':
883 	case '6':
884 	case '7':
885 	case '8':
886 	case '9':
887 	case 'A':
888 	case 'B':
889 	case 'C':
890 	case 'D':
891 	case 'E':
892 	case 'F':
893 	case 'G':
894 	case 'H':
895 	case 'I':
896 	case 'J':
897 	case 'K':
898 	case 'L':
899 	case 'M':
900 	case 'N':
901 	case 'O':
902 	case 'P':
903 	case 'Q':
904 	case 'R':
905 	case 'S':
906 	case 'T':
907 	case 'U':
908 	case 'V':
909 	case 'W':
910 	case 'X':
911 	case 'Y':
912 	case 'Z':
913 	case '_':
914 	case 'a':
915 	case 'b':
916 	case 'c':
917 	case 'd':
918 	case 'e':
919 	case 'f':
920 	case 'g':
921 	case 'h':
922 	case 'i':
923 	case 'j':
924 	case 'k':
925 	case 'l':
926 	case 'm':
927 	case 'n':
928 	case 'o':
929 	case 'p':
930 	case 'q':
931 	case 'r':
932 	case 's':
933 	case 't':
934 	case 'u':
935 	case 'v':
936 	case 'w':
937 	case 'x':
938 	case 'y':
939 	case 'z':	goto yy139;
940 	default:	goto yy118;
941 	}
942 yy118:
943 #line 143 "cunroll.re"
944 	{ RET(ID); }
945 #line 946 "cunroll.c"
946 yy119:
947 	++YYCURSOR;
948 #line 171 "cunroll.re"
949 	{ RET(XOREQ); }
950 #line 951 "cunroll.c"
951 yy121:
952 	++YYCURSOR;
953 #line 172 "cunroll.re"
954 	{ RET(OREQ); }
955 #line 956 "cunroll.c"
956 yy123:
957 	++YYCURSOR;
958 #line 179 "cunroll.re"
959 	{ RET(OROR); }
960 #line 961 "cunroll.c"
961 yy125:
962 	++YYCURSOR;
963 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
964 	yych = *YYCURSOR;
965 	switch (yych) {
966 	case '0':
967 	case '1':
968 	case '2':
969 	case '3':
970 	case '4':
971 	case '5':
972 	case '6':
973 	case '7':
974 	case '8':
975 	case '9':
976 	case 'A':
977 	case 'B':
978 	case 'C':
979 	case 'D':
980 	case 'E':
981 	case 'F':
982 	case 'a':
983 	case 'b':
984 	case 'c':
985 	case 'd':
986 	case 'e':
987 	case 'f':	goto yy67;
988 	default:	goto yy69;
989 	}
990 yy126:
991 	++YYCURSOR;
992 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
993 	yych = *YYCURSOR;
994 	switch (yych) {
995 	case '0':
996 	case '1':
997 	case '2':
998 	case '3':
999 	case '4':
1000 	case '5':
1001 	case '6':
1002 	case '7':
1003 	case '8':
1004 	case '9':
1005 	case 'A':
1006 	case 'B':
1007 	case 'C':
1008 	case 'D':
1009 	case 'E':
1010 	case 'F':
1011 	case 'a':
1012 	case 'b':
1013 	case 'c':
1014 	case 'd':
1015 	case 'e':
1016 	case 'f':	goto yy79;
1017 	default:	goto yy69;
1018 	}
1019 yy127:
1020 	++YYCURSOR;
1021 #line 162 "cunroll.re"
1022 	{ RET(ELLIPSIS); }
1023 #line 1024 "cunroll.c"
1024 yy129:
1025 	++YYCURSOR;
1026 	goto yy98;
1027 yy130:
1028 	yych = *++YYCURSOR;
1029 	switch (yych) {
1030 	case '0':
1031 	case '1':
1032 	case '2':
1033 	case '3':
1034 	case '4':
1035 	case '5':
1036 	case '6':
1037 	case '7':
1038 	case '8':
1039 	case '9':	goto yy131;
1040 	default:	goto yy69;
1041 	}
1042 yy131:
1043 	++YYCURSOR;
1044 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
1045 	yych = *YYCURSOR;
1046 	switch (yych) {
1047 	case '0':
1048 	case '1':
1049 	case '2':
1050 	case '3':
1051 	case '4':
1052 	case '5':
1053 	case '6':
1054 	case '7':
1055 	case '8':
1056 	case '9':	goto yy131;
1057 	case 'F':
1058 	case 'L':
1059 	case 'f':
1060 	case 'l':	goto yy129;
1061 	default:	goto yy98;
1062 	}
1063 yy133:
1064 	++YYCURSOR;
1065 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
1066 	yych = *YYCURSOR;
1067 	switch (yych) {
1068 	case '0':
1069 	case '1':
1070 	case '2':
1071 	case '3':
1072 	case '4':
1073 	case '5':
1074 	case '6':
1075 	case '7':
1076 	case '8':
1077 	case '9':
1078 	case 'A':
1079 	case 'B':
1080 	case 'C':
1081 	case 'D':
1082 	case 'E':
1083 	case 'F':
1084 	case 'a':
1085 	case 'b':
1086 	case 'c':
1087 	case 'd':
1088 	case 'e':
1089 	case 'f':	goto yy133;
1090 	case 'L':
1091 	case 'U':
1092 	case 'l':
1093 	case 'u':	goto yy104;
1094 	default:	goto yy34;
1095 	}
1096 yy135:
1097 	++YYCURSOR;
1098 #line 164 "cunroll.re"
1099 	{ RET(LSHIFTEQ); }
1100 #line 1101 "cunroll.c"
1101 yy137:
1102 	++YYCURSOR;
1103 #line 163 "cunroll.re"
1104 	{ RET(RSHIFTEQ); }
1105 #line 1106 "cunroll.c"
1106 yy139:
1107 	yych = *++YYCURSOR;
1108 	switch (yych) {
1109 	case '0':
1110 	case '1':
1111 	case '2':
1112 	case '3':
1113 	case '4':
1114 	case '5':
1115 	case '6':
1116 	case '7':
1117 	case '8':
1118 	case '9':
1119 	case 'A':
1120 	case 'B':
1121 	case 'C':
1122 	case 'D':
1123 	case 'E':
1124 	case 'F':
1125 	case 'G':
1126 	case 'H':
1127 	case 'I':
1128 	case 'J':
1129 	case 'K':
1130 	case 'L':
1131 	case 'M':
1132 	case 'N':
1133 	case 'O':
1134 	case 'P':
1135 	case 'Q':
1136 	case 'R':
1137 	case 'S':
1138 	case 'T':
1139 	case 'U':
1140 	case 'V':
1141 	case 'W':
1142 	case 'X':
1143 	case 'Y':
1144 	case 'Z':
1145 	case '_':
1146 	case 'a':
1147 	case 'b':
1148 	case 'c':
1149 	case 'd':
1150 	case 'e':
1151 	case 'f':
1152 	case 'g':
1153 	case 'h':
1154 	case 'i':
1155 	case 'j':
1156 	case 'k':
1157 	case 'l':
1158 	case 'm':
1159 	case 'n':
1160 	case 'o':
1161 	case 'p':
1162 	case 'q':
1163 	case 'r':
1164 	case 's':
1165 	case 't':
1166 	case 'u':
1167 	case 'v':
1168 	case 'w':
1169 	case 'x':
1170 	case 'y':
1171 	case 'z':	goto yy141;
1172 	default:	goto yy140;
1173 	}
1174 yy140:
1175 #line 144 "cunroll.re"
1176 	{ RET(ID); }
1177 #line 1178 "cunroll.c"
1178 yy141:
1179 	yych = *++YYCURSOR;
1180 	switch (yych) {
1181 	case '0':
1182 	case '1':
1183 	case '2':
1184 	case '3':
1185 	case '4':
1186 	case '5':
1187 	case '6':
1188 	case '7':
1189 	case '8':
1190 	case '9':
1191 	case 'A':
1192 	case 'B':
1193 	case 'C':
1194 	case 'D':
1195 	case 'E':
1196 	case 'F':
1197 	case 'G':
1198 	case 'H':
1199 	case 'I':
1200 	case 'J':
1201 	case 'K':
1202 	case 'L':
1203 	case 'M':
1204 	case 'N':
1205 	case 'O':
1206 	case 'P':
1207 	case 'Q':
1208 	case 'R':
1209 	case 'S':
1210 	case 'T':
1211 	case 'U':
1212 	case 'V':
1213 	case 'W':
1214 	case 'X':
1215 	case 'Y':
1216 	case 'Z':
1217 	case '_':
1218 	case 'a':
1219 	case 'b':
1220 	case 'c':
1221 	case 'd':
1222 	case 'e':
1223 	case 'f':
1224 	case 'g':
1225 	case 'h':
1226 	case 'i':
1227 	case 'j':
1228 	case 'k':
1229 	case 'l':
1230 	case 'm':
1231 	case 'n':
1232 	case 'o':
1233 	case 'p':
1234 	case 'q':
1235 	case 'r':
1236 	case 's':
1237 	case 't':
1238 	case 'u':
1239 	case 'v':
1240 	case 'w':
1241 	case 'x':
1242 	case 'y':
1243 	case 'z':	goto yy143;
1244 	default:	goto yy142;
1245 	}
1246 yy142:
1247 #line 145 "cunroll.re"
1248 	{ RET(ID); }
1249 #line 1250 "cunroll.c"
1250 yy143:
1251 	yych = *++YYCURSOR;
1252 	switch (yych) {
1253 	case '0':
1254 	case '1':
1255 	case '2':
1256 	case '3':
1257 	case '4':
1258 	case '5':
1259 	case '6':
1260 	case '7':
1261 	case '8':
1262 	case '9':
1263 	case 'A':
1264 	case 'B':
1265 	case 'C':
1266 	case 'D':
1267 	case 'E':
1268 	case 'F':
1269 	case 'G':
1270 	case 'H':
1271 	case 'I':
1272 	case 'J':
1273 	case 'K':
1274 	case 'L':
1275 	case 'M':
1276 	case 'N':
1277 	case 'O':
1278 	case 'P':
1279 	case 'Q':
1280 	case 'R':
1281 	case 'S':
1282 	case 'T':
1283 	case 'U':
1284 	case 'V':
1285 	case 'W':
1286 	case 'X':
1287 	case 'Y':
1288 	case 'Z':
1289 	case '_':
1290 	case 'a':
1291 	case 'b':
1292 	case 'c':
1293 	case 'd':
1294 	case 'e':
1295 	case 'f':
1296 	case 'g':
1297 	case 'h':
1298 	case 'i':
1299 	case 'j':
1300 	case 'k':
1301 	case 'l':
1302 	case 'm':
1303 	case 'n':
1304 	case 'o':
1305 	case 'p':
1306 	case 'q':
1307 	case 'r':
1308 	case 's':
1309 	case 't':
1310 	case 'u':
1311 	case 'v':
1312 	case 'w':
1313 	case 'x':
1314 	case 'y':
1315 	case 'z':	goto yy145;
1316 	default:	goto yy144;
1317 	}
1318 yy144:
1319 #line 146 "cunroll.re"
1320 	{ RET(ID); }
1321 #line 1322 "cunroll.c"
1322 yy145:
1323 	yych = *++YYCURSOR;
1324 	switch (yych) {
1325 	case '0':
1326 	case '1':
1327 	case '2':
1328 	case '3':
1329 	case '4':
1330 	case '5':
1331 	case '6':
1332 	case '7':
1333 	case '8':
1334 	case '9':
1335 	case 'A':
1336 	case 'B':
1337 	case 'C':
1338 	case 'D':
1339 	case 'E':
1340 	case 'F':
1341 	case 'G':
1342 	case 'H':
1343 	case 'I':
1344 	case 'J':
1345 	case 'K':
1346 	case 'L':
1347 	case 'M':
1348 	case 'N':
1349 	case 'O':
1350 	case 'P':
1351 	case 'Q':
1352 	case 'R':
1353 	case 'S':
1354 	case 'T':
1355 	case 'U':
1356 	case 'V':
1357 	case 'W':
1358 	case 'X':
1359 	case 'Y':
1360 	case 'Z':
1361 	case '_':
1362 	case 'a':
1363 	case 'b':
1364 	case 'c':
1365 	case 'd':
1366 	case 'e':
1367 	case 'f':
1368 	case 'g':
1369 	case 'h':
1370 	case 'i':
1371 	case 'j':
1372 	case 'k':
1373 	case 'l':
1374 	case 'm':
1375 	case 'n':
1376 	case 'o':
1377 	case 'p':
1378 	case 'q':
1379 	case 'r':
1380 	case 's':
1381 	case 't':
1382 	case 'u':
1383 	case 'v':
1384 	case 'w':
1385 	case 'x':
1386 	case 'y':
1387 	case 'z':	goto yy147;
1388 	default:	goto yy146;
1389 	}
1390 yy146:
1391 #line 147 "cunroll.re"
1392 	{ RET(ID); }
1393 #line 1394 "cunroll.c"
1394 yy147:
1395 	yych = *++YYCURSOR;
1396 	switch (yych) {
1397 	case '0':
1398 	case '1':
1399 	case '2':
1400 	case '3':
1401 	case '4':
1402 	case '5':
1403 	case '6':
1404 	case '7':
1405 	case '8':
1406 	case '9':
1407 	case 'A':
1408 	case 'B':
1409 	case 'C':
1410 	case 'D':
1411 	case 'E':
1412 	case 'F':
1413 	case 'G':
1414 	case 'H':
1415 	case 'I':
1416 	case 'J':
1417 	case 'K':
1418 	case 'L':
1419 	case 'M':
1420 	case 'N':
1421 	case 'O':
1422 	case 'P':
1423 	case 'Q':
1424 	case 'R':
1425 	case 'S':
1426 	case 'T':
1427 	case 'U':
1428 	case 'V':
1429 	case 'W':
1430 	case 'X':
1431 	case 'Y':
1432 	case 'Z':
1433 	case '_':
1434 	case 'a':
1435 	case 'b':
1436 	case 'c':
1437 	case 'd':
1438 	case 'e':
1439 	case 'f':
1440 	case 'g':
1441 	case 'h':
1442 	case 'i':
1443 	case 'j':
1444 	case 'k':
1445 	case 'l':
1446 	case 'm':
1447 	case 'n':
1448 	case 'o':
1449 	case 'p':
1450 	case 'q':
1451 	case 'r':
1452 	case 's':
1453 	case 't':
1454 	case 'u':
1455 	case 'v':
1456 	case 'w':
1457 	case 'x':
1458 	case 'y':
1459 	case 'z':	goto yy149;
1460 	default:	goto yy148;
1461 	}
1462 yy148:
1463 #line 148 "cunroll.re"
1464 	{ RET(ID); }
1465 #line 1466 "cunroll.c"
1466 yy149:
1467 	yych = *++YYCURSOR;
1468 	switch (yych) {
1469 	case '0':
1470 	case '1':
1471 	case '2':
1472 	case '3':
1473 	case '4':
1474 	case '5':
1475 	case '6':
1476 	case '7':
1477 	case '8':
1478 	case '9':
1479 	case 'A':
1480 	case 'B':
1481 	case 'C':
1482 	case 'D':
1483 	case 'E':
1484 	case 'F':
1485 	case 'G':
1486 	case 'H':
1487 	case 'I':
1488 	case 'J':
1489 	case 'K':
1490 	case 'L':
1491 	case 'M':
1492 	case 'N':
1493 	case 'O':
1494 	case 'P':
1495 	case 'Q':
1496 	case 'R':
1497 	case 'S':
1498 	case 'T':
1499 	case 'U':
1500 	case 'V':
1501 	case 'W':
1502 	case 'X':
1503 	case 'Y':
1504 	case 'Z':
1505 	case '_':
1506 	case 'a':
1507 	case 'b':
1508 	case 'c':
1509 	case 'd':
1510 	case 'e':
1511 	case 'f':
1512 	case 'g':
1513 	case 'h':
1514 	case 'i':
1515 	case 'j':
1516 	case 'k':
1517 	case 'l':
1518 	case 'm':
1519 	case 'n':
1520 	case 'o':
1521 	case 'p':
1522 	case 'q':
1523 	case 'r':
1524 	case 's':
1525 	case 't':
1526 	case 'u':
1527 	case 'v':
1528 	case 'w':
1529 	case 'x':
1530 	case 'y':
1531 	case 'z':	goto yy151;
1532 	default:	goto yy150;
1533 	}
1534 yy150:
1535 #line 149 "cunroll.re"
1536 	{ RET(ID); }
1537 #line 1538 "cunroll.c"
1538 yy151:
1539 	++YYCURSOR;
1540 	if (YYLIMIT <= YYCURSOR) YYFILL(1);
1541 	yych = *YYCURSOR;
1542 	switch (yych) {
1543 	case '0':
1544 	case '1':
1545 	case '2':
1546 	case '3':
1547 	case '4':
1548 	case '5':
1549 	case '6':
1550 	case '7':
1551 	case '8':
1552 	case '9':
1553 	case 'A':
1554 	case 'B':
1555 	case 'C':
1556 	case 'D':
1557 	case 'E':
1558 	case 'F':
1559 	case 'G':
1560 	case 'H':
1561 	case 'I':
1562 	case 'J':
1563 	case 'K':
1564 	case 'L':
1565 	case 'M':
1566 	case 'N':
1567 	case 'O':
1568 	case 'P':
1569 	case 'Q':
1570 	case 'R':
1571 	case 'S':
1572 	case 'T':
1573 	case 'U':
1574 	case 'V':
1575 	case 'W':
1576 	case 'X':
1577 	case 'Y':
1578 	case 'Z':
1579 	case '_':
1580 	case 'a':
1581 	case 'b':
1582 	case 'c':
1583 	case 'd':
1584 	case 'e':
1585 	case 'f':
1586 	case 'g':
1587 	case 'h':
1588 	case 'i':
1589 	case 'j':
1590 	case 'k':
1591 	case 'l':
1592 	case 'm':
1593 	case 'n':
1594 	case 'o':
1595 	case 'p':
1596 	case 'q':
1597 	case 'r':
1598 	case 's':
1599 	case 't':
1600 	case 'u':
1601 	case 'v':
1602 	case 'w':
1603 	case 'x':
1604 	case 'y':
1605 	case 'z':	goto yy151;
1606 	default:	goto yy153;
1607 	}
1608 yy153:
1609 #line 150 "cunroll.re"
1610 	{ RET(ID); }
1611 #line 1612 "cunroll.c"
1612 }
1613 #line 224 "cunroll.re"
1614 
1615 
1616 comment:
1617 
1618 #line 1619 "cunroll.c"
1619 {
1620 	YYCTYPE yych;
1621 	if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
1622 	yych = *YYCURSOR;
1623 	switch (yych) {
1624 	case '\n':	goto yy158;
1625 	case '*':	goto yy160;
1626 	case '/':	goto yy162;
1627 	default:	goto yy156;
1628 	}
1629 yy156:
1630 	yych = *++YYCURSOR;
1631 	switch (yych) {
1632 	case '*':
1633 	case '/':	goto yy157;
1634 	default:	goto yy163;
1635 	}
1636 yy157:
1637 #line 235 "cunroll.re"
1638 	{ goto comment; }
1639 #line 1640 "cunroll.c"
1640 yy158:
1641 	yych = *++YYCURSOR;
1642 	switch (yych) {
1643 	case '*':
1644 	case '/':	goto yy159;
1645 	default:	goto yy163;
1646 	}
1647 yy159:
1648 #line 230 "cunroll.re"
1649 	{
1650 		if(cursor == s->eof) RET(EOI);
1651 		s->tok = s->pos = cursor; s->line++;
1652 		goto comment;
1653 	    }
1654 #line 1655 "cunroll.c"
1655 yy160:
1656 	yych = *++YYCURSOR;
1657 	switch (yych) {
1658 	case '/':	goto yy165;
1659 	default:	goto yy161;
1660 	}
1661 yy161:
1662 #line 243 "cunroll.re"
1663 	{ goto comment; }
1664 #line 1665 "cunroll.c"
1665 yy162:
1666 	++YYCURSOR;
1667 	goto yy161;
1668 yy163:
1669 	yych = *++YYCURSOR;
1670 	switch (yych) {
1671 	case '*':
1672 	case '/':	goto yy164;
1673 	default:	goto yy167;
1674 	}
1675 yy164:
1676 #line 236 "cunroll.re"
1677 	{ goto comment; }
1678 #line 1679 "cunroll.c"
1679 yy165:
1680 	++YYCURSOR;
1681 #line 228 "cunroll.re"
1682 	{ goto std; }
1683 #line 1684 "cunroll.c"
1684 yy167:
1685 	yych = *++YYCURSOR;
1686 	switch (yych) {
1687 	case '*':
1688 	case '/':	goto yy168;
1689 	default:	goto yy169;
1690 	}
1691 yy168:
1692 #line 237 "cunroll.re"
1693 	{ goto comment; }
1694 #line 1695 "cunroll.c"
1695 yy169:
1696 	yych = *++YYCURSOR;
1697 	switch (yych) {
1698 	case '*':
1699 	case '/':	goto yy170;
1700 	default:	goto yy171;
1701 	}
1702 yy170:
1703 #line 238 "cunroll.re"
1704 	{ goto comment; }
1705 #line 1706 "cunroll.c"
1706 yy171:
1707 	yych = *++YYCURSOR;
1708 	switch (yych) {
1709 	case '*':
1710 	case '/':	goto yy172;
1711 	default:	goto yy173;
1712 	}
1713 yy172:
1714 #line 239 "cunroll.re"
1715 	{ goto comment; }
1716 #line 1717 "cunroll.c"
1717 yy173:
1718 	yych = *++YYCURSOR;
1719 	switch (yych) {
1720 	case '*':
1721 	case '/':	goto yy174;
1722 	default:	goto yy175;
1723 	}
1724 yy174:
1725 #line 240 "cunroll.re"
1726 	{ goto comment; }
1727 #line 1728 "cunroll.c"
1728 yy175:
1729 	yych = *++YYCURSOR;
1730 	switch (yych) {
1731 	case '*':
1732 	case '/':	goto yy176;
1733 	default:	goto yy177;
1734 	}
1735 yy176:
1736 #line 241 "cunroll.re"
1737 	{ goto comment; }
1738 #line 1739 "cunroll.c"
1739 yy177:
1740 	++YYCURSOR;
1741 #line 242 "cunroll.re"
1742 	{ goto comment; }
1743 #line 1744 "cunroll.c"
1744 }
1745 #line 244 "cunroll.re"
1746 
1747 }
1748 
main()1749 main(){
1750     Scanner in;
1751     int t;
1752     memset((char*) &in, 0, sizeof(in));
1753     in.fd = 0;
1754     while((t = scan(&in)) != EOI){
1755 /*
1756 	printf("%d\t%.*s\n", t, in.cur - in.tok, in.tok);
1757 	printf("%d\n", t);
1758 */
1759     }
1760     close(in.fd);
1761 }
1762