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

📄 scanner.cc

📁 a little DFA compiler.
💻 CC
📖 第 1 页 / 共 2 页
字号:
		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych == 0x0A) goto yy95;		goto yy99;yy104:		++YYCURSOR;		{ cur = cursor;				  yylval.regexp = ranToRE(token());				  return RANGE; }yy106:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych == 0x0A) goto yy95;		goto yy101;yy107:		++YYCURSOR;		{ cur = cursor;				  yylval.regexp = invToRE(token());				  return RANGE; }yy109:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;yy110:		if(yybm[0+yych] & 32) {			goto yy109;		}		if(yych <= '&') goto yy95;		if(yych <= '\'') goto yy112;		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych == 0x0A) goto yy95;		goto yy109;yy112:		++YYCURSOR;		{ cur = cursor;				  yylval.regexp = strToCaseInsensitiveRE(token());				  return STRING; }yy114:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;yy115:		if(yybm[0+yych] & 64) {			goto yy114;		}		if(yych <= '!') goto yy95;		if(yych <= '"') goto yy117;		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych == 0x0A) goto yy95;		goto yy114;yy117:		++YYCURSOR;		{ cur = cursor;				  yylval.regexp = strToRE(token());				  return STRING; }yy119:		++YYCURSOR;		{ tok = cursor;				  RETURN(0); }yy121:		++YYCURSOR;		{ depth = 1;				  goto comment; }yy123:		yych = *++YYCURSOR;		if(yych == ',') goto yy137;		goto yy125;yy124:		++YYCURSOR;		if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);		yych = *YYCURSOR;yy125:		if(yybm[0+yych] & 128) {			goto yy124;		}		if(yych == ',') goto yy130;		if(yych == '}') goto yy128;		goto yy95;yy126:		++YYCURSOR;yy127:		{ fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); }yy128:		++YYCURSOR;		{ yylval.extop.minsize = atoi((char *)tok+1);				  yylval.extop.maxsize = atoi((char *)tok+1);				  RETURN(CLOSESIZE); }yy130:		yyaccept = 6;		yych = *(YYMARKER = ++YYCURSOR);		if(yych <= '/') goto yy127;		if(yych <= '9') goto yy133;		if(yych != '}') goto yy127;		++YYCURSOR;		{ yylval.extop.minsize = atoi((char *)tok+1);				  yylval.extop.maxsize = -1;				  RETURN(CLOSESIZE); }yy133:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych <= '/') goto yy95;		if(yych <= '9') goto yy133;		if(yych != '}') goto yy95;		++YYCURSOR;		{ yylval.extop.minsize = atoi((char *)tok+1);				  yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1));				  RETURN(CLOSESIZE); }yy137:		yyaccept = 6;		yych = *(YYMARKER = ++YYCURSOR);		if(yych <= '/') goto yy127;		if(yych <= '9') goto yy133;		if(yych != '}') goto yy127;		++YYCURSOR;		{ yylval.op = '*';				  RETURN(CLOSE); }	}}code:{	static const unsigned char yybm[] = {		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192,   0, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192,  64, 192, 192, 192, 192, 128, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192,   0, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 		192, 192, 192, 192, 192, 192, 192, 192, 	};	{		YYCTYPE yych;		if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);		yych = *YYCURSOR;		if(yych <= '&') {			if(yych <= 0x0A) {				if(yych <= 0x00) goto yy148;				if(yych <= 0x09) goto yy150;				goto yy146;			} else {				if(yych == '"') goto yy152;				goto yy150;			}		} else {			if(yych <= '{') {				if(yych <= '\'') goto yy153;				if(yych <= 'z') goto yy150;				goto yy144;			} else {				if(yych != '}') goto yy150;			}		}		++YYCURSOR;		{ if(--depth == 0){					cur = cursor;					yylval.token = new Token(token(), tline);					return CODE;				  }				  goto code; }yy144:		++YYCURSOR;		{ ++depth;				  goto code; }yy146:		++YYCURSOR;		{ if(cursor == eof) fatal("missing '}'");				  pos = cursor; cline++;				  goto code;				}yy148:		++YYCURSOR;		{ if(cursor == eof) {					if (depth) fatal("missing '}'");					RETURN(0);				  }				  goto code;				}yy150:		++YYCURSOR;yy151:		{ goto code; }yy152:		yych = *(YYMARKER = ++YYCURSOR);		if(yych == 0x0A) goto yy151;		goto yy159;yy153:		yych = *(YYMARKER = ++YYCURSOR);		if(yych == 0x0A) goto yy151;		goto yy155;yy154:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;yy155:		if(yybm[0+yych] & 64) {			goto yy154;		}		if(yych <= '&') goto yy156;		if(yych <= '\'') goto yy150;		goto yy157;yy156:		YYCURSOR = YYMARKER;		goto yy151;yy157:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych == 0x0A) goto yy156;		goto yy154;yy158:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;yy159:		if(yybm[0+yych] & 128) {			goto yy158;		}		if(yych <= '!') goto yy156;		if(yych <= '"') goto yy150;		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych == 0x0A) goto yy156;		goto yy158;	}}comment:{	{		YYCTYPE yych;		if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);		yych = *YYCURSOR;		if(yych <= ')') {			if(yych == 0x0A) goto yy166;			goto yy168;		} else {			if(yych <= '*') goto yy163;			if(yych == '/') goto yy165;			goto yy168;		}yy163:		++YYCURSOR;		if((yych = *YYCURSOR) == '/') goto yy171;yy164:		{ if(cursor == eof) RETURN(0);				  goto comment; }yy165:		yych = *++YYCURSOR;		if(yych == '*') goto yy169;		goto yy164;yy166:		++YYCURSOR;		{ if(cursor == eof) RETURN(0);				  tok = pos = cursor; cline++;				  goto comment;				}yy168:		yych = *++YYCURSOR;		goto yy164;yy169:		++YYCURSOR;		{ ++depth;				  fatal("ambiguous /* found");				  goto comment; }yy171:		++YYCURSOR;		{ if(--depth == 0)					goto scan;				    else					goto comment; }	}}config:{	static const unsigned char yybm[] = {		  0,   0,   0,   0,   0,   0,   0,   0, 		  0, 128,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		  0,   0,   0,   0,   0,   0,   0,   0, 		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,   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, 	};	{		YYCTYPE yych;		if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);		yych = *YYCURSOR;		if(yych <= 0x1F) {			if(yych != 0x09) goto yy179;		} else {			if(yych <= ' ') goto yy175;			if(yych == '=') goto yy177;			goto yy179;		}yy175:		++YYCURSOR;		yych = *YYCURSOR;		goto yy184;yy176:		{ goto config; }yy177:		++YYCURSOR;		yych = *YYCURSOR;		goto yy182;yy178:		{ iscfg = 2;				  cur = cursor;				  RETURN('='); 				}yy179:		++YYCURSOR;		{ fatal("missing '='"); }yy181:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;yy182:		if(yybm[0+yych] & 128) {			goto yy181;		}		goto yy178;yy183:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;yy184:		if(yych == 0x09) goto yy183;		if(yych == ' ') goto yy183;		goto yy176;	}}value:{	static const unsigned char yybm[] = {		248, 248, 248, 248, 248, 248, 248, 248, 		248, 192,   0, 248, 248, 192, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		192, 248, 104, 248, 248, 248, 248, 152, 		248, 248, 248, 248, 248, 248, 248, 248, 		252, 252, 252, 252, 252, 252, 252, 252, 		252, 252, 248, 192, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248,   8, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 		248, 248, 248, 248, 248, 248, 248, 248, 	};	{		YYCTYPE yych;		if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);		yych = *YYCURSOR;		if(yych <= '&') {			if(yych <= 0x0D) {				if(yych <= 0x08) goto yy193;				if(yych <= 0x0A) goto yy187;				if(yych <= 0x0C) goto yy193;			} else {				if(yych <= ' ') {					if(yych <= 0x1F) goto yy193;				} else {					if(yych == '"') goto yy195;					goto yy193;				}			}		} else {			if(yych <= '/') {				if(yych <= '\'') goto yy197;				if(yych == '-') goto yy190;				goto yy193;			} else {				if(yych <= '9') {					if(yych <= '0') goto yy188;					goto yy191;				} else {					if(yych != ';') goto yy193;				}			}		}yy187:		{ cur = cursor;				  yylval.str = new Str(token());				  iscfg = 0;				  return VALUE;				}yy188:		++YYCURSOR;		if(yybm[0+(yych = *YYCURSOR)] & 8) {			goto yy193;		}yy189:		{ cur = cursor;				  yylval.number = atoi(token().to_string().c_str());				  iscfg = 0;				  return NUMBER;				}yy190:		yych = *++YYCURSOR;		if(yych <= '0') goto yy194;		if(yych >= ':') goto yy194;yy191:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yybm[0+yych] & 4) {			goto yy191;		}		if(yych <= 0x0D) {			if(yych <= 0x08) goto yy193;			if(yych <= 0x0A) goto yy189;			if(yych >= 0x0D) goto yy189;		} else {			if(yych <= ' ') {				if(yych >= ' ') goto yy189;			} else {				if(yych == ';') goto yy189;			}		}yy193:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;yy194:		if(yybm[0+yych] & 8) {			goto yy193;		}		goto yy187;yy195:		YYMARKER = ++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yybm[0+yych] & 16) {			goto yy195;		}		if(yych <= '!') {			if(yych == 0x0A) goto yy187;			goto yy205;		} else {			if(yych <= '"') goto yy193;			if(yych <= '[') goto yy205;			goto yy207;		}yy197:		YYMARKER = ++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yybm[0+yych] & 32) {			goto yy197;		}		if(yych <= '&') {			if(yych == 0x0A) goto yy187;		} else {			if(yych <= '\'') goto yy193;			if(yych >= '\\') goto yy202;		}yy199:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yybm[0+yych] & 64) {			goto yy199;		}		if(yych <= '&') goto yy201;		if(yych <= '\'') goto yy203;		goto yy204;yy201:		YYCURSOR = YYMARKER;		goto yy187;yy202:		YYMARKER = ++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych <= 0x0D) {			if(yych <= 0x09) {				if(yych <= 0x08) goto yy197;				goto yy199;			} else {				if(yych <= 0x0A) goto yy187;				if(yych <= 0x0C) goto yy197;				goto yy199;			}		} else {			if(yych <= ' ') {				if(yych <= 0x1F) goto yy197;				goto yy199;			} else {				if(yych == ';') goto yy199;				goto yy197;			}		}yy203:		yych = *++YYCURSOR;		goto yy187;yy204:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych == 0x0A) goto yy201;		goto yy199;yy205:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yybm[0+yych] & 128) {			goto yy205;		}		if(yych <= '!') goto yy201;		if(yych <= '"') goto yy203;		goto yy208;yy207:		YYMARKER = ++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych <= 0x0D) {			if(yych <= 0x09) {				if(yych <= 0x08) goto yy195;				goto yy205;			} else {				if(yych <= 0x0A) goto yy187;				if(yych <= 0x0C) goto yy195;				goto yy205;			}		} else {			if(yych <= ' ') {				if(yych <= 0x1F) goto yy195;				goto yy205;			} else {				if(yych == ';') goto yy205;				goto yy195;			}		}yy208:		++YYCURSOR;		if(YYLIMIT == YYCURSOR) YYFILL(1);		yych = *YYCURSOR;		if(yych == 0x0A) goto yy201;		goto yy205;	}}}void Scanner::fatal(uint ofs, const char *msg) const{	out.flush();	std::cerr << "re2c: error: "		<< "line " << tline << ", column " << (tchar + ofs + 1) << ": "		<< msg << std::endl;   	exit(1);}Scanner::~Scanner(){	if (bot)	{		delete [] bot;	}}} // end namespace re2c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -