[Scummvm-git-logs] scummvm master -> 992213b97cec00d58fc9978417c9a4a97b642f3b

djsrv dservilla at gmail.com
Fri Aug 14 22:00:54 UTC 2020


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
502e2e60bd DIRECTOR: Clean up switch statement
d277b0279e DIRECTOR: LINGO: Handle getting kTheField
a0c7ce4bca DIRECTOR: LINGO: Fix copy/paste error
992213b97c DIRECTOR: LINGO: Lazily fetch cast members


Commit: 502e2e60bd2d06c966c5e93d19b3decc0810dacb
    https://github.com/scummvm/scummvm/commit/502e2e60bd2d06c966c5e93d19b3decc0810dacb
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-14T18:00:38-04:00

Commit Message:
DIRECTOR: Clean up switch statement

Changed paths:
    engines/director/lingo/lingo.cpp


diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 4e9521b074..26dc6c2a71 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -796,14 +796,11 @@ void Datum::reset() {
 	if (*refCount <= 0) {
 		switch (type) {
 		case VAR:
-			// fallthrough
 		case STRING:
 			delete u.s;
 			break;
 		case ARRAY:
-			// fallthrough
 		case POINT:
-			// fallthrough
 		case RECT:
 			delete u.farr;
 			break;
@@ -819,13 +816,6 @@ void Datum::reset() {
 				delete u.obj;
 			}
 			break;
-		case CASTREF:
-		case FIELDREF:
-			// fallthrough
-		case INT:
-			// fallthrough
-		case FLOAT:
-			// fallthrough
 		default:
 			break;
 		}


Commit: d277b0279e58447271caefe28f7021cb0aeb1150
    https://github.com/scummvm/scummvm/commit/d277b0279e58447271caefe28f7021cb0aeb1150
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-14T18:00:38-04:00

Commit Message:
DIRECTOR: LINGO: Handle getting kTheField

Changed paths:
    engines/director/lingo/lingo-the.cpp


diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 1705f338fb..1344c6b7b1 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -428,6 +428,9 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 	case kTheExitLock:
 		getTheEntitySTUB(kTheExitLock);
 		break;
+	case kTheField:
+		d = getTheField(id, field);
+		break;
 	case kTheFixStageSize:
 		getTheEntitySTUB(kTheFixStageSize);
 		break;


Commit: a0c7ce4bcad95e7992713b1018d8039a2bd6452e
    https://github.com/scummvm/scummvm/commit/a0c7ce4bcad95e7992713b1018d8039a2bd6452e
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-14T18:00:38-04:00

Commit Message:
DIRECTOR: LINGO: Fix copy/paste error

Changed paths:
    engines/director/lingo/lingo-bytecode.cpp


diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index e7bfd54a6c..a326fa86de 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -257,15 +257,15 @@ static LingoV4TheEntity lingoV4TheEntity[] = {
 	{ 0x09, 0x11, kTheCast,				kTheForeColor,		true, kTEAItemId },
 	{ 0x09, 0x12, kTheCast,				kTheBackColor,		true, kTEAItemId },
 
-	{ 0x09, 0x01, kTheField,			kTheName,			true, kTEAItemId },
-	{ 0x09, 0x02, kTheField,			kTheText,			true, kTEAItemId },
-	{ 0x09, 0x09, kTheField,			kTheHilite,			true, kTEAItemId },
+	{ 0x0b, 0x01, kTheField,			kTheName,			true, kTEAItemId },
+	{ 0x0b, 0x02, kTheField,			kTheText,			true, kTEAItemId },
+	{ 0x0b, 0x09, kTheField,			kTheHilite,			true, kTEAItemId },
 	{ 0x0b, 0x03, kTheField,			kTheTextStyle,		true, kTEAItemId },
 	{ 0x0b, 0x04, kTheField,			kTheTextFont,		true, kTEAItemId },
 	{ 0x0b, 0x05, kTheField,			kTheTextHeight,		true, kTEAItemId },
 	{ 0x0b, 0x06, kTheField,			kTheTextAlign,		true, kTEAItemId },
 	{ 0x0b, 0x07, kTheField,			kTheTextSize,		true, kTEAItemId },
-	{ 0x09, 0x11, kTheCast,				kTheForeColor,		true, kTEAItemId },
+	{ 0x0b, 0x11, kTheCast,				kTheForeColor,		true, kTEAItemId },
 
 	{ 0x0d, 0x0c, kTheCast,				kTheLoop,			true, kTEAItemId },
 	{ 0x0d, 0x0d, kTheCast,				kTheDuration,		true, kTEAItemId },


Commit: 992213b97cec00d58fc9978417c9a4a97b642f3b
    https://github.com/scummvm/scummvm/commit/992213b97cec00d58fc9978417c9a4a97b642f3b
Author: djsrv (dservilla at gmail.com)
Date: 2020-08-14T18:00:38-04:00

Commit Message:
DIRECTOR: LINGO: Lazily fetch cast members

Cast members should be fetched until they're actually needed, so
`the loaded of cast x`, etc. will work.

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.h
    engines/director/lingo/lingo-gr.y
    engines/director/lingo/lingo-the.cpp
    engines/director/lingo/lingo.cpp
    engines/director/lingo/lingo.h


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 760e1032f2..ba1d6bb109 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -67,6 +67,12 @@ namespace Director {
 		return; \
 	}
 
+#define TYPECHECK3(datum, t1, t2, t3)	\
+	if ((datum).type != (t1) && (datum).type != (t2) && (datum).type != (t3)) { \
+		warning("%s: %s arg should be of type %s, %s, or %s, not %s", __FUNCTION__, #datum, #t1, #t2, #t3, (datum).type2str()); \
+		return; \
+	}
+
 #define ARRBOUNDSCHECK(idx,array) \
 	if ((idx)-1 < 0 || (idx) > (int)(array).u.farr->size()) { \
 		warning("%s: index out of bounds (%d of %d)", __FUNCTION__, (idx), (array).u.farr->size()); \
@@ -449,7 +455,7 @@ void LB::b_chars(int nargs) {
 	Datum d3 = g_lingo->pop();
 	Datum d2 = g_lingo->pop();
 	Datum s = g_lingo->pop();
-	TYPECHECK2(s, STRING, FIELDREF);
+	TYPECHECK3(s, STRING, FIELDNAME, FIELDNUM);
 
 	if (g_director->getVersion() < 400 && (d2.type == FLOAT || d3.type == FLOAT)) {
 		warning("LB::b_chars: Called with a float in Director 2 and 3 mode. chars' can't handle floats");
@@ -510,7 +516,7 @@ void LB::b_hilite(int nargs) {
 
 void LB::b_length(int nargs) {
 	Datum d = g_lingo->pop();
-	TYPECHECK2(d, STRING, FIELDREF);
+	TYPECHECK3(d, STRING, FIELDNAME, FIELDNUM);
 
 	int len = strlen(d.asString().c_str());
 
@@ -597,7 +603,7 @@ void LB::b_addProp(int nargs) {
 	Datum list = g_lingo->pop();
 
 	TYPECHECK(list, PARRAY);
-	if (prop.type == FIELDREF)
+	if (prop.type == FIELDNAME || prop.type == FIELDNUM)
 		prop = g_lingo->varFetch(prop);
 
 	PCell cell = PCell(prop, value);
@@ -1028,7 +1034,7 @@ void LB::b_setProp(int nargs) {
 	Datum prop = g_lingo->pop();
 	Datum list = g_lingo->pop();
 	TYPECHECK(list, PARRAY);
-	if (prop.type == FIELDREF)
+	if (prop.type == FIELDNAME || prop.type == FIELDNUM)
 		prop = g_lingo->varFetch(prop);
 
 	int index = LC::compareArrays(LC::eqData, list, prop, true).u.i;
@@ -2315,16 +2321,28 @@ void LB::b_version(int nargs) {
 void LB::b_cast(int nargs) {
 	Datum d = g_lingo->pop();
 
-	Datum res(g_lingo->castIdFetch(d));
-	res.type = CASTREF;
+	Datum res;
+	if (d.type == STRING) {
+		res = d;
+		res.type = CASTNAME;
+	} else {
+		res = d.asInt();
+		res.type = CASTNUM;
+	}
 	g_lingo->push(res);
 }
 
 void LB::b_field(int nargs) {
 	Datum d = g_lingo->pop();
 
-	Datum res(g_lingo->castIdFetch(d));
-	res.type = FIELDREF;
+	Datum res;
+	if (d.type == STRING) {
+		res = d;
+		res.type = FIELDNAME;
+	} else {
+		res = d.asInt();
+		res.type = FIELDNUM;
+	}
 	g_lingo->push(res);
 }
 
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 3587cfba96..1a0ba4a479 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -225,167 +225,169 @@ enum yysymbol_kind_t
   YYSYMBOL_YYerror = 1,                    /* error  */
   YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
   YYSYMBOL_UNARY = 3,                      /* UNARY  */
-  YYSYMBOL_CASTREF = 4,                    /* CASTREF  */
-  YYSYMBOL_VOID = 5,                       /* VOID  */
-  YYSYMBOL_VAR = 6,                        /* VAR  */
-  YYSYMBOL_POINT = 7,                      /* POINT  */
-  YYSYMBOL_RECT = 8,                       /* RECT  */
-  YYSYMBOL_ARRAY = 9,                      /* ARRAY  */
-  YYSYMBOL_OBJECT = 10,                    /* OBJECT  */
-  YYSYMBOL_FIELDREF = 11,                  /* FIELDREF  */
-  YYSYMBOL_LEXERROR = 12,                  /* LEXERROR  */
-  YYSYMBOL_PARRAY = 13,                    /* PARRAY  */
-  YYSYMBOL_INT = 14,                       /* INT  */
-  YYSYMBOL_ARGC = 15,                      /* ARGC  */
-  YYSYMBOL_ARGCNORET = 16,                 /* ARGCNORET  */
-  YYSYMBOL_THEENTITY = 17,                 /* THEENTITY  */
-  YYSYMBOL_THEENTITYWITHID = 18,           /* THEENTITYWITHID  */
-  YYSYMBOL_THEMENUITEMENTITY = 19,         /* THEMENUITEMENTITY  */
-  YYSYMBOL_THEMENUITEMSENTITY = 20,        /* THEMENUITEMSENTITY  */
-  YYSYMBOL_FLOAT = 21,                     /* FLOAT  */
-  YYSYMBOL_THEFUNC = 22,                   /* THEFUNC  */
-  YYSYMBOL_THEFUNCINOF = 23,               /* THEFUNCINOF  */
-  YYSYMBOL_VARID = 24,                     /* VARID  */
-  YYSYMBOL_STRING = 25,                    /* STRING  */
-  YYSYMBOL_SYMBOL = 26,                    /* SYMBOL  */
-  YYSYMBOL_ENDCLAUSE = 27,                 /* ENDCLAUSE  */
-  YYSYMBOL_tPLAYACCEL = 28,                /* tPLAYACCEL  */
-  YYSYMBOL_tMETHOD = 29,                   /* tMETHOD  */
-  YYSYMBOL_THEOBJECTPROP = 30,             /* THEOBJECTPROP  */
-  YYSYMBOL_tCAST = 31,                     /* tCAST  */
-  YYSYMBOL_tFIELD = 32,                    /* tFIELD  */
-  YYSYMBOL_tSCRIPT = 33,                   /* tSCRIPT  */
-  YYSYMBOL_tWINDOW = 34,                   /* tWINDOW  */
-  YYSYMBOL_tDOWN = 35,                     /* tDOWN  */
-  YYSYMBOL_tELSE = 36,                     /* tELSE  */
-  YYSYMBOL_tELSIF = 37,                    /* tELSIF  */
-  YYSYMBOL_tEXIT = 38,                     /* tEXIT  */
-  YYSYMBOL_tGLOBAL = 39,                   /* tGLOBAL  */
-  YYSYMBOL_tGO = 40,                       /* tGO  */
-  YYSYMBOL_tGOLOOP = 41,                   /* tGOLOOP  */
-  YYSYMBOL_tIF = 42,                       /* tIF  */
-  YYSYMBOL_tIN = 43,                       /* tIN  */
-  YYSYMBOL_tINTO = 44,                     /* tINTO  */
-  YYSYMBOL_tMACRO = 45,                    /* tMACRO  */
-  YYSYMBOL_tMOVIE = 46,                    /* tMOVIE  */
-  YYSYMBOL_tNEXT = 47,                     /* tNEXT  */
-  YYSYMBOL_tOF = 48,                       /* tOF  */
-  YYSYMBOL_tPREVIOUS = 49,                 /* tPREVIOUS  */
-  YYSYMBOL_tPUT = 50,                      /* tPUT  */
-  YYSYMBOL_tREPEAT = 51,                   /* tREPEAT  */
-  YYSYMBOL_tSET = 52,                      /* tSET  */
-  YYSYMBOL_tTHEN = 53,                     /* tTHEN  */
-  YYSYMBOL_tTO = 54,                       /* tTO  */
-  YYSYMBOL_tWHEN = 55,                     /* tWHEN  */
-  YYSYMBOL_tWITH = 56,                     /* tWITH  */
-  YYSYMBOL_tWHILE = 57,                    /* tWHILE  */
-  YYSYMBOL_tFACTORY = 58,                  /* tFACTORY  */
-  YYSYMBOL_tOPEN = 59,                     /* tOPEN  */
-  YYSYMBOL_tPLAY = 60,                     /* tPLAY  */
-  YYSYMBOL_tINSTANCE = 61,                 /* tINSTANCE  */
-  YYSYMBOL_tGE = 62,                       /* tGE  */
-  YYSYMBOL_tLE = 63,                       /* tLE  */
-  YYSYMBOL_tEQ = 64,                       /* tEQ  */
-  YYSYMBOL_tNEQ = 65,                      /* tNEQ  */
-  YYSYMBOL_tAND = 66,                      /* tAND  */
-  YYSYMBOL_tOR = 67,                       /* tOR  */
-  YYSYMBOL_tNOT = 68,                      /* tNOT  */
-  YYSYMBOL_tMOD = 69,                      /* tMOD  */
-  YYSYMBOL_tAFTER = 70,                    /* tAFTER  */
-  YYSYMBOL_tBEFORE = 71,                   /* tBEFORE  */
-  YYSYMBOL_tCONCAT = 72,                   /* tCONCAT  */
-  YYSYMBOL_tCONTAINS = 73,                 /* tCONTAINS  */
-  YYSYMBOL_tSTARTS = 74,                   /* tSTARTS  */
-  YYSYMBOL_tCHAR = 75,                     /* tCHAR  */
-  YYSYMBOL_tITEM = 76,                     /* tITEM  */
-  YYSYMBOL_tLINE = 77,                     /* tLINE  */
-  YYSYMBOL_tWORD = 78,                     /* tWORD  */
-  YYSYMBOL_tSPRITE = 79,                   /* tSPRITE  */
-  YYSYMBOL_tINTERSECTS = 80,               /* tINTERSECTS  */
-  YYSYMBOL_tWITHIN = 81,                   /* tWITHIN  */
-  YYSYMBOL_tTELL = 82,                     /* tTELL  */
-  YYSYMBOL_tPROPERTY = 83,                 /* tPROPERTY  */
-  YYSYMBOL_tON = 84,                       /* tON  */
-  YYSYMBOL_tENDIF = 85,                    /* tENDIF  */
-  YYSYMBOL_tENDREPEAT = 86,                /* tENDREPEAT  */
-  YYSYMBOL_tENDTELL = 87,                  /* tENDTELL  */
-  YYSYMBOL_88_ = 88,                       /* '<'  */
-  YYSYMBOL_89_ = 89,                       /* '>'  */
-  YYSYMBOL_90_ = 90,                       /* '&'  */
-  YYSYMBOL_91_ = 91,                       /* '+'  */
-  YYSYMBOL_92_ = 92,                       /* '-'  */
-  YYSYMBOL_93_ = 93,                       /* '*'  */
-  YYSYMBOL_94_ = 94,                       /* '/'  */
-  YYSYMBOL_95_ = 95,                       /* '%'  */
-  YYSYMBOL_96_n_ = 96,                     /* '\n'  */
-  YYSYMBOL_97_ = 97,                       /* '('  */
-  YYSYMBOL_98_ = 98,                       /* ')'  */
-  YYSYMBOL_99_ = 99,                       /* ','  */
-  YYSYMBOL_100_ = 100,                     /* '['  */
-  YYSYMBOL_101_ = 101,                     /* ']'  */
-  YYSYMBOL_102_ = 102,                     /* ':'  */
-  YYSYMBOL_YYACCEPT = 103,                 /* $accept  */
-  YYSYMBOL_program = 104,                  /* program  */
-  YYSYMBOL_programline = 105,              /* programline  */
-  YYSYMBOL_ID = 106,                       /* ID  */
-  YYSYMBOL_asgn = 107,                     /* asgn  */
-  YYSYMBOL_stmtoneliner = 108,             /* stmtoneliner  */
-  YYSYMBOL_stmt = 109,                     /* stmt  */
-  YYSYMBOL_110_1 = 110,                    /* $@1  */
-  YYSYMBOL_111_2 = 111,                    /* $@2  */
-  YYSYMBOL_112_3 = 112,                    /* $@3  */
-  YYSYMBOL_113_4 = 113,                    /* $@4  */
-  YYSYMBOL_114_5 = 114,                    /* $@5  */
-  YYSYMBOL_115_6 = 115,                    /* $@6  */
-  YYSYMBOL_116_7 = 116,                    /* $@7  */
-  YYSYMBOL_117_8 = 117,                    /* $@8  */
-  YYSYMBOL_118_9 = 118,                    /* $@9  */
-  YYSYMBOL_startrepeat = 119,              /* startrepeat  */
-  YYSYMBOL_tellstart = 120,                /* tellstart  */
-  YYSYMBOL_ifstmt = 121,                   /* ifstmt  */
-  YYSYMBOL_elseifstmtlist = 122,           /* elseifstmtlist  */
-  YYSYMBOL_elseifstmt = 123,               /* elseifstmt  */
-  YYSYMBOL_jumpifz = 124,                  /* jumpifz  */
-  YYSYMBOL_jump = 125,                     /* jump  */
-  YYSYMBOL_varassign = 126,                /* varassign  */
-  YYSYMBOL_if = 127,                       /* if  */
-  YYSYMBOL_lbl = 128,                      /* lbl  */
-  YYSYMBOL_stmtlist = 129,                 /* stmtlist  */
-  YYSYMBOL_stmtlistline = 130,             /* stmtlistline  */
-  YYSYMBOL_simpleexprnoparens = 131,       /* simpleexprnoparens  */
-  YYSYMBOL_132_10 = 132,                   /* $@10  */
-  YYSYMBOL_simpleexpr = 133,               /* simpleexpr  */
-  YYSYMBOL_expr = 134,                     /* expr  */
-  YYSYMBOL_chunkexpr = 135,                /* chunkexpr  */
-  YYSYMBOL_reference = 136,                /* reference  */
-  YYSYMBOL_proc = 137,                     /* proc  */
-  YYSYMBOL_138_11 = 138,                   /* $@11  */
-  YYSYMBOL_139_12 = 139,                   /* $@12  */
-  YYSYMBOL_140_13 = 140,                   /* $@13  */
-  YYSYMBOL_141_14 = 141,                   /* $@14  */
-  YYSYMBOL_globallist = 142,               /* globallist  */
-  YYSYMBOL_propertylist = 143,             /* propertylist  */
-  YYSYMBOL_instancelist = 144,             /* instancelist  */
-  YYSYMBOL_gotofunc = 145,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 146,                /* gotomovie  */
-  YYSYMBOL_playfunc = 147,                 /* playfunc  */
-  YYSYMBOL_148_15 = 148,                   /* $@15  */
-  YYSYMBOL_defn = 149,                     /* defn  */
-  YYSYMBOL_150_16 = 150,                   /* $@16  */
-  YYSYMBOL_151_17 = 151,                   /* $@17  */
-  YYSYMBOL_on = 152,                       /* on  */
-  YYSYMBOL_153_18 = 153,                   /* $@18  */
-  YYSYMBOL_argname = 154,                  /* argname  */
-  YYSYMBOL_argdef = 155,                   /* argdef  */
-  YYSYMBOL_endargdef = 156,                /* endargdef  */
-  YYSYMBOL_argstore = 157,                 /* argstore  */
-  YYSYMBOL_arglist = 158,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 159,          /* nonemptyarglist  */
-  YYSYMBOL_list = 160,                     /* list  */
-  YYSYMBOL_valuelist = 161,                /* valuelist  */
-  YYSYMBOL_linearlist = 162,               /* linearlist  */
-  YYSYMBOL_proplist = 163,                 /* proplist  */
-  YYSYMBOL_proppair = 164                  /* proppair  */
+  YYSYMBOL_VOID = 4,                       /* VOID  */
+  YYSYMBOL_VAR = 5,                        /* VAR  */
+  YYSYMBOL_POINT = 6,                      /* POINT  */
+  YYSYMBOL_RECT = 7,                       /* RECT  */
+  YYSYMBOL_ARRAY = 8,                      /* ARRAY  */
+  YYSYMBOL_OBJECT = 9,                     /* OBJECT  */
+  YYSYMBOL_LEXERROR = 10,                  /* LEXERROR  */
+  YYSYMBOL_PARRAY = 11,                    /* PARRAY  */
+  YYSYMBOL_CASTNAME = 12,                  /* CASTNAME  */
+  YYSYMBOL_CASTNUM = 13,                   /* CASTNUM  */
+  YYSYMBOL_FIELDNAME = 14,                 /* FIELDNAME  */
+  YYSYMBOL_FIELDNUM = 15,                  /* FIELDNUM  */
+  YYSYMBOL_INT = 16,                       /* INT  */
+  YYSYMBOL_ARGC = 17,                      /* ARGC  */
+  YYSYMBOL_ARGCNORET = 18,                 /* ARGCNORET  */
+  YYSYMBOL_THEENTITY = 19,                 /* THEENTITY  */
+  YYSYMBOL_THEENTITYWITHID = 20,           /* THEENTITYWITHID  */
+  YYSYMBOL_THEMENUITEMENTITY = 21,         /* THEMENUITEMENTITY  */
+  YYSYMBOL_THEMENUITEMSENTITY = 22,        /* THEMENUITEMSENTITY  */
+  YYSYMBOL_FLOAT = 23,                     /* FLOAT  */
+  YYSYMBOL_THEFUNC = 24,                   /* THEFUNC  */
+  YYSYMBOL_THEFUNCINOF = 25,               /* THEFUNCINOF  */
+  YYSYMBOL_VARID = 26,                     /* VARID  */
+  YYSYMBOL_STRING = 27,                    /* STRING  */
+  YYSYMBOL_SYMBOL = 28,                    /* SYMBOL  */
+  YYSYMBOL_ENDCLAUSE = 29,                 /* ENDCLAUSE  */
+  YYSYMBOL_tPLAYACCEL = 30,                /* tPLAYACCEL  */
+  YYSYMBOL_tMETHOD = 31,                   /* tMETHOD  */
+  YYSYMBOL_THEOBJECTPROP = 32,             /* THEOBJECTPROP  */
+  YYSYMBOL_tCAST = 33,                     /* tCAST  */
+  YYSYMBOL_tFIELD = 34,                    /* tFIELD  */
+  YYSYMBOL_tSCRIPT = 35,                   /* tSCRIPT  */
+  YYSYMBOL_tWINDOW = 36,                   /* tWINDOW  */
+  YYSYMBOL_tDOWN = 37,                     /* tDOWN  */
+  YYSYMBOL_tELSE = 38,                     /* tELSE  */
+  YYSYMBOL_tELSIF = 39,                    /* tELSIF  */
+  YYSYMBOL_tEXIT = 40,                     /* tEXIT  */
+  YYSYMBOL_tGLOBAL = 41,                   /* tGLOBAL  */
+  YYSYMBOL_tGO = 42,                       /* tGO  */
+  YYSYMBOL_tGOLOOP = 43,                   /* tGOLOOP  */
+  YYSYMBOL_tIF = 44,                       /* tIF  */
+  YYSYMBOL_tIN = 45,                       /* tIN  */
+  YYSYMBOL_tINTO = 46,                     /* tINTO  */
+  YYSYMBOL_tMACRO = 47,                    /* tMACRO  */
+  YYSYMBOL_tMOVIE = 48,                    /* tMOVIE  */
+  YYSYMBOL_tNEXT = 49,                     /* tNEXT  */
+  YYSYMBOL_tOF = 50,                       /* tOF  */
+  YYSYMBOL_tPREVIOUS = 51,                 /* tPREVIOUS  */
+  YYSYMBOL_tPUT = 52,                      /* tPUT  */
+  YYSYMBOL_tREPEAT = 53,                   /* tREPEAT  */
+  YYSYMBOL_tSET = 54,                      /* tSET  */
+  YYSYMBOL_tTHEN = 55,                     /* tTHEN  */
+  YYSYMBOL_tTO = 56,                       /* tTO  */
+  YYSYMBOL_tWHEN = 57,                     /* tWHEN  */
+  YYSYMBOL_tWITH = 58,                     /* tWITH  */
+  YYSYMBOL_tWHILE = 59,                    /* tWHILE  */
+  YYSYMBOL_tFACTORY = 60,                  /* tFACTORY  */
+  YYSYMBOL_tOPEN = 61,                     /* tOPEN  */
+  YYSYMBOL_tPLAY = 62,                     /* tPLAY  */
+  YYSYMBOL_tINSTANCE = 63,                 /* tINSTANCE  */
+  YYSYMBOL_tGE = 64,                       /* tGE  */
+  YYSYMBOL_tLE = 65,                       /* tLE  */
+  YYSYMBOL_tEQ = 66,                       /* tEQ  */
+  YYSYMBOL_tNEQ = 67,                      /* tNEQ  */
+  YYSYMBOL_tAND = 68,                      /* tAND  */
+  YYSYMBOL_tOR = 69,                       /* tOR  */
+  YYSYMBOL_tNOT = 70,                      /* tNOT  */
+  YYSYMBOL_tMOD = 71,                      /* tMOD  */
+  YYSYMBOL_tAFTER = 72,                    /* tAFTER  */
+  YYSYMBOL_tBEFORE = 73,                   /* tBEFORE  */
+  YYSYMBOL_tCONCAT = 74,                   /* tCONCAT  */
+  YYSYMBOL_tCONTAINS = 75,                 /* tCONTAINS  */
+  YYSYMBOL_tSTARTS = 76,                   /* tSTARTS  */
+  YYSYMBOL_tCHAR = 77,                     /* tCHAR  */
+  YYSYMBOL_tITEM = 78,                     /* tITEM  */
+  YYSYMBOL_tLINE = 79,                     /* tLINE  */
+  YYSYMBOL_tWORD = 80,                     /* tWORD  */
+  YYSYMBOL_tSPRITE = 81,                   /* tSPRITE  */
+  YYSYMBOL_tINTERSECTS = 82,               /* tINTERSECTS  */
+  YYSYMBOL_tWITHIN = 83,                   /* tWITHIN  */
+  YYSYMBOL_tTELL = 84,                     /* tTELL  */
+  YYSYMBOL_tPROPERTY = 85,                 /* tPROPERTY  */
+  YYSYMBOL_tON = 86,                       /* tON  */
+  YYSYMBOL_tENDIF = 87,                    /* tENDIF  */
+  YYSYMBOL_tENDREPEAT = 88,                /* tENDREPEAT  */
+  YYSYMBOL_tENDTELL = 89,                  /* tENDTELL  */
+  YYSYMBOL_90_ = 90,                       /* '<'  */
+  YYSYMBOL_91_ = 91,                       /* '>'  */
+  YYSYMBOL_92_ = 92,                       /* '&'  */
+  YYSYMBOL_93_ = 93,                       /* '+'  */
+  YYSYMBOL_94_ = 94,                       /* '-'  */
+  YYSYMBOL_95_ = 95,                       /* '*'  */
+  YYSYMBOL_96_ = 96,                       /* '/'  */
+  YYSYMBOL_97_ = 97,                       /* '%'  */
+  YYSYMBOL_98_n_ = 98,                     /* '\n'  */
+  YYSYMBOL_99_ = 99,                       /* '('  */
+  YYSYMBOL_100_ = 100,                     /* ')'  */
+  YYSYMBOL_101_ = 101,                     /* ','  */
+  YYSYMBOL_102_ = 102,                     /* '['  */
+  YYSYMBOL_103_ = 103,                     /* ']'  */
+  YYSYMBOL_104_ = 104,                     /* ':'  */
+  YYSYMBOL_YYACCEPT = 105,                 /* $accept  */
+  YYSYMBOL_program = 106,                  /* program  */
+  YYSYMBOL_programline = 107,              /* programline  */
+  YYSYMBOL_ID = 108,                       /* ID  */
+  YYSYMBOL_asgn = 109,                     /* asgn  */
+  YYSYMBOL_stmtoneliner = 110,             /* stmtoneliner  */
+  YYSYMBOL_stmt = 111,                     /* stmt  */
+  YYSYMBOL_112_1 = 112,                    /* $@1  */
+  YYSYMBOL_113_2 = 113,                    /* $@2  */
+  YYSYMBOL_114_3 = 114,                    /* $@3  */
+  YYSYMBOL_115_4 = 115,                    /* $@4  */
+  YYSYMBOL_116_5 = 116,                    /* $@5  */
+  YYSYMBOL_117_6 = 117,                    /* $@6  */
+  YYSYMBOL_118_7 = 118,                    /* $@7  */
+  YYSYMBOL_119_8 = 119,                    /* $@8  */
+  YYSYMBOL_120_9 = 120,                    /* $@9  */
+  YYSYMBOL_startrepeat = 121,              /* startrepeat  */
+  YYSYMBOL_tellstart = 122,                /* tellstart  */
+  YYSYMBOL_ifstmt = 123,                   /* ifstmt  */
+  YYSYMBOL_elseifstmtlist = 124,           /* elseifstmtlist  */
+  YYSYMBOL_elseifstmt = 125,               /* elseifstmt  */
+  YYSYMBOL_jumpifz = 126,                  /* jumpifz  */
+  YYSYMBOL_jump = 127,                     /* jump  */
+  YYSYMBOL_varassign = 128,                /* varassign  */
+  YYSYMBOL_if = 129,                       /* if  */
+  YYSYMBOL_lbl = 130,                      /* lbl  */
+  YYSYMBOL_stmtlist = 131,                 /* stmtlist  */
+  YYSYMBOL_stmtlistline = 132,             /* stmtlistline  */
+  YYSYMBOL_simpleexprnoparens = 133,       /* simpleexprnoparens  */
+  YYSYMBOL_134_10 = 134,                   /* $@10  */
+  YYSYMBOL_simpleexpr = 135,               /* simpleexpr  */
+  YYSYMBOL_expr = 136,                     /* expr  */
+  YYSYMBOL_chunkexpr = 137,                /* chunkexpr  */
+  YYSYMBOL_reference = 138,                /* reference  */
+  YYSYMBOL_proc = 139,                     /* proc  */
+  YYSYMBOL_140_11 = 140,                   /* $@11  */
+  YYSYMBOL_141_12 = 141,                   /* $@12  */
+  YYSYMBOL_142_13 = 142,                   /* $@13  */
+  YYSYMBOL_143_14 = 143,                   /* $@14  */
+  YYSYMBOL_globallist = 144,               /* globallist  */
+  YYSYMBOL_propertylist = 145,             /* propertylist  */
+  YYSYMBOL_instancelist = 146,             /* instancelist  */
+  YYSYMBOL_gotofunc = 147,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 148,                /* gotomovie  */
+  YYSYMBOL_playfunc = 149,                 /* playfunc  */
+  YYSYMBOL_150_15 = 150,                   /* $@15  */
+  YYSYMBOL_defn = 151,                     /* defn  */
+  YYSYMBOL_152_16 = 152,                   /* $@16  */
+  YYSYMBOL_153_17 = 153,                   /* $@17  */
+  YYSYMBOL_on = 154,                       /* on  */
+  YYSYMBOL_155_18 = 155,                   /* $@18  */
+  YYSYMBOL_argname = 156,                  /* argname  */
+  YYSYMBOL_argdef = 157,                   /* argdef  */
+  YYSYMBOL_endargdef = 158,                /* endargdef  */
+  YYSYMBOL_argstore = 159,                 /* argstore  */
+  YYSYMBOL_arglist = 160,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 161,          /* nonemptyarglist  */
+  YYSYMBOL_list = 162,                     /* list  */
+  YYSYMBOL_valuelist = 163,                /* valuelist  */
+  YYSYMBOL_linearlist = 164,               /* linearlist  */
+  YYSYMBOL_proplist = 165,                 /* proplist  */
+  YYSYMBOL_proppair = 166                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -695,10 +697,10 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  100
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1886
+#define YYLAST   1844
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  103
+#define YYNTOKENS  105
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  62
 /* YYNRULES -- Number of rules.  */
@@ -707,7 +709,7 @@ union yyalloc
 #define YYNSTATES  391
 
 /* YYMAXUTOK -- Last valid token kind.  */
-#define YYMAXUTOK   342
+#define YYMAXUTOK   344
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -722,15 +724,15 @@ union yyalloc
 static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      96,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      98,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,    95,    90,     2,
-      97,    98,    93,    91,    99,    92,     2,    94,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   102,     2,
-      88,     2,    89,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    97,    92,     2,
+      99,   100,    95,    93,   101,    94,     2,    96,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   104,     2,
+      90,     2,    91,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   100,     2,   101,     2,     2,     2,     2,     2,     2,
+       2,   102,     2,   103,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -755,33 +757,33 @@ static const yytype_int8 yytranslate[] =
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87
+      85,    86,    87,    88,    89
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,   234,   234,   235,   237,   238,   239,   241,   242,   243,
-     244,   245,   247,   254,   258,   269,   276,   279,   286,   289,
-     296,   303,   310,   317,   323,   330,   341,   352,   359,   367,
-     368,   370,   371,   376,   389,   393,   396,   388,   423,   427,
-     430,   422,   457,   464,   470,   456,   500,   508,   511,   512,
-     513,   515,   517,   519,   526,   534,   535,   537,   543,   547,
-     551,   555,   558,   560,   561,   563,   564,   566,   569,   572,
-     576,   580,   581,   582,   583,   584,   592,   598,   601,   604,
-     610,   611,   612,   613,   619,   619,   624,   627,   636,   637,
-     639,   640,   641,   642,   643,   644,   645,   646,   647,   648,
-     649,   650,   651,   652,   653,   654,   655,   656,   658,   661,
-     664,   665,   666,   667,   668,   669,   670,   671,   673,   674,
-     677,   681,   684,   685,   686,   694,   695,   695,   696,   696,
-     697,   697,   698,   701,   704,   710,   710,   715,   718,   722,
-     723,   726,   730,   731,   734,   738,   739,   742,   753,   754,
-     755,   756,   760,   764,   769,   770,   772,   776,   780,   784,
-     784,   814,   814,   820,   821,   821,   827,   835,   841,   841,
-     843,   845,   846,   847,   849,   850,   851,   853,   855,   856,
-     857,   859,   860,   861,   863,   865,   866,   867,   868,   870,
-     871,   873,   874,   876,   880,   884
+       0,   235,   235,   236,   238,   239,   240,   242,   243,   244,
+     245,   246,   248,   255,   259,   270,   277,   280,   287,   290,
+     297,   304,   311,   318,   324,   331,   342,   353,   360,   368,
+     369,   371,   372,   377,   390,   394,   397,   389,   424,   428,
+     431,   423,   458,   465,   471,   457,   501,   509,   512,   513,
+     514,   516,   518,   520,   527,   535,   536,   538,   544,   548,
+     552,   556,   559,   561,   562,   564,   565,   567,   570,   573,
+     577,   581,   582,   583,   584,   585,   593,   599,   602,   605,
+     611,   612,   613,   614,   620,   620,   625,   628,   637,   638,
+     640,   641,   642,   643,   644,   645,   646,   647,   648,   649,
+     650,   651,   652,   653,   654,   655,   656,   657,   659,   662,
+     665,   666,   667,   668,   669,   670,   671,   672,   674,   675,
+     678,   682,   685,   686,   687,   695,   696,   696,   697,   697,
+     698,   698,   699,   702,   705,   711,   711,   716,   719,   723,
+     724,   727,   731,   732,   735,   739,   740,   743,   754,   755,
+     756,   757,   761,   765,   770,   771,   773,   777,   781,   785,
+     785,   815,   815,   821,   822,   822,   828,   836,   842,   842,
+     844,   846,   847,   848,   850,   851,   852,   854,   856,   857,
+     858,   860,   861,   862,   864,   866,   867,   868,   869,   871,
+     872,   874,   875,   877,   881,   885
 };
 #endif
 
@@ -798,14 +800,15 @@ yysymbol_name (yysymbol_kind_t yysymbol)
 {
   static const char *const yy_sname[] =
   {
-  "end of file", "error", "invalid token", "UNARY", "CASTREF", "VOID",
-  "VAR", "POINT", "RECT", "ARRAY", "OBJECT", "FIELDREF", "LEXERROR",
-  "PARRAY", "INT", "ARGC", "ARGCNORET", "THEENTITY", "THEENTITYWITHID",
-  "THEMENUITEMENTITY", "THEMENUITEMSENTITY", "FLOAT", "THEFUNC",
-  "THEFUNCINOF", "VARID", "STRING", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL",
-  "tMETHOD", "THEOBJECTPROP", "tCAST", "tFIELD", "tSCRIPT", "tWINDOW",
-  "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tGOLOOP", "tIF",
-  "tIN", "tINTO", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT",
+  "end of file", "error", "invalid token", "UNARY", "VOID", "VAR",
+  "POINT", "RECT", "ARRAY", "OBJECT", "LEXERROR", "PARRAY", "CASTNAME",
+  "CASTNUM", "FIELDNAME", "FIELDNUM", "INT", "ARGC", "ARGCNORET",
+  "THEENTITY", "THEENTITYWITHID", "THEMENUITEMENTITY",
+  "THEMENUITEMSENTITY", "FLOAT", "THEFUNC", "THEFUNCINOF", "VARID",
+  "STRING", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL", "tMETHOD",
+  "THEOBJECTPROP", "tCAST", "tFIELD", "tSCRIPT", "tWINDOW", "tDOWN",
+  "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tGOLOOP", "tIF", "tIN",
+  "tINTO", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT",
   "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE",
   "tFACTORY", "tOPEN", "tPLAY", "tINSTANCE", "tGE", "tLE", "tEQ", "tNEQ",
   "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT",
@@ -841,13 +844,13 @@ static const yytype_int16 yytoknum[] =
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,   342,    60,    62,
-      38,    43,    45,    42,    47,    37,    10,    40,    41,    44,
-      91,    93,    58
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+      60,    62,    38,    43,    45,    42,    47,    37,    10,    40,
+      41,    44,    91,    93,    58
 };
 #endif
 
-#define YYPACT_NINF (-357)
+#define YYPACT_NINF (-352)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -861,46 +864,46 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     362,   -82,  -357,  -357,  -357,  -357,  -357,  -357,  -357,   -34,
-    -357,   892,  -357,  -357,  -357,   -30,  1012,   -14,   188,    55,
-      55,  1038,   931,  -357,  1038,  -357,  -357,     8,  -357,  1119,
-    -357,  -357,  -357,  -357,  1038,  -357,  -357,  -357,  -357,  -357,
-    -357,  1038,  -357,  -357,    55,  -357,  -357,  1038,  -357,   -12,
-    1038,  -357,  -357,  -357,  1145,  1145,  1145,  1145,  1038,  -357,
-      17,  -357,  1038,  1038,  1038,  1038,  1038,  1038,  1038,  1038,
-    1038,   148,   -63,  -357,  -357,  1230,  -357,  -357,  -357,  -357,
-      55,  -357,    55,  1197,    55,  -357,     5,  1038,  1038,     6,
-      27,     1,  -357,  1607,  1230,  -357,    55,  1527,    55,    55,
-    -357,   362,  1038,  1658,  -357,  1779,    55,  -357,    55,    -9,
-    -357,  -357,  1038,  -357,  -357,  -357,  -357,  -357,  1779,  1038,
-    -357,  1263,  1296,  1329,  1362,  1746,  -357,  -357,  1709,    11,
-      12,  -357,   -87,  1779,    19,    23,    24,  -357,  1038,  1038,
-    1038,  1038,  1038,  1038,  1038,  1038,  1038,  1038,  1038,  1038,
-    1038,  1038,  1038,  1038,  1038,  1038,  -357,  -357,  1038,    -2,
-      -2,    -2,   -31,  1038,  1038,  1038,  1568,    78,  1038,  1038,
-    1038,  1038,  1038,  1038,  -357,    29,  -357,  -357,  -357,    35,
-    -357,  -357,  -357,   -32,  1620,     9,  1038,    83,  -357,    41,
-      46,    48,    55,  -357,  1779,  1038,  1038,  1038,  1038,  1038,
-    1038,  1038,  1038,  1038,  1038,  -357,  1038,  1038,  1038,  -357,
-    1038,   204,    59,    47,   -45,   -45,   -45,   -45,  1792,  1792,
-    -357,   -53,   -45,   -45,   -45,   -45,   -53,   -43,   -43,  -357,
-    -357,    55,   103,  -357,  -357,  -357,  -357,  -357,  -357,  1038,
-    1038,  1779,  1779,  1779,  1038,  1038,    55,  1779,  1779,  1779,
-    1779,  1779,  1779,    55,   493,   716,    55,  -357,  -357,  -357,
-    -357,   650,    55,  -357,  -357,  -357,  -357,  1395,  -357,  1428,
-    -357,  1461,  -357,  1494,  -357,  -357,  1779,  1779,  1779,  1779,
-      11,    12,    51,  -357,  -357,  -357,  -357,    53,  1038,  1779,
-    1164,  -357,  1779,    25,  1038,  -357,  -357,  -357,  -357,    67,
-    -357,  1038,  -357,  -357,   563,   616,  1038,  1038,  1038,  1038,
-    1038,  -357,  1779,  -357,  -357,  -357,   750,    31,  -357,    80,
-     455,  1671,    70,  -357,   156,  -357,  -357,  -357,  -357,  -357,
-      86,   616,  -357,  -357,  -357,  -357,  1038,  1038,  -357,  -357,
-    1038,  -357,    56,    55,  -357,  -357,  -357,   131,   151,   101,
-    1779,  1779,  -357,   816,  1038,  -357,   104,  -357,    91,  -357,
-    1038,   137,  -357,  -357,  1779,  -357,    55,  -357,  1779,  1038,
-     113,   146,  -357,   750,  -357,  1779,  -357,   650,   116,  -357,
-    -357,  -357,  -357,   750,  -357,  -357,   117,   750,  -357,   118,
-    -357
+     461,   -88,  -352,  -352,  -352,  -352,  -352,  -352,  -352,   -39,
+    -352,   855,  -352,  -352,  -352,   -27,   975,    -8,   186,    53,
+      53,  1001,   894,  -352,  1001,  -352,  -352,     6,  -352,  1082,
+    -352,  -352,  -352,  -352,  1001,  -352,  -352,  -352,  -352,  -352,
+    -352,  1001,  -352,  -352,    53,  -352,  -352,  1001,  -352,   -16,
+    1001,  -352,  -352,  -352,  1108,  1108,  1108,  1108,  1001,  -352,
+      37,  -352,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,
+    1001,   146,   -36,  -352,  -352,  1232,  -352,  -352,  -352,  -352,
+      53,  -352,    53,  1199,    53,  -352,   -45,  1001,  1001,   -41,
+     -13,    40,  -352,  1576,  1232,  -352,    53,  1496,    53,    53,
+    -352,   461,  1001,  1627,  -352,  1748,    53,  -352,    53,    12,
+    -352,  -352,  1001,  -352,  -352,  -352,  -352,  -352,  1748,  1001,
+    -352,  1265,  1298,  1331,  1364,  1715,  -352,  -352,  1678,    10,
+      18,  -352,   -34,  1748,     4,    19,    22,  -352,  1001,  1001,
+    1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,  1001,
+    1001,  1001,  1001,  1001,  1001,  1001,  -352,  -352,  1001,    -4,
+      -4,    -4,    15,  1001,  1001,  1001,  1537,    76,  1001,  1001,
+    1001,  1001,  1001,  1001,  -352,    27,  -352,  -352,  -352,    32,
+    -352,  -352,  -352,    31,  1589,    34,  1001,    81,  -352,    39,
+      44,    46,    53,  -352,  1748,  1001,  1001,  1001,  1001,  1001,
+    1001,  1001,  1001,  1001,  1001,  -352,  1001,  1001,  1001,  -352,
+    1001,   202,    57,    45,   -47,   -47,   -47,   -47,   363,   363,
+    -352,   -54,   -47,   -47,   -47,   -47,   -54,   -59,   -59,  -352,
+    -352,    53,   101,  -352,  -352,  -352,  -352,  -352,  -352,  1001,
+    1001,  1748,  1748,  1748,  1001,  1001,    53,  1748,  1748,  1748,
+    1748,  1748,  1748,    53,  1198,   703,    53,  -352,  -352,  -352,
+    -352,   637,    53,  -352,  -352,  -352,  -352,   462,  -352,  1397,
+    -352,  1430,  -352,  1463,  -352,  -352,  1748,  1748,  1748,  1748,
+      10,    18,    49,  -352,  -352,  -352,  -352,    51,  1001,  1748,
+    1127,  -352,  1748,    23,  1001,  -352,  -352,  -352,  -352,    65,
+    -352,  1001,  -352,  -352,   561,   599,  1001,  1001,  1001,  1001,
+    1001,  -352,  1748,  -352,  -352,  -352,   741,     3,  -352,    78,
+     362,  1640,    68,  -352,   154,  -352,  -352,  -352,  -352,  -352,
+      84,   599,  -352,  -352,  -352,  -352,  1001,  1001,  -352,  -352,
+    1001,  -352,    28,    53,  -352,  -352,  -352,   129,   149,    99,
+    1748,  1748,  -352,   779,  1001,  -352,   102,  -352,    89,  -352,
+    1001,   135,  -352,  -352,  1748,  -352,    53,  -352,  1748,  1001,
+     111,   144,  -352,   741,  -352,  1748,  -352,   637,   114,  -352,
+    -352,  -352,  -352,   741,  -352,  -352,   115,   741,  -352,   116,
+    -352
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -953,13 +956,13 @@ static const yytype_uint8 yydefact[] =
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -357,  -357,   107,     0,  -357,   -44,     2,  -357,  -357,  -357,
-    -357,  -357,  -357,  -357,  -357,  -357,  -356,    36,  -357,  -357,
-    -357,  -237,  -326,  -106,  -357,    -7,  -248,  -357,    76,  -357,
-     277,   130,    16,  -357,  -357,  -357,  -357,  -357,  -357,    21,
-     -41,   -20,  -357,   -17,  -357,  -357,  -357,  -357,  -357,  -357,
-    -357,  -357,  -107,  -357,  -258,   -38,  -303,  -357,  -357,  -357,
-    -357,    30
+    -352,  -352,   107,     0,  -352,   -44,     2,  -352,  -352,  -352,
+    -352,  -352,  -352,  -352,  -352,  -352,  -351,    35,  -352,  -352,
+    -352,  -237,  -326,  -106,  -352,    -7,  -248,  -352,    36,  -352,
+     277,   130,    16,  -352,  -352,  -352,  -352,  -352,  -352,    41,
+     -42,   -19,  -352,   -17,  -352,  -352,  -352,  -352,  -352,  -352,
+    -352,  -352,  -107,  -352,  -257,   -38,  -302,  -352,  -352,  -352,
+    -352,    30
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -979,20 +982,20 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      29,   191,    32,   107,   291,    95,   305,   330,   100,   349,
-     138,   373,   239,   302,    40,   208,   145,    43,    90,    91,
-      92,    81,     2,   383,   145,   -24,   145,   146,   387,    54,
-      55,     7,     8,   240,   138,   108,   112,   352,   152,   153,
-     154,   155,    84,    85,   109,   151,   152,   153,   154,   155,
-     154,   155,   -24,   331,   172,   385,   324,   325,   156,   164,
-     168,   -24,   -24,   119,   185,   138,   257,   258,   335,   165,
-     169,   132,   339,    63,    64,    65,    66,   174,   163,     2,
-     157,   170,   158,   345,   162,   336,     5,     6,     7,     8,
-     192,   171,   353,   354,   145,   337,   175,   146,   179,   181,
-     213,    29,   183,    32,   101,   363,   188,   259,   188,   359,
-     -24,   -24,   -24,   206,   207,   151,   152,   153,   154,   155,
-     209,   -24,   210,   211,   287,   378,   246,   371,   253,   381,
-     114,   115,   116,   117,   256,   386,   261,   379,   212,   389,
+      29,   191,    32,   107,   291,    95,   100,   305,   330,   349,
+      40,   164,   145,   302,    43,   168,   373,   145,    90,    91,
+      92,   165,     2,   -24,   145,   169,    81,   146,   383,    54,
+      55,     7,     8,   387,   112,   108,   154,   155,   352,   152,
+     153,   154,   155,   170,   109,   151,   152,   153,   154,   155,
+      84,    85,   -24,   171,   331,   385,   324,   325,   156,   336,
+     239,   -24,   -24,   138,   185,   138,   353,   354,   335,   337,
+     208,   132,   339,    63,    64,    65,    66,   174,   163,     2,
+     157,   240,   158,   345,   162,   119,     5,     6,     7,     8,
+     114,   115,   116,   117,   145,   172,   175,   146,   179,   181,
+     213,    29,   183,    32,   101,   363,   188,   209,   188,   359,
+     -24,   -24,   -24,   192,   206,   151,   152,   153,   154,   155,
+     210,   -24,   207,   211,   287,   378,   246,   371,   253,   381,
+     138,   257,   258,   256,   259,   386,   261,   379,   212,   389,
      262,    75,   263,   384,   264,   286,    83,   288,   260,   311,
      231,    93,    94,   208,    97,   303,   138,   284,   285,   233,
      235,   237,    45,   320,   105,    46,    47,   338,   341,    48,
@@ -1000,9 +1003,9 @@ static const yytype_int16 yytable[] =
       55,    56,    57,   343,   344,   360,   361,   362,   118,   365,
      366,   369,   109,   121,   122,   123,   124,   125,   376,   377,
      128,   133,   382,   388,   390,    86,    87,    88,   182,   334,
-     296,   282,     2,   265,   255,   300,    62,   166,    89,     5,
+     296,   282,     2,   255,   300,     0,    62,   166,    89,     5,
        6,     7,     8,    63,    64,    65,    66,    67,     2,   280,
-     281,   188,   184,   295,     0,     5,     6,     7,     8,    68,
+     281,   188,   184,   265,   295,     5,     6,     7,     8,    68,
       69,   283,     0,     0,     0,    70,   294,     0,    71,   194,
      131,     0,     0,   175,    29,    29,   179,     0,     0,     0,
        0,    29,   188,     0,     0,     0,     0,     0,     0,   214,
@@ -1015,189 +1018,185 @@ static const yytype_int16 yytable[] =
      271,    29,   273,     0,     0,   356,   276,   277,   278,   120,
      279,     0,     0,   357,     0,   126,   127,     0,     0,     0,
        0,     0,     0,    29,     0,     0,   370,     0,     0,     0,
-       0,     0,    -4,     1,     0,   167,   372,     0,     0,   289,
+       0,     0,   -65,     1,     0,   167,   372,     0,     0,   289,
      290,     0,     0,    29,   292,   293,     0,    29,     0,     0,
-       0,     0,     0,    29,     0,     0,     2,    29,     0,   193,
-       3,     4,     0,     5,     6,     7,     8,     0,     0,     0,
-       9,    10,    11,    12,    13,     0,     0,    14,     0,    15,
-       0,     0,    16,    17,    18,     0,     0,    19,   312,     0,
-      20,    21,    22,    23,     0,     0,     0,     0,     0,     0,
-       0,   321,     0,     0,     0,   232,     0,     0,     0,     0,
-     321,     0,     0,     0,    24,    25,    26,     0,     0,     0,
-       0,     0,     0,     0,     0,   -65,     1,     0,    -4,     0,
-       0,     0,     0,     0,     0,     0,   350,   351,     0,     0,
-     321,     0,   266,     0,   268,     0,   270,     0,   272,     2,
-     274,   275,   -65,     3,   364,     0,     5,     6,     7,     8,
-     368,   -65,   -65,     9,    10,    11,    12,    13,     0,   375,
+       0,     0,     0,    29,     0,     0,     0,    29,     2,   193,
+       0,   -65,     3,     0,     0,     5,     6,     7,     8,     0,
+     -65,   -65,     9,    10,    11,    12,    13,     0,     0,     0,
+       0,    15,     0,     0,    16,    17,    18,     0,   312,    19,
+       0,     0,     0,    21,    22,    23,     0,   139,   140,   141,
+     142,   321,     0,     0,   145,   232,     0,   146,   147,   148,
+     321,     0,     0,     0,     0,     0,    24,    25,     0,   -65,
+     -65,   -65,     0,   149,   150,   151,   152,   153,   154,   155,
+     -65,    -4,     1,     0,     0,     0,   350,   351,     0,     0,
+     321,     0,   266,     0,   268,     0,   270,     0,   272,     0,
+     274,   275,     0,     0,   364,     0,     0,     2,     0,     0,
+     368,     3,     4,     0,     5,     6,     7,     8,     0,   375,
+       0,     9,    10,    11,    12,    13,     0,     0,    14,     0,
+      15,     0,   306,    16,    17,    18,     0,     0,    19,     0,
+       0,    20,    21,    22,    23,     0,   139,   140,   141,   142,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
+       0,     0,     0,     0,     0,    24,    25,    26,     0,     0,
+       0,     0,   149,   150,   151,   152,   153,   154,   155,    -4,
+       0,   -65,     1,     0,     0,     0,     0,     0,     0,     0,
+       0,   317,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   326,   327,   328,   329,     2,     0,     0,
+     -65,     3,     0,     0,     5,     6,     7,     8,     0,   -65,
+       1,     9,    10,    11,    12,    13,     0,     0,     0,     0,
+      15,     0,     0,    16,    17,    18,     0,     0,    19,     0,
+       0,     0,    21,    22,    23,     2,     0,     0,     0,     3,
+       0,     0,     5,     6,     7,     8,     0,     0,     1,     9,
+      10,    11,    12,    13,     0,    24,    25,     0,    15,     0,
+       0,    16,    17,    18,     0,     0,    19,     0,     0,   -65,
+      21,    22,    23,     2,     0,     0,     0,     3,     0,     0,
+       5,     6,     7,     8,     0,   -65,   -65,     9,    10,    11,
+      12,    13,     0,    24,    25,     0,    15,     0,     0,    16,
+      17,    18,     0,     0,    19,     0,     0,   -65,    21,    22,
+      23,     0,     0,     0,     1,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    24,    25,     0,   -65,     0,     0,     0,     0,     2,
+       0,     0,     0,     3,     0,   -65,     5,     6,     7,     8,
+       0,     0,     1,     9,    10,    11,    12,    13,     0,     0,
        0,     0,    15,     0,     0,    16,    17,    18,     0,     0,
       19,     0,     0,     0,    21,    22,    23,     2,     0,     0,
        0,     3,     0,     0,     5,     6,     7,     8,     0,     0,
-       0,     9,    10,    11,    12,     0,     0,    24,    25,     0,
-     -65,   -65,   -65,    16,     0,    18,     0,     0,     0,     0,
-       0,   -65,    21,    22,    23,     0,     0,     0,     0,     0,
-       0,     0,     0,   -65,     1,     0,     0,     0,     0,     0,
-       0,   317,     0,     0,     0,     0,    25,     0,     0,     0,
-       0,     0,     0,   326,   327,   328,   329,     2,     0,     0,
-     -65,     3,     0,     0,     5,     6,     7,     8,     0,     0,
-       0,     9,    10,    11,    12,    13,     0,     0,     0,     0,
-      15,     0,     0,    16,    17,    18,   -65,     1,    19,     0,
-       0,     0,    21,    22,    23,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       2,     0,     0,     0,     3,    24,    25,     5,     6,     7,
-       8,     1,     0,     0,     9,    10,    11,    12,    13,   -65,
-       0,     0,     0,    15,     0,     0,    16,    17,    18,     0,
-       0,    19,     0,     0,     2,    21,    22,    23,     3,     0,
-       0,     5,     6,     7,     8,     0,   -65,   -65,     9,    10,
-      11,    12,    13,     0,     0,     0,     0,    15,    24,    25,
-      16,    17,    18,     0,     0,    19,     0,     0,     0,    21,
-      22,    23,   -65,     0,     0,     0,     0,     1,     0,     0,
+       1,     9,    10,    11,    12,    13,     0,    24,    25,     0,
+      15,     0,   -65,    16,    17,    18,     0,     0,    19,     0,
+       0,   -65,    21,    22,    23,     2,     0,     0,     0,     3,
+       0,     0,     5,     6,     7,     8,     0,     0,     0,     9,
+      10,    11,    12,    13,     0,    24,    25,     0,    15,   -65,
+       0,    16,    17,    18,     0,     0,    19,     0,     0,   -65,
+      21,    22,    23,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    24,    25,     0,   -65,     0,     0,     0,     0,
-       2,     0,     0,     0,     3,     0,   -65,     5,     6,     7,
-       8,     1,     0,     0,     9,    10,    11,    12,    13,     0,
-       0,     0,     0,    15,     0,     0,    16,    17,    18,     0,
-       0,    19,     0,     0,     2,    21,    22,    23,     3,     0,
+       0,     0,     0,    24,    25,     0,   -65,     0,     0,     0,
+       0,    45,     0,     0,    46,    47,     0,   -65,    48,    49,
+      50,     2,    51,    52,     0,     0,     0,    53,    54,    55,
+      56,    57,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    58,    59,    60,    61,     0,     0,     0,
+      45,     0,     0,    46,    47,     0,     0,    48,    49,    50,
+       2,    51,    52,     0,     0,    62,    53,    54,    55,    56,
+      57,     0,    63,    64,    65,    66,    67,     0,     0,     0,
+       0,     0,    58,     0,    60,     0,     0,     0,    68,    69,
+       0,     0,     0,     0,    70,     0,     0,    71,     0,     0,
+       0,     0,     0,     0,    62,     0,     0,     0,     0,     0,
+       0,    63,    64,    65,    66,    67,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    68,    69,     0,
+       0,    45,     0,    70,    46,    47,    71,    82,    48,    49,
+      50,     2,    51,    52,     0,     0,     0,    53,    54,    55,
+      56,    57,     0,     0,     0,     0,     0,    45,     0,     0,
+      46,    47,     0,     0,    48,    49,    50,     2,    51,    52,
+       0,     0,     0,    53,    54,    55,    56,    57,     0,     0,
+       0,     0,     0,     0,     0,    62,     0,     0,     0,     0,
+       0,     0,    63,    64,    65,    66,    67,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    68,    69,
+       0,    62,     0,     0,    70,     0,     0,    71,    63,    64,
+      65,    66,    67,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    68,    69,     0,     0,    45,     0,
+      70,    46,    47,    71,     0,    48,    49,    50,     2,    51,
+      52,     0,     0,     0,    53,    54,    55,    56,    57,     0,
+       0,     0,     0,     0,    45,     0,     0,    46,    47,     0,
+       0,    48,    49,    50,     2,    51,    52,     0,     0,     0,
+      53,    54,    55,    56,    57,     0,     0,     0,     0,     0,
+       0,     0,    62,     0,     0,     0,     0,     0,     0,    63,
+      64,    65,    66,    67,   -38,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    68,    69,     0,    62,     0,
+       0,   102,     0,     0,    71,    63,    64,    65,    66,    67,
+       0,   139,   140,   141,   142,   143,   144,     0,   145,     0,
+       0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
+      71,     0,     0,     0,     0,     0,     0,   149,   150,   151,
+     152,   153,   154,   155,     2,     0,     0,     0,     3,     0,
        0,     5,     6,     7,     8,     0,     0,     0,     9,    10,
-      11,    12,    13,     0,     0,     0,     0,    15,    24,    25,
-      16,    17,    18,   -65,     0,    19,     0,     0,     0,    21,
-      22,    23,   -65,     0,     0,     0,     0,     1,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    24,    25,     0,     0,   -65,     0,     0,     0,
-       2,     0,     0,     0,     3,     0,   -65,     5,     6,     7,
-       8,     0,     0,     0,     9,    10,    11,    12,    13,     0,
-       0,     0,     0,    15,     0,     0,    16,    17,    18,     0,
-       0,    19,     0,     0,     0,    21,    22,    23,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    24,    25,
-       0,   -65,     0,     0,     0,     0,    45,     0,     0,    46,
-      47,     0,   -65,    48,    49,    50,     2,    51,    52,     0,
-       0,     0,    53,    54,    55,    56,    57,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    58,    59,
-      60,    61,     0,     0,     0,    45,     0,     0,    46,    47,
-       0,     0,    48,    49,    50,     2,    51,    52,     0,     0,
-      62,    53,    54,    55,    56,    57,     0,    63,    64,    65,
-      66,    67,     0,     0,     0,     0,     0,    58,     0,    60,
-       0,     0,     0,    68,    69,     0,     0,     0,     0,    70,
-       0,     0,    71,     0,     0,     0,     0,     0,     0,    62,
-       0,     0,     0,     0,     0,     0,    63,    64,    65,    66,
-      67,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    68,    69,     0,     0,    45,     0,    70,    46,
-      47,    71,    82,    48,    49,    50,     2,    51,    52,     0,
-       0,     0,    53,    54,    55,    56,    57,     0,     0,     0,
-       0,     0,    45,     0,     0,    46,    47,     0,     0,    48,
-      49,    50,     2,    51,    52,     0,     0,     0,    53,    54,
-      55,    56,    57,     0,     0,     0,     0,     0,     0,     0,
-      62,     0,     0,     0,     0,     0,     0,    63,    64,    65,
-      66,    67,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    68,    69,     0,    62,     0,     0,    70,
-       0,     0,    71,    63,    64,    65,    66,    67,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    68,
-      69,     0,     0,    45,     0,    70,    46,    47,    71,     0,
-      48,    49,    50,     2,    51,    52,     0,     0,     0,    53,
-      54,    55,    56,    57,     0,     0,     0,     0,     0,    45,
-       0,     0,    46,    47,     0,     0,    48,    49,    50,     2,
-      51,    52,     0,     0,     0,    53,    54,    55,    56,    57,
-       0,     0,     0,     0,     0,     0,     0,    62,     0,     0,
-       0,     0,     0,     0,    63,    64,    65,    66,    67,   -38,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      68,    69,     0,    62,     0,     0,   102,     0,     0,    71,
-      63,    64,    65,    66,    67,     0,   139,   140,   141,   142,
+      11,    12,     0,     0,     0,   159,     0,     0,     0,     0,
+      16,     0,    18,     0,     0,     0,     0,     0,     0,    21,
+      22,    23,     0,   139,   140,   141,   142,   143,   144,     0,
+     145,   160,   161,   146,   147,   148,     0,     0,     0,     0,
+      58,     0,    60,    25,     0,     0,     0,     0,     0,   149,
+     150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
      143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
-       0,   159,     0,     0,     0,    71,     0,     0,     0,     0,
-       0,     0,   149,   150,   151,   152,   153,   154,   155,   139,
-     140,   141,   142,   143,   144,     0,   145,   160,   161,   146,
-     147,   148,     0,     0,     0,     0,    58,     0,    60,     0,
-       0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
+       0,     0,     0,     0,     0,   195,     0,     0,     0,     0,
+       0,   196,   149,   150,   151,   152,   153,   154,   155,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,     0,     0,     0,     0,     0,     0,   197,     0,
+       0,     0,     0,     0,   198,   149,   150,   151,   152,   153,
      154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
        0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
-       0,   195,     0,     0,     0,     0,     0,   196,   149,   150,
+       0,   199,     0,     0,     0,     0,     0,   200,   149,   150,
      151,   152,   153,   154,   155,   139,   140,   141,   142,   143,
      144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
-       0,     0,     0,     0,   197,     0,     0,     0,     0,     0,
-     198,   149,   150,   151,   152,   153,   154,   155,   139,   140,
+       0,     0,     0,     0,   201,     0,     0,     0,     0,     0,
+     202,   149,   150,   151,   152,   153,   154,   155,   139,   140,
      141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,     0,   199,     0,     0,
-       0,     0,     0,   200,   149,   150,   151,   152,   153,   154,
+     148,     0,     0,     0,     0,     0,     0,   307,     0,     0,
+       0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
      155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
        0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
-     201,     0,     0,     0,     0,     0,   202,   149,   150,   151,
+     308,     0,     0,     0,     0,     0,     0,   149,   150,   151,
      152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
        0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
-       0,     0,     0,   306,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   309,     0,     0,     0,     0,     0,     0,
      149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
      142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
-       0,     0,     0,     0,     0,     0,   307,     0,     0,     0,
-       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
-     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
-     146,   147,   148,     0,     0,     0,     0,     0,     0,   308,
-       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
-     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
-     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
-       0,     0,   309,     0,     0,     0,     0,     0,     0,   149,
-     150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
-     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   177,   149,   150,   151,   152,   153,   154,   155,   139,
-     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
-     147,   148,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
-     154,   155,   244,   178,     0,     0,     0,     0,     0,     0,
-     139,   140,   245,   142,   143,   144,     0,   145,     0,     0,
+       0,     0,   177,   149,   150,   151,   152,   153,   154,   155,
+     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
      146,   147,   148,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
-     153,   154,   155,   173,     0,     0,     0,     0,     0,   139,
-     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
-     147,   148,   139,   140,   141,   142,   143,   144,     0,   145,
-       0,     0,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,     0,     0,     0,     0,     0,     0,   149,   150,
-     151,   152,   153,   154,   155,     0,     0,     0,   205,   186,
+     153,   154,   155,   244,   178,     0,     0,     0,     0,     0,
+       0,   139,   140,   245,   142,   143,   144,     0,   145,     0,
+       0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   149,   150,   151,
+     152,   153,   154,   155,   173,     0,     0,     0,     0,     0,
      139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
      146,   147,   148,   139,   140,   141,   142,   143,   144,     0,
      145,     0,     0,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,   155,     0,     0,     0,     0,   186,     0,   149,
-     150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
-     340,   139,   140,   141,   142,   143,   144,     0,   145,     0,
-       0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   149,   150,   151,
-     152,   153,   154,   155,     0,     0,     0,   205,   139,   140,
-     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,   203,   204,     0,     0,
-       0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
-     155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
-       0,   146,   147,   148,   139,   140,   141,   142,     0,     0,
+     153,   154,   155,     0,     0,     0,     0,     0,     0,   149,
+     150,   151,   152,   153,   154,   155,     0,     0,     0,   205,
+     186,   139,   140,   141,   142,   143,   144,     0,   145,     0,
+       0,   146,   147,   148,   139,   140,   141,   142,   143,   144,
        0,   145,     0,     0,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-     149,   150,   151,   152,   153,   154,   155
+     152,   153,   154,   155,     0,     0,     0,     0,   186,     0,
+     149,   150,   151,   152,   153,   154,   155,     0,     0,     0,
+       0,   340,   139,   140,   141,   142,   143,   144,     0,   145,
+       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   149,   150,
+     151,   152,   153,   154,   155,     0,     0,     0,   205,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,     0,     0,     0,     0,     0,   203,   204,     0,
+       0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
+     154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
+       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   149,   150,
+     151,   152,   153,   154,   155
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   108,     0,    41,   241,    22,   264,   310,     0,   335,
-      97,   367,    43,   261,    96,   102,    69,    51,    18,    19,
-      20,    51,    24,   379,    69,     0,    69,    72,   384,    31,
-      32,    33,    34,    64,    97,    42,    48,   340,    91,    92,
-      93,    94,    56,    57,    44,    90,    91,    92,    93,    94,
-      93,    94,    27,   311,    53,   381,   304,   305,    75,    54,
-      54,    36,    37,    46,   102,    97,    98,    99,   316,    64,
-      64,    71,   320,    75,    76,    77,    78,    94,    85,    24,
-      80,    54,    82,   331,    84,    54,    31,    32,    33,    34,
-      99,    64,    36,    37,    69,    64,    96,    72,    98,    99,
-     138,   101,   102,   101,    96,   353,   106,    98,   108,   346,
-      85,    86,    87,   102,   102,    90,    91,    92,    93,    94,
-     101,    96,    99,    99,   231,   373,    48,   364,    99,   377,
-      54,    55,    56,    57,    99,   383,    53,   374,   138,   387,
-      99,    11,    96,   380,    96,    98,    16,    44,   186,    96,
-     157,    21,    22,   102,    24,   262,    97,    98,    99,   159,
-     160,   161,    14,    96,    34,    17,    18,    87,    98,    21,
-      22,    23,    24,    25,    26,   159,   160,   161,    30,    31,
-      32,    33,    34,    27,    98,    54,    35,    86,    58,    85,
-      99,    54,   192,    63,    64,    65,    66,    67,    85,    53,
-      70,    71,    86,    86,    86,    17,    18,    19,   101,   315,
-     254,   211,    24,   192,   178,   256,    68,    87,    30,    31,
-      32,    33,    34,    75,    76,    77,    78,    79,    24,    25,
-      26,   231,   102,   253,    -1,    31,    32,    33,    34,    91,
-      92,   211,    -1,    -1,    -1,    97,   246,    -1,   100,   119,
-     102,    -1,    -1,   253,   254,   255,   256,    -1,    -1,    -1,
+       0,   108,     0,    41,   241,    22,     0,   264,   310,   335,
+      98,    56,    71,   261,    53,    56,   367,    71,    18,    19,
+      20,    66,    26,     0,    71,    66,    53,    74,   379,    33,
+      34,    35,    36,   384,    50,    42,    95,    96,   340,    93,
+      94,    95,    96,    56,    44,    92,    93,    94,    95,    96,
+      58,    59,    29,    66,   311,   381,   304,   305,    75,    56,
+      45,    38,    39,    99,   102,    99,    38,    39,   316,    66,
+     104,    71,   320,    77,    78,    79,    80,    94,    85,    26,
+      80,    66,    82,   331,    84,    48,    33,    34,    35,    36,
+      54,    55,    56,    57,    71,    55,    96,    74,    98,    99,
+     138,   101,   102,   101,    98,   353,   106,   103,   108,   346,
+      87,    88,    89,   101,   104,    92,    93,    94,    95,    96,
+     101,    98,   104,   101,   231,   373,    50,   364,   101,   377,
+      99,   100,   101,   101,   100,   383,    55,   374,   138,   387,
+     101,    11,    98,   380,    98,   100,    16,    46,   186,    98,
+     157,    21,    22,   104,    24,   262,    99,   100,   101,   159,
+     160,   161,    16,    98,    34,    19,    20,    89,   100,    23,
+      24,    25,    26,    27,    28,   159,   160,   161,    32,    33,
+      34,    35,    36,    29,   100,    56,    37,    88,    58,    87,
+     101,    56,   192,    63,    64,    65,    66,    67,    87,    55,
+      70,    71,    88,    88,    88,    19,    20,    21,   101,   315,
+     254,   211,    26,   178,   256,    -1,    70,    87,    32,    33,
+      34,    35,    36,    77,    78,    79,    80,    81,    26,    27,
+      28,   231,   102,   192,   253,    33,    34,    35,    36,    93,
+      94,   211,    -1,    -1,    -1,    99,   246,    -1,   102,   119,
+     104,    -1,    -1,   253,   254,   255,   256,    -1,    -1,    -1,
       -1,   261,   262,    -1,    -1,    -1,    -1,    -1,    -1,   139,
      140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
      150,   151,   152,   153,   154,   155,    -1,    -1,    -1,   296,
@@ -1210,228 +1209,224 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,   353,    -1,    -1,   363,    -1,    -1,    -1,
       -1,    -1,     0,     1,    -1,    88,   366,    -1,    -1,   239,
      240,    -1,    -1,   373,   244,   245,    -1,   377,    -1,    -1,
-      -1,    -1,    -1,   383,    -1,    -1,    24,   387,    -1,   112,
-      28,    29,    -1,    31,    32,    33,    34,    -1,    -1,    -1,
-      38,    39,    40,    41,    42,    -1,    -1,    45,    -1,    47,
-      -1,    -1,    50,    51,    52,    -1,    -1,    55,   288,    -1,
-      58,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   301,    -1,    -1,    -1,   158,    -1,    -1,    -1,    -1,
-     310,    -1,    -1,    -1,    82,    83,    84,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     0,     1,    -1,    96,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   336,   337,    -1,    -1,
-     340,    -1,   195,    -1,   197,    -1,   199,    -1,   201,    24,
-     203,   204,    27,    28,   354,    -1,    31,    32,    33,    34,
-     360,    36,    37,    38,    39,    40,    41,    42,    -1,   369,
-      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    -1,    59,    60,    61,    24,    -1,    -1,
-      -1,    28,    -1,    -1,    31,    32,    33,    34,    -1,    -1,
-      -1,    38,    39,    40,    41,    -1,    -1,    82,    83,    -1,
-      85,    86,    87,    50,    -1,    52,    -1,    -1,    -1,    -1,
-      -1,    96,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     0,     1,    -1,    -1,    -1,    -1,    -1,
-      -1,   294,    -1,    -1,    -1,    -1,    83,    -1,    -1,    -1,
-      -1,    -1,    -1,   306,   307,   308,   309,    24,    -1,    -1,
-      27,    28,    -1,    -1,    31,    32,    33,    34,    -1,    -1,
-      -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
-      47,    -1,    -1,    50,    51,    52,     0,     1,    55,    -1,
-      -1,    -1,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      24,    -1,    -1,    -1,    28,    82,    83,    31,    32,    33,
-      34,     1,    -1,    -1,    38,    39,    40,    41,    42,    96,
-      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
-      -1,    55,    -1,    -1,    24,    59,    60,    61,    28,    -1,
-      -1,    31,    32,    33,    34,    -1,    36,    37,    38,    39,
-      40,    41,    42,    -1,    -1,    -1,    -1,    47,    82,    83,
-      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,
-      60,    61,    96,    -1,    -1,    -1,    -1,     1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    82,    83,    -1,    85,    -1,    -1,    -1,    -1,
-      24,    -1,    -1,    -1,    28,    -1,    96,    31,    32,    33,
-      34,     1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
-      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
-      -1,    55,    -1,    -1,    24,    59,    60,    61,    28,    -1,
-      -1,    31,    32,    33,    34,    -1,    -1,    -1,    38,    39,
-      40,    41,    42,    -1,    -1,    -1,    -1,    47,    82,    83,
-      50,    51,    52,    87,    -1,    55,    -1,    -1,    -1,    59,
-      60,    61,    96,    -1,    -1,    -1,    -1,     1,    -1,    -1,
+      -1,    -1,    -1,   383,    -1,    -1,    -1,   387,    26,   112,
+      -1,    29,    30,    -1,    -1,    33,    34,    35,    36,    -1,
+      38,    39,    40,    41,    42,    43,    44,    -1,    -1,    -1,
+      -1,    49,    -1,    -1,    52,    53,    54,    -1,   288,    57,
+      -1,    -1,    -1,    61,    62,    63,    -1,    64,    65,    66,
+      67,   301,    -1,    -1,    71,   158,    -1,    74,    75,    76,
+     310,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    87,
+      88,    89,    -1,    90,    91,    92,    93,    94,    95,    96,
+      98,     0,     1,    -1,    -1,    -1,   336,   337,    -1,    -1,
+     340,    -1,   195,    -1,   197,    -1,   199,    -1,   201,    -1,
+     203,   204,    -1,    -1,   354,    -1,    -1,    26,    -1,    -1,
+     360,    30,    31,    -1,    33,    34,    35,    36,    -1,   369,
+      -1,    40,    41,    42,    43,    44,    -1,    -1,    47,    -1,
+      49,    -1,    50,    52,    53,    54,    -1,    -1,    57,    -1,
+      -1,    60,    61,    62,    63,    -1,    64,    65,    66,    67,
+      68,    69,    -1,    71,    -1,    -1,    74,    75,    76,    -1,
+      -1,    -1,    -1,    -1,    -1,    84,    85,    86,    -1,    -1,
+      -1,    -1,    90,    91,    92,    93,    94,    95,    96,    98,
+      -1,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   294,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   306,   307,   308,   309,    26,    -1,    -1,
+      29,    30,    -1,    -1,    33,    34,    35,    36,    -1,     0,
+       1,    40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,
+      49,    -1,    -1,    52,    53,    54,    -1,    -1,    57,    -1,
+      -1,    -1,    61,    62,    63,    26,    -1,    -1,    -1,    30,
+      -1,    -1,    33,    34,    35,    36,    -1,    -1,     1,    40,
+      41,    42,    43,    44,    -1,    84,    85,    -1,    49,    -1,
+      -1,    52,    53,    54,    -1,    -1,    57,    -1,    -1,    98,
+      61,    62,    63,    26,    -1,    -1,    -1,    30,    -1,    -1,
+      33,    34,    35,    36,    -1,    38,    39,    40,    41,    42,
+      43,    44,    -1,    84,    85,    -1,    49,    -1,    -1,    52,
+      53,    54,    -1,    -1,    57,    -1,    -1,    98,    61,    62,
+      63,    -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    82,    83,    -1,    -1,    86,    -1,    -1,    -1,
-      24,    -1,    -1,    -1,    28,    -1,    96,    31,    32,    33,
-      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
-      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
-      -1,    55,    -1,    -1,    -1,    59,    60,    61,    -1,    -1,
+      -1,    84,    85,    -1,    87,    -1,    -1,    -1,    -1,    26,
+      -1,    -1,    -1,    30,    -1,    98,    33,    34,    35,    36,
+      -1,    -1,     1,    40,    41,    42,    43,    44,    -1,    -1,
+      -1,    -1,    49,    -1,    -1,    52,    53,    54,    -1,    -1,
+      57,    -1,    -1,    -1,    61,    62,    63,    26,    -1,    -1,
+      -1,    30,    -1,    -1,    33,    34,    35,    36,    -1,    -1,
+       1,    40,    41,    42,    43,    44,    -1,    84,    85,    -1,
+      49,    -1,    89,    52,    53,    54,    -1,    -1,    57,    -1,
+      -1,    98,    61,    62,    63,    26,    -1,    -1,    -1,    30,
+      -1,    -1,    33,    34,    35,    36,    -1,    -1,    -1,    40,
+      41,    42,    43,    44,    -1,    84,    85,    -1,    49,    88,
+      -1,    52,    53,    54,    -1,    -1,    57,    -1,    -1,    98,
+      61,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,
-      -1,    85,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
-      18,    -1,    96,    21,    22,    23,    24,    25,    26,    -1,
-      -1,    -1,    30,    31,    32,    33,    34,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    -1,    -1,
-      68,    30,    31,    32,    33,    34,    -1,    75,    76,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,
-      -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,    97,
-      -1,    -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,    68,
-      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    91,    92,    -1,    -1,    14,    -1,    97,    17,
-      18,   100,    20,    21,    22,    23,    24,    25,    26,    -1,
-      -1,    -1,    30,    31,    32,    33,    34,    -1,    -1,    -1,
-      -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    -1,    -1,    -1,    30,    31,
-      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    91,    92,    -1,    68,    -1,    -1,    97,
-      -1,    -1,   100,    75,    76,    77,    78,    79,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,
-      92,    -1,    -1,    14,    -1,    97,    17,    18,   100,    -1,
-      21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    30,
-      31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    14,
-      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    -1,    -1,    -1,    30,    31,    32,    33,    34,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
-      -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,    35,
+      -1,    -1,    -1,    84,    85,    -1,    87,    -1,    -1,    -1,
+      -1,    16,    -1,    -1,    19,    20,    -1,    98,    23,    24,
+      25,    26,    27,    28,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    48,    49,    50,    51,    -1,    -1,    -1,
+      16,    -1,    -1,    19,    20,    -1,    -1,    23,    24,    25,
+      26,    27,    28,    -1,    -1,    70,    32,    33,    34,    35,
+      36,    -1,    77,    78,    79,    80,    81,    -1,    -1,    -1,
+      -1,    -1,    48,    -1,    50,    -1,    -1,    -1,    93,    94,
+      -1,    -1,    -1,    -1,    99,    -1,    -1,   102,    -1,    -1,
+      -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,
+      -1,    77,    78,    79,    80,    81,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    -1,
+      -1,    16,    -1,    99,    19,    20,   102,    22,    23,    24,
+      25,    26,    27,    28,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    -1,    -1,    -1,    -1,    -1,    16,    -1,    -1,
+      19,    20,    -1,    -1,    23,    24,    25,    26,    27,    28,
+      -1,    -1,    -1,    32,    33,    34,    35,    36,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    -1,
+      -1,    -1,    77,    78,    79,    80,    81,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
+      -1,    70,    -1,    -1,    99,    -1,    -1,   102,    77,    78,
+      79,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    93,    94,    -1,    -1,    16,    -1,
+      99,    19,    20,   102,    -1,    23,    24,    25,    26,    27,
+      28,    -1,    -1,    -1,    32,    33,    34,    35,    36,    -1,
+      -1,    -1,    -1,    -1,    16,    -1,    -1,    19,    20,    -1,
+      -1,    23,    24,    25,    26,    27,    28,    -1,    -1,    -1,
+      32,    33,    34,    35,    36,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    77,
+      78,    79,    80,    81,    37,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    93,    94,    -1,    70,    -1,
+      -1,    99,    -1,    -1,   102,    77,    78,    79,    80,    81,
+      -1,    64,    65,    66,    67,    68,    69,    -1,    71,    -1,
+      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+     102,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    92,
+      93,    94,    95,    96,    26,    -1,    -1,    -1,    30,    -1,
+      -1,    33,    34,    35,    36,    -1,    -1,    -1,    40,    41,
+      42,    43,    -1,    -1,    -1,    46,    -1,    -1,    -1,    -1,
+      52,    -1,    54,    -1,    -1,    -1,    -1,    -1,    -1,    61,
+      62,    63,    -1,    64,    65,    66,    67,    68,    69,    -1,
+      71,    72,    73,    74,    75,    76,    -1,    -1,    -1,    -1,
+      48,    -1,    50,    85,    -1,    -1,    -1,    -1,    -1,    90,
+      91,    92,    93,    94,    95,    96,    64,    65,    66,    67,
+      68,    69,    -1,    71,    -1,    -1,    74,    75,    76,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
+      -1,    56,    90,    91,    92,    93,    94,    95,    96,    64,
+      65,    66,    67,    68,    69,    -1,    71,    -1,    -1,    74,
+      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+      -1,    -1,    -1,    -1,    56,    90,    91,    92,    93,    94,
+      95,    96,    64,    65,    66,    67,    68,    69,    -1,    71,
+      -1,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    50,    -1,    -1,    -1,    -1,    -1,    56,    90,    91,
+      92,    93,    94,    95,    96,    64,    65,    66,    67,    68,
+      69,    -1,    71,    -1,    -1,    74,    75,    76,    -1,    -1,
+      -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
+      56,    90,    91,    92,    93,    94,    95,    96,    64,    65,
+      66,    67,    68,    69,    -1,    71,    -1,    -1,    74,    75,
+      76,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
+      -1,    -1,    -1,    -1,    90,    91,    92,    93,    94,    95,
+      96,    64,    65,    66,    67,    68,    69,    -1,    71,    -1,
+      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      50,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    92,
+      93,    94,    95,    96,    64,    65,    66,    67,    68,    69,
+      -1,    71,    -1,    -1,    74,    75,    76,    -1,    -1,    -1,
+      -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
+      90,    91,    92,    93,    94,    95,    96,    64,    65,    66,
+      67,    68,    69,    -1,    71,    -1,    -1,    74,    75,    76,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      91,    92,    -1,    68,    -1,    -1,    97,    -1,    -1,   100,
-      75,    76,    77,    78,    79,    -1,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-      -1,    44,    -1,    -1,    -1,   100,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    62,
-      63,    64,    65,    66,    67,    -1,    69,    70,    71,    72,
-      73,    74,    -1,    -1,    -1,    -1,    46,    -1,    48,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
-      93,    94,    62,    63,    64,    65,    66,    67,    -1,    69,
-      -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,
-      90,    91,    92,    93,    94,    62,    63,    64,    65,    66,
-      67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
-      -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
-      54,    88,    89,    90,    91,    92,    93,    94,    62,    63,
-      64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    -1,    54,    88,    89,    90,    91,    92,    93,
-      94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,
-      91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
-      -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
-      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
-      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
-      -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
-      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,
-      89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    54,    88,    89,    90,    91,    92,    93,    94,    62,
-      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
-      93,    94,    54,    96,    -1,    -1,    -1,    -1,    -1,    -1,
-      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94,    56,    -1,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    62,    63,    64,    65,    66,    67,    -1,    69,
-      -1,    -1,    72,    73,    74,    88,    89,    90,    91,    92,
-      93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    91,    92,    93,    94,    -1,    -1,    -1,    98,    99,
-      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    62,    63,    64,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    88,    89,    90,    91,
-      92,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,    88,
-      89,    90,    91,    92,    93,    94,    -1,    -1,    -1,    -1,
-      99,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
-      91,    92,    93,    94,    -1,    -1,    -1,    98,    62,    63,
-      64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    80,    81,    -1,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
-      94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    62,    63,    64,    65,    -1,    -1,
-      -1,    69,    -1,    -1,    72,    73,    74,    88,    89,    90,
-      91,    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    91,    92,    93,    94
+      -1,    -1,    56,    90,    91,    92,    93,    94,    95,    96,
+      64,    65,    66,    67,    68,    69,    -1,    71,    -1,    -1,
+      74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    92,    93,
+      94,    95,    96,    56,    98,    -1,    -1,    -1,    -1,    -1,
+      -1,    64,    65,    66,    67,    68,    69,    -1,    71,    -1,
+      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    92,
+      93,    94,    95,    96,    58,    -1,    -1,    -1,    -1,    -1,
+      64,    65,    66,    67,    68,    69,    -1,    71,    -1,    -1,
+      74,    75,    76,    64,    65,    66,    67,    68,    69,    -1,
+      71,    -1,    -1,    74,    75,    76,    90,    91,    92,    93,
+      94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    90,
+      91,    92,    93,    94,    95,    96,    -1,    -1,    -1,   100,
+     101,    64,    65,    66,    67,    68,    69,    -1,    71,    -1,
+      -1,    74,    75,    76,    64,    65,    66,    67,    68,    69,
+      -1,    71,    -1,    -1,    74,    75,    76,    90,    91,    92,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,   101,    -1,
+      90,    91,    92,    93,    94,    95,    96,    -1,    -1,    -1,
+      -1,   101,    64,    65,    66,    67,    68,    69,    -1,    71,
+      -1,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,
+      92,    93,    94,    95,    96,    -1,    -1,    -1,   100,    64,
+      65,    66,    67,    68,    69,    -1,    71,    -1,    -1,    74,
+      75,    76,    -1,    -1,    -1,    -1,    -1,    82,    83,    -1,
+      -1,    -1,    -1,    -1,    -1,    90,    91,    92,    93,    94,
+      95,    96,    64,    65,    66,    67,    68,    69,    -1,    71,
+      -1,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,
+      92,    93,    94,    95,    96
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     1,    24,    28,    29,    31,    32,    33,    34,    38,
-      39,    40,    41,    42,    45,    47,    50,    51,    52,    55,
-      58,    59,    60,    61,    82,    83,    84,   104,   105,   106,
-     107,   108,   109,   121,   127,   137,   145,   147,   149,   152,
-      96,   148,   151,    51,   138,    14,    17,    18,    21,    22,
-      23,    25,    26,    30,    31,    32,    33,    34,    46,    47,
-      48,    49,    68,    75,    76,    77,    78,    79,    91,    92,
-      97,   100,   106,   131,   133,   134,   135,   136,   146,   160,
-     150,    51,    20,   134,    56,    57,    17,    18,    19,    30,
-     106,   106,   106,   134,   134,   146,   140,   134,   139,   153,
-       0,    96,    97,   134,   158,   134,   128,   158,   128,   106,
-     142,   133,    48,   133,   131,   131,   131,   131,   134,    46,
-     133,   134,   134,   134,   134,   134,   133,   133,   134,    25,
-      26,   102,   106,   134,   161,   162,   163,   164,    97,    62,
-      63,    64,    65,    66,    67,    69,    72,    73,    74,    88,
-      89,    90,    91,    92,    93,    94,   146,   106,   106,    44,
-      70,    71,   106,   128,    54,    64,   134,   133,    54,    64,
-      54,    64,    53,    56,   146,   106,   144,    54,    96,   106,
-     143,   106,   105,   106,   134,   158,    99,   124,   106,   154,
-     155,   155,    99,   133,   134,    48,    54,    48,    54,    48,
-      54,    48,    54,    80,    81,    98,   102,   102,   102,   101,
-      99,    99,   106,   158,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   128,   133,   106,   135,   106,   135,   106,   135,    43,
-      64,   134,   134,   134,    54,    64,    48,   134,   134,   134,
-     134,   134,   134,    99,   120,   120,    99,    98,    99,    98,
-     158,    53,    99,    96,    96,   142,   133,   134,   133,   134,
-     133,   134,   133,   134,   133,   133,   134,   134,   134,   134,
-      25,    26,   106,   164,    98,    99,    98,   155,    44,   134,
-     134,   124,   134,   134,   106,   144,   108,   109,   129,   130,
-     143,   141,   129,   155,   157,   157,    48,    48,    48,    48,
-     132,    96,   134,   116,   110,   113,   119,   133,   128,   128,
-      96,   134,   159,   125,   129,   129,   133,   133,   133,   133,
-     159,   157,   128,   126,   126,   129,    54,    64,    87,   129,
-      99,    98,   122,    27,    98,   129,   117,   111,   114,   125,
-     134,   134,   159,    36,    37,   123,   128,   106,   156,   124,
-      54,    35,    86,   129,   134,    85,    99,   118,   134,    54,
-     128,   124,   106,   119,   112,   134,    85,    53,   129,   124,
-     115,   129,    86,   119,   124,   125,   129,   119,    86,   129,
-      86
+       0,     1,    26,    30,    31,    33,    34,    35,    36,    40,
+      41,    42,    43,    44,    47,    49,    52,    53,    54,    57,
+      60,    61,    62,    63,    84,    85,    86,   106,   107,   108,
+     109,   110,   111,   123,   129,   139,   147,   149,   151,   154,
+      98,   150,   153,    53,   140,    16,    19,    20,    23,    24,
+      25,    27,    28,    32,    33,    34,    35,    36,    48,    49,
+      50,    51,    70,    77,    78,    79,    80,    81,    93,    94,
+      99,   102,   108,   133,   135,   136,   137,   138,   148,   162,
+     152,    53,    22,   136,    58,    59,    19,    20,    21,    32,
+     108,   108,   108,   136,   136,   148,   142,   136,   141,   155,
+       0,    98,    99,   136,   160,   136,   130,   160,   130,   108,
+     144,   135,    50,   135,   133,   133,   133,   133,   136,    48,
+     135,   136,   136,   136,   136,   136,   135,   135,   136,    27,
+      28,   104,   108,   136,   163,   164,   165,   166,    99,    64,
+      65,    66,    67,    68,    69,    71,    74,    75,    76,    90,
+      91,    92,    93,    94,    95,    96,   148,   108,   108,    46,
+      72,    73,   108,   130,    56,    66,   136,   135,    56,    66,
+      56,    66,    55,    58,   148,   108,   146,    56,    98,   108,
+     145,   108,   107,   108,   136,   160,   101,   126,   108,   156,
+     157,   157,   101,   135,   136,    50,    56,    50,    56,    50,
+      56,    50,    56,    82,    83,   100,   104,   104,   104,   103,
+     101,   101,   108,   160,   136,   136,   136,   136,   136,   136,
+     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
+     136,   130,   135,   108,   137,   108,   137,   108,   137,    45,
+      66,   136,   136,   136,    56,    66,    50,   136,   136,   136,
+     136,   136,   136,   101,   122,   122,   101,   100,   101,   100,
+     160,    55,   101,    98,    98,   144,   135,   136,   135,   136,
+     135,   136,   135,   136,   135,   135,   136,   136,   136,   136,
+      27,    28,   108,   166,   100,   101,   100,   157,    46,   136,
+     136,   126,   136,   136,   108,   146,   110,   111,   131,   132,
+     145,   143,   131,   157,   159,   159,    50,    50,    50,    50,
+     134,    98,   136,   118,   112,   115,   121,   135,   130,   130,
+      98,   136,   161,   127,   131,   131,   135,   135,   135,   135,
+     161,   159,   130,   128,   128,   131,    56,    66,    89,   131,
+     101,   100,   124,    29,   100,   131,   119,   113,   116,   127,
+     136,   136,   161,    38,    39,   125,   130,   108,   158,   126,
+      56,    37,    88,   131,   136,    87,   101,   120,   136,    56,
+     130,   126,   108,   121,   114,   136,    87,    55,   131,   126,
+     117,   131,    88,   121,   126,   127,   131,   121,    88,   131,
+      88
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   103,   104,   104,   105,   105,   105,   106,   106,   106,
-     106,   106,   107,   107,   107,   107,   107,   107,   107,   107,
-     107,   107,   107,   107,   107,   107,   107,   107,   107,   108,
-     108,   109,   109,   109,   110,   111,   112,   109,   113,   114,
-     115,   109,   116,   117,   118,   109,   109,   109,   109,   109,
-     109,   119,   120,   121,   121,   122,   122,   123,   124,   125,
-     126,   127,   128,   129,   129,   130,   130,   131,   131,   131,
-     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   131,   131,   131,   132,   131,   131,   131,   133,   133,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   135,   135,
-     135,   135,   135,   135,   135,   135,   135,   135,   136,   136,
-     136,   137,   137,   137,   137,   137,   138,   137,   139,   137,
-     140,   137,   137,   137,   137,   141,   137,   137,   137,   142,
-     142,   142,   143,   143,   143,   144,   144,   144,   145,   145,
-     145,   145,   145,   145,   146,   146,   147,   147,   147,   148,
-     147,   150,   149,   149,   151,   149,   149,   149,   153,   152,
-     154,   155,   155,   155,   156,   156,   156,   157,   158,   158,
-     158,   159,   159,   159,   160,   161,   161,   161,   161,   162,
-     162,   163,   163,   164,   164,   164
+       0,   105,   106,   106,   107,   107,   107,   108,   108,   108,
+     108,   108,   109,   109,   109,   109,   109,   109,   109,   109,
+     109,   109,   109,   109,   109,   109,   109,   109,   109,   110,
+     110,   111,   111,   111,   112,   113,   114,   111,   115,   116,
+     117,   111,   118,   119,   120,   111,   111,   111,   111,   111,
+     111,   121,   122,   123,   123,   124,   124,   125,   126,   127,
+     128,   129,   130,   131,   131,   132,   132,   133,   133,   133,
+     133,   133,   133,   133,   133,   133,   133,   133,   133,   133,
+     133,   133,   133,   133,   134,   133,   133,   133,   135,   135,
+     136,   136,   136,   136,   136,   136,   136,   136,   136,   136,
+     136,   136,   136,   136,   136,   136,   136,   136,   137,   137,
+     137,   137,   137,   137,   137,   137,   137,   137,   138,   138,
+     138,   139,   139,   139,   139,   139,   140,   139,   141,   139,
+     142,   139,   139,   139,   139,   143,   139,   139,   139,   144,
+     144,   144,   145,   145,   145,   146,   146,   146,   147,   147,
+     147,   147,   147,   147,   148,   148,   149,   149,   149,   150,
+     149,   152,   151,   151,   153,   151,   151,   151,   155,   154,
+     156,   157,   157,   157,   158,   158,   158,   159,   160,   160,
+     160,   161,   161,   161,   162,   163,   163,   163,   163,   164,
+     164,   165,   165,   166,   166,   166
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1728,63 +1723,63 @@ yydestruct (const char *yymsg,
   switch (yykind)
     {
     case YYSYMBOL_THEFUNC: /* THEFUNC  */
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 231 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1734 "engines/director/lingo/lingo-gr.cpp"
+#line 1729 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_THEFUNCINOF: /* THEFUNCINOF  */
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 231 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1740 "engines/director/lingo/lingo-gr.cpp"
+#line 1735 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_VARID: /* VARID  */
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 231 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1746 "engines/director/lingo/lingo-gr.cpp"
+#line 1741 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_STRING: /* STRING  */
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 231 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1752 "engines/director/lingo/lingo-gr.cpp"
+#line 1747 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_SYMBOL: /* SYMBOL  */
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 231 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1758 "engines/director/lingo/lingo-gr.cpp"
+#line 1753 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_ENDCLAUSE: /* ENDCLAUSE  */
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 231 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1764 "engines/director/lingo/lingo-gr.cpp"
+#line 1759 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_tPLAYACCEL: /* tPLAYACCEL  */
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 231 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1770 "engines/director/lingo/lingo-gr.cpp"
+#line 1765 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_tMETHOD: /* tMETHOD  */
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 231 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1776 "engines/director/lingo/lingo-gr.cpp"
+#line 1771 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_ID: /* ID  */
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 231 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1782 "engines/director/lingo/lingo-gr.cpp"
+#line 1777 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_on: /* on  */
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 231 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1788 "engines/director/lingo/lingo-gr.cpp"
+#line 1783 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2050,31 +2045,31 @@ yyreduce:
   switch (yyn)
     {
   case 8: /* ID: tCAST  */
-#line 242 "engines/director/lingo/lingo-gr.y"
+#line 243 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("cast"); }
-#line 2056 "engines/director/lingo/lingo-gr.cpp"
+#line 2051 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9: /* ID: tFIELD  */
-#line 243 "engines/director/lingo/lingo-gr.y"
+#line 244 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("field"); }
-#line 2062 "engines/director/lingo/lingo-gr.cpp"
+#line 2057 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10: /* ID: tSCRIPT  */
-#line 244 "engines/director/lingo/lingo-gr.y"
+#line 245 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("script"); }
-#line 2068 "engines/director/lingo/lingo-gr.cpp"
+#line 2063 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11: /* ID: tWINDOW  */
-#line 245 "engines/director/lingo/lingo-gr.y"
+#line 246 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("window"); }
-#line 2074 "engines/director/lingo/lingo-gr.cpp"
+#line 2069 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12: /* asgn: tPUT expr tINTO ID  */
-#line 247 "engines/director/lingo/lingo-gr.y"
+#line 248 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2082,19 +2077,19 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2086 "engines/director/lingo/lingo-gr.cpp"
+#line 2081 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13: /* asgn: tPUT expr tINTO chunkexpr  */
-#line 254 "engines/director/lingo/lingo-gr.y"
+#line 255 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2094 "engines/director/lingo/lingo-gr.cpp"
+#line 2089 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14: /* asgn: tPUT THEMENUITEMSENTITY ID simpleexpr tINTO expr  */
-#line 258 "engines/director/lingo/lingo-gr.y"
+#line 259 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2106,11 +2101,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2110 "engines/director/lingo/lingo-gr.cpp"
+#line 2105 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15: /* asgn: tPUT expr tAFTER ID  */
-#line 269 "engines/director/lingo/lingo-gr.y"
+#line 270 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2118,19 +2113,19 @@ yyreduce:
 		g_lingo->code1(LC::c_putafter);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2122 "engines/director/lingo/lingo-gr.cpp"
+#line 2117 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16: /* asgn: tPUT expr tAFTER chunkexpr  */
-#line 276 "engines/director/lingo/lingo-gr.y"
+#line 277 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_putafter);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2130 "engines/director/lingo/lingo-gr.cpp"
+#line 2125 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17: /* asgn: tPUT expr tBEFORE ID  */
-#line 279 "engines/director/lingo/lingo-gr.y"
+#line 280 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2138,19 +2133,19 @@ yyreduce:
 		g_lingo->code1(LC::c_putbefore);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2142 "engines/director/lingo/lingo-gr.cpp"
+#line 2137 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18: /* asgn: tPUT expr tBEFORE chunkexpr  */
-#line 286 "engines/director/lingo/lingo-gr.y"
+#line 287 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_putbefore);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2150 "engines/director/lingo/lingo-gr.cpp"
+#line 2145 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19: /* asgn: tSET ID tEQ expr  */
-#line 289 "engines/director/lingo/lingo-gr.y"
+#line 290 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -2158,11 +2153,11 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2162 "engines/director/lingo/lingo-gr.cpp"
+#line 2157 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20: /* asgn: tSET THEENTITY tEQ expr  */
-#line 296 "engines/director/lingo/lingo-gr.y"
+#line 297 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2170,11 +2165,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2174 "engines/director/lingo/lingo-gr.cpp"
+#line 2169 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 21: /* asgn: tSET ID tTO expr  */
-#line 303 "engines/director/lingo/lingo-gr.y"
+#line 304 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -2182,11 +2177,11 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2186 "engines/director/lingo/lingo-gr.cpp"
+#line 2181 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 22: /* asgn: tSET THEENTITY tTO expr  */
-#line 310 "engines/director/lingo/lingo-gr.y"
+#line 311 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2194,33 +2189,33 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2198 "engines/director/lingo/lingo-gr.cpp"
+#line 2193 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 23: /* asgn: tSET THEENTITYWITHID expr tTO expr  */
-#line 317 "engines/director/lingo/lingo-gr.y"
+#line 318 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2209 "engines/director/lingo/lingo-gr.cpp"
+#line 2204 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 24: /* asgn: tSET THEENTITYWITHID expr tEQ expr  */
-#line 323 "engines/director/lingo/lingo-gr.y"
+#line 324 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2220 "engines/director/lingo/lingo-gr.cpp"
+#line 2215 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 25: /* asgn: tSET THEMENUITEMENTITY simpleexpr tOF ID simpleexpr tTO expr  */
-#line 330 "engines/director/lingo/lingo-gr.y"
+#line 331 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2232,11 +2227,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2236 "engines/director/lingo/lingo-gr.cpp"
+#line 2231 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 26: /* asgn: tSET THEMENUITEMENTITY simpleexpr tOF ID simpleexpr tEQ expr  */
-#line 341 "engines/director/lingo/lingo-gr.y"
+#line 342 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2248,11 +2243,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2252 "engines/director/lingo/lingo-gr.cpp"
+#line 2247 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 27: /* asgn: tSET THEOBJECTPROP tTO expr  */
-#line 352 "engines/director/lingo/lingo-gr.y"
+#line 353 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_objectpropassign);
 		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
@@ -2260,11 +2255,11 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2264 "engines/director/lingo/lingo-gr.cpp"
+#line 2259 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28: /* asgn: tSET THEOBJECTPROP tEQ expr  */
-#line 359 "engines/director/lingo/lingo-gr.y"
+#line 360 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_objectpropassign);
 		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
@@ -2272,11 +2267,11 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2276 "engines/director/lingo/lingo-gr.cpp"
+#line 2271 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33: /* stmt: tREPEAT tWHILE lbl expr jumpifz startrepeat stmtlist jump tENDREPEAT  */
-#line 376 "engines/director/lingo/lingo-gr.y"
+#line 377 "engines/director/lingo/lingo-gr.y"
                                                                                                 {
 		inst start = 0, end = 0;
 		WRITE_UINT32(&start, (yyvsp[-6].code) - (yyvsp[-1].code) + 1);
@@ -2284,32 +2279,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2288 "engines/director/lingo/lingo-gr.cpp"
+#line 2283 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34: /* $@1: %empty  */
-#line 389 "engines/director/lingo/lingo-gr.y"
+#line 390 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2296 "engines/director/lingo/lingo-gr.cpp"
+#line 2291 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35: /* $@2: %empty  */
-#line 393 "engines/director/lingo/lingo-gr.y"
+#line 394 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2303 "engines/director/lingo/lingo-gr.cpp"
+#line 2298 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36: /* $@3: %empty  */
-#line 396 "engines/director/lingo/lingo-gr.y"
+#line 397 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2309 "engines/director/lingo/lingo-gr.cpp"
+#line 2304 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37: /* stmt: tREPEAT tWITH ID tEQ expr $@1 varassign $@2 tTO expr $@3 jumpifz startrepeat stmtlist tENDREPEAT  */
-#line 396 "engines/director/lingo/lingo-gr.y"
+#line 397 "engines/director/lingo/lingo-gr.y"
                                                                                                       {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2330,32 +2325,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2334 "engines/director/lingo/lingo-gr.cpp"
+#line 2329 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38: /* $@4: %empty  */
-#line 423 "engines/director/lingo/lingo-gr.y"
+#line 424 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2342 "engines/director/lingo/lingo-gr.cpp"
+#line 2337 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39: /* $@5: %empty  */
-#line 427 "engines/director/lingo/lingo-gr.y"
+#line 428 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2349 "engines/director/lingo/lingo-gr.cpp"
+#line 2344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40: /* $@6: %empty  */
-#line 430 "engines/director/lingo/lingo-gr.y"
+#line 431 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2355 "engines/director/lingo/lingo-gr.cpp"
+#line 2350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41: /* stmt: tREPEAT tWITH ID tEQ expr $@4 varassign $@5 tDOWN tTO expr $@6 jumpifz startrepeat stmtlist tENDREPEAT  */
-#line 431 "engines/director/lingo/lingo-gr.y"
+#line 432 "engines/director/lingo/lingo-gr.y"
                                                                 {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2376,32 +2371,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2380 "engines/director/lingo/lingo-gr.cpp"
+#line 2375 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42: /* $@7: %empty  */
-#line 457 "engines/director/lingo/lingo-gr.y"
+#line 458 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);
 				  g_lingo->codeInt(0);
 				  Common::String count("count");
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2391 "engines/director/lingo/lingo-gr.cpp"
+#line 2386 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43: /* $@8: %empty  */
-#line 464 "engines/director/lingo/lingo-gr.y"
+#line 465 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get counter
 				  g_lingo->codeInt(0);
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2401 "engines/director/lingo/lingo-gr.cpp"
+#line 2396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44: /* $@9: %empty  */
-#line 470 "engines/director/lingo/lingo-gr.y"
+#line 471 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get list
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_stackpeek);	// get counter
@@ -2412,11 +2407,11 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2416 "engines/director/lingo/lingo-gr.cpp"
+#line 2411 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45: /* stmt: tREPEAT tWITH ID tIN expr $@7 lbl $@8 jumpifz $@9 startrepeat stmtlist tENDREPEAT  */
-#line 480 "engines/director/lingo/lingo-gr.y"
+#line 481 "engines/director/lingo/lingo-gr.y"
                                                         {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2436,11 +2431,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2440 "engines/director/lingo/lingo-gr.cpp"
+#line 2435 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46: /* stmt: tNEXT tREPEAT  */
-#line 500 "engines/director/lingo/lingo-gr.y"
+#line 501 "engines/director/lingo/lingo-gr.y"
                                         {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -2449,49 +2444,49 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2453 "engines/director/lingo/lingo-gr.cpp"
+#line 2448 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47: /* stmt: tWHEN ID tTHEN expr  */
-#line 508 "engines/director/lingo/lingo-gr.y"
+#line 509 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2461 "engines/director/lingo/lingo-gr.cpp"
+#line 2456 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48: /* stmt: tTELL expr '\n' tellstart stmtlist lbl tENDTELL  */
-#line 511 "engines/director/lingo/lingo-gr.y"
+#line 512 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2467 "engines/director/lingo/lingo-gr.cpp"
+#line 2462 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49: /* stmt: tTELL expr tTO tellstart stmtoneliner lbl  */
-#line 512 "engines/director/lingo/lingo-gr.y"
+#line 513 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2473 "engines/director/lingo/lingo-gr.cpp"
+#line 2468 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50: /* stmt: error '\n'  */
-#line 513 "engines/director/lingo/lingo-gr.y"
+#line 514 "engines/director/lingo/lingo-gr.y"
                                         { yyerrok; }
-#line 2479 "engines/director/lingo/lingo-gr.cpp"
+#line 2474 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51: /* startrepeat: %empty  */
-#line 515 "engines/director/lingo/lingo-gr.y"
+#line 516 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2485 "engines/director/lingo/lingo-gr.cpp"
+#line 2480 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52: /* tellstart: %empty  */
-#line 517 "engines/director/lingo/lingo-gr.y"
+#line 518 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2491 "engines/director/lingo/lingo-gr.cpp"
+#line 2486 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53: /* ifstmt: if expr jumpifz tTHEN stmtlist jump elseifstmtlist lbl tENDIF  */
-#line 519 "engines/director/lingo/lingo-gr.y"
+#line 520 "engines/director/lingo/lingo-gr.y"
                                                                                          {
 		inst else1 = 0, end3 = 0;
 		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
@@ -2499,11 +2494,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2503 "engines/director/lingo/lingo-gr.cpp"
+#line 2498 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54: /* ifstmt: if expr jumpifz tTHEN stmtlist jump elseifstmtlist tELSE stmtlist lbl tENDIF  */
-#line 526 "engines/director/lingo/lingo-gr.y"
+#line 527 "engines/director/lingo/lingo-gr.y"
                                                                                                           {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-5].code) + 1 - (yyvsp[-8].code) + 1);
@@ -2511,110 +2506,110 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2515 "engines/director/lingo/lingo-gr.cpp"
+#line 2510 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57: /* elseifstmt: tELSIF expr jumpifz tTHEN stmtlist jump  */
-#line 537 "engines/director/lingo/lingo-gr.y"
+#line 538 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2525 "engines/director/lingo/lingo-gr.cpp"
+#line 2520 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58: /* jumpifz: %empty  */
-#line 543 "engines/director/lingo/lingo-gr.y"
+#line 544 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2533 "engines/director/lingo/lingo-gr.cpp"
+#line 2528 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59: /* jump: %empty  */
-#line 547 "engines/director/lingo/lingo-gr.y"
+#line 548 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2541 "engines/director/lingo/lingo-gr.cpp"
+#line 2536 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60: /* varassign: %empty  */
-#line 551 "engines/director/lingo/lingo-gr.y"
+#line 552 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2549 "engines/director/lingo/lingo-gr.cpp"
+#line 2544 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61: /* if: tIF  */
-#line 555 "engines/director/lingo/lingo-gr.y"
+#line 556 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2556 "engines/director/lingo/lingo-gr.cpp"
+#line 2551 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62: /* lbl: %empty  */
-#line 558 "engines/director/lingo/lingo-gr.y"
+#line 559 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2562 "engines/director/lingo/lingo-gr.cpp"
+#line 2557 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67: /* simpleexprnoparens: INT  */
-#line 566 "engines/director/lingo/lingo-gr.y"
+#line 567 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2570 "engines/director/lingo/lingo-gr.cpp"
+#line 2565 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68: /* simpleexprnoparens: FLOAT  */
-#line 569 "engines/director/lingo/lingo-gr.y"
+#line 570 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2578 "engines/director/lingo/lingo-gr.cpp"
+#line 2573 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69: /* simpleexprnoparens: SYMBOL  */
-#line 572 "engines/director/lingo/lingo-gr.y"
+#line 573 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2587 "engines/director/lingo/lingo-gr.cpp"
+#line 2582 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70: /* simpleexprnoparens: STRING  */
-#line 576 "engines/director/lingo/lingo-gr.y"
+#line 577 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2596 "engines/director/lingo/lingo-gr.cpp"
+#line 2591 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71: /* simpleexprnoparens: '+' simpleexpr  */
-#line 580 "engines/director/lingo/lingo-gr.y"
+#line 581 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[0].code); }
-#line 2602 "engines/director/lingo/lingo-gr.cpp"
+#line 2597 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72: /* simpleexprnoparens: '-' simpleexpr  */
-#line 581 "engines/director/lingo/lingo-gr.y"
+#line 582 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2608 "engines/director/lingo/lingo-gr.cpp"
+#line 2603 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73: /* simpleexprnoparens: tNOT simpleexpr  */
-#line 582 "engines/director/lingo/lingo-gr.y"
+#line 583 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_not); }
-#line 2614 "engines/director/lingo/lingo-gr.cpp"
+#line 2609 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75: /* simpleexprnoparens: THEENTITY  */
-#line 584 "engines/director/lingo/lingo-gr.y"
+#line 585 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2623,95 +2618,95 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2627 "engines/director/lingo/lingo-gr.cpp"
+#line 2622 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76: /* simpleexprnoparens: THEENTITYWITHID simpleexpr  */
-#line 592 "engines/director/lingo/lingo-gr.y"
+#line 593 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2638 "engines/director/lingo/lingo-gr.cpp"
+#line 2633 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77: /* simpleexprnoparens: THEFUNCINOF simpleexpr  */
-#line 598 "engines/director/lingo/lingo-gr.y"
+#line 599 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2646 "engines/director/lingo/lingo-gr.cpp"
+#line 2641 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78: /* simpleexprnoparens: THEFUNC tOF simpleexpr  */
-#line 601 "engines/director/lingo/lingo-gr.y"
+#line 602 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2654 "engines/director/lingo/lingo-gr.cpp"
+#line 2649 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79: /* simpleexprnoparens: THEOBJECTPROP  */
-#line 604 "engines/director/lingo/lingo-gr.y"
+#line 605 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_objectproppush);
 		g_lingo->codeString((yyvsp[0].objectprop).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2665 "engines/director/lingo/lingo-gr.cpp"
+#line 2660 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80: /* simpleexprnoparens: tSPRITE expr tINTERSECTS simpleexpr  */
-#line 610 "engines/director/lingo/lingo-gr.y"
+#line 611 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2671 "engines/director/lingo/lingo-gr.cpp"
+#line 2666 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81: /* simpleexprnoparens: tSPRITE expr tWITHIN simpleexpr  */
-#line 611 "engines/director/lingo/lingo-gr.y"
+#line 612 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 2677 "engines/director/lingo/lingo-gr.cpp"
+#line 2672 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83: /* simpleexprnoparens: ID '(' ID ')'  */
-#line 613 "engines/director/lingo/lingo-gr.y"
+#line 614 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2688 "engines/director/lingo/lingo-gr.cpp"
+#line 2683 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84: /* $@10: %empty  */
-#line 619 "engines/director/lingo/lingo-gr.y"
+#line 620 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2694 "engines/director/lingo/lingo-gr.cpp"
+#line 2689 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85: /* simpleexprnoparens: ID '(' ID ',' $@10 nonemptyarglist ')'  */
-#line 620 "engines/director/lingo/lingo-gr.y"
+#line 621 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2703 "engines/director/lingo/lingo-gr.cpp"
+#line 2698 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86: /* simpleexprnoparens: ID '(' arglist ')'  */
-#line 624 "engines/director/lingo/lingo-gr.y"
+#line 625 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2711 "engines/director/lingo/lingo-gr.cpp"
+#line 2706 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87: /* simpleexprnoparens: ID  */
-#line 627 "engines/director/lingo/lingo-gr.y"
+#line 628 "engines/director/lingo/lingo-gr.y"
                                                         {
 		if (g_lingo->_builtinConsts.contains(*(yyvsp[0].s))) {
 			(yyval.code) = g_lingo->code1(LC::c_constpush);
@@ -2720,213 +2715,213 @@ yyreduce:
 		}
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2724 "engines/director/lingo/lingo-gr.cpp"
+#line 2719 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89: /* simpleexpr: '(' expr ')'  */
-#line 637 "engines/director/lingo/lingo-gr.y"
+#line 638 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2730 "engines/director/lingo/lingo-gr.cpp"
+#line 2725 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90: /* expr: simpleexpr  */
-#line 639 "engines/director/lingo/lingo-gr.y"
+#line 640 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2736 "engines/director/lingo/lingo-gr.cpp"
+#line 2731 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91: /* expr: expr '+' expr  */
-#line 640 "engines/director/lingo/lingo-gr.y"
+#line 641 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2742 "engines/director/lingo/lingo-gr.cpp"
+#line 2737 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92: /* expr: expr '-' expr  */
-#line 641 "engines/director/lingo/lingo-gr.y"
+#line 642 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2748 "engines/director/lingo/lingo-gr.cpp"
+#line 2743 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93: /* expr: expr '*' expr  */
-#line 642 "engines/director/lingo/lingo-gr.y"
+#line 643 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2754 "engines/director/lingo/lingo-gr.cpp"
+#line 2749 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94: /* expr: expr '/' expr  */
-#line 643 "engines/director/lingo/lingo-gr.y"
+#line 644 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2760 "engines/director/lingo/lingo-gr.cpp"
+#line 2755 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95: /* expr: expr tMOD expr  */
-#line 644 "engines/director/lingo/lingo-gr.y"
+#line 645 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2766 "engines/director/lingo/lingo-gr.cpp"
+#line 2761 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96: /* expr: expr '>' expr  */
-#line 645 "engines/director/lingo/lingo-gr.y"
+#line 646 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2772 "engines/director/lingo/lingo-gr.cpp"
+#line 2767 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97: /* expr: expr '<' expr  */
-#line 646 "engines/director/lingo/lingo-gr.y"
+#line 647 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2778 "engines/director/lingo/lingo-gr.cpp"
+#line 2773 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98: /* expr: expr tEQ expr  */
-#line 647 "engines/director/lingo/lingo-gr.y"
+#line 648 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2784 "engines/director/lingo/lingo-gr.cpp"
+#line 2779 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99: /* expr: expr tNEQ expr  */
-#line 648 "engines/director/lingo/lingo-gr.y"
+#line 649 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2790 "engines/director/lingo/lingo-gr.cpp"
+#line 2785 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100: /* expr: expr tGE expr  */
-#line 649 "engines/director/lingo/lingo-gr.y"
+#line 650 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2796 "engines/director/lingo/lingo-gr.cpp"
+#line 2791 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101: /* expr: expr tLE expr  */
-#line 650 "engines/director/lingo/lingo-gr.y"
+#line 651 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2802 "engines/director/lingo/lingo-gr.cpp"
+#line 2797 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102: /* expr: expr tAND expr  */
-#line 651 "engines/director/lingo/lingo-gr.y"
+#line 652 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2808 "engines/director/lingo/lingo-gr.cpp"
+#line 2803 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103: /* expr: expr tOR expr  */
-#line 652 "engines/director/lingo/lingo-gr.y"
+#line 653 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2814 "engines/director/lingo/lingo-gr.cpp"
+#line 2809 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104: /* expr: expr '&' expr  */
-#line 653 "engines/director/lingo/lingo-gr.y"
+#line 654 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2820 "engines/director/lingo/lingo-gr.cpp"
+#line 2815 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105: /* expr: expr tCONCAT expr  */
-#line 654 "engines/director/lingo/lingo-gr.y"
+#line 655 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2826 "engines/director/lingo/lingo-gr.cpp"
+#line 2821 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106: /* expr: expr tCONTAINS expr  */
-#line 655 "engines/director/lingo/lingo-gr.y"
+#line 656 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2832 "engines/director/lingo/lingo-gr.cpp"
+#line 2827 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107: /* expr: expr tSTARTS expr  */
-#line 656 "engines/director/lingo/lingo-gr.y"
+#line 657 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2838 "engines/director/lingo/lingo-gr.cpp"
+#line 2833 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108: /* chunkexpr: tFIELD simpleexprnoparens  */
-#line 658 "engines/director/lingo/lingo-gr.y"
+#line 659 "engines/director/lingo/lingo-gr.y"
                                         {
 		Common::String field("field");
 		g_lingo->codeFunc(&field, 1); }
-#line 2846 "engines/director/lingo/lingo-gr.cpp"
+#line 2841 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109: /* chunkexpr: tCAST simpleexprnoparens  */
-#line 661 "engines/director/lingo/lingo-gr.y"
+#line 662 "engines/director/lingo/lingo-gr.y"
                                                 {
 		Common::String cast("cast");
 		g_lingo->codeFunc(&cast, 1); }
-#line 2854 "engines/director/lingo/lingo-gr.cpp"
+#line 2849 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110: /* chunkexpr: tCHAR expr tOF simpleexpr  */
-#line 664 "engines/director/lingo/lingo-gr.y"
+#line 665 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_charOf); }
-#line 2860 "engines/director/lingo/lingo-gr.cpp"
+#line 2855 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111: /* chunkexpr: tCHAR expr tTO expr tOF simpleexpr  */
-#line 665 "engines/director/lingo/lingo-gr.y"
+#line 666 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2866 "engines/director/lingo/lingo-gr.cpp"
+#line 2861 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112: /* chunkexpr: tITEM expr tOF simpleexpr  */
-#line 666 "engines/director/lingo/lingo-gr.y"
+#line 667 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 2872 "engines/director/lingo/lingo-gr.cpp"
+#line 2867 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113: /* chunkexpr: tITEM expr tTO expr tOF simpleexpr  */
-#line 667 "engines/director/lingo/lingo-gr.y"
+#line 668 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2878 "engines/director/lingo/lingo-gr.cpp"
+#line 2873 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114: /* chunkexpr: tLINE expr tOF simpleexpr  */
-#line 668 "engines/director/lingo/lingo-gr.y"
+#line 669 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 2884 "engines/director/lingo/lingo-gr.cpp"
+#line 2879 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115: /* chunkexpr: tLINE expr tTO expr tOF simpleexpr  */
-#line 669 "engines/director/lingo/lingo-gr.y"
+#line 670 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2890 "engines/director/lingo/lingo-gr.cpp"
+#line 2885 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116: /* chunkexpr: tWORD expr tOF simpleexpr  */
-#line 670 "engines/director/lingo/lingo-gr.y"
+#line 671 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 2896 "engines/director/lingo/lingo-gr.cpp"
+#line 2891 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117: /* chunkexpr: tWORD expr tTO expr tOF simpleexpr  */
-#line 671 "engines/director/lingo/lingo-gr.y"
+#line 672 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2902 "engines/director/lingo/lingo-gr.cpp"
+#line 2897 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119: /* reference: tSCRIPT simpleexprnoparens  */
-#line 674 "engines/director/lingo/lingo-gr.y"
+#line 675 "engines/director/lingo/lingo-gr.y"
                                         {
 		Common::String script("script");
 		g_lingo->codeFunc(&script, 1); }
-#line 2910 "engines/director/lingo/lingo-gr.cpp"
+#line 2905 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120: /* reference: tWINDOW simpleexprnoparens  */
-#line 677 "engines/director/lingo/lingo-gr.y"
+#line 678 "engines/director/lingo/lingo-gr.y"
                                         {
 		Common::String window("window");
 		g_lingo->codeFunc(&window, 1); }
-#line 2918 "engines/director/lingo/lingo-gr.cpp"
+#line 2913 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121: /* proc: tPUT expr  */
-#line 681 "engines/director/lingo/lingo-gr.y"
+#line 682 "engines/director/lingo/lingo-gr.y"
                                                 {
 		Common::String put("put");
 		g_lingo->codeCmd(&put, 1); }
-#line 2926 "engines/director/lingo/lingo-gr.cpp"
+#line 2921 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124: /* proc: tEXIT tREPEAT  */
-#line 686 "engines/director/lingo/lingo-gr.y"
+#line 687 "engines/director/lingo/lingo-gr.y"
                                                 {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -2935,284 +2930,284 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 2939 "engines/director/lingo/lingo-gr.cpp"
+#line 2934 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125: /* proc: tEXIT  */
-#line 694 "engines/director/lingo/lingo-gr.y"
+#line 695 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 2945 "engines/director/lingo/lingo-gr.cpp"
+#line 2940 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126: /* $@11: %empty  */
-#line 695 "engines/director/lingo/lingo-gr.y"
+#line 696 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 2951 "engines/director/lingo/lingo-gr.cpp"
+#line 2946 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127: /* proc: tGLOBAL $@11 globallist  */
-#line 695 "engines/director/lingo/lingo-gr.y"
+#line 696 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 2957 "engines/director/lingo/lingo-gr.cpp"
+#line 2952 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128: /* $@12: %empty  */
-#line 696 "engines/director/lingo/lingo-gr.y"
+#line 697 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 2963 "engines/director/lingo/lingo-gr.cpp"
+#line 2958 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129: /* proc: tPROPERTY $@12 propertylist  */
-#line 696 "engines/director/lingo/lingo-gr.y"
+#line 697 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 2969 "engines/director/lingo/lingo-gr.cpp"
+#line 2964 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130: /* $@13: %empty  */
-#line 697 "engines/director/lingo/lingo-gr.y"
+#line 698 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 2975 "engines/director/lingo/lingo-gr.cpp"
+#line 2970 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131: /* proc: tINSTANCE $@13 instancelist  */
-#line 697 "engines/director/lingo/lingo-gr.y"
+#line 698 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 2981 "engines/director/lingo/lingo-gr.cpp"
+#line 2976 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132: /* proc: tOPEN expr tWITH expr  */
-#line 698 "engines/director/lingo/lingo-gr.y"
+#line 699 "engines/director/lingo/lingo-gr.y"
                                         {
 		Common::String open("open");
 		g_lingo->codeCmd(&open, 2); }
-#line 2989 "engines/director/lingo/lingo-gr.cpp"
+#line 2984 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133: /* proc: tOPEN expr  */
-#line 701 "engines/director/lingo/lingo-gr.y"
+#line 702 "engines/director/lingo/lingo-gr.y"
                                                 {
 		Common::String open("open");
 		g_lingo->codeCmd(&open, 1); }
-#line 2997 "engines/director/lingo/lingo-gr.cpp"
+#line 2992 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134: /* proc: ID '(' ID ')'  */
-#line 704 "engines/director/lingo/lingo-gr.y"
+#line 705 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeCmd((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 3008 "engines/director/lingo/lingo-gr.cpp"
+#line 3003 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135: /* $@14: %empty  */
-#line 710 "engines/director/lingo/lingo-gr.y"
+#line 711 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 3014 "engines/director/lingo/lingo-gr.cpp"
+#line 3009 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136: /* proc: ID '(' ID ',' $@14 nonemptyarglist ')'  */
-#line 711 "engines/director/lingo/lingo-gr.y"
+#line 712 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeCmd((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 3023 "engines/director/lingo/lingo-gr.cpp"
+#line 3018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137: /* proc: ID '(' arglist ')'  */
-#line 715 "engines/director/lingo/lingo-gr.y"
+#line 716 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeCmd((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3031 "engines/director/lingo/lingo-gr.cpp"
+#line 3026 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138: /* proc: ID arglist  */
-#line 718 "engines/director/lingo/lingo-gr.y"
+#line 719 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeCmd((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3039 "engines/director/lingo/lingo-gr.cpp"
+#line 3034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140: /* globallist: ID  */
-#line 723 "engines/director/lingo/lingo-gr.y"
+#line 724 "engines/director/lingo/lingo-gr.y"
                                                         {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3047 "engines/director/lingo/lingo-gr.cpp"
+#line 3042 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141: /* globallist: ID ',' globallist  */
-#line 726 "engines/director/lingo/lingo-gr.y"
+#line 727 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[-2].s), kVarGlobal);
 		delete (yyvsp[-2].s); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 3050 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143: /* propertylist: ID  */
-#line 731 "engines/director/lingo/lingo-gr.y"
+#line 732 "engines/director/lingo/lingo-gr.y"
                                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3063 "engines/director/lingo/lingo-gr.cpp"
+#line 3058 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144: /* propertylist: ID ',' propertylist  */
-#line 734 "engines/director/lingo/lingo-gr.y"
+#line 735 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[-2].s), kVarProperty);
 		delete (yyvsp[-2].s); }
-#line 3071 "engines/director/lingo/lingo-gr.cpp"
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146: /* instancelist: ID  */
-#line 739 "engines/director/lingo/lingo-gr.y"
+#line 740 "engines/director/lingo/lingo-gr.y"
                                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3079 "engines/director/lingo/lingo-gr.cpp"
+#line 3074 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147: /* instancelist: ID ',' instancelist  */
-#line 742 "engines/director/lingo/lingo-gr.y"
+#line 743 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[-2].s), kVarInstance);
 		delete (yyvsp[-2].s); }
-#line 3087 "engines/director/lingo/lingo-gr.cpp"
+#line 3082 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148: /* gotofunc: tGOLOOP  */
-#line 753 "engines/director/lingo/lingo-gr.y"
+#line 754 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3093 "engines/director/lingo/lingo-gr.cpp"
+#line 3088 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149: /* gotofunc: tGO tNEXT  */
-#line 754 "engines/director/lingo/lingo-gr.y"
+#line 755 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3099 "engines/director/lingo/lingo-gr.cpp"
+#line 3094 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150: /* gotofunc: tGO tPREVIOUS  */
-#line 755 "engines/director/lingo/lingo-gr.y"
+#line 756 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3105 "engines/director/lingo/lingo-gr.cpp"
+#line 3100 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151: /* gotofunc: tGO expr  */
-#line 756 "engines/director/lingo/lingo-gr.y"
+#line 757 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3114 "engines/director/lingo/lingo-gr.cpp"
+#line 3109 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 152: /* gotofunc: tGO expr gotomovie  */
-#line 760 "engines/director/lingo/lingo-gr.y"
+#line 761 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3123 "engines/director/lingo/lingo-gr.cpp"
+#line 3118 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153: /* gotofunc: tGO gotomovie  */
-#line 764 "engines/director/lingo/lingo-gr.y"
+#line 765 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3132 "engines/director/lingo/lingo-gr.cpp"
+#line 3127 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156: /* playfunc: tPLAY expr  */
-#line 772 "engines/director/lingo/lingo-gr.y"
+#line 773 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3141 "engines/director/lingo/lingo-gr.cpp"
+#line 3136 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157: /* playfunc: tPLAY expr gotomovie  */
-#line 776 "engines/director/lingo/lingo-gr.y"
+#line 777 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3150 "engines/director/lingo/lingo-gr.cpp"
+#line 3145 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158: /* playfunc: tPLAY gotomovie  */
-#line 780 "engines/director/lingo/lingo-gr.y"
+#line 781 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3159 "engines/director/lingo/lingo-gr.cpp"
+#line 3154 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159: /* $@15: %empty  */
-#line 784 "engines/director/lingo/lingo-gr.y"
+#line 785 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3165 "engines/director/lingo/lingo-gr.cpp"
+#line 3160 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160: /* playfunc: tPLAYACCEL $@15 arglist  */
-#line 784 "engines/director/lingo/lingo-gr.y"
+#line 785 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeCmd((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3174 "engines/director/lingo/lingo-gr.cpp"
+#line 3169 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161: /* $@16: %empty  */
-#line 814 "engines/director/lingo/lingo-gr.y"
+#line 815 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3180 "engines/director/lingo/lingo-gr.cpp"
+#line 3175 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162: /* defn: tMACRO $@16 ID lbl argdef '\n' argstore stmtlist  */
-#line 815 "engines/director/lingo/lingo-gr.y"
+#line 816 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3190 "engines/director/lingo/lingo-gr.cpp"
+#line 3185 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163: /* defn: tFACTORY ID  */
-#line 820 "engines/director/lingo/lingo-gr.y"
+#line 821 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3196 "engines/director/lingo/lingo-gr.cpp"
+#line 3191 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164: /* $@17: %empty  */
-#line 821 "engines/director/lingo/lingo-gr.y"
+#line 822 "engines/director/lingo/lingo-gr.y"
                   { startDef(); (*g_lingo->_methodVars)["me"] = kVarArgument; }
-#line 3202 "engines/director/lingo/lingo-gr.cpp"
+#line 3197 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165: /* defn: tMETHOD $@17 lbl argdef '\n' argstore stmtlist  */
-#line 822 "engines/director/lingo/lingo-gr.y"
+#line 823 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3212 "engines/director/lingo/lingo-gr.cpp"
+#line 3207 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166: /* defn: on lbl argdef '\n' argstore stmtlist ENDCLAUSE endargdef  */
-#line 827 "engines/director/lingo/lingo-gr.y"
+#line 828 "engines/director/lingo/lingo-gr.y"
                                                                    {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3221,192 +3216,192 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3225 "engines/director/lingo/lingo-gr.cpp"
+#line 3220 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167: /* defn: on lbl argdef '\n' argstore stmtlist  */
-#line 835 "engines/director/lingo/lingo-gr.y"
+#line 836 "engines/director/lingo/lingo-gr.y"
                                                {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3235 "engines/director/lingo/lingo-gr.cpp"
+#line 3230 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168: /* $@18: %empty  */
-#line 841 "engines/director/lingo/lingo-gr.y"
+#line 842 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3241 "engines/director/lingo/lingo-gr.cpp"
+#line 3236 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169: /* on: tON $@18 ID  */
-#line 841 "engines/director/lingo/lingo-gr.y"
+#line 842 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = (yyvsp[0].s); }
-#line 3247 "engines/director/lingo/lingo-gr.cpp"
+#line 3242 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170: /* argname: ID  */
-#line 843 "engines/director/lingo/lingo-gr.y"
+#line 844 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); delete (yyvsp[0].s); }
-#line 3253 "engines/director/lingo/lingo-gr.cpp"
+#line 3248 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171: /* argdef: %empty  */
-#line 845 "engines/director/lingo/lingo-gr.y"
+#line 846 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3259 "engines/director/lingo/lingo-gr.cpp"
+#line 3254 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172: /* argdef: argname  */
-#line 846 "engines/director/lingo/lingo-gr.y"
+#line 847 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3265 "engines/director/lingo/lingo-gr.cpp"
+#line 3260 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 173: /* argdef: argname ',' argdef  */
-#line 847 "engines/director/lingo/lingo-gr.y"
+#line 848 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[0].narg) + 1; }
-#line 3271 "engines/director/lingo/lingo-gr.cpp"
+#line 3266 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 175: /* endargdef: ID  */
-#line 850 "engines/director/lingo/lingo-gr.y"
+#line 851 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3277 "engines/director/lingo/lingo-gr.cpp"
+#line 3272 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 176: /* endargdef: endargdef ',' ID  */
-#line 851 "engines/director/lingo/lingo-gr.y"
+#line 852 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3283 "engines/director/lingo/lingo-gr.cpp"
+#line 3278 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 177: /* argstore: %empty  */
-#line 853 "engines/director/lingo/lingo-gr.y"
+#line 854 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3289 "engines/director/lingo/lingo-gr.cpp"
+#line 3284 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 178: /* arglist: %empty  */
-#line 855 "engines/director/lingo/lingo-gr.y"
+#line 856 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3295 "engines/director/lingo/lingo-gr.cpp"
+#line 3290 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 179: /* arglist: expr  */
-#line 856 "engines/director/lingo/lingo-gr.y"
+#line 857 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3301 "engines/director/lingo/lingo-gr.cpp"
+#line 3296 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 180: /* arglist: expr ',' arglist  */
-#line 857 "engines/director/lingo/lingo-gr.y"
+#line 858 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[0].narg) + 1; }
-#line 3307 "engines/director/lingo/lingo-gr.cpp"
+#line 3302 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 181: /* nonemptyarglist: expr  */
-#line 859 "engines/director/lingo/lingo-gr.y"
+#line 860 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3313 "engines/director/lingo/lingo-gr.cpp"
+#line 3308 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 182: /* nonemptyarglist: expr ','  */
-#line 860 "engines/director/lingo/lingo-gr.y"
+#line 861 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3319 "engines/director/lingo/lingo-gr.cpp"
+#line 3314 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 183: /* nonemptyarglist: expr ',' nonemptyarglist  */
-#line 861 "engines/director/lingo/lingo-gr.y"
+#line 862 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[0].narg) + 1; }
-#line 3325 "engines/director/lingo/lingo-gr.cpp"
+#line 3320 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 184: /* list: '[' valuelist ']'  */
-#line 863 "engines/director/lingo/lingo-gr.y"
+#line 864 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3331 "engines/director/lingo/lingo-gr.cpp"
+#line 3326 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 185: /* valuelist: %empty  */
-#line 865 "engines/director/lingo/lingo-gr.y"
+#line 866 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3337 "engines/director/lingo/lingo-gr.cpp"
+#line 3332 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 186: /* valuelist: ':'  */
-#line 866 "engines/director/lingo/lingo-gr.y"
+#line 867 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3343 "engines/director/lingo/lingo-gr.cpp"
+#line 3338 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 187: /* valuelist: proplist  */
-#line 867 "engines/director/lingo/lingo-gr.y"
+#line 868 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3349 "engines/director/lingo/lingo-gr.cpp"
+#line 3344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 188: /* valuelist: linearlist  */
-#line 868 "engines/director/lingo/lingo-gr.y"
+#line 869 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3355 "engines/director/lingo/lingo-gr.cpp"
+#line 3350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 189: /* linearlist: expr  */
-#line 870 "engines/director/lingo/lingo-gr.y"
+#line 871 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3361 "engines/director/lingo/lingo-gr.cpp"
+#line 3356 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 190: /* linearlist: linearlist ',' expr  */
-#line 871 "engines/director/lingo/lingo-gr.y"
+#line 872 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3367 "engines/director/lingo/lingo-gr.cpp"
+#line 3362 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 191: /* proplist: proppair  */
-#line 873 "engines/director/lingo/lingo-gr.y"
+#line 874 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3373 "engines/director/lingo/lingo-gr.cpp"
+#line 3368 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 192: /* proplist: proplist ',' proppair  */
-#line 874 "engines/director/lingo/lingo-gr.y"
+#line 875 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3379 "engines/director/lingo/lingo-gr.cpp"
+#line 3374 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 193: /* proppair: SYMBOL ':' expr  */
-#line 876 "engines/director/lingo/lingo-gr.y"
+#line 877 "engines/director/lingo/lingo-gr.y"
                           {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3388 "engines/director/lingo/lingo-gr.cpp"
+#line 3383 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 194: /* proppair: STRING ':' expr  */
-#line 880 "engines/director/lingo/lingo-gr.y"
+#line 881 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3397 "engines/director/lingo/lingo-gr.cpp"
+#line 3392 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 195: /* proppair: ID ':' expr  */
-#line 884 "engines/director/lingo/lingo-gr.y"
+#line 885 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3406 "engines/director/lingo/lingo-gr.cpp"
+#line 3401 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3410 "engines/director/lingo/lingo-gr.cpp"
+#line 3405 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3605,7 +3600,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 890 "engines/director/lingo/lingo-gr.y"
+#line 891 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index ccb4534118..c864400262 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -55,90 +55,92 @@ extern int yydebug;
     YYerror = 256,                 /* error  */
     YYUNDEF = 257,                 /* "invalid token"  */
     UNARY = 258,                   /* UNARY  */
-    CASTREF = 259,                 /* CASTREF  */
-    VOID = 260,                    /* VOID  */
-    VAR = 261,                     /* VAR  */
-    POINT = 262,                   /* POINT  */
-    RECT = 263,                    /* RECT  */
-    ARRAY = 264,                   /* ARRAY  */
-    OBJECT = 265,                  /* OBJECT  */
-    FIELDREF = 266,                /* FIELDREF  */
-    LEXERROR = 267,                /* LEXERROR  */
-    PARRAY = 268,                  /* PARRAY  */
-    INT = 269,                     /* INT  */
-    ARGC = 270,                    /* ARGC  */
-    ARGCNORET = 271,               /* ARGCNORET  */
-    THEENTITY = 272,               /* THEENTITY  */
-    THEENTITYWITHID = 273,         /* THEENTITYWITHID  */
-    THEMENUITEMENTITY = 274,       /* THEMENUITEMENTITY  */
-    THEMENUITEMSENTITY = 275,      /* THEMENUITEMSENTITY  */
-    FLOAT = 276,                   /* FLOAT  */
-    THEFUNC = 277,                 /* THEFUNC  */
-    THEFUNCINOF = 278,             /* THEFUNCINOF  */
-    VARID = 279,                   /* VARID  */
-    STRING = 280,                  /* STRING  */
-    SYMBOL = 281,                  /* SYMBOL  */
-    ENDCLAUSE = 282,               /* ENDCLAUSE  */
-    tPLAYACCEL = 283,              /* tPLAYACCEL  */
-    tMETHOD = 284,                 /* tMETHOD  */
-    THEOBJECTPROP = 285,           /* THEOBJECTPROP  */
-    tCAST = 286,                   /* tCAST  */
-    tFIELD = 287,                  /* tFIELD  */
-    tSCRIPT = 288,                 /* tSCRIPT  */
-    tWINDOW = 289,                 /* tWINDOW  */
-    tDOWN = 290,                   /* tDOWN  */
-    tELSE = 291,                   /* tELSE  */
-    tELSIF = 292,                  /* tELSIF  */
-    tEXIT = 293,                   /* tEXIT  */
-    tGLOBAL = 294,                 /* tGLOBAL  */
-    tGO = 295,                     /* tGO  */
-    tGOLOOP = 296,                 /* tGOLOOP  */
-    tIF = 297,                     /* tIF  */
-    tIN = 298,                     /* tIN  */
-    tINTO = 299,                   /* tINTO  */
-    tMACRO = 300,                  /* tMACRO  */
-    tMOVIE = 301,                  /* tMOVIE  */
-    tNEXT = 302,                   /* tNEXT  */
-    tOF = 303,                     /* tOF  */
-    tPREVIOUS = 304,               /* tPREVIOUS  */
-    tPUT = 305,                    /* tPUT  */
-    tREPEAT = 306,                 /* tREPEAT  */
-    tSET = 307,                    /* tSET  */
-    tTHEN = 308,                   /* tTHEN  */
-    tTO = 309,                     /* tTO  */
-    tWHEN = 310,                   /* tWHEN  */
-    tWITH = 311,                   /* tWITH  */
-    tWHILE = 312,                  /* tWHILE  */
-    tFACTORY = 313,                /* tFACTORY  */
-    tOPEN = 314,                   /* tOPEN  */
-    tPLAY = 315,                   /* tPLAY  */
-    tINSTANCE = 316,               /* tINSTANCE  */
-    tGE = 317,                     /* tGE  */
-    tLE = 318,                     /* tLE  */
-    tEQ = 319,                     /* tEQ  */
-    tNEQ = 320,                    /* tNEQ  */
-    tAND = 321,                    /* tAND  */
-    tOR = 322,                     /* tOR  */
-    tNOT = 323,                    /* tNOT  */
-    tMOD = 324,                    /* tMOD  */
-    tAFTER = 325,                  /* tAFTER  */
-    tBEFORE = 326,                 /* tBEFORE  */
-    tCONCAT = 327,                 /* tCONCAT  */
-    tCONTAINS = 328,               /* tCONTAINS  */
-    tSTARTS = 329,                 /* tSTARTS  */
-    tCHAR = 330,                   /* tCHAR  */
-    tITEM = 331,                   /* tITEM  */
-    tLINE = 332,                   /* tLINE  */
-    tWORD = 333,                   /* tWORD  */
-    tSPRITE = 334,                 /* tSPRITE  */
-    tINTERSECTS = 335,             /* tINTERSECTS  */
-    tWITHIN = 336,                 /* tWITHIN  */
-    tTELL = 337,                   /* tTELL  */
-    tPROPERTY = 338,               /* tPROPERTY  */
-    tON = 339,                     /* tON  */
-    tENDIF = 340,                  /* tENDIF  */
-    tENDREPEAT = 341,              /* tENDREPEAT  */
-    tENDTELL = 342                 /* tENDTELL  */
+    VOID = 259,                    /* VOID  */
+    VAR = 260,                     /* VAR  */
+    POINT = 261,                   /* POINT  */
+    RECT = 262,                    /* RECT  */
+    ARRAY = 263,                   /* ARRAY  */
+    OBJECT = 264,                  /* OBJECT  */
+    LEXERROR = 265,                /* LEXERROR  */
+    PARRAY = 266,                  /* PARRAY  */
+    CASTNAME = 267,                /* CASTNAME  */
+    CASTNUM = 268,                 /* CASTNUM  */
+    FIELDNAME = 269,               /* FIELDNAME  */
+    FIELDNUM = 270,                /* FIELDNUM  */
+    INT = 271,                     /* INT  */
+    ARGC = 272,                    /* ARGC  */
+    ARGCNORET = 273,               /* ARGCNORET  */
+    THEENTITY = 274,               /* THEENTITY  */
+    THEENTITYWITHID = 275,         /* THEENTITYWITHID  */
+    THEMENUITEMENTITY = 276,       /* THEMENUITEMENTITY  */
+    THEMENUITEMSENTITY = 277,      /* THEMENUITEMSENTITY  */
+    FLOAT = 278,                   /* FLOAT  */
+    THEFUNC = 279,                 /* THEFUNC  */
+    THEFUNCINOF = 280,             /* THEFUNCINOF  */
+    VARID = 281,                   /* VARID  */
+    STRING = 282,                  /* STRING  */
+    SYMBOL = 283,                  /* SYMBOL  */
+    ENDCLAUSE = 284,               /* ENDCLAUSE  */
+    tPLAYACCEL = 285,              /* tPLAYACCEL  */
+    tMETHOD = 286,                 /* tMETHOD  */
+    THEOBJECTPROP = 287,           /* THEOBJECTPROP  */
+    tCAST = 288,                   /* tCAST  */
+    tFIELD = 289,                  /* tFIELD  */
+    tSCRIPT = 290,                 /* tSCRIPT  */
+    tWINDOW = 291,                 /* tWINDOW  */
+    tDOWN = 292,                   /* tDOWN  */
+    tELSE = 293,                   /* tELSE  */
+    tELSIF = 294,                  /* tELSIF  */
+    tEXIT = 295,                   /* tEXIT  */
+    tGLOBAL = 296,                 /* tGLOBAL  */
+    tGO = 297,                     /* tGO  */
+    tGOLOOP = 298,                 /* tGOLOOP  */
+    tIF = 299,                     /* tIF  */
+    tIN = 300,                     /* tIN  */
+    tINTO = 301,                   /* tINTO  */
+    tMACRO = 302,                  /* tMACRO  */
+    tMOVIE = 303,                  /* tMOVIE  */
+    tNEXT = 304,                   /* tNEXT  */
+    tOF = 305,                     /* tOF  */
+    tPREVIOUS = 306,               /* tPREVIOUS  */
+    tPUT = 307,                    /* tPUT  */
+    tREPEAT = 308,                 /* tREPEAT  */
+    tSET = 309,                    /* tSET  */
+    tTHEN = 310,                   /* tTHEN  */
+    tTO = 311,                     /* tTO  */
+    tWHEN = 312,                   /* tWHEN  */
+    tWITH = 313,                   /* tWITH  */
+    tWHILE = 314,                  /* tWHILE  */
+    tFACTORY = 315,                /* tFACTORY  */
+    tOPEN = 316,                   /* tOPEN  */
+    tPLAY = 317,                   /* tPLAY  */
+    tINSTANCE = 318,               /* tINSTANCE  */
+    tGE = 319,                     /* tGE  */
+    tLE = 320,                     /* tLE  */
+    tEQ = 321,                     /* tEQ  */
+    tNEQ = 322,                    /* tNEQ  */
+    tAND = 323,                    /* tAND  */
+    tOR = 324,                     /* tOR  */
+    tNOT = 325,                    /* tNOT  */
+    tMOD = 326,                    /* tMOD  */
+    tAFTER = 327,                  /* tAFTER  */
+    tBEFORE = 328,                 /* tBEFORE  */
+    tCONCAT = 329,                 /* tCONCAT  */
+    tCONTAINS = 330,               /* tCONTAINS  */
+    tSTARTS = 331,                 /* tSTARTS  */
+    tCHAR = 332,                   /* tCHAR  */
+    tITEM = 333,                   /* tITEM  */
+    tLINE = 334,                   /* tLINE  */
+    tWORD = 335,                   /* tWORD  */
+    tSPRITE = 336,                 /* tSPRITE  */
+    tINTERSECTS = 337,             /* tINTERSECTS  */
+    tWITHIN = 338,                 /* tWITHIN  */
+    tTELL = 339,                   /* tTELL  */
+    tPROPERTY = 340,               /* tPROPERTY  */
+    tON = 341,                     /* tON  */
+    tENDIF = 342,                  /* tENDIF  */
+    tENDREPEAT = 343,              /* tENDREPEAT  */
+    tENDTELL = 344                 /* tENDTELL  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -162,7 +164,7 @@ union YYSTYPE
 		Common::String *prop;
 	} objectprop;
 
-#line 166 "engines/director/lingo/lingo-gr.h"
+#line 168 "engines/director/lingo/lingo-gr.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 6c8697ceff..8209044e0c 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -195,7 +195,8 @@ static void mVar(Common::String *s, VarType type) {
 %token UNARY
 
 // Datum types
-%token CASTREF VOID VAR POINT RECT ARRAY OBJECT FIELDREF LEXERROR PARRAY
+%token VOID VAR POINT RECT ARRAY OBJECT LEXERROR PARRAY
+%token CASTNAME CASTNUM FIELDNAME FIELDNUM
 %token<i> INT ARGC ARGCNORET
 
 %token<e> THEENTITY THEENTITYWITHID THEMENUITEMENTITY THEMENUITEMSENTITY
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 1344c6b7b1..559d1436d6 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -1279,17 +1279,25 @@ void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
 		}
 		break;
 	case kTheConstraint:
-		if (d.asInt() != (int)channel->_constraint) {
-			if (d.type == CASTREF) {
+		{
+			int channelId;
+			if (d.type == CASTNAME || d.type == CASTNUM) {
 				// Reference: CastMember ID
 				// Find the first channel that uses this cast.
-				for (uint i = 0; i < score->_channels.size(); i++)
-					if (score->_channels[i]->_sprite->_castId == d.u.i)
-						d.u.i = i;
+				int castId = castIdFetch(d);
+				for (uint i = 0; i < score->_channels.size(); i++) {
+					if (score->_channels[i]->_sprite->_castId == castId) {
+						channelId = i;
+						break;
+					}
+				}
+			} else {
+				channelId = d.asInt();
+			}
+			if (channelId != (int)channel->_constraint) {
+				channel->_constraint = d.u.i;
+				channel->_dirty = true;
 			}
-
-			channel->_constraint = d.u.i;
-			channel->_dirty = true;
 		}
 		break;
 	case kTheCursor:
@@ -1569,7 +1577,7 @@ Datum Lingo::getObjectProp(Datum &obj, Common::String &propName) {
 			d = obj.u.parr->operator[](index - 1).v;
 		}
 		return d;
-	} else if (obj.type == CASTREF || obj.type == FIELDREF) {
+	} else if (obj.type == CASTNAME || obj.type == CASTNUM || obj.type == FIELDNAME || obj.type == FIELDNUM) {
 		Movie *movie = _vm->getCurrentMovie();
 		if (!movie) {
 			warning("Lingo::getObjectProp(): No movie loaded");
@@ -1583,7 +1591,7 @@ Datum Lingo::getObjectProp(Datum &obj, Common::String &propName) {
 			warning("Lingo::getObjectProp(): CastMember %d not found", id);
 			return d;
 		}
-		if (obj.type == FIELDREF && member->_type != kCastText) {
+		if ((obj.type == FIELDNAME || obj.type == FIELDNUM) && member->_type != kCastText) {
 			warning("Lingo::getObjectProp(): CastMember %d is not a field", id);
 			return d;
 		}
@@ -1614,7 +1622,7 @@ void Lingo::setObjectProp(Datum &obj, Common::String &propName, Datum &val) {
 			PCell cell = PCell(propName, val);
 			obj.u.parr->push_back(cell);
 		}
-	} else if (obj.type == CASTREF || obj.type == FIELDREF) {
+	} else if (obj.type == CASTNAME || obj.type == CASTNUM || obj.type == FIELDNAME || obj.type == FIELDNUM) {
 		Movie *movie = _vm->getCurrentMovie();
 		if (!movie) {
 			warning("Lingo::setObjectProp(): No movie loaded");
@@ -1628,7 +1636,7 @@ void Lingo::setObjectProp(Datum &obj, Common::String &propName, Datum &val) {
 			warning("Lingo::setObjectProp(): CastMember %d not found", id);
 			return;
 		}
-		if (obj.type == FIELDREF && member->_type != kCastText) {
+		if ((obj.type == FIELDNAME || obj.type == FIELDNUM) && member->_type != kCastText) {
 			warning("Lingo::setObjectProp(): CastMember %d is not a field", id);
 			return;
 		}
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 26dc6c2a71..2ec6be87a5 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -689,7 +689,7 @@ int Lingo::getAlignedType(const Datum &d1, const Datum &d2) {
 	int d1Type = d1.type;
 	int d2Type = d2.type;
 
-	if (d1Type == STRING || d1Type == FIELDREF) {
+	if (d1Type == STRING || d1Type == FIELDNAME || d1Type == FIELDNUM) {
 		Common::String src = d1.asString();
 		if (!src.empty()) {
 			char *endPtr = 0;
@@ -699,7 +699,7 @@ int Lingo::getAlignedType(const Datum &d1, const Datum &d2) {
 			}
 		}
 	}
-	if (d2Type == STRING || d2Type == FIELDREF) {
+	if (d2Type == STRING || d2Type == FIELDNAME || d2Type == FIELDNUM) {
 		Common::String src = d2.asString();
 		if (!src.empty()) {
 			char *endPtr = 0;
@@ -718,7 +718,8 @@ int Lingo::getAlignedType(const Datum &d1, const Datum &d2) {
 
 	if (d1Type == FLOAT || d2Type == FLOAT) {
 		opType = FLOAT;
-	} else if ((d1Type == INT || d1Type == CASTREF) && (d2Type == INT || d2Type == CASTREF)) {
+	} else if ((d1Type == INT || d1Type == CASTNAME || d1Type == CASTNUM)
+			&& (d2Type == INT || d2Type == CASTNAME || d2Type == CASTNUM)) {
 		opType = INT;
 	}
 
@@ -795,6 +796,8 @@ void Datum::reset() {
 #ifndef __COVERITY__
 	if (*refCount <= 0) {
 		switch (type) {
+		case CASTNAME:
+		case FIELDNAME:
 		case VAR:
 		case STRING:
 			delete u.s;
@@ -839,7 +842,8 @@ int Datum::asInt() const {
 
 	switch (type) {
 	case STRING:
-	case FIELDREF:
+	case FIELDNAME:
+	case FIELDNUM:
 		{
 			Common::String src = asString();
 			char *endPtr = 0;
@@ -855,7 +859,6 @@ int Datum::asInt() const {
 		// no-op
 		break;
 	case INT:
-	case CASTREF:
 		res = u.i;
 		break;
 	case FLOAT:
@@ -877,7 +880,8 @@ double Datum::asFloat() const {
 
 	switch (type) {
 	case STRING:
-	case FIELDREF:
+	case FIELDNAME:
+	case FIELDNUM:
 		{
 			Common::String src = asString();
 			char *endPtr = 0;
@@ -893,7 +897,6 @@ double Datum::asFloat() const {
 		// no-op
 		break;
 	case INT:
-	case CASTREF:
 		res = (double)u.i;
 		break;
 	case FLOAT:
@@ -950,10 +953,16 @@ Common::String Datum::asString(bool printonly) const {
 	case VAR:
 		s = Common::String::format("var: #%s", u.s->c_str());
 		break;
-	case CASTREF:
-	case FIELDREF:
+	case CASTNAME:
+		s = Common::String::format("cast \"%s\"", u.s->c_str());
+		break;
+	case CASTNUM:
+		s = Common::String::format("cast %d", u.i);
+		break;
+	case FIELDNAME:
+	case FIELDNUM:
 		{
-			int idx = u.i;
+			int idx = g_lingo->castIdFetch(*this);
 			CastMember *member = g_director->getCurrentMovie()->getCastMember(idx);
 			if (!member) {
 				warning("asString(): Unknown cast id %d", idx);
@@ -961,14 +970,10 @@ Common::String Datum::asString(bool printonly) const {
 				break;
 			}
 
-			if (type == FIELDREF) {
-				if (!printonly) {
-					s = ((TextCastMember *)member)->getText();
-				} else {
-					s = Common::String::format("reference: \"%s\"", ((TextCastMember *)member)->getText().c_str());
-				}
+			if (!printonly) {
+				s = ((TextCastMember *)member)->getText();
 			} else {
-				s = Common::String::format("cast %d", idx);
+				s = Common::String::format("field: \"%s\"", ((TextCastMember *)member)->getText().c_str());
 			}
 		}
 		break;
@@ -1022,8 +1027,10 @@ const char *Datum::type2str(bool isk) const {
 		return isk ? "#float" : "FLOAT";
 	case STRING:
 		return isk ? "#string" : "STRING";
-	case CASTREF:
-		return "CASTREF";
+	case CASTNAME:
+		return "CASTNAME";
+	case CASTNUM:
+		return "CASTNUM";
 	case VOID:
 		return isk ? "#void" : "VOID";
 	case POINT:
@@ -1032,8 +1039,10 @@ const char *Datum::type2str(bool isk) const {
 		return isk ? "#symbol" : "SYMBOL";
 	case OBJECT:
 		return isk ? "#object" : "OBJECT";
-	case FIELDREF:
-		return "FIELDREF";
+	case FIELDNAME:
+		return "FIELDNAME";
+	case FIELDNUM:
+		return "FIELDNUM";
 	case VAR:
 		return isk ? "#var" : "VAR";
 	default:
@@ -1208,34 +1217,37 @@ int Lingo::getInt(uint pc) {
 	return (int)READ_UINT32(&((*_currentScript)[pc]));
 }
 
-int Lingo::castIdFetch(Datum &var) {
+int Lingo::castIdFetch(const Datum &var) {
 	Movie *movie = _vm->getCurrentMovie();
 	if (!movie) {
 		warning("castIdFetch: No movie");
 		return 0;
 	}
 
-	int id = 0;
-	if (var.type == STRING) {
-		CastMember *member = movie->getCastMemberByName(var.asString());
+	if (var.type == STRING || var.type == CASTNAME || var.type == FIELDNAME) {
+		CastMember *member = movie->getCastMemberByName(*var.u.s);
 		if (member)
-			id = member->getID();
-		else
-			warning("castIdFetch: reference to non-existent cast member: %s", var.u.s->c_str());
-	} else if (var.type == INT || var.type == FLOAT || var.type == CASTREF || var.type == FIELDREF) {
-		int castId = var.asInt();
-		if (!_vm->getCurrentMovie()->getCastMember(castId))
-			warning("castIdFetch: reference to non-existent cast ID: %d", castId);
-		else
-			id = castId;
+			return member->getID();
+		
+		warning("castIdFetch: reference to non-existent cast member: %s", var.u.s->c_str());
+		return 0;
+	}
+
+	int castId = 0;
+	if (var.type == INT || var.type == CASTNUM || var.type == FIELDNUM) {
+		castId = var.u.i;
+	} else if (var.type == FLOAT) {
+		castId = var.u.f;
 	} else if (var.type == VOID) {
 		warning("castIdFetch: reference to VOID cast ID");
-		return 0;
 	} else {
 		error("castIdFetch: was expecting STRING or INT, got %s", var.type2str());
 	}
 
-	return id;
+	if (!_vm->getCurrentMovie()->getCastMember(castId))
+		warning("castIdFetch: reference to non-existent cast ID: %d", castId);
+
+	return castId;
 }
 
 void Lingo::varAssign(Datum &var, Datum &value, bool global, DatumHash *localvars) {
@@ -1243,7 +1255,7 @@ void Lingo::varAssign(Datum &var, Datum &value, bool global, DatumHash *localvar
 		localvars = _localvars;
 	}
 
-	if (var.type != VAR && var.type != FIELDREF) {
+	if (var.type != VAR && var.type != FIELDNAME && var.type != FIELDNUM) {
 		warning("varAssign: assignment to non-variable");
 		return;
 	}
@@ -1271,13 +1283,13 @@ void Lingo::varAssign(Datum &var, Datum &value, bool global, DatumHash *localvar
 		}
 
 		warning("varAssign: variable %s not defined", name.c_str());
-	} else if (var.type == FIELDREF || var.type == CASTREF) {
+	} else if (var.type == FIELDNAME || var.type == FIELDNUM || var.type == CASTNAME || var.type == CASTNUM) {
 		Movie *movie = g_director->getCurrentMovie();
 		if (!movie) {
 			warning("varAssign: Assigning to a reference to an empty movie");
 			return;
 		}
-		int referenceId = var.u.i;
+		int referenceId = castIdFetch(var);
 		CastMember *member = g_director->getCurrentMovie()->getCastMember(referenceId);
 		if (!member) {
 			warning("varAssign: Unknown cast id %d", referenceId);
@@ -1301,7 +1313,7 @@ Datum Lingo::varFetch(Datum &var, bool global, DatumHash *localvars, bool silent
 
 	Datum result;
 	result.type = VOID;
-	if (var.type != VAR && var.type != FIELDREF) {
+	if (var.type != VAR && var.type != FIELDNAME && var.type != FIELDNUM) {
 		warning("varFetch: fetch from non-variable");
 		return result;
 	}
@@ -1335,7 +1347,7 @@ Datum Lingo::varFetch(Datum &var, bool global, DatumHash *localvars, bool silent
 		if (!silent)
 			warning("varFetch: variable %s not found", name.c_str());
 		return result;
-	} else if (var.type == FIELDREF) {
+	} else if (var.type == FIELDNAME || var.type == FIELDNUM) {
 		CastMember *cast = _vm->getCurrentMovie()->getCastMember(var.u.i);
 		if (cast) {
 			switch (cast->_type) {
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 321bb49a0e..044f9da15c 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -285,7 +285,7 @@ public:
 	void pushContext(const Symbol funcSym, bool allowRetVal, Datum defaultRetVal);
 	void popContext();
 	void cleanLocalVars();
-	int castIdFetch(Datum &var);
+	int castIdFetch(const Datum &var);
 	void varAssign(Datum &var, Datum &value, bool global = false, DatumHash *localvars = nullptr);
 	Datum varFetch(Datum &var, bool global = false, DatumHash *localvars = nullptr, bool silent = false);
 




More information about the Scummvm-git-logs mailing list