📄 cnokw.c
字号:
/* Generated by re2c */#line 1 "cnokw.re"#include <stdlib.h>#include <stdio.h>#include <string.h>#define ADDEQ 257#define ANDAND 258#define ANDEQ 259#define ARRAY 260#define ASM 261#define AUTO 262#define BREAK 263#define CASE 264#define CHAR 265#define CONST 266#define CONTINUE 267#define DECR 268#define DEFAULT 269#define DEREF 270#define DIVEQ 271#define DO 272#define DOUBLE 273#define ELLIPSIS 274#define ELSE 275#define ENUM 276#define EQL 277#define EXTERN 278#define FCON 279#define FLOAT 280#define FOR 281#define FUNCTION 282#define GEQ 283#define GOTO 284#define ICON 285#define ID 286#define IF 287#define INCR 288#define INT 289#define LEQ 290#define LONG 291#define LSHIFT 292#define LSHIFTEQ 293#define MODEQ 294#define MULEQ 295#define NEQ 296#define OREQ 297#define OROR 298#define POINTER 299#define REGISTER 300#define RETURN 301#define RSHIFT 302#define RSHIFTEQ 303#define SCON 304#define SHORT 305#define SIGNED 306#define SIZEOF 307#define STATIC 308#define STRUCT 309#define SUBEQ 310#define SWITCH 311#define TYPEDEF 312#define UNION 313#define UNSIGNED 314#define VOID 315#define VOLATILE 316#define WHILE 317#define XOREQ 318#define EOI 319typedef unsigned int uint;typedef unsigned char uchar;#define BSIZE 8192#define YYCTYPE uchar#define YYCURSOR cursor#define YYLIMIT s->lim#define YYMARKER s->ptr#define YYFILL(n) {cursor = fill(s, cursor);}#define RET(i) {s->cur = cursor; return i;}typedef struct Scanner { int fd; uchar *bot, *tok, *ptr, *cur, *pos, *lim, *top, *eof; uint line;} Scanner;uchar *fill(Scanner *s, uchar *cursor){ if(!s->eof){ uint cnt = s->tok - s->bot; if(cnt){ memcpy(s->bot, s->tok, s->lim - s->tok); s->tok = s->bot; s->ptr -= cnt; cursor -= cnt; s->pos -= cnt; s->lim -= cnt; } if((s->top - s->lim) < BSIZE){ uchar *buf = (uchar*) malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar)); memcpy(buf, s->tok, s->lim - s->tok); s->tok = buf; s->ptr = &buf[s->ptr - s->bot]; cursor = &buf[cursor - s->bot]; s->pos = &buf[s->pos - s->bot]; s->lim = &buf[s->lim - s->bot]; s->top = &s->lim[BSIZE]; free(s->bot); s->bot = buf; } if((cnt = read(s->fd, (char*) s->lim, BSIZE)) != BSIZE){ s->eof = &s->lim[cnt]; *(s->eof)++ = '\n'; } s->lim += cnt; } return cursor;}int scan(Scanner *s){ uchar *cursor = s->cur;std: s->tok = cursor;#line 133 "cnokw.re"#line 130 "<stdout>"{ YYCTYPE yych; unsigned int yyaccept = 0; if((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; switch(yych) { case 0x09: case 0x0B: case 0x0C: case ' ': goto yy58; case 0x0A: goto yy60; case '!': goto yy34; case '"': goto yy13; case '%': goto yy24; case '&': goto yy26; case '\'': goto yy9; case '(': goto yy46; case ')': goto yy48; case '*': goto yy22; case '+': goto yy18; case ',': goto yy42; case '-': goto yy20; case '.': goto yy11; case '/': goto yy2; case '0': goto yy6; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy8; case ':': goto yy44; case ';': goto yy36; case '<': goto yy16; case '=': goto yy32; case '>': goto yy14; case '?': goto yy56; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '_': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': goto yy4; case '[': goto yy50; case ']': goto yy52; case '^': goto yy28; case '{': goto yy38; case '|': goto yy30; case '}': goto yy40; case '~': goto yy54; default: goto yy62; }yy2: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '*': goto yy168; case '=': goto yy166; default: goto yy3; }yy3:#line 189 "cnokw.re" { RET('/'); }#line 244 "<stdout>"yy4: ++YYCURSOR; yych = *YYCURSOR; goto yy165;yy5:#line 138 "cnokw.re" { RET(ID); }#line 252 "<stdout>"yy6: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case 'L': case 'U': case 'l': case 'u': goto yy140; case 'X': case 'x': goto yy157; default: goto yy156; }yy7:#line 142 "cnokw.re" { RET(ICON); }#line 268 "<stdout>"yy8: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy138;yy9: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case 0x0A: goto yy10; default: goto yy128; }yy10:#line 208 "cnokw.re" { printf("unexpected character: %c\n", *s->tok); goto std; }#line 286 "<stdout>"yy11: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case '.': goto yy116; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy117; default: goto yy12; }yy12:#line 182 "cnokw.re" { RET('.'); }#line 307 "<stdout>"yy13: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case 0x0A: goto yy10; default: goto yy106; }yy14: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy99; case '>': goto yy101; default: goto yy15; }yy15:#line 192 "cnokw.re" { RET('>'); }#line 325 "<stdout>"yy16: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '<': goto yy95; case '=': goto yy93; default: goto yy17; }yy17:#line 191 "cnokw.re" { RET('<'); }#line 336 "<stdout>"yy18: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '+': goto yy89; case '=': goto yy91; default: goto yy19; }yy19:#line 187 "cnokw.re" { RET('+'); }#line 347 "<stdout>"yy20: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '-': goto yy85; case '=': goto yy87; case '>': goto yy83; default: goto yy21; }yy21:#line 186 "cnokw.re" { RET('-'); }#line 359 "<stdout>"yy22: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy81; default: goto yy23; }yy23:#line 188 "cnokw.re" { RET('*'); }#line 369 "<stdout>"yy24: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy79; default: goto yy25; }yy25:#line 190 "cnokw.re" { RET('%'); }#line 379 "<stdout>"yy26: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '&': goto yy75; case '=': goto yy77; default: goto yy27; }yy27:#line 183 "cnokw.re" { RET('&'); }#line 390 "<stdout>"yy28: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy73; default: goto yy29; }yy29:#line 193 "cnokw.re" { RET('^'); }#line 400 "<stdout>"yy30: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy71; case '|': goto yy69; default: goto yy31; }yy31:#line 194 "cnokw.re" { RET('|'); }#line 411 "<stdout>"yy32: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy67; default: goto yy33; }yy33:#line 177 "cnokw.re" { RET('='); }#line 421 "<stdout>"yy34: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy65; default: goto yy35; }yy35:#line 184 "cnokw.re" { RET('!'); }#line 431 "<stdout>"yy36: ++YYCURSOR;#line 172 "cnokw.re" { RET(';'); }#line 436 "<stdout>"yy38: ++YYCURSOR;#line 173 "cnokw.re" { RET('{'); }#line 441 "<stdout>"yy40: ++YYCURSOR;#line 174 "cnokw.re" { RET('}'); }#line 446 "<stdout>"yy42: ++YYCURSOR;#line 175 "cnokw.re" { RET(','); }#line 451 "<stdout>"yy44: ++YYCURSOR;#line 176 "cnokw.re" { RET(':'); }#line 456 "<stdout>"yy46: ++YYCURSOR;#line 178 "cnokw.re" { RET('('); }#line 461 "<stdout>"yy48: ++YYCURSOR;#line 179 "cnokw.re" { RET(')'); }#line 466 "<stdout>"yy50: ++YYCURSOR;#line 180 "cnokw.re" { RET('['); }#line 471 "<stdout>"yy52: ++YYCURSOR;#line 181 "cnokw.re" { RET(']'); }#line 476 "<stdout>"yy54: ++YYCURSOR;#line 185 "cnokw.re" { RET('~'); }#line 481 "<stdout>"yy56: ++YYCURSOR;#line 195 "cnokw.re" { RET('?'); }#line 486 "<stdout>"yy58: ++YYCURSOR; yych = *YYCURSOR; goto yy64;yy59:#line 198 "cnokw.re" { goto std; }#line 494 "<stdout>"yy60: ++YYCURSOR;#line 201 "cnokw.re" { if(cursor == s->eof) RET(EOI); s->pos = cursor; s->line++; goto std; }#line 503 "<stdout>"yy62: yych = *++YYCURSOR; goto yy10;yy63: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR;yy64: switch(yych) { case 0x09: case 0x0B: case 0x0C: case ' ': goto yy63; default: goto yy59; }yy65: ++YYCURSOR;#line 171 "cnokw.re" { RET(NEQ); }#line 523 "<stdout>"yy67: ++YYCURSOR;#line 170 "cnokw.re" { RET(EQL); }#line 528 "<stdout>"yy69: ++YYCURSOR;#line 167 "cnokw.re" { RET(OROR); }#line 533 "<stdout>"yy71: ++YYCURSOR;#line 160 "cnokw.re" { RET(OREQ); }#line 538 "<stdout>"yy73: ++YYCURSOR;#line 159 "cnokw.re" { RET(XOREQ); }#line 543 "<stdout>"yy75: ++YYCURSOR;#line 166 "cnokw.re" { RET(ANDAND); }#line 548 "<stdout>"yy77: ++YYCURSOR;#line 158 "cnokw.re" { RET(ANDEQ); }#line 553 "<stdout>"yy79: ++YYCURSOR;#line 157 "cnokw.re" { RET(MODEQ); }#line 558 "<stdout>"yy81: ++YYCURSOR;#line 155 "cnokw.re" { RET(MULEQ); }#line 563 "<stdout>"yy83: ++YYCURSOR;#line 165 "cnokw.re" { RET(DEREF); }#line 568 "<stdout>"yy85: ++YYCURSOR;#line 164 "cnokw.re" { RET(DECR); }#line 573 "<stdout>"yy87: ++YYCURSOR;#line 154 "cnokw.re" { RET(SUBEQ); }#line 578 "<stdout>"yy89: ++YYCURSOR;#line 163 "cnokw.re" { RET(INCR); }#line 583 "<stdout>"yy91: ++YYCURSOR;#line 153 "cnokw.re" { RET(ADDEQ); }#line 588 "<stdout>"yy93: ++YYCURSOR;#line 168 "cnokw.re" { RET(LEQ); }#line 593 "<stdout>"yy95: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy97; default: goto yy96; }yy96:#line 162 "cnokw.re" { RET(LSHIFT); }#line 603 "<stdout>"yy97: ++YYCURSOR;#line 152 "cnokw.re" { RET(LSHIFTEQ); }#line 608 "<stdout>"yy99: ++YYCURSOR;#line 169 "cnokw.re" { RET(GEQ); }#line 613 "<stdout>"yy101: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy103; default: goto yy102; }yy102:#line 161 "cnokw.re" { RET(RSHIFT); }#line 623 "<stdout>"yy103: ++YYCURSOR;#line 151 "cnokw.re" { RET(RSHIFTEQ); }#line 628 "<stdout>"yy105: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR;yy106: switch(yych) { case 0x0A: goto yy107; case '"': goto yy109; case '\\': goto yy108; default: goto yy105; }yy107: YYCURSOR = YYMARKER; switch(yyaccept) { case 0: goto yy7; case 1: goto yy10; case 2: goto yy12; case 3: goto yy119; }yy108: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych) { case '"': case '\'': case '?': case '\\': case 'a': case 'b': case 'f': case 'n': case 'r': case 't': case 'v': goto yy105; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy112; case 'x': goto yy111; default: goto yy107; }yy109: ++YYCURSOR;#line 148 "cnokw.re" { RET(SCON); }#line 679 "<stdout>"yy111: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': goto yy114; default: goto yy107; }yy112: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych) { case 0x0A: goto yy107; case '"': goto yy109; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy112; case '\\': goto yy108; default: goto yy105; }yy114:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -