📄 modula.c
字号:
/* Generated by re2c */#line 1 "modula.re"#include <stdlib.h>#include <stdio.h>#include <string.h>typedef 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 YYCTXMARKER s->ctx#define YYFILL {cursor = fill(s, cursor);}#define RETURN(i) {s->cur = cursor; return i;}typedef struct Scanner { int fd; uchar *bot, *tok, *ptr, *ctx, *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; uint depth;std: s->tok = cursor;#line 65 "modula.re"#line 68 "<stdout>"{ YYCTYPE yych; unsigned int yyaccept = 0; if((YYLIMIT - YYCURSOR) < 15) YYFILL(15); yych = *YYCURSOR; switch(yych) { case 0x09: case ' ': goto yy73; case 0x0A: goto yy75; case '"': goto yy9; case '#': goto yy10; case '&': goto yy12; case '\'': goto yy7; case '(': goto yy2; case ')': goto yy14; case '*': goto yy16; case '+': goto yy18; case ',': goto yy20; case '-': goto yy22; case '.': goto yy24; case '/': goto yy26; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': goto yy4; case '8': case '9': goto yy6; case ':': goto yy28; case ';': goto yy30; case '<': goto yy32; case '=': goto yy34; case '>': goto yy36; case 'A': goto yy52; case 'B': goto yy54; case 'C': goto yy55; case 'D': goto yy56; case 'E': goto yy57; case 'F': goto yy58; case 'G': case 'H': case 'J': case 'K': case 'X': case 'Y': case 'Z': 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 yy72; case 'I': goto yy59; case 'L': goto yy60; case 'M': goto yy61; case 'N': goto yy62; case 'O': goto yy63; case 'P': goto yy64; case 'Q': goto yy65; case 'R': goto yy66; case 'S': goto yy67; case 'T': goto yy68; case 'U': goto yy69; case 'V': goto yy70; case 'W': goto yy71; case '[': goto yy38; case ']': goto yy40; case '^': goto yy42; case '{': goto yy44; case '|': goto yy46; case '}': goto yy48; case '~': goto yy50; default: goto yy77; }yy2: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '*': goto yy297; default: goto yy3; }yy3:#line 80 "modula.re" {RETURN(9);}#line 176 "<stdout>"yy4: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy292;yy5:#line 70 "modula.re" {RETURN(1);}#line 185 "<stdout>"yy6: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy278;yy7: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case 0x0A: goto yy8; default: goto yy274; }yy8:#line 159 "modula.re" { printf("unexpected character: %c\n", *s->tok); goto std; }#line 204 "<stdout>"yy9: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch(yych) { case 0x0A: goto yy8; default: goto yy269; }yy10: ++YYCURSOR;#line 78 "modula.re" {RETURN(7);}#line 216 "<stdout>"yy12: ++YYCURSOR;#line 79 "modula.re" {RETURN(8);}#line 221 "<stdout>"yy14: ++YYCURSOR;#line 81 "modula.re" {RETURN(10);}#line 226 "<stdout>"yy16: ++YYCURSOR;#line 82 "modula.re" {RETURN(11);}#line 231 "<stdout>"yy18: ++YYCURSOR;#line 83 "modula.re" {RETURN(12);}#line 236 "<stdout>"yy20: ++YYCURSOR;#line 84 "modula.re" {RETURN(13);}#line 241 "<stdout>"yy22: ++YYCURSOR;#line 85 "modula.re" {RETURN(14);}#line 246 "<stdout>"yy24: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '.': goto yy266; default: goto yy25; }yy25:#line 86 "modula.re" {RETURN(15);}#line 256 "<stdout>"yy26: ++YYCURSOR;#line 88 "modula.re" {RETURN(17);}#line 261 "<stdout>"yy28: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy264; default: goto yy29; }yy29:#line 89 "modula.re" {RETURN(18);}#line 271 "<stdout>"yy30: ++YYCURSOR;#line 91 "modula.re" {RETURN(20);}#line 276 "<stdout>"yy32: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy262; case '>': goto yy260; default: goto yy33; }yy33:#line 92 "modula.re" {RETURN(21);}#line 287 "<stdout>"yy34: ++YYCURSOR;#line 95 "modula.re" {RETURN(24);}#line 292 "<stdout>"yy36: ++YYCURSOR; switch((yych = *YYCURSOR)) { case '=': goto yy258; default: goto yy37; }yy37:#line 96 "modula.re" {RETURN(25);}#line 302 "<stdout>"yy38: ++YYCURSOR;#line 98 "modula.re" {RETURN(27);}#line 307 "<stdout>"yy40: ++YYCURSOR;#line 99 "modula.re" {RETURN(28);}#line 312 "<stdout>"yy42: ++YYCURSOR;#line 100 "modula.re" {RETURN(29);}#line 317 "<stdout>"yy44: ++YYCURSOR;#line 101 "modula.re" {RETURN(30);}#line 322 "<stdout>"yy46: ++YYCURSOR;#line 102 "modula.re" {RETURN(31);}#line 327 "<stdout>"yy48: ++YYCURSOR;#line 103 "modula.re" {RETURN(32);}#line 332 "<stdout>"yy50: ++YYCURSOR;#line 104 "modula.re" {RETURN(33);}#line 337 "<stdout>"yy52: ++YYCURSOR; switch((yych = *YYCURSOR)) { case 'N': goto yy250; case 'R': goto yy251; default: goto yy81; }yy53:#line 147 "modula.re" {RETURN(74);}#line 348 "<stdout>"yy54: yych = *++YYCURSOR; switch(yych) { case 'E': goto yy243; case 'Y': goto yy244; default: goto yy81; }yy55: yych = *++YYCURSOR; switch(yych) { case 'A': goto yy234; case 'O': goto yy235; default: goto yy81; }yy56: yych = *++YYCURSOR; switch(yych) { case 'E': goto yy219; case 'I': goto yy220; case 'O': goto yy221; default: goto yy81; }yy57: yych = *++YYCURSOR; switch(yych) { case 'L': goto yy200; case 'N': goto yy201; case 'X': goto yy202; default: goto yy81; }yy58: yych = *++YYCURSOR; switch(yych) { case 'O': goto yy193; case 'R': goto yy194; default: goto yy81; }yy59: yych = *++YYCURSOR; switch(yych) { case 'F': goto yy171; case 'M': goto yy173; case 'N': goto yy174; default: goto yy81; }yy60: yych = *++YYCURSOR; switch(yych) { case 'O': goto yy167; default: goto yy81; }yy61: yych = *++YYCURSOR; switch(yych) { case 'O': goto yy160; default: goto yy81; }yy62: yych = *++YYCURSOR; switch(yych) { case 'O': goto yy157; default: goto yy81; }yy63: yych = *++YYCURSOR; switch(yych) { case 'F': goto yy153; case 'R': goto yy155; default: goto yy81; }yy64: yych = *++YYCURSOR; switch(yych) { case 'O': goto yy137; case 'R': goto yy138; default: goto yy81; }yy65: yych = *++YYCURSOR; switch(yych) { case 'U': goto yy128; default: goto yy81; }yy66: yych = *++YYCURSOR; switch(yych) { case 'E': goto yy112; default: goto yy81; }yy67: yych = *++YYCURSOR; switch(yych) { case 'E': goto yy109; default: goto yy81; }yy68: yych = *++YYCURSOR; switch(yych) { case 'H': goto yy99; case 'O': goto yy100; case 'Y': goto yy102; default: goto yy81; }yy69: yych = *++YYCURSOR; switch(yych) { case 'N': goto yy94; default: goto yy81; }yy70: yych = *++YYCURSOR; switch(yych) { case 'A': goto yy91; default: goto yy81; }yy71: yych = *++YYCURSOR; switch(yych) { case 'H': goto yy82; case 'I': goto yy83; default: goto yy81; }yy72: yych = *++YYCURSOR; goto yy81;yy73: ++YYCURSOR; yych = *YYCURSOR; goto yy79;yy74:#line 149 "modula.re" { goto std; }#line 481 "<stdout>"yy75: ++YYCURSOR;#line 152 "modula.re" { if(cursor == s->eof) RETURN(0); s->pos = cursor; s->line++; goto std; }#line 490 "<stdout>"yy77: yych = *++YYCURSOR; goto yy8;yy78: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR;yy79: switch(yych) { case 0x09: case ' ': goto yy78; default: goto yy74; }yy80: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR;yy81: 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 '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 '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 yy80; default: goto yy53; }yy82: yych = *++YYCURSOR; switch(yych) { case 'I': goto yy87; default: goto yy81; }yy83: yych = *++YYCURSOR; switch(yych) { case 'T': goto yy84; default: goto yy81; }yy84: yych = *++YYCURSOR; switch(yych) { case 'H': goto yy85; default: goto yy81; }yy85: ++YYCURSOR; switch((yych = *YYCURSOR)) { 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 '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 '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 yy80; default: goto yy86; }yy86:#line 145 "modula.re" {RETURN(73);}#line 662 "<stdout>"yy87: yych = *++YYCURSOR; switch(yych) { case 'L': goto yy88; default: goto yy81; }yy88: yych = *++YYCURSOR; switch(yych) { case 'E': goto yy89; default: goto yy81; }yy89: ++YYCURSOR; switch((yych = *YYCURSOR)) { 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 '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 '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 yy80; default: goto yy90; }yy90:#line 144 "modula.re" {RETURN(72);}#line 745 "<stdout>"yy91: yych = *++YYCURSOR; switch(yych) { case 'R': goto yy92; default: goto yy81; }yy92: ++YYCURSOR; switch((yych = *YYCURSOR)) { 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 '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 '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 yy80; default: goto yy93; }yy93:#line 143 "modula.re" {RETURN(71);}#line 822 "<stdout>"yy94: yych = *++YYCURSOR; switch(yych) { case 'T': goto yy95; default: goto yy81; }yy95: yych = *++YYCURSOR; switch(yych) { case 'I': goto yy96; default: goto yy81; }yy96: yych = *++YYCURSOR; switch(yych) { case 'L': goto yy97; default: goto yy81; }yy97: ++YYCURSOR; switch((yych = *YYCURSOR)) { 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 '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 '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 yy80; default: goto yy98; }yy98:#line 142 "modula.re" {RETURN(70);}#line 911 "<stdout>"yy99: yych = *++YYCURSOR; switch(yych) { case 'E': goto yy106; default: goto yy81; }yy100: ++YYCURSOR; switch((yych = *YYCURSOR)) { 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 '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 '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 yy80; default: goto yy101; }yy101:#line 140 "modula.re" {RETURN(68);}#line 988 "<stdout>"yy102: yych = *++YYCURSOR; switch(yych) { case 'P': goto yy103; default: goto yy81; }yy103: yych = *++YYCURSOR; switch(yych) { case 'E': goto yy104; default: goto yy81; }yy104: ++YYCURSOR; switch((yych = *YYCURSOR)) { 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 '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 '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 yy80; default: goto yy105; }yy105:#line 141 "modula.re" {RETURN(69);}#line 1071 "<stdout>"yy106: yych = *++YYCURSOR; switch(yych) { case 'N': goto yy107; default: goto yy81; }yy107: ++YYCURSOR; switch((yych = *YYCURSOR)) { 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':
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -