[Scummvm-git-logs] scummvm master -> 245dc486f5e7b70991439d1f7c18acfe965477d9

sev- noreply at scummvm.org
Tue May 28 18:31:12 UTC 2024


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

Summary:
245dc486f5 DIRECTOR: LINGO: Fix memory leak on syntax error


Commit: 245dc486f5e7b70991439d1f7c18acfe965477d9
    https://github.com/scummvm/scummvm/commit/245dc486f5e7b70991439d1f7c18acfe965477d9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-05-28T20:30:45+02:00

Commit Message:
DIRECTOR: LINGO: Fix memory leak on syntax error

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 8aaa6d57180..94b0adb074e 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -132,7 +132,7 @@ static void checkEnd(Common::String *token, Common::String *expect, bool require
 }
 
 
-#line 137 "engines/director/lingo/lingo-gr.cpp"
+#line 136 "engines/director/lingo/lingo-gr.cpp"
 
 # ifndef YY_CAST
 #  ifdef __cplusplus
@@ -2318,39 +2318,285 @@ yydestruct (const char *yymsg,
   switch (yykind)
     {
     case YYSYMBOL_tVARID: /* tVARID  */
-#line 202 "engines/director/lingo/lingo-gr.y"
+#line 201 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2325 "engines/director/lingo/lingo-gr.cpp"
+#line 2324 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_tSTRING: /* tSTRING  */
-#line 202 "engines/director/lingo/lingo-gr.y"
+#line 201 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2331 "engines/director/lingo/lingo-gr.cpp"
+#line 2330 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_tSYMBOL: /* tSYMBOL  */
-#line 202 "engines/director/lingo/lingo-gr.y"
+#line 201 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2337 "engines/director/lingo/lingo-gr.cpp"
+#line 2336 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_tENDCLAUSE: /* tENDCLAUSE  */
-#line 202 "engines/director/lingo/lingo-gr.y"
+#line 201 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2343 "engines/director/lingo/lingo-gr.cpp"
+#line 2342 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case YYSYMBOL_CMDID: /* CMDID  */
+    case YYSYMBOL_script: /* script  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2348 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_scriptpart: /* scriptpart  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2354 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_macro: /* macro  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2360 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_factory: /* factory  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2366 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_method: /* method  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2372 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_methodlistline: /* methodlistline  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2378 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_handler: /* handler  */
 #line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2384 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_CMDID: /* CMDID  */
+#line 201 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2349 "engines/director/lingo/lingo-gr.cpp"
+#line 2390 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case YYSYMBOL_ID: /* ID  */
-#line 202 "engines/director/lingo/lingo-gr.y"
+#line 201 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2355 "engines/director/lingo/lingo-gr.cpp"
+#line 2396 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_stmt: /* stmt  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2402 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_stmt_insideif: /* stmt_insideif  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2408 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_stmtoneliner: /* stmtoneliner  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2414 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_proc: /* proc  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2420 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_asgn: /* asgn  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2426 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_definevars: /* definevars  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2432 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_ifstmt: /* ifstmt  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2438 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_ifelsestmt: /* ifelsestmt  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2444 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_loop: /* loop  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2450 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_tell: /* tell  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2456 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_when: /* when  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2462 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_stmtlistline: /* stmtlistline  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2468 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_stmtlistline_insideif: /* stmtlistline_insideif  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2474 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_simpleexpr_nounarymath: /* simpleexpr_nounarymath  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2480 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_var: /* var  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2486 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_varorchunk: /* varorchunk  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2492 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_varorthe: /* varorthe  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2498 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_chunk: /* chunk  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2504 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_object: /* object  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2510 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_the: /* the  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2516 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_theobj: /* theobj  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2522 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_menu: /* menu  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2528 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_thedatetime: /* thedatetime  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2534 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_thenumberof: /* thenumberof  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2540 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_writablethe: /* writablethe  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2546 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_writabletheobj: /* writabletheobj  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2552 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_list: /* list  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2558 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_proppair: /* proppair  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2564 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_unarymath: /* unarymath  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2570 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_simpleexpr: /* simpleexpr  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2576 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_expr: /* expr  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2582 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_expr_nounarymath: /* expr_nounarymath  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2588 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_expr_noeq: /* expr_noeq  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2594 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case YYSYMBOL_sprite: /* sprite  */
+#line 202 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).node); }
+#line 2600 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2619,8 +2865,8 @@ yyreduce:
     {
   case 2: /* script: scriptpartlist  */
 #line 208 "engines/director/lingo/lingo-gr.y"
-                                                        { g_lingo->_compiler->_assemblyAST = new ScriptNode((yyvsp[0].nodelist)); }
-#line 2625 "engines/director/lingo/lingo-gr.cpp"
+                                                        { g_lingo->_compiler->_assemblyAST = new ScriptNode((yyvsp[0].nodelist)); (yyval.node) = nullptr; }
+#line 2870 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 3: /* scriptpartlist: scriptpart  */
@@ -2631,7 +2877,7 @@ yyreduce:
 			list->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = list; }
-#line 2636 "engines/director/lingo/lingo-gr.cpp"
+#line 2881 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 4: /* scriptpartlist: scriptpartlist scriptpart  */
@@ -2641,43 +2887,43 @@ yyreduce:
 			(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 2646 "engines/director/lingo/lingo-gr.cpp"
+#line 2891 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 5: /* scriptpart: '\n'  */
 #line 223 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = nullptr; }
-#line 2652 "engines/director/lingo/lingo-gr.cpp"
+#line 2897 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10: /* scriptpart: tENDCLAUSE endargdef '\n'  */
 #line 228 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = nullptr; delete (yyvsp[-2].s); }
-#line 2658 "engines/director/lingo/lingo-gr.cpp"
+#line 2903 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11: /* macro: tMACRO ID idlist '\n' stmtlist  */
 #line 257 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); }
-#line 2664 "engines/director/lingo/lingo-gr.cpp"
+#line 2909 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12: /* factory: tFACTORY ID '\n' methodlist  */
 #line 261 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new FactoryNode((yyvsp[-2].s), (yyvsp[0].nodelist)); }
-#line 2670 "engines/director/lingo/lingo-gr.cpp"
+#line 2915 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13: /* method: tMETHOD ID idlist '\n' stmtlist  */
 #line 263 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); }
-#line 2676 "engines/director/lingo/lingo-gr.cpp"
+#line 2921 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14: /* methodlist: %empty  */
 #line 265 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.nodelist) = new NodeList; }
-#line 2682 "engines/director/lingo/lingo-gr.cpp"
+#line 2927 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16: /* nonemptymethodlist: methodlistline  */
@@ -2688,7 +2934,7 @@ yyreduce:
 			list->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = list; }
-#line 2693 "engines/director/lingo/lingo-gr.cpp"
+#line 2938 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17: /* nonemptymethodlist: nonemptymethodlist methodlistline  */
@@ -2698,19 +2944,19 @@ yyreduce:
 			(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 2703 "engines/director/lingo/lingo-gr.cpp"
+#line 2948 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18: /* methodlistline: '\n'  */
 #line 282 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = nullptr; }
-#line 2709 "engines/director/lingo/lingo-gr.cpp"
+#line 2954 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20: /* methodlistline: tENDCLAUSE endargdef '\n'  */
 #line 284 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = nullptr; delete (yyvsp[-2].s); }
-#line 2715 "engines/director/lingo/lingo-gr.cpp"
+#line 2960 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 21: /* handler: tON ID idlist '\n' stmtlist tENDCLAUSE endargdef '\n'  */
@@ -2719,422 +2965,422 @@ yyreduce:
 		(yyval.node) = new HandlerNode((yyvsp[-6].s), (yyvsp[-5].idlist), (yyvsp[-3].nodelist));
 		checkEnd((yyvsp[-2].s), (yyvsp[-6].s), false);
 		delete (yyvsp[-2].s); }
-#line 2724 "engines/director/lingo/lingo-gr.cpp"
+#line 2969 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 22: /* handler: tON ID idlist '\n' stmtlist  */
 #line 293 "engines/director/lingo/lingo-gr.y"
                                       {	// D4. No 'end' clause
 		(yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); }
-#line 2731 "engines/director/lingo/lingo-gr.cpp"
+#line 2976 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 24: /* endargdef: ID  */
 #line 298 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 2737 "engines/director/lingo/lingo-gr.cpp"
+#line 2982 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 25: /* endargdef: endargdef ',' ID  */
 #line 299 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 2743 "engines/director/lingo/lingo-gr.cpp"
+#line 2988 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 27: /* CMDID: tABBREVIATED  */
 #line 307 "engines/director/lingo/lingo-gr.y"
                         { (yyval.s) = new Common::String("abbreviated"); }
-#line 2749 "engines/director/lingo/lingo-gr.cpp"
+#line 2994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28: /* CMDID: tABBREV  */
 #line 308 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("abbrev"); }
-#line 2755 "engines/director/lingo/lingo-gr.cpp"
+#line 3000 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29: /* CMDID: tABBR  */
 #line 309 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("abbr"); }
-#line 2761 "engines/director/lingo/lingo-gr.cpp"
+#line 3006 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30: /* CMDID: tAFTER  */
 #line 310 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("after"); }
-#line 2767 "engines/director/lingo/lingo-gr.cpp"
+#line 3012 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31: /* CMDID: tBEFORE  */
 #line 311 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("before"); }
-#line 2773 "engines/director/lingo/lingo-gr.cpp"
+#line 3018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32: /* CMDID: tCAST  */
 #line 312 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("cast"); }
-#line 2779 "engines/director/lingo/lingo-gr.cpp"
+#line 3024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33: /* CMDID: tCHAR  */
 #line 313 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("char"); }
-#line 2785 "engines/director/lingo/lingo-gr.cpp"
+#line 3030 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34: /* CMDID: tCHARS  */
 #line 314 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("chars"); }
-#line 2791 "engines/director/lingo/lingo-gr.cpp"
+#line 3036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35: /* CMDID: tDATE  */
 #line 315 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("date"); }
-#line 2797 "engines/director/lingo/lingo-gr.cpp"
+#line 3042 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36: /* CMDID: tDELETE  */
 #line 316 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("delete"); }
-#line 2803 "engines/director/lingo/lingo-gr.cpp"
+#line 3048 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37: /* CMDID: tDOWN  */
 #line 317 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("down"); }
-#line 2809 "engines/director/lingo/lingo-gr.cpp"
+#line 3054 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38: /* CMDID: tFIELD  */
 #line 318 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("field"); }
-#line 2815 "engines/director/lingo/lingo-gr.cpp"
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39: /* CMDID: tFRAME  */
 #line 319 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("frame"); }
-#line 2821 "engines/director/lingo/lingo-gr.cpp"
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40: /* CMDID: tHILITE  */
 #line 320 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("hilite"); }
-#line 2827 "engines/director/lingo/lingo-gr.cpp"
+#line 3072 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41: /* CMDID: tIN  */
 #line 321 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("in"); }
-#line 2833 "engines/director/lingo/lingo-gr.cpp"
+#line 3078 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42: /* CMDID: tINTERSECTS  */
 #line 322 "engines/director/lingo/lingo-gr.y"
                         { (yyval.s) = new Common::String("intersects"); }
-#line 2839 "engines/director/lingo/lingo-gr.cpp"
+#line 3084 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43: /* CMDID: tINTO  */
 #line 323 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("into"); }
-#line 2845 "engines/director/lingo/lingo-gr.cpp"
+#line 3090 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44: /* CMDID: tITEM  */
 #line 324 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("item"); }
-#line 2851 "engines/director/lingo/lingo-gr.cpp"
+#line 3096 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45: /* CMDID: tITEMS  */
 #line 325 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("items"); }
-#line 2857 "engines/director/lingo/lingo-gr.cpp"
+#line 3102 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46: /* CMDID: tLAST  */
 #line 326 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("last"); }
-#line 2863 "engines/director/lingo/lingo-gr.cpp"
+#line 3108 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47: /* CMDID: tLINE  */
 #line 327 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("line"); }
-#line 2869 "engines/director/lingo/lingo-gr.cpp"
+#line 3114 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48: /* CMDID: tLINES  */
 #line 328 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("lines"); }
-#line 2875 "engines/director/lingo/lingo-gr.cpp"
+#line 3120 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49: /* CMDID: tLONG  */
 #line 329 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("long"); }
-#line 2881 "engines/director/lingo/lingo-gr.cpp"
+#line 3126 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50: /* CMDID: tMENU  */
 #line 330 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("menu"); }
-#line 2887 "engines/director/lingo/lingo-gr.cpp"
+#line 3132 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51: /* CMDID: tMENUITEM  */
 #line 331 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("menuItem"); }
-#line 2893 "engines/director/lingo/lingo-gr.cpp"
+#line 3138 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52: /* CMDID: tMENUITEMS  */
 #line 332 "engines/director/lingo/lingo-gr.y"
                         { (yyval.s) = new Common::String("menuItems"); }
-#line 2899 "engines/director/lingo/lingo-gr.cpp"
+#line 3144 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53: /* CMDID: tMOVIE  */
 #line 333 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("movie"); }
-#line 2905 "engines/director/lingo/lingo-gr.cpp"
+#line 3150 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54: /* CMDID: tNEXT  */
 #line 334 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("next"); }
-#line 2911 "engines/director/lingo/lingo-gr.cpp"
+#line 3156 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55: /* CMDID: tNUMBER  */
 #line 335 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("number"); }
-#line 2917 "engines/director/lingo/lingo-gr.cpp"
+#line 3162 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56: /* CMDID: tOF  */
 #line 336 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("of"); }
-#line 2923 "engines/director/lingo/lingo-gr.cpp"
+#line 3168 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57: /* CMDID: tPREVIOUS  */
 #line 337 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("previous"); }
-#line 2929 "engines/director/lingo/lingo-gr.cpp"
+#line 3174 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58: /* CMDID: tREPEAT  */
 #line 338 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("repeat"); }
-#line 2935 "engines/director/lingo/lingo-gr.cpp"
+#line 3180 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59: /* CMDID: tSCRIPT  */
 #line 339 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("script"); }
-#line 2941 "engines/director/lingo/lingo-gr.cpp"
+#line 3186 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60: /* CMDID: tASSERTERROR  */
 #line 340 "engines/director/lingo/lingo-gr.y"
                         { (yyval.s) = new Common::String("scummvmAssertError"); }
-#line 2947 "engines/director/lingo/lingo-gr.cpp"
+#line 3192 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61: /* CMDID: tSHORT  */
 #line 341 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("short"); }
-#line 2953 "engines/director/lingo/lingo-gr.cpp"
+#line 3198 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62: /* CMDID: tSOUND  */
 #line 342 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("sound"); }
-#line 2959 "engines/director/lingo/lingo-gr.cpp"
+#line 3204 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63: /* CMDID: tSPRITE  */
 #line 343 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("sprite"); }
-#line 2965 "engines/director/lingo/lingo-gr.cpp"
+#line 3210 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64: /* CMDID: tTHE  */
 #line 344 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("the"); }
-#line 2971 "engines/director/lingo/lingo-gr.cpp"
+#line 3216 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 65: /* CMDID: tTIME  */
 #line 345 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("time"); }
-#line 2977 "engines/director/lingo/lingo-gr.cpp"
+#line 3222 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66: /* CMDID: tTO  */
 #line 346 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("to"); }
-#line 2983 "engines/director/lingo/lingo-gr.cpp"
+#line 3228 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67: /* CMDID: tWHILE  */
 #line 347 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("while"); }
-#line 2989 "engines/director/lingo/lingo-gr.cpp"
+#line 3234 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68: /* CMDID: tWINDOW  */
 #line 348 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("window"); }
-#line 2995 "engines/director/lingo/lingo-gr.cpp"
+#line 3240 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69: /* CMDID: tWITH  */
 #line 349 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("with"); }
-#line 3001 "engines/director/lingo/lingo-gr.cpp"
+#line 3246 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70: /* CMDID: tWITHIN  */
 #line 350 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("within"); }
-#line 3007 "engines/director/lingo/lingo-gr.cpp"
+#line 3252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71: /* CMDID: tWORD  */
 #line 351 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("word"); }
-#line 3013 "engines/director/lingo/lingo-gr.cpp"
+#line 3258 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72: /* CMDID: tWORDS  */
 #line 352 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("words"); }
-#line 3019 "engines/director/lingo/lingo-gr.cpp"
+#line 3264 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74: /* ID: tELSE  */
 #line 356 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("else"); }
-#line 3025 "engines/director/lingo/lingo-gr.cpp"
+#line 3270 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75: /* ID: tENDCLAUSE  */
 #line 357 "engines/director/lingo/lingo-gr.y"
                         { (yyval.s) = new Common::String("end"); delete (yyvsp[0].s); }
-#line 3031 "engines/director/lingo/lingo-gr.cpp"
+#line 3276 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76: /* ID: tEXIT  */
 #line 358 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("exit"); }
-#line 3037 "engines/director/lingo/lingo-gr.cpp"
+#line 3282 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77: /* ID: tFACTORY  */
 #line 359 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("factory"); }
-#line 3043 "engines/director/lingo/lingo-gr.cpp"
+#line 3288 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78: /* ID: tGLOBAL  */
 #line 360 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("global"); }
-#line 3049 "engines/director/lingo/lingo-gr.cpp"
+#line 3294 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79: /* ID: tGO  */
 #line 361 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("go"); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 3300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80: /* ID: tIF  */
 #line 362 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("if"); }
-#line 3061 "engines/director/lingo/lingo-gr.cpp"
+#line 3306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81: /* ID: tINSTANCE  */
 #line 363 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("instance"); }
-#line 3067 "engines/director/lingo/lingo-gr.cpp"
+#line 3312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82: /* ID: tMACRO  */
 #line 364 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("macro"); }
-#line 3073 "engines/director/lingo/lingo-gr.cpp"
+#line 3318 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83: /* ID: tMETHOD  */
 #line 365 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("method"); }
-#line 3079 "engines/director/lingo/lingo-gr.cpp"
+#line 3324 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84: /* ID: tON  */
 #line 366 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("on"); }
-#line 3085 "engines/director/lingo/lingo-gr.cpp"
+#line 3330 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85: /* ID: tOPEN  */
 #line 367 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("open"); }
-#line 3091 "engines/director/lingo/lingo-gr.cpp"
+#line 3336 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86: /* ID: tPLAY  */
 #line 368 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("play"); }
-#line 3097 "engines/director/lingo/lingo-gr.cpp"
+#line 3342 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87: /* ID: tPROPERTY  */
 #line 369 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("property"); }
-#line 3103 "engines/director/lingo/lingo-gr.cpp"
+#line 3348 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88: /* ID: tPUT  */
 #line 370 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("put"); }
-#line 3109 "engines/director/lingo/lingo-gr.cpp"
+#line 3354 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89: /* ID: tRETURN  */
 #line 371 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("return"); }
-#line 3115 "engines/director/lingo/lingo-gr.cpp"
+#line 3360 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90: /* ID: tSET  */
 #line 372 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("set"); }
-#line 3121 "engines/director/lingo/lingo-gr.cpp"
+#line 3366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91: /* ID: tTELL  */
 #line 373 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("tell"); }
-#line 3127 "engines/director/lingo/lingo-gr.cpp"
+#line 3372 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92: /* ID: tTHEN  */
 #line 374 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("then"); }
-#line 3133 "engines/director/lingo/lingo-gr.cpp"
+#line 3378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93: /* idlist: %empty  */
 #line 377 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.idlist) = new IDList; }
-#line 3139 "engines/director/lingo/lingo-gr.cpp"
+#line 3384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96: /* nonemptyidlist: ID  */
@@ -3143,7 +3389,7 @@ yyreduce:
 		Common::Array<Common::String *> *list = new IDList;
 		list->push_back((yyvsp[0].s));
 		(yyval.idlist) = list; }
-#line 3148 "engines/director/lingo/lingo-gr.cpp"
+#line 3393 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97: /* nonemptyidlist: nonemptyidlist ',' ID  */
@@ -3151,55 +3397,55 @@ yyreduce:
                                                         {
 		(yyvsp[-2].idlist)->push_back((yyvsp[0].s));
 		(yyval.idlist) = (yyvsp[-2].idlist); }
-#line 3156 "engines/director/lingo/lingo-gr.cpp"
+#line 3401 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99: /* stmt: tENDIF '\n'  */
 #line 397 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = nullptr; }
-#line 3162 "engines/director/lingo/lingo-gr.cpp"
+#line 3407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109: /* proc: CMDID cmdargs '\n'  */
 #line 413 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new CmdNode((yyvsp[-2].s), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3168 "engines/director/lingo/lingo-gr.cpp"
+#line 3413 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110: /* proc: tPUT cmdargs '\n'  */
 #line 414 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new CmdNode(new Common::String("put"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3174 "engines/director/lingo/lingo-gr.cpp"
+#line 3419 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111: /* proc: tGO cmdargs '\n'  */
 #line 415 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new CmdNode(new Common::String("go"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3180 "engines/director/lingo/lingo-gr.cpp"
+#line 3425 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112: /* proc: tGO frameargs '\n'  */
 #line 416 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new CmdNode(new Common::String("go"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3186 "engines/director/lingo/lingo-gr.cpp"
+#line 3431 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113: /* proc: tPLAY cmdargs '\n'  */
 #line 417 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new CmdNode(new Common::String("play"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3192 "engines/director/lingo/lingo-gr.cpp"
+#line 3437 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114: /* proc: tPLAY frameargs '\n'  */
 #line 418 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new CmdNode(new Common::String("play"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3198 "engines/director/lingo/lingo-gr.cpp"
+#line 3443 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115: /* proc: tOPEN cmdargs '\n'  */
 #line 419 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new CmdNode(new Common::String("open"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
-#line 3204 "engines/director/lingo/lingo-gr.cpp"
+#line 3449 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116: /* proc: tOPEN expr tWITH expr '\n'  */
@@ -3209,55 +3455,55 @@ yyreduce:
 		args->push_back((yyvsp[-3].node));
 		args->push_back((yyvsp[-1].node));
 		(yyval.node) = new CmdNode(new Common::String("open"), args, g_lingo->_compiler->_linenumber - 1); }
