[Scummvm-git-logs] scummvm master -> 31211258ada55f1ea6c06cd6c4a99cfcdc64a82a

sev- sev at scummvm.org
Mon Jun 1 09:44:27 UTC 2020


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

Summary:
2e5b1698b0 DIRECTOR: LINGO: Implemented preprocessor for 'when'
cd09d117f3 DIRECTOR: LINGO: Changed grammar for 'when', so it is simpler
31211258ad DIRECTOR: LINGO: Simplified grammar, we do not need if one liners!!!


Commit: 2e5b1698b073cdae524e90954010e9e7774fefcc
    https://github.com/scummvm/scummvm/commit/2e5b1698b073cdae524e90954010e9e7774fefcc
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-06-01T11:44:07+02:00

Commit Message:
DIRECTOR: LINGO: Implemented preprocessor for 'when'

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 e207a2dabc..e0e9a98c7b 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -25,6 +25,7 @@
 
 namespace Director {
 
+Common::String preprocessWhen(Common::String in, bool *changed);
 Common::String preprocessReturn(Common::String in);
 Common::String preprocessPlay(Common::String in);
 Common::String preprocessSound(Common::String in);
@@ -181,15 +182,20 @@ Common::String Lingo::codePreprocessor(const char *s, ScriptType type, uint16 id
 
 		res1 = patchLingoCode(res1, type, id, linenumber);
 
-		res1 = preprocessReturn(res1);
-		res1 = preprocessPlay(res1);
-		res1 = preprocessSound(res1);
+		bool changed = false;
+		res1 = preprocessWhen(res1, &changed);
+
+		if (!changed) {
+			res1 = preprocessReturn(res1);
+			res1 = preprocessPlay(res1);
+			res1 = preprocessSound(res1);
+		}
 
 		res += res1;
 
 		linenumber++;	// We do it here because of 'continue' statements
 
-		if (line.size() < 4) { // If line is too small, then skip it
+		if (line.size() < 4 || changed) { // If line is too small, then skip it
 			if (*s)	// copy newline symbol
 				res += *s++;
 
@@ -378,6 +384,76 @@ const char *strcasestr(const char *s, const char *find) {
 }
 #endif
 
+// when ID then statement -> when ID then "statement"
+Common::String preprocessWhen(Common::String in, bool *changed) {
+	Common::String res, next;
+	const char *ptr = in.c_str();
+	const char *beg = ptr;
+	const char *nextPtr;
+
+	while ((ptr = strcasestr(beg, "when")) != NULL) {
+		if (ptr > in.c_str() && Common::isAlnum(*(ptr - 1))) { // If we're in the middle of a word
+			res += *beg++;
+			continue;
+		}
+
+		ptr += 4; // end of 'play'
+		res += Common::String(beg, ptr);
+
+		if (!*ptr)	// If it is end of the line
+			break;
+
+		if (Common::isAlnum(*ptr)) { // If it is in the middle of the word
+			beg = ptr;
+			continue;
+		}
+
+		*changed = true;
+
+		res += ' ';
+		next = nexttok(ptr, &nextPtr);	// ID
+		res += next;
+
+		res += ' ';
+		next = nexttok(nextPtr, &nextPtr);	// then
+		res += next;
+
+		res += ' ';
+		res += '"';
+
+		// now we need to preprocess quotes
+		bool skipQuote = false;
+		while (*nextPtr) {
+			if (*nextPtr == '"') {
+				res += "\" & QUOTE ";
+
+				if (*(nextPtr + 1))
+					res += "& \"";
+				else
+					skipQuote = true;	// we do not want the last quote
+			} else {
+				res += *nextPtr;
+			}
+
+			nextPtr++;
+		}
+
+		if (!skipQuote)
+			res += '"';
+
+		beg = nextPtr;
+
+		break;
+	}
+
+	res += Common::String(beg);
+
+	if (in.size() != res.size())
+		debugC(2, kDebugLingoParse, "WHEN: in: %s\nout: %s", in.c_str(), res.c_str());
+
+	return res;
+}
+
 // "hello" & return && "world" -> "hello" & scummvm_return && "world"
 //
 // This is to let the grammar not confuse RETURN constant with


Commit: cd09d117f3013fe8f744c73f456d3a07aea29ca6
    https://github.com/scummvm/scummvm/commit/cd09d117f3013fe8f744c73f456d3a07aea29ca6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-06-01T11:44:07+02:00

Commit Message:
DIRECTOR: LINGO: Changed grammar for 'when', so it is simpler

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


diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index e666582119..12b6ad293a 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -131,7 +131,7 @@ static struct FuncDescr {
 	{ LC::c_themenuitementityassign,"c_themenuitementityassign","EF" },
 	{ LC::c_varpush,		"c_varpush",		"s" },
 	{ LC::c_voidpush,		"c_voidpush",		""  },
-	{ LC::c_whencode,		"c_whencode",		"os" },
+	{ LC::c_whencode,		"c_whencode",		"s" },
 	{ LC::c_within,			"c_within",			"" },
 	{ LC::c_wordOf,			"c_wordOf",			"" },	// D3
 	{ LC::c_wordToOf,		"c_wordToOf",		"" },	// D3
@@ -1169,32 +1169,10 @@ void LC::c_exitRepeat(void) {
 }
 
 void LC::c_whencode() {
-	Datum d;
-	uint start = g_lingo->_pc;
-	uint end = g_lingo->readInt() + start - 1;
 	Common::String eventname(g_lingo->readString());
+	Common::String code = g_lingo->pop().asString();
 
-	start = g_lingo->_pc;
-
-	debugC(1, kDebugLingoExec, "c_whencode([%5d][%5d], %s)", start, end, eventname.c_str());
-
-	int entity = g_lingo->_currentEntityId;
-	g_lingo->_currentEntityId = 0;
-
-	Symbol sym = g_lingo->codeDefine(eventname, start, 0, NULL, end, false); // Redefine, but not remove code
-
-	g_lingo->_currentEntityId = entity;
-
-	if (debugChannelSet(1, kDebugLingoExec)) {
-		uint pc = 0;
-		while (pc < sym.u.defn->size()) {
-			uint spc = pc;
-			Common::String instr = g_lingo->decodeInstruction(sym.u.defn, pc, &pc);
-			debugC(1, kDebugLingoExec, "[%5d] %s", spc, instr.c_str());
-		}
-	}
-
-	g_lingo->_pc = end + 1;
+	warning("STUB: c_whencode('%s', '%s'", eventname.c_str(), code.c_str());
 }
 
 void LC::c_tellcode() {
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 4a6620253a..907892225c 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -412,62 +412,59 @@ enum yysymbol_kind_t
   YYSYMBOL_programline = 106,              /* programline  */
   YYSYMBOL_asgn = 107,                     /* asgn  */
   YYSYMBOL_stmtoneliner = 108,             /* stmtoneliner  */
-  YYSYMBOL_stmtonelinerwithif = 109,       /* stmtonelinerwithif  */
-  YYSYMBOL_stmt = 110,                     /* stmt  */
-  YYSYMBOL_111_1 = 111,                    /* $@1  */
-  YYSYMBOL_112_2 = 112,                    /* $@2  */
-  YYSYMBOL_113_3 = 113,                    /* $@3  */
-  YYSYMBOL_114_4 = 114,                    /* $@4  */
-  YYSYMBOL_115_5 = 115,                    /* $@5  */
-  YYSYMBOL_116_6 = 116,                    /* $@6  */
-  YYSYMBOL_117_7 = 117,                    /* $@7  */
-  YYSYMBOL_118_8 = 118,                    /* $@8  */
-  YYSYMBOL_119_9 = 119,                    /* $@9  */
-  YYSYMBOL_tellstart = 120,                /* tellstart  */
-  YYSYMBOL_ifstmt = 121,                   /* ifstmt  */
-  YYSYMBOL_elseifstmtlist = 122,           /* elseifstmtlist  */
-  YYSYMBOL_elseifstmt = 123,               /* elseifstmt  */
-  YYSYMBOL_ifoneliner = 124,               /* ifoneliner  */
-  YYSYMBOL_jumpifz = 125,                  /* jumpifz  */
-  YYSYMBOL_jump = 126,                     /* jump  */
-  YYSYMBOL_varassign = 127,                /* varassign  */
-  YYSYMBOL_if = 128,                       /* if  */
-  YYSYMBOL_begin = 129,                    /* begin  */
-  YYSYMBOL_end = 130,                      /* end  */
-  YYSYMBOL_stmtlist = 131,                 /* stmtlist  */
-  YYSYMBOL_when = 132,                     /* when  */
-  YYSYMBOL_simpleexpr = 133,               /* simpleexpr  */
-  YYSYMBOL_expr = 134,                     /* expr  */
-  YYSYMBOL_chunkexpr = 135,                /* chunkexpr  */
-  YYSYMBOL_reference = 136,                /* reference  */
-  YYSYMBOL_proc = 137,                     /* proc  */
-  YYSYMBOL_138_10 = 138,                   /* $@10  */
-  YYSYMBOL_139_11 = 139,                   /* $@11  */
-  YYSYMBOL_140_12 = 140,                   /* $@12  */
-  YYSYMBOL_globallist = 141,               /* globallist  */
-  YYSYMBOL_propertylist = 142,             /* propertylist  */
-  YYSYMBOL_instancelist = 143,             /* instancelist  */
-  YYSYMBOL_gotofunc = 144,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 145,                /* gotomovie  */
-  YYSYMBOL_playfunc = 146,                 /* playfunc  */
-  YYSYMBOL_147_13 = 147,                   /* $@13  */
-  YYSYMBOL_defn = 148,                     /* defn  */
-  YYSYMBOL_149_14 = 149,                   /* $@14  */
-  YYSYMBOL_150_15 = 150,                   /* $@15  */
-  YYSYMBOL_151_16 = 151,                   /* $@16  */
-  YYSYMBOL_on = 152,                       /* on  */
-  YYSYMBOL_153_17 = 153,                   /* $@17  */
-  YYSYMBOL_argdef = 154,                   /* argdef  */
-  YYSYMBOL_endargdef = 155,                /* endargdef  */
-  YYSYMBOL_argstore = 156,                 /* argstore  */
-  YYSYMBOL_macro = 157,                    /* macro  */
-  YYSYMBOL_arglist = 158,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 159,          /* nonemptyarglist  */
-  YYSYMBOL_list = 160,                     /* list  */
-  YYSYMBOL_valuelist = 161,                /* valuelist  */
-  YYSYMBOL_linearlist = 162,               /* linearlist  */
-  YYSYMBOL_proplist = 163,                 /* proplist  */
-  YYSYMBOL_proppair = 164                  /* proppair  */
+  YYSYMBOL_stmt = 109,                     /* stmt  */
+  YYSYMBOL_110_1 = 110,                    /* $@1  */
+  YYSYMBOL_111_2 = 111,                    /* $@2  */
+  YYSYMBOL_112_3 = 112,                    /* $@3  */
+  YYSYMBOL_113_4 = 113,                    /* $@4  */
+  YYSYMBOL_114_5 = 114,                    /* $@5  */
+  YYSYMBOL_115_6 = 115,                    /* $@6  */
+  YYSYMBOL_116_7 = 116,                    /* $@7  */
+  YYSYMBOL_117_8 = 117,                    /* $@8  */
+  YYSYMBOL_118_9 = 118,                    /* $@9  */
+  YYSYMBOL_tellstart = 119,                /* tellstart  */
+  YYSYMBOL_ifstmt = 120,                   /* ifstmt  */
+  YYSYMBOL_elseifstmtlist = 121,           /* elseifstmtlist  */
+  YYSYMBOL_elseifstmt = 122,               /* elseifstmt  */
+  YYSYMBOL_jumpifz = 123,                  /* jumpifz  */
+  YYSYMBOL_jump = 124,                     /* jump  */
+  YYSYMBOL_varassign = 125,                /* varassign  */
+  YYSYMBOL_if = 126,                       /* if  */
+  YYSYMBOL_begin = 127,                    /* begin  */
+  YYSYMBOL_end = 128,                      /* end  */
+  YYSYMBOL_stmtlist = 129,                 /* stmtlist  */
+  YYSYMBOL_simpleexpr = 130,               /* simpleexpr  */
+  YYSYMBOL_expr = 131,                     /* expr  */
+  YYSYMBOL_chunkexpr = 132,                /* chunkexpr  */
+  YYSYMBOL_reference = 133,                /* reference  */
+  YYSYMBOL_proc = 134,                     /* proc  */
+  YYSYMBOL_135_10 = 135,                   /* $@10  */
+  YYSYMBOL_136_11 = 136,                   /* $@11  */
+  YYSYMBOL_137_12 = 137,                   /* $@12  */
+  YYSYMBOL_globallist = 138,               /* globallist  */
+  YYSYMBOL_propertylist = 139,             /* propertylist  */
+  YYSYMBOL_instancelist = 140,             /* instancelist  */
+  YYSYMBOL_gotofunc = 141,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 142,                /* gotomovie  */
+  YYSYMBOL_playfunc = 143,                 /* playfunc  */
+  YYSYMBOL_144_13 = 144,                   /* $@13  */
+  YYSYMBOL_defn = 145,                     /* defn  */
+  YYSYMBOL_146_14 = 146,                   /* $@14  */
+  YYSYMBOL_147_15 = 147,                   /* $@15  */
+  YYSYMBOL_148_16 = 148,                   /* $@16  */
+  YYSYMBOL_on = 149,                       /* on  */
+  YYSYMBOL_150_17 = 150,                   /* $@17  */
+  YYSYMBOL_argdef = 151,                   /* argdef  */
+  YYSYMBOL_endargdef = 152,                /* endargdef  */
+  YYSYMBOL_argstore = 153,                 /* argstore  */
+  YYSYMBOL_macro = 154,                    /* macro  */
+  YYSYMBOL_arglist = 155,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 156,          /* nonemptyarglist  */
+  YYSYMBOL_list = 157,                     /* list  */
+  YYSYMBOL_valuelist = 158,                /* valuelist  */
+  YYSYMBOL_linearlist = 159,               /* linearlist  */
+  YYSYMBOL_proplist = 160,                 /* proplist  */
+  YYSYMBOL_proppair = 161                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -775,18 +772,18 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  126
+#define YYFINAL  125
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2656
+#define YYLAST   2541
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  104
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  61
+#define YYNNTS  58
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  182
+#define YYNRULES  175
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  383
+#define YYNSTATES  364
 
 #define YYMAXUTOK   343
 
@@ -845,23 +842,22 @@ static const yytype_int16 yyrline[] =
 {
        0,   170,   170,   171,   173,   174,   175,   177,   184,   188,
      199,   200,   201,   208,   215,   222,   229,   235,   242,   253,
-     260,   261,   262,   264,   265,   266,   267,   269,   270,   275,
-     287,   291,   294,   286,   318,   322,   325,   317,   351,   357,
-     363,   350,   390,   392,   397,   401,   406,   410,   417,   425,
-     426,   428,   434,   440,   446,   450,   454,   458,   461,   463,
-     465,   466,   467,   469,   475,   478,   481,   485,   489,   493,
-     501,   502,   503,   514,   515,   516,   519,   522,   525,   528,
-     534,   539,   545,   546,   547,   548,   549,   550,   551,   552,
-     553,   554,   555,   556,   557,   558,   559,   560,   561,   562,
-     563,   564,   565,   566,   567,   569,   570,   571,   572,   573,
-     574,   575,   576,   578,   581,   583,   584,   585,   586,   587,
-     588,   588,   589,   589,   590,   590,   591,   594,   597,   598,
-     600,   605,   611,   616,   622,   627,   640,   641,   642,   643,
-     647,   651,   656,   657,   659,   663,   667,   671,   671,   701,
-     701,   701,   707,   708,   708,   714,   722,   728,   728,   731,
-     732,   733,   735,   736,   737,   739,   741,   749,   750,   751,
-     753,   754,   756,   758,   759,   760,   761,   763,   764,   766,
-     767,   769,   773
+     260,   261,   262,   269,   270,   275,   287,   291,   294,   286,
+     318,   322,   325,   317,   351,   357,   363,   350,   390,   392,
+     395,   399,   404,   408,   415,   423,   424,   426,   444,   448,
+     452,   456,   459,   461,   463,   464,   465,   467,   470,   473,
+     477,   481,   485,   493,   494,   495,   506,   507,   508,   511,
+     514,   517,   520,   526,   531,   537,   538,   539,   540,   541,
+     542,   543,   544,   545,   546,   547,   548,   549,   550,   551,
+     552,   553,   554,   555,   556,   557,   558,   559,   561,   562,
+     563,   564,   565,   566,   567,   568,   570,   573,   575,   576,
+     577,   578,   579,   580,   580,   581,   581,   582,   582,   583,
+     586,   589,   590,   592,   597,   603,   608,   614,   619,   632,
+     633,   634,   635,   639,   643,   648,   649,   651,   655,   659,
+     663,   663,   693,   693,   693,   699,   700,   700,   706,   714,
+     720,   720,   723,   724,   725,   727,   728,   729,   731,   733,
+     741,   742,   743,   745,   746,   748,   750,   751,   752,   753,
+     755,   756,   758,   759,   761,   765
 };
 #endif
 
@@ -893,12 +889,11 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tENDIF",
   "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'",
   "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
-  "$accept", "program", "programline", "asgn", "stmtoneliner",
-  "stmtonelinerwithif", "stmt", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6",
-  "$@7", "$@8", "$@9", "tellstart", "ifstmt", "elseifstmtlist",
-  "elseifstmt", "ifoneliner", "jumpifz", "jump", "varassign", "if",
-  "begin", "end", "stmtlist", "when", "simpleexpr", "expr", "chunkexpr",
-  "reference", "proc", "$@10", "$@11", "$@12", "globallist",
+  "$accept", "program", "programline", "asgn", "stmtoneliner", "stmt",
+  "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9",
+  "tellstart", "ifstmt", "elseifstmtlist", "elseifstmt", "jumpifz", "jump",
+  "varassign", "if", "begin", "end", "stmtlist", "simpleexpr", "expr",
+  "chunkexpr", "reference", "proc", "$@10", "$@11", "$@12", "globallist",
   "propertylist", "instancelist", "gotofunc", "gotomovie", "playfunc",
   "$@13", "defn", "$@14", "$@15", "$@16", "on", "$@17", "argdef",
   "endargdef", "argstore", "macro", "arglist", "nonemptyarglist", "list",
@@ -927,12 +922,12 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-278)
+#define YYPACT_NINF (-295)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-174)
+#define YYTABLE_NINF (-167)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -941,45 +936,43 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     788,   -92,  -278,  -278,    55,  -278,   610,   326,    55,   -33,
-     511,  -278,  -278,  -278,  -278,  -278,  -278,    -8,  -278,  1890,
-    -278,  -278,  -278,    -1,  2046,   -47,    35,    29,    33,  2128,
-    1927,  -278,  2128,  2128,  2128,  2128,  2128,  2128,  2128,  -278,
-    -278,  2128,  2128,  2128,   421,    74,    24,  -278,  -278,  -278,
-    -278,  2128,  1726,  -278,  2548,  -278,  -278,  -278,  -278,  -278,
-    -278,  -278,  -278,  -278,  -278,  -278,  -278,    17,  2046,  2009,
-    2548,    23,  2009,    23,  -278,    55,  2009,  2548,    26,   699,
-    -278,  -278,   101,  2128,  -278,    82,  -278,  2120,  -278,   122,
-    -278,   123,   393,   124,  -278,    -7,    55,    55,    40,    98,
-     104,  -278,  2445,  2120,  -278,   128,  -278,  2168,  2201,  2234,
-    2267,  2515,  2432,   132,   133,  -278,  -278,  2478,    61,    62,
-    -278,  2548,    58,    68,    72,  -278,  -278,   788,  2548,  -278,
-    -278,  2128,  2548,  -278,  -278,  2128,  2128,  2128,  2128,  2128,
-    2128,  2128,  2128,  2128,  2128,  2128,  2128,  2128,  2128,  2128,
-    2128,  2128,   151,  2009,   393,  2478,   -35,  2128,   -20,  -278,
-      18,  2128,    23,   151,  -278,    79,  2548,  2128,  -278,  -278,
-      55,    25,  2128,  2128,   -31,  2128,  2128,  2128,    57,   144,
-    2128,  2128,  2128,  -278,  2128,  -278,  -278,    80,  2128,  2128,
-    2128,  2128,  2128,  2128,  2128,  2128,  2128,  2128,  -278,  -278,
-    -278,    94,  -278,  -278,    55,    55,  -278,  2128,    85,  -278,
-     142,  -278,  2548,    15,    15,    15,    15,  2561,  2561,  -278,
-      -3,    15,    15,    15,    15,    -3,   -53,   -53,  -278,  -278,
-    -278,   -75,  -278,  2548,  -278,  -278,  2548,   -40,   170,  2548,
-    -278,   153,  -278,  -278,  2548,  2548,  2128,  2128,  2548,  2548,
-      15,  2128,  2128,   172,  2548,    15,  2548,  2548,   173,  2548,
-    2300,  2548,  2333,  2548,  2366,  2548,  2399,  2548,  2548,  1808,
-    -278,   177,  -278,  -278,  2548,    61,    62,  -278,  -278,   152,
-    -278,   178,  -278,  -278,   151,  2128,  2548,   240,  -278,  2548,
-      15,    55,  -278,  2128,  2128,  2128,  2128,  -278,  1215,  -278,
-    1129,  1808,  -278,  -278,  -278,    16,  2548,  -278,  -278,  -278,
-    1300,   155,  2548,  2548,  2548,  2548,  -278,  -278,  -278,   118,
-    -278,   125,   874,   959,  -278,  -278,  -278,  -278,   126,  2128,
-    -278,    60,   174,   129,   188,  -278,  -278,   162,   182,  -278,
-    2548,  -278,  2128,  -278,   134,  -278,  -278,  -278,   119,  1044,
-    -278,  2128,   164,  -278,  2548,  -278,  1808,   195,  -278,  2548,
-    2128,  1385,   169,  -278,  -278,  1471,  -278,  2548,   137,  -278,
-     138,  -278,  -278,  -278,  -278,  1129,  -278,  1556,  -278,  -278,
-    -278,  1641,  -278
+     772,   -83,  -295,  -295,    88,  -295,   594,   310,    88,   -27,
+     495,  -295,  -295,  -295,  -295,  -295,  -295,   -17,  -295,  1792,
+    -295,  -295,  -295,   -12,  1948,    27,    41,    30,    53,   224,
+    1829,  -295,   224,   224,   224,   224,   224,   224,   224,  -295,
+    -295,   224,   224,   224,   405,    81,   -56,  -295,  -295,  -295,
+    -295,   224,  -295,  2433,  -295,  -295,  -295,  -295,  -295,  -295,
+    -295,  -295,  -295,  -295,  -295,  -295,   -11,  1948,  1911,  2433,
+       4,  1911,     4,  -295,    88,  1911,  2433,     6,   683,  -295,
+    -295,    77,   224,  -295,    61,  -295,  2020,  -295,    82,  -295,
+      84,  1987,    85,  -295,   -49,    88,    88,    -8,    58,    60,
+    -295,  2330,  2020,  -295,    90,  -295,  2053,  2086,  2119,  2152,
+    2400,  2317,    92,    93,  -295,  -295,  2363,    17,    36,  -295,
+    2433,    40,    43,    45,  -295,  -295,   772,  2433,   224,   224,
+     224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
+     224,   224,   224,   224,   224,   120,  1911,  1987,  2363,   -14,
+     224,    -9,  -295,    -3,   224,     4,   120,  -295,    47,  2433,
+     224,  -295,  -295,    88,    16,   224,   224,   -10,   224,   224,
+     224,    -1,   101,   224,   224,   224,   224,   224,  -295,  -295,
+      50,   224,   224,   224,   224,   224,   224,   224,   224,   224,
+     224,  -295,  -295,  -295,    51,  -295,  -295,    88,    88,  -295,
+     224,    -7,  -295,    99,   117,   117,   117,   117,  2446,  2446,
+    -295,   -45,   117,   117,   117,   117,   -45,   -51,   -51,  -295,
+    -295,  -295,   -46,  -295,  2433,  -295,  -295,  2433,   -29,   127,
+    2433,  -295,   112,  -295,  -295,  2433,  2433,   224,   224,  2433,
+    2433,   117,   224,   224,   131,  2433,   117,  2433,  2433,  2433,
+     132,  2433,  2185,  2433,  2218,  2433,  2251,  2433,  2284,  2433,
+    2433,  1710,  -295,   135,  -295,  -295,  2433,    17,    36,  -295,
+    -295,  -295,   139,  -295,  -295,   120,   224,  2433,   378,  -295,
+    2433,   117,    88,  -295,   224,   224,   224,   224,  -295,  1199,
+    -295,  1113,  -295,  -295,  -295,   -22,  2433,  -295,  -295,  -295,
+    1284,   119,  2433,  2433,  2433,  2433,  -295,  -295,  -295,    86,
+    -295,   858,   943,  -295,  -295,  -295,  -295,    98,   224,  -295,
+      64,   165,  -295,  -295,   138,   158,  -295,  2433,  -295,   224,
+    -295,   109,  -295,    96,  1028,  -295,   224,   143,  -295,  2433,
+    -295,   173,  -295,  2433,   224,  1369,   149,  -295,  1455,  -295,
+    2433,   121,  -295,  -295,  -295,  -295,  -295,  1113,  1540,  -295,
+    -295,  -295,  1625,  -295
 };
 
   /* YYDEFACTSTATE-NUM -- Default reduction number in state STATE-NUM.
@@ -987,69 +980,65 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    64,    69,     0,    65,     0,     0,     0,     0,
-       0,    67,    66,   147,   153,    80,    81,   119,   120,     0,
-     136,    57,   149,     0,     0,     0,     0,     0,     0,     0,
-       0,   124,     0,     0,     0,     0,     0,     0,     0,   122,
-     157,     0,     0,     0,     0,     0,     2,    82,    27,     6,
-      28,     0,     0,    73,    21,   114,    74,    22,   116,   117,
-       5,    58,    20,    71,    72,    68,    79,    68,     0,     0,
-     168,   127,     0,    76,   113,     0,     0,   170,   166,     0,
-      58,   118,     0,     0,   137,     0,   138,   139,   141,     0,
-      42,     0,   115,     0,    58,     0,     0,     0,     0,     0,
-       0,   152,   129,   144,   146,     0,    96,     0,     0,     0,
-       0,     0,     0,     0,     0,   101,   102,     0,    67,    66,
-     174,   177,     0,   175,   176,   179,     1,     0,    54,    59,
-      26,     0,    24,    25,    23,     0,     0,     0,     0,     0,
+       0,     0,    57,    62,     0,    58,     0,     0,     0,     0,
+       0,    60,    59,   140,   146,    73,    74,   112,   113,     0,
+     129,    51,   142,     0,     0,     0,     0,     0,     0,     0,
+       0,   117,     0,     0,     0,     0,     0,     0,     0,   115,
+     150,     0,     0,     0,     0,     0,     2,    75,    23,     6,
+      24,     0,    66,    21,   107,    67,    22,   109,   110,     5,
+      52,    20,    64,    65,    61,    72,    61,     0,     0,   161,
+     120,     0,    69,   106,     0,     0,   163,   159,     0,    52,
+     111,     0,     0,   130,     0,   131,   132,   134,     0,    38,
+       0,   108,     0,    52,     0,     0,     0,     0,     0,     0,
+     145,   122,   137,   139,     0,    89,     0,     0,     0,     0,
+       0,     0,     0,     0,    94,    95,     0,    60,    59,   167,
+     170,     0,   168,   169,   172,     1,     0,    48,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   159,     0,     0,   168,     0,     0,     0,    78,
-       0,     0,   148,   159,   130,   121,   143,     0,   140,   150,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    63,     0,   145,   134,   125,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    46,    46,
-     132,   123,   158,    70,     0,     0,   172,     0,     0,     3,
-       0,    43,    54,    92,    93,    90,    91,    94,    95,    87,
-      98,    99,   100,    89,    88,    97,    83,    84,    85,    86,
-     160,     0,   126,   169,    75,    77,   171,     0,     0,   142,
-      58,     0,     7,     8,    10,    11,     0,     0,    54,    15,
-      13,     0,     0,     0,    14,    12,    19,   128,     0,   105,
-       0,   107,     0,   109,     0,   111,     0,   103,   104,     0,
-      60,     0,   182,   181,   178,     0,     0,   180,    60,     0,
-     165,     0,   165,   131,   159,     0,    38,    30,    60,    16,
-      17,     0,   135,     0,     0,     0,     0,    59,     0,   133,
-       0,     0,    60,   161,    60,     0,     9,    58,    56,    56,
-       0,     0,   106,   108,   110,   112,    45,    61,    62,     0,
-      49,    55,     0,     0,   165,    39,    31,    35,     0,     0,
-      44,    58,     0,     0,   162,    60,    54,     0,     0,    29,
-      18,    58,     0,    50,     0,    58,    53,   163,   155,     0,
-      40,     0,     0,    60,    54,    47,     0,     0,    60,    32,
-       0,     0,     0,    58,   164,     0,    54,    36,     0,    60,
-       0,    41,    60,    54,    48,     0,    52,     0,    60,    51,
-      33,     0,    37
+       0,     0,     0,     0,     0,   152,     0,     0,   161,     0,
+       0,     0,    71,     0,     0,   141,   152,   123,   114,   136,
+       0,   133,   143,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   138,   127,
+     118,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    42,    42,   125,   116,   151,    63,     0,     0,   165,
+       0,     0,     3,     0,    85,    86,    83,    84,    87,    88,
+      80,    91,    92,    93,    82,    81,    90,    76,    77,    78,
+      79,   153,     0,   119,   162,    68,    70,   164,     0,     0,
+     135,    52,     0,     7,     8,    10,    11,     0,     0,    48,
+      15,    13,     0,     0,     0,    14,    12,    19,    39,   121,
+       0,    98,     0,   100,     0,   102,     0,   104,     0,    96,
+      97,     0,    54,     0,   175,   174,   171,     0,     0,   173,
+      54,   158,     0,   158,   124,   152,     0,    34,    26,    54,
+      16,    17,     0,   128,     0,     0,     0,     0,    53,     0,
+     126,     0,    54,   154,    54,     0,     9,    52,    50,    50,
+       0,     0,    99,   101,   103,   105,    41,    55,    56,     0,
+      45,     0,     0,   158,    35,    27,    31,     0,     0,    40,
+      52,   155,    54,    48,     0,     0,    25,    18,    52,     0,
+      46,     0,   156,   148,     0,    36,     0,     0,    54,    48,
+      43,     0,    54,    28,     0,     0,     0,   157,     0,    48,
+      32,     0,    54,    37,    54,    48,    44,     0,     0,    54,
+      47,    29,     0,    33
 };
 
   /* YYPGOTONTERM-NUM.  */
 static const yytype_int16 yypgoto[] =
 {
-    -278,   100,  -278,  -278,  -261,  -278,    19,  -278,  -278,  -278,
-    -278,  -278,  -278,  -278,  -278,  -278,    31,  -278,  -278,  -278,
-    -278,  -173,  -277,   -84,   179,   -78,  -178,   -76,  -278,     3,
-      -6,  -278,    63,   180,  -278,  -278,  -278,  -278,  -278,  -278,
-    -278,   -16,  -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,
-    -160,  -278,  -276,   181,    14,  -278,  -278,  -278,  -278,  -278,
-      27
+    -295,    79,  -295,  -295,   -58,    15,  -295,  -295,  -295,  -295,
+    -295,  -295,  -295,  -295,  -295,    14,  -295,  -295,  -295,  -151,
+    -294,   -86,  -295,   -76,   -75,  1654,     3,    -6,  -295,    52,
+    -295,  -295,  -295,  -295,  -295,  -295,  -295,  -295,   -20,  -295,
+    -295,  -295,  -295,  -295,  -295,  -295,  -295,  -154,  -295,  -261,
+    -295,     2,  -295,  -295,  -295,  -295,  -295,    18
 };
 
   /* YYDEFGOTONTERM-NUM.  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    45,    46,    47,    48,   129,   318,   308,   337,   366,
-     309,   338,   373,   307,   336,   358,   269,    50,   331,   343,
-     130,   210,   320,   326,    51,   152,   211,   298,    52,    53,
-      54,    55,    56,    57,    82,   113,   105,   165,   201,   187,
-      58,    88,    59,    79,    60,    89,   240,    80,    61,   114,
-     231,   348,   302,    62,   160,    78,    63,   122,   123,   124,
-     125
+      -1,    45,    46,    47,    48,   308,   298,   324,   349,   299,
+     325,   355,   297,   323,   342,   261,    50,   320,   330,   203,
+     310,   315,    51,   145,   306,   289,    52,    53,    54,    55,
+      56,    81,   112,   104,   158,   194,   180,    57,    87,    58,
+      78,    59,    88,   231,    79,    60,   113,   222,   333,   292,
+      61,   153,    77,    62,   121,   122,   123,   124
 };
 
   /* YYTABLEYYPACT[STATE-NUM] -- What to do in state STATE-NUM.  If
@@ -1057,112 +1046,136 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      70,    70,   163,   237,    77,    64,   304,    66,   297,    93,
-      94,    74,   246,    87,   104,    75,   175,   141,    92,    49,
-      71,    73,   280,   102,   103,   281,   106,   107,   108,   109,
-     110,   111,   112,   328,   247,   115,   116,   117,   121,   279,
-     321,   150,   151,    81,   332,   128,   132,   176,   335,     8,
-      90,   242,    95,    96,    97,   100,     1,   282,   177,   101,
-     281,    98,   154,   155,   232,   157,   155,   141,    99,     2,
-     155,   168,     3,    70,   126,   288,     5,   166,   159,   234,
-     157,    65,    11,   156,    12,   141,   158,   185,   142,   148,
-     149,   150,   151,   162,   180,   363,   341,   342,   379,   178,
-     179,    33,    34,    35,    36,   181,   147,   148,   149,   150,
-     151,   251,   275,   324,   276,   153,   281,   235,   157,   316,
-     319,   127,   252,   157,   305,   212,   161,   164,   167,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,    49,    70,   169,   170,
-     174,   233,   182,    43,   186,   236,    44,   183,   200,   202,
-     206,   239,   284,   350,   204,   205,   244,   245,   207,   248,
-     249,   250,   208,   241,   254,   255,   256,   230,   257,   238,
-     258,   362,   259,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   253,   372,   271,   278,   283,   285,   291,   292,
-     378,   274,   300,   299,   303,   301,   330,   272,   273,   329,
-     345,   -58,   310,   339,   347,   346,   351,   352,   360,   357,
-     355,   364,   369,   374,   376,   327,   322,   209,   323,   325,
-     270,   131,   133,   134,   243,   277,     0,     0,     0,     0,
-     286,   287,     0,   333,     0,   289,   290,     0,     0,     0,
-       0,     0,     0,   344,     0,     0,     0,     0,     0,   349,
-       0,     0,     0,   353,     0,     0,     0,   356,     0,     0,
-       0,     0,     0,     0,     0,   -34,     0,   361,     0,   306,
-       0,     0,   365,   368,     0,   370,     0,   312,   313,   314,
-     315,     0,     0,   375,   311,     0,   377,     0,     0,     0,
-       0,     0,   381,   135,   136,   137,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
-       0,     0,     0,   340,     0,     0,  -167,     1,     0,   145,
-     146,   147,   148,   149,   150,   151,   354,     0,     0,     0,
-       2,     0,     0,     3,     4,   359,     0,     5,  -167,     7,
-       8,     9,    67,    11,   367,    12,  -167,  -167,     0,    15,
-      16,  -167,  -167,  -167,  -167,  -167,  -167,  -167,  -167,     0,
-    -167,     0,  -167,  -167,  -167,     0,    68,  -167,    26,  -167,
-    -167,  -167,  -167,     0,     0,     0,  -167,  -167,  -167,  -167,
-    -167,  -167,  -167,  -167,  -167,    32,  -167,  -167,  -167,  -167,
-    -167,  -167,    33,    34,    35,    36,    37,  -167,  -167,  -167,
-    -167,     0,  -167,  -167,  -167,  -167,  -167,  -167,    41,    42,
-    -167,  -167,     1,  -167,    72,  -167,  -167,    44,  -167,     0,
-       0,     0,     0,     0,     0,     2,     0,   171,     3,     4,
-       0,     0,     5,     0,     7,     8,     9,    67,   118,     0,
-     119,     0,     0,     0,    15,    16,   135,   136,   137,   138,
-     139,   140,     0,   141,   172,   173,   142,   143,   144,     0,
-       0,    68,     0,    26,     0,     0,     0,     0,     0,     0,
-       0,     0,   145,   146,   147,   148,   149,   150,   151,     0,
-      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   -68,     1,    41,    42,     0,     0,     0,     0,    43,
-       0,     0,    44,  -173,   120,     2,     0,     0,     3,     4,
-       0,     0,     5,   -68,     7,     8,     9,    67,    11,     0,
-      12,   -68,   -68,     0,    15,    16,     0,   -68,   -68,   -68,
-     -68,   -68,   -68,   -68,     0,     0,     0,     0,   -68,     0,
-       0,    68,   -68,    26,     0,     0,   -68,     0,     0,     0,
-       0,   -68,   -68,   -68,   -68,   -68,   -68,   -68,   -68,   -68,
-      32,   -68,     0,     0,   -68,   -68,   -68,    33,    34,    35,
-      36,    37,     0,     0,   -68,   -68,     0,   -68,   -68,   -68,
-     -68,   -68,   -68,    41,    42,   -68,   -68,     0,   -68,    76,
-    -167,     1,    44,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     2,     0,     0,     3,     4,     0,
-       0,     5,  -167,     7,     8,     9,    67,    11,     0,    12,
-    -167,  -167,     0,    15,    16,     0,  -167,  -167,  -167,  -167,
-    -167,  -167,  -167,     0,     0,     0,     0,  -167,     0,     0,
-      68,  -167,    26,     0,     0,  -167,     0,     0,     0,     0,
-    -167,  -167,  -167,     0,     0,     0,     0,     0,     0,    32,
-       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,  -167,  -167,     0,  -167,  -167,  -167,  -167,
-       1,     0,    41,    42,     0,     0,     0,  -167,    69,     0,
-    -167,    44,     0,     2,     0,     0,     3,     4,     0,     0,
-       5,  -167,     7,     8,     9,    67,    11,     0,    12,  -167,
-    -167,     0,    15,    16,     0,  -167,  -167,  -167,  -167,  -167,
-    -167,  -167,     0,     0,     0,     0,  -167,     0,     0,    68,
-    -167,    26,     0,     0,  -167,     0,     0,     0,     0,  -167,
-    -167,  -167,     0,     0,     0,     0,     0,     0,    32,     0,
-       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,  -167,  -167,     0,  -167,  -167,  -167,    -4,     1,
-       0,    41,    42,     0,     0,     0,  -167,    43,     0,  -167,
-      44,     0,     2,     0,     0,     3,     4,     0,     0,     5,
+      69,    69,   228,   156,    76,   169,   317,    65,    70,    72,
+     103,    73,   294,    86,    63,    49,   170,   168,    91,   134,
+     267,    74,   268,   101,   102,   134,   105,   106,   107,   108,
+     109,   110,   111,   237,    80,   114,   115,   116,   120,    89,
+       8,   126,   233,   143,   144,   127,   173,   141,   142,   143,
+     144,   271,   322,   242,   272,   238,    99,   174,    94,    95,
+      96,   147,   148,   360,   243,   148,   161,    97,   273,   148,
+     149,   272,    69,   151,    98,   313,   159,   152,   272,   100,
+     155,   125,   178,    92,    93,   223,   150,   146,   279,     1,
+     225,   150,    33,    34,    35,    36,   226,   150,   171,   172,
+     328,   329,     2,   157,   150,     3,   154,   160,   162,     5,
+     163,   167,   175,   176,    64,    11,   179,    12,   193,   195,
+     197,   295,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,   215,   216,   217,   218,   219,   220,   198,
+      69,    49,   199,   200,   224,   201,   221,   229,   227,   244,
+     250,   263,   270,   274,   230,   275,   276,   282,   283,   235,
+     236,   290,   239,   240,   241,   293,   232,   245,   246,   247,
+     248,   249,   335,   318,   319,   251,   252,   253,   254,   255,
+     256,   257,   258,   259,   260,   326,    43,   134,   346,    44,
+     135,   332,   336,   337,   266,   340,   341,   344,   354,   347,
+     264,   265,   352,   288,   359,   202,   262,   356,   140,   141,
+     142,   143,   144,   316,   309,     0,   234,     0,     0,   269,
+       0,   314,     0,     0,     0,     1,     0,     0,     0,     0,
+       0,   277,   278,     0,     0,     0,   280,   281,     2,     0,
+       0,     3,     4,     0,   331,     5,     0,     7,     8,     9,
+      66,    11,   338,    12,     0,     0,     0,    15,    16,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   351,
+     296,     0,     0,     0,    67,     0,    26,     0,   302,   303,
+     304,   305,     0,     0,     0,   301,     0,     0,     0,     0,
+       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
+      33,    34,    35,    36,    37,     0,     0,     0,     0,     0,
+    -160,     1,   327,     0,     0,     0,    41,    42,     0,     0,
+       0,     0,    43,   339,     2,    44,     0,     3,     4,     0,
+     343,     5,  -160,     7,     8,     9,    66,    11,   350,    12,
+    -160,  -160,     0,    15,    16,  -160,  -160,  -160,  -160,  -160,
+    -160,  -160,  -160,     0,  -160,     0,  -160,  -160,  -160,     0,
+      67,  -160,    26,  -160,  -160,  -160,  -160,     0,     0,     0,
+    -160,  -160,  -160,  -160,  -160,  -160,  -160,  -160,  -160,    32,
+    -160,  -160,  -160,  -160,  -160,  -160,    33,    34,    35,    36,
+      37,  -160,  -160,  -160,  -160,     0,  -160,  -160,  -160,  -160,
+    -160,  -160,    41,    42,  -160,  -160,     1,  -160,    71,  -160,
+    -160,    44,  -160,   -30,     0,     0,     0,     0,     0,     2,
+       0,     0,     3,     4,     0,     0,     5,     0,     7,     8,
+       9,    66,   117,     0,   118,     0,     0,     0,    15,    16,
+       0,   128,   129,   130,   131,   132,   133,     0,   134,     0,
+       0,   135,   136,   137,     0,    67,     0,    26,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   138,   139,   140,
+     141,   142,   143,   144,    32,     0,     0,     0,     0,     0,
+       0,    33,    34,    35,    36,    37,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   -61,     1,    41,    42,     0,
+       0,     0,     0,    43,     0,     0,    44,  -166,   119,     2,
+       0,     0,     3,     4,     0,     0,     5,   -61,     7,     8,
+       9,    66,    11,     0,    12,   -61,   -61,     0,    15,    16,
+       0,   -61,   -61,   -61,   -61,   -61,   -61,   -61,     0,     0,
+       0,     0,   -61,     0,     0,    67,   -61,    26,     0,     0,
+     -61,     0,     0,     0,     0,   -61,   -61,   -61,   -61,   -61,
+     -61,   -61,   -61,   -61,    32,   -61,     0,     0,   -61,   -61,
+     -61,    33,    34,    35,    36,    37,     0,     0,   -61,   -61,
+       0,   -61,   -61,   -61,   -61,   -61,   -61,    41,    42,   -61,
+     -61,     0,   -61,    75,  -160,     1,    44,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     2,     0,
+       0,     3,     4,     0,     0,     5,  -160,     7,     8,     9,
+      66,    11,     0,    12,  -160,  -160,     0,    15,    16,     0,
+    -160,  -160,  -160,  -160,  -160,  -160,  -160,     0,     0,     0,
+       0,  -160,     0,     0,    67,  -160,    26,     0,     0,  -160,
+       0,     0,     0,     0,  -160,  -160,  -160,     0,     0,     0,
+       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
+      33,    34,    35,    36,    37,     0,     0,  -160,  -160,     0,
+    -160,  -160,  -160,  -160,     1,     0,    41,    42,     0,     0,
+       0,  -160,    68,     0,  -160,    44,     0,     2,     0,     0,
+       3,     4,     0,     0,     5,  -160,     7,     8,     9,    66,
+      11,     0,    12,  -160,  -160,     0,    15,    16,     0,  -160,
+    -160,  -160,  -160,  -160,  -160,  -160,     0,     0,     0,     0,
+    -160,     0,     0,    67,  -160,    26,     0,     0,  -160,     0,
+       0,     0,     0,  -160,  -160,  -160,     0,     0,     0,     0,
+       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
+      34,    35,    36,    37,     0,     0,  -160,  -160,     0,  -160,
+    -160,  -160,    -4,     1,     0,    41,    42,     0,     0,     0,
+    -160,    43,     0,  -160,    44,     0,     2,     0,     0,     3,
+       4,     0,     0,     5,     6,     7,     8,     9,    10,    11,
+       0,    12,     0,    13,    14,    15,    16,     0,     0,     0,
+      17,    18,    19,    20,    21,     0,     0,    22,     0,    23,
+       0,     0,    24,    25,    26,     0,     0,    27,     0,     0,
+       0,    28,    29,    30,    31,     0,     0,     0,     0,     0,
+       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     0,     0,    38,    39,    40,  -149,     1,
+       0,     0,     0,     0,    41,    42,     0,     0,     0,    -4,
+      43,     0,     2,    44,     0,     3,     4,     0,     0,     5,
+       6,     7,     8,     9,    10,    11,     0,    12,   321,    13,
+       0,    15,    16,     0,     0,     0,    17,    18,    19,    20,
+      21,     0,     0,     0,     0,    23,     0,     0,    24,    25,
+      26,     0,     0,    27,     0,     0,     0,     0,    29,    30,
+      31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,    38,    39,  -147,     1,     0,     0,     0,     0,     0,
+      41,    42,     0,     0,     0,   307,    43,     2,     0,    44,
+       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
+      11,     0,    12,     0,    13,     0,    15,    16,     0,     0,
+       0,    17,    18,    19,    20,    21,     0,     0,     0,     0,
+      23,     0,     0,    24,    25,    26,     0,     0,    27,     0,
+       0,     0,     0,    29,    30,    31,     0,     0,     0,     0,
+       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
+      34,    35,    36,    37,     0,     0,    38,    39,  -144,     1,
+       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
+     307,    43,     2,     0,    44,     3,     4,     0,     0,     5,
        6,     7,     8,     9,    10,    11,     0,    12,     0,    13,
-      14,    15,    16,     0,     0,     0,    17,    18,    19,    20,
-      21,     0,     0,    22,     0,    23,     0,     0,    24,    25,
-      26,     0,     0,    27,     0,     0,     0,    28,    29,    30,
+       0,    15,    16,     0,     0,     0,    17,    18,    19,    20,
+      21,     0,     0,     0,     0,    23,     0,     0,    24,    25,
+      26,     0,     0,    27,     0,     0,     0,     0,    29,    30,
       31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
        0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,    38,    39,    40,  -156,     1,     0,     0,     0,     0,
-      41,    42,     0,     0,     0,    -4,    43,     0,     2,    44,
-       0,     3,     4,     0,     0,     5,     6,     7,     8,     9,
-      10,    11,     0,    12,   334,    13,     0,    15,    16,     0,
-       0,     0,    17,    18,    19,    20,    21,     0,     0,     0,
-       0,    23,     0,     0,    24,    25,    26,     0,     0,    27,
-       0,     0,     0,     0,    29,    30,    31,     0,     0,     0,
-       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
-      33,    34,    35,    36,    37,     0,     0,    38,    39,  -154,
-       1,     0,     0,     0,     0,     0,    41,    42,     0,     0,
-       0,   317,    43,     2,     0,    44,     3,     4,     0,     0,
+       0,    38,    39,     0,     1,     0,     0,     0,     0,     0,
+      41,    42,     0,     0,     0,   307,    43,     2,     0,    44,
+       3,     4,     0,     0,     5,     6,     7,     8,     9,    10,
+      11,     0,    12,     0,    13,     0,    15,    16,     0,   -49,
+     -49,    17,    18,    19,    20,    21,     0,     0,     0,     0,
+      23,     0,     0,    24,    25,    26,     0,     0,    27,     0,
+       0,     0,     0,    29,    30,    31,     0,     0,     0,     0,
+       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
+      34,    35,    36,    37,     0,     0,    38,    39,     0,   -49,
+       1,     0,     0,     0,     0,    41,    42,     0,     0,     0,
+     307,    43,     0,     2,    44,     0,     3,     4,     0,     0,
        5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
       13,     0,    15,    16,     0,     0,     0,    17,    18,    19,
       20,    21,     0,     0,     0,     0,    23,     0,     0,    24,
       25,    26,     0,     0,    27,     0,     0,     0,     0,    29,
       30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
        0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,    38,    39,  -151,     1,     0,     0,     0,     0,
-       0,    41,    42,     0,     0,     0,   317,    43,     2,     0,
+       0,     0,    38,    39,     0,     1,     0,   -53,     0,     0,
+       0,    41,    42,     0,     0,     0,   307,    43,     2,     0,
       44,     3,     4,     0,     0,     5,     6,     7,     8,     9,
       10,    11,     0,    12,     0,    13,     0,    15,    16,     0,
        0,     0,    17,    18,    19,    20,    21,     0,     0,     0,
@@ -1170,16 +1183,16 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,    29,    30,    31,     0,     0,     0,
        0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
       33,    34,    35,    36,    37,     0,     0,    38,    39,     0,
-       1,     0,     0,     0,     0,     0,    41,    42,     0,     0,
-       0,   317,    43,     2,     0,    44,     3,     4,     0,     0,
+       1,   -49,     0,     0,     0,     0,    41,    42,     0,     0,
+       0,   307,    43,     2,     0,    44,     3,     4,     0,     0,
        5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
-      13,     0,    15,    16,     0,   -55,   -55,    17,    18,    19,
+      13,     0,    15,    16,     0,     0,     0,    17,    18,    19,
       20,    21,     0,     0,     0,     0,    23,     0,     0,    24,
       25,    26,     0,     0,    27,     0,     0,     0,     0,    29,
       30,    31,     0,     0,     0,     0,     0,     0,    32,     0,
        0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,    38,    39,     0,   -55,     1,     0,     0,     0,
-       0,    41,    42,     0,     0,     0,   317,    43,     0,     2,
+       0,     0,    38,    39,     0,   -52,     1,     0,     0,     0,
+       0,    41,    42,     0,     0,     0,   307,    43,     0,     2,
       44,     0,     3,     4,     0,     0,     5,     6,     7,     8,
        9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
        0,     0,     0,    17,    18,    19,    20,    21,     0,     0,
@@ -1187,16 +1200,16 @@ static const yytype_int16 yytable[] =
       27,     0,     0,     0,     0,    29,    30,    31,     0,     0,
        0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
        0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
-       0,     1,     0,   -59,     0,     0,     0,    41,    42,     0,
-       0,     0,   317,    43,     2,     0,    44,     3,     4,     0,
+       0,     1,   353,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,   307,    43,     2,     0,    44,     3,     4,     0,
        0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
        0,    13,     0,    15,    16,     0,     0,     0,    17,    18,
       19,    20,    21,     0,     0,     0,     0,    23,     0,     0,
       24,    25,    26,     0,     0,    27,     0,     0,     0,     0,
       29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
        0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,    38,    39,     0,     1,   -55,     0,     0,
-       0,     0,    41,    42,     0,     0,     0,   317,    43,     2,
+      37,     0,     0,    38,    39,     0,     1,   361,     0,     0,
+       0,     0,    41,    42,     0,     0,     0,   307,    43,     2,
        0,    44,     3,     4,     0,     0,     5,     6,     7,     8,
        9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
        0,     0,     0,    17,    18,    19,    20,    21,     0,     0,
@@ -1204,234 +1217,223 @@ static const yytype_int16 yytable[] =
       27,     0,     0,     0,     0,    29,    30,    31,     0,     0,
        0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
        0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
-       0,   -58,     1,     0,     0,     0,     0,    41,    42,     0,
-       0,     0,   317,    43,     0,     2,    44,     0,     3,     4,
-       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-      12,     0,    13,     0,    15,    16,     0,     0,     0,    17,
-      18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
-       0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
-       0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
-      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,    38,    39,     0,     1,   371,     0,
-       0,     0,     0,    41,    42,     0,     0,     0,   317,    43,
-       2,     0,    44,     3,     4,     0,     0,     5,     6,     7,
-       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
-      16,     0,     0,     0,    17,    18,    19,    20,    21,     0,
-       0,     0,     0,    23,     0,     0,    24,    25,    26,     0,
-       0,    27,     0,     0,     0,     0,    29,    30,    31,     0,
-       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
-       0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
-      39,     0,     1,   380,     0,     0,     0,     0,    41,    42,
-       0,     0,     0,   317,    43,     2,     0,    44,     3,     4,
-       0,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-      12,     0,    13,     0,    15,    16,     0,     0,     0,    17,
-      18,    19,    20,    21,     0,     0,     0,     0,    23,     0,
-       0,    24,    25,    26,     0,     0,    27,     0,     0,     0,
-       0,    29,    30,    31,     0,     0,     0,     0,     0,     0,
-      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     0,     0,    38,    39,     0,     1,   382,     0,
-       0,     0,     0,    41,    42,     0,     0,     0,   317,    43,
-       2,     0,    44,     3,     4,     0,     0,     5,     6,     7,
-       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
-      16,     0,     0,     0,    17,    18,    19,    20,    21,     0,
-       0,     0,     0,     0,     0,     0,    24,     0,    26,     0,
-       0,     0,     0,     0,     0,     0,    29,    30,    31,     0,
-       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
-       0,     0,    33,    34,    35,    36,    37,     0,     0,     1,
-      39,     0,     0,     0,     0,     0,     0,     0,    41,    42,
-       0,     0,     2,     0,    43,     3,     4,    44,     0,     5,
-       6,     7,     8,     9,    10,    11,     0,    12,     0,    13,
-       0,    15,    16,     0,     0,     0,    17,    18,    19,    20,
-       0,     0,     0,     0,     0,     0,     0,     0,    24,     0,
-      26,     0,     0,     0,     0,     0,     0,     0,    29,    30,
-      31,     0,     0,     0,     0,     0,     0,    32,     0,     0,
+       0,     1,   363,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,   307,    43,     2,     0,    44,     3,     4,     0,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
+       0,    13,     0,    15,    16,     0,     0,     0,    17,    18,
+      19,    20,     0,     0,     0,     0,     0,     0,     0,     0,
+      24,     0,    26,     0,     0,     0,     0,     0,     0,     0,
+      29,    30,    31,     0,     0,     0,     0,     0,     0,    32,
+       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,     0,     0,     1,    39,     0,     0,     0,     0,     0,
+       0,     0,    41,    42,     0,     0,     2,     0,    43,     3,
+       4,    44,     0,     5,     0,     7,     8,     9,    66,    11,
+       0,    12,     0,     0,     0,    15,    16,     0,     0,     0,
+       1,     0,     0,     0,     0,     0,     0,     0,    82,    83,
+      84,    85,    67,     2,    26,     0,     3,     4,     0,     0,
+       5,     0,     7,     8,     9,    66,    11,     0,    12,     0,
+       0,    32,    15,    16,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     0,     0,    82,     0,    84,     0,    67,
+       0,    26,     0,     0,    41,    42,     0,     0,     0,     0,
+      43,     0,     0,    44,     0,     0,     0,     0,    32,     0,
+       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+       0,     0,     1,     0,     0,     0,     0,     0,     0,     0,
+       0,    41,    42,     0,   291,     2,     0,    43,     3,     4,
+      44,     0,     5,   300,     7,     8,     9,    66,    11,     0,
+      12,     0,     0,     0,    15,    16,   311,     0,   312,     1,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    67,     2,    26,     0,     3,     4,     0,    90,     5,
+       0,     7,     8,     9,    66,    11,   334,    12,     0,     0,
+      32,    15,    16,     0,     0,     0,     0,    33,    34,    35,
+      36,    37,   345,     0,     0,     0,   348,     0,    67,     0,
+      26,     0,     0,    41,    42,     0,   357,     0,   358,    43,
+    -160,  -160,    44,   362,     0,     0,     0,    32,     0,     0,
        0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,     1,    39,     0,     0,     0,     0,     0,     0,     0,
-      41,    42,     0,     0,     2,     0,    43,     3,     4,    44,
-       0,     5,     0,     7,     8,     9,    67,    11,     0,    12,
-       0,     0,     0,    15,    16,     0,     0,     0,     1,     0,
-       0,     0,     0,     0,     0,     0,    83,    84,    85,    86,
-      68,     2,    26,     0,     3,     4,     0,     0,     5,     0,
-       7,     8,     9,    67,    11,     0,    12,     0,     0,    32,
-      15,    16,     0,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,    83,     0,    85,     0,    68,     0,    26,
-       0,     0,    41,    42,     0,     0,     0,     0,    43,     0,
-       0,    44,     0,     0,     0,     0,    32,     0,     0,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-       1,     0,     0,     0,     0,     0,     0,     0,     0,    41,
-      42,     0,     0,     2,     0,    43,     3,     4,    44,     0,
-       5,     0,     7,     8,     9,    67,    11,     0,    12,     0,
-       0,     0,    15,    16,     0,     0,     0,     1,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    68,
-       2,    26,     0,     3,     4,     0,    91,     5,     0,     7,
-       8,     9,    67,    11,     0,    12,     0,     0,    32,    15,
-      16,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,     0,     0,     0,     0,    68,     0,    26,     0,
-       0,    41,    42,     0,     0,     0,     0,    43,  -167,  -167,
-      44,     0,     0,     0,     0,    32,     0,     0,     0,     0,
-       0,     0,    33,    34,    35,    36,    37,     0,     0,     1,
-       0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
-       0,     0,     2,     0,    43,     3,     4,    44,     0,     5,
-       0,     7,     8,     9,    67,    11,     0,    12,     0,     0,
-       0,    15,    16,     0,     0,     0,    83,     0,    85,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    68,     0,
-      26,     0,     0,   135,   136,   137,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,     0,    32,     0,     0,
-       0,     0,     0,     0,    33,    34,    35,    36,    37,   145,
-     146,   147,   148,   149,   150,   151,   188,     0,     0,     0,
-      41,    42,   189,     0,     0,     0,    43,     0,     0,    44,
-       0,   135,   136,   137,   138,   139,   140,     0,   141,     0,
-       0,   142,   143,   144,     0,     0,     0,     0,     0,   190,
-       0,     0,     0,     0,     0,   191,     0,   145,   146,   147,
-     148,   149,   150,   151,   135,   136,   137,   138,   139,   140,
-       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
-       0,     0,   192,     0,     0,     0,     0,     0,   193,     0,
-     145,   146,   147,   148,   149,   150,   151,   135,   136,   137,
-     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
-       0,     0,     0,     0,     0,   194,     0,     0,     0,     0,
-       0,   195,     0,   145,   146,   147,   148,   149,   150,   151,
-     135,   136,   137,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,     0,     0,     0,     0,     0,   293,     0,
-       0,     0,     0,     0,     0,     0,   145,   146,   147,   148,
-     149,   150,   151,   135,   136,   137,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
-       0,   294,     0,     0,     0,     0,     0,     0,     0,   145,
-     146,   147,   148,   149,   150,   151,   135,   136,   137,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
-       0,     0,     0,     0,   295,     0,     0,     0,     0,     0,
-       0,     0,   145,   146,   147,   148,   149,   150,   151,   135,
-     136,   137,   138,   139,   140,     0,   141,     0,     0,   142,
-     143,   144,     0,     0,     0,     0,     0,   296,     0,     0,
-       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
-     150,   151,   135,   136,   137,   138,   139,   140,     0,   141,
-       0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   198,     0,   145,   146,
-     147,   148,   149,   150,   151,   135,   136,   137,   138,   139,
-     140,   184,   141,     0,     0,   142,   143,   144,   135,   136,
-     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,     0,   199,
-       0,     0,     0,     0,   145,   146,   147,   148,   149,   150,
-     151,   135,   136,   137,   138,   139,   140,     0,   141,     0,
-       0,   142,   143,   144,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
-     148,   149,   150,   151,     0,     0,     0,   203,   135,   136,
-     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,     0,     0,     0,     0,   196,   197,     0,     0,
-       0,     0,     0,     0,   145,   146,   147,   148,   149,   150,
-     151,   135,   136,   137,   138,   139,   140,     0,   141,     0,
-       0,   142,   143,   144,   135,   136,   137,   138,     0,     0,
-       0,   141,     0,     0,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,     0,     0,     0,     0,     0,     0,
-     145,   146,   147,   148,   149,   150,   151
+       0,   164,     0,     0,     0,     0,     0,     0,     0,     0,
+      41,    42,     0,     0,     0,     0,    43,     0,     0,    44,
+     128,   129,   130,   131,   132,   133,     0,   134,   165,   166,
+     135,   136,   137,     0,     0,     0,    82,     0,    84,     0,
+       0,     0,     0,     0,     0,     0,   138,   139,   140,   141,
+     142,   143,   144,   128,   129,   130,   131,   132,   133,     0,
+     134,     0,     0,   135,   136,   137,     0,     0,     0,     0,
+       0,   181,     0,     0,     0,     0,     0,   182,     0,   138,
+     139,   140,   141,   142,   143,   144,   128,   129,   130,   131,
+     132,   133,     0,   134,     0,     0,   135,   136,   137,     0,
+       0,     0,     0,     0,   183,     0,     0,     0,     0,     0,
+     184,     0,   138,   139,   140,   141,   142,   143,   144,   128,
+     129,   130,   131,   132,   133,     0,   134,     0,     0,   135,
+     136,   137,     0,     0,     0,     0,     0,   185,     0,     0,
+       0,     0,     0,   186,     0,   138,   139,   140,   141,   142,
+     143,   144,   128,   129,   130,   131,   132,   133,     0,   134,
+       0,     0,   135,   136,   137,     0,     0,     0,     0,     0,
+     187,     0,     0,     0,     0,     0,   188,     0,   138,   139,
+     140,   141,   142,   143,   144,   128,   129,   130,   131,   132,
+     133,     0,   134,     0,     0,   135,   136,   137,     0,     0,
+       0,     0,     0,   284,     0,     0,     0,     0,     0,     0,
+       0,   138,   139,   140,   141,   142,   143,   144,   128,   129,
+     130,   131,   132,   133,     0,   134,     0,     0,   135,   136,
+     137,     0,     0,     0,     0,     0,   285,     0,     0,     0,
+       0,     0,     0,     0,   138,   139,   140,   141,   142,   143,
+     144,   128,   129,   130,   131,   132,   133,     0,   134,     0,
+       0,   135,   136,   137,     0,     0,     0,     0,     0,   286,
+       0,     0,     0,     0,     0,     0,     0,   138,   139,   140,
+     141,   142,   143,   144,   128,   129,   130,   131,   132,   133,
+       0,   134,     0,     0,   135,   136,   137,     0,     0,     0,
+       0,     0,   287,     0,     0,     0,     0,     0,     0,     0,
+     138,   139,   140,   141,   142,   143,   144,   128,   129,   130,
+     131,   132,   133,     0,   134,     0,     0,   135,   136,   137,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   191,     0,   138,   139,   140,   141,   142,   143,   144,
+     128,   129,   130,   131,   132,   133,   177,   134,     0,     0,
+     135,   136,   137,   128,   129,   130,   131,   132,   133,     0,
+     134,     0,     0,   135,   136,   137,   138,   139,   140,   141,
+     142,   143,   144,     0,   192,     0,     0,     0,     0,   138,
+     139,   140,   141,   142,   143,   144,   128,   129,   130,   131,
+     132,   133,     0,   134,     0,     0,   135,   136,   137,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   138,   139,   140,   141,   142,   143,   144,     0,
+       0,     0,   196,   128,   129,   130,   131,   132,   133,     0,
+     134,     0,     0,   135,   136,   137,     0,     0,     0,     0,
+       0,   189,   190,     0,     0,     0,     0,     0,     0,   138,
+     139,   140,   141,   142,   143,   144,   128,   129,   130,   131,
+     132,   133,     0,   134,     0,     0,   135,   136,   137,   128,
+     129,   130,   131,     0,     0,     0,   134,     0,     0,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,     0,
+       0,     0,     0,     0,     0,   138,   139,   140,   141,   142,
+     143,   144
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,    80,   163,    10,    97,   282,     4,   269,    56,
-      57,     8,    43,    19,    30,    48,    94,    70,    24,     0,
-       6,     7,    97,    29,    30,   100,    32,    33,    34,    35,
-      36,    37,    38,   310,    65,    41,    42,    43,    44,   212,
-     301,    94,    95,    51,   321,    51,    52,    54,   324,    24,
-      51,    26,    17,    18,    19,    26,     1,    97,    65,    26,
-     100,    26,    68,    69,    99,   100,    72,    70,    33,    14,
-      76,    87,    17,    79,     0,   248,    21,    83,    75,    99,
-     100,    26,    27,    69,    29,    70,    72,   103,    73,    92,
-      93,    94,    95,    79,    54,   356,    36,    37,   375,    96,
-      97,    76,    77,    78,    79,    65,    91,    92,    93,    94,
-      95,    54,    27,    97,    29,    98,   100,    99,   100,   297,
-     298,    97,    65,   100,   284,   131,   100,    26,    46,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
-     146,   147,   148,   149,   150,   151,   127,   153,    26,    26,
-      26,   157,    54,    98,    26,   161,   101,    53,    26,    26,
-     102,   167,   240,   336,   103,   103,   172,   173,   100,   175,
-     176,   177,   100,   170,   180,   181,   182,    26,   184,   100,
-     100,   354,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,    48,   366,   100,    53,    26,    44,    26,    26,
-     373,   207,   278,    26,    26,    53,    88,   204,   205,    54,
-      36,    86,   288,    87,    26,    86,    54,    35,    54,   100,
-      86,    26,    53,    86,    86,   309,   302,   127,   304,   307,
-     199,    52,    52,    52,   171,   208,    -1,    -1,    -1,    -1,
-     246,   247,    -1,   321,    -1,   251,   252,    -1,    -1,    -1,
-      -1,    -1,    -1,   331,    -1,    -1,    -1,    -1,    -1,   335,
-      -1,    -1,    -1,   341,    -1,    -1,    -1,   345,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    35,    -1,   353,    -1,   285,
-      -1,    -1,   358,   361,    -1,   363,    -1,   293,   294,   295,
-     296,    -1,    -1,   369,   291,    -1,   372,    -1,    -1,    -1,
-      -1,    -1,   378,    63,    64,    65,    66,    67,    68,    -1,
-      70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   329,    -1,    -1,     0,     1,    -1,    89,
-      90,    91,    92,    93,    94,    95,   342,    -1,    -1,    -1,
-      14,    -1,    -1,    17,    18,   351,    -1,    21,    22,    23,
-      24,    25,    26,    27,   360,    29,    30,    31,    -1,    33,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
-      44,    -1,    46,    47,    48,    -1,    50,    51,    52,    53,
-      54,    55,    56,    -1,    -1,    -1,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    -1,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,     1,    97,    98,    99,   100,   101,   102,    -1,
-      -1,    -1,    -1,    -1,    -1,    14,    -1,    44,    17,    18,
-      -1,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    -1,    -1,    33,    34,    63,    64,    65,    66,
-      67,    68,    -1,    70,    71,    72,    73,    74,    75,    -1,
-      -1,    50,    -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,     0,     1,    92,    93,    -1,    -1,    -1,    -1,    98,
-      -1,    -1,   101,   102,   103,    14,    -1,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    30,    31,    -1,    33,    34,    -1,    36,    37,    38,
-      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
-      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
-      -1,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    -1,    -1,    73,    74,    75,    76,    77,    78,
-      79,    80,    -1,    -1,    83,    84,    -1,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    -1,    97,    98,
-       0,     1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
-      30,    31,    -1,    33,    34,    -1,    36,    37,    38,    39,
-      40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,
-      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
-      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    -1,    -1,    83,    84,    -1,    86,    87,    88,     0,
-       1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,
-     100,   101,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
-      31,    -1,    33,    34,    -1,    36,    37,    38,    39,    40,
-      41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
-      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,
-      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    83,    84,    -1,    86,    87,    88,     0,     1,
-      -1,    92,    93,    -1,    -1,    -1,    97,    98,    -1,   100,
-     101,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
-      32,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
-      42,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,
-      52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,
-      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
-      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
-      -1,    83,    84,    85,     0,     1,    -1,    -1,    -1,    -1,
-      92,    93,    -1,    -1,    -1,    97,    98,    -1,    14,   101,
+       6,     7,   156,    79,    10,    54,   300,     4,     6,     7,
+      30,     8,   273,    19,    97,     0,    65,    93,    24,    70,
+      27,    48,    29,    29,    30,    70,    32,    33,    34,    35,
+      36,    37,    38,    43,    51,    41,    42,    43,    44,    51,
+      24,    97,    26,    94,    95,    51,    54,    92,    93,    94,
+      95,    97,   313,    54,   100,    65,    26,    65,    17,    18,
+      19,    67,    68,   357,    65,    71,    86,    26,    97,    75,
+      68,   100,    78,    71,    33,    97,    82,    74,   100,    26,
+      78,     0,   102,    56,    57,    99,   100,    98,   239,     1,
+      99,   100,    76,    77,    78,    79,    99,   100,    95,    96,
+      36,    37,    14,    26,   100,    17,   100,    46,    26,    21,
+      26,    26,    54,    53,    26,    27,    26,    29,    26,    26,
+     103,   275,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   103,
+     146,   126,   102,   100,   150,   100,    26,   100,   154,    48,
+     100,   100,    53,    26,   160,   231,    44,    26,    26,   165,
+     166,    26,   168,   169,   170,    26,   163,   173,   174,   175,
+     176,   177,   323,    54,    88,   181,   182,   183,   184,   185,
+     186,   187,   188,   189,   190,    87,    98,    70,   339,   101,
+      73,    26,    54,    35,   200,    86,   100,    54,   349,    26,
+     197,   198,    53,   261,   355,   126,   192,    86,    91,    92,
+      93,    94,    95,   299,   289,    -1,   164,    -1,    -1,   201,
+      -1,   297,    -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,
+      -1,   237,   238,    -1,    -1,    -1,   242,   243,    14,    -1,
+      -1,    17,    18,    -1,   320,    21,    -1,    23,    24,    25,
+      26,    27,   328,    29,    -1,    -1,    -1,    33,    34,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,
+     276,    -1,    -1,    -1,    50,    -1,    52,    -1,   284,   285,
+     286,   287,    -1,    -1,    -1,   282,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,
+       0,     1,   318,    -1,    -1,    -1,    92,    93,    -1,    -1,
+      -1,    -1,    98,   329,    14,   101,    -1,    17,    18,    -1,
+     336,    21,    22,    23,    24,    25,    26,    27,   344,    29,
+      30,    31,    -1,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    -1,    44,    -1,    46,    47,    48,    -1,
+      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    -1,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    84,    -1,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,     1,    97,    98,    99,
+     100,   101,   102,    35,    -1,    -1,    -1,    -1,    -1,    14,
+      -1,    -1,    17,    18,    -1,    -1,    21,    -1,    23,    24,
+      25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
+      -1,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
+      -1,    73,    74,    75,    -1,    50,    -1,    52,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,
+      92,    93,    94,    95,    69,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     0,     1,    92,    93,    -1,
+      -1,    -1,    -1,    98,    -1,    -1,   101,   102,   103,    14,
+      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,    26,    27,    -1,    29,    30,    31,    -1,    33,    34,
+      -1,    36,    37,    38,    39,    40,    41,    42,    -1,    -1,
+      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    -1,    -1,    -1,    -1,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    -1,    -1,    73,    74,
+      75,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
+      -1,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    -1,    97,    98,     0,     1,   101,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,
       -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
       26,    27,    -1,    29,    30,    31,    -1,    33,    34,    -1,
-      -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,
+      36,    37,    38,    39,    40,    41,    42,    -1,    -1,    -1,
       -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
       -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,
       -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    77,    78,    79,    80,    -1,    -1,    83,    84,     0,
-       1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
-      -1,    97,    98,    14,    -1,   101,    17,    18,    -1,    -1,
+      76,    77,    78,    79,    80,    -1,    -1,    83,    84,    -1,
+      86,    87,    88,     0,     1,    -1,    92,    93,    -1,    -1,
+      -1,    97,    98,    -1,   100,   101,    -1,    14,    -1,    -1,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    30,    31,    -1,    33,    34,    -1,    36,
+      37,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
+      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
+      -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
+      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      77,    78,    79,    80,    -1,    -1,    83,    84,    -1,    86,
+      87,    88,     0,     1,    -1,    92,    93,    -1,    -1,    -1,
+      97,    98,    -1,   100,   101,    -1,    14,    -1,    -1,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
+      -1,    29,    -1,    31,    32,    33,    34,    -1,    -1,    -1,
+      38,    39,    40,    41,    42,    -1,    -1,    45,    -1,    47,
+      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
+      -1,    59,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,
+      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
+      78,    79,    80,    -1,    -1,    83,    84,    85,     0,     1,
+      -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,
+      98,    -1,    14,   101,    -1,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
+      -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
+      52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
+      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,    83,    84,     0,     1,    -1,    -1,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    -1,    97,    98,    14,    -1,   101,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
+      -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
+      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
+      -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
+      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      77,    78,    79,    80,    -1,    -1,    83,    84,     0,     1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      97,    98,    14,    -1,   101,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
+      -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
+      52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,    61,
+      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,    83,    84,    -1,     1,    -1,    -1,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    -1,    97,    98,    14,    -1,   101,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    36,
+      37,    38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,
+      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
+      -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
+      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      77,    78,    79,    80,    -1,    -1,    83,    84,    -1,    86,
+       1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      97,    98,    -1,    14,   101,    -1,    17,    18,    -1,    -1,
       21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
       31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,
       41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
       51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,
       61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
       -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    83,    84,     0,     1,    -1,    -1,    -1,    -1,
+      -1,    -1,    83,    84,    -1,     1,    -1,    88,    -1,    -1,
       -1,    92,    93,    -1,    -1,    -1,    97,    98,    14,    -1,
      101,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
       26,    27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,
@@ -1440,10 +1442,10 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,
       -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
       76,    77,    78,    79,    80,    -1,    -1,    83,    84,    -1,
-       1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
+       1,    87,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
       -1,    97,    98,    14,    -1,   101,    17,    18,    -1,    -1,
       21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      31,    -1,    33,    34,    -1,    36,    37,    38,    39,    40,
+      31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,
       41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
       51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    60,
       61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
@@ -1457,7 +1459,7 @@ static const yytype_int16 yycheck[] =
       55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
       -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
       -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
-      -1,     1,    -1,    88,    -1,    -1,    -1,    92,    93,    -1,
+      -1,     1,    87,    -1,    -1,    -1,    -1,    92,    93,    -1,
       -1,    -1,    97,    98,    14,    -1,   101,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
       -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,
@@ -1474,125 +1476,90 @@ static const yytype_int16 yycheck[] =
       55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
       -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
       -1,    76,    77,    78,    79,    80,    -1,    -1,    83,    84,
-      -1,    86,     1,    -1,    -1,    -1,    -1,    92,    93,    -1,
-      -1,    -1,    97,    98,    -1,    14,   101,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
-      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
-      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
-      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    83,    84,    -1,     1,    87,    -1,
-      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
-      14,    -1,   101,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
-      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
-      -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
-      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
-      84,    -1,     1,    87,    -1,    -1,    -1,    -1,    92,    93,
-      -1,    -1,    -1,    97,    98,    14,    -1,   101,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
-      39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,    -1,
-      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
-      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    83,    84,    -1,     1,    87,    -1,
-      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
-      14,    -1,   101,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
-      34,    -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
-      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,     1,
-      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,    21,
-      22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
-      -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,
-      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
-      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
-      -1,     1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      92,    93,    -1,    -1,    14,    -1,    98,    17,    18,   101,
-      -1,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
-      -1,    -1,    -1,    33,    34,    -1,    -1,    -1,     1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
-      50,    14,    52,    -1,    17,    18,    -1,    -1,    21,    -1,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    69,
-      33,    34,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    -1,    -1,    46,    -1,    48,    -1,    50,    -1,    52,
-      -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,
-      -1,   101,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-       1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,
+      -1,     1,    87,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    -1,    97,    98,    14,    -1,   101,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,
+      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      50,    -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    -1,    -1,     1,    84,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    -1,    -1,    14,    -1,    98,    17,
+      18,   101,    -1,    21,    -1,    23,    24,    25,    26,    27,
+      -1,    29,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,
+       1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    14,    52,    -1,    17,    18,    -1,    -1,
       21,    -1,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      -1,    -1,    33,    34,    -1,    -1,    -1,     1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
-      14,    52,    -1,    17,    18,    -1,    20,    21,    -1,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    -1,    69,    33,
-      34,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,
-      -1,    92,    93,    -1,    -1,    -1,    -1,    98,    99,   100,
-     101,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,     1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,    21,
-      -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
-      -1,    33,    34,    -1,    -1,    -1,    46,    -1,    48,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-      52,    -1,    -1,    63,    64,    65,    66,    67,    68,    -1,
-      70,    -1,    -1,    73,    74,    75,    -1,    69,    -1,    -1,
-      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    89,
-      90,    91,    92,    93,    94,    95,    48,    -1,    -1,    -1,
-      92,    93,    54,    -1,    -1,    -1,    98,    -1,    -1,   101,
-      -1,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
-      -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,    91,
-      92,    93,    94,    95,    63,    64,    65,    66,    67,    68,
-      -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
-      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    -1,
-      89,    90,    91,    92,    93,    94,    95,    63,    64,    65,
-      66,    67,    68,    -1,    70,    -1,    -1,    73,    74,    75,
-      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
-      -1,    54,    -1,    89,    90,    91,    92,    93,    94,    95,
-      63,    64,    65,    66,    67,    68,    -1,    70,    -1,    -1,
-      73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,
+      -1,    69,    33,    34,    -1,    -1,    -1,    -1,    76,    77,
+      78,    79,    80,    -1,    -1,    46,    -1,    48,    -1,    50,
+      -1,    52,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,
+      98,    -1,    -1,   101,    -1,    -1,    -1,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
+      -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    -1,   270,    14,    -1,    98,    17,    18,
+     101,    -1,    21,   279,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    -1,    -1,    33,    34,   292,    -1,   294,     1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    50,    14,    52,    -1,    17,    18,    -1,    20,    21,
+      -1,    23,    24,    25,    26,    27,   322,    29,    -1,    -1,
+      69,    33,    34,    -1,    -1,    -1,    -1,    76,    77,    78,
+      79,    80,   338,    -1,    -1,    -1,   342,    -1,    50,    -1,
+      52,    -1,    -1,    92,    93,    -1,   352,    -1,   354,    98,
+      99,   100,   101,   359,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
+      63,    64,    65,    66,    67,    68,    -1,    70,    71,    72,
+      73,    74,    75,    -1,    -1,    -1,    46,    -1,    48,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,
       93,    94,    95,    63,    64,    65,    66,    67,    68,    -1,
       70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,
       90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
       67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,
       -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    63,
+      54,    -1,    89,    90,    91,    92,    93,    94,    95,    63,
       64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
       74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
+      -1,    -1,    -1,    54,    -1,    89,    90,    91,    92,    93,
       94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
       -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,
+      48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,
       91,    92,    93,    94,    95,    63,    64,    65,    66,    67,
-      68,    56,    70,    -1,    -1,    73,    74,    75,    63,    64,
+      68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,
+      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    89,    90,    91,    92,    93,    94,    95,    63,    64,
       65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
-      75,    89,    90,    91,    92,    93,    94,    95,    -1,    97,
+      75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
       95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
-      -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,
-      92,    93,    94,    95,    -1,    -1,    -1,    99,    63,    64,
-      65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
-      75,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    -1,
-      -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
-      95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
-      -1,    73,    74,    75,    63,    64,    65,    66,    -1,    -1,
-      -1,    70,    -1,    -1,    73,    74,    75,    89,    90,    91,
-      92,    93,    94,    95,    -1,    -1,    -1,    -1,    -1,    -1,
-      89,    90,    91,    92,    93,    94,    95
+      92,    93,    94,    95,    63,    64,    65,    66,    67,    68,
+      -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
+      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      89,    90,    91,    92,    93,    94,    95,    63,    64,    65,
+      66,    67,    68,    -1,    70,    -1,    -1,    73,    74,    75,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    54,    -1,    89,    90,    91,    92,    93,    94,    95,
+      63,    64,    65,    66,    67,    68,    56,    70,    -1,    -1,
+      73,    74,    75,    63,    64,    65,    66,    67,    68,    -1,
+      70,    -1,    -1,    73,    74,    75,    89,    90,    91,    92,
+      93,    94,    95,    -1,    97,    -1,    -1,    -1,    -1,    89,
+      90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
+      67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    -1,
+      -1,    -1,    99,    63,    64,    65,    66,    67,    68,    -1,
+      70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
+      -1,    81,    82,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
+      67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    63,
+      64,    65,    66,    -1,    -1,    -1,    70,    -1,    -1,    73,
+      74,    75,    89,    90,    91,    92,    93,    94,    95,    -1,
+      -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
+      94,    95
 };
 
   /* YYSTOSSTATE-NUM -- The (internal number of the) accessing
@@ -1603,41 +1570,39 @@ static const yytype_uint8 yystos[] =
       26,    27,    29,    31,    32,    33,    34,    38,    39,    40,
       41,    42,    45,    47,    50,    51,    52,    55,    59,    60,
       61,    62,    69,    76,    77,    78,    79,    80,    83,    84,
-      85,    92,    93,    98,   101,   105,   106,   107,   108,   110,
-     121,   128,   132,   133,   134,   135,   136,   137,   144,   146,
-     148,   152,   157,   160,    97,    26,   133,    26,    50,    98,
-     134,   158,    98,   158,   133,    48,    98,   134,   159,   147,
-     151,    51,   138,    46,    47,    48,    49,   134,   145,   149,
-      51,    20,   134,    56,    57,    17,    18,    19,    26,    33,
-      26,    26,   134,   134,   145,   140,   134,   134,   134,   134,
-     134,   134,   134,   139,   153,   134,   134,   134,    27,    29,
-     103,   134,   161,   162,   163,   164,     0,    97,   134,   109,
-     124,   128,   134,   137,   157,    63,    64,    65,    66,    67,
-      68,    70,    73,    74,    75,    89,    90,    91,    92,    93,
-      94,    95,   129,    98,   134,   134,   158,   100,   158,   133,
-     158,   100,   158,   129,    26,   141,   134,    46,   145,    26,
-      26,    44,    71,    72,    26,   129,    54,    65,   133,   133,
-      54,    65,    54,    53,    56,   145,    26,   143,    48,    54,
-      48,    54,    48,    54,    48,    54,    81,    82,    54,    97,
-      26,   142,    26,    99,   103,   103,   102,   100,   100,   105,
-     125,   130,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-      26,   154,    99,   134,    99,    99,   134,   154,   100,   134,
-     150,   133,    26,   136,   134,   134,    43,    65,   134,   134,
-     134,    54,    65,    48,   134,   134,   134,   134,   100,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   120,
-     120,   100,   133,   133,   134,    27,    29,   164,    53,   125,
-      97,   100,    97,    26,   129,    44,   134,   134,   125,   134,
-     134,    26,    26,    48,    48,    48,    48,   108,   131,    26,
-     131,    53,   156,    26,   156,   154,   134,   117,   111,   114,
-     131,   133,   134,   134,   134,   134,   130,    97,   110,   130,
-     126,   108,   131,   131,    97,   129,   127,   127,   126,    54,
-      88,   122,   126,   129,    30,   156,   118,   112,   115,    87,
-     134,    36,    37,   123,   129,    36,    86,    26,   155,   131,
-     125,    54,    35,   129,   134,    86,   129,   100,   119,   134,
-      54,   131,   125,   108,    26,   131,   113,   134,   129,    53,
-     129,    87,   125,   116,    86,   131,    86,   131,   125,   126,
-      87,   131,    87
+      85,    92,    93,    98,   101,   105,   106,   107,   108,   109,
+     120,   126,   130,   131,   132,   133,   134,   141,   143,   145,
+     149,   154,   157,    97,    26,   130,    26,    50,    98,   131,
+     155,    98,   155,   130,    48,    98,   131,   156,   144,   148,
+      51,   135,    46,    47,    48,    49,   131,   142,   146,    51,
+      20,   131,    56,    57,    17,    18,    19,    26,    33,    26,
+      26,   131,   131,   142,   137,   131,   131,   131,   131,   131,
+     131,   131,   136,   150,   131,   131,   131,    27,    29,   103,
+     131,   158,   159,   160,   161,     0,    97,   131,    63,    64,
+      65,    66,    67,    68,    70,    73,    74,    75,    89,    90,
+      91,    92,    93,    94,    95,   127,    98,   131,   131,   155,
+     100,   155,   130,   155,   100,   155,   127,    26,   138,   131,
+      46,   142,    26,    26,    44,    71,    72,    26,   127,    54,
+      65,   130,   130,    54,    65,    54,    53,    56,   142,    26,
+     140,    48,    54,    48,    54,    48,    54,    48,    54,    81,
+      82,    54,    97,    26,   139,    26,    99,   103,   103,   102,
+     100,   100,   105,   123,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,    26,   151,    99,   131,    99,    99,   131,   151,   100,
+     131,   147,   130,    26,   133,   131,   131,    43,    65,   131,
+     131,   131,    54,    65,    48,   131,   131,   131,   131,   131,
+     100,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   119,   119,   100,   130,   130,   131,    27,    29,   161,
+      53,    97,   100,    97,    26,   127,    44,   131,   131,   123,
+     131,   131,    26,    26,    48,    48,    48,    48,   108,   129,
+      26,   129,   153,    26,   153,   151,   131,   116,   110,   113,
+     129,   130,   131,   131,   131,   131,   128,    97,   109,   128,
+     124,   129,   129,    97,   127,   125,   125,   124,    54,    88,
+     121,    30,   153,   117,   111,   114,    87,   131,    36,    37,
+     122,   127,    26,   152,   129,   123,    54,    35,   127,   131,
+      86,   100,   118,   131,    54,   129,   123,    26,   129,   112,
+     131,   127,    53,    87,   123,   115,    86,   129,   129,   123,
+     124,    87,   129,    87
 };
 
   /* YYR1YYN -- Symbol number of symbol that rule YYN derives.  */
@@ -1645,23 +1610,22 @@ static const yytype_uint8 yyr1[] =
 {
        0,   104,   105,   105,   106,   106,   106,   107,   107,   107,
      107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
-     108,   108,   108,   109,   109,   109,   109,   110,   110,   110,
-     111,   112,   113,   110,   114,   115,   116,   110,   117,   118,
-     119,   110,   110,   110,   110,   110,   120,   121,   121,   122,
-     122,   123,   124,   124,   125,   126,   127,   128,   129,   130,
-     131,   131,   131,   132,   133,   133,   133,   133,   133,   133,
-     133,   133,   133,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   135,   135,   135,   135,   135,
-     135,   135,   135,   136,   136,   137,   137,   137,   137,   137,
-     138,   137,   139,   137,   140,   137,   137,   137,   137,   137,
-     141,   141,   142,   142,   143,   143,   144,   144,   144,   144,
-     144,   144,   145,   145,   146,   146,   146,   147,   146,   149,
-     150,   148,   148,   151,   148,   148,   148,   153,   152,   154,
-     154,   154,   155,   155,   155,   156,   157,   158,   158,   158,
-     159,   159,   160,   161,   161,   161,   161,   162,   162,   163,
-     163,   164,   164
+     108,   108,   108,   109,   109,   109,   110,   111,   112,   109,
+     113,   114,   115,   109,   116,   117,   118,   109,   109,   109,
+     109,   109,   119,   120,   120,   121,   121,   122,   123,   124,
+     125,   126,   127,   128,   129,   129,   129,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   132,   132,
+     132,   132,   132,   132,   132,   132,   133,   133,   134,   134,
+     134,   134,   134,   135,   134,   136,   134,   137,   134,   134,
+     134,   134,   134,   138,   138,   139,   139,   140,   140,   141,
+     141,   141,   141,   141,   141,   142,   142,   143,   143,   143,
+     144,   143,   146,   147,   145,   145,   148,   145,   145,   145,
+     150,   149,   151,   151,   151,   152,   152,   152,   153,   154,
+     155,   155,   155,   156,   156,   157,   158,   158,   158,   158,
+     159,   159,   160,   160,   161,   161
 };
 
   /* YYR2YYN -- Number of symbols on the right hand side of rule YYN.  */
@@ -1669,23 +1633,22 @@ static const yytype_int8 yyr2[] =
 {
        0,     2,     1,     3,     0,     1,     1,     4,     4,     6,
        4,     4,     4,     4,     4,     4,     5,     5,     8,     4,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     8,
-       0,     0,     0,    14,     0,     0,     0,    15,     0,     0,
-       0,    12,     2,     3,     7,     6,     0,     9,    12,     0,
-       2,     6,    11,     7,     0,     0,     0,     1,     0,     0,
-       0,     2,     2,     3,     1,     1,     1,     1,     1,     1,
-       3,     1,     2,     1,     1,     4,     2,     4,     3,     2,
-       1,     1,     1,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     2,     3,     3,     3,
-       3,     2,     2,     4,     4,     4,     6,     4,     6,     4,
-       6,     4,     6,     2,     1,     2,     1,     1,     2,     1,
-       0,     3,     0,     3,     0,     3,     4,     2,     4,     2,
-       1,     3,     1,     3,     1,     3,     1,     2,     2,     2,
-       3,     2,     3,     2,     2,     3,     2,     0,     3,     0,
-       0,     9,     2,     0,     7,     8,     6,     0,     3,     0,
-       1,     3,     0,     1,     3,     0,     2,     0,     1,     3,
-       1,     3,     3,     0,     1,     1,     1,     1,     3,     1,
-       3,     3,     3
+       1,     1,     1,     1,     1,     8,     0,     0,     0,    14,
+       0,     0,     0,    15,     0,     0,     0,    12,     2,     4,
+       7,     6,     0,     9,    12,     0,     2,     6,     0,     0,
+       0,     1,     0,     0,     0,     2,     2,     1,     1,     1,
+       1,     1,     1,     3,     1,     2,     1,     1,     4,     2,
+       4,     3,     2,     1,     1,     1,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     2,
+       3,     3,     3,     3,     2,     2,     4,     4,     4,     6,
+       4,     6,     4,     6,     4,     6,     2,     1,     2,     1,
+       1,     2,     1,     0,     3,     0,     3,     0,     3,     4,
+       2,     4,     2,     1,     3,     1,     3,     1,     3,     1,
+       2,     2,     2,     3,     2,     3,     2,     2,     3,     2,
+       0,     3,     0,     0,     9,     2,     0,     7,     8,     6,
+       0,     3,     0,     1,     3,     0,     1,     3,     0,     2,
+       0,     1,     3,     1,     3,     3,     0,     1,     1,     1,
+       1,     3,     1,     3,     3,     3
 };
 
 
@@ -1959,79 +1922,79 @@ yydestruct (const char *yymsg,
     case 22: /* BLTIN  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1963 "engines/director/lingo/lingo-gr.cpp"
+#line 1926 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1969 "engines/director/lingo/lingo-gr.cpp"
+#line 1932 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1975 "engines/director/lingo/lingo-gr.cpp"
+#line 1938 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* THEFBLTIN  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1981 "engines/director/lingo/lingo-gr.cpp"
+#line 1944 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ID  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1987 "engines/director/lingo/lingo-gr.cpp"
+#line 1950 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* STRING  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1993 "engines/director/lingo/lingo-gr.cpp"
+#line 1956 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* HANDLER  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1999 "engines/director/lingo/lingo-gr.cpp"
+#line 1962 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* SYMBOL  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2005 "engines/director/lingo/lingo-gr.cpp"
+#line 1968 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 30: /* ENDCLAUSE  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2011 "engines/director/lingo/lingo-gr.cpp"
+#line 1974 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 31: /* tPLAYACCEL  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2017 "engines/director/lingo/lingo-gr.cpp"
+#line 1980 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 32: /* tMETHOD  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2023 "engines/director/lingo/lingo-gr.cpp"
+#line 1986 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 33: /* THEOBJECTFIELD  */
 #line 166 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 2029 "engines/director/lingo/lingo-gr.cpp"
+#line 1992 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 152: /* on  */
+    case 149: /* on  */
 #line 165 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2035 "engines/director/lingo/lingo-gr.cpp"
+#line 1998 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2318,7 +2281,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2322 "engines/director/lingo/lingo-gr.cpp"
+#line 2285 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2326,7 +2289,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2330 "engines/director/lingo/lingo-gr.cpp"
+#line 2293 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2342,19 +2305,19 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2346 "engines/director/lingo/lingo-gr.cpp"
+#line 2309 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 199 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2352 "engines/director/lingo/lingo-gr.cpp"
+#line 2315 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 200 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2358 "engines/director/lingo/lingo-gr.cpp"
+#line 2321 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2366,7 +2329,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2370 "engines/director/lingo/lingo-gr.cpp"
+#line 2333 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2378,7 +2341,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2382 "engines/director/lingo/lingo-gr.cpp"
+#line 2345 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2390,7 +2353,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2394 "engines/director/lingo/lingo-gr.cpp"
+#line 2357 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2402,7 +2365,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2406 "engines/director/lingo/lingo-gr.cpp"
+#line 2369 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2413,7 +2376,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2417 "engines/director/lingo/lingo-gr.cpp"
+#line 2380 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2424,7 +2387,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2428 "engines/director/lingo/lingo-gr.cpp"
+#line 2391 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2440,7 +2403,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2444 "engines/director/lingo/lingo-gr.cpp"
+#line 2407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2451,10 +2414,10 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2455 "engines/director/lingo/lingo-gr.cpp"
+#line 2418 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 29:
+  case 25:
 #line 275 "engines/director/lingo/lingo-gr.y"
                                                                                         {
 		inst start = 0, end = 0;
@@ -2462,31 +2425,31 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code) + 2);
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentScript)[(yyvsp[-1].code)] = start; }
-#line 2466 "engines/director/lingo/lingo-gr.cpp"
+#line 2429 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 30:
+  case 26:
 #line 287 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), kVarLocal); }
-#line 2474 "engines/director/lingo/lingo-gr.cpp"
+#line 2437 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 31:
+  case 27:
 #line 291 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2481 "engines/director/lingo/lingo-gr.cpp"
+#line 2444 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 32:
+  case 28:
 #line 294 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2487 "engines/director/lingo/lingo-gr.cpp"
+#line 2450 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 33:
+  case 29:
 #line 294 "engines/director/lingo/lingo-gr.y"
                                                                                           {
 
@@ -2506,31 +2469,31 @@ yyreduce:
 		WRITE_UINT32(&end, pos - (yyvsp[-2].code) + 2);
 		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentScript)[(yyvsp[-2].code)] = end;	}
-#line 2510 "engines/director/lingo/lingo-gr.cpp"
+#line 2473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 34:
+  case 30:
 #line 318 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), kVarLocal); }
-#line 2518 "engines/director/lingo/lingo-gr.cpp"
+#line 2481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 35:
+  case 31:
 #line 322 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2525 "engines/director/lingo/lingo-gr.cpp"
+#line 2488 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 36:
+  case 32:
 #line 325 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2531 "engines/director/lingo/lingo-gr.cpp"
+#line 2494 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 37:
+  case 33:
 #line 326 "engines/director/lingo/lingo-gr.y"
                                                     {
 
@@ -2550,30 +2513,30 @@ yyreduce:
 		WRITE_UINT32(&end, pos - (yyvsp[-2].code) + 2);
 		(*g_lingo->_currentScript)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentScript)[(yyvsp[-2].code)] = end;	}
-#line 2554 "engines/director/lingo/lingo-gr.cpp"
+#line 2517 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 38:
+  case 34:
 #line 351 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);
 				  g_lingo->codeInt(0);
 				  g_lingo->codeFunc(new Common::String("count"), 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2564 "engines/director/lingo/lingo-gr.cpp"
+#line 2527 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 39:
+  case 35:
 #line 357 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get counter
 				  g_lingo->codeInt(0);
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2574 "engines/director/lingo/lingo-gr.cpp"
+#line 2537 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 40:
+  case 36:
 #line 363 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get list
 				  g_lingo->codeInt(2);
@@ -2584,10 +2547,10 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), kVarLocal);
 				  g_lingo->code1(LC::c_assign); }
-#line 2588 "engines/director/lingo/lingo-gr.cpp"
+#line 2551 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 41:
+  case 37:
 #line 372 "engines/director/lingo/lingo-gr.y"
                                             {
 
@@ -2606,54 +2569,52 @@ yyreduce:
 
 		(*g_lingo->_currentScript)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end;	}
-#line 2610 "engines/director/lingo/lingo-gr.cpp"
+#line 2573 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 42:
+  case 38:
 #line 390 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
-#line 2617 "engines/director/lingo/lingo-gr.cpp"
+#line 2580 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 43:
+  case 39:
 #line 392 "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 2627 "engines/director/lingo/lingo-gr.cpp"
+                               {
+		g_lingo->code1(LC::c_whencode);
+		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
+#line 2588 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 44:
-#line 397 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 395 "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 2636 "engines/director/lingo/lingo-gr.cpp"
+#line 2597 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 45:
-#line 401 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 399 "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 2645 "engines/director/lingo/lingo-gr.cpp"
+#line 2606 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 46:
-#line 406 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 404 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2653 "engines/director/lingo/lingo-gr.cpp"
+#line 2614 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 47:
-#line 410 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 408 "engines/director/lingo/lingo-gr.y"
                                                                                            {
 		inst else1 = 0, end3 = 0;
 		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
@@ -2661,11 +2622,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2665 "engines/director/lingo/lingo-gr.cpp"
+#line 2626 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 48:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 44:
+#line 415 "engines/director/lingo/lingo-gr.y"
                                                                                                                   {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-6].code) + 1 - (yyvsp[-9].code) + 1);
@@ -2673,144 +2634,113 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentScript)[(yyvsp[-6].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code)); }
-#line 2677 "engines/director/lingo/lingo-gr.cpp"
+#line 2638 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 51:
-#line 428 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 426 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentScript)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2687 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 52:
-#line 434 "engines/director/lingo/lingo-gr.y"
-                                                                                                             {
-		inst else1 = 0, end = 0;
-		WRITE_UINT32(&else1, (yyvsp[-5].code) + 1 - (yyvsp[-8].code) + 1);
-		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code) + 1);
-		(*g_lingo->_currentScript)[(yyvsp[-8].code)] = else1;		/* elsepart */
-		(*g_lingo->_currentScript)[(yyvsp[-5].code)] = end;	}
-#line 2698 "engines/director/lingo/lingo-gr.cpp"
+#line 2648 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 53:
-#line 440 "engines/director/lingo/lingo-gr.y"
-                                                                      {
-		inst end = 0;
-		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-4].code) + 1);
-
-		(*g_lingo->_currentScript)[(yyvsp[-4].code)] = end; }
-#line 2708 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 54:
-#line 446 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 444 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2716 "engines/director/lingo/lingo-gr.cpp"
+#line 2656 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 55:
-#line 450 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 448 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2724 "engines/director/lingo/lingo-gr.cpp"
+#line 2664 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 56:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 452 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
-#line 2732 "engines/director/lingo/lingo-gr.cpp"
+#line 2672 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 57:
-#line 458 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 456 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2739 "engines/director/lingo/lingo-gr.cpp"
+#line 2679 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 58:
-#line 461 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 459 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2745 "engines/director/lingo/lingo-gr.cpp"
+#line 2685 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 59:
-#line 463 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 461 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2751 "engines/director/lingo/lingo-gr.cpp"
+#line 2691 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 60:
-#line 465 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 463 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2757 "engines/director/lingo/lingo-gr.cpp"
+#line 2697 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 469 "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 2767 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 64:
-#line 475 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 467 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2775 "engines/director/lingo/lingo-gr.cpp"
+#line 2705 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 478 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 470 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2783 "engines/director/lingo/lingo-gr.cpp"
+#line 2713 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 481 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 473 "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 2792 "engines/director/lingo/lingo-gr.cpp"
+#line 2722 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 485 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 477 "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 2801 "engines/director/lingo/lingo-gr.cpp"
+#line 2731 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 489 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 481 "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 2810 "engines/director/lingo/lingo-gr.cpp"
+#line 2740 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 493 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 485 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2819,17 +2749,17 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2823 "engines/director/lingo/lingo-gr.cpp"
+#line 2753 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 493 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2829 "engines/director/lingo/lingo-gr.cpp"
+#line 2759 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 495 "engines/director/lingo/lingo-gr.y"
                                 {
 		// Director parser till D3 was forgiving for any hanging parentheses
 		if (g_lingo->_ignoreError) {
@@ -2840,542 +2770,542 @@ yyreduce:
 			yyerrok;
 		}
 	}
-#line 2844 "engines/director/lingo/lingo-gr.cpp"
+#line 2774 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 514 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 506 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2850 "engines/director/lingo/lingo-gr.cpp"
+#line 2780 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 508 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2858 "engines/director/lingo/lingo-gr.cpp"
+#line 2788 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 511 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2866 "engines/director/lingo/lingo-gr.cpp"
+#line 2796 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 514 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2874 "engines/director/lingo/lingo-gr.cpp"
+#line 2804 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 517 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2882 "engines/director/lingo/lingo-gr.cpp"
+#line 2812 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 528 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 520 "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 2893 "engines/director/lingo/lingo-gr.cpp"
+#line 2823 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 534 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 526 "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 2903 "engines/director/lingo/lingo-gr.cpp"
+#line 2833 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 539 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 531 "engines/director/lingo/lingo-gr.y"
                        {
 		g_lingo->code1(LC::c_objectrefpush);
 		g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectref).field->c_str());
 		delete (yyvsp[0].objectref).obj;
 		delete (yyvsp[0].objectref).field; }
-#line 2914 "engines/director/lingo/lingo-gr.cpp"
+#line 2844 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 546 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 538 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2920 "engines/director/lingo/lingo-gr.cpp"
+#line 2850 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 547 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 539 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2926 "engines/director/lingo/lingo-gr.cpp"
+#line 2856 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 548 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 540 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2932 "engines/director/lingo/lingo-gr.cpp"
+#line 2862 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 549 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 541 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2938 "engines/director/lingo/lingo-gr.cpp"
+#line 2868 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 550 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 542 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2944 "engines/director/lingo/lingo-gr.cpp"
+#line 2874 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 551 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 543 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2950 "engines/director/lingo/lingo-gr.cpp"
+#line 2880 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 552 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 544 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2956 "engines/director/lingo/lingo-gr.cpp"
+#line 2886 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 553 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 545 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2962 "engines/director/lingo/lingo-gr.cpp"
+#line 2892 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 554 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 546 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2968 "engines/director/lingo/lingo-gr.cpp"
+#line 2898 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 555 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 547 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2974 "engines/director/lingo/lingo-gr.cpp"
+#line 2904 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 556 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 548 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2980 "engines/director/lingo/lingo-gr.cpp"
+#line 2910 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 557 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 549 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2986 "engines/director/lingo/lingo-gr.cpp"
+#line 2916 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 558 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 550 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2992 "engines/director/lingo/lingo-gr.cpp"
+#line 2922 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 559 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 551 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2998 "engines/director/lingo/lingo-gr.cpp"
+#line 2928 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 552 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 3004 "engines/director/lingo/lingo-gr.cpp"
+#line 2934 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 561 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 553 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 3010 "engines/director/lingo/lingo-gr.cpp"
+#line 2940 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
-#line 562 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 554 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 3016 "engines/director/lingo/lingo-gr.cpp"
+#line 2946 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 563 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 555 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 3022 "engines/director/lingo/lingo-gr.cpp"
+#line 2952 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 101:
-#line 564 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 556 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
-#line 3028 "engines/director/lingo/lingo-gr.cpp"
+#line 2958 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 565 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 557 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 3034 "engines/director/lingo/lingo-gr.cpp"
+#line 2964 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 558 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 3040 "engines/director/lingo/lingo-gr.cpp"
+#line 2970 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 567 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 559 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 3046 "engines/director/lingo/lingo-gr.cpp"
+#line 2976 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 569 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 561 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
-#line 3052 "engines/director/lingo/lingo-gr.cpp"
+#line 2982 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 562 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 3058 "engines/director/lingo/lingo-gr.cpp"
+#line 2988 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 571 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 563 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3064 "engines/director/lingo/lingo-gr.cpp"
+#line 2994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 572 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 564 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 3070 "engines/director/lingo/lingo-gr.cpp"
+#line 3000 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 573 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 565 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3076 "engines/director/lingo/lingo-gr.cpp"
+#line 3006 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 574 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 566 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 3082 "engines/director/lingo/lingo-gr.cpp"
+#line 3012 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 575 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 567 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3088 "engines/director/lingo/lingo-gr.cpp"
+#line 3018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 576 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 568 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 3094 "engines/director/lingo/lingo-gr.cpp"
+#line 3024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 578 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 570 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 3102 "engines/director/lingo/lingo-gr.cpp"
+#line 3032 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 575 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3108 "engines/director/lingo/lingo-gr.cpp"
+#line 3038 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 586 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 578 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_exitRepeat); }
-#line 3114 "engines/director/lingo/lingo-gr.cpp"
+#line 3044 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 587 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 579 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3120 "engines/director/lingo/lingo-gr.cpp"
+#line 3050 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 588 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 580 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3126 "engines/director/lingo/lingo-gr.cpp"
+#line 3056 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 588 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 580 "engines/director/lingo/lingo-gr.y"
                                                                                  { inNone(); }
