/* Generated by re2c 0.10.5 */ #line 1 "src/sc_man_scanner.re" #define YYCTYPE char #define YYCURSOR cursor #define YYLIMIT limit #define YYMARKER marker // This buffer must be as large as the largest YYFILL call YYCTYPE eofbuf[3]; #define YYFILL(n) \ { if(!sc_End) { \ if(n == 2) { eofbuf[0] = *cursor; } \ else if(n == 3) { eofbuf[0] = *cursor; eofbuf[1] = *(cursor + 1); } \ eofbuf[n-1] = '\n'; \ cursor = eofbuf; \ limit = eofbuf + n - 1; \ sc_End = true; } \ } \ assert(n <= 3) // Semicolon intentionally omitted //#define YYDEBUG(s,c) { Printf ("%d: %02x\n", s, c); } #define YYDEBUG(s,c) char *cursor = ScriptPtr; char *limit = ScriptEndPtr; std1: tok = YYCURSOR; std2: #line 43 "src/sc_man_scanner.re" if (!CMode) { #line 36 "src/sc_man_scanner.h" { YYCTYPE yych; unsigned int yyaccept = 0; if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= '/') { if(yych <= ' ') { if(yych == 0x0A) goto yy8; goto yy6; } else { if(yych == '"') goto yy10; if(yych <= '.') goto yy14; goto yy3; } } else { if(yych <= '<') { if(yych == ';') goto yy5; goto yy14; } else { if(yych <= '=') goto yy12; if(yych <= 'z') goto yy14; if(yych <= '}') goto yy12; goto yy14; } } yy2: #line 57 "src/sc_man_scanner.re" { goto normal_token; } #line 66 "src/sc_man_scanner.h" yy3: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '/') { if(yych <= '"') { if(yych == '!') goto yy19; } else { if(yych == '*') goto yy27; if(yych <= '.') goto yy19; goto yy23; } } else { if(yych <= '<') { if(yych != ';') goto yy19; } else { if(yych <= '=') goto yy4; if(yych <= 'z') goto yy19; if(yych >= '~') goto yy19; } } yy4: #line 59 "src/sc_man_scanner.re" { goto normal_token; } #line 90 "src/sc_man_scanner.h" yy5: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); goto yy24; yy6: ++YYCURSOR; yych = *YYCURSOR; goto yy22; yy7: #line 50 "src/sc_man_scanner.re" { goto std1; } #line 102 "src/sc_man_scanner.h" yy8: ++YYCURSOR; #line 51 "src/sc_man_scanner.re" { goto newline; } #line 107 "src/sc_man_scanner.h" yy10: ++YYCURSOR; #line 52 "src/sc_man_scanner.re" { goto string; } #line 112 "src/sc_man_scanner.h" yy12: ++YYCURSOR; #line 54 "src/sc_man_scanner.re" { goto normal_token; } #line 117 "src/sc_man_scanner.h" yy14: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); goto yy18; yy15: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych <= '/') { if(yych <= '"') { if(yych == '!') goto yy19; } else { if(yych == '*') goto yy16; if(yych <= '.') goto yy19; } } else { if(yych <= '<') { if(yych != ';') goto yy19; } else { if(yych <= '=') goto yy16; if(yych <= 'z') goto yy19; if(yych >= '~') goto yy19; } } yy16: YYCURSOR = YYMARKER; if(yyaccept <= 0) { goto yy4; } else { goto yy2; } yy17: yyaccept = 1; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy18: if(yych <= ':') { if(yych <= '"') { if(yych == '!') goto yy17; goto yy2; } else { if(yych == '/') goto yy15; goto yy17; } } else { if(yych <= '=') { if(yych == '<') goto yy17; goto yy2; } else { if(yych <= 'z') goto yy17; if(yych <= '}') goto yy2; goto yy17; } } yy19: yyaccept = 1; YYMARKER = ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych <= ':') { if(yych <= '"') { if(yych == '!') goto yy19; goto yy2; } else { if(yych == '/') goto yy15; goto yy19; } } else { if(yych <= '=') { if(yych == '<') goto yy19; goto yy2; } else { if(yych <= 'z') goto yy19; if(yych <= '}') goto yy2; goto yy19; } } yy21: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy22: if(yych == 0x0A) goto yy7; if(yych <= ' ') goto yy21; goto yy7; yy23: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy24: if(yych != 0x0A) goto yy23; ++YYCURSOR; #line 48 "src/sc_man_scanner.re" { goto newline; } #line 213 "src/sc_man_scanner.h" yy27: ++YYCURSOR; #line 47 "src/sc_man_scanner.re" { goto comment; } #line 218 "src/sc_man_scanner.h" } #line 60 "src/sc_man_scanner.re" } else { #line 226 "src/sc_man_scanner.h" { YYCTYPE yych; if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych <= ':') { if(yych <= '&') { if(yych <= ' ') { if(yych == 0x0A) goto yy35; goto yy33; } else { if(yych == '"') goto yy37; if(yych <= '%') goto yy50; goto yy45; } } else { if(yych <= '-') { if(yych <= '\'') goto yy51; if(yych <= ',') goto yy50; goto yy39; } else { if(yych <= '.') goto yy43; if(yych <= '/') goto yy31; if(yych <= '9') goto yy41; goto yy44; } } } else { if(yych <= '^') { if(yych <= '=') { if(yych <= ';') goto yy50; if(yych <= '<') goto yy48; goto yy46; } else { if(yych <= '>') goto yy49; if(yych <= '@') goto yy50; if(yych <= 'Z') goto yy51; goto yy50; } } else { if(yych <= 'z') { if(yych == '`') goto yy50; goto yy51; } else { if(yych == '|') goto yy47; if(yych <= '~') goto yy50; goto yy51; } } } yy31: yych = *(YYMARKER = ++YYCURSOR); if(yych == '*') goto yy77; if(yych == '/') goto yy75; yy32: #line 80 "src/sc_man_scanner.re" { goto normal_token; } #line 283 "src/sc_man_scanner.h" yy33: ++YYCURSOR; yych = *YYCURSOR; goto yy74; yy34: #line 68 "src/sc_man_scanner.re" { goto std1; } #line 291 "src/sc_man_scanner.h" yy35: ++YYCURSOR; #line 69 "src/sc_man_scanner.re" { goto newline; } #line 296 "src/sc_man_scanner.h" yy37: ++YYCURSOR; #line 70 "src/sc_man_scanner.re" { goto string; } #line 301 "src/sc_man_scanner.h" yy39: ++YYCURSOR; #line 72 "src/sc_man_scanner.re" { goto negative_check; } #line 306 "src/sc_man_scanner.h" yy41: ++YYCURSOR; if((yych = *YYCURSOR) == '.') goto yy71; if(yych <= '/') goto yy53; if(yych <= '9') goto yy69; goto yy53; yy42: #line 81 "src/sc_man_scanner.re" { goto normal_token; } #line 316 "src/sc_man_scanner.h" yy43: yych = *++YYCURSOR; if(yych <= '/') goto yy32; if(yych <= '9') goto yy66; goto yy32; yy44: yych = *++YYCURSOR; if(yych == ':') goto yy64; goto yy32; yy45: yych = *++YYCURSOR; if(yych == '&') goto yy62; goto yy32; yy46: yych = *++YYCURSOR; if(yych == '=') goto yy60; goto yy32; yy47: yych = *++YYCURSOR; if(yych == '|') goto yy58; goto yy32; yy48: yych = *++YYCURSOR; if(yych == '<') goto yy56; goto yy32; yy49: yych = *++YYCURSOR; if(yych == '>') goto yy54; goto yy32; yy50: yych = *++YYCURSOR; goto yy32; yy51: yych = *++YYCURSOR; goto yy53; yy52: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy53: if(yych <= 'Z') { if(yych <= '/') { if(yych == '\'') goto yy52; goto yy42; } else { if(yych <= '9') goto yy52; if(yych <= '@') goto yy42; goto yy52; } } else { if(yych <= '`') { if(yych == '_') goto yy52; goto yy42; } else { if(yych <= 'z') goto yy52; if(yych <= '~') goto yy42; goto yy52; } } yy54: ++YYCURSOR; #line 79 "src/sc_man_scanner.re" { goto normal_token; } #line 380 "src/sc_man_scanner.h" yy56: ++YYCURSOR; #line 78 "src/sc_man_scanner.re" { goto normal_token; } #line 385 "src/sc_man_scanner.h" yy58: ++YYCURSOR; #line 77 "src/sc_man_scanner.re" { goto normal_token; } #line 390 "src/sc_man_scanner.h" yy60: ++YYCURSOR; #line 76 "src/sc_man_scanner.re" { goto normal_token; } #line 395 "src/sc_man_scanner.h" yy62: ++YYCURSOR; #line 75 "src/sc_man_scanner.re" { goto normal_token; } #line 400 "src/sc_man_scanner.h" yy64: ++YYCURSOR; #line 74 "src/sc_man_scanner.re" { goto normal_token; } #line 405 "src/sc_man_scanner.h" yy66: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych <= '/') goto yy68; if(yych <= '9') goto yy66; yy68: #line 73 "src/sc_man_scanner.re" { goto normal_token; } #line 415 "src/sc_man_scanner.h" yy69: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych <= '@') { if(yych <= '-') { if(yych == '\'') goto yy52; goto yy42; } else { if(yych <= '.') goto yy71; if(yych <= '/') goto yy42; if(yych <= '9') goto yy69; goto yy42; } } else { if(yych <= '_') { if(yych <= 'Z') goto yy52; if(yych <= '^') goto yy42; goto yy52; } else { if(yych <= '`') goto yy42; if(yych <= 'z') goto yy52; if(yych <= '~') goto yy42; goto yy52; } } yy71: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych <= '/') goto yy68; if(yych <= '9') goto yy71; goto yy68; yy73: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; yy74: if(yych == 0x0A) goto yy34; if(yych <= ' ') goto yy73; goto yy34; yy75: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); yych = *YYCURSOR; if(yych == 0x0A) goto yy79; goto yy75; yy77: ++YYCURSOR; #line 65 "src/sc_man_scanner.re" { goto comment; } #line 467 "src/sc_man_scanner.h" yy79: ++YYCURSOR; #line 66 "src/sc_man_scanner.re" { goto newline; } #line 472 "src/sc_man_scanner.h" } #line 84 "src/sc_man_scanner.re" } negative_check: // re2c doesn't have enough state to handle '-' as the start of a negative number // and as its own token, so help it out a little. if (YYCURSOR >= YYLIMIT) { goto normal_token; } if (*YYCURSOR >= '0' && *YYCURSOR <= '9') { goto std2; } if (*YYCURSOR != '.' || YYCURSOR+1 >= YYLIMIT) { goto normal_token; } if (*(YYCURSOR+1) >= '0' && *YYCURSOR <= '9') { goto std2; } goto normal_token; comment: #line 501 "src/sc_man_scanner.h" { YYCTYPE yych; if((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if(yych == 0x0A) goto yy85; if(yych != '*') goto yy87; ++YYCURSOR; if((yych = *YYCURSOR) == '/') goto yy88; yy84: #line 130 "src/sc_man_scanner.re" { goto comment; } #line 513 "src/sc_man_scanner.h" yy85: ++YYCURSOR; #line 120 "src/sc_man_scanner.re" { if (YYCURSOR >= YYLIMIT) { ScriptPtr = ScriptEndPtr; return false; } sc_Line++; sc_Crossed = true; goto comment; } #line 527 "src/sc_man_scanner.h" yy87: yych = *++YYCURSOR; goto yy84; yy88: ++YYCURSOR; #line 111 "src/sc_man_scanner.re" { if (YYCURSOR >= YYLIMIT) { ScriptPtr = ScriptEndPtr; return false; } goto std1; } #line 542 "src/sc_man_scanner.h" } #line 131 "src/sc_man_scanner.re" newline: if (YYCURSOR >= YYLIMIT) { ScriptPtr = ScriptEndPtr; return false; } sc_Line++; sc_Crossed = true; goto std1; normal_token: ScriptPtr = (YYCURSOR >= YYLIMIT) ? ScriptEndPtr : cursor; sc_StringLen = MIN (ScriptPtr - tok, MAX_STRING_SIZE-1); memcpy (sc_String, tok, sc_StringLen); sc_String[sc_StringLen] = '\0'; return true; string: if (YYLIMIT != ScriptEndPtr) { ScriptPtr = ScriptEndPtr; return false; } ScriptPtr = cursor; for (sc_StringLen = 0; cursor < YYLIMIT; ++cursor) { if (Escape && *cursor == '\\' && *(cursor + 1) == '"') { cursor++; } else if (*cursor == '\r' && *(cursor + 1) == '\n') { cursor++; // convert CR-LF to simply LF } else if (*cursor == '"') { break; } if (*cursor == '\n') { if (CMode) { if (!Escape || sc_StringLen == 0 || sc_String[sc_StringLen - 1] != '\\') { SC_ScriptError ("Unterminated string constant"); } else { sc_StringLen--; // overwrite the \ character with \n } } sc_Line++; sc_Crossed = true; } if (sc_StringLen < MAX_STRING_SIZE-1) { sc_String[sc_StringLen++] = *cursor; } } ScriptPtr = cursor + 1; sc_String[sc_StringLen] = '\0'; return true;