-#line 3214 "engines/director/lingo/lingo-gr.cpp"
+#line 3459 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117: /* proc: tNEXT tREPEAT '\n'  */
 #line 425 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new NextRepeatNode(); }
-#line 3220 "engines/director/lingo/lingo-gr.cpp"
+#line 3465 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118: /* proc: tEXIT tREPEAT '\n'  */
 #line 426 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new ExitRepeatNode(); }
-#line 3226 "engines/director/lingo/lingo-gr.cpp"
+#line 3471 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119: /* proc: tEXIT '\n'  */
 #line 427 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new ExitNode(); }
-#line 3232 "engines/director/lingo/lingo-gr.cpp"
+#line 3477 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120: /* proc: tRETURN '\n'  */
 #line 428 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new ReturnNode(nullptr); }
-#line 3238 "engines/director/lingo/lingo-gr.cpp"
+#line 3483 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121: /* proc: tRETURN expr '\n'  */
 #line 429 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new ReturnNode((yyvsp[-1].node)); }
-#line 3244 "engines/director/lingo/lingo-gr.cpp"
+#line 3489 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122: /* proc: tDELETE chunk '\n'  */
 #line 430 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new DeleteNode((yyvsp[-1].node)); }
-#line 3250 "engines/director/lingo/lingo-gr.cpp"
+#line 3495 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123: /* proc: tHILITE chunk '\n'  */
 #line 431 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new HiliteNode((yyvsp[-1].node)); }
-#line 3256 "engines/director/lingo/lingo-gr.cpp"
+#line 3501 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124: /* proc: tASSERTERROR stmtoneliner  */
 #line 432 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new AssertErrorNode((yyvsp[0].node)); }
-#line 3262 "engines/director/lingo/lingo-gr.cpp"
+#line 3507 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125: /* cmdargs: %empty  */
@@ -3265,7 +3511,7 @@ yyreduce:
                                                                                         {
 		// This matches `cmd`
 		(yyval.nodelist) = new NodeList; }
-#line 3270 "engines/director/lingo/lingo-gr.cpp"
+#line 3515 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126: /* cmdargs: expr trailingcomma  */
@@ -3275,7 +3521,7 @@ yyreduce:
 		NodeList *args = new NodeList;
 		args->push_back((yyvsp[-1].node));
 		(yyval.nodelist) = args; }
-#line 3280 "engines/director/lingo/lingo-gr.cpp"
+#line 3525 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127: /* cmdargs: expr ',' nonemptyexprlist trailingcomma  */
@@ -3284,7 +3530,7 @@ yyreduce:
 		// This matches `cmd arg, ...)
 		(yyvsp[-1].nodelist)->insert_at(0, (yyvsp[-3].node));
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 3289 "engines/director/lingo/lingo-gr.cpp"
+#line 3534 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128: /* cmdargs: expr expr_nounarymath trailingcomma  */
@@ -3295,7 +3541,7 @@ yyreduce:
 		args->push_back((yyvsp[-2].node));
 		args->push_back((yyvsp[-1].node));
 		(yyval.nodelist) = args; }
-#line 3300 "engines/director/lingo/lingo-gr.cpp"
+#line 3545 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129: /* cmdargs: expr expr_nounarymath ',' nonemptyexprlist trailingcomma  */
@@ -3305,7 +3551,7 @@ yyreduce:
 		(yyvsp[-1].nodelist)->insert_at(0, (yyvsp[-3].node));
 		(yyvsp[-1].nodelist)->insert_at(0, (yyvsp[-4].node));
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 3310 "engines/director/lingo/lingo-gr.cpp"
+#line 3555 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130: /* cmdargs: '(' ')'  */
@@ -3313,7 +3559,7 @@ yyreduce:
                                                                         {
 		// This matches `cmd()`
 		(yyval.nodelist) = new NodeList; }
-#line 3318 "engines/director/lingo/lingo-gr.cpp"
+#line 3563 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131: /* cmdargs: '(' expr ',' ')'  */
@@ -3323,7 +3569,7 @@ yyreduce:
 		NodeList *args = new NodeList;
 		args->push_back((yyvsp[-2].node));
 		(yyval.nodelist) = args; }
-#line 3328 "engines/director/lingo/lingo-gr.cpp"
+#line 3573 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132: /* cmdargs: '(' expr ',' nonemptyexprlist trailingcomma ')'  */
@@ -3332,7 +3578,7 @@ yyreduce:
 		// This matches `cmd(arg, ...)`
 		(yyvsp[-2].nodelist)->insert_at(0, (yyvsp[-4].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 3337 "engines/director/lingo/lingo-gr.cpp"
+#line 3582 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133: /* cmdargs: '(' var expr_nounarymath trailingcomma ')'  */
@@ -3343,7 +3589,7 @@ yyreduce:
 		args->push_back((yyvsp[-3].node));
 		args->push_back((yyvsp[-2].node));
 		(yyval.nodelist) = args; }
-#line 3348 "engines/director/lingo/lingo-gr.cpp"
+#line 3593 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134: /* cmdargs: '(' var expr_nounarymath ',' nonemptyexprlist trailingcomma ')'  */
@@ -3353,7 +3599,7 @@ yyreduce:
 		(yyvsp[-2].nodelist)->insert_at(0, (yyvsp[-4].node));
 		(yyvsp[-2].nodelist)->insert_at(0, (yyvsp[-5].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 3358 "engines/director/lingo/lingo-gr.cpp"
+#line 3603 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137: /* frameargs: tFRAME expr  */
@@ -3363,7 +3609,7 @@ yyreduce:
 		NodeList *args = new NodeList;
 		args->push_back(new FrameNode((yyvsp[0].node)));
 		(yyval.nodelist) = args; }
-#line 3368 "engines/director/lingo/lingo-gr.cpp"
+#line 3613 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138: /* frameargs: tMOVIE expr  */
@@ -3374,7 +3620,7 @@ yyreduce:
 		args->push_back(new IntNode(1));
 		args->push_back(new MovieNode((yyvsp[0].node)));
 		(yyval.nodelist) = args; }
-#line 3379 "engines/director/lingo/lingo-gr.cpp"
+#line 3624 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139: /* frameargs: tFRAME expr tOF tMOVIE expr  */
@@ -3385,7 +3631,7 @@ yyreduce:
 		args->push_back(new FrameNode((yyvsp[-3].node)));
 		args->push_back(new MovieNode((yyvsp[0].node)));
 		(yyval.nodelist) = args; }
-#line 3390 "engines/director/lingo/lingo-gr.cpp"
+#line 3635 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140: /* frameargs: expr tOF tMOVIE expr  */
@@ -3396,7 +3642,7 @@ yyreduce:
 		args->push_back((yyvsp[-3].node));
 		args->push_back(new MovieNode((yyvsp[0].node)));
 		(yyval.nodelist) = args; }
-#line 3401 "engines/director/lingo/lingo-gr.cpp"
+#line 3646 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141: /* frameargs: tFRAME expr expr_nounarymath  */
@@ -3407,49 +3653,49 @@ yyreduce:
 		args->push_back(new FrameNode((yyvsp[-1].node)));
 		args->push_back((yyvsp[0].node));
 		(yyval.nodelist) = args; }
-#line 3412 "engines/director/lingo/lingo-gr.cpp"
+#line 3657 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142: /* asgn: tPUT expr tINTO varorchunk '\n'  */
 #line 520 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new PutIntoNode((yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 3418 "engines/director/lingo/lingo-gr.cpp"
+#line 3663 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143: /* asgn: tPUT expr tAFTER varorchunk '\n'  */
 #line 521 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PutAfterNode((yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 3424 "engines/director/lingo/lingo-gr.cpp"
+#line 3669 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144: /* asgn: tPUT expr tBEFORE varorchunk '\n'  */
 #line 522 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PutBeforeNode((yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 3430 "engines/director/lingo/lingo-gr.cpp"
+#line 3675 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145: /* asgn: tSET varorthe to expr '\n'  */
 #line 523 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new SetNode((yyvsp[-3].node), (yyvsp[-1].node)); }
-#line 3436 "engines/director/lingo/lingo-gr.cpp"
+#line 3681 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148: /* definevars: tGLOBAL idlist '\n'  */
 #line 528 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new GlobalNode((yyvsp[-1].idlist)); }
-#line 3442 "engines/director/lingo/lingo-gr.cpp"
+#line 3687 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149: /* definevars: tPROPERTY idlist '\n'  */
 #line 529 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new PropertyNode((yyvsp[-1].idlist)); }
-#line 3448 "engines/director/lingo/lingo-gr.cpp"
+#line 3693 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150: /* definevars: tINSTANCE idlist '\n'  */
 #line 530 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new InstanceNode((yyvsp[-1].idlist)); }
-#line 3454 "engines/director/lingo/lingo-gr.cpp"
+#line 3699 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151: /* ifstmt: tIF expr tTHEN stmt  */
@@ -3458,14 +3704,14 @@ yyreduce:
 		NodeList *stmtlist = new NodeList;
 		stmtlist->push_back((yyvsp[0].node));
 		(yyval.node) = new IfStmtNode((yyvsp[-2].node), stmtlist); }
-#line 3463 "engines/director/lingo/lingo-gr.cpp"
+#line 3708 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 152: /* ifstmt: tIF expr tTHEN '\n' stmtlist_insideif endif  */
 #line 537 "engines/director/lingo/lingo-gr.y"
                                                       {
 		(yyval.node) = new IfStmtNode((yyvsp[-4].node), (yyvsp[-1].nodelist)); }
-#line 3470 "engines/director/lingo/lingo-gr.cpp"
+#line 3715 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153: /* ifelsestmt: tIF expr tTHEN stmt tELSE stmt  */
@@ -3476,7 +3722,7 @@ yyreduce:
 		NodeList *stmtlist2 = new NodeList;
 		stmtlist2->push_back((yyvsp[0].node));
 		(yyval.node) = new IfElseStmtNode((yyvsp[-4].node), stmtlist1, stmtlist2); }
-#line 3481 "engines/director/lingo/lingo-gr.cpp"
+#line 3726 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154: /* ifelsestmt: tIF expr tTHEN stmt tELSE '\n' stmtlist_insideif endif  */
@@ -3485,7 +3731,7 @@ yyreduce:
 		NodeList *stmtlist1 = new NodeList;
 		stmtlist1->push_back((yyvsp[-4].node));
 		(yyval.node) = new IfElseStmtNode((yyvsp[-6].node), stmtlist1, (yyvsp[-1].nodelist)); }
-#line 3490 "engines/director/lingo/lingo-gr.cpp"
+#line 3735 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist_insideif tELSE stmt  */
@@ -3494,14 +3740,14 @@ yyreduce:
 		NodeList *stmtlist2 = new NodeList;
 		stmtlist2->push_back((yyvsp[0].node));
 		(yyval.node) = new IfElseStmtNode((yyvsp[-5].node), (yyvsp[-2].nodelist), stmtlist2); }
-#line 3499 "engines/director/lingo/lingo-gr.cpp"
+#line 3744 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist_insideif tELSE '\n' stmtlist_insideif endif  */
 #line 555 "engines/director/lingo/lingo-gr.y"
                                                                                                          {
 		(yyval.node) = new IfElseStmtNode((yyvsp[-7].node), (yyvsp[-4].nodelist), (yyvsp[-1].nodelist)); }
