qzdoom/src/sc_man_scanner.h

541 lines
10 KiB
C
Raw Normal View History

- Unlimited the monster pain sounds in Hexen after playing as the Cleric a while and killing centaurs with the flechette. - Fixed: Moving to an old level in a hub caused the old player's inventory to spawn owned by the current player (but still hanging off the old player), so the game would hang when trying to delete it. - Modified re2c so that it doesn't add a date to the file it generates. Thus, if it regenerates a file during a full rebuild, SVN won't see it as a change. Also updated it to 0.10.5. - Fixed: SC_GetString() did not properly terminate sc_String when the last token in the file had no white space after it. Since I could not actually find the problem (it works fine in debug mode and I saw no logic errors), I decided to take this opportunity to reimplement it using an re2c-generated scanner. Now it's 1.6x faster than before and correctness is easier to verify. - Fixed: FMODSoundRenderer::Shutdown() also needs to reset NumChannels. - Added back the Manifest to zdoom.rc for non-VC8 Windows compilers. - Fixed MinGW compilation again. Now it uses the same method as Makefile.linux to find all the source files so that it doesn't need to be manually updated each time source files are added or removed. - Added the SVN revision number to the version string. A new tool is used to obtain this information from the svnversion command and write it into a header file. If you don't have the svn command line tools installed or didn't check it out from the repository, you can still build. I added some rules for this to Makefile.linux, and I assume they work because they do for Makefile.mingw. - Fixed: MIDISong2 did not delete MusHeader in its destructor. SVN r200 (trunk)
2006-06-20 20:30:39 +00:00
/* 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[2];
#define YYFILL(n) { if(n == 2) { eofbuf[0] = *cursor; } eofbuf[n-1] = '\n'; cursor = eofbuf; limit = eofbuf + n - 1; sc_End = true; }
//#define YYDEBUG(s,c) { Printf ("%d: %02x\n", s, c); }
#define YYDEBUG(s,c)
char *cursor = ScriptPtr;
char *limit = ScriptEndPtr;
std:
tok = YYCURSOR;
#line 32 "src/sc_man_scanner.re"
if (!CMode)
{
#line 26 "src/sc_man_scanner.h"
{
YYCTYPE yych;
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 yy4;
goto yy14;
} else {
if(yych <= '=') goto yy12;
if(yych <= 'z') goto yy14;
if(yych <= '}') goto yy12;
goto yy14;
}
}
yy2:
#line 46 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 55 "src/sc_man_scanner.h"
yy3:
yych = *++YYCURSOR;
if(yych == '*') goto yy28;
if(yych == '/') goto yy24;
goto yy19;
yy4:
yych = *++YYCURSOR;
goto yy25;
#line 48 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 66 "src/sc_man_scanner.h"
yy6:
++YYCURSOR;
yych = *YYCURSOR;
goto yy23;
yy7:
#line 39 "src/sc_man_scanner.re"
{ goto std; }
#line 74 "src/sc_man_scanner.h"
yy8:
++YYCURSOR;
#line 40 "src/sc_man_scanner.re"
{ goto newline; }
#line 79 "src/sc_man_scanner.h"
yy10:
++YYCURSOR;
#line 41 "src/sc_man_scanner.re"
{ goto string; }
#line 84 "src/sc_man_scanner.h"
yy12:
++YYCURSOR;
#line 43 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 89 "src/sc_man_scanner.h"
yy14:
yych = *++YYCURSOR;
goto yy17;
yy15:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych <= '/') {
if(yych <= '"') {
if(yych == '!') goto yy18;
goto yy2;
} else {
if(yych == '*') goto yy2;
if(yych <= '.') goto yy18;
goto yy2;
}
} else {
if(yych <= '<') {
if(yych == ';') goto yy2;
goto yy18;
} else {
if(yych <= '=') goto yy2;
if(yych <= 'z') goto yy18;
if(yych <= '}') goto yy2;
goto yy18;
}
}
yy16:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy17:
if(yych <= ':') {
if(yych <= '"') {
if(yych == '!') goto yy16;
goto yy2;
} else {
if(yych == '/') goto yy15;
goto yy16;
}
} else {
if(yych <= '=') {
if(yych == '<') goto yy16;
goto yy2;
} else {
if(yych <= 'z') goto yy16;
if(yych <= '}') goto yy2;
goto yy16;
}
}
yy18:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy19:
if(yych <= '/') {
if(yych <= '"') {
if(yych == '!') goto yy18;
goto yy2;
} else {
if(yych == '*') goto yy20;
if(yych <= '.') goto yy18;
goto yy15;
}
} else {
if(yych <= '<') {
if(yych == ';') goto yy2;
goto yy18;
} else {
if(yych <= '=') goto yy2;
if(yych <= 'z') goto yy18;
if(yych <= '}') goto yy2;
goto yy18;
}
}
yy20:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych == '*') goto yy20;
if(yych == '/') goto yy15;
goto yy2;
yy22:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy23:
if(yych == 0x0A) goto yy7;
if(yych <= ' ') goto yy22;
goto yy7;
yy24:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy25:
if(yych != 0x0A) goto yy24;
++YYCURSOR;
#line 37 "src/sc_man_scanner.re"
{ goto newline; }
#line 189 "src/sc_man_scanner.h"
yy28:
++YYCURSOR;
#line 36 "src/sc_man_scanner.re"
{ goto comment; }
#line 194 "src/sc_man_scanner.h"
}
#line 49 "src/sc_man_scanner.re"
}
else
{
#line 202 "src/sc_man_scanner.h"
{
YYCTYPE yych;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
if(yych <= '9') {
if(yych <= '%') {
if(yych <= ' ') {
if(yych == 0x0A) goto yy36;
goto yy34;
} else {
if(yych == '"') goto yy38;
goto yy48;
}
} else {
if(yych <= ',') {
if(yych <= '&') goto yy43;
if(yych <= '\'') goto yy49;
goto yy48;
} else {
if(yych <= '-') goto yy40;
if(yych <= '.') goto yy48;
if(yych >= '0') goto yy41;
}
}
} else {
if(yych <= '^') {
if(yych <= '=') {
if(yych <= ';') goto yy48;
if(yych <= '<') goto yy46;
goto yy44;
} else {
if(yych <= '>') goto yy47;
if(yych <= '@') goto yy48;
if(yych <= 'Z') goto yy49;
goto yy48;
}
} else {
if(yych <= 'z') {
if(yych == '`') goto yy48;
goto yy49;
} else {
if(yych == '|') goto yy45;
if(yych <= '~') goto yy48;
goto yy49;
}
}
}
yych = *++YYCURSOR;
if(yych == '*') goto yy73;
if(yych == '/') goto yy71;
yy33:
#line 67 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 256 "src/sc_man_scanner.h"
yy34:
++YYCURSOR;
yych = *YYCURSOR;
goto yy70;
yy35:
#line 57 "src/sc_man_scanner.re"
{ goto std; }
#line 264 "src/sc_man_scanner.h"
yy36:
++YYCURSOR;
#line 58 "src/sc_man_scanner.re"
{ goto newline; }
#line 269 "src/sc_man_scanner.h"
yy38:
++YYCURSOR;
#line 59 "src/sc_man_scanner.re"
{ goto string; }
#line 274 "src/sc_man_scanner.h"
yy40:
yych = *++YYCURSOR;
if(yych <= '/') goto yy33;
if(yych <= '9') goto yy67;
goto yy33;
yy41:
++YYCURSOR;
if((yych = *YYCURSOR) <= '@') {
if(yych <= '-') {
if(yych == '\'') goto yy51;
} else {
if(yych <= '.') goto yy65;
if(yych <= '/') goto yy42;
if(yych <= '9') goto yy63;
}
} else {
if(yych <= '_') {
if(yych <= 'Z') goto yy51;
if(yych >= '_') goto yy51;
} else {
if(yych <= '`') goto yy42;
if(yych <= 'z') goto yy51;
if(yych >= 0x7F) goto yy51;
}
}
yy42:
#line 61 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 303 "src/sc_man_scanner.h"
yy43:
yych = *++YYCURSOR;
if(yych == '&') goto yy61;
goto yy33;
yy44:
yych = *++YYCURSOR;
if(yych == '=') goto yy59;
goto yy33;
yy45:
yych = *++YYCURSOR;
if(yych == '|') goto yy57;
goto yy33;
yy46:
yych = *++YYCURSOR;
if(yych == '<') goto yy55;
goto yy33;
yy47:
yych = *++YYCURSOR;
if(yych == '>') goto yy53;
goto yy33;
yy48:
yych = *++YYCURSOR;
goto yy33;
yy49:
++YYCURSOR;
yych = *YYCURSOR;
goto yy52;
yy50:
#line 68 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 334 "src/sc_man_scanner.h"
yy51:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy52:
if(yych <= 'Z') {
if(yych <= '/') {
if(yych == '\'') goto yy51;
goto yy50;
} else {
if(yych <= '9') goto yy51;
if(yych <= '@') goto yy50;
goto yy51;
}
} else {
if(yych <= '`') {
if(yych == '_') goto yy51;
goto yy50;
} else {
if(yych <= 'z') goto yy51;
if(yych <= '~') goto yy50;
goto yy51;
}
}
yy53:
++YYCURSOR;
#line 66 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 363 "src/sc_man_scanner.h"
yy55:
++YYCURSOR;
#line 65 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 368 "src/sc_man_scanner.h"
yy57:
++YYCURSOR;
#line 64 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 373 "src/sc_man_scanner.h"
yy59:
++YYCURSOR;
#line 63 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 378 "src/sc_man_scanner.h"
yy61:
++YYCURSOR;
#line 62 "src/sc_man_scanner.re"
{ goto normal_token; }
#line 383 "src/sc_man_scanner.h"
yy63:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych <= '@') {
if(yych <= '-') {
if(yych == '\'') goto yy51;
goto yy42;
} else {
if(yych <= '.') goto yy65;
if(yych <= '/') goto yy42;
if(yych <= '9') goto yy63;
goto yy42;
}
} else {
if(yych <= '_') {
if(yych <= 'Z') goto yy51;
if(yych <= '^') goto yy42;
goto yy51;
} else {
if(yych <= '`') goto yy42;
if(yych <= 'z') goto yy51;
if(yych <= '~') goto yy42;
goto yy51;
}
}
yy65:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych <= '/') goto yy42;
if(yych <= '9') goto yy65;
goto yy42;
yy67:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych == '.') goto yy65;
if(yych <= '/') goto yy42;
if(yych <= '9') goto yy67;
goto yy42;
yy69:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
yy70:
if(yych == 0x0A) goto yy35;
if(yych <= ' ') goto yy69;
goto yy35;
yy71:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if(yych == 0x0A) goto yy75;
goto yy71;
yy73:
++YYCURSOR;
#line 54 "src/sc_man_scanner.re"
{ goto comment; }
#line 443 "src/sc_man_scanner.h"
yy75:
++YYCURSOR;
#line 55 "src/sc_man_scanner.re"
{ goto newline; }
#line 448 "src/sc_man_scanner.h"
}
#line 71 "src/sc_man_scanner.re"
}
comment:
#line 456 "src/sc_man_scanner.h"
{
YYCTYPE yych;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
if(yych == 0x0A) goto yy81;
if(yych != '*') goto yy83;
++YYCURSOR;
if((yych = *YYCURSOR) == '/') goto yy84;
yy80:
#line 88 "src/sc_man_scanner.re"
{ goto comment; }
#line 468 "src/sc_man_scanner.h"
yy81:
++YYCURSOR;
#line 78 "src/sc_man_scanner.re"
{
if (YYCURSOR >= YYLIMIT)
{
ScriptPtr = ScriptEndPtr;
return false;
}
sc_Line++;
sc_Crossed = true;
goto comment;
}
#line 482 "src/sc_man_scanner.h"
yy83:
yych = *++YYCURSOR;
goto yy80;
yy84:
++YYCURSOR;
#line 76 "src/sc_man_scanner.re"
{ goto std; }
#line 490 "src/sc_man_scanner.h"
}
#line 89 "src/sc_man_scanner.re"
newline:
if (YYCURSOR >= YYLIMIT)
{
ScriptPtr = ScriptEndPtr;
return false;
}
sc_Line++;
sc_Crossed = true;
goto std;
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 == '"')
{
break;
}
if (*cursor == '\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;