[Scummvm-git-logs] scummvm master -> 0728d91c453a17f80f2a88fcdc0aa0fed5a82445

sev- sev at scummvm.org
Fri Jan 17 15:24:12 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:
8cb378a63e DIRECTOR: LINGO: Proper code generation for 'set <x> of menuItem <y> of menu <z>'
1e4ccfbc30 DIRECTOR: LINGO: Implement putting things into chunk expressions
0728d91c45 DIRECTOR: LINGO: Added tests for chunk expressions


Commit: 8cb378a63e1788e84f59f184e77de22207faf0ad
    https://github.com/scummvm/scummvm/commit/8cb378a63e1788e84f59f184e77de22207faf0ad
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-17T16:23:52+01:00

Commit Message:
DIRECTOR: LINGO: Proper code generation for 'set <x> of menuItem <y> of menu <z>'

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


diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 9add66f..6e45d45 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -128,6 +128,7 @@ static struct FuncDescr {
 	{ LC::c_telldone,		"c_telldone",		"" },
 	{ LC::c_theentityassign,"c_theentityassign","EF" },
 	{ LC::c_theentitypush,	"c_theentitypush",	"EF" }, // entity, field
+	{ LC::c_themenuitementityassign,"c_themenuitementityassign","EF" },
 	{ LC::c_varpush,		"c_varpush",		"s" },
 	{ LC::c_voidpush,		"c_voidpush",		""  },
 	{ LC::c_whencode,		"c_whencode",		"os" },
@@ -486,6 +487,17 @@ void LC::c_theentityassign() {
 	g_lingo->setTheEntity(entity, id, field, d);
 }
 
+void LC::c_themenuitementityassign() {
+	Datum d = g_lingo->pop();
+	Datum menuId = g_lingo->pop();
+	Datum menuItemId = g_lingo->pop();
+
+	int entity = g_lingo->readInt();
+	int field  = g_lingo->readInt();
+
+	g_lingo->setTheMenuItemEntity(entity, menuId, field, menuItemId, d);
+}
+
 void LC::c_objectfieldpush() {
 	Common::String object(g_lingo->readString());
 	int field  = g_lingo->readInt();
diff --git a/engines/director/lingo/lingo-code.h b/engines/director/lingo/lingo-code.h
index 1aedfb2..f6f9f38 100644
--- a/engines/director/lingo/lingo-code.h
+++ b/engines/director/lingo/lingo-code.h
@@ -79,6 +79,7 @@ namespace LC {
 
 	void c_theentitypush();
 	void c_theentityassign();
+	void c_themenuitementityassign();
 	void c_objectfieldpush();
 	void c_objectfieldassign();
 
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 900a296..54f5c64 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -632,22 +632,22 @@ static const yytype_int8 yytranslate[] =
 static const yytype_int16 yyrline[] =
 {
        0,   135,   135,   136,   137,   139,   140,   141,   143,   149,
-     152,   153,   154,   160,   167,   173,   180,   186,   193,   204,
-     211,   212,   213,   215,   216,   217,   218,   220,   221,   226,
-     237,   254,   266,   271,   275,   280,   284,   294,   305,   306,
-     308,   315,   325,   336,   338,   344,   350,   357,   359,   361,
-     362,   363,   365,   371,   374,   377,   381,   385,   389,   391,
-     392,   393,   396,   399,   402,   410,   416,   421,   422,   423,
-     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
-     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
-     444,   445,   446,   447,   448,   449,   450,   451,   452,   454,
-     458,   459,   460,   461,   462,   463,   463,   464,   465,   466,
-     469,   472,   473,   475,   479,   484,   488,   493,   497,   509,
-     510,   511,   512,   516,   520,   525,   526,   528,   529,   533,
-     537,   541,   541,   571,   571,   571,   578,   579,   579,   586,
-     596,   604,   604,   606,   607,   608,   609,   611,   612,   613,
-     615,   617,   625,   626,   627,   629,   630,   632,   634,   635,
-     636,   637,   639,   640,   642,   643,   645,   649
+     152,   153,   154,   160,   167,   173,   180,   186,   193,   203,
+     210,   211,   212,   214,   215,   216,   217,   219,   220,   225,
+     236,   253,   265,   270,   274,   279,   283,   293,   304,   305,
+     307,   314,   324,   335,   337,   343,   349,   356,   358,   360,
+     361,   362,   364,   370,   373,   376,   380,   384,   388,   390,
+     391,   392,   395,   398,   401,   409,   415,   420,   421,   422,
+     423,   424,   425,   426,   427,   428,   429,   430,   431,   432,
+     433,   434,   435,   436,   437,   438,   439,   440,   441,   442,
+     443,   444,   445,   446,   447,   448,   449,   450,   451,   453,
+     457,   458,   459,   460,   461,   462,   462,   463,   464,   465,
+     468,   471,   472,   474,   478,   483,   487,   492,   496,   508,
+     509,   510,   511,   515,   519,   524,   525,   527,   528,   532,
+     536,   540,   540,   570,   570,   570,   577,   578,   578,   585,
+     595,   603,   603,   605,   606,   607,   608,   610,   611,   612,
+     614,   616,   624,   625,   626,   628,   629,   631,   633,   634,
+     635,   636,   638,   639,   641,   642,   644,   648
 };
 #endif
 
@@ -2114,38 +2114,37 @@ yyreduce:
 		}
 
 		warning("STUB: menuItem entity");
-		g_lingo->code1(LC::c_swap);
-		g_lingo->code1(LC::c_theentityassign);
+		g_lingo->code1(LC::c_themenuitementityassign);
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2123 "engines/director/lingo/lingo-gr.cpp"
+#line 2122 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
-#line 204 "engines/director/lingo/lingo-gr.y"
+#line 203 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectfieldassign);
 		g_lingo->codeString((yyvsp[-2].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2134 "engines/director/lingo/lingo-gr.cpp"
+#line 2133 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
-#line 226 "engines/director/lingo/lingo-gr.y"
+#line 225 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[-3].code) - (yyvsp[-5].code));
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body;	/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2145 "engines/director/lingo/lingo-gr.cpp"
+#line 2144 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
-#line 237 "engines/director/lingo/lingo-gr.y"
+#line 236 "engines/director/lingo/lingo-gr.y"
                                                                                            {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[-7].code) - (yyvsp[-9].code));
@@ -2158,11 +2157,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 5] = end; }
-#line 2162 "engines/director/lingo/lingo-gr.cpp"
+#line 2161 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
-#line 254 "engines/director/lingo/lingo-gr.y"
+#line 253 "engines/director/lingo/lingo-gr.y"
                                                                                                  {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[-8].code) - (yyvsp[-10].code));
@@ -2175,47 +2174,47 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2179 "engines/director/lingo/lingo-gr.cpp"
+#line 2178 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
-#line 266 "engines/director/lingo/lingo-gr.y"
+#line 265 "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 2189 "engines/director/lingo/lingo-gr.cpp"
+#line 2188 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
-#line 271 "engines/director/lingo/lingo-gr.y"
+#line 270 "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 2198 "engines/director/lingo/lingo-gr.cpp"
+#line 2197 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
-#line 275 "engines/director/lingo/lingo-gr.y"
+#line 274 "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 2207 "engines/director/lingo/lingo-gr.cpp"
+#line 2206 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
-#line 280 "engines/director/lingo/lingo-gr.y"
+#line 279 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2215 "engines/director/lingo/lingo-gr.cpp"
+#line 2214 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
-#line 284 "engines/director/lingo/lingo-gr.y"
+#line 283 "engines/director/lingo/lingo-gr.y"
                                                                                        {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-6].code) - (yyvsp[-8].code));
@@ -2226,11 +2225,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2230 "engines/director/lingo/lingo-gr.cpp"
+#line 2229 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
-#line 294 "engines/director/lingo/lingo-gr.y"
+#line 293 "engines/director/lingo/lingo-gr.y"
                                                                                                               {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-9].code) - (yyvsp[-11].code));
@@ -2241,22 +2240,22 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2245 "engines/director/lingo/lingo-gr.cpp"
+#line 2244 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
-#line 308 "engines/director/lingo/lingo-gr.y"
+#line 307 "engines/director/lingo/lingo-gr.y"
                                                         {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[-3].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2256 "engines/director/lingo/lingo-gr.cpp"
+#line 2255 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
-#line 315 "engines/director/lingo/lingo-gr.y"
+#line 314 "engines/director/lingo/lingo-gr.y"
                                                                                                          {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-8].code) - (yyvsp[-10].code));
@@ -2267,11 +2266,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2271 "engines/director/lingo/lingo-gr.cpp"
+#line 2270 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
-#line 325 "engines/director/lingo/lingo-gr.y"
+#line 324 "engines/director/lingo/lingo-gr.y"
                                                                    {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-4].code) - (yyvsp[-6].code));
@@ -2282,149 +2281,149 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2286 "engines/director/lingo/lingo-gr.cpp"
+#line 2285 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
-#line 336 "engines/director/lingo/lingo-gr.y"
+#line 335 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2292 "engines/director/lingo/lingo-gr.cpp"
+#line 2291 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
-#line 338 "engines/director/lingo/lingo-gr.y"
+#line 337 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2302 "engines/director/lingo/lingo-gr.cpp"
+#line 2301 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
-#line 344 "engines/director/lingo/lingo-gr.y"
+#line 343 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); }
-#line 2312 "engines/director/lingo/lingo-gr.cpp"
+#line 2311 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
-#line 350 "engines/director/lingo/lingo-gr.y"
+#line 349 "engines/director/lingo/lingo-gr.y"
                                         {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
-#line 2323 "engines/director/lingo/lingo-gr.cpp"
+#line 2322 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
-#line 357 "engines/director/lingo/lingo-gr.y"
+#line 356 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2329 "engines/director/lingo/lingo-gr.cpp"
+#line 2328 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
-#line 359 "engines/director/lingo/lingo-gr.y"
+#line 358 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2335 "engines/director/lingo/lingo-gr.cpp"
+#line 2334 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
-#line 361 "engines/director/lingo/lingo-gr.y"
+#line 360 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2341 "engines/director/lingo/lingo-gr.cpp"
+#line 2340 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
-#line 365 "engines/director/lingo/lingo-gr.y"
+#line 364 "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 2351 "engines/director/lingo/lingo-gr.cpp"
+#line 2350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
-#line 371 "engines/director/lingo/lingo-gr.y"
+#line 370 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2359 "engines/director/lingo/lingo-gr.cpp"
+#line 2358 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54:
-#line 374 "engines/director/lingo/lingo-gr.y"
+#line 373 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2367 "engines/director/lingo/lingo-gr.cpp"
+#line 2366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
-#line 377 "engines/director/lingo/lingo-gr.y"
+#line 376 "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 2376 "engines/director/lingo/lingo-gr.cpp"
+#line 2375 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
-#line 381 "engines/director/lingo/lingo-gr.y"
+#line 380 "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 2385 "engines/director/lingo/lingo-gr.cpp"
+#line 2384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
-#line 385 "engines/director/lingo/lingo-gr.y"
+#line 384 "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 2394 "engines/director/lingo/lingo-gr.cpp"
+#line 2393 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
-#line 391 "engines/director/lingo/lingo-gr.y"
+#line 390 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2400 "engines/director/lingo/lingo-gr.cpp"
+#line 2399 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
-#line 393 "engines/director/lingo/lingo-gr.y"
+#line 392 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2408 "engines/director/lingo/lingo-gr.cpp"
+#line 2407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62:
-#line 396 "engines/director/lingo/lingo-gr.y"
+#line 395 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2416 "engines/director/lingo/lingo-gr.cpp"
+#line 2415 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63:
-#line 399 "engines/director/lingo/lingo-gr.y"
+#line 398 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2424 "engines/director/lingo/lingo-gr.cpp"
+#line 2423 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64:
-#line 402 "engines/director/lingo/lingo-gr.y"
+#line 401 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2433,477 +2432,477 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2437 "engines/director/lingo/lingo-gr.cpp"
+#line 2436 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 65:
-#line 410 "engines/director/lingo/lingo-gr.y"
+#line 409 "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 2448 "engines/director/lingo/lingo-gr.cpp"
+#line 2447 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
-#line 416 "engines/director/lingo/lingo-gr.y"
+#line 415 "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 2458 "engines/director/lingo/lingo-gr.cpp"
+#line 2457 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68:
-#line 422 "engines/director/lingo/lingo-gr.y"
+#line 421 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2464 "engines/director/lingo/lingo-gr.cpp"
+#line 2463 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
-#line 423 "engines/director/lingo/lingo-gr.y"
+#line 422 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2470 "engines/director/lingo/lingo-gr.cpp"
+#line 2469 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70:
-#line 424 "engines/director/lingo/lingo-gr.y"
+#line 423 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2476 "engines/director/lingo/lingo-gr.cpp"
+#line 2475 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
-#line 425 "engines/director/lingo/lingo-gr.y"
+#line 424 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2482 "engines/director/lingo/lingo-gr.cpp"
+#line 2481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
-#line 426 "engines/director/lingo/lingo-gr.y"
+#line 425 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2488 "engines/director/lingo/lingo-gr.cpp"
+#line 2487 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73:
-#line 427 "engines/director/lingo/lingo-gr.y"
+#line 426 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2494 "engines/director/lingo/lingo-gr.cpp"
+#line 2493 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
-#line 428 "engines/director/lingo/lingo-gr.y"
+#line 427 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2500 "engines/director/lingo/lingo-gr.cpp"
+#line 2499 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
-#line 429 "engines/director/lingo/lingo-gr.y"
+#line 428 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2506 "engines/director/lingo/lingo-gr.cpp"
+#line 2505 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
-#line 430 "engines/director/lingo/lingo-gr.y"
+#line 429 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2512 "engines/director/lingo/lingo-gr.cpp"
+#line 2511 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
-#line 431 "engines/director/lingo/lingo-gr.y"
+#line 430 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2518 "engines/director/lingo/lingo-gr.cpp"
+#line 2517 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
-#line 432 "engines/director/lingo/lingo-gr.y"
+#line 431 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2524 "engines/director/lingo/lingo-gr.cpp"
+#line 2523 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
-#line 433 "engines/director/lingo/lingo-gr.y"
+#line 432 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2530 "engines/director/lingo/lingo-gr.cpp"
+#line 2529 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
-#line 434 "engines/director/lingo/lingo-gr.y"
+#line 433 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2536 "engines/director/lingo/lingo-gr.cpp"
+#line 2535 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
-#line 435 "engines/director/lingo/lingo-gr.y"
+#line 434 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2542 "engines/director/lingo/lingo-gr.cpp"
+#line 2541 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
-#line 436 "engines/director/lingo/lingo-gr.y"
+#line 435 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2548 "engines/director/lingo/lingo-gr.cpp"
+#line 2547 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
-#line 437 "engines/director/lingo/lingo-gr.y"
+#line 436 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2554 "engines/director/lingo/lingo-gr.cpp"
+#line 2553 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
-#line 438 "engines/director/lingo/lingo-gr.y"
+#line 437 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2560 "engines/director/lingo/lingo-gr.cpp"
+#line 2559 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
-#line 439 "engines/director/lingo/lingo-gr.y"
+#line 438 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2566 "engines/director/lingo/lingo-gr.cpp"
+#line 2565 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
-#line 440 "engines/director/lingo/lingo-gr.y"
+#line 439 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); }
-#line 2572 "engines/director/lingo/lingo-gr.cpp"
+#line 2571 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
-#line 441 "engines/director/lingo/lingo-gr.y"
+#line 440 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2578 "engines/director/lingo/lingo-gr.cpp"
+#line 2577 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
-#line 442 "engines/director/lingo/lingo-gr.y"
+#line 441 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2584 "engines/director/lingo/lingo-gr.cpp"
+#line 2583 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
-#line 443 "engines/director/lingo/lingo-gr.y"
+#line 442 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2590 "engines/director/lingo/lingo-gr.cpp"
+#line 2589 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
-#line 444 "engines/director/lingo/lingo-gr.y"
+#line 443 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2596 "engines/director/lingo/lingo-gr.cpp"
+#line 2595 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
-#line 445 "engines/director/lingo/lingo-gr.y"
+#line 444 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2602 "engines/director/lingo/lingo-gr.cpp"
+#line 2601 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
-#line 446 "engines/director/lingo/lingo-gr.y"
+#line 445 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2608 "engines/director/lingo/lingo-gr.cpp"
+#line 2607 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
-#line 447 "engines/director/lingo/lingo-gr.y"
+#line 446 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2614 "engines/director/lingo/lingo-gr.cpp"
+#line 2613 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
-#line 448 "engines/director/lingo/lingo-gr.y"
+#line 447 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2620 "engines/director/lingo/lingo-gr.cpp"
+#line 2619 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
-#line 449 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2626 "engines/director/lingo/lingo-gr.cpp"
+#line 2625 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
-#line 450 "engines/director/lingo/lingo-gr.y"
+#line 449 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2632 "engines/director/lingo/lingo-gr.cpp"
+#line 2631 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
-#line 451 "engines/director/lingo/lingo-gr.y"
+#line 450 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2638 "engines/director/lingo/lingo-gr.cpp"
+#line 2637 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
-#line 452 "engines/director/lingo/lingo-gr.y"
+#line 451 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2644 "engines/director/lingo/lingo-gr.cpp"
+#line 2643 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
-#line 454 "engines/director/lingo/lingo-gr.y"
+#line 453 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2652 "engines/director/lingo/lingo-gr.cpp"
+#line 2651 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
-#line 458 "engines/director/lingo/lingo-gr.y"
+#line 457 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2658 "engines/director/lingo/lingo-gr.cpp"
+#line 2657 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
-#line 461 "engines/director/lingo/lingo-gr.y"
+#line 460 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2664 "engines/director/lingo/lingo-gr.cpp"
+#line 2663 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104:
-#line 462 "engines/director/lingo/lingo-gr.y"
+#line 461 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 2670 "engines/director/lingo/lingo-gr.cpp"
+#line 2669 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
-#line 463 "engines/director/lingo/lingo-gr.y"
+#line 462 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2676 "engines/director/lingo/lingo-gr.cpp"
+#line 2675 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
-#line 463 "engines/director/lingo/lingo-gr.y"
+#line 462 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 2682 "engines/director/lingo/lingo-gr.cpp"
+#line 2681 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
-#line 466 "engines/director/lingo/lingo-gr.y"
+#line 465 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2690 "engines/director/lingo/lingo-gr.cpp"
+#line 2689 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
-#line 469 "engines/director/lingo/lingo-gr.y"
+#line 468 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2698 "engines/director/lingo/lingo-gr.cpp"
+#line 2697 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111:
-#line 472 "engines/director/lingo/lingo-gr.y"
+#line 471 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 2704 "engines/director/lingo/lingo-gr.cpp"
+#line 2703 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
-#line 473 "engines/director/lingo/lingo-gr.y"
+#line 472 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 2710 "engines/director/lingo/lingo-gr.cpp"
+#line 2709 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
-#line 475 "engines/director/lingo/lingo-gr.y"
+#line 474 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2719 "engines/director/lingo/lingo-gr.cpp"
+#line 2718 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114:
-#line 479 "engines/director/lingo/lingo-gr.y"
+#line 478 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2728 "engines/director/lingo/lingo-gr.cpp"
+#line 2727 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
-#line 484 "engines/director/lingo/lingo-gr.y"
+#line 483 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2737 "engines/director/lingo/lingo-gr.cpp"
+#line 2736 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
-#line 488 "engines/director/lingo/lingo-gr.y"
+#line 487 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2746 "engines/director/lingo/lingo-gr.cpp"
+#line 2745 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117:
-#line 493 "engines/director/lingo/lingo-gr.y"
+#line 492 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2755 "engines/director/lingo/lingo-gr.cpp"
+#line 2754 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
-#line 497 "engines/director/lingo/lingo-gr.y"
+#line 496 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2764 "engines/director/lingo/lingo-gr.cpp"
+#line 2763 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
-#line 509 "engines/director/lingo/lingo-gr.y"
+#line 508 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 2770 "engines/director/lingo/lingo-gr.cpp"
+#line 2769 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
-#line 510 "engines/director/lingo/lingo-gr.y"
+#line 509 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 2776 "engines/director/lingo/lingo-gr.cpp"
+#line 2775 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
-#line 511 "engines/director/lingo/lingo-gr.y"
+#line 510 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 2782 "engines/director/lingo/lingo-gr.cpp"
+#line 2781 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122:
-#line 512 "engines/director/lingo/lingo-gr.y"
+#line 511 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 2791 "engines/director/lingo/lingo-gr.cpp"
+#line 2790 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123:
-#line 516 "engines/director/lingo/lingo-gr.y"
+#line 515 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 2800 "engines/director/lingo/lingo-gr.cpp"
+#line 2799 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
-#line 520 "engines/director/lingo/lingo-gr.y"
+#line 519 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 2809 "engines/director/lingo/lingo-gr.cpp"
+#line 2808 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
-#line 528 "engines/director/lingo/lingo-gr.y"
+#line 527 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_playdone); }
-#line 2815 "engines/director/lingo/lingo-gr.cpp"
+#line 2814 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128:
-#line 529 "engines/director/lingo/lingo-gr.y"
+#line 528 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 2824 "engines/director/lingo/lingo-gr.cpp"
+#line 2823 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129:
-#line 533 "engines/director/lingo/lingo-gr.y"
+#line 532 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 2833 "engines/director/lingo/lingo-gr.cpp"
+#line 2832 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
-#line 537 "engines/director/lingo/lingo-gr.y"
+#line 536 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 2842 "engines/director/lingo/lingo-gr.cpp"
+#line 2841 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
-#line 541 "engines/director/lingo/lingo-gr.y"
+#line 540 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 2848 "engines/director/lingo/lingo-gr.cpp"
+#line 2847 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
-#line 541 "engines/director/lingo/lingo-gr.y"
+#line 540 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 2857 "engines/director/lingo/lingo-gr.cpp"
+#line 2856 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133:
-#line 571 "engines/director/lingo/lingo-gr.y"
+#line 570 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 2863 "engines/director/lingo/lingo-gr.cpp"
+#line 2862 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
-#line 571 "engines/director/lingo/lingo-gr.y"
+#line 570 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 2869 "engines/director/lingo/lingo-gr.cpp"
+#line 2868 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
-#line 572 "engines/director/lingo/lingo-gr.y"
+#line 571 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2880 "engines/director/lingo/lingo-gr.cpp"
+#line 2879 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
-#line 578 "engines/director/lingo/lingo-gr.y"
+#line 577 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 2886 "engines/director/lingo/lingo-gr.cpp"
+#line 2885 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
-#line 579 "engines/director/lingo/lingo-gr.y"
+#line 578 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2892 "engines/director/lingo/lingo-gr.cpp"
+#line 2891 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
-#line 580 "engines/director/lingo/lingo-gr.y"
+#line 579 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2903 "engines/director/lingo/lingo-gr.cpp"
+#line 2902 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
-#line 586 "engines/director/lingo/lingo-gr.y"
+#line 585 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -2914,11 +2913,11 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 2918 "engines/director/lingo/lingo-gr.cpp"
+#line 2917 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140:
-#line 596 "engines/director/lingo/lingo-gr.y"
+#line 595 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -2926,65 +2925,65 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 2930 "engines/director/lingo/lingo-gr.cpp"
+#line 2929 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
-#line 604 "engines/director/lingo/lingo-gr.y"
+#line 603 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 2936 "engines/director/lingo/lingo-gr.cpp"
+#line 2935 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
-#line 604 "engines/director/lingo/lingo-gr.y"
+#line 603 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 2942 "engines/director/lingo/lingo-gr.cpp"
+#line 2941 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
-#line 606 "engines/director/lingo/lingo-gr.y"
+#line 605 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 2948 "engines/director/lingo/lingo-gr.cpp"
+#line 2947 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
-#line 607 "engines/director/lingo/lingo-gr.y"
+#line 606 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 2954 "engines/director/lingo/lingo-gr.cpp"
+#line 2953 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
-#line 608 "engines/director/lingo/lingo-gr.y"
+#line 607 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 2960 "engines/director/lingo/lingo-gr.cpp"
+#line 2959 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
-#line 609 "engines/director/lingo/lingo-gr.y"
+#line 608 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 2966 "engines/director/lingo/lingo-gr.cpp"
+#line 2965 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
-#line 612 "engines/director/lingo/lingo-gr.y"
+#line 611 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 2972 "engines/director/lingo/lingo-gr.cpp"
+#line 2971 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
-#line 613 "engines/director/lingo/lingo-gr.y"
+#line 612 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 2978 "engines/director/lingo/lingo-gr.cpp"
+#line 2977 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
-#line 615 "engines/director/lingo/lingo-gr.y"
+#line 614 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 2984 "engines/director/lingo/lingo-gr.cpp"
+#line 2983 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151:
-#line 617 "engines/director/lingo/lingo-gr.y"
+#line 616 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -2992,113 +2991,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 2996 "engines/director/lingo/lingo-gr.cpp"
+#line 2995 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 152:
-#line 625 "engines/director/lingo/lingo-gr.y"
+#line 624 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3002 "engines/director/lingo/lingo-gr.cpp"
+#line 3001 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
-#line 626 "engines/director/lingo/lingo-gr.y"
+#line 625 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3008 "engines/director/lingo/lingo-gr.cpp"
+#line 3007 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
-#line 627 "engines/director/lingo/lingo-gr.y"
+#line 626 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3014 "engines/director/lingo/lingo-gr.cpp"
+#line 3013 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
-#line 629 "engines/director/lingo/lingo-gr.y"
+#line 628 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3020 "engines/director/lingo/lingo-gr.cpp"
+#line 3019 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
-#line 630 "engines/director/lingo/lingo-gr.y"
+#line 629 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3026 "engines/director/lingo/lingo-gr.cpp"
+#line 3025 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
-#line 632 "engines/director/lingo/lingo-gr.y"
+#line 631 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 3032 "engines/director/lingo/lingo-gr.cpp"
+#line 3031 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
-#line 634 "engines/director/lingo/lingo-gr.y"
+#line 633 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3038 "engines/director/lingo/lingo-gr.cpp"
+#line 3037 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
-#line 635 "engines/director/lingo/lingo-gr.y"
+#line 634 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3044 "engines/director/lingo/lingo-gr.cpp"
+#line 3043 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
-#line 636 "engines/director/lingo/lingo-gr.y"
+#line 635 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3050 "engines/director/lingo/lingo-gr.cpp"
+#line 3049 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
-#line 637 "engines/director/lingo/lingo-gr.y"
+#line 636 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3056 "engines/director/lingo/lingo-gr.cpp"
+#line 3055 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
-#line 639 "engines/director/lingo/lingo-gr.y"
+#line 638 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3062 "engines/director/lingo/lingo-gr.cpp"
+#line 3061 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
-#line 640 "engines/director/lingo/lingo-gr.y"
+#line 639 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3068 "engines/director/lingo/lingo-gr.cpp"
+#line 3067 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
-#line 642 "engines/director/lingo/lingo-gr.y"
+#line 641 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3074 "engines/director/lingo/lingo-gr.cpp"
+#line 3073 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
-#line 643 "engines/director/lingo/lingo-gr.y"
+#line 642 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3080 "engines/director/lingo/lingo-gr.cpp"
+#line 3079 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
-#line 645 "engines/director/lingo/lingo-gr.y"
+#line 644 "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 3089 "engines/director/lingo/lingo-gr.cpp"
+#line 3088 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
-#line 649 "engines/director/lingo/lingo-gr.y"
+#line 648 "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 3098 "engines/director/lingo/lingo-gr.cpp"
+#line 3097 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3102 "engines/director/lingo/lingo-gr.cpp"
+#line 3101 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3330,5 +3329,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 655 "engines/director/lingo/lingo-gr.y"
+#line 654 "engines/director/lingo/lingo-gr.y"
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 623ac66..d3b96ea 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -196,8 +196,7 @@ asgn: tPUT expr tINTO ID 		{
 		}
 
 		warning("STUB: menuItem entity");
-		g_lingo->code1(LC::c_swap);
-		g_lingo->code1(LC::c_theentityassign);
+		g_lingo->code1(LC::c_themenuitementityassign);
 		g_lingo->codeInt($THEMENUITEMENTITY[0]);
 		g_lingo->codeInt($THEMENUITEMENTITY[1]);
 		$$ = $expr; }
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 3b2ba74..3275f16 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -460,6 +460,11 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
 	}
 }
 
+void Lingo::setTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId, Datum &d) {
+	warning("STUB: setTheMenuItemEntity(%s, \"%s\", %s, \"%s\", %s)", entity2str(entity), menuId.toString()->c_str(), field2str(field),
+				menuItemId.toString()->c_str(), d.toString()->c_str());
+}
+
 Datum Lingo::getTheSprite(Datum &id1, int field) {
 	Datum d;
 	int id = 0;
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index bd81c4c..55dfa50 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -256,6 +256,7 @@ public:
 public:
 	void initTheEntities();
 	void setTheEntity(int entity, Datum &id, int field, Datum &d);
+	void setTheMenuItemEntity(int entity, Datum &menuId, int field, Datum &menuItemId, Datum &d);
 	void setTheSprite(Datum &id, int field, Datum &d);
 	void setTheCast(Datum &id, int field, Datum &d);
 	Datum getTheEntity(int entity, Datum &id, int field);


Commit: 1e4ccfbc304dcc5ed10e9bde5b1052a77dfc5380
    https://github.com/scummvm/scummvm/commit/1e4ccfbc304dcc5ed10e9bde5b1052a77dfc5380
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-17T16:23:52+01:00

Commit Message:
DIRECTOR: LINGO: Implement putting things into chunk expressions

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 54f5c64..6566b0a 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -565,18 +565,18 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  124
+#define YYFINAL  125
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1601
+#define YYLAST   1594
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  99
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  49
+#define YYNNTS  50
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  167
+#define YYNRULES  168
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  359
+#define YYNSTATES  360
 
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   338
@@ -640,14 +640,14 @@ static const yytype_int16 yyrline[] =
      391,   392,   395,   398,   401,   409,   415,   420,   421,   422,
      423,   424,   425,   426,   427,   428,   429,   430,   431,   432,
      433,   434,   435,   436,   437,   438,   439,   440,   441,   442,
-     443,   444,   445,   446,   447,   448,   449,   450,   451,   453,
-     457,   458,   459,   460,   461,   462,   462,   463,   464,   465,
-     468,   471,   472,   474,   478,   483,   487,   492,   496,   508,
-     509,   510,   511,   515,   519,   524,   525,   527,   528,   532,
-     536,   540,   540,   570,   570,   570,   577,   578,   578,   585,
-     595,   603,   603,   605,   606,   607,   608,   610,   611,   612,
-     614,   616,   624,   625,   626,   628,   629,   631,   633,   634,
-     635,   636,   638,   639,   641,   642,   644,   648
+     443,   445,   446,   447,   448,   449,   450,   451,   452,   454,
+     457,   459,   460,   461,   462,   463,   464,   464,   465,   466,
+     467,   470,   473,   474,   476,   480,   485,   489,   494,   498,
+     510,   511,   512,   513,   517,   521,   526,   527,   529,   530,
+     534,   538,   542,   542,   572,   572,   572,   579,   580,   580,
+     587,   597,   605,   605,   607,   608,   609,   610,   612,   613,
+     614,   616,   618,   626,   627,   628,   630,   631,   633,   635,
+     636,   637,   638,   640,   641,   643,   644,   646,   650
 };
 #endif
 
@@ -673,11 +673,12 @@ static const char *const yytname[] =
   "$accept", "program", "programline", "asgn", "stmtoneliner",
   "stmtonelinerwithif", "stmt", "tellstart", "ifstmt", "elseifstmtlist",
   "elseifstmt", "ifoneliner", "repeatwhile", "repeatwith", "if", "elseif",
-  "begin", "end", "stmtlist", "when", "simpleexpr", "expr", "reference",
-  "proc", "$@1", "globallist", "propertylist", "instancelist", "gotofunc",
-  "gotomovie", "playfunc", "$@2", "defn", "$@3", "$@4", "$@5", "on", "$@6",
-  "argdef", "endargdef", "argstore", "macro", "arglist", "nonemptyarglist",
-  "list", "valuelist", "linearlist", "proplist", "proppair", YY_NULLPTR
+  "begin", "end", "stmtlist", "when", "simpleexpr", "expr", "chunkexpr",
+  "reference", "proc", "$@1", "globallist", "propertylist", "instancelist",
+  "gotofunc", "gotomovie", "playfunc", "$@2", "defn", "$@3", "$@4", "$@5",
+  "on", "$@6", "argdef", "endargdef", "argstore", "macro", "arglist",
+  "nonemptyarglist", "list", "valuelist", "linearlist", "proplist",
+  "proppair", YY_NULLPTR
 };
 #endif
 
@@ -713,42 +714,42 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     275,   -50,  -267,  -267,   864,  -267,   897,   976,    82,  1009,
-    -267,  -267,  -267,  -267,  -267,     4,  -267,   749,  -267,  -267,
-     864,    46,   208,    30,    45,   864,   785,    53,   864,   864,
-     864,   864,   864,   864,   864,    56,  -267,   864,   864,   864,
-      61,     6,  -267,  -267,  -267,  -267,  -267,   864,    22,   864,
-     591,  -267,  1498,  -267,  -267,  -267,  -267,  -267,  -267,  -267,
-    -267,  -267,    -8,   864,  1498,   864,  1498,    18,   864,    18,
-    -267,  -267,   864,  1498,    21,   864,  -267,  -267,    69,  -267,
-     864,  -267,    81,  -267,  1061,  -267,   100,  1048,   102,  -267,
-      -9,    82,    82,     9,    77,    79,  -267,  1415,  -267,  1061,
-    -267,  -267,    34,  -267,  1110,  1143,  1176,  1209,  1465,  1374,
-    -267,    35,   128,  -267,  -267,  1428,    54,    57,  -267,  -267,
-      63,    59,    66,  -267,  -267,   354,  1498,   864,  1498,  -267,
-    -267,   864,  1498,  -267,  -267,   864,   864,   864,   864,   864,
-     864,   864,   864,   864,   864,   864,   864,   864,   864,   864,
-     864,   864,   129,   864,  1048,  1428,   -32,   864,     8,    15,
-     864,    18,   129,  -267,    68,  1498,   864,  -267,  -267,    90,
-     864,   864,  -267,   864,   864,    10,   116,   864,   864,   864,
-    -267,   864,  -267,   142,   864,   864,   864,   864,   864,   864,
-     864,   864,   864,   864,  -267,  -267,   146,  -267,  -267,    82,
-      82,  -267,    82,    83,  -267,  -267,  1498,   124,  -267,  1498,
-     125,   125,   125,   125,  1511,  1511,  -267,   -34,   125,   125,
-     125,   125,   -34,     0,     0,  -267,  -267,  -267,   -80,  -267,
-    1498,  -267,  -267,  1498,   -75,   150,  1498,  -267,  -267,  -267,
-    1498,  1498,  1498,   125,   864,   864,   154,  1498,   125,  1498,
-    1498,  -267,  1498,  1242,  1498,  1275,  1498,  1308,  1498,  1341,
-    1498,  1498,   670,  -267,  -267,  -267,  -267,  -267,    54,    57,
-    -267,   512,   -16,  -267,   144,    97,   172,    97,  -267,   129,
-    1498,   125,    82,   864,   864,   864,   864,  -267,   512,  -267,
-    -267,   115,   151,   864,   512,   670,   176,  -267,  -267,  -267,
-     -48,   156,  1498,  1498,  1498,  1498,  -267,   122,  -267,   864,
-    1498,  -267,  -267,  -267,   433,   512,    97,   864,  -267,  1498,
-    -267,    88,   -21,   184,  -267,  1498,  -267,   512,  -267,  -267,
-    -267,   864,   126,  -267,  -267,  -267,   113,   512,   512,   127,
-    -267,  1498,  -267,   670,   188,   134,  -267,   512,   170,  -267,
-    -267,  -267,   138,  -267,   140,  -267,   512,  -267,  -267
+     330,   -82,  -267,  -267,   199,  -267,   919,   952,    30,  1031,
+    -267,  -267,  -267,  -267,  -267,   -30,  -267,   804,  -267,  -267,
+     199,    40,   176,     9,    39,   199,   840,    41,   199,   199,
+     199,   199,   199,   199,   199,    54,  -267,   199,   199,   199,
+      62,     7,  -267,  -267,  -267,  -267,  -267,   199,   -37,   199,
+     646,  -267,  1491,  -267,  -267,  -267,  -267,  -267,  -267,  -267,
+    -267,  -267,  -267,    -7,   199,  1491,   199,  1491,   -12,   199,
+     -12,  -267,  -267,   199,  1491,     0,   199,  -267,  -267,    79,
+    -267,   199,  -267,    65,  -267,  1070,  -267,    88,  1004,    93,
+    -267,    -1,    30,    30,     6,    77,    80,  -267,  1408,  -267,
+    1070,  -267,  -267,    36,  -267,  1103,  1136,  1169,  1202,  1458,
+    1367,  -267,    58,   127,  -267,  -267,  1421,    57,    61,  -267,
+    -267,    59,    66,    69,  -267,  -267,   409,  1491,   199,  1491,
+    -267,  -267,   199,  1491,  -267,  -267,   199,   199,   199,   199,
+     199,   199,   199,   199,   199,   199,   199,   199,   199,   199,
+     199,   199,   199,   143,   199,  1004,  1421,     3,   199,    23,
+      27,   199,   -12,   143,  -267,    71,  1491,   199,  -267,  -267,
+      35,   199,   199,  -267,   199,   199,    10,   130,   199,   199,
+     199,  -267,   199,  -267,   147,   199,   199,   199,   199,   199,
+     199,   199,   199,   199,   199,  -267,  -267,   151,  -267,  -267,
+      30,    30,  -267,    30,    13,  -267,  -267,  1491,   132,  -267,
+    1491,   144,   144,   144,   144,  1504,  1504,  -267,    24,   144,
+     144,   144,   144,    24,    14,    14,  -267,  -267,  -267,   -75,
+    -267,  1491,  -267,  -267,  1491,   -55,   155,  1491,  -267,  -267,
+    -267,  1491,  1491,  1491,   144,   199,   199,   158,  1491,   144,
+    1491,  1491,  -267,  1491,  1235,  1491,  1268,  1491,  1301,  1491,
+    1334,  1491,  1491,   725,  -267,  -267,  -267,  -267,  -267,    57,
+      61,  -267,   567,     2,  -267,   148,    99,   174,    99,  -267,
+     143,  1491,   144,    30,   199,   199,   199,   199,  -267,   567,
+    -267,  -267,   117,   159,   199,   567,   725,   181,  -267,  -267,
+    -267,   -24,   160,  1491,  1491,  1491,  1491,  -267,   123,  -267,
+     199,  1491,  -267,  -267,  -267,   488,   567,    99,   199,  -267,
+    1491,  -267,   120,   -17,   188,  -267,  1491,  -267,   567,  -267,
+    -267,  -267,   199,   135,  -267,  -267,  -267,   118,   567,   567,
+     136,  -267,  1491,  -267,   725,   201,   145,  -267,   567,   178,
+    -267,  -267,  -267,   154,  -267,   156,  -267,   567,  -267,  -267
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -756,62 +757,62 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    53,    64,     0,    54,   152,   152,     0,    57,
-      56,    55,   131,   137,    66,   104,   105,     0,    45,   133,
+       0,     0,    53,    64,     0,    54,   153,   153,     0,    57,
+      56,    55,   132,   138,    66,   105,   106,     0,    45,   134,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   141,     0,     0,     0,
-     158,     0,     3,    67,    27,     7,    28,     0,     0,     0,
-       0,    59,    21,    60,    22,   101,   102,     6,    47,    20,
-      58,     4,    57,     0,    65,   152,   153,   110,   152,    62,
-      57,    99,   152,   155,   151,   152,    47,   103,     0,   119,
-       0,   120,     0,   121,   122,   124,     0,   100,     0,    43,
-       0,     0,     0,     0,     0,     0,   136,   112,   127,   128,
-     130,   117,   108,    81,     0,     0,     0,     0,     0,     0,
-     115,   107,     0,    86,    87,     0,    56,    55,   159,   162,
-       0,   160,   161,   164,     1,     5,    48,     0,    48,    48,
-      26,     0,    24,    25,    23,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   142,     0,     0,     0,
+     159,     0,     3,    67,    27,     7,    28,     0,     0,     0,
+       0,    59,    21,   100,    60,    22,   102,   103,     6,    47,
+      20,    58,     4,    57,     0,    65,   153,   154,   111,   153,
+      62,    57,    99,   153,   156,   152,   153,    47,   104,     0,
+     120,     0,   121,     0,   122,   123,   125,     0,   101,     0,
+      43,     0,     0,     0,     0,     0,     0,   137,   113,   128,
+     129,   131,   118,   109,    81,     0,     0,     0,     0,     0,
+       0,   116,   108,     0,    86,    87,     0,    56,    55,   160,
+     163,     0,   161,   162,   165,     1,     5,    48,     0,    48,
+      48,    26,     0,    24,    25,    23,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   143,   152,     0,   153,     0,     0,     0,     0,
-       0,   132,   143,   113,   106,   126,     0,   123,   134,     0,
-       0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
-      52,     0,   129,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    35,    35,     0,   142,    88,     0,
-       0,   157,     0,     0,     2,    49,    48,     0,    32,    48,
-      77,    78,    75,    76,    79,    80,    72,    83,    84,    85,
-      74,    73,    82,    68,    69,    70,    71,   144,     0,   109,
-     154,    61,    63,   156,     0,     0,   125,    47,     8,     9,
-      10,    11,    15,    13,     0,     0,     0,    14,    12,    19,
-     111,   118,    91,     0,    93,     0,    95,     0,    97,     0,
-      89,    90,     0,    49,   116,   167,   166,   163,     0,     0,
-     165,    48,     0,    49,     0,   150,     0,   150,   114,   143,
-      16,    17,     0,     0,     0,     0,     0,    48,    48,    50,
-      51,     0,     0,     0,    48,     0,     0,    49,   145,    49,
-       0,     0,    92,    94,    96,    98,    34,     0,    29,     0,
-      48,    38,    48,   146,   140,   138,   150,     0,    33,    48,
-      49,    48,     0,   147,    49,    18,    49,    48,    47,    46,
-      39,     0,     0,    47,    42,   148,   139,   135,    48,     0,
-      49,    48,    36,     0,     0,     0,    30,    48,     0,    48,
-     149,    31,     0,    49,     0,    37,    48,    41,    40
+       0,     0,     0,   144,   153,     0,   154,     0,     0,     0,
+       0,     0,   133,   144,   114,   107,   127,     0,   124,   135,
+       0,     0,     0,    44,     0,     0,     0,     0,     0,     0,
+       0,    52,     0,   130,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    35,    35,     0,   143,    88,
+       0,     0,   158,     0,     0,     2,    49,    48,     0,    32,
+      48,    77,    78,    75,    76,    79,    80,    72,    83,    84,
+      85,    74,    73,    82,    68,    69,    70,    71,   145,     0,
+     110,   155,    61,    63,   157,     0,     0,   126,    47,     8,
+       9,    10,    11,    15,    13,     0,     0,     0,    14,    12,
+      19,   112,   119,    91,     0,    93,     0,    95,     0,    97,
+       0,    89,    90,     0,    49,   117,   168,   167,   164,     0,
+       0,   166,    48,     0,    49,     0,   151,     0,   151,   115,
+     144,    16,    17,     0,     0,     0,     0,     0,    48,    48,
+      50,    51,     0,     0,     0,    48,     0,     0,    49,   146,
+      49,     0,     0,    92,    94,    96,    98,    34,     0,    29,
+       0,    48,    38,    48,   147,   141,   139,   151,     0,    33,
+      48,    49,    48,     0,   148,    49,    18,    49,    48,    47,
+      46,    39,     0,     0,    47,    42,   149,   140,   136,    48,
+       0,    49,    48,    36,     0,     0,     0,    30,    48,     0,
+      48,   150,    31,     0,    49,     0,    37,    48,    41,    40
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -267,  -267,   101,  -267,  -255,  -267,    23,    27,  -267,  -267,
-    -267,  -267,  -267,  -267,   178,  -267,   -72,   -92,  -225,  -267,
-       1,    -4,    62,   182,  -267,  -267,  -267,  -267,  -267,   -18,
-    -267,  -267,  -267,  -267,  -267,  -267,  -267,  -267,  -161,  -267,
-    -266,   183,    12,  -267,  -267,  -267,  -267,  -267,    31
+    -267,  -267,   100,  -267,  -252,  -267,     4,    33,  -267,  -267,
+    -267,  -267,  -267,  -267,   186,  -267,   -76,   -10,  -225,  -267,
+       1,    -4,  -267,    68,   189,  -267,  -267,  -267,  -267,  -267,
+     -18,  -267,  -267,  -267,  -267,  -267,  -267,  -267,  -267,  -157,
+    -267,  -266,   190,    12,  -267,  -267,  -267,  -267,  -267,    42
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    41,    42,    43,    44,   129,   290,   262,    46,   321,
-     330,   130,    47,    48,    49,   331,   152,   205,   271,    50,
-      51,    52,    53,    54,    78,   164,   111,   102,    55,    85,
-      56,    75,    57,    86,   237,    76,    58,   112,   228,   336,
-     297,    59,   159,    74,    60,   120,   121,   122,   123
+      -1,    41,    42,    43,    44,   130,   291,   263,    46,   322,
+     331,   131,    47,    48,    49,   332,   153,   206,   272,    50,
+      51,    52,    53,    54,    55,    79,   165,   112,   103,    56,
+      86,    57,    76,    58,    87,   238,    77,    59,   113,   229,
+     337,   298,    60,   160,    75,    61,   121,   122,   123,   124
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -819,288 +820,283 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      64,   234,    66,    66,   162,    73,   124,   287,   100,    71,
-     333,   299,   275,    84,   292,   276,    87,   277,    67,    69,
-     276,    97,    99,    45,   103,   104,   105,   106,   107,   108,
-     109,   141,   293,   113,   114,   115,   207,   208,   288,   173,
-     312,   119,    61,   126,   316,   128,   132,   276,   294,    77,
-     324,   174,    95,   148,   149,   150,   151,   177,   244,   154,
-     334,   155,   229,   157,   155,   141,   167,    96,   155,   178,
-     245,    66,   314,     2,   315,   101,   165,   156,   110,     5,
-     158,   182,   127,    70,   116,   153,   117,   161,   349,   150,
-     151,   163,   175,   176,     2,   327,    88,    89,   125,   337,
-       5,   338,   231,   157,    70,    10,   268,    11,   269,   232,
-     157,     8,   238,   157,   272,   347,   160,   274,   300,   328,
-     329,   166,   168,   206,   172,   179,   180,   209,   356,   183,
-     196,   210,   211,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,    45,    66,
-     197,   227,   199,   230,   202,   200,   233,    40,   246,   118,
-     201,   203,   236,   235,   251,   279,   240,   241,   264,   242,
-     243,   273,   278,   247,   248,   249,   282,   250,    40,   291,
-     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     141,   295,   296,   142,   298,   306,   307,   308,   313,   309,
-     265,   266,   311,   267,   317,   318,   335,   342,   344,   346,
-     350,   147,   148,   149,   150,   151,   351,   353,   320,   355,
-     322,   357,   263,    90,    91,    92,   204,   326,   131,   332,
-      93,   239,   133,   134,   270,   339,     0,    94,     0,     0,
-     280,   281,     0,     0,     0,     0,   345,     0,     0,   348,
-       0,     0,     0,     0,     0,   352,   340,   354,     0,     0,
-       0,   343,     0,     0,   358,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    -5,     1,     0,     0,   302,
-     303,   304,   305,   301,     0,     0,     0,     2,     0,   310,
-       3,     4,     0,     5,     6,     7,     8,     9,    10,     0,
-      11,     0,    12,    13,    14,   319,     0,     0,    15,    16,
-      17,    18,     0,   325,    19,     0,     0,     0,     0,    20,
-      21,    22,     0,     0,    23,     0,     0,   341,    24,    25,
-      26,     0,    27,     0,     0,     0,     0,     0,     0,    28,
-       0,     0,     0,     0,     0,     0,    29,    30,    31,    32,
-      33,     0,     0,    34,    35,    36,     0,     0,     0,     0,
-       0,     0,    37,    38,     0,     0,     2,    -5,    39,     3,
-       4,    40,     5,     6,     7,     8,     9,    10,     0,    11,
-       0,    12,    13,    14,     0,     0,     0,    15,    16,    17,
-      18,     0,     0,    19,     0,     0,     0,     0,    20,    21,
-      22,     0,     0,    23,     0,     0,     0,    24,    25,    26,
-       0,    27,     0,     0,     0,     0,     0,     0,    28,     0,
-       0,     0,     0,     0,     0,    29,    30,    31,    32,    33,
-       0,     0,    34,    35,    36,     0,     0,     0,     0,     0,
-       0,    37,    38,     0,     0,     2,     0,    39,     3,     4,
-      40,     5,     6,     7,     8,     9,    10,     0,    11,   323,
-      12,     0,    14,     0,     0,     0,    15,    16,    17,    18,
-       0,     0,     0,     0,     0,     0,     0,    20,    21,    22,
-       0,     0,    23,     0,     0,     0,     0,    25,    26,     0,
-      27,     0,     0,     0,     0,     0,     0,    28,     0,     0,
-       0,     0,     0,     0,    29,    30,    31,    32,    33,     0,
-       0,    34,    35,     0,     0,     0,     0,     0,     0,     0,
-      37,    38,     0,     0,     2,   289,    39,     3,     4,    40,
-       5,     6,     7,     8,     9,    10,     0,    11,     0,    12,
-       0,    14,     0,     0,     0,    15,    16,    17,    18,     0,
-       0,     0,     0,     0,     0,     0,    20,    21,    22,     0,
-       0,    23,     0,     0,     0,     0,    25,    26,     0,    27,
-       0,     0,     0,     0,     0,     0,    28,     0,     0,     0,
-       0,     0,     0,    29,    30,    31,    32,    33,     0,     0,
-      34,    35,     0,     0,     0,     0,     0,     0,     0,    37,
-      38,     0,     0,     2,   289,    39,     3,     4,    40,     5,
-       6,     7,     8,     9,    10,     0,    11,     0,    12,     0,
-      14,     0,     0,     0,    15,    16,    17,    18,     0,     0,
-       0,     0,     0,     0,     0,    20,     0,    22,     0,     0,
-       0,     0,     0,     0,     0,    25,    26,     0,    27,     0,
-       0,     0,     0,     0,     0,    28,     0,     0,     0,     0,
-       0,     0,    29,    30,    31,    32,    33,     0,     0,     0,
-      35,     0,     0,     0,     0,     0,     0,     0,    37,    38,
-       0,     0,     2,     0,    39,     3,     4,    40,     5,     6,
-       7,     8,     9,    10,     0,    11,     0,    12,     0,    14,
-       0,     0,     0,    15,    16,    17,     0,     0,     0,     0,
-       0,     0,     0,     0,    20,     0,    22,     0,     0,     0,
-       0,     0,     0,     0,    25,    26,     0,    27,     0,     0,
+      65,   163,    67,    67,    45,    74,   235,   125,   101,    72,
+      62,   288,   300,    85,   334,    78,    88,   276,    68,    70,
+     277,    98,   100,   128,   104,   105,   106,   107,   108,   109,
+     110,    96,   293,   114,   115,   116,   269,   278,   270,   289,
+     277,   120,     2,   127,   313,   129,   133,   174,     5,   295,
+     294,   325,    71,    10,   178,    11,     8,   239,   245,   175,
+     155,    97,   156,   102,   335,   156,   179,   168,   317,   156,
+     246,   277,    67,   315,     2,   316,   111,   166,   157,   142,
+       5,   159,   183,   158,    71,   117,   154,   118,   162,   142,
+      89,    90,   350,   176,   177,   161,   328,   230,   158,   126,
+     338,   164,   339,   151,   152,   167,    29,    30,    31,    32,
+     169,   149,   150,   151,   152,   173,   348,   232,   158,   208,
+     209,   233,   158,   301,   207,   180,    40,   181,   210,   357,
+      45,   184,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   198,
+      67,   329,   330,   197,   231,   200,   202,   234,    40,   201,
+     119,   203,   280,   237,   204,   228,   236,   241,   242,   252,
+     243,   244,   247,   265,   248,   249,   250,   279,   251,   274,
+     283,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,    91,    92,    93,   297,   296,   299,   273,    94,   309,
+     275,   266,   267,   314,   268,    95,   319,   310,   318,   142,
+     336,     2,   143,   345,     3,     4,   343,     5,   347,     7,
+       8,    63,    10,   351,    11,   354,   205,   352,    14,   264,
+     148,   149,   150,   151,   152,   356,   132,   358,   240,   134,
+     135,   281,   282,    64,     0,    22,   271,     0,     0,     0,
+       0,     0,     0,   341,     0,     0,     0,     0,   344,     0,
+       0,     0,   292,    28,     0,     0,     0,     0,     0,     0,
+      29,    30,    31,    32,    33,     0,     0,     0,   307,   308,
+     303,   304,   305,   306,   302,   312,    37,    38,     0,     0,
+     311,     0,    39,     0,     0,    40,     0,     0,     0,     0,
+       0,   321,     0,   323,     0,     0,   320,     0,     0,     0,
+     327,     0,   333,     0,   326,     0,     0,     0,   340,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   342,   346,
+      -5,     1,   349,     0,     0,     0,     0,     0,   353,     0,
+     355,     0,     2,     0,     0,     3,     4,   359,     5,     6,
+       7,     8,     9,    10,     0,    11,     0,    12,    13,    14,
+       0,     0,     0,    15,    16,    17,    18,     0,     0,    19,
+       0,     0,     0,     0,    20,    21,    22,     0,     0,    23,
+       0,     0,     0,    24,    25,    26,     0,    27,     0,     0,
        0,     0,     0,     0,    28,     0,     0,     0,     0,     0,