-#line 3506 "engines/director/lingo/lingo-gr.cpp"
+#line 3751 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157: /* endif: %empty  */
@@ -3513,35 +3759,35 @@ yyreduce:
 			compiler->_assemblyContext->_id);
 
 		}
-#line 3518 "engines/director/lingo/lingo-gr.cpp"
+#line 3763 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159: /* loop: tREPEAT tWHILE expr '\n' stmtlist tENDREPEAT '\n'  */
 #line 568 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.node) = new RepeatWhileNode((yyvsp[-4].node), (yyvsp[-2].nodelist)); }
-#line 3525 "engines/director/lingo/lingo-gr.cpp"
+#line 3770 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160: /* loop: tREPEAT tWITH ID tEQ expr tTO expr '\n' stmtlist tENDREPEAT '\n'  */
 #line 570 "engines/director/lingo/lingo-gr.y"
                                                                                        {
 		(yyval.node) = new RepeatWithToNode((yyvsp[-8].s), (yyvsp[-6].node), false, (yyvsp[-4].node), (yyvsp[-2].nodelist)); }
-#line 3532 "engines/director/lingo/lingo-gr.cpp"
+#line 3777 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161: /* loop: tREPEAT tWITH ID tEQ expr tDOWN tTO expr '\n' stmtlist tENDREPEAT '\n'  */
 #line 572 "engines/director/lingo/lingo-gr.y"
                                                                                              {
 		(yyval.node) = new RepeatWithToNode((yyvsp[-9].s), (yyvsp[-7].node), true, (yyvsp[-4].node), (yyvsp[-2].nodelist)); }
-#line 3539 "engines/director/lingo/lingo-gr.cpp"
+#line 3784 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162: /* loop: tREPEAT tWITH ID tIN expr '\n' stmtlist tENDREPEAT '\n'  */
 #line 574 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		(yyval.node) = new RepeatWithInNode((yyvsp[-6].s), (yyvsp[-4].node), (yyvsp[-2].nodelist)); }
-#line 3546 "engines/director/lingo/lingo-gr.cpp"
+#line 3791 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163: /* tell: tTELL expr tTO stmtoneliner  */
@@ -3550,26 +3796,26 @@ yyreduce:
 		NodeList *stmtlist = new NodeList;
 		stmtlist->push_back((yyvsp[0].node));
 		(yyval.node) = new TellNode((yyvsp[-2].node), stmtlist); }
-#line 3555 "engines/director/lingo/lingo-gr.cpp"
+#line 3800 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164: /* tell: tTELL expr '\n' stmtlist tENDTELL '\n'  */
 #line 582 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.node) = new TellNode((yyvsp[-4].node), (yyvsp[-2].nodelist)); }
-#line 3562 "engines/director/lingo/lingo-gr.cpp"
+#line 3807 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165: /* when: tWHEN '\n'  */
 #line 586 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new WhenNode((yyvsp[-1].w).eventName, (yyvsp[-1].w).stmt); }
-#line 3568 "engines/director/lingo/lingo-gr.cpp"
+#line 3813 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166: /* stmtlist: %empty  */
 #line 588 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.nodelist) = new NodeList; }
-#line 3574 "engines/director/lingo/lingo-gr.cpp"
+#line 3819 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168: /* nonemptystmtlist: stmtlistline  */
@@ -3580,7 +3826,7 @@ yyreduce:
 			list->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = list; }
-#line 3585 "engines/director/lingo/lingo-gr.cpp"
+#line 3830 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169: /* nonemptystmtlist: nonemptystmtlist stmtlistline  */
@@ -3590,19 +3836,19 @@ yyreduce:
 			(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 3595 "engines/director/lingo/lingo-gr.cpp"
+#line 3840 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170: /* stmtlistline: '\n'  */
 #line 606 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = nullptr; }
-#line 3601 "engines/director/lingo/lingo-gr.cpp"
+#line 3846 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172: /* stmtlist_insideif: %empty  */
 #line 610 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.nodelist) = new NodeList; }
-#line 3607 "engines/director/lingo/lingo-gr.cpp"
+#line 3852 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 174: /* nonemptystmtlist_insideif: stmtlistline_insideif  */
@@ -3613,7 +3859,7 @@ yyreduce:
 			list->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = list; }
-#line 3618 "engines/director/lingo/lingo-gr.cpp"
+#line 3863 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 175: /* nonemptystmtlist_insideif: nonemptystmtlist_insideif stmtlistline_insideif  */
@@ -3623,55 +3869,55 @@ yyreduce:
 			(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
 		}
 		(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 3628 "engines/director/lingo/lingo-gr.cpp"
+#line 3873 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 176: /* stmtlistline_insideif: '\n'  */
 #line 628 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = nullptr; }
-#line 3634 "engines/director/lingo/lingo-gr.cpp"
+#line 3879 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 178: /* simpleexpr_nounarymath: tINT  */
 #line 635 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new IntNode((yyvsp[0].i)); }
-#line 3640 "engines/director/lingo/lingo-gr.cpp"
+#line 3885 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 179: /* simpleexpr_nounarymath: tFLOAT  */
 #line 636 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new FloatNode((yyvsp[0].f)); }
-#line 3646 "engines/director/lingo/lingo-gr.cpp"
+#line 3891 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 180: /* simpleexpr_nounarymath: tSYMBOL  */
 #line 637 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new SymbolNode((yyvsp[0].s)); }
-#line 3652 "engines/director/lingo/lingo-gr.cpp"
+#line 3897 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 181: /* simpleexpr_nounarymath: tSTRING  */
 #line 638 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new StringNode((yyvsp[0].s)); }
-#line 3658 "engines/director/lingo/lingo-gr.cpp"
+#line 3903 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 182: /* simpleexpr_nounarymath: tNOT simpleexpr  */
 #line 639 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new UnaryOpNode(LC::c_not, (yyvsp[0].node)); }
-#line 3664 "engines/director/lingo/lingo-gr.cpp"
+#line 3909 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 183: /* simpleexpr_nounarymath: ID '(' ')'  */
 #line 640 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new FuncNode((yyvsp[-2].s), new NodeList); }
-#line 3670 "engines/director/lingo/lingo-gr.cpp"
+#line 3915 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 184: /* simpleexpr_nounarymath: ID '(' nonemptyexprlist trailingcomma ')'  */
 #line 641 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new FuncNode((yyvsp[-4].s), (yyvsp[-2].nodelist)); }
-#line 3676 "engines/director/lingo/lingo-gr.cpp"
+#line 3921 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 185: /* simpleexpr_nounarymath: ID '(' var expr_nounarymath trailingcomma ')'  */
@@ -3682,7 +3928,7 @@ yyreduce:
 		args->push_back((yyvsp[-3].node));
 		args->push_back((yyvsp[-2].node));
 		(yyval.node) = new FuncNode((yyvsp[-5].s), args); }
-#line 3687 "engines/director/lingo/lingo-gr.cpp"
+#line 3932 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 186: /* simpleexpr_nounarymath: ID '(' var expr_nounarymath ',' nonemptyexprlist trailingcomma ')'  */
@@ -3692,129 +3938,129 @@ yyreduce:
 		(yyvsp[-2].nodelist)->insert_at(0, (yyvsp[-4].node));
 		(yyvsp[-2].nodelist)->insert_at(0, (yyvsp[-5].node));
 		(yyval.node) = new FuncNode((yyvsp[-7].s), (yyvsp[-2].nodelist)); }
-#line 3697 "engines/director/lingo/lingo-gr.cpp"
+#line 3942 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 187: /* simpleexpr_nounarymath: '(' expr ')'  */
 #line 653 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = (yyvsp[-1].node); }
-#line 3703 "engines/director/lingo/lingo-gr.cpp"
+#line 3948 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 193: /* var: ID  */
 #line 661 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new VarNode((yyvsp[0].s)); }
-#line 3709 "engines/director/lingo/lingo-gr.cpp"
+#line 3954 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 198: /* chunk: tFIELD refargs  */
 #line 671 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.node) = new FuncNode(new Common::String("field"), (yyvsp[0].nodelist)); }
-#line 3715 "engines/director/lingo/lingo-gr.cpp"
+#line 3960 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 199: /* chunk: tCAST refargs  */
 #line 672 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new FuncNode(new Common::String("cast"), (yyvsp[0].nodelist)); }
-#line 3721 "engines/director/lingo/lingo-gr.cpp"
+#line 3966 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 200: /* chunk: tCHAR expr tOF simpleexpr  */
 #line 673 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkChar, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
-#line 3728 "engines/director/lingo/lingo-gr.cpp"
+#line 3973 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 201: /* chunk: tCHAR expr tTO expr tOF simpleexpr  */
 #line 675 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkChar, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3735 "engines/director/lingo/lingo-gr.cpp"
+#line 3980 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 202: /* chunk: tWORD expr tOF simpleexpr  */
 #line 677 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkWord, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
-#line 3742 "engines/director/lingo/lingo-gr.cpp"
+#line 3987 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 203: /* chunk: tWORD expr tTO expr tOF simpleexpr  */
 #line 679 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkWord, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3749 "engines/director/lingo/lingo-gr.cpp"
+#line 3994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 204: /* chunk: tITEM expr tOF simpleexpr  */
 #line 681 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkItem, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
-#line 3756 "engines/director/lingo/lingo-gr.cpp"
+#line 4001 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 205: /* chunk: tITEM expr tTO expr tOF simpleexpr  */
 #line 683 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkItem, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3763 "engines/director/lingo/lingo-gr.cpp"
+#line 4008 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 206: /* chunk: tLINE expr tOF simpleexpr  */
 #line 685 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkLine, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
-#line 3770 "engines/director/lingo/lingo-gr.cpp"
+#line 4015 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 207: /* chunk: tLINE expr tTO expr tOF simpleexpr  */
 #line 687 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		(yyval.node) = new ChunkExprNode(kChunkLine, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 3777 "engines/director/lingo/lingo-gr.cpp"
+#line 4022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 208: /* chunk: tTHE tLAST chunktype inof simpleexpr  */
 #line 689 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new TheLastNode((yyvsp[-2].chunktype), (yyvsp[0].node)); }
-#line 3783 "engines/director/lingo/lingo-gr.cpp"
+#line 4028 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 209: /* chunktype: tCHAR  */
 #line 692 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.chunktype) = kChunkChar; }
-#line 3789 "engines/director/lingo/lingo-gr.cpp"
+#line 4034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 210: /* chunktype: tWORD  */
 #line 693 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.chunktype) = kChunkWord; }
-#line 3795 "engines/director/lingo/lingo-gr.cpp"
+#line 4040 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 211: /* chunktype: tITEM  */
 #line 694 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.chunktype) = kChunkItem; }
-#line 3801 "engines/director/lingo/lingo-gr.cpp"
+#line 4046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 212: /* chunktype: tLINE  */
 #line 695 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.chunktype) = kChunkLine; }
-#line 3807 "engines/director/lingo/lingo-gr.cpp"
+#line 4052 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 213: /* object: tSCRIPT refargs  */
 #line 698 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.node) = new FuncNode(new Common::String("script"), (yyvsp[0].nodelist)); }
-#line 3813 "engines/director/lingo/lingo-gr.cpp"
+#line 4058 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 214: /* object: tWINDOW refargs  */
 #line 699 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new FuncNode(new Common::String("window"), (yyvsp[0].nodelist)); }
-#line 3819 "engines/director/lingo/lingo-gr.cpp"
+#line 4064 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 215: /* refargs: simpleexpr  */
@@ -3824,7 +4070,7 @@ yyreduce:
 		NodeList *args = new NodeList;
 		args->push_back((yyvsp[0].node));
 		(yyval.nodelist) = args; }
-#line 3829 "engines/director/lingo/lingo-gr.cpp"
+#line 4074 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 216: /* refargs: '(' ')'  */
@@ -3832,7 +4078,7 @@ yyreduce:
                                                                                         {
 		// This matches `ref()`
 		(yyval.nodelist) = new NodeList; }
-#line 3837 "engines/director/lingo/lingo-gr.cpp"
+#line 4082 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 217: /* refargs: '(' expr ',' ')'  */
@@ -3842,7 +4088,7 @@ yyreduce:
 		NodeList *args = new NodeList;
 		args->push_back((yyvsp[-2].node));
 		(yyval.nodelist) = args; }
-#line 3847 "engines/director/lingo/lingo-gr.cpp"
+#line 4092 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 218: /* refargs: '(' expr ',' nonemptyexprlist trailingcomma ')'  */
@@ -3851,211 +4097,211 @@ yyreduce:
 		// This matches `ref(arg, ...)`
 		(yyvsp[-2].nodelist)->insert_at(0, (yyvsp[-4].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 3856 "engines/director/lingo/lingo-gr.cpp"
+#line 4101 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 219: /* the: tTHE ID  */
 #line 721 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheNode((yyvsp[0].s)); }
-#line 3862 "engines/director/lingo/lingo-gr.cpp"
+#line 4107 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 220: /* the: tTHE ID tOF theobj  */
 #line 722 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheOfNode((yyvsp[-2].s), (yyvsp[0].node)); }
-#line 3868 "engines/director/lingo/lingo-gr.cpp"
+#line 4113 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 221: /* the: tTHE tNUMBER tOF theobj  */
 #line 723 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheOfNode(new Common::String("number"), (yyvsp[0].node)); }
-#line 3874 "engines/director/lingo/lingo-gr.cpp"
+#line 4119 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 226: /* theobj: tMENUITEM simpleexpr tOF tMENU simpleexpr  */
 #line 730 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new MenuItemNode((yyvsp[-3].node), (yyvsp[0].node)); }
-#line 3880 "engines/director/lingo/lingo-gr.cpp"
+#line 4125 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 227: /* theobj: tSOUND simpleexpr  */
 #line 731 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new SoundNode((yyvsp[0].node)); }
-#line 3886 "engines/director/lingo/lingo-gr.cpp"
+#line 4131 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 228: /* theobj: tSPRITE simpleexpr  */
 #line 732 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new SpriteNode((yyvsp[0].node)); }
-#line 3892 "engines/director/lingo/lingo-gr.cpp"
+#line 4137 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 229: /* menu: tMENU simpleexpr  */
 #line 735 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new MenuNode((yyvsp[0].node)); }
-#line 3898 "engines/director/lingo/lingo-gr.cpp"
+#line 4143 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 230: /* thedatetime: tTHE tABBREVIATED tDATE  */
 #line 737 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheDate); }
-#line 3904 "engines/director/lingo/lingo-gr.cpp"
+#line 4149 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 231: /* thedatetime: tTHE tABBREVIATED tTIME  */
 #line 738 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheTime); }
-#line 3910 "engines/director/lingo/lingo-gr.cpp"
+#line 4155 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 232: /* thedatetime: tTHE tABBREV tDATE  */
 #line 739 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheDate); }
-#line 3916 "engines/director/lingo/lingo-gr.cpp"
+#line 4161 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 233: /* thedatetime: tTHE tABBREV tTIME  */
 #line 740 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheTime); }
-#line 3922 "engines/director/lingo/lingo-gr.cpp"
+#line 4167 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 234: /* thedatetime: tTHE tABBR tDATE  */
 #line 741 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheDate); }
-#line 3928 "engines/director/lingo/lingo-gr.cpp"
+#line 4173 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 235: /* thedatetime: tTHE tABBR tTIME  */
 #line 742 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheTime); }
-#line 3934 "engines/director/lingo/lingo-gr.cpp"
+#line 4179 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 236: /* thedatetime: tTHE tLONG tDATE  */
 #line 743 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheLong, kTheDate); }
-#line 3940 "engines/director/lingo/lingo-gr.cpp"
+#line 4185 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 237: /* thedatetime: tTHE tLONG tTIME  */
 #line 744 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheLong, kTheTime); }
-#line 3946 "engines/director/lingo/lingo-gr.cpp"
+#line 4191 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 238: /* thedatetime: tTHE tSHORT tDATE  */
 #line 745 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheShort, kTheDate); }
-#line 3952 "engines/director/lingo/lingo-gr.cpp"
+#line 4197 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 239: /* thedatetime: tTHE tSHORT tTIME  */
 #line 746 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheDateTimeNode(kTheShort, kTheTime); }
-#line 3958 "engines/director/lingo/lingo-gr.cpp"
+#line 4203 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 240: /* thenumberof: tTHE tNUMBER tOF tCHARS inof simpleexpr  */
 #line 750 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfChars, (yyvsp[0].node)); }
-#line 3964 "engines/director/lingo/lingo-gr.cpp"
+#line 4209 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 241: /* thenumberof: tTHE tNUMBER tOF tWORDS inof simpleexpr  */
 #line 751 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfWords, (yyvsp[0].node)); }
-#line 3970 "engines/director/lingo/lingo-gr.cpp"
+#line 4215 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 242: /* thenumberof: tTHE tNUMBER tOF tITEMS inof simpleexpr  */
 #line 752 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfItems, (yyvsp[0].node)); }
-#line 3976 "engines/director/lingo/lingo-gr.cpp"
+#line 4221 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 243: /* thenumberof: tTHE tNUMBER tOF tLINES inof simpleexpr  */
 #line 753 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfLines, (yyvsp[0].node)); }
-#line 3982 "engines/director/lingo/lingo-gr.cpp"
+#line 4227 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 244: /* thenumberof: tTHE tNUMBER tOF tMENUITEMS inof menu  */
 #line 754 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfMenuItems, (yyvsp[0].node)); }
-#line 3988 "engines/director/lingo/lingo-gr.cpp"
+#line 4233 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 245: /* thenumberof: tTHE tNUMBER tOF tMENUS  */
 #line 755 "engines/director/lingo/lingo-gr.y"
                                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfMenus, nullptr); }
