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

📄 scanner.fs.c

📁 a little DFA compiler.
💻 C
📖 第 1 页 / 共 2 页
字号:
	yych = *YYCURSOR;	if(yych == 0x0A) goto yy66;	goto yy80;yy83:	++YYCURSOR;#line 179 "scanner.fs.re"	{ cur = cursor;				  yylval.regexp = strToCaseInsensitiveRE(token());				  return STRING; }#line 646 "<stdout>"yy85:	++YYCURSOR;	YYSETSTATE(12);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel12:	yych = *YYCURSOR;yy86:	if(yych <= '!') {		if(yych == 0x0A) goto yy66;		goto yy85;	} else {		if(yych <= '"') goto yy88;		if(yych != '\\') goto yy85;	}	++YYCURSOR;	YYSETSTATE(13);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel13:	yych = *YYCURSOR;	if(yych == 0x0A) goto yy66;	goto yy85;yy88:	++YYCURSOR;#line 175 "scanner.fs.re"	{ cur = cursor;				  yylval.regexp = strToRE(token());				  return STRING; }#line 674 "<stdout>"yy90:	++YYCURSOR;#line 172 "scanner.fs.re"	{ tok = cursor;				  RETURN(0); }#line 680 "<stdout>"yy92:	++YYCURSOR;#line 169 "scanner.fs.re"	{ depth = 1;				  goto comment; }#line 686 "<stdout>"yy94:	yych = *++YYCURSOR;	if(yych == ',') goto yy108;	goto yy96;yy95:	++YYCURSOR;	YYSETSTATE(14);	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);yyFillLabel14:	yych = *YYCURSOR;yy96:	if(yych <= '/') {		if(yych == ',') goto yy101;		goto yy66;	} else {		if(yych <= '9') goto yy95;		if(yych == '}') goto yy99;		goto yy66;	}yy97:	++YYCURSOR;yy98:#line 216 "scanner.fs.re"	{ fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); }#line 711 "<stdout>"yy99:	++YYCURSOR;#line 204 "scanner.fs.re"	{ yylval.extop.minsize = atoi((char *)tok+1);				  yylval.extop.maxsize = atoi((char *)tok+1);				  RETURN(CLOSESIZE); }#line 718 "<stdout>"yy101:	yyaccept = 6;	yych = *(YYMARKER = ++YYCURSOR);	if(yych <= '/') goto yy98;	if(yych <= '9') goto yy104;	if(yych != '}') goto yy98;	++YYCURSOR;#line 212 "scanner.fs.re"	{ yylval.extop.minsize = atoi((char *)tok+1);				  yylval.extop.maxsize = -1;				  RETURN(CLOSESIZE); }#line 730 "<stdout>"yy104:	++YYCURSOR;	YYSETSTATE(15);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel15:	yych = *YYCURSOR;	if(yych <= '/') goto yy66;	if(yych <= '9') goto yy104;	if(yych != '}') goto yy66;	++YYCURSOR;#line 208 "scanner.fs.re"	{ yylval.extop.minsize = atoi((char *)tok+1);				  yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1));				  RETURN(CLOSESIZE); }#line 745 "<stdout>"yy108:	yyaccept = 6;	yych = *(YYMARKER = ++YYCURSOR);	if(yych <= '/') goto yy98;	if(yych <= '9') goto yy104;	if(yych != '}') goto yy98;	++YYCURSOR;#line 201 "scanner.fs.re"	{ yylval.op = '*';				  RETURN(CLOSE); }#line 756 "<stdout>"}#line 247 "scanner.fs.re"code:#line 763 "<stdout>"{	YYSETSTATE(16);	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);yyFillLabel16:	yych = *YYCURSOR;	if(yych <= '&') {		if(yych <= 0x0A) {			if(yych <= 0x09) goto yy119;			goto yy117;		} else {			if(yych == '"') goto yy121;			goto yy119;		}	} else {		if(yych <= '{') {			if(yych <= '\'') goto yy122;			if(yych <= 'z') goto yy119;			goto yy115;		} else {			if(yych != '}') goto yy119;		}	}	++YYCURSOR;#line 251 "scanner.fs.re"	{ if(--depth == 0){					cur = cursor;					yylval.token = new Token(token(), tline);					return CODE;				  }				  goto code; }#line 795 "<stdout>"yy115:	++YYCURSOR;#line 257 "scanner.fs.re"	{ ++depth;				  goto code; }#line 801 "<stdout>"yy117:	++YYCURSOR;#line 259 "scanner.fs.re"	{ if(cursor == eof) fatal("missing '}'");				  pos = cursor; cline++;				  goto code;				}#line 809 "<stdout>"yy119:	++YYCURSOR;yy120:#line 263 "scanner.fs.re"	{ goto code; }#line 815 "<stdout>"yy121:	yych = *(YYMARKER = ++YYCURSOR);	if(yych == 0x0A) goto yy120;	goto yy128;yy122:	yych = *(YYMARKER = ++YYCURSOR);	if(yych == 0x0A) goto yy120;	goto yy124;yy123:	++YYCURSOR;	YYSETSTATE(17);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel17:	yych = *YYCURSOR;yy124:	if(yych <= '&') {		if(yych != 0x0A) goto yy123;	} else {		if(yych <= '\'') goto yy119;		if(yych == '\\') goto yy126;		goto yy123;	}yy125:	YYCURSOR = YYMARKER;	goto yy120;yy126:	++YYCURSOR;	YYSETSTATE(18);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel18:	yych = *YYCURSOR;	if(yych == 0x0A) goto yy125;	goto yy123;yy127:	++YYCURSOR;	YYSETSTATE(19);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel19:	yych = *YYCURSOR;yy128:	if(yych <= '!') {		if(yych == 0x0A) goto yy125;		goto yy127;	} else {		if(yych <= '"') goto yy119;		if(yych != '\\') goto yy127;	}	++YYCURSOR;	YYSETSTATE(20);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel20:	yych = *YYCURSOR;	if(yych == 0x0A) goto yy125;	goto yy127;}#line 264 "scanner.fs.re"comment:#line 876 "<stdout>"{	YYSETSTATE(21);	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);yyFillLabel21:	yych = *YYCURSOR;	if(yych <= ')') {		if(yych == 0x0A) goto yy135;		goto yy137;	} else {		if(yych <= '*') goto yy132;		if(yych == '/') goto yy134;		goto yy137;	}yy132:	++YYCURSOR;	if((yych = *YYCURSOR) == '/') goto yy140;yy133:#line 279 "scanner.fs.re"	{ if(cursor == eof) RETURN(0);				  goto comment; }#line 898 "<stdout>"yy134:	yych = *++YYCURSOR;	if(yych == '*') goto yy138;	goto yy133;yy135:	++YYCURSOR;#line 275 "scanner.fs.re"	{ if(cursor == eof) RETURN(0);				  tok = pos = cursor; cline++;				  goto comment;				}#line 910 "<stdout>"yy137:	yych = *++YYCURSOR;	goto yy133;yy138:	++YYCURSOR;#line 272 "scanner.fs.re"	{ ++depth;				  fatal("ambiguous /* found");				  goto comment; }#line 920 "<stdout>"yy140:	++YYCURSOR;#line 268 "scanner.fs.re"	{ if(--depth == 0)					goto scan;				    else					goto comment; }#line 928 "<stdout>"}#line 281 "scanner.fs.re"config:#line 935 "<stdout>"{	YYSETSTATE(22);	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);yyFillLabel22:	yych = *YYCURSOR;	if(yych <= 0x1F) {		if(yych != 0x09) goto yy148;	} else {		if(yych <= ' ') goto yy144;		if(yych == '=') goto yy146;		goto yy148;	}yy144:	++YYCURSOR;	yych = *YYCURSOR;	goto yy153;yy145:#line 285 "scanner.fs.re"	{ goto config; }#line 956 "<stdout>"yy146:	++YYCURSOR;	yych = *YYCURSOR;	goto yy151;yy147:#line 286 "scanner.fs.re"	{ iscfg = 2;				  cur = cursor;				  RETURN('='); 				}#line 967 "<stdout>"yy148:	++YYCURSOR;#line 290 "scanner.fs.re"	{ fatal("missing '='"); }#line 972 "<stdout>"yy150:	++YYCURSOR;	YYSETSTATE(23);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel23:	yych = *YYCURSOR;yy151:	if(yych == 0x09) goto yy150;	if(yych == ' ') goto yy150;	goto yy147;yy152:	++YYCURSOR;	YYSETSTATE(24);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel24:	yych = *YYCURSOR;yy153:	if(yych == 0x09) goto yy152;	if(yych == ' ') goto yy152;	goto yy145;}#line 291 "scanner.fs.re"value:#line 999 "<stdout>"{	YYSETSTATE(25);	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);yyFillLabel25:	yych = *YYCURSOR;	if(yych <= '&') {		if(yych <= 0x0D) {			if(yych <= 0x08) goto yy162;			if(yych <= 0x0A) goto yy156;			if(yych <= 0x0C) goto yy162;		} else {			if(yych <= ' ') {				if(yych <= 0x1F) goto yy162;			} else {				if(yych == '"') goto yy164;				goto yy162;			}		}	} else {		if(yych <= '/') {			if(yych <= '\'') goto yy166;			if(yych == '-') goto yy159;			goto yy162;		} else {			if(yych <= '9') {				if(yych <= '0') goto yy157;				goto yy160;			} else {				if(yych != ';') goto yy162;			}		}	}yy156:#line 300 "scanner.fs.re"	{ cur = cursor;				  yylval.str = new Str(token());				  iscfg = 0;				  return VALUE;				}#line 1040 "<stdout>"yy157:	++YYCURSOR;	if((yych = *YYCURSOR) <= 0x0D) {		if(yych <= 0x08) goto yy162;		if(yych <= 0x0A) goto yy158;		if(yych <= 0x0C) goto yy162;	} else {		if(yych <= ' ') {			if(yych <= 0x1F) goto yy162;		} else {			if(yych != ';') goto yy162;		}	}yy158:#line 295 "scanner.fs.re"	{ cur = cursor;				  yylval.number = atoi(token().to_string().c_str());				  iscfg = 0;				  return NUMBER;				}#line 1061 "<stdout>"yy159:	yych = *++YYCURSOR;	if(yych <= '0') goto yy163;	if(yych >= ':') goto yy163;yy160:	++YYCURSOR;	YYSETSTATE(26);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel26:	yych = *YYCURSOR;	if(yych <= 0x1F) {		if(yych <= 0x0A) {			if(yych >= 0x09) goto yy158;		} else {			if(yych == 0x0D) goto yy158;		}	} else {		if(yych <= '9') {			if(yych <= ' ') goto yy158;			if(yych >= '0') goto yy160;		} else {			if(yych == ';') goto yy158;		}	}yy162:	++YYCURSOR;	YYSETSTATE(27);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel27:	yych = *YYCURSOR;yy163:	if(yych <= 0x0D) {		if(yych <= 0x08) goto yy162;		if(yych <= 0x0A) goto yy156;		if(yych <= 0x0C) goto yy162;		goto yy156;	} else {		if(yych <= ' ') {			if(yych <= 0x1F) goto yy162;			goto yy156;		} else {			if(yych == ';') goto yy156;			goto yy162;		}	}yy164:	YYMARKER = ++YYCURSOR;	YYSETSTATE(28);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel28:	yych = *YYCURSOR;	if(yych <= ' ') {		if(yych <= 0x0A) {			if(yych <= 0x08) goto yy164;			if(yych <= 0x09) goto yy174;			goto yy156;		} else {			if(yych == 0x0D) goto yy174;			if(yych <= 0x1F) goto yy164;			goto yy174;		}	} else {		if(yych <= ':') {			if(yych == '"') goto yy162;			goto yy164;		} else {			if(yych <= ';') goto yy174;			if(yych == '\\') goto yy176;			goto yy164;		}	}yy166:	YYMARKER = ++YYCURSOR;	YYSETSTATE(29);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel29:	yych = *YYCURSOR;	if(yych <= ' ') {		if(yych <= 0x0A) {			if(yych <= 0x08) goto yy166;			if(yych >= 0x0A) goto yy156;		} else {			if(yych == 0x0D) goto yy168;			if(yych <= 0x1F) goto yy166;		}	} else {		if(yych <= ':') {			if(yych == '\'') goto yy162;			goto yy166;		} else {			if(yych <= ';') goto yy168;			if(yych == '\\') goto yy171;			goto yy166;		}	}yy168:	++YYCURSOR;	YYSETSTATE(30);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel30:	yych = *YYCURSOR;	if(yych <= '&') {		if(yych != 0x0A) goto yy168;	} else {		if(yych <= '\'') goto yy172;		if(yych == '\\') goto yy173;		goto yy168;	}yy170:	YYCURSOR = YYMARKER;	goto yy156;yy171:	YYMARKER = ++YYCURSOR;	YYSETSTATE(31);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel31:	yych = *YYCURSOR;	if(yych <= 0x0D) {		if(yych <= 0x09) {			if(yych <= 0x08) goto yy166;			goto yy168;		} else {			if(yych <= 0x0A) goto yy156;			if(yych <= 0x0C) goto yy166;			goto yy168;		}	} else {		if(yych <= ' ') {			if(yych <= 0x1F) goto yy166;			goto yy168;		} else {			if(yych == ';') goto yy168;			goto yy166;		}	}yy172:	yych = *++YYCURSOR;	goto yy156;yy173:	++YYCURSOR;	YYSETSTATE(32);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel32:	yych = *YYCURSOR;	if(yych == 0x0A) goto yy170;	goto yy168;yy174:	++YYCURSOR;	YYSETSTATE(33);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel33:	yych = *YYCURSOR;	if(yych <= '!') {		if(yych == 0x0A) goto yy170;		goto yy174;	} else {		if(yych <= '"') goto yy172;		if(yych == '\\') goto yy177;		goto yy174;	}yy176:	YYMARKER = ++YYCURSOR;	YYSETSTATE(34);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel34:	yych = *YYCURSOR;	if(yych <= 0x0D) {		if(yych <= 0x09) {			if(yych <= 0x08) goto yy164;			goto yy174;		} else {			if(yych <= 0x0A) goto yy156;			if(yych <= 0x0C) goto yy164;			goto yy174;		}	} else {		if(yych <= ' ') {			if(yych <= 0x1F) goto yy164;			goto yy174;		} else {			if(yych == ';') goto yy174;			goto yy164;		}	}yy177:	++YYCURSOR;	YYSETSTATE(35);	if(YYLIMIT == YYCURSOR) YYFILL(1);yyFillLabel35:	yych = *YYCURSOR;	if(yych == 0x0A) goto yy170;	goto yy174;}#line 305 "scanner.fs.re"}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);}} // end namespace re2c

⌨️ 快捷键说明

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