-       0,    29,    30,    31,    32,    33,     0,     0,     0,    35,
-       0,     0,     0,     0,     0,     0,     0,    37,    38,     0,
-       0,     2,     0,    39,     3,     4,    40,     5,     0,     7,
-       8,    62,    10,     0,    11,     0,     0,     0,    14,     0,
-       0,     0,     0,     0,     0,     0,     0,    79,     0,    80,
-      81,    82,    83,    63,     0,    22,     0,     2,     0,     0,
-       3,     4,     0,     5,     0,     7,     8,    62,    10,     0,
-      11,     0,     0,    28,    14,     0,     0,     0,     0,     0,
-      29,    30,    31,    32,    33,    80,     0,    82,     0,    63,
-       0,    22,     0,     0,     0,     0,    37,    38,     0,     0,
-       0,    98,    39,     0,     0,    40,     0,     0,     0,    28,
+       0,    29,    30,    31,    32,    33,     0,     0,    34,    35,
+      36,     0,     0,     0,     0,     0,     0,    37,    38,     0,
+       0,     2,    -5,    39,     3,     4,    40,     5,     6,     7,
+       8,     9,    10,     0,    11,     0,    12,    13,    14,     0,
+       0,     0,    15,    16,    17,    18,     0,     0,    19,     0,
+       0,     0,     0,    20,    21,    22,     0,     0,    23,     0,
+       0,     0,    24,    25,    26,     0,    27,     0,     0,     0,
+       0,     0,     0,    28,     0,     0,     0,     0,     0,     0,
+      29,    30,    31,    32,    33,     0,     0,    34,    35,    36,
+       0,     0,     0,     0,     0,     0,    37,    38,     0,     0,
+       2,     0,    39,     3,     4,    40,     5,     6,     7,     8,
+       9,    10,     0,    11,   324,    12,     0,    14,     0,     0,
+       0,    15,    16,    17,    18,     0,     0,     0,     0,     0,
+       0,     0,    20,    21,    22,     0,     0,    23,     0,     0,
+       0,     0,    25,    26,     0,    27,     0,     0,     0,     0,
+       0,     0,    28,     0,     0,     0,     0,     0,     0,    29,
+      30,    31,    32,    33,     0,     0,    34,    35,     0,     0,
+       0,     0,     0,     0,     0,    37,    38,     0,     0,     2,
+     290,    39,     3,     4,    40,     5,     6,     7,     8,     9,
+      10,     0,    11,     0,    12,     0,    14,     0,     0,     0,
+      15,    16,    17,    18,     0,     0,     0,     0,     0,     0,
+       0,    20,    21,    22,     0,     0,    23,     0,     0,     0,
+       0,    25,    26,     0,    27,     0,     0,     0,     0,     0,
+       0,    28,     0,     0,     0,     0,     0,     0,    29,    30,
+      31,    32,    33,     0,     0,    34,    35,     0,     0,     0,
+       0,     0,     0,     0,    37,    38,     0,     0,     2,   290,
+      39,     3,     4,    40,     5,     6,     7,     8,     9,    10,
+       0,    11,     0,    12,     0,    14,     0,     0,     0,    15,
+      16,    17,    18,     0,     0,     0,     0,     0,     0,     0,
+      20,     0,    22,     0,     0,     0,     0,     0,     0,     0,
+      25,    26,     0,    27,     0,     0,     0,     0,     0,     0,
+      28,     0,     0,     0,     0,     0,     0,    29,    30,    31,
+      32,    33,     0,     0,     0,    35,     0,     0,     0,     0,
+       0,     0,     0,    37,    38,     0,     0,     2,     0,    39,
+       3,     4,    40,     5,     6,     7,     8,     9,    10,     0,
+      11,     0,    12,     0,    14,     0,     0,     0,    15,    16,
+      17,     0,     0,     0,     0,     0,     0,     0,     0,    20,
+       0,    22,     0,     0,     0,     0,     0,     0,     0,    25,
+      26,     0,    27,     0,     0,     0,     0,     0,     0,    28,
        0,     0,     0,     0,     0,     0,    29,    30,    31,    32,
-      33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      33,     0,     0,     0,    35,     0,     0,     0,     0,     0,
        0,     0,    37,    38,     0,     0,     2,     0,    39,     3,
-       4,    40,     5,     0,     7,     8,    62,    10,     0,    11,
+       4,    40,     5,     0,     7,     8,    63,    10,     0,    11,
        0,     0,     0,    14,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    63,     2,
-      22,     0,     3,     4,     0,     5,     0,     7,     8,    62,
-      10,     0,    11,     0,     0,     0,    14,     0,    28,     0,
+       0,     0,    80,     0,    81,    82,    83,    84,    64,     0,
+      22,     0,     2,     0,     0,     3,     4,     0,     5,     0,
+       7,     8,    63,    10,     0,    11,     0,     0,    28,    14,
        0,     0,     0,     0,     0,    29,    30,    31,    32,    33,
-       0,    63,     0,    22,     0,     0,     0,     0,     0,     0,
-       0,    37,    38,     0,     0,     0,     0,    39,     0,     0,
-      40,    28,     0,     0,     0,     0,     0,     0,    29,    30,
-      31,    32,    33,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    37,    38,     0,     0,     2,     0,
-      65,     3,     4,    40,     5,     0,     7,     8,    62,    10,
-       0,    11,     0,     0,     0,    14,     0,     0,     0,     0,
+      81,     0,    83,     0,    64,     0,    22,     0,     0,     0,
+       0,    37,    38,     0,     0,     0,    99,    39,     0,     0,
+      40,     0,     0,     0,    28,     0,     0,     0,     0,     0,
+       0,    29,    30,    31,    32,    33,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    37,    38,     0,
+       0,     2,     0,    39,     3,     4,    40,     5,     0,     7,
+       8,    63,    10,     0,    11,     0,     0,     0,    14,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      63,     2,    22,     0,     3,     4,     0,     5,     0,     7,
-       8,    62,    10,     0,    11,     0,     0,     0,    14,     0,
-      28,     0,     0,     0,     0,     0,     0,    29,    30,    31,
-      32,    33,     0,    63,     0,    22,     0,     0,     0,     0,
-       0,     0,     0,    37,    38,     0,     0,     0,     0,    68,
-       0,     0,    40,    28,     0,     0,     0,     0,     0,     0,
-      29,    30,    31,    32,    33,   169,     0,     0,     0,     0,
+       0,     0,     0,    64,     2,    22,     0,     3,     4,     0,
+       5,     0,     7,     8,    63,    10,     0,    11,     0,     0,
+       0,    14,     0,    28,     0,     0,     0,     0,     0,     0,
+      29,    30,    31,    32,    33,     0,    64,     0,    22,     0,
        0,     0,     0,     0,     0,     0,    37,    38,     0,     0,
-       0,    80,    72,    82,     0,    40,   135,   136,   137,   138,
-     139,   140,     0,   141,   170,   171,   142,   143,   144,   135,
-     136,   137,   138,   139,   140,     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,   184,     0,     0,     0,     0,     0,   185,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   135,   136,
-     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,     0,     0,     0,   186,     0,     0,     0,     0,
-       0,   187,     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,   188,     0,
-       0,     0,     0,     0,   189,     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,   190,     0,     0,     0,     0,     0,   191,     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,   283,     0,     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,   284,     0,     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,
-     285,     0,     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,    66,     0,     0,    40,    28,     0,     0,     0,
+       0,     0,     0,    29,    30,    31,    32,    33,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    37,
+      38,   170,     0,     2,     0,    69,     3,     4,    40,     5,
+       0,     7,     8,    63,    10,     0,    11,     0,     0,     0,
+      14,     0,   136,   137,   138,   139,   140,   141,     0,   142,
+     171,   172,   143,   144,   145,    64,     0,    22,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   146,   147,
+     148,   149,   150,   151,   152,    28,     0,     0,     0,     0,
+       0,     0,    29,    30,    31,    32,    33,     0,     0,     0,
+      81,     0,    83,     0,     0,     0,     0,     0,    37,    38,
+       0,     0,     0,     0,    73,     0,     0,    40,   136,   137,
+     138,   139,   140,   141,     0,   142,     0,     0,   143,   144,
+     145,     0,     0,     0,     0,   185,     0,     0,     0,     0,
+       0,   186,     0,     0,   146,   147,   148,   149,   150,   151,
+     152,   136,   137,   138,   139,   140,   141,     0,   142,     0,
+       0,   143,   144,   145,     0,     0,     0,     0,   187,     0,
+       0,     0,     0,     0,   188,     0,     0,   146,   147,   148,
+     149,   150,   151,   152,   136,   137,   138,   139,   140,   141,
+       0,   142,     0,     0,   143,   144,   145,     0,     0,     0,
+       0,   189,     0,     0,     0,     0,     0,   190,     0,     0,
+     146,   147,   148,   149,   150,   151,   152,   136,   137,   138,
+     139,   140,   141,     0,   142,     0,     0,   143,   144,   145,
+       0,     0,     0,     0,   191,     0,     0,     0,     0,     0,
+     192,     0,     0,   146,   147,   148,   149,   150,   151,   152,
+     136,   137,   138,   139,   140,   141,     0,   142,     0,     0,
+     143,   144,   145,     0,     0,     0,     0,   284,     0,     0,
+       0,     0,     0,     0,     0,     0,   146,   147,   148,   149,
+     150,   151,   152,   136,   137,   138,   139,   140,   141,     0,
+     142,     0,     0,   143,   144,   145,     0,     0,     0,     0,
+     285,     0,     0,     0,     0,     0,     0,     0,     0,   146,
+     147,   148,   149,   150,   151,   152,   136,   137,   138,   139,
+     140,   141,     0,   142,     0,     0,   143,   144,   145,     0,
        0,     0,     0,   286,     0,     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,   194,     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,   181,   195,     0,     0,     0,
