📄 c.c
字号:
/* Generated by re2c */#line 1 "c.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 "c.re"#line 130 "<stdout>"{ YYCTYPE yych; unsigned int yyaccept = 0; if((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; switch(yych) { case 0x09: case 0x0B: case 0x0C: case ' ': goto yy73; case 0x0A: goto yy75; case '!': goto yy49; case '"': goto yy28; case '%': goto yy39; case '&': goto yy41; case '\'': goto yy24; case '(': goto yy61; case ')': goto yy63; case '*': goto yy37; case '+': goto yy33; case ',': goto yy57; case '-': goto yy35; case '.': goto yy26; case '/': goto yy2; case '0': goto yy21; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy23; case ':': goto yy59; case ';': goto yy51; case '<': goto yy31; case '=': goto yy47; case '>': goto yy29; case '?': goto yy71; 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 'h': case 'j': case 'k': case 'm': case 'n': case 'o': case 'p': case 'q': case 'x': case 'y': case 'z': goto yy20; case '[': goto yy65; case ']': goto yy67; case '^': goto yy43; case 'a': goto yy4; case 'b': goto yy6; case 'c': goto yy7; case 'd': goto yy8; case 'e': goto yy9; case 'f': goto yy10; case 'g': goto yy11; case 'i': goto yy12; case 'l': goto yy13; case 'r': goto yy14; case 's': goto yy15; case 't': goto yy16; case 'u': goto yy17; case 'v': goto yy18; case 'w': goto yy19; case '{': goto yy53; case '|': goto yy45; case '}': goto yy55; case '~': goto yy69; default: goto yy77; }yy2: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '*': goto yy341; case '=': goto yy339; default: goto yy3; }yy3:#line 222 "c.re" { RET('/'); }#line 244 "<stdout>"yy4: ++YYCURSOR; switch((yych = *YYCURSOR)) { case 'u': goto yy335; default: goto yy180; }yy5:#line 171 "c.re" { RET(ID); }#line 254 "<stdout>"yy6: yych = *++YYCURSOR; switch(yych) { case 'r': goto yy330; default: goto yy180; }yy7: yych = *++YYCURSOR; switch(yych) { case 'a': goto yy311; case 'h': goto yy312; case 'o': goto yy313; default: goto yy180; }yy8: yych = *++YYCURSOR; switch(yych) { case 'e': goto yy297; case 'o': goto yy298; default: goto yy180; }yy9: yych = *++YYCURSOR; switch(yych) { case 'l': goto yy283; case 'n': goto yy284; case 'x': goto yy285; default: goto yy180; }yy10: yych = *++YYCURSOR; switch(yych) { case 'l': goto yy275; case 'o': goto yy276; default: goto yy180; }yy11: yych = *++YYCURSOR; switch(yych) { case 'o': goto yy271; default: goto yy180; }yy12: yych = *++YYCURSOR; switch(yych) { case 'f': goto yy266; case 'n': goto yy268; default: goto yy180; }yy13: yych = *++YYCURSOR; switch(yych) { case 'o': goto yy262; default: goto yy180; }yy14: yych = *++YYCURSOR; switch(yych) { case 'e': goto yy249; default: goto yy180; }yy15: yych = *++YYCURSOR; switch(yych) { case 'h': goto yy216; case 'i': goto yy217; case 't': goto yy218; case 'w': goto yy219; default: goto yy180; }yy16: yych = *++YYCURSOR; switch(yych) { case 'y': goto yy209; default: goto yy180; }yy17: yych = *++YYCURSOR; switch(yych) { case 'n': goto yy197; default: goto yy180; }yy18: yych = *++YYCURSOR; switch(yych) { case 'o': goto yy186; default: goto yy180; }yy19: yych = *++YYCURSOR; switch(yych) { case 'h': goto yy181; default: goto yy180; }yy20: yych = *++YYCURSOR; goto yy180;yy21: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case 'L': case 'U': case 'l': case 'u': goto yy155; case 'X': case 'x': goto yy172; default: goto yy171; }yy22:#line 175 "c.re" { RET(ICON); }#line 367 "<stdout>"yy23: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy153;yy24: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case 0x0A: goto yy25; default: goto yy143; }yy25:#line 241 "c.re" { printf("unexpected character: %c\n", *s->tok); goto std; }#line 385 "<stdout>"yy26: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case '.': goto yy131; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy132; default: goto yy27; }yy27:#line 215 "c.re" { RET('.'); }#line 406 "<stdout>"yy28: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case 0x0A: goto yy25; default: goto yy121; }yy29: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy114; case '>': goto yy116; default: goto yy30; }yy30:#line 225 "c.re" { RET('>'); }#line 424 "<stdout>"yy31: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '<': goto yy110; case '=': goto yy108; default: goto yy32; }yy32:#line 224 "c.re" { RET('<'); }#line 435 "<stdout>"yy33: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '+': goto yy104; case '=': goto yy106; default: goto yy34; }yy34:#line 220 "c.re" { RET('+'); }#line 446 "<stdout>"yy35: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '-': goto yy100; case '=': goto yy102; case '>': goto yy98; default: goto yy36; }yy36:#line 219 "c.re" { RET('-'); }#line 458 "<stdout>"yy37: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy96; default: goto yy38; }yy38:#line 221 "c.re" { RET('*'); }#line 468 "<stdout>"yy39: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy94; default: goto yy40; }yy40:#line 223 "c.re" { RET('%'); }#line 478 "<stdout>"yy41: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '&': goto yy90; case '=': goto yy92; default: goto yy42; }yy42:#line 216 "c.re" { RET('&'); }#line 489 "<stdout>"yy43: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy88; default: goto yy44; }yy44:#line 226 "c.re" { RET('^'); }#line 499 "<stdout>"yy45: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy86; case '|': goto yy84; default: goto yy46; }yy46:#line 227 "c.re" { RET('|'); }#line 510 "<stdout>"yy47: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy82; default: goto yy48; }yy48:#line 210 "c.re" { RET('='); }#line 520 "<stdout>"yy49: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy80; default: goto yy50; }yy50:#line 217 "c.re" { RET('!'); }#line 530 "<stdout>"yy51: ++YYCURSOR;#line 205 "c.re" { RET(';'); }#line 535 "<stdout>"yy53: ++YYCURSOR;#line 206 "c.re" { RET('{'); }#line 540 "<stdout>"yy55: ++YYCURSOR;#line 207 "c.re" { RET('}'); }#line 545 "<stdout>"yy57: ++YYCURSOR;#line 208 "c.re" { RET(','); }#line 550 "<stdout>"yy59: ++YYCURSOR;#line 209 "c.re" { RET(':'); }#line 555 "<stdout>"yy61: ++YYCURSOR;#line 211 "c.re" { RET('('); }#line 560 "<stdout>"yy63: ++YYCURSOR;#line 212 "c.re" { RET(')'); }#line 565 "<stdout>"yy65: ++YYCURSOR;#line 213 "c.re" { RET('['); }#line 570 "<stdout>"yy67: ++YYCURSOR;#line 214 "c.re" { RET(']'); }#line 575 "<stdout>"yy69: ++YYCURSOR;#line 218 "c.re" { RET('~'); }#line 580 "<stdout>"yy71: ++YYCURSOR;#line 228 "c.re" { RET('?'); }#line 585 "<stdout>"yy73: ++YYCURSOR; yych = *YYCURSOR; goto yy79;yy74:#line 231 "c.re" { goto std; }#line 593 "<stdout>"yy75: ++YYCURSOR;#line 234 "c.re" { if(cursor == s->eof) RET(EOI); s->pos = cursor; s->line++; goto std; }#line 602 "<stdout>"yy77: yych = *++YYCURSOR; goto yy25;yy78: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR;yy79: switch(yych) { case 0x09: case 0x0B: case 0x0C: case ' ': goto yy78; default: goto yy74; }yy80: ++YYCURSOR;#line 204 "c.re" { RET(NEQ); }#line 622 "<stdout>"yy82: ++YYCURSOR;#line 203 "c.re" { RET(EQL); }#line 627 "<stdout>"yy84: ++YYCURSOR;#line 200 "c.re" { RET(OROR); }#line 632 "<stdout>"yy86: ++YYCURSOR;#line 193 "c.re" { RET(OREQ); }#line 637 "<stdout>"yy88: ++YYCURSOR;#line 192 "c.re" { RET(XOREQ); }#line 642 "<stdout>"yy90: ++YYCURSOR;#line 199 "c.re" { RET(ANDAND); }#line 647 "<stdout>"yy92: ++YYCURSOR;#line 191 "c.re" { RET(ANDEQ); }#line 652 "<stdout>"yy94: ++YYCURSOR;#line 190 "c.re" { RET(MODEQ); }#line 657 "<stdout>"yy96: ++YYCURSOR;#line 188 "c.re" { RET(MULEQ); }#line 662 "<stdout>"yy98: ++YYCURSOR;#line 198 "c.re" { RET(DEREF); }#line 667 "<stdout>"yy100: ++YYCURSOR;#line 197 "c.re" { RET(DECR); }#line 672 "<stdout>"yy102: ++YYCURSOR;#line 187 "c.re" { RET(SUBEQ); }#line 677 "<stdout>"yy104: ++YYCURSOR;#line 196 "c.re" { RET(INCR); }#line 682 "<stdout>"yy106: ++YYCURSOR;#line 186 "c.re" { RET(ADDEQ); }#line 687 "<stdout>"yy108: ++YYCURSOR;#line 201 "c.re" { RET(LEQ); }#line 692 "<stdout>"yy110: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy112; default: goto yy111; }yy111:#line 195 "c.re" { RET(LSHIFT); }#line 702 "<stdout>"yy112: ++YYCURSOR;#line 185 "c.re" { RET(LSHIFTEQ); }#line 707 "<stdout>"yy114: ++YYCURSOR;#line 202 "c.re" { RET(GEQ); }#line 712 "<stdout>"yy116: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy118; default: goto yy117; }yy117:#line 194 "c.re" { RET(RSHIFT); }#line 722 "<stdout>"yy118: ++YYCURSOR;#line 184 "c.re" { RET(RSHIFTEQ); }#line 727 "<stdout>"yy120: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR;yy121: switch(yych) { case 0x0A: goto yy122; case '"': goto yy124; case '\\': goto yy123; default: goto yy120; }yy122: YYCURSOR = YYMARKER; switch(yyaccept) { case 0: goto yy22; case 1: goto yy25; case 2: goto yy27; case 3: goto yy134; }yy123: ++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 yy120; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy127; case 'x': goto yy126; default: goto yy122; }yy124: ++YYCURSOR;#line 181 "c.re" { RET(SCON); }#line 778 "<stdout>"yy126: ++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 yy129; default: goto yy122; }yy127: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych) { case 0x0A: goto yy122; case '"': goto yy124; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy127; case '\\': goto yy123; default: goto yy120; }yy129: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych) { case 0x0A: goto yy122; case '"': goto yy124; 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 yy129; case '\\': goto yy123; default: goto yy120; }yy131: yych = *++YYCURSOR; switch(yych) { case '.': goto yy140; default: goto yy122; }yy132: yyaccept = 3; YYMARKER = ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; switch(yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy132; case 'E': case 'e': goto yy135; case 'F': case 'L': case 'f': case 'l': goto yy136; default: goto yy134; }yy134:#line 178 "c.re" { RET(FCON); }#line 891 "<stdout>"yy135: yych = *++YYCURSOR; switch(yych) { case '+': case '-': goto yy137; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy138; default: goto yy122; }yy136: yych = *++YYCURSOR; goto yy134;yy137: yych = *++YYCURSOR; switch(yych) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy138; default: goto yy122; }yy138: ++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': goto yy138; case 'F': case 'L': case 'f': case 'l': goto yy136; default: goto yy134; }yy140: ++YYCURSOR;#line 183 "c.re" { RET(ELLIPSIS); }#line 952 "<stdout>"yy142: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR;yy143: switch(yych) { case 0x0A: goto yy122; case '\'': goto yy145; case '\\': goto yy144; default: goto yy142; }yy144: ++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 yy142; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy147; case 'x': goto yy146; default: goto yy122; }yy145: yych = *++YYCURSOR; goto yy22;yy146: ++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 yy149; default: goto yy122; }yy147: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych) { case 0x0A: goto yy122; case '\'': goto yy145; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy147; case '\\': goto yy144; default: goto yy142; }yy149: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; switch(yych) { case 0x0A: goto yy122; case '\'': goto yy145; 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 yy149; case '\\': goto yy144; default: goto yy142; }yy151: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case 'E': case 'e': goto yy162; default: goto yy161; }yy152: yyaccept = 0; YYMARKER = ++YYCURSOR; if((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR;yy153: switch(yych) { case '.': goto yy151; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': goto yy152; case 'E': case 'e': goto yy154; case 'L': case 'U': case 'l': case 'u': goto yy155; default: goto yy22; }yy154: yych = *++YYCURSOR;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -