/* Generated by re2c */ #line 1 "config9.b.re" #include #include struct Scanner { Scanner(char *txt) : cur(txt), lim(txt + strlen(txt)) { } char *cur; char *lim; char *ptr; char *ctx; char *tok; }; enum What { UNEXPECTED, KEYWORD, NUMBER, EOI }; char * tokens[] = { "UNEXPECTED", "KEYWORD", "NUMBER", "EOI" }; void fill(int) { } int scan(Scanner &s) { char *cursor = s.cur; if(cursor == s.lim) return EOI; std: s.tok = cursor; #line 46 "config9.b.c" { unsigned char curr; static const unsigned char yybm[] = { 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, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 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, }; if ((s.lim - s.cur) < 3) fill(3); curr = (unsigned char)*s.cur; if (yybm[0+curr] & 128) { goto xx6; } if (curr <= 0x1F) { if (curr <= 0x08) goto xx2; if (curr <= '\n') goto xx4; } else { if (curr <= ' ') goto xx4; if (curr <= '`') goto xx2; if (curr <= 'b') goto xx9; } xx2: ++s.cur; xx3: #line 68 "config9.b.re" { return UNEXPECTED; } #line 103 "config9.b.c" xx4: ++s.cur; #line 61 "config9.b.re" { if(s.cur == s.lim) return EOI; cursor = s.cur; goto std; } #line 113 "config9.b.c" xx6: ++s.cur; if (s.lim <= s.cur) fill(1); curr = (unsigned char)*s.cur; if (yybm[0+curr] & 128) { goto xx6; } #line 58 "config9.b.re" { return NUMBER; } #line 123 "config9.b.c" xx9: curr = (unsigned char)*++s.cur; if (curr <= '/') goto xx3; if (curr == '1') { s.ctx = s.cur; goto xx13; } if (curr >= ':') goto xx3; s.ctx = s.cur; xx10: ++s.cur; if (s.lim <= s.cur) fill(1); curr = (unsigned char)*s.cur; if (curr <= '/') goto xx12; if (curr <= '9') goto xx10; xx12: s.cur = s.ctx; #line 57 "config9.b.re" { return KEYWORD; } #line 143 "config9.b.c" xx13: curr = (unsigned char)*++s.cur; if (curr <= '/') goto xx14; if (curr <= '9') goto xx10; xx14: s.cur -= 1; #line 56 "config9.b.re" { return KEYWORD; } #line 152 "config9.b.c" } #line 71 "config9.b.re" } int main(int,char**) { Scanner s("a77 a1 b8 b1"); int t, n = 0; while ((t = scan(s)) != EOI) { std::cout << (++n) << ": " << tokens[t] << " = \""; std::cout.write(s.tok, s.cur-s.tok); std::cout << "\"" << std::endl; } }