-       0,     0,     0,   135,   136,   137,   138,   139,   140,     0,
-     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,     0,     0,     0,
-       0,     0,   145,   146,   147,   148,   149,   150,   151,     0,
-       0,     0,   198,   135,   136,   137,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
-       0,   192,   193,     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,     0,   146,   147,   148,   149,   150,   151,   152,   136,
+     137,   138,   139,   140,   141,     0,   142,     0,     0,   143,
+     144,   145,     0,     0,     0,     0,   287,     0,     0,     0,
+       0,     0,     0,     0,     0,   146,   147,   148,   149,   150,
+     151,   152,   136,   137,   138,   139,   140,   141,     0,   142,
+       0,     0,   143,   144,   145,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   195,     0,     0,   146,   147,
+     148,   149,   150,   151,   152,   136,   137,   138,   139,   140,
+     141,     0,   142,     0,     0,   143,   144,   145,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   146,   147,   148,   149,   150,   151,   152,   182,   196,
+       0,     0,     0,     0,     0,     0,   136,   137,   138,   139,
+     140,   141,     0,   142,     0,     0,   143,   144,   145,   136,
+     137,   138,   139,   140,   141,     0,   142,     0,     0,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,     0,
+       0,     0,     0,     0,     0,   146,   147,   148,   149,   150,
+     151,   152,     0,     0,     0,   199,   136,   137,   138,   139,
+     140,   141,     0,   142,     0,     0,   143,   144,   145,     0,
+       0,     0,     0,     0,   193,   194,     0,     0,     0,     0,
+       0,     0,   146,   147,   148,   149,   150,   151,   152,   136,
+     137,   138,   139,   140,   141,     0,   142,     0,     0,   143,
+     144,   145,   136,   137,   138,   139,     0,     0,     0,   142,
+       0,     0,   143,   144,   145,   146,   147,   148,   149,   150,
+     151,   152,     0,     0,     0,     0,     0,     0,   146,   147,
+     148,   149,   150,   151,   152
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,   162,     6,     7,    76,     9,     0,   262,    26,     8,
-      31,   277,    92,    17,    30,    95,    20,    92,     6,     7,
-      95,    25,    26,     0,    28,    29,    30,    31,    32,    33,
-      34,    65,    48,    37,    38,    39,   128,   129,   263,    48,
-     295,    40,    92,    47,    92,    49,    50,    95,   273,    45,
-     316,    60,    22,    87,    88,    89,    90,    48,    48,    63,
-      81,    65,    94,    95,    68,    65,    84,    22,    72,    60,
-      60,    75,   297,    12,   299,    22,    80,    65,    22,    18,
-      68,    99,    60,    22,    23,    93,    25,    75,   343,    89,
-      90,    22,    91,    92,    12,   320,    50,    51,    92,   324,
-      18,   326,    94,    95,    22,    23,    23,    25,    25,    94,
-      95,    21,    22,    95,   206,   340,    95,   209,   279,    31,
-      32,    40,    22,   127,    22,    48,    47,   131,   353,    95,
-      95,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   151,   125,   153,
-      22,    22,    98,   157,    95,    98,   160,    96,    42,    98,
-      97,    95,   166,    95,    22,   237,   170,   171,    22,   173,
-     174,    47,    22,   177,   178,   179,    22,   181,    96,   271,
-     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
-      65,    47,    95,    68,    22,   287,   288,    82,    22,    48,
-     199,   200,   294,   202,    48,    83,    22,    81,    95,    82,
-      22,    86,    87,    88,    89,    90,    82,    47,   310,    81,
-     312,    81,   195,    15,    16,    17,   125,   319,    50,   321,
-      22,   169,    50,    50,   203,   327,    -1,    29,    -1,    -1,
-     244,   245,    -1,    -1,    -1,    -1,   338,    -1,    -1,   341,
-      -1,    -1,    -1,    -1,    -1,   347,   328,   349,    -1,    -1,
-      -1,   333,    -1,    -1,   356,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     0,     1,    -1,    -1,   283,
-     284,   285,   286,   282,    -1,    -1,    -1,    12,    -1,   293,
-      15,    16,    -1,    18,    19,    20,    21,    22,    23,    -1,
-      25,    -1,    27,    28,    29,   309,    -1,    -1,    33,    34,
-      35,    36,    -1,   317,    39,    -1,    -1,    -1,    -1,    44,
-      45,    46,    -1,    -1,    49,    -1,    -1,   331,    53,    54,
-      55,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    64,
-      -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
-      75,    -1,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,
-      -1,    -1,    87,    88,    -1,    -1,    12,    92,    93,    15,
-      16,    96,    18,    19,    20,    21,    22,    23,    -1,    25,
-      -1,    27,    28,    29,    -1,    -1,    -1,    33,    34,    35,
-      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    44,    45,
-      46,    -1,    -1,    49,    -1,    -1,    -1,    53,    54,    55,
-      -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,
-      -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,
-      -1,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,
-      -1,    87,    88,    -1,    -1,    12,    -1,    93,    15,    16,
-      96,    18,    19,    20,    21,    22,    23,    -1,    25,    26,
-      27,    -1,    29,    -1,    -1,    -1,    33,    34,    35,    36,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,
-      -1,    -1,    49,    -1,    -1,    -1,    -1,    54,    55,    -1,
-      57,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,
-      -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,
-      -1,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      87,    88,    -1,    -1,    12,    92,    93,    15,    16,    96,
-      18,    19,    20,    21,    22,    23,    -1,    25,    -1,    27,
-      -1,    29,    -1,    -1,    -1,    33,    34,    35,    36,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,    -1,
-      -1,    49,    -1,    -1,    -1,    -1,    54,    55,    -1,    57,
-      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,
-      -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
-      88,    -1,    -1,    12,    92,    93,    15,    16,    96,    18,
-      19,    20,    21,    22,    23,    -1,    25,    -1,    27,    -1,
-      29,    -1,    -1,    -1,    33,    34,    35,    36,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    44,    -1,    46,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    57,    -1,
-      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,
-      -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,    -1,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
-      -1,    -1,    12,    -1,    93,    15,    16,    96,    18,    19,
-      20,    21,    22,    23,    -1,    25,    -1,    27,    -1,    29,
-      -1,    -1,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    44,    -1,    46,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    54,    55,    -1,    57,    -1,    -1,
+       4,    77,     6,     7,     0,     9,   163,     0,    26,     8,
+      92,   263,   278,    17,    31,    45,    20,    92,     6,     7,
+      95,    25,    26,    60,    28,    29,    30,    31,    32,    33,
+      34,    22,    30,    37,    38,    39,    23,    92,    25,   264,
+      95,    40,    12,    47,   296,    49,    50,    48,    18,   274,
+      48,   317,    22,    23,    48,    25,    21,    22,    48,    60,
+      64,    22,    66,    22,    81,    69,    60,    85,    92,    73,
+      60,    95,    76,   298,    12,   300,    22,    81,    66,    65,
+      18,    69,   100,    95,    22,    23,    93,    25,    76,    65,
+      50,    51,   344,    92,    93,    95,   321,    94,    95,    92,
+     325,    22,   327,    89,    90,    40,    71,    72,    73,    74,
+      22,    87,    88,    89,    90,    22,   341,    94,    95,   129,
+     130,    94,    95,   280,   128,    48,    96,    47,   132,   354,
+     126,    95,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,    22,
+     154,    31,    32,    95,   158,    98,    97,   161,    96,    98,
+      98,    95,   238,   167,    95,    22,    95,   171,   172,    22,
+     174,   175,    42,    22,   178,   179,   180,    22,   182,    47,
+      22,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,    15,    16,    17,    95,    47,    22,   207,    22,    82,
+     210,   200,   201,    22,   203,    29,    83,    48,    48,    65,
+      22,    12,    68,    95,    15,    16,    81,    18,    82,    20,
+      21,    22,    23,    22,    25,    47,   126,    82,    29,   196,
+      86,    87,    88,    89,    90,    81,    50,    81,   170,    50,
+      50,   245,   246,    44,    -1,    46,   204,    -1,    -1,    -1,
+      -1,    -1,    -1,   329,    -1,    -1,    -1,    -1,   334,    -1,
+      -1,    -1,   272,    64,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    72,    73,    74,    75,    -1,    -1,    -1,   288,   289,
+     284,   285,   286,   287,   283,   295,    87,    88,    -1,    -1,
+     294,    -1,    93,    -1,    -1,    96,    -1,    -1,    -1,    -1,
+      -1,   311,    -1,   313,    -1,    -1,   310,    -1,    -1,    -1,
+     320,    -1,   322,    -1,   318,    -1,    -1,    -1,   328,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   332,   339,
+       0,     1,   342,    -1,    -1,    -1,    -1,    -1,   348,    -1,
+     350,    -1,    12,    -1,    -1,    15,    16,   357,    18,    19,
+      20,    21,    22,    23,    -1,    25,    -1,    27,    28,    29,
+      -1,    -1,    -1,    33,    34,    35,    36,    -1,    -1,    39,
+      -1,    -1,    -1,    -1,    44,    45,    46,    -1,    -1,    49,
+      -1,    -1,    -1,    53,    54,    55,    -1,    57,    -1,    -1,
       -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,
-      -1,    71,    72,    73,    74,    75,    -1,    -1,    -1,    79,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,
-      -1,    12,    -1,    93,    15,    16,    96,    18,    -1,    20,
-      21,    22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    40,
-      41,    42,    43,    44,    -1,    46,    -1,    12,    -1,    -1,
-      15,    16,    -1,    18,    -1,    20,    21,    22,    23,    -1,
-      25,    -1,    -1,    64,    29,    -1,    -1,    -1,    -1,    -1,
-      71,    72,    73,    74,    75,    40,    -1,    42,    -1,    44,
-      -1,    46,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,
-      -1,    56,    93,    -1,    -1,    96,    -1,    -1,    -1,    64,
+      -1,    71,    72,    73,    74,    75,    -1,    -1,    78,    79,
+      80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,
+      -1,    12,    92,    93,    15,    16,    96,    18,    19,    20,
+      21,    22,    23,    -1,    25,    -1,    27,    28,    29,    -1,
+      -1,    -1,    33,    34,    35,    36,    -1,    -1,    39,    -1,
+      -1,    -1,    -1,    44,    45,    46,    -1,    -1,    49,    -1,
+      -1,    -1,    53,    54,    55,    -1,    57,    -1,    -1,    -1,
+      -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    72,    73,    74,    75,    -1,    -1,    78,    79,    80,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,
+      12,    -1,    93,    15,    16,    96,    18,    19,    20,    21,
+      22,    23,    -1,    25,    26,    27,    -1,    29,    -1,    -1,
+      -1,    33,    34,    35,    36,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    44,    45,    46,    -1,    -1,    49,    -1,    -1,
+      -1,    -1,    54,    55,    -1,    57,    -1,    -1,    -1,    -1,
+      -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,
+      72,    73,    74,    75,    -1,    -1,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,
+      92,    93,    15,    16,    96,    18,    19,    20,    21,    22,
+      23,    -1,    25,    -1,    27,    -1,    29,    -1,    -1,    -1,
+      33,    34,    35,    36,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    44,    45,    46,    -1,    -1,    49,    -1,    -1,    -1,
+      -1,    54,    55,    -1,    57,    -1,    -1,    -1,    -1,    -1,
+      -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
+      73,    74,    75,    -1,    -1,    78,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,    92,
+      93,    15,    16,    96,    18,    19,    20,    21,    22,    23,
+      -1,    25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,
+      34,    35,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      44,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      54,    55,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,
+      64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
+      74,    75,    -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    87,    88,    -1,    -1,    12,    -1,    93,
+      15,    16,    96,    18,    19,    20,    21,    22,    23,    -1,
+      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
+      35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,
+      -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,
+      55,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    64,
       -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
-      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,    -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    87,    88,    -1,    -1,    12,    -1,    93,    15,
       16,    96,    18,    -1,    20,    21,    22,    23,    -1,    25,
       -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    12,
-      46,    -1,    15,    16,    -1,    18,    -1,    20,    21,    22,
-      23,    -1,    25,    -1,    -1,    -1,    29,    -1,    64,    -1,
+      -1,    -1,    38,    -1,    40,    41,    42,    43,    44,    -1,
+      46,    -1,    12,    -1,    -1,    15,    16,    -1,    18,    -1,
+      20,    21,    22,    23,    -1,    25,    -1,    -1,    64,    29,
       -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,
-      -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    87,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,
-      96,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
-      73,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,    -1,
-      93,    15,    16,    96,    18,    -1,    20,    21,    22,    23,
-      -1,    25,    -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      44,    12,    46,    -1,    15,    16,    -1,    18,    -1,    20,
+      40,    -1,    42,    -1,    44,    -1,    46,    -1,    -1,    -1,
+      -1,    87,    88,    -1,    -1,    -1,    56,    93,    -1,    -1,
+      96,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,
+      -1,    71,    72,    73,    74,    75,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,
+      -1,    12,    -1,    93,    15,    16,    96,    18,    -1,    20,
       21,    22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,
-      64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
-      74,    75,    -1,    44,    -1,    46,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    93,
-      -1,    -1,    96,    64,    -1,    -1,    -1,    -1,    -1,    -1,
-      71,    72,    73,    74,    75,    37,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    44,    12,    46,    -1,    15,    16,    -1,
+      18,    -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,
+      -1,    29,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    72,    73,    74,    75,    -1,    44,    -1,    46,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,
-      -1,    40,    93,    42,    -1,    96,    58,    59,    60,    61,
-      62,    63,    -1,    65,    66,    67,    68,    69,    70,    58,
-      59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
-      69,    70,    84,    85,    86,    87,    88,    89,    90,    -1,
-      -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
-      89,    90,    42,    -1,    -1,    -1,    -1,    -1,    48,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
+      -1,    -1,    93,    -1,    -1,    96,    64,    -1,    -1,    -1,
+      -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      88,    37,    -1,    12,    -1,    93,    15,    16,    96,    18,
+      -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,    -1,
+      29,    -1,    58,    59,    60,    61,    62,    63,    -1,    65,
+      66,    67,    68,    69,    70,    44,    -1,    46,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
+      86,    87,    88,    89,    90,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,    -1,
+      40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    -1,    -1,    -1,    93,    -1,    -1,    96,    58,    59,
       60,    61,    62,    63,    -1,    65,    -1,    -1,    68,    69,
       70,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
       -1,    48,    -1,    -1,    84,    85,    86,    87,    88,    89,
@@ -1113,7 +1109,7 @@ static const yytype_int16 yycheck[] =
       84,    85,    86,    87,    88,    89,    90,    58,    59,    60,
       61,    62,    63,    -1,    65,    -1,    -1,    68,    69,    70,
       -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
+      48,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
       58,    59,    60,    61,    62,    63,    -1,    65,    -1,    -1,
       68,    69,    70,    -1,    -1,    -1,    -1,    42,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,
@@ -1125,26 +1121,29 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    84,    85,    86,    87,    88,    89,    90,    58,
       59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
-      69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    48,    -1,    -1,    84,    85,    86,    87,    88,
+      69,    70,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
       89,    90,    58,    59,    60,    61,    62,    63,    -1,    65,
       -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
-      86,    87,    88,    89,    90,    50,    92,    -1,    -1,    -1,
-      -1,    -1,    -1,    58,    59,    60,    61,    62,    63,    -1,
-      65,    -1,    -1,    68,    69,    70,    58,    59,    60,    61,
-      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    84,
-      85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    -1,
-      -1,    -1,    84,    85,    86,    87,    88,    89,    90,    -1,
-      -1,    -1,    94,    58,    59,    60,    61,    62,    63,    -1,
-      65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    84,
-      85,    86,    87,    88,    89,    90,    58,    59,    60,    61,
+      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    84,    85,
+      86,    87,    88,    89,    90,    58,    59,    60,    61,    62,
+      63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    84,    85,    86,    87,    88,    89,    90,    50,    92,
+      -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
       62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    58,
-      59,    60,    61,    -1,    -1,    -1,    65,    -1,    -1,    68,
+      59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
       69,    70,    84,    85,    86,    87,    88,    89,    90,    -1,
       -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
-      89,    90
+      89,    90,    -1,    -1,    -1,    94,    58,    59,    60,    61,
+      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
+      -1,    -1,    84,    85,    86,    87,    88,    89,    90,    58,
+      59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
+      69,    70,    58,    59,    60,    61,    -1,    -1,    -1,    65,
+      -1,    -1,    68,    69,    70,    84,    85,    86,    87,    88,
+      89,    90,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
+      86,    87,    88,    89,    90
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1156,37 +1155,37 @@ static const yytype_uint8 yystos[] =
       44,    45,    46,    49,    53,    54,    55,    57,    64,    71,
       72,    73,    74,    75,    78,    79,    80,    87,    88,    93,
       96,   100,   101,   102,   103,   105,   107,   111,   112,   113,
-     118,   119,   120,   121,   122,   127,   129,   131,   135,   140,
-     143,    92,    22,    44,   120,    93,   120,   141,    93,   141,
-      22,   119,    93,   120,   142,   130,   134,    45,   123,    38,
-      40,    41,    42,    43,   120,   128,   132,   120,    50,    51,
-      15,    16,    17,    22,    29,    22,    22,   120,    56,   120,
-     128,    22,   126,   120,   120,   120,   120,   120,   120,   120,
-      22,   125,   136,   120,   120,   120,    23,    25,    98,   119,
-     144,   145,   146,   147,     0,    92,   120,    60,   120,   104,
-     110,   113,   120,   122,   140,    58,    59,    60,    61,    62,
-      63,    65,    68,    69,    70,    84,    85,    86,    87,    88,
-      89,    90,   115,    93,   120,   120,   141,    95,   141,   141,
-      95,   141,   115,    22,   124,   120,    40,   128,    22,    37,
-      66,    67,    22,    48,    60,   119,   119,    48,    60,    48,
-      47,    50,   128,    95,    42,    48,    42,    48,    42,    48,
-      42,    48,    76,    77,    48,    92,    95,    22,    94,    98,
-      98,    97,    95,    95,   101,   116,   120,   116,   116,   120,
+     118,   119,   120,   121,   122,   123,   128,   130,   132,   136,
+     141,   144,    92,    22,    44,   120,    93,   120,   142,    93,
+     142,    22,   119,    93,   120,   143,   131,   135,    45,   124,
+      38,    40,    41,    42,    43,   120,   129,   133,   120,    50,
+      51,    15,    16,    17,    22,    29,    22,    22,   120,    56,
+     120,   129,    22,   127,   120,   120,   120,   120,   120,   120,
+     120,    22,   126,   137,   120,   120,   120,    23,    25,    98,
+     119,   145,   146,   147,   148,     0,    92,   120,    60,   120,
+     104,   110,   113,   120,   123,   141,    58,    59,    60,    61,
+      62,    63,    65,    68,    69,    70,    84,    85,    86,    87,
+      88,    89,    90,   115,    93,   120,   120,   142,    95,   142,
+     142,    95,   142,   115,    22,   125,   120,    40,   129,    22,
+      37,    66,    67,    22,    48,    60,   119,   119,    48,    60,
+      48,    47,    50,   129,    95,    42,    48,    42,    48,    42,
+      48,    42,    48,    76,    77,    48,    92,    95,    22,    94,
+      98,    98,    97,    95,    95,   101,   116,   120,   116,   116,
      120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
-     120,   120,   120,   120,   120,   120,   120,    22,   137,    94,
-     120,    94,    94,   120,   137,    95,   120,   133,    22,   121,
-     120,   120,   120,   120,    48,    60,    42,   120,   120,   120,
-     120,    22,   120,   120,   120,   120,   120,   120,   120,   120,
-     120,   120,   106,   106,    22,   119,   119,   119,    23,    25,
-     147,   117,   116,    47,   116,    92,    95,    92,    22,   115,
-     120,   120,    22,    42,    42,    42,    42,   103,   117,    92,
-     105,   116,    30,    48,   117,    47,    95,   139,    22,   139,
-     137,   119,   120,   120,   120,   120,   116,   116,    82,    48,
-     120,   116,   103,    22,   117,   117,    92,    48,    83,   120,
-     116,   108,   116,    26,   139,   120,   116,   117,    31,    32,
-     109,   114,   116,    31,    81,    22,   138,   117,   117,   116,
-     115,   120,    81,   115,    95,   116,    82,   117,   116,   103,
-      22,    82,   116,    47,   116,    81,   117,    81,   116
+     120,   120,   120,   120,   120,   120,   120,   120,    22,   138,
+      94,   120,    94,    94,   120,   138,    95,   120,   134,    22,
+     122,   120,   120,   120,   120,    48,    60,    42,   120,   120,
+     120,   120,    22,   120,   120,   120,   120,   120,   120,   120,
+     120,   120,   120,   106,   106,    22,   119,   119,   119,    23,
+      25,   148,   117,   116,    47,   116,    92,    95,    92,    22,
+     115,   120,   120,    22,    42,    42,    42,    42,   103,   117,
+      92,   105,   116,    30,    48,   117,    47,    95,   140,    22,
+     140,   138,   119,   120,   120,   120,   120,   116,   116,    82,
+      48,   120,   116,   103,    22,   117,   117,    92,    48,    83,
+     120,   116,   108,   116,    26,   140,   120,   116,   117,    31,
+      32,   109,   114,   116,    31,    81,    22,   139,   117,   117,
+     116,   115,   120,    81,   115,    95,   116,    82,   117,   116,
+     103,    22,    82,   116,    47,   116,    81,   117,    81,   116
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1201,14 +1200,14 @@ static const yytype_uint8 yyr1[] =
      120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
      120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
      120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
-     120,   120,   120,   120,   120,   120,   120,   120,   120,   121,
-     122,   122,   122,   122,   122,   123,   122,   122,   122,   122,
-     122,   122,   122,   124,   124,   125,   125,   126,   126,   127,
-     127,   127,   127,   127,   127,   128,   128,   129,   129,   129,
-     129,   130,   129,   132,   133,   131,   131,   134,   131,   131,
-     131,   136,   135,   137,   137,   137,   137,   138,   138,   138,
-     139,   140,   141,   141,   141,   142,   142,   143,   144,   144,
-     144,   144,   145,   145,   146,   146,   147,   147
+     120,   121,   121,   121,   121,   121,   121,   121,   121,   122,
+     122,   123,   123,   123,   123,   123,   124,   123,   123,   123,
+     123,   123,   123,   123,   125,   125,   126,   126,   127,   127,
+     128,   128,   128,   128,   128,   128,   129,   129,   130,   130,
+     130,   130,   131,   130,   133,   134,   132,   132,   135,   132,
+     132,   132,   137,   136,   138,   138,   138,   138,   139,   139,
+     139,   140,   141,   142,   142,   142,   143,   143,   144,   145,
+     145,   145,   145,   146,   146,   147,   147,   148,   148
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1224,13 +1223,13 @@ static const yytype_int8 yyr2[] =
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
        3,     2,     3,     3,     3,     3,     2,     2,     3,     4,
        4,     4,     6,     4,     6,     4,     6,     4,     6,     2,
-       2,     1,     1,     2,     1,     0,     3,     2,     2,     4,
-       2,     4,     2,     1,     3,     1,     3,     1,     3,     2,
-       2,     2,     2,     3,     2,     3,     2,     2,     2,     3,
-       2,     0,     3,     0,     0,     9,     2,     0,     7,     8,
-       6,     0,     3,     0,     1,     3,     4,     0,     1,     3,
-       0,     2,     0,     1,     3,     1,     3,     3,     0,     1,
-       1,     1,     1,     3,     1,     3,     3,     3
+       1,     2,     1,     1,     2,     1,     0,     3,     2,     2,
+       4,     2,     4,     2,     1,     3,     1,     3,     1,     3,
+       2,     2,     2,     2,     3,     2,     3,     2,     2,     2,
+       3,     2,     0,     3,     0,     0,     9,     2,     0,     7,
+       8,     6,     0,     3,     0,     1,     3,     4,     0,     1,
+       3,     0,     2,     0,     1,     3,     1,     3,     3,     0,
+       1,     1,     1,     1,     3,     1,     3,     3,     3
 };
 
 
@@ -1668,73 +1667,73 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
     case 19: /* BLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1672 "engines/director/lingo/lingo-gr.cpp"
+#line 1671 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 20: /* FBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1678 "engines/director/lingo/lingo-gr.cpp"
+#line 1677 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 21: /* RBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1684 "engines/director/lingo/lingo-gr.cpp"
+#line 1683 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 22: /* ID  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1690 "engines/director/lingo/lingo-gr.cpp"
+#line 1689 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* STRING  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1696 "engines/director/lingo/lingo-gr.cpp"
+#line 1695 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* HANDLER  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1702 "engines/director/lingo/lingo-gr.cpp"
+#line 1701 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* SYMBOL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1708 "engines/director/lingo/lingo-gr.cpp"
+#line 1707 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ENDCLAUSE  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1714 "engines/director/lingo/lingo-gr.cpp"
+#line 1713 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* tPLAYACCEL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1720 "engines/director/lingo/lingo-gr.cpp"
+#line 1719 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* tMETHOD  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1726 "engines/director/lingo/lingo-gr.cpp"
+#line 1725 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* THEOBJECTFIELD  */
 #line 131 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 1732 "engines/director/lingo/lingo-gr.cpp"
