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