⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modula.c

📁 a little DFA compiler.
💻 C
📖 第 1 页 / 共 4 页
字号:
/* 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 + -