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

sev- sev at scummvm.org
Sun Jan 19 14:47:58 UTC 2020


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

Summary:
207407a647 DIRECTOR: LINGO: Gracefully process lexer and parser errors.
d004473e41 DIRECTOR: Fix script dumping for score scripts


Commit: 207407a647f373aafb013eb029f0d2cd337402b5
    https://github.com/scummvm/scummvm/commit/207407a647f373aafb013eb029f0d2cd337402b5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T15:47:42+01:00

Commit Message:
DIRECTOR: LINGO: Gracefully process lexer and parser errors.

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index ee221a3..42d9931 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -154,79 +154,80 @@ extern int yydebug;
     ARRAY = 264,
     OBJECT = 265,
     REFERENCE = 266,
-    INT = 267,
-    ARGC = 268,
-    ARGCNORET = 269,
-    THEENTITY = 270,
-    THEENTITYWITHID = 271,
-    THEMENUITEMENTITY = 272,
-    FLOAT = 273,
-    BLTIN = 274,
-    FBLTIN = 275,
-    RBLTIN = 276,
-    ID = 277,
-    STRING = 278,
-    HANDLER = 279,
-    SYMBOL = 280,
-    ENDCLAUSE = 281,
-    tPLAYACCEL = 282,
-    tMETHOD = 283,
-    THEOBJECTFIELD = 284,
-    tDOWN = 285,
-    tELSE = 286,
-    tELSIF = 287,
-    tEXIT = 288,
-    tGLOBAL = 289,
-    tGO = 290,
-    tIF = 291,
-    tIN = 292,
-    tINTO = 293,
-    tLOOP = 294,
-    tMACRO = 295,
-    tMOVIE = 296,
-    tNEXT = 297,
-    tOF = 298,
-    tPREVIOUS = 299,
-    tPUT = 300,
-    tREPEAT = 301,
-    tSET = 302,
-    tTHEN = 303,
-    tTO = 304,
-    tWHEN = 305,
-    tWITH = 306,
-    tWHILE = 307,
-    tNLELSE = 308,
-    tFACTORY = 309,
-    tOPEN = 310,
-    tPLAY = 311,
-    tDONE = 312,
-    tINSTANCE = 313,
-    tGE = 314,
-    tLE = 315,
-    tEQ = 316,
-    tNEQ = 317,
-    tAND = 318,
-    tOR = 319,
-    tNOT = 320,
-    tMOD = 321,
-    tAFTER = 322,
-    tBEFORE = 323,
-    tCONCAT = 324,
-    tCONTAINS = 325,
-    tSTARTS = 326,
-    tCHAR = 327,
-    tITEM = 328,
-    tLINE = 329,
-    tWORD = 330,
-    tSPRITE = 331,
-    tINTERSECTS = 332,
-    tWITHIN = 333,
-    tTELL = 334,
-    tPROPERTY = 335,
-    tON = 336,
-    tENDIF = 337,
-    tENDREPEAT = 338,
-    tENDTELL = 339
+    LEXERROR = 267,
+    INT = 268,
+    ARGC = 269,
+    ARGCNORET = 270,
+    THEENTITY = 271,
+    THEENTITYWITHID = 272,
+    THEMENUITEMENTITY = 273,
+    FLOAT = 274,
+    BLTIN = 275,
+    FBLTIN = 276,
+    RBLTIN = 277,
+    ID = 278,
+    STRING = 279,
+    HANDLER = 280,
+    SYMBOL = 281,
+    ENDCLAUSE = 282,
+    tPLAYACCEL = 283,
+    tMETHOD = 284,
+    THEOBJECTFIELD = 285,
+    tDOWN = 286,
+    tELSE = 287,
+    tELSIF = 288,
+    tEXIT = 289,
+    tGLOBAL = 290,
+    tGO = 291,
+    tIF = 292,
+    tIN = 293,
+    tINTO = 294,
+    tLOOP = 295,
+    tMACRO = 296,
+    tMOVIE = 297,
+    tNEXT = 298,
+    tOF = 299,
+    tPREVIOUS = 300,
+    tPUT = 301,
+    tREPEAT = 302,
+    tSET = 303,
+    tTHEN = 304,
+    tTO = 305,
+    tWHEN = 306,
+    tWITH = 307,
+    tWHILE = 308,
+    tNLELSE = 309,
+    tFACTORY = 310,
+    tOPEN = 311,
+    tPLAY = 312,
+    tDONE = 313,
+    tINSTANCE = 314,
+    tGE = 315,
+    tLE = 316,
+    tEQ = 317,
+    tNEQ = 318,
+    tAND = 319,
+    tOR = 320,
+    tNOT = 321,
+    tMOD = 322,
+    tAFTER = 323,
+    tBEFORE = 324,
+    tCONCAT = 325,
+    tCONTAINS = 326,
+    tSTARTS = 327,
+    tCHAR = 328,
+    tITEM = 329,
+    tLINE = 330,
+    tWORD = 331,
+    tSPRITE = 332,
+    tINTERSECTS = 333,
+    tWITHIN = 334,
+    tTELL = 335,
+    tPROPERTY = 336,
+    tON = 337,
+    tENDIF = 338,
+    tENDREPEAT = 339,
+    tENDTELL = 340
   };
 #endif
 
@@ -249,7 +250,7 @@ union YYSTYPE
 		int oe;
 	} objectfield;
 
-#line 253 "engines/director/lingo/lingo-gr.cpp"
+#line 254 "engines/director/lingo/lingo-gr.cpp"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -568,10 +569,10 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  126
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1685
+#define YYLAST   1689
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  100
+#define YYNTOKENS  101
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  51
 /* YYNRULES -- Number of rules.  */
@@ -580,7 +581,7 @@ union yyalloc
 #define YYNSTATES  369
 
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   339
+#define YYMAXUTOK   340
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -593,15 +594,15 @@ union yyalloc
 static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      93,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      94,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,    92,    87,     2,
-      94,    95,    90,    88,    96,    89,     2,    91,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    99,     2,
-      85,     2,    86,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    93,    88,     2,
+      95,    96,    91,    89,    97,    90,     2,    92,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   100,     2,
+      86,     2,    87,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,    97,     2,    98,     2,     2,     2,     2,     2,     2,
+       2,    98,     2,    99,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -625,7 +626,8 @@ static const yytype_int8 yytranslate[] =
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79,    80,    81,    82,    83,    84
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85
 };
 
 #if YYDEBUG
@@ -633,23 +635,23 @@ static const yytype_int8 yytranslate[] =
 static const yytype_int16 yyrline[] =
 {
        0,   135,   135,   136,   137,   139,   140,   141,   143,   149,
-     152,   153,   154,   160,   167,   173,   180,   186,   193,   203,
-     210,   211,   212,   214,   215,   216,   217,   219,   220,   225,
-     236,   253,   265,   276,   278,   283,   287,   292,   296,   306,
-     317,   318,   320,   327,   337,   348,   350,   356,   362,   369,
-     371,   373,   374,   375,   377,   383,   386,   389,   393,   397,
-     401,   403,   404,   405,   408,   411,   414,   422,   428,   433,
-     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
-     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
-     454,   455,   456,   458,   459,   460,   461,   462,   463,   464,
-     465,   467,   470,   472,   473,   474,   475,   476,   477,   477,
-     478,   478,   479,   480,   483,   486,   487,   489,   493,   498,
-     502,   507,   511,   523,   524,   525,   526,   530,   534,   539,
-     540,   542,   543,   547,   551,   555,   555,   585,   585,   585,
-     592,   593,   593,   600,   610,   618,   618,   620,   621,   622,
-     623,   625,   626,   627,   629,   631,   639,   640,   641,   643,
-     644,   646,   648,   649,   650,   651,   653,   654,   656,   657,
-     659,   663
+     152,   153,   154,   160,   167,   173,   180,   186,   193,   204,
+     211,   212,   213,   215,   216,   217,   218,   220,   221,   226,
+     237,   254,   266,   277,   279,   284,   288,   293,   297,   307,
+     318,   319,   321,   328,   338,   349,   351,   357,   363,   370,
+     372,   374,   375,   376,   378,   384,   387,   390,   394,   398,
+     402,   404,   405,   406,   409,   412,   415,   423,   429,   434,
+     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
+     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
+     455,   456,   457,   459,   460,   461,   462,   463,   464,   465,
+     466,   468,   471,   473,   474,   475,   476,   477,   478,   478,
+     479,   479,   480,   481,   484,   487,   488,   490,   494,   499,
+     503,   508,   512,   524,   525,   526,   527,   531,   535,   540,
+     541,   543,   544,   548,   552,   556,   556,   586,   586,   586,
+     593,   594,   594,   601,   611,   619,   619,   621,   622,   623,
+     624,   626,   627,   628,   630,   632,   640,   641,   642,   644,
+     645,   647,   649,   650,   651,   652,   654,   655,   657,   658,
+     660,   664
 };
 #endif
 
@@ -659,8 +661,8 @@ static const yytype_int16 yyrline[] =
 static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "UNARY", "CASTREF", "VOID", "VAR",
-  "POINT", "RECT", "ARRAY", "OBJECT", "REFERENCE", "INT", "ARGC",
-  "ARGCNORET", "THEENTITY", "THEENTITYWITHID", "THEMENUITEMENTITY",
+  "POINT", "RECT", "ARRAY", "OBJECT", "REFERENCE", "LEXERROR", "INT",
+  "ARGC", "ARGCNORET", "THEENTITY", "THEENTITYWITHID", "THEMENUITEMENTITY",
   "FLOAT", "BLTIN", "FBLTIN", "RBLTIN", "ID", "STRING", "HANDLER",
   "SYMBOL", "ENDCLAUSE", "tPLAYACCEL", "tMETHOD", "THEOBJECTFIELD",
   "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tIF", "tIN",
@@ -697,8 +699,9 @@ static const yytype_int16 yytoknum[] =
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,    60,    62,    38,    43,    45,
-      42,    47,    37,    10,    40,    41,    44,    91,    93,    58
+     335,   336,   337,   338,   339,   340,    60,    62,    38,    43,
+      45,    42,    47,    37,    10,    40,    41,    44,    91,    93,
+      58
 };
 # endif
 
@@ -716,43 +719,43 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     339,   -52,  -269,  -269,  1023,  -269,  1057,  1137,    31,  1171,
-    -269,  -269,  -269,  -269,  -269,   -27,  -269,   905,  -269,  -269,
-      37,  1023,     7,   102,    29,    55,  1023,   943,    74,  1023,
-    1023,  1023,  1023,  1023,  1023,  1023,  -269,  -269,  1023,  1023,
-    1023,   419,     8,  -269,  -269,  -269,  -269,  -269,  1023,   -19,
-    1023,   745,  -269,  1581,  -269,  -269,  -269,  -269,  -269,  -269,
-    -269,  -269,  -269,  -269,    13,  1023,  1581,  1023,  1581,    16,
-    1023,    16,  -269,  -269,  1023,  1581,    18,  1023,  -269,  -269,
-      91,  -269,  1023,  -269,    75,  -269,   411,  -269,    93,  -269,
-     167,    98,  -269,   -29,    31,    31,    -1,    80,    84,  -269,
-    1498,  -269,   411,  -269,  -269,    27,  -269,  1192,  1226,  1259,
-    1292,  1548,  1457,   129,   131,  -269,  -269,  1511,    56,    58,
-    -269,  1581,    60,    64,    65,  -269,  -269,   505,  1581,  1023,
-    1023,  1581,  -269,  -269,  1023,  1581,  -269,  -269,  1023,  1023,
-    1023,  1023,  1023,  1023,  1023,  1023,  1023,  1023,  1023,  1023,
-    1023,  1023,  1023,  1023,  1023,   132,  1023,   167,  1511,    -2,
-    1023,     2,     4,  1023,    16,   132,  -269,    66,  1581,  1023,
-    -269,  -269,    17,  1023,  1023,  -269,  1023,  1023,     1,   120,
-    1023,  1023,  1023,  -269,  1023,  -269,   142,  1023,  1023,  1023,
-    1023,  1023,  1023,  1023,  1023,  1023,  1023,  -269,  -269,  -269,
-      70,  -269,  -269,    31,    31,  -269,  1023,    51,  -269,  -269,
-    1581,  1581,   119,  -269,  1581,    15,    15,    15,    15,  1594,
-    1594,  -269,    20,    15,    15,    15,    15,    20,   -26,   -26,
-    -269,  -269,  -269,   -72,  -269,  1581,  -269,  -269,  1581,   -41,
-     149,  1581,  -269,  -269,  -269,  1581,  1581,  1581,    15,  1023,
-    1023,   152,  1581,    15,  1581,  1581,  -269,  1581,  1325,  1581,
-    1358,  1581,  1391,  1581,  1424,  1581,  1581,   825,  -269,   153,
-    -269,  -269,  1581,    56,    58,  -269,   665,  -269,   -16,  -269,
-     133,    83,   160,    83,  -269,   132,  1581,    15,    31,  1023,
-    1023,  1023,  1023,  -269,   665,  -269,  -269,  -269,   110,   665,
-     145,  1023,   665,   825,   173,  -269,  -269,  -269,   -25,   150,
-    1581,  1581,  1581,  1581,  -269,   114,  -269,   123,  1023,  1581,
-    -269,  -269,  -269,   585,   665,    83,  1023,  -269,  -269,  1581,
-    -269,    48,   -15,   181,  -269,  1581,  -269,   665,  -269,  -269,
-    -269,  1023,   125,  -269,  -269,  -269,   112,   665,   665,   126,
-    -269,  1581,  -269,   825,   188,   130,  -269,   665,   164,  -269,
-    -269,  -269,   134,  -269,   135,  -269,   665,  -269,  -269
+     342,   -70,  -269,  -269,  1026,  -269,  1060,  1140,    30,  1174,
+    -269,  -269,  -269,  -269,  -269,    27,  -269,   908,  -269,  -269,
+      33,  1026,   -33,    93,    54,    73,  1026,   946,    91,  1026,
+    1026,  1026,  1026,  1026,  1026,  1026,  -269,  -269,  1026,  1026,
+    1026,   422,     8,  -269,  -269,  -269,  -269,  -269,  1026,   -20,
+    1026,   748,  -269,  1584,  -269,  -269,  -269,  -269,  -269,  -269,
+    -269,  -269,  -269,  -269,   -12,  1026,  1584,  1026,  1584,    18,
+    1026,    18,  -269,  -269,  1026,  1584,    20,  1026,  -269,  -269,
+      95,  -269,  1026,  -269,    77,  -269,   414,  -269,    97,  -269,
+     166,   101,  -269,   -29,    30,    30,    -2,    79,    82,  -269,
+    1501,  -269,   414,  -269,  -269,    35,  -269,  1195,  1229,  1262,
+    1295,  1551,  1460,   128,   130,  -269,  -269,  1514,    55,    57,
+    -269,  1584,    59,    63,    64,  -269,  -269,   508,  1584,  1026,
+    1026,  1584,  -269,  -269,  1026,  1584,  -269,  -269,  1026,  1026,
+    1026,  1026,  1026,  1026,  1026,  1026,  1026,  1026,  1026,  1026,
+    1026,  1026,  1026,  1026,  1026,   131,  1026,   166,  1514,   -38,
+    1026,    -3,    11,  1026,    18,   131,  -269,    65,  1584,  1026,
+    -269,  -269,    16,  1026,  1026,  -269,  1026,  1026,     0,   119,
+    1026,  1026,  1026,  -269,  1026,  -269,   141,  1026,  1026,  1026,
+    1026,  1026,  1026,  1026,  1026,  1026,  1026,  -269,  -269,  -269,
+      69,  -269,  -269,    30,    30,  -269,  1026,    60,  -269,  -269,
+    1584,  1584,   118,  -269,  1584,     9,     9,     9,     9,  1597,
+    1597,  -269,    14,     9,     9,     9,     9,    14,   -51,   -51,
+    -269,  -269,  -269,   -42,  -269,  1584,  -269,  -269,  1584,   -30,
+     148,  1584,  -269,  -269,  -269,  1584,  1584,  1584,     9,  1026,
+    1026,   151,  1584,     9,  1584,  1584,  -269,  1584,  1328,  1584,
+    1361,  1584,  1394,  1584,  1427,  1584,  1584,   828,  -269,   152,
+    -269,  -269,  1584,    55,    57,  -269,   668,  -269,     1,  -269,
+     132,    85,   156,    85,  -269,   131,  1584,     9,    30,  1026,
+    1026,  1026,  1026,  -269,   668,  -269,  -269,  -269,   109,   668,
+     144,  1026,   668,   828,   172,  -269,  -269,  -269,   -26,   149,
+    1584,  1584,  1584,  1584,  -269,   113,  -269,   122,  1026,  1584,
+    -269,  -269,  -269,   588,   668,    85,  1026,  -269,  -269,  1584,
+    -269,    80,   -18,   180,  -269,  1584,  -269,   668,  -269,  -269,
+    -269,  1026,   124,  -269,  -269,  -269,   111,   668,   668,   125,
+    -269,  1584,  -269,   828,   187,   129,  -269,   668,   163,  -269,
+    -269,  -269,   133,  -269,   134,  -269,   668,  -269,  -269
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -802,12 +805,12 @@ static const yytype_uint8 yydefact[] =
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -269,  -269,    87,  -269,  -258,  -269,     6,    21,  -269,  -269,
-    -269,  -269,  -269,  -269,   170,  -269,   -74,   -10,   -57,  -269,
-      -7,    -4,  -269,    43,   172,  -269,  -269,  -269,  -269,  -269,
+    -269,  -269,    87,  -269,  -258,  -269,     6,    17,  -269,  -269,
+    -269,  -269,  -269,  -269,   167,  -269,   -74,   -10,   -57,  -269,
+      -7,    -4,  -269,    47,   170,  -269,  -269,  -269,  -269,  -269,
     -269,   -17,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,
-    -158,  -269,  -268,   174,     5,  -269,  -269,  -269,  -269,  -269,
-      11
+    -158,  -269,  -268,   173,     5,  -269,  -269,  -269,  -269,  -269,
+      25
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -827,29 +830,29 @@ static const yytype_int16 yydefgoto[] =
 static const yytype_int16 yytable[] =
 {
       66,    73,    68,    68,   165,    75,    46,   239,   126,   293,
-     103,    69,    71,    86,   300,   307,   343,    90,   129,    79,
-     176,   281,   100,   102,   282,   106,   107,   108,   109,   110,
-     111,   112,   177,   301,   115,   116,   117,   121,     8,   243,
-     144,    63,   130,     2,   128,   321,   131,   135,   180,     5,
-     249,    98,   283,    72,    10,   282,    11,   334,    91,    92,
-     181,   157,   250,   158,   153,   154,   158,   344,   325,   170,
-     158,   282,   159,    68,   273,   161,   274,    99,   168,   338,
-     339,   144,   164,    89,   145,   185,   144,   178,   179,    30,
-      31,    32,    33,   234,   160,   359,   104,   236,   160,   237,
-     160,   127,   150,   151,   152,   153,   154,   156,   151,   152,
-     153,   154,   160,   166,   163,   171,   169,    93,    94,    95,
-     175,   212,   213,   186,    96,   210,   211,   308,    41,   182,
-     214,    97,   183,    46,   215,   216,   217,   218,   219,   220,
+     103,    69,    71,    86,   343,   307,   144,    90,   129,    91,
+      92,   176,   100,   102,    63,   106,   107,   108,   109,   110,
+     111,   112,   300,   177,   115,   116,   117,   121,     8,   243,
+     153,   154,   130,     2,   128,   321,   131,   135,   180,     5,
+     249,   301,   281,    72,    10,   282,    11,   334,   234,   160,
+     181,   157,   250,   158,   283,   344,   158,   282,   325,   170,
+     158,   282,   159,    68,    79,   161,   144,    98,   168,   145,
+      89,   144,   164,   156,   273,   185,   274,   178,   179,    30,
+      31,    32,    33,   236,   160,   359,    99,   150,   151,   152,
+     153,   154,   127,   151,   152,   153,   154,   237,   160,    93,
+      94,    95,   338,   339,   104,   160,    96,   163,   166,   169,
+     171,   212,   213,    97,   175,   210,   211,   308,    41,   182,
+     214,   183,   186,    46,   215,   216,   217,   218,   219,   220,
      221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
      231,   199,    68,   201,   232,   203,   235,   204,   205,   238,
      206,   207,   240,   251,   256,   241,   269,   279,   285,   245,
-     246,   284,   247,   248,   288,   295,   252,   253,   254,   304,
-     255,   303,   306,   257,   258,   259,   260,   261,   262,   263,
+     246,   284,   247,   248,   288,   295,   252,   253,   254,   306,
+     255,   303,   304,   257,   258,   259,   260,   261,   262,   263,
      264,   265,   266,   316,   318,   322,   270,   271,   327,   326,
      277,   278,   272,   345,   280,   172,   328,   352,   354,   356,
-     360,   294,   363,   361,   208,   244,   365,   367,   275,   268,
-     299,   134,   302,   136,     0,   137,   138,   139,   140,   141,
-     142,   143,     0,   144,   173,   174,   145,   146,   147,     0,
+     360,   294,   363,   361,   208,   268,   365,   367,   134,   244,
+     299,   136,   302,     0,   137,     0,   138,   139,   140,   141,
+     142,   143,   275,   144,   173,   174,   145,   146,   147,     0,
        0,     0,     0,     0,     0,   286,   287,     0,   323,     0,
      324,     0,   148,   149,   150,   151,   152,   153,   154,     0,
        0,     0,     0,     0,   350,     0,   298,     0,     0,   353,
@@ -859,9 +862,26 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,     0,     0,   366,     0,     0,   330,
        0,   332,     0,     0,   329,     0,     0,     0,     0,   336,
        0,   342,   335,     0,     0,     0,     0,   349,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   351,   355,    -5,
-       1,   358,     0,     0,     0,     0,     0,   362,     0,   364,
-       0,     2,     0,     0,     3,     4,   368,     5,     6,     7,
+       0,     0,     0,     0,     0,     0,     0,   351,   355,     0,
+       0,   358,    -5,     1,     0,     0,     0,   362,     0,   364,
+       0,     0,     0,     0,     0,     2,   368,     0,     3,     4,
+       0,     5,     6,     7,     8,     9,    10,     0,    11,     0,
+      12,    13,    14,     0,     0,     0,    15,    16,    17,    18,
+       0,     0,     0,    19,     0,    20,     0,     0,    21,    22,
+      23,     0,     0,    24,     0,     0,     0,    25,    26,    27,
+       0,    28,     0,     0,     0,     0,     0,     0,    29,     0,
+       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
+       0,     0,    35,    36,    37,     0,     0,     0,     0,     0,
+       0,    38,    39,     0,     0,     2,    -5,    40,     3,     4,
+      41,     5,     0,     7,     8,    64,   118,     0,   119,     0,
+       0,     0,    14,     0,     0,     0,    82,     0,    84,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    65,     0,
+      23,     0,     0,     0,   138,   139,   140,   141,   142,   143,
+       0,   144,     0,     0,   145,   146,   147,     0,    29,     0,
+       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
+     148,   149,   150,   151,   152,   153,   154,     0,     0,     0,
+       0,    38,    39,     0,     0,     0,     0,    40,     0,     0,
+      41,     2,   120,     0,     3,     4,     0,     5,     6,     7,
        8,     9,    10,     0,    11,     0,    12,    13,    14,     0,
        0,     0,    15,    16,    17,    18,     0,     0,     0,    19,
        0,    20,     0,     0,    21,    22,    23,     0,     0,    24,
@@ -869,79 +889,51 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
        0,    30,    31,    32,    33,    34,     0,     0,    35,    36,
       37,     0,     0,     0,     0,     0,     0,    38,    39,     0,
-       0,     2,    -5,    40,     3,     4,    41,     5,     0,     7,
-       8,    64,   118,     0,   119,     0,     0,     0,    14,     0,
-       0,     0,    82,     0,    84,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    65,     0,    23,     0,     0,     0,
-     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
-     145,   146,   147,     0,    29,     0,     0,     0,     0,     0,
-       0,    30,    31,    32,    33,    34,   148,   149,   150,   151,
-     152,   153,   154,     0,     0,     0,     0,    38,    39,     0,
-       0,     0,     0,    40,     0,     0,    41,     2,   120,     0,
-       3,     4,     0,     5,     6,     7,     8,     9,    10,     0,
-      11,     0,    12,    13,    14,     0,     0,     0,    15,    16,
-      17,    18,     0,     0,     0,    19,     0,    20,     0,     0,
-      21,    22,    23,     0,     0,    24,     0,     0,     0,    25,
-      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
-      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,    35,    36,    37,     0,     0,     0,
-       0,     0,     0,    38,    39,     0,     0,     2,     0,    40,
-       3,     4,    41,     5,     6,     7,     8,     9,    10,     0,
-      11,   333,    12,     0,    14,     0,     0,     0,    15,    16,
-      17,    18,     0,     0,     0,     0,     0,    20,     0,     0,
-      21,    22,    23,     0,     0,    24,     0,     0,     0,     0,
-      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
-      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,    35,    36,     0,     0,     0,     0,
-       0,     0,     0,    38,    39,     0,     0,     2,   296,    40,
-       3,     4,    41,     5,     6,     7,     8,     9,    10,     0,
-      11,     0,    12,     0,    14,     0,     0,     0,    15,    16,
-      17,    18,     0,     0,     0,     0,     0,    20,     0,     0,
-      21,    22,    23,     0,     0,    24,     0,     0,     0,     0,
-      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
-      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,    35,    36,     0,     0,     0,     0,
-       0,     0,     0,    38,    39,     0,     0,     2,   296,    40,
-       3,     4,    41,     5,     6,     7,     8,     9,    10,     0,
-      11,     0,    12,     0,    14,     0,     0,     0,    15,    16,
-      17,    18,     0,     0,     0,     0,     0,     0,     0,     0,
-      21,     0,    23,     0,     0,     0,     0,     0,     0,     0,
-      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
-      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,     0,    36,     0,     0,     0,     0,
-       0,     0,     0,    38,    39,     0,     0,     2,     0,    40,
-       3,     4,    41,     5,     6,     7,     8,     9,    10,     0,
-      11,     0,    12,     0,    14,     0,     0,     0,    15,    16,
-      17,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      21,     0,    23,     0,     0,     0,     0,     0,     0,     0,
-      26,    27,     0,    28,     0,     0,     0,     0,     0,     0,
-      29,     0,     0,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,     0,    36,     0,     0,     0,     0,
-       0,     0,     0,    38,    39,     0,     0,     2,     0,    40,
-       3,     4,    41,     5,     0,     7,     8,    64,    10,     0,
-      11,     0,     0,     0,    14,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    81,     0,    82,    83,    84,    85,
-      65,     0,    23,     0,     0,     2,     0,     0,     3,     4,
-       0,     5,     0,     7,     8,    64,    10,     0,    11,     0,
-      29,     0,    14,     0,     0,     0,     0,    30,    31,    32,
-      33,    34,     0,     0,    82,     0,    84,     0,    65,     0,
-      23,     0,     0,    38,    39,     0,     0,     0,     0,    40,
-     101,     0,    41,     0,     0,     0,     0,     0,    29,     0,
-       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    38,    39,     0,     0,     2,     0,    40,     3,     4,
-      41,     5,     0,     7,     8,    64,    10,     0,    11,     0,
-       0,     0,    14,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    65,     2,
-      23,     0,     3,     4,     0,     5,     0,     7,     8,    64,
-      10,     0,    11,     0,     0,     0,    14,     0,    29,     0,
-       0,     0,     0,     0,     0,    30,    31,    32,    33,    34,
-       0,     0,    65,     0,    23,     0,     0,     0,     0,     0,
-       0,    38,    39,     0,     0,     0,     0,    40,     0,     0,
-      41,     0,    29,     0,     0,     0,     0,     0,     0,    30,
+       0,     2,     0,    40,     3,     4,    41,     5,     6,     7,
+       8,     9,    10,     0,    11,   333,    12,     0,    14,     0,
+       0,     0,    15,    16,    17,    18,     0,     0,     0,     0,
+       0,    20,     0,     0,    21,    22,    23,     0,     0,    24,
+       0,     0,     0,     0,    26,    27,     0,    28,     0,     0,
+       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,     0,     0,    35,    36,
+       0,     0,     0,     0,     0,     0,     0,    38,    39,     0,
+       0,     2,   296,    40,     3,     4,    41,     5,     6,     7,
+       8,     9,    10,     0,    11,     0,    12,     0,    14,     0,
+       0,     0,    15,    16,    17,    18,     0,     0,     0,     0,
+       0,    20,     0,     0,    21,    22,    23,     0,     0,    24,
+       0,     0,     0,     0,    26,    27,     0,    28,     0,     0,
+       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,     0,     0,    35,    36,
+       0,     0,     0,     0,     0,     0,     0,    38,    39,     0,
+       0,     2,   296,    40,     3,     4,    41,     5,     6,     7,
+       8,     9,    10,     0,    11,     0,    12,     0,    14,     0,
+       0,     0,    15,    16,    17,    18,     0,     0,     0,     0,
+       0,     0,     0,     0,    21,     0,    23,     0,     0,     0,
+       0,     0,     0,     0,    26,    27,     0,    28,     0,     0,
+       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,     0,     0,     0,    36,
+       0,     0,     0,     0,     0,     0,     0,    38,    39,     0,
+       0,     2,     0,    40,     3,     4,    41,     5,     6,     7,
+       8,     9,    10,     0,    11,     0,    12,     0,    14,     0,
+       0,     0,    15,    16,    17,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    21,     0,    23,     0,     0,     0,
+       0,     0,     0,     0,    26,    27,     0,    28,     0,     0,
+       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,     0,     0,     0,    36,
+       0,     0,     0,     0,     0,     0,     0,    38,    39,     0,
+       0,     2,     0,    40,     3,     4,    41,     5,     0,     7,
+       8,    64,    10,     0,    11,     0,     0,     0,    14,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    81,     0,
+      82,    83,    84,    85,    65,     0,    23,     0,     0,     2,
+       0,     0,     3,     4,     0,     5,     0,     7,     8,    64,
+      10,     0,    11,     0,    29,     0,    14,     0,     0,     0,
+       0,    30,    31,    32,    33,    34,     0,     0,    82,     0,
+      84,     0,    65,     0,    23,     0,     0,    38,    39,     0,
+       0,     0,     0,    40,   101,     0,    41,     0,     0,     0,
+       0,     0,    29,     0,     0,     0,     0,     0,     0,    30,
       31,    32,    33,    34,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    38,    39,     0,     0,     2,
-       0,    67,     3,     4,    41,     5,     0,     7,     8,    64,
+       0,    40,     3,     4,    41,     5,     0,     7,     8,    64,
       10,     0,    11,     0,     0,     0,    14,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    65,     2,    23,     0,     3,     4,     0,     5,
@@ -949,82 +941,93 @@ static const yytype_int16 yytable[] =
       14,     0,    29,     0,     0,     0,     0,     0,     0,    30,
       31,    32,    33,    34,     0,     0,    65,     0,    23,     0,
        0,     0,     0,     0,     0,    38,    39,     0,     0,     0,
-       0,    70,     0,     0,    41,   187,    29,     0,     0,     0,
-       0,   188,     0,    30,    31,    32,    33,    34,     0,     0,
-       0,   138,   139,   140,   141,   142,   143,     0,   144,    38,
-      39,   145,   146,   147,     0,    74,     0,     0,    41,   189,
-       0,     0,     0,     0,     0,   190,     0,   148,   149,   150,
-     151,   152,   153,   154,     0,   138,   139,   140,   141,   142,
+       0,    40,     0,     0,    41,     0,    29,     0,     0,     0,
+       0,     0,     0,    30,    31,    32,    33,    34,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    38,
+      39,     0,     0,     2,     0,    67,     3,     4,    41,     5,
+       0,     7,     8,    64,    10,     0,    11,     0,     0,     0,
+      14,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    65,     2,    23,     0,
+       3,     4,     0,     5,     0,     7,     8,    64,    10,     0,
+      11,     0,     0,     0,    14,     0,    29,     0,     0,     0,
+       0,     0,     0,    30,    31,    32,    33,    34,     0,     0,
+      65,     0,    23,     0,     0,     0,     0,     0,     0,    38,
+      39,     0,     0,     0,     0,    70,     0,     0,    41,   187,
+      29,     0,     0,     0,     0,   188,     0,    30,    31,    32,
+      33,    34,     0,     0,     0,   138,   139,   140,   141,   142,
+     143,     0,   144,    38,    39,   145,   146,   147,     0,    74,
+       0,     0,    41,   189,     0,     0,     0,     0,     0,   190,
+       0,   148,   149,   150,   151,   152,   153,   154,     0,   138,
+     139,   140,   141,   142,   143,     0,   144,     0,     0,   145,
+     146,   147,     0,     0,     0,     0,   191,     0,     0,     0,
+       0,     0,   192,     0,     0,   148,   149,   150,   151,   152,
+     153,   154,   138,   139,   140,   141,   142,   143,     0,   144,
+       0,     0,   145,   146,   147,     0,     0,     0,     0,   193,
+       0,     0,     0,     0,     0,   194,     0,     0,   148,   149,
+     150,   151,   152,   153,   154,   138,   139,   140,   141,   142,
      143,     0,   144,     0,     0,   145,   146,   147,     0,     0,
-       0,     0,   191,     0,     0,     0,     0,     0,   192,     0,
+       0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
        0,   148,   149,   150,   151,   152,   153,   154,   138,   139,
      140,   141,   142,   143,     0,   144,     0,     0,   145,   146,
-     147,     0,     0,     0,     0,   193,     0,     0,     0,     0,
-       0,   194,     0,     0,   148,   149,   150,   151,   152,   153,
+     147,     0,     0,     0,     0,   290,     0,     0,     0,     0,
+       0,     0,     0,     0,   148,   149,   150,   151,   152,   153,
      154,   138,   139,   140,   141,   142,   143,     0,   144,     0,
-       0,   145,   146,   147,     0,     0,     0,     0,   289,     0,
+       0,   145,   146,   147,     0,     0,     0,     0,   291,     0,
        0,     0,     0,     0,     0,     0,     0,   148,   149,   150,
      151,   152,   153,   154,   138,   139,   140,   141,   142,   143,
        0,   144,     0,     0,   145,   146,   147,     0,     0,     0,
-       0,   290,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   292,     0,     0,     0,     0,     0,     0,     0,     0,
      148,   149,   150,   151,   152,   153,   154,   138,   139,   140,
      141,   142,   143,     0,   144,     0,     0,   145,   146,   147,
-       0,     0,     0,     0,   291,     0,     0,     0,     0,     0,
-       0,     0,     0,   148,   149,   150,   151,   152,   153,   154,
-     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
-     145,   146,   147,     0,     0,     0,     0,   292,     0,     0,
-       0,     0,     0,     0,     0,     0,   148,   149,   150,   151,
-     152,   153,   154,   138,   139,   140,   141,   142,   143,     0,
-     144,     0,     0,   145,   146,   147,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   197,     0,     0,   148,
-     149,   150,   151,   152,   153,   154,   138,   139,   140,   141,
-     142,   143,     0,   144,     0,     0,   145,   146,   147,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   148,   149,   150,   151,   152,   153,   154,   184,
-     198,     0,     0,     0,     0,     0,     0,   138,   139,   140,
-     141,   142,   143,     0,   144,     0,     0,   145,   146,   147,
+     197,     0,     0,   148,   149,   150,   151,   152,   153,   154,
      138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     145,   146,   147,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,   148,   149,   150,   151,
-     152,   153,   154,     0,     0,     0,   202,   138,   139,   140,
-     141,   142,   143,     0,   144,     0,     0,   145,   146,   147,
-       0,     0,     0,     0,     0,   195,   196,     0,     0,     0,
-       0,     0,     0,   148,   149,   150,   151,   152,   153,   154,
-     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
-     145,   146,   147,   138,   139,   140,   141,     0,     0,     0,
-     144,     0,     0,   145,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,     0,     0,     0,     0,     0,     0,   148,
-     149,   150,   151,   152,   153,   154
+     152,   153,   154,   184,   198,     0,     0,     0,     0,     0,
+       0,   138,   139,   140,   141,   142,   143,     0,   144,     0,
+       0,   145,   146,   147,   138,   139,   140,   141,   142,   143,
+       0,   144,     0,     0,   145,   146,   147,   148,   149,   150,
+     151,   152,   153,   154,     0,     0,     0,     0,     0,     0,
+     148,   149,   150,   151,   152,   153,   154,     0,     0,     0,
+     202,   138,   139,   140,   141,   142,   143,     0,   144,     0,
+       0,   145,   146,   147,     0,     0,     0,     0,     0,   195,
+     196,     0,     0,     0,     0,     0,     0,   148,   149,   150,
+     151,   152,   153,   154,   138,   139,   140,   141,   142,   143,
+       0,   144,     0,     0,   145,   146,   147,   138,   139,   140,
+     141,     0,     0,     0,   144,     0,     0,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,     0,     0,     0,
+       0,     0,     0,   148,   149,   150,   151,   152,   153,   154
 };
 
 static const yytype_int16 yycheck[] =
 {
        4,     8,     6,     7,    78,     9,     0,   165,     0,   267,
-      27,     6,     7,    17,    30,   283,    31,    21,    37,    46,
-      49,    93,    26,    27,    96,    29,    30,    31,    32,    33,
-      34,    35,    61,    49,    38,    39,    40,    41,    21,    22,
-      66,    93,    61,    12,    48,   303,    50,    51,    49,    18,
-      49,    22,    93,    22,    23,    96,    25,   325,    51,    52,
-      61,    65,    61,    67,    90,    91,    70,    82,    93,    86,
-      74,    96,    67,    77,    23,    70,    25,    22,    82,    31,
-      32,    66,    77,    46,    69,   102,    66,    94,    95,    72,
-      73,    74,    75,    95,    96,   353,    22,    95,    96,    95,
-      96,    93,    87,    88,    89,    90,    91,    94,    88,    89,
-      90,    91,    96,    22,    96,    22,    41,    15,    16,    17,
-      22,   131,   132,    96,    22,   129,   130,   285,    97,    49,
-     134,    29,    48,   127,   138,   139,   140,   141,   142,   143,
+      27,     6,     7,    17,    32,   283,    67,    21,    38,    52,
+      53,    50,    26,    27,    94,    29,    30,    31,    32,    33,
+      34,    35,    31,    62,    38,    39,    40,    41,    22,    23,
+      91,    92,    62,    13,    48,   303,    50,    51,    50,    19,
+      50,    50,    94,    23,    24,    97,    26,   325,    96,    97,
+      62,    65,    62,    67,    94,    83,    70,    97,    94,    86,
+      74,    97,    67,    77,    47,    70,    67,    23,    82,    70,
+      47,    67,    77,    95,    24,   102,    26,    94,    95,    73,
+      74,    75,    76,    96,    97,   353,    23,    88,    89,    90,
+      91,    92,    94,    89,    90,    91,    92,    96,    97,    16,
+      17,    18,    32,    33,    23,    97,    23,    97,    23,    42,
+      23,   131,   132,    30,    23,   129,   130,   285,    98,    50,
+     134,    49,    97,   127,   138,   139,   140,   141,   142,   143,
      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,    22,   156,    22,    22,    99,   160,    99,    98,   163,
-      96,    96,    96,    43,    22,   169,    96,    48,   242,   173,
-     174,    22,   176,   177,    22,    22,   180,   181,   182,    96,
-     184,    48,    22,   187,   188,   189,   190,   191,   192,   193,
-     194,   195,   196,    83,    49,    22,   203,   204,    84,    49,
-     210,   211,   206,    22,   214,    38,    83,    82,    96,    83,
-      22,   268,    48,    83,   127,   172,    82,    82,   207,   198,
-     277,    51,   279,    51,    -1,    51,    59,    60,    61,    62,
-      63,    64,    -1,    66,    67,    68,    69,    70,    71,    -1,
+     154,    23,   156,    23,    23,   100,   160,   100,    99,   163,
+      97,    97,    97,    44,    23,   169,    97,    49,   242,   173,
+     174,    23,   176,   177,    23,    23,   180,   181,   182,    23,
+     184,    49,    97,   187,   188,   189,   190,   191,   192,   193,
+     194,   195,   196,    84,    50,    23,   203,   204,    85,    50,
+     210,   211,   206,    23,   214,    39,    84,    83,    97,    84,
+      23,   268,    49,    84,   127,   198,    83,    83,    51,   172,
+     277,    51,   279,    -1,    51,    -1,    60,    61,    62,    63,
+      64,    65,   207,    67,    68,    69,    70,    71,    72,    -1,
       -1,    -1,    -1,    -1,    -1,   249,   250,    -1,   305,    -1,
-     307,    -1,    85,    86,    87,    88,    89,    90,    91,    -1,
+     307,    -1,    86,    87,    88,    89,    90,    91,    92,    -1,
       -1,    -1,    -1,    -1,   338,    -1,   276,    -1,    -1,   343,
       -1,    -1,    -1,   330,    -1,    -1,    -1,   334,    -1,   336,
       -1,   288,    -1,   293,   294,   289,   290,   291,   292,   299,
@@ -1032,208 +1035,208 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,   319,
       -1,   321,    -1,    -1,   318,    -1,    -1,    -1,    -1,   329,
       -1,   331,   326,    -1,    -1,    -1,    -1,   337,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   341,   348,     0,
-       1,   351,    -1,    -1,    -1,    -1,    -1,   357,    -1,   359,
-      -1,    12,    -1,    -1,    15,    16,   366,    18,    19,    20,
-      21,    22,    23,    -1,    25,    -1,    27,    28,    29,    -1,
-      -1,    -1,    33,    34,    35,    36,    -1,    -1,    -1,    40,
-      -1,    42,    -1,    -1,    45,    46,    47,    -1,    -1,    50,
-      -1,    -1,    -1,    54,    55,    56,    -1,    58,    -1,    -1,
-      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    73,    74,    75,    76,    -1,    -1,    79,    80,
-      81,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,
-      -1,    12,    93,    94,    15,    16,    97,    18,    -1,    20,
-      21,    22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,
-      -1,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    45,    -1,    47,    -1,    -1,    -1,
-      59,    60,    61,    62,    63,    64,    -1,    66,    -1,    -1,
-      69,    70,    71,    -1,    65,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    73,    74,    75,    76,    85,    86,    87,    88,
-      89,    90,    91,    -1,    -1,    -1,    -1,    88,    89,    -1,
-      -1,    -1,    -1,    94,    -1,    -1,    97,    12,    99,    -1,
-      15,    16,    -1,    18,    19,    20,    21,    22,    23,    -1,
-      25,    -1,    27,    28,    29,    -1,    -1,    -1,    33,    34,
-      35,    36,    -1,    -1,    -1,    40,    -1,    42,    -1,    -1,
-      45,    46,    47,    -1,    -1,    50,    -1,    -1,    -1,    54,
-      55,    56,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
-      75,    76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    -1,    -1,    12,    -1,    94,
-      15,    16,    97,    18,    19,    20,    21,    22,    23,    -1,
-      25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
-      35,    36,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-      45,    46,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,
-      55,    56,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
-      75,    76,    -1,    -1,    79,    80,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    -1,    -1,    12,    93,    94,
-      15,    16,    97,    18,    19,    20,    21,    22,    23,    -1,
-      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
-      35,    36,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-      45,    46,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,
-      55,    56,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
-      75,    76,    -1,    -1,    79,    80,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    -1,    -1,    12,    93,    94,
-      15,    16,    97,    18,    19,    20,    21,    22,    23,    -1,
-      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
-      35,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      45,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      55,    56,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
-      75,    76,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    -1,    -1,    12,    -1,    94,
-      15,    16,    97,    18,    19,    20,    21,    22,    23,    -1,
-      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,    34,
-      35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      45,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      55,    56,    -1,    58,    -1,    -1,    -1,    -1,    -1,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,
-      75,    76,    -1,    -1,    -1,    80,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    -1,    -1,    12,    -1,    94,
-      15,    16,    97,    18,    -1,    20,    21,    22,    23,    -1,
-      25,    -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    39,    -1,    41,    42,    43,    44,
-      45,    -1,    47,    -1,    -1,    12,    -1,    -1,    15,    16,
-      -1,    18,    -1,    20,    21,    22,    23,    -1,    25,    -1,
-      65,    -1,    29,    -1,    -1,    -1,    -1,    72,    73,    74,
-      75,    76,    -1,    -1,    41,    -1,    43,    -1,    45,    -1,
-      47,    -1,    -1,    88,    89,    -1,    -1,    -1,    -1,    94,
-      57,    -1,    97,    -1,    -1,    -1,    -1,    -1,    65,    -1,
-      -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    -1,    -1,    12,    -1,    94,    15,    16,
-      97,    18,    -1,    20,    21,    22,    23,    -1,    25,    -1,
-      -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    12,
-      47,    -1,    15,    16,    -1,    18,    -1,    20,    21,    22,
-      23,    -1,    25,    -1,    -1,    -1,    29,    -1,    65,    -1,
-      -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,
-      -1,    -1,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    -1,    -1,    -1,    -1,    94,    -1,    -1,
-      97,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      73,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    12,
-      -1,    94,    15,    16,    97,    18,    -1,    20,    21,    22,
-      23,    -1,    25,    -1,    -1,    -1,    29,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   341,   348,    -1,
+      -1,   351,     0,     1,    -1,    -1,    -1,   357,    -1,   359,
+      -1,    -1,    -1,    -1,    -1,    13,   366,    -1,    16,    17,
+      -1,    19,    20,    21,    22,    23,    24,    -1,    26,    -1,
+      28,    29,    30,    -1,    -1,    -1,    34,    35,    36,    37,
+      -1,    -1,    -1,    41,    -1,    43,    -1,    -1,    46,    47,
+      48,    -1,    -1,    51,    -1,    -1,    -1,    55,    56,    57,
+      -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,
+      -1,    -1,    -1,    -1,    -1,    73,    74,    75,    76,    77,
+      -1,    -1,    80,    81,    82,    -1,    -1,    -1,    -1,    -1,
+      -1,    89,    90,    -1,    -1,    13,    94,    95,    16,    17,
+      98,    19,    -1,    21,    22,    23,    24,    -1,    26,    -1,
+      -1,    -1,    30,    -1,    -1,    -1,    42,    -1,    44,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,
+      48,    -1,    -1,    -1,    60,    61,    62,    63,    64,    65,
+      -1,    67,    -1,    -1,    70,    71,    72,    -1,    66,    -1,
+      -1,    -1,    -1,    -1,    -1,    73,    74,    75,    76,    77,
+      86,    87,    88,    89,    90,    91,    92,    -1,    -1,    -1,
+      -1,    89,    90,    -1,    -1,    -1,    -1,    95,    -1,    -1,
+      98,    13,   100,    -1,    16,    17,    -1,    19,    20,    21,
+      22,    23,    24,    -1,    26,    -1,    28,    29,    30,    -1,
+      -1,    -1,    34,    35,    36,    37,    -1,    -1,    -1,    41,
+      -1,    43,    -1,    -1,    46,    47,    48,    -1,    -1,    51,
+      -1,    -1,    -1,    55,    56,    57,    -1,    59,    -1,    -1,
+      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    74,    75,    76,    77,    -1,    -1,    80,    81,
+      82,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    -1,
+      -1,    13,    -1,    95,    16,    17,    98,    19,    20,    21,
+      22,    23,    24,    -1,    26,    27,    28,    -1,    30,    -1,
+      -1,    -1,    34,    35,    36,    37,    -1,    -1,    -1,    -1,
+      -1,    43,    -1,    -1,    46,    47,    48,    -1,    -1,    51,
+      -1,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
+      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    74,    75,    76,    77,    -1,    -1,    80,    81,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    -1,
+      -1,    13,    94,    95,    16,    17,    98,    19,    20,    21,
+      22,    23,    24,    -1,    26,    -1,    28,    -1,    30,    -1,
+      -1,    -1,    34,    35,    36,    37,    -1,    -1,    -1,    -1,
+      -1,    43,    -1,    -1,    46,    47,    48,    -1,    -1,    51,
+      -1,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
+      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    74,    75,    76,    77,    -1,    -1,    80,    81,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    -1,
+      -1,    13,    94,    95,    16,    17,    98,    19,    20,    21,
+      22,    23,    24,    -1,    26,    -1,    28,    -1,    30,    -1,
+      -1,    -1,    34,    35,    36,    37,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    46,    -1,    48,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
+      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    74,    75,    76,    77,    -1,    -1,    -1,    81,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    -1,
+      -1,    13,    -1,    95,    16,    17,    98,    19,    20,    21,
+      22,    23,    24,    -1,    26,    -1,    28,    -1,    30,    -1,
+      -1,    -1,    34,    35,    36,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    46,    -1,    48,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
+      -1,    -1,    -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    74,    75,    76,    77,    -1,    -1,    -1,    81,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    -1,
+      -1,    13,    -1,    95,    16,    17,    98,    19,    -1,    21,
+      22,    23,    24,    -1,    26,    -1,    -1,    -1,    30,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,
+      42,    43,    44,    45,    46,    -1,    48,    -1,    -1,    13,
+      -1,    -1,    16,    17,    -1,    19,    -1,    21,    22,    23,
+      24,    -1,    26,    -1,    66,    -1,    30,    -1,    -1,    -1,
+      -1,    73,    74,    75,    76,    77,    -1,    -1,    42,    -1,
+      44,    -1,    46,    -1,    48,    -1,    -1,    89,    90,    -1,
+      -1,    -1,    -1,    95,    58,    -1,    98,    -1,    -1,    -1,
+      -1,    -1,    66,    -1,    -1,    -1,    -1,    -1,    -1,    73,
+      74,    75,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    89,    90,    -1,    -1,    13,
+      -1,    95,    16,    17,    98,    19,    -1,    21,    22,    23,
+      24,    -1,    26,    -1,    -1,    -1,    30,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    45,    12,    47,    -1,    15,    16,    -1,    18,
-      -1,    20,    21,    22,    23,    -1,    25,    -1,    -1,    -1,
-      29,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      73,    74,    75,    76,    -1,    -1,    45,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,
-      -1,    94,    -1,    -1,    97,    43,    65,    -1,    -1,    -1,
-      -1,    49,    -1,    72,    73,    74,    75,    76,    -1,    -1,
-      -1,    59,    60,    61,    62,    63,    64,    -1,    66,    88,
-      89,    69,    70,    71,    -1,    94,    -1,    -1,    97,    43,
-      -1,    -1,    -1,    -1,    -1,    49,    -1,    85,    86,    87,
-      88,    89,    90,    91,    -1,    59,    60,    61,    62,    63,
-      64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,
-      -1,    -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    -1,
-      -1,    85,    86,    87,    88,    89,    90,    91,    59,    60,
-      61,    62,    63,    64,    -1,    66,    -1,    -1,    69,    70,
-      71,    -1,    -1,    -1,    -1,    43,    -1,    -1,    -1,    -1,
-      -1,    49,    -1,    -1,    85,    86,    87,    88,    89,    90,
-      91,    59,    60,    61,    62,    63,    64,    -1,    66,    -1,
-      -1,    69,    70,    71,    -1,    -1,    -1,    -1,    43,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,
-      88,    89,    90,    91,    59,    60,    61,    62,    63,    64,
-      -1,    66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      85,    86,    87,    88,    89,    90,    91,    59,    60,    61,
-      62,    63,    64,    -1,    66,    -1,    -1,    69,    70,    71,
-      -1,    -1,    -1,    -1,    43,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    85,    86,    87,    88,    89,    90,    91,
-      59,    60,    61,    62,    63,    64,    -1,    66,    -1,    -1,
-      69,    70,    71,    -1,    -1,    -1,    -1,    43,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,    88,
-      89,    90,    91,    59,    60,    61,    62,    63,    64,    -1,
-      66,    -1,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    85,
-      86,    87,    88,    89,    90,    91,    59,    60,    61,    62,
-      63,    64,    -1,    66,    -1,    -1,    69,    70,    71,    -1,
+      -1,    -1,    46,    13,    48,    -1,    16,    17,    -1,    19,
+      -1,    21,    22,    23,    24,    -1,    26,    -1,    -1,    -1,
+      30,    -1,    66,    -1,    -1,    -1,    -1,    -1,    -1,    73,
+      74,    75,    76,    77,    -1,    -1,    46,    -1,    48,    -1,
+      -1,    -1,    -1,    -1,    -1,    89,    90,    -1,    -1,    -1,
+      -1,    95,    -1,    -1,    98,    -1,    66,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    74,    75,    76,    77,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      90,    -1,    -1,    13,    -1,    95,    16,    17,    98,    19,
+      -1,    21,    22,    23,    24,    -1,    26,    -1,    -1,    -1,
+      30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    46,    13,    48,    -1,
+      16,    17,    -1,    19,    -1,    21,    22,    23,    24,    -1,
+      26,    -1,    -1,    -1,    30,    -1,    66,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    74,    75,    76,    77,    -1,    -1,
+      46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      90,    -1,    -1,    -1,    -1,    95,    -1,    -1,    98,    44,
+      66,    -1,    -1,    -1,    -1,    50,    -1,    73,    74,    75,
+      76,    77,    -1,    -1,    -1,    60,    61,    62,    63,    64,
+      65,    -1,    67,    89,    90,    70,    71,    72,    -1,    95,
+      -1,    -1,    98,    44,    -1,    -1,    -1,    -1,    -1,    50,
+      -1,    86,    87,    88,    89,    90,    91,    92,    -1,    60,
+      61,    62,    63,    64,    65,    -1,    67,    -1,    -1,    70,
+      71,    72,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,
+      -1,    -1,    50,    -1,    -1,    86,    87,    88,    89,    90,
+      91,    92,    60,    61,    62,    63,    64,    65,    -1,    67,
+      -1,    -1,    70,    71,    72,    -1,    -1,    -1,    -1,    44,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    86,    87,
+      88,    89,    90,    91,    92,    60,    61,    62,    63,    64,
+      65,    -1,    67,    -1,    -1,    70,    71,    72,    -1,    -1,
+      -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    86,    87,    88,    89,    90,    91,    92,    60,    61,
+      62,    63,    64,    65,    -1,    67,    -1,    -1,    70,    71,
+      72,    -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,    91,
+      92,    60,    61,    62,    63,    64,    65,    -1,    67,    -1,
+      -1,    70,    71,    72,    -1,    -1,    -1,    -1,    44,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
+      89,    90,    91,    92,    60,    61,    62,    63,    64,    65,
+      -1,    67,    -1,    -1,    70,    71,    72,    -1,    -1,    -1,
+      -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      86,    87,    88,    89,    90,    91,    92,    60,    61,    62,
+      63,    64,    65,    -1,    67,    -1,    -1,    70,    71,    72,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    85,    86,    87,    88,    89,    90,    91,    51,
-      93,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    61,
-      62,    63,    64,    -1,    66,    -1,    -1,    69,    70,    71,
-      59,    60,    61,    62,    63,    64,    -1,    66,    -1,    -1,
-      69,    70,    71,    85,    86,    87,    88,    89,    90,    91,
-      -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,    88,
-      89,    90,    91,    -1,    -1,    -1,    95,    59,    60,    61,
-      62,    63,    64,    -1,    66,    -1,    -1,    69,    70,    71,
-      -1,    -1,    -1,    -1,    -1,    77,    78,    -1,    -1,    -1,
-      -1,    -1,    -1,    85,    86,    87,    88,    89,    90,    91,
-      59,    60,    61,    62,    63,    64,    -1,    66,    -1,    -1,
-      69,    70,    71,    59,    60,    61,    62,    -1,    -1,    -1,
-      66,    -1,    -1,    69,    70,    71,    85,    86,    87,    88,
-      89,    90,    91,    -1,    -1,    -1,    -1,    -1,    -1,    85,
-      86,    87,    88,    89,    90,    91
+      50,    -1,    -1,    86,    87,    88,    89,    90,    91,    92,
+      60,    61,    62,    63,    64,    65,    -1,    67,    -1,    -1,
+      70,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,
+      90,    91,    92,    52,    94,    -1,    -1,    -1,    -1,    -1,
+      -1,    60,    61,    62,    63,    64,    65,    -1,    67,    -1,
+      -1,    70,    71,    72,    60,    61,    62,    63,    64,    65,
+      -1,    67,    -1,    -1,    70,    71,    72,    86,    87,    88,
+      89,    90,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,
+      86,    87,    88,    89,    90,    91,    92,    -1,    -1,    -1,
+      96,    60,    61,    62,    63,    64,    65,    -1,    67,    -1,
+      -1,    70,    71,    72,    -1,    -1,    -1,    -1,    -1,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
+      89,    90,    91,    92,    60,    61,    62,    63,    64,    65,
+      -1,    67,    -1,    -1,    70,    71,    72,    60,    61,    62,
+      63,    -1,    -1,    -1,    67,    -1,    -1,    70,    71,    72,
+      86,    87,    88,    89,    90,    91,    92,    -1,    -1,    -1,
+      -1,    -1,    -1,    86,    87,    88,    89,    90,    91,    92
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     1,    12,    15,    16,    18,    19,    20,    21,    22,
-      23,    25,    27,    28,    29,    33,    34,    35,    36,    40,
-      42,    45,    46,    47,    50,    54,    55,    56,    58,    65,
-      72,    73,    74,    75,    76,    79,    80,    81,    88,    89,
-      94,    97,   101,   102,   103,   104,   106,   108,   112,   113,
-     114,   119,   120,   121,   122,   123,   124,   130,   132,   134,
-     138,   143,   146,    93,    22,    45,   121,    94,   121,   144,
-      94,   144,    22,   120,    94,   121,   145,   133,   137,    46,
-     125,    39,    41,    42,    43,    44,   121,   131,   135,    46,
-     121,    51,    52,    15,    16,    17,    22,    29,    22,    22,
-     121,    57,   121,   131,    22,   129,   121,   121,   121,   121,
-     121,   121,   121,   126,   139,   121,   121,   121,    23,    25,
-      99,   121,   147,   148,   149,   150,     0,    93,   121,    37,
-      61,   121,   105,   111,   114,   121,   124,   143,    59,    60,
-      61,    62,    63,    64,    66,    69,    70,    71,    85,    86,
-      87,    88,    89,    90,    91,   116,    94,   121,   121,   144,
-      96,   144,   144,    96,   144,   116,    22,   127,   121,    41,
-     131,    22,    38,    67,    68,    22,    49,    61,   120,   120,
-      49,    61,    49,    48,    51,   131,    96,    43,    49,    43,
-      49,    43,    49,    43,    49,    77,    78,    49,    93,    22,
-     128,    22,    95,    99,    99,    98,    96,    96,   102,   117,
-     121,   121,   117,   117,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,    22,   140,    95,   121,    95,    95,   121,   140,
-      96,   121,   136,    22,   123,   121,   121,   121,   121,    49,
-      61,    43,   121,   121,   121,   121,    22,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   107,   107,    96,
-     120,   120,   121,    23,    25,   150,   118,   117,   117,    48,
-     117,    93,    96,    93,    22,   116,   121,   121,    22,    43,
-      43,    43,    43,   104,   118,    22,    93,   106,   117,   118,
-      30,    49,   118,    48,    96,   142,    22,   142,   140,   120,
-     121,   121,   121,   121,   117,   117,    83,   117,    49,   121,
-     117,   104,    22,   118,   118,    93,    49,    84,    83,   121,
-     117,   109,   117,    26,   142,   121,   117,   118,    31,    32,
-     110,   115,   117,    31,    82,    22,   141,   118,   118,   117,
-     116,   121,    82,   116,    96,   117,    83,   118,   117,   104,
-      22,    83,   117,    48,   117,    82,   118,    82,   117
+       0,     1,    13,    16,    17,    19,    20,    21,    22,    23,
+      24,    26,    28,    29,    30,    34,    35,    36,    37,    41,
+      43,    46,    47,    48,    51,    55,    56,    57,    59,    66,
+      73,    74,    75,    76,    77,    80,    81,    82,    89,    90,
+      95,    98,   102,   103,   104,   105,   107,   109,   113,   114,
+     115,   120,   121,   122,   123,   124,   125,   131,   133,   135,
+     139,   144,   147,    94,    23,    46,   122,    95,   122,   145,
+      95,   145,    23,   121,    95,   122,   146,   134,   138,    47,
+     126,    40,    42,    43,    44,    45,   122,   132,   136,    47,
+     122,    52,    53,    16,    17,    18,    23,    30,    23,    23,
+     122,    58,   122,   132,    23,   130,   122,   122,   122,   122,
+     122,   122,   122,   127,   140,   122,   122,   122,    24,    26,
+     100,   122,   148,   149,   150,   151,     0,    94,   122,    38,
+      62,   122,   106,   112,   115,   122,   125,   144,    60,    61,
+      62,    63,    64,    65,    67,    70,    71,    72,    86,    87,
+      88,    89,    90,    91,    92,   117,    95,   122,   122,   145,
+      97,   145,   145,    97,   145,   117,    23,   128,   122,    42,
+     132,    23,    39,    68,    69,    23,    50,    62,   121,   121,
+      50,    62,    50,    49,    52,   132,    97,    44,    50,    44,
+      50,    44,    50,    44,    50,    78,    79,    50,    94,    23,
+     129,    23,    96,   100,   100,    99,    97,    97,   103,   118,
+     122,   122,   118,   118,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,    23,   141,    96,   122,    96,    96,   122,   141,
+      97,   122,   137,    23,   124,   122,   122,   122,   122,    50,
+      62,    44,   122,   122,   122,   122,    23,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   108,   108,    97,
+     121,   121,   122,    24,    26,   151,   119,   118,   118,    49,
+     118,    94,    97,    94,    23,   117,   122,   122,    23,    44,
+      44,    44,    44,   105,   119,    23,    94,   107,   118,   119,
+      31,    50,   119,    49,    97,   143,    23,   143,   141,   121,
+     122,   122,   122,   122,   118,   118,    84,   118,    50,   122,
+     118,   105,    23,   119,   119,    94,    50,    85,    84,   122,
+     118,   110,   118,    27,   143,   122,   118,   119,    32,    33,
+     111,   116,   118,    32,    83,    23,   142,   119,   119,   118,
+     117,   122,    83,   117,    97,   118,    84,   119,   118,   105,
+      23,    84,   118,    49,   118,    83,   119,    83,   118
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   100,   101,   101,   101,   102,   102,   102,   103,   103,
-     103,   103,   103,   103,   103,   103,   103,   103,   103,   103,
-     104,   104,   104,   105,   105,   105,   105,   106,   106,   106,
-     106,   106,   106,   106,   106,   106,   106,   107,   108,   108,
-     109,   109,   110,   111,   111,   112,   113,   114,   115,   116,
-     117,   118,   118,   118,   119,   120,   120,   120,   120,   120,
-     120,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
-     121,   121,   121,   122,   122,   122,   122,   122,   122,   122,
-     122,   123,   123,   124,   124,   124,   124,   124,   125,   124,
-     126,   124,   124,   124,   124,   124,   124,   127,   127,   128,
-     128,   129,   129,   130,   130,   130,   130,   130,   130,   131,
-     131,   132,   132,   132,   132,   133,   132,   135,   136,   134,
-     134,   137,   134,   134,   134,   139,   138,   140,   140,   140,
-     140,   141,   141,   141,   142,   143,   144,   144,   144,   145,
-     145,   146,   147,   147,   147,   147,   148,   148,   149,   149,
-     150,   150
+       0,   101,   102,   102,   102,   103,   103,   103,   104,   104,
+     104,   104,   104,   104,   104,   104,   104,   104,   104,   104,
+     105,   105,   105,   106,   106,   106,   106,   107,   107,   107,
+     107,   107,   107,   107,   107,   107,   107,   108,   109,   109,
+     110,   110,   111,   112,   112,   113,   114,   115,   116,   117,
+     118,   119,   119,   119,   120,   121,   121,   121,   121,   121,
+     121,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
+     122,   122,   122,   123,   123,   123,   123,   123,   123,   123,
+     123,   124,   124,   125,   125,   125,   125,   125,   126,   125,
+     127,   125,   125,   125,   125,   125,   125,   128,   128,   129,
+     129,   130,   130,   131,   131,   131,   131,   131,   131,   132,
+     132,   133,   133,   133,   133,   134,   133,   136,   137,   135,
+     135,   138,   135,   135,   135,   140,   139,   141,   141,   141,
+     141,   142,   142,   142,   143,   144,   145,   145,   145,   146,
+     146,   147,   148,   148,   148,   148,   149,   149,   150,   150,
+     151,   151
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1691,76 +1694,76 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   switch (yytype)
     {
-    case 19: /* BLTIN  */
+    case 20: /* BLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1698 "engines/director/lingo/lingo-gr.cpp"
+#line 1701 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 20: /* FBLTIN  */
+    case 21: /* FBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1704 "engines/director/lingo/lingo-gr.cpp"
+#line 1707 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 21: /* RBLTIN  */
+    case 22: /* RBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1710 "engines/director/lingo/lingo-gr.cpp"
+#line 1713 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 22: /* ID  */
+    case 23: /* ID  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1716 "engines/director/lingo/lingo-gr.cpp"
+#line 1719 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 23: /* STRING  */
+    case 24: /* STRING  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1722 "engines/director/lingo/lingo-gr.cpp"
+#line 1725 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 24: /* HANDLER  */
+    case 25: /* HANDLER  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1728 "engines/director/lingo/lingo-gr.cpp"
+#line 1731 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 25: /* SYMBOL  */
+    case 26: /* SYMBOL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1734 "engines/director/lingo/lingo-gr.cpp"
+#line 1737 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 26: /* ENDCLAUSE  */
+    case 27: /* ENDCLAUSE  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1740 "engines/director/lingo/lingo-gr.cpp"
+#line 1743 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 27: /* tPLAYACCEL  */
+    case 28: /* tPLAYACCEL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1746 "engines/director/lingo/lingo-gr.cpp"
+#line 1749 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 28: /* tMETHOD  */
+    case 29: /* tMETHOD  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1752 "engines/director/lingo/lingo-gr.cpp"
+#line 1755 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 29: /* THEOBJECTFIELD  */
+    case 30: /* THEOBJECTFIELD  */
 #line 131 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 1758 "engines/director/lingo/lingo-gr.cpp"
+#line 1761 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 138: /* on  */
+    case 139: /* on  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1764 "engines/director/lingo/lingo-gr.cpp"
+#line 1767 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2030,7 +2033,7 @@ yyreduce:
   case 4:
 #line 137 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2034 "engines/director/lingo/lingo-gr.cpp"
+#line 2037 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2041,7 +2044,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2045 "engines/director/lingo/lingo-gr.cpp"
+#line 2048 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2049,19 +2052,19 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2053 "engines/director/lingo/lingo-gr.cpp"
+#line 2056 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 152 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2059 "engines/director/lingo/lingo-gr.cpp"
+#line 2062 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 153 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2065 "engines/director/lingo/lingo-gr.cpp"
+#line 2068 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2072,7 +2075,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2076 "engines/director/lingo/lingo-gr.cpp"
+#line 2079 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2084,7 +2087,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2088 "engines/director/lingo/lingo-gr.cpp"
+#line 2091 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2095,7 +2098,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2099 "engines/director/lingo/lingo-gr.cpp"
+#line 2102 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2107,7 +2110,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2111 "engines/director/lingo/lingo-gr.cpp"
+#line 2114 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2118,7 +2121,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2122 "engines/director/lingo/lingo-gr.cpp"
+#line 2125 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2129,14 +2132,15 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2133 "engines/director/lingo/lingo-gr.cpp"
+#line 2136 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
 #line 193 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
-			error("LEXER: keyword 'menu' expected");
+			warning("LEXER: keyword 'menu' expected");
+			YYERROR;
 		}
 
 		warning("STUB: menuItem entity");
@@ -2144,33 +2148,33 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2148 "engines/director/lingo/lingo-gr.cpp"
+#line 2152 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
-#line 203 "engines/director/lingo/lingo-gr.y"
+#line 204 "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 2159 "engines/director/lingo/lingo-gr.cpp"
+#line 2163 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
-#line 225 "engines/director/lingo/lingo-gr.y"
+#line 226 "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 2170 "engines/director/lingo/lingo-gr.cpp"
+#line 2174 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
-#line 236 "engines/director/lingo/lingo-gr.y"
+#line 237 "engines/director/lingo/lingo-gr.y"
                                                                                            {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[-7].code) - (yyvsp[-9].code));
@@ -2183,11 +2187,11 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 5] = end; }
-#line 2187 "engines/director/lingo/lingo-gr.cpp"
+#line 2191 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
-#line 253 "engines/director/lingo/lingo-gr.y"
+#line 254 "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));
@@ -2200,11 +2204,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 2204 "engines/director/lingo/lingo-gr.cpp"
+#line 2208 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
-#line 265 "engines/director/lingo/lingo-gr.y"
+#line 266 "engines/director/lingo/lingo-gr.y"
                                                                       {
 		inst list = 0, body = 0, end = 0;
 		WRITE_UINT32(&list, (yyvsp[-4].code) - (yyvsp[-6].code));
@@ -2215,54 +2219,54 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 4] = 0;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 5] = end; }
-#line 2219 "engines/director/lingo/lingo-gr.cpp"
+#line 2223 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
-#line 276 "engines/director/lingo/lingo-gr.y"
+#line 277 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
-#line 2226 "engines/director/lingo/lingo-gr.cpp"
+#line 2230 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
-#line 278 "engines/director/lingo/lingo-gr.y"
+#line 279 "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 2236 "engines/director/lingo/lingo-gr.cpp"
+#line 2240 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
-#line 283 "engines/director/lingo/lingo-gr.y"
+#line 284 "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 2245 "engines/director/lingo/lingo-gr.cpp"
+#line 2249 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
-#line 287 "engines/director/lingo/lingo-gr.y"
+#line 288 "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 2254 "engines/director/lingo/lingo-gr.cpp"
+#line 2258 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
-#line 292 "engines/director/lingo/lingo-gr.y"
+#line 293 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2262 "engines/director/lingo/lingo-gr.cpp"
+#line 2266 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
-#line 296 "engines/director/lingo/lingo-gr.y"
+#line 297 "engines/director/lingo/lingo-gr.y"
                                                                                        {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-6].code) - (yyvsp[-8].code));
@@ -2273,11 +2277,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 2277 "engines/director/lingo/lingo-gr.cpp"
+#line 2281 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
-#line 306 "engines/director/lingo/lingo-gr.y"
+#line 307 "engines/director/lingo/lingo-gr.y"
                                                                                                               {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-9].code) - (yyvsp[-11].code));
@@ -2288,22 +2292,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 2292 "engines/director/lingo/lingo-gr.cpp"
+#line 2296 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
-#line 320 "engines/director/lingo/lingo-gr.y"
+#line 321 "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 2303 "engines/director/lingo/lingo-gr.cpp"
+#line 2307 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
-#line 327 "engines/director/lingo/lingo-gr.y"
+#line 328 "engines/director/lingo/lingo-gr.y"
                                                                                                          {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-8].code) - (yyvsp[-10].code));
@@ -2314,11 +2318,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 2318 "engines/director/lingo/lingo-gr.cpp"
+#line 2322 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
-#line 337 "engines/director/lingo/lingo-gr.y"
+#line 338 "engines/director/lingo/lingo-gr.y"
                                                                    {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-4].code) - (yyvsp[-6].code));
@@ -2329,149 +2333,149 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2333 "engines/director/lingo/lingo-gr.cpp"
+#line 2337 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
-#line 348 "engines/director/lingo/lingo-gr.y"
+#line 349 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2339 "engines/director/lingo/lingo-gr.cpp"
+#line 2343 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
-#line 350 "engines/director/lingo/lingo-gr.y"
+#line 351 "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 2349 "engines/director/lingo/lingo-gr.cpp"
+#line 2353 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
-#line 356 "engines/director/lingo/lingo-gr.y"
+#line 357 "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 2359 "engines/director/lingo/lingo-gr.cpp"
+#line 2363 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
-#line 362 "engines/director/lingo/lingo-gr.y"
+#line 363 "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 2370 "engines/director/lingo/lingo-gr.cpp"
+#line 2374 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
-#line 369 "engines/director/lingo/lingo-gr.y"
+#line 370 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2376 "engines/director/lingo/lingo-gr.cpp"
+#line 2380 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
-#line 371 "engines/director/lingo/lingo-gr.y"
+#line 372 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2382 "engines/director/lingo/lingo-gr.cpp"
+#line 2386 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
-#line 373 "engines/director/lingo/lingo-gr.y"
+#line 374 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2388 "engines/director/lingo/lingo-gr.cpp"
+#line 2392 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54:
-#line 377 "engines/director/lingo/lingo-gr.y"
+#line 378 "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 2398 "engines/director/lingo/lingo-gr.cpp"
+#line 2402 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
-#line 383 "engines/director/lingo/lingo-gr.y"
+#line 384 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2406 "engines/director/lingo/lingo-gr.cpp"
+#line 2410 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
-#line 386 "engines/director/lingo/lingo-gr.y"
+#line 387 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2414 "engines/director/lingo/lingo-gr.cpp"
+#line 2418 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
-#line 389 "engines/director/lingo/lingo-gr.y"
+#line 390 "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 2423 "engines/director/lingo/lingo-gr.cpp"
+#line 2427 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
-#line 393 "engines/director/lingo/lingo-gr.y"
+#line 394 "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 2432 "engines/director/lingo/lingo-gr.cpp"
+#line 2436 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
-#line 397 "engines/director/lingo/lingo-gr.y"
+#line 398 "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 2441 "engines/director/lingo/lingo-gr.cpp"
+#line 2445 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
-#line 403 "engines/director/lingo/lingo-gr.y"
+#line 404 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2447 "engines/director/lingo/lingo-gr.cpp"
+#line 2451 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 63:
-#line 405 "engines/director/lingo/lingo-gr.y"
+#line 406 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2455 "engines/director/lingo/lingo-gr.cpp"
+#line 2459 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64:
-#line 408 "engines/director/lingo/lingo-gr.y"
+#line 409 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2463 "engines/director/lingo/lingo-gr.cpp"
+#line 2467 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 65:
-#line 411 "engines/director/lingo/lingo-gr.y"
+#line 412 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2471 "engines/director/lingo/lingo-gr.cpp"
+#line 2475 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
-#line 414 "engines/director/lingo/lingo-gr.y"
+#line 415 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2480,489 +2484,489 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2484 "engines/director/lingo/lingo-gr.cpp"
+#line 2488 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67:
-#line 422 "engines/director/lingo/lingo-gr.y"
+#line 423 "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 2495 "engines/director/lingo/lingo-gr.cpp"
+#line 2499 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68:
-#line 428 "engines/director/lingo/lingo-gr.y"
+#line 429 "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 2505 "engines/director/lingo/lingo-gr.cpp"
+#line 2509 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70:
-#line 434 "engines/director/lingo/lingo-gr.y"
+#line 435 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2511 "engines/director/lingo/lingo-gr.cpp"
+#line 2515 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
-#line 435 "engines/director/lingo/lingo-gr.y"
+#line 436 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2517 "engines/director/lingo/lingo-gr.cpp"
+#line 2521 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
-#line 436 "engines/director/lingo/lingo-gr.y"
+#line 437 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2523 "engines/director/lingo/lingo-gr.cpp"
+#line 2527 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73:
-#line 437 "engines/director/lingo/lingo-gr.y"
+#line 438 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2529 "engines/director/lingo/lingo-gr.cpp"
+#line 2533 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
-#line 438 "engines/director/lingo/lingo-gr.y"
+#line 439 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2535 "engines/director/lingo/lingo-gr.cpp"
+#line 2539 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
-#line 439 "engines/director/lingo/lingo-gr.y"
+#line 440 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2541 "engines/director/lingo/lingo-gr.cpp"
+#line 2545 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
-#line 440 "engines/director/lingo/lingo-gr.y"
+#line 441 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2547 "engines/director/lingo/lingo-gr.cpp"
+#line 2551 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
-#line 441 "engines/director/lingo/lingo-gr.y"
+#line 442 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2553 "engines/director/lingo/lingo-gr.cpp"
+#line 2557 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
-#line 442 "engines/director/lingo/lingo-gr.y"
+#line 443 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2559 "engines/director/lingo/lingo-gr.cpp"
+#line 2563 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
-#line 443 "engines/director/lingo/lingo-gr.y"
+#line 444 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2565 "engines/director/lingo/lingo-gr.cpp"
+#line 2569 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
-#line 444 "engines/director/lingo/lingo-gr.y"
+#line 445 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2571 "engines/director/lingo/lingo-gr.cpp"
+#line 2575 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
-#line 445 "engines/director/lingo/lingo-gr.y"
+#line 446 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2577 "engines/director/lingo/lingo-gr.cpp"
+#line 2581 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
-#line 446 "engines/director/lingo/lingo-gr.y"
+#line 447 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2583 "engines/director/lingo/lingo-gr.cpp"
+#line 2587 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
-#line 447 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2589 "engines/director/lingo/lingo-gr.cpp"
+#line 2593 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
-#line 448 "engines/director/lingo/lingo-gr.y"
+#line 449 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2595 "engines/director/lingo/lingo-gr.cpp"
+#line 2599 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
-#line 449 "engines/director/lingo/lingo-gr.y"
+#line 450 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2601 "engines/director/lingo/lingo-gr.cpp"
+#line 2605 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
-#line 450 "engines/director/lingo/lingo-gr.y"
+#line 451 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2607 "engines/director/lingo/lingo-gr.cpp"
+#line 2611 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
-#line 451 "engines/director/lingo/lingo-gr.y"
+#line 452 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2613 "engines/director/lingo/lingo-gr.cpp"
+#line 2617 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
-#line 452 "engines/director/lingo/lingo-gr.y"
+#line 453 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); }
-#line 2619 "engines/director/lingo/lingo-gr.cpp"
+#line 2623 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
-#line 453 "engines/director/lingo/lingo-gr.y"
+#line 454 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2625 "engines/director/lingo/lingo-gr.cpp"
+#line 2629 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
-#line 454 "engines/director/lingo/lingo-gr.y"
+#line 455 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2631 "engines/director/lingo/lingo-gr.cpp"
+#line 2635 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
-#line 455 "engines/director/lingo/lingo-gr.y"
+#line 456 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2637 "engines/director/lingo/lingo-gr.cpp"
+#line 2641 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
-#line 456 "engines/director/lingo/lingo-gr.y"
+#line 457 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2643 "engines/director/lingo/lingo-gr.cpp"
+#line 2647 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
-#line 458 "engines/director/lingo/lingo-gr.y"
+#line 459 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2649 "engines/director/lingo/lingo-gr.cpp"
+#line 2653 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
-#line 459 "engines/director/lingo/lingo-gr.y"
+#line 460 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2655 "engines/director/lingo/lingo-gr.cpp"
+#line 2659 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
-#line 460 "engines/director/lingo/lingo-gr.y"
+#line 461 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2661 "engines/director/lingo/lingo-gr.cpp"
+#line 2665 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
-#line 461 "engines/director/lingo/lingo-gr.y"
+#line 462 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2667 "engines/director/lingo/lingo-gr.cpp"
+#line 2671 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
-#line 462 "engines/director/lingo/lingo-gr.y"
+#line 463 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2673 "engines/director/lingo/lingo-gr.cpp"
+#line 2677 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
-#line 463 "engines/director/lingo/lingo-gr.y"
+#line 464 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2679 "engines/director/lingo/lingo-gr.cpp"
+#line 2683 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
-#line 464 "engines/director/lingo/lingo-gr.y"
+#line 465 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2685 "engines/director/lingo/lingo-gr.cpp"
+#line 2689 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
-#line 465 "engines/director/lingo/lingo-gr.y"
+#line 466 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2691 "engines/director/lingo/lingo-gr.cpp"
+#line 2695 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
-#line 467 "engines/director/lingo/lingo-gr.y"
+#line 468 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2699 "engines/director/lingo/lingo-gr.cpp"
+#line 2703 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
-#line 472 "engines/director/lingo/lingo-gr.y"
+#line 473 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2705 "engines/director/lingo/lingo-gr.cpp"
+#line 2709 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
-#line 475 "engines/director/lingo/lingo-gr.y"
+#line 476 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2711 "engines/director/lingo/lingo-gr.cpp"
+#line 2715 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
-#line 476 "engines/director/lingo/lingo-gr.y"
+#line 477 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 2717 "engines/director/lingo/lingo-gr.cpp"
+#line 2721 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
-#line 477 "engines/director/lingo/lingo-gr.y"
+#line 478 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2723 "engines/director/lingo/lingo-gr.cpp"
+#line 2727 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
-#line 477 "engines/director/lingo/lingo-gr.y"
+#line 478 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 2729 "engines/director/lingo/lingo-gr.cpp"
+#line 2733 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
-#line 478 "engines/director/lingo/lingo-gr.y"
+#line 479 "engines/director/lingo/lingo-gr.y"
                     { g_lingo->_indef = kStateInArgs; }
-#line 2735 "engines/director/lingo/lingo-gr.cpp"
+#line 2739 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111:
-#line 478 "engines/director/lingo/lingo-gr.y"
+#line 479 "engines/director/lingo/lingo-gr.y"
                                                                      { g_lingo->_indef = kStateNone; }
-#line 2741 "engines/director/lingo/lingo-gr.cpp"
+#line 2745 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
-#line 480 "engines/director/lingo/lingo-gr.y"
+#line 481 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2749 "engines/director/lingo/lingo-gr.cpp"
+#line 2753 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114:
-#line 483 "engines/director/lingo/lingo-gr.y"
+#line 484 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2757 "engines/director/lingo/lingo-gr.cpp"
+#line 2761 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
-#line 486 "engines/director/lingo/lingo-gr.y"
+#line 487 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 2763 "engines/director/lingo/lingo-gr.cpp"
+#line 2767 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
-#line 487 "engines/director/lingo/lingo-gr.y"
+#line 488 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 2769 "engines/director/lingo/lingo-gr.cpp"
+#line 2773 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117:
-#line 489 "engines/director/lingo/lingo-gr.y"
+#line 490 "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 2778 "engines/director/lingo/lingo-gr.cpp"
+#line 2782 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
-#line 493 "engines/director/lingo/lingo-gr.y"
+#line 494 "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 2787 "engines/director/lingo/lingo-gr.cpp"
+#line 2791 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
-#line 498 "engines/director/lingo/lingo-gr.y"
+#line 499 "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 2796 "engines/director/lingo/lingo-gr.cpp"
+#line 2800 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
-#line 502 "engines/director/lingo/lingo-gr.y"
+#line 503 "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 2805 "engines/director/lingo/lingo-gr.cpp"
+#line 2809 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
-#line 507 "engines/director/lingo/lingo-gr.y"
+#line 508 "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 2814 "engines/director/lingo/lingo-gr.cpp"
+#line 2818 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122:
-#line 511 "engines/director/lingo/lingo-gr.y"
+#line 512 "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 2823 "engines/director/lingo/lingo-gr.cpp"
+#line 2827 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123:
-#line 523 "engines/director/lingo/lingo-gr.y"
+#line 524 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 2829 "engines/director/lingo/lingo-gr.cpp"
+#line 2833 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
-#line 524 "engines/director/lingo/lingo-gr.y"
+#line 525 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 2835 "engines/director/lingo/lingo-gr.cpp"
+#line 2839 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
-#line 525 "engines/director/lingo/lingo-gr.y"
+#line 526 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 2841 "engines/director/lingo/lingo-gr.cpp"
+#line 2845 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
-#line 526 "engines/director/lingo/lingo-gr.y"
+#line 527 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 2850 "engines/director/lingo/lingo-gr.cpp"
+#line 2854 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
-#line 530 "engines/director/lingo/lingo-gr.y"
+#line 531 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 2859 "engines/director/lingo/lingo-gr.cpp"
+#line 2863 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128:
-#line 534 "engines/director/lingo/lingo-gr.y"
+#line 535 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 2868 "engines/director/lingo/lingo-gr.cpp"
+#line 2872 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
-#line 542 "engines/director/lingo/lingo-gr.y"
+#line 543 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_playdone); }
-#line 2874 "engines/director/lingo/lingo-gr.cpp"
+#line 2878 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
-#line 543 "engines/director/lingo/lingo-gr.y"
+#line 544 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 2883 "engines/director/lingo/lingo-gr.cpp"
+#line 2887 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133:
-#line 547 "engines/director/lingo/lingo-gr.y"
+#line 548 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 2892 "engines/director/lingo/lingo-gr.cpp"
+#line 2896 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
-#line 551 "engines/director/lingo/lingo-gr.y"
+#line 552 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 2901 "engines/director/lingo/lingo-gr.cpp"
+#line 2905 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
-#line 555 "engines/director/lingo/lingo-gr.y"
+#line 556 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 2907 "engines/director/lingo/lingo-gr.cpp"
+#line 2911 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
-#line 555 "engines/director/lingo/lingo-gr.y"
+#line 556 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 2916 "engines/director/lingo/lingo-gr.cpp"
+#line 2920 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
-#line 585 "engines/director/lingo/lingo-gr.y"
+#line 586 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 2922 "engines/director/lingo/lingo-gr.cpp"
+#line 2926 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
-#line 585 "engines/director/lingo/lingo-gr.y"
+#line 586 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 2928 "engines/director/lingo/lingo-gr.cpp"
+#line 2932 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
-#line 586 "engines/director/lingo/lingo-gr.y"
+#line 587 "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 2939 "engines/director/lingo/lingo-gr.cpp"
+#line 2943 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140:
-#line 592 "engines/director/lingo/lingo-gr.y"
+#line 593 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 2945 "engines/director/lingo/lingo-gr.cpp"
+#line 2949 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
-#line 593 "engines/director/lingo/lingo-gr.y"
+#line 594 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2951 "engines/director/lingo/lingo-gr.cpp"
+#line 2955 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
-#line 594 "engines/director/lingo/lingo-gr.y"
+#line 595 "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 2962 "engines/director/lingo/lingo-gr.cpp"
+#line 2966 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
-#line 600 "engines/director/lingo/lingo-gr.y"
+#line 601 "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));
@@ -2973,11 +2977,11 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 2977 "engines/director/lingo/lingo-gr.cpp"
+#line 2981 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
-#line 610 "engines/director/lingo/lingo-gr.y"
+#line 611 "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));
@@ -2985,65 +2989,65 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 2989 "engines/director/lingo/lingo-gr.cpp"
+#line 2993 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
-#line 618 "engines/director/lingo/lingo-gr.y"
+#line 619 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 2995 "engines/director/lingo/lingo-gr.cpp"
+#line 2999 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
-#line 618 "engines/director/lingo/lingo-gr.y"
+#line 619 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3001 "engines/director/lingo/lingo-gr.cpp"
+#line 3005 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
-#line 620 "engines/director/lingo/lingo-gr.y"
+#line 621 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3007 "engines/director/lingo/lingo-gr.cpp"
+#line 3011 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
-#line 621 "engines/director/lingo/lingo-gr.y"
+#line 622 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3013 "engines/director/lingo/lingo-gr.cpp"
+#line 3017 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
-#line 622 "engines/director/lingo/lingo-gr.y"
+#line 623 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3019 "engines/director/lingo/lingo-gr.cpp"
+#line 3023 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
-#line 623 "engines/director/lingo/lingo-gr.y"
+#line 624 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 3025 "engines/director/lingo/lingo-gr.cpp"
+#line 3029 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 152:
-#line 626 "engines/director/lingo/lingo-gr.y"
+#line 627 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3031 "engines/director/lingo/lingo-gr.cpp"
+#line 3035 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
-#line 627 "engines/director/lingo/lingo-gr.y"
+#line 628 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 3037 "engines/director/lingo/lingo-gr.cpp"
+#line 3041 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
-#line 629 "engines/director/lingo/lingo-gr.y"
+#line 630 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 3043 "engines/director/lingo/lingo-gr.cpp"
+#line 3047 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
-#line 631 "engines/director/lingo/lingo-gr.y"
+#line 632 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3051,113 +3055,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 3059 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
-#line 639 "engines/director/lingo/lingo-gr.y"
+#line 640 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3061 "engines/director/lingo/lingo-gr.cpp"
+#line 3065 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
-#line 640 "engines/director/lingo/lingo-gr.y"
+#line 641 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3067 "engines/director/lingo/lingo-gr.cpp"
+#line 3071 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
-#line 641 "engines/director/lingo/lingo-gr.y"
+#line 642 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3073 "engines/director/lingo/lingo-gr.cpp"
+#line 3077 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
-#line 643 "engines/director/lingo/lingo-gr.y"
+#line 644 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3079 "engines/director/lingo/lingo-gr.cpp"
+#line 3083 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
-#line 644 "engines/director/lingo/lingo-gr.y"
+#line 645 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3085 "engines/director/lingo/lingo-gr.cpp"
+#line 3089 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
-#line 646 "engines/director/lingo/lingo-gr.y"
+#line 647 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 3091 "engines/director/lingo/lingo-gr.cpp"
+#line 3095 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
-#line 648 "engines/director/lingo/lingo-gr.y"
+#line 649 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3097 "engines/director/lingo/lingo-gr.cpp"
+#line 3101 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
-#line 649 "engines/director/lingo/lingo-gr.y"
+#line 650 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3103 "engines/director/lingo/lingo-gr.cpp"
+#line 3107 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
-#line 650 "engines/director/lingo/lingo-gr.y"
+#line 651 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3109 "engines/director/lingo/lingo-gr.cpp"
+#line 3113 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
-#line 651 "engines/director/lingo/lingo-gr.y"
+#line 652 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3115 "engines/director/lingo/lingo-gr.cpp"
+#line 3119 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
-#line 653 "engines/director/lingo/lingo-gr.y"
+#line 654 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3121 "engines/director/lingo/lingo-gr.cpp"
+#line 3125 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
-#line 654 "engines/director/lingo/lingo-gr.y"
+#line 655 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3127 "engines/director/lingo/lingo-gr.cpp"
+#line 3131 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
-#line 656 "engines/director/lingo/lingo-gr.y"
+#line 657 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3133 "engines/director/lingo/lingo-gr.cpp"
+#line 3137 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
-#line 657 "engines/director/lingo/lingo-gr.y"
+#line 658 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3139 "engines/director/lingo/lingo-gr.cpp"
+#line 3143 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170:
-#line 659 "engines/director/lingo/lingo-gr.y"
+#line 660 "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 3148 "engines/director/lingo/lingo-gr.cpp"
+#line 3152 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
-#line 663 "engines/director/lingo/lingo-gr.y"
+#line 664 "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 3157 "engines/director/lingo/lingo-gr.cpp"
+#line 3161 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3161 "engines/director/lingo/lingo-gr.cpp"
+#line 3165 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3389,5 +3393,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 669 "engines/director/lingo/lingo-gr.y"
+#line 670 "engines/director/lingo/lingo-gr.y"
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 7938120..627c189 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -58,79 +58,80 @@ extern int yydebug;
     ARRAY = 264,
     OBJECT = 265,
     REFERENCE = 266,
-    INT = 267,
-    ARGC = 268,
-    ARGCNORET = 269,
-    THEENTITY = 270,
-    THEENTITYWITHID = 271,
-    THEMENUITEMENTITY = 272,
-    FLOAT = 273,
-    BLTIN = 274,
-    FBLTIN = 275,
-    RBLTIN = 276,
-    ID = 277,
-    STRING = 278,
-    HANDLER = 279,
-    SYMBOL = 280,
-    ENDCLAUSE = 281,
-    tPLAYACCEL = 282,
-    tMETHOD = 283,
-    THEOBJECTFIELD = 284,
-    tDOWN = 285,
-    tELSE = 286,
-    tELSIF = 287,
-    tEXIT = 288,
-    tGLOBAL = 289,
-    tGO = 290,
-    tIF = 291,
-    tIN = 292,
-    tINTO = 293,
-    tLOOP = 294,
-    tMACRO = 295,
-    tMOVIE = 296,
-    tNEXT = 297,
-    tOF = 298,
-    tPREVIOUS = 299,
-    tPUT = 300,
-    tREPEAT = 301,
-    tSET = 302,
-    tTHEN = 303,
-    tTO = 304,
-    tWHEN = 305,
-    tWITH = 306,
-    tWHILE = 307,
-    tNLELSE = 308,
-    tFACTORY = 309,
-    tOPEN = 310,
-    tPLAY = 311,
-    tDONE = 312,
-    tINSTANCE = 313,
-    tGE = 314,
-    tLE = 315,
-    tEQ = 316,
-    tNEQ = 317,
-    tAND = 318,
-    tOR = 319,
-    tNOT = 320,
-    tMOD = 321,
-    tAFTER = 322,
-    tBEFORE = 323,
-    tCONCAT = 324,
-    tCONTAINS = 325,
-    tSTARTS = 326,
-    tCHAR = 327,
-    tITEM = 328,
-    tLINE = 329,
-    tWORD = 330,
-    tSPRITE = 331,
-    tINTERSECTS = 332,
-    tWITHIN = 333,
-    tTELL = 334,
-    tPROPERTY = 335,
-    tON = 336,
-    tENDIF = 337,
-    tENDREPEAT = 338,
-    tENDTELL = 339
+    LEXERROR = 267,
+    INT = 268,
+    ARGC = 269,
+    ARGCNORET = 270,
+    THEENTITY = 271,
+    THEENTITYWITHID = 272,
+    THEMENUITEMENTITY = 273,
+    FLOAT = 274,
+    BLTIN = 275,
+    FBLTIN = 276,
+    RBLTIN = 277,
+    ID = 278,
+    STRING = 279,
+    HANDLER = 280,
+    SYMBOL = 281,
+    ENDCLAUSE = 282,
+    tPLAYACCEL = 283,
+    tMETHOD = 284,
+    THEOBJECTFIELD = 285,
+    tDOWN = 286,
+    tELSE = 287,
+    tELSIF = 288,
+    tEXIT = 289,
+    tGLOBAL = 290,
+    tGO = 291,
+    tIF = 292,
+    tIN = 293,
+    tINTO = 294,
+    tLOOP = 295,
+    tMACRO = 296,
+    tMOVIE = 297,
+    tNEXT = 298,
+    tOF = 299,
+    tPREVIOUS = 300,
+    tPUT = 301,
+    tREPEAT = 302,
+    tSET = 303,
+    tTHEN = 304,
+    tTO = 305,
+    tWHEN = 306,
+    tWITH = 307,
+    tWHILE = 308,
+    tNLELSE = 309,
+    tFACTORY = 310,
+    tOPEN = 311,
+    tPLAY = 312,
+    tDONE = 313,
+    tINSTANCE = 314,
+    tGE = 315,
+    tLE = 316,
+    tEQ = 317,
+    tNEQ = 318,
+    tAND = 319,
+    tOR = 320,
+    tNOT = 321,
+    tMOD = 322,
+    tAFTER = 323,
+    tBEFORE = 324,
+    tCONCAT = 325,
+    tCONTAINS = 326,
+    tSTARTS = 327,
+    tCHAR = 328,
+    tITEM = 329,
+    tLINE = 330,
+    tWORD = 331,
+    tSPRITE = 332,
+    tINTERSECTS = 333,
+    tWITHIN = 334,
+    tTELL = 335,
+    tPROPERTY = 336,
+    tON = 337,
+    tENDIF = 338,
+    tENDREPEAT = 339,
+    tENDTELL = 340
   };
 #endif
 
@@ -153,7 +154,7 @@ union YYSTYPE
 		int oe;
 	} objectfield;
 
-#line 157 "engines/director/lingo/lingo-gr.h"
+#line 158 "engines/director/lingo/lingo-gr.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 5de6874..e0e1308 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -99,7 +99,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 }
 
 %token UNARY
-%token CASTREF VOID VAR POINT RECT ARRAY OBJECT REFERENCE
+%token CASTREF VOID VAR POINT RECT ARRAY OBJECT REFERENCE LEXERROR
 %token<i> INT ARGC ARGCNORET
 %token<e> THEENTITY THEENTITYWITHID THEMENUITEMENTITY
 %token<f> FLOAT
@@ -192,7 +192,8 @@ asgn: tPUT expr tINTO ID 		{
 	// the <field> of menuItem <expr>" of menu <expr>
 	| tSET THEMENUITEMENTITY simpleexpr tOF ID simpleexpr tTO expr	{
 		if (!$ID->equalsIgnoreCase("menu")) {
-			error("LEXER: keyword 'menu' expected");
+			warning("LEXER: keyword 'menu' expected");
+			YYERROR;
 		}
 
 		warning("STUB: menuItem entity");
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index fa8d7e7..3c6bc12 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1425,23 +1425,24 @@ YY_RULE_SETUP
 			yylval.s = new Common::String(bltin);
 			return BLTIN;
 		} else {
-			error("LEXER: Unhandled 'sound %s'", command.c_str());
+			warning("LEXER: Unhandled 'sound %s'", command.c_str());
+			return LEXERROR;
 		}
 	}
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 188 "engines/director/lingo/lingo-lex.l"
+#line 189 "engines/director/lingo/lingo-lex.l"
 { count(); return tSTARTS; }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 189 "engines/director/lingo/lingo-lex.l"
+#line 190 "engines/director/lingo/lingo-lex.l"
 { count(); return tTELL; }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 190 "engines/director/lingo/lingo-lex.l"
+#line 191 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1453,7 +1454,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 198 "engines/director/lingo/lingo-lex.l"
+#line 199 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1464,7 +1465,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 205 "engines/director/lingo/lingo-lex.l"
+#line 206 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1483,15 +1484,17 @@ YY_RULE_SETUP
 
 		yylval.s = new Common::String(Common::String::format("numberOf%s", field.c_str()));
 
-		if (g_lingo->_builtins.contains(*yylval.s))
+		if (g_lingo->_builtins.contains(*yylval.s)) {
 			return FBLTIN;
-		else
-			error("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
+		} else {
+			warning("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
+			return LEXERROR;
+		}
 	}
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 228 "engines/director/lingo/lingo-lex.l"
+#line 231 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1507,15 +1510,17 @@ YY_RULE_SETUP
 
 		yylval.s = new Common::String(Common::String::format("last%sOf", field.c_str()));
 
-		if (g_lingo->_builtins.contains(*yylval.s))
+		if (g_lingo->_builtins.contains(*yylval.s)) {
 			return FBLTIN;
-		else
-			error("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
+		} else {
+			warning("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
+			return LEXERROR;
+		}
 	}
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 248 "engines/director/lingo/lingo-lex.l"
+#line 253 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1539,11 +1544,14 @@ YY_RULE_SETUP
 			field = Common::String::format("%d%s", g_lingo->_theEntities[ptr]->entity, field.c_str());
 
 			if (!g_lingo->_theEntityFields.contains(field)) {
-				error("LEXER: Unhandled the field %s of %s", field.c_str(), ptr);
+				warning("LEXER: Unhandled the field %s of %s", field.c_str(), ptr);
+				return LEXERROR;
 			}
 
-			if (g_lingo->_theEntityFields[field]->entity != g_lingo->_theEntities[ptr]->entity)
-				error("LEXER: Unsupported field '%s' for entity '%s'", field.c_str(), ptr);
+			if (g_lingo->_theEntityFields[field]->entity != g_lingo->_theEntities[ptr]->entity) {
+				warning("LEXER: Unsupported field '%s' for entity '%s'", field.c_str(), ptr);
+				return LEXERROR;
+			}
 
 			yylval.e[0] = g_lingo->_theEntities[ptr]->entity;
 			yylval.e[1] = g_lingo->_theEntityFields[field]->field;
@@ -1561,7 +1569,8 @@ YY_RULE_SETUP
 				field = Common::String::format("%d%s", g_lingo->_objectEntityId, field.c_str());
 
 				if (!g_lingo->_theEntityFields.contains(field)) {
-					error("LEXER: Unhandled the field '%s' for object", field.c_str());
+					warning("LEXER: Unhandled the field '%s' for object", field.c_str());
+					return LEXERROR;
 				}
 
 				yylval.objectfield.os = new Common::String(ptr);
@@ -1576,7 +1585,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 305 "engines/director/lingo/lingo-lex.l"
+#line 314 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1594,11 +1603,14 @@ YY_RULE_SETUP
 		field = Common::String::format("%d%s", g_lingo->_theEntities[ptr]->entity, field.c_str());
 
 		if (!g_lingo->_theEntityFields.contains(field)) {
-			error("LEXER: Unhandled the field %s", ptr);
+			warning("LEXER: Unhandled the field %s", ptr);
+			return LEXERROR;
 		}
 
-		if (g_lingo->_theEntityFields[field]->entity != g_lingo->_theEntities[ptr]->entity)
-			error("LEXER: Unsupported field '%s' for entity '%s'", field.c_str(), ptr);
+		if (g_lingo->_theEntityFields[field]->entity != g_lingo->_theEntities[ptr]->entity) {
+			warning("LEXER: Unsupported field '%s' for entity '%s'", field.c_str(), ptr);
+			return LEXERROR;
+		}
 
 		yylval.e[0] = g_lingo->_theEntities[ptr]->entity;
 		yylval.e[1] = g_lingo->_theEntityFields[field]->field;
@@ -1611,7 +1623,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 336 "engines/director/lingo/lingo-lex.l"
+#line 348 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1634,72 +1646,72 @@ YY_RULE_SETUP
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 355 "engines/director/lingo/lingo-lex.l"
+#line 367 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 356 "engines/director/lingo/lingo-lex.l"
+#line 368 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 357 "engines/director/lingo/lingo-lex.l"
+#line 369 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 358 "engines/director/lingo/lingo-lex.l"
+#line 370 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 359 "engines/director/lingo/lingo-lex.l"
+#line 371 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 360 "engines/director/lingo/lingo-lex.l"
+#line 372 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 361 "engines/director/lingo/lingo-lex.l"
+#line 373 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 362 "engines/director/lingo/lingo-lex.l"
+#line 374 "engines/director/lingo/lingo-lex.l"
 { count(); return tWORD; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 364 "engines/director/lingo/lingo-lex.l"
+#line 376 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 365 "engines/director/lingo/lingo-lex.l"
+#line 377 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 366 "engines/director/lingo/lingo-lex.l"
+#line 378 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 367 "engines/director/lingo/lingo-lex.l"
+#line 379 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 368 "engines/director/lingo/lingo-lex.l"
+#line 380 "engines/director/lingo/lingo-lex.l"
 { count(); return tEQ; }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 370 "engines/director/lingo/lingo-lex.l"
+#line 382 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1720,8 +1732,10 @@ YY_RULE_SETUP
 			int type = g_lingo->_builtins[yytext]->type;
 			if ((type == BLTIN || type == FBLTIN || type == RBLTIN) && g_lingo->_builtins[yytext]->parens == false) {
 				if (type == RBLTIN) {
-					if (g_lingo->_builtins[yytext]->nargs != 1 || g_lingo->_builtins[yytext]->maxArgs != 1)
-						error("Incorrectly set RBLTIN %s", yytext);
+					if (g_lingo->_builtins[yytext]->nargs != 1 || g_lingo->_builtins[yytext]->maxArgs != 1) {
+						warning("Incorrectly set RBLTIN %s", yytext);
+						return LEXERROR;
+					}
 
 					return RBLTIN;
 				}
@@ -1735,41 +1749,41 @@ YY_RULE_SETUP
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 402 "engines/director/lingo/lingo-lex.l"
+#line 416 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 403 "engines/director/lingo/lingo-lex.l"
+#line 417 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 404 "engines/director/lingo/lingo-lex.l"
+#line 418 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
 case 75:
 /* rule 75 can match eol */
 YY_RULE_SETUP
-#line 405 "engines/director/lingo/lingo-lex.l"
+#line 419 "engines/director/lingo/lingo-lex.l"
 { count(); return '\n'; }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 406 "engines/director/lingo/lingo-lex.l"
+#line 420 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 407 "engines/director/lingo/lingo-lex.l"
+#line 421 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 409 "engines/director/lingo/lingo-lex.l"
+#line 423 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1773 "engines/director/lingo/lingo-lex.cpp"
+#line 1787 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2729,7 +2743,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 409 "engines/director/lingo/lingo-lex.l"
+#line 423 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index decba22..6b853aa 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -182,7 +182,8 @@ sound[ \t]+(close|fadeIn|fadeOut|playFile|stop)	{
 			yylval.s = new Common::String(bltin);
 			return BLTIN;
 		} else {
-			error("LEXER: Unhandled 'sound %s'", command.c_str());
+			warning("LEXER: Unhandled 'sound %s'", command.c_str());
+			return LEXERROR;
 		}
 	}
 starts		{ count(); return tSTARTS; }
@@ -220,10 +221,12 @@ the[ \t]+number[ \t]+of[ \t]+[[:alpha:]]+[ \t](in|of)[ \t]	{
 
 		yylval.s = new Common::String(Common::String::format("numberOf%s", field.c_str()));
 
-		if (g_lingo->_builtins.contains(*yylval.s))
+		if (g_lingo->_builtins.contains(*yylval.s)) {
 			return FBLTIN;
-		else
-			error("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
+		} else {
+			warning("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
+			return LEXERROR;
+		}
 	}
 the[ \t]+last[ \t][[:alpha:]]+[ \t](in|of)[ \t]	{
 		count();
@@ -240,10 +243,12 @@ the[ \t]+last[ \t][[:alpha:]]+[ \t](in|of)[ \t]	{
 
 		yylval.s = new Common::String(Common::String::format("last%sOf", field.c_str()));
 
-		if (g_lingo->_builtins.contains(*yylval.s))
+		if (g_lingo->_builtins.contains(*yylval.s)) {
 			return FBLTIN;
-		else
-			error("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
+		} else {
+			warning("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
+			return LEXERROR;
+		}
 	}
 the[ \t]+[[:alpha:]]+[ \t]+of[ \t]+{identifier}	{
 		count();
@@ -268,11 +273,14 @@ the[ \t]+[[:alpha:]]+[ \t]+of[ \t]+{identifier}	{
 			field = Common::String::format("%d%s", g_lingo->_theEntities[ptr]->entity, field.c_str());
 
 			if (!g_lingo->_theEntityFields.contains(field)) {
-				error("LEXER: Unhandled the field %s of %s", field.c_str(), ptr);
+				warning("LEXER: Unhandled the field %s of %s", field.c_str(), ptr);
+				return LEXERROR;
 			}
 
-			if (g_lingo->_theEntityFields[field]->entity != g_lingo->_theEntities[ptr]->entity)
-				error("LEXER: Unsupported field '%s' for entity '%s'", field.c_str(), ptr);
+			if (g_lingo->_theEntityFields[field]->entity != g_lingo->_theEntities[ptr]->entity) {
+				warning("LEXER: Unsupported field '%s' for entity '%s'", field.c_str(), ptr);
+				return LEXERROR;
+			}
 
 			yylval.e[0] = g_lingo->_theEntities[ptr]->entity;
 			yylval.e[1] = g_lingo->_theEntityFields[field]->field;
@@ -290,7 +298,8 @@ the[ \t]+[[:alpha:]]+[ \t]+of[ \t]+{identifier}	{
 				field = Common::String::format("%d%s", g_lingo->_objectEntityId, field.c_str());
 
 				if (!g_lingo->_theEntityFields.contains(field)) {
-					error("LEXER: Unhandled the field '%s' for object", field.c_str());
+					warning("LEXER: Unhandled the field '%s' for object", field.c_str());
+					return LEXERROR;
 				}
 
 				yylval.objectfield.os = new Common::String(ptr);
@@ -319,11 +328,14 @@ the[ \t]+[[:alpha:]]+[ \t+](date|time)		{
 		field = Common::String::format("%d%s", g_lingo->_theEntities[ptr]->entity, field.c_str());
 
 		if (!g_lingo->_theEntityFields.contains(field)) {
-			error("LEXER: Unhandled the field %s", ptr);
+			warning("LEXER: Unhandled the field %s", ptr);
+			return LEXERROR;
 		}
 
-		if (g_lingo->_theEntityFields[field]->entity != g_lingo->_theEntities[ptr]->entity)
-			error("LEXER: Unsupported field '%s' for entity '%s'", field.c_str(), ptr);
+		if (g_lingo->_theEntityFields[field]->entity != g_lingo->_theEntities[ptr]->entity) {
+			warning("LEXER: Unsupported field '%s' for entity '%s'", field.c_str(), ptr);
+			return LEXERROR;
+		}
 
 		yylval.e[0] = g_lingo->_theEntities[ptr]->entity;
 		yylval.e[1] = g_lingo->_theEntityFields[field]->field;
@@ -387,8 +399,10 @@ word			{ count(); return tWORD; }
 			int type = g_lingo->_builtins[yytext]->type;
 			if ((type == BLTIN || type == FBLTIN || type == RBLTIN) && g_lingo->_builtins[yytext]->parens == false) {
 				if (type == RBLTIN) {
-					if (g_lingo->_builtins[yytext]->nargs != 1 || g_lingo->_builtins[yytext]->maxArgs != 1)
-						error("Incorrectly set RBLTIN %s", yytext);
+					if (g_lingo->_builtins[yytext]->nargs != 1 || g_lingo->_builtins[yytext]->maxArgs != 1) {
+						warning("Incorrectly set RBLTIN %s", yytext);
+						return LEXERROR;
+					}
 
 					return RBLTIN;
 				}


Commit: d004473e416d73c532bc701b6b2cc2604535012d
    https://github.com/scummvm/scummvm/commit/d004473e416d73c532bc701b6b2cc2604535012d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-19T15:47:48+01:00

Commit Message:
DIRECTOR: Fix script dumping for score scripts

Changed paths:
    engines/director/score.cpp


diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 9f4bbc7..d588f79 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1070,7 +1070,7 @@ void Score::dumpScript(const char *script, ScriptType type, uint16 id) {
 	switch (type) {
 	case kNoneScript:
 	default:
-		error("Incorrect dumpScript() call");
+		error("Incorrect dumpScript() call (type %d)", type);
 	case kFrameScript:
 		typeName = "frame";
 		break;
@@ -1086,6 +1086,9 @@ void Score::dumpScript(const char *script, ScriptType type, uint16 id) {
 	case kGlobalScript:
 		typeName = "global";
 		break;
+	case kScoreScript:
+		typeName = "score";
+		break;
 	}
 
 	sprintf(buf, "./dumps/%s-%s-%d.txt", _macName.c_str(), typeName.c_str(), id);




More information about the Scummvm-git-logs mailing list