📄 scanner.cc
字号:
++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 + -