[Scummvm-git-logs] scummvm master -> dcb0b57c7c5504a6fe77fabcd5d23c92aeb0f464

sev- sev at scummvm.org
Wed May 13 18:50:25 UTC 2020


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:
dcb0b57c7c DIRECTOR: LINGO: Simplify grammar and remove supposedly bogus macro defs


Commit: dcb0b57c7c5504a6fe77fabcd5d23c92aeb0f464
    https://github.com/scummvm/scummvm/commit/dcb0b57c7c5504a6fe77fabcd5d23c92aeb0f464
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-13T20:49:47+02:00

Commit Message:
DIRECTOR: LINGO: Simplify grammar and remove supposedly bogus macro defs

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 9bfcd02d03..34afe0c02b 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -75,6 +75,7 @@
 #include "common/hash-str.h"
 #include "common/rect.h"
 
+#include "director/director.h"
 #include "director/lingo/lingo.h"
 #include "director/lingo/lingo-code.h"
 #include "director/lingo/lingo-gr.h"
@@ -84,6 +85,11 @@ extern int yyparse();
 
 using namespace Director;
 void yyerror(const char *s) {
+	// Director parser till D3 was forgiving for any hanging parentheses
+	if (g_director->getVersion() < 4) {
+		//
+	}
+
 	g_lingo->_hadError = true;
 	warning("######################  LINGO: %s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
 }
@@ -98,7 +104,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 }
 
 
-#line 102 "engines/director/lingo/lingo-gr.cpp"
+#line 108 "engines/director/lingo/lingo-gr.cpp"
 
 # ifndef YY_CAST
 #  ifdef __cplusplus
@@ -236,7 +242,7 @@ extern int yydebug;
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 union YYSTYPE
 {
-#line 85 "engines/director/lingo/lingo-gr.y"
+#line 91 "engines/director/lingo/lingo-gr.y"
 
 	Common::String *s;
 	int i;
@@ -256,7 +262,7 @@ union YYSTYPE
 		Common::String *field;
 	} objectref;
 
-#line 260 "engines/director/lingo/lingo-gr.cpp"
+#line 266 "engines/director/lingo/lingo-gr.cpp"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -738,16 +744,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  129
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1771
+#define YYLAST   1657
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  104
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  51
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  173
+#define YYNRULES  172
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  379
+#define YYNSTATES  377
 
 #define YYMAXUTOK   343
 
@@ -804,24 +810,24 @@ static const yytype_int8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,   140,   140,   141,   142,   144,   145,   146,   148,   154,
-     158,   169,   170,   171,   177,   184,   190,   197,   203,   210,
-     221,   228,   229,   230,   232,   233,   234,   235,   237,   238,
-     243,   254,   271,   283,   294,   296,   301,   305,   310,   314,
-     324,   335,   336,   338,   345,   355,   366,   368,   374,   380,
-     387,   389,   391,   392,   393,   395,   401,   404,   407,   411,
-     415,   419,   427,   428,   430,   431,   432,   435,   438,   441,
-     444,   450,   455,   461,   462,   463,   464,   465,   466,   467,
-     468,   469,   470,   471,   472,   473,   474,   475,   476,   477,
-     478,   479,   480,   481,   482,   483,   485,   486,   487,   488,
-     489,   490,   491,   492,   494,   497,   499,   500,   501,   502,
-     503,   504,   504,   505,   505,   506,   507,   510,   513,   514,
-     516,   520,   525,   529,   534,   538,   550,   551,   552,   553,
-     557,   561,   566,   567,   569,   573,   577,   581,   581,   611,
-     611,   611,   618,   619,   619,   626,   636,   644,   644,   646,
-     647,   648,   649,   651,   652,   653,   655,   657,   665,   666,
-     667,   669,   670,   672,   674,   675,   676,   677,   679,   680,
-     682,   683,   685,   689
+       0,   146,   146,   147,   148,   150,   151,   152,   154,   160,
+     164,   175,   176,   177,   183,   190,   196,   203,   209,   216,
+     227,   234,   235,   236,   238,   239,   240,   241,   243,   244,
+     249,   260,   277,   289,   300,   302,   307,   311,   316,   320,
+     330,   341,   342,   344,   351,   361,   372,   374,   380,   386,
+     393,   395,   397,   398,   399,   401,   407,   410,   413,   417,
+     421,   425,   433,   434,   436,   437,   438,   441,   444,   447,
+     450,   456,   461,   467,   468,   469,   470,   471,   472,   473,
+     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
+     484,   485,   486,   487,   488,   489,   491,   492,   493,   494,
+     495,   496,   497,   498,   500,   503,   505,   506,   507,   508,
+     509,   510,   510,   511,   511,   512,   513,   516,   519,   520,
+     522,   526,   531,   535,   540,   544,   556,   557,   558,   559,
+     563,   567,   572,   573,   575,   579,   583,   587,   587,   617,
+     617,   617,   624,   625,   625,   632,   642,   650,   650,   652,
+     653,   654,   656,   657,   658,   660,   662,   670,   671,   672,
+     674,   675,   677,   679,   680,   681,   682,   684,   685,   687,
+     688,   690,   694
 };
 #endif
 
@@ -889,7 +895,7 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-283)
+#define YYPACT_NINF (-275)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -903,44 +909,44 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     339,   -48,  -283,  -283,    31,  -283,  1075,  1157,    31,     7,
-    1194,  -283,  -283,  -283,  -283,  -283,  -283,    22,  -283,   919,
-    -283,  -283,    26,  1038,    28,    92,    33,    70,  1276,   956,
-      86,  1276,  1276,  1276,  1276,  1276,  1276,  1276,  -283,  -283,
-    1276,  1276,  1276,   421,     9,  -283,  -283,  -283,  -283,  -283,
-    1276,     1,  1276,   755,  -283,  1663,  -283,  -283,  -283,  -283,
-    -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,    19,  1038,
-    1276,  1663,    30,  1276,    30,  -283,    31,  1276,  1663,    34,
-    1276,  -283,  -283,   102,  -283,  1276,  -283,   106,  -283,   413,
-    -283,   133,  -283,   134,   153,   136,  -283,    -3,    31,    31,
-      11,   109,   111,  -283,  1560,   413,  -283,  -283,    65,  -283,
-    1268,  1316,  1349,  1382,  1630,  1547,   140,   144,  -283,  -283,
-    1593,    74,    75,  -283,  1663,    72,    84,    97,  -283,  -283,
-     509,  1663,  -283,  -283,  1663,  -283,  -283,  1276,  1663,  -283,
-    -283,  1276,  1276,  1276,  1276,  1276,  1276,  1276,  1276,  1276,
-    1276,  1276,  1276,  1276,  1276,  1276,  1276,  1276,   173,  1276,
-     153,  1593,    -9,  1276,    16,  -283,    56,  1276,    30,   173,
-    -283,   100,  1663,  1276,  -283,  -283,    31,    44,  1276,  1276,
-    -283,  1276,  1276,    15,   154,  1276,  1276,  1276,  -283,  1276,
-    -283,   175,  1276,  1276,  1276,  1276,  1276,  1276,  1276,  1276,
-    1276,  1276,  -283,  -283,  -283,   103,  -283,  -283,    31,    31,
-    -283,  1276,    68,  -283,  -283,  1276,  1276,   151,  -283,  1663,
-       8,     8,     8,     8,  1676,  1676,  -283,   -54,     8,     8,
-       8,     8,   -54,   -62,   -62,  -283,  -283,  -283,   -82,  -283,
-    1663,  -283,  -283,  1663,   -76,   180,  1663,  -283,   164,  -283,
-    -283,  1663,  1663,  1663,     8,  1276,  1276,   182,  1663,     8,
-    1663,  1663,  -283,  1663,  1415,  1663,  1448,  1663,  1481,  1663,
-    1514,  1663,  1663,   837,  -283,   185,  -283,  -283,  1663,    74,
-      75,  -283,   673,  1663,  1663,  -283,   159,   113,   196,   113,
-    -283,   173,  1276,  1663,     8,    31,  1276,  1276,  1276,  1276,
-    -283,   673,  -283,  -283,  -283,   142,  -283,    21,   673,   837,
-     204,  -283,  -283,  -283,    -8,  1663,   177,  1663,  1663,  1663,
-    1663,  -283,   145,  -283,   673,   178,  1276,  -283,  -283,  -283,
-     591,   673,   113,  1276,  -283,   147,  1276,  1663,    71,   -25,
-     209,  -283,  1663,  -283,  1663,  -283,  -283,  -283,  -283,  1276,
-     150,  -283,  -283,  -283,   137,   673,  -283,   673,  -283,  1663,
-    -283,   837,   212,   673,   152,   673,   187,  -283,  -283,   165,
-    -283,   155,  -283,   167,  -283,  -283,   673,  -283,  -283
+     321,   -77,  -275,  -275,    31,  -275,   941,   978,    31,   -15,
+    1060,  -275,  -275,  -275,  -275,  -275,  -275,     4,  -275,   822,
+    -275,  -275,    10,   204,    -7,    92,    -2,    44,  1097,   859,
+      55,  1097,  1097,  1097,  1097,  1097,  1097,  1097,  -275,  -275,
+    1097,  1097,  1097,   406,    97,     9,  -275,  -275,  -275,  -275,
+    1097,   -26,  1097,   658,  -275,  1549,  -275,  -275,  -275,  -275,
+    -275,  -275,  -275,  -275,  -275,  -275,  -275,  -275,    15,   204,
+    1097,  1549,    26,  1097,    26,  -275,    31,  1097,  1549,    28,
+    1097,  -275,  -275,    77,  -275,  1097,  -275,    71,  -275,  1136,
+    -275,   104,  -275,   108,   398,   126,  -275,   -47,    31,    31,
+     -33,   100,   102,  -275,  1446,  1136,  -275,  -275,    56,  -275,
+    1169,  1202,  1235,  1268,  1516,  1433,   132,   133,  -275,  -275,
+    1479,    57,    59,  -275,  1549,    61,    64,    65,  -275,  -275,
+     321,  1549,  -275,  -275,  1549,  -275,  -275,  1097,  1549,  -275,
+    -275,  1097,  1097,  1097,  1097,  1097,  1097,  1097,  1097,  1097,
+    1097,  1097,  1097,  1097,  1097,  1097,  1097,  1097,   140,  1097,
+     398,  1479,    16,  1097,    20,  -275,    22,  1097,    26,   140,
+    -275,    69,  1549,  1097,  -275,  -275,    31,    17,  1097,  1097,
+    -275,  1097,  1097,   -14,   122,  1097,  1097,  1097,  -275,  1097,
+    -275,   148,  1097,  1097,  1097,  1097,  1097,  1097,  1097,  1097,
+    1097,  1097,  -275,  -275,  -275,    78,  -275,  -275,    31,    31,
+    -275,  1097,    85,  -275,  -275,  1097,  1097,   124,  -275,  1549,
+       7,     7,     7,     7,  1562,  1562,  -275,    -4,     7,     7,
+       7,     7,    -4,    13,    13,  -275,  -275,  -275,   -35,  -275,
+    1549,  -275,  -275,  1549,   -28,   158,  1549,  -275,   142,  -275,
+    -275,  1549,  1549,  1549,     7,  1097,  1097,   170,  1549,     7,
+    1549,  1549,  -275,  1549,  1301,  1549,  1334,  1549,  1367,  1549,
+    1400,  1549,  1549,   740,  -275,   171,  -275,  -275,  1549,    57,
+      59,  -275,   576,  1549,  1549,  -275,   145,  -275,   173,  -275,
+    -275,   140,  1097,  1549,     7,    31,  1097,  1097,  1097,  1097,
+    -275,   576,  -275,  -275,  -275,   113,  -275,   -16,   576,   740,
+    -275,  -275,  -275,   -24,  1549,   147,  1549,  1549,  1549,  1549,
+    -275,   114,  -275,   576,   149,  1097,  -275,  -275,   494,   576,
+    -275,  1097,  -275,   117,  1097,  1549,    87,   -27,   180,  -275,
+    1549,  -275,  1549,  -275,  -275,  -275,  -275,  1097,   121,  -275,
+    -275,  -275,   111,   576,  -275,   576,  -275,  1549,  -275,   740,
+     182,   576,   125,   576,   160,  -275,  -275,   129,  -275,   131,
+    -275,   134,  -275,  -275,   576,  -275,  -275
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -948,65 +954,65 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    56,    61,     0,    57,   158,   158,     0,     0,
+       0,     0,    56,    61,     0,    57,   157,   157,     0,     0,
       60,    59,    58,   137,   143,    71,    72,   110,   111,     0,
       48,   139,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,   113,   147,
