1// re2c $INPUT -o $OUTPUT -fs
2uint32_t push()
3{
4    // The scanner starts here
5    #define YYLIMIT         limit
6    #define YYCURSOR        cursor
7    #define YYMARKER        marker
8    #define YYCTYPE         uint8_t
9
10    #define SKIP(x)         { start = cursor; goto yy0; }
11    #define SEND(x)         { send(x); SKIP();          }
12    #define YYFILL(n)       { goto fill;                }
13
14    #define YYGETSTATE()    state
15    #define YYSETSTATE(x)   { state = (x);  }
16
17start:
18
19    /*!re2c
20    	re2c:startlabel = 1;
21        eol = "\n";
22        eof = "\000";
23        digit = [0-9];
24        integer = digit+;
25        alpha = [A-Za-z_];
26        any = [\000-\377];
27        space = [ \h\t\v\f\r];
28
29        "if"                    { SEND(kIf);             }
30        "for"                   { SEND(kFor);            }
31        "else"                  { SEND(kElse);           }
32        "goto"                  { SEND(kGoto);           }
33        "break"                 { SEND(kBreak);          }
34        "while"                 { SEND(kWhile);          }
35        "return"                { SEND(kReturn);         }
36        alpha (alpha|digit)*    { SEND(kIdentifier);     }
37        integer                 { SEND(kDecimalConstant);}
38
39        "="                     { SEND(kEqual);          }
40        "("                     { SEND(kLeftParen);      }
41        ")"                     { SEND(kRightParen);     }
42        "-"                     { SEND(kMinus);          }
43        "+"                     { SEND(kPlus);           }
44        "*"                     { SEND(kStar);           }
45        "/"                     { SEND(kSlash);          }
46
47        eol                     { SKIP();                }
48        space                   { SKIP();                }
49        eof                     { send(kEOF); return 1;  }
50        any                     { SEND(kUnknown);        }
51    */
52
53fill:
54    return 0;
55}
56