-#line 3132 "engines/director/lingo/lingo-gr.cpp"
+#line 3062 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 581 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3138 "engines/director/lingo/lingo-gr.cpp"
+#line 3068 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 581 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
-#line 3144 "engines/director/lingo/lingo-gr.cpp"
+#line 3074 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 590 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 582 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3150 "engines/director/lingo/lingo-gr.cpp"
+#line 3080 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 590 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 582 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
-#line 3156 "engines/director/lingo/lingo-gr.cpp"
+#line 3086 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 591 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 583 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3164 "engines/director/lingo/lingo-gr.cpp"
+#line 3094 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 594 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 586 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3172 "engines/director/lingo/lingo-gr.cpp"
+#line 3102 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 597 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 589 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
-#line 3178 "engines/director/lingo/lingo-gr.cpp"
+#line 3108 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 598 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 590 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3184 "engines/director/lingo/lingo-gr.cpp"
+#line 3114 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 600 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 592 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3194 "engines/director/lingo/lingo-gr.cpp"
+#line 3124 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 605 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 597 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3204 "engines/director/lingo/lingo-gr.cpp"
+#line 3134 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 611 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 603 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3214 "engines/director/lingo/lingo-gr.cpp"
+#line 3144 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 616 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 608 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3224 "engines/director/lingo/lingo-gr.cpp"
+#line 3154 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 622 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 614 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3234 "engines/director/lingo/lingo-gr.cpp"
+#line 3164 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 627 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 619 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3244 "engines/director/lingo/lingo-gr.cpp"
+#line 3174 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 640 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 632 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3250 "engines/director/lingo/lingo-gr.cpp"
+#line 3180 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 641 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 633 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3256 "engines/director/lingo/lingo-gr.cpp"
+#line 3186 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 642 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 634 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3262 "engines/director/lingo/lingo-gr.cpp"
+#line 3192 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 643 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 635 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3271 "engines/director/lingo/lingo-gr.cpp"
+#line 3201 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 647 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 639 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3280 "engines/director/lingo/lingo-gr.cpp"
+#line 3210 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 651 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 643 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3289 "engines/director/lingo/lingo-gr.cpp"
+#line 3219 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 659 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 651 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3298 "engines/director/lingo/lingo-gr.cpp"
+#line 3228 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 655 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3307 "engines/director/lingo/lingo-gr.cpp"
+#line 3237 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 667 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 659 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3316 "engines/director/lingo/lingo-gr.cpp"
+#line 3246 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 671 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 663 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3322 "engines/director/lingo/lingo-gr.cpp"
+#line 3252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 671 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 663 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3331 "engines/director/lingo/lingo-gr.cpp"
+#line 3261 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 701 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 693 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3337 "engines/director/lingo/lingo-gr.cpp"
+#line 3267 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 701 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 693 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory.clear(); }
-#line 3343 "engines/director/lingo/lingo-gr.cpp"
+#line 3273 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 702 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 694 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3353 "engines/director/lingo/lingo-gr.cpp"
+#line 3283 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 707 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 699 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3359 "engines/director/lingo/lingo-gr.cpp"
+#line 3289 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 708 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 700 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
-#line 3365 "engines/director/lingo/lingo-gr.cpp"
+#line 3295 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 709 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 701 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3375 "engines/director/lingo/lingo-gr.cpp"
+#line 3305 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 714 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 706 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3384,70 +3314,70 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3388 "engines/director/lingo/lingo-gr.cpp"
+#line 3318 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 722 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 714 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3398 "engines/director/lingo/lingo-gr.cpp"
+#line 3328 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 728 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 720 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3404 "engines/director/lingo/lingo-gr.cpp"
+#line 3334 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 728 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 720 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3411 "engines/director/lingo/lingo-gr.cpp"
+#line 3341 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 731 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 723 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3417 "engines/director/lingo/lingo-gr.cpp"
+#line 3347 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 732 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 724 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3423 "engines/director/lingo/lingo-gr.cpp"
+#line 3353 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 733 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 725 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3429 "engines/director/lingo/lingo-gr.cpp"
+#line 3359 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 736 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 728 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3435 "engines/director/lingo/lingo-gr.cpp"
+#line 3365 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 737 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 729 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3441 "engines/director/lingo/lingo-gr.cpp"
+#line 3371 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 739 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 731 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3447 "engines/director/lingo/lingo-gr.cpp"
+#line 3377 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 741 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 733 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3455,113 +3385,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3459 "engines/director/lingo/lingo-gr.cpp"
+#line 3389 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 749 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 741 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3465 "engines/director/lingo/lingo-gr.cpp"
+#line 3395 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
-#line 750 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 742 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3471 "engines/director/lingo/lingo-gr.cpp"
+#line 3401 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 751 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 743 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3477 "engines/director/lingo/lingo-gr.cpp"
+#line 3407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 753 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 745 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3483 "engines/director/lingo/lingo-gr.cpp"
+#line 3413 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171:
-#line 754 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 746 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3489 "engines/director/lingo/lingo-gr.cpp"
+#line 3419 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172:
-#line 756 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 748 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3495 "engines/director/lingo/lingo-gr.cpp"
+#line 3425 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173:
-#line 758 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 750 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3501 "engines/director/lingo/lingo-gr.cpp"
+#line 3431 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 174:
-#line 759 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 751 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3507 "engines/director/lingo/lingo-gr.cpp"
+#line 3437 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 175:
-#line 760 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 752 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3513 "engines/director/lingo/lingo-gr.cpp"
+#line 3443 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 176:
-#line 761 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 753 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3519 "engines/director/lingo/lingo-gr.cpp"
+#line 3449 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 177:
-#line 763 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 755 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3525 "engines/director/lingo/lingo-gr.cpp"
+#line 3455 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 178:
-#line 764 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 756 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3531 "engines/director/lingo/lingo-gr.cpp"
+#line 3461 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 179:
-#line 766 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 758 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3537 "engines/director/lingo/lingo-gr.cpp"
+#line 3467 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 180:
-#line 767 "engines/director/lingo/lingo-gr.y"
+  case 173:
+#line 759 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3543 "engines/director/lingo/lingo-gr.cpp"
+#line 3473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 181:
-#line 769 "engines/director/lingo/lingo-gr.y"
+  case 174:
+#line 761 "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 3552 "engines/director/lingo/lingo-gr.cpp"
+#line 3482 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 182:
-#line 773 "engines/director/lingo/lingo-gr.y"
+  case 175:
+#line 765 "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 3561 "engines/director/lingo/lingo-gr.cpp"
+#line 3491 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3565 "engines/director/lingo/lingo-gr.cpp"
+#line 3495 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3760,7 +3690,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 779 "engines/director/lingo/lingo-gr.y"
+#line 771 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 4b0555a18f..704d04ed40 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -149,7 +149,7 @@ static void mVar(Common::String *s, VarType type) {
 %token tSPRITE tINTERSECTS tWITHIN tTELL tPROPERTY
 %token tON tENDIF tENDREPEAT tENDTELL
 