-       0,     0,     0,   164,     0,     3,    73,    28,     7,    29,
+       0,     0,     0,   163,     0,     2,    73,    28,     7,    29,
        0,     0,     0,     0,    64,    22,   105,    65,    23,   107,
-     108,     6,    50,    21,    63,     4,    60,    70,    60,     0,
-     158,   159,   117,   158,    67,   104,     0,   158,   161,   157,
-     158,    50,   109,     0,   126,     0,   127,     0,   128,   129,
+     108,     6,    50,    21,    63,     3,    60,    70,    60,     0,
+     157,   158,   117,   157,    67,   104,     0,   157,   160,   156,
+     157,    50,   109,     0,   126,     0,   127,     0,   128,   129,
      131,     0,    34,     0,   106,     0,    46,     0,     0,     0,
        0,     0,     0,   142,   119,   134,   136,   124,   115,    87,
        0,     0,     0,     0,     0,     0,     0,     0,    92,    93,
-       0,    59,    58,   165,   168,     0,   166,   167,   170,     1,
-       5,    51,    50,    50,    51,    51,    27,     0,    25,    26,
+       0,    59,    58,   164,   167,     0,   165,   166,   169,     1,
+       0,    51,    50,    50,    51,    51,    27,     0,    25,    26,
       24,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   149,   158,
-       0,   159,     0,     0,     0,    69,     0,     0,   138,   149,
+       0,     0,     0,     0,     0,     0,     0,     0,   149,   157,
+       0,   158,     0,     0,     0,    69,     0,     0,   138,   149,
      120,   112,   133,     0,   130,   140,     0,     0,     0,     0,
       47,     0,     0,     0,     0,     0,     0,     0,    55,     0,
      135,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    38,    38,   122,   114,   148,    62,     0,     0,
-     163,     0,     0,     2,    52,     0,     0,     0,    35,    51,
+     162,     0,     0,     4,    52,     0,     0,     0,    35,    51,
       83,    84,    81,    82,    85,    86,    78,    89,    90,    91,
       80,    79,    88,    74,    75,    76,    77,   150,     0,   116,
-     160,    66,    68,   162,     0,     0,   132,    50,     0,     8,
+     159,    66,    68,   161,     0,     0,   132,    50,     0,     8,
        9,    11,    12,    16,    14,     0,     0,     0,    15,    13,
       20,   118,   125,    96,     0,    98,     0,   100,     0,   102,
-       0,    94,    95,     0,    52,     0,   173,   172,   169,     0,
-       0,   171,    51,    51,    51,    52,     0,   156,     0,   156,
+       0,    94,    95,     0,    52,     0,   172,   171,   168,     0,
+       0,   170,    51,    51,    51,    52,     0,   155,     0,   155,
      121,   149,     0,    17,    18,     0,     0,     0,     0,     0,
       51,    51,   123,    53,    54,     0,    52,     0,    51,     0,
-       0,    52,   151,    52,     0,    10,     0,    97,    99,   101,
-     103,    37,     0,    30,    51,     0,     0,    41,    51,   152,
-     146,   144,   156,     0,    36,     0,     0,    51,    51,     0,
-     153,    52,    19,    33,    51,    52,    50,    49,    42,     0,
-       0,    50,    45,   154,   145,   141,    52,    51,    52,    51,
-      39,     0,     0,    51,     0,    51,     0,    51,   155,     0,
-      31,     0,    52,     0,    32,    40,    51,    44,    43
+      52,   151,    52,     0,    10,     0,    97,    99,   101,   103,
+      37,     0,    30,    51,     0,     0,    41,    51,   146,   144,
+     155,     0,    36,     0,     0,    51,    51,     0,   152,    52,
+      19,    33,    51,    52,    50,    49,    42,     0,     0,    50,
+      45,   153,   145,   141,    52,    51,    52,    51,    39,     0,
+       0,    51,     0,    51,     0,    51,   154,     0,    31,     0,
+      52,     0,    32,    40,    51,    44,    43
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -283,  -283,   121,  -283,  -267,  -283,     3,    51,  -283,  -283,
-    -283,  -283,  -283,  -283,   202,  -283,   -79,   -21,  -187,  -283,
-       6,    -6,  -283,    79,   205,  -283,  -283,  -283,  -283,  -283,
-    -283,   -17,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,
-    -164,  -283,  -282,   206,    13,  -283,  -283,  -283,  -283,  -283,
-      45
+    -275,    89,  -275,  -275,  -267,  -275,     3,    23,  -275,  -275,
+    -275,  -275,  -275,  -275,   179,  -275,   -79,   -48,    82,  -275,
+       6,    -6,  -275,    46,   186,  -275,  -275,  -275,  -275,  -275,
+    -275,   -21,  -275,  -275,  -275,  -275,  -275,  -275,  -275,  -275,
+    -164,  -275,  -274,   187,     5,  -275,  -275,  -275,  -275,  -275,
+      29
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    44,    45,    46,    47,   135,   304,   273,    49,   338,
-     348,   136,    50,    51,    52,   349,   158,   214,   282,    53,
+      -1,    44,    45,    46,    47,   135,   304,   273,    49,   336,
+     346,   136,    50,    51,    52,   347,   158,   214,   282,    53,
       54,    55,    56,    57,    58,    83,   116,   171,   205,   108,
       59,    90,    60,    80,    61,    91,   247,    81,    62,   117,
-     238,   354,   311,    63,   166,    79,    64,   125,   126,   127,
+     238,   352,   310,    63,   166,    79,    64,   125,   126,   127,
      128
 };
 
@@ -1015,326 +1021,296 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      71,    71,   169,    48,    78,   244,   300,   313,   147,   129,
-      67,   351,   106,    89,    75,   287,   147,    94,   288,    72,
-      74,   289,   104,   105,   288,   109,   110,   111,   112,   113,
-     114,   115,   156,   157,   118,   119,   120,   124,   154,   155,
-     156,   157,   328,   132,   131,     2,   134,   138,     3,    65,
-     341,   181,     5,   215,   216,    76,   325,    66,    11,   102,
-      12,   352,   182,   160,   161,   185,   133,   161,     8,   255,
-     249,   161,   174,    82,    71,   326,   186,    92,   147,   172,
-     256,   148,   165,   162,    95,    96,   164,   301,   190,   332,
-     239,   163,   288,   168,   367,   279,   103,   280,   308,   153,
-     154,   155,   156,   157,   183,   184,   130,   346,   347,    97,
-      98,    99,   107,   217,   218,   241,   163,   159,   100,   324,
-      32,    33,    34,    35,   330,   101,   331,   314,   170,    42,
-     163,   219,    43,    48,   167,   220,   221,   222,   223,   224,
+      71,    71,   169,    48,    78,   244,   300,   181,   106,   349,
+      67,    72,    74,    89,    75,   312,   132,    94,   182,   324,
+      65,   185,   104,   105,   102,   109,   110,   111,   112,   113,
+     114,   115,   186,    76,   118,   119,   120,   124,   325,   133,
+     255,     8,   327,   249,   131,     2,   134,   138,     3,    95,
+      96,   256,     5,   215,   216,    82,   339,    66,    11,   350,
+      12,    92,   287,   160,   161,   288,   147,   161,   174,   289,
+     103,   161,   288,   330,    71,   162,   288,   147,   164,   172,
+     148,   107,   165,   147,   190,   168,   217,   218,   154,   155,
+     156,   157,   365,    32,    33,    34,    35,   129,   153,   154,
+     155,   156,   157,   170,   183,   184,   130,   156,   157,    97,
+      98,    99,   279,   159,   280,   239,   163,   173,   100,   241,
+     163,   242,   163,   344,   345,   101,   163,   313,   167,    42,
+     175,   219,    43,    48,   176,   220,   221,   222,   223,   224,
      225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     235,   236,   173,    71,   355,   242,   163,   240,   357,   175,
-     176,   243,   180,   187,   188,   191,   204,   246,   291,   363,
-     206,   365,   251,   252,   210,   253,   254,   208,   209,   258,
-     259,   260,   248,   261,   211,   376,   263,   264,   265,   266,
-     267,   268,   269,   270,   271,   272,   177,   212,   286,   237,
-     245,   262,   257,   275,   285,   278,   290,   292,   295,   283,
-     284,   302,   309,   310,   276,   277,   141,   142,   143,   144,
-     145,   146,   312,   147,   178,   179,   148,   149,   150,   323,
-     329,   333,   336,   334,   343,   353,   360,   362,   368,   370,
-     372,   375,   151,   152,   153,   154,   155,   156,   157,   293,
-     294,   213,   374,   377,   274,   137,   250,   281,   139,   140,
-       0,   305,   306,   307,     0,     0,     0,   358,     0,     0,
-       0,     0,   361,     0,     0,     0,     0,     0,     0,   321,
-     322,     0,     0,     0,     0,     0,   315,   327,     0,     0,
-     317,   318,   319,   320,     0,     0,     0,     0,     0,     0,
-       0,   316,     0,   335,     0,     0,     0,   339,     0,     0,
-       0,     0,     0,     0,     0,     0,   345,   350,     0,     0,
-     337,     0,     0,   356,     0,     0,     0,   342,     0,     0,
-     344,     0,     0,     0,     0,     0,   364,     0,   366,    -5,
-       1,     0,   369,   359,   371,     0,   373,     0,     0,     0,
-       0,     0,     0,     2,     0,   378,     3,     4,     0,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
-      13,    14,    15,    16,     0,     0,     0,    17,    18,    19,
-      20,     0,     0,     0,    21,     0,    22,     0,     0,    23,
-      24,    25,     0,     0,    26,     0,     0,     0,    27,    28,
-      29,    30,     0,     0,     0,     0,     0,     0,    31,     0,
-       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
-       0,     0,    37,    38,    39,     0,     0,     0,     0,     0,
-       0,    40,    41,     0,     0,     2,    -5,    42,     3,     4,
-      43,     0,     5,     0,     7,     8,     9,    68,   121,     0,
-     122,     0,     0,     0,    15,    16,     0,     0,     0,    85,
-       0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    69,     0,    25,     0,     0,   141,   142,   143,   144,
-     145,   146,     0,   147,     0,     0,   148,   149,   150,     0,
-      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
-      35,    36,   151,   152,   153,   154,   155,   156,   157,     0,
-       0,     0,     0,    40,    41,     0,     0,     0,     0,    42,
-       0,     0,    43,     2,   123,     0,     3,     4,     0,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
-      13,    14,    15,    16,     0,     0,     0,    17,    18,    19,
-      20,     0,     0,     0,    21,     0,    22,     0,     0,    23,
-      24,    25,     0,     0,    26,     0,     0,     0,    27,    28,
-      29,    30,     0,     0,     0,     0,     0,     0,    31,     0,
-       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
-       0,     0,    37,    38,    39,     0,     0,     0,     0,     0,
-       0,    40,    41,     0,     0,     2,     0,    42,     3,     4,
-      43,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-      12,   340,    13,     0,    15,    16,     0,     0,     0,    17,
-      18,    19,    20,     0,     0,     0,     0,     0,    22,     0,
+     235,   236,   180,    71,   187,   188,   191,   240,   204,   206,
+     208,   243,   209,   210,   211,   212,   237,   246,   291,   245,
+     257,   286,   251,   252,   262,   253,   254,   285,   275,   258,
+     259,   260,   248,   261,   290,   292,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   295,   302,   309,   311,
+     322,   331,   332,   334,   341,   278,   351,   358,   366,   283,
+     284,   360,   368,   370,   276,   277,   372,   373,     2,   213,
+     375,     3,     4,   250,    93,     5,   274,     7,     8,     9,
+      68,    11,   137,    12,   305,   306,   307,    15,    16,   139,
+     140,   281,     0,     0,     0,     0,     0,     0,     0,   293,
+     294,     0,   320,   321,    69,     0,    25,     0,     0,     0,
+     326,     0,     0,     0,     0,   356,     0,     0,     0,     0,
+     359,     0,     0,    31,     0,   333,     0,     0,     0,   337,
+      32,    33,    34,    35,    36,     0,   314,   343,   348,     0,
+     316,   317,   318,   319,   354,     0,    40,    41,     0,     0,
+       0,   315,    42,     0,     0,    43,     0,   362,     0,   364,
+       0,     0,     0,   367,     0,   369,     0,   371,     0,   335,
+       0,    -5,     1,     0,     0,   340,   376,     0,   342,     0,
+       0,     0,     0,     0,     0,     2,     0,     0,     3,     4,
+       0,   357,     5,     6,     7,     8,     9,    10,    11,     0,
+      12,     0,    13,    14,    15,    16,   301,     0,     0,    17,
+      18,    19,    20,     0,     0,     0,    21,   308,    22,     0,
        0,    23,    24,    25,     0,     0,    26,     0,     0,     0,
-       0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
-      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
-      35,    36,     0,     0,    37,    38,     0,     0,     0,     0,
-       0,     0,     0,    40,    41,     0,     0,     2,   303,    42,
-       3,     4,    43,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,    12,     0,    13,     0,    15,    16,     0,     0,
-       0,    17,    18,    19,    20,     0,     0,     0,     0,     0,
-      22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
-       0,     0,     0,    28,    29,    30,     0,     0,     0,     0,
-       0,     0,    31,     0,     0,     0,     0,     0,     0,    32,
-      33,    34,    35,    36,     0,     0,    37,    38,     0,     0,
-       0,     0,     0,     0,     0,    40,    41,     0,     0,     2,
-     303,    42,     3,     4,    43,     0,     5,     6,     7,     8,
-       9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
-       0,     0,     0,    17,    18,    19,    20,     0,     0,     0,
-       0,     0,     0,     0,     0,    23,     0,    25,     0,     0,
-       0,     0,     0,     0,     0,    28,    29,    30,     0,     0,
-       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
-       0,    32,    33,    34,    35,    36,     0,     0,     0,    38,
-       0,     0,     0,     0,     0,     0,     0,    40,    41,     0,
-       0,     2,     0,    42,     3,     4,    43,     0,     5,     6,
-       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
-      15,    16,     0,     0,     0,    17,    18,    19,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    23,     0,    25,
-       0,     0,     0,     0,     0,     0,     0,    28,    29,    30,
-       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
-       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
-       0,    38,     0,     0,     0,     0,     0,     0,     0,    40,
-      41,     0,     0,     2,     0,    42,     3,     4,    43,     0,
+      27,    28,    29,    30,     0,     0,     0,     0,   323,     0,
+      31,     0,   328,     0,   329,     0,     0,    32,    33,    34,
+      35,    36,     0,     0,    37,    38,    39,     0,     0,     0,
+       0,     0,     0,    40,    41,     0,     0,     0,    -5,    42,
+       2,   353,    43,     3,     4,   355,     0,     5,     0,     7,
+       8,     9,    68,   121,     0,   122,   361,     0,   363,    15,
+      16,   177,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   374,     0,     0,     0,    69,     0,    25,     0,
+       0,   141,   142,   143,   144,   145,   146,     0,   147,   178,
+     179,   148,   149,   150,     0,    31,     0,     0,     0,     0,
+       0,     0,    32,    33,    34,    35,    36,   151,   152,   153,
+     154,   155,   156,   157,     0,     0,     0,     0,    40,    41,
+       0,     0,     0,     0,    42,     0,     0,    43,     2,   123,
+       0,     3,     4,     0,     0,     5,     6,     7,     8,     9,
+      10,    11,     0,    12,   338,    13,     0,    15,    16,     0,
+       0,     0,    17,    18,    19,    20,     0,     0,     0,     0,
+       0,    22,     0,     0,    23,    24,    25,     0,     0,    26,
+       0,     0,     0,     0,    28,    29,    30,     0,     0,     0,
+       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
+      32,    33,    34,    35,    36,     0,     0,    37,    38,     0,
+       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
+       2,   303,    42,     3,     4,    43,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,    12,     0,    13,     0,    15,
+      16,     0,     0,     0,    17,    18,    19,    20,     0,     0,
+       0,     0,     0,    22,     0,     0,    23,    24,    25,     0,
+       0,    26,     0,     0,     0,     0,    28,    29,    30,     0,
+       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
+       0,     0,    32,    33,    34,    35,    36,     0,     0,    37,
+      38,     0,     0,     0,     0,     0,     0,     0,    40,    41,
+       0,     0,     2,   303,    42,     3,     4,    43,     0,     5,
+       6,     7,     8,     9,    10,    11,     0,    12,     0,    13,
+       0,    15,    16,     0,     0,     0,    17,    18,    19,    20,
+       0,     0,     0,     0,     0,     0,     0,     0,    23,     0,
+      25,     0,     0,     0,     0,     0,     0,     0,    28,    29,
+      30,     0,     0,     0,     0,     0,     0,    31,     0,     0,
+       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
+       0,     0,    38,     0,     0,     0,     0,     0,     0,     0,
+      40,    41,     0,     0,     2,     0,    42,     3,     4,    43,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,    12,
+       0,    13,     0,    15,    16,     0,     0,     0,    17,    18,
+      19,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      23,     0,    25,     0,     0,     0,     0,     0,     0,     0,
+      28,    29,    30,     0,     0,     0,     0,     0,     0,    31,
+       0,     0,     0,     0,     0,     0,    32,    33,    34,    35,
+      36,     0,     0,     0,    38,     0,     0,     0,     0,     0,
+       0,     0,    40,    41,     0,     0,     2,     0,    42,     3,
+       4,    43,     0,     5,     0,     7,     8,     9,    68,    11,
+       0,    12,     0,     0,     0,    15,    16,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    84,     0,    85,    86,
+      87,    88,    69,     2,    25,     0,     3,     4,     0,     0,
        5,     0,     7,     8,     9,    68,    11,     0,    12,     0,
-       0,     0,    15,    16,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    84,     0,    85,    86,    87,    88,    69,
-       2,    25,     0,     3,     4,     0,     0,     5,     0,     7,
-       8,     9,    68,    11,     0,    12,     0,     0,    31,    15,
-      16,     0,     0,     0,     0,    32,    33,    34,    35,    36,
-       0,     0,    85,     0,    87,     0,    69,     0,    25,     0,
-       0,    40,    41,     0,     0,     0,     0,    42,     0,     0,
-      43,     0,     0,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,    32,    33,    34,    35,    36,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    40,    41,
-       0,     0,     2,     0,    42,     3,     4,    43,    93,     5,
+       0,    31,    15,    16,     0,     0,     0,     0,    32,    33,
+      34,    35,    36,     0,     0,    85,     0,    87,     0,    69,
+       0,    25,     0,     0,    40,    41,     0,     0,     0,     0,
+      42,     0,     0,    43,     0,     0,     0,     0,    31,     0,
+       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    40,    41,     0,     0,     2,     0,    42,     3,     4,
+      43,     0,     5,     0,     7,     8,     9,    68,    11,     0,
+      12,     0,     0,     0,    15,    16,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    69,     2,    25,     0,     3,     4,     0,     0,     5,
        0,     7,     8,     9,    68,    11,     0,    12,     0,     0,
-       0,    15,    16,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    69,     2,
-      25,     0,     3,     4,     0,     0,     5,     0,     7,     8,
-       9,    68,    11,     0,    12,     0,     0,    31,    15,    16,
+      31,    15,    16,     0,     0,     0,     0,    32,    33,    34,
+      35,    36,     0,     0,     0,     0,     0,     0,    69,     0,
+      25,     0,     0,    40,    41,     0,     0,     0,     0,    70,
+       0,     0,    43,     0,     0,     0,     0,    31,     0,     0,
        0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,     0,     0,     0,     0,    69,     0,    25,     0,     0,
-      40,    41,     0,     0,     0,     0,    42,     0,     0,    43,
-       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
-       0,    32,    33,    34,    35,    36,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    40,    41,     0,
-       0,     2,     0,    70,     3,     4,    43,     0,     5,     0,
-       7,     8,     9,    68,    11,     0,    12,     0,     0,     0,
-      15,    16,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    69,     2,    25,
-       0,     3,     4,     0,     0,     5,     0,     7,     8,     9,
-      68,    11,     0,    12,     0,     0,    31,    15,    16,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      40,    41,     0,     0,     2,     0,    73,     3,     4,    43,
+       0,     5,     0,     7,     8,     9,    68,    11,     0,    12,
+       0,     0,     0,    15,    16,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      69,     2,    25,     0,     3,     4,     0,     0,     5,     0,
+       7,     8,     9,    68,    11,     0,    12,     0,     0,    31,
+      15,    16,     0,     0,     0,     0,    32,    33,    34,    35,
+      36,     0,     0,     0,     0,     0,     0,    69,     0,    25,
+       0,     0,    40,    41,     0,     0,     0,     0,    77,     0,
+       0,    43,     0,     0,     0,     0,    31,     0,     0,     0,
        0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
-       0,     0,     0,     0,    69,     0,    25,     0,     0,    40,
-      41,     0,     0,     0,     0,    73,     0,     0,    43,     0,
-       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
-      32,    33,    34,    35,    36,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
-       2,     0,    77,     3,     4,    43,     0,     5,     0,     7,
-       8,     9,    68,    11,     0,    12,     0,     0,     0,    15,
-      16,     0,     0,     0,     0,     0,   192,     0,     0,     0,
-       0,     0,   193,     0,     0,     0,    69,     0,    25,     0,
-       0,   141,   142,   143,   144,   145,   146,     0,   147,     0,
-       0,   148,   149,   150,     0,    31,     0,     0,     0,     0,
-       0,     0,    32,    33,    34,    35,    36,   151,   152,   153,
-     154,   155,   156,   157,   194,     0,     0,     0,    40,    41,
-     195,     0,     0,     0,    42,     0,     0,    43,     0,   141,
+       0,     0,    85,     0,    87,     0,     0,     0,     0,    40,
+      41,     0,     0,     0,     0,    42,     0,     0,    43,   141,
      142,   143,   144,   145,   146,     0,   147,     0,     0,   148,
-     149,   150,     0,     0,     0,     0,     0,   196,     0,     0,
-       0,     0,     0,   197,     0,   151,   152,   153,   154,   155,
+     149,   150,     0,     0,     0,     0,     0,   192,     0,     0,
+       0,     0,     0,   193,     0,   151,   152,   153,   154,   155,
      156,   157,   141,   142,   143,   144,   145,   146,     0,   147,
        0,     0,   148,   149,   150,     0,     0,     0,     0,     0,
-     198,     0,     0,     0,     0,     0,   199,     0,   151,   152,
+     194,     0,     0,     0,     0,     0,   195,     0,   151,   152,
      153,   154,   155,   156,   157,   141,   142,   143,   144,   145,
      146,     0,   147,     0,     0,   148,   149,   150,     0,     0,
-       0,     0,     0,   296,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   196,     0,     0,     0,     0,     0,   197,
        0,   151,   152,   153,   154,   155,   156,   157,   141,   142,
      143,   144,   145,   146,     0,   147,     0,     0,   148,   149,
-     150,     0,     0,     0,     0,     0,   297,     0,     0,     0,
-       0,     0,     0,     0,   151,   152,   153,   154,   155,   156,
+     150,     0,     0,     0,     0,     0,   198,     0,     0,     0,
+       0,     0,   199,     0,   151,   152,   153,   154,   155,   156,
      157,   141,   142,   143,   144,   145,   146,     0,   147,     0,
-       0,   148,   149,   150,     0,     0,     0,     0,     0,   298,
+       0,   148,   149,   150,     0,     0,     0,     0,     0,   296,
        0,     0,     0,     0,     0,     0,     0,   151,   152,   153,
      154,   155,   156,   157,   141,   142,   143,   144,   145,   146,
        0,   147,     0,     0,   148,   149,   150,     0,     0,     0,
-       0,     0,   299,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   297,     0,     0,     0,     0,     0,     0,     0,
      151,   152,   153,   154,   155,   156,   157,   141,   142,   143,
      144,   145,   146,     0,   147,     0,     0,   148,   149,   150,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   202,     0,   151,   152,   153,   154,   155,   156,   157,
-     141,   142,   143,   144,   145,   146,   189,   147,     0,     0,
-     148,   149,   150,   141,   142,   143,   144,   145,   146,     0,
-     147,     0,     0,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,     0,   203,     0,     0,     0,     0,   151,
-     152,   153,   154,   155,   156,   157,   141,   142,   143,   144,
-     145,   146,     0,   147,     0,     0,   148,   149,   150,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   151,   152,   153,   154,   155,   156,   157,     0,
-       0,     0,   207,   141,   142,   143,   144,   145,   146,     0,
+       0,     0,     0,     0,     0,   298,     0,     0,     0,     0,
+       0,     0,     0,   151,   152,   153,   154,   155,   156,   157,
+     141,   142,   143,   144,   145,   146,     0,   147,     0,     0,
+     148,   149,   150,     0,     0,     0,     0,     0,   299,     0,
+       0,     0,     0,     0,     0,     0,   151,   152,   153,   154,
+     155,   156,   157,   141,   142,   143,   144,   145,   146,     0,
      147,     0,     0,   148,   149,   150,     0,     0,     0,     0,
-       0,   200,   201,     0,     0,     0,     0,     0,     0,   151,
+       0,     0,     0,     0,     0,     0,     0,   202,     0,   151,
      152,   153,   154,   155,   156,   157,   141,   142,   143,   144,
-     145,   146,     0,   147,     0,     0,   148,   149,   150,   141,
-     142,   143,   144,     0,     0,     0,   147,     0,     0,   148,
+     145,   146,   189,   147,     0,     0,   148,   149,   150,   141,
+     142,   143,   144,   145,   146,     0,   147,     0,     0,   148,
      149,   150,   151,   152,   153,   154,   155,   156,   157,     0,
+     203,     0,     0,     0,     0,   151,   152,   153,   154,   155,
+     156,   157,   141,   142,   143,   144,   145,   146,     0,   147,
+       0,     0,   148,   149,   150,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   151,   152,
+     153,   154,   155,   156,   157,     0,     0,     0,   207,   141,
+     142,   143,   144,   145,   146,     0,   147,     0,     0,   148,
+     149,   150,     0,     0,     0,     0,     0,   200,   201,     0,
        0,     0,     0,     0,     0,   151,   152,   153,   154,   155,
-     156,   157
+     156,   157,   141,   142,   143,   144,   145,   146,     0,   147,
+       0,     0,   148,   149,   150,   141,   142,   143,   144,     0,
+       0,     0,   147,     0,     0,   148,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,     0,     0,     0,     0,     0,
+       0,   151,   152,   153,   154,   155,   156,   157
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,    81,     0,    10,   169,   273,   289,    70,     0,
-       4,    36,    29,    19,     8,    97,    70,    23,   100,     6,
-       7,    97,    28,    29,   100,    31,    32,    33,    34,    35,
-      36,    37,    94,    95,    40,    41,    42,    43,    92,    93,
-      94,    95,   309,    42,    50,    14,    52,    53,    17,    97,
-     332,    54,    21,   132,   133,    48,    35,    26,    27,    26,
-      29,    86,    65,    69,    70,    54,    65,    73,    24,    54,
-      26,    77,    89,    51,    80,    54,    65,    51,    70,    85,
-      65,    73,    76,    70,    56,    57,    73,   274,   105,    97,
-      99,   100,   100,    80,   361,    27,    26,    29,   285,    91,
-      92,    93,    94,    95,    98,    99,    97,    36,    37,    17,
-      18,    19,    26,   134,   135,    99,   100,    98,    26,   306,
-      76,    77,    78,    79,   311,    33,   313,   291,    26,    98,
-     100,   137,   101,   130,   100,   141,   142,   143,   144,   145,
+       6,     7,    81,     0,    10,   169,   273,    54,    29,    36,
+       4,     6,     7,    19,     8,   289,    42,    23,    65,    35,
+      97,    54,    28,    29,    26,    31,    32,    33,    34,    35,
+      36,    37,    65,    48,    40,    41,    42,    43,    54,    65,
+      54,    24,   309,    26,    50,    14,    52,    53,    17,    56,
+      57,    65,    21,   132,   133,    51,   330,    26,    27,    86,
+      29,    51,    97,    69,    70,   100,    70,    73,    89,    97,
+      26,    77,   100,    97,    80,    70,   100,    70,    73,    85,
+      73,    26,    76,    70,   105,    80,   134,   135,    92,    93,
+      94,    95,   359,    76,    77,    78,    79,     0,    91,    92,
+      93,    94,    95,    26,    98,    99,    97,    94,    95,    17,
+      18,    19,    27,    98,    29,    99,   100,    46,    26,    99,
+     100,    99,   100,    36,    37,    33,   100,   291,   100,    98,
+      26,   137,   101,   130,    26,   141,   142,   143,   144,   145,
      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-     156,   157,    46,   159,   341,    99,   100,   163,   345,    26,
-      26,   167,    26,    54,    53,   100,    26,   173,   247,   356,
-      26,   358,   178,   179,   102,   181,   182,   103,   103,   185,
-     186,   187,   176,   189,   100,   372,   192,   193,   194,   195,
-     196,   197,   198,   199,   200,   201,    43,   100,   219,    26,
-     100,    26,    48,   100,    53,   211,    26,    43,    26,   215,
-     216,    26,    53,   100,   208,   209,    63,    64,    65,    66,
-      67,    68,    26,    70,    71,    72,    73,    74,    75,    87,
-      26,    54,    54,    88,    87,    26,    86,   100,    26,    87,
-      53,    86,    89,    90,    91,    92,    93,    94,    95,   255,
-     256,   130,    87,    86,   203,    53,   177,   212,    53,    53,
-      -1,   282,   283,   284,    -1,    -1,    -1,   346,    -1,    -1,
-      -1,    -1,   351,    -1,    -1,    -1,    -1,    -1,    -1,   300,
-     301,    -1,    -1,    -1,    -1,    -1,   292,   308,    -1,    -1,
-     296,   297,   298,   299,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   295,    -1,   324,    -1,    -1,    -1,   328,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   337,   338,    -1,    -1,
-     326,    -1,    -1,   344,    -1,    -1,    -1,   333,    -1,    -1,
-     336,    -1,    -1,    -1,    -1,    -1,   357,    -1,   359,     0,
-       1,    -1,   363,   349,   365,    -1,   367,    -1,    -1,    -1,
-      -1,    -1,    -1,    14,    -1,   376,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      31,    32,    33,    34,    -1,    -1,    -1,    38,    39,    40,
-      41,    -1,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,
-      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,
-      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    83,    84,    85,    -1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    -1,    -1,    14,    97,    98,    17,    18,
-     101,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,    46,
-      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    50,    -1,    52,    -1,    -1,    63,    64,    65,    66,
-      67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    89,    90,    91,    92,    93,    94,    95,    -1,
-      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
-      -1,    -1,   101,    14,   103,    -1,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      31,    32,    33,    34,    -1,    -1,    -1,    38,    39,    40,
-      41,    -1,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,
-      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,
-      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    83,    84,    85,    -1,    -1,    -1,    -1,    -1,
-      -1,    92,    93,    -1,    -1,    14,    -1,    98,    17,    18,
-     101,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
-      29,    30,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
-      39,    40,    41,    -1,    -1,    -1,    -1,    -1,    47,    -1,
+     156,   157,    26,   159,    54,    53,   100,   163,    26,    26,
+     103,   167,   103,   102,   100,   100,    26,   173,   247,   100,
+      48,   219,   178,   179,    26,   181,   182,    53,   100,   185,
+     186,   187,   176,   189,    26,    43,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,    26,    26,    53,    26,
+      87,    54,    88,    54,    87,   211,    26,    86,    26,   215,
+     216,   100,    87,    53,   208,   209,    87,    86,    14,   130,
+      86,    17,    18,   177,    20,    21,   203,    23,    24,    25,
+      26,    27,    53,    29,   282,   283,   284,    33,    34,    53,
+      53,   212,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   255,
+     256,    -1,   300,   301,    50,    -1,    52,    -1,    -1,    -1,
+     308,    -1,    -1,    -1,    -1,   344,    -1,    -1,    -1,    -1,
+     349,    -1,    -1,    69,    -1,   323,    -1,    -1,    -1,   327,
+      76,    77,    78,    79,    80,    -1,   292,   335,   336,    -1,
+     296,   297,   298,   299,   342,    -1,    92,    93,    -1,    -1,
+      -1,   295,    98,    -1,    -1,   101,    -1,   355,    -1,   357,
+      -1,    -1,    -1,   361,    -1,   363,    -1,   365,    -1,   325,
+      -1,     0,     1,    -1,    -1,   331,   374,    -1,   334,    -1,
+      -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
+      -1,   347,    21,    22,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    31,    32,    33,    34,   274,    -1,    -1,    38,
+      39,    40,    41,    -1,    -1,    -1,    45,   285,    47,    -1,
       -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
-      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
-      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
-      79,    80,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    -1,    -1,    14,    97,    98,
-      17,    18,   101,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
-      -1,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
-      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
-      -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
-      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
-      77,    78,    79,    80,    -1,    -1,    83,    84,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    14,
-      97,    98,    17,    18,   101,    -1,    21,    22,    23,    24,
-      25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
-      -1,    -1,    -1,    38,    39,    40,    41,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
-      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    78,    79,    80,    -1,    -1,    -1,    84,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
-      -1,    14,    -1,    98,    17,    18,   101,    -1,    21,    22,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
-      33,    34,    -1,    -1,    -1,    38,    39,    40,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    62,
-      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-      -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,
+      59,    60,    61,    62,    -1,    -1,    -1,    -1,   306,    -1,
+      69,    -1,   310,    -1,   312,    -1,    -1,    76,    77,    78,
+      79,    80,    -1,    -1,    83,    84,    85,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    97,    98,
+      14,   339,   101,    17,    18,   343,    -1,    21,    -1,    23,
+      24,    25,    26,    27,    -1,    29,   354,    -1,   356,    33,
+      34,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   370,    -1,    -1,    -1,    50,    -1,    52,    -1,
+      -1,    63,    64,    65,    66,    67,    68,    -1,    70,    71,
+      72,    73,    74,    75,    -1,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    78,    79,    80,    89,    90,    91,
+      92,    93,    94,    95,    -1,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    -1,    -1,    98,    -1,    -1,   101,    14,   103,
+      -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
+      26,    27,    -1,    29,    30,    31,    -1,    33,    34,    -1,
+      -1,    -1,    38,    39,    40,    41,    -1,    -1,    -1,    -1,
+      -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
+      -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,
+      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    77,    78,    79,    80,    -1,    -1,    83,    84,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
+      14,    97,    98,    17,    18,   101,    -1,    21,    22,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    31,    -1,    33,
+      34,    -1,    -1,    -1,    38,    39,    40,    41,    -1,    -1,
+      -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
+      -1,    55,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,
+      -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    83,
+      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    14,    97,    98,    17,    18,   101,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    29,    -1,    31,
+      -1,    33,    34,    -1,    -1,    -1,    38,    39,    40,    41,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,
+      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    14,    -1,    98,    17,    18,   101,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    31,    -1,    33,    34,    -1,    -1,    -1,    38,    39,
+      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      50,    -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    -1,    -1,    14,    -1,    98,    17,
+      18,   101,    -1,    21,    -1,    23,    24,    25,    26,    27,
+      -1,    29,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,    47,
+      48,    49,    50,    14,    52,    -1,    17,    18,    -1,    -1,
       21,    -1,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      -1,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    44,    -1,    46,    47,    48,    49,    50,
-      14,    52,    -1,    17,    18,    -1,    -1,    21,    -1,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    -1,    69,    33,
-      34,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
-      -1,    -1,    46,    -1,    48,    -1,    50,    -1,    52,    -1,
-      -1,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,
-     101,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      -1,    -1,    14,    -1,    98,    17,    18,   101,    20,    21,
+      -1,    69,    33,    34,    -1,    -1,    -1,    -1,    76,    77,
+      78,    79,    80,    -1,    -1,    46,    -1,    48,    -1,    50,
+      -1,    52,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,
+      98,    -1,    -1,   101,    -1,    -1,    -1,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    -1,    -1,    14,    -1,    98,    17,    18,
+     101,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    50,    14,    52,    -1,    17,    18,    -1,    -1,    21,
       -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
-      -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    14,
-      52,    -1,    17,    18,    -1,    -1,    21,    -1,    23,    24,
-      25,    26,    27,    -1,    29,    -1,    -1,    69,    33,    34,
+      69,    33,    34,    -1,    -1,    -1,    -1,    76,    77,    78,
+      79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+      52,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
+      -1,    -1,   101,    -1,    -1,    -1,    -1,    69,    -1,    -1,
       -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
-      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,
-      92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
-      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
-      -1,    14,    -1,    98,    17,    18,   101,    -1,    21,    -1,
-      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,
-      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    14,    52,
-      -1,    17,    18,    -1,    -1,    21,    -1,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    -1,    69,    33,    34,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    14,    -1,    98,    17,    18,   101,
+      -1,    21,    -1,    23,    24,    25,    26,    27,    -1,    29,
+      -1,    -1,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      50,    14,    52,    -1,    17,    18,    -1,    -1,    21,    -1,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    69,
+      33,    34,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
+      80,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
+      -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,
+      -1,   101,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
       -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
-      -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,    92,
-      93,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,    -1,
-      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
-      14,    -1,    98,    17,    18,   101,    -1,    21,    -1,    23,
-      24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,
-      34,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    54,    -1,    -1,    -1,    50,    -1,    52,    -1,
-      -1,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
-      -1,    73,    74,    75,    -1,    69,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    77,    78,    79,    80,    89,    90,    91,
-      92,    93,    94,    95,    48,    -1,    -1,    -1,    92,    93,
-      54,    -1,    -1,    -1,    98,    -1,    -1,   101,    -1,    63,
+      -1,    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,    63,
       64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
       74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
       -1,    -1,    -1,    54,    -1,    89,    90,    91,    92,    93,
@@ -1343,11 +1319,11 @@ static const yytype_int16 yycheck[] =
       48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,
       91,    92,    93,    94,    95,    63,    64,    65,    66,    67,
       68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,
-      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,
       -1,    89,    90,    91,    92,    93,    94,    95,    63,    64,
       65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
       75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
+      -1,    -1,    54,    -1,    89,    90,    91,    92,    93,    94,
       95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
       -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,
@@ -1356,25 +1332,31 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       89,    90,    91,    92,    93,    94,    95,    63,    64,    65,
       66,    67,    68,    -1,    70,    -1,    -1,    73,    74,    75,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    54,    -1,    89,    90,    91,    92,    93,    94,    95,
-      63,    64,    65,    66,    67,    68,    56,    70,    -1,    -1,
-      73,    74,    75,    63,    64,    65,    66,    67,    68,    -1,
-      70,    -1,    -1,    73,    74,    75,    89,    90,    91,    92,
-      93,    94,    95,    -1,    97,    -1,    -1,    -1,    -1,    89,
-      90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
-      67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    -1,
-      -1,    -1,    99,    63,    64,    65,    66,    67,    68,    -1,
+      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    89,    90,    91,    92,    93,    94,    95,
+      63,    64,    65,    66,    67,    68,    -1,    70,    -1,    -1,
+      73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,
+      93,    94,    95,    63,    64,    65,    66,    67,    68,    -1,
       70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
-      -1,    81,    82,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,
       90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
-      67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    63,
-      64,    65,    66,    -1,    -1,    -1,    70,    -1,    -1,    73,
+      67,    68,    56,    70,    -1,    -1,    73,    74,    75,    63,
+      64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
       74,    75,    89,    90,    91,    92,    93,    94,    95,    -1,
+      97,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
+      94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
+      -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,
+      91,    92,    93,    94,    95,    -1,    -1,    -1,    99,    63,
+      64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
+      74,    75,    -1,    -1,    -1,    -1,    -1,    81,    82,    -1,
       -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
-      94,    95
+      94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
+      -1,    -1,    73,    74,    75,    63,    64,    65,    66,    -1,
+      -1,    -1,    70,    -1,    -1,    73,    74,    75,    89,    90,
+      91,    92,    93,    94,    95,    -1,    -1,    -1,    -1,    -1,
+      -1,    89,    90,    91,    92,    93,    94,    95
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1402,7 +1384,7 @@ static const yytype_uint8 yystos[] =
       26,    54,    65,   124,   124,    54,    65,    54,    53,    56,
      135,   100,    48,    54,    48,    54,    48,    54,    48,    54,
       81,    82,    54,    97,    26,   132,    26,    99,   103,   103,
-     102,   100,   100,   106,   121,   120,   120,   121,   121,   125,
+     102,   100,   100,   105,   121,   120,   120,   121,   121,   125,
      125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
      125,   125,   125,   125,   125,   125,   125,    26,   144,    99,
      125,    99,    99,   125,   144,   100,   125,   140,   124,    26,
@@ -1412,13 +1394,13 @@ static const yytype_uint8 yystos[] =
       29,   154,   122,   125,   125,    53,   121,    97,   100,    97,
       26,   120,    43,   125,   125,    26,    48,    48,    48,    48,
      108,   122,    26,    97,   110,   121,   121,   121,   122,    53,
-     100,   146,    26,   146,   144,   125,   124,   125,   125,   125,
-     125,   121,   121,    87,   122,    35,    54,   121,   108,    26,
-     122,   122,    97,    54,    88,   121,    54,   125,   113,   121,
-      30,   146,   125,    87,   125,   121,    36,    37,   114,   119,
-     121,    36,    86,    26,   145,   122,   121,   122,   120,   125,
-      86,   120,   100,   122,   121,   122,   121,   108,    26,   121,
-      87,   121,    53,   121,    87,    86,   122,    86,   121
+     146,    26,   146,   144,   125,   124,   125,   125,   125,   125,
+     121,   121,    87,   122,    35,    54,   121,   108,   122,   122,
+      97,    54,    88,   121,    54,   125,   113,   121,    30,   146,
+     125,    87,   125,   121,    36,    37,   114,   119,   121,    36,
+      86,    26,   145,   122,   121,   122,   120,   125,    86,   120,
+     100,   122,   121,   122,   121,   108,    26,   121,    87,   121,
+      53,   121,    87,    86,   122,    86,   121
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1439,15 +1421,15 @@ static const yytype_uint8 yyr1[] =
      131,   131,   132,   132,   133,   133,   134,   134,   134,   134,
      134,   134,   135,   135,   136,   136,   136,   137,   136,   139,
      140,   138,   138,   141,   138,   138,   138,   143,   142,   144,
-     144,   144,   144,   145,   145,   145,   146,   147,   148,   148,
-     148,   149,   149,   150,   151,   151,   151,   151,   152,   152,
-     153,   153,   154,   154
+     144,   144,   145,   145,   145,   146,   147,   148,   148,   148,
+     149,   149,   150,   151,   151,   151,   151,   152,   152,   153,
+     153,   154,   154
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_int8 yyr2[] =
 {
-       0,     2,     3,     1,     2,     0,     1,     1,     4,     4,
+       0,     2,     1,     2,     3,     0,     1,     1,     4,     4,
        6,     4,     4,     4,     4,     4,     4,     5,     5,     8,
        4,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        6,    11,    12,     8,     2,     3,     7,     6,     0,     9,
@@ -1462,9 +1444,9 @@ static const yytype_int8 yyr2[] =
        1,     3,     1,     3,     1,     3,     2,     2,     2,     2,
        3,     2,     3,     2,     2,     3,     2,     0,     3,     0,
        0,     9,     2,     0,     7,     8,     6,     0,     3,     0,
-       1,     3,     4,     0,     1,     3,     0,     2,     0,     1,
-       3,     1,     3,     3,     0,     1,     1,     1,     1,     3,
-       1,     3,     3,     3
+       1,     3,     0,     1,     3,     0,     2,     0,     1,     3,
+       1,     3,     3,     0,     1,     1,     1,     1,     3,     1,
+       3,     3,     3
 };
 
 
@@ -1941,81 +1923,81 @@ yydestruct (const char *yymsg,
   switch (yykind)
     {
     case 22: /* BLTIN  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1947 "engines/director/lingo/lingo-gr.cpp"
+#line 1929 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1953 "engines/director/lingo/lingo-gr.cpp"
+#line 1935 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1959 "engines/director/lingo/lingo-gr.cpp"
+#line 1941 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* THEFBLTIN  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1965 "engines/director/lingo/lingo-gr.cpp"
+#line 1947 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* ID  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1971 "engines/director/lingo/lingo-gr.cpp"
+#line 1953 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* STRING  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1977 "engines/director/lingo/lingo-gr.cpp"
+#line 1959 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* HANDLER  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1983 "engines/director/lingo/lingo-gr.cpp"
+#line 1965 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* SYMBOL  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1989 "engines/director/lingo/lingo-gr.cpp"
+#line 1971 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 30: /* ENDCLAUSE  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1995 "engines/director/lingo/lingo-gr.cpp"
+#line 1977 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 31: /* tPLAYACCEL  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2001 "engines/director/lingo/lingo-gr.cpp"
+#line 1983 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 32: /* tMETHOD  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2007 "engines/director/lingo/lingo-gr.cpp"
+#line 1989 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 33: /* THEOBJECTFIELD  */
-#line 136 "engines/director/lingo/lingo-gr.y"
+#line 142 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 2013 "engines/director/lingo/lingo-gr.cpp"
+#line 1995 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 142: /* on  */
-#line 135 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2019 "engines/director/lingo/lingo-gr.cpp"
+#line 2001 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2296,33 +2278,33 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-  case 4:
-#line 142 "engines/director/lingo/lingo-gr.y"
+  case 3:
+#line 147 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2303 "engines/director/lingo/lingo-gr.cpp"
+#line 2285 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
-#line 148 "engines/director/lingo/lingo-gr.y"
+#line 154 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2314 "engines/director/lingo/lingo-gr.cpp"
+#line 2296 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
-#line 154 "engines/director/lingo/lingo-gr.y"
+#line 160 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2322 "engines/director/lingo/lingo-gr.cpp"
+#line 2304 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
-#line 158 "engines/director/lingo/lingo-gr.y"
+#line 164 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2334,34 +2316,34 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2338 "engines/director/lingo/lingo-gr.cpp"
+#line 2320 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
-#line 169 "engines/director/lingo/lingo-gr.y"
+#line 175 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2344 "engines/director/lingo/lingo-gr.cpp"
+#line 2326 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
-#line 170 "engines/director/lingo/lingo-gr.y"
+#line 176 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2350 "engines/director/lingo/lingo-gr.cpp"
+#line 2332 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
-#line 171 "engines/director/lingo/lingo-gr.y"
+#line 177 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2361 "engines/director/lingo/lingo-gr.cpp"
+#line 2343 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
-#line 177 "engines/director/lingo/lingo-gr.y"
+#line 183 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2369,22 +2351,22 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2373 "engines/director/lingo/lingo-gr.cpp"
+#line 2355 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
-#line 184 "engines/director/lingo/lingo-gr.y"
+#line 190 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2384 "engines/director/lingo/lingo-gr.cpp"
+#line 2366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
-#line 190 "engines/director/lingo/lingo-gr.y"
+#line 196 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2392,33 +2374,33 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2396 "engines/director/lingo/lingo-gr.cpp"
+#line 2378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
-#line 197 "engines/director/lingo/lingo-gr.y"
+#line 203 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2407 "engines/director/lingo/lingo-gr.cpp"
+#line 2389 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
-#line 203 "engines/director/lingo/lingo-gr.y"
+#line 209 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2418 "engines/director/lingo/lingo-gr.cpp"
+#line 2400 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
-#line 210 "engines/director/lingo/lingo-gr.y"
+#line 216 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2430,33 +2412,33 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2434 "engines/director/lingo/lingo-gr.cpp"
+#line 2416 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20:
-#line 221 "engines/director/lingo/lingo-gr.y"
+#line 227 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectfieldassign);
 		g_lingo->codeString((yyvsp[-2].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2445 "engines/director/lingo/lingo-gr.cpp"
+#line 2427 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
-#line 243 "engines/director/lingo/lingo-gr.y"
+#line 249 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[-3].code) - (yyvsp[-5].code));
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body;	/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2456 "engines/director/lingo/lingo-gr.cpp"
+#line 2438 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
-#line 254 "engines/director/lingo/lingo-gr.y"
+#line 260 "engines/director/lingo/lingo-gr.y"
                                                                                                  {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[-8].code) - (yyvsp[-10].code));
@@ -2469,11 +2451,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2473 "engines/director/lingo/lingo-gr.cpp"
+#line 2455 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
-#line 271 "engines/director/lingo/lingo-gr.y"
+#line 277 "engines/director/lingo/lingo-gr.y"
                                                                                                        {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[-9].code) - (yyvsp[-11].code));
@@ -2486,11 +2468,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 5] = end; }
-#line 2490 "engines/director/lingo/lingo-gr.cpp"
+#line 2472 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
-#line 283 "engines/director/lingo/lingo-gr.y"
+#line 289 "engines/director/lingo/lingo-gr.y"
                                                                             {
 		inst list = 0, body = 0, end = 0;
 		WRITE_UINT32(&list, (yyvsp[-5].code) - (yyvsp[-7].code));
@@ -2501,54 +2483,54 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 4] = 0;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 5] = end; }
-#line 2505 "engines/director/lingo/lingo-gr.cpp"
+#line 2487 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
-#line 294 "engines/director/lingo/lingo-gr.y"
+#line 300 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
-#line 2512 "engines/director/lingo/lingo-gr.cpp"
+#line 2494 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
-#line 296 "engines/director/lingo/lingo-gr.y"
+#line 302 "engines/director/lingo/lingo-gr.y"
                                       {
 		inst end = 0;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2522 "engines/director/lingo/lingo-gr.cpp"
+#line 2504 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
-#line 301 "engines/director/lingo/lingo-gr.y"
+#line 307 "engines/director/lingo/lingo-gr.y"
                                                           {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2531 "engines/director/lingo/lingo-gr.cpp"
+#line 2513 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
-#line 305 "engines/director/lingo/lingo-gr.y"
+#line 311 "engines/director/lingo/lingo-gr.y"
                                                     {
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2540 "engines/director/lingo/lingo-gr.cpp"
+#line 2522 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
-#line 310 "engines/director/lingo/lingo-gr.y"
+#line 316 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2548 "engines/director/lingo/lingo-gr.cpp"
+#line 2530 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
-#line 314 "engines/director/lingo/lingo-gr.y"
+#line 320 "engines/director/lingo/lingo-gr.y"
                                                                                        {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-6].code) - (yyvsp[-8].code));
@@ -2559,11 +2541,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2563 "engines/director/lingo/lingo-gr.cpp"
+#line 2545 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
-#line 324 "engines/director/lingo/lingo-gr.y"
+#line 330 "engines/director/lingo/lingo-gr.y"
                                                                                                               {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-9].code) - (yyvsp[-11].code));
@@ -2574,22 +2556,22 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2578 "engines/director/lingo/lingo-gr.cpp"
+#line 2560 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
-#line 338 "engines/director/lingo/lingo-gr.y"
+#line 344 "engines/director/lingo/lingo-gr.y"
                                                         {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[-3].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2589 "engines/director/lingo/lingo-gr.cpp"
+#line 2571 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
-#line 345 "engines/director/lingo/lingo-gr.y"
+#line 351 "engines/director/lingo/lingo-gr.y"
                                                                                                          {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-8].code) - (yyvsp[-10].code));
@@ -2600,11 +2582,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2604 "engines/director/lingo/lingo-gr.cpp"
+#line 2586 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
-#line 355 "engines/director/lingo/lingo-gr.y"
+#line 361 "engines/director/lingo/lingo-gr.y"
                                                                    {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-4].code) - (yyvsp[-6].code));
@@ -2615,119 +2597,119 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2619 "engines/director/lingo/lingo-gr.cpp"
+#line 2601 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
-#line 366 "engines/director/lingo/lingo-gr.y"
+#line 372 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2625 "engines/director/lingo/lingo-gr.cpp"
+#line 2607 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
-#line 368 "engines/director/lingo/lingo-gr.y"
+#line 374 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2635 "engines/director/lingo/lingo-gr.cpp"
+#line 2617 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
-#line 374 "engines/director/lingo/lingo-gr.y"
+#line 380 "engines/director/lingo/lingo-gr.y"
                                                 {
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); }
-#line 2645 "engines/director/lingo/lingo-gr.cpp"
+#line 2627 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
-#line 380 "engines/director/lingo/lingo-gr.y"
+#line 386 "engines/director/lingo/lingo-gr.y"
                                         {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
-#line 2656 "engines/director/lingo/lingo-gr.cpp"
+#line 2638 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
-#line 387 "engines/director/lingo/lingo-gr.y"
+#line 393 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2662 "engines/director/lingo/lingo-gr.cpp"
+#line 2644 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
-#line 389 "engines/director/lingo/lingo-gr.y"
+#line 395 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2668 "engines/director/lingo/lingo-gr.cpp"
+#line 2650 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
-#line 391 "engines/director/lingo/lingo-gr.y"
+#line 397 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2674 "engines/director/lingo/lingo-gr.cpp"
+#line 2656 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
-#line 395 "engines/director/lingo/lingo-gr.y"
+#line 401 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_whencode);
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2684 "engines/director/lingo/lingo-gr.cpp"
+#line 2666 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
-#line 401 "engines/director/lingo/lingo-gr.y"
+#line 407 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2692 "engines/director/lingo/lingo-gr.cpp"
+#line 2674 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
-#line 404 "engines/director/lingo/lingo-gr.y"
+#line 410 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2700 "engines/director/lingo/lingo-gr.cpp"
+#line 2682 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
-#line 407 "engines/director/lingo/lingo-gr.y"
+#line 413 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2709 "engines/director/lingo/lingo-gr.cpp"
+#line 2691 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
-#line 411 "engines/director/lingo/lingo-gr.y"
+#line 417 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2718 "engines/director/lingo/lingo-gr.cpp"
+#line 2700 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
-#line 415 "engines/director/lingo/lingo-gr.y"
+#line 421 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2727 "engines/director/lingo/lingo-gr.cpp"
+#line 2709 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
-#line 419 "engines/director/lingo/lingo-gr.y"
+#line 425 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2736,532 +2718,532 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2740 "engines/director/lingo/lingo-gr.cpp"
+#line 2722 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62:
-#line 427 "engines/director/lingo/lingo-gr.y"
+#line 433 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2746 "engines/director/lingo/lingo-gr.cpp"
+#line 2728 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64:
-#line 430 "engines/director/lingo/lingo-gr.y"
+#line 436 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2752 "engines/director/lingo/lingo-gr.cpp"
+#line 2734 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
-#line 432 "engines/director/lingo/lingo-gr.y"
+#line 438 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2760 "engines/director/lingo/lingo-gr.cpp"
+#line 2742 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67:
-#line 435 "engines/director/lingo/lingo-gr.y"
+#line 441 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2768 "engines/director/lingo/lingo-gr.cpp"
+#line 2750 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68:
-#line 438 "engines/director/lingo/lingo-gr.y"
+#line 444 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2776 "engines/director/lingo/lingo-gr.cpp"
+#line 2758 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
-#line 441 "engines/director/lingo/lingo-gr.y"
+#line 447 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2784 "engines/director/lingo/lingo-gr.cpp"
+#line 2766 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70:
-#line 444 "engines/director/lingo/lingo-gr.y"
+#line 450 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2795 "engines/director/lingo/lingo-gr.cpp"
+#line 2777 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
-#line 450 "engines/director/lingo/lingo-gr.y"
+#line 456 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2805 "engines/director/lingo/lingo-gr.cpp"
+#line 2787 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
-#line 455 "engines/director/lingo/lingo-gr.y"
+#line 461 "engines/director/lingo/lingo-gr.y"
                        {
 		g_lingo->code1(LC::c_objectrefpush);
 		g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectref).field->c_str());
 		delete (yyvsp[0].objectref).obj;
 		delete (yyvsp[0].objectref).field; }
-#line 2816 "engines/director/lingo/lingo-gr.cpp"
+#line 2798 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
-#line 462 "engines/director/lingo/lingo-gr.y"
+#line 468 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2822 "engines/director/lingo/lingo-gr.cpp"
+#line 2804 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
-#line 463 "engines/director/lingo/lingo-gr.y"
+#line 469 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2828 "engines/director/lingo/lingo-gr.cpp"
+#line 2810 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
-#line 464 "engines/director/lingo/lingo-gr.y"
+#line 470 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2834 "engines/director/lingo/lingo-gr.cpp"
+#line 2816 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
-#line 465 "engines/director/lingo/lingo-gr.y"
+#line 471 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2840 "engines/director/lingo/lingo-gr.cpp"
+#line 2822 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
-#line 466 "engines/director/lingo/lingo-gr.y"
+#line 472 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2846 "engines/director/lingo/lingo-gr.cpp"
+#line 2828 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
-#line 467 "engines/director/lingo/lingo-gr.y"
+#line 473 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2852 "engines/director/lingo/lingo-gr.cpp"
+#line 2834 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
-#line 468 "engines/director/lingo/lingo-gr.y"
+#line 474 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2858 "engines/director/lingo/lingo-gr.cpp"
+#line 2840 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
-#line 469 "engines/director/lingo/lingo-gr.y"
+#line 475 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2864 "engines/director/lingo/lingo-gr.cpp"
+#line 2846 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
-#line 470 "engines/director/lingo/lingo-gr.y"
+#line 476 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2870 "engines/director/lingo/lingo-gr.cpp"
+#line 2852 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
-#line 471 "engines/director/lingo/lingo-gr.y"
+#line 477 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2876 "engines/director/lingo/lingo-gr.cpp"
+#line 2858 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
-#line 472 "engines/director/lingo/lingo-gr.y"
+#line 478 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2882 "engines/director/lingo/lingo-gr.cpp"
+#line 2864 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
-#line 473 "engines/director/lingo/lingo-gr.y"
+#line 479 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2888 "engines/director/lingo/lingo-gr.cpp"
+#line 2870 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
-#line 474 "engines/director/lingo/lingo-gr.y"
+#line 480 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2894 "engines/director/lingo/lingo-gr.cpp"
+#line 2876 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
-#line 475 "engines/director/lingo/lingo-gr.y"
+#line 481 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2900 "engines/director/lingo/lingo-gr.cpp"
+#line 2882 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
-#line 476 "engines/director/lingo/lingo-gr.y"
+#line 482 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2906 "engines/director/lingo/lingo-gr.cpp"
+#line 2888 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
-#line 477 "engines/director/lingo/lingo-gr.y"
+#line 483 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2912 "engines/director/lingo/lingo-gr.cpp"
+#line 2894 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
-#line 478 "engines/director/lingo/lingo-gr.y"
+#line 484 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2918 "engines/director/lingo/lingo-gr.cpp"
+#line 2900 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
-#line 479 "engines/director/lingo/lingo-gr.y"
+#line 485 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2924 "engines/director/lingo/lingo-gr.cpp"
+#line 2906 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
-#line 480 "engines/director/lingo/lingo-gr.y"
+#line 486 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); }
-#line 2930 "engines/director/lingo/lingo-gr.cpp"
+#line 2912 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
-#line 481 "engines/director/lingo/lingo-gr.y"
+#line 487 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2936 "engines/director/lingo/lingo-gr.cpp"
+#line 2918 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
-#line 482 "engines/director/lingo/lingo-gr.y"
+#line 488 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2942 "engines/director/lingo/lingo-gr.cpp"
+#line 2924 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
-#line 483 "engines/director/lingo/lingo-gr.y"
+#line 489 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2948 "engines/director/lingo/lingo-gr.cpp"
+#line 2930 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
-#line 485 "engines/director/lingo/lingo-gr.y"
+#line 491 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2954 "engines/director/lingo/lingo-gr.cpp"
+#line 2936 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
-#line 486 "engines/director/lingo/lingo-gr.y"
+#line 492 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2960 "engines/director/lingo/lingo-gr.cpp"
+#line 2942 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
-#line 487 "engines/director/lingo/lingo-gr.y"
+#line 493 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2966 "engines/director/lingo/lingo-gr.cpp"
+#line 2948 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
-#line 488 "engines/director/lingo/lingo-gr.y"
+#line 494 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2972 "engines/director/lingo/lingo-gr.cpp"
+#line 2954 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
-#line 489 "engines/director/lingo/lingo-gr.y"
+#line 495 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2978 "engines/director/lingo/lingo-gr.cpp"
+#line 2960 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
-#line 490 "engines/director/lingo/lingo-gr.y"
+#line 496 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2984 "engines/director/lingo/lingo-gr.cpp"
+#line 2966 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
-#line 491 "engines/director/lingo/lingo-gr.y"
+#line 497 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2990 "engines/director/lingo/lingo-gr.cpp"
+#line 2972 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
-#line 492 "engines/director/lingo/lingo-gr.y"
+#line 498 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2996 "engines/director/lingo/lingo-gr.cpp"
+#line 2978 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104:
-#line 494 "engines/director/lingo/lingo-gr.y"
+#line 500 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 3004 "engines/director/lingo/lingo-gr.cpp"
+#line 2986 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
-#line 499 "engines/director/lingo/lingo-gr.y"
+#line 505 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 3010 "engines/director/lingo/lingo-gr.cpp"
+#line 2992 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
-#line 502 "engines/director/lingo/lingo-gr.y"
+#line 508 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 3016 "engines/director/lingo/lingo-gr.cpp"
+#line 2998 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
-#line 503 "engines/director/lingo/lingo-gr.y"
+#line 509 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 3022 "engines/director/lingo/lingo-gr.cpp"
+#line 3004 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111:
-#line 504 "engines/director/lingo/lingo-gr.y"
+#line 510 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 3028 "engines/director/lingo/lingo-gr.cpp"
+#line 3010 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
-#line 504 "engines/director/lingo/lingo-gr.y"
+#line 510 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 3034 "engines/director/lingo/lingo-gr.cpp"
+#line 3016 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
-#line 505 "engines/director/lingo/lingo-gr.y"
+#line 511 "engines/director/lingo/lingo-gr.y"
                     { g_lingo->_indef = kStateInArgs; }
-#line 3040 "engines/director/lingo/lingo-gr.cpp"
+#line 3022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114:
-#line 505 "engines/director/lingo/lingo-gr.y"
+#line 511 "engines/director/lingo/lingo-gr.y"
                                                                      { g_lingo->_indef = kStateNone; }
-#line 3046 "engines/director/lingo/lingo-gr.cpp"
+#line 3028 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
-#line 507 "engines/director/lingo/lingo-gr.y"
+#line 513 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3054 "engines/director/lingo/lingo-gr.cpp"
+#line 3036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117:
-#line 510 "engines/director/lingo/lingo-gr.y"
+#line 516 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3062 "engines/director/lingo/lingo-gr.cpp"
+#line 3044 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
-#line 513 "engines/director/lingo/lingo-gr.y"
+#line 519 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 3068 "engines/director/lingo/lingo-gr.cpp"
+#line 3050 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
-#line 514 "engines/director/lingo/lingo-gr.y"
+#line 520 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3074 "engines/director/lingo/lingo-gr.cpp"
+#line 3056 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
-#line 516 "engines/director/lingo/lingo-gr.y"
+#line 522 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3083 "engines/director/lingo/lingo-gr.cpp"
+#line 3065 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
-#line 520 "engines/director/lingo/lingo-gr.y"
+#line 526 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3092 "engines/director/lingo/lingo-gr.cpp"
+#line 3074 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122:
-#line 525 "engines/director/lingo/lingo-gr.y"
+#line 531 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3101 "engines/director/lingo/lingo-gr.cpp"
+#line 3083 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123:
-#line 529 "engines/director/lingo/lingo-gr.y"
+#line 535 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3110 "engines/director/lingo/lingo-gr.cpp"
+#line 3092 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
-#line 534 "engines/director/lingo/lingo-gr.y"
+#line 540 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3119 "engines/director/lingo/lingo-gr.cpp"
+#line 3101 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
-#line 538 "engines/director/lingo/lingo-gr.y"
+#line 544 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3128 "engines/director/lingo/lingo-gr.cpp"
+#line 3110 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
-#line 550 "engines/director/lingo/lingo-gr.y"
+#line 556 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3134 "engines/director/lingo/lingo-gr.cpp"
+#line 3116 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
-#line 551 "engines/director/lingo/lingo-gr.y"
+#line 557 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3140 "engines/director/lingo/lingo-gr.cpp"
+#line 3122 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128:
-#line 552 "engines/director/lingo/lingo-gr.y"
+#line 558 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3146 "engines/director/lingo/lingo-gr.cpp"
+#line 3128 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129:
-#line 553 "engines/director/lingo/lingo-gr.y"
+#line 559 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3155 "engines/director/lingo/lingo-gr.cpp"
+#line 3137 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
-#line 557 "engines/director/lingo/lingo-gr.y"
+#line 563 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3164 "engines/director/lingo/lingo-gr.cpp"
+#line 3146 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
-#line 561 "engines/director/lingo/lingo-gr.y"
+#line 567 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3173 "engines/director/lingo/lingo-gr.cpp"
+#line 3155 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
-#line 569 "engines/director/lingo/lingo-gr.y"
+#line 575 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3182 "engines/director/lingo/lingo-gr.cpp"
+#line 3164 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
-#line 573 "engines/director/lingo/lingo-gr.y"
+#line 579 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3191 "engines/director/lingo/lingo-gr.cpp"
+#line 3173 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
-#line 577 "engines/director/lingo/lingo-gr.y"
+#line 583 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3200 "engines/director/lingo/lingo-gr.cpp"
+#line 3182 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
-#line 581 "engines/director/lingo/lingo-gr.y"
+#line 587 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3206 "engines/director/lingo/lingo-gr.cpp"
+#line 3188 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
-#line 581 "engines/director/lingo/lingo-gr.y"
+#line 587 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3215 "engines/director/lingo/lingo-gr.cpp"
+#line 3197 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
-#line 611 "engines/director/lingo/lingo-gr.y"
+#line 617 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 3221 "engines/director/lingo/lingo-gr.cpp"
+#line 3203 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140:
-#line 611 "engines/director/lingo/lingo-gr.y"
+#line 617 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 3227 "engines/director/lingo/lingo-gr.cpp"
+#line 3209 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
-#line 612 "engines/director/lingo/lingo-gr.y"
+#line 618 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 3238 "engines/director/lingo/lingo-gr.cpp"
+#line 3220 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
-#line 618 "engines/director/lingo/lingo-gr.y"
+#line 624 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3244 "engines/director/lingo/lingo-gr.cpp"
+#line 3226 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
-#line 619 "engines/director/lingo/lingo-gr.y"
+#line 625 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 3250 "engines/director/lingo/lingo-gr.cpp"
+#line 3232 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
-#line 620 "engines/director/lingo/lingo-gr.y"
+#line 626 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 3261 "engines/director/lingo/lingo-gr.cpp"
+#line 3243 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
-#line 626 "engines/director/lingo/lingo-gr.y"
+#line 632 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3272,11 +3254,11 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3276 "engines/director/lingo/lingo-gr.cpp"
+#line 3258 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
-#line 636 "engines/director/lingo/lingo-gr.y"
+#line 642 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -3284,65 +3266,59 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 3288 "engines/director/lingo/lingo-gr.cpp"
+#line 3270 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
-#line 644 "engines/director/lingo/lingo-gr.y"
+#line 650 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 3294 "engines/director/lingo/lingo-gr.cpp"
+#line 3276 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
-#line 644 "engines/director/lingo/lingo-gr.y"
+#line 650 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3300 "engines/director/lingo/lingo-gr.cpp"
+#line 3282 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
-#line 646 "engines/director/lingo/lingo-gr.y"
+#line 652 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3306 "engines/director/lingo/lingo-gr.cpp"
+#line 3288 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
-#line 647 "engines/director/lingo/lingo-gr.y"
+#line 653 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3312 "engines/director/lingo/lingo-gr.cpp"
+#line 3294 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151:
-#line 648 "engines/director/lingo/lingo-gr.y"
+#line 654 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3318 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 152:
-#line 649 "engines/director/lingo/lingo-gr.y"
-                                { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 3324 "engines/director/lingo/lingo-gr.cpp"
+#line 3300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 652 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 657 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3330 "engines/director/lingo/lingo-gr.cpp"
+#line 3306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 653 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 658 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 3336 "engines/director/lingo/lingo-gr.cpp"
+#line 3312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 655 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 660 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 3342 "engines/director/lingo/lingo-gr.cpp"
+#line 3318 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 657 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 662 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3350,113 +3326,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3354 "engines/director/lingo/lingo-gr.cpp"
+#line 3330 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 665 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 670 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3360 "engines/director/lingo/lingo-gr.cpp"
+#line 3336 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 666 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 671 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3366 "engines/director/lingo/lingo-gr.cpp"
+#line 3342 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 667 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 672 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3372 "engines/director/lingo/lingo-gr.cpp"
+#line 3348 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 669 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 674 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3378 "engines/director/lingo/lingo-gr.cpp"
+#line 3354 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 670 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 675 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3384 "engines/director/lingo/lingo-gr.cpp"
+#line 3360 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 672 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 677 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 3390 "engines/director/lingo/lingo-gr.cpp"
+#line 3366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 674 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 679 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3396 "engines/director/lingo/lingo-gr.cpp"
+#line 3372 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 675 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 680 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3402 "engines/director/lingo/lingo-gr.cpp"
+#line 3378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 676 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 681 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3408 "engines/director/lingo/lingo-gr.cpp"
+#line 3384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 677 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 682 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3414 "engines/director/lingo/lingo-gr.cpp"
+#line 3390 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
-#line 679 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 684 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3420 "engines/director/lingo/lingo-gr.cpp"
+#line 3396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 680 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 685 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3426 "engines/director/lingo/lingo-gr.cpp"
+#line 3402 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 682 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 687 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3432 "engines/director/lingo/lingo-gr.cpp"
+#line 3408 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171:
-#line 683 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 688 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3438 "engines/director/lingo/lingo-gr.cpp"
+#line 3414 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172:
-#line 685 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 690 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3447 "engines/director/lingo/lingo-gr.cpp"
+#line 3423 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173:
-#line 689 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 694 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3456 "engines/director/lingo/lingo-gr.cpp"
+#line 3432 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3460 "engines/director/lingo/lingo-gr.cpp"
+#line 3436 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3681,5 +3657,5 @@ yyreturn:
   return yyresult;
 }
 
-#line 695 "engines/director/lingo/lingo-gr.y"
+#line 700 "engines/director/lingo/lingo-gr.y"
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 6d16c1ab85..b5b99bedd0 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -148,7 +148,7 @@ extern int yydebug;
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 union YYSTYPE
 {
-#line 85 "engines/director/lingo/lingo-gr.y"
+#line 91 "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 e6ad4ffd73..4549be2f65 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -58,6 +58,7 @@
 #include "common/hash-str.h"
 #include "common/rect.h"
 
+#include "director/director.h"
 #include "director/lingo/lingo.h"
 #include "director/lingo/lingo-code.h"
 #include "director/lingo/lingo-gr.h"
@@ -67,6 +68,11 @@ extern int yyparse();
 
 using namespace Director;
 void yyerror(const char *s) {
+	// Director parser till D3 was forgiving for any hanging parentheses
+	if (g_director->getVersion() < 4) {
+		//
+	}
+
 	g_lingo->_hadError = true;
 	warning("######################  LINGO: %s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
 }
@@ -137,9 +143,9 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 
 %%
 
-program: program '\n' programline
-	| programline
+program: programline
 	| error	'\n'		{ yyerrok; }
+	| programline '\n' program
 
 programline: /* empty */
 	| defn
@@ -646,7 +652,6 @@ on:  tON { g_lingo->_indef = kStateInArgs; } ID { $$ = $ID; g_lingo->_currentFac
 argdef:  /* nothing */ 		{ $$ = 0; }
 	| ID					{ g_lingo->codeArg($ID); $$ = 1; delete $ID; }
 	| argdef ',' ID			{ g_lingo->codeArg($ID); $$ = $1 + 1; delete $ID; }
-	| argdef '\n' ',' ID	{ g_lingo->codeArg($ID); $$ = $1 + 1; delete $ID; }
 
 endargdef:	/* nothing */
 	| ID					{ delete $ID; }
diff --git a/engines/director/lingo/tests/macros.lingo b/engines/director/lingo/tests/macros.lingo
index 4282d6c39d..91dc2928e2 100644
--- a/engines/director/lingo/tests/macros.lingo
+++ b/engines/director/lingo/tests/macros.lingo
@@ -24,20 +24,3 @@ put x
 check x, 5
 exit
 end if
-
---
-macro check par1, par2
-, par3
-if par1 = 3 then
-put -3
-else
-put 0
-end if
-if par2 = 2 then
-put 2
-else
-put 0
-end if
-put par1
-put par2
-put par3




More information about the Scummvm-git-logs mailing list