-#line 3994 "engines/director/lingo/lingo-gr.cpp"
+#line 4239 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 246: /* thenumberof: tTHE tNUMBER tOF tXTRAS  */
 #line 756 "engines/director/lingo/lingo-gr.y"
                                                                         { (yyval.node) = new TheNumberOfNode(kNumberOfXtras, nullptr); }
-#line 4000 "engines/director/lingo/lingo-gr.cpp"
+#line 4245 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 247: /* thenumberof: tTHE tNUMBER tOF tCASTLIBS  */
 #line 757 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new TheNumberOfNode(kNumberOfCastlibs, nullptr); }
-#line 4006 "engines/director/lingo/lingo-gr.cpp"
+#line 4251 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 250: /* writablethe: tTHE ID  */
 #line 762 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new TheNode((yyvsp[0].s)); }
-#line 4012 "engines/director/lingo/lingo-gr.cpp"
+#line 4257 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 251: /* writablethe: tTHE ID tOF writabletheobj  */
 #line 763 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new TheOfNode((yyvsp[-2].s), (yyvsp[0].node)); }
-#line 4018 "engines/director/lingo/lingo-gr.cpp"
+#line 4263 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 253: /* writabletheobj: tMENU expr_noeq  */
 #line 767 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new MenuNode((yyvsp[0].node)); }
-#line 4024 "engines/director/lingo/lingo-gr.cpp"
+#line 4269 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 254: /* writabletheobj: tMENUITEM expr_noeq tOF tMENU expr_noeq  */
 #line 768 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new MenuItemNode((yyvsp[-3].node), (yyvsp[0].node)); }
-#line 4030 "engines/director/lingo/lingo-gr.cpp"
+#line 4275 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 255: /* writabletheobj: tSOUND expr_noeq  */
 #line 769 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new SoundNode((yyvsp[0].node)); }
-#line 4036 "engines/director/lingo/lingo-gr.cpp"
+#line 4281 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 256: /* writabletheobj: tSPRITE expr_noeq  */
 #line 770 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new SpriteNode((yyvsp[0].node)); }
-#line 4042 "engines/director/lingo/lingo-gr.cpp"
+#line 4287 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 257: /* list: '[' exprlist ']'  */
 #line 773 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new ListNode((yyvsp[-1].nodelist)); }
-#line 4048 "engines/director/lingo/lingo-gr.cpp"
+#line 4293 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 258: /* list: '[' ':' ']'  */
 #line 774 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PropListNode(new NodeList); }
-#line 4054 "engines/director/lingo/lingo-gr.cpp"
+#line 4299 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 259: /* list: '[' proplist ']'  */
 #line 775 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PropListNode((yyvsp[-1].nodelist)); }
-#line 4060 "engines/director/lingo/lingo-gr.cpp"
+#line 4305 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 260: /* proplist: proppair  */
@@ -4064,7 +4310,7 @@ yyreduce:
 		NodeList *list = new NodeList;
 		list->push_back((yyvsp[0].node));
 		(yyval.nodelist) = list; }
-#line 4069 "engines/director/lingo/lingo-gr.cpp"
+#line 4314 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 261: /* proplist: proplist ',' proppair  */
@@ -4072,7 +4318,7 @@ yyreduce:
                                                 {
 		(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 4077 "engines/director/lingo/lingo-gr.cpp"
+#line 4322 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 262: /* proplist: proplist ',' expr  */
@@ -4080,367 +4326,367 @@ yyreduce:
                                         {
 		(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 4085 "engines/director/lingo/lingo-gr.cpp"
+#line 4330 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 263: /* proppair: tSYMBOL ':' expr  */
 #line 793 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); }
-#line 4091 "engines/director/lingo/lingo-gr.cpp"
+#line 4336 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 264: /* proppair: ID ':' expr  */
 #line 794 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); }
-#line 4097 "engines/director/lingo/lingo-gr.cpp"
+#line 4342 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 265: /* proppair: tSTRING ':' expr  */
 #line 795 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new PropPairNode(new StringNode((yyvsp[-2].s)), (yyvsp[0].node)); }
-#line 4103 "engines/director/lingo/lingo-gr.cpp"
+#line 4348 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 266: /* proppair: tINT ':' expr  */
 #line 796 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.node) = new PropPairNode(new IntNode((yyvsp[-2].i)), (yyvsp[0].node)); }
-#line 4109 "engines/director/lingo/lingo-gr.cpp"
+#line 4354 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 267: /* proppair: tFLOAT ':' expr  */
 #line 797 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.node) = new PropPairNode(new FloatNode((yyvsp[-2].f)), (yyvsp[0].node)); }
-#line 4115 "engines/director/lingo/lingo-gr.cpp"
+#line 4360 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 268: /* unarymath: '+' simpleexpr  */
 #line 800 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = (yyvsp[0].node); }
-#line 4121 "engines/director/lingo/lingo-gr.cpp"
+#line 4366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 269: /* unarymath: '-' simpleexpr  */
 #line 801 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.node) = new UnaryOpNode(LC::c_negate, (yyvsp[0].node)); }
-#line 4127 "engines/director/lingo/lingo-gr.cpp"
+#line 4372 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 274: /* expr: expr '+' expr  */
 #line 811 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4133 "engines/director/lingo/lingo-gr.cpp"
+#line 4378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 275: /* expr: expr '-' expr  */
 #line 812 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4139 "engines/director/lingo/lingo-gr.cpp"
+#line 4384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 276: /* expr: expr '*' expr  */
 #line 813 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4145 "engines/director/lingo/lingo-gr.cpp"
+#line 4390 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 277: /* expr: expr '/' expr  */
 #line 814 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4151 "engines/director/lingo/lingo-gr.cpp"
+#line 4396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 278: /* expr: expr tMOD expr  */
 #line 815 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4157 "engines/director/lingo/lingo-gr.cpp"
+#line 4402 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 279: /* expr: expr '>' expr  */
 #line 816 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4163 "engines/director/lingo/lingo-gr.cpp"
+#line 4408 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 280: /* expr: expr '<' expr  */
 #line 817 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4169 "engines/director/lingo/lingo-gr.cpp"
+#line 4414 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 281: /* expr: expr tEQ expr  */
 #line 818 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4175 "engines/director/lingo/lingo-gr.cpp"
+#line 4420 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 282: /* expr: expr tNEQ expr  */
 #line 819 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4181 "engines/director/lingo/lingo-gr.cpp"
+#line 4426 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 283: /* expr: expr tGE expr  */
 #line 820 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4187 "engines/director/lingo/lingo-gr.cpp"
+#line 4432 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 284: /* expr: expr tLE expr  */
 #line 821 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4193 "engines/director/lingo/lingo-gr.cpp"
+#line 4438 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 285: /* expr: expr tAND expr  */
 #line 822 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4199 "engines/director/lingo/lingo-gr.cpp"
+#line 4444 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 286: /* expr: expr tOR expr  */
 #line 823 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4205 "engines/director/lingo/lingo-gr.cpp"
+#line 4450 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 287: /* expr: expr '&' expr  */
 #line 824 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4211 "engines/director/lingo/lingo-gr.cpp"
+#line 4456 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 288: /* expr: expr tCONCAT expr  */
 #line 825 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4217 "engines/director/lingo/lingo-gr.cpp"
+#line 4462 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 289: /* expr: expr tCONTAINS expr  */
 #line 826 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4223 "engines/director/lingo/lingo-gr.cpp"
+#line 4468 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 290: /* expr: expr tSTARTS expr  */
 #line 827 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4229 "engines/director/lingo/lingo-gr.cpp"
+#line 4474 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 293: /* expr_nounarymath: expr_nounarymath '+' expr  */
 #line 836 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4235 "engines/director/lingo/lingo-gr.cpp"
+#line 4480 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 294: /* expr_nounarymath: expr_nounarymath '-' expr  */
 #line 837 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4241 "engines/director/lingo/lingo-gr.cpp"
+#line 4486 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 295: /* expr_nounarymath: expr_nounarymath '*' expr  */
 #line 838 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4247 "engines/director/lingo/lingo-gr.cpp"
+#line 4492 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 296: /* expr_nounarymath: expr_nounarymath '/' expr  */
 #line 839 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4253 "engines/director/lingo/lingo-gr.cpp"
+#line 4498 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 297: /* expr_nounarymath: expr_nounarymath tMOD expr  */
 #line 840 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4259 "engines/director/lingo/lingo-gr.cpp"
+#line 4504 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 298: /* expr_nounarymath: expr_nounarymath '>' expr  */
 #line 841 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4265 "engines/director/lingo/lingo-gr.cpp"
+#line 4510 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 299: /* expr_nounarymath: expr_nounarymath '<' expr  */
 #line 842 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4271 "engines/director/lingo/lingo-gr.cpp"
+#line 4516 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 300: /* expr_nounarymath: expr_nounarymath tEQ expr  */
 #line 843 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4277 "engines/director/lingo/lingo-gr.cpp"
+#line 4522 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 301: /* expr_nounarymath: expr_nounarymath tNEQ expr  */
 #line 844 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4283 "engines/director/lingo/lingo-gr.cpp"
+#line 4528 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 302: /* expr_nounarymath: expr_nounarymath tGE expr  */
 #line 845 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4289 "engines/director/lingo/lingo-gr.cpp"
+#line 4534 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 303: /* expr_nounarymath: expr_nounarymath tLE expr  */
 #line 846 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4295 "engines/director/lingo/lingo-gr.cpp"
+#line 4540 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 304: /* expr_nounarymath: expr_nounarymath tAND expr  */
 #line 847 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4301 "engines/director/lingo/lingo-gr.cpp"
+#line 4546 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 305: /* expr_nounarymath: expr_nounarymath tOR expr  */
 #line 848 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4307 "engines/director/lingo/lingo-gr.cpp"
+#line 4552 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 306: /* expr_nounarymath: expr_nounarymath '&' expr  */
 #line 849 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4313 "engines/director/lingo/lingo-gr.cpp"
+#line 4558 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 307: /* expr_nounarymath: expr_nounarymath tCONCAT expr  */
 #line 850 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4319 "engines/director/lingo/lingo-gr.cpp"
+#line 4564 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 308: /* expr_nounarymath: expr_nounarymath tCONTAINS expr  */
 #line 851 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4325 "engines/director/lingo/lingo-gr.cpp"
+#line 4570 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 309: /* expr_nounarymath: expr_nounarymath tSTARTS expr  */
 #line 852 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4331 "engines/director/lingo/lingo-gr.cpp"
+#line 4576 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 312: /* expr_noeq: expr_noeq '+' expr_noeq  */
 #line 857 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4337 "engines/director/lingo/lingo-gr.cpp"
+#line 4582 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 313: /* expr_noeq: expr_noeq '-' expr_noeq  */
 #line 858 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4343 "engines/director/lingo/lingo-gr.cpp"
+#line 4588 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 314: /* expr_noeq: expr_noeq '*' expr_noeq  */
 #line 859 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4349 "engines/director/lingo/lingo-gr.cpp"
+#line 4594 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 315: /* expr_noeq: expr_noeq '/' expr_noeq  */
 #line 860 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4355 "engines/director/lingo/lingo-gr.cpp"
+#line 4600 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 316: /* expr_noeq: expr_noeq tMOD expr_noeq  */
 #line 861 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4361 "engines/director/lingo/lingo-gr.cpp"
+#line 4606 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 317: /* expr_noeq: expr_noeq '>' expr_noeq  */
 #line 862 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4367 "engines/director/lingo/lingo-gr.cpp"
+#line 4612 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 318: /* expr_noeq: expr_noeq '<' expr_noeq  */
 #line 863 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4373 "engines/director/lingo/lingo-gr.cpp"
+#line 4618 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 319: /* expr_noeq: expr_noeq tNEQ expr_noeq  */
 #line 864 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4379 "engines/director/lingo/lingo-gr.cpp"
+#line 4624 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 320: /* expr_noeq: expr_noeq tGE expr_noeq  */
 #line 865 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4385 "engines/director/lingo/lingo-gr.cpp"
+#line 4630 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 321: /* expr_noeq: expr_noeq tLE expr_noeq  */
 #line 866 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4391 "engines/director/lingo/lingo-gr.cpp"
+#line 4636 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 322: /* expr_noeq: expr_noeq tAND expr_noeq  */
 #line 867 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4397 "engines/director/lingo/lingo-gr.cpp"
+#line 4642 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 323: /* expr_noeq: expr_noeq tOR expr_noeq  */
 #line 868 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4403 "engines/director/lingo/lingo-gr.cpp"
+#line 4648 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 324: /* expr_noeq: expr_noeq '&' expr_noeq  */
 #line 869 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4409 "engines/director/lingo/lingo-gr.cpp"
+#line 4654 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 325: /* expr_noeq: expr_noeq tCONCAT expr_noeq  */
 #line 870 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4415 "engines/director/lingo/lingo-gr.cpp"
+#line 4660 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 326: /* expr_noeq: expr_noeq tCONTAINS expr_noeq  */
 #line 871 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4421 "engines/director/lingo/lingo-gr.cpp"
+#line 4666 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 327: /* expr_noeq: expr_noeq tSTARTS expr_noeq  */
 #line 872 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4427 "engines/director/lingo/lingo-gr.cpp"
+#line 4672 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 328: /* sprite: tSPRITE expr tINTERSECTS simpleexpr  */
 #line 875 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.node) = new IntersectsNode((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4433 "engines/director/lingo/lingo-gr.cpp"
+#line 4678 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 329: /* sprite: tSPRITE expr tWITHIN simpleexpr  */
 #line 876 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.node) = new WithinNode((yyvsp[-2].node), (yyvsp[0].node)); }
-#line 4439 "engines/director/lingo/lingo-gr.cpp"
+#line 4684 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 330: /* exprlist: %empty  */
 #line 879 "engines/director/lingo/lingo-gr.y"
                                                                 { (yyval.nodelist) = new NodeList; }
-#line 4445 "engines/director/lingo/lingo-gr.cpp"
+#line 4690 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 332: /* nonemptyexprlist: expr  */
@@ -4449,7 +4695,7 @@ yyreduce:
 		NodeList *list = new NodeList;
 		list->push_back((yyvsp[0].node));
 		(yyval.nodelist) = list; }
-#line 4454 "engines/director/lingo/lingo-gr.cpp"
+#line 4699 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 333: /* nonemptyexprlist: nonemptyexprlist ',' expr  */
@@ -4457,11 +4703,11 @@ yyreduce:
                                                 {
 		(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
 		(yyval.nodelist) = (yyvsp[-2].nodelist); }
-#line 4462 "engines/director/lingo/lingo-gr.cpp"
+#line 4707 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 4466 "engines/director/lingo/lingo-gr.cpp"
+#line 4711 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index a27b595ab12..73a80b0b7a0 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -151,7 +151,7 @@ extern int yydebug;
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 union YYSTYPE
 {
-#line 119 "engines/director/lingo/lingo-gr.y"
+#line 118 "engines/director/lingo/lingo-gr.y"
 
 	Common::String *s;
 	int i;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 9d24f9e29bd..7696e648452 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -205,7 +205,7 @@ static void checkEnd(Common::String *token, Common::String *expect, bool require
 
 // TOP-LEVEL STUFF
 
-script: scriptpartlist					{ g_lingo->_compiler->_assemblyAST = new ScriptNode($scriptpartlist); } ;
+script: scriptpartlist					{ g_lingo->_compiler->_assemblyAST = new ScriptNode($scriptpartlist); $$ = nullptr; } ;
 
 scriptpartlist: scriptpart[item]				{
 		NodeList *list = new NodeList;




More information about the Scummvm-git-logs mailing list