scanner.s.c

来自「a little DFA compiler.」· C语言 代码 · 共 1,159 行 · 第 1/2 页

C
1,159
字号
				  yylval.regexp = strToCaseInsensitiveRE(token());				  return STRING; }#line 584 "<stdout>"yy85:	++YYCURSOR;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;yy86:	if(yych <= '!') {		if(yych == 0x0A) goto yy66;		goto yy85;	} else {		if(yych <= '"') goto yy88;		if(yych != '\\') goto yy85;	}	++YYCURSOR;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;	if(yych == 0x0A) goto yy66;	goto yy85;yy88:	++YYCURSOR;#line 175 "scanner.s.re"	{ cur = cursor;				  yylval.regexp = strToRE(token());				  return STRING; }#line 608 "<stdout>"yy90:	++YYCURSOR;#line 172 "scanner.s.re"	{ tok = cursor;				  RETURN(0); }#line 614 "<stdout>"yy92:	++YYCURSOR;#line 169 "scanner.s.re"	{ depth = 1;				  goto comment; }#line 620 "<stdout>"yy94:	yych = *++YYCURSOR;	if(yych == ',') goto yy108;	goto yy96;yy95:	++YYCURSOR;	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);	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.s.re"	{ fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); }#line 643 "<stdout>"yy99:	++YYCURSOR;#line 204 "scanner.s.re"	{ yylval.extop.minsize = atoi((char *)tok+1);				  yylval.extop.maxsize = atoi((char *)tok+1);				  RETURN(CLOSESIZE); }#line 650 "<stdout>"yy101:	yyaccept = 6;	yych = *(YYMARKER = ++YYCURSOR);	if(yych <= '/') goto yy98;	if(yych <= '9') goto yy104;	if(yych != '}') goto yy98;	++YYCURSOR;#line 212 "scanner.s.re"	{ yylval.extop.minsize = atoi((char *)tok+1);				  yylval.extop.maxsize = -1;				  RETURN(CLOSESIZE); }#line 662 "<stdout>"yy104:	++YYCURSOR;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;	if(yych <= '/') goto yy66;	if(yych <= '9') goto yy104;	if(yych != '}') goto yy66;	++YYCURSOR;#line 208 "scanner.s.re"	{ yylval.extop.minsize = atoi((char *)tok+1);				  yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1));				  RETURN(CLOSESIZE); }#line 675 "<stdout>"yy108:	yyaccept = 6;	yych = *(YYMARKER = ++YYCURSOR);	if(yych <= '/') goto yy98;	if(yych <= '9') goto yy104;	if(yych != '}') goto yy98;	++YYCURSOR;#line 201 "scanner.s.re"	{ yylval.op = '*';				  RETURN(CLOSE); }#line 686 "<stdout>"}#line 247 "scanner.s.re"code:#line 693 "<stdout>"{	YYCTYPE yych;	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);	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.s.re"	{ if(--depth == 0){					cur = cursor;					yylval.token = new Token(token(), tline);					return CODE;				  }				  goto code; }#line 723 "<stdout>"yy115:	++YYCURSOR;#line 257 "scanner.s.re"	{ ++depth;				  goto code; }#line 729 "<stdout>"yy117:	++YYCURSOR;#line 259 "scanner.s.re"	{ if(cursor == eof) fatal("missing '}'");				  pos = cursor; cline++;				  goto code;				}#line 737 "<stdout>"yy119:	++YYCURSOR;yy120:#line 263 "scanner.s.re"	{ goto code; }#line 743 "<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;	if(YYLIMIT == YYCURSOR) YYFILL(1);	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;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;	if(yych == 0x0A) goto yy125;	goto yy123;yy127:	++YYCURSOR;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;yy128:	if(yych <= '!') {		if(yych == 0x0A) goto yy125;		goto yy127;	} else {		if(yych <= '"') goto yy119;		if(yych != '\\') goto yy127;	}	++YYCURSOR;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;	if(yych == 0x0A) goto yy125;	goto yy127;}#line 264 "scanner.s.re"comment:#line 796 "<stdout>"{	YYCTYPE yych;	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);	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.s.re"	{ if(cursor == eof) RETURN(0);				  goto comment; }#line 816 "<stdout>"yy134:	yych = *++YYCURSOR;	if(yych == '*') goto yy138;	goto yy133;yy135:	++YYCURSOR;#line 275 "scanner.s.re"	{ if(cursor == eof) RETURN(0);				  tok = pos = cursor; cline++;				  goto comment;				}#line 828 "<stdout>"yy137:	yych = *++YYCURSOR;	goto yy133;yy138:	++YYCURSOR;#line 272 "scanner.s.re"	{ ++depth;				  fatal("ambiguous /* found");				  goto comment; }#line 838 "<stdout>"yy140:	++YYCURSOR;#line 268 "scanner.s.re"	{ if(--depth == 0)					goto scan;				    else					goto comment; }#line 846 "<stdout>"}#line 281 "scanner.s.re"config:#line 853 "<stdout>"{	YYCTYPE yych;	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);	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.s.re"	{ goto config; }#line 872 "<stdout>"yy146:	++YYCURSOR;	yych = *YYCURSOR;	goto yy151;yy147:#line 286 "scanner.s.re"	{ iscfg = 2;				  cur = cursor;				  RETURN('='); 				}#line 883 "<stdout>"yy148:	++YYCURSOR;#line 290 "scanner.s.re"	{ fatal("missing '='"); }#line 888 "<stdout>"yy150:	++YYCURSOR;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;yy151:	if(yych == 0x09) goto yy150;	if(yych == ' ') goto yy150;	goto yy147;yy152:	++YYCURSOR;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;yy153:	if(yych == 0x09) goto yy152;	if(yych == ' ') goto yy152;	goto yy145;}#line 291 "scanner.s.re"value:#line 911 "<stdout>"{	YYCTYPE yych;	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);	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.s.re"	{ cur = cursor;				  yylval.str = new Str(token());				  iscfg = 0;				  return VALUE;				}#line 950 "<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.s.re"	{ cur = cursor;				  yylval.number = atoi(token().to_string().c_str());				  iscfg = 0;				  return NUMBER;				}#line 971 "<stdout>"yy159:	yych = *++YYCURSOR;	if(yych <= '0') goto yy163;	if(yych >= ':') goto yy163;yy160:	++YYCURSOR;	if(YYLIMIT == YYCURSOR) YYFILL(1);	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;	if(YYLIMIT == YYCURSOR) YYFILL(1);	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;	if(YYLIMIT == YYCURSOR) YYFILL(1);	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;	if(YYLIMIT == YYCURSOR) YYFILL(1);	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;	if(YYLIMIT == YYCURSOR) YYFILL(1);	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;	if(YYLIMIT == YYCURSOR) YYFILL(1);	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;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;	if(yych == 0x0A) goto yy170;	goto yy168;yy174:	++YYCURSOR;	if(YYLIMIT == YYCURSOR) YYFILL(1);	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;	if(YYLIMIT == YYCURSOR) YYFILL(1);	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;	if(YYLIMIT == YYCURSOR) YYFILL(1);	yych = *YYCURSOR;	if(yych == 0x0A) goto yy170;	goto yy174;}#line 305 "scanner.s.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 + =
减小字号Ctrl + -
显示快捷键?