/* Generated by re2c 0.13.4.dev on Sat Apr 5 15:54:36 2008 */ /* $Id: scanner.cc 859 2008-04-05 15:09:33Z helly $ */ #include #include #include #include #include "scanner.h" #include "parser.h" #include "y.tab.h" #include "globals.h" #include "dfa.h" extern YYSTYPE yylval; #ifndef MAX #define MAX(a,b) (((a)>(b))?(a):(b)) #endif #define YYCTYPE unsigned char #define YYCURSOR cursor #define YYLIMIT lim #define YYMARKER ptr #define YYCTXMARKER ctx #define YYFILL(n) {cursor = fill(cursor, n);} #define RETURN(i) {cur = cursor; return i;} namespace re2c { Scanner::ParseMode Scanner::echo() { char *cursor = cur; bool ignore_eoc = false; int ignore_cnt = 0; if (eof && cursor == eof) // Catch EOF { return Stop; } tok = cursor; echo: { YYCTYPE yych; unsigned int yyaccept = 0; static const unsigned char yybm[] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 160, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 160, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; if ((YYLIMIT - YYCURSOR) < 16) YYFILL(16); yych = *YYCURSOR; if (yych <= ')') { if (yych <= 0x00) goto yy7; if (yych == '\n') goto yy5; goto yy9; } else { if (yych <= '*') goto yy4; if (yych != '/') goto yy9; } yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych == '*') goto yy37; yy3: { goto echo; } yy4: yych = *++YYCURSOR; if (yych == '/') goto yy32; goto yy3; yy5: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 32) { goto yy10; } if (yych == '#') goto yy13; yy6: { if (ignore_eoc) { ignore_cnt++; } else if (!DFlag) { out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok)); } tok = pos = cursor; cline++; goto echo; } yy7: ++YYCURSOR; { if (!ignore_eoc && !DFlag) { out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok) - 1); // -1 so we don't write out the \0 } if(cursor == eof) { RETURN(Stop); } } yy9: yych = *++YYCURSOR; goto yy3; yy10: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 32) { goto yy10; } if (yych == '#') goto yy13; yy12: YYCURSOR = YYMARKER; if (yyaccept <= 1) { if (yyaccept <= 0) { goto yy3; } else { goto yy6; } } else { goto yy33; } yy13: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy13; goto yy12; } else { if (yych <= ' ') goto yy13; if (yych != 'l') goto yy12; } yych = *++YYCURSOR; if (yych != 'i') goto yy12; yych = *++YYCURSOR; if (yych != 'n') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych <= '0') goto yy20; if (yych <= '9') goto yy12; goto yy20; yy19: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy20: if (yych <= 0x1F) { if (yych == '\t') goto yy19; goto yy12; } else { if (yych <= ' ') goto yy19; if (yych <= '0') goto yy12; if (yych >= ':') goto yy12; } yy21: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 64) { goto yy21; } if (yych <= '\f') { if (yych <= 0x08) goto yy12; if (yych <= '\t') goto yy23; if (yych <= '\n') goto yy25; goto yy12; } else { if (yych <= '\r') goto yy27; if (yych != ' ') goto yy12; } yy23: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy23; goto yy12; } else { if (yych <= ' ') goto yy23; if (yych == '"') goto yy28; goto yy12; } yy25: ++YYCURSOR; YYCURSOR = YYCTXMARKER; { set_sourceline(cursor); goto echo; } yy27: yych = *++YYCURSOR; if (yych == '\n') goto yy25; goto yy12; yy28: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yybm[0+yych] & 128) { goto yy28; } if (yych <= '!') goto yy12; if (yych <= '"') goto yy31; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy12; goto yy28; yy31: yych = *++YYCURSOR; if (yych == '\n') goto yy25; if (yych == '\r') goto yy27; goto yy12; yy32: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy35; if (yych == '\r') goto yy34; yy33: { if (ignore_eoc) { if (ignore_cnt) { out << "\n" << sourceFileInfo; } ignore_eoc = false; ignore_cnt = 0; } else if (!DFlag) { out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok)); } tok = pos = cursor; goto echo; } yy34: yych = *++YYCURSOR; if (yych != '\n') goto yy12; yy35: ++YYCURSOR; { cline++; if (ignore_eoc) { if (ignore_cnt) { out << sourceFileInfo; } ignore_eoc = false; ignore_cnt = 0; } else if (!DFlag) { out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok)); } tok = pos = cursor; goto echo; } yy37: yych = *++YYCURSOR; if (yych != '!') goto yy12; yych = *++YYCURSOR; switch (yych) { case 'g': goto yy41; case 'i': goto yy40; case 'm': goto yy42; case 'r': goto yy44; case 't': goto yy39; case 'u': goto yy43; default: goto yy12; } yy39: yych = *++YYCURSOR; if (yych == 'y') goto yy99; goto yy12; yy40: yych = *++YYCURSOR; if (yych == 'g') goto yy88; goto yy12; yy41: yych = *++YYCURSOR; if (yych == 'e') goto yy75; goto yy12; yy42: yych = *++YYCURSOR; if (yych == 'a') goto yy67; goto yy12; yy43: yych = *++YYCURSOR; if (yych == 's') goto yy59; goto yy12; yy44: yych = *++YYCURSOR; if (yych == 'e') goto yy45; if (yych == 'u') goto yy46; goto yy12; yy45: yych = *++YYCURSOR; if (yych == '2') goto yy56; goto yy12; yy46: yych = *++YYCURSOR; if (yych != 'l') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != 's') goto yy12; yych = *++YYCURSOR; if (yych != ':') goto yy12; yych = *++YYCURSOR; if (yych != 'r') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != '2') goto yy12; yych = *++YYCURSOR; if (yych != 'c') goto yy12; ++YYCURSOR; { if (rFlag) { mapCodeName.clear(); } else { fatal("found 'reules:re2c' block without -r flag"); } if (bUsedYYMaxFill && bSinglePass) { fatal("found scanner block after YYMAXFILL declaration"); } tok = cursor; RETURN(Rules); } yy56: yych = *++YYCURSOR; if (yych != 'c') goto yy12; ++YYCURSOR; { if (rFlag) { fatal("found standard 're2c' block while using -r flag"); } if (bUsedYYMaxFill && bSinglePass) { fatal("found scanner block after YYMAXFILL declaration"); } if (!DFlag) { out.write((const char*)(tok), (const char*)(&cursor[-7]) - (const char*)(tok)); } tok = cursor; RETURN(Parse); } yy59: yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != ':') goto yy12; yych = *++YYCURSOR; if (yych != 'r') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != '2') goto yy12; yych = *++YYCURSOR; if (yych != 'c') goto yy12; ++YYCURSOR; { if (!rFlag) { fatal("found 'use:re2c' block without -r flag"); } reuse(); if (bUsedYYMaxFill && bSinglePass) { fatal("found scanner block after YYMAXFILL declaration"); } if (!DFlag) { out.write((const char*)(tok), (const char*)(&cursor[-11]) - (const char*)(tok)); } tok = cursor; RETURN(Reuse); } yy67: yych = *++YYCURSOR; if (yych != 'x') goto yy12; yych = *++YYCURSOR; if (yych != ':') goto yy12; yych = *++YYCURSOR; if (yych != 'r') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != '2') goto yy12; yych = *++YYCURSOR; if (yych != 'c') goto yy12; ++YYCURSOR; { if (bUsedYYMaxFill) { fatal("cannot generate YYMAXFILL twice"); } if (!DFlag) { out << "#define YYMAXFILL " << maxFill << std::endl; } tok = pos = cursor; ignore_eoc = true; bUsedYYMaxFill = true; goto echo; } yy75: yych = *++YYCURSOR; if (yych != 't') goto yy12; yych = *++YYCURSOR; if (yych != 's') goto yy12; yych = *++YYCURSOR; if (yych != 't') goto yy12; yych = *++YYCURSOR; if (yych != 'a') goto yy12; yych = *++YYCURSOR; if (yych != 't') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != ':') goto yy12; yych = *++YYCURSOR; if (yych != 'r') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != '2') goto yy12; yych = *++YYCURSOR; if (yych != 'c') goto yy12; ++YYCURSOR; { tok = pos = cursor; genGetStateGoto(out, topIndent, 0); ignore_eoc = true; goto echo; } yy88: yych = *++YYCURSOR; if (yych != 'n') goto yy12; yych = *++YYCURSOR; if (yych != 'o') goto yy12; yych = *++YYCURSOR; if (yych != 'r') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != ':') goto yy12; yych = *++YYCURSOR; if (yych != 'r') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != '2') goto yy12; yych = *++YYCURSOR; if (yych != 'c') goto yy12; ++YYCURSOR; { tok = pos = cursor; ignore_eoc = true; goto echo; } yy99: yych = *++YYCURSOR; if (yych != 'p') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != 's') goto yy12; yych = *++YYCURSOR; if (yych != ':') goto yy12; yych = *++YYCURSOR; if (yych != 'r') goto yy12; yych = *++YYCURSOR; if (yych != 'e') goto yy12; yych = *++YYCURSOR; if (yych != '2') goto yy12; yych = *++YYCURSOR; if (yych != 'c') goto yy12; ++YYCURSOR; { if (bSinglePass) { fatal("cannot generate types inline in single pass mode"); } tok = pos = cursor; ignore_eoc = true; if (bLastPass && !DFlag) { out << outputFileInfo; out << "\n"; out << typesInline; out << "\n"; out << sourceFileInfo; } goto echo; } } } int Scanner::scan() { char *cursor = cur; uint depth; scan: tchar = cursor - pos; tline = cline; tok = cursor; if (iscfg == 1) { goto config; } else if (iscfg == 2) { goto value; } { YYCTYPE yych; unsigned int yyaccept = 0; static const unsigned char yybm[] = { 208, 208, 208, 208, 208, 208, 208, 208, 208, 212, 0, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 212, 208, 192, 208, 208, 208, 208, 80, 208, 208, 208, 208, 208, 208, 208, 208, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 208, 208, 208, 208, 208, 208, 208, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 208, 0, 144, 208, 240, 208, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, }; if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6); yych = *YYCURSOR; if (yych <= '/') { if (yych <= '"') { if (yych <= '\f') { if (yych <= 0x08) goto yy138; if (yych <= '\t') goto yy133; if (yych <= '\n') goto yy135; goto yy138; } else { if (yych <= 0x1F) { if (yych <= '\r') goto yy137; goto yy138; } else { if (yych <= ' ') goto yy133; if (yych <= '!') goto yy138; goto yy119; } } } else { if (yych <= '*') { if (yych <= '&') goto yy138; if (yych <= '\'') goto yy121; if (yych <= ')') goto yy126; goto yy117; } else { if (yych <= ',') { if (yych <= '+') goto yy127; goto yy126; } else { if (yych <= '-') goto yy138; if (yych <= '.') goto yy131; goto yy115; } } } } else { if (yych <= '[') { if (yych <= '<') { if (yych <= '9') goto yy138; if (yych <= ':') goto yy113; if (yych <= ';') goto yy126; goto yy125; } else { if (yych <= '?') { if (yych <= '>') goto yy126; goto yy127; } else { if (yych <= '@') goto yy138; if (yych <= 'Z') goto yy130; goto yy123; } } } else { if (yych <= 'q') { if (yych <= '^') { if (yych <= '\\') goto yy126; goto yy138; } else { if (yych == '`') goto yy138; goto yy130; } } else { if (yych <= 'z') { if (yych <= 'r') goto yy129; goto yy130; } else { if (yych <= '{') goto yy111; if (yych <= '|') goto yy126; goto yy138; } } } } yy111: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= '/') { if (yych == ',') goto yy229; } else { if (yych <= '0') goto yy226; if (yych <= '9') goto yy227; } } else { if (yych <= '_') { if (yych <= 'Z') goto yy224; if (yych >= '_') goto yy224; } else { if (yych <= '`') goto yy112; if (yych <= 'z') goto yy224; } } yy112: { depth = 1; goto code; } yy113: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; if ((yych = *YYCURSOR) == '=') goto yy220; yy114: { std::ostringstream msg; msg << "unexpected character: "; prtChOrHex(msg, *tok); fatal(msg.str().c_str()); goto scan; } yy115: ++YYCURSOR; if ((yych = *YYCURSOR) == '*') goto yy218; yy116: { RETURN(*tok); } yy117: ++YYCURSOR; if ((yych = *YYCURSOR) == '/') goto yy216; { yylval.op = *tok; RETURN(STAR); } yy119: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych != '\n') goto yy212; yy120: { fatal("unterminated string constant (missing \")"); } yy121: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych != '\n') goto yy207; yy122: { fatal("unterminated string constant (missing ')"); } yy123: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy124; if (yych == '^') goto yy198; goto yy197; yy124: { fatal("unterminated range (missing ])"); } yy125: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych == '!') goto yy187; if (yych == '>') goto yy189; goto yy116; yy126: yych = *++YYCURSOR; goto yy116; yy127: ++YYCURSOR; { yylval.op = *tok; RETURN(CLOSE); } yy129: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; if (yych == 'e') goto yy176; goto yy165; yy130: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; goto yy165; yy131: ++YYCURSOR; { cur = cursor; yylval.regexp = mkDot(); return RANGE; } yy133: ++YYCURSOR; yych = *YYCURSOR; goto yy163; yy134: { goto scan; } yy135: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 4) { goto yy140; } if (yych == '#') goto yy143; yy136: { if (cursor == eof) RETURN(0); pos = cursor; cline++; goto scan; } yy137: yych = *++YYCURSOR; if (yych == '\n') goto yy139; goto yy114; yy138: yych = *++YYCURSOR; goto yy114; yy139: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 4) { goto yy140; } if (yych == '#') goto yy143; goto yy136; yy140: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 4) { goto yy140; } if (yych == '#') goto yy143; yy142: YYCURSOR = YYMARKER; if (yyaccept <= 3) { if (yyaccept <= 1) { if (yyaccept <= 0) { goto yy112; } else { goto yy120; } } else { if (yyaccept <= 2) { goto yy122; } else { goto yy124; } } } else { if (yyaccept <= 5) { if (yyaccept <= 4) { goto yy116; } else { goto yy136; } } else { if (yyaccept <= 6) { goto yy182; } else { goto yy230; } } } yy143: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy143; goto yy142; } else { if (yych <= ' ') goto yy143; if (yych != 'l') goto yy142; } yych = *++YYCURSOR; if (yych != 'i') goto yy142; yych = *++YYCURSOR; if (yych != 'n') goto yy142; yych = *++YYCURSOR; if (yych != 'e') goto yy142; yych = *++YYCURSOR; if (yych <= '0') goto yy150; if (yych <= '9') goto yy142; goto yy150; yy149: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy150: if (yych <= 0x1F) { if (yych == '\t') goto yy149; goto yy142; } else { if (yych <= ' ') goto yy149; if (yych <= '0') goto yy142; if (yych >= ':') goto yy142; } yy151: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 8) { goto yy151; } if (yych <= '\f') { if (yych <= 0x08) goto yy142; if (yych <= '\t') goto yy153; if (yych <= '\n') goto yy155; goto yy142; } else { if (yych <= '\r') goto yy157; if (yych != ' ') goto yy142; } yy153: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy153; goto yy142; } else { if (yych <= ' ') goto yy153; if (yych == '"') goto yy158; goto yy142; } yy155: ++YYCURSOR; YYCURSOR = YYCTXMARKER; { set_sourceline(cursor); goto scan; } yy157: yych = *++YYCURSOR; if (yych == '\n') goto yy155; goto yy142; yy158: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yybm[0+yych] & 16) { goto yy158; } if (yych <= '!') goto yy142; if (yych <= '"') goto yy161; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy142; goto yy158; yy161: yych = *++YYCURSOR; if (yych == '\n') goto yy155; if (yych == '\r') goto yy157; goto yy142; yy162: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy163: if (yych == '\t') goto yy162; if (yych == ' ') goto yy162; goto yy134; yy164: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; yy165: if (yybm[0+yych] & 32) { goto yy164; } if (yych <= ' ') { if (yych == '\t') goto yy168; if (yych <= 0x1F) goto yy167; goto yy168; } else { if (yych <= ',') { if (yych <= '+') goto yy167; goto yy169; } else { if (yych <= '<') goto yy167; if (yych <= '>') goto yy169; goto yy167; } } yy166: YYCURSOR = YYCTXMARKER; { if (!FFlag) { cur = cursor; yylval.symbol = Symbol::find(token()); return ID; } else { /* Add one char in front and one behind instead of 's or "s */ cur = cursor; if (bCaseInsensitive || bCaseInverted) { yylval.regexp = strToCaseInsensitiveRE(raw_token("\"")); } else { yylval.regexp = strToRE(raw_token("\"")); } return STRING; } } yy167: yych = *++YYCURSOR; goto yy166; yy168: yych = *++YYCURSOR; goto yy174; yy169: ++YYCURSOR; yy170: YYCURSOR = YYCTXMARKER; { cur = ptr > tok ? ptr - 1 : cursor; yylval.symbol = Symbol::find(token()); return ID; } yy171: ++YYCURSOR; YYCURSOR = YYCTXMARKER; { cur = ptr > tok ? ptr - 1 : cursor; yylval.symbol = Symbol::find(token()); return FFlag ? FID : ID; } yy173: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy174: if (yych <= ' ') { if (yych == '\t') goto yy173; if (yych <= 0x1F) goto yy171; goto yy173; } else { if (yych <= ',') { if (yych <= '+') goto yy171; } else { if (yych <= '<') goto yy171; if (yych >= '?') goto yy171; } } yych = *++YYCURSOR; goto yy170; yy176: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; if (yych != '2') goto yy165; YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; if (yych != 'c') goto yy165; YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; if (yych != ':') goto yy165; yych = *++YYCURSOR; if (yych <= '^') { if (yych <= '@') goto yy166; if (yych >= '[') goto yy166; } else { if (yych == '`') goto yy166; if (yych >= '{') goto yy166; } yy180: yyaccept = 6; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '@') { if (yych <= '9') { if (yych >= '0') goto yy180; } else { if (yych <= ':') goto yy184; if (yych >= '@') goto yy183; } } else { if (yych <= '_') { if (yych <= 'Z') goto yy180; if (yych >= '_') goto yy180; } else { if (yych <= '`') goto yy182; if (yych <= 'z') goto yy180; } } yy182: { cur = cursor; tok += 5; /* skip "re2c:" */ iscfg = 1; yylval.str = new Str(token()); return CONFIG; } yy183: yych = *++YYCURSOR; if (yych <= '^') { if (yych <= '@') goto yy142; if (yych <= 'Z') goto yy185; goto yy142; } else { if (yych == '`') goto yy142; if (yych <= 'z') goto yy185; goto yy142; } yy184: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '^') { if (yych <= '@') goto yy142; if (yych <= 'Z') goto yy180; goto yy142; } else { if (yych == '`') goto yy142; if (yych <= 'z') goto yy180; goto yy142; } yy185: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 'Z') { if (yych <= '/') goto yy182; if (yych <= '9') goto yy185; if (yych <= '@') goto yy182; goto yy185; } else { if (yych <= '_') { if (yych <= '^') goto yy182; goto yy185; } else { if (yych <= '`') goto yy182; if (yych <= 'z') goto yy185; goto yy182; } } yy187: ++YYCURSOR; { RETURN(SETUP); } yy189: YYCTXMARKER = YYCURSOR + 1; yych = *++YYCURSOR; goto yy191; yy190: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; yy191: if (yych <= '9') { if (yych <= '\t') { if (yych <= 0x08) goto yy142; goto yy190; } else { if (yych == ' ') goto yy190; goto yy142; } } else { if (yych <= '=') { if (yych <= ':') goto yy195; if (yych <= '<') goto yy142; goto yy194; } else { if (yych != '{') goto yy142; } } yy192: ++YYCURSOR; YYCURSOR = YYCTXMARKER; { RETURN(NOCOND); } yy194: yych = *++YYCURSOR; if (yych == '>') goto yy192; goto yy142; yy195: yych = *++YYCURSOR; if (yych == '=') goto yy192; goto yy142; yy196: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy197: if (yybm[0+yych] & 64) { goto yy196; } if (yych <= '[') goto yy142; if (yych <= '\\') goto yy200; goto yy201; yy198: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '[') { if (yych == '\n') goto yy142; goto yy198; } else { if (yych <= '\\') goto yy203; if (yych <= ']') goto yy204; goto yy198; } yy200: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy142; goto yy196; yy201: ++YYCURSOR; { cur = cursor; yylval.regexp = ranToRE(token()); return RANGE; } yy203: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy142; goto yy198; yy204: ++YYCURSOR; { cur = cursor; yylval.regexp = invToRE(token()); return RANGE; } yy206: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy207: if (yybm[0+yych] & 128) { goto yy206; } if (yych <= '&') goto yy142; if (yych <= '\'') goto yy209; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy142; goto yy206; yy209: ++YYCURSOR; { cur = cursor; if (bCaseInverted) { yylval.regexp = strToRE(token()); } else { yylval.regexp = strToCaseInsensitiveRE(token()); } return STRING; } yy211: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy212: if (yych <= '!') { if (yych == '\n') goto yy142; goto yy211; } else { if (yych <= '"') goto yy214; if (yych != '\\') goto yy211; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy142; goto yy211; yy214: ++YYCURSOR; { cur = cursor; if (bCaseInsensitive || bCaseInverted) { yylval.regexp = strToCaseInsensitiveRE(token()); } else { yylval.regexp = strToRE(token()); } return STRING; } yy216: ++YYCURSOR; { tok = cursor; RETURN(0); } yy218: ++YYCURSOR; { depth = 1; goto comment; } yy220: ++YYCURSOR; if ((yych = *YYCURSOR) == '>') goto yy222; { cur = cursor; tok += 2; /* skip ":=" */ depth = 0; goto code; } yy222: ++YYCURSOR; YYCURSOR = YYCTXMARKER; { RETURN(*tok); } yy224: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '^') { if (yych <= '9') { if (yych <= '/') goto yy142; goto yy224; } else { if (yych <= '@') goto yy142; if (yych <= 'Z') goto yy224; goto yy142; } } else { if (yych <= 'z') { if (yych == '`') goto yy142; goto yy224; } else { if (yych == '}') goto yy243; goto yy142; } } yy226: yych = *++YYCURSOR; if (yych == ',') goto yy240; goto yy228; yy227: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; yy228: if (yych <= '/') { if (yych == ',') goto yy233; goto yy142; } else { if (yych <= '9') goto yy227; if (yych == '}') goto yy231; goto yy142; } yy229: ++YYCURSOR; yy230: { fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); } yy231: ++YYCURSOR; { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = atoi((char *)tok+1); RETURN(CLOSESIZE); } yy233: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') goto yy230; if (yych <= '9') goto yy236; if (yych != '}') goto yy230; ++YYCURSOR; { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = -1; RETURN(CLOSESIZE); } yy236: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '/') goto yy142; if (yych <= '9') goto yy236; if (yych != '}') goto yy142; ++YYCURSOR; { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1)); RETURN(CLOSESIZE); } yy240: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') goto yy230; if (yych <= '9') goto yy236; if (yych != '}') goto yy230; ++YYCURSOR; { yylval.op = '*'; RETURN(CLOSE); } yy243: ++YYCURSOR; { if (!FFlag) { fatal("curly braces for names only allowed with -F switch"); } cur = cursor; yylval.symbol = Symbol::find(token(1, cur - tok - 2)); return ID; } } code: { YYCTYPE yych; unsigned int yyaccept = 0; static const unsigned char yybm[] = { 48, 48, 48, 48, 48, 48, 48, 48, 48, 112, 0, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 112, 48, 16, 48, 48, 48, 48, 32, 48, 48, 48, 48, 48, 48, 48, 48, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 0, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, }; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= '&') { if (yych <= '\n') { if (yych <= 0x00) goto yy253; if (yych <= '\t') goto yy255; goto yy251; } else { if (yych == '"') goto yy257; goto yy255; } } else { if (yych <= '{') { if (yych <= '\'') goto yy258; if (yych <= 'z') goto yy255; goto yy249; } else { if (yych != '}') goto yy255; } } ++YYCURSOR; { if (depth == 0) { fatal("Curly braces are not allowed after ':='"); } else if (--depth == 0) { cur = cursor; yylval.token = new Token(token(), sourceFileInfo.fname, tline); return CODE; } goto code; } yy249: ++YYCURSOR; { if (depth == 0) { fatal("Curly braces are not allowed after ':='"); } else { ++depth; } goto code; } yy251: YYCTXMARKER = YYCURSOR + 1; yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '\r') { if (yych <= '\t') { if (yych >= '\t') goto yy266; } else { if (yych <= '\n') goto yy268; if (yych >= '\r') goto yy268; } } else { if (yych <= ' ') { if (yych >= ' ') goto yy266; } else { if (yych == '#') goto yy269; } } yy252: { if (depth == 0) { cur = cursor; tok += strspn(tok, " \t\r\n"); while (cur > tok && strchr(" \t\r\n", cur[-1])) { --cur; } yylval.token = new Token(token(), sourceFileInfo.fname, tline); return CODE; } else if (cursor == eof) { fatal("missing '}'"); } pos = cursor; cline++; goto code; } yy253: ++YYCURSOR; { if (cursor == eof) { if (depth) { fatal("missing '}'"); } RETURN(0); } goto code; } yy255: ++YYCURSOR; yy256: { goto code; } yy257: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy256; goto yy264; yy258: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if (yych == '\n') goto yy256; goto yy260; yy259: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy260: if (yybm[0+yych] & 16) { goto yy259; } if (yych <= '&') goto yy261; if (yych <= '\'') goto yy255; goto yy262; yy261: YYCURSOR = YYMARKER; if (yyaccept <= 1) { if (yyaccept <= 0) { goto yy252; } else { goto yy256; } } else { goto yy267; } yy262: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy261; goto yy259; yy263: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy264: if (yybm[0+yych] & 32) { goto yy263; } if (yych <= '!') goto yy261; if (yych <= '"') goto yy255; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy261; goto yy263; yy266: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x1F) { if (yych == '\t') goto yy288; } else { if (yych <= ' ') goto yy288; if (yych == '#') goto yy269; } yy267: YYCURSOR = YYCTXMARKER; { if (depth == 0) { goto code; } else if (cursor == eof) { fatal("missing '}'"); } pos = cursor; cline++; goto code; } yy268: yych = *++YYCURSOR; goto yy267; yy269: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if (yybm[0+yych] & 64) { goto yy269; } if (yych != 'l') goto yy261; yych = *++YYCURSOR; if (yych != 'i') goto yy261; yych = *++YYCURSOR; if (yych != 'n') goto yy261; yych = *++YYCURSOR; if (yych != 'e') goto yy261; yych = *++YYCURSOR; if (yych <= '0') goto yy276; if (yych <= '9') goto yy261; goto yy276; yy275: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy276: if (yych <= 0x1F) { if (yych == '\t') goto yy275; goto yy261; } else { if (yych <= ' ') goto yy275; if (yych <= '0') goto yy261; if (yych >= ':') goto yy261; } yy277: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 128) { goto yy277; } if (yych <= '\f') { if (yych <= 0x08) goto yy261; if (yych <= '\t') goto yy279; if (yych <= '\n') goto yy281; goto yy261; } else { if (yych <= '\r') goto yy283; if (yych != ' ') goto yy261; } yy279: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy279; goto yy261; } else { if (yych <= ' ') goto yy279; if (yych == '"') goto yy284; goto yy261; } yy281: ++YYCURSOR; YYCURSOR = YYCTXMARKER; { set_sourceline(cursor); goto code; } yy283: yych = *++YYCURSOR; if (yych == '\n') goto yy281; goto yy261; yy284: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yych <= '!') { if (yych == '\n') goto yy261; goto yy284; } else { if (yych <= '"') goto yy287; if (yych != '\\') goto yy284; } ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy261; goto yy284; yy287: yych = *++YYCURSOR; if (yych == '\n') goto yy281; if (yych == '\r') goto yy283; goto yy261; yy288: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy288; goto yy261; } else { if (yych <= ' ') goto yy288; if (yych == '#') goto yy269; goto yy261; } } comment: { YYCTYPE yych; static const unsigned char yybm[] = { 128, 128, 128, 128, 128, 128, 128, 128, 128, 160, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 160, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, }; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= ')') { if (yych == '\n') goto yy295; goto yy297; } else { if (yych <= '*') goto yy292; if (yych == '/') goto yy294; goto yy297; } yy292: ++YYCURSOR; if ((yych = *YYCURSOR) == '/') goto yy322; yy293: { if (cursor == eof) { RETURN(0); } goto comment; } yy294: yych = *++YYCURSOR; if (yych == '*') goto yy320; goto yy293; yy295: yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 32) { goto yy298; } if (yych == '#') goto yy301; yy296: { if (cursor == eof) { RETURN(0); } tok = pos = cursor; cline++; goto comment; } yy297: yych = *++YYCURSOR; goto yy293; yy298: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 32) { goto yy298; } if (yych == '#') goto yy301; yy300: YYCURSOR = YYMARKER; goto yy296; yy301: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy301; goto yy300; } else { if (yych <= ' ') goto yy301; if (yych != 'l') goto yy300; } yych = *++YYCURSOR; if (yych != 'i') goto yy300; yych = *++YYCURSOR; if (yych != 'n') goto yy300; yych = *++YYCURSOR; if (yych != 'e') goto yy300; yych = *++YYCURSOR; if (yych <= '0') goto yy308; if (yych <= '9') goto yy300; goto yy308; yy307: YYCTXMARKER = YYCURSOR + 1; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy308: if (yych <= 0x1F) { if (yych == '\t') goto yy307; goto yy300; } else { if (yych <= ' ') goto yy307; if (yych <= '0') goto yy300; if (yych >= ':') goto yy300; } yy309: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 64) { goto yy309; } if (yych <= '\f') { if (yych <= 0x08) goto yy300; if (yych <= '\t') goto yy311; if (yych <= '\n') goto yy313; goto yy300; } else { if (yych <= '\r') goto yy315; if (yych != ' ') goto yy300; } yy311: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= 0x1F) { if (yych == '\t') goto yy311; goto yy300; } else { if (yych <= ' ') goto yy311; if (yych == '"') goto yy316; goto yy300; } yy313: ++YYCURSOR; YYCURSOR = YYCTXMARKER; { set_sourceline(cursor); goto comment; } yy315: yych = *++YYCURSOR; if (yych == '\n') goto yy313; goto yy300; yy316: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3); yych = *YYCURSOR; if (yybm[0+yych] & 128) { goto yy316; } if (yych <= '!') goto yy300; if (yych <= '"') goto yy319; ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy300; goto yy316; yy319: yych = *++YYCURSOR; if (yych == '\n') goto yy313; if (yych == '\r') goto yy315; goto yy300; yy320: ++YYCURSOR; { ++depth; fatal("ambiguous /* found"); goto comment; } yy322: ++YYCURSOR; { if (--depth == 0) { goto scan; } else { goto comment; } } } config: { YYCTYPE yych; 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, }; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= 0x1F) { if (yych != '\t') goto yy330; } else { if (yych <= ' ') goto yy326; if (yych == '=') goto yy328; goto yy330; } yy326: ++YYCURSOR; yych = *YYCURSOR; goto yy335; yy327: { goto config; } yy328: ++YYCURSOR; yych = *YYCURSOR; goto yy333; yy329: { iscfg = 2; cur = cursor; RETURN('='); } yy330: ++YYCURSOR; { fatal("missing '='"); } yy332: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy333: if (yybm[0+yych] & 128) { goto yy332; } goto yy329; yy334: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy335: if (yych == '\t') goto yy334; if (yych == ' ') goto yy334; goto yy327; } value: { YYCTYPE yych; 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, }; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '&') { if (yych <= '\r') { if (yych <= 0x08) goto yy344; if (yych <= '\n') goto yy338; if (yych <= '\f') goto yy344; } else { if (yych <= ' ') { if (yych <= 0x1F) goto yy344; } else { if (yych == '"') goto yy346; goto yy344; } } } else { if (yych <= '/') { if (yych <= '\'') goto yy348; if (yych == '-') goto yy341; goto yy344; } else { if (yych <= '9') { if (yych <= '0') goto yy339; goto yy342; } else { if (yych != ';') goto yy344; } } } yy338: { cur = cursor; yylval.str = new Str(token()); iscfg = 0; return VALUE; } yy339: ++YYCURSOR; if (yybm[0+(yych = *YYCURSOR)] & 8) { goto yy344; } yy340: { cur = cursor; yylval.number = atoi(token().to_string().c_str()); iscfg = 0; return NUMBER; } yy341: yych = *++YYCURSOR; if (yych <= '0') goto yy345; if (yych >= ':') goto yy345; yy342: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 4) { goto yy342; } if (yych <= '\r') { if (yych <= 0x08) goto yy344; if (yych <= '\n') goto yy340; if (yych >= '\r') goto yy340; } else { if (yych <= ' ') { if (yych >= ' ') goto yy340; } else { if (yych == ';') goto yy340; } } yy344: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy345: if (yybm[0+yych] & 8) { goto yy344; } goto yy338; yy346: YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 16) { goto yy346; } if (yych <= '!') { if (yych == '\n') goto yy338; goto yy356; } else { if (yych <= '"') goto yy344; if (yych <= '[') goto yy356; goto yy358; } yy348: YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 32) { goto yy348; } if (yych <= '&') { if (yych == '\n') goto yy338; } else { if (yych <= '\'') goto yy344; if (yych >= '\\') goto yy353; } yy350: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 64) { goto yy350; } if (yych <= '&') goto yy352; if (yych <= '\'') goto yy354; goto yy355; yy352: YYCURSOR = YYMARKER; goto yy338; yy353: YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '\r') { if (yych <= '\t') { if (yych <= 0x08) goto yy348; goto yy350; } else { if (yych <= '\n') goto yy338; if (yych <= '\f') goto yy348; goto yy350; } } else { if (yych <= ' ') { if (yych <= 0x1F) goto yy348; goto yy350; } else { if (yych == ';') goto yy350; goto yy348; } } yy354: yych = *++YYCURSOR; goto yy338; yy355: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy352; goto yy350; yy356: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yybm[0+yych] & 128) { goto yy356; } if (yych <= '!') goto yy352; if (yych <= '"') goto yy354; goto yy359; yy358: YYMARKER = ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych <= '\r') { if (yych <= '\t') { if (yych <= 0x08) goto yy346; goto yy356; } else { if (yych <= '\n') goto yy338; if (yych <= '\f') goto yy346; goto yy356; } } else { if (yych <= ' ') { if (yych <= 0x1F) goto yy346; goto yy356; } else { if (yych == ';') goto yy356; goto yy346; } } yy359: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy352; goto yy356; } } void Scanner::set_sourceline(char *& cursor) { sourceline: tok = cursor; { YYCTYPE yych; static const unsigned char yybm[] = { 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, }; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '!') { if (yych == '\n') goto yy366; goto yy368; } else { if (yych <= '"') goto yy364; if (yych <= '0') goto yy368; if (yych >= ':') goto yy368; } ++YYCURSOR; yych = *YYCURSOR; goto yy376; yy363: { cur = cursor; cline = atoi(token().to_string().c_str()); goto sourceline; } yy364: yych = *(YYMARKER = ++YYCURSOR); if (yych != '\n') goto yy370; yy365: { goto sourceline; } yy366: ++YYCURSOR; { if (cursor == eof) { --cursor; } else { pos = cursor; } tok = cursor; return; } yy368: yych = *++YYCURSOR; goto yy365; yy369: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy370: if (yybm[0+yych] & 64) { goto yy369; } if (yych <= '!') goto yy371; if (yych <= '"') goto yy373; goto yy372; yy371: YYCURSOR = YYMARKER; goto yy365; yy372: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; if (yych == '\n') goto yy371; goto yy369; yy373: ++YYCURSOR; { cur = cursor; sourceFileInfo.set_fname(token(1, cur - tok - 2).to_string()); goto sourceline; } yy375: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy376: if (yybm[0+yych] & 128) { goto yy375; } goto yy363; } } } // end namespace re2c