gzdoom-gles/src/sc_man_scanner.h

608 lines
12 KiB
C

/* 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;