diff -urNp src/c_cmds.cpp src1/c_cmds.cpp
--- src/c_cmds.cpp	Tue Jul  2 14:01:00 2013
+++ src1/c_cmds.cpp	Tue Jul  2 13:43:10 2013
@@ -212,6 +212,22 @@ CCMD (iddqd)
 	}
 }
 
+CCMD (buddha)
+{
+	if (CheckCheatmode())
+		return;
+
+	if ( NETWORK_GetState( ) == NETSTATE_CLIENT )
+		CLIENTCOMMANDS_GenericCheat( CHT_BUDDHA );
+	
+	else
+	{
+		Net_WriteByte(DEM_GENERICCHEAT);
+		Net_WriteByte(CHT_BUDDHA);
+	}
+}
+
+
 // [BC] Allow users to execute the "idfa" cheat from the console.
 CCMD( idfa )
 {
diff -urNp src/d_player.h src1/d_player.h
--- src/d_player.h	Tue Jul  2 14:01:02 2013
+++ src1/d_player.h	Tue Jul  2 13:43:10 2013
@@ -225,6 +225,8 @@ typedef enum
 	CF_SPREAD			= 1 << 28,
 	CF_SPEED25			= 1 << 29,
 
+	CF_BUDDHA			= 1 << 30,		// [SP] Buddha mode - take damage, but don't die
+
 } cheat_t;
 
 //
diff -urNp src/d_protocol.h src1/d_protocol.h
--- src/d_protocol.h	Tue Jul  2 14:01:02 2013
+++ src1/d_protocol.h	Tue Jul  2 13:43:10 2013
@@ -210,6 +210,7 @@ enum ECheatCommand
 	CHT_GIMMIEI,
 	CHT_GIMMIEJ,
 	CHT_GIMMIEZ,
+	CHT_BUDDHA,
 };
 
 void StartChunk (int id, BYTE **stream);
diff -urNp src/m_cheat.cpp src1/m_cheat.cpp
--- src/m_cheat.cpp	Tue Jul  2 14:01:04 2013
+++ src1/m_cheat.cpp	Tue Jul  2 13:43:10 2013
@@ -106,6 +106,15 @@ void cht_DoCheat (player_t *player, int 
 			SB_state = screen->GetPageCount ();
 		break;
 
+	case CHT_BUDDHA:
+		player->cheats ^= CF_BUDDHA;
+
+		if (player->cheats & CF_BUDDHA)
+			msg = GStrings("TXT_BUDDHAON");
+		else
+			msg = GStrings("TXT_BUDDHAOFF");
+		break;
+
 	case CHT_NOCLIP:
 		player->cheats ^= CF_NOCLIP;
 		if (player->cheats & CF_NOCLIP)
diff -urNp src/p_interaction.cpp src1/p_interaction.cpp
--- src/p_interaction.cpp	Tue Jul  2 14:01:06 2013
+++ src1/p_interaction.cpp	Tue Jul  2 13:43:10 2013
@@ -1456,9 +1456,22 @@ void P_DamageMobj (AActor *target, AActo
 			P_AutoUseStrifeHealth (player);
 			player->mo->health = player->health;
 		}
-		if (player->health < 0)
+		if (player->health <= 0)
 		{
-			player->health = 0;
+			// [SP] Buddha cheat: if the player is about to die, rescue him to 1 health.
+			// This does not save the player if damage >= TELEFRAG_DAMAGE, still need to
+			// telefrag him right? ;) (Unfortunately the damage is "absorbed" by armor,
+			// but telefragging should still do enough damage to kill the player)
+			// [ES] #define TELEFRAG_DAMAGE 1000000
+			if ((player->cheats & CF_BUDDHA) && damage < 1000000)
+			{
+				// If this is a voodoo doll we need to handle the real player as well.
+				player->mo->health = target->health = player->health = 1;
+			}
+			else
+			{
+				player->health = 0;
+			}
 		}
 		player->LastDamageType = mod;
 
@@ -1880,18 +1893,25 @@ void P_PoisonDamage (player_t *player, A
 	target->health -= damage;
 	if (target->health <= 0)
 	{ // Death
-		target->special1 = damage;
-		if (player && inflictor && !player->morphTics)
-		{ // Check for flame death
-			if ((inflictor->DamageType == NAME_Fire)
-				&& (target->health > -50) && (damage > 25))
-			{
-				target->DamageType = NAME_Fire;
+		if (player->cheats & CF_BUDDHA)
+		{ // [SP] Save the player... 
+			player->health = target->health = 1;
+		}
+		else
+		{
+			target->special1 = damage;
+			if (player && inflictor && !player->morphTics)
+			{ // Check for flame death
+				if ((inflictor->DamageType == NAME_Fire)
+					&& (target->health > -50) && (damage > 25))
+				{
+					target->DamageType = NAME_Fire;
+				}
+				else target->DamageType = inflictor->DamageType;
 			}
-			else target->DamageType = inflictor->DamageType;
+			target->Die (source, source);
+			return;
 		}
-		target->Die (source, source);
-		return;
 	}
 	if (!(level.time&63) && playPainSound)
 	{
diff -urNp src/p_lnspec.cpp src1/p_lnspec.cpp
--- src/p_lnspec.cpp	Tue Jul  2 14:01:06 2013
+++ src1/p_lnspec.cpp	Tue Jul  2 13:43:10 2013
@@ -2834,6 +2834,7 @@ enum
 	PROP_UNUSED1,
 	PROP_UNUSED2,
 	PROP_SPEED,
+	PROP_BUDDHA,
 };
 
 FUNC(LS_SetPlayerProperty)
@@ -2972,6 +2973,9 @@ FUNC(LS_SetPlayerProperty)
 	// Set or clear a flag
 	switch (arg2)
 	{
+	case PROP_BUDDHA:
+		mask = CF_BUDDHA;
+		break;
 	case PROP_FROZEN:
 		mask = CF_FROZEN;
 		break;
diff -urNp src/p_user.cpp src1/p_user.cpp
--- src/p_user.cpp	Tue Jul  2 14:01:07 2013
+++ src1/p_user.cpp	Tue Jul  2 13:43:10 2013
@@ -2826,9 +2826,9 @@ void P_FallingDamage (AActor *actor)
 	{
 		S_Sound (actor, CHAN_AUTO, "*land", 1, ATTN_NORM);
 		P_NoiseAlert (actor, actor, true);
-		if (damage == 1000000 && (actor->player->cheats & CF_GODMODE))
-		{
-			damage = 999;
+		if (damage == 1000000 && (actor->player->cheats & (CF_GODMODE | CF_BUDDHA)))
+		{
+			damage = 999;
 		}
 	}
 	P_DamageMobj (actor, NULL, NULL, damage, NAME_Falling);
diff -urNp src/sc_man_scanner.h src1/sc_man_scanner.h
--- src/sc_man_scanner.h	Thu Jan  1 00:00:00 1970
+++ src1/sc_man_scanner.h	Tue Jul  2 13:43:30 2013
@@ -0,0 +1,4836 @@
+/* Generated by re2c 0.12.3 */
+#line 1 "src/sc_man_scanner.re"
+#define	YYCTYPE		char
+#define	YYCURSOR	cursor
+#define	YYLIMIT		limit
+#define	YYMARKER	marker
+#define YYFILL(n)	{}
+#if 0	// As long as the buffer ends with '\n', we need do nothing special for YYFILL.
+	// This buffer must be as large as the largest YYFILL call
+	YYCTYPE eofbuf[9];
+#define	YYFILL(n)	\
+	{ if(!sc_End) { \
+	   if(n == 2) { eofbuf[0] = *cursor; } \
+	   else if(n >= 3 && n <= 9) { memcpy(eofbuf, cursor, n-1); } \
+	   eofbuf[n-1] = '\n'; \
+	   cursor = eofbuf; \
+	   limit = eofbuf + n - 1; \
+	   sc_End = true; } \
+	} \
+	assert(n <= sizeof eofbuf)	// Semicolon intentionally omitted
+#endif
+
+//#define YYDEBUG(s,c) { Printf ("%d: %02x\n", s, c); }
+#define YYDEBUG(s,c)
+
+	const char *cursor = ScriptPtr;
+	const char *limit = ScriptEndPtr;
+
+std1:
+	tok = YYCURSOR;
+std2:
+#line 51 "src/sc_man_scanner.re"
+
+	if (tokens)	// A well-defined scanner, based on the c.re example.
+	{
+#define RET(x)	TokenType = x; goto normal_token;
+	
+#line 39 "src/sc_man_scanner.h"
+{
+	YYCTYPE yych;
+	unsigned int yyaccept = 0;
+
+	if((YYLIMIT - YYCURSOR) < 18) YYFILL(18);
+	yych = *YYCURSOR;
+	switch(yych) {
+	case 0x09:
+	case 0x0B:
+	case 0x0C:
+	case 0x0D:
+	case ' ':	goto yy78;
+	case 0x0A:	goto yy80;
+	case '!':	goto yy54;
+	case '"':	goto yy32;
+	case '#':	goto yy24;
+	case '%':	goto yy44;
+	case '&':	goto yy46;
+	case '\'':	goto yy33;
+	case '(':	goto yy66;
+	case ')':	goto yy68;
+	case '*':	goto yy42;
+	case '+':	goto yy38;
+	case ',':	goto yy62;
+	case '-':	goto yy40;
+	case '.':	goto yy30;
+	case '/':	goto yy2;
+	case '0':	goto yy27;
+	case '1':
+	case '2':
+	case '3':
+	case '4':
+	case '5':
+	case '6':
+	case '7':
+	case '8':
+	case '9':	goto yy29;
+	case ':':	goto yy64;
+	case ';':	goto yy56;
+	case '<':	goto yy36;
+	case '=':	goto yy52;
+	case '>':	goto yy34;
+	case '?':	goto yy76;
+	case 'A':
+	case 'a':	goto yy20;
+	case 'B':
+	case 'b':	goto yy4;
+	case 'C':
+	case 'c':	goto yy6;
+	case 'D':
+	case 'd':	goto yy7;
+	case 'E':
+	case 'e':	goto yy8;
+	case 'F':
+	case 'f':	goto yy9;
+	case 'G':
+	case 'g':	goto yy10;
+	case 'H':
+	case 'J':
+	case 'K':
+	case 'Q':
+	case 'X':
+	case 'Y':
+	case 'Z':
+	case '_':
+	case 'h':
+	case 'j':
+	case 'k':
+	case 'q':
+	case 'x':
+	case 'y':
+	case 'z':	goto yy26;
+	case 'I':
+	case 'i':	goto yy11;
+	case 'L':
+	case 'l':	goto yy17;
+	case 'M':
+	case 'm':	goto yy18;
+	case 'N':
+	case 'n':	goto yy19;
+	case 'O':
+	case 'o':	goto yy22;
+	case 'P':
+	case 'p':	goto yy23;
+	case 'R':
+	case 'r':	goto yy12;
+	case 'S':
+	case 's':	goto yy13;
+	case 'T':
+	case 't':	goto yy21;
+	case 'U':
+	case 'u':	goto yy14;
+	case 'V':
+	case 'v':	goto yy15;
+	case 'W':
+	case 'w':	goto yy16;
+	case '[':	goto yy70;
+	case ']':	goto yy72;
+	case '^':	goto yy48;
+	case '{':	goto yy58;
+	case '|':	goto yy50;
+	case '}':	goto yy60;
+	case '~':	goto yy74;
+	default:	goto yy82;
+	}
+yy2:
+	yyaccept = 0;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if(yych <= '.') {
+		if(yych == '*') goto yy596;
+	} else {
+		if(yych <= '/') goto yy594;
+		if(yych == '=') goto yy592;
+	}
+yy3:
+#line 205 "src/sc_man_scanner.re"
+	{ RET('/'); }
+#line 157 "src/sc_man_scanner.h"
+yy4:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Y') {
+		if(yych <= 'Q') {
+			if(yych == 'O') goto yy579;
+			goto yy174;
+		} else {
+			if(yych <= 'R') goto yy580;
+			if(yych <= 'X') goto yy174;
+			goto yy581;
+		}
+	} else {
+		if(yych <= 'q') {
+			if(yych == 'o') goto yy579;
+			goto yy174;
+		} else {
+			if(yych <= 'r') goto yy580;
+			if(yych == 'y') goto yy581;
+			goto yy174;
+		}
+	}
+yy5:
+#line 151 "src/sc_man_scanner.re"
+	{ RET(TK_Identifier); }
+#line 182 "src/sc_man_scanner.h"
+yy6:
+	yych = *++YYCURSOR;
+	switch(yych) {
+	case 'A':
+	case 'a':	goto yy537;
+	case 'H':
+	case 'h':	goto yy538;
+	case 'L':
+	case 'l':	goto yy539;
+	case 'O':
+	case 'o':	goto yy540;
+	case 'R':
+	case 'r':	goto yy541;
+	default:	goto yy174;
+	}
+yy7:
+	yych = *++YYCURSOR;
+	if(yych <= 'O') {
+		if(yych == 'E') goto yy510;
+		if(yych <= 'N') goto yy174;
+		goto yy511;
+	} else {
+		if(yych <= 'e') {
+			if(yych <= 'd') goto yy174;
+			goto yy510;
+		} else {
+			if(yych == 'o') goto yy511;
+			goto yy174;
+		}
+	}
+yy8:
+	yych = *++YYCURSOR;
+	if(yych <= 'X') {
+		if(yych <= 'N') {
+			if(yych == 'L') goto yy482;
+			if(yych <= 'M') goto yy174;
+			goto yy483;
+		} else {
+			if(yych == 'V') goto yy484;
+			if(yych <= 'W') goto yy174;
+			goto yy485;
+		}
+	} else {
+		if(yych <= 'n') {
+			if(yych == 'l') goto yy482;
+			if(yych <= 'm') goto yy174;
+			goto yy483;
+		} else {
+			if(yych <= 'v') {
+				if(yych <= 'u') goto yy174;
+				goto yy484;
+			} else {
+				if(yych == 'x') goto yy485;
+				goto yy174;
+			}
+		}
+	}
+yy9:
+	yych = *++YYCURSOR;
+	if(yych <= 'O') {
+		if(yych <= 'I') {
+			if(yych == 'A') goto yy453;
+			if(yych <= 'H') goto yy174;
+			goto yy454;
+		} else {
+			if(yych == 'L') goto yy455;
+			if(yych <= 'N') goto yy174;
+			goto yy456;
+		}
+	} else {
+		if(yych <= 'i') {
+			if(yych == 'a') goto yy453;
+			if(yych <= 'h') goto yy174;
+			goto yy454;
+		} else {
+			if(yych <= 'l') {
+				if(yych <= 'k') goto yy174;
+				goto yy455;
+			} else {
+				if(yych == 'o') goto yy456;
+				goto yy174;
+			}
+		}
+	}
+yy10:
+	yych = *++YYCURSOR;
+	if(yych <= 'O') {
+		if(yych == 'L') goto yy443;
+		if(yych <= 'N') goto yy174;
+		goto yy444;
+	} else {
+		if(yych <= 'l') {
+			if(yych <= 'k') goto yy174;
+			goto yy443;
+		} else {
+			if(yych == 'o') goto yy444;
+			goto yy174;
+		}
+	}
+yy11:
+	yych = *++YYCURSOR;
+	if(yych <= 'T') {
+		if(yych <= 'G') {
+			if(yych <= 'E') goto yy174;
+			if(yych <= 'F') goto yy414;
+			goto yy416;
+		} else {
+			if(yych == 'N') goto yy417;
+			if(yych <= 'S') goto yy174;
+			goto yy418;
+		}
+	} else {
+		if(yych <= 'm') {
+			if(yych <= 'e') goto yy174;
+			if(yych <= 'f') goto yy414;
+			if(yych <= 'g') goto yy416;
+			goto yy174;
+		} else {
+			if(yych <= 'n') goto yy417;
+			if(yych == 't') goto yy418;
+			goto yy174;
+		}
+	}
+yy12:
+	yych = *++YYCURSOR;
+	if(yych <= 'E') {
+		if(yych == 'A') goto yy398;
+		if(yych <= 'D') goto yy174;
+		goto yy399;
+	} else {
+		if(yych <= 'a') {
+			if(yych <= '`') goto yy174;
+			goto yy398;
+		} else {
+			if(yych == 'e') goto yy399;
+			goto yy174;
+		}
+	}
+yy13:
+	yych = *++YYCURSOR;
+	switch(yych) {
+	case 'B':
+	case 'b':	goto yy340;
+	case 'E':
+	case 'e':	goto yy341;
+	case 'H':
+	case 'h':	goto yy342;
+	case 'I':
+	case 'i':	goto yy343;
+	case 'O':
+	case 'o':	goto yy344;
+	case 'T':
+	case 't':	goto yy345;
+	case 'U':
+	case 'u':	goto yy346;
+	case 'W':
+	case 'w':	goto yy347;
+	default:	goto yy174;
+	}
+yy14:
+	yych = *++YYCURSOR;
+	switch(yych) {
+	case 'I':
+	case 'i':	goto yy320;
+	case 'L':
+	case 'l':	goto yy321;
+	case 'N':
+	case 'n':	goto yy322;
+	case 'S':
+	case 's':	goto yy323;
+	default:	goto yy174;
+	}
+yy15:
+	yych = *++YYCURSOR;
+	if(yych <= 'O') {
+		if(yych == 'I') goto yy302;
+		if(yych <= 'N') goto yy174;
+		goto yy303;
+	} else {
+		if(yych <= 'i') {
+			if(yych <= 'h') goto yy174;
+			goto yy302;
+		} else {
+			if(yych == 'o') goto yy303;
+			goto yy174;
+		}
+	}
+yy16:
+	yych = *++YYCURSOR;
+	if(yych == 'H') goto yy297;
+	if(yych == 'h') goto yy297;
+	goto yy174;
+yy17:
+	yych = *++YYCURSOR;
+	if(yych <= 'O') {
+		if(yych == 'A') goto yy279;
+		if(yych <= 'N') goto yy174;
+		goto yy280;
+	} else {
+		if(yych <= 'a') {
+			if(yych <= '`') goto yy174;
+			goto yy279;
+		} else {
+			if(yych == 'o') goto yy280;
+			goto yy174;
+		}
+	}
+yy18:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy275;
+	if(yych == 'o') goto yy275;
+	goto yy174;
+yy19:
+	yych = *++YYCURSOR;
+	if(yych <= 'O') {
+		if(yych <= 'D') {
+			if(yych == 'A') goto yy259;
+			goto yy174;
+		} else {
+			if(yych <= 'E') goto yy260;
+			if(yych <= 'N') goto yy174;
+			goto yy261;
+		}
+	} else {
+		if(yych <= 'd') {
+			if(yych == 'a') goto yy259;
+			goto yy174;
+		} else {
+			if(yych <= 'e') goto yy260;
+			if(yych == 'o') goto yy261;
+			goto yy174;
+		}
+	}
+yy20:
+	yych = *++YYCURSOR;
+	if(yych <= 'U') {
+		if(yych <= 'C') {
+			if(yych <= 'A') goto yy174;
+			if(yych <= 'B') goto yy233;
+			goto yy234;
+		} else {
+			if(yych == 'N') goto yy235;
+			if(yych <= 'T') goto yy174;
+			goto yy236;
+		}
+	} else {
+		if(yych <= 'm') {
+			if(yych <= 'a') goto yy174;
+			if(yych <= 'b') goto yy233;
+			if(yych <= 'c') goto yy234;
+			goto yy174;
+		} else {
+			if(yych <= 'n') goto yy235;
+			if(yych == 'u') goto yy236;
+			goto yy174;
+		}
+	}
+yy21:
+	yych = *++YYCURSOR;
+	if(yych <= 'R') {
+		if(yych == 'H') goto yy215;
+		if(yych <= 'Q') goto yy174;
+		goto yy216;
+	} else {
+		if(yych <= 'h') {
+			if(yych <= 'g') goto yy174;
+			goto yy215;
+		} else {
+			if(yych == 'r') goto yy216;
+			goto yy174;
+		}
+	}
+yy22:
+	yych = *++YYCURSOR;
+	if(yych <= 'U') {
+		if(yych == 'P') goto yy204;
+		if(yych <= 'T') goto yy174;
+		goto yy205;
+	} else {
+		if(yych <= 'p') {
+			if(yych <= 'o') goto yy174;
+			goto yy204;
+		} else {
+			if(yych == 'u') goto yy205;
+			goto yy174;
+		}
+	}
+yy23:
+	yych = *++YYCURSOR;
+	if(yych <= 'U') {
+		if(yych == 'R') goto yy183;
+		if(yych <= 'T') goto yy174;
+		goto yy184;
+	} else {
+		if(yych <= 'r') {
+			if(yych <= 'q') goto yy174;
+			goto yy183;
+		} else {
+			if(yych == 'u') goto yy184;
+			goto yy174;
+		}
+	}
+yy24:
+	yyaccept = 1;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if(yych == 'I') goto yy175;
+	if(yych == 'i') goto yy175;
+yy25:
+#line 216 "src/sc_man_scanner.re"
+	{
+			ScriptError ("Unexpected character: %c (ASCII %d)\n", *tok, *tok);
+			goto std1;
+		}
+#line 496 "src/sc_man_scanner.h"
+yy26:
+	yych = *++YYCURSOR;
+	goto yy174;
+yy27:
+	yyaccept = 2;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if(yych == 'X') goto yy170;
+	if(yych == 'x') goto yy170;
+	goto yy169;
+yy28:
+#line 154 "src/sc_man_scanner.re"
+	{ RET(TK_IntConst); }
+#line 509 "src/sc_man_scanner.h"
+yy29:
+	yyaccept = 2;
+	yych = *(YYMARKER = ++YYCURSOR);
+	goto yy152;
+yy30:
+	yyaccept = 3;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if(yych == '.') goto yy139;
+	if(yych <= '/') goto yy31;
+	if(yych <= '9') goto yy140;
+yy31:
+#line 198 "src/sc_man_scanner.re"
+	{ RET('.'); }
+#line 523 "src/sc_man_scanner.h"
+yy32:
+	yyaccept = 1;
+	yych = *(YYMARKER = ++YYCURSOR);
+	goto yy133;
+yy33:
+	yyaccept = 1;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if(yych == 0x0A) goto yy25;
+	goto yy128;
+yy34:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= '<') goto yy35;
+	if(yych <= '=') goto yy117;
+	if(yych <= '>') goto yy119;
+yy35:
+#line 208 "src/sc_man_scanner.re"
+	{ RET('>'); }
+#line 541 "src/sc_man_scanner.h"
+yy36:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= ';') goto yy37;
+	if(yych <= '<') goto yy113;
+	if(yych <= '=') goto yy111;
+yy37:
+#line 207 "src/sc_man_scanner.re"
+	{ RET('<'); }
+#line 550 "src/sc_man_scanner.h"
+yy38:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '+') goto yy107;
+	if(yych == '=') goto yy109;
+#line 203 "src/sc_man_scanner.re"
+	{ RET('+'); }
+#line 557 "src/sc_man_scanner.h"
+yy40:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '-') goto yy103;
+	if(yych == '=') goto yy105;
+#line 202 "src/sc_man_scanner.re"
+	{ RET('-'); }
+#line 564 "src/sc_man_scanner.h"
+yy42:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '=') goto yy101;
+#line 204 "src/sc_man_scanner.re"
+	{ RET('*'); }
+#line 570 "src/sc_man_scanner.h"
+yy44:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '=') goto yy99;
+#line 206 "src/sc_man_scanner.re"
+	{ RET('%'); }
+#line 576 "src/sc_man_scanner.h"
+yy46:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '&') goto yy95;
+	if(yych == '=') goto yy97;
+#line 199 "src/sc_man_scanner.re"
+	{ RET('&'); }
+#line 583 "src/sc_man_scanner.h"
+yy48:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '=') goto yy93;
+#line 209 "src/sc_man_scanner.re"
+	{ RET('^'); }
+#line 589 "src/sc_man_scanner.h"
+yy50:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '=') goto yy91;
+	if(yych == '|') goto yy89;
+#line 210 "src/sc_man_scanner.re"
+	{ RET('|'); }
+#line 596 "src/sc_man_scanner.h"
+yy52:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '=') goto yy87;
+#line 193 "src/sc_man_scanner.re"
+	{ RET('='); }
+#line 602 "src/sc_man_scanner.h"
+yy54:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '=') goto yy85;
+#line 200 "src/sc_man_scanner.re"
+	{ RET('!'); }
+#line 608 "src/sc_man_scanner.h"
+yy56:
+	++YYCURSOR;
+#line 188 "src/sc_man_scanner.re"
+	{ RET(';'); }
+#line 613 "src/sc_man_scanner.h"
+yy58:
+	++YYCURSOR;
+#line 189 "src/sc_man_scanner.re"
+	{ RET('{'); }
+#line 618 "src/sc_man_scanner.h"
+yy60:
+	++YYCURSOR;
+#line 190 "src/sc_man_scanner.re"
+	{ RET('}'); }
+#line 623 "src/sc_man_scanner.h"
+yy62:
+	++YYCURSOR;
+#line 191 "src/sc_man_scanner.re"
+	{ RET(','); }
+#line 628 "src/sc_man_scanner.h"
+yy64:
+	++YYCURSOR;
+#line 192 "src/sc_man_scanner.re"
+	{ RET(':'); }
+#line 633 "src/sc_man_scanner.h"
+yy66:
+	++YYCURSOR;
+#line 194 "src/sc_man_scanner.re"
+	{ RET('('); }
+#line 638 "src/sc_man_scanner.h"
+yy68:
+	++YYCURSOR;
+#line 195 "src/sc_man_scanner.re"
+	{ RET(')'); }
+#line 643 "src/sc_man_scanner.h"
+yy70:
+	++YYCURSOR;
+#line 196 "src/sc_man_scanner.re"
+	{ RET('['); }
+#line 648 "src/sc_man_scanner.h"
+yy72:
+	++YYCURSOR;
+#line 197 "src/sc_man_scanner.re"
+	{ RET(']'); }
+#line 653 "src/sc_man_scanner.h"
+yy74:
+	++YYCURSOR;
+#line 201 "src/sc_man_scanner.re"
+	{ RET('~'); }
+#line 658 "src/sc_man_scanner.h"
+yy76:
+	++YYCURSOR;
+#line 211 "src/sc_man_scanner.re"
+	{ RET('?'); }
+#line 663 "src/sc_man_scanner.h"
+yy78:
+	++YYCURSOR;
+	yych = *YYCURSOR;
+	goto yy84;
+yy79:
+#line 213 "src/sc_man_scanner.re"
+	{ goto std1; }
+#line 671 "src/sc_man_scanner.h"
+yy80:
+	++YYCURSOR;
+#line 214 "src/sc_man_scanner.re"
+	{ goto newline; }
+#line 676 "src/sc_man_scanner.h"
+yy82:
+	yych = *++YYCURSOR;
+	goto yy25;
+yy83:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy84:
+	if(yych <= 0x0A) {
+		if(yych == 0x09) goto yy83;
+		goto yy79;
+	} else {
+		if(yych <= 0x0D) goto yy83;
+		if(yych == ' ') goto yy83;
+		goto yy79;
+	}
+yy85:
+	++YYCURSOR;
+#line 187 "src/sc_man_scanner.re"
+	{ RET(TK_Neq); }
+#line 697 "src/sc_man_scanner.h"
+yy87:
+	++YYCURSOR;
+#line 186 "src/sc_man_scanner.re"
+	{ RET(TK_Eq); }
+#line 702 "src/sc_man_scanner.h"
+yy89:
+	++YYCURSOR;
+#line 183 "src/sc_man_scanner.re"
+	{ RET(TK_OrOr); }
+#line 707 "src/sc_man_scanner.h"
+yy91:
+	++YYCURSOR;
+#line 176 "src/sc_man_scanner.re"
+	{ RET(TK_OrEq); }
+#line 712 "src/sc_man_scanner.h"
+yy93:
+	++YYCURSOR;
+#line 175 "src/sc_man_scanner.re"
+	{ RET(TK_XorEq); }
+#line 717 "src/sc_man_scanner.h"
+yy95:
+	++YYCURSOR;
+#line 182 "src/sc_man_scanner.re"
+	{ RET(TK_AndAnd); }
+#line 722 "src/sc_man_scanner.h"
+yy97:
+	++YYCURSOR;
+#line 174 "src/sc_man_scanner.re"
+	{ RET(TK_AndEq); }
+#line 727 "src/sc_man_scanner.h"
+yy99:
+	++YYCURSOR;
+#line 173 "src/sc_man_scanner.re"
+	{ RET(TK_ModEq); }
+#line 732 "src/sc_man_scanner.h"
+yy101:
+	++YYCURSOR;
+#line 171 "src/sc_man_scanner.re"
+	{ RET(TK_MulEq); }
+#line 737 "src/sc_man_scanner.h"
+yy103:
+	++YYCURSOR;
+#line 181 "src/sc_man_scanner.re"
+	{ RET(TK_Decr); }
+#line 742 "src/sc_man_scanner.h"
+yy105:
+	++YYCURSOR;
+#line 170 "src/sc_man_scanner.re"
+	{ RET(TK_SubEq); }
+#line 747 "src/sc_man_scanner.h"
+yy107:
+	++YYCURSOR;
+#line 180 "src/sc_man_scanner.re"
+	{ RET(TK_Incr); }
+#line 752 "src/sc_man_scanner.h"
+yy109:
+	++YYCURSOR;
+#line 169 "src/sc_man_scanner.re"
+	{ RET(TK_AddEq); }
+#line 757 "src/sc_man_scanner.h"
+yy111:
+	++YYCURSOR;
+#line 184 "src/sc_man_scanner.re"
+	{ RET(TK_Leq); }
+#line 762 "src/sc_man_scanner.h"
+yy113:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '=') goto yy115;
+#line 179 "src/sc_man_scanner.re"
+	{ RET(TK_LShift); }
+#line 768 "src/sc_man_scanner.h"
+yy115:
+	++YYCURSOR;
+#line 168 "src/sc_man_scanner.re"
+	{ RET(TK_LShiftEq); }
+#line 773 "src/sc_man_scanner.h"
+yy117:
+	++YYCURSOR;
+#line 185 "src/sc_man_scanner.re"
+	{ RET(TK_Geq); }
+#line 778 "src/sc_man_scanner.h"
+yy119:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= '<') goto yy120;
+	if(yych <= '=') goto yy123;
+	if(yych <= '>') goto yy121;
+yy120:
+#line 178 "src/sc_man_scanner.re"
+	{ RET(TK_RShift); }
+#line 787 "src/sc_man_scanner.h"
+yy121:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '=') goto yy125;
+#line 177 "src/sc_man_scanner.re"
+	{ RET(TK_URShift); }
+#line 793 "src/sc_man_scanner.h"
+yy123:
+	++YYCURSOR;
+#line 167 "src/sc_man_scanner.re"
+	{ RET(TK_RShiftEq); }
+#line 798 "src/sc_man_scanner.h"
+yy125:
+	++YYCURSOR;
+#line 166 "src/sc_man_scanner.re"
+	{ RET(TK_URShiftEq); }
+#line 803 "src/sc_man_scanner.h"
+yy127:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy128:
+	if(yych == 0x0A) goto yy129;
+	if(yych == '\'') goto yy130;
+	goto yy127;
+yy129:
+	YYCURSOR = YYMARKER;
+	if(yyaccept <= 2) {
+		if(yyaccept <= 1) {
+			if(yyaccept <= 0) {
+				goto yy3;
+			} else {
+				goto yy25;
+			}
+		} else {
+			goto yy28;
+		}
+	} else {
+		if(yyaccept <= 4) {
+			if(yyaccept <= 3) {
+				goto yy31;
+			} else {
+				goto yy137;
+			}
+		} else {
+			goto yy142;
+		}
+	}
+yy130:
+	++YYCURSOR;
+#line 163 "src/sc_man_scanner.re"
+	{ RET(TK_NameConst); }
+#line 839 "src/sc_man_scanner.h"
+yy132:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy133:
+	if(yych == '"') goto yy136;
+	if(yych != '\\') goto yy132;
+yy134:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych == '"') goto yy138;
+	if(yych == '\\') goto yy134;
+	goto yy132;
+yy136:
+	++YYCURSOR;
+yy137:
+#line 160 "src/sc_man_scanner.re"
+	{ RET(TK_StringConst); }
+#line 859 "src/sc_man_scanner.h"
+yy138:
+	yyaccept = 4;
+	YYMARKER = ++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych == '"') goto yy136;
+	if(yych == '\\') goto yy134;
+	goto yy132;
+yy139:
+	yych = *++YYCURSOR;
+	if(yych == '.') goto yy148;
+	goto yy129;
+yy140:
+	yyaccept = 5;
+	YYMARKER = ++YYCURSOR;
+	if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+	yych = *YYCURSOR;
+	if(yych <= 'K') {
+		if(yych <= 'D') {
+			if(yych <= '/') goto yy142;
+			if(yych <= '9') goto yy140;
+		} else {
+			if(yych <= 'E') goto yy143;
+			if(yych <= 'F') goto yy144;
+		}
+	} else {
+		if(yych <= 'e') {
+			if(yych <= 'L') goto yy144;
+			if(yych >= 'e') goto yy143;
+		} else {
+			if(yych <= 'f') goto yy144;
+			if(yych == 'l') goto yy144;
+		}
+	}
+yy142:
+#line 157 "src/sc_man_scanner.re"
+	{ RET(TK_FloatConst); }
+#line 897 "src/sc_man_scanner.h"
+yy143:
+	yych = *++YYCURSOR;
+	if(yych <= ',') {
+		if(yych == '+') goto yy145;
+		goto yy129;
+	} else {
+		if(yych <= '-') goto yy145;
+		if(yych <= '/') goto yy129;
+		if(yych <= '9') goto yy146;
+		goto yy129;
+	}
+yy144:
+	yych = *++YYCURSOR;
+	goto yy142;
+yy145:
+	yych = *++YYCURSOR;
+	if(yych <= '/') goto yy129;
+	if(yych >= ':') goto yy129;
+yy146:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= 'K') {
+		if(yych <= '9') {
+			if(yych <= '/') goto yy142;
+			goto yy146;
+		} else {
+			if(yych == 'F') goto yy144;
+			goto yy142;
+		}
+	} else {
+		if(yych <= 'f') {
+			if(yych <= 'L') goto yy144;
+			if(yych <= 'e') goto yy142;
+			goto yy144;
+		} else {
+			if(yych == 'l') goto yy144;
+			goto yy142;
+		}
+	}
+yy148:
+	++YYCURSOR;
+#line 165 "src/sc_man_scanner.re"
+	{ RET(TK_Ellipsis); }
+#line 942 "src/sc_man_scanner.h"
+yy150:
+	yyaccept = 5;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if(yych == 'E') goto yy160;
+	if(yych == 'e') goto yy160;
+	goto yy159;
+yy151:
+	yyaccept = 2;
+	YYMARKER = ++YYCURSOR;
+	if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+	yych = *YYCURSOR;
+yy152:
+	if(yych <= 'L') {
+		if(yych <= '9') {
+			if(yych == '.') goto yy150;
+			if(yych <= '/') goto yy28;
+			goto yy151;
+		} else {
+			if(yych == 'E') goto yy153;
+			if(yych <= 'K') goto yy28;
+			goto yy154;
+		}
+	} else {
+		if(yych <= 'e') {
+			if(yych == 'U') goto yy154;
+			if(yych <= 'd') goto yy28;
+		} else {
+			if(yych <= 'l') {
+				if(yych <= 'k') goto yy28;
+				goto yy154;
+			} else {
+				if(yych == 'u') goto yy154;
+				goto yy28;
+			}
+		}
+	}
+yy153:
+	yych = *++YYCURSOR;
+	if(yych <= ',') {
+		if(yych == '+') goto yy155;
+		goto yy129;
+	} else {
+		if(yych <= '-') goto yy155;
+		if(yych <= '/') goto yy129;
+		if(yych <= '9') goto yy156;
+		goto yy129;
+	}
+yy154:
+	yych = *++YYCURSOR;
+	goto yy28;
+yy155:
+	yych = *++YYCURSOR;
+	if(yych <= '/') goto yy129;
+	if(yych >= ':') goto yy129;
+yy156:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= 'K') {
+		if(yych <= '9') {
+			if(yych <= '/') goto yy142;
+			goto yy156;
+		} else {
+			if(yych == 'F') goto yy144;
+			goto yy142;
+		}
+	} else {
+		if(yych <= 'f') {
+			if(yych <= 'L') goto yy144;
+			if(yych <= 'e') goto yy142;
+			goto yy144;
+		} else {
+			if(yych == 'l') goto yy144;
+			goto yy142;
+		}
+	}
+yy158:
+	yyaccept = 5;
+	YYMARKER = ++YYCURSOR;
+	if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+	yych = *YYCURSOR;
+yy159:
+	if(yych <= 'K') {
+		if(yych <= 'D') {
+			if(yych <= '/') goto yy142;
+			if(yych <= '9') goto yy158;
+			goto yy142;
+		} else {
+			if(yych <= 'E') goto yy164;
+			if(yych <= 'F') goto yy144;
+			goto yy142;
+		}
+	} else {
+		if(yych <= 'e') {
+			if(yych <= 'L') goto yy144;
+			if(yych <= 'd') goto yy142;
+			goto yy164;
+		} else {
+			if(yych <= 'f') goto yy144;
+			if(yych == 'l') goto yy144;
+			goto yy142;
+		}
+	}
+yy160:
+	yych = *++YYCURSOR;
+	if(yych <= ',') {
+		if(yych != '+') goto yy129;
+	} else {
+		if(yych <= '-') goto yy161;
+		if(yych <= '/') goto yy129;
+		if(yych <= '9') goto yy162;
+		goto yy129;
+	}
+yy161:
+	yych = *++YYCURSOR;
+	if(yych <= '/') goto yy129;
+	if(yych >= ':') goto yy129;
+yy162:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= 'K') {
+		if(yych <= '9') {
+			if(yych <= '/') goto yy142;
+			goto yy162;
+		} else {
+			if(yych == 'F') goto yy144;
+			goto yy142;
+		}
+	} else {
+		if(yych <= 'f') {
+			if(yych <= 'L') goto yy144;
+			if(yych <= 'e') goto yy142;
+			goto yy144;
+		} else {
+			if(yych == 'l') goto yy144;
+			goto yy142;
+		}
+	}
+yy164:
+	yych = *++YYCURSOR;
+	if(yych <= ',') {
+		if(yych != '+') goto yy129;
+	} else {
+		if(yych <= '-') goto yy165;
+		if(yych <= '/') goto yy129;
+		if(yych <= '9') goto yy166;
+		goto yy129;
+	}
+yy165:
+	yych = *++YYCURSOR;
+	if(yych <= '/') goto yy129;
+	if(yych >= ':') goto yy129;
+yy166:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= 'K') {
+		if(yych <= '9') {
+			if(yych <= '/') goto yy142;
+			goto yy166;
+		} else {
+			if(yych == 'F') goto yy144;
+			goto yy142;
+		}
+	} else {
+		if(yych <= 'f') {
+			if(yych <= 'L') goto yy144;
+			if(yych <= 'e') goto yy142;
+			goto yy144;
+		} else {
+			if(yych == 'l') goto yy144;
+			goto yy142;
+		}
+	}
+yy168:
+	yyaccept = 2;
+	YYMARKER = ++YYCURSOR;
+	if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+	yych = *YYCURSOR;
+yy169:
+	if(yych <= 'L') {
+		if(yych <= '9') {
+			if(yych == '.') goto yy150;
+			if(yych <= '/') goto yy28;
+			goto yy168;
+		} else {
+			if(yych == 'E') goto yy153;
+			if(yych <= 'K') goto yy28;
+			goto yy154;
+		}
+	} else {
+		if(yych <= 'e') {
+			if(yych == 'U') goto yy154;
+			if(yych <= 'd') goto yy28;
+			goto yy153;
+		} else {
+			if(yych <= 'l') {
+				if(yych <= 'k') goto yy28;
+				goto yy154;
+			} else {
+				if(yych == 'u') goto yy154;
+				goto yy28;
+			}
+		}
+	}
+yy170:
+	yych = *++YYCURSOR;
+	if(yych <= '@') {
+		if(yych <= '/') goto yy129;
+		if(yych >= ':') goto yy129;
+	} else {
+		if(yych <= 'F') goto yy171;
+		if(yych <= '`') goto yy129;
+		if(yych >= 'g') goto yy129;
+	}
+yy171:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= 'T') {
+		if(yych <= '@') {
+			if(yych <= '/') goto yy28;
+			if(yych <= '9') goto yy171;
+			goto yy28;
+		} else {
+			if(yych <= 'F') goto yy171;
+			if(yych == 'L') goto yy154;
+			goto yy28;
+		}
+	} else {
+		if(yych <= 'k') {
+			if(yych <= 'U') goto yy154;
+			if(yych <= '`') goto yy28;
+			if(yych <= 'f') goto yy171;
+			goto yy28;
+		} else {
+			if(yych <= 'l') goto yy154;
+			if(yych == 'u') goto yy154;
+			goto yy28;
+		}
+	}
+yy173:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy174:
+	if(yych <= 'Z') {
+		if(yych <= '/') goto yy5;
+		if(yych <= '9') goto yy173;
+		if(yych <= '@') goto yy5;
+		goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych <= '^') goto yy5;
+			goto yy173;
+		} else {
+			if(yych <= '`') goto yy5;
+			if(yych <= 'z') goto yy173;
+			goto yy5;
+		}
+	}
+yy175:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy176;
+	if(yych != 'n') goto yy129;
+yy176:
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy177;
+	if(yych != 'c') goto yy129;
+yy177:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy178;
+	if(yych != 'l') goto yy129;
+yy178:
+	yych = *++YYCURSOR;
+	if(yych == 'U') goto yy179;
+	if(yych != 'u') goto yy129;
+yy179:
+	yych = *++YYCURSOR;
+	if(yych == 'D') goto yy180;
+	if(yych != 'd') goto yy129;
+yy180:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy181;
+	if(yych != 'e') goto yy129;
+yy181:
+	++YYCURSOR;
+#line 144 "src/sc_man_scanner.re"
+	{ RET(TK_Include); }
+#line 1233 "src/sc_man_scanner.h"
+yy183:
+	yych = *++YYCURSOR;
+	if(yych <= 'O') {
+		if(yych == 'I') goto yy191;
+		if(yych <= 'N') goto yy174;
+		goto yy190;
+	} else {
+		if(yych <= 'i') {
+			if(yych <= 'h') goto yy174;
+			goto yy191;
+		} else {
+			if(yych == 'o') goto yy190;
+			goto yy174;
+		}
+	}
+yy184:
+	yych = *++YYCURSOR;
+	if(yych == 'B') goto yy185;
+	if(yych != 'b') goto yy174;
+yy185:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy186;
+	if(yych != 'l') goto yy174;
+yy186:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy187;
+	if(yych != 'i') goto yy174;
+yy187:
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy188;
+	if(yych != 'c') goto yy174;
+yy188:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy189;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy189;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy189:
+#line 120 "src/sc_man_scanner.re"
+	{ RET(TK_Public); }
+#line 1282 "src/sc_man_scanner.h"
+yy190:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy197;
+	if(yych == 't') goto yy197;
+	goto yy174;
+yy191:
+	yych = *++YYCURSOR;
+	if(yych == 'V') goto yy192;
+	if(yych != 'v') goto yy174;
+yy192:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy193;
+	if(yych != 'a') goto yy174;
+yy193:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy194;
+	if(yych != 't') goto yy174;
+yy194:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy195;
+	if(yych != 'e') goto yy174;
+yy195:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy196;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy196;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy196:
+#line 122 "src/sc_man_scanner.re"
+	{ RET(TK_Private); }
+#line 1321 "src/sc_man_scanner.h"
+yy197:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy198;
+	if(yych != 'e') goto yy174;
+yy198:
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy199;
+	if(yych != 'c') goto yy174;
+yy199:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy200;
+	if(yych != 't') goto yy174;
+yy200:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy201;
+	if(yych != 'e') goto yy174;
+yy201:
+	yych = *++YYCURSOR;
+	if(yych == 'D') goto yy202;
+	if(yych != 'd') goto yy174;
+yy202:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy203;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy203;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy203:
+#line 121 "src/sc_man_scanner.re"
+	{ RET(TK_Protected); }
+#line 1359 "src/sc_man_scanner.h"
+yy204:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy208;
+	if(yych == 't') goto yy208;
+	goto yy174;
+yy205:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy206;
+	if(yych != 't') goto yy174;
+yy206:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy207;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy207;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy207:
+#line 112 "src/sc_man_scanner.re"
+	{ RET(TK_Out); }
+#line 1386 "src/sc_man_scanner.h"
+yy208:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy209;
+	if(yych != 'i') goto yy174;
+yy209:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy210;
+	if(yych != 'o') goto yy174;
+yy210:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy211;
+	if(yych != 'n') goto yy174;
+yy211:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy212;
+	if(yych != 'a') goto yy174;
+yy212:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy213;
+	if(yych != 'l') goto yy174;
+yy213:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy214;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy214;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy214:
+#line 132 "src/sc_man_scanner.re"
+	{ RET(TK_Optional); }
+#line 1424 "src/sc_man_scanner.h"
+yy215:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy228;
+	if(yych == 'r') goto yy228;
+	goto yy174;
+yy216:
+	yych = *++YYCURSOR;
+	if(yych <= 'U') {
+		if(yych == 'A') goto yy218;
+		if(yych <= 'T') goto yy174;
+	} else {
+		if(yych <= 'a') {
+			if(yych <= '`') goto yy174;
+			goto yy218;
+		} else {
+			if(yych != 'u') goto yy174;
+		}
+	}
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy226;
+	if(yych == 'e') goto yy226;
+	goto yy174;
+yy218:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy219;
+	if(yych != 'n') goto yy174;
+yy219:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy220;
+	if(yych != 's') goto yy174;
+yy220:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy221;
+	if(yych != 'i') goto yy174;
+yy221:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy222;
+	if(yych != 'e') goto yy174;
+yy222:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy223;
+	if(yych != 'n') goto yy174;
+yy223:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy224;
+	if(yych != 't') goto yy174;
+yy224:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy225;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy225;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy225:
+#line 116 "src/sc_man_scanner.re"
+	{ RET(TK_Transient); }
+#line 1488 "src/sc_man_scanner.h"
+yy226:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy227;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy227;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy227:
+#line 103 "src/sc_man_scanner.re"
+	{ RET(TK_True); }
+#line 1506 "src/sc_man_scanner.h"
+yy228:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy229;
+	if(yych != 'o') goto yy174;
+yy229:
+	yych = *++YYCURSOR;
+	if(yych == 'W') goto yy230;
+	if(yych != 'w') goto yy174;
+yy230:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy231;
+	if(yych != 's') goto yy174;
+yy231:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy232;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy232;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy232:
+#line 118 "src/sc_man_scanner.re"
+	{ RET(TK_Throws); }
+#line 1536 "src/sc_man_scanner.h"
+yy233:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy251;
+	if(yych == 's') goto yy251;
+	goto yy174;
+yy234:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy246;
+	if(yych == 't') goto yy246;
+	goto yy174;
+yy235:
+	yych = *++YYCURSOR;
+	if(yych == 'G') goto yy240;
+	if(yych == 'g') goto yy240;
+	goto yy174;
+yy236:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy237;
+	if(yych != 't') goto yy174;
+yy237:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy238;
+	if(yych != 'o') goto yy174;
+yy238:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy239;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy239;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy239:
+#line 108 "src/sc_man_scanner.re"
+	{ RET(TK_Auto); }
+#line 1577 "src/sc_man_scanner.h"
+yy240:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy241;
+	if(yych != 'l') goto yy174;
+yy241:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy242;
+	if(yych != 'e') goto yy174;
+yy242:
+	yych = *++YYCURSOR;
+	if(yych != '_') goto yy174;
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy244;
+	if(yych != 't') goto yy174;
+yy244:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy245;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy245;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy245:
+#line 146 "src/sc_man_scanner.re"
+	{ RET(TK_Angle_t); }
+#line 1609 "src/sc_man_scanner.h"
+yy246:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy247;
+	if(yych != 'i') goto yy174;
+yy247:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy248;
+	if(yych != 'o') goto yy174;
+yy248:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy249;
+	if(yych != 'n') goto yy174;
+yy249:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy250;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy250;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy250:
+#line 141 "src/sc_man_scanner.re"
+	{ RET(TK_Action); }
+#line 1639 "src/sc_man_scanner.h"
+yy251:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '@') {
+			if(yych <= '/') goto yy252;
+			if(yych <= '9') goto yy173;
+		} else {
+			if(yych == 'T') goto yy253;
+			goto yy173;
+		}
+	} else {
+		if(yych <= '`') {
+			if(yych == '_') goto yy173;
+		} else {
+			if(yych == 't') goto yy253;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy252:
+#line 147 "src/sc_man_scanner.re"
+	{ RET(TK_Abs); }
+#line 1661 "src/sc_man_scanner.h"
+yy253:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy254;
+	if(yych != 'r') goto yy174;
+yy254:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy255;
+	if(yych != 'a') goto yy174;
+yy255:
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy256;
+	if(yych != 'c') goto yy174;
+yy256:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy257;
+	if(yych != 't') goto yy174;
+yy257:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy258;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy258;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy258:
+#line 101 "src/sc_man_scanner.re"
+	{ RET(TK_Abstract); }
+#line 1695 "src/sc_man_scanner.h"
+yy259:
+	yych = *++YYCURSOR;
+	if(yych <= 'T') {
+		if(yych == 'M') goto yy267;
+		if(yych <= 'S') goto yy174;
+		goto yy268;
+	} else {
+		if(yych <= 'm') {
+			if(yych <= 'l') goto yy174;
+			goto yy267;
+		} else {
+			if(yych == 't') goto yy268;
+			goto yy174;
+		}
+	}
+yy260:
+	yych = *++YYCURSOR;
+	if(yych == 'W') goto yy265;
+	if(yych == 'w') goto yy265;
+	goto yy174;
+yy261:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy262;
+	if(yych != 'n') goto yy174;
+yy262:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy263;
+	if(yych != 'e') goto yy174;
+yy263:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy264;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy264;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy264:
+#line 105 "src/sc_man_scanner.re"
+	{ RET(TK_None); }
+#line 1741 "src/sc_man_scanner.h"
+yy265:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy266;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy266;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy266:
+#line 106 "src/sc_man_scanner.re"
+	{ RET(TK_New); }
+#line 1759 "src/sc_man_scanner.h"
+yy267:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy273;
+	if(yych == 'e') goto yy273;
+	goto yy174;
+yy268:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy269;
+	if(yych != 'i') goto yy174;
+yy269:
+	yych = *++YYCURSOR;
+	if(yych == 'V') goto yy270;
+	if(yych != 'v') goto yy174;
+yy270:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy271;
+	if(yych != 'e') goto yy174;
+yy271:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy272;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy272;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy272:
+#line 111 "src/sc_man_scanner.re"
+	{ RET(TK_Native); }
+#line 1794 "src/sc_man_scanner.h"
+yy273:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy274;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy274;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy274:
+#line 94 "src/sc_man_scanner.re"
+	{ RET(TK_Name); }
+#line 1812 "src/sc_man_scanner.h"
+yy275:
+	yych = *++YYCURSOR;
+	if(yych == 'D') goto yy276;
+	if(yych != 'd') goto yy174;
+yy276:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy277;
+	if(yych != 'e') goto yy174;
+yy277:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy278;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy278;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy278:
+#line 92 "src/sc_man_scanner.re"
+	{ RET(TK_Mode); }
+#line 1838 "src/sc_man_scanner.h"
+yy279:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy292;
+	if(yych == 't') goto yy292;
+	goto yy174;
+yy280:
+	yych = *++YYCURSOR;
+	if(yych <= 'N') {
+		if(yych == 'C') goto yy282;
+		if(yych <= 'M') goto yy174;
+	} else {
+		if(yych <= 'c') {
+			if(yych <= 'b') goto yy174;
+			goto yy282;
+		} else {
+			if(yych != 'n') goto yy174;
+		}
+	}
+	yych = *++YYCURSOR;
+	if(yych == 'G') goto yy290;
+	if(yych == 'g') goto yy290;
+	goto yy174;
+yy282:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy283;
+	if(yych != 'a') goto yy174;
+yy283:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy284;
+	if(yych != 'l') goto yy174;
+yy284:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy285;
+	if(yych != 'i') goto yy174;
+yy285:
+	yych = *++YYCURSOR;
+	if(yych == 'Z') goto yy286;
+	if(yych != 'z') goto yy174;
+yy286:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy287;
+	if(yych != 'e') goto yy174;
+yy287:
+	yych = *++YYCURSOR;
+	if(yych == 'D') goto yy288;
+	if(yych != 'd') goto yy174;
+yy288:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy289;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy289;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy289:
+#line 126 "src/sc_man_scanner.re"
+	{ RET(TK_Localized); }
+#line 1902 "src/sc_man_scanner.h"
+yy290:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy291;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy291;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy291:
+#line 87 "src/sc_man_scanner.re"
+	{ RET(TK_Long); }
+#line 1920 "src/sc_man_scanner.h"
+yy292:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy293;
+	if(yych != 'e') goto yy174;
+yy293:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy294;
+	if(yych != 'n') goto yy174;
+yy294:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy295;
+	if(yych != 't') goto yy174;
+yy295:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy296;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy296;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy296:
+#line 127 "src/sc_man_scanner.re"
+	{ RET(TK_Latent); }
+#line 1950 "src/sc_man_scanner.h"
+yy297:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy298;
+	if(yych != 'i') goto yy174;
+yy298:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy299;
+	if(yych != 'l') goto yy174;
+yy299:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy300;
+	if(yych != 'e') goto yy174;
+yy300:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy301;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy301;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy301:
+#line 74 "src/sc_man_scanner.re"
+	{ RET(TK_While); }
+#line 1980 "src/sc_man_scanner.h"
+yy302:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy314;
+	if(yych == 'r') goto yy314;
+	goto yy174;
+yy303:
+	yych = *++YYCURSOR;
+	if(yych <= 'L') {
+		if(yych == 'I') goto yy305;
+		if(yych <= 'K') goto yy174;
+	} else {
+		if(yych <= 'i') {
+			if(yych <= 'h') goto yy174;
+			goto yy305;
+		} else {
+			if(yych != 'l') goto yy174;
+		}
+	}
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy308;
+	if(yych == 'a') goto yy308;
+	goto yy174;
+yy305:
+	yych = *++YYCURSOR;
+	if(yych == 'D') goto yy306;
+	if(yych != 'd') goto yy174;
+yy306:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy307;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy307;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy307:
+#line 89 "src/sc_man_scanner.re"
+	{ RET(TK_Void); }
+#line 2024 "src/sc_man_scanner.h"
+yy308:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy309;
+	if(yych != 't') goto yy174;
+yy309:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy310;
+	if(yych != 'i') goto yy174;
+yy310:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy311;
+	if(yych != 'l') goto yy174;
+yy311:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy312;
+	if(yych != 'e') goto yy174;
+yy312:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy313;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy313;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy313:
+#line 73 "src/sc_man_scanner.re"
+	{ RET(TK_Volatile); }
+#line 2058 "src/sc_man_scanner.h"
+yy314:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy315;
+	if(yych != 't') goto yy174;
+yy315:
+	yych = *++YYCURSOR;
+	if(yych == 'U') goto yy316;
+	if(yych != 'u') goto yy174;
+yy316:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy317;
+	if(yych != 'a') goto yy174;
+yy317:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy318;
+	if(yych != 'l') goto yy174;
+yy318:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy319;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy319;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy319:
+#line 134 "src/sc_man_scanner.re"
+	{ RET(TK_Virtual); }
+#line 2092 "src/sc_man_scanner.h"
+yy320:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy337;
+	if(yych == 'n') goto yy337;
+	goto yy174;
+yy321:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy333;
+	if(yych == 'o') goto yy333;
+	goto yy174;
+yy322:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy329;
+	if(yych == 't') goto yy329;
+	goto yy174;
+yy323:
+	yych = *++YYCURSOR;
+	if(yych == 'H') goto yy324;
+	if(yych != 'h') goto yy174;
+yy324:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy325;
+	if(yych != 'o') goto yy174;
+yy325:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy326;
+	if(yych != 'r') goto yy174;
+yy326:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy327;
+	if(yych != 't') goto yy174;
+yy327:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy328;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy328;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy328:
+#line 84 "src/sc_man_scanner.re"
+	{ RET(TK_UShort); }
+#line 2141 "src/sc_man_scanner.h"
+yy329:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy330;
+	if(yych != 'i') goto yy174;
+yy330:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy331;
+	if(yych != 'l') goto yy174;
+yy331:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy332;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy332;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy332:
+#line 72 "src/sc_man_scanner.re"
+	{ RET(TK_Until); }
+#line 2167 "src/sc_man_scanner.h"
+yy333:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy334;
+	if(yych != 'n') goto yy174;
+yy334:
+	yych = *++YYCURSOR;
+	if(yych == 'G') goto yy335;
+	if(yych != 'g') goto yy174;
+yy335:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy336;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy336;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy336:
+#line 88 "src/sc_man_scanner.re"
+	{ RET(TK_ULong); }
+#line 2193 "src/sc_man_scanner.h"
+yy337:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy338;
+	if(yych != 't') goto yy174;
+yy338:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy339;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy339;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy339:
+#line 86 "src/sc_man_scanner.re"
+	{ RET(TK_UInt); }
+#line 2215 "src/sc_man_scanner.h"
+yy340:
+	yych = *++YYCURSOR;
+	if(yych == 'Y') goto yy394;
+	if(yych == 'y') goto yy394;
+	goto yy174;
+yy341:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy391;
+	if(yych == 'l') goto yy391;
+	goto yy174;
+yy342:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy387;
+	if(yych == 'o') goto yy387;
+	goto yy174;
+yy343:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy380;
+	if(yych == 'n') goto yy380;
+	goto yy174;
+yy344:
+	yych = *++YYCURSOR;
+	if(yych == 'U') goto yy376;
+	if(yych == 'u') goto yy376;
+	goto yy174;
+yy345:
+	yych = *++YYCURSOR;
+	if(yych <= 'R') {
+		if(yych <= 'N') {
+			if(yych == 'A') goto yy358;
+			goto yy174;
+		} else {
+			if(yych <= 'O') goto yy359;
+			if(yych <= 'Q') goto yy174;
+			goto yy357;
+		}
+	} else {
+		if(yych <= 'n') {
+			if(yych == 'a') goto yy358;
+			goto yy174;
+		} else {
+			if(yych <= 'o') goto yy359;
+			if(yych == 'r') goto yy357;
+			goto yy174;
+		}
+	}
+yy346:
+	yych = *++YYCURSOR;
+	if(yych == 'P') goto yy353;
+	if(yych == 'p') goto yy353;
+	goto yy174;
+yy347:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy348;
+	if(yych != 'i') goto yy174;
+yy348:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy349;
+	if(yych != 't') goto yy174;
+yy349:
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy350;
+	if(yych != 'c') goto yy174;
+yy350:
+	yych = *++YYCURSOR;
+	if(yych == 'H') goto yy351;
+	if(yych != 'h') goto yy174;
+yy351:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy352;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy352;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy352:
+#line 71 "src/sc_man_scanner.re"
+	{ RET(TK_Switch); }
+#line 2300 "src/sc_man_scanner.h"
+yy353:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy354;
+	if(yych != 'e') goto yy174;
+yy354:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy355;
+	if(yych != 'r') goto yy174;
+yy355:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy356;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy356;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy356:
+#line 135 "src/sc_man_scanner.re"
+	{ RET(TK_Super); }
+#line 2326 "src/sc_man_scanner.h"
+yy357:
+	yych = *++YYCURSOR;
+	if(yych <= 'U') {
+		if(yych == 'I') goto yy368;
+		if(yych <= 'T') goto yy174;
+		goto yy369;
+	} else {
+		if(yych <= 'i') {
+			if(yych <= 'h') goto yy174;
+			goto yy368;
+		} else {
+			if(yych == 'u') goto yy369;
+			goto yy174;
+		}
+	}
+yy358:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy362;
+	if(yych == 't') goto yy362;
+	goto yy174;
+yy359:
+	yych = *++YYCURSOR;
+	if(yych == 'P') goto yy360;
+	if(yych != 'p') goto yy174;
+yy360:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy361;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy361;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy361:
+#line 138 "src/sc_man_scanner.re"
+	{ RET(TK_Stop); }
+#line 2368 "src/sc_man_scanner.h"
+yy362:
+	yych = *++YYCURSOR;
+	if(yych <= 'I') {
+		if(yych == 'E') goto yy363;
+		if(yych <= 'H') goto yy174;
+		goto yy365;
+	} else {
+		if(yych <= 'e') {
+			if(yych <= 'd') goto yy174;
+		} else {
+			if(yych == 'i') goto yy365;
+			goto yy174;
+		}
+	}
+yy363:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy364;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy364;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy364:
+#line 97 "src/sc_man_scanner.re"
+	{ RET(TK_State); }
+#line 2400 "src/sc_man_scanner.h"
+yy365:
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy366;
+	if(yych != 'c') goto yy174;
+yy366:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy367;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy367;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy367:
+#line 115 "src/sc_man_scanner.re"
+	{ RET(TK_Static); }
+#line 2422 "src/sc_man_scanner.h"
+yy368:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy373;
+	if(yych == 'n') goto yy373;
+	goto yy174;
+yy369:
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy370;
+	if(yych != 'c') goto yy174;
+yy370:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy371;
+	if(yych != 't') goto yy174;
+yy371:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy372;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy372;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy372:
+#line 90 "src/sc_man_scanner.re"
+	{ RET(TK_Struct); }
+#line 2453 "src/sc_man_scanner.h"
+yy373:
+	yych = *++YYCURSOR;
+	if(yych == 'G') goto yy374;
+	if(yych != 'g') goto yy174;
+yy374:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy375;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy375;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy375:
+#line 95 "src/sc_man_scanner.re"
+	{ RET(TK_String); }
+#line 2475 "src/sc_man_scanner.h"
+yy376:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy377;
+	if(yych != 'n') goto yy174;
+yy377:
+	yych = *++YYCURSOR;
+	if(yych == 'D') goto yy378;
+	if(yych != 'd') goto yy174;
+yy378:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy379;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy379;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy379:
+#line 96 "src/sc_man_scanner.re"
+	{ RET(TK_Sound); }
+#line 2501 "src/sc_man_scanner.h"
+yy380:
+	yych = *++YYCURSOR;
+	if(yych == 'G') goto yy381;
+	if(yych != 'g') goto yy174;
+yy381:
+	yych = *++YYCURSOR;
+	if(yych == 'U') goto yy382;
+	if(yych != 'u') goto yy174;
+yy382:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy383;
+	if(yych != 'l') goto yy174;
+yy383:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy384;
+	if(yych != 'a') goto yy174;
+yy384:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy385;
+	if(yych != 'r') goto yy174;
+yy385:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy386;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy386;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy386:
+#line 128 "src/sc_man_scanner.re"
+	{ RET(TK_Singular); }
+#line 2539 "src/sc_man_scanner.h"
+yy387:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy388;
+	if(yych != 'r') goto yy174;
+yy388:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy389;
+	if(yych != 't') goto yy174;
+yy389:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy390;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy390;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy390:
+#line 83 "src/sc_man_scanner.re"
+	{ RET(TK_Short); }
+#line 2565 "src/sc_man_scanner.h"
+yy391:
+	yych = *++YYCURSOR;
+	if(yych == 'F') goto yy392;
+	if(yych != 'f') goto yy174;
+yy392:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy393;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy393;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy393:
+#line 137 "src/sc_man_scanner.re"
+	{ RET(TK_Self); }
+#line 2587 "src/sc_man_scanner.h"
+yy394:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy395;
+	if(yych != 't') goto yy174;
+yy395:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy396;
+	if(yych != 'e') goto yy174;
+yy396:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy397;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy397;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy397:
+#line 82 "src/sc_man_scanner.re"
+	{ RET(TK_SByte); }
+#line 2613 "src/sc_man_scanner.h"
+yy398:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy407;
+	if(yych == 'n') goto yy407;
+	goto yy174;
+yy399:
+	yych = *++YYCURSOR;
+	if(yych <= 'T') {
+		if(yych == 'F') goto yy401;
+		if(yych <= 'S') goto yy174;
+	} else {
+		if(yych <= 'f') {
+			if(yych <= 'e') goto yy174;
+			goto yy401;
+		} else {
+			if(yych != 't') goto yy174;
+		}
+	}
+	yych = *++YYCURSOR;
+	if(yych == 'U') goto yy403;
+	if(yych == 'u') goto yy403;
+	goto yy174;
+yy401:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy402;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy402;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy402:
+#line 113 "src/sc_man_scanner.re"
+	{ RET(TK_Ref); }
+#line 2653 "src/sc_man_scanner.h"
+yy403:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy404;
+	if(yych != 'r') goto yy174;
+yy404:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy405;
+	if(yych != 'n') goto yy174;
+yy405:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy406;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy406;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy406:
+#line 70 "src/sc_man_scanner.re"
+	{ RET(TK_Return); }
+#line 2679 "src/sc_man_scanner.h"
+yy407:
+	yych = *++YYCURSOR;
+	if(yych == 'D') goto yy408;
+	if(yych != 'd') goto yy174;
+yy408:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy409;
+	if(yych != 'o') goto yy174;
+yy409:
+	yych = *++YYCURSOR;
+	if(yych == 'M') goto yy410;
+	if(yych != 'm') goto yy174;
+yy410:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= '@') {
+		if(yych <= '1') {
+			if(yych >= '0') goto yy173;
+		} else {
+			if(yych <= '2') goto yy412;
+			if(yych <= '9') goto yy173;
+		}
+	} else {
+		if(yych <= '_') {
+			if(yych <= 'Z') goto yy173;
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy411;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy411:
+#line 148 "src/sc_man_scanner.re"
+	{ RET(TK_Random); }
+#line 2713 "src/sc_man_scanner.h"
+yy412:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy413;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy413;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy413:
+#line 149 "src/sc_man_scanner.re"
+	{ RET(TK_Random2); }
+#line 2731 "src/sc_man_scanner.h"
+yy414:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy415;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy415;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy415:
+#line 69 "src/sc_man_scanner.re"
+	{ RET(TK_If); }
+#line 2749 "src/sc_man_scanner.h"
+yy416:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy437;
+	if(yych == 'n') goto yy437;
+	goto yy174;
+yy417:
+	yych = *++YYCURSOR;
+	if(yych <= 'T') {
+		if(yych <= 'R') goto yy174;
+		if(yych <= 'S') goto yy428;
+		goto yy426;
+	} else {
+		if(yych <= 'r') goto yy174;
+		if(yych <= 's') goto yy428;
+		if(yych <= 't') goto yy426;
+		goto yy174;
+	}
+yy418:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy419;
+	if(yych != 'e') goto yy174;
+yy419:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy420;
+	if(yych != 'r') goto yy174;
+yy420:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy421;
+	if(yych != 'a') goto yy174;
+yy421:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy422;
+	if(yych != 't') goto yy174;
+yy422:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy423;
+	if(yych != 'o') goto yy174;
+yy423:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy424;
+	if(yych != 'r') goto yy174;
+yy424:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy425;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy425;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy425:
+#line 131 "src/sc_man_scanner.re"
+	{ RET(TK_Iterator); }
+#line 2808 "src/sc_man_scanner.h"
+yy426:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy427;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy427;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy427:
+#line 85 "src/sc_man_scanner.re"
+	{ RET(TK_Int); }
+#line 2826 "src/sc_man_scanner.h"
+yy428:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy429;
+	if(yych != 't') goto yy174;
+yy429:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy430;
+	if(yych != 'a') goto yy174;
+yy430:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy431;
+	if(yych != 'n') goto yy174;
+yy431:
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy432;
+	if(yych != 'c') goto yy174;
+yy432:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy433;
+	if(yych != 'e') goto yy174;
+yy433:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy434;
+	if(yych != 'o') goto yy174;
+yy434:
+	yych = *++YYCURSOR;
+	if(yych == 'F') goto yy435;
+	if(yych != 'f') goto yy174;
+yy435:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy436;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy436;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy436:
+#line 107 "src/sc_man_scanner.re"
+	{ RET(TK_InstanceOf); }
+#line 2872 "src/sc_man_scanner.h"
+yy437:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy438;
+	if(yych != 'o') goto yy174;
+yy438:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy439;
+	if(yych != 'r') goto yy174;
+yy439:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy440;
+	if(yych != 'e') goto yy174;
+yy440:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy441;
+	if(yych != 's') goto yy174;
+yy441:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy442;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy442;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy442:
+#line 125 "src/sc_man_scanner.re"
+	{ RET(TK_Ignores); }
+#line 2906 "src/sc_man_scanner.h"
+yy443:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy448;
+	if(yych == 'o') goto yy448;
+	goto yy174;
+yy444:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy445;
+	if(yych != 't') goto yy174;
+yy445:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy446;
+	if(yych != 'o') goto yy174;
+yy446:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy447;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy447;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy447:
+#line 68 "src/sc_man_scanner.re"
+	{ RET(TK_Goto); }
+#line 2937 "src/sc_man_scanner.h"
+yy448:
+	yych = *++YYCURSOR;
+	if(yych == 'B') goto yy449;
+	if(yych != 'b') goto yy174;
+yy449:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy450;
+	if(yych != 'a') goto yy174;
+yy450:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy451;
+	if(yych != 'l') goto yy174;
+yy451:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy452;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy452;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy452:
+#line 136 "src/sc_man_scanner.re"
+	{ RET(TK_Global); }
+#line 2967 "src/sc_man_scanner.h"
+yy453:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy478;
+	if(yych == 'l') goto yy478;
+	goto yy174;
+yy454:
+	yych = *++YYCURSOR;
+	if(yych <= 'X') {
+		if(yych == 'N') goto yy468;
+		if(yych <= 'W') goto yy174;
+		goto yy469;
+	} else {
+		if(yych <= 'n') {
+			if(yych <= 'm') goto yy174;
+			goto yy468;
+		} else {
+			if(yych == 'x') goto yy469;
+			goto yy174;
+		}
+	}
+yy455:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy464;
+	if(yych == 'o') goto yy464;
+	goto yy174;
+yy456:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy457;
+	if(yych != 'r') goto yy174;
+yy457:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '@') {
+			if(yych <= '/') goto yy458;
+			if(yych <= '9') goto yy173;
+		} else {
+			if(yych == 'E') goto yy459;
+			goto yy173;
+		}
+	} else {
+		if(yych <= '`') {
+			if(yych == '_') goto yy173;
+		} else {
+			if(yych == 'e') goto yy459;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy458:
+#line 67 "src/sc_man_scanner.re"
+	{ RET(TK_For); }
+#line 3018 "src/sc_man_scanner.h"
+yy459:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy460;
+	if(yych != 'a') goto yy174;
+yy460:
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy461;
+	if(yych != 'c') goto yy174;
+yy461:
+	yych = *++YYCURSOR;
+	if(yych == 'H') goto yy462;
+	if(yych != 'h') goto yy174;
+yy462:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy463;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy463;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy463:
+#line 102 "src/sc_man_scanner.re"
+	{ RET(TK_ForEach); }
+#line 3048 "src/sc_man_scanner.h"
+yy464:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy465;
+	if(yych != 'a') goto yy174;
+yy465:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy466;
+	if(yych != 't') goto yy174;
+yy466:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy467;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy467;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy467:
+#line 78 "src/sc_man_scanner.re"
+	{ RET(TK_Float); }
+#line 3074 "src/sc_man_scanner.h"
+yy468:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy475;
+	if(yych == 'a') goto yy475;
+	goto yy174;
+yy469:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy470;
+	if(yych != 'e') goto yy174;
+yy470:
+	yych = *++YYCURSOR;
+	if(yych == 'D') goto yy471;
+	if(yych != 'd') goto yy174;
+yy471:
+	yych = *++YYCURSOR;
+	if(yych != '_') goto yy174;
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy473;
+	if(yych != 't') goto yy174;
+yy473:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy474;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy474;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy474:
+#line 145 "src/sc_man_scanner.re"
+	{ RET(TK_Fixed_t); }
+#line 3111 "src/sc_man_scanner.h"
+yy475:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy476;
+	if(yych != 'l') goto yy174;
+yy476:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy477;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy477;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy477:
+#line 117 "src/sc_man_scanner.re"
+	{ RET(TK_Final); }
+#line 3133 "src/sc_man_scanner.h"
+yy478:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy479;
+	if(yych != 's') goto yy174;
+yy479:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy480;
+	if(yych != 'e') goto yy174;
+yy480:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy481;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy481;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy481:
+#line 104 "src/sc_man_scanner.re"
+	{ RET(TK_False); }
+#line 3159 "src/sc_man_scanner.h"
+yy482:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy507;
+	if(yych == 's') goto yy507;
+	goto yy174;
+yy483:
+	yych = *++YYCURSOR;
+	if(yych == 'U') goto yy504;
+	if(yych == 'u') goto yy504;
+	goto yy174;
+yy484:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy500;
+	if(yych == 'e') goto yy500;
+	goto yy174;
+yy485:
+	yych = *++YYCURSOR;
+	if(yych <= 'T') {
+		if(yych <= 'O') {
+			if(yych != 'E') goto yy174;
+		} else {
+			if(yych <= 'P') goto yy488;
+			if(yych <= 'S') goto yy174;
+			goto yy487;
+		}
+	} else {
+		if(yych <= 'o') {
+			if(yych != 'e') goto yy174;
+		} else {
+			if(yych <= 'p') goto yy488;
+			if(yych == 't') goto yy487;
+			goto yy174;
+		}
+	}
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy498;
+	if(yych == 'c') goto yy498;
+	goto yy174;
+yy487:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy493;
+	if(yych == 'e') goto yy493;
+	goto yy174;
+yy488:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy489;
+	if(yych != 'o') goto yy174;
+yy489:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy490;
+	if(yych != 'r') goto yy174;
+yy490:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy491;
+	if(yych != 't') goto yy174;
+yy491:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy492;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy492;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy492:
+#line 133 "src/sc_man_scanner.re"
+	{ RET(TK_Export); }
+#line 3232 "src/sc_man_scanner.h"
+yy493:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy494;
+	if(yych != 'n') goto yy174;
+yy494:
+	yych = *++YYCURSOR;
+	if(yych == 'D') goto yy495;
+	if(yych != 'd') goto yy174;
+yy495:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy496;
+	if(yych != 's') goto yy174;
+yy496:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy497;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy497;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy497:
+#line 119 "src/sc_man_scanner.re"
+	{ RET(TK_Extends); }
+#line 3262 "src/sc_man_scanner.h"
+yy498:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy499;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy499;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy499:
+#line 109 "src/sc_man_scanner.re"
+	{ RET(TK_Exec); }
+#line 3280 "src/sc_man_scanner.h"
+yy500:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy501;
+	if(yych != 'n') goto yy174;
+yy501:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy502;
+	if(yych != 't') goto yy174;
+yy502:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy503;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy503;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy503:
+#line 114 "src/sc_man_scanner.re"
+	{ RET(TK_Event); }
+#line 3306 "src/sc_man_scanner.h"
+yy504:
+	yych = *++YYCURSOR;
+	if(yych == 'M') goto yy505;
+	if(yych != 'm') goto yy174;
+yy505:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy506;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy506;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy506:
+#line 93 "src/sc_man_scanner.re"
+	{ RET(TK_Enum); }
+#line 3328 "src/sc_man_scanner.h"
+yy507:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy508;
+	if(yych != 'e') goto yy174;
+yy508:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy509;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy509;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy509:
+#line 66 "src/sc_man_scanner.re"
+	{ RET(TK_Else); }
+#line 3350 "src/sc_man_scanner.h"
+yy510:
+	yych = *++YYCURSOR;
+	if(yych == 'F') goto yy520;
+	if(yych == 'f') goto yy520;
+	goto yy174;
+yy511:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '@') {
+			if(yych <= '/') goto yy512;
+			if(yych <= '9') goto yy173;
+		} else {
+			if(yych <= 'S') goto yy173;
+			if(yych <= 'T') goto yy514;
+			if(yych <= 'U') goto yy513;
+			goto yy173;
+		}
+	} else {
+		if(yych <= 's') {
+			if(yych == '_') goto yy173;
+			if(yych >= 'a') goto yy173;
+		} else {
+			if(yych <= 't') goto yy514;
+			if(yych <= 'u') goto yy513;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy512:
+#line 65 "src/sc_man_scanner.re"
+	{ RET(TK_Do); }
+#line 3381 "src/sc_man_scanner.h"
+yy513:
+	yych = *++YYCURSOR;
+	if(yych == 'B') goto yy516;
+	if(yych == 'b') goto yy516;
+	goto yy174;
+yy514:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy515;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy515;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy515:
+#line 123 "src/sc_man_scanner.re"
+	{ RET(TK_Dot); }
+#line 3404 "src/sc_man_scanner.h"
+yy516:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy517;
+	if(yych != 'l') goto yy174;
+yy517:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy518;
+	if(yych != 'e') goto yy174;
+yy518:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy519;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy519;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy519:
+#line 79 "src/sc_man_scanner.re"
+	{ RET(TK_Double); }
+#line 3430 "src/sc_man_scanner.h"
+yy520:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy521;
+	if(yych != 'a') goto yy174;
+yy521:
+	yych = *++YYCURSOR;
+	if(yych == 'U') goto yy522;
+	if(yych != 'u') goto yy174;
+yy522:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy523;
+	if(yych != 'l') goto yy174;
+yy523:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy524;
+	if(yych != 't') goto yy174;
+yy524:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '@') {
+			if(yych <= '/') goto yy525;
+			if(yych <= '9') goto yy173;
+		} else {
+			if(yych == 'P') goto yy526;
+			goto yy173;
+		}
+	} else {
+		if(yych <= '`') {
+			if(yych == '_') goto yy173;
+		} else {
+			if(yych == 'p') goto yy526;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy525:
+#line 64 "src/sc_man_scanner.re"
+	{ RET(TK_Default); }
+#line 3468 "src/sc_man_scanner.h"
+yy526:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy527;
+	if(yych != 'r') goto yy174;
+yy527:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy528;
+	if(yych != 'o') goto yy174;
+yy528:
+	yych = *++YYCURSOR;
+	if(yych == 'P') goto yy529;
+	if(yych != 'p') goto yy174;
+yy529:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy530;
+	if(yych != 'e') goto yy174;
+yy530:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy531;
+	if(yych != 'r') goto yy174;
+yy531:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy532;
+	if(yych != 't') goto yy174;
+yy532:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy533;
+	if(yych != 'i') goto yy174;
+yy533:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy534;
+	if(yych != 'e') goto yy174;
+yy534:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy535;
+	if(yych != 's') goto yy174;
+yy535:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy536;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy536;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy536:
+#line 110 "src/sc_man_scanner.re"
+	{ RET(TK_DefaultProperties); }
+#line 3522 "src/sc_man_scanner.h"
+yy537:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy576;
+	if(yych == 's') goto yy576;
+	goto yy174;
+yy538:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy573;
+	if(yych == 'a') goto yy573;
+	goto yy174;
+yy539:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy569;
+	if(yych == 'a') goto yy569;
+	goto yy174;
+yy540:
+	yych = *++YYCURSOR;
+	if(yych <= 'N') {
+		if(yych <= 'K') {
+			if(yych == 'E') goto yy548;
+			goto yy174;
+		} else {
+			if(yych <= 'L') goto yy547;
+			if(yych <= 'M') goto yy174;
+			goto yy546;
+		}
+	} else {
+		if(yych <= 'k') {
+			if(yych == 'e') goto yy548;
+			goto yy174;
+		} else {
+			if(yych <= 'l') goto yy547;
+			if(yych == 'n') goto yy546;
+			goto yy174;
+		}
+	}
+yy541:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy542;
+	if(yych != 'o') goto yy174;
+yy542:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy543;
+	if(yych != 's') goto yy174;
+yy543:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy544;
+	if(yych != 's') goto yy174;
+yy544:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy545;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy545;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy545:
+#line 124 "src/sc_man_scanner.re"
+	{ RET(TK_Cross); }
+#line 3588 "src/sc_man_scanner.h"
+yy546:
+	yych = *++YYCURSOR;
+	if(yych <= 'T') {
+		if(yych <= 'F') {
+			if(yych <= 'E') goto yy174;
+			goto yy556;
+		} else {
+			if(yych <= 'R') goto yy174;
+			if(yych <= 'S') goto yy557;
+			goto yy558;
+		}
+	} else {
+		if(yych <= 'r') {
+			if(yych == 'f') goto yy556;
+			goto yy174;
+		} else {
+			if(yych <= 's') goto yy557;
+			if(yych <= 't') goto yy558;
+			goto yy174;
+		}
+	}
+yy547:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy553;
+	if(yych == 'o') goto yy553;
+	goto yy174;
+yy548:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy549;
+	if(yych != 'r') goto yy174;
+yy549:
+	yych = *++YYCURSOR;
+	if(yych == 'C') goto yy550;
+	if(yych != 'c') goto yy174;
+yy550:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy551;
+	if(yych != 'e') goto yy174;
+yy551:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy552;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy552;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy552:
+#line 130 "src/sc_man_scanner.re"
+	{ RET(TK_Coerce); }
+#line 3644 "src/sc_man_scanner.h"
+yy553:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy554;
+	if(yych != 'r') goto yy174;
+yy554:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy555;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy555;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy555:
+#line 98 "src/sc_man_scanner.re"
+	{ RET(TK_Color); }
+#line 3666 "src/sc_man_scanner.h"
+yy556:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy566;
+	if(yych == 'i') goto yy566;
+	goto yy174;
+yy557:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy564;
+	if(yych == 't') goto yy564;
+	goto yy174;
+yy558:
+	yych = *++YYCURSOR;
+	if(yych == 'I') goto yy559;
+	if(yych != 'i') goto yy174;
+yy559:
+	yych = *++YYCURSOR;
+	if(yych == 'N') goto yy560;
+	if(yych != 'n') goto yy174;
+yy560:
+	yych = *++YYCURSOR;
+	if(yych == 'U') goto yy561;
+	if(yych != 'u') goto yy174;
+yy561:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy562;
+	if(yych != 'e') goto yy174;
+yy562:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy563;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy563;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy563:
+#line 63 "src/sc_man_scanner.re"
+	{ RET(TK_Continue); }
+#line 3710 "src/sc_man_scanner.h"
+yy564:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy565;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy565;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy565:
+#line 62 "src/sc_man_scanner.re"
+	{ RET(TK_Const); }
+#line 3728 "src/sc_man_scanner.h"
+yy566:
+	yych = *++YYCURSOR;
+	if(yych == 'G') goto yy567;
+	if(yych != 'g') goto yy174;
+yy567:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy568;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy568;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy568:
+#line 129 "src/sc_man_scanner.re"
+	{ RET(TK_Config); }
+#line 3750 "src/sc_man_scanner.h"
+yy569:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy570;
+	if(yych != 's') goto yy174;
+yy570:
+	yych = *++YYCURSOR;
+	if(yych == 'S') goto yy571;
+	if(yych != 's') goto yy174;
+yy571:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy572;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy572;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy572:
+#line 91 "src/sc_man_scanner.re"
+	{ RET(TK_Class); }
+#line 3776 "src/sc_man_scanner.h"
+yy573:
+	yych = *++YYCURSOR;
+	if(yych == 'R') goto yy574;
+	if(yych != 'r') goto yy174;
+yy574:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy575;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy575;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy575:
+#line 80 "src/sc_man_scanner.re"
+	{ RET(TK_Char); }
+#line 3798 "src/sc_man_scanner.h"
+yy576:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy577;
+	if(yych != 'e') goto yy174;
+yy577:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy578;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy578;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy578:
+#line 61 "src/sc_man_scanner.re"
+	{ RET(TK_Case); }
+#line 3820 "src/sc_man_scanner.h"
+yy579:
+	yych = *++YYCURSOR;
+	if(yych == 'O') goto yy589;
+	if(yych == 'o') goto yy589;
+	goto yy174;
+yy580:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy585;
+	if(yych == 'e') goto yy585;
+	goto yy174;
+yy581:
+	yych = *++YYCURSOR;
+	if(yych == 'T') goto yy582;
+	if(yych != 't') goto yy174;
+yy582:
+	yych = *++YYCURSOR;
+	if(yych == 'E') goto yy583;
+	if(yych != 'e') goto yy174;
+yy583:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy584;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy584;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy584:
+#line 81 "src/sc_man_scanner.re"
+	{ RET(TK_Byte); }
+#line 3856 "src/sc_man_scanner.h"
+yy585:
+	yych = *++YYCURSOR;
+	if(yych == 'A') goto yy586;
+	if(yych != 'a') goto yy174;
+yy586:
+	yych = *++YYCURSOR;
+	if(yych == 'K') goto yy587;
+	if(yych != 'k') goto yy174;
+yy587:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy588;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy588;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy588:
+#line 60 "src/sc_man_scanner.re"
+	{ RET(TK_Break); }
+#line 3882 "src/sc_man_scanner.h"
+yy589:
+	yych = *++YYCURSOR;
+	if(yych == 'L') goto yy590;
+	if(yych != 'l') goto yy174;
+yy590:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= 'Z') {
+		if(yych <= '/') goto yy591;
+		if(yych <= '9') goto yy173;
+		if(yych >= 'A') goto yy173;
+	} else {
+		if(yych <= '_') {
+			if(yych >= '_') goto yy173;
+		} else {
+			if(yych <= '`') goto yy591;
+			if(yych <= 'z') goto yy173;
+		}
+	}
+yy591:
+#line 77 "src/sc_man_scanner.re"
+	{ RET(TK_Bool); }
+#line 3904 "src/sc_man_scanner.h"
+yy592:
+	++YYCURSOR;
+#line 172 "src/sc_man_scanner.re"
+	{ RET(TK_DivEq); }
+#line 3909 "src/sc_man_scanner.h"
+yy594:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych == 0x0A) goto yy598;
+	goto yy594;
+yy596:
+	++YYCURSOR;
+#line 56 "src/sc_man_scanner.re"
+	{ goto comment; }
+#line 3920 "src/sc_man_scanner.h"
+yy598:
+	++YYCURSOR;
+#line 57 "src/sc_man_scanner.re"
+	{ goto newline; }
+#line 3925 "src/sc_man_scanner.h"
+}
+#line 220 "src/sc_man_scanner.re"
+
+	}
+	if (!CMode)	// The classic Hexen scanner.
+	{
+	
+#line 3933 "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 yy608;
+			goto yy606;
+		} else {
+			if(yych == '"') goto yy610;
+			if(yych <= '.') goto yy614;
+			goto yy603;
+		}
+	} else {
+		if(yych <= '<') {
+			if(yych == ';') goto yy605;
+			goto yy614;
+		} else {
+			if(yych <= '=') goto yy612;
+			if(yych <= 'z') goto yy614;
+			if(yych <= '}') goto yy612;
+			goto yy614;
+		}
+	}
+yy602:
+#line 235 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 3962 "src/sc_man_scanner.h"
+yy603:
+	yyaccept = 0;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if(yych <= '/') {
+		if(yych <= '"') {
+			if(yych == '!') goto yy619;
+		} else {
+			if(yych == '*') goto yy627;
+			if(yych <= '.') goto yy619;
+			goto yy623;
+		}
+	} else {
+		if(yych <= '<') {
+			if(yych != ';') goto yy619;
+		} else {
+			if(yych <= '=') goto yy604;
+			if(yych <= 'z') goto yy619;
+			if(yych >= '~') goto yy619;
+		}
+	}
+yy604:
+#line 237 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 3986 "src/sc_man_scanner.h"
+yy605:
+	yyaccept = 0;
+	yych = *(YYMARKER = ++YYCURSOR);
+	goto yy624;
+yy606:
+	++YYCURSOR;
+	yych = *YYCURSOR;
+	goto yy622;
+yy607:
+#line 228 "src/sc_man_scanner.re"
+	{ goto std1; }
+#line 3998 "src/sc_man_scanner.h"
+yy608:
+	++YYCURSOR;
+#line 229 "src/sc_man_scanner.re"
+	{ goto newline; }
+#line 4003 "src/sc_man_scanner.h"
+yy610:
+	++YYCURSOR;
+#line 230 "src/sc_man_scanner.re"
+	{ goto string; }
+#line 4008 "src/sc_man_scanner.h"
+yy612:
+	++YYCURSOR;
+#line 232 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4013 "src/sc_man_scanner.h"
+yy614:
+	yyaccept = 1;
+	yych = *(YYMARKER = ++YYCURSOR);
+	goto yy618;
+yy615:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= '/') {
+		if(yych <= '"') {
+			if(yych == '!') goto yy619;
+		} else {
+			if(yych == '*') goto yy616;
+			if(yych <= '.') goto yy619;
+		}
+	} else {
+		if(yych <= '<') {
+			if(yych != ';') goto yy619;
+		} else {
+			if(yych <= '=') goto yy616;
+			if(yych <= 'z') goto yy619;
+			if(yych >= '~') goto yy619;
+		}
+	}
+yy616:
+	YYCURSOR = YYMARKER;
+	if(yyaccept <= 0) {
+		goto yy604;
+	} else {
+		goto yy602;
+	}
+yy617:
+	yyaccept = 1;
+	YYMARKER = ++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy618:
+	if(yych <= ':') {
+		if(yych <= '"') {
+			if(yych == '!') goto yy617;
+			goto yy602;
+		} else {
+			if(yych == '/') goto yy615;
+			goto yy617;
+		}
+	} else {
+		if(yych <= '=') {
+			if(yych == '<') goto yy617;
+			goto yy602;
+		} else {
+			if(yych <= 'z') goto yy617;
+			if(yych <= '}') goto yy602;
+			goto yy617;
+		}
+	}
+yy619:
+	yyaccept = 1;
+	YYMARKER = ++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= ':') {
+		if(yych <= '"') {
+			if(yych == '!') goto yy619;
+			goto yy602;
+		} else {
+			if(yych == '/') goto yy615;
+			goto yy619;
+		}
+	} else {
+		if(yych <= '=') {
+			if(yych == '<') goto yy619;
+			goto yy602;
+		} else {
+			if(yych <= 'z') goto yy619;
+			if(yych <= '}') goto yy602;
+			goto yy619;
+		}
+	}
+yy621:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy622:
+	if(yych == 0x0A) goto yy607;
+	if(yych <= ' ') goto yy621;
+	goto yy607;
+yy623:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy624:
+	if(yych != 0x0A) goto yy623;
+	++YYCURSOR;
+#line 226 "src/sc_man_scanner.re"
+	{ goto newline; }
+#line 4109 "src/sc_man_scanner.h"
+yy627:
+	++YYCURSOR;
+#line 225 "src/sc_man_scanner.re"
+	{ goto comment; }
+#line 4114 "src/sc_man_scanner.h"
+}
+#line 238 "src/sc_man_scanner.re"
+
+	}
+	else		// A modified Hexen scanner for DECORATE.
+	{
+	
+#line 4122 "src/sc_man_scanner.h"
+{
+	YYCTYPE yych;
+	unsigned int yyaccept = 0;
+	if((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
+	yych = *YYCURSOR;
+	if(yych <= ':') {
+		if(yych <= '&') {
+			if(yych <= ' ') {
+				if(yych == 0x0A) goto yy635;
+				goto yy633;
+			} else {
+				if(yych == '"') goto yy637;
+				if(yych <= '%') goto yy650;
+				goto yy645;
+			}
+		} else {
+			if(yych <= '-') {
+				if(yych <= '\'') goto yy651;
+				if(yych <= ',') goto yy650;
+				goto yy639;
+			} else {
+				if(yych <= '.') goto yy643;
+				if(yych <= '/') goto yy631;
+				if(yych <= '9') goto yy641;
+				goto yy644;
+			}
+		}
+	} else {
+		if(yych <= '^') {
+			if(yych <= '=') {
+				if(yych <= ';') goto yy650;
+				if(yych <= '<') goto yy648;
+				goto yy646;
+			} else {
+				if(yych <= '>') goto yy649;
+				if(yych <= '@') goto yy650;
+				if(yych <= 'Z') goto yy651;
+				goto yy650;
+			}
+		} else {
+			if(yych <= 'z') {
+				if(yych == '`') goto yy650;
+				goto yy651;
+			} else {
+				if(yych == '|') goto yy647;
+				if(yych <= '~') goto yy650;
+				goto yy651;
+			}
+		}
+	}
+yy631:
+	yyaccept = 0;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if(yych == '*') goto yy700;
+	if(yych == '/') goto yy698;
+yy632:
+#line 259 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4181 "src/sc_man_scanner.h"
+yy633:
+	++YYCURSOR;
+	yych = *YYCURSOR;
+	goto yy697;
+yy634:
+#line 246 "src/sc_man_scanner.re"
+	{ goto std1; }
+#line 4189 "src/sc_man_scanner.h"
+yy635:
+	++YYCURSOR;
+#line 247 "src/sc_man_scanner.re"
+	{ goto newline; }
+#line 4194 "src/sc_man_scanner.h"
+yy637:
+	++YYCURSOR;
+#line 248 "src/sc_man_scanner.re"
+	{ goto string; }
+#line 4199 "src/sc_man_scanner.h"
+yy639:
+	++YYCURSOR;
+#line 250 "src/sc_man_scanner.re"
+	{ goto negative_check; }
+#line 4204 "src/sc_man_scanner.h"
+yy641:
+	++YYCURSOR;
+	if((yych = *YYCURSOR) <= '9') {
+		if(yych == '.') goto yy679;
+		if(yych <= '/') goto yy653;
+		goto yy676;
+	} else {
+		if(yych <= 'E') {
+			if(yych <= 'D') goto yy653;
+			goto yy678;
+		} else {
+			if(yych == 'e') goto yy678;
+			goto yy653;
+		}
+	}
+yy642:
+#line 260 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4223 "src/sc_man_scanner.h"
+yy643:
+	yych = *++YYCURSOR;
+	if(yych <= '/') goto yy632;
+	if(yych <= '9') goto yy666;
+	goto yy632;
+yy644:
+	yych = *++YYCURSOR;
+	if(yych == ':') goto yy664;
+	goto yy632;
+yy645:
+	yych = *++YYCURSOR;
+	if(yych == '&') goto yy662;
+	goto yy632;
+yy646:
+	yych = *++YYCURSOR;
+	if(yych == '=') goto yy660;
+	goto yy632;
+yy647:
+	yych = *++YYCURSOR;
+	if(yych == '|') goto yy658;
+	goto yy632;
+yy648:
+	yych = *++YYCURSOR;
+	if(yych == '<') goto yy656;
+	goto yy632;
+yy649:
+	yych = *++YYCURSOR;
+	if(yych == '>') goto yy654;
+	goto yy632;
+yy650:
+	yych = *++YYCURSOR;
+	goto yy632;
+yy651:
+	yych = *++YYCURSOR;
+	goto yy653;
+yy652:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy653:
+	if(yych <= 'Z') {
+		if(yych <= '/') {
+			if(yych == '\'') goto yy652;
+			goto yy642;
+		} else {
+			if(yych <= '9') goto yy652;
+			if(yych <= '@') goto yy642;
+			goto yy652;
+		}
+	} else {
+		if(yych <= '`') {
+			if(yych == '_') goto yy652;
+			goto yy642;
+		} else {
+			if(yych <= 'z') goto yy652;
+			if(yych <= '~') goto yy642;
+			goto yy652;
+		}
+	}
+yy654:
+	++YYCURSOR;
+#line 258 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4287 "src/sc_man_scanner.h"
+yy656:
+	++YYCURSOR;
+#line 257 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4292 "src/sc_man_scanner.h"
+yy658:
+	++YYCURSOR;
+#line 256 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4297 "src/sc_man_scanner.h"
+yy660:
+	++YYCURSOR;
+#line 255 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4302 "src/sc_man_scanner.h"
+yy662:
+	++YYCURSOR;
+#line 254 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4307 "src/sc_man_scanner.h"
+yy664:
+	++YYCURSOR;
+#line 253 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4312 "src/sc_man_scanner.h"
+yy666:
+	yyaccept = 1;
+	YYMARKER = ++YYCURSOR;
+	if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+	yych = *YYCURSOR;
+	if(yych <= 'K') {
+		if(yych <= 'D') {
+			if(yych <= '/') goto yy668;
+			if(yych <= '9') goto yy666;
+		} else {
+			if(yych <= 'E') goto yy669;
+			if(yych <= 'F') goto yy671;
+		}
+	} else {
+		if(yych <= 'e') {
+			if(yych <= 'L') goto yy671;
+			if(yych >= 'e') goto yy669;
+		} else {
+			if(yych <= 'f') goto yy671;
+			if(yych == 'l') goto yy671;
+		}
+	}
+yy668:
+#line 251 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4338 "src/sc_man_scanner.h"
+yy669:
+	yych = *++YYCURSOR;
+	if(yych <= ',') {
+		if(yych == '+') goto yy673;
+	} else {
+		if(yych <= '-') goto yy673;
+		if(yych <= '/') goto yy670;
+		if(yych <= '9') goto yy674;
+	}
+yy670:
+	YYCURSOR = YYMARKER;
+	if(yyaccept <= 1) {
+		if(yyaccept <= 0) {
+			goto yy632;
+		} else {
+			goto yy668;
+		}
+	} else {
+		goto yy642;
+	}
+yy671:
+	++YYCURSOR;
+yy672:
+#line 252 "src/sc_man_scanner.re"
+	{ goto normal_token; }
+#line 4364 "src/sc_man_scanner.h"
+yy673:
+	yych = *++YYCURSOR;
+	if(yych <= '/') goto yy670;
+	if(yych >= ':') goto yy670;
+yy674:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= 'K') {
+		if(yych <= '9') {
+			if(yych <= '/') goto yy672;
+			goto yy674;
+		} else {
+			if(yych == 'F') goto yy671;
+			goto yy672;
+		}
+	} else {
+		if(yych <= 'f') {
+			if(yych <= 'L') goto yy671;
+			if(yych <= 'e') goto yy672;
+			goto yy671;
+		} else {
+			if(yych == 'l') goto yy671;
+			goto yy672;
+		}
+	}
+yy676:
+	++YYCURSOR;
+	if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+	yych = *YYCURSOR;
+	if(yych <= 'E') {
+		if(yych <= '.') {
+			if(yych == '\'') goto yy652;
+			if(yych <= '-') goto yy642;
+			goto yy679;
+		} else {
+			if(yych <= '9') {
+				if(yych <= '/') goto yy642;
+				goto yy676;
+			} else {
+				if(yych <= '@') goto yy642;
+				if(yych <= 'D') goto yy652;
+			}
+		}
+	} else {
+		if(yych <= '`') {
+			if(yych <= 'Z') goto yy652;
+			if(yych == '_') goto yy652;
+			goto yy642;
+		} else {
+			if(yych <= 'e') {
+				if(yych <= 'd') goto yy652;
+			} else {
+				if(yych <= 'z') goto yy652;
+				if(yych <= '~') goto yy642;
+				goto yy652;
+			}
+		}
+	}
+yy678:
+	yyaccept = 2;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if(yych <= ',') {
+		if(yych == '+') goto yy690;
+		goto yy653;
+	} else {
+		if(yych <= '-') goto yy690;
+		if(yych <= '/') goto yy653;
+		if(yych <= '9') goto yy691;
+		goto yy653;
+	}
+yy679:
+	yyaccept = 1;
+	yych = *(YYMARKER = ++YYCURSOR);
+	if(yych == 'E') goto yy682;
+	if(yych == 'e') goto yy682;
+	goto yy681;
+yy680:
+	yyaccept = 1;
+	YYMARKER = ++YYCURSOR;
+	if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+	yych = *YYCURSOR;
+yy681:
+	if(yych <= 'K') {
+		if(yych <= 'D') {
+			if(yych <= '/') goto yy668;
+			if(yych <= '9') goto yy680;
+			goto yy668;
+		} else {
+			if(yych <= 'E') goto yy686;
+			if(yych <= 'F') goto yy671;
+			goto yy668;
+		}
+	} else {
+		if(yych <= 'e') {
+			if(yych <= 'L') goto yy671;
+			if(yych <= 'd') goto yy668;
+			goto yy686;
+		} else {
+			if(yych <= 'f') goto yy671;
+			if(yych == 'l') goto yy671;
+			goto yy668;
+		}
+	}
+yy682:
+	yych = *++YYCURSOR;
+	if(yych <= ',') {
+		if(yych != '+') goto yy670;
+	} else {
+		if(yych <= '-') goto yy683;
+		if(yych <= '/') goto yy670;
+		if(yych <= '9') goto yy684;
+		goto yy670;
+	}
+yy683:
+	yych = *++YYCURSOR;
+	if(yych <= '/') goto yy670;
+	if(yych >= ':') goto yy670;
+yy684:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= 'K') {
+		if(yych <= '9') {
+			if(yych <= '/') goto yy672;
+			goto yy684;
+		} else {
+			if(yych == 'F') goto yy671;
+			goto yy672;
+		}
+	} else {
+		if(yych <= 'f') {
+			if(yych <= 'L') goto yy671;
+			if(yych <= 'e') goto yy672;
+			goto yy671;
+		} else {
+			if(yych == 'l') goto yy671;
+			goto yy672;
+		}
+	}
+yy686:
+	yych = *++YYCURSOR;
+	if(yych <= ',') {
+		if(yych != '+') goto yy670;
+	} else {
+		if(yych <= '-') goto yy687;
+		if(yych <= '/') goto yy670;
+		if(yych <= '9') goto yy688;
+		goto yy670;
+	}
+yy687:
+	yych = *++YYCURSOR;
+	if(yych <= '/') goto yy670;
+	if(yych >= ':') goto yy670;
+yy688:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= 'K') {
+		if(yych <= '9') {
+			if(yych <= '/') goto yy672;
+			goto yy688;
+		} else {
+			if(yych == 'F') goto yy671;
+			goto yy672;
+		}
+	} else {
+		if(yych <= 'f') {
+			if(yych <= 'L') goto yy671;
+			if(yych <= 'e') goto yy672;
+			goto yy671;
+		} else {
+			if(yych == 'l') goto yy671;
+			goto yy672;
+		}
+	}
+yy690:
+	yych = *++YYCURSOR;
+	if(yych <= '/') goto yy670;
+	if(yych <= '9') goto yy694;
+	goto yy670;
+yy691:
+	++YYCURSOR;
+	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+	yych = *YYCURSOR;
+	if(yych <= 'Z') {
+		if(yych <= '@') {
+			if(yych <= '\'') {
+				if(yych <= '&') goto yy672;
+				goto yy652;
+			} else {
+				if(yych <= '/') goto yy672;
+				if(yych <= '9') goto yy691;
+				goto yy672;
+			}
+		} else {
+			if(yych <= 'F') {
+				if(yych <= 'E') goto yy652;
+			} else {
+				if(yych != 'L') goto yy652;
+			}
+		}
+	} else {
+		if(yych <= 'f') {
+			if(yych <= '_') {
+				if(yych <= '^') goto yy672;
+				goto yy652;
+			} else {
+				if(yych <= '`') goto yy672;
+				if(yych <= 'e') goto yy652;
+			}
+		} else {
+			if(yych <= 'l') {
+				if(yych <= 'k') goto yy652;
+			} else {
+				if(yych <= 'z') goto yy652;
+				if(yych <= '~') goto yy672;
+				goto yy652;
+			}
+		}
+	}
+	yych = *++YYCURSOR;
+	if(yych <= 'Z') {
+		if(yych <= '/') {
+			if(yych == '\'') goto yy652;
+			goto yy672;
+		} else {
+			if(yych <= '9') goto yy652;
+			if(yych <= '@') goto yy672;
+			goto yy652;
+		}
+	} else {
+		if(yych <= '`') {
+			if(yych == '_') goto yy652;
+			goto yy672;
+		} else {
+			if(yych <= 'z') goto yy652;
+			if(yych <= '~') goto yy672;
+			goto yy652;
+		}
+	}
+yy694:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych <= 'K') {
+		if(yych <= '9') {
+			if(yych <= '/') goto yy672;
+			goto yy694;
+		} else {
+			if(yych == 'F') goto yy671;
+			goto yy672;
+		}
+	} else {
+		if(yych <= 'f') {
+			if(yych <= 'L') goto yy671;
+			if(yych <= 'e') goto yy672;
+			goto yy671;
+		} else {
+			if(yych == 'l') goto yy671;
+			goto yy672;
+		}
+	}
+yy696:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+yy697:
+	if(yych == 0x0A) goto yy634;
+	if(yych <= ' ') goto yy696;
+	goto yy634;
+yy698:
+	++YYCURSOR;
+	if(YYLIMIT == YYCURSOR) YYFILL(1);
+	yych = *YYCURSOR;
+	if(yych == 0x0A) goto yy702;
+	goto yy698;
+yy700:
+	++YYCURSOR;
+#line 243 "src/sc_man_scanner.re"
+	{ goto comment; }
+#line 4646 "src/sc_man_scanner.h"
+yy702:
+	++YYCURSOR;
+#line 244 "src/sc_man_scanner.re"
+	{ goto newline; }
+#line 4651 "src/sc_man_scanner.h"
+}
+#line 263 "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.
+	TokenType = '-';
+	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 4681 "src/sc_man_scanner.h"
+{
+	YYCTYPE yych;
+	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+	yych = *YYCURSOR;
+	if(yych == 0x0A) goto yy708;
+	if(yych != '*') goto yy710;
+	++YYCURSOR;
+	if((yych = *YYCURSOR) == '/') goto yy711;
+yy707:
+#line 312 "src/sc_man_scanner.re"
+	{ goto comment; }
+#line 4693 "src/sc_man_scanner.h"
+yy708:
+	++YYCURSOR;
+#line 301 "src/sc_man_scanner.re"
+	{
+			if (YYCURSOR >= YYLIMIT)
+			{
+				ScriptPtr = ScriptEndPtr;
+				return_val = false;
+				goto end;
+			}
+			Line++;
+			Crossed = true;
+			goto comment;
+		}
+#line 4708 "src/sc_man_scanner.h"
+yy710:
+	yych = *++YYCURSOR;
+	goto yy707;
+yy711:
+	++YYCURSOR;
+#line 291 "src/sc_man_scanner.re"
+	{
+			if (YYCURSOR >= YYLIMIT)
+			{
+				ScriptPtr = ScriptEndPtr;
+				return_val = false;
+				goto end;
+			}
+			goto std1;
+		}
+#line 4724 "src/sc_man_scanner.h"
+}
+#line 313 "src/sc_man_scanner.re"
+
+
+newline:
+	if (YYCURSOR >= YYLIMIT)
+	{
+		ScriptPtr = ScriptEndPtr;
+		return_val = false;
+		goto end;
+	}
+	Line++;
+	Crossed = true;
+	goto std1;
+
+normal_token:
+	ScriptPtr = (YYCURSOR >= YYLIMIT) ? ScriptEndPtr : cursor;
+	StringLen = int(ScriptPtr - tok);
+	if (tokens && (TokenType == TK_StringConst || TokenType == TK_NameConst))
+	{
+		StringLen -= 2;
+		if (StringLen >= MAX_STRING_SIZE)
+		{
+			BigStringBuffer = FString(tok+1, StringLen);
+		}
+		else
+		{
+			memcpy (StringBuffer, tok+1, StringLen);
+		}
+	}
+	else
+	{
+		if (StringLen >= MAX_STRING_SIZE)
+		{
+			BigStringBuffer = FString(tok, StringLen);
+		}
+		else
+		{
+			memcpy (StringBuffer, tok, StringLen);
+		}
+	}
+	if (StringLen < MAX_STRING_SIZE)
+	{
+		String = StringBuffer;
+		StringBuffer[StringLen] = '\0';
+	}
+	else
+	{
+		String = BigStringBuffer.LockBuffer();
+	}
+	return_val = true;
+	goto end;
+
+string:
+	if (YYLIMIT != ScriptEndPtr)
+	{
+		ScriptPtr = ScriptEndPtr;
+		return_val = false;
+		goto end;
+	}
+	ScriptPtr = cursor;
+	BigStringBuffer = "";
+	for (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 || StringLen == 0 || String[StringLen - 1] != '\\')
+				{
+					ScriptError ("Unterminated string constant");
+				}
+				else
+				{
+					StringLen--;		// overwrite the \ character with \n
+				}
+			}
+			Line++;
+			Crossed = true;
+		}
+		if (StringLen == MAX_STRING_SIZE)
+		{
+			BigStringBuffer.AppendCStrPart(StringBuffer, StringLen);
+			StringLen = 0;
+		}
+		StringBuffer[StringLen++] = *cursor;
+	}
+	if (BigStringBuffer.IsNotEmpty() || StringLen == MAX_STRING_SIZE)
+	{
+		BigStringBuffer.AppendCStrPart(StringBuffer, StringLen);
+		String = BigStringBuffer.LockBuffer();
+		StringLen = int(BigStringBuffer.Len());
+	}
+	else
+	{
+		String = StringBuffer;
+		StringBuffer[StringLen] = '\0';
+	}
+	ScriptPtr = cursor + 1;
+	return_val = true;
+end:
diff -urNp src/svnrevision.h src1/svnrevision.h
--- src/svnrevision.h	Thu Jan  1 00:00:00 1970
+++ src1/svnrevision.h	Tue Jul  2 13:43:29 2013
@@ -0,0 +1,8 @@
+// 0
+//
+// This file was automatically generated by the
+// updaterevision tool. Do not edit by hand.
+
+#define SVN_REVISION_STRING "0"
+#define SVN_REVISION_NUMBER 0
+#define HG_REVISION_HASH_STRING ""
diff -urNp src/xlat/xlat_parser.c src1/xlat/xlat_parser.c
--- src/xlat/xlat_parser.c	Thu Jan  1 00:00:00 1970
+++ src1/xlat/xlat_parser.c	Tue Jul  2 13:43:30 2013
@@ -0,0 +1,1948 @@
+/* Driver template for the LEMON parser generator.
+** The author disclaims copyright to this source code.
+*/
+/* First off, code is included which follows the "include" declaration
+** in the input file. */
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+#ifdef _MSC_VER
+#define CDECL __cdecl
+#else
+#define CDECL
+#endif
+
+/* Next is all token values, in a form suitable for use by makeheaders.
+** This section will be null unless lemon is run with the -m switch.
+*/
+/* 
+** These constants (all generated automatically by the parser generator)
+** specify the various kinds of tokens (terminals) that the parser
+** understands. 
+**
+** Each symbol here is a terminal symbol in the grammar.
+*/
+/* Make sure the INTERFACE macro is defined.
+*/
+#ifndef INTERFACE
+# define INTERFACE 1
+#endif
+/* The next thing included is series of defines which control
+** various aspects of the generated parser.
+**    YYCODETYPE         is the data type used for storing terminal
+**                       and nonterminal numbers.  "unsigned char" is
+**                       used if there are fewer than 250 terminals
+**                       and nonterminals.  "int" is used otherwise.
+**    YYNOCODE           is a number of type YYCODETYPE which corresponds
+**                       to no legal terminal or nonterminal number.  This
+**                       number is used to fill in empty slots of the hash 
+**                       table.
+**    YYFALLBACK         If defined, this indicates that one or more tokens
+**                       have fall-back values which should be used if the
+**                       original value of the token will not parse.
+**    YYACTIONTYPE       is the data type used for storing terminal
+**                       and nonterminal numbers.  "unsigned char" is
+**                       used if there are fewer than 250 rules and
+**                       states combined.  "int" is used otherwise.
+**    XlatParseTOKENTYPE     is the data type used for minor tokens given 
+**                       directly to the parser from the tokenizer.
+**    YYMINORTYPE        is the data type used for all minor tokens.
+**                       This is typically a union of many types, one of
+**                       which is XlatParseTOKENTYPE.  The entry in the union
+**                       for base tokens is called "yy0".
+**    YYSTACKDEPTH       is the maximum depth of the parser's stack.  If
+**                       zero the stack is dynamically sized using realloc()
+**    XlatParseARG_SDECL     A static variable declaration for the %extra_argument
+**    XlatParseARG_PDECL     A parameter declaration for the %extra_argument
+**    XlatParseARG_STORE     Code to store %extra_argument into yypParser
+**    XlatParseARG_FETCH     Code to extract %extra_argument from yypParser
+**    YYNSTATE           the combined number of states.
+**    YYNRULE            the number of rules in the grammar
+**    YYERRORSYMBOL      is the code number of the error symbol.  If not
+**                       defined, then do no error processing.
+*/
+#define YYCODETYPE unsigned char
+#define YYNOCODE 63
+#define YYACTIONTYPE unsigned char
+#define XlatParseTOKENTYPE FParseToken
+typedef union {
+  XlatParseTOKENTYPE yy0;
+  ListFilter yy3;
+  ParseBoomArg yy7;
+  MoreFilters * yy51;
+  int yy68;
+  FBoomArg yy82;
+  SpecialArgs yy87;
+  MoreLines * yy93;
+} YYMINORTYPE;
+#ifndef YYSTACKDEPTH
+#define YYSTACKDEPTH 100
+#endif
+#define XlatParseARG_SDECL  FParseContext *context ;
+#define XlatParseARG_PDECL , FParseContext *context 
+#define XlatParseARG_FETCH  FParseContext *context  = yypParser->context 
+#define XlatParseARG_STORE yypParser->context  = context 
+#define YYNSTATE 156
+#define YYNRULE 81
+#define YY_NO_ACTION      (YYNSTATE+YYNRULE+2)
+#define YY_ACCEPT_ACTION  (YYNSTATE+YYNRULE+1)
+#define YY_ERROR_ACTION   (YYNSTATE+YYNRULE)
+
+/* Next are that tables used to determine what action to take based on the
+** current state and lookahead token.  These tables are used to implement
+** functions that take a state number and lookahead value and return an
+** action integer.  
+**
+** Suppose the action integer is N.  Then the action is determined as
+** follows
+**
+**   0 <= N < YYNSTATE                  Shift N.  That is, push the lookahead
+**                                      token onto the stack and goto state N.
+**
+**   YYNSTATE <= N < YYNSTATE+YYNRULE   Reduce by rule N-YYNSTATE.
+**
+**   N == YYNSTATE+YYNRULE              A syntax error has occurred.
+**
+**   N == YYNSTATE+YYNRULE+1            The parser accepts its input.
+**
+**   N == YYNSTATE+YYNRULE+2            No such action.  Denotes unused
+**                                      slots in the yy_action[] table.
+**
+** The action table is constructed as a single large table named yy_action[].
+** Given state S and lookahead X, the action is computed as
+**
+**      yy_action[ yy_shift_ofst[S] + X ]
+**
+** If the index value yy_shift_ofst[S]+X is out of range or if the value
+** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
+** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
+** and that yy_default[S] should be used instead.  
+**
+** The formula above is for computing the action when the lookahead is
+** a terminal symbol.  If the lookahead is a non-terminal (as occurs after
+** a reduce action) then the yy_reduce_ofst[] array is used in place of
+** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
+** YY_SHIFT_USE_DFLT.
+**
+** The following are the tables generated in this section:
+**
+**  yy_action[]        A single table containing all actions.
+**  yy_lookahead[]     A table containing the lookahead for each entry in
+**                     yy_action.  Used to detect hash collisions.
+**  yy_shift_ofst[]    For each state, the offset into yy_action for
+**                     shifting terminals.
+**  yy_reduce_ofst[]   For each state, the offset into yy_action for
+**                     shifting non-terminals after a reduce.
+**  yy_default[]       Default action for each state.
+*/
+static const YYACTIONTYPE yy_action[] = {
+ /*     0 */    21,   25,   44,   34,   36,   24,   19,  156,  116,   27,
+ /*    10 */    24,   19,   27,  126,  114,   29,  133,  114,   29,   51,
+ /*    20 */    94,   27,  127,   98,  106,   58,  114,   29,   20,  151,
+ /*    30 */    93,  108,   56,  112,  154,  155,  103,   95,   84,   13,
+ /*    40 */   148,  147,  146,  139,  137,  134,  123,  118,   77,    9,
+ /*    50 */    21,   25,   44,   34,   36,   24,   19,   21,   25,   44,
+ /*    60 */    34,   36,   24,   19,   21,   25,   44,   34,   36,   24,
+ /*    70 */    19,  238,    1,   28,   44,   34,   36,   24,   19,  141,
+ /*    80 */     8,  111,  110,    5,   21,   25,   44,   34,   36,   24,
+ /*    90 */    19,   21,   25,   44,   34,   36,   24,   19,   69,  122,
+ /*   100 */    45,   78,   99,   21,   25,   44,   34,   36,   24,   19,
+ /*   110 */    21,   25,   44,   34,   36,   24,   19,  143,   38,   43,
+ /*   120 */    25,   44,   34,   36,   24,   19,   18,   89,  120,   21,
+ /*   130 */    25,   44,   34,   36,   24,   19,   50,    3,  109,  107,
+ /*   140 */    65,   22,   21,   25,   44,   34,   36,   24,   19,   21,
+ /*   150 */    25,   44,   34,   36,   24,   19,   57,  113,   30,  128,
+ /*   160 */   129,  130,  131,  132,   67,   31,  121,   59,   21,   25,
+ /*   170 */    44,   34,   36,   24,   19,   21,   25,   44,   34,   36,
+ /*   180 */    24,   19,   69,   60,   14,  142,   97,   21,   25,   44,
+ /*   190 */    34,   36,   24,   19,   21,   25,   44,   34,   36,   24,
+ /*   200 */    19,   55,   48,    6,   50,    3,  152,  102,  125,   88,
+ /*   210 */    21,   25,   44,   34,   36,   24,   19,   21,   25,   44,
+ /*   220 */    34,   36,   24,   19,    2,   27,   35,  145,   71,   33,
+ /*   230 */   114,   29,   85,   16,  105,   46,   21,   25,   44,   34,
+ /*   240 */    36,   24,   19,   21,   25,   44,   34,   36,   24,   19,
+ /*   250 */    27,   64,   37,   23,   61,  114,   29,   49,   66,  100,
+ /*   260 */    32,    7,   10,   21,   25,   44,   34,   36,   24,   19,
+ /*   270 */    21,   25,   44,   34,   36,   24,   19,  138,   52,   17,
+ /*   280 */    34,   36,   24,   19,  153,   62,   39,  119,   42,   21,
+ /*   290 */    25,   44,   34,   36,   24,   19,   21,   25,   44,   34,
+ /*   300 */    36,   24,   19,   27,  144,   15,   58,   68,  114,   29,
+ /*   310 */    40,   93,  124,   11,   12,   82,   21,   25,   44,   34,
+ /*   320 */    36,   24,   19,   92,    4,   70,  135,   90,   26,   21,
+ /*   330 */    25,   44,   34,   36,   24,   19,   21,   25,   44,   34,
+ /*   340 */    36,   24,   19,   21,   25,   44,   34,   36,   24,   19,
+ /*   350 */    21,   25,   44,   34,   36,   24,   19,   27,  136,   47,
+ /*   360 */    81,   27,  114,   29,   27,  150,  114,   29,   27,  114,
+ /*   370 */    29,   91,   96,  114,   29,   27,  104,   75,   74,  149,
+ /*   380 */   114,   29,   76,  239,   79,   73,   53,  140,   63,   87,
+ /*   390 */   101,  115,   54,   83,   86,   72,  117,   41,   80,
+};
+static const YYCODETYPE yy_lookahead[] = {
+ /*     0 */     2,    3,    4,    5,    6,    7,    8,    0,    1,    5,
+ /*    10 */     7,    8,    5,   19,   10,   11,   15,   10,   11,   18,
+ /*    20 */    13,    5,   28,   16,   20,   49,   10,   11,   21,   31,
+ /*    30 */    54,   55,   49,   35,   36,   37,   20,   30,   49,   32,
+ /*    40 */    41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
+ /*    50 */     2,    3,    4,    5,    6,    7,    8,    2,    3,    4,
+ /*    60 */     5,    6,    7,    8,    2,    3,    4,    5,    6,    7,
+ /*    70 */     8,   39,   40,   18,    4,    5,    6,    7,    8,   31,
+ /*    80 */    57,   33,   14,   21,    2,    3,    4,    5,    6,    7,
+ /*    90 */     8,    2,    3,    4,    5,    6,    7,    8,   49,   52,
+ /*   100 */    18,   49,   53,    2,    3,    4,    5,    6,    7,    8,
+ /*   110 */     2,    3,    4,    5,    6,    7,    8,   31,   29,   18,
+ /*   120 */     3,    4,    5,    6,    7,    8,   18,   51,   52,    2,
+ /*   130 */     3,    4,    5,    6,    7,    8,   58,   59,   60,   12,
+ /*   140 */    49,   19,    2,    3,    4,    5,    6,    7,    8,    2,
+ /*   150 */     3,    4,    5,    6,    7,    8,   49,   15,   18,   23,
+ /*   160 */    24,   25,   26,   27,   49,   18,   22,   49,    2,    3,
+ /*   170 */     4,    5,    6,    7,    8,    2,    3,    4,    5,    6,
+ /*   180 */     7,    8,   49,   49,   18,   12,   53,    2,    3,    4,
+ /*   190 */     5,    6,    7,    8,    2,    3,    4,    5,    6,    7,
+ /*   200 */     8,   49,   18,   11,   58,   59,   60,   22,   56,   49,
+ /*   210 */     2,    3,    4,    5,    6,    7,    8,    2,    3,    4,
+ /*   220 */     5,    6,    7,    8,   17,    5,   18,   31,   49,   18,
+ /*   230 */    10,   11,   49,   18,   14,   18,    2,    3,    4,    5,
+ /*   240 */     6,    7,    8,    2,    3,    4,    5,    6,    7,    8,
+ /*   250 */     5,   49,   18,   11,   49,   10,   11,   18,   49,   14,
+ /*   260 */    19,   11,   49,    2,    3,    4,    5,    6,    7,    8,
+ /*   270 */     2,    3,    4,    5,    6,    7,    8,   12,   49,   18,
+ /*   280 */     5,    6,    7,    8,   31,   49,   18,   17,   61,    2,
+ /*   290 */     3,    4,    5,    6,    7,    8,    2,    3,    4,    5,
+ /*   300 */     6,    7,    8,    5,   12,   18,   49,   49,   10,   11,
+ /*   310 */    19,   54,   55,   19,   18,   49,    2,    3,    4,    5,
+ /*   320 */     6,    7,    8,   14,   18,   49,   12,   49,   11,    2,
+ /*   330 */     3,    4,    5,    6,    7,    8,    2,    3,    4,    5,
+ /*   340 */     6,    7,    8,    2,    3,    4,    5,    6,    7,    8,
+ /*   350 */     2,    3,    4,    5,    6,    7,    8,    5,   31,   18,
+ /*   360 */    49,    5,   10,   11,    5,   31,   10,   11,    5,   10,
+ /*   370 */    11,   49,   20,   10,   11,    5,   20,   49,   49,   20,
+ /*   380 */    10,   11,   49,   62,   49,   49,   49,   49,   49,   49,
+ /*   390 */    20,   49,   49,   49,   49,   49,   49,   34,   49,
+};
+#define YY_SHIFT_USE_DFLT (-7)
+#define YY_SHIFT_MAX 112
+static const short yy_shift_ofst[] = {
+ /*     0 */    -7,    7,  136,  136,  298,  298,  352,  352,  298,   68,
+ /*    10 */    -2,  220,  356,  363,  245,    4,   16,  370,  359,  298,
+ /*    20 */   298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
+ /*    30 */   298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
+ /*    40 */   298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
+ /*    50 */    -6,   68,   48,  127,   55,   62,  341,   82,   89,  101,
+ /*    60 */   108,  334,  327,  314,  294,  287,  268,  261,  234,  215,
+ /*    70 */   208,  192,  185,  173,  166,  147,  140,  241,  348,  348,
+ /*    80 */   348,  348,  348,  348,  348,  348,  117,   70,  275,    1,
+ /*    90 */     3,    3,  317,  306,  309,  291,  296,  292,  270,  265,
+ /*   100 */   250,  239,  242,  217,  211,  196,  184,  207,  144,  142,
+ /*   110 */   122,   86,  253,
+};
+#define YY_REDUCE_USE_DFLT (-25)
+#define YY_REDUCE_MAX 51
+static const short yy_reduce_ofst[] = {
+ /*     0 */    32,   -1,   78,  146,  257,  -24,  133,   49,  152,   76,
+ /*    10 */   227,  229,  209,  202,  179,  134,  115,   91,  349,  347,
+ /*    20 */   346,  345,  344,  343,  342,  340,  339,  338,  337,  336,
+ /*    30 */   335,  333,  329,  328,  322,  311,  278,  276,  266,  258,
+ /*    40 */   236,  213,  205,  183,  160,  118,  107,   52,  -11,  -17,
+ /*    50 */    23,   47,
+};
+static const YYACTIONTYPE yy_default[] = {
+ /*     0 */   157,  237,  213,  213,  237,  237,  187,  187,  237,  180,
+ /*    10 */   237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
+ /*    20 */   237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
+ /*    30 */   237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
+ /*    40 */   237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
+ /*    50 */   237,  237,  237,  237,  237,  223,  207,  203,  237,  204,
+ /*    60 */   200,  237,  237,  237,  237,  199,  189,  198,  190,  197,
+ /*    70 */   191,  237,  237,  237,  237,  194,  195,  237,  208,  196,
+ /*    80 */   201,  192,  227,  184,  210,  205,  172,  174,  173,  237,
+ /*    90 */   168,  169,  237,  225,  237,  237,  188,  237,  237,  237,
+ /*   100 */   237,  206,  237,  202,  193,  237,  209,  237,  237,  237,
+ /*   110 */   183,  237,  237,  212,  167,  170,  166,  171,  165,  179,
+ /*   120 */   181,  224,  182,  164,  226,  215,  221,  222,  216,  217,
+ /*   130 */   218,  219,  220,  178,  163,  177,  228,  162,  186,  161,
+ /*   140 */   175,  229,  176,  231,  185,  230,  160,  159,  158,  211,
+ /*   150 */   232,  233,  214,  234,  235,  236,
+};
+#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0]))
+
+/* The next table maps tokens into fallback tokens.  If a construct
+** like the following:
+** 
+**      %fallback ID X Y Z.
+**
+** appears in the grammer, then ID becomes a fallback token for X, Y,
+** and Z.  Whenever one of the tokens X, Y, or Z is input to the parser
+** but it does not parse, the type of the token is changed to ID and
+** the parse is retried before an error is thrown.
+*/
+#ifdef YYFALLBACK
+static const YYCODETYPE yyFallback[] = {
+};
+#endif /* YYFALLBACK */
+
+/* The following structure represents a single element of the
+** parser's stack.  Information stored includes:
+**
+**   +  The state number for the parser at this level of the stack.
+**
+**   +  The value of the token stored at this level of the stack.
+**      (In other words, the "major" token.)
+**
+**   +  The semantic value stored at this level of the stack.  This is
+**      the information used by the action routines in the grammar.
+**      It is sometimes called the "minor" token.
+*/
+struct yyStackEntry {
+  int stateno;       /* The state-number */
+  int major;         /* The major token value.  This is the code
+                     ** number for the token at this stack level */
+  YYMINORTYPE minor; /* The user-supplied minor token value.  This
+                     ** is the value of the token  */
+};
+typedef struct yyStackEntry yyStackEntry;
+
+/* The state of the parser is completely contained in an instance of
+** the following structure */
+struct yyParser {
+  int yyidx;                    /* Index of top element in stack */
+  int yyerrcnt;                 /* Shifts left before out of the error */
+  XlatParseARG_SDECL                /* A place to hold %extra_argument */
+#if YYSTACKDEPTH<=0
+  int yystksz;                  /* Current side of the stack */
+  yyStackEntry *yystack;        /* The parser's stack */
+#else
+  yyStackEntry yystack[YYSTACKDEPTH];  /* The parser's stack */
+#endif
+};
+typedef struct yyParser yyParser;
+
+#ifndef NDEBUG
+#include <stdio.h>
+static FILE *yyTraceFILE = 0;
+static char *yyTracePrompt = 0;
+#endif /* NDEBUG */
+
+#ifndef NDEBUG
+/* 
+** Turn parser tracing on by giving a stream to which to write the trace
+** and a prompt to preface each trace message.  Tracing is turned off
+** by making either argument NULL 
+**
+** Inputs:
+** <ul>
+** <li> A FILE* to which trace output should be written.
+**      If NULL, then tracing is turned off.
+** <li> A prefix string written at the beginning of every
+**      line of trace output.  If NULL, then tracing is
+**      turned off.
+** </ul>
+**
+** Outputs:
+** None.
+*/
+void XlatParseTrace(FILE *TraceFILE, char *zTracePrompt){
+  yyTraceFILE = TraceFILE;
+  yyTracePrompt = zTracePrompt;
+  if( yyTraceFILE==0 ) yyTracePrompt = 0;
+  else if( yyTracePrompt==0 ) yyTraceFILE = 0;
+}
+#endif /* NDEBUG */
+
+#ifndef NDEBUG
+/* For tracing shifts, the names of all terminals and nonterminals
+** are required.  The following table supplies these names */
+static const char *const yyTokenName[] = { 
+  "$",             "NOP",           "OR",            "XOR",         
+  "AND",           "MINUS",         "PLUS",          "MULTIPLY",    
+  "DIVIDE",        "NEG",           "NUM",           "LPAREN",      
+  "RPAREN",        "DEFINE",        "SYM",           "RBRACE",      
+  "ENUM",          "LBRACE",        "COMMA",         "EQUALS",      
+  "TAG",           "LBRACKET",      "RBRACKET",      "FLAGS",       
+  "ARG2",          "ARG3",          "ARG4",          "ARG5",        
+  "OR_EQUAL",      "COLON",         "MAXLINESPECIAL",  "SEMICOLON",   
+  "SECTOR",        "NOBITMASK",     "BITMASK",       "CLEAR",       
+  "LSHASSIGN",     "RSHASSIGN",     "error",         "main",        
+  "translation_unit",  "external_declaration",  "define_statement",  "enum_statement",
+  "linetype_declaration",  "boom_declaration",  "sector_declaration",  "sector_bitmask",
+  "maxlinespecial_def",  "exp",           "enum_open",     "enum_list",   
+  "single_enum",   "special_args",  "list_val",      "arg_list",    
+  "boom_args",     "boom_op",       "boom_selector",  "boom_line",   
+  "boom_body",     "sector_op",   
+};
+#endif /* NDEBUG */
+
+#ifndef NDEBUG
+/* For tracing reduce actions, the names of all rules are required.
+*/
+static const char *const yyRuleName[] = {
+ /*   0 */ "main ::= translation_unit",
+ /*   1 */ "translation_unit ::=",
+ /*   2 */ "translation_unit ::= translation_unit external_declaration",
+ /*   3 */ "external_declaration ::= define_statement",
+ /*   4 */ "external_declaration ::= enum_statement",
+ /*   5 */ "external_declaration ::= linetype_declaration",
+ /*   6 */ "external_declaration ::= boom_declaration",
+ /*   7 */ "external_declaration ::= sector_declaration",
+ /*   8 */ "external_declaration ::= sector_bitmask",
+ /*   9 */ "external_declaration ::= maxlinespecial_def",
+ /*  10 */ "external_declaration ::= NOP",
+ /*  11 */ "exp ::= NUM",
+ /*  12 */ "exp ::= exp PLUS exp",
+ /*  13 */ "exp ::= exp MINUS exp",
+ /*  14 */ "exp ::= exp MULTIPLY exp",
+ /*  15 */ "exp ::= exp DIVIDE exp",
+ /*  16 */ "exp ::= exp OR exp",
+ /*  17 */ "exp ::= exp AND exp",
+ /*  18 */ "exp ::= exp XOR exp",
+ /*  19 */ "exp ::= MINUS exp",
+ /*  20 */ "exp ::= LPAREN exp RPAREN",
+ /*  21 */ "define_statement ::= DEFINE SYM LPAREN exp RPAREN",
+ /*  22 */ "enum_statement ::= enum_open enum_list RBRACE",
+ /*  23 */ "enum_open ::= ENUM LBRACE",
+ /*  24 */ "enum_list ::=",
+ /*  25 */ "enum_list ::= single_enum",
+ /*  26 */ "enum_list ::= enum_list COMMA single_enum",
+ /*  27 */ "single_enum ::= SYM",
+ /*  28 */ "single_enum ::= SYM EQUALS exp",
+ /*  29 */ "linetype_declaration ::= exp EQUALS exp COMMA exp LPAREN special_args RPAREN",
+ /*  30 */ "linetype_declaration ::= exp EQUALS exp COMMA SYM LPAREN special_args RPAREN",
+ /*  31 */ "special_args ::=",
+ /*  32 */ "special_args ::= TAG",
+ /*  33 */ "special_args ::= TAG COMMA exp",
+ /*  34 */ "special_args ::= TAG COMMA exp COMMA exp",
+ /*  35 */ "special_args ::= TAG COMMA exp COMMA exp COMMA exp",
+ /*  36 */ "special_args ::= TAG COMMA exp COMMA exp COMMA exp COMMA exp",
+ /*  37 */ "special_args ::= TAG COMMA TAG",
+ /*  38 */ "special_args ::= TAG COMMA TAG COMMA exp",
+ /*  39 */ "special_args ::= TAG COMMA TAG COMMA exp COMMA exp",
+ /*  40 */ "special_args ::= TAG COMMA TAG COMMA exp COMMA exp COMMA exp",
+ /*  41 */ "special_args ::= exp",
+ /*  42 */ "special_args ::= exp COMMA exp",
+ /*  43 */ "special_args ::= exp COMMA exp COMMA exp",
+ /*  44 */ "special_args ::= exp COMMA exp COMMA exp COMMA exp",
+ /*  45 */ "special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA exp",
+ /*  46 */ "special_args ::= exp COMMA TAG",
+ /*  47 */ "special_args ::= exp COMMA TAG COMMA exp",
+ /*  48 */ "special_args ::= exp COMMA TAG COMMA exp COMMA exp",
+ /*  49 */ "special_args ::= exp COMMA TAG COMMA exp COMMA exp COMMA exp",
+ /*  50 */ "special_args ::= exp COMMA exp COMMA TAG",
+ /*  51 */ "special_args ::= exp COMMA exp COMMA TAG COMMA exp",
+ /*  52 */ "special_args ::= exp COMMA exp COMMA TAG COMMA exp COMMA exp",
+ /*  53 */ "special_args ::= exp COMMA exp COMMA exp COMMA TAG",
+ /*  54 */ "special_args ::= exp COMMA exp COMMA exp COMMA TAG COMMA exp",
+ /*  55 */ "special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA TAG",
+ /*  56 */ "boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp COMMA exp RPAREN LBRACE boom_body RBRACE",
+ /*  57 */ "boom_body ::=",
+ /*  58 */ "boom_body ::= boom_line boom_body",
+ /*  59 */ "boom_line ::= boom_selector boom_op boom_args",
+ /*  60 */ "boom_selector ::= FLAGS",
+ /*  61 */ "boom_selector ::= ARG2",
+ /*  62 */ "boom_selector ::= ARG3",
+ /*  63 */ "boom_selector ::= ARG4",
+ /*  64 */ "boom_selector ::= ARG5",
+ /*  65 */ "boom_op ::= EQUALS",
+ /*  66 */ "boom_op ::= OR_EQUAL",
+ /*  67 */ "boom_args ::= exp",
+ /*  68 */ "boom_args ::= exp LBRACKET arg_list RBRACKET",
+ /*  69 */ "arg_list ::= list_val",
+ /*  70 */ "arg_list ::= list_val COMMA arg_list",
+ /*  71 */ "list_val ::= exp COLON exp",
+ /*  72 */ "maxlinespecial_def ::= MAXLINESPECIAL EQUALS exp SEMICOLON",
+ /*  73 */ "sector_declaration ::= SECTOR exp EQUALS exp SEMICOLON",
+ /*  74 */ "sector_declaration ::= SECTOR exp EQUALS SYM SEMICOLON",
+ /*  75 */ "sector_declaration ::= SECTOR exp EQUALS exp NOBITMASK SEMICOLON",
+ /*  76 */ "sector_bitmask ::= SECTOR BITMASK exp sector_op exp SEMICOLON",
+ /*  77 */ "sector_bitmask ::= SECTOR BITMASK exp SEMICOLON",
+ /*  78 */ "sector_bitmask ::= SECTOR BITMASK exp CLEAR SEMICOLON",
+ /*  79 */ "sector_op ::= LSHASSIGN",
+ /*  80 */ "sector_op ::= RSHASSIGN",
+};
+#endif /* NDEBUG */
+
+#if YYSTACKDEPTH<=0
+/*
+** Try to increase the size of the parser stack.
+*/
+static void yyGrowStack(yyParser *p){
+  int newSize;
+  yyStackEntry *pNew;
+
+  newSize = p->yystksz*2 + 100;
+  pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
+  if( pNew ){
+    p->yystack = pNew;
+    p->yystksz = newSize;
+#ifndef NDEBUG
+    if( yyTraceFILE ){
+      fprintf(yyTraceFILE,"%sStack grows to %d entries!\n",
+              yyTracePrompt, p->yystksz);
+    }
+#endif
+  }
+}
+#endif
+
+/* 
+** This function allocates a new parser.
+** The only argument is a pointer to a function which works like
+** malloc.
+**
+** Inputs:
+** A pointer to the function used to allocate memory.
+**
+** Outputs:
+** A pointer to a parser.  This pointer is used in subsequent calls
+** to XlatParse and XlatParseFree.
+*/
+void *XlatParseAlloc(void *(CDECL *mallocProc)(size_t)){
+  yyParser *pParser;
+  pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
+  if( pParser ){
+    pParser->yyidx = -1;
+#if YYSTACKDEPTH<=0
+    yyGrowStack(pParser);
+#endif
+  }
+  return pParser;
+}
+
+/* The following function deletes the value associated with a
+** symbol.  The symbol can be either a terminal or nonterminal.
+** "yymajor" is the symbol code, and "yypminor" is a pointer to
+** the value.
+*/
+static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
+  switch( yymajor ){
+    /* Here is inserted the actions which take place when a
+    ** terminal or non-terminal is destroyed.  This can happen
+    ** when the symbol is popped from the stack during a
+    ** reduce or during error processing or when a parser is 
+    ** being destroyed before it is finished parsing.
+    **
+    ** Note: during a reduce, the only symbols destroyed are those
+    ** which appear on the RHS of the rule, but which are not used
+    ** inside the C code.
+    */
+    case 1: /* NOP */
+    case 2: /* OR */
+    case 3: /* XOR */
+    case 4: /* AND */
+    case 5: /* MINUS */
+    case 6: /* PLUS */
+    case 7: /* MULTIPLY */
+    case 8: /* DIVIDE */
+    case 9: /* NEG */
+    case 10: /* NUM */
+    case 11: /* LPAREN */
+    case 12: /* RPAREN */
+    case 13: /* DEFINE */
+    case 14: /* SYM */
+    case 15: /* RBRACE */
+    case 16: /* ENUM */
+    case 17: /* LBRACE */
+    case 18: /* COMMA */
+    case 19: /* EQUALS */
+    case 20: /* TAG */
+    case 21: /* LBRACKET */
+    case 22: /* RBRACKET */
+    case 23: /* FLAGS */
+    case 24: /* ARG2 */
+    case 25: /* ARG3 */
+    case 26: /* ARG4 */
+    case 27: /* ARG5 */
+    case 28: /* OR_EQUAL */
+    case 29: /* COLON */
+    case 30: /* MAXLINESPECIAL */
+    case 31: /* SEMICOLON */
+    case 32: /* SECTOR */
+    case 33: /* NOBITMASK */
+    case 34: /* BITMASK */
+    case 35: /* CLEAR */
+    case 36: /* LSHASSIGN */
+    case 37: /* RSHASSIGN */
+#line 4 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{}
+#line 567 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+      break;
+    default:  break;   /* If no destructor action specified: do nothing */
+  }
+}
+
+/*
+** Pop the parser's stack once.
+**
+** If there is a destructor routine associated with the token which
+** is popped from the stack, then call it.
+**
+** Return the major token number for the symbol popped.
+*/
+static int yy_pop_parser_stack(yyParser *pParser){
+  YYCODETYPE yymajor;
+  yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
+
+  if( pParser->yyidx<0 ) return 0;
+#ifndef NDEBUG
+  if( yyTraceFILE && pParser->yyidx>=0 ){
+    fprintf(yyTraceFILE,"%sPopping %s\n",
+      yyTracePrompt,
+      yyTokenName[yytos->major]);
+  }
+#endif
+  yymajor = yytos->major;
+  yy_destructor( yymajor, &yytos->minor);
+  pParser->yyidx--;
+  return yymajor;
+}
+
+/* 
+** Deallocate and destroy a parser.  Destructors are all called for
+** all stack elements before shutting the parser down.
+**
+** Inputs:
+** <ul>
+** <li>  A pointer to the parser.  This should be a pointer
+**       obtained from XlatParseAlloc.
+** <li>  A pointer to a function used to reclaim memory obtained
+**       from malloc.
+** </ul>
+*/
+void XlatParseFree(
+  void *p,                    /* The parser to be deleted */
+  void (CDECL *freeProc)(void*)     /* Function used to reclaim memory */
+){
+  yyParser *pParser = (yyParser*)p;
+  if( pParser==0 ) return;
+  while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
+#if YYSTACKDEPTH<=0
+  free(pParser->yystack);
+#endif
+  (*freeProc)((void*)pParser);
+}
+
+/*
+** Find the appropriate action for a parser given the terminal
+** look-ahead token iLookAhead.
+**
+** If the look-ahead token is YYNOCODE, then check to see if the action is
+** independent of the look-ahead.  If it is, return the action, otherwise
+** return YY_NO_ACTION.
+*/
+static int yy_find_shift_action(
+  yyParser *pParser,        /* The parser */
+  YYCODETYPE iLookAhead     /* The look-ahead token */
+){
+  int i;
+  int stateno = pParser->yystack[pParser->yyidx].stateno;
+ 
+  if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
+    return yy_default[stateno];
+  }
+  assert( iLookAhead!=YYNOCODE );
+  i += iLookAhead;
+  if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
+    if( iLookAhead>0 ){
+#ifdef YYFALLBACK
+      int iFallback;            /* Fallback token */
+      if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
+             && (iFallback = yyFallback[iLookAhead])!=0 ){
+#ifndef NDEBUG
+        if( yyTraceFILE ){
+          fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
+             yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
+        }
+#endif
+        return yy_find_shift_action(pParser, iFallback);
+      }
+#endif
+#ifdef YYWILDCARD
+      {
+        int j = i - iLookAhead + YYWILDCARD;
+        if( j>=0 && j<YY_SZ_ACTTAB && yy_lookahead[j]==YYWILDCARD ){
+#ifndef NDEBUG
+          if( yyTraceFILE ){
+            fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
+               yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]);
+          }
+#endif /* NDEBUG */
+          return yy_action[j];
+        }
+      }
+#endif /* YYWILDCARD */
+    }
+    return yy_default[stateno];
+  }else{
+    return yy_action[i];
+  }
+}
+
+/*
+** Find the appropriate action for a parser given the non-terminal
+** look-ahead token iLookAhead.
+**
+** If the look-ahead token is YYNOCODE, then check to see if the action is
+** independent of the look-ahead.  If it is, return the action, otherwise
+** return YY_NO_ACTION.
+*/
+static int yy_find_reduce_action(
+  int stateno,              /* Current state number */
+  YYCODETYPE iLookAhead     /* The look-ahead token */
+){
+  int i;
+  if( stateno>YY_REDUCE_MAX ||
+	  (i = yy_reduce_ofst[stateno])==YY_REDUCE_USE_DFLT ){
+	return yy_default[stateno];
+  }
+  assert( i!=YY_REDUCE_USE_DFLT );
+  assert( iLookAhead!=YYNOCODE );
+  i += iLookAhead;
+  if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
+    return yy_default[stateno];
+  }else{
+	return yy_action[i];
+  }
+  return yy_action[i];
+}
+
+/*
+** The following routine is called if the stack overflows.
+*/
+static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){
+   XlatParseARG_FETCH;
+   yypParser->yyidx--;
+#ifndef NDEBUG
+   if( yyTraceFILE ){
+     fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
+   }
+#endif
+   while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
+   /* Here code is inserted which will execute if the parser
+   ** stack every overflows */
+   XlatParseARG_STORE; /* Suppress warning about unused %extra_argument var */
+}
+
+/*
+** Perform a shift action.
+*/
+static void yy_shift(
+  yyParser *yypParser,          /* The parser to be shifted */
+  int yyNewState,               /* The new state to shift in */
+  int yyMajor,                  /* The major token to shift in */
+  YYMINORTYPE *yypMinor         /* Pointer ot the minor token to shift in */
+){
+  yyStackEntry *yytos;
+  yypParser->yyidx++;
+#if YYSTACKDEPTH>0
+  if( yypParser->yyidx>=YYSTACKDEPTH ){
+    yyStackOverflow(yypParser, yypMinor);
+    return;
+  }
+#else
+  if( yypParser->yyidx>=yypParser->yystksz ){
+    yyGrowStack(yypParser);
+    if( yypParser->yyidx>=yypParser->yystksz ){
+      yyStackOverflow(yypParser, yypMinor);
+      return;
+    }
+  }
+#endif
+  yytos = &yypParser->yystack[yypParser->yyidx];
+  yytos->stateno = yyNewState;
+  yytos->major = yyMajor;
+  yytos->minor = *yypMinor;
+#ifndef NDEBUG
+  if( yyTraceFILE && yypParser->yyidx>0 ){
+    int i;
+    fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
+    fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
+    for(i=1; i<=yypParser->yyidx; i++)
+      fprintf(yyTraceFILE," (%d)%s",yypParser->yystack[i].stateno,yyTokenName[yypParser->yystack[i].major]);
+    fprintf(yyTraceFILE,"\n");
+  }
+#endif
+}
+
+/* The following table contains information about every rule that
+** is used during the reduce.
+*/
+static const struct {
+  YYCODETYPE lhs;         /* Symbol on the left-hand side of the rule */
+  unsigned char nrhs;     /* Number of right-hand side symbols in the rule */
+} yyRuleInfo[] = {
+  { 39, 1 },
+  { 40, 0 },
+  { 40, 2 },
+  { 41, 1 },
+  { 41, 1 },
+  { 41, 1 },
+  { 41, 1 },
+  { 41, 1 },
+  { 41, 1 },
+  { 41, 1 },
+  { 41, 1 },
+  { 49, 1 },
+  { 49, 3 },
+  { 49, 3 },
+  { 49, 3 },
+  { 49, 3 },
+  { 49, 3 },
+  { 49, 3 },
+  { 49, 3 },
+  { 49, 2 },
+  { 49, 3 },
+  { 42, 5 },
+  { 43, 3 },
+  { 50, 2 },
+  { 51, 0 },
+  { 51, 1 },
+  { 51, 3 },
+  { 52, 1 },
+  { 52, 3 },
+  { 44, 8 },
+  { 44, 8 },
+  { 53, 0 },
+  { 53, 1 },
+  { 53, 3 },
+  { 53, 5 },
+  { 53, 7 },
+  { 53, 9 },
+  { 53, 3 },
+  { 53, 5 },
+  { 53, 7 },
+  { 53, 9 },
+  { 53, 1 },
+  { 53, 3 },
+  { 53, 5 },
+  { 53, 7 },
+  { 53, 9 },
+  { 53, 3 },
+  { 53, 5 },
+  { 53, 7 },
+  { 53, 9 },
+  { 53, 5 },
+  { 53, 7 },
+  { 53, 9 },
+  { 53, 7 },
+  { 53, 9 },
+  { 53, 9 },
+  { 45, 11 },
+  { 60, 0 },
+  { 60, 2 },
+  { 59, 3 },
+  { 58, 1 },
+  { 58, 1 },
+  { 58, 1 },
+  { 58, 1 },
+  { 58, 1 },
+  { 57, 1 },
+  { 57, 1 },
+  { 56, 1 },
+  { 56, 4 },
+  { 55, 1 },
+  { 55, 3 },
+  { 54, 3 },
+  { 48, 4 },
+  { 46, 5 },
+  { 46, 5 },
+  { 46, 6 },
+  { 47, 6 },
+  { 47, 4 },
+  { 47, 5 },
+  { 61, 1 },
+  { 61, 1 },
+};
+
+static void yy_accept(yyParser*);  /* Forward Declaration */
+
+/*
+** Perform a reduce action and the shift that must immediately
+** follow the reduce.
+*/
+static void yy_reduce(
+  yyParser *yypParser,         /* The parser */
+  int yyruleno                 /* Number of the rule by which to reduce */
+){
+  int yygoto;                     /* The next state */
+  int yyact;                      /* The next action */
+  YYMINORTYPE yygotominor;        /* The LHS of the rule reduced */
+  yyStackEntry *yymsp;            /* The top of the parser's stack */
+  int yysize;                     /* Amount to pop the stack */
+  XlatParseARG_FETCH;
+  yymsp = &yypParser->yystack[yypParser->yyidx];
+#ifndef NDEBUG
+  if( yyTraceFILE && yyruleno>=0 
+        && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){
+    fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
+      yyRuleName[yyruleno]);
+  }
+#endif /* NDEBUG */
+
+  /* Silence complaints from purify about yygotominor being uninitialized
+  ** in some cases when it is copied into the stack after the following
+  ** switch.  yygotominor is uninitialized when a rule reduces that does
+  ** not set the value of its left-hand side nonterminal.  Leaving the
+  ** value of the nonterminal uninitialized is utterly harmless as long
+  ** as the value is never used.  So really the only thing this code
+  ** accomplishes is to quieten purify.  
+  **
+  ** 2007-01-16:  The wireshark project (www.wireshark.org) reports that
+  ** without this code, their parser segfaults.  I'm not sure what there
+  ** parser is doing to make this happen.  This is the second bug report
+  ** from wireshark this week.  Clearly they are stressing Lemon in ways
+  ** that it has not been previously stressed...  (SQLite ticket #2172)
+  */
+  memset(&yygotominor, 0, sizeof(yygotominor));
+
+
+  switch( yyruleno ){
+  /* Beginning here are the reduction cases.  A typical example
+  ** follows:
+  **   case 0:
+  **  #line <lineno> <grammarfile>
+  **     { ... }           // User supplied code
+  **  #line <lineno> <thisfile>
+  **     break;
+  */
+      case 0: /* main ::= translation_unit */
+      case 1: /*translation_unit ::= */
+      case 2: /*translation_unit ::= translation_unit external_declaration */
+      case 3: /*external_declaration ::= define_statement */
+      case 4: /*external_declaration ::= enum_statement */
+      case 5: /*external_declaration ::= linetype_declaration */
+      case 6: /*external_declaration ::= boom_declaration */
+      case 7: /*external_declaration ::= sector_declaration */
+      case 8: /*external_declaration ::= sector_bitmask */
+      case 9: /*external_declaration ::= maxlinespecial_def */
+      case 24: /*enum_list ::= */
+      case 25: /*enum_list ::= single_enum */
+#line 10 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+}
+#line 922 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 10: /* external_declaration ::= NOP */
+#line 22 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+  yy_destructor(1,&yymsp[0].minor);
+}
+#line 929 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 11: /* exp ::= NUM */
+#line 33 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = yymsp[0].minor.yy0.val; }
+#line 934 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 12: /* exp ::= exp PLUS exp */
+#line 34 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = yymsp[-2].minor.yy68 + yymsp[0].minor.yy68;   yy_destructor(6,&yymsp[-1].minor);
+}
+#line 940 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 13: /* exp ::= exp MINUS exp */
+#line 35 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = yymsp[-2].minor.yy68 - yymsp[0].minor.yy68;   yy_destructor(5,&yymsp[-1].minor);
+}
+#line 946 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 14: /* exp ::= exp MULTIPLY exp */
+#line 36 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = yymsp[-2].minor.yy68 * yymsp[0].minor.yy68;   yy_destructor(7,&yymsp[-1].minor);
+}
+#line 952 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 15: /* exp ::= exp DIVIDE exp */
+#line 37 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ if (yymsp[0].minor.yy68 != 0) yygotominor.yy68 = yymsp[-2].minor.yy68 / yymsp[0].minor.yy68; else context->PrintError("Division by Zero");   yy_destructor(8,&yymsp[-1].minor);
+}
+#line 958 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 16: /* exp ::= exp OR exp */
+#line 38 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = yymsp[-2].minor.yy68 | yymsp[0].minor.yy68;   yy_destructor(2,&yymsp[-1].minor);
+}
+#line 964 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 17: /* exp ::= exp AND exp */
+#line 39 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = yymsp[-2].minor.yy68 & yymsp[0].minor.yy68;   yy_destructor(4,&yymsp[-1].minor);
+}
+#line 970 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 18: /* exp ::= exp XOR exp */
+#line 40 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = yymsp[-2].minor.yy68 ^ yymsp[0].minor.yy68;   yy_destructor(3,&yymsp[-1].minor);
+}
+#line 976 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 19: /* exp ::= MINUS exp */
+#line 41 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = -yymsp[0].minor.yy68;   yy_destructor(5,&yymsp[-1].minor);
+}
+#line 982 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 20: /* exp ::= LPAREN exp RPAREN */
+#line 42 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = yymsp[-1].minor.yy68;   yy_destructor(11,&yymsp[-2].minor);
+  yy_destructor(12,&yymsp[0].minor);
+}
+#line 989 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 21: /* define_statement ::= DEFINE SYM LPAREN exp RPAREN */
+#line 52 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	context->AddSym (yymsp[-3].minor.yy0.sym, yymsp[-1].minor.yy68);
+  yy_destructor(13,&yymsp[-4].minor);
+  yy_destructor(11,&yymsp[-2].minor);
+  yy_destructor(12,&yymsp[0].minor);
+}
+#line 999 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 22: /* enum_statement ::= enum_open enum_list RBRACE */
+#line 62 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+  yy_destructor(15,&yymsp[0].minor);
+}
+#line 1006 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 23: /* enum_open ::= ENUM LBRACE */
+#line 65 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	context->EnumVal = 0;
+  yy_destructor(16,&yymsp[-1].minor);
+  yy_destructor(17,&yymsp[0].minor);
+}
+#line 1015 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 26: /* enum_list ::= enum_list COMMA single_enum */
+#line 71 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1022 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 27: /* single_enum ::= SYM */
+#line 74 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	context->AddSym (yymsp[0].minor.yy0.sym, context->EnumVal++);
+}
+#line 1029 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 28: /* single_enum ::= SYM EQUALS exp */
+#line 79 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	context->AddSym (yymsp[-2].minor.yy0.sym, yymsp[0].minor.yy68);
+	context->EnumVal = yymsp[0].minor.yy68+1;
+  yy_destructor(19,&yymsp[-1].minor);
+}
+#line 1038 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 29: /* linetype_declaration ::= exp EQUALS exp COMMA exp LPAREN special_args RPAREN */
+#line 91 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	SimpleLineTranslations.SetVal(yymsp[-7].minor.yy68, 
+		FLineTrans(yymsp[-3].minor.yy68&0xffff, yymsp[-5].minor.yy68+yymsp[-1].minor.yy87.addflags, yymsp[-1].minor.yy87.args[0], yymsp[-1].minor.yy87.args[1], yymsp[-1].minor.yy87.args[2], yymsp[-1].minor.yy87.args[3], yymsp[-1].minor.yy87.args[4]));
+  yy_destructor(19,&yymsp[-6].minor);
+  yy_destructor(18,&yymsp[-4].minor);
+  yy_destructor(11,&yymsp[-2].minor);
+  yy_destructor(12,&yymsp[0].minor);
+}
+#line 1050 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 30: /* linetype_declaration ::= exp EQUALS exp COMMA SYM LPAREN special_args RPAREN */
+#line 97 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	Printf ("%s, line %d: %s is undefined\n", context->SourceFile, context->SourceLine, yymsp[-3].minor.yy0.sym);
+  yy_destructor(19,&yymsp[-6].minor);
+  yy_destructor(18,&yymsp[-4].minor);
+  yy_destructor(11,&yymsp[-2].minor);
+  yy_destructor(12,&yymsp[0].minor);
+}
+#line 1061 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 31: /* special_args ::= */
+#line 104 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = 0;
+	yygotominor.yy87.args[0] = 0;
+	yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = 0;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+}
+#line 1073 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 32: /* special_args ::= TAG */
+#line 113 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT1;
+	yygotominor.yy87.args[0] = 0;
+	yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = 0;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(20,&yymsp[0].minor);
+}
+#line 1086 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 33: /* special_args ::= TAG COMMA exp */
+#line 122 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT1;
+	yygotominor.yy87.args[0] = 0;
+	yygotominor.yy87.args[1] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[2] = 0;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(20,&yymsp[-2].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1100 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 34: /* special_args ::= TAG COMMA exp COMMA exp */
+#line 131 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT1;
+	yygotominor.yy87.args[0] = 0;
+	yygotominor.yy87.args[1] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[2] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(20,&yymsp[-4].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1115 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 35: /* special_args ::= TAG COMMA exp COMMA exp COMMA exp */
+#line 140 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT1;
+	yygotominor.yy87.args[0] = 0;
+	yygotominor.yy87.args[1] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[2] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[3] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(20,&yymsp[-6].minor);
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1131 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 36: /* special_args ::= TAG COMMA exp COMMA exp COMMA exp COMMA exp */
+#line 149 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT1;
+	yygotominor.yy87.args[0] = 0;
+	yygotominor.yy87.args[1] = yymsp[-6].minor.yy68;
+	yygotominor.yy87.args[2] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[3] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[4] = yymsp[0].minor.yy68;
+  yy_destructor(20,&yymsp[-8].minor);
+  yy_destructor(18,&yymsp[-7].minor);
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1148 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 37: /* special_args ::= TAG COMMA TAG */
+#line 158 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HAS2TAGS;
+	yygotominor.yy87.args[0] = yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = 0;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(20,&yymsp[-2].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+  yy_destructor(20,&yymsp[0].minor);
+}
+#line 1162 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 38: /* special_args ::= TAG COMMA TAG COMMA exp */
+#line 166 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HAS2TAGS;
+	yygotominor.yy87.args[0] = yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(20,&yymsp[-4].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(20,&yymsp[-2].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1177 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 39: /* special_args ::= TAG COMMA TAG COMMA exp COMMA exp */
+#line 174 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HAS2TAGS;
+	yygotominor.yy87.args[0] = yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[3] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(20,&yymsp[-6].minor);
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(20,&yymsp[-4].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1193 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 40: /* special_args ::= TAG COMMA TAG COMMA exp COMMA exp COMMA exp */
+#line 182 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HAS2TAGS;
+	yygotominor.yy87.args[0] = yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[3] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[4] = yymsp[0].minor.yy68;
+  yy_destructor(20,&yymsp[-8].minor);
+  yy_destructor(18,&yymsp[-7].minor);
+  yy_destructor(20,&yymsp[-6].minor);
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1210 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 41: /* special_args ::= exp */
+#line 190 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = 0;
+	yygotominor.yy87.args[0] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = 0;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+}
+#line 1222 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 42: /* special_args ::= exp COMMA exp */
+#line 199 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = 0;
+	yygotominor.yy87.args[0] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[1] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[2] = 0;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1235 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 43: /* special_args ::= exp COMMA exp COMMA exp */
+#line 208 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = 0;
+	yygotominor.yy87.args[0] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[1] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[2] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1249 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 44: /* special_args ::= exp COMMA exp COMMA exp COMMA exp */
+#line 217 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = 0;
+	yygotominor.yy87.args[0] = yymsp[-6].minor.yy68;
+	yygotominor.yy87.args[1] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[2] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[3] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1264 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 45: /* special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA exp */
+#line 226 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = 0;
+	yygotominor.yy87.args[0] = yymsp[-8].minor.yy68;
+	yygotominor.yy87.args[1] = yymsp[-6].minor.yy68;
+	yygotominor.yy87.args[2] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[3] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[4] = yymsp[0].minor.yy68;
+  yy_destructor(18,&yymsp[-7].minor);
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1280 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 46: /* special_args ::= exp COMMA TAG */
+#line 235 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT2;
+	yygotominor.yy87.args[0] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = 0;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(18,&yymsp[-1].minor);
+  yy_destructor(20,&yymsp[0].minor);
+}
+#line 1294 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 47: /* special_args ::= exp COMMA TAG COMMA exp */
+#line 244 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT2;
+	yygotominor.yy87.args[0] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(20,&yymsp[-2].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1309 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 48: /* special_args ::= exp COMMA TAG COMMA exp COMMA exp */
+#line 253 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT2;
+	yygotominor.yy87.args[0] = yymsp[-6].minor.yy68;
+	yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[3] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(20,&yymsp[-4].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1325 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 49: /* special_args ::= exp COMMA TAG COMMA exp COMMA exp COMMA exp */
+#line 262 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT2;
+	yygotominor.yy87.args[0] = yymsp[-8].minor.yy68;
+	yygotominor.yy87.args[1] = 0;
+	yygotominor.yy87.args[2] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[3] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[4] = yymsp[0].minor.yy68;
+  yy_destructor(18,&yymsp[-7].minor);
+  yy_destructor(20,&yymsp[-6].minor);
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1342 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 50: /* special_args ::= exp COMMA exp COMMA TAG */
+#line 271 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT3;
+	yygotominor.yy87.args[0] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[1] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[2] = 0;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+  yy_destructor(20,&yymsp[0].minor);
+}
+#line 1357 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 51: /* special_args ::= exp COMMA exp COMMA TAG COMMA exp */
+#line 280 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT3;
+	yygotominor.yy87.args[0] = yymsp[-6].minor.yy68;
+	yygotominor.yy87.args[1] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[2] = 0;
+	yygotominor.yy87.args[3] = yymsp[0].minor.yy68;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(20,&yymsp[-2].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1373 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 52: /* special_args ::= exp COMMA exp COMMA TAG COMMA exp COMMA exp */
+#line 289 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT3;
+	yygotominor.yy87.args[0] = yymsp[-8].minor.yy68;
+	yygotominor.yy87.args[1] = yymsp[-6].minor.yy68;
+	yygotominor.yy87.args[2] = 0;
+	yygotominor.yy87.args[3] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[4] = yymsp[0].minor.yy68;
+  yy_destructor(18,&yymsp[-7].minor);
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(20,&yymsp[-4].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1390 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 53: /* special_args ::= exp COMMA exp COMMA exp COMMA TAG */
+#line 298 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT4;
+	yygotominor.yy87.args[0] = yymsp[-6].minor.yy68;
+	yygotominor.yy87.args[1] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[2] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+  yy_destructor(20,&yymsp[0].minor);
+}
+#line 1406 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 54: /* special_args ::= exp COMMA exp COMMA exp COMMA TAG COMMA exp */
+#line 307 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT4;
+	yygotominor.yy87.args[0] = yymsp[-8].minor.yy68;
+	yygotominor.yy87.args[1] = yymsp[-6].minor.yy68;
+	yygotominor.yy87.args[2] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[3] = 0;
+	yygotominor.yy87.args[4] = yymsp[0].minor.yy68;
+  yy_destructor(18,&yymsp[-7].minor);
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(20,&yymsp[-2].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1423 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 55: /* special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA TAG */
+#line 316 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy87.addflags = LINETRANS_HASTAGAT5;
+	yygotominor.yy87.args[0] = yymsp[-8].minor.yy68;
+	yygotominor.yy87.args[1] = yymsp[-6].minor.yy68;
+	yygotominor.yy87.args[2] = yymsp[-4].minor.yy68;
+	yygotominor.yy87.args[3] = yymsp[-2].minor.yy68;
+	yygotominor.yy87.args[4] = 0;
+  yy_destructor(18,&yymsp[-7].minor);
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(18,&yymsp[-3].minor);
+  yy_destructor(18,&yymsp[-1].minor);
+  yy_destructor(20,&yymsp[0].minor);
+}
+#line 1440 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 56: /* boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp COMMA exp RPAREN LBRACE boom_body RBRACE */
+#line 341 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	int i;
+	MoreLines *probe;
+
+	if (NumBoomish == MAX_BOOMISH)
+	{
+		MoreLines *probe = yymsp[-1].minor.yy93;
+
+		while (probe != NULL)
+		{
+			MoreLines *next = probe->next;
+			delete probe;
+			probe = next;
+		}
+		Printf ("%s, line %d: Too many BOOM translators\n", context->SourceFile, context->SourceLine);
+	}
+	else
+	{
+		Boomish[NumBoomish].FirstLinetype = yymsp[-6].minor.yy68;
+		Boomish[NumBoomish].LastLinetype = yymsp[-4].minor.yy68;
+		Boomish[NumBoomish].NewSpecial = yymsp[-9].minor.yy68;
+		
+		for (i = 0, probe = yymsp[-1].minor.yy93; probe != NULL; i++)
+		{
+			MoreLines *next = probe->next;
+			Boomish[NumBoomish].Args.Push(probe->arg);
+			delete probe;
+			probe = next;
+		}
+		NumBoomish++;
+	}
+  yy_destructor(21,&yymsp[-10].minor);
+  yy_destructor(22,&yymsp[-8].minor);
+  yy_destructor(11,&yymsp[-7].minor);
+  yy_destructor(18,&yymsp[-5].minor);
+  yy_destructor(12,&yymsp[-3].minor);
+  yy_destructor(17,&yymsp[-2].minor);
+  yy_destructor(15,&yymsp[0].minor);
+}
+#line 1483 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 57: /* boom_body ::= */
+#line 375 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy93 = NULL;
+}
+#line 1490 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 58: /* boom_body ::= boom_line boom_body */
+#line 379 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy93 = new MoreLines;
+	yygotominor.yy93->next = yymsp[0].minor.yy93;
+	yygotominor.yy93->arg = yymsp[-1].minor.yy82;
+}
+#line 1499 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 59: /* boom_line ::= boom_selector boom_op boom_args */
+#line 386 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy82.bOrExisting = (yymsp[-1].minor.yy68 == OR_EQUAL);
+	yygotominor.yy82.bUseConstant = (yymsp[0].minor.yy7.filters == NULL);
+	yygotominor.yy82.ArgNum = yymsp[-2].minor.yy68;
+	yygotominor.yy82.ConstantValue = yymsp[0].minor.yy7.constant;
+	yygotominor.yy82.AndValue = yymsp[0].minor.yy7.mask;
+
+	if (yymsp[0].minor.yy7.filters != NULL)
+	{
+		int i;
+		MoreFilters *probe;
+
+		for (i = 0, probe = yymsp[0].minor.yy7.filters; probe != NULL; i++)
+		{
+			MoreFilters *next = probe->next;
+			if (i < 15)
+			{
+				yygotominor.yy82.ResultFilter[i] = probe->filter.filter;
+				yygotominor.yy82.ResultValue[i] = probe->filter.value;
+			}
+			else if (i == 15)
+			{
+				context->PrintError ("Lists can only have 15 elements");
+			}
+			delete probe;
+			probe = next;
+		}
+		yygotominor.yy82.ListSize = i > 15 ? 15 : i;
+	}
+}
+#line 1533 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 60: /* boom_selector ::= FLAGS */
+#line 417 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = 4;   yy_destructor(23,&yymsp[0].minor);
+}
+#line 1539 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 61: /* boom_selector ::= ARG2 */
+#line 418 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = 0;   yy_destructor(24,&yymsp[0].minor);
+}
+#line 1545 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 62: /* boom_selector ::= ARG3 */
+#line 419 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = 1;   yy_destructor(25,&yymsp[0].minor);
+}
+#line 1551 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 63: /* boom_selector ::= ARG4 */
+#line 420 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = 2;   yy_destructor(26,&yymsp[0].minor);
+}
+#line 1557 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 64: /* boom_selector ::= ARG5 */
+#line 421 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = 3;   yy_destructor(27,&yymsp[0].minor);
+}
+#line 1563 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 65: /* boom_op ::= EQUALS */
+#line 423 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = '=';   yy_destructor(19,&yymsp[0].minor);
+}
+#line 1569 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 66: /* boom_op ::= OR_EQUAL */
+#line 424 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = OR_EQUAL;   yy_destructor(28,&yymsp[0].minor);
+}
+#line 1575 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 67: /* boom_args ::= exp */
+#line 427 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy7.constant = yymsp[0].minor.yy68;
+	yygotominor.yy7.filters = NULL;
+}
+#line 1583 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 68: /* boom_args ::= exp LBRACKET arg_list RBRACKET */
+#line 432 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy7.mask = yymsp[-3].minor.yy68;
+	yygotominor.yy7.filters = yymsp[-1].minor.yy51;
+  yy_destructor(21,&yymsp[-2].minor);
+  yy_destructor(22,&yymsp[0].minor);
+}
+#line 1593 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 69: /* arg_list ::= list_val */
+#line 438 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy51 = new MoreFilters;
+	yygotominor.yy51->next = NULL;
+	yygotominor.yy51->filter = yymsp[0].minor.yy3;
+}
+#line 1602 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 70: /* arg_list ::= list_val COMMA arg_list */
+#line 444 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy51 = new MoreFilters;
+	yygotominor.yy51->next = yymsp[0].minor.yy51;
+	yygotominor.yy51->filter = yymsp[-2].minor.yy3;
+  yy_destructor(18,&yymsp[-1].minor);
+}
+#line 1612 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 71: /* list_val ::= exp COLON exp */
+#line 451 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	yygotominor.yy3.filter = yymsp[-2].minor.yy68;
+	yygotominor.yy3.value = yymsp[0].minor.yy68;
+  yy_destructor(29,&yymsp[-1].minor);
+}
+#line 1621 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 72: /* maxlinespecial_def ::= MAXLINESPECIAL EQUALS exp SEMICOLON */
+#line 463 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	// Just kill all specials higher than the max.
+	// If the translator wants to redefine some later, just let it.s
+	SimpleLineTranslations.Resize(yymsp[-1].minor.yy68+1);
+  yy_destructor(30,&yymsp[-3].minor);
+  yy_destructor(19,&yymsp[-2].minor);
+  yy_destructor(31,&yymsp[0].minor);
+}
+#line 1633 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 73: /* sector_declaration ::= SECTOR exp EQUALS exp SEMICOLON */
+#line 478 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	FSectorTrans tr(yymsp[-1].minor.yy68, true);
+	SectorTranslations.SetVal(yymsp[-3].minor.yy68, tr);
+  yy_destructor(32,&yymsp[-4].minor);
+  yy_destructor(19,&yymsp[-2].minor);
+  yy_destructor(31,&yymsp[0].minor);
+}
+#line 1644 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 74: /* sector_declaration ::= SECTOR exp EQUALS SYM SEMICOLON */
+#line 484 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	Printf("Unknown constant '%s'\n", yymsp[-1].minor.yy0.sym);
+  yy_destructor(32,&yymsp[-4].minor);
+  yy_destructor(19,&yymsp[-2].minor);
+  yy_destructor(31,&yymsp[0].minor);
+}
+#line 1654 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 75: /* sector_declaration ::= SECTOR exp EQUALS exp NOBITMASK SEMICOLON */
+#line 489 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	FSectorTrans tr(yymsp[-2].minor.yy68, false);
+	SectorTranslations.SetVal(yymsp[-4].minor.yy68, tr);
+  yy_destructor(32,&yymsp[-5].minor);
+  yy_destructor(19,&yymsp[-3].minor);
+  yy_destructor(33,&yymsp[-1].minor);
+  yy_destructor(31,&yymsp[0].minor);
+}
+#line 1666 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 76: /* sector_bitmask ::= SECTOR BITMASK exp sector_op exp SEMICOLON */
+#line 495 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	FSectorMask sm = { yymsp[-3].minor.yy68, yymsp[-2].minor.yy68, yymsp[-1].minor.yy68};
+	SectorMasks.Push(sm);
+  yy_destructor(32,&yymsp[-5].minor);
+  yy_destructor(34,&yymsp[-4].minor);
+  yy_destructor(31,&yymsp[0].minor);
+}
+#line 1677 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 77: /* sector_bitmask ::= SECTOR BITMASK exp SEMICOLON */
+#line 501 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	FSectorMask sm = { yymsp[-1].minor.yy68, 0, 0};
+	SectorMasks.Push(sm);
+  yy_destructor(32,&yymsp[-3].minor);
+  yy_destructor(34,&yymsp[-2].minor);
+  yy_destructor(31,&yymsp[0].minor);
+}
+#line 1688 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 78: /* sector_bitmask ::= SECTOR BITMASK exp CLEAR SEMICOLON */
+#line 507 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{
+	FSectorMask sm = { yymsp[-2].minor.yy68, 0, 1};
+	SectorMasks.Push(sm);
+  yy_destructor(32,&yymsp[-4].minor);
+  yy_destructor(34,&yymsp[-3].minor);
+  yy_destructor(35,&yymsp[-1].minor);
+  yy_destructor(31,&yymsp[0].minor);
+}
+#line 1700 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 79: /* sector_op ::= LSHASSIGN */
+#line 512 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = 1;   yy_destructor(36,&yymsp[0].minor);
+}
+#line 1706 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+      case 80: /* sector_op ::= RSHASSIGN */
+#line 513 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+{ yygotominor.yy68 = -1;   yy_destructor(37,&yymsp[0].minor);
+}
+#line 1712 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+        break;
+  };
+  yygoto = yyRuleInfo[yyruleno].lhs;
+  yysize = yyRuleInfo[yyruleno].nrhs;
+  yypParser->yyidx -= yysize;
+  yyact = yy_find_reduce_action(yymsp[-yysize].stateno,yygoto);
+  if( yyact < YYNSTATE ){
+#ifdef NDEBUG
+    /* If we are not debugging and the reduce action popped at least
+    ** one element off the stack, then we can push the new element back
+    ** onto the stack here, and skip the stack overflow test in yy_shift().
+    ** That gives a significant speed improvement. */
+    if( yysize ){
+      yypParser->yyidx++;
+      yymsp -= yysize-1;
+      yymsp->stateno = yyact;
+      yymsp->major = yygoto;
+      yymsp->minor = yygotominor;
+    }else
+#endif
+    {
+      yy_shift(yypParser,yyact,yygoto,&yygotominor);
+    }
+  }else{
+    assert( yyact == YYNSTATE + YYNRULE + 1 );
+    yy_accept(yypParser);
+  }
+}
+
+/*
+** The following code executes when the parse fails
+*/
+static void yy_parse_failed(
+  yyParser *yypParser           /* The parser */
+){
+  XlatParseARG_FETCH;
+#ifndef NDEBUG
+  if( yyTraceFILE ){
+    fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
+  }
+#endif
+  while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
+  /* Here code is inserted which will be executed whenever the
+  ** parser fails */
+  XlatParseARG_STORE; /* Suppress warning about unused %extra_argument variable */
+}
+
+/*
+** The following code executes when a syntax error first occurs.
+*/
+static void yy_syntax_error(
+  yyParser *yypParser,           /* The parser */
+  int yymajor,                   /* The major type of the error token */
+  YYMINORTYPE yyminor            /* The minor type of the error token */
+){
+  XlatParseARG_FETCH;
+#define TOKEN (yyminor.yy0)
+#line 7 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.y"
+ context->PrintError("syntax error");
+#line 1772 "f:\\F.l\\BuildZandro\\Torr_Samaho-zandronum-00065f166c52\\Torr_Samaho-zandronum-00065f166c52\\src\\xlat\\xlat_parser.c"
+  XlatParseARG_STORE; /* Suppress warning about unused %extra_argument variable */
+}
+
+/*
+** The following is executed when the parser accepts
+*/
+static void yy_accept(
+  yyParser *yypParser           /* The parser */
+){
+  XlatParseARG_FETCH;
+#ifndef NDEBUG
+  if( yyTraceFILE ){
+    fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
+  }
+#endif
+  while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
+  /* Here code is inserted which will be executed whenever the
+  ** parser accepts */
+  XlatParseARG_STORE; /* Suppress warning about unused %extra_argument variable */
+}
+
+/* The main parser program.
+** The first argument is a pointer to a structure obtained from
+** "XlatParseAlloc" which describes the current state of the parser.
+** The second argument is the major token number.  The third is
+** the minor token.  The fourth optional argument is whatever the
+** user wants (and specified in the grammar) and is available for
+** use by the action routines.
+**
+** Inputs:
+** <ul>
+** <li> A pointer to the parser (an opaque structure.)
+** <li> The major token number.
+** <li> The minor token number.
+** <li> An option argument of a grammar-specified type.
+** </ul>
+**
+** Outputs:
+** None.
+*/
+void XlatParse(
+  void *yyp,                   /* The parser */
+  int yymajor,                 /* The major token code number */
+  XlatParseTOKENTYPE yyminor       /* The value for the token */
+  XlatParseARG_PDECL               /* Optional %extra_argument parameter */
+){
+  YYMINORTYPE yyminorunion;
+  int yyact;            /* The parser action. */
+  int yyendofinput;     /* True if we are at the end of input */
+#ifdef YYERRORSYMBOL
+  int yyerrorhit = 0;   /* True if yymajor has invoked an error */
+#endif
+  yyParser *yypParser;  /* The parser */
+
+  /* (re)initialize the parser, if necessary */
+  yypParser = (yyParser*)yyp;
+  if( yypParser->yyidx<0 ){
+#if YYSTACKDEPTH<=0
+    if( yypParser->yystksz <=0 ){
+      memset(&yyminorunion, 0, sizeof(yyminorunion));
+      yyStackOverflow(yypParser, &yyminorunion);
+      return;
+    }
+#endif
+    yypParser->yyidx = 0;
+    yypParser->yyerrcnt = -1;
+    yypParser->yystack[0].stateno = 0;
+    yypParser->yystack[0].major = 0;
+  }
+  yyminorunion.yy0 = yyminor;
+  yyendofinput = (yymajor==0);
+  XlatParseARG_STORE;
+
+#ifndef NDEBUG
+  if( yyTraceFILE ){
+    fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
+  }
+#endif
+
+  do{
+    yyact = yy_find_shift_action(yypParser,yymajor);
+    if( yyact<YYNSTATE ){
+      assert( !yyendofinput );  /* Impossible to shift the $ token */
+      yy_shift(yypParser,yyact,yymajor,&yyminorunion);
+      yypParser->yyerrcnt--;
+      yymajor = YYNOCODE;
+    }else if( yyact < YYNSTATE + YYNRULE ){
+      yy_reduce(yypParser,yyact-YYNSTATE);
+    }else{
+#ifdef YYERRORSYMBOL
+      int yymx;
+#endif
+      assert( yyact == YY_ERROR_ACTION );
+#ifndef NDEBUG
+      if( yyTraceFILE ){
+        fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
+      }
+#endif
+#ifdef YYERRORSYMBOL
+      /* A syntax error has occurred.
+      ** The response to an error depends upon whether or not the
+      ** grammar defines an error token "ERROR".  
+      **
+      ** This is what we do if the grammar does define ERROR:
+      **
+      **  * Call the %syntax_error function.
+      **
+      **  * Begin popping the stack until we enter a state where
+      **    it is legal to shift the error symbol, then shift
+      **    the error symbol.
+      **
+      **  * Set the error count to three.
+      **
+      **  * Begin accepting and shifting new tokens.  No new error
+      **    processing will occur until three tokens have been
+      **    shifted successfully.
+      **
+      */
+      if( yypParser->yyerrcnt<0 ){
+        yy_syntax_error(yypParser,yymajor,yyminorunion);
+      }
+      yymx = yypParser->yystack[yypParser->yyidx].major;
+      if( yymx==YYERRORSYMBOL || yyerrorhit ){
+#ifndef NDEBUG
+        if( yyTraceFILE ){
+          fprintf(yyTraceFILE,"%sDiscard input token %s\n",
+             yyTracePrompt,yyTokenName[yymajor]);
+        }
+#endif
+        yy_destructor(yymajor,&yyminorunion);
+        yymajor = YYNOCODE;
+      }else{
+         while(
+          yypParser->yyidx >= 0 &&
+          yymx != YYERRORSYMBOL &&
+          (yyact = yy_find_reduce_action(
+                        yypParser->yystack[yypParser->yyidx].stateno,
+                        YYERRORSYMBOL)) >= YYNSTATE
+        ){
+          yy_pop_parser_stack(yypParser);
+        }
+        if( yypParser->yyidx < 0 || yymajor==0 ){
+          yy_destructor(yymajor,&yyminorunion);
+          yy_parse_failed(yypParser);
+          yymajor = YYNOCODE;
+        }else if( yymx!=YYERRORSYMBOL ){
+          YYMINORTYPE u2;
+          u2.YYERRSYMDT = 0;
+          yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
+        }
+      }
+      yypParser->yyerrcnt = 3;
+      yyerrorhit = 1;
+#else  /* YYERRORSYMBOL is not defined */
+      /* This is what we do if the grammar does not define ERROR:
+      **
+      **  * Report an error message, and throw away the input token.
+      **
+      **  * If the input token is $, then fail the parse.
+      **
+      ** As before, subsequent error messages are suppressed until
+      ** three input tokens have been successfully shifted.
+      */
+      if( yypParser->yyerrcnt<=0 ){
+        yy_syntax_error(yypParser,yymajor,yyminorunion);
+      }
+      yypParser->yyerrcnt = 3;
+      yy_destructor(yymajor,&yyminorunion);
+      if( yyendofinput ){
+        yy_parse_failed(yypParser);
+      }
+      yymajor = YYNOCODE;
+#endif
+    }
+  }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
+  return;
+}
diff -urNp src/xlat/xlat_parser.h src1/xlat/xlat_parser.h
--- src/xlat/xlat_parser.h	Thu Jan  1 00:00:00 1970
+++ src1/xlat/xlat_parser.h	Tue Jul  2 13:43:30 2013
@@ -0,0 +1,37 @@
+#define XLAT_NOP                             1
+#define XLAT_OR                              2
+#define XLAT_XOR                             3
+#define XLAT_AND                             4
+#define XLAT_MINUS                           5
+#define XLAT_PLUS                            6
+#define XLAT_MULTIPLY                        7
+#define XLAT_DIVIDE                          8
+#define XLAT_NEG                             9
+#define XLAT_NUM                            10
+#define XLAT_LPAREN                         11
+#define XLAT_RPAREN                         12
+#define XLAT_DEFINE                         13
+#define XLAT_SYM                            14
+#define XLAT_RBRACE                         15
+#define XLAT_ENUM                           16
+#define XLAT_LBRACE                         17
+#define XLAT_COMMA                          18
+#define XLAT_EQUALS                         19
+#define XLAT_TAG                            20
+#define XLAT_LBRACKET                       21
+#define XLAT_RBRACKET                       22
+#define XLAT_FLAGS                          23
+#define XLAT_ARG2                           24
+#define XLAT_ARG3                           25
+#define XLAT_ARG4                           26
+#define XLAT_ARG5                           27
+#define XLAT_OR_EQUAL                       28
+#define XLAT_COLON                          29
+#define XLAT_MAXLINESPECIAL                 30
+#define XLAT_SEMICOLON                      31
+#define XLAT_SECTOR                         32
+#define XLAT_NOBITMASK                      33
+#define XLAT_BITMASK                        34
+#define XLAT_CLEAR                          35
+#define XLAT_LSHASSIGN                      36
+#define XLAT_RSHASSIGN                      37
diff -urNp src/xlat/xlat_parser.out src1/xlat/xlat_parser.out
--- src/xlat/xlat_parser.out	Thu Jan  1 00:00:00 1970
+++ src1/xlat/xlat_parser.out	Tue Jul  2 13:43:30 2013
@@ -0,0 +1,2313 @@
+State 0:
+          main ::= * translation_unit
+      (1) translation_unit ::= *
+          translation_unit ::= * translation_unit external_declaration
+
+                          main accept
+              translation_unit shift  1
+                     {default} reduce 1
+
+State 1:
+      (0) main ::= translation_unit *
+          translation_unit ::= translation_unit * external_declaration
+          external_declaration ::= * define_statement
+          external_declaration ::= * enum_statement
+          external_declaration ::= * linetype_declaration
+          external_declaration ::= * boom_declaration
+          external_declaration ::= * sector_declaration
+          external_declaration ::= * sector_bitmask
+          external_declaration ::= * maxlinespecial_def
+          external_declaration ::= * NOP
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          define_statement ::= * DEFINE SYM LPAREN exp RPAREN
+          enum_statement ::= * enum_open enum_list RBRACE
+          enum_open ::= * ENUM LBRACE
+          linetype_declaration ::= * exp EQUALS exp COMMA exp LPAREN special_args RPAREN
+          linetype_declaration ::= * exp EQUALS exp COMMA SYM LPAREN special_args RPAREN
+          boom_declaration ::= * LBRACKET exp RBRACKET LPAREN exp COMMA exp RPAREN LBRACE boom_body RBRACE
+          maxlinespecial_def ::= * MAXLINESPECIAL EQUALS exp SEMICOLON
+          sector_declaration ::= * SECTOR exp EQUALS exp SEMICOLON
+          sector_declaration ::= * SECTOR exp EQUALS SYM SEMICOLON
+          sector_declaration ::= * SECTOR exp EQUALS exp NOBITMASK SEMICOLON
+          sector_bitmask ::= * SECTOR BITMASK exp sector_op exp SEMICOLON
+          sector_bitmask ::= * SECTOR BITMASK exp SEMICOLON
+          sector_bitmask ::= * SECTOR BITMASK exp CLEAR SEMICOLON
+
+                             $ reduce 0
+                           NOP shift  116
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                        DEFINE shift  94
+                          ENUM shift  98
+                      LBRACKET shift  20
+                MAXLINESPECIAL shift  95
+                        SECTOR shift  13
+          external_declaration shift  148
+              define_statement shift  147
+                enum_statement shift  146
+          linetype_declaration shift  139
+              boom_declaration shift  137
+            sector_declaration shift  134
+                sector_bitmask shift  123
+            maxlinespecial_def shift  118
+                           exp shift  77
+                     enum_open shift  9
+
+State 2:
+          boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp COMMA exp RPAREN LBRACE * boom_body RBRACE
+     (57) boom_body ::= *
+          boom_body ::= * boom_line boom_body
+          boom_line ::= * boom_selector boom_op boom_args
+          boom_selector ::= * FLAGS
+          boom_selector ::= * ARG2
+          boom_selector ::= * ARG3
+          boom_selector ::= * ARG4
+          boom_selector ::= * ARG5
+
+                         FLAGS shift  128
+                          ARG2 shift  129
+                          ARG3 shift  130
+                          ARG4 shift  131
+                          ARG5 shift  132
+                 boom_selector shift  50
+                     boom_line shift  3
+                     boom_body shift  109
+                     {default} reduce 57
+
+State 3:
+     (57) boom_body ::= *
+          boom_body ::= * boom_line boom_body
+          boom_body ::= boom_line * boom_body
+          boom_line ::= * boom_selector boom_op boom_args
+          boom_selector ::= * FLAGS
+          boom_selector ::= * ARG2
+          boom_selector ::= * ARG3
+          boom_selector ::= * ARG4
+          boom_selector ::= * ARG5
+
+                         FLAGS shift  128
+                          ARG2 shift  129
+                          ARG3 shift  130
+                          ARG4 shift  131
+                          ARG5 shift  132
+                 boom_selector shift  50
+                     boom_line shift  3
+                     boom_body shift  152
+                     {default} reduce 57
+
+State 4:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          arg_list ::= * list_val
+          arg_list ::= * list_val COMMA arg_list
+          arg_list ::= list_val COMMA * arg_list
+          list_val ::= * exp COLON exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  58
+                      list_val shift  93
+                      arg_list shift  124
+
+State 5:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          boom_args ::= exp LBRACKET * arg_list RBRACKET
+          arg_list ::= * list_val
+          arg_list ::= * list_val COMMA arg_list
+          list_val ::= * exp COLON exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  58
+                      list_val shift  93
+                      arg_list shift  108
+
+State 6:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          linetype_declaration ::= exp EQUALS exp COMMA exp LPAREN * special_args RPAREN
+     (31) special_args ::= *
+          special_args ::= * TAG
+          special_args ::= * TAG COMMA exp
+          special_args ::= * TAG COMMA exp COMMA exp
+          special_args ::= * TAG COMMA exp COMMA exp COMMA exp
+          special_args ::= * TAG COMMA exp COMMA exp COMMA exp COMMA exp
+          special_args ::= * TAG COMMA TAG
+          special_args ::= * TAG COMMA TAG COMMA exp
+          special_args ::= * TAG COMMA TAG COMMA exp COMMA exp
+          special_args ::= * TAG COMMA TAG COMMA exp COMMA exp COMMA exp
+          special_args ::= * exp
+          special_args ::= * exp COMMA exp
+          special_args ::= * exp COMMA exp COMMA exp
+          special_args ::= * exp COMMA exp COMMA exp COMMA exp
+          special_args ::= * exp COMMA exp COMMA exp COMMA exp COMMA exp
+          special_args ::= * exp COMMA TAG
+          special_args ::= * exp COMMA TAG COMMA exp
+          special_args ::= * exp COMMA TAG COMMA exp COMMA exp
+          special_args ::= * exp COMMA TAG COMMA exp COMMA exp COMMA exp
+          special_args ::= * exp COMMA exp COMMA TAG
+          special_args ::= * exp COMMA exp COMMA TAG COMMA exp
+          special_args ::= * exp COMMA exp COMMA TAG COMMA exp COMMA exp
+          special_args ::= * exp COMMA exp COMMA exp COMMA TAG
+          special_args ::= * exp COMMA exp COMMA exp COMMA TAG COMMA exp
+          special_args ::= * exp COMMA exp COMMA exp COMMA exp COMMA TAG
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           TAG shift  96
+                           exp shift  69
+                  special_args shift  97
+                     {default} reduce 31
+
+State 7:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          linetype_declaration ::= exp EQUALS exp COMMA SYM LPAREN * special_args RPAREN
+     (31) special_args ::= *
+          special_args ::= * TAG
+          special_args ::= * TAG COMMA exp
+          special_args ::= * TAG COMMA exp COMMA exp
+          special_args ::= * TAG COMMA exp COMMA exp COMMA exp
+          special_args ::= * TAG COMMA exp COMMA exp COMMA exp COMMA exp
+          special_args ::= * TAG COMMA TAG
+          special_args ::= * TAG COMMA TAG COMMA exp
+          special_args ::= * TAG COMMA TAG COMMA exp COMMA exp
+          special_args ::= * TAG COMMA TAG COMMA exp COMMA exp COMMA exp
+          special_args ::= * exp
+          special_args ::= * exp COMMA exp
+          special_args ::= * exp COMMA exp COMMA exp
+          special_args ::= * exp COMMA exp COMMA exp COMMA exp
+          special_args ::= * exp COMMA exp COMMA exp COMMA exp COMMA exp
+          special_args ::= * exp COMMA TAG
+          special_args ::= * exp COMMA TAG COMMA exp
+          special_args ::= * exp COMMA TAG COMMA exp COMMA exp
+          special_args ::= * exp COMMA TAG COMMA exp COMMA exp COMMA exp
+          special_args ::= * exp COMMA exp COMMA TAG
+          special_args ::= * exp COMMA exp COMMA TAG COMMA exp
+          special_args ::= * exp COMMA exp COMMA TAG COMMA exp COMMA exp
+          special_args ::= * exp COMMA exp COMMA exp COMMA TAG
+          special_args ::= * exp COMMA exp COMMA exp COMMA TAG COMMA exp
+          special_args ::= * exp COMMA exp COMMA exp COMMA exp COMMA TAG
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           TAG shift  96
+                           exp shift  69
+                  special_args shift  99
+                     {default} reduce 31
+
+State 8:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          boom_line ::= boom_selector boom_op * boom_args
+          boom_args ::= * exp
+          boom_args ::= * exp LBRACKET arg_list RBRACKET
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  55
+                     boom_args shift  125
+
+State 9:
+          enum_statement ::= enum_open * enum_list RBRACE
+     (24) enum_list ::= *
+          enum_list ::= * single_enum
+          enum_list ::= * enum_list COMMA single_enum
+          single_enum ::= * SYM
+          single_enum ::= * SYM EQUALS exp
+
+                           SYM shift  110
+                     enum_list shift  89
+                   single_enum shift  120
+                     {default} reduce 24
+
+State 10:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          sector_bitmask ::= SECTOR BITMASK exp * sector_op exp SEMICOLON
+          sector_bitmask ::= SECTOR BITMASK exp * SEMICOLON
+          sector_bitmask ::= SECTOR BITMASK exp * CLEAR SEMICOLON
+          sector_op ::= * LSHASSIGN
+          sector_op ::= * RSHASSIGN
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     SEMICOLON shift  151
+                         CLEAR shift  112
+                     LSHASSIGN shift  154
+                     RSHASSIGN shift  155
+                     sector_op shift  42
+
+State 11:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          sector_declaration ::= SECTOR exp EQUALS * exp SEMICOLON
+          sector_declaration ::= SECTOR exp EQUALS * SYM SEMICOLON
+          sector_declaration ::= SECTOR exp EQUALS * exp NOBITMASK SEMICOLON
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           SYM shift  105
+                           exp shift  52
+
+State 12:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= TAG COMMA * exp
+          special_args ::= TAG COMMA * exp COMMA exp
+          special_args ::= TAG COMMA * exp COMMA exp COMMA exp
+          special_args ::= TAG COMMA * exp COMMA exp COMMA exp COMMA exp
+          special_args ::= TAG COMMA * TAG
+          special_args ::= TAG COMMA * TAG COMMA exp
+          special_args ::= TAG COMMA * TAG COMMA exp COMMA exp
+          special_args ::= TAG COMMA * TAG COMMA exp COMMA exp COMMA exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           TAG shift  104
+                           exp shift  66
+
+State 13:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          sector_declaration ::= SECTOR * exp EQUALS exp SEMICOLON
+          sector_declaration ::= SECTOR * exp EQUALS SYM SEMICOLON
+          sector_declaration ::= SECTOR * exp EQUALS exp NOBITMASK SEMICOLON
+          sector_bitmask ::= SECTOR * BITMASK exp sector_op exp SEMICOLON
+          sector_bitmask ::= SECTOR * BITMASK exp SEMICOLON
+          sector_bitmask ::= SECTOR * BITMASK exp CLEAR SEMICOLON
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                       BITMASK shift  41
+                           exp shift  64
+
+State 14:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          linetype_declaration ::= exp EQUALS exp COMMA * exp LPAREN special_args RPAREN
+          linetype_declaration ::= exp EQUALS exp COMMA * SYM LPAREN special_args RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           SYM shift  100
+                           exp shift  71
+
+State 15:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= exp COMMA exp COMMA exp COMMA * exp
+          special_args ::= exp COMMA exp COMMA exp COMMA * exp COMMA exp
+          special_args ::= exp COMMA exp COMMA exp COMMA * TAG
+          special_args ::= exp COMMA exp COMMA exp COMMA * TAG COMMA exp
+          special_args ::= exp COMMA exp COMMA exp COMMA * exp COMMA TAG
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           TAG shift  106
+                           exp shift  60
+
+State 16:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= exp COMMA * exp
+          special_args ::= exp COMMA * exp COMMA exp
+          special_args ::= exp COMMA * exp COMMA exp COMMA exp
+          special_args ::= exp COMMA * exp COMMA exp COMMA exp COMMA exp
+          special_args ::= exp COMMA * TAG
+          special_args ::= exp COMMA * TAG COMMA exp
+          special_args ::= exp COMMA * TAG COMMA exp COMMA exp
+          special_args ::= exp COMMA * TAG COMMA exp COMMA exp COMMA exp
+          special_args ::= exp COMMA * exp COMMA TAG
+          special_args ::= exp COMMA * exp COMMA TAG COMMA exp
+          special_args ::= exp COMMA * exp COMMA TAG COMMA exp COMMA exp
+          special_args ::= exp COMMA * exp COMMA exp COMMA TAG
+          special_args ::= exp COMMA * exp COMMA exp COMMA TAG COMMA exp
+          special_args ::= exp COMMA * exp COMMA exp COMMA exp COMMA TAG
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           TAG shift  103
+                           exp shift  67
+
+State 17:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= exp COMMA exp COMMA * exp
+          special_args ::= exp COMMA exp COMMA * exp COMMA exp
+          special_args ::= exp COMMA exp COMMA * exp COMMA exp COMMA exp
+          special_args ::= exp COMMA exp COMMA * TAG
+          special_args ::= exp COMMA exp COMMA * TAG COMMA exp
+          special_args ::= exp COMMA exp COMMA * TAG COMMA exp COMMA exp
+          special_args ::= exp COMMA exp COMMA * exp COMMA TAG
+          special_args ::= exp COMMA exp COMMA * exp COMMA TAG COMMA exp
+          special_args ::= exp COMMA exp COMMA * exp COMMA exp COMMA TAG
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           TAG shift  101
+                           exp shift  65
+
+State 18:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA * exp
+          special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA * TAG
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           TAG shift  149
+                           exp shift  80
+
+State 19:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= exp DIVIDE * exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  117
+
+State 20:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          boom_declaration ::= LBRACKET * exp RBRACKET LPAREN exp COMMA exp RPAREN LBRACE boom_body RBRACE
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  72
+
+State 21:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= exp OR * exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  86
+
+State 22:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          single_enum ::= SYM EQUALS * exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  83
+
+State 23:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          boom_declaration ::= LBRACKET exp RBRACKET LPAREN * exp COMMA exp RPAREN LBRACE boom_body RBRACE
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  54
+
+State 24:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= exp MULTIPLY * exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  115
+
+State 25:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= exp XOR * exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  87
+
+State 26:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          define_statement ::= DEFINE SYM LPAREN * exp RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  63
+
+State 27:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= MINUS * exp
+          exp ::= * LPAREN exp RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  140
+
+State 28:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp COMMA * exp RPAREN LBRACE boom_body RBRACE
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  53
+
+State 29:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          exp ::= LPAREN * exp RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  73
+
+State 30:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= TAG COMMA TAG COMMA exp COMMA exp COMMA * exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  79
+
+State 31:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= TAG COMMA TAG COMMA exp COMMA * exp
+          special_args ::= TAG COMMA TAG COMMA exp COMMA * exp COMMA exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  76
+
+State 32:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          linetype_declaration ::= exp EQUALS * exp COMMA exp LPAREN special_args RPAREN
+          linetype_declaration ::= exp EQUALS * exp COMMA SYM LPAREN special_args RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  74
+
+State 33:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= TAG COMMA TAG COMMA * exp
+          special_args ::= TAG COMMA TAG COMMA * exp COMMA exp
+          special_args ::= TAG COMMA TAG COMMA * exp COMMA exp COMMA exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  75
+
+State 34:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= exp MINUS * exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  91
+
+State 35:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= TAG COMMA exp COMMA exp COMMA exp COMMA * exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  81
+
+State 36:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= exp PLUS * exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  90
+
+State 37:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= TAG COMMA exp COMMA exp COMMA * exp
+          special_args ::= TAG COMMA exp COMMA exp COMMA * exp COMMA exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  70
+
+State 38:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          list_val ::= exp COLON * exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  82
+
+State 39:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= TAG COMMA exp COMMA * exp
+          special_args ::= TAG COMMA exp COMMA * exp COMMA exp
+          special_args ::= TAG COMMA exp COMMA * exp COMMA exp COMMA exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  68
+
+State 40:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          maxlinespecial_def ::= MAXLINESPECIAL EQUALS * exp SEMICOLON
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  62
+
+State 41:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          sector_bitmask ::= SECTOR BITMASK * exp sector_op exp SEMICOLON
+          sector_bitmask ::= SECTOR BITMASK * exp SEMICOLON
+          sector_bitmask ::= SECTOR BITMASK * exp CLEAR SEMICOLON
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  10
+
+State 42:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          sector_bitmask ::= SECTOR BITMASK exp sector_op * exp SEMICOLON
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  61
+
+State 43:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= exp COMMA TAG COMMA exp COMMA exp COMMA * exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  85
+
+State 44:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= exp AND * exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  88
+
+State 45:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= exp COMMA TAG COMMA exp COMMA * exp
+          special_args ::= exp COMMA TAG COMMA exp COMMA * exp COMMA exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  59
+
+State 46:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= exp COMMA TAG COMMA * exp
+          special_args ::= exp COMMA TAG COMMA * exp COMMA exp
+          special_args ::= exp COMMA TAG COMMA * exp COMMA exp COMMA exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  57
+
+State 47:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= exp COMMA exp COMMA TAG COMMA exp COMMA * exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  78
+
+State 48:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= exp COMMA exp COMMA exp COMMA TAG COMMA * exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  84
+
+State 49:
+          exp ::= * NUM
+          exp ::= * exp PLUS exp
+          exp ::= * exp MINUS exp
+          exp ::= * exp MULTIPLY exp
+          exp ::= * exp DIVIDE exp
+          exp ::= * exp OR exp
+          exp ::= * exp AND exp
+          exp ::= * exp XOR exp
+          exp ::= * MINUS exp
+          exp ::= * LPAREN exp RPAREN
+          special_args ::= exp COMMA exp COMMA TAG COMMA * exp
+          special_args ::= exp COMMA exp COMMA TAG COMMA * exp COMMA exp
+
+                         MINUS shift  27
+                           NUM shift  114
+                        LPAREN shift  29
+                           exp shift  56
+
+State 50:
+          boom_line ::= boom_selector * boom_op boom_args
+          boom_op ::= * EQUALS
+          boom_op ::= * OR_EQUAL
+
+                        EQUALS shift  126
+                      OR_EQUAL shift  127
+                       boom_op shift  8
+
+State 51:
+          enum_list ::= enum_list COMMA * single_enum
+          single_enum ::= * SYM
+          single_enum ::= * SYM EQUALS exp
+
+                           SYM shift  110
+                   single_enum shift  122
+
+State 52:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          sector_declaration ::= SECTOR exp EQUALS exp * SEMICOLON
+          sector_declaration ::= SECTOR exp EQUALS exp * NOBITMASK SEMICOLON
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     SEMICOLON shift  141
+                     NOBITMASK shift  111
+
+State 53:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp COMMA exp * RPAREN LBRACE boom_body RBRACE
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                        RPAREN shift  107
+
+State 54:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp * COMMA exp RPAREN LBRACE boom_body RBRACE
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  28
+
+State 55:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (67) boom_args ::= exp *
+          boom_args ::= exp * LBRACKET arg_list RBRACKET
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                      LBRACKET shift  5
+                     {default} reduce 67
+
+State 56:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (51) special_args ::= exp COMMA exp COMMA TAG COMMA exp *
+          special_args ::= exp COMMA exp COMMA TAG COMMA exp * COMMA exp
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  47
+                     {default} reduce 51
+
+State 57:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (47) special_args ::= exp COMMA TAG COMMA exp *
+          special_args ::= exp COMMA TAG COMMA exp * COMMA exp
+          special_args ::= exp COMMA TAG COMMA exp * COMMA exp COMMA exp
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  45
+                     {default} reduce 47
+
+State 58:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          list_val ::= exp * COLON exp
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COLON shift  38
+
+State 59:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (48) special_args ::= exp COMMA TAG COMMA exp COMMA exp *
+          special_args ::= exp COMMA TAG COMMA exp COMMA exp * COMMA exp
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  43
+                     {default} reduce 48
+
+State 60:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (44) special_args ::= exp COMMA exp COMMA exp COMMA exp *
+          special_args ::= exp COMMA exp COMMA exp COMMA exp * COMMA exp
+          special_args ::= exp COMMA exp COMMA exp COMMA exp * COMMA TAG
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  18
+                     {default} reduce 44
+
+State 61:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          sector_bitmask ::= SECTOR BITMASK exp sector_op exp * SEMICOLON
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     SEMICOLON shift  150
+
+State 62:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          maxlinespecial_def ::= MAXLINESPECIAL EQUALS exp * SEMICOLON
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     SEMICOLON shift  136
+
+State 63:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          define_statement ::= DEFINE SYM LPAREN exp * RPAREN
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                        RPAREN shift  135
+
+State 64:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          sector_declaration ::= SECTOR exp * EQUALS exp SEMICOLON
+          sector_declaration ::= SECTOR exp * EQUALS SYM SEMICOLON
+          sector_declaration ::= SECTOR exp * EQUALS exp NOBITMASK SEMICOLON
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                        EQUALS shift  11
+
+State 65:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (43) special_args ::= exp COMMA exp COMMA exp *
+          special_args ::= exp COMMA exp COMMA exp * COMMA exp
+          special_args ::= exp COMMA exp COMMA exp * COMMA exp COMMA exp
+          special_args ::= exp COMMA exp COMMA exp * COMMA TAG
+          special_args ::= exp COMMA exp COMMA exp * COMMA TAG COMMA exp
+          special_args ::= exp COMMA exp COMMA exp * COMMA exp COMMA TAG
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  15
+                     {default} reduce 43
+
+State 66:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (33) special_args ::= TAG COMMA exp *
+          special_args ::= TAG COMMA exp * COMMA exp
+          special_args ::= TAG COMMA exp * COMMA exp COMMA exp
+          special_args ::= TAG COMMA exp * COMMA exp COMMA exp COMMA exp
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  39
+                     {default} reduce 33
+
+State 67:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (42) special_args ::= exp COMMA exp *
+          special_args ::= exp COMMA exp * COMMA exp
+          special_args ::= exp COMMA exp * COMMA exp COMMA exp
+          special_args ::= exp COMMA exp * COMMA exp COMMA exp COMMA exp
+          special_args ::= exp COMMA exp * COMMA TAG
+          special_args ::= exp COMMA exp * COMMA TAG COMMA exp
+          special_args ::= exp COMMA exp * COMMA TAG COMMA exp COMMA exp
+          special_args ::= exp COMMA exp * COMMA exp COMMA TAG
+          special_args ::= exp COMMA exp * COMMA exp COMMA TAG COMMA exp
+          special_args ::= exp COMMA exp * COMMA exp COMMA exp COMMA TAG
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  17
+                     {default} reduce 42
+
+State 68:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (34) special_args ::= TAG COMMA exp COMMA exp *
+          special_args ::= TAG COMMA exp COMMA exp * COMMA exp
+          special_args ::= TAG COMMA exp COMMA exp * COMMA exp COMMA exp
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  37
+                     {default} reduce 34
+
+State 69:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (41) special_args ::= exp *
+          special_args ::= exp * COMMA exp
+          special_args ::= exp * COMMA exp COMMA exp
+          special_args ::= exp * COMMA exp COMMA exp COMMA exp
+          special_args ::= exp * COMMA exp COMMA exp COMMA exp COMMA exp
+          special_args ::= exp * COMMA TAG
+          special_args ::= exp * COMMA TAG COMMA exp
+          special_args ::= exp * COMMA TAG COMMA exp COMMA exp
+          special_args ::= exp * COMMA TAG COMMA exp COMMA exp COMMA exp
+          special_args ::= exp * COMMA exp COMMA TAG
+          special_args ::= exp * COMMA exp COMMA TAG COMMA exp
+          special_args ::= exp * COMMA exp COMMA TAG COMMA exp COMMA exp
+          special_args ::= exp * COMMA exp COMMA exp COMMA TAG
+          special_args ::= exp * COMMA exp COMMA exp COMMA TAG COMMA exp
+          special_args ::= exp * COMMA exp COMMA exp COMMA exp COMMA TAG
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  16
+                     {default} reduce 41
+
+State 70:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (35) special_args ::= TAG COMMA exp COMMA exp COMMA exp *
+          special_args ::= TAG COMMA exp COMMA exp COMMA exp * COMMA exp
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  35
+                     {default} reduce 35
+
+State 71:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          linetype_declaration ::= exp EQUALS exp COMMA exp * LPAREN special_args RPAREN
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                        LPAREN shift  6
+
+State 72:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          boom_declaration ::= LBRACKET exp * RBRACKET LPAREN exp COMMA exp RPAREN LBRACE boom_body RBRACE
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                      RBRACKET shift  102
+
+State 73:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          exp ::= LPAREN exp * RPAREN
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                        RPAREN shift  142
+
+State 74:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          linetype_declaration ::= exp EQUALS exp * COMMA exp LPAREN special_args RPAREN
+          linetype_declaration ::= exp EQUALS exp * COMMA SYM LPAREN special_args RPAREN
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  14
+
+State 75:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (38) special_args ::= TAG COMMA TAG COMMA exp *
+          special_args ::= TAG COMMA TAG COMMA exp * COMMA exp
+          special_args ::= TAG COMMA TAG COMMA exp * COMMA exp COMMA exp
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  31
+                     {default} reduce 38
+
+State 76:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (39) special_args ::= TAG COMMA TAG COMMA exp COMMA exp *
+          special_args ::= TAG COMMA TAG COMMA exp COMMA exp * COMMA exp
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                         COMMA shift  30
+                     {default} reduce 39
+
+State 77:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+          linetype_declaration ::= exp * EQUALS exp COMMA exp LPAREN special_args RPAREN
+          linetype_declaration ::= exp * EQUALS exp COMMA SYM LPAREN special_args RPAREN
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                        EQUALS shift  32
+
+State 78:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (52) special_args ::= exp COMMA exp COMMA TAG COMMA exp COMMA exp *
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 52
+
+State 79:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (40) special_args ::= TAG COMMA TAG COMMA exp COMMA exp COMMA exp *
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 40
+
+State 80:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (45) special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA exp *
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 45
+
+State 81:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (36) special_args ::= TAG COMMA exp COMMA exp COMMA exp COMMA exp *
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 36
+
+State 82:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (71) list_val ::= exp COLON exp *
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 71
+
+State 83:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (28) single_enum ::= SYM EQUALS exp *
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 28
+
+State 84:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (54) special_args ::= exp COMMA exp COMMA exp COMMA TAG COMMA exp *
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 54
+
+State 85:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (49) special_args ::= exp COMMA TAG COMMA exp COMMA exp COMMA exp *
+
+                            OR shift  21
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 49
+
+State 86:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+     (16) exp ::= exp OR exp *
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+
+                           XOR shift  25
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 16
+
+State 87:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (18) exp ::= exp XOR exp *
+
+                           AND shift  44
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 18
+
+State 88:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+     (17) exp ::= exp AND exp *
+          exp ::= exp * XOR exp
+
+                         MINUS shift  34
+                          PLUS shift  36
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 17
+
+State 89:
+          enum_statement ::= enum_open enum_list * RBRACE
+          enum_list ::= enum_list * COMMA single_enum
+
+                        RBRACE shift  133
+                         COMMA shift  51
+
+State 90:
+          exp ::= exp * PLUS exp
+     (12) exp ::= exp PLUS exp *
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 12
+
+State 91:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+     (13) exp ::= exp MINUS exp *
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+
+                      MULTIPLY shift  24
+                        DIVIDE shift  19
+                     {default} reduce 13
+
+State 92:
+          define_statement ::= DEFINE SYM * LPAREN exp RPAREN
+
+                        LPAREN shift  26
+
+State 93:
+     (69) arg_list ::= list_val *
+          arg_list ::= list_val * COMMA arg_list
+
+                         COMMA shift  4
+                     {default} reduce 69
+
+State 94:
+          define_statement ::= DEFINE * SYM LPAREN exp RPAREN
+
+                           SYM shift  92
+
+State 95:
+          maxlinespecial_def ::= MAXLINESPECIAL * EQUALS exp SEMICOLON
+
+                        EQUALS shift  40
+
+State 96:
+     (32) special_args ::= TAG *
+          special_args ::= TAG * COMMA exp
+          special_args ::= TAG * COMMA exp COMMA exp
+          special_args ::= TAG * COMMA exp COMMA exp COMMA exp
+          special_args ::= TAG * COMMA exp COMMA exp COMMA exp COMMA exp
+          special_args ::= TAG * COMMA TAG
+          special_args ::= TAG * COMMA TAG COMMA exp
+          special_args ::= TAG * COMMA TAG COMMA exp COMMA exp
+          special_args ::= TAG * COMMA TAG COMMA exp COMMA exp COMMA exp
+
+                         COMMA shift  12
+                     {default} reduce 32
+
+State 97:
+          linetype_declaration ::= exp EQUALS exp COMMA exp LPAREN special_args * RPAREN
+
+                        RPAREN shift  144
+
+State 98:
+          enum_open ::= ENUM * LBRACE
+
+                        LBRACE shift  119
+
+State 99:
+          linetype_declaration ::= exp EQUALS exp COMMA SYM LPAREN special_args * RPAREN
+
+                        RPAREN shift  138
+
+State 100:
+          linetype_declaration ::= exp EQUALS exp COMMA SYM * LPAREN special_args RPAREN
+
+                        LPAREN shift  7
+
+State 101:
+     (50) special_args ::= exp COMMA exp COMMA TAG *
+          special_args ::= exp COMMA exp COMMA TAG * COMMA exp
+          special_args ::= exp COMMA exp COMMA TAG * COMMA exp COMMA exp
+
+                         COMMA shift  49
+                     {default} reduce 50
+
+State 102:
+          boom_declaration ::= LBRACKET exp RBRACKET * LPAREN exp COMMA exp RPAREN LBRACE boom_body RBRACE
+
+                        LPAREN shift  23
+
+State 103:
+     (46) special_args ::= exp COMMA TAG *
+          special_args ::= exp COMMA TAG * COMMA exp
+          special_args ::= exp COMMA TAG * COMMA exp COMMA exp
+          special_args ::= exp COMMA TAG * COMMA exp COMMA exp COMMA exp
+
+                         COMMA shift  46
+                     {default} reduce 46
+
+State 104:
+     (37) special_args ::= TAG COMMA TAG *
+          special_args ::= TAG COMMA TAG * COMMA exp
+          special_args ::= TAG COMMA TAG * COMMA exp COMMA exp
+          special_args ::= TAG COMMA TAG * COMMA exp COMMA exp COMMA exp
+
+                         COMMA shift  33
+                     {default} reduce 37
+
+State 105:
+          sector_declaration ::= SECTOR exp EQUALS SYM * SEMICOLON
+
+                     SEMICOLON shift  145
+
+State 106:
+     (53) special_args ::= exp COMMA exp COMMA exp COMMA TAG *
+          special_args ::= exp COMMA exp COMMA exp COMMA TAG * COMMA exp
+
+                         COMMA shift  48
+                     {default} reduce 53
+
+State 107:
+          boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp COMMA exp RPAREN * LBRACE boom_body RBRACE
+
+                        LBRACE shift  2
+
+State 108:
+          boom_args ::= exp LBRACKET arg_list * RBRACKET
+
+                      RBRACKET shift  121
+
+State 109:
+          boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp COMMA exp RPAREN LBRACE boom_body * RBRACE
+
+                        RBRACE shift  113
+
+State 110:
+     (27) single_enum ::= SYM *
+          single_enum ::= SYM * EQUALS exp
+
+                        EQUALS shift  22
+                     {default} reduce 27
+
+State 111:
+          sector_declaration ::= SECTOR exp EQUALS exp NOBITMASK * SEMICOLON
+
+                     SEMICOLON shift  143
+
+State 112:
+          sector_bitmask ::= SECTOR BITMASK exp CLEAR * SEMICOLON
+
+                     SEMICOLON shift  153
+
+State 113:
+     (56) boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp COMMA exp RPAREN LBRACE boom_body RBRACE *
+
+                     {default} reduce 56
+
+State 114:
+     (11) exp ::= NUM *
+
+                     {default} reduce 11
+
+State 115:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+     (14) exp ::= exp MULTIPLY exp *
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+
+                     {default} reduce 14
+
+State 116:
+     (10) external_declaration ::= NOP *
+
+                     {default} reduce 10
+
+State 117:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+     (15) exp ::= exp DIVIDE exp *
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+
+                     {default} reduce 15
+
+State 118:
+      (9) external_declaration ::= maxlinespecial_def *
+
+                     {default} reduce 9
+
+State 119:
+     (23) enum_open ::= ENUM LBRACE *
+
+                     {default} reduce 23
+
+State 120:
+     (25) enum_list ::= single_enum *
+
+                     {default} reduce 25
+
+State 121:
+     (68) boom_args ::= exp LBRACKET arg_list RBRACKET *
+
+                     {default} reduce 68
+
+State 122:
+     (26) enum_list ::= enum_list COMMA single_enum *
+
+                     {default} reduce 26
+
+State 123:
+      (8) external_declaration ::= sector_bitmask *
+
+                     {default} reduce 8
+
+State 124:
+     (70) arg_list ::= list_val COMMA arg_list *
+
+                     {default} reduce 70
+
+State 125:
+     (59) boom_line ::= boom_selector boom_op boom_args *
+
+                     {default} reduce 59
+
+State 126:
+     (65) boom_op ::= EQUALS *
+
+                     {default} reduce 65
+
+State 127:
+     (66) boom_op ::= OR_EQUAL *
+
+                     {default} reduce 66
+
+State 128:
+     (60) boom_selector ::= FLAGS *
+
+                     {default} reduce 60
+
+State 129:
+     (61) boom_selector ::= ARG2 *
+
+                     {default} reduce 61
+
+State 130:
+     (62) boom_selector ::= ARG3 *
+
+                     {default} reduce 62
+
+State 131:
+     (63) boom_selector ::= ARG4 *
+
+                     {default} reduce 63
+
+State 132:
+     (64) boom_selector ::= ARG5 *
+
+                     {default} reduce 64
+
+State 133:
+     (22) enum_statement ::= enum_open enum_list RBRACE *
+
+                     {default} reduce 22
+
+State 134:
+      (7) external_declaration ::= sector_declaration *
+
+                     {default} reduce 7
+
+State 135:
+     (21) define_statement ::= DEFINE SYM LPAREN exp RPAREN *
+
+                     {default} reduce 21
+
+State 136:
+     (72) maxlinespecial_def ::= MAXLINESPECIAL EQUALS exp SEMICOLON *
+
+                     {default} reduce 72
+
+State 137:
+      (6) external_declaration ::= boom_declaration *
+
+                     {default} reduce 6
+
+State 138:
+     (30) linetype_declaration ::= exp EQUALS exp COMMA SYM LPAREN special_args RPAREN *
+
+                     {default} reduce 30
+
+State 139:
+      (5) external_declaration ::= linetype_declaration *
+
+                     {default} reduce 5
+
+State 140:
+          exp ::= exp * PLUS exp
+          exp ::= exp * MINUS exp
+          exp ::= exp * MULTIPLY exp
+          exp ::= exp * DIVIDE exp
+          exp ::= exp * OR exp
+          exp ::= exp * AND exp
+          exp ::= exp * XOR exp
+     (19) exp ::= MINUS exp *
+
+                     {default} reduce 19
+
+State 141:
+     (73) sector_declaration ::= SECTOR exp EQUALS exp SEMICOLON *
+
+                     {default} reduce 73
+
+State 142:
+     (20) exp ::= LPAREN exp RPAREN *
+
+                     {default} reduce 20
+
+State 143:
+     (75) sector_declaration ::= SECTOR exp EQUALS exp NOBITMASK SEMICOLON *
+
+                     {default} reduce 75
+
+State 144:
+     (29) linetype_declaration ::= exp EQUALS exp COMMA exp LPAREN special_args RPAREN *
+
+                     {default} reduce 29
+
+State 145:
+     (74) sector_declaration ::= SECTOR exp EQUALS SYM SEMICOLON *
+
+                     {default} reduce 74
+
+State 146:
+      (4) external_declaration ::= enum_statement *
+
+                     {default} reduce 4
+
+State 147:
+      (3) external_declaration ::= define_statement *
+
+                     {default} reduce 3
+
+State 148:
+      (2) translation_unit ::= translation_unit external_declaration *
+
+                     {default} reduce 2
+
+State 149:
+     (55) special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA TAG *
+
+                     {default} reduce 55
+
+State 150:
+     (76) sector_bitmask ::= SECTOR BITMASK exp sector_op exp SEMICOLON *
+
+                     {default} reduce 76
+
+State 151:
+     (77) sector_bitmask ::= SECTOR BITMASK exp SEMICOLON *
+
+                     {default} reduce 77
+
+State 152:
+     (58) boom_body ::= boom_line boom_body *
+
+                     {default} reduce 58
+
+State 153:
+     (78) sector_bitmask ::= SECTOR BITMASK exp CLEAR SEMICOLON *
+
+                     {default} reduce 78
+
+State 154:
+     (79) sector_op ::= LSHASSIGN *
+
+                     {default} reduce 79
+
+State 155:
+     (80) sector_op ::= RSHASSIGN *
+
+                     {default} reduce 80
+
+----------------------------------------------------
+Symbols:
+    0: $:
+    1: NOP
+    2: OR
+    3: XOR
+    4: AND
+    5: MINUS
+    6: PLUS
+    7: MULTIPLY
+    8: DIVIDE
+    9: NEG
+   10: NUM
+   11: LPAREN
+   12: RPAREN
+   13: DEFINE
+   14: SYM
+   15: RBRACE
+   16: ENUM
+   17: LBRACE
+   18: COMMA
+   19: EQUALS
+   20: TAG
+   21: LBRACKET
+   22: RBRACKET
+   23: FLAGS
+   24: ARG2
+   25: ARG3
+   26: ARG4
+   27: ARG5
+   28: OR_EQUAL
+   29: COLON
+   30: MAXLINESPECIAL
+   31: SEMICOLON
+   32: SECTOR
+   33: NOBITMASK
+   34: BITMASK
+   35: CLEAR
+   36: LSHASSIGN
+   37: RSHASSIGN
+   38: error:
+   39: main: NOP MINUS NUM LPAREN DEFINE ENUM LBRACKET MAXLINESPECIAL SECTOR
+   40: translation_unit: <lambda> NOP MINUS NUM LPAREN DEFINE ENUM LBRACKET MAXLINESPECIAL SECTOR
+   41: external_declaration: NOP MINUS NUM LPAREN DEFINE ENUM LBRACKET MAXLINESPECIAL SECTOR
+   42: define_statement: DEFINE
+   43: enum_statement: ENUM
+   44: linetype_declaration: MINUS NUM LPAREN
+   45: boom_declaration: LBRACKET
+   46: sector_declaration: SECTOR
+   47: sector_bitmask: SECTOR
+   48: maxlinespecial_def: MAXLINESPECIAL
+   49: exp: MINUS NUM LPAREN
+   50: enum_open: ENUM
+   51: enum_list: <lambda> SYM COMMA
+   52: single_enum: SYM
+   53: special_args: <lambda> MINUS NUM LPAREN TAG
+   54: list_val: MINUS NUM LPAREN
+   55: arg_list: MINUS NUM LPAREN
+   56: boom_args: MINUS NUM LPAREN
+   57: boom_op: EQUALS OR_EQUAL
+   58: boom_selector: FLAGS ARG2 ARG3 ARG4 ARG5
+   59: boom_line: FLAGS ARG2 ARG3 ARG4 ARG5
+   60: boom_body: <lambda> FLAGS ARG2 ARG3 ARG4 ARG5
+   61: sector_op: LSHASSIGN RSHASSIGN