-%type<code> asgn begin end expr if when chunkexpr
+%type<code> asgn begin end expr if chunkexpr
 %type<code> stmtlist tellstart reference simpleexpr list valuelist
 %type<code> jump jumpifz varassign
 %type<narg> argdef arglist nonemptyarglist linearlist proplist
@@ -389,11 +389,9 @@ stmt: stmtoneliner
 
 	| tNEXT tREPEAT {
 		g_lingo->code1(LC::c_nextRepeat); }
-	| when stmtonelinerwithif end {
-		inst end = 0;
-		WRITE_UINT32(&end, $end - $when);
-		g_lingo->code1(STOP);
-		(*g_lingo->_currentScript)[$when + 1] = end; }
+	| tWHEN ID tTHEN expr {
+		g_lingo->code1(LC::c_whencode);
+		g_lingo->codeString($ID->c_str()); }
 	| tTELL expr '\n' tellstart stmtlist end tENDTELL {
 		inst end;
 		WRITE_UINT32(&end, $end - $tellstart);
@@ -466,12 +464,6 @@ stmtlist: 					{ $$ = g_lingo->_currentScript->size(); }
 	| stmtlist '\n'
 	| stmtlist stmt
 
-when:	  tWHEN	ID tTHEN	{
-		$$ = g_lingo->code1(LC::c_whencode);
-		g_lingo->code1(STOP);
-		g_lingo->codeString($ID->c_str());
-		delete $ID; }
-
 simpleexpr: INT		{
 		$$ = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt($INT); }
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index e0ddccc659..b5fc753522 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -427,7 +427,7 @@ static const YY_CHAR yy_ec[256] =
 
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    2,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1


Commit: 31211258ada55f1ea6c06cd6c4a99cfcdc64a82a
    https://github.com/scummvm/scummvm/commit/31211258ada55f1ea6c06cd6c4a99cfcdc64a82a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-06-01T11:44:07+02:00

Commit Message:
DIRECTOR: LINGO: Simplified grammar, we do not need if one liners!!!

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 907892225c..af853b70f3 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -842,22 +842,22 @@ static const yytype_int16 yyrline[] =
 {
        0,   170,   170,   171,   173,   174,   175,   177,   184,   188,
      199,   200,   201,   208,   215,   222,   229,   235,   242,   253,
-     260,   261,   262,   269,   270,   275,   287,   291,   294,   286,
-     318,   322,   325,   317,   351,   357,   363,   350,   390,   392,
-     395,   399,   404,   408,   415,   423,   424,   426,   444,   448,
-     452,   456,   459,   461,   463,   464,   465,   467,   470,   473,
-     477,   481,   485,   493,   494,   495,   506,   507,   508,   511,
-     514,   517,   520,   526,   531,   537,   538,   539,   540,   541,
-     542,   543,   544,   545,   546,   547,   548,   549,   550,   551,
-     552,   553,   554,   555,   556,   557,   558,   559,   561,   562,
-     563,   564,   565,   566,   567,   568,   570,   573,   575,   576,
-     577,   578,   579,   580,   580,   581,   581,   582,   582,   583,
-     586,   589,   590,   592,   597,   603,   608,   614,   619,   632,
-     633,   634,   635,   639,   643,   648,   649,   651,   655,   659,
-     663,   663,   693,   693,   693,   699,   700,   700,   706,   714,
-     720,   720,   723,   724,   725,   727,   728,   729,   731,   733,
-     741,   742,   743,   745,   746,   748,   750,   751,   752,   753,
-     755,   756,   758,   759,   761,   765
+     260,   261,   262,   264,   265,   270,   282,   286,   289,   281,
+     313,   317,   320,   312,   346,   352,   358,   345,   385,   387,
+     390,   394,   399,   403,   410,   418,   419,   421,   427,   431,
+     435,   439,   442,   444,   446,   447,   448,   450,   453,   456,
+     460,   464,   468,   476,   477,   478,   489,   490,   491,   494,
+     497,   500,   503,   509,   514,   520,   521,   522,   523,   524,
+     525,   526,   527,   528,   529,   530,   531,   532,   533,   534,
+     535,   536,   537,   538,   539,   540,   541,   542,   544,   545,
+     546,   547,   548,   549,   550,   551,   553,   556,   558,   559,
+     560,   561,   562,   563,   563,   564,   564,   565,   565,   566,
+     569,   572,   573,   575,   580,   586,   591,   597,   602,   615,
+     616,   617,   618,   622,   626,   631,   632,   634,   638,   642,
+     646,   646,   676,   676,   676,   682,   683,   683,   689,   697,
+     703,   703,   706,   707,   708,   710,   711,   712,   714,   716,
+     724,   725,   726,   728,   729,   731,   733,   734,   735,   736,
+     738,   739,   741,   742,   744,   748
 };
 #endif
 
@@ -2418,7 +2418,7 @@ yyreduce:
     break;
 
   case 25:
-#line 275 "engines/director/lingo/lingo-gr.y"
+#line 270 "engines/director/lingo/lingo-gr.y"
                                                                                         {
 		inst start = 0, end = 0;
 		WRITE_UINT32(&start, (yyvsp[-5].code) - (yyvsp[-1].code) + 1);
@@ -2429,7 +2429,7 @@ yyreduce:
     break;
 
   case 26:
-#line 287 "engines/director/lingo/lingo-gr.y"
+#line 282 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), kVarLocal); }
@@ -2437,20 +2437,20 @@ yyreduce:
     break;
 
   case 27:
-#line 291 "engines/director/lingo/lingo-gr.y"
+#line 286 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
 #line 2444 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28:
-#line 294 "engines/director/lingo/lingo-gr.y"
+#line 289 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
 #line 2450 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
-#line 294 "engines/director/lingo/lingo-gr.y"
+#line 289 "engines/director/lingo/lingo-gr.y"
                                                                                           {
 
 		g_lingo->code1(LC::c_eval);
@@ -2473,7 +2473,7 @@ yyreduce:
     break;
 
   case 30:
-#line 318 "engines/director/lingo/lingo-gr.y"
+#line 313 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), kVarLocal); }
@@ -2481,20 +2481,20 @@ yyreduce:
     break;
 
   case 31:
-#line 322 "engines/director/lingo/lingo-gr.y"
+#line 317 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
 #line 2488 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
-#line 325 "engines/director/lingo/lingo-gr.y"
+#line 320 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
 #line 2494 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
-#line 326 "engines/director/lingo/lingo-gr.y"
+#line 321 "engines/director/lingo/lingo-gr.y"
                                                     {
 
 		g_lingo->code1(LC::c_eval);
@@ -2517,7 +2517,7 @@ yyreduce:
     break;
 
   case 34:
-#line 351 "engines/director/lingo/lingo-gr.y"
+#line 346 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);
 				  g_lingo->codeInt(0);
 				  g_lingo->codeFunc(new Common::String("count"), 1);
@@ -2527,7 +2527,7 @@ yyreduce:
     break;
 
   case 35:
-#line 357 "engines/director/lingo/lingo-gr.y"
+#line 352 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get counter
 				  g_lingo->codeInt(0);
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
@@ -2537,7 +2537,7 @@ yyreduce:
     break;
 
   case 36:
-#line 363 "engines/director/lingo/lingo-gr.y"
+#line 358 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get list
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_stackpeek);	// get counter
@@ -2551,7 +2551,7 @@ yyreduce:
     break;
 
   case 37:
-#line 372 "engines/director/lingo/lingo-gr.y"
+#line 367 "engines/director/lingo/lingo-gr.y"
                                             {
 
 		g_lingo->code1(LC::c_intpush);
@@ -2573,22 +2573,22 @@ yyreduce:
     break;
 
   case 38:
-#line 390 "engines/director/lingo/lingo-gr.y"
+#line 385 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
 #line 2580 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
-#line 392 "engines/director/lingo/lingo-gr.y"
-                               {
+#line 387 "engines/director/lingo/lingo-gr.y"
+                              {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
 #line 2588 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
-#line 395 "engines/director/lingo/lingo-gr.y"
+#line 390 "engines/director/lingo/lingo-gr.y"
                                                           {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
@@ -2597,7 +2597,7 @@ yyreduce:
     break;
 
   case 41:
-#line 399 "engines/director/lingo/lingo-gr.y"
+#line 394 "engines/director/lingo/lingo-gr.y"
                                                     {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
@@ -2606,7 +2606,7 @@ yyreduce:
     break;
 
   case 42:
-#line 404 "engines/director/lingo/lingo-gr.y"
+#line 399 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
@@ -2614,7 +2614,7 @@ yyreduce:
     break;
 
   case 43:
-#line 408 "engines/director/lingo/lingo-gr.y"
+#line 403 "engines/director/lingo/lingo-gr.y"
                                                                                            {
 		inst else1 = 0, end3 = 0;
 		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
@@ -2626,7 +2626,7 @@ yyreduce:
     break;
 
   case 44:
-#line 415 "engines/director/lingo/lingo-gr.y"
+#line 410 "engines/director/lingo/lingo-gr.y"
                                                                                                                   {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-6].code) + 1 - (yyvsp[-9].code) + 1);
@@ -2638,7 +2638,7 @@ yyreduce:
     break;
 
   case 47:
-#line 426 "engines/director/lingo/lingo-gr.y"
+#line 421 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
@@ -2648,7 +2648,7 @@ yyreduce:
     break;
 
   case 48:
-#line 444 "engines/director/lingo/lingo-gr.y"
+#line 427 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
@@ -2656,7 +2656,7 @@ yyreduce:
     break;
 
   case 49:
-#line 448 "engines/director/lingo/lingo-gr.y"
+#line 431 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, STOP);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
@@ -2664,7 +2664,7 @@ yyreduce:
     break;
 
   case 50:
-#line 452 "engines/director/lingo/lingo-gr.y"
+#line 435 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentScript->size() - 1; }
@@ -2672,32 +2672,32 @@ yyreduce:
     break;
 
   case 51:
-#line 456 "engines/director/lingo/lingo-gr.y"
+#line 439 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
 #line 2679 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
-#line 459 "engines/director/lingo/lingo-gr.y"
+#line 442 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
 #line 2685 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
-#line 461 "engines/director/lingo/lingo-gr.y"
+#line 444 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
 #line 2691 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54:
-#line 463 "engines/director/lingo/lingo-gr.y"
+#line 446 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
 #line 2697 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
-#line 467 "engines/director/lingo/lingo-gr.y"
+#line 450 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
@@ -2705,7 +2705,7 @@ yyreduce:
     break;
 
   case 58:
-#line 470 "engines/director/lingo/lingo-gr.y"
+#line 453 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
@@ -2713,7 +2713,7 @@ yyreduce:
     break;
 
   case 59:
-#line 473 "engines/director/lingo/lingo-gr.y"
+#line 456 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2722,7 +2722,7 @@ yyreduce:
     break;
 
   case 60:
-#line 477 "engines/director/lingo/lingo-gr.y"
+#line 460 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2731,7 +2731,7 @@ yyreduce:
     break;
 
   case 61:
-#line 481 "engines/director/lingo/lingo-gr.y"
+#line 464 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2740,7 +2740,7 @@ yyreduce:
     break;
 
   case 62:
-#line 485 "engines/director/lingo/lingo-gr.y"
+#line 468 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2753,13 +2753,13 @@ yyreduce:
     break;
 
   case 63:
-#line 493 "engines/director/lingo/lingo-gr.y"
+#line 476 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
 #line 2759 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 65:
-#line 495 "engines/director/lingo/lingo-gr.y"
+#line 478 "engines/director/lingo/lingo-gr.y"
                                 {
 		// Director parser till D3 was forgiving for any hanging parentheses
 		if (g_lingo->_ignoreError) {
@@ -2774,13 +2774,13 @@ yyreduce:
     break;
 
   case 66:
-#line 506 "engines/director/lingo/lingo-gr.y"
+#line 489 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
 #line 2780 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68:
-#line 508 "engines/director/lingo/lingo-gr.y"
+#line 491 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
@@ -2788,7 +2788,7 @@ yyreduce:
     break;
 
   case 69:
-#line 511 "engines/director/lingo/lingo-gr.y"
+#line 494 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
@@ -2796,7 +2796,7 @@ yyreduce:
     break;
 
   case 70:
-#line 514 "engines/director/lingo/lingo-gr.y"
+#line 497 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
@@ -2804,7 +2804,7 @@ yyreduce:
     break;
 
   case 71:
-#line 517 "engines/director/lingo/lingo-gr.y"
+#line 500 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
@@ -2812,7 +2812,7 @@ yyreduce:
     break;
 
   case 72:
-#line 520 "engines/director/lingo/lingo-gr.y"
+#line 503 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
@@ -2823,7 +2823,7 @@ yyreduce:
     break;
 
   case 73:
-#line 526 "engines/director/lingo/lingo-gr.y"
+#line 509 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
@@ -2833,7 +2833,7 @@ yyreduce:
     break;
 
   case 74:
-#line 531 "engines/director/lingo/lingo-gr.y"
+#line 514 "engines/director/lingo/lingo-gr.y"
                        {
 		g_lingo->code1(LC::c_objectrefpush);
 		g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
@@ -2844,187 +2844,187 @@ yyreduce:
     break;
 
   case 76:
-#line 538 "engines/director/lingo/lingo-gr.y"
+#line 521 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
 #line 2850 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
-#line 539 "engines/director/lingo/lingo-gr.y"
+#line 522 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
 #line 2856 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
-#line 540 "engines/director/lingo/lingo-gr.y"
+#line 523 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
 #line 2862 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
-#line 541 "engines/director/lingo/lingo-gr.y"
+#line 524 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
 #line 2868 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
-#line 542 "engines/director/lingo/lingo-gr.y"
+#line 525 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
 #line 2874 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
-#line 543 "engines/director/lingo/lingo-gr.y"
+#line 526 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
 #line 2880 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
-#line 544 "engines/director/lingo/lingo-gr.y"
+#line 527 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
 #line 2886 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
-#line 545 "engines/director/lingo/lingo-gr.y"
+#line 528 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
 #line 2892 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
-#line 546 "engines/director/lingo/lingo-gr.y"
+#line 529 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
 #line 2898 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
-#line 547 "engines/director/lingo/lingo-gr.y"
+#line 530 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
 #line 2904 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
-#line 548 "engines/director/lingo/lingo-gr.y"
+#line 531 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
 #line 2910 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
-#line 549 "engines/director/lingo/lingo-gr.y"
+#line 532 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
 #line 2916 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
-#line 550 "engines/director/lingo/lingo-gr.y"
+#line 533 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
 #line 2922 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
-#line 551 "engines/director/lingo/lingo-gr.y"
+#line 534 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
 #line 2928 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
-#line 552 "engines/director/lingo/lingo-gr.y"
+#line 535 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
 #line 2934 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
-#line 553 "engines/director/lingo/lingo-gr.y"
+#line 536 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
 #line 2940 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
-#line 554 "engines/director/lingo/lingo-gr.y"
+#line 537 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
 #line 2946 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
-#line 555 "engines/director/lingo/lingo-gr.y"
+#line 538 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
 #line 2952 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
-#line 556 "engines/director/lingo/lingo-gr.y"
+#line 539 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
 #line 2958 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
-#line 557 "engines/director/lingo/lingo-gr.y"
+#line 540 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
 #line 2964 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
-#line 558 "engines/director/lingo/lingo-gr.y"
+#line 541 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
 #line 2970 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
-#line 559 "engines/director/lingo/lingo-gr.y"
+#line 542 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
 #line 2976 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
-#line 561 "engines/director/lingo/lingo-gr.y"
+#line 544 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charOf); }
 #line 2982 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
-#line 562 "engines/director/lingo/lingo-gr.y"
+#line 545 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
 #line 2988 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
-#line 563 "engines/director/lingo/lingo-gr.y"
+#line 546 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
 #line 2994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
-#line 564 "engines/director/lingo/lingo-gr.y"
+#line 547 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
 #line 3000 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
-#line 565 "engines/director/lingo/lingo-gr.y"
+#line 548 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
 #line 3006 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
-#line 566 "engines/director/lingo/lingo-gr.y"
+#line 549 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
 #line 3012 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104:
-#line 567 "engines/director/lingo/lingo-gr.y"
+#line 550 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
 #line 3018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
-#line 568 "engines/director/lingo/lingo-gr.y"
+#line 551 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
 #line 3024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
-#line 570 "engines/director/lingo/lingo-gr.y"
+#line 553 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
@@ -3032,61 +3032,61 @@ yyreduce:
     break;
 
   case 108:
-#line 575 "engines/director/lingo/lingo-gr.y"
+#line 558 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
 #line 3038 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111:
-#line 578 "engines/director/lingo/lingo-gr.y"
+#line 561 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_exitRepeat); }
 #line 3044 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
-#line 579 "engines/director/lingo/lingo-gr.y"
+#line 562 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
 #line 3050 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
-#line 580 "engines/director/lingo/lingo-gr.y"
+#line 563 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
 #line 3056 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114:
-#line 580 "engines/director/lingo/lingo-gr.y"
+#line 563 "engines/director/lingo/lingo-gr.y"
                                                                                  { inNone(); }
 #line 3062 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
-#line 581 "engines/director/lingo/lingo-gr.y"
+#line 564 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
 #line 3068 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
-#line 581 "engines/director/lingo/lingo-gr.y"
+#line 564 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
 #line 3074 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117:
-#line 582 "engines/director/lingo/lingo-gr.y"
+#line 565 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
 #line 3080 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
-#line 582 "engines/director/lingo/lingo-gr.y"
+#line 565 "engines/director/lingo/lingo-gr.y"
                                                                                    { inNone(); }
 #line 3086 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
-#line 583 "engines/director/lingo/lingo-gr.y"
+#line 566 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
@@ -3094,7 +3094,7 @@ yyreduce:
     break;
 
   case 120:
-#line 586 "engines/director/lingo/lingo-gr.y"
+#line 569 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
@@ -3102,19 +3102,19 @@ yyreduce:
     break;
 
   case 121:
-#line 589 "engines/director/lingo/lingo-gr.y"
+#line 572 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_open); }
 #line 3108 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122:
-#line 590 "engines/director/lingo/lingo-gr.y"
+#line 573 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code2(LC::c_voidpush, LC::c_open); }
 #line 3114 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123:
-#line 592 "engines/director/lingo/lingo-gr.y"
+#line 575 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3124,7 +3124,7 @@ yyreduce:
     break;
 
   case 124:
-#line 597 "engines/director/lingo/lingo-gr.y"
+#line 580 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3134,7 +3134,7 @@ yyreduce:
     break;
 
   case 125:
-#line 603 "engines/director/lingo/lingo-gr.y"
+#line 586 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3144,7 +3144,7 @@ yyreduce:
     break;
 
   case 126:
-#line 608 "engines/director/lingo/lingo-gr.y"
+#line 591 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3154,7 +3154,7 @@ yyreduce:
     break;
 
   case 127:
-#line 614 "engines/director/lingo/lingo-gr.y"
+#line 597 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3164,7 +3164,7 @@ yyreduce:
     break;
 
   case 128:
-#line 619 "engines/director/lingo/lingo-gr.y"
+#line 602 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -3174,25 +3174,25 @@ yyreduce:
     break;
 
   case 129:
-#line 632 "engines/director/lingo/lingo-gr.y"
+#line 615 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
 #line 3180 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
-#line 633 "engines/director/lingo/lingo-gr.y"
+#line 616 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
 #line 3186 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
-#line 634 "engines/director/lingo/lingo-gr.y"
+#line 617 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
 #line 3192 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
-#line 635 "engines/director/lingo/lingo-gr.y"
+#line 618 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
@@ -3201,7 +3201,7 @@ yyreduce:
     break;
 
   case 133:
-#line 639 "engines/director/lingo/lingo-gr.y"
+#line 622 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
@@ -3210,7 +3210,7 @@ yyreduce:
     break;
 
   case 134:
-#line 643 "engines/director/lingo/lingo-gr.y"
+#line 626 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
@@ -3219,7 +3219,7 @@ yyreduce:
     break;
 
   case 137:
-#line 651 "engines/director/lingo/lingo-gr.y"
+#line 634 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
@@ -3228,7 +3228,7 @@ yyreduce:
     break;
 
   case 138:
-#line 655 "engines/director/lingo/lingo-gr.y"
+#line 638 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
@@ -3237,7 +3237,7 @@ yyreduce:
     break;
 
   case 139:
-#line 659 "engines/director/lingo/lingo-gr.y"
+#line 642 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
@@ -3246,13 +3246,13 @@ yyreduce:
     break;
 
   case 140:
-#line 663 "engines/director/lingo/lingo-gr.y"
+#line 646 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
 #line 3252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
-#line 663 "engines/director/lingo/lingo-gr.y"
+#line 646 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
@@ -3261,19 +3261,19 @@ yyreduce:
     break;
 
   case 142:
-#line 693 "engines/director/lingo/lingo-gr.y"
+#line 676 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
 #line 3267 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
-#line 693 "engines/director/lingo/lingo-gr.y"
+#line 676 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->_currentFactory.clear(); }
 #line 3273 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
-#line 694 "engines/director/lingo/lingo-gr.y"
+#line 677 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -3283,19 +3283,19 @@ yyreduce:
     break;
 
   case 145:
-#line 699 "engines/director/lingo/lingo-gr.y"
+#line 682 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
 #line 3289 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
-#line 700 "engines/director/lingo/lingo-gr.y"
+#line 683 "engines/director/lingo/lingo-gr.y"
                   { startDef(); }
 #line 3295 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
-#line 701 "engines/director/lingo/lingo-gr.y"
+#line 684 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
@@ -3305,7 +3305,7 @@ yyreduce:
     break;
 
   case 148:
-#line 706 "engines/director/lingo/lingo-gr.y"
+#line 689 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3318,7 +3318,7 @@ yyreduce:
     break;
 
   case 149:
-#line 714 "engines/director/lingo/lingo-gr.y"
+#line 697 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -3328,56 +3328,56 @@ yyreduce:
     break;
 
   case 150:
-#line 720 "engines/director/lingo/lingo-gr.y"
+#line 703 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
 #line 3334 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151:
-#line 720 "engines/director/lingo/lingo-gr.y"
+#line 703 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
 #line 3341 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 152:
-#line 723 "engines/director/lingo/lingo-gr.y"
+#line 706 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
 #line 3347 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
-#line 724 "engines/director/lingo/lingo-gr.y"
+#line 707 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
 #line 3353 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
-#line 725 "engines/director/lingo/lingo-gr.y"
+#line 708 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
 #line 3359 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
-#line 728 "engines/director/lingo/lingo-gr.y"
+#line 711 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
 #line 3365 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
-#line 729 "engines/director/lingo/lingo-gr.y"
+#line 712 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
 #line 3371 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
-#line 731 "engines/director/lingo/lingo-gr.y"
+#line 714 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
 #line 3377 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
-#line 733 "engines/director/lingo/lingo-gr.y"
+#line 716 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3389,91 +3389,91 @@ yyreduce:
     break;
 
   case 160:
-#line 741 "engines/director/lingo/lingo-gr.y"
+#line 724 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
 #line 3395 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
-#line 742 "engines/director/lingo/lingo-gr.y"
+#line 725 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
 #line 3401 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
-#line 743 "engines/director/lingo/lingo-gr.y"
+#line 726 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
 #line 3407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
-#line 745 "engines/director/lingo/lingo-gr.y"
+#line 728 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
 #line 3413 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
-#line 746 "engines/director/lingo/lingo-gr.y"
+#line 729 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
 #line 3419 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
-#line 748 "engines/director/lingo/lingo-gr.y"
+#line 731 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
 #line 3425 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
-#line 750 "engines/director/lingo/lingo-gr.y"
+#line 733 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
 #line 3431 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
-#line 751 "engines/director/lingo/lingo-gr.y"
+#line 734 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
 #line 3437 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
-#line 752 "engines/director/lingo/lingo-gr.y"
+#line 735 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
 #line 3443 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
-#line 753 "engines/director/lingo/lingo-gr.y"
+#line 736 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
 #line 3449 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170:
-#line 755 "engines/director/lingo/lingo-gr.y"
+#line 738 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
 #line 3455 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
-#line 756 "engines/director/lingo/lingo-gr.y"
+#line 739 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
 #line 3461 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172:
-#line 758 "engines/director/lingo/lingo-gr.y"
+#line 741 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
 #line 3467 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 173:
-#line 759 "engines/director/lingo/lingo-gr.y"
+#line 742 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
 #line 3473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 174:
-#line 761 "engines/director/lingo/lingo-gr.y"
+#line 744 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -3482,7 +3482,7 @@ yyreduce:
     break;
 
   case 175:
-#line 765 "engines/director/lingo/lingo-gr.y"
+#line 748 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -3690,7 +3690,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 771 "engines/director/lingo/lingo-gr.y"
+#line 754 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 704d04ed40..da9c384209 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -261,11 +261,6 @@ stmtoneliner: macro
 	| expr
 	| proc
 
-stmtonelinerwithif: macro
-	| expr
-	| proc
-	| ifoneliner
-
 stmt: stmtoneliner
 	| ifstmt
 	// repeat while (expression = TRUE)
@@ -429,18 +424,6 @@ elseifstmt: tELSIF expr jumpifz[then] tTHEN stmtlist jump[end3] {
 		(*g_lingo->_currentScript)[$then] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel($end3); }
 
-ifoneliner: if expr jumpifz[then] tTHEN stmtoneliner jump[else1] tELSE begin stmtoneliner begin[end3] tENDIF {
-		inst else1 = 0, end = 0;
-		WRITE_UINT32(&else1, $else1 + 1 - $then + 1);
-		WRITE_UINT32(&end, $end3 - $else1 + 1);
-		(*g_lingo->_currentScript)[$then] = else1;		/* elsepart */
-		(*g_lingo->_currentScript)[$else1] = end;	}	/* end, if cond fails */
-	| if expr jumpifz[then] tTHEN stmtoneliner begin[end3] tENDIF {
-		inst end = 0;
-		WRITE_UINT32(&end, $end3 - $then + 1);
-
-		(*g_lingo->_currentScript)[$then] = end; }		/* end, if cond fails */
-
 jumpifz:	/* nothing */	{
 		g_lingo->code2(LC::c_jumpifz, STOP);
 		$$ = g_lingo->_currentScript->size() - 1; }




More information about the Scummvm-git-logs mailing list