+#line 1731 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 135: /* on  */
+    case 136: /* on  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1738 "engines/director/lingo/lingo-gr.cpp"
+#line 1737 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2004,7 +2003,7 @@ yyreduce:
   case 4:
 #line 137 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2008 "engines/director/lingo/lingo-gr.cpp"
+#line 2007 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2015,7 +2014,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2019 "engines/director/lingo/lingo-gr.cpp"
+#line 2018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2023,19 +2022,19 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2027 "engines/director/lingo/lingo-gr.cpp"
+#line 2026 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 152 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2033 "engines/director/lingo/lingo-gr.cpp"
+#line 2032 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 153 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2039 "engines/director/lingo/lingo-gr.cpp"
+#line 2038 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2046,7 +2045,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2050 "engines/director/lingo/lingo-gr.cpp"
+#line 2049 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2058,7 +2057,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2062 "engines/director/lingo/lingo-gr.cpp"
+#line 2061 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2069,7 +2068,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2073 "engines/director/lingo/lingo-gr.cpp"
+#line 2072 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2081,7 +2080,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2085 "engines/director/lingo/lingo-gr.cpp"
+#line 2084 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2092,7 +2091,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2096 "engines/director/lingo/lingo-gr.cpp"
+#line 2095 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2103,7 +2102,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2107 "engines/director/lingo/lingo-gr.cpp"
+#line 2106 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2118,7 +2117,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2122 "engines/director/lingo/lingo-gr.cpp"
+#line 2121 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2129,7 +2128,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2133 "engines/director/lingo/lingo-gr.cpp"
+#line 2132 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
@@ -2140,7 +2139,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body;	/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2144 "engines/director/lingo/lingo-gr.cpp"
+#line 2143 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
@@ -2157,7 +2156,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 5] = end; }
-#line 2161 "engines/director/lingo/lingo-gr.cpp"
+#line 2160 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
@@ -2174,7 +2173,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2178 "engines/director/lingo/lingo-gr.cpp"
+#line 2177 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
@@ -2184,7 +2183,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2188 "engines/director/lingo/lingo-gr.cpp"
+#line 2187 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2193,7 +2192,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2197 "engines/director/lingo/lingo-gr.cpp"
+#line 2196 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
@@ -2202,7 +2201,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2206 "engines/director/lingo/lingo-gr.cpp"
+#line 2205 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
@@ -2210,7 +2209,7 @@ yyreduce:
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2214 "engines/director/lingo/lingo-gr.cpp"
+#line 2213 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
@@ -2225,7 +2224,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2229 "engines/director/lingo/lingo-gr.cpp"
+#line 2228 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2240,7 +2239,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2244 "engines/director/lingo/lingo-gr.cpp"
+#line 2243 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
@@ -2251,7 +2250,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2255 "engines/director/lingo/lingo-gr.cpp"
+#line 2254 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
@@ -2266,7 +2265,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2270 "engines/director/lingo/lingo-gr.cpp"
+#line 2269 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
@@ -2281,13 +2280,13 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2285 "engines/director/lingo/lingo-gr.cpp"
+#line 2284 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
 #line 335 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2291 "engines/director/lingo/lingo-gr.cpp"
+#line 2290 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
@@ -2297,7 +2296,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2301 "engines/director/lingo/lingo-gr.cpp"
+#line 2300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2307,7 +2306,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); }
-#line 2311 "engines/director/lingo/lingo-gr.cpp"
+#line 2310 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
@@ -2318,25 +2317,25 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
-#line 2322 "engines/director/lingo/lingo-gr.cpp"
+#line 2321 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
 #line 356 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2328 "engines/director/lingo/lingo-gr.cpp"
+#line 2327 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
 #line 358 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2334 "engines/director/lingo/lingo-gr.cpp"
+#line 2333 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
 #line 360 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2340 "engines/director/lingo/lingo-gr.cpp"
+#line 2339 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
@@ -2346,7 +2345,7 @@ yyreduce:
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2350 "engines/director/lingo/lingo-gr.cpp"
+#line 2349 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
@@ -2354,7 +2353,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2358 "engines/director/lingo/lingo-gr.cpp"
+#line 2357 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54:
@@ -2362,7 +2361,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2366 "engines/director/lingo/lingo-gr.cpp"
+#line 2365 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
@@ -2371,7 +2370,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2375 "engines/director/lingo/lingo-gr.cpp"
+#line 2374 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
@@ -2380,7 +2379,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2384 "engines/director/lingo/lingo-gr.cpp"
+#line 2383 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
@@ -2389,13 +2388,13 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2393 "engines/director/lingo/lingo-gr.cpp"
+#line 2392 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
 #line 390 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2399 "engines/director/lingo/lingo-gr.cpp"
+#line 2398 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
@@ -2403,7 +2402,7 @@ yyreduce:
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2407 "engines/director/lingo/lingo-gr.cpp"
+#line 2406 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62:
@@ -2411,7 +2410,7 @@ yyreduce:
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2415 "engines/director/lingo/lingo-gr.cpp"
+#line 2414 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63:
@@ -2419,7 +2418,7 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2423 "engines/director/lingo/lingo-gr.cpp"
+#line 2422 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64:
@@ -2432,7 +2431,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2436 "engines/director/lingo/lingo-gr.cpp"
+#line 2435 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 65:
@@ -2443,7 +2442,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2447 "engines/director/lingo/lingo-gr.cpp"
+#line 2446 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
@@ -2453,456 +2452,456 @@ yyreduce:
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2457 "engines/director/lingo/lingo-gr.cpp"
+#line 2456 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68:
 #line 421 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2463 "engines/director/lingo/lingo-gr.cpp"
+#line 2462 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
 #line 422 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2469 "engines/director/lingo/lingo-gr.cpp"
+#line 2468 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70:
 #line 423 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2475 "engines/director/lingo/lingo-gr.cpp"
+#line 2474 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
 #line 424 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2481 "engines/director/lingo/lingo-gr.cpp"
+#line 2480 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
 #line 425 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2487 "engines/director/lingo/lingo-gr.cpp"
+#line 2486 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73:
 #line 426 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2493 "engines/director/lingo/lingo-gr.cpp"
+#line 2492 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
 #line 427 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2499 "engines/director/lingo/lingo-gr.cpp"
+#line 2498 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
 #line 428 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2505 "engines/director/lingo/lingo-gr.cpp"
+#line 2504 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
 #line 429 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2511 "engines/director/lingo/lingo-gr.cpp"
+#line 2510 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
 #line 430 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2517 "engines/director/lingo/lingo-gr.cpp"
+#line 2516 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
 #line 431 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2523 "engines/director/lingo/lingo-gr.cpp"
+#line 2522 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
 #line 432 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2529 "engines/director/lingo/lingo-gr.cpp"
+#line 2528 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
 #line 433 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2535 "engines/director/lingo/lingo-gr.cpp"
+#line 2534 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
 #line 434 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2541 "engines/director/lingo/lingo-gr.cpp"
+#line 2540 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
 #line 435 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2547 "engines/director/lingo/lingo-gr.cpp"
+#line 2546 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
 #line 436 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2553 "engines/director/lingo/lingo-gr.cpp"
+#line 2552 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
 #line 437 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2559 "engines/director/lingo/lingo-gr.cpp"
+#line 2558 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
 #line 438 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2565 "engines/director/lingo/lingo-gr.cpp"
+#line 2564 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
 #line 439 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); }
-#line 2571 "engines/director/lingo/lingo-gr.cpp"
+#line 2570 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
 #line 440 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2577 "engines/director/lingo/lingo-gr.cpp"
+#line 2576 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
 #line 441 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2583 "engines/director/lingo/lingo-gr.cpp"
+#line 2582 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
 #line 442 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2589 "engines/director/lingo/lingo-gr.cpp"
+#line 2588 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
 #line 443 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2595 "engines/director/lingo/lingo-gr.cpp"
+#line 2594 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
-#line 444 "engines/director/lingo/lingo-gr.y"
+#line 445 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2601 "engines/director/lingo/lingo-gr.cpp"
+#line 2600 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
-#line 445 "engines/director/lingo/lingo-gr.y"
+#line 446 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2607 "engines/director/lingo/lingo-gr.cpp"
+#line 2606 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
-#line 446 "engines/director/lingo/lingo-gr.y"
+#line 447 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2613 "engines/director/lingo/lingo-gr.cpp"
+#line 2612 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
-#line 447 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2619 "engines/director/lingo/lingo-gr.cpp"
+#line 2618 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
-#line 448 "engines/director/lingo/lingo-gr.y"
+#line 449 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2625 "engines/director/lingo/lingo-gr.cpp"
+#line 2624 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
-#line 449 "engines/director/lingo/lingo-gr.y"
+#line 450 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2631 "engines/director/lingo/lingo-gr.cpp"
+#line 2630 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
-#line 450 "engines/director/lingo/lingo-gr.y"
+#line 451 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2637 "engines/director/lingo/lingo-gr.cpp"
+#line 2636 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
-#line 451 "engines/director/lingo/lingo-gr.y"
+#line 452 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2643 "engines/director/lingo/lingo-gr.cpp"
+#line 2642 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
-#line 453 "engines/director/lingo/lingo-gr.y"
+#line 454 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2651 "engines/director/lingo/lingo-gr.cpp"
+#line 2650 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 457 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 459 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2657 "engines/director/lingo/lingo-gr.cpp"
+#line 2656 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 460 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 462 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2663 "engines/director/lingo/lingo-gr.cpp"
+#line 2662 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 461 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 463 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 2669 "engines/director/lingo/lingo-gr.cpp"
+#line 2668 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 462 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 464 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2675 "engines/director/lingo/lingo-gr.cpp"
+#line 2674 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 462 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 464 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 2681 "engines/director/lingo/lingo-gr.cpp"
+#line 2680 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 465 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 467 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2689 "engines/director/lingo/lingo-gr.cpp"
+#line 2688 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 468 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 470 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2697 "engines/director/lingo/lingo-gr.cpp"
+#line 2696 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 471 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 473 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 2703 "engines/director/lingo/lingo-gr.cpp"
+#line 2702 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 472 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 474 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 2709 "engines/director/lingo/lingo-gr.cpp"
+#line 2708 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 474 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 476 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2718 "engines/director/lingo/lingo-gr.cpp"
+#line 2717 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 478 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 480 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2727 "engines/director/lingo/lingo-gr.cpp"
+#line 2726 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 483 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 485 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2736 "engines/director/lingo/lingo-gr.cpp"
+#line 2735 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
-#line 487 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 489 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2745 "engines/director/lingo/lingo-gr.cpp"
+#line 2744 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 494 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2754 "engines/director/lingo/lingo-gr.cpp"
+#line 2753 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 496 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 498 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2763 "engines/director/lingo/lingo-gr.cpp"
+#line 2762 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 510 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 2769 "engines/director/lingo/lingo-gr.cpp"
+#line 2768 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 509 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 511 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 2775 "engines/director/lingo/lingo-gr.cpp"
+#line 2774 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 512 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 2781 "engines/director/lingo/lingo-gr.cpp"
+#line 2780 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 511 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 513 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 2790 "engines/director/lingo/lingo-gr.cpp"
+#line 2789 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 517 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 2799 "engines/director/lingo/lingo-gr.cpp"
+#line 2798 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 521 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 2808 "engines/director/lingo/lingo-gr.cpp"
+#line 2807 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 527 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 529 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_playdone); }
-#line 2814 "engines/director/lingo/lingo-gr.cpp"
+#line 2813 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 528 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 530 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 2823 "engines/director/lingo/lingo-gr.cpp"
+#line 2822 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 532 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 534 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 2832 "engines/director/lingo/lingo-gr.cpp"
+#line 2831 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 536 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 538 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 2841 "engines/director/lingo/lingo-gr.cpp"
+#line 2840 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 540 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 542 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 2847 "engines/director/lingo/lingo-gr.cpp"
+#line 2846 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 540 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 542 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 2856 "engines/director/lingo/lingo-gr.cpp"
+#line 2855 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 572 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 2862 "engines/director/lingo/lingo-gr.cpp"
+#line 2861 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 572 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 2868 "engines/director/lingo/lingo-gr.cpp"
+#line 2867 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 571 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 573 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2879 "engines/director/lingo/lingo-gr.cpp"
+#line 2878 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 577 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 579 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 2885 "engines/director/lingo/lingo-gr.cpp"
+#line 2884 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 578 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 580 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2891 "engines/director/lingo/lingo-gr.cpp"
+#line 2890 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 579 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 581 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 2902 "engines/director/lingo/lingo-gr.cpp"
+#line 2901 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 585 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 587 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -2913,11 +2912,11 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 2917 "engines/director/lingo/lingo-gr.cpp"
+#line 2916 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 595 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 597 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -2925,65 +2924,65 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 2929 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 141:
-#line 603 "engines/director/lingo/lingo-gr.y"
-         { g_lingo->_indef = kStateInArgs; }
-#line 2935 "engines/director/lingo/lingo-gr.cpp"
+#line 2928 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
-#line 603 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 2941 "engines/director/lingo/lingo-gr.cpp"
+#line 605 "engines/director/lingo/lingo-gr.y"
+         { g_lingo->_indef = kStateInArgs; }
+#line 2934 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
 #line 605 "engines/director/lingo/lingo-gr.y"
-                                { (yyval.narg) = 0; }
-#line 2947 "engines/director/lingo/lingo-gr.cpp"
+                                                { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
+#line 2940 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
-#line 606 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 2953 "engines/director/lingo/lingo-gr.cpp"
+#line 607 "engines/director/lingo/lingo-gr.y"
+                                { (yyval.narg) = 0; }
+#line 2946 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
-#line 607 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 2959 "engines/director/lingo/lingo-gr.cpp"
+#line 608 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
+#line 2952 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
-#line 608 "engines/director/lingo/lingo-gr.y"
-                                { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 2965 "engines/director/lingo/lingo-gr.cpp"
+#line 609 "engines/director/lingo/lingo-gr.y"
+                                        { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
+#line 2958 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 611 "engines/director/lingo/lingo-gr.y"
-                                                { delete (yyvsp[0].s); }
-#line 2971 "engines/director/lingo/lingo-gr.cpp"
+  case 147:
+#line 610 "engines/director/lingo/lingo-gr.y"
+                                { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
+#line 2964 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
-#line 612 "engines/director/lingo/lingo-gr.y"
-                                        { delete (yyvsp[0].s); }
-#line 2977 "engines/director/lingo/lingo-gr.cpp"
+#line 613 "engines/director/lingo/lingo-gr.y"
+                                                { delete (yyvsp[0].s); }
+#line 2970 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
 #line 614 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 2983 "engines/director/lingo/lingo-gr.cpp"
+                                        { delete (yyvsp[0].s); }
+#line 2976 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151:
 #line 616 "engines/director/lingo/lingo-gr.y"
+                                        { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
+#line 2982 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 152:
+#line 618 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -2991,113 +2990,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 2995 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 152:
-#line 624 "engines/director/lingo/lingo-gr.y"
-                                { (yyval.narg) = 0; }
-#line 3001 "engines/director/lingo/lingo-gr.cpp"
+#line 2994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
-#line 625 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.narg) = 1; }
-#line 3007 "engines/director/lingo/lingo-gr.cpp"
+#line 626 "engines/director/lingo/lingo-gr.y"
+                                { (yyval.narg) = 0; }
+#line 3000 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
-#line 626 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3013 "engines/director/lingo/lingo-gr.cpp"
+#line 627 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.narg) = 1; }
+#line 3006 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
 #line 628 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = 1; }
-#line 3019 "engines/director/lingo/lingo-gr.cpp"
+                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3012 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
-#line 629 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3025 "engines/director/lingo/lingo-gr.cpp"
+#line 630 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = 1; }
+#line 3018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
 #line 631 "engines/director/lingo/lingo-gr.y"
-                                { (yyval.code) = (yyvsp[-1].code); }
-#line 3031 "engines/director/lingo/lingo-gr.cpp"
+                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
 #line 633 "engines/director/lingo/lingo-gr.y"
-                                { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3037 "engines/director/lingo/lingo-gr.cpp"
+                                { (yyval.code) = (yyvsp[-1].code); }
+#line 3030 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
-#line 634 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3043 "engines/director/lingo/lingo-gr.cpp"
+#line 635 "engines/director/lingo/lingo-gr.y"
+                                { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
+#line 3036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
-#line 635 "engines/director/lingo/lingo-gr.y"
-                     { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3049 "engines/director/lingo/lingo-gr.cpp"
+#line 636 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
+#line 3042 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
-#line 636 "engines/director/lingo/lingo-gr.y"
-                         { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 637 "engines/director/lingo/lingo-gr.y"
+                     { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
+#line 3048 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
 #line 638 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = 1; }
-#line 3061 "engines/director/lingo/lingo-gr.cpp"
+                         { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
+#line 3054 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
-#line 639 "engines/director/lingo/lingo-gr.y"
-                                    { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3067 "engines/director/lingo/lingo-gr.cpp"
+#line 640 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = 1; }
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
 #line 641 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = 1; }
-#line 3073 "engines/director/lingo/lingo-gr.cpp"
+                                    { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
-#line 642 "engines/director/lingo/lingo-gr.y"
-                                { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3079 "engines/director/lingo/lingo-gr.cpp"
+#line 643 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = 1; }
+#line 3072 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
 #line 644 "engines/director/lingo/lingo-gr.y"
+                                { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3078 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 167:
+#line 646 "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 3088 "engines/director/lingo/lingo-gr.cpp"
+#line 3087 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 648 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 650 "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 3097 "engines/director/lingo/lingo-gr.cpp"
+#line 3096 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3101 "engines/director/lingo/lingo-gr.cpp"
+#line 3100 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3329,5 +3328,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 654 "engines/director/lingo/lingo-gr.y"
+#line 656 "engines/director/lingo/lingo-gr.y"
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index d3b96ea..854d968 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -115,7 +115,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token tSPRITE tINTERSECTS tWITHIN tTELL tPROPERTY
 %token tON tENDIF tENDREPEAT tENDTELL
 
-%type<code> asgn begin elseif end expr if when repeatwhile
+%type<code> asgn begin elseif end expr if when repeatwhile chunkexpr
 %type<code> repeatwith stmtlist tellstart reference simpleexpr list valuelist
 %type<narg> argdef arglist nonemptyarglist linearlist proplist
 %type<s> on
@@ -441,7 +441,8 @@ expr: simpleexpr { $$ = $simpleexpr; }
 	| '(' expr[arg] ')'			{ $$ = $arg; }
 	| tSPRITE expr tINTERSECTS expr 	{ g_lingo->code1(LC::c_intersects); }
 	| tSPRITE expr tWITHIN expr		 	{ g_lingo->code1(LC::c_within); }
-	| tCHAR expr tOF expr				{ g_lingo->code1(LC::c_charOf); }
+
+chunkexpr: 	tCHAR expr tOF expr			{ g_lingo->code1(LC::c_charOf); }
 	| tCHAR expr tTO expr tOF expr		{ g_lingo->code1(LC::c_charToOf); }
 	| tITEM expr tOF expr				{ g_lingo->code1(LC::c_itemOf); }
 	| tITEM expr tTO expr tOF expr		{ g_lingo->code1(LC::c_itemToOf); }
@@ -453,6 +454,7 @@ expr: simpleexpr { $$ = $simpleexpr; }
 reference: 	RBLTIN simpleexpr	{
 		g_lingo->codeFunc($RBLTIN, 1);
 		delete $RBLTIN; }
+	| chunkexpr
 
 proc: tPUT expr				{ g_lingo->code1(LC::c_printtop); }
 	| gotofunc


Commit: 0728d91c453a17f80f2a88fcdc0aa0fed5a82445
    https://github.com/scummvm/scummvm/commit/0728d91c453a17f80f2a88fcdc0aa0fed5a82445
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-17T16:23:52+01:00

Commit Message:
DIRECTOR: LINGO: Added tests for chunk expressions

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


diff --git a/engines/director/lingo/tests/chunks.lingo b/engines/director/lingo/tests/chunks.lingo
new file mode 100644
index 0000000..7bdc77a
--- /dev/null
+++ b/engines/director/lingo/tests/chunks.lingo
@@ -0,0 +1 @@
+    put randomName() into item i of field "In"




More information about the Scummvm-git-logs mailing list