[Scummvm-git-logs] scummvm master -> 37b473cc0d9a4b26e416142539ae9b8ab331b9b7

sev- sev at scummvm.org
Sun Jan 19 12:52:18 UTC 2020


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

Summary:
a965196116 DIRECTOR: LINGO: Fixed 'return' preprocessing
9d4d4a063e DIRECTOR: LINGO: Implemented 'the last of <chunk>' parsing and stub
6a6935ed4c DIRECTOR: LINGO: Added test for 'the last of' chunk expression
84e8ab4956 DIRECTOR: LINGO: Proper stub for 'ancestor' property
13049abaff DIRECTOR: LINGO: Arrays could be initialized with expressions
f41de8e74a DIRECTOR: LINGO: Added test for initializing arrays with expressions
990c2736f9 DIRECTOR: JANOTORIAL: Whitespace fixes
388963f844 DIRECTOR: LINGO: Implement parsing and stub for 'repeat with...in <list>'
37b473cc0d DIRECTOR: LINGO: Improved debug message


Commit: a965196116c034a0645025663c1dc8ff7e975817
    https://github.com/scummvm/scummvm/commit/a965196116c034a0645025663c1dc8ff7e975817
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T02:04:58+01:00

Commit Message:
DIRECTOR: LINGO: Fixed 'return' preprocessing

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


diff --git a/engines/director/lingo/lingo-preprocessor.cpp b/engines/director/lingo/lingo-preprocessor.cpp
index a5a8385..6b81cab 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -346,8 +346,10 @@ Common::String Lingo::preprocessReturn(Common::String in) {
 
 		next = nexttok(ptr + 6); // end of 'return'
 
-		if (prev.equals("&") || prev.equals("&&") || prev.equals("=") ||
-				next.equals("&") || next.equals("&&")) {
+		debugC(2, kDebugLingoParse, "RETURN: prevtok: %s nexttok: %s", prev.c_str(), next.c_str());
+
+		if (prev.hasSuffix("&") || prev.hasSuffix("&&") || prev.hasSuffix("=") ||
+				next.hasPrefix("&") || next.hasPrefix("&&")) {
 			res += "scummvm_"; // Turn it into scummvm_return
 		}
 


Commit: 9d4d4a063e7b00729df05297e4b05a6ab652f97b
    https://github.com/scummvm/scummvm/commit/9d4d4a063e7b00729df05297e4b05a6ab652f97b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T13:05:08+01:00

Commit Message:
DIRECTOR: LINGO: Implemented 'the last of <chunk>' parsing and stub

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-builtins.h
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 7b264b5..6680709 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -229,6 +229,10 @@ static struct BuiltinProto {
 	{ "numberOfItems",	LB::b_numberofitems,1, 1, false, 4, FBLTIN },	//			D4 f
 	{ "numberOfLines",	LB::b_numberoflines,1, 1, false, 4, FBLTIN },	//			D4 f
 	{ "numberOfWords",	LB::b_numberofwords,1, 1, false, 4, FBLTIN },	//			D4 f
+	{ "lastCharOf",		LB::b_lastcharof,	1, 1, false, 4, FBLTIN },	//			D4 f
+	{ "lastItemOf",		LB::b_lastitemof,	1, 1, false, 4, FBLTIN },	//			D4 f
+	{ "lastLineOf",		LB::b_lastlineof,	1, 1, false, 4, FBLTIN },	//			D4 f
+	{ "lastWordOf",		LB::b_lastwordof,	1, 1, false, 4, FBLTIN },	//			D4 f
 
 	{ 0, 0, 0, 0, false, 0, 0 }
 };
@@ -1814,5 +1818,44 @@ void LB::b_numberofwords(int nargs) {
 	g_lingo->push(d);
 }
 
+void LB::b_lastcharof(int nargs) {
+	Datum d = g_lingo->pop();
+
+	warning("STUB: b_lastcharof");
+	d.toInt();
+	d.u.i = 0;
+
+	g_lingo->push(d);
+}
+
+void LB::b_lastitemof(int nargs) {
+	Datum d = g_lingo->pop();
+
+	warning("STUB: b_lastitemof");
+	d.toInt();
+	d.u.i = 0;
+
+	g_lingo->push(d);
+}
+
+void LB::b_lastlineof(int nargs) {
+	Datum d = g_lingo->pop();
+
+	warning("STUB: b_lastlineof");
+	d.toInt();
+	d.u.i = 0;
+
+	g_lingo->push(d);
+}
+
+void LB::b_lastwordof(int nargs) {
+	Datum d = g_lingo->pop();
+
+	warning("STUB: b_lastwordof");
+	d.toInt();
+	d.u.i = 0;
+
+	g_lingo->push(d);
+}
 
 } // End of namespace Director
diff --git a/engines/director/lingo/lingo-builtins.h b/engines/director/lingo/lingo-builtins.h
index 06bac60..ff1686e 100644
--- a/engines/director/lingo/lingo-builtins.h
+++ b/engines/director/lingo/lingo-builtins.h
@@ -202,6 +202,10 @@ namespace LB {
 	void b_numberofitems(int nargs);
 	void b_numberoflines(int nargs);
 	void b_numberofwords(int nargs);
+	void b_lastcharof(int nargs);
+	void b_lastitemof(int nargs);
+	void b_lastlineof(int nargs);
+	void b_lastwordof(int nargs);
 
 } // End of namespace LB
 
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index d206c72..8da5e77 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 76
-#define YY_END_OF_BUFFER 77
+#define YY_NUM_RULES 77
+#define YY_END_OF_BUFFER 78
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,45 +373,48 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[339] =
+static yyconst flex_int16_t yy_accept[366] =
     {   0,
-        0,    0,   77,   75,    4,   73,   73,   75,   75,   75,
-       72,   72,   72,   71,   72,   68,   72,   69,   69,   69,
-       69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
-       69,   69,   69,   69,   75,    3,    3,   69,    4,   73,
-        0,    0,    0,   74,    5,   67,    2,   70,   71,   66,
-       64,   65,   69,   69,   69,   69,   69,   69,   69,   69,
-       69,   69,   69,   22,   13,   69,   69,   69,   69,   69,
-       69,   69,   69,   69,   35,   36,   69,   38,   69,   69,
-       69,   69,   69,   69,   69,   69,   69,   69,   57,   69,
-       69,   69,    1,    3,    3,    0,   69,    5,    2,   70,
-
-       69,    7,   69,   69,   69,   69,   69,   69,   16,   69,
-       69,    0,   69,   69,   69,   69,   69,   69,   69,   31,
-       69,   69,   34,   69,   69,   69,   69,   44,   69,   46,
-       69,   69,   69,   69,   69,   69,   69,   69,   69,    0,
-       69,   69,   69,    9,   69,   11,   12,   15,    0,   18,
-       69,    0,   69,   69,   25,   26,   27,   28,   69,   69,
-       69,   33,   37,   40,   69,   69,   69,   69,   69,   69,
-       49,    0,   56,   61,   69,   59,   63,    0,   69,    6,
-       69,   69,    0,   16,   69,   21,   69,   69,   29,   69,
-       32,    0,   69,   69,   69,   69,   69,   69,   69,   55,
-
-       55,   55,   55,   62,   69,    0,   69,    8,   69,    0,
-       16,   19,    0,   69,   69,   69,    0,   69,   69,   69,
-       45,    0,   58,   48,    0,    0,   55,   55,   55,   60,
-        0,   69,   69,   14,    0,   69,   69,    0,   30,    0,
-       69,   69,   69,    0,    0,    0,    0,    0,    0,    0,
-        0,   55,   55,   55,    0,   17,   10,    0,   23,   69,
-       30,   30,    0,   69,   42,   43,    0,    0,    0,    0,
-        0,    0,    0,   55,   55,   55,   17,    0,   69,   30,
-        0,   41,    0,    0,    0,    0,    0,    0,    0,   55,
-        0,   55,    0,   24,   39,    0,    0,    0,   47,   54,
-
-       53,   54,   55,    0,    0,    0,   20,   47,    0,    0,
-        0,   53,    0,    0,    0,    0,   47,    0,    0,    0,
-        0,   50,   51,   47,    0,    0,   51,   47,    0,   53,
-        0,   53,    0,    0,    0,    0,   52,    0
+        0,    0,   78,   76,    4,   74,   74,   76,   76,   76,
+       73,   73,   73,   72,   73,   69,   73,   70,   70,   70,
+       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
+       70,   70,   70,   70,   76,    3,    3,   70,    4,   74,
+        0,    0,    0,   75,    5,   68,    2,   71,   72,   67,
+       65,   66,   70,   70,   70,   70,   70,   70,   70,   70,
+       70,   70,   70,   22,   13,   70,   70,   70,   70,   70,
+       70,   70,   70,   70,   35,   36,   70,   38,   70,   70,
+       70,   70,   70,   70,   70,   70,   70,   70,   58,   70,
+       70,   70,    1,    3,    3,    0,   70,    5,    2,   71,
+
+       70,    7,   70,   70,   70,   70,   70,   70,   16,   70,
+       70,    0,   70,   70,   70,   70,   70,   70,   70,   31,
+       70,   70,   34,   70,   70,   70,   70,   44,   70,   46,
+       70,   70,   70,   70,   70,   70,   70,   70,   70,    0,
+       70,   70,   70,    9,   70,   11,   12,   15,    0,   18,
+       70,    0,   70,   70,   25,   26,   27,   28,   70,   70,
+       70,   33,   37,   40,   70,   70,   70,   70,   70,   70,
+       49,    0,   57,   62,   70,   60,   64,    0,   70,    6,
+       70,   70,    0,   16,   70,   21,   70,   70,   29,   70,
+       32,    0,   70,   70,   70,   70,   70,   70,   70,   56,
+
+       56,   56,   56,   56,   63,   70,    0,   70,    8,   70,
+        0,   16,   19,    0,   70,   70,   70,    0,   70,   70,
+       70,   45,    0,   59,   48,    0,    0,   56,   56,   56,
+       56,   61,    0,   70,   70,   14,    0,   70,   70,    0,
+       30,    0,   70,   70,   70,    0,    0,    0,    0,    0,
+        0,    0,    0,   56,   56,   56,   56,    0,   17,   10,
+        0,   23,   70,   30,   30,    0,   70,   42,   43,    0,
+        0,    0,    0,    0,    0,    0,   56,   56,   56,   56,
+       17,    0,   70,   30,    0,   41,    0,    0,    0,    0,
+        0,    0,    0,    0,   56,    0,   56,    0,   24,   39,
+
+        0,    0,    0,   47,   55,   54,   55,    0,    0,    0,
+        0,   56,    0,    0,    0,   20,   47,    0,    0,    0,
+       54,    0,    0,    0,    0,    0,    0,    0,    0,   47,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   50,
+       51,   47,    0,    0,    0,   55,   54,   54,   55,    0,
+       51,   47,   53,   54,   54,    0,   54,    0,   54,    0,
+        0,    0,    0,   52,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -457,18 +460,18 @@ static yyconst flex_int32_t yy_meta[66] =
         5,    5,    5,    5,    1
     } ;
 
-static yyconst flex_int16_t yy_base[355] =
+static yyconst flex_int16_t yy_base[383] =
     {   0,
-        0,   64,  240,  879,   68,  879,  879,   72,  180,    0,
-      879,  164,  140,   55,   63,  879,  130,   59,   59,   59,
+        0,   64,  240,  981,   68,  981,  981,   72,  180,    0,
+      981,  164,  140,   55,   63,  981,  130,   59,   59,   59,
        55,   63,    0,   64,   75,   70,  100,   77,  110,  102,
-       98,  139,  126,  152,  145,  185,  206,  110,  210,  879,
-      214,  175,   97,  879,    0,  879,    0,   86,  171,  879,
-      879,  879,    0,   66,  116,  144,  154,  111,  192,  134,
+       98,  139,  126,  152,  145,  185,  206,  110,  210,  981,
+      214,  175,   97,  981,    0,  981,    0,   86,  171,  981,
+      981,  981,    0,   66,  116,  144,  154,  111,  192,  134,
       175,  172,  151,   82,    0,  165,  183,  174,  195,  207,
       196,  215,  194,  199,    0,    0,  215,    0,  220,  218,
       206,  211,  208,  208,  213,  221,  229,  238,    0,  248,
-      242,  245,  879,  283,  287,  257,  262,    0,    0,   69,
+      242,  245,  981,  283,  287,  257,  262,    0,    0,   69,
 
       261,    0,  263,  262,  261,  262,  268,  279,   91,  268,
       286,  308,  276,  293,  284,  294,  287,  289,  292,    0,
@@ -477,73 +480,79 @@ static yyconst flex_int16_t yy_base[355] =
       333,  338,  339,    0,  349,    0,    0,  153,  371,    0,
       357,  347,  362,  348,    0,    0,    0,    0,  354,  355,
       367,    0,    0,  395,  368,  373,  381,  382,  351,  371,
-        0,  412,    0,    0,  382,  382,    0,  380,  386,    0,
-      399,  397,  419,    0,  399,  429,  400,  399,    0,  415,
-        0,  446,  417,  408,  409,  408,  450,  433,  422,  472,
-
-      473,  479,  485,    0,  435,  442,  443,    0,  457,  469,
-        0,    0,  492,  473,  477,  499,  472,  480,  470,  472,
-        0,  538,    0,    0,  516,  493,  539,  532,  553,    0,
-      475,  486,  513,  879,  520,  499,  529,  517,    0,  537,
-      535,  525,  522,  537,  557,  539,  533,  582,  559,  556,
-      569,  595,  604,  605,  558,    0,    0,  578,    0,  567,
-        0,    0,  580,  584,    0,    0,  586,  597,  601,  591,
-      588,  622,  597,  646,  648,  650,  879,  602,  599,    0,
-      613,    0,  603,  623,  606,  631,  643,  626,  645,  670,
-      674,  672,  647,    0,  879,  652,  658,  659,  879,  879,
-
-        0,  879,  685,  695,  663,  700,  879,  879,  670,  671,
-      676,    0,  712,  711,  713,  689,  879,  687,  697,  732,
-      716,  739,  748,  879,  718,  750,  756,  879,  763,  767,
-      745,  771,  745,  734,  777,  783,  879,  879,  812,  814,
-      817,  820,  826,  831,  836,  838,  843,  848,  851,  854,
-      859,  862,  867,  872
+        0,  436,    0,    0,  382,  382,    0,  380,  386,    0,
+      396,  395,  419,    0,  395,  424,  396,  397,    0,  413,
+        0,  445,  415,  406,  415,  416,  451,  422,  418,  452,
+
+      469,  478,  480,  491,    0,  449,  451,  458,    0,  466,
+      462,    0,    0,  498,  479,  478,  505,  471,  487,  477,
+      481,    0,  544,    0,    0,  527,  506,  525,  548,  559,
+      550,    0,  510,  504,  522,  981,  537,  496,  529,  459,
+        0,  537,  550,  540,  542,  557,  568,  560,  554,  588,
+      578,  575,  578,  602,  621,  619,  630,  569,    0,    0,
+      588,    0,  579,    0,    0,  589,  592,    0,    0,  595,
+      607,  617,  606,  609,  520,  617,  645,  646,  660,  670,
+      981,  625,  623,    0,  625,    0,  624,  642,  633,  643,
+      655,  681,  658,  682,  698,  694,  705,  672,    0,  981,
+
+      673,  695,  683,  981,  981,    0,  981,  704,  721,  730,
+      732,  741,  742,  711,  754,  981,  981,  660,  704,  717,
+        0,  736,  760,  766,  773,  786,  768,  774,  738,  981,
+      734,  754,  754,  765,  809,  792,  813,  818,  780,  798,
+      824,  981,  789,  831,  836,  842,  803,  802,  848,  849,
+      855,  981,  981,  856,  860,  861,  862,  843,  869,  823,
+      847,  875,  876,  981,  981,  910,  912,  915,  918,  924,
+      929,  934,  936,  941,  946,  949,  952,  957,  962,  964,
+      969,  974
     } ;
 
-static yyconst flex_int16_t yy_def[355] =
+static yyconst flex_int16_t yy_def[383] =
     {   0,
-      338,    1,  338,  338,  338,  338,  338,  338,  339,  340,
-      338,  338,  338,  338,  338,  338,  338,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  338,  338,  338,  341,  338,  338,
-      338,  338,  339,  338,  342,  338,  343,  338,  338,  338,
-      338,  338,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  338,  338,  338,  338,  341,  342,  343,  338,
-
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  338,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  338,
-      341,  341,  341,  341,  341,  341,  341,  341,  344,  341,
-      341,  338,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
-      341,  345,  341,  341,  341,  341,  341,  338,  341,  341,
-      341,  341,  338,  346,  341,  338,  341,  341,  341,  341,
-      341,  338,  341,  341,  341,  341,  341,  341,  341,  345,
-
-      345,  345,  345,  341,  341,  338,  341,  341,  341,  338,
-      346,  341,  338,  341,  341,  347,  338,  341,  341,  341,
-      341,  338,  341,  341,  338,  338,  345,  345,  345,  341,
-      338,  341,  341,  338,  338,  341,  341,  348,  349,  338,
-      341,  341,  341,  338,  338,  338,  338,  338,  338,  338,
-      338,  345,  345,  345,  338,  341,  341,  338,  341,  341,
-      350,  349,  338,  341,  341,  341,  338,  338,  338,  338,
-      338,  338,  338,  345,  345,  345,  338,  338,  341,  350,
-      338,  341,  338,  338,  338,  338,  338,  351,  338,  345,
-      338,  345,  338,  341,  338,  338,  338,  338,  338,  338,
-
-      352,  338,  345,  338,  338,  338,  338,  338,  338,  338,
-      338,  352,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  351,  338,  338,  338,  338,  351,  338,  353,  354,
-      338,  354,  338,  338,  338,  338,  338,    0,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338
+      365,    1,  365,  365,  365,  365,  365,  365,  366,  367,
+      365,  365,  365,  365,  365,  365,  365,  368,  368,  368,
+      368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  368,  368,  368,  365,  365,  365,  368,  365,  365,
+      365,  365,  366,  365,  369,  365,  370,  365,  365,  365,
+      365,  365,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  368,  365,  365,  365,  365,  368,  369,  370,  365,
+
+      368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  365,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  368,  368,  368,  368,  368,  368,  368,  368,  365,
+      368,  368,  368,  368,  368,  368,  368,  368,  371,  368,
+      368,  365,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
+      368,  372,  368,  368,  368,  368,  368,  365,  368,  368,
+      368,  368,  365,  373,  368,  365,  368,  368,  368,  368,
+      368,  365,  368,  368,  368,  368,  368,  368,  368,  372,
+
+      372,  372,  372,  372,  368,  368,  365,  368,  368,  368,
+      365,  373,  368,  365,  368,  368,  374,  365,  368,  368,
+      368,  368,  365,  368,  368,  365,  365,  372,  372,  372,
+      372,  368,  365,  368,  368,  365,  365,  368,  368,  375,
+      376,  365,  368,  368,  368,  365,  365,  365,  365,  365,
+      365,  365,  365,  372,  372,  372,  372,  365,  368,  368,
+      365,  368,  368,  377,  376,  365,  368,  368,  368,  365,
+      365,  365,  365,  365,  365,  365,  372,  372,  372,  372,
+      365,  365,  368,  377,  365,  368,  365,  365,  365,  365,
+      365,  378,  365,  379,  372,  365,  372,  365,  368,  365,
+
+      365,  365,  365,  365,  365,  380,  365,  379,  379,  379,
+      379,  372,  365,  365,  365,  365,  365,  365,  365,  365,
+      380,  365,  379,  379,  379,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  379,  378,  379,  365,  365,  378,
+      365,  365,  365,  365,  365,  379,  380,  380,  379,  365,
+      378,  365,  365,  380,  380,  381,  382,  365,  382,  365,
+      365,  365,  365,  365,    0,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365
     } ;
 
-static yyconst flex_int16_t yy_nxt[945] =
+static yyconst flex_int16_t yy_nxt[1047] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   11,
        13,    4,   14,   15,   16,   17,   18,   19,   20,   21,
@@ -570,8 +579,8 @@ static yyconst flex_int16_t yy_nxt[945] =
        90,   91,  116,  115,  111,   92,   96,   95,   40,   40,
        95,   39,   40,   40,   41,   41,   40,   40,   41,  109,
       106,  110,  113,  114,  117,  118,  116,   96,  115,  107,
-      119,   96,  122,  123,  120,  124,  125,  133,  126,  338,
-      128,  129,  130,  131,  106,  132,  338,  127,  117,   42,
+      119,   96,  122,  123,  120,  124,  125,  133,  126,  365,
+      128,  129,  130,  131,  106,  132,  365,  127,  117,   42,
       118,  121,   96,  107,  119,  134,  122,  123,  135,  120,
       124,  125,  133,  126,  128,  129,  130,  131,  136,  132,
        42,  127,  137,  140,   42,  121,  138,  139,   42,  134,
@@ -585,73 +594,84 @@ static yyconst flex_int16_t yy_nxt[945] =
       160,  158,  152,  169,  176,  159,  155,   42,  161,  162,
       170,   42,  167,  171,  163,  164,  165,  174,  175,  172,
       166,  168,  172,  177,  178,  182,  152,  179,  169,  176,
-      180,  181,  149,  185,  170,  149,  186,  171,  187,  338,
+      180,  181,  149,  185,  170,  149,  186,  171,  187,  365,
       188,  174,  175,  189,  190,  198,  173,  191,  177,  178,
       182,  179,  194,  195,  180,  181,  192,  196,  185,  192,
 
-      186,  197,  204,  187,  188,  199,  205,  189,  190,  198,
-      173,  193,  191,  172,  206,  207,  172,  194,  195,  208,
-      183,  209,  196,  183,  338,  212,  197,  204,  214,  199,
-      213,  205,  215,  213,  216,  218,  193,  219,  206,  207,
-      201,  220,  221,  210,  208,  202,  209,  192,  203,  212,
-      192,  222,  214,  223,  222,  224,  215,  338,  338,  216,
-      218,  219,  338,  230,  201,  220,  221,  217,  210,  202,
-      338,  231,  203,  225,  225,  232,  225,  225,  223,  224,
-      225,  226,  226,  225,  338,  233,  225,  230,  226,  225,
-      234,  236,  217,  213,  226,  231,  213,  237,  241,  232,
-
-      238,  229,  338,  238,  240,  242,  243,  255,  227,  233,
-      228,   53,  249,  235,  338,  234,  236,  248,  238,  259,
-      248,  238,  237,  241,  338,  256,  229,  251,  240,  242,
-      243,  255,  227,  225,  228,  249,  225,  249,  235,  222,
-      225,  226,  222,  225,  259,  250,  257,  260,  226,  256,
-      251,  251,  258,  263,  225,  264,  244,  225,  265,  245,
-      249,  266,  226,  267,  253,  269,  252,  270,  246,  250,
-      257,  247,  260,  268,  251,  271,  258,  272,  263,  254,
-      264,  244,  265,  248,  245,  266,  248,  267,  253,  269,
-      252,  270,  246,  273,  278,  247,  225,  277,  268,  225,
-
-      271,  279,  272,  254,  226,  225,  225,  281,  225,  225,
-      282,  250,  274,  226,  226,  283,  284,  285,  273,  278,
-      286,  277,  287,  288,  289,  279,  288,  288,  338,  293,
-      288,  281,  294,  295,  282,  250,  296,  274,  275,  283,
-      276,  284,  285,  297,  286,  298,  287,  225,  289,  291,
-      225,  225,  291,  293,  225,  226,  294,  226,  295,  226,
-      296,  299,  275,  300,  276,  302,  290,  307,  297,  298,
-      292,  225,  308,  306,  225,  304,  306,  338,  304,  226,
-      311,  226,  309,  338,  314,  299,  313,  310,  300,  313,
-      302,  290,  307,  249,  226,  292,  304,  308,  317,  304,
-
-      319,  315,  303,  305,  315,  311,  318,  309,  251,  314,
-      323,  310,  322,  320,  315,  322,  320,  315,  249,  249,
-      338,  324,  317,  325,  305,  319,  303,  305,  338,  316,
-      318,  249,  251,  320,  251,  323,  320,  326,  328,  338,
-      322,  321,  316,  322,  249,  324,  251,  325,  305,  327,
-      338,  329,  327,  316,  329,  336,  249,  327,  251,  338,
-      327,  321,  326,  328,  329,  321,  316,  329,  331,  333,
-      251,  331,  331,  335,  334,  331,  338,  338,  337,  312,
-      336,  337,  338,  312,  337,  321,  338,  337,  338,  338,
-      338,  338,  338,  338,  333,  338,  338,  335,  334,  338,
-
-      338,  338,  338,  301,  338,  338,  338,  312,  338,  338,
-      338,  312,   43,   43,  338,   43,   43,   43,   45,   45,
-       53,   53,   53,   98,   98,   98,   99,   99,  338,   99,
-       99,   99,  184,  338,  338,  184,  184,  200,  338,  338,
-      200,  211,  211,  211,  239,  338,  239,  239,  239,  261,
-      338,  338,  261,  261,  262,  262,  262,  280,  280,  280,
-      301,  338,  338,  301,  301,  312,  312,  312,  330,  338,
-      338,  330,  330,  332,  338,  332,  332,  332,    3,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338
+      186,  197,  205,  187,  188,  199,  206,  189,  190,  198,
+      173,  193,  191,  365,  207,  208,  209,  194,  195,  210,
+      183,  213,  196,  183,  215,  214,  197,  205,  214,  199,
+      216,  206,  217,  219,  365,  220,  193,  172,  207,  208,
+      172,  209,  224,  211,  210,  213,  192,  221,  215,  192,
+      222,  225,  223,  226,  216,  223,  226,  217,  219,  220,
+      240,  227,  201,  240,  202,  365,  218,  224,  211,  203,
+      226,  221,  204,  226,  222,  225,  365,  232,  227,  226,
+      233,  226,  226,  236,  226,  228,  201,  227,  202,  227,
+      234,  218,  226,  203,  235,  226,  204,  238,  239,  214,
+
+      227,  232,  214,  242,  233,  243,  240,  231,  236,  240,
+      228,  230,  244,  229,  234,  245,  262,   53,  235,  237,
+      365,  292,  238,  239,  292,  251,  226,  242,  250,  226,
+      243,  250,  231,  365,  227,  230,  244,  229,  365,  245,
+      253,  262,  258,  259,  237,  223,  251,  263,  223,  226,
+      251,  226,  226,  266,  226,  260,  252,  227,  254,  227,
+      226,  253,  246,  226,  253,  247,  258,  259,  227,  261,
+      267,  251,  263,  268,  248,  255,  257,  249,  266,  260,
+      252,  269,  254,  270,  271,  253,  272,  246,  273,  250,
+      247,  256,  250,  261,  274,  267,  275,  268,  248,  255,
+
+      257,  249,  276,  226,  282,  269,  226,  270,  281,  271,
+      272,  227,  273,  283,  365,  256,  285,  252,  286,  274,
+      226,  275,  226,  226,  287,  226,  288,  276,  227,  282,
+      227,  226,  281,  289,  226,  290,  277,  283,  278,  227,
+      285,  252,  286,  291,  293,  300,  294,  226,  287,  294,
+      226,  288,  298,  279,  227,  227,  299,  301,  289,  290,
+      277,  296,  302,  278,  296,  280,  295,  291,  293,  227,
+      300,  226,  303,  304,  226,  305,  298,  279,  307,  227,
+      299,  301,  292,  250,  365,  292,  250,  302,  330,  280,
+      297,  295,  316,  317,  365,  313,  303,  304,  313,  226,
+
+      305,  309,  226,  307,  320,  322,  315,  227,  322,  315,
+      365,  310,  330,  251,  227,  297,  311,  316,  317,  318,
+      365,  365,  322,  314,  319,  322,  309,  365,  253,  320,
+      312,  322,  327,  322,  322,  310,  322,  323,  251,  331,
+      311,  332,  326,  313,  318,  326,  313,  314,  319,  365,
+      227,  324,  253,  365,  312,  328,  325,  327,  328,  341,
+      333,  322,  323,  331,  322,  334,  332,  336,  342,  340,
+      336,  314,  340,  251,  322,  328,  324,  322,  328,  365,
+      343,  325,  344,  329,  341,  333,  345,  338,  253,  334,
+      338,  365,  342,  292,  335,  314,  292,  365,  251,  340,
+
+      337,  350,  340,  329,  343,  251,  344,  329,  365,  352,
+      322,  345,  253,  322,  322,  339,  347,  322,  335,  338,
+      253,  348,  338,  355,  337,  351,  350,  329,  351,  346,
+      251,  354,  353,  349,  352,  353,  365,  353,  365,  339,
+      353,  347,  365,  322,  253,  348,  322,  339,  355,  322,
+      356,  362,  322,  356,  346,  354,  351,  353,  349,  351,
+      353,  353,  356,  358,  353,  356,  358,  360,  363,  365,
+      358,  339,  361,  358,  321,  362,  364,  364,  365,  364,
+      364,  321,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  360,  363,  365,  365,  361,  365,  365,  365,
+
+      365,  306,  321,  365,  365,  365,  365,  365,  365,  321,
+       43,   43,  365,   43,   43,   43,   45,   45,   53,   53,
+       53,   98,   98,   98,   99,   99,  365,   99,   99,   99,
+      184,  365,  365,  184,  184,  200,  365,  365,  200,  212,
+      212,  212,  241,  365,  241,  241,  241,  264,  365,  365,
+      264,  264,  265,  265,  265,  284,  284,  284,  306,  365,
+      365,  306,  306,  308,  365,  365,  308,  321,  321,  321,
+      357,  365,  365,  357,  357,  359,  365,  359,  359,  359,
+        3,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365
     } ;
 
-static yyconst flex_int16_t yy_chk[945] =
+static yyconst flex_int16_t yy_chk[1047] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -698,65 +718,76 @@ static yyconst flex_int16_t yy_chk[945] =
       145,  141,  165,  166,  142,  143,  164,  167,  151,  164,
 
       152,  168,  175,  153,  154,  170,  176,  159,  160,  169,
-      135,  164,  161,  172,  178,  179,  172,  165,  166,  181,
-      183,  182,  167,  183,    0,  185,  168,  175,  187,  170,
-      186,  176,  188,  186,  190,  193,  164,  194,  178,  179,
-      172,  195,  196,  183,  181,  172,  182,  192,  172,  185,
-      192,  197,  187,  198,  197,  199,  188,    0,    0,  190,
-      193,  194,    0,  205,  172,  195,  196,  192,  183,  172,
-        0,  206,  172,  200,  201,  207,  200,  201,  198,  199,
-      202,  200,  201,  202,    0,  209,  203,  205,  202,  203,
-      210,  214,  192,  213,  203,  206,  213,  215,  218,  207,
-
-      216,  203,    0,  216,  217,  219,  220,  231,  201,  209,
-      202,  216,  226,  213,    0,  210,  214,  225,  238,  236,
-      225,  238,  215,  218,    0,  232,  203,  226,  217,  219,
-      220,  231,  201,  228,  202,  225,  228,  226,  213,  222,
-      227,  228,  222,  227,  236,  225,  233,  237,  227,  232,
-      225,  226,  235,  240,  229,  241,  222,  229,  242,  222,
-      225,  243,  229,  244,  228,  246,  227,  247,  222,  225,
-      233,  222,  237,  245,  225,  249,  235,  250,  240,  229,
-      241,  222,  242,  248,  222,  243,  248,  244,  228,  246,
-      227,  247,  222,  251,  258,  222,  252,  255,  245,  252,
-
-      249,  260,  250,  229,  252,  253,  254,  263,  253,  254,
-      264,  248,  252,  253,  254,  267,  268,  269,  251,  258,
-      270,  255,  271,  272,  273,  260,  272,  288,    0,  278,
-      288,  263,  279,  281,  264,  248,  283,  252,  253,  267,
-      254,  268,  269,  284,  270,  285,  271,  274,  273,  275,
-      274,  276,  275,  278,  276,  274,  279,  275,  281,  276,
-      283,  286,  253,  287,  254,  289,  274,  293,  284,  285,
-      276,  290,  296,  292,  290,  291,  292,    0,  291,  290,
-      298,  292,  297,    0,  305,  286,  303,  297,  287,  303,
-      289,  274,  293,  291,  303,  276,  304,  296,  309,  304,
-
-      311,  306,  290,  291,  306,  298,  310,  297,  291,  305,
-      316,  297,  314,  313,  315,  314,  313,  315,  291,  306,
-        0,  318,  309,  319,  304,  311,  290,  291,    0,  306,
-      310,  313,  291,  320,  306,  316,  320,  321,  325,    0,
-      322,  313,  315,  322,  306,  318,  313,  319,  304,  323,
-        0,  326,  323,  306,  326,  334,  313,  327,  306,    0,
-      327,  320,  321,  325,  329,  313,  315,  329,  330,  331,
-      313,  330,  332,  333,  331,  332,    0,    0,  335,  330,
-      334,  335,    0,  332,  336,  320,    0,  336,    0,    0,
-        0,    0,    0,    0,  331,    0,    0,  333,  331,    0,
-
-        0,    0,    0,  329,    0,    0,    0,  330,    0,    0,
-        0,  332,  339,  339,    0,  339,  339,  339,  340,  340,
-      341,  341,  341,  342,  342,  342,  343,  343,    0,  343,
-      343,  343,  344,    0,    0,  344,  344,  345,    0,    0,
-      345,  346,  346,  346,  347,    0,  347,  347,  347,  348,
-        0,    0,  348,  348,  349,  349,  349,  350,  350,  350,
-      351,    0,    0,  351,  351,  352,  352,  352,  353,    0,
-        0,  353,  353,  354,    0,  354,  354,  354,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
-      338,  338,  338,  338
+      135,  164,  161,    0,  178,  179,  181,  165,  166,  182,
+      183,  185,  167,  183,  187,  186,  168,  175,  186,  170,
+      188,  176,  190,  193,    0,  194,  164,  172,  178,  179,
+      172,  181,  198,  183,  182,  185,  192,  195,  187,  192,
+      196,  199,  197,  200,  188,  197,  200,  190,  193,  194,
+      240,  200,  172,  240,  172,    0,  192,  198,  183,  172,
+      201,  195,  172,  201,  196,  199,    0,  206,  201,  202,
+      207,  203,  202,  211,  203,  201,  172,  202,  172,  203,
+      208,  192,  204,  172,  210,  204,  172,  215,  216,  214,
+
+      204,  206,  214,  218,  207,  219,  217,  204,  211,  217,
+      201,  203,  220,  202,  208,  221,  238,  217,  210,  214,
+        0,  275,  215,  216,  275,  227,  228,  218,  226,  228,
+      219,  226,  204,    0,  228,  203,  220,  202,    0,  221,
+      227,  238,  233,  234,  214,  223,  226,  239,  223,  229,
+      227,  231,  229,  242,  231,  235,  226,  229,  228,  231,
+      230,  226,  223,  230,  227,  223,  233,  234,  230,  237,
+      243,  226,  239,  244,  223,  229,  231,  223,  242,  235,
+      226,  245,  228,  246,  247,  226,  248,  223,  249,  250,
+      223,  230,  250,  237,  251,  243,  252,  244,  223,  229,
+
+      231,  223,  253,  254,  261,  245,  254,  246,  258,  247,
+      248,  254,  249,  263,    0,  230,  266,  250,  267,  251,
+      256,  252,  255,  256,  270,  255,  271,  253,  256,  261,
+      255,  257,  258,  272,  257,  273,  254,  263,  255,  257,
+      266,  250,  267,  274,  276,  285,  277,  278,  270,  277,
+      278,  271,  282,  256,  277,  278,  283,  287,  272,  273,
+      254,  279,  288,  255,  279,  257,  278,  274,  276,  279,
+      285,  280,  289,  290,  280,  291,  282,  256,  293,  280,
+      283,  287,  292,  294,    0,  292,  294,  288,  318,  257,
+      280,  278,  298,  301,    0,  296,  289,  290,  296,  295,
+
+      291,  294,  295,  293,  303,  308,  297,  295,  308,  297,
+        0,  294,  318,  296,  297,  280,  294,  298,  301,  302,
+        0,    0,  309,  296,  302,  309,  294,    0,  296,  303,
+      295,  310,  314,  311,  310,  294,  311,  309,  296,  319,
+      294,  320,  312,  313,  302,  312,  313,  296,  302,    0,
+      312,  310,  296,    0,  295,  315,  311,  314,  315,  329,
+      322,  323,  309,  319,  323,  322,  320,  324,  331,  327,
+      324,  313,  327,  315,  325,  328,  310,  325,  328,    0,
+      332,  311,  333,  315,  329,  322,  334,  326,  315,  322,
+      326,    0,  331,  336,  323,  313,  336,    0,  315,  340,
+
+      325,  339,  340,  328,  332,  326,  333,  315,    0,  343,
+      335,  334,  315,  335,  337,  326,  336,  337,  323,  338,
+      326,  336,  338,  348,  325,  341,  339,  328,  341,  335,
+      326,  347,  344,  337,  343,  344,    0,  345,    0,  326,
+      345,  336,    0,  346,  326,  336,  346,  338,  348,  349,
+      350,  360,  349,  350,  335,  347,  351,  354,  337,  351,
+      354,  355,  356,  357,  355,  356,  357,  358,  361,    0,
+      359,  338,  358,  359,  357,  360,  362,  363,    0,  362,
+      363,  359,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  358,  361,    0,    0,  358,    0,    0,    0,
+
+        0,  356,  357,    0,    0,    0,    0,    0,    0,  359,
+      366,  366,    0,  366,  366,  366,  367,  367,  368,  368,
+      368,  369,  369,  369,  370,  370,    0,  370,  370,  370,
+      371,    0,    0,  371,  371,  372,    0,    0,  372,  373,
+      373,  373,  374,    0,  374,  374,  374,  375,    0,    0,
+      375,  375,  376,  376,  376,  377,  377,  377,  378,    0,
+        0,  378,  378,  379,    0,    0,  379,  380,  380,  380,
+      381,    0,    0,  381,  381,  382,    0,  382,  382,  382,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365,  365,  365,  365,  365,
+      365,  365,  365,  365,  365,  365
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -845,7 +876,7 @@ static int checkImmediate(int token) {
 	return token;
 }
 
-#line 849 "engines/director/lingo/lingo-lex.cpp"
+#line 880 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -1031,7 +1062,7 @@ YY_DECL
 #line 90 "engines/director/lingo/lingo-lex.l"
 
 
-#line 1035 "engines/director/lingo/lingo-lex.cpp"
+#line 1066 "engines/director/lingo/lingo-lex.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -1085,13 +1116,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 339 )
+				if ( yy_current_state >= 366 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 338 );
+		while ( yy_current_state != 365 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1460,6 +1491,30 @@ YY_RULE_SETUP
 		count();
 
 		const char *ptr = &yytext[4]; // Skip 'the '
+		while (*ptr == ' ' || *ptr == '\t') ptr++;
+
+		ptr += 5; // skip 'last '
+		while (*ptr == ' ' || *ptr == '\t') ptr++;
+
+		Common::String field;
+		while (*ptr != ' ' && *ptr != '\t')
+			field += *ptr++;
+
+		yylval.s = new Common::String(Common::String::format("last%sOf", field.c_str()));
+
+		if (g_lingo->_builtins.contains(*yylval.s))
+			return FBLTIN;
+		else
+			error("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
+	}
+	YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 247 "engines/director/lingo/lingo-lex.l"
+{
+		count();
+
+		const char *ptr = &yytext[4]; // Skip 'the '
 		while (*ptr == ' ' || *ptr == '\t')
 			ptr++;
 
@@ -1514,9 +1569,9 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s', field '%s'", ptr, field.c_str());
 	}
 	YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 284 "engines/director/lingo/lingo-lex.l"
+#line 304 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1549,9 +1604,9 @@ YY_RULE_SETUP
 			return THEENTITY;
 	}
 	YY_BREAK
-case 55:
+case 56:
 YY_RULE_SETUP
-#line 315 "engines/director/lingo/lingo-lex.l"
+#line 335 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1572,74 +1627,74 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s'", ptr);
 	}
 	YY_BREAK
-case 56:
+case 57:
 YY_RULE_SETUP
-#line 334 "engines/director/lingo/lingo-lex.l"
+#line 354 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
-case 57:
+case 58:
 YY_RULE_SETUP
-#line 335 "engines/director/lingo/lingo-lex.l"
+#line 355 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
-case 58:
+case 59:
 YY_RULE_SETUP
-#line 336 "engines/director/lingo/lingo-lex.l"
+#line 356 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
-case 59:
+case 60:
 YY_RULE_SETUP
-#line 337 "engines/director/lingo/lingo-lex.l"
+#line 357 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
-case 60:
+case 61:
 YY_RULE_SETUP
-#line 338 "engines/director/lingo/lingo-lex.l"
+#line 358 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
-case 61:
+case 62:
 YY_RULE_SETUP
-#line 339 "engines/director/lingo/lingo-lex.l"
+#line 359 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
-case 62:
+case 63:
 YY_RULE_SETUP
-#line 340 "engines/director/lingo/lingo-lex.l"
+#line 360 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
-case 63:
+case 64:
 YY_RULE_SETUP
-#line 341 "engines/director/lingo/lingo-lex.l"
+#line 361 "engines/director/lingo/lingo-lex.l"
 { count(); return tWORD; }
 	YY_BREAK
-case 64:
+case 65:
 YY_RULE_SETUP
-#line 343 "engines/director/lingo/lingo-lex.l"
+#line 363 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
-case 65:
+case 66:
 YY_RULE_SETUP
-#line 344 "engines/director/lingo/lingo-lex.l"
+#line 364 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
-case 66:
+case 67:
 YY_RULE_SETUP
-#line 345 "engines/director/lingo/lingo-lex.l"
+#line 365 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
-case 67:
+case 68:
 YY_RULE_SETUP
-#line 346 "engines/director/lingo/lingo-lex.l"
+#line 366 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
-case 68:
+case 69:
 YY_RULE_SETUP
-#line 347 "engines/director/lingo/lingo-lex.l"
+#line 367 "engines/director/lingo/lingo-lex.l"
 { count(); return tEQ; }
 	YY_BREAK
-case 69:
+case 70:
 YY_RULE_SETUP
-#line 349 "engines/director/lingo/lingo-lex.l"
+#line 369 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1673,43 +1728,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 70:
+case 71:
 YY_RULE_SETUP
-#line 381 "engines/director/lingo/lingo-lex.l"
+#line 401 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
-case 71:
+case 72:
 YY_RULE_SETUP
-#line 382 "engines/director/lingo/lingo-lex.l"
+#line 402 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
-case 72:
+case 73:
 YY_RULE_SETUP
-#line 383 "engines/director/lingo/lingo-lex.l"
+#line 403 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
-case 73:
-/* rule 73 can match eol */
+case 74:
+/* rule 74 can match eol */
 YY_RULE_SETUP
-#line 384 "engines/director/lingo/lingo-lex.l"
+#line 404 "engines/director/lingo/lingo-lex.l"
 { count(); return '\n'; }
 	YY_BREAK
-case 74:
+case 75:
 YY_RULE_SETUP
-#line 385 "engines/director/lingo/lingo-lex.l"
+#line 405 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
-case 75:
+case 76:
 YY_RULE_SETUP
-#line 386 "engines/director/lingo/lingo-lex.l"
+#line 406 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 388 "engines/director/lingo/lingo-lex.l"
+#line 408 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1713 "engines/director/lingo/lingo-lex.cpp"
+#line 1768 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2003,7 +2058,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 339 )
+			if ( yy_current_state >= 366 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2031,11 +2086,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 339 )
+		if ( yy_current_state >= 366 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 338);
+	yy_is_jam = (yy_current_state == 365);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2669,7 +2724,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 388 "engines/director/lingo/lingo-lex.l"
+#line 408 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index f7117f4..b454bf1 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -224,6 +224,26 @@ the[ \t]+number[ \t]+of[ \t]+[[:alpha:]]+[ \t](in|of)[ \t]	{
 		else
 			error("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
 	}
+the[ \t]+last[ \t][[:alpha:]]+[ \t](in|of)[ \t]	{
+		count();
+
+		const char *ptr = &yytext[4]; // Skip 'the '
+		while (*ptr == ' ' || *ptr == '\t') ptr++;
+
+		ptr += 5; // skip 'last '
+		while (*ptr == ' ' || *ptr == '\t') ptr++;
+
+		Common::String field;
+		while (*ptr != ' ' && *ptr != '\t')
+			field += *ptr++;
+
+		yylval.s = new Common::String(Common::String::format("last%sOf", field.c_str()));
+
+		if (g_lingo->_builtins.contains(*yylval.s))
+			return FBLTIN;
+		else
+			error("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
+	}
 the[ \t]+[[:alpha:]]+[ \t]+of[ \t]+{identifier}	{
 		count();
 


Commit: 6a6935ed4cfa46a940df16109aa744ea1ff0bb7f
    https://github.com/scummvm/scummvm/commit/6a6935ed4cfa46a940df16109aa744ea1ff0bb7f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T13:06:53+01:00

Commit Message:
DIRECTOR: LINGO: Added test for 'the last of' chunk expression

Changed paths:
    engines/director/lingo/tests/chunks.lingo


diff --git a/engines/director/lingo/tests/chunks.lingo b/engines/director/lingo/tests/chunks.lingo
index 7bdc77a..371d844 100644
--- a/engines/director/lingo/tests/chunks.lingo
+++ b/engines/director/lingo/tests/chunks.lingo
@@ -1 +1,6 @@
     put randomName() into item i of field "In"
+
+put the last word of field 1 into field 3
+
+put the last char of "Macromedia, the multimedia company"
+put the last word of "Macromedia, the multimedia company"


Commit: 84e8ab495630c052556fe4cd5cf3c1df1ecfed57
    https://github.com/scummvm/scummvm/commit/84e8ab495630c052556fe4cd5cf3c1df1ecfed57
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T13:21:34+01:00

Commit Message:
DIRECTOR: LINGO: Proper stub for 'ancestor' property

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


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 6680709..ef6e5db 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -208,7 +208,6 @@ static struct BuiltinProto {
 	{ "moveToBack",		LB::b_moveToBack,	1, 1, false, 4, BLTIN },	//			D4 c
 	{ "moveToFront",	LB::b_moveToFront,	1, 1, false, 4, BLTIN },	//			D4 c
 	// Constants
-	{ "ancestor",		LB::b_ancestor,		0, 0, false, 4, BLTIN },	//			D4
 	{ "backspace",		LB::b_backspace,	0, 0, false, 2, FBLTIN },	// D2
 	{ "empty",			LB::b_empty,		0, 0, false, 2, FBLTIN },	// D2
 	{ "enter",			LB::b_enter,		0, 0, false, 2, FBLTIN },	// D2
@@ -1631,11 +1630,6 @@ void LB::b_soundStop(int nargs) {
 ///////////////////
 // Constants
 ///////////////////
-void LB::b_ancestor(int nargs) {
-	warning("STUB: b_ancestor");
-	g_lingo->push(Datum(0));
-}
-
 void LB::b_backspace(int nargs) {
 	g_lingo->push(Datum(new Common::String("\b")));
 }
diff --git a/engines/director/lingo/lingo-builtins.h b/engines/director/lingo/lingo-builtins.h
index ff1686e..b07a369 100644
--- a/engines/director/lingo/lingo-builtins.h
+++ b/engines/director/lingo/lingo-builtins.h
@@ -181,7 +181,6 @@ namespace LB {
 	void b_soundPlayFile(int nargs);
 	void b_soundStop(int nargs);
 
-	void b_ancestor(int nargs);
 	void b_backspace(int nargs);
 	void b_empty(int nargs);
 	void b_enter(int nargs);
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 1644615..9cceb1d 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -331,6 +331,10 @@ void LC::c_varpush() {
 		warning("c_varpush: ME");
 	}
 
+	if (name.equalsIgnoreCase("ancestor")) {
+		warning("c_varpush: ANCESTOR");
+	}
+
 	if (g_lingo->getHandler(name) != NULL) {
 		d.type = HANDLER;
 		d.u.s = new Common::String(name);
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 3a5dc58..b56fdf2 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -565,18 +565,18 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  127
+#define YYFINAL  126
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1604
+#define YYLAST   1592
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  99
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  50
+#define YYNNTS  51
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  169
+#define YYNRULES  170
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  362
+#define YYNSTATES  363
 
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   338
@@ -642,12 +642,13 @@ static const yytype_int16 yyrline[] =
      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
      445,   446,   448,   449,   450,   451,   452,   453,   454,   455,
      457,   460,   462,   463,   464,   465,   466,   467,   467,   468,
-     469,   470,   473,   476,   477,   479,   483,   488,   492,   497,
-     501,   513,   514,   515,   516,   520,   524,   529,   530,   532,
-     533,   537,   541,   545,   545,   575,   575,   575,   582,   583,
-     583,   590,   600,   608,   608,   610,   611,   612,   613,   615,
-     616,   617,   619,   621,   629,   630,   631,   633,   634,   636,
-     638,   639,   640,   641,   643,   644,   646,   647,   649,   653
+     468,   469,   470,   473,   476,   477,   479,   483,   488,   492,
+     497,   501,   513,   514,   515,   516,   520,   524,   529,   530,
+     532,   533,   537,   541,   545,   545,   575,   575,   575,   582,
+     583,   583,   590,   600,   608,   608,   610,   611,   612,   613,
+     615,   616,   617,   619,   621,   629,   630,   631,   633,   634,
+     636,   638,   639,   640,   641,   643,   644,   646,   647,   649,
+     653
 };
 #endif
 
@@ -674,11 +675,11 @@ static const char *const yytname[] =
   "stmtonelinerwithif", "stmt", "tellstart", "ifstmt", "elseifstmtlist",
   "elseifstmt", "ifoneliner", "repeatwhile", "repeatwith", "if", "elseif",
   "begin", "end", "stmtlist", "when", "simpleexpr", "expr", "chunkexpr",
-  "reference", "proc", "$@1", "globallist", "propertylist", "instancelist",
-  "gotofunc", "gotomovie", "playfunc", "$@2", "defn", "$@3", "$@4", "$@5",
-  "on", "$@6", "argdef", "endargdef", "argstore", "macro", "arglist",
-  "nonemptyarglist", "list", "valuelist", "linearlist", "proplist",
-  "proppair", YY_NULLPTR
+  "reference", "proc", "$@1", "$@2", "globallist", "propertylist",
+  "instancelist", "gotofunc", "gotomovie", "playfunc", "$@3", "defn",
+  "$@4", "$@5", "$@6", "on", "$@7", "argdef", "endargdef", "argstore",
+  "macro", "arglist", "nonemptyarglist", "list", "valuelist", "linearlist",
+  "proplist", "proppair", YY_NULLPTR
 };
 #endif
 
@@ -700,7 +701,7 @@ static const yytype_int16 yytoknum[] =
 };
 # endif
 
-#define YYPACT_NINF (-263)
+#define YYPACT_NINF (-273)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -714,43 +715,43 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     278,   -71,  -263,  -263,   867,  -263,   900,   979,    62,  1012,
-    -263,  -263,  -263,  -263,  -263,     0,  -263,   752,  -263,  -263,
-      19,   867,    68,    85,    16,    29,   867,   788,    50,   867,
-     867,   867,   867,   867,   867,   867,    76,  -263,   867,   867,
-     867,    31,     7,  -263,  -263,  -263,  -263,  -263,   867,    43,
-     867,   594,  -263,  1501,  -263,  -263,  -263,  -263,  -263,  -263,
-    -263,  -263,  -263,  -263,   -26,   867,  1501,   867,  1501,    11,
-     867,    11,  -263,  -263,   867,  1501,    18,   867,  -263,  -263,
-     106,  -263,   867,  -263,    91,  -263,  1064,  -263,   111,  -263,
-    1051,   129,  -263,   -28,    62,    62,    21,   105,   107,  -263,
-    1418,  -263,  1064,  -263,  -263,    60,  -263,  1113,  1146,  1179,
-    1212,  1468,  1377,  -263,    66,   135,  -263,  -263,  1431,    64,
-      69,  -263,  -263,    63,    71,    73,  -263,  -263,   357,  1501,
-     867,  1501,  -263,  -263,   867,  1501,  -263,  -263,   867,   867,
-     867,   867,   867,   867,   867,   867,   867,   867,   867,   867,
-     867,   867,   867,   867,   867,   142,   867,  1051,  1431,   -84,
-     867,    27,    30,   867,    11,   142,  -263,    79,  1501,   867,
-    -263,  -263,    38,   867,   867,  -263,   867,   867,    45,   133,
-     867,   867,   867,  -263,   867,  -263,   149,   867,   867,   867,
-     867,   867,   867,   867,   867,   867,   867,  -263,  -263,   157,
-    -263,  -263,    62,    62,  -263,    62,    65,  -263,  -263,  1501,
-     134,  -263,  1501,   128,   128,   128,   128,  1514,  1514,  -263,
-     137,   128,   128,   128,   128,   137,    -7,    -7,  -263,  -263,
-    -263,   -40,  -263,  1501,  -263,  -263,  1501,   -27,   172,  1501,
-    -263,  -263,  -263,  1501,  1501,  1501,   128,   867,   867,   173,
-    1501,   128,  1501,  1501,  -263,  1501,  1245,  1501,  1278,  1501,
-    1311,  1501,  1344,  1501,  1501,   673,  -263,  -263,  -263,  -263,
-    -263,    64,    69,  -263,   515,   -11,  -263,   150,   112,   178,
-     112,  -263,   142,  1501,   128,    62,   867,   867,   867,   867,
-    -263,   515,  -263,  -263,   119,   160,   867,   515,   673,   187,
-    -263,  -263,  -263,     2,   162,  1501,  1501,  1501,  1501,  -263,
-     130,  -263,   867,  1501,  -263,  -263,  -263,   436,   515,   112,
-     867,  -263,  1501,  -263,    84,   -19,   189,  -263,  1501,  -263,
-     515,  -263,  -263,  -263,   867,   131,  -263,  -263,  -263,   124,
-     515,   515,   138,  -263,  1501,  -263,   673,   200,   146,  -263,
-     515,   182,  -263,  -263,  -263,   152,  -263,   153,  -263,   515,
-    -263,  -263
+     307,   -78,  -273,  -273,   896,  -273,   929,  1008,    65,  1041,
+    -273,  -273,  -273,  -273,  -273,   -25,  -273,   781,  -273,  -273,
+      -8,   896,    41,    97,    21,    38,   896,   817,    53,   896,
+     896,   896,   896,   896,   896,   896,  -273,  -273,   896,   896,
+     896,    82,     7,  -273,  -273,  -273,  -273,  -273,   896,    42,
+     896,   623,  -273,  1489,  -273,  -273,  -273,  -273,  -273,  -273,
+    -273,  -273,  -273,  -273,    -7,   896,  1489,   896,  1489,     3,
+     896,     3,  -273,  -273,   896,  1489,    11,   896,  -273,  -273,
+     110,  -273,   896,  -273,    75,  -273,  1093,  -273,   128,  -273,
+    1080,   130,  -273,   -10,    65,    65,     5,   105,   107,  -273,
+     149,  -273,  1093,  -273,  -273,    61,  -273,  1142,  1175,  1208,
+    1241,  1456,  1406,   135,   138,  -273,  -273,  1419,    67,    68,
+    -273,  -273,    70,    78,    79,  -273,  -273,   386,  1489,   896,
+    1489,  -273,  -273,   896,  1489,  -273,  -273,   896,   896,   896,
+     896,   896,   896,   896,   896,   896,   896,   896,   896,   896,
+     896,   896,   896,   896,   148,   896,  1080,  1419,   -43,   896,
+      26,    28,   896,     3,   148,  -273,    86,  1489,   896,  -273,
+    -273,    37,   896,   896,  -273,   896,   896,    24,   150,   896,
+     896,   896,  -273,   896,  -273,   171,   896,   896,   896,   896,
+     896,   896,   896,   896,   896,   896,  -273,  -273,  -273,    99,
+    -273,  -273,    65,    65,  -273,    65,    93,  -273,  -273,  1489,
+     151,  -273,  1489,   163,   163,   163,   163,  1502,  1502,  -273,
+     -33,   163,   163,   163,   163,   -33,   -49,   -49,  -273,  -273,
+    -273,   -71,  -273,  1489,  -273,  -273,  1489,   -28,   173,  1489,
+    -273,  -273,  -273,  1489,  1489,  1489,   163,   896,   896,   174,
+    1489,   163,  1489,  1489,  -273,  1489,  1274,  1489,  1307,  1489,
+    1340,  1489,  1373,  1489,  1489,   702,  -273,   175,  -273,  -273,
+    -273,    67,    68,  -273,   544,   -15,  -273,   153,   106,   180,
+     106,  -273,   148,  1489,   163,    65,   896,   896,   896,   896,
+    -273,   544,  -273,  -273,  -273,   123,   165,   896,   544,   702,
+     193,  -273,  -273,  -273,   -24,   168,  1489,  1489,  1489,  1489,
+    -273,   137,  -273,   896,  1489,  -273,  -273,  -273,   465,   544,
+     106,   896,  -273,  1489,  -273,    96,   -19,   199,  -273,  1489,
+    -273,   544,  -273,  -273,  -273,   896,   141,  -273,  -273,  -273,
+     131,   544,   544,   143,  -273,  1489,  -273,   702,   201,   145,
+    -273,   544,   182,  -273,  -273,  -273,   161,  -273,   164,  -273,
+     544,  -273,  -273
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -758,63 +759,65 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    54,    65,     0,    55,   154,   154,     0,    58,
-      57,    56,   133,   139,    67,   106,   107,     0,    46,   135,
+       0,     0,    54,    65,     0,    55,   155,   155,     0,    58,
+      57,    56,   134,   140,    67,   106,   107,     0,    46,   136,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   143,     0,     0,
-       0,   160,     0,     3,    68,    27,     7,    28,     0,     0,
+       0,     0,     0,     0,     0,     0,   109,   144,     0,     0,
+       0,   161,     0,     3,    68,    27,     7,    28,     0,     0,
        0,     0,    60,    21,   101,    61,    22,   103,   104,     6,
-      48,    20,    59,     4,    58,     0,    66,   154,   155,   112,
-     154,    63,    58,   100,   154,   157,   153,   154,    48,   105,
-       0,   121,     0,   122,     0,   123,   124,   126,     0,    32,
-     102,     0,    44,     0,     0,     0,     0,     0,     0,   138,
-     114,   129,   130,   132,   119,   110,    82,     0,     0,     0,
-       0,     0,     0,   117,   109,     0,    87,    88,     0,    57,
-      56,   161,   164,     0,   162,   163,   166,     1,     5,    49,
-       0,    49,    49,    26,     0,    24,    25,    23,     0,     0,
+      48,    20,    59,     4,    58,     0,    66,   155,   156,   113,
+     155,    63,    58,   100,   155,   158,   154,   155,    48,   105,
+       0,   122,     0,   123,     0,   124,   125,   127,     0,    32,
+     102,     0,    44,     0,     0,     0,     0,     0,     0,   139,
+     115,   130,   131,   133,   120,   111,    82,     0,     0,     0,
+       0,     0,     0,     0,     0,    87,    88,     0,    57,    56,
+     162,   165,     0,   163,   164,   167,     1,     5,    49,     0,
+      49,    49,    26,     0,    24,    25,    23,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   145,   154,     0,   155,     0,
-       0,     0,     0,     0,   134,   145,   115,   108,   128,     0,
-     125,   136,     0,     0,     0,    45,     0,     0,     0,     0,
-       0,     0,     0,    53,     0,   131,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    36,    36,     0,
-     144,    89,     0,     0,   159,     0,     0,     2,    50,    49,
+       0,     0,     0,     0,   146,   155,     0,   156,     0,     0,
+       0,     0,     0,   135,   146,   116,   108,   129,     0,   126,
+     137,     0,     0,     0,    45,     0,     0,     0,     0,     0,
+       0,     0,    53,     0,   132,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    36,    36,   118,   110,
+     145,    89,     0,     0,   160,     0,     0,     2,    50,    49,
        0,    33,    49,    78,    79,    76,    77,    80,    81,    73,
       84,    85,    86,    75,    74,    83,    69,    70,    71,    72,
-     146,     0,   111,   156,    62,    64,   158,     0,     0,   127,
+     147,     0,   112,   157,    62,    64,   159,     0,     0,   128,
       48,     8,     9,    10,    11,    15,    13,     0,     0,     0,
-      14,    12,    19,   113,   120,    92,     0,    94,     0,    96,
-       0,    98,     0,    90,    91,     0,    50,   118,   169,   168,
-     165,     0,     0,   167,    49,     0,    50,     0,   152,     0,
-     152,   116,   145,    16,    17,     0,     0,     0,     0,     0,
-      49,    49,    51,    52,     0,     0,     0,    49,     0,     0,
-      50,   147,    50,     0,     0,    93,    95,    97,    99,    35,
-       0,    29,     0,    49,    39,    49,   148,   142,   140,   152,
-       0,    34,    49,    50,    49,     0,   149,    50,    18,    50,
-      49,    48,    47,    40,     0,     0,    48,    43,   150,   141,
-     137,    49,     0,    50,    49,    37,     0,     0,     0,    30,
-      49,     0,    49,   151,    31,     0,    50,     0,    38,    49,
-      42,    41
+      14,    12,    19,   114,   121,    92,     0,    94,     0,    96,
+       0,    98,     0,    90,    91,     0,    50,     0,   170,   169,
+     166,     0,     0,   168,    49,     0,    50,     0,   153,     0,
+     153,   117,   146,    16,    17,     0,     0,     0,     0,     0,
+      49,    49,   119,    51,    52,     0,     0,     0,    49,     0,
+       0,    50,   148,    50,     0,     0,    93,    95,    97,    99,
+      35,     0,    29,     0,    49,    39,    49,   149,   143,   141,
+     153,     0,    34,    49,    50,    49,     0,   150,    50,    18,
+      50,    49,    48,    47,    40,     0,     0,    48,    43,   151,
+     142,   138,    49,     0,    50,    49,    37,     0,     0,     0,
+      30,    49,     0,    49,   152,    31,     0,    50,     0,    38,
+      49,    42,    41
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -263,  -263,   103,  -263,  -257,  -263,     4,    37,  -263,  -263,
-    -263,  -263,  -263,  -263,   185,  -263,   -77,   -92,  -252,  -263,
-       1,    -4,  -263,    67,   186,  -263,  -263,  -263,  -263,  -263,
-       6,  -263,  -263,  -263,  -263,  -263,  -263,  -263,  -263,  -159,
-    -263,  -262,   190,     9,  -263,  -263,  -263,  -263,  -263,    34
+    -273,  -273,   103,  -273,  -254,  -273,     4,    35,  -273,  -273,
+    -273,  -273,  -273,  -273,   195,  -273,   -77,   -50,  -227,  -273,
+       1,    -4,  -273,    76,   203,  -273,  -273,  -273,  -273,  -273,
+    -273,   -17,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
+    -158,  -273,  -272,   205,    12,  -273,  -273,  -273,  -273,  -273,
+      51
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    42,    43,    44,    45,   132,   293,   265,    47,   324,
-     333,   133,    48,    49,    50,   334,   155,   208,   274,    51,
-      52,    53,    54,    55,    56,    80,   167,   114,   105,    57,
-      87,    58,    77,    59,    88,   240,    78,    60,   115,   231,
-     339,   300,    61,   162,    76,    62,   123,   124,   125,   126
+      -1,    42,    43,    44,    45,   131,   294,   265,    47,   325,
+     334,   132,    48,    49,    50,   335,   154,   208,   274,    51,
+      52,    53,    54,    55,    56,    80,   113,   166,   199,   105,
+      57,    87,    58,    77,    59,    88,   240,    78,    60,   114,
+     231,   340,   301,    61,   161,    76,    62,   122,   123,   124,
+     125
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -822,226 +825,220 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      66,   165,    68,    68,    46,    75,   237,   127,   290,    73,
-     232,   160,   336,    86,   291,    69,    71,    90,   302,   295,
-     176,    63,   100,   102,   297,   106,   107,   108,   109,   110,
-     111,   112,   177,   103,   116,   117,   118,   296,    98,   210,
-     211,   315,   122,     2,   129,    79,   131,   135,   317,     5,
-     318,    99,   278,    72,   119,   279,   120,   327,   144,     8,
-     241,   157,   337,   158,    89,   280,   158,   156,   279,   180,
-     158,   330,   104,    68,     2,   340,   159,   341,   168,   161,
-       5,   181,   153,   154,    72,    10,   164,    11,   271,   352,
-     272,   350,   170,   247,   319,   178,   179,   279,   113,   128,
-      93,    94,    95,   130,   359,   248,   160,    96,   185,    30,
-      31,    32,    33,   163,    97,   331,   332,   275,    91,    92,
-     277,   234,   160,   303,   235,   160,   209,    41,   166,   121,
-     212,   169,    46,   171,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   175,    68,   182,   183,   186,   233,   200,    41,   236,
-     204,   199,   202,   282,   230,   239,   205,   203,   206,   243,
-     244,   254,   245,   246,   238,   249,   250,   251,   252,   267,
-     253,   276,   294,   255,   256,   257,   258,   259,   260,   261,
-     262,   263,   264,   144,   281,   285,   145,   298,   309,   310,
-     301,   311,   144,   268,   269,   314,   270,   299,   312,   316,
-     320,   338,   345,   321,   150,   151,   152,   153,   154,   347,
-     349,   323,   353,   325,   151,   152,   153,   154,   354,   356,
-     329,   207,   335,   358,   360,   266,   134,   136,   342,   242,
-     273,   137,     0,   283,   284,     0,     0,     0,     0,   348,
-       0,     0,   351,     0,   343,     0,     0,     0,   355,   346,
-     357,     0,     0,     0,     0,     0,     0,   361,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    -5,     1,
-       0,     0,   305,   306,   307,   308,   304,     0,     0,     0,
-       2,     0,   313,     3,     4,     0,     5,     6,     7,     8,
-       9,    10,     0,    11,     0,    12,    13,    14,   322,     0,
-       0,    15,    16,    17,    18,     0,   328,    19,     0,    20,
-       0,     0,    21,    22,    23,     0,     0,    24,     0,     0,
-     344,    25,    26,    27,     0,    28,     0,     0,     0,     0,
-       0,     0,    29,     0,     0,     0,     0,     0,     0,    30,
-      31,    32,    33,    34,     0,     0,    35,    36,    37,     0,
-       0,     0,     0,     0,     0,    38,    39,     0,     0,     2,
-      -5,    40,     3,     4,    41,     5,     6,     7,     8,     9,
-      10,     0,    11,     0,    12,    13,    14,     0,     0,     0,
+      66,   164,    68,    68,    46,    75,   237,   126,   303,    73,
+     103,   290,   337,    86,    63,   296,   143,    90,    69,    71,
+      79,   278,   100,   102,   279,   106,   107,   108,   109,   110,
+     111,   112,   143,   297,   115,   116,   117,    89,   175,   291,
+     152,   153,   121,    98,   128,   316,   130,   134,   328,   298,
+     176,   232,   159,   179,   150,   151,   152,   153,     8,   241,
+      99,   156,   338,   157,   280,   180,   157,   279,   320,   169,
+     157,   279,   247,    68,   318,   104,   319,     2,   167,   158,
+     210,   211,   160,     5,   248,   184,   155,    72,    10,   163,
+      11,    91,    92,   353,     2,   177,   178,   331,   159,   127,
+       5,   341,   129,   342,    72,   118,   162,   119,    30,    31,
+      32,    33,    93,    94,    95,   168,   271,   351,   272,    96,
+     234,   159,   235,   159,   304,   209,    97,   332,   333,   212,
+     360,    46,   165,   213,   214,   215,   216,   217,   218,   219,
+     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
+     170,    68,   174,   181,   182,   233,   185,   198,   236,   275,
+     200,    41,   277,   282,   239,   202,   203,   204,   243,   244,
+     230,   245,   246,   205,   206,   250,   251,   252,    41,   253,
+     120,   238,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   249,   254,   267,   281,   285,   292,   276,   183,
+     299,   300,   302,   268,   269,   312,   270,   137,   138,   139,
+     140,   141,   142,   313,   143,   317,   321,   144,   145,   146,
+     322,   339,   346,   354,   295,   350,   348,   355,   143,   357,
+     207,   144,   266,   147,   148,   149,   150,   151,   152,   153,
+     310,   311,   359,   283,   284,   361,   133,   242,   315,   149,
+     150,   151,   152,   153,   135,   344,   136,   273,     0,     0,
+     347,     0,     0,     0,   324,     0,   326,     0,     0,     0,
+       0,     0,     0,   330,     0,   336,     0,     0,     0,     0,
+       0,   343,   306,   307,   308,   309,   305,     0,     0,     0,
+       0,     0,   349,   314,     0,   352,     0,     0,     0,     0,
+       0,   356,     0,   358,     0,     0,     0,    -5,     1,   323,
+     362,     0,     0,     0,     0,     0,     0,   329,     0,     2,
+       0,     0,     3,     4,     0,     5,     6,     7,     8,     9,
+      10,   345,    11,     0,    12,    13,    14,     0,     0,     0,
       15,    16,    17,    18,     0,     0,    19,     0,    20,     0,
        0,    21,    22,    23,     0,     0,    24,     0,     0,     0,
       25,    26,    27,     0,    28,     0,     0,     0,     0,     0,
        0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
       32,    33,    34,     0,     0,    35,    36,    37,     0,     0,
-       0,     0,     0,     0,    38,    39,     0,     0,     2,     0,
+       0,     0,     0,     0,    38,    39,     0,     0,     2,    -5,
       40,     3,     4,    41,     5,     6,     7,     8,     9,    10,
-       0,    11,   326,    12,     0,    14,     0,     0,     0,    15,
-      16,    17,    18,     0,     0,     0,     0,    20,     0,     0,
-      21,    22,    23,     0,     0,    24,     0,     0,     0,     0,
+       0,    11,     0,    12,    13,    14,     0,     0,     0,    15,
+      16,    17,    18,     0,     0,    19,     0,    20,     0,     0,
+      21,    22,    23,     0,     0,    24,     0,     0,     0,    25,
       26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
       29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,    35,    36,     0,     0,     0,     0,
-       0,     0,     0,    38,    39,     0,     0,     2,   292,    40,
+      33,    34,     0,     0,    35,    36,    37,     0,     0,     0,
+       0,     0,     0,    38,    39,     0,     0,     2,     0,    40,
        3,     4,    41,     5,     6,     7,     8,     9,    10,     0,
-      11,     0,    12,     0,    14,     0,     0,     0,    15,    16,
+      11,   327,    12,     0,    14,     0,     0,     0,    15,    16,
       17,    18,     0,     0,     0,     0,    20,     0,     0,    21,
       22,    23,     0,     0,    24,     0,     0,     0,     0,    26,
       27,     0,    28,     0,     0,     0,     0,     0,     0,    29,
        0,     0,     0,     0,     0,     0,    30,    31,    32,    33,
       34,     0,     0,    35,    36,     0,     0,     0,     0,     0,
-       0,     0,    38,    39,     0,     0,     2,   292,    40,     3,
+       0,     0,    38,    39,     0,     0,     2,   293,    40,     3,
        4,    41,     5,     6,     7,     8,     9,    10,     0,    11,
        0,    12,     0,    14,     0,     0,     0,    15,    16,    17,
-      18,     0,     0,     0,     0,     0,     0,     0,    21,     0,
-      23,     0,     0,     0,     0,     0,     0,     0,    26,    27,
+      18,     0,     0,     0,     0,    20,     0,     0,    21,    22,
+      23,     0,     0,    24,     0,     0,     0,     0,    26,    27,
        0,    28,     0,     0,     0,     0,     0,     0,    29,     0,
        0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
-       0,     0,     0,    36,     0,     0,     0,     0,     0,     0,
-       0,    38,    39,     0,     0,     2,     0,    40,     3,     4,
+       0,     0,    35,    36,     0,     0,     0,     0,     0,     0,
+       0,    38,    39,     0,     0,     2,   293,    40,     3,     4,
       41,     5,     6,     7,     8,     9,    10,     0,    11,     0,
-      12,     0,    14,     0,     0,     0,    15,    16,    17,     0,
+      12,     0,    14,     0,     0,     0,    15,    16,    17,    18,
        0,     0,     0,     0,     0,     0,     0,    21,     0,    23,
        0,     0,     0,     0,     0,     0,     0,    26,    27,     0,
       28,     0,     0,     0,     0,     0,     0,    29,     0,     0,
        0,     0,     0,     0,    30,    31,    32,    33,    34,     0,
        0,     0,    36,     0,     0,     0,     0,     0,     0,     0,
       38,    39,     0,     0,     2,     0,    40,     3,     4,    41,
-       5,     0,     7,     8,    64,    10,     0,    11,     0,     0,
-       0,    14,     0,     0,     0,     0,     0,     0,     0,     0,
-      81,     0,    82,    83,    84,    85,    65,     0,    23,     0,
-       2,     0,     0,     3,     4,     0,     5,     0,     7,     8,
-      64,    10,     0,    11,     0,     0,    29,    14,     0,     0,
-       0,     0,     0,    30,    31,    32,    33,    34,    82,     0,
-      84,     0,    65,     0,    23,     0,     0,     0,     0,    38,
-      39,     0,     0,     0,   101,    40,     0,     0,    41,     0,
-       0,     0,    29,     0,     0,     0,     0,     0,     0,    30,
-      31,    32,    33,    34,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    38,    39,     0,     0,     2,
-       0,    40,     3,     4,    41,     5,     0,     7,     8,    64,
-      10,     0,    11,     0,     0,     0,    14,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    65,     2,    23,     0,     3,     4,     0,     5,     0,
-       7,     8,    64,    10,     0,    11,     0,     0,     0,    14,
+       5,     6,     7,     8,     9,    10,     0,    11,     0,    12,
+       0,    14,     0,     0,     0,    15,    16,    17,     0,     0,
+       0,     0,     0,     0,     0,     0,    21,     0,    23,     0,
+       0,     0,     0,     0,     0,     0,    26,    27,     0,    28,
+       0,     0,     0,     0,     0,     0,    29,     0,     0,     0,
+       0,     0,     0,    30,    31,    32,    33,    34,     0,     0,
+       0,    36,     0,     0,     0,     0,     0,     0,     0,    38,
+      39,     0,     0,     2,     0,    40,     3,     4,    41,     5,
+       0,     7,     8,    64,    10,     0,    11,     0,     0,     0,
+      14,     0,     0,     0,     0,     0,     0,     0,     0,    81,
+       0,    82,    83,    84,    85,    65,     0,    23,     0,     2,
+       0,     0,     3,     4,     0,     5,     0,     7,     8,    64,
+      10,     0,    11,     0,     0,    29,    14,     0,     0,     0,
+       0,     0,    30,    31,    32,    33,    34,    82,     0,    84,
+       0,    65,     0,    23,     0,     0,     0,     0,    38,    39,
+       0,     0,     0,   101,    40,     0,     0,    41,     0,     0,
        0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
-      32,    33,    34,     0,    65,     0,    23,     0,     0,     0,
-       0,     0,     0,     0,    38,    39,     0,     0,     0,     0,
-      40,     0,     0,    41,    29,     0,     0,     0,     0,     0,
-       0,    30,    31,    32,    33,    34,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    38,    39,     0,
-       0,     2,     0,    67,     3,     4,    41,     5,     0,     7,
-       8,    64,    10,     0,    11,     0,     0,     0,    14,     0,
+      32,    33,    34,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    38,    39,     0,     0,     2,     0,
+      40,     3,     4,    41,     5,     0,     7,     8,    64,    10,
+       0,    11,     0,     0,     0,    14,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    65,     2,    23,     0,     3,     4,     0,
-       5,     0,     7,     8,    64,    10,     0,    11,     0,     0,
-       0,    14,     0,    29,     0,     0,     0,     0,     0,     0,
-      30,    31,    32,    33,    34,     0,    65,     0,    23,     0,
+      65,     2,    23,     0,     3,     4,     0,     5,     0,     7,
+       8,    64,    10,     0,    11,     0,     0,     0,    14,     0,
+      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
+      33,    34,     0,    65,     0,    23,     0,     0,     0,     0,
+       0,     0,     0,    38,    39,     0,     0,     0,     0,    40,
+       0,     0,    41,    29,     0,     0,     0,     0,     0,     0,
+      30,    31,    32,    33,    34,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    38,    39,     0,     0,
-       0,     0,    70,     0,     0,    41,    29,     0,     0,     0,
-       0,     0,     0,    30,    31,    32,    33,    34,   172,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    38,
-      39,     0,     0,     0,    82,    74,    84,     0,    41,   138,
-     139,   140,   141,   142,   143,     0,   144,   173,   174,   145,
-     146,   147,   138,   139,   140,   141,   142,   143,     0,   144,
-       0,     0,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,     0,     0,     0,     0,     0,     0,   148,   149,
-     150,   151,   152,   153,   154,   187,     0,     0,     0,     0,
-       0,   188,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   138,   139,   140,   141,   142,   143,     0,   144,     0,
-       0,   145,   146,   147,     0,     0,     0,     0,   189,     0,
-       0,     0,     0,     0,   190,     0,     0,   148,   149,   150,
-     151,   152,   153,   154,   138,   139,   140,   141,   142,   143,
-       0,   144,     0,     0,   145,   146,   147,     0,     0,     0,
-       0,   191,     0,     0,     0,     0,     0,   192,     0,     0,
-     148,   149,   150,   151,   152,   153,   154,   138,   139,   140,
-     141,   142,   143,     0,   144,     0,     0,   145,   146,   147,
-       0,     0,     0,     0,   193,     0,     0,     0,     0,     0,
-     194,     0,     0,   148,   149,   150,   151,   152,   153,   154,
-     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
-     145,   146,   147,     0,     0,     0,     0,   286,     0,     0,
-       0,     0,     0,     0,     0,     0,   148,   149,   150,   151,
-     152,   153,   154,   138,   139,   140,   141,   142,   143,     0,
-     144,     0,     0,   145,   146,   147,     0,     0,     0,     0,
-     287,     0,     0,     0,     0,     0,     0,     0,     0,   148,
-     149,   150,   151,   152,   153,   154,   138,   139,   140,   141,
-     142,   143,     0,   144,     0,     0,   145,   146,   147,     0,
-       0,     0,     0,   288,     0,     0,     0,     0,     0,     0,
-       0,     0,   148,   149,   150,   151,   152,   153,   154,   138,
-     139,   140,   141,   142,   143,     0,   144,     0,     0,   145,
-     146,   147,     0,     0,     0,     0,   289,     0,     0,     0,
-       0,     0,     0,     0,     0,   148,   149,   150,   151,   152,
-     153,   154,   138,   139,   140,   141,   142,   143,     0,   144,
-       0,     0,   145,   146,   147,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   197,     0,     0,   148,   149,
-     150,   151,   152,   153,   154,   138,   139,   140,   141,   142,
-     143,     0,   144,     0,     0,   145,   146,   147,     0,     0,
+       2,     0,    67,     3,     4,    41,     5,     0,     7,     8,
+      64,    10,     0,    11,     0,     0,     0,    14,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   148,   149,   150,   151,   152,   153,   154,   184,   198,
-       0,     0,     0,     0,     0,     0,   138,   139,   140,   141,
-     142,   143,     0,   144,     0,     0,   145,   146,   147,   138,
-     139,   140,   141,   142,   143,     0,   144,     0,     0,   145,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,     0,
-       0,     0,     0,     0,     0,   148,   149,   150,   151,   152,
-     153,   154,     0,     0,     0,   201,   138,   139,   140,   141,
-     142,   143,     0,   144,     0,     0,   145,   146,   147,     0,
-       0,     0,     0,     0,   195,   196,     0,     0,     0,     0,
-       0,     0,   148,   149,   150,   151,   152,   153,   154,   138,
-     139,   140,   141,   142,   143,     0,   144,     0,     0,   145,
-     146,   147,   138,   139,   140,   141,     0,     0,     0,   144,
-       0,     0,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,   154,     0,     0,     0,     0,     0,     0,   148,   149,
-     150,   151,   152,   153,   154
+       0,     0,    65,     2,    23,     0,     3,     4,     0,     5,
+       0,     7,     8,    64,    10,     0,    11,     0,     0,     0,
+      14,     0,    29,     0,     0,     0,     0,     0,     0,    30,
+      31,    32,    33,    34,     0,    65,     0,    23,     0,     0,
+       0,     0,     0,     0,     0,    38,    39,     0,     0,     0,
+       0,    70,     0,     0,    41,    29,     0,     0,     0,     0,
+       0,     0,    30,    31,    32,    33,    34,   171,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    38,    39,
+       0,     0,     0,    82,    74,    84,     0,    41,   137,   138,
+     139,   140,   141,   142,     0,   143,   172,   173,   144,   145,
+     146,   137,   138,   139,   140,   141,   142,     0,   143,     0,
+       0,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+     153,     0,     0,     0,     0,     0,     0,   147,   148,   149,
+     150,   151,   152,   153,   186,     0,     0,     0,     0,     0,
+     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     137,   138,   139,   140,   141,   142,     0,   143,     0,     0,
+     144,   145,   146,     0,     0,     0,     0,   188,     0,     0,
+       0,     0,     0,   189,     0,     0,   147,   148,   149,   150,
+     151,   152,   153,   137,   138,   139,   140,   141,   142,     0,
+     143,     0,     0,   144,   145,   146,     0,     0,     0,     0,
+     190,     0,     0,     0,     0,     0,   191,     0,     0,   147,
+     148,   149,   150,   151,   152,   153,   137,   138,   139,   140,
+     141,   142,     0,   143,     0,     0,   144,   145,   146,     0,
+       0,     0,     0,   192,     0,     0,     0,     0,     0,   193,
+       0,     0,   147,   148,   149,   150,   151,   152,   153,   137,
+     138,   139,   140,   141,   142,     0,   143,     0,     0,   144,
+     145,   146,     0,     0,     0,     0,   286,     0,     0,     0,
+       0,     0,     0,     0,     0,   147,   148,   149,   150,   151,
+     152,   153,   137,   138,   139,   140,   141,   142,     0,   143,
+       0,     0,   144,   145,   146,     0,     0,     0,     0,   287,
+       0,     0,     0,     0,     0,     0,     0,     0,   147,   148,
+     149,   150,   151,   152,   153,   137,   138,   139,   140,   141,
+     142,     0,   143,     0,     0,   144,   145,   146,     0,     0,
+       0,     0,   288,     0,     0,     0,     0,     0,     0,     0,
+       0,   147,   148,   149,   150,   151,   152,   153,   137,   138,
+     139,   140,   141,   142,     0,   143,     0,     0,   144,   145,
+     146,     0,     0,     0,     0,   289,     0,     0,     0,     0,
+       0,     0,     0,     0,   147,   148,   149,   150,   151,   152,
+     153,   137,   138,   139,   140,   141,   142,     0,   143,     0,
+       0,   144,   145,   146,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   196,     0,     0,   147,   148,   149,
+     150,   151,   152,   153,   137,   138,   139,   140,   141,   142,
+       0,   143,     0,     0,   144,   145,   146,   137,   138,   139,
+     140,   141,   142,     0,   143,     0,     0,   144,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,     0,   197,     0,
+       0,     0,     0,   147,   148,   149,   150,   151,   152,   153,
+       0,     0,     0,   201,   137,   138,   139,   140,   141,   142,
+       0,   143,     0,     0,   144,   145,   146,     0,     0,     0,
+       0,     0,   194,   195,     0,     0,     0,     0,     0,     0,
+     147,   148,   149,   150,   151,   152,   153,   137,   138,   139,
+     140,   141,   142,     0,   143,     0,     0,   144,   145,   146,
+     137,   138,   139,   140,     0,     0,     0,   143,     0,     0,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+       0,     0,     0,     0,     0,     0,   147,   148,   149,   150,
+     151,   152,   153
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,    78,     6,     7,     0,     9,   165,     0,   265,     8,
-      94,    95,    31,    17,   266,     6,     7,    21,   280,    30,
-      48,    92,    26,    27,   276,    29,    30,    31,    32,    33,
-      34,    35,    60,    27,    38,    39,    40,    48,    22,   131,
-     132,   298,    41,    12,    48,    45,    50,    51,   300,    18,
-     302,    22,    92,    22,    23,    95,    25,   319,    65,    21,
-      22,    65,    81,    67,    45,    92,    70,    93,    95,    48,
-      74,   323,    22,    77,    12,   327,    67,   329,    82,    70,
-      18,    60,    89,    90,    22,    23,    77,    25,    23,   346,
-      25,   343,    86,    48,    92,    94,    95,    95,    22,    92,
-      15,    16,    17,    60,   356,    60,    95,    22,   102,    71,
-      72,    73,    74,    95,    29,    31,    32,   209,    50,    51,
-     212,    94,    95,   282,    94,    95,   130,    96,    22,    98,
-     134,    40,   128,    22,   138,   139,   140,   141,   142,   143,
+       4,    78,     6,     7,     0,     9,   164,     0,   280,     8,
+      27,   265,    31,    17,    92,    30,    65,    21,     6,     7,
+      45,    92,    26,    27,    95,    29,    30,    31,    32,    33,
+      34,    35,    65,    48,    38,    39,    40,    45,    48,   266,
+      89,    90,    41,    22,    48,   299,    50,    51,   320,   276,
+      60,    94,    95,    48,    87,    88,    89,    90,    21,    22,
+      22,    65,    81,    67,    92,    60,    70,    95,    92,    86,
+      74,    95,    48,    77,   301,    22,   303,    12,    82,    67,
+     130,   131,    70,    18,    60,   102,    93,    22,    23,    77,
+      25,    50,    51,   347,    12,    94,    95,   324,    95,    92,
+      18,   328,    60,   330,    22,    23,    95,    25,    71,    72,
+      73,    74,    15,    16,    17,    40,    23,   344,    25,    22,
+      94,    95,    94,    95,   282,   129,    29,    31,    32,   133,
+     357,   127,    22,   137,   138,   139,   140,   141,   142,   143,
      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,    22,   156,    48,    47,    95,   160,    22,    96,   163,
-      97,    95,    98,   240,    22,   169,    95,    98,    95,   173,
-     174,    22,   176,   177,    95,    42,   180,   181,   182,    22,
-     184,    47,   274,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,    65,    22,    22,    68,    47,   290,   291,
-      22,    82,    65,   202,   203,   297,   205,    95,    48,    22,
-      48,    22,    81,    83,    86,    87,    88,    89,    90,    95,
-      82,   313,    22,   315,    87,    88,    89,    90,    82,    47,
-     322,   128,   324,    81,    81,   198,    51,    51,   330,   172,
-     206,    51,    -1,   247,   248,    -1,    -1,    -1,    -1,   341,
-      -1,    -1,   344,    -1,   331,    -1,    -1,    -1,   350,   336,
-     352,    -1,    -1,    -1,    -1,    -1,    -1,   359,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,     1,
-      -1,    -1,   286,   287,   288,   289,   285,    -1,    -1,    -1,
-      12,    -1,   296,    15,    16,    -1,    18,    19,    20,    21,
-      22,    23,    -1,    25,    -1,    27,    28,    29,   312,    -1,
-      -1,    33,    34,    35,    36,    -1,   320,    39,    -1,    41,
-      -1,    -1,    44,    45,    46,    -1,    -1,    49,    -1,    -1,
-     334,    53,    54,    55,    -1,    57,    -1,    -1,    -1,    -1,
-      -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,
-      72,    73,    74,    75,    -1,    -1,    78,    79,    80,    -1,
-      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,
-      92,    93,    15,    16,    96,    18,    19,    20,    21,    22,
-      23,    -1,    25,    -1,    27,    28,    29,    -1,    -1,    -1,
+      22,   155,    22,    48,    47,   159,    95,    22,   162,   209,
+      22,    96,   212,   240,   168,    98,    98,    97,   172,   173,
+      22,   175,   176,    95,    95,   179,   180,   181,    96,   183,
+      98,    95,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,    42,    22,    95,    22,    22,    22,    47,    50,
+      47,    95,    22,   202,   203,    82,   205,    58,    59,    60,
+      61,    62,    63,    48,    65,    22,    48,    68,    69,    70,
+      83,    22,    81,    22,   274,    82,    95,    82,    65,    47,
+     127,    68,   197,    84,    85,    86,    87,    88,    89,    90,
+     290,   291,    81,   247,   248,    81,    51,   171,   298,    86,
+      87,    88,    89,    90,    51,   332,    51,   206,    -1,    -1,
+     337,    -1,    -1,    -1,   314,    -1,   316,    -1,    -1,    -1,
+      -1,    -1,    -1,   323,    -1,   325,    -1,    -1,    -1,    -1,
+      -1,   331,   286,   287,   288,   289,   285,    -1,    -1,    -1,
+      -1,    -1,   342,   297,    -1,   345,    -1,    -1,    -1,    -1,
+      -1,   351,    -1,   353,    -1,    -1,    -1,     0,     1,   313,
+     360,    -1,    -1,    -1,    -1,    -1,    -1,   321,    -1,    12,
+      -1,    -1,    15,    16,    -1,    18,    19,    20,    21,    22,
+      23,   335,    25,    -1,    27,    28,    29,    -1,    -1,    -1,
       33,    34,    35,    36,    -1,    -1,    39,    -1,    41,    -1,
       -1,    44,    45,    46,    -1,    -1,    49,    -1,    -1,    -1,
       53,    54,    55,    -1,    57,    -1,    -1,    -1,    -1,    -1,
       -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
       73,    74,    75,    -1,    -1,    78,    79,    80,    -1,    -1,
-      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,    92,
       93,    15,    16,    96,    18,    19,    20,    21,    22,    23,
-      -1,    25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,
-      34,    35,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,
-      44,    45,    46,    -1,    -1,    49,    -1,    -1,    -1,    -1,
+      -1,    25,    -1,    27,    28,    29,    -1,    -1,    -1,    33,
+      34,    35,    36,    -1,    -1,    39,    -1,    41,    -1,    -1,
+      44,    45,    46,    -1,    -1,    49,    -1,    -1,    -1,    53,
       54,    55,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,
       64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
-      74,    75,    -1,    -1,    78,    79,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    87,    88,    -1,    -1,    12,    92,    93,
+      74,    75,    -1,    -1,    78,    79,    80,    -1,    -1,    -1,
+      -1,    -1,    -1,    87,    88,    -1,    -1,    12,    -1,    93,
       15,    16,    96,    18,    19,    20,    21,    22,    23,    -1,
-      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
+      25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
       35,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,
       45,    46,    -1,    -1,    49,    -1,    -1,    -1,    -1,    54,
       55,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    64,
@@ -1050,104 +1047,108 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    87,    88,    -1,    -1,    12,    92,    93,    15,
       16,    96,    18,    19,    20,    21,    22,    23,    -1,    25,
       -1,    27,    -1,    29,    -1,    -1,    -1,    33,    34,    35,
-      36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,
-      46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,    55,
+      36,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,    45,
+      46,    -1,    -1,    49,    -1,    -1,    -1,    -1,    54,    55,
       -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,
       -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,
-      -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    87,    88,    -1,    -1,    12,    -1,    93,    15,    16,
+      -1,    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    87,    88,    -1,    -1,    12,    92,    93,    15,    16,
       96,    18,    19,    20,    21,    22,    23,    -1,    25,    -1,
-      27,    -1,    29,    -1,    -1,    -1,    33,    34,    35,    -1,
+      27,    -1,    29,    -1,    -1,    -1,    33,    34,    35,    36,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,    55,    -1,
       57,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,
       -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,
       -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       87,    88,    -1,    -1,    12,    -1,    93,    15,    16,    96,
-      18,    -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,
-      -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      38,    -1,    40,    41,    42,    43,    44,    -1,    46,    -1,
-      12,    -1,    -1,    15,    16,    -1,    18,    -1,    20,    21,
-      22,    23,    -1,    25,    -1,    -1,    64,    29,    -1,    -1,
-      -1,    -1,    -1,    71,    72,    73,    74,    75,    40,    -1,
-      42,    -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    87,
-      88,    -1,    -1,    -1,    56,    93,    -1,    -1,    96,    -1,
-      -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,
-      72,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,
-      -1,    93,    15,    16,    96,    18,    -1,    20,    21,    22,
-      23,    -1,    25,    -1,    -1,    -1,    29,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    44,    12,    46,    -1,    15,    16,    -1,    18,    -1,
-      20,    21,    22,    23,    -1,    25,    -1,    -1,    -1,    29,
+      18,    19,    20,    21,    22,    23,    -1,    25,    -1,    27,
+      -1,    29,    -1,    -1,    -1,    33,    34,    35,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    57,
+      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,
+      -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,
+      -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      88,    -1,    -1,    12,    -1,    93,    15,    16,    96,    18,
+      -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,    -1,
+      29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,
+      -1,    40,    41,    42,    43,    44,    -1,    46,    -1,    12,
+      -1,    -1,    15,    16,    -1,    18,    -1,    20,    21,    22,
+      23,    -1,    25,    -1,    -1,    64,    29,    -1,    -1,    -1,
+      -1,    -1,    71,    72,    73,    74,    75,    40,    -1,    42,
+      -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    -1,    -1,    56,    93,    -1,    -1,    96,    -1,    -1,
       -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
-      73,    74,    75,    -1,    44,    -1,    46,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
-      93,    -1,    -1,    96,    64,    -1,    -1,    -1,    -1,    -1,
-      -1,    71,    72,    73,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,
-      -1,    12,    -1,    93,    15,    16,    96,    18,    -1,    20,
-      21,    22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,
+      73,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,    -1,
+      93,    15,    16,    96,    18,    -1,    20,    21,    22,    23,
+      -1,    25,    -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    44,    12,    46,    -1,    15,    16,    -1,
-      18,    -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,
-      -1,    29,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,
-      71,    72,    73,    74,    75,    -1,    44,    -1,    46,    -1,
+      44,    12,    46,    -1,    15,    16,    -1,    18,    -1,    20,
+      21,    22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,
+      64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
+      74,    75,    -1,    44,    -1,    46,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    93,
+      -1,    -1,    96,    64,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    72,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,
-      -1,    -1,    93,    -1,    -1,    96,    64,    -1,    -1,    -1,
-      -1,    -1,    -1,    71,    72,    73,    74,    75,    37,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
-      88,    -1,    -1,    -1,    40,    93,    42,    -1,    96,    58,
-      59,    60,    61,    62,    63,    -1,    65,    66,    67,    68,
-      69,    70,    58,    59,    60,    61,    62,    63,    -1,    65,
-      -1,    -1,    68,    69,    70,    84,    85,    86,    87,    88,
-      89,    90,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
-      86,    87,    88,    89,    90,    42,    -1,    -1,    -1,    -1,
-      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    58,    59,    60,    61,    62,    63,    -1,    65,    -1,
-      -1,    68,    69,    70,    -1,    -1,    -1,    -1,    42,    -1,
-      -1,    -1,    -1,    -1,    48,    -1,    -1,    84,    85,    86,
-      87,    88,    89,    90,    58,    59,    60,    61,    62,    63,
-      -1,    65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,
-      -1,    42,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      84,    85,    86,    87,    88,    89,    90,    58,    59,    60,
-      61,    62,    63,    -1,    65,    -1,    -1,    68,    69,    70,
-      -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
+      12,    -1,    93,    15,    16,    96,    18,    -1,    20,    21,
+      22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    44,    12,    46,    -1,    15,    16,    -1,    18,
+      -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,    -1,
+      29,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,
+      72,    73,    74,    75,    -1,    44,    -1,    46,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,
+      -1,    93,    -1,    -1,    96,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    72,    73,    74,    75,    37,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    -1,    -1,    40,    93,    42,    -1,    96,    58,    59,
+      60,    61,    62,    63,    -1,    65,    66,    67,    68,    69,
+      70,    58,    59,    60,    61,    62,    63,    -1,    65,    -1,
+      -1,    68,    69,    70,    84,    85,    86,    87,    88,    89,
+      90,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,
+      87,    88,    89,    90,    42,    -1,    -1,    -1,    -1,    -1,
+      48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       58,    59,    60,    61,    62,    63,    -1,    65,    -1,    -1,
       68,    69,    70,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,
+      -1,    -1,    -1,    48,    -1,    -1,    84,    85,    86,    87,
       88,    89,    90,    58,    59,    60,    61,    62,    63,    -1,
       65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,
-      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
+      42,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    84,
       85,    86,    87,    88,    89,    90,    58,    59,    60,    61,
       62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,
-      -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    48,
       -1,    -1,    84,    85,    86,    87,    88,    89,    90,    58,
       59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
       69,    70,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
       89,    90,    58,    59,    60,    61,    62,    63,    -1,    65,
-      -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    84,    85,
+      -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,    42,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
       86,    87,    88,    89,    90,    58,    59,    60,    61,    62,
       63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    84,    85,    86,    87,    88,    89,    90,    50,    92,
-      -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
-      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    58,
-      59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
-      69,    70,    84,    85,    86,    87,    88,    89,    90,    -1,
-      -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
-      89,    90,    -1,    -1,    -1,    94,    58,    59,    60,    61,
-      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,
-      -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
-      -1,    -1,    84,    85,    86,    87,    88,    89,    90,    58,
-      59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
-      69,    70,    58,    59,    60,    61,    -1,    -1,    -1,    65,
-      -1,    -1,    68,    69,    70,    84,    85,    86,    87,    88,
-      89,    90,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
-      86,    87,    88,    89,    90
+      -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    84,    85,    86,    87,    88,    89,    90,    58,    59,
+      60,    61,    62,    63,    -1,    65,    -1,    -1,    68,    69,
+      70,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,    89,
+      90,    58,    59,    60,    61,    62,    63,    -1,    65,    -1,
+      -1,    68,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    48,    -1,    -1,    84,    85,    86,
+      87,    88,    89,    90,    58,    59,    60,    61,    62,    63,
+      -1,    65,    -1,    -1,    68,    69,    70,    58,    59,    60,
+      61,    62,    63,    -1,    65,    -1,    -1,    68,    69,    70,
+      84,    85,    86,    87,    88,    89,    90,    -1,    92,    -1,
+      -1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
+      -1,    -1,    -1,    94,    58,    59,    60,    61,    62,    63,
+      -1,    65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,
+      84,    85,    86,    87,    88,    89,    90,    58,    59,    60,
+      61,    62,    63,    -1,    65,    -1,    -1,    68,    69,    70,
+      58,    59,    60,    61,    -1,    -1,    -1,    65,    -1,    -1,
+      68,    69,    70,    84,    85,    86,    87,    88,    89,    90,
+      -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,
+      88,    89,    90
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1159,38 +1160,38 @@ static const yytype_uint8 yystos[] =
       41,    44,    45,    46,    49,    53,    54,    55,    57,    64,
       71,    72,    73,    74,    75,    78,    79,    80,    87,    88,
       93,    96,   100,   101,   102,   103,   105,   107,   111,   112,
-     113,   118,   119,   120,   121,   122,   123,   128,   130,   132,
-     136,   141,   144,    92,    22,    44,   120,    93,   120,   142,
-      93,   142,    22,   119,    93,   120,   143,   131,   135,    45,
-     124,    38,    40,    41,    42,    43,   120,   129,   133,    45,
+     113,   118,   119,   120,   121,   122,   123,   129,   131,   133,
+     137,   142,   145,    92,    22,    44,   120,    93,   120,   143,
+      93,   143,    22,   119,    93,   120,   144,   132,   136,    45,
+     124,    38,    40,    41,    42,    43,   120,   130,   134,    45,
      120,    50,    51,    15,    16,    17,    22,    29,    22,    22,
-     120,    56,   120,   129,    22,   127,   120,   120,   120,   120,
-     120,   120,   120,    22,   126,   137,   120,   120,   120,    23,
-      25,    98,   119,   145,   146,   147,   148,     0,    92,   120,
-      60,   120,   104,   110,   113,   120,   123,   141,    58,    59,
-      60,    61,    62,    63,    65,    68,    69,    70,    84,    85,
-      86,    87,    88,    89,    90,   115,    93,   120,   120,   142,
-      95,   142,   142,    95,   142,   115,    22,   125,   120,    40,
-     129,    22,    37,    66,    67,    22,    48,    60,   119,   119,
-      48,    60,    48,    47,    50,   129,    95,    42,    48,    42,
-      48,    42,    48,    42,    48,    76,    77,    48,    92,    95,
+     120,    56,   120,   130,    22,   128,   120,   120,   120,   120,
+     120,   120,   120,   125,   138,   120,   120,   120,    23,    25,
+      98,   119,   146,   147,   148,   149,     0,    92,   120,    60,
+     120,   104,   110,   113,   120,   123,   142,    58,    59,    60,
+      61,    62,    63,    65,    68,    69,    70,    84,    85,    86,
+      87,    88,    89,    90,   115,    93,   120,   120,   143,    95,
+     143,   143,    95,   143,   115,    22,   126,   120,    40,   130,
+      22,    37,    66,    67,    22,    48,    60,   119,   119,    48,
+      60,    48,    47,    50,   130,    95,    42,    48,    42,    48,
+      42,    48,    42,    48,    76,    77,    48,    92,    22,   127,
       22,    94,    98,    98,    97,    95,    95,   101,   116,   120,
      116,   116,   120,   120,   120,   120,   120,   120,   120,   120,
      120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
-      22,   138,    94,   120,    94,    94,   120,   138,    95,   120,
-     134,    22,   122,   120,   120,   120,   120,    48,    60,    42,
+      22,   139,    94,   120,    94,    94,   120,   139,    95,   120,
+     135,    22,   122,   120,   120,   120,   120,    48,    60,    42,
      120,   120,   120,   120,    22,   120,   120,   120,   120,   120,
-     120,   120,   120,   120,   120,   106,   106,    22,   119,   119,
-     119,    23,    25,   148,   117,   116,    47,   116,    92,    95,
+     120,   120,   120,   120,   120,   106,   106,    95,   119,   119,
+     119,    23,    25,   149,   117,   116,    47,   116,    92,    95,
       92,    22,   115,   120,   120,    22,    42,    42,    42,    42,
-     103,   117,    92,   105,   116,    30,    48,   117,    47,    95,
-     140,    22,   140,   138,   119,   120,   120,   120,   120,   116,
-     116,    82,    48,   120,   116,   103,    22,   117,   117,    92,
-      48,    83,   120,   116,   108,   116,    26,   140,   120,   116,
-     117,    31,    32,   109,   114,   116,    31,    81,    22,   139,
-     117,   117,   116,   115,   120,    81,   115,    95,   116,    82,
-     117,   116,   103,    22,    82,   116,    47,   116,    81,   117,
-      81,   116
+     103,   117,    22,    92,   105,   116,    30,    48,   117,    47,
+      95,   141,    22,   141,   139,   119,   120,   120,   120,   120,
+     116,   116,    82,    48,   120,   116,   103,    22,   117,   117,
+      92,    48,    83,   120,   116,   108,   116,    26,   141,   120,
+     116,   117,    31,    32,   109,   114,   116,    31,    81,    22,
+     140,   117,   117,   116,   115,   120,    81,   115,    95,   116,
+      82,   117,   116,   103,    22,    82,   116,    47,   116,    81,
+     117,    81,   116
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1206,13 +1207,14 @@ static const yytype_uint8 yyr1[] =
      120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
      120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
      120,   120,   121,   121,   121,   121,   121,   121,   121,   121,
-     122,   122,   123,   123,   123,   123,   123,   124,   123,   123,
-     123,   123,   123,   123,   123,   125,   125,   126,   126,   127,
-     127,   128,   128,   128,   128,   128,   128,   129,   129,   130,
-     130,   130,   130,   131,   130,   133,   134,   132,   132,   135,
-     132,   132,   132,   137,   136,   138,   138,   138,   138,   139,
-     139,   139,   140,   141,   142,   142,   142,   143,   143,   144,
-     145,   145,   145,   145,   146,   146,   147,   147,   148,   148
+     122,   122,   123,   123,   123,   123,   123,   124,   123,   125,
+     123,   123,   123,   123,   123,   123,   126,   126,   127,   127,
+     128,   128,   129,   129,   129,   129,   129,   129,   130,   130,
+     131,   131,   131,   131,   132,   131,   134,   135,   133,   133,
+     136,   133,   133,   133,   138,   137,   139,   139,   139,   139,
+     140,   140,   140,   141,   142,   143,   143,   143,   144,   144,
+     145,   146,   146,   146,   146,   147,   147,   148,   148,   149,
+     149
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1228,13 +1230,14 @@ static const yytype_int8 yyr2[] =
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
        3,     3,     2,     3,     3,     3,     3,     2,     2,     3,
        4,     4,     4,     6,     4,     6,     4,     6,     4,     6,
-       2,     1,     2,     1,     1,     2,     1,     0,     3,     2,
-       2,     4,     2,     4,     2,     1,     3,     1,     3,     1,
-       3,     2,     2,     2,     2,     3,     2,     3,     2,     2,
-       2,     3,     2,     0,     3,     0,     0,     9,     2,     0,
-       7,     8,     6,     0,     3,     0,     1,     3,     4,     0,
-       1,     3,     0,     2,     0,     1,     3,     1,     3,     3,
-       0,     1,     1,     1,     1,     3,     1,     3,     3,     3
+       2,     1,     2,     1,     1,     2,     1,     0,     3,     0,
+       3,     2,     4,     2,     4,     2,     1,     3,     1,     3,
+       1,     3,     2,     2,     2,     2,     3,     2,     3,     2,
+       2,     2,     3,     2,     0,     3,     0,     0,     9,     2,
+       0,     7,     8,     6,     0,     3,     0,     1,     3,     4,
+       0,     1,     3,     0,     2,     0,     1,     3,     1,     3,
+       3,     0,     1,     1,     1,     1,     3,     1,     3,     3,
+       3
 };
 
 
@@ -1672,73 +1675,73 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
     case 19: /* BLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1676 "engines/director/lingo/lingo-gr.cpp"
+#line 1679 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 20: /* FBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1682 "engines/director/lingo/lingo-gr.cpp"
+#line 1685 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 21: /* RBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1688 "engines/director/lingo/lingo-gr.cpp"
+#line 1691 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 22: /* ID  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1694 "engines/director/lingo/lingo-gr.cpp"
+#line 1697 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* STRING  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1700 "engines/director/lingo/lingo-gr.cpp"
+#line 1703 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* HANDLER  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1706 "engines/director/lingo/lingo-gr.cpp"
+#line 1709 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* SYMBOL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1712 "engines/director/lingo/lingo-gr.cpp"
+#line 1715 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ENDCLAUSE  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1718 "engines/director/lingo/lingo-gr.cpp"
+#line 1721 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* tPLAYACCEL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1724 "engines/director/lingo/lingo-gr.cpp"
+#line 1727 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* tMETHOD  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1730 "engines/director/lingo/lingo-gr.cpp"
+#line 1733 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* THEOBJECTFIELD  */
 #line 131 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 1736 "engines/director/lingo/lingo-gr.cpp"
+#line 1739 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 136: /* on  */
+    case 137: /* on  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1742 "engines/director/lingo/lingo-gr.cpp"
+#line 1745 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2008,7 +2011,7 @@ yyreduce:
   case 4:
 #line 137 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2012 "engines/director/lingo/lingo-gr.cpp"
+#line 2015 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2019,7 +2022,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2023 "engines/director/lingo/lingo-gr.cpp"
+#line 2026 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2027,19 +2030,19 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2031 "engines/director/lingo/lingo-gr.cpp"
+#line 2034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 152 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2037 "engines/director/lingo/lingo-gr.cpp"
+#line 2040 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 153 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2043 "engines/director/lingo/lingo-gr.cpp"
+#line 2046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2050,7 +2053,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2054 "engines/director/lingo/lingo-gr.cpp"
+#line 2057 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2062,7 +2065,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2066 "engines/director/lingo/lingo-gr.cpp"
+#line 2069 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2073,7 +2076,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2077 "engines/director/lingo/lingo-gr.cpp"
+#line 2080 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2085,7 +2088,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2089 "engines/director/lingo/lingo-gr.cpp"
+#line 2092 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2096,7 +2099,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2100 "engines/director/lingo/lingo-gr.cpp"
+#line 2103 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2107,7 +2110,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2111 "engines/director/lingo/lingo-gr.cpp"
+#line 2114 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2122,7 +2125,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2126 "engines/director/lingo/lingo-gr.cpp"
+#line 2129 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2133,7 +2136,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2137 "engines/director/lingo/lingo-gr.cpp"
+#line 2140 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
@@ -2144,7 +2147,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body;	/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2148 "engines/director/lingo/lingo-gr.cpp"
+#line 2151 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
@@ -2161,7 +2164,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 5] = end; }
-#line 2165 "engines/director/lingo/lingo-gr.cpp"
+#line 2168 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
@@ -2178,7 +2181,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2182 "engines/director/lingo/lingo-gr.cpp"
+#line 2185 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
@@ -2186,7 +2189,7 @@ yyreduce:
                         {
 		g_lingo->code1(LC::c_nextRepeat);
 	}
-#line 2190 "engines/director/lingo/lingo-gr.cpp"
+#line 2193 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2196,7 +2199,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2200 "engines/director/lingo/lingo-gr.cpp"
+#line 2203 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
@@ -2205,7 +2208,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2209 "engines/director/lingo/lingo-gr.cpp"
+#line 2212 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
@@ -2214,7 +2217,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2218 "engines/director/lingo/lingo-gr.cpp"
+#line 2221 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
@@ -2222,7 +2225,7 @@ yyreduce:
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2226 "engines/director/lingo/lingo-gr.cpp"
+#line 2229 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2237,7 +2240,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2241 "engines/director/lingo/lingo-gr.cpp"
+#line 2244 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
@@ -2252,7 +2255,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2256 "engines/director/lingo/lingo-gr.cpp"
+#line 2259 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
@@ -2263,7 +2266,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2267 "engines/director/lingo/lingo-gr.cpp"
+#line 2270 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
@@ -2278,7 +2281,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2282 "engines/director/lingo/lingo-gr.cpp"
+#line 2285 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
@@ -2293,13 +2296,13 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2297 "engines/director/lingo/lingo-gr.cpp"
+#line 2300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
 #line 338 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2303 "engines/director/lingo/lingo-gr.cpp"
+#line 2306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2309,7 +2312,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2313 "engines/director/lingo/lingo-gr.cpp"
+#line 2316 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
@@ -2319,7 +2322,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); }
-#line 2323 "engines/director/lingo/lingo-gr.cpp"
+#line 2326 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
@@ -2330,25 +2333,25 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
-#line 2334 "engines/director/lingo/lingo-gr.cpp"
+#line 2337 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
 #line 359 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2340 "engines/director/lingo/lingo-gr.cpp"
+#line 2343 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
 #line 361 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2346 "engines/director/lingo/lingo-gr.cpp"
+#line 2349 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
 #line 363 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2352 "engines/director/lingo/lingo-gr.cpp"
+#line 2355 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
@@ -2358,7 +2361,7 @@ yyreduce:
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2362 "engines/director/lingo/lingo-gr.cpp"
+#line 2365 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54:
@@ -2366,7 +2369,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2370 "engines/director/lingo/lingo-gr.cpp"
+#line 2373 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
@@ -2374,7 +2377,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2378 "engines/director/lingo/lingo-gr.cpp"
+#line 2381 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
@@ -2383,7 +2386,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2387 "engines/director/lingo/lingo-gr.cpp"
+#line 2390 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
@@ -2392,7 +2395,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2396 "engines/director/lingo/lingo-gr.cpp"
+#line 2399 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
@@ -2401,13 +2404,13 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2405 "engines/director/lingo/lingo-gr.cpp"
+#line 2408 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
 #line 393 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2411 "engines/director/lingo/lingo-gr.cpp"
+#line 2414 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62:
@@ -2415,7 +2418,7 @@ yyreduce:
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2419 "engines/director/lingo/lingo-gr.cpp"
+#line 2422 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63:
@@ -2423,7 +2426,7 @@ yyreduce:
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2427 "engines/director/lingo/lingo-gr.cpp"
+#line 2430 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64:
@@ -2431,7 +2434,7 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2435 "engines/director/lingo/lingo-gr.cpp"
+#line 2438 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 65:
@@ -2444,7 +2447,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2448 "engines/director/lingo/lingo-gr.cpp"
+#line 2451 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
@@ -2455,7 +2458,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2459 "engines/director/lingo/lingo-gr.cpp"
+#line 2462 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67:
@@ -2465,193 +2468,193 @@ yyreduce:
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2469 "engines/director/lingo/lingo-gr.cpp"
+#line 2472 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
 #line 424 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2475 "engines/director/lingo/lingo-gr.cpp"
+#line 2478 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70:
 #line 425 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2481 "engines/director/lingo/lingo-gr.cpp"
+#line 2484 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
 #line 426 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2487 "engines/director/lingo/lingo-gr.cpp"
+#line 2490 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
 #line 427 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2493 "engines/director/lingo/lingo-gr.cpp"
+#line 2496 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73:
 #line 428 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2499 "engines/director/lingo/lingo-gr.cpp"
+#line 2502 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
 #line 429 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2505 "engines/director/lingo/lingo-gr.cpp"
+#line 2508 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
 #line 430 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2511 "engines/director/lingo/lingo-gr.cpp"
+#line 2514 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
 #line 431 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2517 "engines/director/lingo/lingo-gr.cpp"
+#line 2520 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
 #line 432 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2523 "engines/director/lingo/lingo-gr.cpp"
+#line 2526 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
 #line 433 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2529 "engines/director/lingo/lingo-gr.cpp"
+#line 2532 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
 #line 434 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2535 "engines/director/lingo/lingo-gr.cpp"
+#line 2538 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
 #line 435 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2541 "engines/director/lingo/lingo-gr.cpp"
+#line 2544 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
 #line 436 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2547 "engines/director/lingo/lingo-gr.cpp"
+#line 2550 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
 #line 437 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2553 "engines/director/lingo/lingo-gr.cpp"
+#line 2556 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
 #line 438 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2559 "engines/director/lingo/lingo-gr.cpp"
+#line 2562 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
 #line 439 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2565 "engines/director/lingo/lingo-gr.cpp"
+#line 2568 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
 #line 440 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2571 "engines/director/lingo/lingo-gr.cpp"
+#line 2574 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
 #line 441 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2577 "engines/director/lingo/lingo-gr.cpp"
+#line 2580 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
 #line 442 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); }
-#line 2583 "engines/director/lingo/lingo-gr.cpp"
+#line 2586 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
 #line 443 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2589 "engines/director/lingo/lingo-gr.cpp"
+#line 2592 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
 #line 444 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2595 "engines/director/lingo/lingo-gr.cpp"
+#line 2598 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
 #line 445 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2601 "engines/director/lingo/lingo-gr.cpp"
+#line 2604 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
 #line 446 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2607 "engines/director/lingo/lingo-gr.cpp"
+#line 2610 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
 #line 448 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2613 "engines/director/lingo/lingo-gr.cpp"
+#line 2616 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
 #line 449 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2619 "engines/director/lingo/lingo-gr.cpp"
+#line 2622 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
 #line 450 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2625 "engines/director/lingo/lingo-gr.cpp"
+#line 2628 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
 #line 451 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2631 "engines/director/lingo/lingo-gr.cpp"
+#line 2634 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
 #line 452 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2637 "engines/director/lingo/lingo-gr.cpp"
+#line 2640 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
 #line 453 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2643 "engines/director/lingo/lingo-gr.cpp"
+#line 2646 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
 #line 454 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2649 "engines/director/lingo/lingo-gr.cpp"
+#line 2652 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
 #line 455 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2655 "engines/director/lingo/lingo-gr.cpp"
+#line 2658 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
@@ -2659,227 +2662,239 @@ yyreduce:
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2663 "engines/director/lingo/lingo-gr.cpp"
+#line 2666 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
 #line 462 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2669 "engines/director/lingo/lingo-gr.cpp"
+#line 2672 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
 #line 465 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2675 "engines/director/lingo/lingo-gr.cpp"
+#line 2678 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
 #line 466 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 2681 "engines/director/lingo/lingo-gr.cpp"
+#line 2684 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
 #line 467 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2687 "engines/director/lingo/lingo-gr.cpp"
+#line 2690 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
 #line 467 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 2693 "engines/director/lingo/lingo-gr.cpp"
+#line 2696 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 109:
+#line 468 "engines/director/lingo/lingo-gr.y"
+                    { g_lingo->_indef = kStateInArgs; }
+#line 2702 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 110:
+#line 468 "engines/director/lingo/lingo-gr.y"
+                                                                     { g_lingo->_indef = kStateNone; }
+#line 2708 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
+  case 112:
 #line 470 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2701 "engines/director/lingo/lingo-gr.cpp"
+#line 2716 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
+  case 113:
 #line 473 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2709 "engines/director/lingo/lingo-gr.cpp"
+#line 2724 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
+  case 114:
 #line 476 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 2715 "engines/director/lingo/lingo-gr.cpp"
+#line 2730 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
+  case 115:
 #line 477 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 2721 "engines/director/lingo/lingo-gr.cpp"
+#line 2736 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
+  case 116:
 #line 479 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2730 "engines/director/lingo/lingo-gr.cpp"
+#line 2745 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
+  case 117:
 #line 483 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2739 "engines/director/lingo/lingo-gr.cpp"
+#line 2754 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
+  case 118:
 #line 488 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2748 "engines/director/lingo/lingo-gr.cpp"
+#line 2763 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
+  case 119:
 #line 492 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2757 "engines/director/lingo/lingo-gr.cpp"
+#line 2772 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
+  case 120:
 #line 497 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2766 "engines/director/lingo/lingo-gr.cpp"
+#line 2781 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
+  case 121:
 #line 501 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2775 "engines/director/lingo/lingo-gr.cpp"
+#line 2790 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
+  case 122:
 #line 513 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 2781 "engines/director/lingo/lingo-gr.cpp"
+#line 2796 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
+  case 123:
 #line 514 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 2787 "engines/director/lingo/lingo-gr.cpp"
+#line 2802 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
+  case 124:
 #line 515 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 2793 "engines/director/lingo/lingo-gr.cpp"
+#line 2808 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
+  case 125:
 #line 516 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 2802 "engines/director/lingo/lingo-gr.cpp"
+#line 2817 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
+  case 126:
 #line 520 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 2811 "engines/director/lingo/lingo-gr.cpp"
+#line 2826 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
+  case 127:
 #line 524 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 2820 "engines/director/lingo/lingo-gr.cpp"
+#line 2835 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
+  case 130:
 #line 532 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_playdone); }
-#line 2826 "engines/director/lingo/lingo-gr.cpp"
+#line 2841 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
+  case 131:
 #line 533 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 2835 "engines/director/lingo/lingo-gr.cpp"
+#line 2850 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
+  case 132:
 #line 537 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 2844 "engines/director/lingo/lingo-gr.cpp"
+#line 2859 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
+  case 133:
 #line 541 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 2853 "engines/director/lingo/lingo-gr.cpp"
+#line 2868 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
+  case 134:
 #line 545 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 2859 "engines/director/lingo/lingo-gr.cpp"
+#line 2874 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
+  case 135:
 #line 545 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 2868 "engines/director/lingo/lingo-gr.cpp"
+#line 2883 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
+  case 136:
 #line 575 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 2874 "engines/director/lingo/lingo-gr.cpp"
+#line 2889 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
+  case 137:
 #line 575 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 2880 "engines/director/lingo/lingo-gr.cpp"
+#line 2895 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
+  case 138:
 #line 576 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
@@ -2887,22 +2902,22 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2891 "engines/director/lingo/lingo-gr.cpp"
+#line 2906 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
+  case 139:
 #line 582 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 2897 "engines/director/lingo/lingo-gr.cpp"
+#line 2912 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
+  case 140:
 #line 583 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2903 "engines/director/lingo/lingo-gr.cpp"
+#line 2918 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
+  case 141:
 #line 584 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
@@ -2910,10 +2925,10 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2914 "engines/director/lingo/lingo-gr.cpp"
+#line 2929 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
+  case 142:
 #line 590 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
@@ -2925,10 +2940,10 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 2929 "engines/director/lingo/lingo-gr.cpp"
+#line 2944 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
+  case 143:
 #line 600 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
@@ -2937,64 +2952,64 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 2941 "engines/director/lingo/lingo-gr.cpp"
+#line 2956 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
+  case 144:
 #line 608 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 2947 "engines/director/lingo/lingo-gr.cpp"
+#line 2962 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
+  case 145:
 #line 608 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 2953 "engines/director/lingo/lingo-gr.cpp"
+#line 2968 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
+  case 146:
 #line 610 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 2959 "engines/director/lingo/lingo-gr.cpp"
+#line 2974 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
+  case 147:
 #line 611 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 2965 "engines/director/lingo/lingo-gr.cpp"
+#line 2980 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
+  case 148:
 #line 612 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 2971 "engines/director/lingo/lingo-gr.cpp"
+#line 2986 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
+  case 149:
 #line 613 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 2977 "engines/director/lingo/lingo-gr.cpp"
+#line 2992 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
+  case 151:
 #line 616 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 2983 "engines/director/lingo/lingo-gr.cpp"
+#line 2998 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
+  case 152:
 #line 617 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 2989 "engines/director/lingo/lingo-gr.cpp"
+#line 3004 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
+  case 153:
 #line 619 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 2995 "engines/director/lingo/lingo-gr.cpp"
+#line 3010 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
+  case 154:
 #line 621 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_call);
@@ -3003,113 +3018,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3007 "engines/director/lingo/lingo-gr.cpp"
+#line 3022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
+  case 155:
 #line 629 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3013 "engines/director/lingo/lingo-gr.cpp"
+#line 3028 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
+  case 156:
 #line 630 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3019 "engines/director/lingo/lingo-gr.cpp"
+#line 3034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
+  case 157:
 #line 631 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3025 "engines/director/lingo/lingo-gr.cpp"
+#line 3040 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
+  case 158:
 #line 633 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3031 "engines/director/lingo/lingo-gr.cpp"
+#line 3046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
+  case 159:
 #line 634 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3037 "engines/director/lingo/lingo-gr.cpp"
+#line 3052 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
+  case 160:
 #line 636 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 3043 "engines/director/lingo/lingo-gr.cpp"
+#line 3058 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
+  case 161:
 #line 638 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3049 "engines/director/lingo/lingo-gr.cpp"
+#line 3064 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
+  case 162:
 #line 639 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 3070 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
+  case 163:
 #line 640 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3061 "engines/director/lingo/lingo-gr.cpp"
+#line 3076 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
+  case 164:
 #line 641 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3067 "engines/director/lingo/lingo-gr.cpp"
+#line 3082 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
+  case 165:
 #line 643 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3073 "engines/director/lingo/lingo-gr.cpp"
+#line 3088 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
+  case 166:
 #line 644 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3079 "engines/director/lingo/lingo-gr.cpp"
+#line 3094 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
+  case 167:
 #line 646 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3085 "engines/director/lingo/lingo-gr.cpp"
+#line 3100 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
+  case 168:
 #line 647 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3091 "engines/director/lingo/lingo-gr.cpp"
+#line 3106 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
+  case 169:
 #line 649 "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 3100 "engines/director/lingo/lingo-gr.cpp"
+#line 3115 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
+  case 170:
 #line 653 "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 3109 "engines/director/lingo/lingo-gr.cpp"
+#line 3124 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3113 "engines/director/lingo/lingo-gr.cpp"
+#line 3128 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index f35e9c2..5133d90 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -465,7 +465,7 @@ proc: tPUT expr				{ g_lingo->code1(LC::c_printtop); }
 	| tEXIT tREPEAT			{ g_lingo->code1(LC::c_exitRepeat); }
 	| tEXIT					{ g_lingo->code1(LC::c_procret); }
 	| tGLOBAL { g_lingo->_indef = kStateInArgs; } globallist { g_lingo->_indef = kStateNone; }
-	| tPROPERTY propertylist
+	| tPROPERTY { g_lingo->_indef = kStateInArgs; } propertylist { g_lingo->_indef = kStateNone; }
 	| tINSTANCE instancelist
 	| BLTIN '(' arglist ')'			{
 		g_lingo->codeFunc($BLTIN, $arglist);


Commit: 13049abaff36e76c8b3937c5f1c1e03b3fe69b79
    https://github.com/scummvm/scummvm/commit/13049abaff36e76c8b3937c5f1c1e03b3fe69b79
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T13:26:25+01:00

Commit Message:
DIRECTOR: LINGO: Arrays could be initialized with expressions

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index b56fdf2..2248558 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -567,7 +567,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  126
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1592
+#define YYLAST   1658
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  99
@@ -701,7 +701,7 @@ static const yytype_int16 yytoknum[] =
 };
 # endif
 
-#define YYPACT_NINF (-273)
+#define YYPACT_NINF (-269)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -715,43 +715,43 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     307,   -78,  -273,  -273,   896,  -273,   929,  1008,    65,  1041,
-    -273,  -273,  -273,  -273,  -273,   -25,  -273,   781,  -273,  -273,
-      -8,   896,    41,    97,    21,    38,   896,   817,    53,   896,
-     896,   896,   896,   896,   896,   896,  -273,  -273,   896,   896,
-     896,    82,     7,  -273,  -273,  -273,  -273,  -273,   896,    42,
-     896,   623,  -273,  1489,  -273,  -273,  -273,  -273,  -273,  -273,
-    -273,  -273,  -273,  -273,    -7,   896,  1489,   896,  1489,     3,
-     896,     3,  -273,  -273,   896,  1489,    11,   896,  -273,  -273,
-     110,  -273,   896,  -273,    75,  -273,  1093,  -273,   128,  -273,
-    1080,   130,  -273,   -10,    65,    65,     5,   105,   107,  -273,
-     149,  -273,  1093,  -273,  -273,    61,  -273,  1142,  1175,  1208,
-    1241,  1456,  1406,   135,   138,  -273,  -273,  1419,    67,    68,
-    -273,  -273,    70,    78,    79,  -273,  -273,   386,  1489,   896,
-    1489,  -273,  -273,   896,  1489,  -273,  -273,   896,   896,   896,
-     896,   896,   896,   896,   896,   896,   896,   896,   896,   896,
-     896,   896,   896,   896,   148,   896,  1080,  1419,   -43,   896,
-      26,    28,   896,     3,   148,  -273,    86,  1489,   896,  -273,
-    -273,    37,   896,   896,  -273,   896,   896,    24,   150,   896,
-     896,   896,  -273,   896,  -273,   171,   896,   896,   896,   896,
-     896,   896,   896,   896,   896,   896,  -273,  -273,  -273,    99,
-    -273,  -273,    65,    65,  -273,    65,    93,  -273,  -273,  1489,
-     151,  -273,  1489,   163,   163,   163,   163,  1502,  1502,  -273,
-     -33,   163,   163,   163,   163,   -33,   -49,   -49,  -273,  -273,
-    -273,   -71,  -273,  1489,  -273,  -273,  1489,   -28,   173,  1489,
-    -273,  -273,  -273,  1489,  1489,  1489,   163,   896,   896,   174,
-    1489,   163,  1489,  1489,  -273,  1489,  1274,  1489,  1307,  1489,
-    1340,  1489,  1373,  1489,  1489,   702,  -273,   175,  -273,  -273,
-    -273,    67,    68,  -273,   544,   -15,  -273,   153,   106,   180,
-     106,  -273,   148,  1489,   163,    65,   896,   896,   896,   896,
-    -273,   544,  -273,  -273,  -273,   123,   165,   896,   544,   702,
-     193,  -273,  -273,  -273,   -24,   168,  1489,  1489,  1489,  1489,
-    -273,   137,  -273,   896,  1489,  -273,  -273,  -273,   465,   544,
-     106,   896,  -273,  1489,  -273,    96,   -19,   199,  -273,  1489,
-    -273,   544,  -273,  -273,  -273,   896,   141,  -273,  -273,  -273,
-     131,   544,   544,   143,  -273,  1489,  -273,   702,   201,   145,
-    -273,   544,   182,  -273,  -273,  -273,   161,  -273,   164,  -273,
-     544,  -273,  -273
+     307,   -82,  -269,  -269,   981,  -269,  1014,  1093,    31,  1126,
+    -269,  -269,  -269,  -269,  -269,   -26,  -269,   866,  -269,  -269,
+      10,   981,    47,   220,    18,    35,   981,   902,    55,   981,
+     981,   981,   981,   981,   981,   981,  -269,  -269,   981,   981,
+     981,   386,     7,  -269,  -269,  -269,  -269,  -269,   981,    25,
+     981,   708,  -269,  1555,  -269,  -269,  -269,  -269,  -269,  -269,
+    -269,  -269,  -269,  -269,    -2,   981,  1555,   981,  1555,    -6,
+     981,    -6,  -269,  -269,   981,  1555,    37,   981,  -269,  -269,
+      87,  -269,   981,  -269,    72,  -269,   378,  -269,   100,  -269,
+     144,   104,  -269,     0,    31,    31,    14,    80,   103,  -269,
+    1472,  -269,   378,  -269,  -269,    57,  -269,  1167,  1200,  1233,
+    1266,  1522,  1431,   131,   132,  -269,  -269,  1485,    58,    59,
+    -269,  1555,    64,    68,    70,  -269,  -269,   471,  1555,   981,
+    1555,  -269,  -269,   981,  1555,  -269,  -269,   981,   981,   981,
+     981,   981,   981,   981,   981,   981,   981,   981,   981,   981,
+     981,   981,   981,   981,   145,   981,   144,  1485,   -30,   981,
+      24,    26,   981,    -6,   145,  -269,    75,  1555,   981,  -269,
+    -269,    29,   981,   981,  -269,   981,   981,    23,   136,   981,
+     981,   981,  -269,   981,  -269,   151,   981,   981,   981,   981,
+     981,   981,   981,   981,   981,   981,  -269,  -269,  -269,    79,
+    -269,  -269,    31,    31,  -269,   981,    -5,  -269,  -269,  1555,
+     133,  -269,  1555,    27,    27,    27,    27,  1568,  1568,  -269,
+      17,    27,    27,    27,    27,    17,   -51,   -51,  -269,  -269,
+    -269,   -71,  -269,  1555,  -269,  -269,  1555,   -20,   170,  1555,
+    -269,  -269,  -269,  1555,  1555,  1555,    27,   981,   981,   171,
+    1555,    27,  1555,  1555,  -269,  1555,  1299,  1555,  1332,  1555,
+    1365,  1555,  1398,  1555,  1555,   787,  -269,   172,  -269,  -269,
+    1555,    58,    59,  -269,   629,    11,  -269,   150,   105,   176,
+     105,  -269,   145,  1555,    27,    31,   981,   981,   981,   981,
+    -269,   629,  -269,  -269,  -269,   117,   160,   981,   629,   787,
+     193,  -269,  -269,  -269,    16,   168,  1555,  1555,  1555,  1555,
+    -269,   134,  -269,   981,  1555,  -269,  -269,  -269,   550,   629,
+     105,   981,  -269,  1555,  -269,    99,   -23,   196,  -269,  1555,
+    -269,   629,  -269,  -269,  -269,   981,   138,  -269,  -269,  -269,
+     125,   629,   629,   139,  -269,  1555,  -269,   787,   200,   141,
+    -269,   629,   178,  -269,  -269,  -269,   146,  -269,   157,  -269,
+     629,  -269,  -269
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -801,12 +801,12 @@ static const yytype_uint8 yydefact[] =
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -273,  -273,   103,  -273,  -254,  -273,     4,    35,  -273,  -273,
-    -273,  -273,  -273,  -273,   195,  -273,   -77,   -50,  -227,  -273,
-       1,    -4,  -273,    76,   203,  -273,  -273,  -273,  -273,  -273,
-    -273,   -17,  -273,  -273,  -273,  -273,  -273,  -273,  -273,  -273,
-    -158,  -273,  -272,   205,    12,  -273,  -273,  -273,  -273,  -273,
-      51
+    -269,  -269,   112,  -269,  -254,  -269,    33,    48,  -269,  -269,
+    -269,  -269,  -269,  -269,   175,  -269,   -74,   -50,  -234,  -269,
+      -7,    -4,  -269,    76,   195,  -269,  -269,  -269,  -269,  -269,
+    -269,   -18,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,
+    -158,  -269,  -268,   199,     9,  -269,  -269,  -269,  -269,  -269,
+      45
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -825,35 +825,35 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      66,   164,    68,    68,    46,    75,   237,   126,   303,    73,
-     103,   290,   337,    86,    63,   296,   143,    90,    69,    71,
-      79,   278,   100,   102,   279,   106,   107,   108,   109,   110,
-     111,   112,   143,   297,   115,   116,   117,    89,   175,   291,
-     152,   153,   121,    98,   128,   316,   130,   134,   328,   298,
-     176,   232,   159,   179,   150,   151,   152,   153,     8,   241,
-      99,   156,   338,   157,   280,   180,   157,   279,   320,   169,
-     157,   279,   247,    68,   318,   104,   319,     2,   167,   158,
-     210,   211,   160,     5,   248,   184,   155,    72,    10,   163,
-      11,    91,    92,   353,     2,   177,   178,   331,   159,   127,
-       5,   341,   129,   342,    72,   118,   162,   119,    30,    31,
-      32,    33,    93,    94,    95,   168,   271,   351,   272,    96,
-     234,   159,   235,   159,   304,   209,    97,   332,   333,   212,
-     360,    46,   165,   213,   214,   215,   216,   217,   218,   219,
+      66,    73,    68,    68,   164,    75,   237,   126,   337,   103,
+      63,   290,   303,    86,   143,    69,    71,    90,   271,    79,
+     272,   278,   100,   102,   279,   106,   107,   108,   109,   110,
+     111,   112,   291,    46,   115,   116,   117,   121,   152,   153,
+      98,   296,   298,     2,   128,   316,   130,   134,   175,     5,
+       8,   241,   328,    72,    10,    89,    11,    99,   338,   297,
+     176,   156,   179,   157,   232,   159,   157,   318,   169,   319,
+     157,   247,   280,    68,   180,   279,   158,   104,   167,   160,
+     210,   211,   143,   248,   184,   129,   163,   177,   178,   159,
+     331,   155,   143,   353,   341,   144,   342,    91,    92,   127,
+      30,    31,    32,    33,   150,   151,   152,   153,   320,   165,
+     351,   279,   168,   149,   150,   151,   152,   153,   234,   159,
+     235,   159,   170,   360,   304,   209,   174,    41,   181,   212,
+     332,   333,   162,   213,   214,   215,   216,   217,   218,   219,
      220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
-     170,    68,   174,   181,   182,   233,   185,   198,   236,   275,
-     200,    41,   277,   282,   239,   202,   203,   204,   243,   244,
-     230,   245,   246,   205,   206,   250,   251,   252,    41,   253,
-     120,   238,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   249,   254,   267,   281,   285,   292,   276,   183,
-     299,   300,   302,   268,   269,   312,   270,   137,   138,   139,
-     140,   141,   142,   313,   143,   317,   321,   144,   145,   146,
-     322,   339,   346,   354,   295,   350,   348,   355,   143,   357,
-     207,   144,   266,   147,   148,   149,   150,   151,   152,   153,
-     310,   311,   359,   283,   284,   361,   133,   242,   315,   149,
-     150,   151,   152,   153,   135,   344,   136,   273,     0,     0,
-     347,     0,     0,     0,   324,     0,   326,     0,     0,     0,
-       0,     0,     0,   330,     0,   336,     0,     0,     0,     0,
-       0,   343,   306,   307,   308,   309,   305,     0,     0,     0,
+     182,    68,   185,   198,   200,   233,   202,   203,   236,   275,
+      46,   204,   277,   205,   239,   206,   282,   230,   243,   244,
+     238,   245,   246,   254,   267,   250,   251,   252,   249,   253,
+     276,   171,   255,   256,   257,   258,   259,   260,   261,   262,
+     263,   264,   281,   285,   292,   268,   269,   299,   302,   312,
+     300,   270,   137,   138,   139,   140,   141,   142,   313,   143,
+     172,   173,   144,   145,   146,   317,   321,   322,   339,   346,
+     348,   350,   354,   355,   295,   357,   133,   359,   147,   148,
+     149,   150,   151,   152,   153,    93,    94,    95,   361,   207,
+     310,   311,    96,   283,   284,   266,   135,   242,   315,    97,
+     136,   273,     0,     0,     0,     0,     0,     0,   344,     0,
+       0,     0,     0,   347,   324,     0,   326,     0,     0,     0,
+       0,     0,     0,   330,     0,   336,     0,     0,   305,     0,
+       0,   343,   306,   307,   308,   309,     0,     0,     0,     0,
        0,     0,   349,   314,     0,   352,     0,     0,     0,     0,
        0,   356,     0,   358,     0,     0,     0,    -5,     1,   323,
      362,     0,     0,     0,     0,     0,     0,   329,     0,     2,
@@ -865,159 +865,165 @@ static const yytype_int16 yytable[] =
        0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
       32,    33,    34,     0,     0,    35,    36,    37,     0,     0,
        0,     0,     0,     0,    38,    39,     0,     0,     2,    -5,
-      40,     3,     4,    41,     5,     6,     7,     8,     9,    10,
-       0,    11,     0,    12,    13,    14,     0,     0,     0,    15,
-      16,    17,    18,     0,     0,    19,     0,    20,     0,     0,
-      21,    22,    23,     0,     0,    24,     0,     0,     0,    25,
-      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
+      40,     3,     4,    41,     5,     0,     7,     8,    64,   118,
+       0,   119,     0,     0,     0,    14,     0,     0,    82,     0,
+      84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      65,     0,    23,     0,     0,     0,   137,   138,   139,   140,
+     141,   142,     0,   143,     0,     0,   144,   145,   146,     0,
       29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,    35,    36,    37,     0,     0,     0,
-       0,     0,     0,    38,    39,     0,     0,     2,     0,    40,
-       3,     4,    41,     5,     6,     7,     8,     9,    10,     0,
-      11,   327,    12,     0,    14,     0,     0,     0,    15,    16,
-      17,    18,     0,     0,     0,     0,    20,     0,     0,    21,
-      22,    23,     0,     0,    24,     0,     0,     0,     0,    26,
-      27,     0,    28,     0,     0,     0,     0,     0,     0,    29,
-       0,     0,     0,     0,     0,     0,    30,    31,    32,    33,
-      34,     0,     0,    35,    36,     0,     0,     0,     0,     0,
-       0,     0,    38,    39,     0,     0,     2,   293,    40,     3,
-       4,    41,     5,     6,     7,     8,     9,    10,     0,    11,
-       0,    12,     0,    14,     0,     0,     0,    15,    16,    17,
-      18,     0,     0,     0,     0,    20,     0,     0,    21,    22,
-      23,     0,     0,    24,     0,     0,     0,     0,    26,    27,
-       0,    28,     0,     0,     0,     0,     0,     0,    29,     0,
-       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
-       0,     0,    35,    36,     0,     0,     0,     0,     0,     0,
-       0,    38,    39,     0,     0,     2,   293,    40,     3,     4,
-      41,     5,     6,     7,     8,     9,    10,     0,    11,     0,
-      12,     0,    14,     0,     0,     0,    15,    16,    17,    18,
-       0,     0,     0,     0,     0,     0,     0,    21,     0,    23,
-       0,     0,     0,     0,     0,     0,     0,    26,    27,     0,
-      28,     0,     0,     0,     0,     0,     0,    29,     0,     0,
-       0,     0,     0,     0,    30,    31,    32,    33,    34,     0,
-       0,     0,    36,     0,     0,     0,     0,     0,     0,     0,
-      38,    39,     0,     0,     2,     0,    40,     3,     4,    41,
-       5,     6,     7,     8,     9,    10,     0,    11,     0,    12,
-       0,    14,     0,     0,     0,    15,    16,    17,     0,     0,
-       0,     0,     0,     0,     0,     0,    21,     0,    23,     0,
-       0,     0,     0,     0,     0,     0,    26,    27,     0,    28,
-       0,     0,     0,     0,     0,     0,    29,     0,     0,     0,
-       0,     0,     0,    30,    31,    32,    33,    34,     0,     0,
-       0,    36,     0,     0,     0,     0,     0,     0,     0,    38,
-      39,     0,     0,     2,     0,    40,     3,     4,    41,     5,
-       0,     7,     8,    64,    10,     0,    11,     0,     0,     0,
-      14,     0,     0,     0,     0,     0,     0,     0,     0,    81,
-       0,    82,    83,    84,    85,    65,     0,    23,     0,     2,
-       0,     0,     3,     4,     0,     5,     0,     7,     8,    64,
-      10,     0,    11,     0,     0,    29,    14,     0,     0,     0,
-       0,     0,    30,    31,    32,    33,    34,    82,     0,    84,
-       0,    65,     0,    23,     0,     0,     0,     0,    38,    39,
-       0,     0,     0,   101,    40,     0,     0,    41,     0,     0,
+      33,    34,   147,   148,   149,   150,   151,   152,   153,     0,
+       0,     0,     0,    38,    39,     0,     0,     0,     0,    40,
+       0,     0,    41,     2,   120,     0,     3,     4,     0,     5,
+       6,     7,     8,     9,    10,     0,    11,     0,    12,    13,
+      14,     0,     0,     0,    15,    16,    17,    18,     0,     0,
+      19,     0,    20,     0,     0,    21,    22,    23,     0,     0,
+      24,     0,     0,     0,    25,    26,    27,     0,    28,     0,
+       0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
+       0,     0,    30,    31,    32,    33,    34,     0,     0,    35,
+      36,    37,     0,     0,     0,     0,     0,     0,    38,    39,
+       0,     0,     2,     0,    40,     3,     4,    41,     5,     6,
+       7,     8,     9,    10,     0,    11,   327,    12,     0,    14,
+       0,     0,     0,    15,    16,    17,    18,     0,     0,     0,
+       0,    20,     0,     0,    21,    22,    23,     0,     0,    24,
+       0,     0,     0,     0,    26,    27,     0,    28,     0,     0,
+       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,     0,     0,    35,    36,
+       0,     0,     0,     0,     0,     0,     0,    38,    39,     0,
+       0,     2,   293,    40,     3,     4,    41,     5,     6,     7,
+       8,     9,    10,     0,    11,     0,    12,     0,    14,     0,
+       0,     0,    15,    16,    17,    18,     0,     0,     0,     0,
+      20,     0,     0,    21,    22,    23,     0,     0,    24,     0,
+       0,     0,     0,    26,    27,     0,    28,     0,     0,     0,
+       0,     0,     0,    29,     0,     0,     0,     0,     0,     0,
+      30,    31,    32,    33,    34,     0,     0,    35,    36,     0,
+       0,     0,     0,     0,     0,     0,    38,    39,     0,     0,
+       2,   293,    40,     3,     4,    41,     5,     6,     7,     8,
+       9,    10,     0,    11,     0,    12,     0,    14,     0,     0,
+       0,    15,    16,    17,    18,     0,     0,     0,     0,     0,
+       0,     0,    21,     0,    23,     0,     0,     0,     0,     0,
+       0,     0,    26,    27,     0,    28,     0,     0,     0,     0,
+       0,     0,    29,     0,     0,     0,     0,     0,     0,    30,
+      31,    32,    33,    34,     0,     0,     0,    36,     0,     0,
+       0,     0,     0,     0,     0,    38,    39,     0,     0,     2,
+       0,    40,     3,     4,    41,     5,     6,     7,     8,     9,
+      10,     0,    11,     0,    12,     0,    14,     0,     0,     0,
+      15,    16,    17,     0,     0,     0,     0,     0,     0,     0,
+       0,    21,     0,    23,     0,     0,     0,     0,     0,     0,
+       0,    26,    27,     0,    28,     0,     0,     0,     0,     0,
        0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
-      32,    33,    34,     0,     0,     0,     0,     0,     0,     0,
+      32,    33,    34,     0,     0,     0,    36,     0,     0,     0,
        0,     0,     0,     0,    38,    39,     0,     0,     2,     0,
       40,     3,     4,    41,     5,     0,     7,     8,    64,    10,
        0,    11,     0,     0,     0,    14,     0,     0,     0,     0,
+       0,     0,     0,     0,    81,     0,    82,    83,    84,    85,
+      65,     0,    23,     0,     2,     0,     0,     3,     4,     0,
+       5,     0,     7,     8,    64,    10,     0,    11,     0,     0,
+      29,    14,     0,     0,     0,     0,     0,    30,    31,    32,
+      33,    34,    82,     0,    84,     0,    65,     0,    23,     0,
+       0,     0,     0,    38,    39,     0,     0,     0,   101,    40,
+       0,     0,    41,     0,     0,     0,    29,     0,     0,     0,
+       0,     0,     0,    30,    31,    32,    33,    34,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    38,
+      39,     0,     0,     2,     0,    40,     3,     4,    41,     5,
+       0,     7,     8,    64,    10,     0,    11,     0,     0,     0,
+      14,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    65,     2,    23,     0,     3,
+       4,     0,     5,     0,     7,     8,    64,    10,     0,    11,
+       0,     0,     0,    14,     0,    29,     0,     0,     0,     0,
+       0,     0,    30,    31,    32,    33,    34,     0,    65,     0,
+      23,     0,     0,     0,     0,     0,     0,     0,    38,    39,
+       0,     0,     0,     0,    40,     0,     0,    41,    29,     0,
+       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      65,     2,    23,     0,     3,     4,     0,     5,     0,     7,
-       8,    64,    10,     0,    11,     0,     0,     0,    14,     0,
+       0,    38,    39,     0,     0,     2,     0,    67,     3,     4,
+      41,     5,     0,     7,     8,    64,    10,     0,    11,     0,
+       0,     0,    14,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    65,     2,    23,
+       0,     3,     4,     0,     5,     0,     7,     8,    64,    10,
+       0,    11,     0,     0,     0,    14,     0,    29,     0,     0,
+       0,     0,     0,     0,    30,    31,    32,    33,    34,     0,
+      65,     0,    23,     0,     0,     0,     0,     0,     0,     0,
+      38,    39,     0,     0,     0,     0,    70,     0,     0,    41,
       29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,    65,     0,    23,     0,     0,     0,     0,
-       0,     0,     0,    38,    39,     0,     0,     0,     0,    40,
-       0,     0,    41,    29,     0,     0,     0,     0,     0,     0,
-      30,    31,    32,    33,    34,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    38,    39,     0,     0,
-       2,     0,    67,     3,     4,    41,     5,     0,     7,     8,
-      64,    10,     0,    11,     0,     0,     0,    14,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    65,     2,    23,     0,     3,     4,     0,     5,
-       0,     7,     8,    64,    10,     0,    11,     0,     0,     0,
-      14,     0,    29,     0,     0,     0,     0,     0,     0,    30,
-      31,    32,    33,    34,     0,    65,     0,    23,     0,     0,
-       0,     0,     0,     0,     0,    38,    39,     0,     0,     0,
-       0,    70,     0,     0,    41,    29,     0,     0,     0,     0,
-       0,     0,    30,    31,    32,    33,    34,   171,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    38,    39,
-       0,     0,     0,    82,    74,    84,     0,    41,   137,   138,
-     139,   140,   141,   142,     0,   143,   172,   173,   144,   145,
-     146,   137,   138,   139,   140,   141,   142,     0,   143,     0,
-       0,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     153,     0,     0,     0,     0,     0,     0,   147,   148,   149,
-     150,   151,   152,   153,   186,     0,     0,     0,     0,     0,
-     187,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     137,   138,   139,   140,   141,   142,     0,   143,     0,     0,
-     144,   145,   146,     0,     0,     0,     0,   188,     0,     0,
-       0,     0,     0,   189,     0,     0,   147,   148,   149,   150,
-     151,   152,   153,   137,   138,   139,   140,   141,   142,     0,
-     143,     0,     0,   144,   145,   146,     0,     0,     0,     0,
-     190,     0,     0,     0,     0,     0,   191,     0,     0,   147,
-     148,   149,   150,   151,   152,   153,   137,   138,   139,   140,
-     141,   142,     0,   143,     0,     0,   144,   145,   146,     0,
-       0,     0,     0,   192,     0,     0,     0,     0,     0,   193,
-       0,     0,   147,   148,   149,   150,   151,   152,   153,   137,
-     138,   139,   140,   141,   142,     0,   143,     0,     0,   144,
-     145,   146,     0,     0,     0,     0,   286,     0,     0,     0,
-       0,     0,     0,     0,     0,   147,   148,   149,   150,   151,
-     152,   153,   137,   138,   139,   140,   141,   142,     0,   143,
-       0,     0,   144,   145,   146,     0,     0,     0,     0,   287,
-       0,     0,     0,     0,     0,     0,     0,     0,   147,   148,
-     149,   150,   151,   152,   153,   137,   138,   139,   140,   141,
+      33,    34,     0,     0,     0,     0,     0,     0,     0,   186,
+       0,     0,     0,    38,    39,   187,     0,     0,     0,    74,
+       0,     0,    41,     0,     0,   137,   138,   139,   140,   141,
      142,     0,   143,     0,     0,   144,   145,   146,     0,     0,
-       0,     0,   288,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   188,     0,     0,     0,     0,     0,   189,     0,
        0,   147,   148,   149,   150,   151,   152,   153,   137,   138,
      139,   140,   141,   142,     0,   143,     0,     0,   144,   145,
-     146,     0,     0,     0,     0,   289,     0,     0,     0,     0,
-       0,     0,     0,     0,   147,   148,   149,   150,   151,   152,
+     146,     0,     0,     0,     0,   190,     0,     0,     0,     0,
+       0,   191,     0,     0,   147,   148,   149,   150,   151,   152,
      153,   137,   138,   139,   140,   141,   142,     0,   143,     0,
-       0,   144,   145,   146,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   196,     0,     0,   147,   148,   149,
+       0,   144,   145,   146,     0,     0,     0,     0,   192,     0,
+       0,     0,     0,     0,   193,     0,     0,   147,   148,   149,
      150,   151,   152,   153,   137,   138,   139,   140,   141,   142,
-       0,   143,     0,     0,   144,   145,   146,   137,   138,   139,
-     140,   141,   142,     0,   143,     0,     0,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,     0,   197,     0,
-       0,     0,     0,   147,   148,   149,   150,   151,   152,   153,
-       0,     0,     0,   201,   137,   138,   139,   140,   141,   142,
        0,   143,     0,     0,   144,   145,   146,     0,     0,     0,
-       0,     0,   194,   195,     0,     0,     0,     0,     0,     0,
+       0,   286,     0,     0,     0,     0,     0,     0,     0,     0,
      147,   148,   149,   150,   151,   152,   153,   137,   138,   139,
      140,   141,   142,     0,   143,     0,     0,   144,   145,   146,
-     137,   138,   139,   140,     0,     0,     0,   143,     0,     0,
-     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+       0,     0,     0,     0,   287,     0,     0,     0,     0,     0,
+       0,     0,     0,   147,   148,   149,   150,   151,   152,   153,
+     137,   138,   139,   140,   141,   142,     0,   143,     0,     0,
+     144,   145,   146,     0,     0,     0,     0,   288,     0,     0,
        0,     0,     0,     0,     0,     0,   147,   148,   149,   150,
-     151,   152,   153
+     151,   152,   153,   137,   138,   139,   140,   141,   142,     0,
+     143,     0,     0,   144,   145,   146,     0,     0,     0,     0,
+     289,     0,     0,     0,     0,     0,     0,     0,     0,   147,
+     148,   149,   150,   151,   152,   153,   137,   138,   139,   140,
+     141,   142,     0,   143,     0,     0,   144,   145,   146,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   196,
+       0,     0,   147,   148,   149,   150,   151,   152,   153,   137,
+     138,   139,   140,   141,   142,     0,   143,     0,     0,   144,
+     145,   146,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   147,   148,   149,   150,   151,
+     152,   153,   183,   197,     0,     0,     0,     0,     0,     0,
+     137,   138,   139,   140,   141,   142,     0,   143,     0,     0,
+     144,   145,   146,   137,   138,   139,   140,   141,   142,     0,
+     143,     0,     0,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,     0,     0,     0,     0,     0,     0,   147,
+     148,   149,   150,   151,   152,   153,     0,     0,     0,   201,
+     137,   138,   139,   140,   141,   142,     0,   143,     0,     0,
+     144,   145,   146,     0,     0,     0,     0,     0,   194,   195,
+       0,     0,     0,     0,     0,     0,   147,   148,   149,   150,
+     151,   152,   153,   137,   138,   139,   140,   141,   142,     0,
+     143,     0,     0,   144,   145,   146,   137,   138,   139,   140,
+       0,     0,     0,   143,     0,     0,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,     0,     0,     0,     0,
+       0,     0,   147,   148,   149,   150,   151,   152,   153
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,    78,     6,     7,     0,     9,   164,     0,   280,     8,
-      27,   265,    31,    17,    92,    30,    65,    21,     6,     7,
-      45,    92,    26,    27,    95,    29,    30,    31,    32,    33,
-      34,    35,    65,    48,    38,    39,    40,    45,    48,   266,
-      89,    90,    41,    22,    48,   299,    50,    51,   320,   276,
-      60,    94,    95,    48,    87,    88,    89,    90,    21,    22,
-      22,    65,    81,    67,    92,    60,    70,    95,    92,    86,
-      74,    95,    48,    77,   301,    22,   303,    12,    82,    67,
-     130,   131,    70,    18,    60,   102,    93,    22,    23,    77,
-      25,    50,    51,   347,    12,    94,    95,   324,    95,    92,
-      18,   328,    60,   330,    22,    23,    95,    25,    71,    72,
-      73,    74,    15,    16,    17,    40,    23,   344,    25,    22,
-      94,    95,    94,    95,   282,   129,    29,    31,    32,   133,
-     357,   127,    22,   137,   138,   139,   140,   141,   142,   143,
+       4,     8,     6,     7,    78,     9,   164,     0,    31,    27,
+      92,   265,   280,    17,    65,     6,     7,    21,    23,    45,
+      25,    92,    26,    27,    95,    29,    30,    31,    32,    33,
+      34,    35,   266,     0,    38,    39,    40,    41,    89,    90,
+      22,    30,   276,    12,    48,   299,    50,    51,    48,    18,
+      21,    22,   320,    22,    23,    45,    25,    22,    81,    48,
+      60,    65,    48,    67,    94,    95,    70,   301,    86,   303,
+      74,    48,    92,    77,    60,    95,    67,    22,    82,    70,
+     130,   131,    65,    60,   102,    60,    77,    94,    95,    95,
+     324,    93,    65,   347,   328,    68,   330,    50,    51,    92,
+      71,    72,    73,    74,    87,    88,    89,    90,    92,    22,
+     344,    95,    40,    86,    87,    88,    89,    90,    94,    95,
+      94,    95,    22,   357,   282,   129,    22,    96,    48,   133,
+      31,    32,    95,   137,   138,   139,   140,   141,   142,   143,
      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-      22,   155,    22,    48,    47,   159,    95,    22,   162,   209,
-      22,    96,   212,   240,   168,    98,    98,    97,   172,   173,
-      22,   175,   176,    95,    95,   179,   180,   181,    96,   183,
-      98,    95,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,    42,    22,    95,    22,    22,    22,    47,    50,
-      47,    95,    22,   202,   203,    82,   205,    58,    59,    60,
-      61,    62,    63,    48,    65,    22,    48,    68,    69,    70,
-      83,    22,    81,    22,   274,    82,    95,    82,    65,    47,
-     127,    68,   197,    84,    85,    86,    87,    88,    89,    90,
-     290,   291,    81,   247,   248,    81,    51,   171,   298,    86,
-      87,    88,    89,    90,    51,   332,    51,   206,    -1,    -1,
-     337,    -1,    -1,    -1,   314,    -1,   316,    -1,    -1,    -1,
-      -1,    -1,    -1,   323,    -1,   325,    -1,    -1,    -1,    -1,
-      -1,   331,   286,   287,   288,   289,   285,    -1,    -1,    -1,
+      47,   155,    95,    22,    22,   159,    98,    98,   162,   209,
+     127,    97,   212,    95,   168,    95,   240,    22,   172,   173,
+      95,   175,   176,    22,    95,   179,   180,   181,    42,   183,
+      47,    37,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,    22,    22,    22,   202,   203,    47,    22,    82,
+      95,   205,    58,    59,    60,    61,    62,    63,    48,    65,
+      66,    67,    68,    69,    70,    22,    48,    83,    22,    81,
+      95,    82,    22,    82,   274,    47,    51,    81,    84,    85,
+      86,    87,    88,    89,    90,    15,    16,    17,    81,   127,
+     290,   291,    22,   247,   248,   197,    51,   171,   298,    29,
+      51,   206,    -1,    -1,    -1,    -1,    -1,    -1,   332,    -1,
+      -1,    -1,    -1,   337,   314,    -1,   316,    -1,    -1,    -1,
+      -1,    -1,    -1,   323,    -1,   325,    -1,    -1,   285,    -1,
+      -1,   331,   286,   287,   288,   289,    -1,    -1,    -1,    -1,
       -1,    -1,   342,   297,    -1,   345,    -1,    -1,    -1,    -1,
       -1,   351,    -1,   353,    -1,    -1,    -1,     0,     1,   313,
      360,    -1,    -1,    -1,    -1,    -1,    -1,   321,    -1,    12,
@@ -1029,126 +1035,132 @@ static const yytype_int16 yycheck[] =
       -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
       73,    74,    75,    -1,    -1,    78,    79,    80,    -1,    -1,
       -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,    92,
-      93,    15,    16,    96,    18,    19,    20,    21,    22,    23,
-      -1,    25,    -1,    27,    28,    29,    -1,    -1,    -1,    33,
-      34,    35,    36,    -1,    -1,    39,    -1,    41,    -1,    -1,
-      44,    45,    46,    -1,    -1,    49,    -1,    -1,    -1,    53,
-      54,    55,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,
+      93,    15,    16,    96,    18,    -1,    20,    21,    22,    23,
+      -1,    25,    -1,    -1,    -1,    29,    -1,    -1,    40,    -1,
+      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      44,    -1,    46,    -1,    -1,    -1,    58,    59,    60,    61,
+      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,
       64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
-      74,    75,    -1,    -1,    78,    79,    80,    -1,    -1,    -1,
-      -1,    -1,    -1,    87,    88,    -1,    -1,    12,    -1,    93,
-      15,    16,    96,    18,    19,    20,    21,    22,    23,    -1,
-      25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
-      35,    36,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,
-      45,    46,    -1,    -1,    49,    -1,    -1,    -1,    -1,    54,
-      55,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    64,
-      -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
-      75,    -1,    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    87,    88,    -1,    -1,    12,    92,    93,    15,
-      16,    96,    18,    19,    20,    21,    22,    23,    -1,    25,
-      -1,    27,    -1,    29,    -1,    -1,    -1,    33,    34,    35,
-      36,    -1,    -1,    -1,    -1,    41,    -1,    -1,    44,    45,
-      46,    -1,    -1,    49,    -1,    -1,    -1,    -1,    54,    55,
-      -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,
-      -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,
-      -1,    -1,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    87,    88,    -1,    -1,    12,    92,    93,    15,    16,
-      96,    18,    19,    20,    21,    22,    23,    -1,    25,    -1,
-      27,    -1,    29,    -1,    -1,    -1,    33,    34,    35,    36,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,    55,    -1,
-      57,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,
-      -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,
-      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      87,    88,    -1,    -1,    12,    -1,    93,    15,    16,    96,
-      18,    19,    20,    21,    22,    23,    -1,    25,    -1,    27,
-      -1,    29,    -1,    -1,    -1,    33,    34,    35,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    57,
-      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,
-      -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,
-      -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
-      88,    -1,    -1,    12,    -1,    93,    15,    16,    96,    18,
-      -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,    -1,
-      29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,
-      -1,    40,    41,    42,    43,    44,    -1,    46,    -1,    12,
-      -1,    -1,    15,    16,    -1,    18,    -1,    20,    21,    22,
-      23,    -1,    25,    -1,    -1,    64,    29,    -1,    -1,    -1,
-      -1,    -1,    71,    72,    73,    74,    75,    40,    -1,    42,
-      -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    87,    88,
-      -1,    -1,    -1,    56,    93,    -1,    -1,    96,    -1,    -1,
+      74,    75,    84,    85,    86,    87,    88,    89,    90,    -1,
+      -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    93,
+      -1,    -1,    96,    12,    98,    -1,    15,    16,    -1,    18,
+      19,    20,    21,    22,    23,    -1,    25,    -1,    27,    28,
+      29,    -1,    -1,    -1,    33,    34,    35,    36,    -1,    -1,
+      39,    -1,    41,    -1,    -1,    44,    45,    46,    -1,    -1,
+      49,    -1,    -1,    -1,    53,    54,    55,    -1,    57,    -1,
+      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,    78,
+      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    -1,    12,    -1,    93,    15,    16,    96,    18,    19,
+      20,    21,    22,    23,    -1,    25,    26,    27,    -1,    29,
+      -1,    -1,    -1,    33,    34,    35,    36,    -1,    -1,    -1,
+      -1,    41,    -1,    -1,    44,    45,    46,    -1,    -1,    49,
+      -1,    -1,    -1,    -1,    54,    55,    -1,    57,    -1,    -1,
+      -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,
+      -1,    71,    72,    73,    74,    75,    -1,    -1,    78,    79,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,
+      -1,    12,    92,    93,    15,    16,    96,    18,    19,    20,
+      21,    22,    23,    -1,    25,    -1,    27,    -1,    29,    -1,
+      -1,    -1,    33,    34,    35,    36,    -1,    -1,    -1,    -1,
+      41,    -1,    -1,    44,    45,    46,    -1,    -1,    49,    -1,
+      -1,    -1,    -1,    54,    55,    -1,    57,    -1,    -1,    -1,
+      -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    72,    73,    74,    75,    -1,    -1,    78,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,
+      12,    92,    93,    15,    16,    96,    18,    19,    20,    21,
+      22,    23,    -1,    25,    -1,    27,    -1,    29,    -1,    -1,
+      -1,    33,    34,    35,    36,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    54,    55,    -1,    57,    -1,    -1,    -1,    -1,
+      -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,
+      72,    73,    74,    75,    -1,    -1,    -1,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,
+      -1,    93,    15,    16,    96,    18,    19,    20,    21,    22,
+      23,    -1,    25,    -1,    27,    -1,    29,    -1,    -1,    -1,
+      33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    54,    55,    -1,    57,    -1,    -1,    -1,    -1,    -1,
       -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
-      73,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      73,    74,    75,    -1,    -1,    -1,    79,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,    -1,
       93,    15,    16,    96,    18,    -1,    20,    21,    22,    23,
       -1,    25,    -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    38,    -1,    40,    41,    42,    43,
+      44,    -1,    46,    -1,    12,    -1,    -1,    15,    16,    -1,
+      18,    -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,
+      64,    29,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
+      74,    75,    40,    -1,    42,    -1,    44,    -1,    46,    -1,
+      -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    56,    93,
+      -1,    -1,    96,    -1,    -1,    -1,    64,    -1,    -1,    -1,
+      -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      88,    -1,    -1,    12,    -1,    93,    15,    16,    96,    18,
+      -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,    -1,
+      29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    44,    12,    46,    -1,    15,
+      16,    -1,    18,    -1,    20,    21,    22,    23,    -1,    25,
+      -1,    -1,    -1,    29,    -1,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    72,    73,    74,    75,    -1,    44,    -1,
+      46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    -1,    -1,    -1,    93,    -1,    -1,    96,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      44,    12,    46,    -1,    15,    16,    -1,    18,    -1,    20,
-      21,    22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,
+      -1,    87,    88,    -1,    -1,    12,    -1,    93,    15,    16,
+      96,    18,    -1,    20,    21,    22,    23,    -1,    25,    -1,
+      -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    12,    46,
+      -1,    15,    16,    -1,    18,    -1,    20,    21,    22,    23,
+      -1,    25,    -1,    -1,    -1,    29,    -1,    64,    -1,    -1,
+      -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,
+      44,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      87,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,    96,
       64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
-      74,    75,    -1,    44,    -1,    46,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    93,
-      -1,    -1,    96,    64,    -1,    -1,    -1,    -1,    -1,    -1,
-      71,    72,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,
-      12,    -1,    93,    15,    16,    96,    18,    -1,    20,    21,
-      22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    44,    12,    46,    -1,    15,    16,    -1,    18,
-      -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,    -1,
-      29,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,
-      72,    73,    74,    75,    -1,    44,    -1,    46,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,
-      -1,    93,    -1,    -1,    96,    64,    -1,    -1,    -1,    -1,
-      -1,    -1,    71,    72,    73,    74,    75,    37,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
-      -1,    -1,    -1,    40,    93,    42,    -1,    96,    58,    59,
-      60,    61,    62,    63,    -1,    65,    66,    67,    68,    69,
-      70,    58,    59,    60,    61,    62,    63,    -1,    65,    -1,
-      -1,    68,    69,    70,    84,    85,    86,    87,    88,    89,
-      90,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,
-      87,    88,    89,    90,    42,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      58,    59,    60,    61,    62,    63,    -1,    65,    -1,    -1,
-      68,    69,    70,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-      -1,    -1,    -1,    48,    -1,    -1,    84,    85,    86,    87,
-      88,    89,    90,    58,    59,    60,    61,    62,    63,    -1,
-      65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,
-      42,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    84,
-      85,    86,    87,    88,    89,    90,    58,    59,    60,    61,
-      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,
-      -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    48,
-      -1,    -1,    84,    85,    86,    87,    88,    89,    90,    58,
-      59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
-      69,    70,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
-      89,    90,    58,    59,    60,    61,    62,    63,    -1,    65,
-      -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,    42,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
-      86,    87,    88,    89,    90,    58,    59,    60,    61,    62,
+      74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
+      -1,    -1,    -1,    87,    88,    48,    -1,    -1,    -1,    93,
+      -1,    -1,    96,    -1,    -1,    58,    59,    60,    61,    62,
       63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,    -1,
-      -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    48,    -1,
       -1,    84,    85,    86,    87,    88,    89,    90,    58,    59,
       60,    61,    62,    63,    -1,    65,    -1,    -1,    68,    69,
       70,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,    89,
+      -1,    48,    -1,    -1,    84,    85,    86,    87,    88,    89,
       90,    58,    59,    60,    61,    62,    63,    -1,    65,    -1,
-      -1,    68,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    68,    69,    70,    -1,    -1,    -1,    -1,    42,    -1,
       -1,    -1,    -1,    -1,    48,    -1,    -1,    84,    85,    86,
       87,    88,    89,    90,    58,    59,    60,    61,    62,    63,
-      -1,    65,    -1,    -1,    68,    69,    70,    58,    59,    60,
-      61,    62,    63,    -1,    65,    -1,    -1,    68,    69,    70,
-      84,    85,    86,    87,    88,    89,    90,    -1,    92,    -1,
-      -1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
-      -1,    -1,    -1,    94,    58,    59,    60,    61,    62,    63,
       -1,    65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,
-      -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       84,    85,    86,    87,    88,    89,    90,    58,    59,    60,
       61,    62,    63,    -1,    65,    -1,    -1,    68,    69,    70,
-      58,    59,    60,    61,    -1,    -1,    -1,    65,    -1,    -1,
-      68,    69,    70,    84,    85,    86,    87,    88,    89,    90,
+      -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
+      58,    59,    60,    61,    62,    63,    -1,    65,    -1,    -1,
+      68,    69,    70,    -1,    -1,    -1,    -1,    42,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,
-      88,    89,    90
+      88,    89,    90,    58,    59,    60,    61,    62,    63,    -1,
+      65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,
+      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
+      85,    86,    87,    88,    89,    90,    58,    59,    60,    61,
+      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
+      -1,    -1,    84,    85,    86,    87,    88,    89,    90,    58,
+      59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
+      69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
+      89,    90,    50,    92,    -1,    -1,    -1,    -1,    -1,    -1,
+      58,    59,    60,    61,    62,    63,    -1,    65,    -1,    -1,
+      68,    69,    70,    58,    59,    60,    61,    62,    63,    -1,
+      65,    -1,    -1,    68,    69,    70,    84,    85,    86,    87,
+      88,    89,    90,    -1,    -1,    -1,    -1,    -1,    -1,    84,
+      85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    94,
+      58,    59,    60,    61,    62,    63,    -1,    65,    -1,    -1,
+      68,    69,    70,    -1,    -1,    -1,    -1,    -1,    76,    77,
+      -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,
+      88,    89,    90,    58,    59,    60,    61,    62,    63,    -1,
+      65,    -1,    -1,    68,    69,    70,    58,    59,    60,    61,
+      -1,    -1,    -1,    65,    -1,    -1,    68,    69,    70,    84,
+      85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    -1,
+      -1,    -1,    84,    85,    86,    87,    88,    89,    90
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1167,7 +1179,7 @@ static const yytype_uint8 yystos[] =
      120,    50,    51,    15,    16,    17,    22,    29,    22,    22,
      120,    56,   120,   130,    22,   128,   120,   120,   120,   120,
      120,   120,   120,   125,   138,   120,   120,   120,    23,    25,
-      98,   119,   146,   147,   148,   149,     0,    92,   120,    60,
+      98,   120,   146,   147,   148,   149,     0,    92,   120,    60,
      120,   104,   110,   113,   120,   123,   142,    58,    59,    60,
       61,    62,    63,    65,    68,    69,    70,    84,    85,    86,
       87,    88,    89,    90,   115,    93,   120,   120,   143,    95,
@@ -1182,7 +1194,7 @@ static const yytype_uint8 yystos[] =
      135,    22,   122,   120,   120,   120,   120,    48,    60,    42,
      120,   120,   120,   120,    22,   120,   120,   120,   120,   120,
      120,   120,   120,   120,   120,   106,   106,    95,   119,   119,
-     119,    23,    25,   149,   117,   116,    47,   116,    92,    95,
+     120,    23,    25,   149,   117,   116,    47,   116,    92,    95,
       92,    22,   115,   120,   120,    22,    42,    42,    42,    42,
      103,   117,    22,    92,   105,   116,    30,    48,   117,    47,
       95,   141,    22,   141,   139,   119,   120,   120,   120,   120,
@@ -1675,73 +1687,73 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
     case 19: /* BLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1679 "engines/director/lingo/lingo-gr.cpp"
+#line 1691 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 20: /* FBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1685 "engines/director/lingo/lingo-gr.cpp"
+#line 1697 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 21: /* RBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1691 "engines/director/lingo/lingo-gr.cpp"
+#line 1703 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 22: /* ID  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1697 "engines/director/lingo/lingo-gr.cpp"
+#line 1709 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* STRING  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1703 "engines/director/lingo/lingo-gr.cpp"
+#line 1715 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* HANDLER  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1709 "engines/director/lingo/lingo-gr.cpp"
+#line 1721 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* SYMBOL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1715 "engines/director/lingo/lingo-gr.cpp"
+#line 1727 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ENDCLAUSE  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1721 "engines/director/lingo/lingo-gr.cpp"
+#line 1733 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* tPLAYACCEL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1727 "engines/director/lingo/lingo-gr.cpp"
+#line 1739 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* tMETHOD  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1733 "engines/director/lingo/lingo-gr.cpp"
+#line 1745 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* THEOBJECTFIELD  */
 #line 131 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 1739 "engines/director/lingo/lingo-gr.cpp"
+#line 1751 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 137: /* on  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1745 "engines/director/lingo/lingo-gr.cpp"
+#line 1757 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2011,7 +2023,7 @@ yyreduce:
   case 4:
 #line 137 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2015 "engines/director/lingo/lingo-gr.cpp"
+#line 2027 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2022,7 +2034,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2026 "engines/director/lingo/lingo-gr.cpp"
+#line 2038 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2030,19 +2042,19 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2034 "engines/director/lingo/lingo-gr.cpp"
+#line 2046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 152 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2040 "engines/director/lingo/lingo-gr.cpp"
+#line 2052 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 153 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2046 "engines/director/lingo/lingo-gr.cpp"
+#line 2058 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2053,7 +2065,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2057 "engines/director/lingo/lingo-gr.cpp"
+#line 2069 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2065,7 +2077,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2069 "engines/director/lingo/lingo-gr.cpp"
+#line 2081 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2076,7 +2088,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2080 "engines/director/lingo/lingo-gr.cpp"
+#line 2092 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2088,7 +2100,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2092 "engines/director/lingo/lingo-gr.cpp"
+#line 2104 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2099,7 +2111,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2103 "engines/director/lingo/lingo-gr.cpp"
+#line 2115 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2110,7 +2122,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2114 "engines/director/lingo/lingo-gr.cpp"
+#line 2126 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2125,7 +2137,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2129 "engines/director/lingo/lingo-gr.cpp"
+#line 2141 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2136,7 +2148,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2140 "engines/director/lingo/lingo-gr.cpp"
+#line 2152 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
@@ -2147,7 +2159,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body;	/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2151 "engines/director/lingo/lingo-gr.cpp"
+#line 2163 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
@@ -2164,7 +2176,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 5] = end; }
-#line 2168 "engines/director/lingo/lingo-gr.cpp"
+#line 2180 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
@@ -2181,7 +2193,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2185 "engines/director/lingo/lingo-gr.cpp"
+#line 2197 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
@@ -2189,7 +2201,7 @@ yyreduce:
                         {
 		g_lingo->code1(LC::c_nextRepeat);
 	}
-#line 2193 "engines/director/lingo/lingo-gr.cpp"
+#line 2205 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2199,7 +2211,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2203 "engines/director/lingo/lingo-gr.cpp"
+#line 2215 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
@@ -2208,7 +2220,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2212 "engines/director/lingo/lingo-gr.cpp"
+#line 2224 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
@@ -2217,7 +2229,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2221 "engines/director/lingo/lingo-gr.cpp"
+#line 2233 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
@@ -2225,7 +2237,7 @@ yyreduce:
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2229 "engines/director/lingo/lingo-gr.cpp"
+#line 2241 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2240,7 +2252,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2244 "engines/director/lingo/lingo-gr.cpp"
+#line 2256 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
@@ -2255,7 +2267,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2259 "engines/director/lingo/lingo-gr.cpp"
+#line 2271 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
@@ -2266,7 +2278,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2270 "engines/director/lingo/lingo-gr.cpp"
+#line 2282 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
@@ -2281,7 +2293,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2285 "engines/director/lingo/lingo-gr.cpp"
+#line 2297 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
@@ -2296,13 +2308,13 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2300 "engines/director/lingo/lingo-gr.cpp"
+#line 2312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
 #line 338 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2306 "engines/director/lingo/lingo-gr.cpp"
+#line 2318 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2312,7 +2324,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2316 "engines/director/lingo/lingo-gr.cpp"
+#line 2328 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
@@ -2322,7 +2334,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); }
-#line 2326 "engines/director/lingo/lingo-gr.cpp"
+#line 2338 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
@@ -2333,25 +2345,25 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
-#line 2337 "engines/director/lingo/lingo-gr.cpp"
+#line 2349 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
 #line 359 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2343 "engines/director/lingo/lingo-gr.cpp"
+#line 2355 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
 #line 361 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2349 "engines/director/lingo/lingo-gr.cpp"
+#line 2361 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
 #line 363 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2355 "engines/director/lingo/lingo-gr.cpp"
+#line 2367 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
@@ -2361,7 +2373,7 @@ yyreduce:
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2365 "engines/director/lingo/lingo-gr.cpp"
+#line 2377 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54:
@@ -2369,7 +2381,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2373 "engines/director/lingo/lingo-gr.cpp"
+#line 2385 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
@@ -2377,7 +2389,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2381 "engines/director/lingo/lingo-gr.cpp"
+#line 2393 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
@@ -2386,7 +2398,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2390 "engines/director/lingo/lingo-gr.cpp"
+#line 2402 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
@@ -2395,7 +2407,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2399 "engines/director/lingo/lingo-gr.cpp"
+#line 2411 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
@@ -2404,13 +2416,13 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2408 "engines/director/lingo/lingo-gr.cpp"
+#line 2420 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
 #line 393 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2414 "engines/director/lingo/lingo-gr.cpp"
+#line 2426 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62:
@@ -2418,7 +2430,7 @@ yyreduce:
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2422 "engines/director/lingo/lingo-gr.cpp"
+#line 2434 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63:
@@ -2426,7 +2438,7 @@ yyreduce:
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2430 "engines/director/lingo/lingo-gr.cpp"
+#line 2442 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64:
@@ -2434,7 +2446,7 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2438 "engines/director/lingo/lingo-gr.cpp"
+#line 2450 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 65:
@@ -2447,7 +2459,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2451 "engines/director/lingo/lingo-gr.cpp"
+#line 2463 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
@@ -2458,7 +2470,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2462 "engines/director/lingo/lingo-gr.cpp"
+#line 2474 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67:
@@ -2468,193 +2480,193 @@ yyreduce:
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2472 "engines/director/lingo/lingo-gr.cpp"
+#line 2484 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
 #line 424 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2478 "engines/director/lingo/lingo-gr.cpp"
+#line 2490 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70:
 #line 425 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2484 "engines/director/lingo/lingo-gr.cpp"
+#line 2496 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
 #line 426 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2490 "engines/director/lingo/lingo-gr.cpp"
+#line 2502 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
 #line 427 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2496 "engines/director/lingo/lingo-gr.cpp"
+#line 2508 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73:
 #line 428 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2502 "engines/director/lingo/lingo-gr.cpp"
+#line 2514 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
 #line 429 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2508 "engines/director/lingo/lingo-gr.cpp"
+#line 2520 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
 #line 430 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2514 "engines/director/lingo/lingo-gr.cpp"
+#line 2526 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
 #line 431 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2520 "engines/director/lingo/lingo-gr.cpp"
+#line 2532 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
 #line 432 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2526 "engines/director/lingo/lingo-gr.cpp"
+#line 2538 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
 #line 433 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2532 "engines/director/lingo/lingo-gr.cpp"
+#line 2544 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
 #line 434 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2538 "engines/director/lingo/lingo-gr.cpp"
+#line 2550 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
 #line 435 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2544 "engines/director/lingo/lingo-gr.cpp"
+#line 2556 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
 #line 436 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2550 "engines/director/lingo/lingo-gr.cpp"
+#line 2562 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
 #line 437 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2556 "engines/director/lingo/lingo-gr.cpp"
+#line 2568 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
 #line 438 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2562 "engines/director/lingo/lingo-gr.cpp"
+#line 2574 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
 #line 439 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2568 "engines/director/lingo/lingo-gr.cpp"
+#line 2580 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
 #line 440 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2574 "engines/director/lingo/lingo-gr.cpp"
+#line 2586 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
 #line 441 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2580 "engines/director/lingo/lingo-gr.cpp"
+#line 2592 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
 #line 442 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); }
-#line 2586 "engines/director/lingo/lingo-gr.cpp"
+#line 2598 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
 #line 443 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2592 "engines/director/lingo/lingo-gr.cpp"
+#line 2604 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
 #line 444 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2598 "engines/director/lingo/lingo-gr.cpp"
+#line 2610 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
 #line 445 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2604 "engines/director/lingo/lingo-gr.cpp"
+#line 2616 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
 #line 446 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2610 "engines/director/lingo/lingo-gr.cpp"
+#line 2622 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
 #line 448 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2616 "engines/director/lingo/lingo-gr.cpp"
+#line 2628 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
 #line 449 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2622 "engines/director/lingo/lingo-gr.cpp"
+#line 2634 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
 #line 450 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2628 "engines/director/lingo/lingo-gr.cpp"
+#line 2640 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
 #line 451 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2634 "engines/director/lingo/lingo-gr.cpp"
+#line 2646 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
 #line 452 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2640 "engines/director/lingo/lingo-gr.cpp"
+#line 2652 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
 #line 453 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2646 "engines/director/lingo/lingo-gr.cpp"
+#line 2658 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
 #line 454 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2652 "engines/director/lingo/lingo-gr.cpp"
+#line 2664 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
 #line 455 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2658 "engines/director/lingo/lingo-gr.cpp"
+#line 2670 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
@@ -2662,49 +2674,49 @@ yyreduce:
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2666 "engines/director/lingo/lingo-gr.cpp"
+#line 2678 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
 #line 462 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2672 "engines/director/lingo/lingo-gr.cpp"
+#line 2684 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
 #line 465 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2678 "engines/director/lingo/lingo-gr.cpp"
+#line 2690 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
 #line 466 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 2684 "engines/director/lingo/lingo-gr.cpp"
+#line 2696 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
 #line 467 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2690 "engines/director/lingo/lingo-gr.cpp"
+#line 2702 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
 #line 467 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 2696 "engines/director/lingo/lingo-gr.cpp"
+#line 2708 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
 #line 468 "engines/director/lingo/lingo-gr.y"
                     { g_lingo->_indef = kStateInArgs; }
-#line 2702 "engines/director/lingo/lingo-gr.cpp"
+#line 2714 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
 #line 468 "engines/director/lingo/lingo-gr.y"
                                                                      { g_lingo->_indef = kStateNone; }
-#line 2708 "engines/director/lingo/lingo-gr.cpp"
+#line 2720 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
@@ -2712,7 +2724,7 @@ yyreduce:
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2716 "engines/director/lingo/lingo-gr.cpp"
+#line 2728 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
@@ -2720,19 +2732,19 @@ yyreduce:
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2724 "engines/director/lingo/lingo-gr.cpp"
+#line 2736 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114:
 #line 476 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 2730 "engines/director/lingo/lingo-gr.cpp"
+#line 2742 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
 #line 477 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 2736 "engines/director/lingo/lingo-gr.cpp"
+#line 2748 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
@@ -2741,7 +2753,7 @@ yyreduce:
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2745 "engines/director/lingo/lingo-gr.cpp"
+#line 2757 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117:
@@ -2750,7 +2762,7 @@ yyreduce:
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2754 "engines/director/lingo/lingo-gr.cpp"
+#line 2766 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
@@ -2759,7 +2771,7 @@ yyreduce:
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2763 "engines/director/lingo/lingo-gr.cpp"
+#line 2775 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
@@ -2768,7 +2780,7 @@ yyreduce:
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2772 "engines/director/lingo/lingo-gr.cpp"
+#line 2784 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
@@ -2777,7 +2789,7 @@ yyreduce:
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2781 "engines/director/lingo/lingo-gr.cpp"
+#line 2793 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
@@ -2786,25 +2798,25 @@ yyreduce:
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2790 "engines/director/lingo/lingo-gr.cpp"
+#line 2802 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122:
 #line 513 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 2796 "engines/director/lingo/lingo-gr.cpp"
+#line 2808 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123:
 #line 514 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 2802 "engines/director/lingo/lingo-gr.cpp"
+#line 2814 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
 #line 515 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 2808 "engines/director/lingo/lingo-gr.cpp"
+#line 2820 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
@@ -2813,7 +2825,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 2817 "engines/director/lingo/lingo-gr.cpp"
+#line 2829 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
@@ -2822,7 +2834,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 2826 "engines/director/lingo/lingo-gr.cpp"
+#line 2838 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
@@ -2831,13 +2843,13 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 2835 "engines/director/lingo/lingo-gr.cpp"
+#line 2847 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
 #line 532 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_playdone); }
-#line 2841 "engines/director/lingo/lingo-gr.cpp"
+#line 2853 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
@@ -2846,7 +2858,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 2850 "engines/director/lingo/lingo-gr.cpp"
+#line 2862 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
@@ -2855,7 +2867,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 2859 "engines/director/lingo/lingo-gr.cpp"
+#line 2871 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133:
@@ -2864,13 +2876,13 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 2868 "engines/director/lingo/lingo-gr.cpp"
+#line 2880 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
 #line 545 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 2874 "engines/director/lingo/lingo-gr.cpp"
+#line 2886 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
@@ -2879,19 +2891,19 @@ yyreduce:
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 2883 "engines/director/lingo/lingo-gr.cpp"
+#line 2895 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
 #line 575 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 2889 "engines/director/lingo/lingo-gr.cpp"
+#line 2901 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
 #line 575 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 2895 "engines/director/lingo/lingo-gr.cpp"
+#line 2907 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
@@ -2902,19 +2914,19 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2906 "engines/director/lingo/lingo-gr.cpp"
+#line 2918 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
 #line 582 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 2912 "engines/director/lingo/lingo-gr.cpp"
+#line 2924 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140:
 #line 583 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2918 "engines/director/lingo/lingo-gr.cpp"
+#line 2930 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
@@ -2925,7 +2937,7 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2929 "engines/director/lingo/lingo-gr.cpp"
+#line 2941 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
@@ -2940,7 +2952,7 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 2944 "engines/director/lingo/lingo-gr.cpp"
+#line 2956 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
@@ -2952,61 +2964,61 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 2956 "engines/director/lingo/lingo-gr.cpp"
+#line 2968 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
 #line 608 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 2962 "engines/director/lingo/lingo-gr.cpp"
+#line 2974 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
 #line 608 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 2968 "engines/director/lingo/lingo-gr.cpp"
+#line 2980 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
 #line 610 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 2974 "engines/director/lingo/lingo-gr.cpp"
+#line 2986 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
 #line 611 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 2980 "engines/director/lingo/lingo-gr.cpp"
+#line 2992 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
 #line 612 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 2986 "engines/director/lingo/lingo-gr.cpp"
+#line 2998 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
 #line 613 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 2992 "engines/director/lingo/lingo-gr.cpp"
+#line 3004 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151:
 #line 616 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 2998 "engines/director/lingo/lingo-gr.cpp"
+#line 3010 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 152:
 #line 617 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 3004 "engines/director/lingo/lingo-gr.cpp"
+#line 3016 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
 #line 619 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 3010 "engines/director/lingo/lingo-gr.cpp"
+#line 3022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
@@ -3018,91 +3030,91 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3022 "engines/director/lingo/lingo-gr.cpp"
+#line 3034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
 #line 629 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3028 "engines/director/lingo/lingo-gr.cpp"
+#line 3040 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
 #line 630 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3034 "engines/director/lingo/lingo-gr.cpp"
+#line 3046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
 #line 631 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3040 "engines/director/lingo/lingo-gr.cpp"
+#line 3052 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
 #line 633 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3046 "engines/director/lingo/lingo-gr.cpp"
+#line 3058 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
 #line 634 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3052 "engines/director/lingo/lingo-gr.cpp"
+#line 3064 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
 #line 636 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 3058 "engines/director/lingo/lingo-gr.cpp"
+#line 3070 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
 #line 638 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3064 "engines/director/lingo/lingo-gr.cpp"
+#line 3076 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
 #line 639 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3070 "engines/director/lingo/lingo-gr.cpp"
+#line 3082 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
 #line 640 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3076 "engines/director/lingo/lingo-gr.cpp"
+#line 3088 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
 #line 641 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3082 "engines/director/lingo/lingo-gr.cpp"
+#line 3094 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
 #line 643 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3088 "engines/director/lingo/lingo-gr.cpp"
+#line 3100 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
 #line 644 "engines/director/lingo/lingo-gr.y"
-                                    { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3094 "engines/director/lingo/lingo-gr.cpp"
+                                { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3106 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
 #line 646 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3100 "engines/director/lingo/lingo-gr.cpp"
+#line 3112 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
 #line 647 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3106 "engines/director/lingo/lingo-gr.cpp"
+#line 3118 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
@@ -3111,7 +3123,7 @@ yyreduce:
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3115 "engines/director/lingo/lingo-gr.cpp"
+#line 3127 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170:
@@ -3120,11 +3132,11 @@ yyreduce:
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3124 "engines/director/lingo/lingo-gr.cpp"
+#line 3136 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3128 "engines/director/lingo/lingo-gr.cpp"
+#line 3140 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 5133d90..78551e6 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -640,8 +640,8 @@ valuelist:	/* nothing */	{ $$ = g_lingo->code2(LC::c_arraypush, 0); }
 	| linearlist { $$ = g_lingo->code1(LC::c_arraypush); $$ = g_lingo->codeInt($linearlist); }
 	| proplist	 { $$ = g_lingo->code1(LC::c_proparraypush); $$ = g_lingo->codeInt($proplist); }
 
-linearlist: simpleexpr			{ $$ = 1; }
-	| linearlist ',' simpleexpr { $$ = $1 + 1; }
+linearlist: expr			{ $$ = 1; }
+	| linearlist ',' expr	{ $$ = $1 + 1; }
 
 proplist:  proppair			{ $$ = 1; }
 	| proplist ',' proppair	{ $$ = $1 + 1; }


Commit: f41de8e74a7f64d0f2e9f180340e831d6306d25b
    https://github.com/scummvm/scummvm/commit/f41de8e74a7f64d0f2e9f180340e831d6306d25b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T13:27:39+01:00

Commit Message:
DIRECTOR: LINGO: Added test for initializing arrays with expressions

Changed paths:
  R engines/director/lingo/tests/arrays.lingo
    engines/director/lingo/tests/lists.lingo


diff --git a/engines/director/lingo/tests/arrays.lingo b/engines/director/lingo/tests/arrays.lingo
deleted file mode 100644
index 2d1c9ef..0000000
--- a/engines/director/lingo/tests/arrays.lingo
+++ /dev/null
@@ -1,2 +0,0 @@
-set a to [1, 2, 3]
-put a
diff --git a/engines/director/lingo/tests/lists.lingo b/engines/director/lingo/tests/lists.lingo
index 998af9e..0634e54 100644
--- a/engines/director/lingo/tests/lists.lingo
+++ b/engines/director/lingo/tests/lists.lingo
@@ -3,3 +3,8 @@ set y = [:]
 set machinery = [#gears:6, #balls:3, #ramps:8]
 set nested = [1, 2, [3, 4], 5]
 set gList = ["car":1, "boat": 20]
+
+set a to [1, 2, 3]
+put a
+
+set gList = [point(70, 190), point(217, 66), point(364, 185)]


Commit: 990c2736f9237f8a84a37d4b040daa3d13f986a8
    https://github.com/scummvm/scummvm/commit/990c2736f9237f8a84a37d4b040daa3d13f986a8
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T13:32:33+01:00

Commit Message:
DIRECTOR: JANOTORIAL: Whitespace fixes

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 2248558..693b2fa 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -634,21 +634,21 @@ static const yytype_int16 yyrline[] =
        0,   135,   135,   136,   137,   139,   140,   141,   143,   149,
      152,   153,   154,   160,   167,   173,   180,   186,   193,   203,
      210,   211,   212,   214,   215,   216,   217,   219,   220,   225,
-     236,   253,   265,   268,   273,   277,   282,   286,   296,   307,
-     308,   310,   317,   327,   338,   340,   346,   352,   359,   361,
-     363,   364,   365,   367,   373,   376,   379,   383,   387,   391,
-     393,   394,   395,   398,   401,   404,   412,   418,   423,   424,
-     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
-     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
-     445,   446,   448,   449,   450,   451,   452,   453,   454,   455,
-     457,   460,   462,   463,   464,   465,   466,   467,   467,   468,
-     468,   469,   470,   473,   476,   477,   479,   483,   488,   492,
-     497,   501,   513,   514,   515,   516,   520,   524,   529,   530,
-     532,   533,   537,   541,   545,   545,   575,   575,   575,   582,
-     583,   583,   590,   600,   608,   608,   610,   611,   612,   613,
-     615,   616,   617,   619,   621,   629,   630,   631,   633,   634,
-     636,   638,   639,   640,   641,   643,   644,   646,   647,   649,
-     653
+     236,   253,   265,   267,   272,   276,   281,   285,   295,   306,
+     307,   309,   316,   326,   337,   339,   345,   351,   358,   360,
+     362,   363,   364,   366,   372,   375,   378,   382,   386,   390,
+     392,   393,   394,   397,   400,   403,   411,   417,   422,   423,
+     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
+     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
+     444,   445,   447,   448,   449,   450,   451,   452,   453,   454,
+     456,   459,   461,   462,   463,   464,   465,   466,   466,   467,
+     467,   468,   469,   472,   475,   476,   478,   482,   487,   491,
+     496,   500,   512,   513,   514,   515,   519,   523,   528,   529,
+     531,   532,   536,   540,   544,   544,   574,   574,   574,   581,
+     582,   582,   589,   599,   607,   607,   609,   610,   611,   612,
+     614,   615,   616,   618,   620,   628,   629,   630,   632,   633,
+     635,   637,   638,   639,   640,   642,   643,   645,   646,   648,
+     652
 };
 #endif
 
@@ -2199,49 +2199,48 @@ yyreduce:
   case 32:
 #line 265 "engines/director/lingo/lingo-gr.y"
                         {
-		g_lingo->code1(LC::c_nextRepeat);
-	}
-#line 2205 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->code1(LC::c_nextRepeat); }
+#line 2204 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
-#line 268 "engines/director/lingo/lingo-gr.y"
+#line 267 "engines/director/lingo/lingo-gr.y"
                                       {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2215 "engines/director/lingo/lingo-gr.cpp"
+#line 2214 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
-#line 273 "engines/director/lingo/lingo-gr.y"
+#line 272 "engines/director/lingo/lingo-gr.y"
                                                           {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2224 "engines/director/lingo/lingo-gr.cpp"
+#line 2223 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
-#line 277 "engines/director/lingo/lingo-gr.y"
+#line 276 "engines/director/lingo/lingo-gr.y"
                                                     {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2233 "engines/director/lingo/lingo-gr.cpp"
+#line 2232 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
-#line 282 "engines/director/lingo/lingo-gr.y"
+#line 281 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2241 "engines/director/lingo/lingo-gr.cpp"
+#line 2240 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
-#line 286 "engines/director/lingo/lingo-gr.y"
+#line 285 "engines/director/lingo/lingo-gr.y"
                                                                                        {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-6].code) - (yyvsp[-8].code));
@@ -2252,11 +2251,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2256 "engines/director/lingo/lingo-gr.cpp"
+#line 2255 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
-#line 296 "engines/director/lingo/lingo-gr.y"
+#line 295 "engines/director/lingo/lingo-gr.y"
                                                                                                               {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-9].code) - (yyvsp[-11].code));
@@ -2267,22 +2266,22 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2271 "engines/director/lingo/lingo-gr.cpp"
+#line 2270 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
-#line 310 "engines/director/lingo/lingo-gr.y"
+#line 309 "engines/director/lingo/lingo-gr.y"
                                                         {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[-3].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2282 "engines/director/lingo/lingo-gr.cpp"
+#line 2281 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
-#line 317 "engines/director/lingo/lingo-gr.y"
+#line 316 "engines/director/lingo/lingo-gr.y"
                                                                                                          {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-8].code) - (yyvsp[-10].code));
@@ -2293,11 +2292,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2297 "engines/director/lingo/lingo-gr.cpp"
+#line 2296 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
-#line 327 "engines/director/lingo/lingo-gr.y"
+#line 326 "engines/director/lingo/lingo-gr.y"
                                                                    {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-4].code) - (yyvsp[-6].code));
@@ -2308,149 +2307,149 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2312 "engines/director/lingo/lingo-gr.cpp"
+#line 2311 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
-#line 338 "engines/director/lingo/lingo-gr.y"
+#line 337 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2318 "engines/director/lingo/lingo-gr.cpp"
+#line 2317 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
-#line 340 "engines/director/lingo/lingo-gr.y"
+#line 339 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2328 "engines/director/lingo/lingo-gr.cpp"
+#line 2327 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
-#line 346 "engines/director/lingo/lingo-gr.y"
+#line 345 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); }
-#line 2338 "engines/director/lingo/lingo-gr.cpp"
+#line 2337 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
-#line 352 "engines/director/lingo/lingo-gr.y"
+#line 351 "engines/director/lingo/lingo-gr.y"
                                         {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
-#line 2349 "engines/director/lingo/lingo-gr.cpp"
+#line 2348 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
-#line 359 "engines/director/lingo/lingo-gr.y"
+#line 358 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2355 "engines/director/lingo/lingo-gr.cpp"
+#line 2354 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
-#line 361 "engines/director/lingo/lingo-gr.y"
+#line 360 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2361 "engines/director/lingo/lingo-gr.cpp"
+#line 2360 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
-#line 363 "engines/director/lingo/lingo-gr.y"
+#line 362 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2367 "engines/director/lingo/lingo-gr.cpp"
+#line 2366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
-#line 367 "engines/director/lingo/lingo-gr.y"
+#line 366 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_whencode);
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2377 "engines/director/lingo/lingo-gr.cpp"
+#line 2376 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54:
-#line 373 "engines/director/lingo/lingo-gr.y"
+#line 372 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2385 "engines/director/lingo/lingo-gr.cpp"
+#line 2384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
-#line 376 "engines/director/lingo/lingo-gr.y"
+#line 375 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2393 "engines/director/lingo/lingo-gr.cpp"
+#line 2392 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
-#line 379 "engines/director/lingo/lingo-gr.y"
+#line 378 "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 2402 "engines/director/lingo/lingo-gr.cpp"
+#line 2401 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
-#line 383 "engines/director/lingo/lingo-gr.y"
+#line 382 "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 2411 "engines/director/lingo/lingo-gr.cpp"
+#line 2410 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
-#line 387 "engines/director/lingo/lingo-gr.y"
+#line 386 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2420 "engines/director/lingo/lingo-gr.cpp"
+#line 2419 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
-#line 393 "engines/director/lingo/lingo-gr.y"
+#line 392 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2426 "engines/director/lingo/lingo-gr.cpp"
+#line 2425 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62:
-#line 395 "engines/director/lingo/lingo-gr.y"
+#line 394 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2434 "engines/director/lingo/lingo-gr.cpp"
+#line 2433 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63:
-#line 398 "engines/director/lingo/lingo-gr.y"
+#line 397 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2442 "engines/director/lingo/lingo-gr.cpp"
+#line 2441 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64:
-#line 401 "engines/director/lingo/lingo-gr.y"
+#line 400 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2450 "engines/director/lingo/lingo-gr.cpp"
+#line 2449 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 65:
-#line 404 "engines/director/lingo/lingo-gr.y"
+#line 403 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2459,489 +2458,489 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2463 "engines/director/lingo/lingo-gr.cpp"
+#line 2462 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
-#line 412 "engines/director/lingo/lingo-gr.y"
+#line 411 "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 2474 "engines/director/lingo/lingo-gr.cpp"
+#line 2473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67:
-#line 418 "engines/director/lingo/lingo-gr.y"
+#line 417 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2484 "engines/director/lingo/lingo-gr.cpp"
+#line 2483 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
-#line 424 "engines/director/lingo/lingo-gr.y"
+#line 423 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2490 "engines/director/lingo/lingo-gr.cpp"
+#line 2489 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70:
-#line 425 "engines/director/lingo/lingo-gr.y"
+#line 424 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2496 "engines/director/lingo/lingo-gr.cpp"
+#line 2495 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
-#line 426 "engines/director/lingo/lingo-gr.y"
+#line 425 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2502 "engines/director/lingo/lingo-gr.cpp"
+#line 2501 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
-#line 427 "engines/director/lingo/lingo-gr.y"
+#line 426 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2508 "engines/director/lingo/lingo-gr.cpp"
+#line 2507 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73:
-#line 428 "engines/director/lingo/lingo-gr.y"
+#line 427 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2514 "engines/director/lingo/lingo-gr.cpp"
+#line 2513 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
-#line 429 "engines/director/lingo/lingo-gr.y"
+#line 428 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2520 "engines/director/lingo/lingo-gr.cpp"
+#line 2519 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
-#line 430 "engines/director/lingo/lingo-gr.y"
+#line 429 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2526 "engines/director/lingo/lingo-gr.cpp"
+#line 2525 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
-#line 431 "engines/director/lingo/lingo-gr.y"
+#line 430 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2532 "engines/director/lingo/lingo-gr.cpp"
+#line 2531 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
-#line 432 "engines/director/lingo/lingo-gr.y"
+#line 431 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2538 "engines/director/lingo/lingo-gr.cpp"
+#line 2537 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
-#line 433 "engines/director/lingo/lingo-gr.y"
+#line 432 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2544 "engines/director/lingo/lingo-gr.cpp"
+#line 2543 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
-#line 434 "engines/director/lingo/lingo-gr.y"
+#line 433 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2550 "engines/director/lingo/lingo-gr.cpp"
+#line 2549 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
-#line 435 "engines/director/lingo/lingo-gr.y"
+#line 434 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2556 "engines/director/lingo/lingo-gr.cpp"
+#line 2555 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
-#line 436 "engines/director/lingo/lingo-gr.y"
+#line 435 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2562 "engines/director/lingo/lingo-gr.cpp"
+#line 2561 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
-#line 437 "engines/director/lingo/lingo-gr.y"
+#line 436 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2568 "engines/director/lingo/lingo-gr.cpp"
+#line 2567 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
-#line 438 "engines/director/lingo/lingo-gr.y"
+#line 437 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2574 "engines/director/lingo/lingo-gr.cpp"
+#line 2573 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
-#line 439 "engines/director/lingo/lingo-gr.y"
+#line 438 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2580 "engines/director/lingo/lingo-gr.cpp"
+#line 2579 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
-#line 440 "engines/director/lingo/lingo-gr.y"
+#line 439 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2586 "engines/director/lingo/lingo-gr.cpp"
+#line 2585 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
-#line 441 "engines/director/lingo/lingo-gr.y"
+#line 440 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2592 "engines/director/lingo/lingo-gr.cpp"
+#line 2591 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
-#line 442 "engines/director/lingo/lingo-gr.y"
+#line 441 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); }
-#line 2598 "engines/director/lingo/lingo-gr.cpp"
+#line 2597 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
-#line 443 "engines/director/lingo/lingo-gr.y"
+#line 442 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2604 "engines/director/lingo/lingo-gr.cpp"
+#line 2603 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
-#line 444 "engines/director/lingo/lingo-gr.y"
+#line 443 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2610 "engines/director/lingo/lingo-gr.cpp"
+#line 2609 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
-#line 445 "engines/director/lingo/lingo-gr.y"
+#line 444 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2616 "engines/director/lingo/lingo-gr.cpp"
+#line 2615 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
-#line 446 "engines/director/lingo/lingo-gr.y"
+#line 445 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2622 "engines/director/lingo/lingo-gr.cpp"
+#line 2621 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
-#line 448 "engines/director/lingo/lingo-gr.y"
+#line 447 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2628 "engines/director/lingo/lingo-gr.cpp"
+#line 2627 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
-#line 449 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2634 "engines/director/lingo/lingo-gr.cpp"
+#line 2633 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
-#line 450 "engines/director/lingo/lingo-gr.y"
+#line 449 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2640 "engines/director/lingo/lingo-gr.cpp"
+#line 2639 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
-#line 451 "engines/director/lingo/lingo-gr.y"
+#line 450 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2646 "engines/director/lingo/lingo-gr.cpp"
+#line 2645 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
-#line 452 "engines/director/lingo/lingo-gr.y"
+#line 451 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2652 "engines/director/lingo/lingo-gr.cpp"
+#line 2651 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
-#line 453 "engines/director/lingo/lingo-gr.y"
+#line 452 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2658 "engines/director/lingo/lingo-gr.cpp"
+#line 2657 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
-#line 454 "engines/director/lingo/lingo-gr.y"
+#line 453 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2664 "engines/director/lingo/lingo-gr.cpp"
+#line 2663 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
-#line 455 "engines/director/lingo/lingo-gr.y"
+#line 454 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2670 "engines/director/lingo/lingo-gr.cpp"
+#line 2669 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
-#line 457 "engines/director/lingo/lingo-gr.y"
+#line 456 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2678 "engines/director/lingo/lingo-gr.cpp"
+#line 2677 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
-#line 462 "engines/director/lingo/lingo-gr.y"
+#line 461 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2684 "engines/director/lingo/lingo-gr.cpp"
+#line 2683 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
-#line 465 "engines/director/lingo/lingo-gr.y"
+#line 464 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2690 "engines/director/lingo/lingo-gr.cpp"
+#line 2689 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
-#line 466 "engines/director/lingo/lingo-gr.y"
+#line 465 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 2696 "engines/director/lingo/lingo-gr.cpp"
+#line 2695 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
-#line 467 "engines/director/lingo/lingo-gr.y"
+#line 466 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2702 "engines/director/lingo/lingo-gr.cpp"
+#line 2701 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
-#line 467 "engines/director/lingo/lingo-gr.y"
+#line 466 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 2708 "engines/director/lingo/lingo-gr.cpp"
+#line 2707 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
-#line 468 "engines/director/lingo/lingo-gr.y"
+#line 467 "engines/director/lingo/lingo-gr.y"
                     { g_lingo->_indef = kStateInArgs; }
-#line 2714 "engines/director/lingo/lingo-gr.cpp"
+#line 2713 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
-#line 468 "engines/director/lingo/lingo-gr.y"
+#line 467 "engines/director/lingo/lingo-gr.y"
                                                                      { g_lingo->_indef = kStateNone; }
-#line 2720 "engines/director/lingo/lingo-gr.cpp"
+#line 2719 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
-#line 470 "engines/director/lingo/lingo-gr.y"
+#line 469 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2728 "engines/director/lingo/lingo-gr.cpp"
+#line 2727 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
-#line 473 "engines/director/lingo/lingo-gr.y"
+#line 472 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2736 "engines/director/lingo/lingo-gr.cpp"
+#line 2735 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114:
-#line 476 "engines/director/lingo/lingo-gr.y"
+#line 475 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 2742 "engines/director/lingo/lingo-gr.cpp"
+#line 2741 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
-#line 477 "engines/director/lingo/lingo-gr.y"
+#line 476 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 2748 "engines/director/lingo/lingo-gr.cpp"
+#line 2747 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
-#line 479 "engines/director/lingo/lingo-gr.y"
+#line 478 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2757 "engines/director/lingo/lingo-gr.cpp"
+#line 2756 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117:
-#line 483 "engines/director/lingo/lingo-gr.y"
+#line 482 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2766 "engines/director/lingo/lingo-gr.cpp"
+#line 2765 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
-#line 488 "engines/director/lingo/lingo-gr.y"
+#line 487 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2775 "engines/director/lingo/lingo-gr.cpp"
+#line 2774 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
-#line 492 "engines/director/lingo/lingo-gr.y"
+#line 491 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2784 "engines/director/lingo/lingo-gr.cpp"
+#line 2783 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
-#line 497 "engines/director/lingo/lingo-gr.y"
+#line 496 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2793 "engines/director/lingo/lingo-gr.cpp"
+#line 2792 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
-#line 501 "engines/director/lingo/lingo-gr.y"
+#line 500 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2802 "engines/director/lingo/lingo-gr.cpp"
+#line 2801 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122:
-#line 513 "engines/director/lingo/lingo-gr.y"
+#line 512 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 2808 "engines/director/lingo/lingo-gr.cpp"
+#line 2807 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123:
-#line 514 "engines/director/lingo/lingo-gr.y"
+#line 513 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 2814 "engines/director/lingo/lingo-gr.cpp"
+#line 2813 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
-#line 515 "engines/director/lingo/lingo-gr.y"
+#line 514 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 2820 "engines/director/lingo/lingo-gr.cpp"
+#line 2819 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
-#line 516 "engines/director/lingo/lingo-gr.y"
+#line 515 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 2829 "engines/director/lingo/lingo-gr.cpp"
+#line 2828 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
-#line 520 "engines/director/lingo/lingo-gr.y"
+#line 519 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 2838 "engines/director/lingo/lingo-gr.cpp"
+#line 2837 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
-#line 524 "engines/director/lingo/lingo-gr.y"
+#line 523 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 2847 "engines/director/lingo/lingo-gr.cpp"
+#line 2846 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
-#line 532 "engines/director/lingo/lingo-gr.y"
+#line 531 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_playdone); }
-#line 2853 "engines/director/lingo/lingo-gr.cpp"
+#line 2852 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
-#line 533 "engines/director/lingo/lingo-gr.y"
+#line 532 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 2862 "engines/director/lingo/lingo-gr.cpp"
+#line 2861 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
-#line 537 "engines/director/lingo/lingo-gr.y"
+#line 536 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 2871 "engines/director/lingo/lingo-gr.cpp"
+#line 2870 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133:
-#line 541 "engines/director/lingo/lingo-gr.y"
+#line 540 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 2880 "engines/director/lingo/lingo-gr.cpp"
+#line 2879 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
-#line 545 "engines/director/lingo/lingo-gr.y"
+#line 544 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 2886 "engines/director/lingo/lingo-gr.cpp"
+#line 2885 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
-#line 545 "engines/director/lingo/lingo-gr.y"
+#line 544 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 2895 "engines/director/lingo/lingo-gr.cpp"
+#line 2894 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
-#line 575 "engines/director/lingo/lingo-gr.y"
+#line 574 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 2901 "engines/director/lingo/lingo-gr.cpp"
+#line 2900 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
-#line 575 "engines/director/lingo/lingo-gr.y"
+#line 574 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 2907 "engines/director/lingo/lingo-gr.cpp"
+#line 2906 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
-#line 576 "engines/director/lingo/lingo-gr.y"
+#line 575 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2918 "engines/director/lingo/lingo-gr.cpp"
+#line 2917 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
-#line 582 "engines/director/lingo/lingo-gr.y"
+#line 581 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 2924 "engines/director/lingo/lingo-gr.cpp"
+#line 2923 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140:
-#line 583 "engines/director/lingo/lingo-gr.y"
+#line 582 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2930 "engines/director/lingo/lingo-gr.cpp"
+#line 2929 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
-#line 584 "engines/director/lingo/lingo-gr.y"
+#line 583 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2941 "engines/director/lingo/lingo-gr.cpp"
+#line 2940 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
-#line 590 "engines/director/lingo/lingo-gr.y"
+#line 589 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -2952,11 +2951,11 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 2956 "engines/director/lingo/lingo-gr.cpp"
+#line 2955 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
-#line 600 "engines/director/lingo/lingo-gr.y"
+#line 599 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -2964,65 +2963,65 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 2968 "engines/director/lingo/lingo-gr.cpp"
+#line 2967 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
-#line 608 "engines/director/lingo/lingo-gr.y"
+#line 607 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 2974 "engines/director/lingo/lingo-gr.cpp"
+#line 2973 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
-#line 608 "engines/director/lingo/lingo-gr.y"
+#line 607 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 2980 "engines/director/lingo/lingo-gr.cpp"
+#line 2979 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
-#line 610 "engines/director/lingo/lingo-gr.y"
+#line 609 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 2986 "engines/director/lingo/lingo-gr.cpp"
+#line 2985 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
-#line 611 "engines/director/lingo/lingo-gr.y"
+#line 610 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 2992 "engines/director/lingo/lingo-gr.cpp"
+#line 2991 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
-#line 612 "engines/director/lingo/lingo-gr.y"
+#line 611 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 2998 "engines/director/lingo/lingo-gr.cpp"
+#line 2997 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
-#line 613 "engines/director/lingo/lingo-gr.y"
+#line 612 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 3004 "engines/director/lingo/lingo-gr.cpp"
+#line 3003 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151:
-#line 616 "engines/director/lingo/lingo-gr.y"
+#line 615 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3010 "engines/director/lingo/lingo-gr.cpp"
+#line 3009 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 152:
-#line 617 "engines/director/lingo/lingo-gr.y"
+#line 616 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 3016 "engines/director/lingo/lingo-gr.cpp"
+#line 3015 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
-#line 619 "engines/director/lingo/lingo-gr.y"
+#line 618 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 3022 "engines/director/lingo/lingo-gr.cpp"
+#line 3021 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
-#line 621 "engines/director/lingo/lingo-gr.y"
+#line 620 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3030,113 +3029,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3034 "engines/director/lingo/lingo-gr.cpp"
+#line 3033 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
-#line 629 "engines/director/lingo/lingo-gr.y"
+#line 628 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3040 "engines/director/lingo/lingo-gr.cpp"
+#line 3039 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
-#line 630 "engines/director/lingo/lingo-gr.y"
+#line 629 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3046 "engines/director/lingo/lingo-gr.cpp"
+#line 3045 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
-#line 631 "engines/director/lingo/lingo-gr.y"
+#line 630 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3052 "engines/director/lingo/lingo-gr.cpp"
+#line 3051 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
-#line 633 "engines/director/lingo/lingo-gr.y"
+#line 632 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3058 "engines/director/lingo/lingo-gr.cpp"
+#line 3057 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
-#line 634 "engines/director/lingo/lingo-gr.y"
+#line 633 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3064 "engines/director/lingo/lingo-gr.cpp"
+#line 3063 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
-#line 636 "engines/director/lingo/lingo-gr.y"
+#line 635 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 3070 "engines/director/lingo/lingo-gr.cpp"
+#line 3069 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
-#line 638 "engines/director/lingo/lingo-gr.y"
+#line 637 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3076 "engines/director/lingo/lingo-gr.cpp"
+#line 3075 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
-#line 639 "engines/director/lingo/lingo-gr.y"
+#line 638 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3082 "engines/director/lingo/lingo-gr.cpp"
+#line 3081 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
-#line 640 "engines/director/lingo/lingo-gr.y"
+#line 639 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3088 "engines/director/lingo/lingo-gr.cpp"
+#line 3087 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
-#line 641 "engines/director/lingo/lingo-gr.y"
+#line 640 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3094 "engines/director/lingo/lingo-gr.cpp"
+#line 3093 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
-#line 643 "engines/director/lingo/lingo-gr.y"
+#line 642 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3100 "engines/director/lingo/lingo-gr.cpp"
+#line 3099 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
-#line 644 "engines/director/lingo/lingo-gr.y"
+#line 643 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3106 "engines/director/lingo/lingo-gr.cpp"
+#line 3105 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
-#line 646 "engines/director/lingo/lingo-gr.y"
+#line 645 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3112 "engines/director/lingo/lingo-gr.cpp"
+#line 3111 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
-#line 647 "engines/director/lingo/lingo-gr.y"
+#line 646 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3118 "engines/director/lingo/lingo-gr.cpp"
+#line 3117 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
-#line 649 "engines/director/lingo/lingo-gr.y"
+#line 648 "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 3127 "engines/director/lingo/lingo-gr.cpp"
+#line 3126 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170:
-#line 653 "engines/director/lingo/lingo-gr.y"
+#line 652 "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 3136 "engines/director/lingo/lingo-gr.cpp"
+#line 3135 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3140 "engines/director/lingo/lingo-gr.cpp"
+#line 3139 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3368,5 +3367,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 659 "engines/director/lingo/lingo-gr.y"
+#line 658 "engines/director/lingo/lingo-gr.y"
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 78551e6..77e84ca 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -263,8 +263,7 @@ stmt: stmtoneliner
 		(*g_lingo->_currentScript)[$repeatwith + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[$repeatwith + 5] = end; }	/* end, if cond fails */
 	| tNEXT tREPEAT {
-		g_lingo->code1(LC::c_nextRepeat);
-	}
+		g_lingo->code1(LC::c_nextRepeat); }
 	| when stmtonelinerwithif end {
 		inst end = 0;
 		WRITE_UINT32(&end, $end - $when);


Commit: 388963f8448be8592f680c635430f0466a3df8ff
    https://github.com/scummvm/scummvm/commit/388963f8448be8592f680c635430f0466a3df8ff
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T13:43:58+01:00

Commit Message:
DIRECTOR: LINGO: Implement parsing and stub for 'repeat with...in <list>'

Changed paths:
    engines/director/lingo/lingo-code.cpp
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.h
    engines/director/lingo/lingo-gr.y
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l


diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 9cceb1d..06d0027 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -1004,6 +1004,12 @@ void LC::c_repeatwithcode(void) {
 	Common::String countername((char *)&(*g_lingo->_currentScript)[savepc + 5]);
 	Symbol *counter = g_lingo->lookupVar(countername.c_str());
 
+	if (finish == 0 && inc == 0) {
+		warning("STUB: 'repeat with' over list ");
+		g_lingo->_pc = end + savepc - 1; /* next stmt */
+		return;
+	}
+
 	if (counter->type == CASTREF) {
 		error("Cast ref used as index: %s", countername.c_str());
 	}
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 693b2fa..ee221a3 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -179,53 +179,54 @@ extern int yydebug;
     tGLOBAL = 289,
     tGO = 290,
     tIF = 291,
-    tINTO = 292,
-    tLOOP = 293,
-    tMACRO = 294,
-    tMOVIE = 295,
-    tNEXT = 296,
-    tOF = 297,
-    tPREVIOUS = 298,
-    tPUT = 299,
-    tREPEAT = 300,
-    tSET = 301,
-    tTHEN = 302,
-    tTO = 303,
-    tWHEN = 304,
-    tWITH = 305,
-    tWHILE = 306,
-    tNLELSE = 307,
-    tFACTORY = 308,
-    tOPEN = 309,
-    tPLAY = 310,
-    tDONE = 311,
-    tINSTANCE = 312,
-    tGE = 313,
-    tLE = 314,
-    tEQ = 315,
-    tNEQ = 316,
-    tAND = 317,
-    tOR = 318,
-    tNOT = 319,
-    tMOD = 320,
-    tAFTER = 321,
-    tBEFORE = 322,
-    tCONCAT = 323,
-    tCONTAINS = 324,
-    tSTARTS = 325,
-    tCHAR = 326,
-    tITEM = 327,
-    tLINE = 328,
-    tWORD = 329,
-    tSPRITE = 330,
-    tINTERSECTS = 331,
-    tWITHIN = 332,
-    tTELL = 333,
-    tPROPERTY = 334,
-    tON = 335,
-    tENDIF = 336,
-    tENDREPEAT = 337,
-    tENDTELL = 338
+    tIN = 292,
+    tINTO = 293,
+    tLOOP = 294,
+    tMACRO = 295,
+    tMOVIE = 296,
+    tNEXT = 297,
+    tOF = 298,
+    tPREVIOUS = 299,
+    tPUT = 300,
+    tREPEAT = 301,
+    tSET = 302,
+    tTHEN = 303,
+    tTO = 304,
+    tWHEN = 305,
+    tWITH = 306,
+    tWHILE = 307,
+    tNLELSE = 308,
+    tFACTORY = 309,
+    tOPEN = 310,
+    tPLAY = 311,
+    tDONE = 312,
+    tINSTANCE = 313,
+    tGE = 314,
+    tLE = 315,
+    tEQ = 316,
+    tNEQ = 317,
+    tAND = 318,
+    tOR = 319,
+    tNOT = 320,
+    tMOD = 321,
+    tAFTER = 322,
+    tBEFORE = 323,
+    tCONCAT = 324,
+    tCONTAINS = 325,
+    tSTARTS = 326,
+    tCHAR = 327,
+    tITEM = 328,
+    tLINE = 329,
+    tWORD = 330,
+    tSPRITE = 331,
+    tINTERSECTS = 332,
+    tWITHIN = 333,
+    tTELL = 334,
+    tPROPERTY = 335,
+    tON = 336,
+    tENDIF = 337,
+    tENDREPEAT = 338,
+    tENDTELL = 339
   };
 #endif
 
@@ -248,7 +249,7 @@ union YYSTYPE
 		int oe;
 	} objectfield;
 
-#line 252 "engines/director/lingo/lingo-gr.cpp"
+#line 253 "engines/director/lingo/lingo-gr.cpp"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -567,19 +568,19 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  126
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1658
+#define YYLAST   1685
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  99
+#define YYNTOKENS  100
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  51
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  170
+#define YYNRULES  171
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  363
+#define YYNSTATES  369
 
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   338
+#define YYMAXUTOK   339
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -592,15 +593,15 @@ union yyalloc
 static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      92,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      93,     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,    91,    86,     2,
-      93,    94,    89,    87,    95,    88,     2,    90,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    98,     2,
-      84,     2,    85,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    92,    87,     2,
+      94,    95,    90,    88,    96,    89,     2,    91,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    99,     2,
+      85,     2,    86,     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,    96,     2,    97,     2,     2,     2,     2,     2,     2,
+       2,    97,     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,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -624,7 +625,7 @@ static const yytype_int8 yytranslate[] =
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       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
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84
 };
 
 #if YYDEBUG
@@ -634,21 +635,21 @@ static const yytype_int16 yyrline[] =
        0,   135,   135,   136,   137,   139,   140,   141,   143,   149,
      152,   153,   154,   160,   167,   173,   180,   186,   193,   203,
      210,   211,   212,   214,   215,   216,   217,   219,   220,   225,
-     236,   253,   265,   267,   272,   276,   281,   285,   295,   306,
-     307,   309,   316,   326,   337,   339,   345,   351,   358,   360,
-     362,   363,   364,   366,   372,   375,   378,   382,   386,   390,
-     392,   393,   394,   397,   400,   403,   411,   417,   422,   423,
-     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
+     236,   253,   265,   276,   278,   283,   287,   292,   296,   306,
+     317,   318,   320,   327,   337,   348,   350,   356,   362,   369,
+     371,   373,   374,   375,   377,   383,   386,   389,   393,   397,
+     401,   403,   404,   405,   408,   411,   414,   422,   428,   433,
      434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
-     444,   445,   447,   448,   449,   450,   451,   452,   453,   454,
-     456,   459,   461,   462,   463,   464,   465,   466,   466,   467,
-     467,   468,   469,   472,   475,   476,   478,   482,   487,   491,
-     496,   500,   512,   513,   514,   515,   519,   523,   528,   529,
-     531,   532,   536,   540,   544,   544,   574,   574,   574,   581,
-     582,   582,   589,   599,   607,   607,   609,   610,   611,   612,
-     614,   615,   616,   618,   620,   628,   629,   630,   632,   633,
-     635,   637,   638,   639,   640,   642,   643,   645,   646,   648,
-     652
+     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
+     454,   455,   456,   458,   459,   460,   461,   462,   463,   464,
+     465,   467,   470,   472,   473,   474,   475,   476,   477,   477,
+     478,   478,   479,   480,   483,   486,   487,   489,   493,   498,
+     502,   507,   511,   523,   524,   525,   526,   530,   534,   539,
+     540,   542,   543,   547,   551,   555,   555,   585,   585,   585,
+     592,   593,   593,   600,   610,   618,   618,   620,   621,   622,
+     623,   625,   626,   627,   629,   631,   639,   640,   641,   643,
+     644,   646,   648,   649,   650,   651,   653,   654,   656,   657,
+     659,   663
 };
 #endif
 
@@ -662,15 +663,15 @@ static const char *const yytname[] =
   "ARGCNORET", "THEENTITY", "THEENTITYWITHID", "THEMENUITEMENTITY",
   "FLOAT", "BLTIN", "FBLTIN", "RBLTIN", "ID", "STRING", "HANDLER",
   "SYMBOL", "ENDCLAUSE", "tPLAYACCEL", "tMETHOD", "THEOBJECTFIELD",
-  "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tIF", "tINTO",
-  "tLOOP", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT",
-  "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE",
-  "tFACTORY", "tOPEN", "tPLAY", "tDONE", "tINSTANCE", "tGE", "tLE", "tEQ",
-  "tNEQ", "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT",
-  "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE",
-  "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tENDIF",
-  "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'",
-  "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
+  "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tIF", "tIN",
+  "tINTO", "tLOOP", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS",
+  "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE",
+  "tNLELSE", "tFACTORY", "tOPEN", "tPLAY", "tDONE", "tINSTANCE", "tGE",
+  "tLE", "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE",
+  "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD",
+  "tSPRITE", "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON",
+  "tENDIF", "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'",
+  "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
   "$accept", "program", "programline", "asgn", "stmtoneliner",
   "stmtonelinerwithif", "stmt", "tellstart", "ifstmt", "elseifstmtlist",
   "elseifstmt", "ifoneliner", "repeatwhile", "repeatwith", "if", "elseif",
@@ -696,8 +697,8 @@ 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,    60,    62,    38,    43,    45,    42,
-      47,    37,    10,    40,    41,    44,    91,    93,    58
+     335,   336,   337,   338,   339,    60,    62,    38,    43,    45,
+      42,    47,    37,    10,    40,    41,    44,    91,    93,    58
 };
 # endif
 
@@ -715,43 +716,43 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     307,   -82,  -269,  -269,   981,  -269,  1014,  1093,    31,  1126,
-    -269,  -269,  -269,  -269,  -269,   -26,  -269,   866,  -269,  -269,
-      10,   981,    47,   220,    18,    35,   981,   902,    55,   981,
-     981,   981,   981,   981,   981,   981,  -269,  -269,   981,   981,
-     981,   386,     7,  -269,  -269,  -269,  -269,  -269,   981,    25,
-     981,   708,  -269,  1555,  -269,  -269,  -269,  -269,  -269,  -269,
-    -269,  -269,  -269,  -269,    -2,   981,  1555,   981,  1555,    -6,
-     981,    -6,  -269,  -269,   981,  1555,    37,   981,  -269,  -269,
-      87,  -269,   981,  -269,    72,  -269,   378,  -269,   100,  -269,
-     144,   104,  -269,     0,    31,    31,    14,    80,   103,  -269,
-    1472,  -269,   378,  -269,  -269,    57,  -269,  1167,  1200,  1233,
-    1266,  1522,  1431,   131,   132,  -269,  -269,  1485,    58,    59,
-    -269,  1555,    64,    68,    70,  -269,  -269,   471,  1555,   981,
-    1555,  -269,  -269,   981,  1555,  -269,  -269,   981,   981,   981,
-     981,   981,   981,   981,   981,   981,   981,   981,   981,   981,
-     981,   981,   981,   981,   145,   981,   144,  1485,   -30,   981,
-      24,    26,   981,    -6,   145,  -269,    75,  1555,   981,  -269,
-    -269,    29,   981,   981,  -269,   981,   981,    23,   136,   981,
-     981,   981,  -269,   981,  -269,   151,   981,   981,   981,   981,
-     981,   981,   981,   981,   981,   981,  -269,  -269,  -269,    79,
-    -269,  -269,    31,    31,  -269,   981,    -5,  -269,  -269,  1555,
-     133,  -269,  1555,    27,    27,    27,    27,  1568,  1568,  -269,
-      17,    27,    27,    27,    27,    17,   -51,   -51,  -269,  -269,
-    -269,   -71,  -269,  1555,  -269,  -269,  1555,   -20,   170,  1555,
-    -269,  -269,  -269,  1555,  1555,  1555,    27,   981,   981,   171,
-    1555,    27,  1555,  1555,  -269,  1555,  1299,  1555,  1332,  1555,
-    1365,  1555,  1398,  1555,  1555,   787,  -269,   172,  -269,  -269,
-    1555,    58,    59,  -269,   629,    11,  -269,   150,   105,   176,
-     105,  -269,   145,  1555,    27,    31,   981,   981,   981,   981,
-    -269,   629,  -269,  -269,  -269,   117,   160,   981,   629,   787,
-     193,  -269,  -269,  -269,    16,   168,  1555,  1555,  1555,  1555,
-    -269,   134,  -269,   981,  1555,  -269,  -269,  -269,   550,   629,
-     105,   981,  -269,  1555,  -269,    99,   -23,   196,  -269,  1555,
-    -269,   629,  -269,  -269,  -269,   981,   138,  -269,  -269,  -269,
-     125,   629,   629,   139,  -269,  1555,  -269,   787,   200,   141,
-    -269,   629,   178,  -269,  -269,  -269,   146,  -269,   157,  -269,
-     629,  -269,  -269
+     339,   -52,  -269,  -269,  1023,  -269,  1057,  1137,    31,  1171,
+    -269,  -269,  -269,  -269,  -269,   -27,  -269,   905,  -269,  -269,
+      37,  1023,     7,   102,    29,    55,  1023,   943,    74,  1023,
+    1023,  1023,  1023,  1023,  1023,  1023,  -269,  -269,  1023,  1023,
+    1023,   419,     8,  -269,  -269,  -269,  -269,  -269,  1023,   -19,
+    1023,   745,  -269,  1581,  -269,  -269,  -269,  -269,  -269,  -269,
+    -269,  -269,  -269,  -269,    13,  1023,  1581,  1023,  1581,    16,
+    1023,    16,  -269,  -269,  1023,  1581,    18,  1023,  -269,  -269,
+      91,  -269,  1023,  -269,    75,  -269,   411,  -269,    93,  -269,
+     167,    98,  -269,   -29,    31,    31,    -1,    80,    84,  -269,
+    1498,  -269,   411,  -269,  -269,    27,  -269,  1192,  1226,  1259,
+    1292,  1548,  1457,   129,   131,  -269,  -269,  1511,    56,    58,
+    -269,  1581,    60,    64,    65,  -269,  -269,   505,  1581,  1023,
+    1023,  1581,  -269,  -269,  1023,  1581,  -269,  -269,  1023,  1023,
+    1023,  1023,  1023,  1023,  1023,  1023,  1023,  1023,  1023,  1023,
+    1023,  1023,  1023,  1023,  1023,   132,  1023,   167,  1511,    -2,
+    1023,     2,     4,  1023,    16,   132,  -269,    66,  1581,  1023,
+    -269,  -269,    17,  1023,  1023,  -269,  1023,  1023,     1,   120,
+    1023,  1023,  1023,  -269,  1023,  -269,   142,  1023,  1023,  1023,
+    1023,  1023,  1023,  1023,  1023,  1023,  1023,  -269,  -269,  -269,
+      70,  -269,  -269,    31,    31,  -269,  1023,    51,  -269,  -269,
+    1581,  1581,   119,  -269,  1581,    15,    15,    15,    15,  1594,
+    1594,  -269,    20,    15,    15,    15,    15,    20,   -26,   -26,
+    -269,  -269,  -269,   -72,  -269,  1581,  -269,  -269,  1581,   -41,
+     149,  1581,  -269,  -269,  -269,  1581,  1581,  1581,    15,  1023,
+    1023,   152,  1581,    15,  1581,  1581,  -269,  1581,  1325,  1581,
+    1358,  1581,  1391,  1581,  1424,  1581,  1581,   825,  -269,   153,
+    -269,  -269,  1581,    56,    58,  -269,   665,  -269,   -16,  -269,
+     133,    83,   160,    83,  -269,   132,  1581,    15,    31,  1023,
+    1023,  1023,  1023,  -269,   665,  -269,  -269,  -269,   110,   665,
+     145,  1023,   665,   825,   173,  -269,  -269,  -269,   -25,   150,
+    1581,  1581,  1581,  1581,  -269,   114,  -269,   123,  1023,  1581,
+    -269,  -269,  -269,   585,   665,    83,  1023,  -269,  -269,  1581,
+    -269,    48,   -15,   181,  -269,  1581,  -269,   665,  -269,  -269,
+    -269,  1023,   125,  -269,  -269,  -269,   112,   665,   665,   126,
+    -269,  1581,  -269,   825,   188,   130,  -269,   665,   164,  -269,
+    -269,  -269,   134,  -269,   135,  -269,   665,  -269,  -269
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -759,64 +760,64 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    54,    65,     0,    55,   155,   155,     0,    58,
-      57,    56,   134,   140,    67,   106,   107,     0,    46,   136,
+       0,     0,    55,    66,     0,    56,   156,   156,     0,    59,
+      58,    57,   135,   141,    68,   107,   108,     0,    47,   137,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   109,   144,     0,     0,
-       0,   161,     0,     3,    68,    27,     7,    28,     0,     0,
-       0,     0,    60,    21,   101,    61,    22,   103,   104,     6,
-      48,    20,    59,     4,    58,     0,    66,   155,   156,   113,
-     155,    63,    58,   100,   155,   158,   154,   155,    48,   105,
-       0,   122,     0,   123,     0,   124,   125,   127,     0,    32,
-     102,     0,    44,     0,     0,     0,     0,     0,     0,   139,
-     115,   130,   131,   133,   120,   111,    82,     0,     0,     0,
-       0,     0,     0,     0,     0,    87,    88,     0,    57,    56,
-     162,   165,     0,   163,   164,   167,     1,     5,    49,     0,
-      49,    49,    26,     0,    24,    25,    23,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   110,   145,     0,     0,
+       0,   162,     0,     3,    69,    27,     7,    28,     0,     0,
+       0,     0,    61,    21,   102,    62,    22,   104,   105,     6,
+      49,    20,    60,     4,    59,     0,    67,   156,   157,   114,
+     156,    64,    59,   101,   156,   159,   155,   156,    49,   106,
+       0,   123,     0,   124,     0,   125,   126,   128,     0,    33,
+     103,     0,    45,     0,     0,     0,     0,     0,     0,   140,
+     116,   131,   132,   134,   121,   112,    83,     0,     0,     0,
+       0,     0,     0,     0,     0,    88,    89,     0,    58,    57,
+     163,   166,     0,   164,   165,   168,     1,     5,    50,     0,
+       0,    50,    50,    26,     0,    24,    25,    23,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   146,   155,     0,   156,     0,     0,
-       0,     0,     0,   135,   146,   116,   108,   129,     0,   126,
-     137,     0,     0,     0,    45,     0,     0,     0,     0,     0,
-       0,     0,    53,     0,   132,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    36,    36,   118,   110,
-     145,    89,     0,     0,   160,     0,     0,     2,    50,    49,
-       0,    33,    49,    78,    79,    76,    77,    80,    81,    73,
-      84,    85,    86,    75,    74,    83,    69,    70,    71,    72,
-     147,     0,   112,   157,    62,    64,   159,     0,     0,   128,
-      48,     8,     9,    10,    11,    15,    13,     0,     0,     0,
-      14,    12,    19,   114,   121,    92,     0,    94,     0,    96,
-       0,    98,     0,    90,    91,     0,    50,     0,   170,   169,
-     166,     0,     0,   168,    49,     0,    50,     0,   153,     0,
-     153,   117,   146,    16,    17,     0,     0,     0,     0,     0,
-      49,    49,   119,    51,    52,     0,     0,     0,    49,     0,
-       0,    50,   148,    50,     0,     0,    93,    95,    97,    99,
-      35,     0,    29,     0,    49,    39,    49,   149,   143,   141,
-     153,     0,    34,    49,    50,    49,     0,   150,    50,    18,
-      50,    49,    48,    47,    40,     0,     0,    48,    43,   151,
-     142,   138,    49,     0,    50,    49,    37,     0,     0,     0,
-      30,    49,     0,    49,   152,    31,     0,    50,     0,    38,
-      49,    42,    41
+       0,     0,     0,     0,     0,   147,   156,     0,   157,     0,
+       0,     0,     0,     0,   136,   147,   117,   109,   130,     0,
+     127,   138,     0,     0,     0,    46,     0,     0,     0,     0,
+       0,     0,     0,    54,     0,   133,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    37,    37,   119,
+     111,   146,    90,     0,     0,   161,     0,     0,     2,    51,
+      50,    50,     0,    34,    50,    79,    80,    77,    78,    81,
+      82,    74,    85,    86,    87,    76,    75,    84,    70,    71,
+      72,    73,   148,     0,   113,   158,    63,    65,   160,     0,
+       0,   129,    49,     8,     9,    10,    11,    15,    13,     0,
+       0,     0,    14,    12,    19,   115,   122,    93,     0,    95,
+       0,    97,     0,    99,     0,    91,    92,     0,    51,     0,
+     171,   170,   167,     0,     0,   169,    50,    51,     0,    51,
+       0,   154,     0,   154,   118,   147,    16,    17,     0,     0,
+       0,     0,     0,    50,    50,   120,    52,    53,     0,    50,
+       0,     0,    50,     0,     0,    51,   149,    51,     0,     0,
+      94,    96,    98,   100,    36,     0,    29,     0,     0,    50,
+      40,    50,   150,   144,   142,   154,     0,    35,    32,    50,
+      51,    50,     0,   151,    51,    18,    51,    50,    49,    48,
+      41,     0,     0,    49,    44,   152,   143,   139,    50,     0,
+      51,    50,    38,     0,     0,     0,    30,    50,     0,    50,
+     153,    31,     0,    51,     0,    39,    50,    43,    42
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -269,  -269,   112,  -269,  -254,  -269,    33,    48,  -269,  -269,
-    -269,  -269,  -269,  -269,   175,  -269,   -74,   -50,  -234,  -269,
-      -7,    -4,  -269,    76,   195,  -269,  -269,  -269,  -269,  -269,
-    -269,   -18,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,
-    -158,  -269,  -268,   199,     9,  -269,  -269,  -269,  -269,  -269,
-      45
+    -269,  -269,    87,  -269,  -258,  -269,     6,    21,  -269,  -269,
+    -269,  -269,  -269,  -269,   170,  -269,   -74,   -10,   -57,  -269,
+      -7,    -4,  -269,    43,   172,  -269,  -269,  -269,  -269,  -269,
+    -269,   -17,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,
+    -158,  -269,  -268,   174,     5,  -269,  -269,  -269,  -269,  -269,
+      11
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    42,    43,    44,    45,   131,   294,   265,    47,   325,
-     334,   132,    48,    49,    50,   335,   154,   208,   274,    51,
-      52,    53,    54,    55,    56,    80,   113,   166,   199,   105,
-      57,    87,    58,    77,    59,    88,   240,    78,    60,   114,
-     231,   340,   301,    61,   161,    76,    62,   122,   123,   124,
+      -1,    42,    43,    44,    45,   132,   297,   267,    47,   331,
+     340,   133,    48,    49,    50,   341,   155,   209,   276,    51,
+      52,    53,    54,    55,    56,    80,   113,   167,   200,   105,
+      57,    87,    58,    77,    59,    88,   242,    78,    60,   114,
+     233,   346,   305,    61,   162,    76,    62,   122,   123,   124,
      125
 };
 
@@ -825,342 +826,348 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      66,    73,    68,    68,   164,    75,   237,   126,   337,   103,
-      63,   290,   303,    86,   143,    69,    71,    90,   271,    79,
-     272,   278,   100,   102,   279,   106,   107,   108,   109,   110,
-     111,   112,   291,    46,   115,   116,   117,   121,   152,   153,
-      98,   296,   298,     2,   128,   316,   130,   134,   175,     5,
-       8,   241,   328,    72,    10,    89,    11,    99,   338,   297,
-     176,   156,   179,   157,   232,   159,   157,   318,   169,   319,
-     157,   247,   280,    68,   180,   279,   158,   104,   167,   160,
-     210,   211,   143,   248,   184,   129,   163,   177,   178,   159,
-     331,   155,   143,   353,   341,   144,   342,    91,    92,   127,
-      30,    31,    32,    33,   150,   151,   152,   153,   320,   165,
-     351,   279,   168,   149,   150,   151,   152,   153,   234,   159,
-     235,   159,   170,   360,   304,   209,   174,    41,   181,   212,
-     332,   333,   162,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   222,   223,   224,   225,   226,   227,   228,   229,
-     182,    68,   185,   198,   200,   233,   202,   203,   236,   275,
-      46,   204,   277,   205,   239,   206,   282,   230,   243,   244,
-     238,   245,   246,   254,   267,   250,   251,   252,   249,   253,
-     276,   171,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   281,   285,   292,   268,   269,   299,   302,   312,
-     300,   270,   137,   138,   139,   140,   141,   142,   313,   143,
-     172,   173,   144,   145,   146,   317,   321,   322,   339,   346,
-     348,   350,   354,   355,   295,   357,   133,   359,   147,   148,
-     149,   150,   151,   152,   153,    93,    94,    95,   361,   207,
-     310,   311,    96,   283,   284,   266,   135,   242,   315,    97,
-     136,   273,     0,     0,     0,     0,     0,     0,   344,     0,
-       0,     0,     0,   347,   324,     0,   326,     0,     0,     0,
-       0,     0,     0,   330,     0,   336,     0,     0,   305,     0,
-       0,   343,   306,   307,   308,   309,     0,     0,     0,     0,
-       0,     0,   349,   314,     0,   352,     0,     0,     0,     0,
-       0,   356,     0,   358,     0,     0,     0,    -5,     1,   323,
-     362,     0,     0,     0,     0,     0,     0,   329,     0,     2,
-       0,     0,     3,     4,     0,     5,     6,     7,     8,     9,
-      10,   345,    11,     0,    12,    13,    14,     0,     0,     0,
-      15,    16,    17,    18,     0,     0,    19,     0,    20,     0,
-       0,    21,    22,    23,     0,     0,    24,     0,     0,     0,
-      25,    26,    27,     0,    28,     0,     0,     0,     0,     0,
-       0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
-      32,    33,    34,     0,     0,    35,    36,    37,     0,     0,
-       0,     0,     0,     0,    38,    39,     0,     0,     2,    -5,
-      40,     3,     4,    41,     5,     0,     7,     8,    64,   118,
-       0,   119,     0,     0,     0,    14,     0,     0,    82,     0,
-      84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      65,     0,    23,     0,     0,     0,   137,   138,   139,   140,
-     141,   142,     0,   143,     0,     0,   144,   145,   146,     0,
-      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,   147,   148,   149,   150,   151,   152,   153,     0,
-       0,     0,     0,    38,    39,     0,     0,     0,     0,    40,
-       0,     0,    41,     2,   120,     0,     3,     4,     0,     5,
-       6,     7,     8,     9,    10,     0,    11,     0,    12,    13,
-      14,     0,     0,     0,    15,    16,    17,    18,     0,     0,
-      19,     0,    20,     0,     0,    21,    22,    23,     0,     0,
-      24,     0,     0,     0,    25,    26,    27,     0,    28,     0,
-       0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
-       0,     0,    30,    31,    32,    33,    34,     0,     0,    35,
-      36,    37,     0,     0,     0,     0,     0,     0,    38,    39,
-       0,     0,     2,     0,    40,     3,     4,    41,     5,     6,
-       7,     8,     9,    10,     0,    11,   327,    12,     0,    14,
-       0,     0,     0,    15,    16,    17,    18,     0,     0,     0,
+      66,    73,    68,    68,   165,    75,    46,   239,   126,   293,
+     103,    69,    71,    86,   300,   307,   343,    90,   129,    79,
+     176,   281,   100,   102,   282,   106,   107,   108,   109,   110,
+     111,   112,   177,   301,   115,   116,   117,   121,     8,   243,
+     144,    63,   130,     2,   128,   321,   131,   135,   180,     5,
+     249,    98,   283,    72,    10,   282,    11,   334,    91,    92,
+     181,   157,   250,   158,   153,   154,   158,   344,   325,   170,
+     158,   282,   159,    68,   273,   161,   274,    99,   168,   338,
+     339,   144,   164,    89,   145,   185,   144,   178,   179,    30,
+      31,    32,    33,   234,   160,   359,   104,   236,   160,   237,
+     160,   127,   150,   151,   152,   153,   154,   156,   151,   152,
+     153,   154,   160,   166,   163,   171,   169,    93,    94,    95,
+     175,   212,   213,   186,    96,   210,   211,   308,    41,   182,
+     214,    97,   183,    46,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+     231,   199,    68,   201,   232,   203,   235,   204,   205,   238,
+     206,   207,   240,   251,   256,   241,   269,   279,   285,   245,
+     246,   284,   247,   248,   288,   295,   252,   253,   254,   304,
+     255,   303,   306,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   316,   318,   322,   270,   271,   327,   326,
+     277,   278,   272,   345,   280,   172,   328,   352,   354,   356,
+     360,   294,   363,   361,   208,   244,   365,   367,   275,   268,
+     299,   134,   302,   136,     0,   137,   138,   139,   140,   141,
+     142,   143,     0,   144,   173,   174,   145,   146,   147,     0,
+       0,     0,     0,     0,     0,   286,   287,     0,   323,     0,
+     324,     0,   148,   149,   150,   151,   152,   153,   154,     0,
+       0,     0,     0,     0,   350,     0,   298,     0,     0,   353,
+       0,     0,     0,   337,     0,     0,     0,   347,     0,   348,
+       0,   309,     0,   314,   315,   310,   311,   312,   313,   317,
+       0,     0,   320,   357,     0,     0,     0,   319,     0,     0,
+       0,     0,     0,     0,     0,     0,   366,     0,     0,   330,
+       0,   332,     0,     0,   329,     0,     0,     0,     0,   336,
+       0,   342,   335,     0,     0,     0,     0,   349,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   351,   355,    -5,
+       1,   358,     0,     0,     0,     0,     0,   362,     0,   364,
+       0,     2,     0,     0,     3,     4,   368,     5,     6,     7,
+       8,     9,    10,     0,    11,     0,    12,    13,    14,     0,
+       0,     0,    15,    16,    17,    18,     0,     0,     0,    19,
        0,    20,     0,     0,    21,    22,    23,     0,     0,    24,
-       0,     0,     0,     0,    26,    27,     0,    28,     0,     0,
+       0,     0,     0,    25,    26,    27,     0,    28,     0,     0,
        0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
        0,    30,    31,    32,    33,    34,     0,     0,    35,    36,
-       0,     0,     0,     0,     0,     0,     0,    38,    39,     0,
-       0,     2,   293,    40,     3,     4,    41,     5,     6,     7,
-       8,     9,    10,     0,    11,     0,    12,     0,    14,     0,
-       0,     0,    15,    16,    17,    18,     0,     0,     0,     0,
-      20,     0,     0,    21,    22,    23,     0,     0,    24,     0,
-       0,     0,     0,    26,    27,     0,    28,     0,     0,     0,
-       0,     0,     0,    29,     0,     0,     0,     0,     0,     0,
-      30,    31,    32,    33,    34,     0,     0,    35,    36,     0,
-       0,     0,     0,     0,     0,     0,    38,    39,     0,     0,
-       2,   293,    40,     3,     4,    41,     5,     6,     7,     8,
-       9,    10,     0,    11,     0,    12,     0,    14,     0,     0,
-       0,    15,    16,    17,    18,     0,     0,     0,     0,     0,
-       0,     0,    21,     0,    23,     0,     0,     0,     0,     0,
-       0,     0,    26,    27,     0,    28,     0,     0,     0,     0,
-       0,     0,    29,     0,     0,     0,     0,     0,     0,    30,
-      31,    32,    33,    34,     0,     0,     0,    36,     0,     0,
-       0,     0,     0,     0,     0,    38,    39,     0,     0,     2,
-       0,    40,     3,     4,    41,     5,     6,     7,     8,     9,
-      10,     0,    11,     0,    12,     0,    14,     0,     0,     0,
-      15,    16,    17,     0,     0,     0,     0,     0,     0,     0,
-       0,    21,     0,    23,     0,     0,     0,     0,     0,     0,
-       0,    26,    27,     0,    28,     0,     0,     0,     0,     0,
-       0,    29,     0,     0,     0,     0,     0,     0,    30,    31,
-      32,    33,    34,     0,     0,     0,    36,     0,     0,     0,
-       0,     0,     0,     0,    38,    39,     0,     0,     2,     0,
-      40,     3,     4,    41,     5,     0,     7,     8,    64,    10,
-       0,    11,     0,     0,     0,    14,     0,     0,     0,     0,
+      37,     0,     0,     0,     0,     0,     0,    38,    39,     0,
+       0,     2,    -5,    40,     3,     4,    41,     5,     0,     7,
+       8,    64,   118,     0,   119,     0,     0,     0,    14,     0,
+       0,     0,    82,     0,    84,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    65,     0,    23,     0,     0,     0,
+     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
+     145,   146,   147,     0,    29,     0,     0,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,   148,   149,   150,   151,
+     152,   153,   154,     0,     0,     0,     0,    38,    39,     0,
+       0,     0,     0,    40,     0,     0,    41,     2,   120,     0,
+       3,     4,     0,     5,     6,     7,     8,     9,    10,     0,
+      11,     0,    12,    13,    14,     0,     0,     0,    15,    16,
+      17,    18,     0,     0,     0,    19,     0,    20,     0,     0,
+      21,    22,    23,     0,     0,    24,     0,     0,     0,    25,
+      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
+      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
+      33,    34,     0,     0,    35,    36,    37,     0,     0,     0,
+       0,     0,     0,    38,    39,     0,     0,     2,     0,    40,
+       3,     4,    41,     5,     6,     7,     8,     9,    10,     0,
+      11,   333,    12,     0,    14,     0,     0,     0,    15,    16,
+      17,    18,     0,     0,     0,     0,     0,    20,     0,     0,
+      21,    22,    23,     0,     0,    24,     0,     0,     0,     0,
+      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
+      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
+      33,    34,     0,     0,    35,    36,     0,     0,     0,     0,
+       0,     0,     0,    38,    39,     0,     0,     2,   296,    40,
+       3,     4,    41,     5,     6,     7,     8,     9,    10,     0,
+      11,     0,    12,     0,    14,     0,     0,     0,    15,    16,
+      17,    18,     0,     0,     0,     0,     0,    20,     0,     0,
+      21,    22,    23,     0,     0,    24,     0,     0,     0,     0,
+      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
+      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
+      33,    34,     0,     0,    35,    36,     0,     0,     0,     0,
+       0,     0,     0,    38,    39,     0,     0,     2,   296,    40,
+       3,     4,    41,     5,     6,     7,     8,     9,    10,     0,
+      11,     0,    12,     0,    14,     0,     0,     0,    15,    16,
+      17,    18,     0,     0,     0,     0,     0,     0,     0,     0,
+      21,     0,    23,     0,     0,     0,     0,     0,     0,     0,
+      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
+      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
+      33,    34,     0,     0,     0,    36,     0,     0,     0,     0,
+       0,     0,     0,    38,    39,     0,     0,     2,     0,    40,
+       3,     4,    41,     5,     6,     7,     8,     9,    10,     0,
+      11,     0,    12,     0,    14,     0,     0,     0,    15,    16,
+      17,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      21,     0,    23,     0,     0,     0,     0,     0,     0,     0,
+      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
+      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
+      33,    34,     0,     0,     0,    36,     0,     0,     0,     0,
+       0,     0,     0,    38,    39,     0,     0,     2,     0,    40,
+       3,     4,    41,     5,     0,     7,     8,    64,    10,     0,
+      11,     0,     0,     0,    14,     0,     0,     0,     0,     0,
        0,     0,     0,     0,    81,     0,    82,    83,    84,    85,
-      65,     0,    23,     0,     2,     0,     0,     3,     4,     0,
-       5,     0,     7,     8,    64,    10,     0,    11,     0,     0,
-      29,    14,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,    82,     0,    84,     0,    65,     0,    23,     0,
-       0,     0,     0,    38,    39,     0,     0,     0,   101,    40,
-       0,     0,    41,     0,     0,     0,    29,     0,     0,     0,
-       0,     0,     0,    30,    31,    32,    33,    34,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    38,
-      39,     0,     0,     2,     0,    40,     3,     4,    41,     5,
-       0,     7,     8,    64,    10,     0,    11,     0,     0,     0,
-      14,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    65,     2,    23,     0,     3,
-       4,     0,     5,     0,     7,     8,    64,    10,     0,    11,
-       0,     0,     0,    14,     0,    29,     0,     0,     0,     0,
-       0,     0,    30,    31,    32,    33,    34,     0,    65,     0,
-      23,     0,     0,     0,     0,     0,     0,     0,    38,    39,
-       0,     0,     0,     0,    40,     0,     0,    41,    29,     0,
+      65,     0,    23,     0,     0,     2,     0,     0,     3,     4,
+       0,     5,     0,     7,     8,    64,    10,     0,    11,     0,
+      29,     0,    14,     0,     0,     0,     0,    30,    31,    32,
+      33,    34,     0,     0,    82,     0,    84,     0,    65,     0,
+      23,     0,     0,    38,    39,     0,     0,     0,     0,    40,
+     101,     0,    41,     0,     0,     0,     0,     0,    29,     0,
        0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    38,    39,     0,     0,     2,     0,    67,     3,     4,
+       0,    38,    39,     0,     0,     2,     0,    40,     3,     4,
       41,     5,     0,     7,     8,    64,    10,     0,    11,     0,
        0,     0,    14,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    65,     2,    23,
-       0,     3,     4,     0,     5,     0,     7,     8,    64,    10,
-       0,    11,     0,     0,     0,    14,     0,    29,     0,     0,
-       0,     0,     0,     0,    30,    31,    32,    33,    34,     0,
-      65,     0,    23,     0,     0,     0,     0,     0,     0,     0,
-      38,    39,     0,     0,     0,     0,    70,     0,     0,    41,
-      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,     0,     0,     0,     0,     0,   186,
-       0,     0,     0,    38,    39,   187,     0,     0,     0,    74,
-       0,     0,    41,     0,     0,   137,   138,   139,   140,   141,
-     142,     0,   143,     0,     0,   144,   145,   146,     0,     0,
-       0,     0,   188,     0,     0,     0,     0,     0,   189,     0,
-       0,   147,   148,   149,   150,   151,   152,   153,   137,   138,
-     139,   140,   141,   142,     0,   143,     0,     0,   144,   145,
-     146,     0,     0,     0,     0,   190,     0,     0,     0,     0,
-       0,   191,     0,     0,   147,   148,   149,   150,   151,   152,
-     153,   137,   138,   139,   140,   141,   142,     0,   143,     0,
-       0,   144,   145,   146,     0,     0,     0,     0,   192,     0,
-       0,     0,     0,     0,   193,     0,     0,   147,   148,   149,
-     150,   151,   152,   153,   137,   138,   139,   140,   141,   142,
-       0,   143,     0,     0,   144,   145,   146,     0,     0,     0,
-       0,   286,     0,     0,     0,     0,     0,     0,     0,     0,
-     147,   148,   149,   150,   151,   152,   153,   137,   138,   139,
-     140,   141,   142,     0,   143,     0,     0,   144,   145,   146,
-       0,     0,     0,     0,   287,     0,     0,     0,     0,     0,
-       0,     0,     0,   147,   148,   149,   150,   151,   152,   153,
-     137,   138,   139,   140,   141,   142,     0,   143,     0,     0,
-     144,   145,   146,     0,     0,     0,     0,   288,     0,     0,
-       0,     0,     0,     0,     0,     0,   147,   148,   149,   150,
-     151,   152,   153,   137,   138,   139,   140,   141,   142,     0,
-     143,     0,     0,   144,   145,   146,     0,     0,     0,     0,
-     289,     0,     0,     0,     0,     0,     0,     0,     0,   147,
-     148,   149,   150,   151,   152,   153,   137,   138,   139,   140,
-     141,   142,     0,   143,     0,     0,   144,   145,   146,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   196,
-       0,     0,   147,   148,   149,   150,   151,   152,   153,   137,
-     138,   139,   140,   141,   142,     0,   143,     0,     0,   144,
-     145,   146,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   147,   148,   149,   150,   151,
-     152,   153,   183,   197,     0,     0,     0,     0,     0,     0,
-     137,   138,   139,   140,   141,   142,     0,   143,     0,     0,
-     144,   145,   146,   137,   138,   139,   140,   141,   142,     0,
-     143,     0,     0,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,     0,     0,     0,     0,     0,     0,   147,
-     148,   149,   150,   151,   152,   153,     0,     0,     0,   201,
-     137,   138,   139,   140,   141,   142,     0,   143,     0,     0,
-     144,   145,   146,     0,     0,     0,     0,     0,   194,   195,
-       0,     0,     0,     0,     0,     0,   147,   148,   149,   150,
-     151,   152,   153,   137,   138,   139,   140,   141,   142,     0,
-     143,     0,     0,   144,   145,   146,   137,   138,   139,   140,
-       0,     0,     0,   143,     0,     0,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,     0,     0,     0,     0,
-       0,     0,   147,   148,   149,   150,   151,   152,   153
+       0,     0,     0,     0,     0,     0,     0,     0,    65,     2,
+      23,     0,     3,     4,     0,     5,     0,     7,     8,    64,
+      10,     0,    11,     0,     0,     0,    14,     0,    29,     0,
+       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
+       0,     0,    65,     0,    23,     0,     0,     0,     0,     0,
+       0,    38,    39,     0,     0,     0,     0,    40,     0,     0,
+      41,     0,    29,     0,     0,     0,     0,     0,     0,    30,
+      31,    32,    33,    34,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    38,    39,     0,     0,     2,
+       0,    67,     3,     4,    41,     5,     0,     7,     8,    64,
+      10,     0,    11,     0,     0,     0,    14,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    65,     2,    23,     0,     3,     4,     0,     5,
+       0,     7,     8,    64,    10,     0,    11,     0,     0,     0,
+      14,     0,    29,     0,     0,     0,     0,     0,     0,    30,
+      31,    32,    33,    34,     0,     0,    65,     0,    23,     0,
+       0,     0,     0,     0,     0,    38,    39,     0,     0,     0,
+       0,    70,     0,     0,    41,   187,    29,     0,     0,     0,
+       0,   188,     0,    30,    31,    32,    33,    34,     0,     0,
+       0,   138,   139,   140,   141,   142,   143,     0,   144,    38,
+      39,   145,   146,   147,     0,    74,     0,     0,    41,   189,
+       0,     0,     0,     0,     0,   190,     0,   148,   149,   150,
+     151,   152,   153,   154,     0,   138,   139,   140,   141,   142,
+     143,     0,   144,     0,     0,   145,   146,   147,     0,     0,
+       0,     0,   191,     0,     0,     0,     0,     0,   192,     0,
+       0,   148,   149,   150,   151,   152,   153,   154,   138,   139,
+     140,   141,   142,   143,     0,   144,     0,     0,   145,   146,
+     147,     0,     0,     0,     0,   193,     0,     0,     0,     0,
+       0,   194,     0,     0,   148,   149,   150,   151,   152,   153,
+     154,   138,   139,   140,   141,   142,   143,     0,   144,     0,
+       0,   145,   146,   147,     0,     0,     0,     0,   289,     0,
+       0,     0,     0,     0,     0,     0,     0,   148,   149,   150,
+     151,   152,   153,   154,   138,   139,   140,   141,   142,   143,
+       0,   144,     0,     0,   145,   146,   147,     0,     0,     0,
+       0,   290,     0,     0,     0,     0,     0,     0,     0,     0,
+     148,   149,   150,   151,   152,   153,   154,   138,   139,   140,
+     141,   142,   143,     0,   144,     0,     0,   145,   146,   147,
+       0,     0,     0,     0,   291,     0,     0,     0,     0,     0,
+       0,     0,     0,   148,   149,   150,   151,   152,   153,   154,
+     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
+     145,   146,   147,     0,     0,     0,     0,   292,     0,     0,
+       0,     0,     0,     0,     0,     0,   148,   149,   150,   151,
+     152,   153,   154,   138,   139,   140,   141,   142,   143,     0,
+     144,     0,     0,   145,   146,   147,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   197,     0,     0,   148,
+     149,   150,   151,   152,   153,   154,   138,   139,   140,   141,
+     142,   143,     0,   144,     0,     0,   145,   146,   147,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   148,   149,   150,   151,   152,   153,   154,   184,
+     198,     0,     0,     0,     0,     0,     0,   138,   139,   140,
+     141,   142,   143,     0,   144,     0,     0,   145,   146,   147,
+     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+       0,     0,     0,     0,     0,     0,   148,   149,   150,   151,
+     152,   153,   154,     0,     0,     0,   202,   138,   139,   140,
+     141,   142,   143,     0,   144,     0,     0,   145,   146,   147,
+       0,     0,     0,     0,     0,   195,   196,     0,     0,     0,
+       0,     0,     0,   148,   149,   150,   151,   152,   153,   154,
+     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
+     145,   146,   147,   138,   139,   140,   141,     0,     0,     0,
+     144,     0,     0,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,     0,     0,     0,     0,     0,     0,   148,
+     149,   150,   151,   152,   153,   154
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,     8,     6,     7,    78,     9,   164,     0,    31,    27,
-      92,   265,   280,    17,    65,     6,     7,    21,    23,    45,
-      25,    92,    26,    27,    95,    29,    30,    31,    32,    33,
-      34,    35,   266,     0,    38,    39,    40,    41,    89,    90,
-      22,    30,   276,    12,    48,   299,    50,    51,    48,    18,
-      21,    22,   320,    22,    23,    45,    25,    22,    81,    48,
-      60,    65,    48,    67,    94,    95,    70,   301,    86,   303,
-      74,    48,    92,    77,    60,    95,    67,    22,    82,    70,
-     130,   131,    65,    60,   102,    60,    77,    94,    95,    95,
-     324,    93,    65,   347,   328,    68,   330,    50,    51,    92,
-      71,    72,    73,    74,    87,    88,    89,    90,    92,    22,
-     344,    95,    40,    86,    87,    88,    89,    90,    94,    95,
-      94,    95,    22,   357,   282,   129,    22,    96,    48,   133,
-      31,    32,    95,   137,   138,   139,   140,   141,   142,   143,
+       4,     8,     6,     7,    78,     9,     0,   165,     0,   267,
+      27,     6,     7,    17,    30,   283,    31,    21,    37,    46,
+      49,    93,    26,    27,    96,    29,    30,    31,    32,    33,
+      34,    35,    61,    49,    38,    39,    40,    41,    21,    22,
+      66,    93,    61,    12,    48,   303,    50,    51,    49,    18,
+      49,    22,    93,    22,    23,    96,    25,   325,    51,    52,
+      61,    65,    61,    67,    90,    91,    70,    82,    93,    86,
+      74,    96,    67,    77,    23,    70,    25,    22,    82,    31,
+      32,    66,    77,    46,    69,   102,    66,    94,    95,    72,
+      73,    74,    75,    95,    96,   353,    22,    95,    96,    95,
+      96,    93,    87,    88,    89,    90,    91,    94,    88,    89,
+      90,    91,    96,    22,    96,    22,    41,    15,    16,    17,
+      22,   131,   132,    96,    22,   129,   130,   285,    97,    49,
+     134,    29,    48,   127,   138,   139,   140,   141,   142,   143,
      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-      47,   155,    95,    22,    22,   159,    98,    98,   162,   209,
-     127,    97,   212,    95,   168,    95,   240,    22,   172,   173,
-      95,   175,   176,    22,    95,   179,   180,   181,    42,   183,
-      47,    37,   186,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,    22,    22,    22,   202,   203,    47,    22,    82,
-      95,   205,    58,    59,    60,    61,    62,    63,    48,    65,
-      66,    67,    68,    69,    70,    22,    48,    83,    22,    81,
-      95,    82,    22,    82,   274,    47,    51,    81,    84,    85,
-      86,    87,    88,    89,    90,    15,    16,    17,    81,   127,
-     290,   291,    22,   247,   248,   197,    51,   171,   298,    29,
-      51,   206,    -1,    -1,    -1,    -1,    -1,    -1,   332,    -1,
-      -1,    -1,    -1,   337,   314,    -1,   316,    -1,    -1,    -1,
-      -1,    -1,    -1,   323,    -1,   325,    -1,    -1,   285,    -1,
-      -1,   331,   286,   287,   288,   289,    -1,    -1,    -1,    -1,
-      -1,    -1,   342,   297,    -1,   345,    -1,    -1,    -1,    -1,
-      -1,   351,    -1,   353,    -1,    -1,    -1,     0,     1,   313,
-     360,    -1,    -1,    -1,    -1,    -1,    -1,   321,    -1,    12,
-      -1,    -1,    15,    16,    -1,    18,    19,    20,    21,    22,
-      23,   335,    25,    -1,    27,    28,    29,    -1,    -1,    -1,
-      33,    34,    35,    36,    -1,    -1,    39,    -1,    41,    -1,
-      -1,    44,    45,    46,    -1,    -1,    49,    -1,    -1,    -1,
-      53,    54,    55,    -1,    57,    -1,    -1,    -1,    -1,    -1,
-      -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
-      73,    74,    75,    -1,    -1,    78,    79,    80,    -1,    -1,
-      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,    92,
-      93,    15,    16,    96,    18,    -1,    20,    21,    22,    23,
-      -1,    25,    -1,    -1,    -1,    29,    -1,    -1,    40,    -1,
-      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      44,    -1,    46,    -1,    -1,    -1,    58,    59,    60,    61,
-      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
-      74,    75,    84,    85,    86,    87,    88,    89,    90,    -1,
-      -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    93,
-      -1,    -1,    96,    12,    98,    -1,    15,    16,    -1,    18,
-      19,    20,    21,    22,    23,    -1,    25,    -1,    27,    28,
-      29,    -1,    -1,    -1,    33,    34,    35,    36,    -1,    -1,
-      39,    -1,    41,    -1,    -1,    44,    45,    46,    -1,    -1,
-      49,    -1,    -1,    -1,    53,    54,    55,    -1,    57,    -1,
-      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,
-      -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,    78,
-      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
-      -1,    -1,    12,    -1,    93,    15,    16,    96,    18,    19,
-      20,    21,    22,    23,    -1,    25,    26,    27,    -1,    29,
-      -1,    -1,    -1,    33,    34,    35,    36,    -1,    -1,    -1,
-      -1,    41,    -1,    -1,    44,    45,    46,    -1,    -1,    49,
-      -1,    -1,    -1,    -1,    54,    55,    -1,    57,    -1,    -1,
-      -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,
-      -1,    71,    72,    73,    74,    75,    -1,    -1,    78,    79,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,
-      -1,    12,    92,    93,    15,    16,    96,    18,    19,    20,
-      21,    22,    23,    -1,    25,    -1,    27,    -1,    29,    -1,
-      -1,    -1,    33,    34,    35,    36,    -1,    -1,    -1,    -1,
-      41,    -1,    -1,    44,    45,    46,    -1,    -1,    49,    -1,
-      -1,    -1,    -1,    54,    55,    -1,    57,    -1,    -1,    -1,
-      -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,
-      71,    72,    73,    74,    75,    -1,    -1,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,
-      12,    92,    93,    15,    16,    96,    18,    19,    20,    21,
-      22,    23,    -1,    25,    -1,    27,    -1,    29,    -1,    -1,
-      -1,    33,    34,    35,    36,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    54,    55,    -1,    57,    -1,    -1,    -1,    -1,
-      -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,
-      72,    73,    74,    75,    -1,    -1,    -1,    79,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,
-      -1,    93,    15,    16,    96,    18,    19,    20,    21,    22,
-      23,    -1,    25,    -1,    27,    -1,    29,    -1,    -1,    -1,
-      33,    34,    35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    54,    55,    -1,    57,    -1,    -1,    -1,    -1,    -1,
-      -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
-      73,    74,    75,    -1,    -1,    -1,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,    -1,
-      93,    15,    16,    96,    18,    -1,    20,    21,    22,    23,
-      -1,    25,    -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    38,    -1,    40,    41,    42,    43,
-      44,    -1,    46,    -1,    12,    -1,    -1,    15,    16,    -1,
-      18,    -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,
-      64,    29,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
-      74,    75,    40,    -1,    42,    -1,    44,    -1,    46,    -1,
-      -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    56,    93,
-      -1,    -1,    96,    -1,    -1,    -1,    64,    -1,    -1,    -1,
-      -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
-      88,    -1,    -1,    12,    -1,    93,    15,    16,    96,    18,
-      -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,    -1,
-      29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    44,    12,    46,    -1,    15,
-      16,    -1,    18,    -1,    20,    21,    22,    23,    -1,    25,
-      -1,    -1,    -1,    29,    -1,    64,    -1,    -1,    -1,    -1,
-      -1,    -1,    71,    72,    73,    74,    75,    -1,    44,    -1,
-      46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
-      -1,    -1,    -1,    -1,    93,    -1,    -1,    96,    64,    -1,
-      -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,
+     154,    22,   156,    22,    22,    99,   160,    99,    98,   163,
+      96,    96,    96,    43,    22,   169,    96,    48,   242,   173,
+     174,    22,   176,   177,    22,    22,   180,   181,   182,    96,
+     184,    48,    22,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,    83,    49,    22,   203,   204,    84,    49,
+     210,   211,   206,    22,   214,    38,    83,    82,    96,    83,
+      22,   268,    48,    83,   127,   172,    82,    82,   207,   198,
+     277,    51,   279,    51,    -1,    51,    59,    60,    61,    62,
+      63,    64,    -1,    66,    67,    68,    69,    70,    71,    -1,
+      -1,    -1,    -1,    -1,    -1,   249,   250,    -1,   305,    -1,
+     307,    -1,    85,    86,    87,    88,    89,    90,    91,    -1,
+      -1,    -1,    -1,    -1,   338,    -1,   276,    -1,    -1,   343,
+      -1,    -1,    -1,   330,    -1,    -1,    -1,   334,    -1,   336,
+      -1,   288,    -1,   293,   294,   289,   290,   291,   292,   299,
+      -1,    -1,   302,   350,    -1,    -1,    -1,   301,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,   319,
+      -1,   321,    -1,    -1,   318,    -1,    -1,    -1,    -1,   329,
+      -1,   331,   326,    -1,    -1,    -1,    -1,   337,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   341,   348,     0,
+       1,   351,    -1,    -1,    -1,    -1,    -1,   357,    -1,   359,
+      -1,    12,    -1,    -1,    15,    16,   366,    18,    19,    20,
+      21,    22,    23,    -1,    25,    -1,    27,    28,    29,    -1,
+      -1,    -1,    33,    34,    35,    36,    -1,    -1,    -1,    40,
+      -1,    42,    -1,    -1,    45,    46,    47,    -1,    -1,    50,
+      -1,    -1,    -1,    54,    55,    56,    -1,    58,    -1,    -1,
+      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,    73,    74,    75,    76,    -1,    -1,    79,    80,
+      81,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,
+      -1,    12,    93,    94,    15,    16,    97,    18,    -1,    20,
+      21,    22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,
+      -1,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    45,    -1,    47,    -1,    -1,    -1,
+      59,    60,    61,    62,    63,    64,    -1,    66,    -1,    -1,
+      69,    70,    71,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,    73,    74,    75,    76,    85,    86,    87,    88,
+      89,    90,    91,    -1,    -1,    -1,    -1,    88,    89,    -1,
+      -1,    -1,    -1,    94,    -1,    -1,    97,    12,    99,    -1,
+      15,    16,    -1,    18,    19,    20,    21,    22,    23,    -1,
+      25,    -1,    27,    28,    29,    -1,    -1,    -1,    33,    34,
+      35,    36,    -1,    -1,    -1,    40,    -1,    42,    -1,    -1,
+      45,    46,    47,    -1,    -1,    50,    -1,    -1,    -1,    54,
+      55,    56,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
+      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
+      75,    76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    -1,    -1,    12,    -1,    94,
+      15,    16,    97,    18,    19,    20,    21,    22,    23,    -1,
+      25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
+      35,    36,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+      45,    46,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,
+      55,    56,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
+      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
+      75,    76,    -1,    -1,    79,    80,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    -1,    -1,    12,    93,    94,
+      15,    16,    97,    18,    19,    20,    21,    22,    23,    -1,
+      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
+      35,    36,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+      45,    46,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,
+      55,    56,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
+      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
+      75,    76,    -1,    -1,    79,    80,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    -1,    -1,    12,    93,    94,
+      15,    16,    97,    18,    19,    20,    21,    22,    23,    -1,
+      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
+      35,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      45,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      55,    56,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
+      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
+      75,    76,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    -1,    -1,    12,    -1,    94,
+      15,    16,    97,    18,    19,    20,    21,    22,    23,    -1,
+      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
+      35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      45,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      55,    56,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
+      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
+      75,    76,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    -1,    -1,    12,    -1,    94,
+      15,    16,    97,    18,    -1,    20,    21,    22,    23,    -1,
+      25,    -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    39,    -1,    41,    42,    43,    44,
+      45,    -1,    47,    -1,    -1,    12,    -1,    -1,    15,    16,
+      -1,    18,    -1,    20,    21,    22,    23,    -1,    25,    -1,
+      65,    -1,    29,    -1,    -1,    -1,    -1,    72,    73,    74,
+      75,    76,    -1,    -1,    41,    -1,    43,    -1,    45,    -1,
+      47,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    94,
+      57,    -1,    97,    -1,    -1,    -1,    -1,    -1,    65,    -1,
+      -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    87,    88,    -1,    -1,    12,    -1,    93,    15,    16,
-      96,    18,    -1,    20,    21,    22,    23,    -1,    25,    -1,
+      -1,    88,    89,    -1,    -1,    12,    -1,    94,    15,    16,
+      97,    18,    -1,    20,    21,    22,    23,    -1,    25,    -1,
       -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    12,    46,
-      -1,    15,    16,    -1,    18,    -1,    20,    21,    22,    23,
-      -1,    25,    -1,    -1,    -1,    29,    -1,    64,    -1,    -1,
-      -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,
-      44,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      87,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,    96,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
-      74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,
-      -1,    -1,    -1,    87,    88,    48,    -1,    -1,    -1,    93,
-      -1,    -1,    96,    -1,    -1,    58,    59,    60,    61,    62,
-      63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,    -1,
-      -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    48,    -1,
-      -1,    84,    85,    86,    87,    88,    89,    90,    58,    59,
-      60,    61,    62,    63,    -1,    65,    -1,    -1,    68,    69,
-      70,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
-      -1,    48,    -1,    -1,    84,    85,    86,    87,    88,    89,
-      90,    58,    59,    60,    61,    62,    63,    -1,    65,    -1,
-      -1,    68,    69,    70,    -1,    -1,    -1,    -1,    42,    -1,
-      -1,    -1,    -1,    -1,    48,    -1,    -1,    84,    85,    86,
-      87,    88,    89,    90,    58,    59,    60,    61,    62,    63,
-      -1,    65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,
-      -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      84,    85,    86,    87,    88,    89,    90,    58,    59,    60,
-      61,    62,    63,    -1,    65,    -1,    -1,    68,    69,    70,
-      -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
-      58,    59,    60,    61,    62,    63,    -1,    65,    -1,    -1,
-      68,    69,    70,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,
-      88,    89,    90,    58,    59,    60,    61,    62,    63,    -1,
-      65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,
-      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
-      85,    86,    87,    88,    89,    90,    58,    59,    60,    61,
-      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
-      -1,    -1,    84,    85,    86,    87,    88,    89,    90,    58,
-      59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
-      69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
-      89,    90,    50,    92,    -1,    -1,    -1,    -1,    -1,    -1,
-      58,    59,    60,    61,    62,    63,    -1,    65,    -1,    -1,
-      68,    69,    70,    58,    59,    60,    61,    62,    63,    -1,
-      65,    -1,    -1,    68,    69,    70,    84,    85,    86,    87,
-      88,    89,    90,    -1,    -1,    -1,    -1,    -1,    -1,    84,
-      85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    94,
-      58,    59,    60,    61,    62,    63,    -1,    65,    -1,    -1,
-      68,    69,    70,    -1,    -1,    -1,    -1,    -1,    76,    77,
-      -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,
-      88,    89,    90,    58,    59,    60,    61,    62,    63,    -1,
-      65,    -1,    -1,    68,    69,    70,    58,    59,    60,    61,
-      -1,    -1,    -1,    65,    -1,    -1,    68,    69,    70,    84,
-      85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    -1,
-      -1,    -1,    84,    85,    86,    87,    88,    89,    90
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    12,
+      47,    -1,    15,    16,    -1,    18,    -1,    20,    21,    22,
+      23,    -1,    25,    -1,    -1,    -1,    29,    -1,    65,    -1,
+      -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,
+      -1,    -1,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+      -1,    88,    89,    -1,    -1,    -1,    -1,    94,    -1,    -1,
+      97,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+      73,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    12,
+      -1,    94,    15,    16,    97,    18,    -1,    20,    21,    22,
+      23,    -1,    25,    -1,    -1,    -1,    29,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    45,    12,    47,    -1,    15,    16,    -1,    18,
+      -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,    -1,
+      29,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+      73,    74,    75,    76,    -1,    -1,    45,    -1,    47,    -1,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
+      -1,    94,    -1,    -1,    97,    43,    65,    -1,    -1,    -1,
+      -1,    49,    -1,    72,    73,    74,    75,    76,    -1,    -1,
+      -1,    59,    60,    61,    62,    63,    64,    -1,    66,    88,
+      89,    69,    70,    71,    -1,    94,    -1,    -1,    97,    43,
+      -1,    -1,    -1,    -1,    -1,    49,    -1,    85,    86,    87,
+      88,    89,    90,    91,    -1,    59,    60,    61,    62,    63,
+      64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,
+      -1,    -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    -1,
+      -1,    85,    86,    87,    88,    89,    90,    91,    59,    60,
+      61,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
+      71,    -1,    -1,    -1,    -1,    43,    -1,    -1,    -1,    -1,
+      -1,    49,    -1,    -1,    85,    86,    87,    88,    89,    90,
+      91,    59,    60,    61,    62,    63,    64,    -1,    66,    -1,
+      -1,    69,    70,    71,    -1,    -1,    -1,    -1,    43,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,
+      88,    89,    90,    91,    59,    60,    61,    62,    63,    64,
+      -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
+      -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      85,    86,    87,    88,    89,    90,    91,    59,    60,    61,
+      62,    63,    64,    -1,    66,    -1,    -1,    69,    70,    71,
+      -1,    -1,    -1,    -1,    43,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    85,    86,    87,    88,    89,    90,    91,
+      59,    60,    61,    62,    63,    64,    -1,    66,    -1,    -1,
+      69,    70,    71,    -1,    -1,    -1,    -1,    43,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,    88,
+      89,    90,    91,    59,    60,    61,    62,    63,    64,    -1,
+      66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    85,
+      86,    87,    88,    89,    90,    91,    59,    60,    61,    62,
+      63,    64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    85,    86,    87,    88,    89,    90,    91,    51,
+      93,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    61,
+      62,    63,    64,    -1,    66,    -1,    -1,    69,    70,    71,
+      59,    60,    61,    62,    63,    64,    -1,    66,    -1,    -1,
+      69,    70,    71,    85,    86,    87,    88,    89,    90,    91,
+      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,    88,
+      89,    90,    91,    -1,    -1,    -1,    95,    59,    60,    61,
+      62,    63,    64,    -1,    66,    -1,    -1,    69,    70,    71,
+      -1,    -1,    -1,    -1,    -1,    77,    78,    -1,    -1,    -1,
+      -1,    -1,    -1,    85,    86,    87,    88,    89,    90,    91,
+      59,    60,    61,    62,    63,    64,    -1,    66,    -1,    -1,
+      69,    70,    71,    59,    60,    61,    62,    -1,    -1,    -1,
+      66,    -1,    -1,    69,    70,    71,    85,    86,    87,    88,
+      89,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    85,
+      86,    87,    88,    89,    90,    91
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1168,65 +1175,65 @@ static const yytype_int16 yycheck[] =
 static const yytype_uint8 yystos[] =
 {
        0,     1,    12,    15,    16,    18,    19,    20,    21,    22,
-      23,    25,    27,    28,    29,    33,    34,    35,    36,    39,
-      41,    44,    45,    46,    49,    53,    54,    55,    57,    64,
-      71,    72,    73,    74,    75,    78,    79,    80,    87,    88,
-      93,    96,   100,   101,   102,   103,   105,   107,   111,   112,
-     113,   118,   119,   120,   121,   122,   123,   129,   131,   133,
-     137,   142,   145,    92,    22,    44,   120,    93,   120,   143,
-      93,   143,    22,   119,    93,   120,   144,   132,   136,    45,
-     124,    38,    40,    41,    42,    43,   120,   130,   134,    45,
-     120,    50,    51,    15,    16,    17,    22,    29,    22,    22,
-     120,    56,   120,   130,    22,   128,   120,   120,   120,   120,
-     120,   120,   120,   125,   138,   120,   120,   120,    23,    25,
-      98,   120,   146,   147,   148,   149,     0,    92,   120,    60,
-     120,   104,   110,   113,   120,   123,   142,    58,    59,    60,
-      61,    62,    63,    65,    68,    69,    70,    84,    85,    86,
-      87,    88,    89,    90,   115,    93,   120,   120,   143,    95,
-     143,   143,    95,   143,   115,    22,   126,   120,    40,   130,
-      22,    37,    66,    67,    22,    48,    60,   119,   119,    48,
-      60,    48,    47,    50,   130,    95,    42,    48,    42,    48,
-      42,    48,    42,    48,    76,    77,    48,    92,    22,   127,
-      22,    94,    98,    98,    97,    95,    95,   101,   116,   120,
-     116,   116,   120,   120,   120,   120,   120,   120,   120,   120,
-     120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
-      22,   139,    94,   120,    94,    94,   120,   139,    95,   120,
-     135,    22,   122,   120,   120,   120,   120,    48,    60,    42,
-     120,   120,   120,   120,    22,   120,   120,   120,   120,   120,
-     120,   120,   120,   120,   120,   106,   106,    95,   119,   119,
-     120,    23,    25,   149,   117,   116,    47,   116,    92,    95,
-      92,    22,   115,   120,   120,    22,    42,    42,    42,    42,
-     103,   117,    22,    92,   105,   116,    30,    48,   117,    47,
-      95,   141,    22,   141,   139,   119,   120,   120,   120,   120,
-     116,   116,    82,    48,   120,   116,   103,    22,   117,   117,
-      92,    48,    83,   120,   116,   108,   116,    26,   141,   120,
-     116,   117,    31,    32,   109,   114,   116,    31,    81,    22,
-     140,   117,   117,   116,   115,   120,    81,   115,    95,   116,
-      82,   117,   116,   103,    22,    82,   116,    47,   116,    81,
-     117,    81,   116
+      23,    25,    27,    28,    29,    33,    34,    35,    36,    40,
+      42,    45,    46,    47,    50,    54,    55,    56,    58,    65,
+      72,    73,    74,    75,    76,    79,    80,    81,    88,    89,
+      94,    97,   101,   102,   103,   104,   106,   108,   112,   113,
+     114,   119,   120,   121,   122,   123,   124,   130,   132,   134,
+     138,   143,   146,    93,    22,    45,   121,    94,   121,   144,
+      94,   144,    22,   120,    94,   121,   145,   133,   137,    46,
+     125,    39,    41,    42,    43,    44,   121,   131,   135,    46,
+     121,    51,    52,    15,    16,    17,    22,    29,    22,    22,
+     121,    57,   121,   131,    22,   129,   121,   121,   121,   121,
+     121,   121,   121,   126,   139,   121,   121,   121,    23,    25,
+      99,   121,   147,   148,   149,   150,     0,    93,   121,    37,
+      61,   121,   105,   111,   114,   121,   124,   143,    59,    60,
+      61,    62,    63,    64,    66,    69,    70,    71,    85,    86,
+      87,    88,    89,    90,    91,   116,    94,   121,   121,   144,
+      96,   144,   144,    96,   144,   116,    22,   127,   121,    41,
+     131,    22,    38,    67,    68,    22,    49,    61,   120,   120,
+      49,    61,    49,    48,    51,   131,    96,    43,    49,    43,
+      49,    43,    49,    43,    49,    77,    78,    49,    93,    22,
+     128,    22,    95,    99,    99,    98,    96,    96,   102,   117,
+     121,   121,   117,   117,   121,   121,   121,   121,   121,   121,
+     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
+     121,   121,    22,   140,    95,   121,    95,    95,   121,   140,
+      96,   121,   136,    22,   123,   121,   121,   121,   121,    49,
+      61,    43,   121,   121,   121,   121,    22,   121,   121,   121,
+     121,   121,   121,   121,   121,   121,   121,   107,   107,    96,
+     120,   120,   121,    23,    25,   150,   118,   117,   117,    48,
+     117,    93,    96,    93,    22,   116,   121,   121,    22,    43,
+      43,    43,    43,   104,   118,    22,    93,   106,   117,   118,
+      30,    49,   118,    48,    96,   142,    22,   142,   140,   120,
+     121,   121,   121,   121,   117,   117,    83,   117,    49,   121,
+     117,   104,    22,   118,   118,    93,    49,    84,    83,   121,
+     117,   109,   117,    26,   142,   121,   117,   118,    31,    32,
+     110,   115,   117,    31,    82,    22,   141,   118,   118,   117,
+     116,   121,    82,   116,    96,   117,    83,   118,   117,   104,
+      22,    83,   117,    48,   117,    82,   118,    82,   117
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    99,   100,   100,   100,   101,   101,   101,   102,   102,
-     102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
-     103,   103,   103,   104,   104,   104,   104,   105,   105,   105,
-     105,   105,   105,   105,   105,   105,   106,   107,   107,   108,
-     108,   109,   110,   110,   111,   112,   113,   114,   115,   116,
-     117,   117,   117,   118,   119,   119,   119,   119,   119,   119,
-     120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
-     120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
-     120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
-     120,   120,   121,   121,   121,   121,   121,   121,   121,   121,
-     122,   122,   123,   123,   123,   123,   123,   124,   123,   125,
-     123,   123,   123,   123,   123,   123,   126,   126,   127,   127,
-     128,   128,   129,   129,   129,   129,   129,   129,   130,   130,
-     131,   131,   131,   131,   132,   131,   134,   135,   133,   133,
-     136,   133,   133,   133,   138,   137,   139,   139,   139,   139,
-     140,   140,   140,   141,   142,   143,   143,   143,   144,   144,
-     145,   146,   146,   146,   146,   147,   147,   148,   148,   149,
-     149
+       0,   100,   101,   101,   101,   102,   102,   102,   103,   103,
+     103,   103,   103,   103,   103,   103,   103,   103,   103,   103,
+     104,   104,   104,   105,   105,   105,   105,   106,   106,   106,
+     106,   106,   106,   106,   106,   106,   106,   107,   108,   108,
+     109,   109,   110,   111,   111,   112,   113,   114,   115,   116,
+     117,   118,   118,   118,   119,   120,   120,   120,   120,   120,
+     120,   121,   121,   121,   121,   121,   121,   121,   121,   121,
+     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
+     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
+     121,   121,   121,   122,   122,   122,   122,   122,   122,   122,
+     122,   123,   123,   124,   124,   124,   124,   124,   125,   124,
+     126,   124,   124,   124,   124,   124,   124,   127,   127,   128,
+     128,   129,   129,   130,   130,   130,   130,   130,   130,   131,
+     131,   132,   132,   132,   132,   133,   132,   135,   136,   134,
+     134,   137,   134,   134,   134,   139,   138,   140,   140,   140,
+     140,   141,   141,   141,   142,   143,   144,   144,   144,   145,
+     145,   146,   147,   147,   147,   147,   148,   148,   149,   149,
+     150,   150
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1235,21 +1242,21 @@ static const yytype_int8 yyr2[] =
        0,     2,     3,     1,     2,     0,     1,     1,     4,     4,
        4,     4,     4,     4,     4,     4,     5,     5,     8,     4,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     6,
-      10,    11,     2,     3,     7,     6,     0,     9,    12,     0,
-       2,     6,    11,     7,     2,     3,     1,     1,     0,     0,
-       0,     2,     2,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     4,     2,     4,     1,     2,     1,     1,     3,
+      10,    11,     7,     2,     3,     7,     6,     0,     9,    12,
+       0,     2,     6,    11,     7,     2,     3,     1,     1,     0,
+       0,     0,     2,     2,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     4,     2,     4,     1,     2,     1,     1,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     2,     3,     3,     3,     3,     2,     2,     3,
-       4,     4,     4,     6,     4,     6,     4,     6,     4,     6,
-       2,     1,     2,     1,     1,     2,     1,     0,     3,     0,
-       3,     2,     4,     2,     4,     2,     1,     3,     1,     3,
-       1,     3,     2,     2,     2,     2,     3,     2,     3,     2,
-       2,     2,     3,     2,     0,     3,     0,     0,     9,     2,
-       0,     7,     8,     6,     0,     3,     0,     1,     3,     4,
-       0,     1,     3,     0,     2,     0,     1,     3,     1,     3,
-       3,     0,     1,     1,     1,     1,     3,     1,     3,     3,
-       3
+       3,     3,     3,     2,     3,     3,     3,     3,     2,     2,
+       3,     4,     4,     4,     6,     4,     6,     4,     6,     4,
+       6,     2,     1,     2,     1,     1,     2,     1,     0,     3,
+       0,     3,     2,     4,     2,     4,     2,     1,     3,     1,
+       3,     1,     3,     2,     2,     2,     2,     3,     2,     3,
+       2,     2,     2,     3,     2,     0,     3,     0,     0,     9,
+       2,     0,     7,     8,     6,     0,     3,     0,     1,     3,
+       4,     0,     1,     3,     0,     2,     0,     1,     3,     1,
+       3,     3,     0,     1,     1,     1,     1,     3,     1,     3,
+       3,     3
 };
 
 
@@ -1687,73 +1694,73 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
     case 19: /* BLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1691 "engines/director/lingo/lingo-gr.cpp"
+#line 1698 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 20: /* FBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1697 "engines/director/lingo/lingo-gr.cpp"
+#line 1704 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 21: /* RBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1703 "engines/director/lingo/lingo-gr.cpp"
+#line 1710 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 22: /* ID  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1709 "engines/director/lingo/lingo-gr.cpp"
+#line 1716 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* STRING  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1715 "engines/director/lingo/lingo-gr.cpp"
+#line 1722 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* HANDLER  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1721 "engines/director/lingo/lingo-gr.cpp"
+#line 1728 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* SYMBOL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1727 "engines/director/lingo/lingo-gr.cpp"
+#line 1734 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ENDCLAUSE  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1733 "engines/director/lingo/lingo-gr.cpp"
+#line 1740 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* tPLAYACCEL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1739 "engines/director/lingo/lingo-gr.cpp"
+#line 1746 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* tMETHOD  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1745 "engines/director/lingo/lingo-gr.cpp"
+#line 1752 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* THEOBJECTFIELD  */
 #line 131 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 1751 "engines/director/lingo/lingo-gr.cpp"
+#line 1758 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 137: /* on  */
+    case 138: /* on  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1757 "engines/director/lingo/lingo-gr.cpp"
+#line 1764 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2023,7 +2030,7 @@ yyreduce:
   case 4:
 #line 137 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2027 "engines/director/lingo/lingo-gr.cpp"
+#line 2034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2034,7 +2041,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2038 "engines/director/lingo/lingo-gr.cpp"
+#line 2045 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2042,19 +2049,19 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2046 "engines/director/lingo/lingo-gr.cpp"
+#line 2053 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 152 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2052 "engines/director/lingo/lingo-gr.cpp"
+#line 2059 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 153 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2058 "engines/director/lingo/lingo-gr.cpp"
+#line 2065 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2065,7 +2072,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2069 "engines/director/lingo/lingo-gr.cpp"
+#line 2076 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2077,7 +2084,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2081 "engines/director/lingo/lingo-gr.cpp"
+#line 2088 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2088,7 +2095,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2092 "engines/director/lingo/lingo-gr.cpp"
+#line 2099 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2100,7 +2107,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2104 "engines/director/lingo/lingo-gr.cpp"
+#line 2111 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2111,7 +2118,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2115 "engines/director/lingo/lingo-gr.cpp"
+#line 2122 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2122,7 +2129,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2126 "engines/director/lingo/lingo-gr.cpp"
+#line 2133 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2137,7 +2144,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2141 "engines/director/lingo/lingo-gr.cpp"
+#line 2148 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2148,7 +2155,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2152 "engines/director/lingo/lingo-gr.cpp"
+#line 2159 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
@@ -2159,7 +2166,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body;	/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2163 "engines/director/lingo/lingo-gr.cpp"
+#line 2170 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
@@ -2176,7 +2183,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 5] = end; }
-#line 2180 "engines/director/lingo/lingo-gr.cpp"
+#line 2187 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
@@ -2193,54 +2200,69 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2197 "engines/director/lingo/lingo-gr.cpp"
+#line 2204 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
 #line 265 "engines/director/lingo/lingo-gr.y"
+                                                                      {
+		inst list = 0, body = 0, end = 0;
+		WRITE_UINT32(&list, (yyvsp[-4].code) - (yyvsp[-6].code));
+		WRITE_UINT32(&body, (yyvsp[-2].code) - (yyvsp[-6].code));
+		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-6].code));
+		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 1] = list;		/* initial count value */
+		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 2] = 0;		/* final count value */
+		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = body;		/* body of loop */
+		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 4] = 0;		/* increment */
+		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 5] = end; }
+#line 2219 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 33:
+#line 276 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
-#line 2204 "engines/director/lingo/lingo-gr.cpp"
+#line 2226 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 33:
-#line 267 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 278 "engines/director/lingo/lingo-gr.y"
                                       {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2214 "engines/director/lingo/lingo-gr.cpp"
+#line 2236 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 34:
-#line 272 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 283 "engines/director/lingo/lingo-gr.y"
                                                           {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2223 "engines/director/lingo/lingo-gr.cpp"
+#line 2245 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 35:
-#line 276 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 287 "engines/director/lingo/lingo-gr.y"
                                                     {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2232 "engines/director/lingo/lingo-gr.cpp"
+#line 2254 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 36:
-#line 281 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 292 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2240 "engines/director/lingo/lingo-gr.cpp"
+#line 2262 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 37:
-#line 285 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 296 "engines/director/lingo/lingo-gr.y"
                                                                                        {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-6].code) - (yyvsp[-8].code));
@@ -2251,11 +2273,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2255 "engines/director/lingo/lingo-gr.cpp"
+#line 2277 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 38:
-#line 295 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 306 "engines/director/lingo/lingo-gr.y"
                                                                                                               {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-9].code) - (yyvsp[-11].code));
@@ -2266,22 +2288,22 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2270 "engines/director/lingo/lingo-gr.cpp"
+#line 2292 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 41:
-#line 309 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 320 "engines/director/lingo/lingo-gr.y"
                                                         {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[-3].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2281 "engines/director/lingo/lingo-gr.cpp"
+#line 2303 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 42:
-#line 316 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 327 "engines/director/lingo/lingo-gr.y"
                                                                                                          {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-8].code) - (yyvsp[-10].code));
@@ -2292,11 +2314,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2296 "engines/director/lingo/lingo-gr.cpp"
+#line 2318 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 43:
-#line 326 "engines/director/lingo/lingo-gr.y"
+  case 44:
+#line 337 "engines/director/lingo/lingo-gr.y"
                                                                    {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-4].code) - (yyvsp[-6].code));
@@ -2307,149 +2329,149 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2311 "engines/director/lingo/lingo-gr.cpp"
+#line 2333 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 44:
-#line 337 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 348 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2317 "engines/director/lingo/lingo-gr.cpp"
+#line 2339 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 45:
-#line 339 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 350 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2327 "engines/director/lingo/lingo-gr.cpp"
+#line 2349 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 46:
-#line 345 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 356 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); }
-#line 2337 "engines/director/lingo/lingo-gr.cpp"
+#line 2359 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 47:
-#line 351 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 362 "engines/director/lingo/lingo-gr.y"
                                         {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
-#line 2348 "engines/director/lingo/lingo-gr.cpp"
+#line 2370 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 48:
-#line 358 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 369 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2354 "engines/director/lingo/lingo-gr.cpp"
+#line 2376 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 49:
-#line 360 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 371 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2360 "engines/director/lingo/lingo-gr.cpp"
+#line 2382 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 50:
-#line 362 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 373 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2366 "engines/director/lingo/lingo-gr.cpp"
+#line 2388 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 53:
-#line 366 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 377 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_whencode);
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2376 "engines/director/lingo/lingo-gr.cpp"
+#line 2398 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 54:
-#line 372 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 383 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2384 "engines/director/lingo/lingo-gr.cpp"
+#line 2406 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 55:
-#line 375 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 386 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2392 "engines/director/lingo/lingo-gr.cpp"
+#line 2414 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 56:
-#line 378 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 389 "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 2401 "engines/director/lingo/lingo-gr.cpp"
+#line 2423 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 57:
-#line 382 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 393 "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 2410 "engines/director/lingo/lingo-gr.cpp"
+#line 2432 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 58:
-#line 386 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 397 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2419 "engines/director/lingo/lingo-gr.cpp"
+#line 2441 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 60:
-#line 392 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 403 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2425 "engines/director/lingo/lingo-gr.cpp"
+#line 2447 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 394 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 405 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2433 "engines/director/lingo/lingo-gr.cpp"
+#line 2455 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 397 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 408 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2441 "engines/director/lingo/lingo-gr.cpp"
+#line 2463 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
-#line 400 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 411 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2449 "engines/director/lingo/lingo-gr.cpp"
+#line 2471 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 403 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 414 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2458,489 +2480,489 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2462 "engines/director/lingo/lingo-gr.cpp"
+#line 2484 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 411 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 422 "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 2473 "engines/director/lingo/lingo-gr.cpp"
+#line 2495 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 428 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2483 "engines/director/lingo/lingo-gr.cpp"
+#line 2505 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 423 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 434 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2489 "engines/director/lingo/lingo-gr.cpp"
+#line 2511 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 424 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 435 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2495 "engines/director/lingo/lingo-gr.cpp"
+#line 2517 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 425 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 436 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2501 "engines/director/lingo/lingo-gr.cpp"
+#line 2523 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 426 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 437 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2507 "engines/director/lingo/lingo-gr.cpp"
+#line 2529 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 427 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 438 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2513 "engines/director/lingo/lingo-gr.cpp"
+#line 2535 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 428 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 439 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2519 "engines/director/lingo/lingo-gr.cpp"
+#line 2541 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 429 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 440 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2525 "engines/director/lingo/lingo-gr.cpp"
+#line 2547 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 441 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2531 "engines/director/lingo/lingo-gr.cpp"
+#line 2553 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 431 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 442 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2537 "engines/director/lingo/lingo-gr.cpp"
+#line 2559 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 432 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 443 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2543 "engines/director/lingo/lingo-gr.cpp"
+#line 2565 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 433 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 444 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2549 "engines/director/lingo/lingo-gr.cpp"
+#line 2571 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 434 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 445 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2555 "engines/director/lingo/lingo-gr.cpp"
+#line 2577 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 435 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 446 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2561 "engines/director/lingo/lingo-gr.cpp"
+#line 2583 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 436 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 447 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2567 "engines/director/lingo/lingo-gr.cpp"
+#line 2589 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 437 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 448 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2573 "engines/director/lingo/lingo-gr.cpp"
+#line 2595 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 438 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 449 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2579 "engines/director/lingo/lingo-gr.cpp"
+#line 2601 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 439 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 450 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2585 "engines/director/lingo/lingo-gr.cpp"
+#line 2607 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 440 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 451 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2591 "engines/director/lingo/lingo-gr.cpp"
+#line 2613 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 441 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 452 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); }
-#line 2597 "engines/director/lingo/lingo-gr.cpp"
+#line 2619 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 442 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 453 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2603 "engines/director/lingo/lingo-gr.cpp"
+#line 2625 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 443 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 454 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2609 "engines/director/lingo/lingo-gr.cpp"
+#line 2631 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 444 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 455 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2615 "engines/director/lingo/lingo-gr.cpp"
+#line 2637 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 445 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 456 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2621 "engines/director/lingo/lingo-gr.cpp"
+#line 2643 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 447 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 458 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2627 "engines/director/lingo/lingo-gr.cpp"
+#line 2649 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 448 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 459 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2633 "engines/director/lingo/lingo-gr.cpp"
+#line 2655 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 449 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 460 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2639 "engines/director/lingo/lingo-gr.cpp"
+#line 2661 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 450 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 461 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2645 "engines/director/lingo/lingo-gr.cpp"
+#line 2667 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 462 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2651 "engines/director/lingo/lingo-gr.cpp"
+#line 2673 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 452 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 463 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2657 "engines/director/lingo/lingo-gr.cpp"
+#line 2679 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 453 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 464 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2663 "engines/director/lingo/lingo-gr.cpp"
+#line 2685 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 465 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2669 "engines/director/lingo/lingo-gr.cpp"
+#line 2691 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 456 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 467 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2677 "engines/director/lingo/lingo-gr.cpp"
+#line 2699 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 461 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 472 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2683 "engines/director/lingo/lingo-gr.cpp"
+#line 2705 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 464 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 475 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2689 "engines/director/lingo/lingo-gr.cpp"
+#line 2711 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 465 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 476 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 2695 "engines/director/lingo/lingo-gr.cpp"
+#line 2717 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 477 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2701 "engines/director/lingo/lingo-gr.cpp"
+#line 2723 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 477 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 2707 "engines/director/lingo/lingo-gr.cpp"
+#line 2729 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 467 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 478 "engines/director/lingo/lingo-gr.y"
                     { g_lingo->_indef = kStateInArgs; }
-#line 2713 "engines/director/lingo/lingo-gr.cpp"
+#line 2735 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 467 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 478 "engines/director/lingo/lingo-gr.y"
                                                                      { g_lingo->_indef = kStateNone; }
-#line 2719 "engines/director/lingo/lingo-gr.cpp"
+#line 2741 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 469 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 480 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2727 "engines/director/lingo/lingo-gr.cpp"
+#line 2749 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 472 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 483 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2735 "engines/director/lingo/lingo-gr.cpp"
+#line 2757 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 475 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 486 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 2741 "engines/director/lingo/lingo-gr.cpp"
+#line 2763 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 476 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 487 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 2747 "engines/director/lingo/lingo-gr.cpp"
+#line 2769 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
-#line 478 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 489 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2756 "engines/director/lingo/lingo-gr.cpp"
+#line 2778 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 482 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 493 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2765 "engines/director/lingo/lingo-gr.cpp"
+#line 2787 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 487 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 498 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2774 "engines/director/lingo/lingo-gr.cpp"
+#line 2796 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 502 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2783 "engines/director/lingo/lingo-gr.cpp"
+#line 2805 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 496 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 507 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2792 "engines/director/lingo/lingo-gr.cpp"
+#line 2814 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 500 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 511 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2801 "engines/director/lingo/lingo-gr.cpp"
+#line 2823 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 512 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 523 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 2807 "engines/director/lingo/lingo-gr.cpp"
+#line 2829 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 513 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 524 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 2813 "engines/director/lingo/lingo-gr.cpp"
+#line 2835 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 514 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 525 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 2819 "engines/director/lingo/lingo-gr.cpp"
+#line 2841 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 526 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 2828 "engines/director/lingo/lingo-gr.cpp"
+#line 2850 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 530 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 2837 "engines/director/lingo/lingo-gr.cpp"
+#line 2859 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 523 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 534 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 2846 "engines/director/lingo/lingo-gr.cpp"
+#line 2868 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 531 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 542 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_playdone); }
-#line 2852 "engines/director/lingo/lingo-gr.cpp"
+#line 2874 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 532 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 543 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 2861 "engines/director/lingo/lingo-gr.cpp"
+#line 2883 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 536 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 547 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 2870 "engines/director/lingo/lingo-gr.cpp"
+#line 2892 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 540 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 551 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 2879 "engines/director/lingo/lingo-gr.cpp"
+#line 2901 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 544 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 555 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 2885 "engines/director/lingo/lingo-gr.cpp"
+#line 2907 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 544 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 555 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 2894 "engines/director/lingo/lingo-gr.cpp"
+#line 2916 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 574 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 585 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 2900 "engines/director/lingo/lingo-gr.cpp"
+#line 2922 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 574 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 585 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 2906 "engines/director/lingo/lingo-gr.cpp"
+#line 2928 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 575 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 586 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2917 "engines/director/lingo/lingo-gr.cpp"
+#line 2939 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 581 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 592 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 2923 "engines/director/lingo/lingo-gr.cpp"
+#line 2945 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 582 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 593 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2929 "engines/director/lingo/lingo-gr.cpp"
+#line 2951 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 594 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2940 "engines/director/lingo/lingo-gr.cpp"
+#line 2962 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 600 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -2951,11 +2973,11 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 2955 "engines/director/lingo/lingo-gr.cpp"
+#line 2977 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 599 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 610 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -2963,65 +2985,65 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 2967 "engines/director/lingo/lingo-gr.cpp"
+#line 2989 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 607 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 618 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 2973 "engines/director/lingo/lingo-gr.cpp"
+#line 2995 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 607 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 618 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 2979 "engines/director/lingo/lingo-gr.cpp"
+#line 3001 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 609 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 620 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 2985 "engines/director/lingo/lingo-gr.cpp"
+#line 3007 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 610 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 621 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 2991 "engines/director/lingo/lingo-gr.cpp"
+#line 3013 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 611 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 622 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 2997 "engines/director/lingo/lingo-gr.cpp"
+#line 3019 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 612 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 623 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 3003 "engines/director/lingo/lingo-gr.cpp"
+#line 3025 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 615 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 626 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3009 "engines/director/lingo/lingo-gr.cpp"
+#line 3031 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 616 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 627 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 3015 "engines/director/lingo/lingo-gr.cpp"
+#line 3037 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 629 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 3021 "engines/director/lingo/lingo-gr.cpp"
+#line 3043 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 620 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 631 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3029,113 +3051,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3033 "engines/director/lingo/lingo-gr.cpp"
+#line 3055 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 628 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 639 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3039 "engines/director/lingo/lingo-gr.cpp"
+#line 3061 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 629 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 640 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3045 "engines/director/lingo/lingo-gr.cpp"
+#line 3067 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 630 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 641 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3051 "engines/director/lingo/lingo-gr.cpp"
+#line 3073 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 632 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 643 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3057 "engines/director/lingo/lingo-gr.cpp"
+#line 3079 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 633 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 644 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3063 "engines/director/lingo/lingo-gr.cpp"
+#line 3085 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 635 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 646 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 3069 "engines/director/lingo/lingo-gr.cpp"
+#line 3091 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 637 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 648 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3075 "engines/director/lingo/lingo-gr.cpp"
+#line 3097 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 638 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 649 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3081 "engines/director/lingo/lingo-gr.cpp"
+#line 3103 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 639 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 650 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3087 "engines/director/lingo/lingo-gr.cpp"
+#line 3109 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 640 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 651 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3093 "engines/director/lingo/lingo-gr.cpp"
+#line 3115 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 642 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 653 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3099 "engines/director/lingo/lingo-gr.cpp"
+#line 3121 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 643 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 654 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3105 "engines/director/lingo/lingo-gr.cpp"
+#line 3127 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 656 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3111 "engines/director/lingo/lingo-gr.cpp"
+#line 3133 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
-#line 646 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 657 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3117 "engines/director/lingo/lingo-gr.cpp"
+#line 3139 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 648 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 659 "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 3126 "engines/director/lingo/lingo-gr.cpp"
+#line 3148 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 652 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 663 "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 3135 "engines/director/lingo/lingo-gr.cpp"
+#line 3157 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3139 "engines/director/lingo/lingo-gr.cpp"
+#line 3161 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3367,5 +3389,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 658 "engines/director/lingo/lingo-gr.y"
+#line 669 "engines/director/lingo/lingo-gr.y"
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 9d15da0..7938120 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -83,53 +83,54 @@ extern int yydebug;
     tGLOBAL = 289,
     tGO = 290,
     tIF = 291,
-    tINTO = 292,
-    tLOOP = 293,
-    tMACRO = 294,
-    tMOVIE = 295,
-    tNEXT = 296,
-    tOF = 297,
-    tPREVIOUS = 298,
-    tPUT = 299,
-    tREPEAT = 300,
-    tSET = 301,
-    tTHEN = 302,
-    tTO = 303,
-    tWHEN = 304,
-    tWITH = 305,
-    tWHILE = 306,
-    tNLELSE = 307,
-    tFACTORY = 308,
-    tOPEN = 309,
-    tPLAY = 310,
-    tDONE = 311,
-    tINSTANCE = 312,
-    tGE = 313,
-    tLE = 314,
-    tEQ = 315,
-    tNEQ = 316,
-    tAND = 317,
-    tOR = 318,
-    tNOT = 319,
-    tMOD = 320,
-    tAFTER = 321,
-    tBEFORE = 322,
-    tCONCAT = 323,
-    tCONTAINS = 324,
-    tSTARTS = 325,
-    tCHAR = 326,
-    tITEM = 327,
-    tLINE = 328,
-    tWORD = 329,
-    tSPRITE = 330,
-    tINTERSECTS = 331,
-    tWITHIN = 332,
-    tTELL = 333,
-    tPROPERTY = 334,
-    tON = 335,
-    tENDIF = 336,
-    tENDREPEAT = 337,
-    tENDTELL = 338
+    tIN = 292,
+    tINTO = 293,
+    tLOOP = 294,
+    tMACRO = 295,
+    tMOVIE = 296,
+    tNEXT = 297,
+    tOF = 298,
+    tPREVIOUS = 299,
+    tPUT = 300,
+    tREPEAT = 301,
+    tSET = 302,
+    tTHEN = 303,
+    tTO = 304,
+    tWHEN = 305,
+    tWITH = 306,
+    tWHILE = 307,
+    tNLELSE = 308,
+    tFACTORY = 309,
+    tOPEN = 310,
+    tPLAY = 311,
+    tDONE = 312,
+    tINSTANCE = 313,
+    tGE = 314,
+    tLE = 315,
+    tEQ = 316,
+    tNEQ = 317,
+    tAND = 318,
+    tOR = 319,
+    tNOT = 320,
+    tMOD = 321,
+    tAFTER = 322,
+    tBEFORE = 323,
+    tCONCAT = 324,
+    tCONTAINS = 325,
+    tSTARTS = 326,
+    tCHAR = 327,
+    tITEM = 328,
+    tLINE = 329,
+    tWORD = 330,
+    tSPRITE = 331,
+    tINTERSECTS = 332,
+    tWITHIN = 333,
+    tTELL = 334,
+    tPROPERTY = 335,
+    tON = 336,
+    tENDIF = 337,
+    tENDREPEAT = 338,
+    tENDTELL = 339
   };
 #endif
 
@@ -152,7 +153,7 @@ union YYSTYPE
 		int oe;
 	} objectfield;
 
-#line 156 "engines/director/lingo/lingo-gr.h"
+#line 157 "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 77e84ca..5de6874 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -107,7 +107,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token<s> ID STRING HANDLER SYMBOL
 %token<s> ENDCLAUSE tPLAYACCEL tMETHOD
 %token<objectfield> THEOBJECTFIELD
-%token tDOWN tELSE tELSIF tEXIT tGLOBAL tGO tIF tINTO tLOOP tMACRO
+%token tDOWN tELSE tELSIF tEXIT tGLOBAL tGO tIF tIN tINTO tLOOP tMACRO
 %token tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN
 %token tWITH tWHILE tNLELSE tFACTORY tOPEN tPLAY tDONE tINSTANCE
 %token tGE tLE tEQ tNEQ tAND tOR tNOT tMOD
@@ -262,6 +262,17 @@ stmt: stmtoneliner
 		(*g_lingo->_currentScript)[$repeatwith + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[$repeatwith + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[$repeatwith + 5] = end; }	/* end, if cond fails */
+	| repeatwith tIN expr[list] end stmtlist end[end3] tENDREPEAT {
+		inst list = 0, body = 0, end = 0;
+		WRITE_UINT32(&list, $list - $repeatwith);
+		WRITE_UINT32(&body, $stmtlist - $repeatwith);
+		WRITE_UINT32(&end, $end3 - $repeatwith);
+		(*g_lingo->_currentScript)[$repeatwith + 1] = list;		/* initial count value */
+		(*g_lingo->_currentScript)[$repeatwith + 2] = 0;		/* final count value */
+		(*g_lingo->_currentScript)[$repeatwith + 3] = body;		/* body of loop */
+		(*g_lingo->_currentScript)[$repeatwith + 4] = 0;		/* increment */
+		(*g_lingo->_currentScript)[$repeatwith + 5] = end; }	/* end, if cond fails */
+
 	| tNEXT tREPEAT {
 		g_lingo->code1(LC::c_nextRepeat); }
 	| when stmtonelinerwithif end {
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 8da5e77..fa8d7e7 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 77
-#define YY_END_OF_BUFFER 78
+#define YY_NUM_RULES 78
+#define YY_END_OF_BUFFER 79
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -375,46 +375,46 @@ struct yy_trans_info
 	};
 static yyconst flex_int16_t yy_accept[366] =
     {   0,
-        0,    0,   78,   76,    4,   74,   74,   76,   76,   76,
-       73,   73,   73,   72,   73,   69,   73,   70,   70,   70,
-       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
-       70,   70,   70,   70,   76,    3,    3,   70,    4,   74,
-        0,    0,    0,   75,    5,   68,    2,   71,   72,   67,
-       65,   66,   70,   70,   70,   70,   70,   70,   70,   70,
-       70,   70,   70,   22,   13,   70,   70,   70,   70,   70,
-       70,   70,   70,   70,   35,   36,   70,   38,   70,   70,
-       70,   70,   70,   70,   70,   70,   70,   70,   58,   70,
-       70,   70,    1,    3,    3,    0,   70,    5,    2,   71,
-
-       70,    7,   70,   70,   70,   70,   70,   70,   16,   70,
-       70,    0,   70,   70,   70,   70,   70,   70,   70,   31,
-       70,   70,   34,   70,   70,   70,   70,   44,   70,   46,
-       70,   70,   70,   70,   70,   70,   70,   70,   70,    0,
-       70,   70,   70,    9,   70,   11,   12,   15,    0,   18,
-       70,    0,   70,   70,   25,   26,   27,   28,   70,   70,
-       70,   33,   37,   40,   70,   70,   70,   70,   70,   70,
-       49,    0,   57,   62,   70,   60,   64,    0,   70,    6,
-       70,   70,    0,   16,   70,   21,   70,   70,   29,   70,
-       32,    0,   70,   70,   70,   70,   70,   70,   70,   56,
-
-       56,   56,   56,   56,   63,   70,    0,   70,    8,   70,
-        0,   16,   19,    0,   70,   70,   70,    0,   70,   70,
-       70,   45,    0,   59,   48,    0,    0,   56,   56,   56,
-       56,   61,    0,   70,   70,   14,    0,   70,   70,    0,
-       30,    0,   70,   70,   70,    0,    0,    0,    0,    0,
-        0,    0,    0,   56,   56,   56,   56,    0,   17,   10,
-        0,   23,   70,   30,   30,    0,   70,   42,   43,    0,
-        0,    0,    0,    0,    0,    0,   56,   56,   56,   56,
-       17,    0,   70,   30,    0,   41,    0,    0,    0,    0,
-        0,    0,    0,    0,   56,    0,   56,    0,   24,   39,
-
-        0,    0,    0,   47,   55,   54,   55,    0,    0,    0,
-        0,   56,    0,    0,    0,   20,   47,    0,    0,    0,
-       54,    0,    0,    0,    0,    0,    0,    0,    0,   47,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   50,
-       51,   47,    0,    0,    0,   55,   54,   54,   55,    0,
-       51,   47,   53,   54,   54,    0,   54,    0,   54,    0,
-        0,    0,    0,   52,    0
+        0,    0,   79,   77,    4,   75,   75,   77,   77,   77,
+       74,   74,   74,   73,   74,   70,   74,   71,   71,   71,
+       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
+       71,   71,   71,   71,   77,    3,    3,   71,    4,   75,
+        0,    0,    0,   76,    5,   69,    2,   72,   73,   68,
+       66,   67,   71,   71,   71,   71,   71,   71,   71,   71,
+       71,   71,   71,   22,   13,   26,   71,   71,   71,   71,
+       71,   71,   71,   71,   36,   37,   71,   39,   71,   71,
+       71,   71,   71,   71,   71,   71,   71,   71,   59,   71,
+       71,   71,    1,    3,    3,    0,   71,    5,    2,   72,
+
+       71,    7,   71,   71,   71,   71,   71,   71,   16,   71,
+       71,    0,   71,   71,   71,   71,   71,   71,   71,   32,
+       71,   71,   35,   71,   71,   71,   71,   45,   71,   47,
+       71,   71,   71,   71,   71,   71,   71,   71,   71,    0,
+       71,   71,   71,    9,   71,   11,   12,   15,    0,   18,
+       71,    0,   71,   71,   25,   27,   28,   29,   71,   71,
+       71,   34,   38,   41,   71,   71,   71,   71,   71,   71,
+       50,    0,   58,   63,   71,   61,   65,    0,   71,    6,
+       71,   71,    0,   16,   71,   21,   71,   71,   30,   71,
+       33,    0,   71,   71,   71,   71,   71,   71,   71,   57,
+
+       57,   57,   57,   57,   64,   71,    0,   71,    8,   71,
+        0,   16,   19,    0,   71,   71,   71,    0,   71,   71,
+       71,   46,    0,   60,   49,    0,    0,   57,   57,   57,
+       57,   62,    0,   71,   71,   14,    0,   71,   71,    0,
+       31,    0,   71,   71,   71,    0,    0,    0,    0,    0,
+        0,    0,    0,   57,   57,   57,   57,    0,   17,   10,
+        0,   23,   71,   31,   31,    0,   71,   43,   44,    0,
+        0,    0,    0,    0,    0,    0,   57,   57,   57,   57,
+       17,    0,   71,   31,    0,   42,    0,    0,    0,    0,
+        0,    0,    0,    0,   57,    0,   57,    0,   24,   40,
+
+        0,    0,    0,   48,   56,   55,   56,    0,    0,    0,
+        0,   57,    0,    0,    0,   20,   48,    0,    0,    0,
+       55,    0,    0,    0,    0,    0,    0,    0,    0,   48,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   51,
+       52,   48,    0,    0,    0,   56,   55,   55,   56,    0,
+       52,   48,   54,   55,   55,    0,   55,    0,   55,    0,
+        0,    0,    0,   53,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -1288,26 +1288,31 @@ YY_RULE_SETUP
 case 26:
 YY_RULE_SETUP
 #line 136 "engines/director/lingo/lingo-lex.l"
-{ count(); return tITEM; }
+{ count(); return tIN; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 137 "engines/director/lingo/lingo-lex.l"
-{ count(); return tLINE; }
+{ count(); return tITEM; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 138 "engines/director/lingo/lingo-lex.l"
-{ count(); return checkImmediate(tLOOP); }
+{ count(); return tLINE; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 139 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMACRO; }
+{ count(); return checkImmediate(tLOOP); }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 140 "engines/director/lingo/lingo-lex.l"
+{ count(); return tMACRO; }
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 141 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1320,50 +1325,45 @@ YY_RULE_SETUP
 		return tMETHOD;
 	}
 	YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 151 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMOD; }
-	YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 152 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMOVIE; }
+{ count(); return tMOD; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 153 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEXT; }
+{ count(); return tMOVIE; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 154 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNOT; }
+{ count(); return tNEXT; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 155 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOF; }
+{ count(); return tNOT; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 156 "engines/director/lingo/lingo-lex.l"
-{ count(); return tON; }		// D3
+{ count(); return tOF; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 157 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOPEN; }
+{ count(); return tON; }		// D3
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 158 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOR; }
+{ count(); return tOPEN; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 159 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPLAY; }
+{ count(); return tOR; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
@@ -1373,36 +1373,41 @@ YY_RULE_SETUP
 case 41:
 YY_RULE_SETUP
 #line 161 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
+{ count(); return tPLAY; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 162 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPREVIOUS; }
+{ count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 163 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPROPERTY; }	// D4
+{ count(); return tPREVIOUS; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 164 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPUT; }
+{ count(); return tPROPERTY; }	// D4
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 165 "engines/director/lingo/lingo-lex.l"
-{ count(); return checkImmediate(tREPEAT); }
+{ count(); return tPUT; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 166 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSET; }
+{ count(); return checkImmediate(tREPEAT); }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 167 "engines/director/lingo/lingo-lex.l"
+{ count(); return tSET; }
+	YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 168 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1424,19 +1429,19 @@ YY_RULE_SETUP
 		}
 	}
 	YY_BREAK
-case 48:
-YY_RULE_SETUP
-#line 187 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSTARTS; }
-	YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 188 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTELL; }
+{ count(); return tSTARTS; }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 189 "engines/director/lingo/lingo-lex.l"
+{ count(); return tTELL; }
+	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 190 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1446,9 +1451,9 @@ YY_RULE_SETUP
 		return THEENTITYWITHID;
 	}
 	YY_BREAK
-case 51:
+case 52:
 YY_RULE_SETUP
-#line 197 "engines/director/lingo/lingo-lex.l"
+#line 198 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1457,9 +1462,9 @@ YY_RULE_SETUP
 		return FBLTIN;
 	}
 	YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 204 "engines/director/lingo/lingo-lex.l"
+#line 205 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1484,9 +1489,9 @@ YY_RULE_SETUP
 			error("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
 	}
 	YY_BREAK
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 227 "engines/director/lingo/lingo-lex.l"
+#line 228 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1508,9 +1513,9 @@ YY_RULE_SETUP
 			error("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
 	}
 	YY_BREAK
-case 54:
+case 55:
 YY_RULE_SETUP
-#line 247 "engines/director/lingo/lingo-lex.l"
+#line 248 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1569,9 +1574,9 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s', field '%s'", ptr, field.c_str());
 	}
 	YY_BREAK
-case 55:
+case 56:
 YY_RULE_SETUP
-#line 304 "engines/director/lingo/lingo-lex.l"
+#line 305 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1604,9 +1609,9 @@ YY_RULE_SETUP
 			return THEENTITY;
 	}
 	YY_BREAK
-case 56:
+case 57:
 YY_RULE_SETUP
-#line 335 "engines/director/lingo/lingo-lex.l"
+#line 336 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1627,74 +1632,74 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s'", ptr);
 	}
 	YY_BREAK
-case 57:
-YY_RULE_SETUP
-#line 354 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTHEN; }
-	YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 355 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTO; }
+{ count(); return tTHEN; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 356 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSPRITE; }
+{ count(); return tTO; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 357 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITH; }
+{ count(); return tSPRITE; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 358 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITHIN; }
+{ count(); return tWITH; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 359 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHEN; }
+{ count(); return tWITHIN; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 360 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHILE; }
+{ count(); return tWHEN; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 361 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWORD; }
+{ count(); return tWHILE; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 363 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEQ; }
+#line 362 "engines/director/lingo/lingo-lex.l"
+{ count(); return tWORD; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 364 "engines/director/lingo/lingo-lex.l"
-{ count(); return tGE; }
+{ count(); return tNEQ; }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 365 "engines/director/lingo/lingo-lex.l"
-{ count(); return tLE; }
+{ count(); return tGE; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 366 "engines/director/lingo/lingo-lex.l"
-{ count(); return tCONCAT; }
+{ count(); return tLE; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 367 "engines/director/lingo/lingo-lex.l"
-{ count(); return tEQ; }
+{ count(); return tCONCAT; }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 369 "engines/director/lingo/lingo-lex.l"
+#line 368 "engines/director/lingo/lingo-lex.l"
+{ count(); return tEQ; }
+	YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 370 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1728,43 +1733,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 71:
-YY_RULE_SETUP
-#line 401 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.f = atof(yytext); return FLOAT; }
-	YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 402 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
+{ count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 403 "engines/director/lingo/lingo-lex.l"
-{ count(); return *yytext; }
+{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 74:
-/* rule 74 can match eol */
 YY_RULE_SETUP
 #line 404 "engines/director/lingo/lingo-lex.l"
-{ count(); return '\n'; }
+{ count(); return *yytext; }
 	YY_BREAK
 case 75:
+/* rule 75 can match eol */
 YY_RULE_SETUP
 #line 405 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
+{ count(); return '\n'; }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 406 "engines/director/lingo/lingo-lex.l"
-{ count(); }
+{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 408 "engines/director/lingo/lingo-lex.l"
+#line 407 "engines/director/lingo/lingo-lex.l"
+{ count(); }
+	YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 409 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1768 "engines/director/lingo/lingo-lex.cpp"
+#line 1773 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2724,7 +2729,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 408 "engines/director/lingo/lingo-lex.l"
+#line 409 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index b454bf1..decba22 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -133,6 +133,7 @@ go			{ count(); return tGO; }
 instance	{ count(); return tINSTANCE; }
 intersects	{ count(); return tINTERSECTS; }
 into		{ count(); return tINTO; }
+in			{ count(); return tIN; }
 item		{ count(); return tITEM; }
 line		{ count(); return tLINE; }
 loop		{ count(); return checkImmediate(tLOOP); }


Commit: 37b473cc0d9a4b26e416142539ae9b8ab331b9b7
    https://github.com/scummvm/scummvm/commit/37b473cc0d9a4b26e416142539ae9b8ab331b9b7
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T13:51:41+01:00

Commit Message:
DIRECTOR: LINGO: Improved debug message

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


diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 791bdee..08c038c 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -126,8 +126,8 @@ const char *Lingo::findNextDefinition(const char *s) {
 }
 
 void Lingo::addCode(const char *code, ScriptType type, uint16 id) {
-	debugC(1, kDebugLingoCompile, "Add code for type %s with id %d\n"
-			"***********\n%s\n\n***********", scriptType2str(type), id, code);
+	debugC(1, kDebugLingoCompile, "Add code for type %s(%d) with id %d\n"
+			"***********\n%s\n\n***********", scriptType2str(type), type, id, code);
 
 	if (_scriptContexts[type].contains(id)) {
 		for (size_t j = 0; j < _scriptContexts[type][id]->functions.size(); j++) {




More information about the Scummvm-git-logs mailing list