📄 ctx.b.c
字号:
/* Generated by re2c */#line 1 "ctx.b.re"#include <cstring>#include <iostream>struct Scanner{ Scanner(char *txt) : cur(txt), lim(txt + strlen(txt)) { } char *cur; char *lim; char *ptr; char *ctx; char *tok;};#define YYCTYPE char#define YYCURSOR s.cur#define YYLIMIT s.lim#define YYMARKER s.ptr#define YYCTXMARKER s.ctx#define YYFILL(n) enum What{ UNEXPECTED, KEYWORD, NUMBER, EOI};char * tokens[] = { "UNEXPECTED", "KEYWORD", "NUMBER", "EOI" };int scan(Scanner &s){ YYCTYPE *cursor = s.cur; if(cursor == s.lim) return EOI; std: s.tok = cursor;{ 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, };#line 85 "<stdout>" { YYCTYPE yych; if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if(yych <= ' ') { if(yych <= 0x09) { if(yych <= 0x08) goto yy9; goto yy6; } else { if(yych <= 0x0A) goto yy8; if(yych <= 0x1F) goto yy9; goto yy6; } } else { if(yych <= '9') { if(yych <= '/') goto yy9; goto yy4; } else { if(yych <= '`') goto yy9; if(yych >= 'c') goto yy9; } } YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; if((yych = *YYCURSOR) <= '/') goto yy3; if(yych == '1') goto yy15; if(yych <= '9') goto yy12;yy3:#line 60 "ctx.b.re" { return UNEXPECTED; }#line 119 "<stdout>"yy4: ++YYCURSOR; yych = *YYCURSOR; goto yy11;yy5:#line 50 "ctx.b.re" { return NUMBER; }#line 127 "<stdout>"yy6: ++YYCURSOR;yy7:#line 53 "ctx.b.re" { if(s.cur == s.lim) return EOI; cursor = s.cur; goto std; }#line 138 "<stdout>"yy8: yych = *++YYCURSOR; goto yy7;yy9: yych = *++YYCURSOR; goto yy3;yy10: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR;yy11: if(yybm[0+yych] & 128) { goto yy10; } goto yy5;yy12: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych <= '/') goto yy14; if(yych <= '9') goto yy12;yy14: YYCURSOR = YYCTXMARKER;#line 49 "ctx.b.re" { return KEYWORD; }#line 164 "<stdout>"yy15: ++YYCURSOR; if((yych = *YYCURSOR) <= '/') goto yy16; if(yych <= '9') goto yy12;yy16: YYCURSOR = YYCTXMARKER;#line 48 "ctx.b.re" { return KEYWORD; }#line 173 "<stdout>" }}#line 63 "ctx.b.re"}#define YYMAXFILL 3int 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; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -