[Scummvm-git-logs] scummvm master -> 2c044b0c96b000e5f936b8ddbbfe53af38a3a8c7

sev- sev at scummvm.org
Thu Jan 16 17:21:51 UTC 2020


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

Summary:
1ab92ea017 DIRECTOR: LINGO: Added special grammar case for "the meuItem" field
c2aebb3afa DIRECTOR: LINGO: Added test for 'the menuItem' field
b06b900cdd DIRECTOR: LINGO: Fix grammar for 'the number of castMembers'
ca8064f3d0 DIRECTOR: LINGO: Added test for 'the number of castMembers"
a2c971c925 DIRECTOR: LINGO: Added parsing 'the rect of sprite'
f601168016 DIRECTOR: LINGO: Better diagnostics for unknown fields
2c044b0c96 DIRECTOR: LINGO: Added 'the loc of sprite' parsing


Commit: 1ab92ea0179ccc1505492d14602a516ba2fe9c3f
    https://github.com/scummvm/scummvm/commit/1ab92ea0179ccc1505492d14602a516ba2fe9c3f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-16T18:21:28+01:00

Commit Message:
DIRECTOR: LINGO: Added special grammar case for "the meuItem" field

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 fa3ca07..900a296 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -159,72 +159,73 @@ extern int yydebug;
     ARGCNORET = 269,
     THEENTITY = 270,
     THEENTITYWITHID = 271,
-    FLOAT = 272,
-    BLTIN = 273,
-    FBLTIN = 274,
-    RBLTIN = 275,
-    ID = 276,
-    STRING = 277,
-    HANDLER = 278,
-    SYMBOL = 279,
-    ENDCLAUSE = 280,
-    tPLAYACCEL = 281,
-    tMETHOD = 282,
-    THEOBJECTFIELD = 283,
-    tDOWN = 284,
-    tELSE = 285,
-    tELSIF = 286,
-    tEXIT = 287,
-    tGLOBAL = 288,
-    tGO = 289,
-    tIF = 290,
-    tINTO = 291,
-    tLOOP = 292,
-    tMACRO = 293,
-    tMOVIE = 294,
-    tNEXT = 295,
-    tOF = 296,
-    tPREVIOUS = 297,
-    tPUT = 298,
-    tREPEAT = 299,
-    tSET = 300,
-    tTHEN = 301,
-    tTO = 302,
-    tWHEN = 303,
-    tWITH = 304,
-    tWHILE = 305,
-    tNLELSE = 306,
-    tFACTORY = 307,
-    tOPEN = 308,
-    tPLAY = 309,
-    tDONE = 310,
-    tINSTANCE = 311,
-    tGE = 312,
-    tLE = 313,
-    tEQ = 314,
-    tNEQ = 315,
-    tAND = 316,
-    tOR = 317,
-    tNOT = 318,
-    tMOD = 319,
-    tAFTER = 320,
-    tBEFORE = 321,
-    tCONCAT = 322,
-    tCONTAINS = 323,
-    tSTARTS = 324,
-    tCHAR = 325,
-    tITEM = 326,
-    tLINE = 327,
-    tWORD = 328,
-    tSPRITE = 329,
-    tINTERSECTS = 330,
-    tWITHIN = 331,
-    tTELL = 332,
-    tPROPERTY = 333,
-    tON = 334,
-    tENDIF = 335,
-    tENDREPEAT = 336,
-    tENDTELL = 337
+    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,
+    tINTO = 292,
+    tLOOP = 293,
+    tMACRO = 294,
+    tMOVIE = 295,
+    tNEXT = 296,
+    tOF = 297,
+    tPREVIOUS = 298,
+    tPUT = 299,
+    tREPEAT = 300,
+    tSET = 301,
+    tTHEN = 302,
+    tTO = 303,
+    tWHEN = 304,
+    tWITH = 305,
+    tWHILE = 306,
+    tNLELSE = 307,
+    tFACTORY = 308,
+    tOPEN = 309,
+    tPLAY = 310,
+    tDONE = 311,
+    tINSTANCE = 312,
+    tGE = 313,
+    tLE = 314,
+    tEQ = 315,
+    tNEQ = 316,
+    tAND = 317,
+    tOR = 318,
+    tNOT = 319,
+    tMOD = 320,
+    tAFTER = 321,
+    tBEFORE = 322,
+    tCONCAT = 323,
+    tCONTAINS = 324,
+    tSTARTS = 325,
+    tCHAR = 326,
+    tITEM = 327,
+    tLINE = 328,
+    tWORD = 329,
+    tSPRITE = 330,
+    tINTERSECTS = 331,
+    tWITHIN = 332,
+    tTELL = 333,
+    tPROPERTY = 334,
+    tON = 335,
+    tENDIF = 336,
+    tENDREPEAT = 337,
+    tENDTELL = 338
   };
 #endif
 
@@ -247,7 +248,7 @@ union YYSTYPE
 		int oe;
 	} objectfield;
 
-#line 251 "engines/director/lingo/lingo-gr.cpp"
+#line 252 "engines/director/lingo/lingo-gr.cpp"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -564,21 +565,21 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  123
+#define YYFINAL  124
 /* YYLAST -- Last index in YYTABLE.  */
 #define YYLAST   1601
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  98
+#define YYNTOKENS  99
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  49
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  166
+#define YYNRULES  167
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  352
+#define YYNSTATES  359
 
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   337
+#define YYMAXUTOK   338
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -591,15 +592,15 @@ union yyalloc
 static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      91,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      92,     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,    90,    85,     2,
-      92,    93,    88,    86,    94,    87,     2,    89,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    97,     2,
-      83,     2,    84,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    91,    86,     2,
+      93,    94,    89,    87,    95,    88,     2,    90,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    98,     2,
+      84,     2,    85,     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,    95,     2,    96,     2,     2,     2,     2,     2,     2,
+       2,    96,     2,    97,     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,
@@ -623,7 +624,7 @@ 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
+      75,    76,    77,    78,    79,    80,    81,    82,    83
 };
 
 #if YYDEBUG
@@ -631,22 +632,22 @@ static const yytype_int8 yytranslate[] =
 static const yytype_int16 yyrline[] =
 {
        0,   135,   135,   136,   137,   139,   140,   141,   143,   149,
-     152,   153,   154,   160,   167,   173,   180,   186,   192,   199,
-     200,   201,   203,   204,   205,   206,   208,   209,   214,   225,
-     242,   254,   259,   263,   268,   272,   282,   293,   294,   296,
-     303,   313,   324,   326,   332,   338,   345,   347,   349,   350,
-     351,   353,   359,   362,   365,   369,   373,   377,   379,   380,
-     381,   384,   387,   390,   398,   404,   409,   410,   411,   412,
-     413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
-     423,   424,   425,   426,   427,   428,   429,   430,   431,   432,
-     433,   434,   435,   436,   437,   438,   439,   440,   442,   446,
-     447,   448,   449,   450,   451,   451,   452,   453,   454,   457,
-     460,   461,   463,   467,   472,   476,   481,   485,   497,   498,
-     499,   500,   504,   508,   513,   514,   516,   517,   521,   525,
-     529,   529,   559,   559,   559,   566,   567,   567,   574,   584,
-     592,   592,   594,   595,   596,   597,   599,   600,   601,   603,
-     605,   613,   614,   615,   617,   618,   620,   622,   623,   624,
-     625,   627,   628,   630,   631,   633,   637
+     152,   153,   154,   160,   167,   173,   180,   186,   193,   204,
+     211,   212,   213,   215,   216,   217,   218,   220,   221,   226,
+     237,   254,   266,   271,   275,   280,   284,   294,   305,   306,
+     308,   315,   325,   336,   338,   344,   350,   357,   359,   361,
+     362,   363,   365,   371,   374,   377,   381,   385,   389,   391,
+     392,   393,   396,   399,   402,   410,   416,   421,   422,   423,
+     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
+     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
+     444,   445,   446,   447,   448,   449,   450,   451,   452,   454,
+     458,   459,   460,   461,   462,   463,   463,   464,   465,   466,
+     469,   472,   473,   475,   479,   484,   488,   493,   497,   509,
+     510,   511,   512,   516,   520,   525,   526,   528,   529,   533,
+     537,   541,   541,   571,   571,   571,   578,   579,   579,   586,
+     596,   604,   604,   606,   607,   608,   609,   611,   612,   613,
+     615,   617,   625,   626,   627,   629,   630,   632,   634,   635,
+     636,   637,   639,   640,   642,   643,   645,   649
 };
 #endif
 
@@ -657,26 +658,26 @@ static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "UNARY", "CASTREF", "VOID", "VAR",
   "POINT", "RECT", "ARRAY", "OBJECT", "REFERENCE", "INT", "ARGC",
-  "ARGCNORET", "THEENTITY", "THEENTITYWITHID", "FLOAT", "BLTIN", "FBLTIN",
-  "RBLTIN", "ID", "STRING", "HANDLER", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL",
-  "tMETHOD", "THEOBJECTFIELD", "tDOWN", "tELSE", "tELSIF", "tEXIT",
-  "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP", "tMACRO", "tMOVIE", "tNEXT",
-  "tOF", "tPREVIOUS", "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN",
-  "tWITH", "tWHILE", "tNLELSE", "tFACTORY", "tOPEN", "tPLAY", "tDONE",
-  "tINSTANCE", "tGE", "tLE", "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tMOD",
-  "tAFTER", "tBEFORE", "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tITEM",
-  "tLINE", "tWORD", "tSPRITE", "tINTERSECTS", "tWITHIN", "tTELL",
-  "tPROPERTY", "tON", "tENDIF", "tENDREPEAT", "tENDTELL", "'<'", "'>'",
-  "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "','",
-  "'['", "']'", "':'", "$accept", "program", "programline", "asgn",
-  "stmtoneliner", "stmtonelinerwithif", "stmt", "tellstart", "ifstmt",
-  "elseifstmtlist", "elseifstmt", "ifoneliner", "repeatwhile",
-  "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when",
-  "simpleexpr", "expr", "reference", "proc", "$@1", "globallist",
-  "propertylist", "instancelist", "gotofunc", "gotomovie", "playfunc",
-  "$@2", "defn", "$@3", "$@4", "$@5", "on", "$@6", "argdef", "endargdef",
-  "argstore", "macro", "arglist", "nonemptyarglist", "list", "valuelist",
-  "linearlist", "proplist", "proppair", YY_NULLPTR
+  "ARGCNORET", "THEENTITY", "THEENTITYWITHID", "THEMENUITEMENTITY",
+  "FLOAT", "BLTIN", "FBLTIN", "RBLTIN", "ID", "STRING", "HANDLER",
+  "SYMBOL", "ENDCLAUSE", "tPLAYACCEL", "tMETHOD", "THEOBJECTFIELD",
+  "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tIF", "tINTO",
+  "tLOOP", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT",
+  "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE",
+  "tFACTORY", "tOPEN", "tPLAY", "tDONE", "tINSTANCE", "tGE", "tLE", "tEQ",
+  "tNEQ", "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT",
+  "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE",
+  "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tENDIF",
+  "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'",
+  "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
+  "$accept", "program", "programline", "asgn", "stmtoneliner",
+  "stmtonelinerwithif", "stmt", "tellstart", "ifstmt", "elseifstmtlist",
+  "elseifstmt", "ifoneliner", "repeatwhile", "repeatwith", "if", "elseif",
+  "begin", "end", "stmtlist", "when", "simpleexpr", "expr", "reference",
+  "proc", "$@1", "globallist", "propertylist", "instancelist", "gotofunc",
+  "gotomovie", "playfunc", "$@2", "defn", "$@3", "$@4", "$@5", "on", "$@6",
+  "argdef", "endargdef", "argstore", "macro", "arglist", "nonemptyarglist",
+  "list", "valuelist", "linearlist", "proplist", "proppair", YY_NULLPTR
 };
 #endif
 
@@ -693,12 +694,12 @@ 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,    60,    62,    38,    43,    45,    42,    47,
-      37,    10,    40,    41,    44,    91,    93,    58
+     335,   336,   337,   338,    60,    62,    38,    43,    45,    42,
+      47,    37,    10,    40,    41,    44,    91,    93,    58
 };
 # endif
 
-#define YYPACT_NINF (-261)
+#define YYPACT_NINF (-267)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -712,42 +713,42 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     271,   -82,  -261,  -261,   874,  -261,   908,   989,    75,  1023,
-    -261,  -261,  -261,  -261,  -261,   -29,  -261,   757,  -261,  -261,
-     874,    44,    85,    26,    37,   874,   793,    39,   874,   874,
-     874,   874,   874,   874,   874,    56,  -261,   874,   874,   874,
-      61,     7,  -261,  -261,  -261,  -261,  -261,   874,    22,   874,
-     595,  -261,  1512,  -261,  -261,  -261,  -261,  -261,  -261,  -261,
-    -261,  -261,    -8,   874,  1512,   874,  1512,    -6,   874,    -6,
-    -261,  -261,   874,  1512,    18,   874,  -261,  -261,   102,  -261,
-     874,  -261,    88,  -261,  1075,  -261,   103,  1062,   108,  -261,
-      -7,    75,    15,   104,   107,  -261,  1429,  -261,  1075,  -261,
-    -261,    55,  -261,  1124,  1157,  1190,  1223,  1479,  1388,  -261,
-      60,   129,  -261,  -261,  1442,    62,    65,  -261,  -261,    67,
-      63,    70,  -261,  -261,   352,  1512,   874,  1512,  -261,  -261,
-     874,  1512,  -261,  -261,   874,   874,   874,   874,   874,   874,
-     874,   874,   874,   874,   874,   874,   874,   874,   874,   874,
-     874,   146,   874,  1062,  1442,     9,   874,    21,    27,   874,
-      -6,   146,  -261,    80,  1512,   874,  -261,  -261,    89,   874,
-     874,  -261,   874,   874,    16,   874,   874,   874,  -261,   874,
-    -261,   155,   874,   874,   874,   874,   874,   874,   874,   874,
-     874,   874,  -261,  -261,   156,  -261,  -261,    75,    75,  -261,
-      75,    -5,  -261,  -261,  1512,   142,  -261,  1512,   180,   180,
-     180,   180,   133,   133,  -261,   -33,   180,   180,   180,   180,
-     -33,   -52,   -52,  -261,  -261,  -261,   -50,  -261,  1512,  -261,
-    -261,  1512,    13,   173,  1512,  -261,  -261,  -261,  1512,  1512,
-    1512,   180,   874,   874,  1512,   180,  1512,  1512,  -261,  1512,
-    1256,  1512,  1289,  1512,  1322,  1512,  1355,  1512,  1512,   676,
-    -261,  -261,  -261,  -261,  -261,    62,    65,  -261,   514,    10,
-    -261,   153,   109,   185,   109,  -261,   146,  1512,   180,   874,
-     874,   874,   874,  -261,   514,  -261,  -261,   126,   161,   874,
-     514,   676,   188,  -261,  -261,  -261,    17,  1512,  1512,  1512,
-    1512,  -261,   128,  -261,   874,  1512,  -261,  -261,  -261,   433,
-     514,   109,  -261,  1512,  -261,    86,   -10,   191,  -261,  -261,
-     514,  -261,  -261,  -261,   874,   134,  -261,  -261,  -261,   119,
-     514,   514,   143,  -261,  1512,  -261,   676,   194,   144,  -261,
-     514,   177,  -261,  -261,  -261,   147,  -261,   149,  -261,   514,
-    -261,  -261
+     275,   -50,  -267,  -267,   864,  -267,   897,   976,    82,  1009,
+    -267,  -267,  -267,  -267,  -267,     4,  -267,   749,  -267,  -267,
+     864,    46,   208,    30,    45,   864,   785,    53,   864,   864,
+     864,   864,   864,   864,   864,    56,  -267,   864,   864,   864,
+      61,     6,  -267,  -267,  -267,  -267,  -267,   864,    22,   864,
+     591,  -267,  1498,  -267,  -267,  -267,  -267,  -267,  -267,  -267,
+    -267,  -267,    -8,   864,  1498,   864,  1498,    18,   864,    18,
+    -267,  -267,   864,  1498,    21,   864,  -267,  -267,    69,  -267,
+     864,  -267,    81,  -267,  1061,  -267,   100,  1048,   102,  -267,
+      -9,    82,    82,     9,    77,    79,  -267,  1415,  -267,  1061,
+    -267,  -267,    34,  -267,  1110,  1143,  1176,  1209,  1465,  1374,
+    -267,    35,   128,  -267,  -267,  1428,    54,    57,  -267,  -267,
+      63,    59,    66,  -267,  -267,   354,  1498,   864,  1498,  -267,
+    -267,   864,  1498,  -267,  -267,   864,   864,   864,   864,   864,
+     864,   864,   864,   864,   864,   864,   864,   864,   864,   864,
+     864,   864,   129,   864,  1048,  1428,   -32,   864,     8,    15,
+     864,    18,   129,  -267,    68,  1498,   864,  -267,  -267,    90,
+     864,   864,  -267,   864,   864,    10,   116,   864,   864,   864,
+    -267,   864,  -267,   142,   864,   864,   864,   864,   864,   864,
+     864,   864,   864,   864,  -267,  -267,   146,  -267,  -267,    82,
+      82,  -267,    82,    83,  -267,  -267,  1498,   124,  -267,  1498,
+     125,   125,   125,   125,  1511,  1511,  -267,   -34,   125,   125,
+     125,   125,   -34,     0,     0,  -267,  -267,  -267,   -80,  -267,
+    1498,  -267,  -267,  1498,   -75,   150,  1498,  -267,  -267,  -267,
+    1498,  1498,  1498,   125,   864,   864,   154,  1498,   125,  1498,
+    1498,  -267,  1498,  1242,  1498,  1275,  1498,  1308,  1498,  1341,
+    1498,  1498,   670,  -267,  -267,  -267,  -267,  -267,    54,    57,
+    -267,   512,   -16,  -267,   144,    97,   172,    97,  -267,   129,
+    1498,   125,    82,   864,   864,   864,   864,  -267,   512,  -267,
+    -267,   115,   151,   864,   512,   670,   176,  -267,  -267,  -267,
+     -48,   156,  1498,  1498,  1498,  1498,  -267,   122,  -267,   864,
+    1498,  -267,  -267,  -267,   433,   512,    97,   864,  -267,  1498,
+    -267,    88,   -21,   184,  -267,  1498,  -267,   512,  -267,  -267,
+    -267,   864,   126,  -267,  -267,  -267,   113,   512,   512,   127,
+    -267,  1498,  -267,   670,   188,   134,  -267,   512,   170,  -267,
+    -267,  -267,   138,  -267,   140,  -267,   512,  -267,  -267
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -755,62 +756,62 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    52,    63,     0,    53,   151,   151,     0,    56,
-      55,    54,   130,   136,    65,   103,   104,     0,    44,   132,
+       0,     0,    53,    64,     0,    54,   152,   152,     0,    57,
+      56,    55,   131,   137,    66,   104,   105,     0,    45,   133,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   140,     0,     0,     0,
-     157,     0,     3,    66,    26,     7,    27,     0,     0,     0,
-       0,    58,    20,    59,    21,   100,   101,     6,    46,    19,
-      57,     4,    56,     0,    64,   151,   152,   109,   151,    61,
-      56,    98,   151,   154,   150,   151,    46,   102,     0,   118,
-       0,   119,     0,   120,   121,   123,     0,    99,     0,    42,
-       0,     0,     0,     0,     0,   135,   111,   126,   127,   129,
-     116,   107,    80,     0,     0,     0,     0,     0,     0,   114,
-     106,     0,    85,    86,     0,    55,    54,   158,   161,     0,
-     159,   160,   163,     1,     5,    47,     0,    47,    47,    25,
-       0,    23,    24,    22,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   141,     0,     0,     0,
+     158,     0,     3,    67,    27,     7,    28,     0,     0,     0,
+       0,    59,    21,    60,    22,   101,   102,     6,    47,    20,
+      58,     4,    57,     0,    65,   152,   153,   110,   152,    62,
+      57,    99,   152,   155,   151,   152,    47,   103,     0,   119,
+       0,   120,     0,   121,   122,   124,     0,   100,     0,    43,
+       0,     0,     0,     0,     0,     0,   136,   112,   127,   128,
+     130,   117,   108,    81,     0,     0,     0,     0,     0,     0,
+     115,   107,     0,    86,    87,     0,    56,    55,   159,   162,
+       0,   160,   161,   164,     1,     5,    48,     0,    48,    48,
+      26,     0,    24,    25,    23,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   142,   151,     0,   152,     0,     0,     0,     0,     0,
-     131,   142,   112,   105,   125,     0,   122,   133,     0,     0,
-       0,    43,     0,     0,     0,     0,     0,     0,    51,     0,
-     128,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,    34,     0,   141,    87,     0,     0,   156,
-       0,     0,     2,    48,    47,     0,    31,    47,    76,    77,
-      74,    75,    78,    79,    71,    82,    83,    84,    73,    72,
-      81,    67,    68,    69,    70,   143,     0,   108,   153,    60,
-      62,   155,     0,     0,   124,    46,     8,     9,    10,    11,
-      15,    13,     0,     0,    14,    12,    18,   110,   117,    90,
-       0,    92,     0,    94,     0,    96,     0,    88,    89,     0,
-      48,   115,   166,   165,   162,     0,     0,   164,    47,     0,
-      48,     0,   149,     0,   149,   113,   142,    16,    17,     0,
-       0,     0,     0,    47,    47,    49,    50,     0,     0,     0,
-      47,     0,     0,    48,   144,    48,     0,    91,    93,    95,
-      97,    33,     0,    28,     0,    47,    37,    47,   145,   139,
-     137,   149,    32,    47,    48,    47,     0,   146,    48,    48,
-      47,    46,    45,    38,     0,     0,    46,    41,   147,   138,
-     134,    47,     0,    48,    47,    35,     0,     0,     0,    29,
-      47,     0,    47,   148,    30,     0,    48,     0,    36,    47,
-      40,    39
+       0,     0,   143,   152,     0,   153,     0,     0,     0,     0,
+       0,   132,   143,   113,   106,   126,     0,   123,   134,     0,
+       0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
+      52,     0,   129,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    35,    35,     0,   142,    88,     0,
+       0,   157,     0,     0,     2,    49,    48,     0,    32,    48,
+      77,    78,    75,    76,    79,    80,    72,    83,    84,    85,
+      74,    73,    82,    68,    69,    70,    71,   144,     0,   109,
+     154,    61,    63,   156,     0,     0,   125,    47,     8,     9,
+      10,    11,    15,    13,     0,     0,     0,    14,    12,    19,
+     111,   118,    91,     0,    93,     0,    95,     0,    97,     0,
+      89,    90,     0,    49,   116,   167,   166,   163,     0,     0,
+     165,    48,     0,    49,     0,   150,     0,   150,   114,   143,
+      16,    17,     0,     0,     0,     0,     0,    48,    48,    50,
+      51,     0,     0,     0,    48,     0,     0,    49,   145,    49,
+       0,     0,    92,    94,    96,    98,    34,     0,    29,     0,
+      48,    38,    48,   146,   140,   138,   150,     0,    33,    48,
+      49,    48,     0,   147,    49,    18,    49,    48,    47,    46,
+      39,     0,     0,    47,    42,   148,   139,   135,    48,     0,
+      49,    48,    36,     0,     0,     0,    30,    48,     0,    48,
+     149,    31,     0,    49,     0,    37,    48,    41,    40
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -261,  -261,   106,  -261,  -241,  -261,    23,    38,  -261,  -261,
-    -261,  -261,  -261,  -261,   182,  -261,   -75,   -79,  -228,  -261,
-      -2,    -4,    69,   183,  -261,  -261,  -261,  -261,  -261,   -18,
-    -261,  -261,  -261,  -261,  -261,  -261,  -261,  -261,  -157,  -261,
-    -260,   190,     4,  -261,  -261,  -261,  -261,  -261,    34
+    -267,  -267,   101,  -267,  -255,  -267,    23,    27,  -267,  -267,
+    -267,  -267,  -267,  -267,   178,  -267,   -72,   -92,  -225,  -267,
+       1,    -4,    62,   182,  -267,  -267,  -267,  -267,  -267,   -18,
+    -267,  -267,  -267,  -267,  -267,  -267,  -267,  -267,  -161,  -267,
+    -266,   183,    12,  -267,  -267,  -267,  -267,  -267,    31
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    41,    42,    43,    44,   128,   286,   259,    46,   315,
-     323,   129,    47,    48,    49,   324,   151,   203,   268,    50,
-      51,    52,    53,    54,    78,   163,   110,   101,    55,    85,
-      56,    75,    57,    86,   235,    76,    58,   111,   226,   329,
-     293,    59,   158,    74,    60,   119,   120,   121,   122
+      -1,    41,    42,    43,    44,   129,   290,   262,    46,   321,
+     330,   130,    47,    48,    49,   331,   152,   205,   271,    50,
+      51,    52,    53,    54,    78,   164,   111,   102,    55,    85,
+      56,    75,    57,    86,   237,    76,    58,   112,   228,   336,
+     297,    59,   159,    74,    60,   120,   121,   122,   123
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -818,418 +819,418 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      64,   161,    66,    66,   232,    73,    71,   123,    99,    61,
-      67,    69,   140,    84,   295,    77,    87,   265,   283,   266,
-     326,    96,    98,    45,   102,   103,   104,   105,   106,   107,
-     108,   140,   284,   112,   113,   114,   149,   150,   118,   288,
-     172,   272,   290,   125,   273,   127,   131,    94,   205,   206,
-     307,   318,   173,   147,   148,   149,   150,   289,    95,   153,
-     100,   154,   175,   242,   154,   309,   166,   310,   154,   155,
-     327,    66,   157,     2,   176,   243,   164,   109,     5,   160,
-     180,   126,    70,   115,   152,   116,   320,     2,   156,   174,
-     330,   331,     5,    88,    89,   342,    70,    10,   124,    11,
-      90,    91,   227,   156,   274,   340,    92,   273,   311,     8,
-     236,   273,   159,    93,   229,   156,   321,   322,   349,   296,
-     230,   156,   204,   162,   167,   269,   207,   165,   271,   171,
-     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,    45,    66,   181,
-     195,   177,   228,   178,   194,   231,    40,   200,   117,   197,
-     276,   234,   198,   199,   201,   238,   239,   225,   240,   241,
-      40,   244,   245,   246,   233,   247,   248,   261,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   270,   287,
-     134,   135,   136,   137,   275,   262,   263,   140,   264,   291,
-     141,   142,   143,   292,   301,   302,   294,   303,   304,   308,
-     312,   306,   328,   337,   335,   343,   144,   145,   146,   147,
-     148,   149,   150,   346,   339,   344,   314,   348,   316,   350,
-     202,   260,   130,   132,   319,   267,   325,   237,   277,   278,
-     133,   332,     0,     0,   140,     0,   333,   141,     0,     0,
-       0,   336,   338,     0,     0,   341,     0,     0,     0,     0,
-       0,   345,     0,   347,     0,   146,   147,   148,   149,   150,
-     351,    -5,     1,     0,     0,   297,   298,   299,   300,     0,
-       0,     0,     0,     2,     0,   305,     3,     4,     5,     6,
-       7,     8,     9,    10,     0,    11,     0,    12,    13,    14,
-     313,     0,     0,    15,    16,    17,    18,     0,     0,    19,
-       0,     0,     0,     0,    20,    21,    22,     0,     0,    23,
-     334,     0,     0,    24,    25,    26,     0,    27,     0,     0,
-       0,     0,     0,     0,    28,     0,     0,     0,     0,     0,
-       0,    29,    30,    31,    32,    33,     0,     0,    34,    35,
-      36,     0,     0,     0,     0,     0,     0,    37,    38,     0,
-       0,     0,    -5,    39,     2,     0,    40,     3,     4,     5,
-       6,     7,     8,     9,    10,     0,    11,     0,    12,    13,
-      14,     0,     0,     0,    15,    16,    17,    18,     0,     0,
-      19,     0,     0,     0,     0,    20,    21,    22,     0,     0,
-      23,     0,     0,     0,    24,    25,    26,     0,    27,     0,
-       0,     0,     0,     0,     0,    28,     0,     0,     0,     0,
-       0,     0,    29,    30,    31,    32,    33,     0,     0,    34,
-      35,    36,     0,     0,     0,     0,     0,     0,    37,    38,
-       0,     0,     0,     0,    39,     2,     0,    40,     3,     4,
-       5,     6,     7,     8,     9,    10,     0,    11,   317,    12,
-       0,    14,     0,     0,     0,    15,    16,    17,    18,     0,
-       0,     0,     0,     0,     0,     0,    20,    21,    22,     0,
-       0,    23,     0,     0,     0,     0,    25,    26,     0,    27,
-       0,     0,     0,     0,     0,     0,    28,     0,     0,     0,
-       0,     0,     0,    29,    30,    31,    32,    33,     0,     0,
-      34,    35,     0,     0,     0,     0,     0,     0,     0,    37,
-      38,     0,     0,     0,   285,    39,     2,     0,    40,     3,
-       4,     5,     6,     7,     8,     9,    10,     0,    11,     0,
+      64,   234,    66,    66,   162,    73,   124,   287,   100,    71,
+     333,   299,   275,    84,   292,   276,    87,   277,    67,    69,
+     276,    97,    99,    45,   103,   104,   105,   106,   107,   108,
+     109,   141,   293,   113,   114,   115,   207,   208,   288,   173,
+     312,   119,    61,   126,   316,   128,   132,   276,   294,    77,
+     324,   174,    95,   148,   149,   150,   151,   177,   244,   154,
+     334,   155,   229,   157,   155,   141,   167,    96,   155,   178,
+     245,    66,   314,     2,   315,   101,   165,   156,   110,     5,
+     158,   182,   127,    70,   116,   153,   117,   161,   349,   150,
+     151,   163,   175,   176,     2,   327,    88,    89,   125,   337,
+       5,   338,   231,   157,    70,    10,   268,    11,   269,   232,
+     157,     8,   238,   157,   272,   347,   160,   274,   300,   328,
+     329,   166,   168,   206,   172,   179,   180,   209,   356,   183,
+     196,   210,   211,   212,   213,   214,   215,   216,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,    45,    66,
+     197,   227,   199,   230,   202,   200,   233,    40,   246,   118,
+     201,   203,   236,   235,   251,   279,   240,   241,   264,   242,
+     243,   273,   278,   247,   248,   249,   282,   250,    40,   291,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     141,   295,   296,   142,   298,   306,   307,   308,   313,   309,
+     265,   266,   311,   267,   317,   318,   335,   342,   344,   346,
+     350,   147,   148,   149,   150,   151,   351,   353,   320,   355,
+     322,   357,   263,    90,    91,    92,   204,   326,   131,   332,
+      93,   239,   133,   134,   270,   339,     0,    94,     0,     0,
+     280,   281,     0,     0,     0,     0,   345,     0,     0,   348,
+       0,     0,     0,     0,     0,   352,   340,   354,     0,     0,
+       0,   343,     0,     0,   358,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    -5,     1,     0,     0,   302,
+     303,   304,   305,   301,     0,     0,     0,     2,     0,   310,
+       3,     4,     0,     5,     6,     7,     8,     9,    10,     0,
+      11,     0,    12,    13,    14,   319,     0,     0,    15,    16,
+      17,    18,     0,   325,    19,     0,     0,     0,     0,    20,
+      21,    22,     0,     0,    23,     0,     0,   341,    24,    25,
+      26,     0,    27,     0,     0,     0,     0,     0,     0,    28,
+       0,     0,     0,     0,     0,     0,    29,    30,    31,    32,
+      33,     0,     0,    34,    35,    36,     0,     0,     0,     0,
+       0,     0,    37,    38,     0,     0,     2,    -5,    39,     3,
+       4,    40,     5,     6,     7,     8,     9,    10,     0,    11,
+       0,    12,    13,    14,     0,     0,     0,    15,    16,    17,
+      18,     0,     0,    19,     0,     0,     0,     0,    20,    21,
+      22,     0,     0,    23,     0,     0,     0,    24,    25,    26,
+       0,    27,     0,     0,     0,     0,     0,     0,    28,     0,
+       0,     0,     0,     0,     0,    29,    30,    31,    32,    33,
+       0,     0,    34,    35,    36,     0,     0,     0,     0,     0,
+       0,    37,    38,     0,     0,     2,     0,    39,     3,     4,
+      40,     5,     6,     7,     8,     9,    10,     0,    11,   323,
       12,     0,    14,     0,     0,     0,    15,    16,    17,    18,
        0,     0,     0,     0,     0,     0,     0,    20,    21,    22,
        0,     0,    23,     0,     0,     0,     0,    25,    26,     0,
       27,     0,     0,     0,     0,     0,     0,    28,     0,     0,
        0,     0,     0,     0,    29,    30,    31,    32,    33,     0,
        0,    34,    35,     0,     0,     0,     0,     0,     0,     0,
-      37,    38,     0,     0,     0,   285,    39,     2,     0,    40,
-       3,     4,     5,     6,     7,     8,     9,    10,     0,    11,
-       0,    12,     0,    14,     0,     0,     0,    15,    16,    17,
-      18,     0,     0,     0,     0,     0,     0,     0,    20,     0,
-      22,     0,     0,     0,     0,     0,     0,     0,    25,    26,
-       0,    27,     0,     0,     0,     0,     0,     0,    28,     0,
-       0,     0,     0,     0,     0,    29,    30,    31,    32,    33,
-       0,     0,     0,    35,     0,     0,     0,     0,     0,     0,
-       0,    37,    38,     0,     0,     0,     0,    39,     2,     0,
-      40,     3,     4,     5,     6,     7,     8,     9,    10,     0,
-      11,     0,    12,     0,    14,     0,     0,     0,    15,    16,
-      17,     0,     0,     0,     0,     0,     0,     0,     0,    20,
-       0,    22,     0,     0,     0,     0,     0,     0,     0,    25,
-      26,     0,    27,     0,     0,     0,     0,     0,     0,    28,
-       0,     0,     0,     0,     0,     0,    29,    30,    31,    32,
-      33,     0,     0,     0,    35,     0,     0,     0,     0,     0,
-       0,     0,    37,    38,     0,     0,     0,     0,    39,     2,
-       0,    40,     3,     4,     5,     0,     7,     8,    62,    10,
-       0,    11,     0,     0,     0,    14,     0,     0,     0,     0,
-       0,     0,     0,     0,    79,     0,    80,    81,    82,    83,
-      63,     0,    22,     0,     0,     2,     0,     0,     3,     4,
-       5,     0,     7,     8,    62,    10,     0,    11,     0,     0,
-      28,    14,     0,     0,     0,     0,     0,    29,    30,    31,
-      32,    33,    80,     0,    82,     0,    63,     0,    22,     0,
-       0,     0,     0,    37,    38,     0,     0,     0,    97,    39,
-       0,     0,    40,     0,     0,     0,    28,     0,     0,     0,
+      37,    38,     0,     0,     2,   289,    39,     3,     4,    40,
+       5,     6,     7,     8,     9,    10,     0,    11,     0,    12,
+       0,    14,     0,     0,     0,    15,    16,    17,    18,     0,
+       0,     0,     0,     0,     0,     0,    20,    21,    22,     0,
+       0,    23,     0,     0,     0,     0,    25,    26,     0,    27,
+       0,     0,     0,     0,     0,     0,    28,     0,     0,     0,
        0,     0,     0,    29,    30,    31,    32,    33,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    37,
-      38,     0,     0,     0,     0,    39,     2,     0,    40,     3,
-       4,     5,     0,     7,     8,    62,    10,     0,    11,     0,
-       0,     0,    14,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    63,     0,    22,
-       2,     0,     0,     3,     4,     5,     0,     7,     8,    62,
-      10,     0,    11,     0,     0,     0,    14,    28,     0,     0,
-       0,     0,     0,     0,    29,    30,    31,    32,    33,     0,
+      34,    35,     0,     0,     0,     0,     0,     0,     0,    37,
+      38,     0,     0,     2,   289,    39,     3,     4,    40,     5,
+       6,     7,     8,     9,    10,     0,    11,     0,    12,     0,
+      14,     0,     0,     0,    15,    16,    17,    18,     0,     0,
+       0,     0,     0,     0,     0,    20,     0,    22,     0,     0,
+       0,     0,     0,     0,     0,    25,    26,     0,    27,     0,
+       0,     0,     0,     0,     0,    28,     0,     0,     0,     0,
+       0,     0,    29,    30,    31,    32,    33,     0,     0,     0,
+      35,     0,     0,     0,     0,     0,     0,     0,    37,    38,
+       0,     0,     2,     0,    39,     3,     4,    40,     5,     6,
+       7,     8,     9,    10,     0,    11,     0,    12,     0,    14,
+       0,     0,     0,    15,    16,    17,     0,     0,     0,     0,
+       0,     0,     0,     0,    20,     0,    22,     0,     0,     0,
+       0,     0,     0,     0,    25,    26,     0,    27,     0,     0,
+       0,     0,     0,     0,    28,     0,     0,     0,     0,     0,
+       0,    29,    30,    31,    32,    33,     0,     0,     0,    35,
+       0,     0,     0,     0,     0,     0,     0,    37,    38,     0,
+       0,     2,     0,    39,     3,     4,    40,     5,     0,     7,
+       8,    62,    10,     0,    11,     0,     0,     0,    14,     0,
+       0,     0,     0,     0,     0,     0,     0,    79,     0,    80,
+      81,    82,    83,    63,     0,    22,     0,     2,     0,     0,
+       3,     4,     0,     5,     0,     7,     8,    62,    10,     0,
+      11,     0,     0,    28,    14,     0,     0,     0,     0,     0,
+      29,    30,    31,    32,    33,    80,     0,    82,     0,    63,
+       0,    22,     0,     0,     0,     0,    37,    38,     0,     0,
+       0,    98,    39,     0,     0,    40,     0,     0,     0,    28,
+       0,     0,     0,     0,     0,     0,    29,    30,    31,    32,
+      33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    37,    38,     0,     0,     2,     0,    39,     3,
+       4,    40,     5,     0,     7,     8,    62,    10,     0,    11,
+       0,     0,     0,    14,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    63,     2,
+      22,     0,     3,     4,     0,     5,     0,     7,     8,    62,
+      10,     0,    11,     0,     0,     0,    14,     0,    28,     0,
+       0,     0,     0,     0,     0,    29,    30,    31,    32,    33,
        0,    63,     0,    22,     0,     0,     0,     0,     0,     0,
-      37,    38,     0,     0,     0,     0,    39,     0,     0,    40,
-       0,    28,     0,     0,     0,     0,     0,     0,    29,    30,
+       0,    37,    38,     0,     0,     0,     0,    39,     0,     0,
+      40,    28,     0,     0,     0,     0,     0,     0,    29,    30,
       31,    32,    33,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    37,    38,     0,     0,     0,     0,
-      65,     2,     0,    40,     3,     4,     5,     0,     7,     8,
-      62,    10,     0,    11,     0,     0,     0,    14,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    63,     0,    22,     2,     0,     0,     3,     4,
-       5,     0,     7,     8,    62,    10,     0,    11,     0,     0,
-       0,    14,    28,     0,     0,     0,     0,     0,     0,    29,
-      30,    31,    32,    33,     0,     0,    63,     0,    22,     0,
-       0,     0,     0,     0,     0,    37,    38,     0,     0,     0,
-       0,    68,     0,     0,    40,     0,    28,     0,     0,     0,
-       0,     0,     0,    29,    30,    31,    32,    33,   168,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    37,
-      38,     0,     0,     0,    80,    72,    82,     0,    40,   134,
-     135,   136,   137,   138,   139,     0,   140,   169,   170,   141,
-     142,   143,   134,   135,   136,   137,   138,   139,     0,   140,
-       0,     0,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,     0,     0,     0,     0,     0,     0,   144,   145,
-     146,   147,   148,   149,   150,   182,     0,     0,     0,     0,
-       0,   183,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   134,   135,   136,   137,   138,   139,     0,   140,     0,
-       0,   141,   142,   143,     0,     0,     0,     0,   184,     0,
-       0,     0,     0,     0,   185,     0,     0,   144,   145,   146,
-     147,   148,   149,   150,   134,   135,   136,   137,   138,   139,
-       0,   140,     0,     0,   141,   142,   143,     0,     0,     0,
-       0,   186,     0,     0,     0,     0,     0,   187,     0,     0,
-     144,   145,   146,   147,   148,   149,   150,   134,   135,   136,
-     137,   138,   139,     0,   140,     0,     0,   141,   142,   143,
-       0,     0,     0,     0,   188,     0,     0,     0,     0,     0,
-     189,     0,     0,   144,   145,   146,   147,   148,   149,   150,
-     134,   135,   136,   137,   138,   139,     0,   140,     0,     0,
-     141,   142,   143,     0,     0,     0,     0,   279,     0,     0,
-       0,     0,     0,     0,     0,     0,   144,   145,   146,   147,
-     148,   149,   150,   134,   135,   136,   137,   138,   139,     0,
-     140,     0,     0,   141,   142,   143,     0,     0,     0,     0,
-     280,     0,     0,     0,     0,     0,     0,     0,     0,   144,
-     145,   146,   147,   148,   149,   150,   134,   135,   136,   137,
-     138,   139,     0,   140,     0,     0,   141,   142,   143,     0,
-       0,     0,     0,   281,     0,     0,     0,     0,     0,     0,
-       0,     0,   144,   145,   146,   147,   148,   149,   150,   134,
-     135,   136,   137,   138,   139,     0,   140,     0,     0,   141,
-     142,   143,     0,     0,     0,     0,   282,     0,     0,     0,
-       0,     0,     0,     0,     0,   144,   145,   146,   147,   148,
-     149,   150,   134,   135,   136,   137,   138,   139,     0,   140,
-       0,     0,   141,   142,   143,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   192,     0,     0,   144,   145,
-     146,   147,   148,   149,   150,   134,   135,   136,   137,   138,
-     139,     0,   140,     0,     0,   141,   142,   143,     0,     0,
+       0,     0,     0,     0,    37,    38,     0,     0,     2,     0,
+      65,     3,     4,    40,     5,     0,     7,     8,    62,    10,
+       0,    11,     0,     0,     0,    14,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   144,   145,   146,   147,   148,   149,   150,   179,   193,
-       0,     0,     0,     0,     0,     0,   134,   135,   136,   137,
-     138,   139,     0,   140,     0,     0,   141,   142,   143,   134,
-     135,   136,   137,   138,   139,     0,   140,     0,     0,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,     0,
-       0,     0,     0,     0,     0,   144,   145,   146,   147,   148,
-     149,   150,     0,     0,     0,   196,   134,   135,   136,   137,
-     138,   139,     0,   140,     0,     0,   141,   142,   143,     0,
-       0,     0,     0,     0,   190,   191,     0,     0,     0,     0,
-       0,     0,   144,   145,   146,   147,   148,   149,   150,   134,
-     135,   136,   137,   138,   139,     0,   140,     0,     0,   141,
-     142,   143,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   144,   145,   146,   147,   148,
-     149,   150
+      63,     2,    22,     0,     3,     4,     0,     5,     0,     7,
+       8,    62,    10,     0,    11,     0,     0,     0,    14,     0,
+      28,     0,     0,     0,     0,     0,     0,    29,    30,    31,
+      32,    33,     0,    63,     0,    22,     0,     0,     0,     0,
+       0,     0,     0,    37,    38,     0,     0,     0,     0,    68,
+       0,     0,    40,    28,     0,     0,     0,     0,     0,     0,
+      29,    30,    31,    32,    33,   169,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    37,    38,     0,     0,
+       0,    80,    72,    82,     0,    40,   135,   136,   137,   138,
+     139,   140,     0,   141,   170,   171,   142,   143,   144,   135,
+     136,   137,   138,   139,   140,     0,   141,     0,     0,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   151,     0,
+       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
+     150,   151,   184,     0,     0,     0,     0,     0,   185,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   135,   136,
+     137,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,     0,     0,     0,   186,     0,     0,     0,     0,
+       0,   187,     0,     0,   145,   146,   147,   148,   149,   150,
+     151,   135,   136,   137,   138,   139,   140,     0,   141,     0,
+       0,   142,   143,   144,     0,     0,     0,     0,   188,     0,
+       0,     0,     0,     0,   189,     0,     0,   145,   146,   147,
+     148,   149,   150,   151,   135,   136,   137,   138,   139,   140,
+       0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
+       0,   190,     0,     0,     0,     0,     0,   191,     0,     0,
+     145,   146,   147,   148,   149,   150,   151,   135,   136,   137,
+     138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
+       0,     0,     0,     0,   283,     0,     0,     0,     0,     0,
+       0,     0,     0,   145,   146,   147,   148,   149,   150,   151,
+     135,   136,   137,   138,   139,   140,     0,   141,     0,     0,
+     142,   143,   144,     0,     0,     0,     0,   284,     0,     0,
+       0,     0,     0,     0,     0,     0,   145,   146,   147,   148,
+     149,   150,   151,   135,   136,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
+     285,     0,     0,     0,     0,     0,     0,     0,     0,   145,
+     146,   147,   148,   149,   150,   151,   135,   136,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,     0,
+       0,     0,     0,   286,     0,     0,     0,     0,     0,     0,
+       0,     0,   145,   146,   147,   148,   149,   150,   151,   135,
+     136,   137,   138,   139,   140,     0,   141,     0,     0,   142,
+     143,   144,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   194,     0,     0,   145,   146,   147,   148,   149,
+     150,   151,   135,   136,   137,   138,   139,   140,     0,   141,
+       0,     0,   142,   143,   144,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   145,   146,
+     147,   148,   149,   150,   151,   181,   195,     0,     0,     0,
+       0,     0,     0,   135,   136,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,   135,   136,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,     0,     0,     0,     0,
+       0,     0,   145,   146,   147,   148,   149,   150,   151,     0,
+       0,     0,   198,   135,   136,   137,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,     0,     0,     0,     0,
+       0,   192,   193,     0,     0,     0,     0,     0,     0,   145,
+     146,   147,   148,   149,   150,   151,   135,   136,   137,   138,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,   135,
+     136,   137,   138,     0,     0,     0,   141,     0,     0,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   151,     0,
+       0,     0,     0,     0,     0,   145,   146,   147,   148,   149,
+     150,   151
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,    76,     6,     7,   161,     9,     8,     0,    26,    91,
-       6,     7,    64,    17,   274,    44,    20,    22,   259,    24,
-      30,    25,    26,     0,    28,    29,    30,    31,    32,    33,
-      34,    64,   260,    37,    38,    39,    88,    89,    40,    29,
-      47,    91,   270,    47,    94,    49,    50,    21,   127,   128,
-     291,   311,    59,    86,    87,    88,    89,    47,    21,    63,
-      21,    65,    47,    47,    68,   293,    84,   295,    72,    65,
-      80,    75,    68,    12,    59,    59,    80,    21,    17,    75,
-      98,    59,    21,    22,    92,    24,   314,    12,    94,    91,
-     318,   319,    17,    49,    50,   336,    21,    22,    91,    24,
-      15,    16,    93,    94,    91,   333,    21,    94,    91,    20,
-      21,    94,    94,    28,    93,    94,    30,    31,   346,   276,
-      93,    94,   126,    21,    21,   204,   130,    39,   207,    21,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   150,   124,   152,    94,
-      21,    47,   156,    46,    94,   159,    95,    94,    97,    97,
-     235,   165,    97,    96,    94,   169,   170,    21,   172,   173,
-      95,   175,   176,   177,    94,   179,    21,    21,   182,   183,
-     184,   185,   186,   187,   188,   189,   190,   191,    46,   268,
-      57,    58,    59,    60,    21,   197,   198,    64,   200,    46,
-      67,    68,    69,    94,   283,   284,    21,    81,    47,    21,
-      82,   290,    21,    94,    80,    21,    83,    84,    85,    86,
-      87,    88,    89,    46,    81,    81,   305,    80,   307,    80,
-     124,   193,    50,    50,   313,   201,   315,   168,   242,   243,
-      50,   320,    -1,    -1,    64,    -1,   321,    67,    -1,    -1,
-      -1,   326,   331,    -1,    -1,   334,    -1,    -1,    -1,    -1,
-      -1,   340,    -1,   342,    -1,    85,    86,    87,    88,    89,
-     349,     0,     1,    -1,    -1,   279,   280,   281,   282,    -1,
-      -1,    -1,    -1,    12,    -1,   289,    15,    16,    17,    18,
-      19,    20,    21,    22,    -1,    24,    -1,    26,    27,    28,
-     304,    -1,    -1,    32,    33,    34,    35,    -1,    -1,    38,
-      -1,    -1,    -1,    -1,    43,    44,    45,    -1,    -1,    48,
-     324,    -1,    -1,    52,    53,    54,    -1,    56,    -1,    -1,
-      -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,
-      -1,    70,    71,    72,    73,    74,    -1,    -1,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    -1,
-      -1,    -1,    91,    92,    12,    -1,    95,    15,    16,    17,
-      18,    19,    20,    21,    22,    -1,    24,    -1,    26,    27,
-      28,    -1,    -1,    -1,    32,    33,    34,    35,    -1,    -1,
-      38,    -1,    -1,    -1,    -1,    43,    44,    45,    -1,    -1,
-      48,    -1,    -1,    -1,    52,    53,    54,    -1,    56,    -1,
-      -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,
-      -1,    -1,    70,    71,    72,    73,    74,    -1,    -1,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,
-      -1,    -1,    -1,    -1,    92,    12,    -1,    95,    15,    16,
-      17,    18,    19,    20,    21,    22,    -1,    24,    25,    26,
-      -1,    28,    -1,    -1,    -1,    32,    33,    34,    35,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    43,    44,    45,    -1,
-      -1,    48,    -1,    -1,    -1,    -1,    53,    54,    -1,    56,
-      -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,
-      -1,    -1,    -1,    70,    71,    72,    73,    74,    -1,    -1,
-      77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,
-      87,    -1,    -1,    -1,    91,    92,    12,    -1,    95,    15,
-      16,    17,    18,    19,    20,    21,    22,    -1,    24,    -1,
-      26,    -1,    28,    -1,    -1,    -1,    32,    33,    34,    35,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,    44,    45,
-      -1,    -1,    48,    -1,    -1,    -1,    -1,    53,    54,    -1,
-      56,    -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,
-      -1,    -1,    -1,    -1,    70,    71,    72,    73,    74,    -1,
-      -1,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      86,    87,    -1,    -1,    -1,    91,    92,    12,    -1,    95,
-      15,    16,    17,    18,    19,    20,    21,    22,    -1,    24,
-      -1,    26,    -1,    28,    -1,    -1,    -1,    32,    33,    34,
-      35,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,    -1,
-      45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,    54,
-      -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,
-      -1,    -1,    -1,    -1,    -1,    70,    71,    72,    73,    74,
-      -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    86,    87,    -1,    -1,    -1,    -1,    92,    12,    -1,
-      95,    15,    16,    17,    18,    19,    20,    21,    22,    -1,
-      24,    -1,    26,    -1,    28,    -1,    -1,    -1,    32,    33,
-      34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,
-      -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,
-      54,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    63,
-      -1,    -1,    -1,    -1,    -1,    -1,    70,    71,    72,    73,
-      74,    -1,    -1,    -1,    78,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    92,    12,
-      -1,    95,    15,    16,    17,    -1,    19,    20,    21,    22,
-      -1,    24,    -1,    -1,    -1,    28,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    37,    -1,    39,    40,    41,    42,
-      43,    -1,    45,    -1,    -1,    12,    -1,    -1,    15,    16,
-      17,    -1,    19,    20,    21,    22,    -1,    24,    -1,    -1,
-      63,    28,    -1,    -1,    -1,    -1,    -1,    70,    71,    72,
-      73,    74,    39,    -1,    41,    -1,    43,    -1,    45,    -1,
-      -1,    -1,    -1,    86,    87,    -1,    -1,    -1,    55,    92,
-      -1,    -1,    95,    -1,    -1,    -1,    63,    -1,    -1,    -1,
-      -1,    -1,    -1,    70,    71,    72,    73,    74,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,
-      87,    -1,    -1,    -1,    -1,    92,    12,    -1,    95,    15,
-      16,    17,    -1,    19,    20,    21,    22,    -1,    24,    -1,
-      -1,    -1,    28,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,    -1,    45,
-      12,    -1,    -1,    15,    16,    17,    -1,    19,    20,    21,
-      22,    -1,    24,    -1,    -1,    -1,    28,    63,    -1,    -1,
-      -1,    -1,    -1,    -1,    70,    71,    72,    73,    74,    -1,
-      -1,    43,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,
-      86,    87,    -1,    -1,    -1,    -1,    92,    -1,    -1,    95,
-      -1,    63,    -1,    -1,    -1,    -1,    -1,    -1,    70,    71,
-      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,
-      92,    12,    -1,    95,    15,    16,    17,    -1,    19,    20,
-      21,    22,    -1,    24,    -1,    -1,    -1,    28,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    43,    -1,    45,    12,    -1,    -1,    15,    16,
-      17,    -1,    19,    20,    21,    22,    -1,    24,    -1,    -1,
-      -1,    28,    63,    -1,    -1,    -1,    -1,    -1,    -1,    70,
-      71,    72,    73,    74,    -1,    -1,    43,    -1,    45,    -1,
-      -1,    -1,    -1,    -1,    -1,    86,    87,    -1,    -1,    -1,
-      -1,    92,    -1,    -1,    95,    -1,    63,    -1,    -1,    -1,
-      -1,    -1,    -1,    70,    71,    72,    73,    74,    36,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,
-      87,    -1,    -1,    -1,    39,    92,    41,    -1,    95,    57,
-      58,    59,    60,    61,    62,    -1,    64,    65,    66,    67,
-      68,    69,    57,    58,    59,    60,    61,    62,    -1,    64,
-      -1,    -1,    67,    68,    69,    83,    84,    85,    86,    87,
-      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
-      85,    86,    87,    88,    89,    41,    -1,    -1,    -1,    -1,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    57,    58,    59,    60,    61,    62,    -1,    64,    -1,
-      -1,    67,    68,    69,    -1,    -1,    -1,    -1,    41,    -1,
-      -1,    -1,    -1,    -1,    47,    -1,    -1,    83,    84,    85,
-      86,    87,    88,    89,    57,    58,    59,    60,    61,    62,
-      -1,    64,    -1,    -1,    67,    68,    69,    -1,    -1,    -1,
-      -1,    41,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,
-      83,    84,    85,    86,    87,    88,    89,    57,    58,    59,
-      60,    61,    62,    -1,    64,    -1,    -1,    67,    68,    69,
-      -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,
-      47,    -1,    -1,    83,    84,    85,    86,    87,    88,    89,
-      57,    58,    59,    60,    61,    62,    -1,    64,    -1,    -1,
-      67,    68,    69,    -1,    -1,    -1,    -1,    41,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    85,    86,
-      87,    88,    89,    57,    58,    59,    60,    61,    62,    -1,
-      64,    -1,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,
-      41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,
-      84,    85,    86,    87,    88,    89,    57,    58,    59,    60,
-      61,    62,    -1,    64,    -1,    -1,    67,    68,    69,    -1,
-      -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    83,    84,    85,    86,    87,    88,    89,    57,
-      58,    59,    60,    61,    62,    -1,    64,    -1,    -1,    67,
-      68,    69,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    83,    84,    85,    86,    87,
-      88,    89,    57,    58,    59,    60,    61,    62,    -1,    64,
-      -1,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    83,    84,
-      85,    86,    87,    88,    89,    57,    58,    59,    60,    61,
-      62,    -1,    64,    -1,    -1,    67,    68,    69,    -1,    -1,
+       4,   162,     6,     7,    76,     9,     0,   262,    26,     8,
+      31,   277,    92,    17,    30,    95,    20,    92,     6,     7,
+      95,    25,    26,     0,    28,    29,    30,    31,    32,    33,
+      34,    65,    48,    37,    38,    39,   128,   129,   263,    48,
+     295,    40,    92,    47,    92,    49,    50,    95,   273,    45,
+     316,    60,    22,    87,    88,    89,    90,    48,    48,    63,
+      81,    65,    94,    95,    68,    65,    84,    22,    72,    60,
+      60,    75,   297,    12,   299,    22,    80,    65,    22,    18,
+      68,    99,    60,    22,    23,    93,    25,    75,   343,    89,
+      90,    22,    91,    92,    12,   320,    50,    51,    92,   324,
+      18,   326,    94,    95,    22,    23,    23,    25,    25,    94,
+      95,    21,    22,    95,   206,   340,    95,   209,   279,    31,
+      32,    40,    22,   127,    22,    48,    47,   131,   353,    95,
+      95,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   125,   153,
+      22,    22,    98,   157,    95,    98,   160,    96,    42,    98,
+      97,    95,   166,    95,    22,   237,   170,   171,    22,   173,
+     174,    47,    22,   177,   178,   179,    22,   181,    96,   271,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+      65,    47,    95,    68,    22,   287,   288,    82,    22,    48,
+     199,   200,   294,   202,    48,    83,    22,    81,    95,    82,
+      22,    86,    87,    88,    89,    90,    82,    47,   310,    81,
+     312,    81,   195,    15,    16,    17,   125,   319,    50,   321,
+      22,   169,    50,    50,   203,   327,    -1,    29,    -1,    -1,
+     244,   245,    -1,    -1,    -1,    -1,   338,    -1,    -1,   341,
+      -1,    -1,    -1,    -1,    -1,   347,   328,   349,    -1,    -1,
+      -1,   333,    -1,    -1,   356,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     0,     1,    -1,    -1,   283,
+     284,   285,   286,   282,    -1,    -1,    -1,    12,    -1,   293,
+      15,    16,    -1,    18,    19,    20,    21,    22,    23,    -1,
+      25,    -1,    27,    28,    29,   309,    -1,    -1,    33,    34,
+      35,    36,    -1,   317,    39,    -1,    -1,    -1,    -1,    44,
+      45,    46,    -1,    -1,    49,    -1,    -1,   331,    53,    54,
+      55,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    64,
+      -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
+      75,    -1,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    88,    -1,    -1,    12,    92,    93,    15,
+      16,    96,    18,    19,    20,    21,    22,    23,    -1,    25,
+      -1,    27,    28,    29,    -1,    -1,    -1,    33,    34,    35,
+      36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    44,    45,
+      46,    -1,    -1,    49,    -1,    -1,    -1,    53,    54,    55,
+      -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,
+      -1,    -1,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,
+      -1,    87,    88,    -1,    -1,    12,    -1,    93,    15,    16,
+      96,    18,    19,    20,    21,    22,    23,    -1,    25,    26,
+      27,    -1,    29,    -1,    -1,    -1,    33,    34,    35,    36,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,
+      -1,    -1,    49,    -1,    -1,    -1,    -1,    54,    55,    -1,
+      57,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,
+      -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,
+      -1,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      87,    88,    -1,    -1,    12,    92,    93,    15,    16,    96,
+      18,    19,    20,    21,    22,    23,    -1,    25,    -1,    27,
+      -1,    29,    -1,    -1,    -1,    33,    34,    35,    36,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,    -1,
+      -1,    49,    -1,    -1,    -1,    -1,    54,    55,    -1,    57,
+      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,
+      -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      88,    -1,    -1,    12,    92,    93,    15,    16,    96,    18,
+      19,    20,    21,    22,    23,    -1,    25,    -1,    27,    -1,
+      29,    -1,    -1,    -1,    33,    34,    35,    36,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    44,    -1,    46,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    54,    55,    -1,    57,    -1,
+      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,    -1,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
+      -1,    -1,    12,    -1,    93,    15,    16,    96,    18,    19,
+      20,    21,    22,    23,    -1,    25,    -1,    27,    -1,    29,
+      -1,    -1,    -1,    33,    34,    35,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    44,    -1,    46,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    54,    55,    -1,    57,    -1,    -1,
+      -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,
+      -1,    71,    72,    73,    74,    75,    -1,    -1,    -1,    79,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,
+      -1,    12,    -1,    93,    15,    16,    96,    18,    -1,    20,
+      21,    22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    40,
+      41,    42,    43,    44,    -1,    46,    -1,    12,    -1,    -1,
+      15,    16,    -1,    18,    -1,    20,    21,    22,    23,    -1,
+      25,    -1,    -1,    64,    29,    -1,    -1,    -1,    -1,    -1,
+      71,    72,    73,    74,    75,    40,    -1,    42,    -1,    44,
+      -1,    46,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,
+      -1,    56,    93,    -1,    -1,    96,    -1,    -1,    -1,    64,
+      -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
+      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    87,    88,    -1,    -1,    12,    -1,    93,    15,
+      16,    96,    18,    -1,    20,    21,    22,    23,    -1,    25,
+      -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    12,
+      46,    -1,    15,    16,    -1,    18,    -1,    20,    21,    22,
+      23,    -1,    25,    -1,    -1,    -1,    29,    -1,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,
+      -1,    44,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    87,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,
+      96,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
+      73,    74,    75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    12,    -1,
+      93,    15,    16,    96,    18,    -1,    20,    21,    22,    23,
+      -1,    25,    -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    83,    84,    85,    86,    87,    88,    89,    49,    91,
-      -1,    -1,    -1,    -1,    -1,    -1,    57,    58,    59,    60,
-      61,    62,    -1,    64,    -1,    -1,    67,    68,    69,    57,
-      58,    59,    60,    61,    62,    -1,    64,    -1,    -1,    67,
-      68,    69,    83,    84,    85,    86,    87,    88,    89,    -1,
-      -1,    -1,    -1,    -1,    -1,    83,    84,    85,    86,    87,
-      88,    89,    -1,    -1,    -1,    93,    57,    58,    59,    60,
-      61,    62,    -1,    64,    -1,    -1,    67,    68,    69,    -1,
-      -1,    -1,    -1,    -1,    75,    76,    -1,    -1,    -1,    -1,
-      -1,    -1,    83,    84,    85,    86,    87,    88,    89,    57,
-      58,    59,    60,    61,    62,    -1,    64,    -1,    -1,    67,
-      68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    83,    84,    85,    86,    87,
-      88,    89
+      44,    12,    46,    -1,    15,    16,    -1,    18,    -1,    20,
+      21,    22,    23,    -1,    25,    -1,    -1,    -1,    29,    -1,
+      64,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,
+      74,    75,    -1,    44,    -1,    46,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    93,
+      -1,    -1,    96,    64,    -1,    -1,    -1,    -1,    -1,    -1,
+      71,    72,    73,    74,    75,    37,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    -1,    -1,
+      -1,    40,    93,    42,    -1,    96,    58,    59,    60,    61,
+      62,    63,    -1,    65,    66,    67,    68,    69,    70,    58,
+      59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
+      69,    70,    84,    85,    86,    87,    88,    89,    90,    -1,
+      -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
+      89,    90,    42,    -1,    -1,    -1,    -1,    -1,    48,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
+      60,    61,    62,    63,    -1,    65,    -1,    -1,    68,    69,
+      70,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,
+      -1,    48,    -1,    -1,    84,    85,    86,    87,    88,    89,
+      90,    58,    59,    60,    61,    62,    63,    -1,    65,    -1,
+      -1,    68,    69,    70,    -1,    -1,    -1,    -1,    42,    -1,
+      -1,    -1,    -1,    -1,    48,    -1,    -1,    84,    85,    86,
+      87,    88,    89,    90,    58,    59,    60,    61,    62,    63,
+      -1,    65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,
+      -1,    42,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
+      84,    85,    86,    87,    88,    89,    90,    58,    59,    60,
+      61,    62,    63,    -1,    65,    -1,    -1,    68,    69,    70,
+      -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    84,    85,    86,    87,    88,    89,    90,
+      58,    59,    60,    61,    62,    63,    -1,    65,    -1,    -1,
+      68,    69,    70,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,
+      88,    89,    90,    58,    59,    60,    61,    62,    63,    -1,
+      65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,
+      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,
+      85,    86,    87,    88,    89,    90,    58,    59,    60,    61,
+      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    -1,
+      -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    84,    85,    86,    87,    88,    89,    90,    58,
+      59,    60,    61,    62,    63,    -1,    65,    -1,    -1,    68,
+      69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    48,    -1,    -1,    84,    85,    86,    87,    88,
+      89,    90,    58,    59,    60,    61,    62,    63,    -1,    65,
+      -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    84,    85,
+      86,    87,    88,    89,    90,    50,    92,    -1,    -1,    -1,
+      -1,    -1,    -1,    58,    59,    60,    61,    62,    63,    -1,
+      65,    -1,    -1,    68,    69,    70,    58,    59,    60,    61,
+      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    84,
+      85,    86,    87,    88,    89,    90,    -1,    -1,    -1,    -1,
+      -1,    -1,    84,    85,    86,    87,    88,    89,    90,    -1,
+      -1,    -1,    94,    58,    59,    60,    61,    62,    63,    -1,
+      65,    -1,    -1,    68,    69,    70,    -1,    -1,    -1,    -1,
+      -1,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    84,
+      85,    86,    87,    88,    89,    90,    58,    59,    60,    61,
+      62,    63,    -1,    65,    -1,    -1,    68,    69,    70,    58,
+      59,    60,    61,    -1,    -1,    -1,    65,    -1,    -1,    68,
+      69,    70,    84,    85,    86,    87,    88,    89,    90,    -1,
+      -1,    -1,    -1,    -1,    -1,    84,    85,    86,    87,    88,
+      89,    90
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     1,    12,    15,    16,    17,    18,    19,    20,    21,
-      22,    24,    26,    27,    28,    32,    33,    34,    35,    38,
-      43,    44,    45,    48,    52,    53,    54,    56,    63,    70,
-      71,    72,    73,    74,    77,    78,    79,    86,    87,    92,
-      95,    99,   100,   101,   102,   104,   106,   110,   111,   112,
-     117,   118,   119,   120,   121,   126,   128,   130,   134,   139,
-     142,    91,    21,    43,   119,    92,   119,   140,    92,   140,
-      21,   118,    92,   119,   141,   129,   133,    44,   122,    37,
-      39,    40,    41,    42,   119,   127,   131,   119,    49,    50,
-      15,    16,    21,    28,    21,    21,   119,    55,   119,   127,
-      21,   125,   119,   119,   119,   119,   119,   119,   119,    21,
-     124,   135,   119,   119,   119,    22,    24,    97,   118,   143,
-     144,   145,   146,     0,    91,   119,    59,   119,   103,   109,
-     112,   119,   121,   139,    57,    58,    59,    60,    61,    62,
-      64,    67,    68,    69,    83,    84,    85,    86,    87,    88,
-      89,   114,    92,   119,   119,   140,    94,   140,   140,    94,
-     140,   114,    21,   123,   119,    39,   127,    21,    36,    65,
-      66,    21,    47,    59,   118,    47,    59,    47,    46,    49,
-     127,    94,    41,    47,    41,    47,    41,    47,    41,    47,
-      75,    76,    47,    91,    94,    21,    93,    97,    97,    96,
-      94,    94,   100,   115,   119,   115,   115,   119,   119,   119,
-     119,   119,   119,   119,   119,   119,   119,   119,   119,   119,
-     119,   119,   119,   119,   119,    21,   136,    93,   119,    93,
-      93,   119,   136,    94,   119,   132,    21,   120,   119,   119,
-     119,   119,    47,    59,   119,   119,   119,   119,    21,   119,
-     119,   119,   119,   119,   119,   119,   119,   119,   119,   105,
-     105,    21,   118,   118,   118,    22,    24,   146,   116,   115,
-      46,   115,    91,    94,    91,    21,   114,   119,   119,    41,
-      41,    41,    41,   102,   116,    91,   104,   115,    29,    47,
-     116,    46,    94,   138,    21,   138,   136,   119,   119,   119,
-     119,   115,   115,    81,    47,   119,   115,   102,    21,   116,
-     116,    91,    82,   119,   115,   107,   115,    25,   138,   115,
-     116,    30,    31,   108,   113,   115,    30,    80,    21,   137,
-     116,   116,   115,   114,   119,    80,   114,    94,   115,    81,
-     116,   115,   102,    21,    81,   115,    46,   115,    80,   116,
-      80,   115
+       0,     1,    12,    15,    16,    18,    19,    20,    21,    22,
+      23,    25,    27,    28,    29,    33,    34,    35,    36,    39,
+      44,    45,    46,    49,    53,    54,    55,    57,    64,    71,
+      72,    73,    74,    75,    78,    79,    80,    87,    88,    93,
+      96,   100,   101,   102,   103,   105,   107,   111,   112,   113,
+     118,   119,   120,   121,   122,   127,   129,   131,   135,   140,
+     143,    92,    22,    44,   120,    93,   120,   141,    93,   141,
+      22,   119,    93,   120,   142,   130,   134,    45,   123,    38,
+      40,    41,    42,    43,   120,   128,   132,   120,    50,    51,
+      15,    16,    17,    22,    29,    22,    22,   120,    56,   120,
+     128,    22,   126,   120,   120,   120,   120,   120,   120,   120,
+      22,   125,   136,   120,   120,   120,    23,    25,    98,   119,
+     144,   145,   146,   147,     0,    92,   120,    60,   120,   104,
+     110,   113,   120,   122,   140,    58,    59,    60,    61,    62,
+      63,    65,    68,    69,    70,    84,    85,    86,    87,    88,
+      89,    90,   115,    93,   120,   120,   141,    95,   141,   141,
+      95,   141,   115,    22,   124,   120,    40,   128,    22,    37,
+      66,    67,    22,    48,    60,   119,   119,    48,    60,    48,
+      47,    50,   128,    95,    42,    48,    42,    48,    42,    48,
+      42,    48,    76,    77,    48,    92,    95,    22,    94,    98,
+      98,    97,    95,    95,   101,   116,   120,   116,   116,   120,
+     120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
+     120,   120,   120,   120,   120,   120,   120,    22,   137,    94,
+     120,    94,    94,   120,   137,    95,   120,   133,    22,   121,
+     120,   120,   120,   120,    48,    60,    42,   120,   120,   120,
+     120,    22,   120,   120,   120,   120,   120,   120,   120,   120,
+     120,   120,   106,   106,    22,   119,   119,   119,    23,    25,
+     147,   117,   116,    47,   116,    92,    95,    92,    22,   115,
+     120,   120,    22,    42,    42,    42,    42,   103,   117,    92,
+     105,   116,    30,    48,   117,    47,    95,   139,    22,   139,
+     137,   119,   120,   120,   120,   120,   116,   116,    82,    48,
+     120,   116,   103,    22,   117,   117,    92,    48,    83,   120,
+     116,   108,   116,    26,   139,   120,   116,   117,    31,    32,
+     109,   114,   116,    31,    81,    22,   138,   117,   117,   116,
+     115,   120,    81,   115,    95,   116,    82,   117,   116,   103,
+      22,    82,   116,    47,   116,    81,   117,    81,   116
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    98,    99,    99,    99,   100,   100,   100,   101,   101,
-     101,   101,   101,   101,   101,   101,   101,   101,   101,   102,
-     102,   102,   103,   103,   103,   103,   104,   104,   104,   104,
-     104,   104,   104,   104,   105,   106,   106,   107,   107,   108,
-     109,   109,   110,   111,   112,   113,   114,   115,   116,   116,
-     116,   117,   118,   118,   118,   118,   118,   118,   119,   119,
-     119,   119,   119,   119,   119,   119,   119,   119,   119,   119,
-     119,   119,   119,   119,   119,   119,   119,   119,   119,   119,
-     119,   119,   119,   119,   119,   119,   119,   119,   119,   119,
-     119,   119,   119,   119,   119,   119,   119,   119,   120,   121,
-     121,   121,   121,   121,   122,   121,   121,   121,   121,   121,
-     121,   121,   123,   123,   124,   124,   125,   125,   126,   126,
-     126,   126,   126,   126,   127,   127,   128,   128,   128,   128,
-     129,   128,   131,   132,   130,   130,   133,   130,   130,   130,
-     135,   134,   136,   136,   136,   136,   137,   137,   137,   138,
-     139,   140,   140,   140,   141,   141,   142,   143,   143,   143,
-     143,   144,   144,   145,   145,   146,   146
+       0,    99,   100,   100,   100,   101,   101,   101,   102,   102,
+     102,   102,   102,   102,   102,   102,   102,   102,   102,   102,
+     103,   103,   103,   104,   104,   104,   104,   105,   105,   105,
+     105,   105,   105,   105,   105,   106,   107,   107,   108,   108,
+     109,   110,   110,   111,   112,   113,   114,   115,   116,   117,
+     117,   117,   118,   119,   119,   119,   119,   119,   119,   120,
+     120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
+     120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
+     120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
+     120,   120,   120,   120,   120,   120,   120,   120,   120,   121,
+     122,   122,   122,   122,   122,   123,   122,   122,   122,   122,
+     122,   122,   122,   124,   124,   125,   125,   126,   126,   127,
+     127,   127,   127,   127,   127,   128,   128,   129,   129,   129,
+     129,   130,   129,   132,   133,   131,   131,   134,   131,   131,
+     131,   136,   135,   137,   137,   137,   137,   138,   138,   138,
+     139,   140,   141,   141,   141,   142,   142,   143,   144,   144,
+     144,   144,   145,   145,   146,   146,   147,   147
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_int8 yyr2[] =
 {
        0,     2,     3,     1,     2,     0,     1,     1,     4,     4,
-       4,     4,     4,     4,     4,     4,     5,     5,     4,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     6,    10,
-      11,     3,     7,     6,     0,     9,    12,     0,     2,     6,
-      11,     7,     2,     3,     1,     1,     0,     0,     0,     2,
-       2,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       4,     2,     4,     1,     2,     1,     1,     3,     3,     3,
+       4,     4,     4,     4,     4,     4,     5,     5,     8,     4,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     6,
+      10,    11,     3,     7,     6,     0,     9,    12,     0,     2,
+       6,    11,     7,     2,     3,     1,     1,     0,     0,     0,
+       2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     4,     2,     4,     1,     2,     1,     1,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       2,     3,     3,     3,     3,     2,     2,     3,     4,     4,
-       4,     6,     4,     6,     4,     6,     4,     6,     2,     2,
-       1,     1,     2,     1,     0,     3,     2,     2,     4,     2,
-       4,     2,     1,     3,     1,     3,     1,     3,     2,     2,
-       2,     2,     3,     2,     3,     2,     2,     2,     3,     2,
-       0,     3,     0,     0,     9,     2,     0,     7,     8,     6,
-       0,     3,     0,     1,     3,     4,     0,     1,     3,     0,
-       2,     0,     1,     3,     1,     3,     3,     0,     1,     1,
-       1,     1,     3,     1,     3,     3,     3
+       3,     2,     3,     3,     3,     3,     2,     2,     3,     4,
+       4,     4,     6,     4,     6,     4,     6,     4,     6,     2,
+       2,     1,     1,     2,     1,     0,     3,     2,     2,     4,
+       2,     4,     2,     1,     3,     1,     3,     1,     3,     2,
+       2,     2,     2,     3,     2,     3,     2,     2,     2,     3,
+       2,     0,     3,     0,     0,     9,     2,     0,     7,     8,
+       6,     0,     3,     0,     1,     3,     4,     0,     1,     3,
+       0,     2,     0,     1,     3,     1,     3,     3,     0,     1,
+       1,     1,     1,     3,     1,     3,     3,     3
 };
 
 
@@ -1664,76 +1665,76 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   switch (yytype)
     {
-    case 18: /* BLTIN  */
+    case 19: /* BLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1671 "engines/director/lingo/lingo-gr.cpp"
+#line 1672 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 19: /* FBLTIN  */
+    case 20: /* FBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1677 "engines/director/lingo/lingo-gr.cpp"
+#line 1678 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 20: /* RBLTIN  */
+    case 21: /* RBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1683 "engines/director/lingo/lingo-gr.cpp"
+#line 1684 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 21: /* ID  */
+    case 22: /* ID  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1689 "engines/director/lingo/lingo-gr.cpp"
+#line 1690 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 22: /* STRING  */
+    case 23: /* STRING  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1695 "engines/director/lingo/lingo-gr.cpp"
+#line 1696 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 23: /* HANDLER  */
+    case 24: /* HANDLER  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1701 "engines/director/lingo/lingo-gr.cpp"
+#line 1702 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 24: /* SYMBOL  */
+    case 25: /* SYMBOL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1707 "engines/director/lingo/lingo-gr.cpp"
+#line 1708 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 25: /* ENDCLAUSE  */
+    case 26: /* ENDCLAUSE  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1713 "engines/director/lingo/lingo-gr.cpp"
+#line 1714 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 26: /* tPLAYACCEL  */
+    case 27: /* tPLAYACCEL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1719 "engines/director/lingo/lingo-gr.cpp"
+#line 1720 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 27: /* tMETHOD  */
+    case 28: /* tMETHOD  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1725 "engines/director/lingo/lingo-gr.cpp"
+#line 1726 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 28: /* THEOBJECTFIELD  */
+    case 29: /* THEOBJECTFIELD  */
 #line 131 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 1731 "engines/director/lingo/lingo-gr.cpp"
+#line 1732 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 134: /* on  */
+    case 135: /* on  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1737 "engines/director/lingo/lingo-gr.cpp"
+#line 1738 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2003,7 +2004,7 @@ yyreduce:
   case 4:
 #line 137 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2007 "engines/director/lingo/lingo-gr.cpp"
+#line 2008 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2014,7 +2015,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2018 "engines/director/lingo/lingo-gr.cpp"
+#line 2019 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2022,19 +2023,19 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2026 "engines/director/lingo/lingo-gr.cpp"
+#line 2027 "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 2032 "engines/director/lingo/lingo-gr.cpp"
+#line 2033 "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 2038 "engines/director/lingo/lingo-gr.cpp"
+#line 2039 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2045,7 +2046,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2049 "engines/director/lingo/lingo-gr.cpp"
+#line 2050 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2057,7 +2058,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2061 "engines/director/lingo/lingo-gr.cpp"
+#line 2062 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2068,7 +2069,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2072 "engines/director/lingo/lingo-gr.cpp"
+#line 2073 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2080,7 +2081,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2084 "engines/director/lingo/lingo-gr.cpp"
+#line 2085 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2091,7 +2092,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2095 "engines/director/lingo/lingo-gr.cpp"
+#line 2096 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2102,33 +2103,49 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2106 "engines/director/lingo/lingo-gr.cpp"
+#line 2107 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
-#line 192 "engines/director/lingo/lingo-gr.y"
+#line 193 "engines/director/lingo/lingo-gr.y"
+                                                                        {
+		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
+			error("LEXER: keyword 'menu' expected");
+		}
+
+		warning("STUB: menuItem entity");
+		g_lingo->code1(LC::c_swap);
+		g_lingo->code1(LC::c_theentityassign);
+		g_lingo->codeInt((yyvsp[-6].e)[0]);
+		g_lingo->codeInt((yyvsp[-6].e)[1]);
+		(yyval.code) = (yyvsp[0].code); }
+#line 2123 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 19:
+#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 2117 "engines/director/lingo/lingo-gr.cpp"
+#line 2134 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 28:
-#line 214 "engines/director/lingo/lingo-gr.y"
+  case 29:
+#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 2128 "engines/director/lingo/lingo-gr.cpp"
+#line 2145 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 29:
-#line 225 "engines/director/lingo/lingo-gr.y"
+  case 30:
+#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));
@@ -2141,11 +2158,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 2145 "engines/director/lingo/lingo-gr.cpp"
+#line 2162 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 30:
-#line 242 "engines/director/lingo/lingo-gr.y"
+  case 31:
+#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));
@@ -2158,47 +2175,47 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2162 "engines/director/lingo/lingo-gr.cpp"
+#line 2179 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 31:
-#line 254 "engines/director/lingo/lingo-gr.y"
+  case 32:
+#line 266 "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 2172 "engines/director/lingo/lingo-gr.cpp"
+#line 2189 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 32:
-#line 259 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 271 "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 2181 "engines/director/lingo/lingo-gr.cpp"
+#line 2198 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 33:
-#line 263 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 275 "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 2190 "engines/director/lingo/lingo-gr.cpp"
+#line 2207 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 34:
-#line 268 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 280 "engines/director/lingo/lingo-gr.y"
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2198 "engines/director/lingo/lingo-gr.cpp"
+#line 2215 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 35:
-#line 272 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 284 "engines/director/lingo/lingo-gr.y"
                                                                                        {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-6].code) - (yyvsp[-8].code));
@@ -2209,11 +2226,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 2213 "engines/director/lingo/lingo-gr.cpp"
+#line 2230 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 36:
-#line 282 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 294 "engines/director/lingo/lingo-gr.y"
                                                                                                               {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-9].code) - (yyvsp[-11].code));
@@ -2224,22 +2241,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 2228 "engines/director/lingo/lingo-gr.cpp"
+#line 2245 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 39:
-#line 296 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 308 "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 2239 "engines/director/lingo/lingo-gr.cpp"
+#line 2256 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 40:
-#line 303 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 315 "engines/director/lingo/lingo-gr.y"
                                                                                                          {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-8].code) - (yyvsp[-10].code));
@@ -2250,11 +2267,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 2254 "engines/director/lingo/lingo-gr.cpp"
+#line 2271 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 41:
-#line 313 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 325 "engines/director/lingo/lingo-gr.y"
                                                                    {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[-4].code) - (yyvsp[-6].code));
@@ -2265,149 +2282,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 2269 "engines/director/lingo/lingo-gr.cpp"
+#line 2286 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 42:
-#line 324 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 336 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2275 "engines/director/lingo/lingo-gr.cpp"
+#line 2292 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 43:
-#line 326 "engines/director/lingo/lingo-gr.y"
+  case 44:
+#line 338 "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 2285 "engines/director/lingo/lingo-gr.cpp"
+#line 2302 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 44:
-#line 332 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 344 "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 2295 "engines/director/lingo/lingo-gr.cpp"
+#line 2312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 45:
-#line 338 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 350 "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 2306 "engines/director/lingo/lingo-gr.cpp"
+#line 2323 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 46:
-#line 345 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 357 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2312 "engines/director/lingo/lingo-gr.cpp"
+#line 2329 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 47:
-#line 347 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 359 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2318 "engines/director/lingo/lingo-gr.cpp"
+#line 2335 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 48:
-#line 349 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 361 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2324 "engines/director/lingo/lingo-gr.cpp"
+#line 2341 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 51:
-#line 353 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 365 "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 2334 "engines/director/lingo/lingo-gr.cpp"
+#line 2351 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 52:
-#line 359 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 371 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2342 "engines/director/lingo/lingo-gr.cpp"
+#line 2359 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 53:
-#line 362 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 374 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2350 "engines/director/lingo/lingo-gr.cpp"
+#line 2367 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 54:
-#line 365 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 377 "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 2359 "engines/director/lingo/lingo-gr.cpp"
+#line 2376 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 55:
-#line 369 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 381 "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 2368 "engines/director/lingo/lingo-gr.cpp"
+#line 2385 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 56:
-#line 373 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 385 "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 2377 "engines/director/lingo/lingo-gr.cpp"
+#line 2394 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 58:
-#line 379 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 391 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2383 "engines/director/lingo/lingo-gr.cpp"
+#line 2400 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 60:
-#line 381 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 393 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2391 "engines/director/lingo/lingo-gr.cpp"
+#line 2408 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 61:
-#line 384 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 396 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2399 "engines/director/lingo/lingo-gr.cpp"
+#line 2416 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 387 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 399 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2407 "engines/director/lingo/lingo-gr.cpp"
+#line 2424 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 390 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 402 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2416,477 +2433,477 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2420 "engines/director/lingo/lingo-gr.cpp"
+#line 2437 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
-#line 398 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 410 "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 2431 "engines/director/lingo/lingo-gr.cpp"
+#line 2448 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 404 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 416 "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 2441 "engines/director/lingo/lingo-gr.cpp"
+#line 2458 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 410 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 422 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2447 "engines/director/lingo/lingo-gr.cpp"
+#line 2464 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 411 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 423 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2453 "engines/director/lingo/lingo-gr.cpp"
+#line 2470 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 412 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 424 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2459 "engines/director/lingo/lingo-gr.cpp"
+#line 2476 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 413 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 425 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2465 "engines/director/lingo/lingo-gr.cpp"
+#line 2482 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 414 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 426 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2471 "engines/director/lingo/lingo-gr.cpp"
+#line 2488 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 415 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 427 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2477 "engines/director/lingo/lingo-gr.cpp"
+#line 2494 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 416 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 428 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2483 "engines/director/lingo/lingo-gr.cpp"
+#line 2500 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 429 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2489 "engines/director/lingo/lingo-gr.cpp"
+#line 2506 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 418 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 430 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2495 "engines/director/lingo/lingo-gr.cpp"
+#line 2512 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 419 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 431 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2501 "engines/director/lingo/lingo-gr.cpp"
+#line 2518 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 420 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 432 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2507 "engines/director/lingo/lingo-gr.cpp"
+#line 2524 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 421 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 433 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2513 "engines/director/lingo/lingo-gr.cpp"
+#line 2530 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 422 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 434 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2519 "engines/director/lingo/lingo-gr.cpp"
+#line 2536 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 423 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 435 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2525 "engines/director/lingo/lingo-gr.cpp"
+#line 2542 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 424 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 436 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2531 "engines/director/lingo/lingo-gr.cpp"
+#line 2548 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 425 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 437 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2537 "engines/director/lingo/lingo-gr.cpp"
+#line 2554 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 426 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 438 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2543 "engines/director/lingo/lingo-gr.cpp"
+#line 2560 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 427 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 439 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2549 "engines/director/lingo/lingo-gr.cpp"
+#line 2566 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 428 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 440 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); }
-#line 2555 "engines/director/lingo/lingo-gr.cpp"
+#line 2572 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 429 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 441 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2561 "engines/director/lingo/lingo-gr.cpp"
+#line 2578 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 442 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2567 "engines/director/lingo/lingo-gr.cpp"
+#line 2584 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 431 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 443 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2573 "engines/director/lingo/lingo-gr.cpp"
+#line 2590 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 432 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 444 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2579 "engines/director/lingo/lingo-gr.cpp"
+#line 2596 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 433 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 445 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2585 "engines/director/lingo/lingo-gr.cpp"
+#line 2602 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 434 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 446 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2591 "engines/director/lingo/lingo-gr.cpp"
+#line 2608 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 435 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 447 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2597 "engines/director/lingo/lingo-gr.cpp"
+#line 2614 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 436 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 448 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2603 "engines/director/lingo/lingo-gr.cpp"
+#line 2620 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 437 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 449 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2609 "engines/director/lingo/lingo-gr.cpp"
+#line 2626 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 438 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 450 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2615 "engines/director/lingo/lingo-gr.cpp"
+#line 2632 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 439 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 451 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2621 "engines/director/lingo/lingo-gr.cpp"
+#line 2638 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 440 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 452 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2627 "engines/director/lingo/lingo-gr.cpp"
+#line 2644 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 442 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 454 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2635 "engines/director/lingo/lingo-gr.cpp"
+#line 2652 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
-#line 446 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 458 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2641 "engines/director/lingo/lingo-gr.cpp"
+#line 2658 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 449 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 461 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2647 "engines/director/lingo/lingo-gr.cpp"
+#line 2664 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 450 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 462 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 2653 "engines/director/lingo/lingo-gr.cpp"
+#line 2670 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 463 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2659 "engines/director/lingo/lingo-gr.cpp"
+#line 2676 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 463 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 2665 "engines/director/lingo/lingo-gr.cpp"
+#line 2682 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 466 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2673 "engines/director/lingo/lingo-gr.cpp"
+#line 2690 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 457 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 469 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2681 "engines/director/lingo/lingo-gr.cpp"
+#line 2698 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 460 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 472 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 2687 "engines/director/lingo/lingo-gr.cpp"
+#line 2704 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 461 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 473 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 2693 "engines/director/lingo/lingo-gr.cpp"
+#line 2710 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 463 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 475 "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 2702 "engines/director/lingo/lingo-gr.cpp"
+#line 2719 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 467 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 479 "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 2711 "engines/director/lingo/lingo-gr.cpp"
+#line 2728 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 472 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 484 "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 2720 "engines/director/lingo/lingo-gr.cpp"
+#line 2737 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 476 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 488 "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 2729 "engines/director/lingo/lingo-gr.cpp"
+#line 2746 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
-#line 481 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 493 "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 2738 "engines/director/lingo/lingo-gr.cpp"
+#line 2755 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 485 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 497 "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 2747 "engines/director/lingo/lingo-gr.cpp"
+#line 2764 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 497 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 509 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 2753 "engines/director/lingo/lingo-gr.cpp"
+#line 2770 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 510 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 2759 "engines/director/lingo/lingo-gr.cpp"
+#line 2776 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 499 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 511 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 2765 "engines/director/lingo/lingo-gr.cpp"
+#line 2782 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 500 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 512 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 2774 "engines/director/lingo/lingo-gr.cpp"
+#line 2791 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 504 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 516 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 2783 "engines/director/lingo/lingo-gr.cpp"
+#line 2800 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 520 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 2792 "engines/director/lingo/lingo-gr.cpp"
+#line 2809 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 528 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_playdone); }
-#line 2798 "engines/director/lingo/lingo-gr.cpp"
+#line 2815 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 517 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 529 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 2807 "engines/director/lingo/lingo-gr.cpp"
+#line 2824 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 521 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 533 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 2816 "engines/director/lingo/lingo-gr.cpp"
+#line 2833 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 537 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 2825 "engines/director/lingo/lingo-gr.cpp"
+#line 2842 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 529 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 541 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 2831 "engines/director/lingo/lingo-gr.cpp"
+#line 2848 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 529 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 541 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 2840 "engines/director/lingo/lingo-gr.cpp"
+#line 2857 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 559 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 571 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 2846 "engines/director/lingo/lingo-gr.cpp"
+#line 2863 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 559 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 571 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 2852 "engines/director/lingo/lingo-gr.cpp"
+#line 2869 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 572 "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 2863 "engines/director/lingo/lingo-gr.cpp"
+#line 2880 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 578 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 2869 "engines/director/lingo/lingo-gr.cpp"
+#line 2886 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 567 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 579 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2875 "engines/director/lingo/lingo-gr.cpp"
+#line 2892 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 568 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 580 "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 2886 "engines/director/lingo/lingo-gr.cpp"
+#line 2903 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 574 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 586 "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));
@@ -2897,11 +2914,11 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 2901 "engines/director/lingo/lingo-gr.cpp"
+#line 2918 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 584 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 596 "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));
@@ -2909,65 +2926,65 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 2913 "engines/director/lingo/lingo-gr.cpp"
+#line 2930 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 592 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 604 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 2919 "engines/director/lingo/lingo-gr.cpp"
+#line 2936 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 592 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 604 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 2925 "engines/director/lingo/lingo-gr.cpp"
+#line 2942 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 594 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 606 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 2931 "engines/director/lingo/lingo-gr.cpp"
+#line 2948 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 595 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 607 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 2937 "engines/director/lingo/lingo-gr.cpp"
+#line 2954 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 608 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 2943 "engines/director/lingo/lingo-gr.cpp"
+#line 2960 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 597 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 609 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 2949 "engines/director/lingo/lingo-gr.cpp"
+#line 2966 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 600 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 612 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 2955 "engines/director/lingo/lingo-gr.cpp"
+#line 2972 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 601 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 613 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 2961 "engines/director/lingo/lingo-gr.cpp"
+#line 2978 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 603 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 615 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 2967 "engines/director/lingo/lingo-gr.cpp"
+#line 2984 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 605 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 617 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -2975,113 +2992,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 2979 "engines/director/lingo/lingo-gr.cpp"
+#line 2996 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 613 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 625 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 2985 "engines/director/lingo/lingo-gr.cpp"
+#line 3002 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 614 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 626 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 2991 "engines/director/lingo/lingo-gr.cpp"
+#line 3008 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 615 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 627 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 2997 "engines/director/lingo/lingo-gr.cpp"
+#line 3014 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 617 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 629 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3003 "engines/director/lingo/lingo-gr.cpp"
+#line 3020 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 630 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3009 "engines/director/lingo/lingo-gr.cpp"
+#line 3026 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 620 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 632 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 3015 "engines/director/lingo/lingo-gr.cpp"
+#line 3032 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 622 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 634 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3021 "engines/director/lingo/lingo-gr.cpp"
+#line 3038 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 623 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 635 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3027 "engines/director/lingo/lingo-gr.cpp"
+#line 3044 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 624 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 636 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3033 "engines/director/lingo/lingo-gr.cpp"
+#line 3050 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 625 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 637 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3039 "engines/director/lingo/lingo-gr.cpp"
+#line 3056 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 627 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 639 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3045 "engines/director/lingo/lingo-gr.cpp"
+#line 3062 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 628 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 640 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3051 "engines/director/lingo/lingo-gr.cpp"
+#line 3068 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 630 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 642 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3057 "engines/director/lingo/lingo-gr.cpp"
+#line 3074 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 631 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 643 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3063 "engines/director/lingo/lingo-gr.cpp"
+#line 3080 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 633 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 645 "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 3072 "engines/director/lingo/lingo-gr.cpp"
+#line 3089 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 637 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 649 "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 3081 "engines/director/lingo/lingo-gr.cpp"
+#line 3098 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3085 "engines/director/lingo/lingo-gr.cpp"
+#line 3102 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3313,5 +3330,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 643 "engines/director/lingo/lingo-gr.y"
+#line 655 "engines/director/lingo/lingo-gr.y"
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 652eb2e..9d15da0 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -63,72 +63,73 @@ extern int yydebug;
     ARGCNORET = 269,
     THEENTITY = 270,
     THEENTITYWITHID = 271,
-    FLOAT = 272,
-    BLTIN = 273,
-    FBLTIN = 274,
-    RBLTIN = 275,
-    ID = 276,
-    STRING = 277,
-    HANDLER = 278,
-    SYMBOL = 279,
-    ENDCLAUSE = 280,
-    tPLAYACCEL = 281,
-    tMETHOD = 282,
-    THEOBJECTFIELD = 283,
-    tDOWN = 284,
-    tELSE = 285,
-    tELSIF = 286,
-    tEXIT = 287,
-    tGLOBAL = 288,
-    tGO = 289,
-    tIF = 290,
-    tINTO = 291,
-    tLOOP = 292,
-    tMACRO = 293,
-    tMOVIE = 294,
-    tNEXT = 295,
-    tOF = 296,
-    tPREVIOUS = 297,
-    tPUT = 298,
-    tREPEAT = 299,
-    tSET = 300,
-    tTHEN = 301,
-    tTO = 302,
-    tWHEN = 303,
-    tWITH = 304,
-    tWHILE = 305,
-    tNLELSE = 306,
-    tFACTORY = 307,
-    tOPEN = 308,
-    tPLAY = 309,
-    tDONE = 310,
-    tINSTANCE = 311,
-    tGE = 312,
-    tLE = 313,
-    tEQ = 314,
-    tNEQ = 315,
-    tAND = 316,
-    tOR = 317,
-    tNOT = 318,
-    tMOD = 319,
-    tAFTER = 320,
-    tBEFORE = 321,
-    tCONCAT = 322,
-    tCONTAINS = 323,
-    tSTARTS = 324,
-    tCHAR = 325,
-    tITEM = 326,
-    tLINE = 327,
-    tWORD = 328,
-    tSPRITE = 329,
-    tINTERSECTS = 330,
-    tWITHIN = 331,
-    tTELL = 332,
-    tPROPERTY = 333,
-    tON = 334,
-    tENDIF = 335,
-    tENDREPEAT = 336,
-    tENDTELL = 337
+    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,
+    tINTO = 292,
+    tLOOP = 293,
+    tMACRO = 294,
+    tMOVIE = 295,
+    tNEXT = 296,
+    tOF = 297,
+    tPREVIOUS = 298,
+    tPUT = 299,
+    tREPEAT = 300,
+    tSET = 301,
+    tTHEN = 302,
+    tTO = 303,
+    tWHEN = 304,
+    tWITH = 305,
+    tWHILE = 306,
+    tNLELSE = 307,
+    tFACTORY = 308,
+    tOPEN = 309,
+    tPLAY = 310,
+    tDONE = 311,
+    tINSTANCE = 312,
+    tGE = 313,
+    tLE = 314,
+    tEQ = 315,
+    tNEQ = 316,
+    tAND = 317,
+    tOR = 318,
+    tNOT = 319,
+    tMOD = 320,
+    tAFTER = 321,
+    tBEFORE = 322,
+    tCONCAT = 323,
+    tCONTAINS = 324,
+    tSTARTS = 325,
+    tCHAR = 326,
+    tITEM = 327,
+    tLINE = 328,
+    tWORD = 329,
+    tSPRITE = 330,
+    tINTERSECTS = 331,
+    tWITHIN = 332,
+    tTELL = 333,
+    tPROPERTY = 334,
+    tON = 335,
+    tENDIF = 336,
+    tENDREPEAT = 337,
+    tENDTELL = 338
   };
 #endif
 
@@ -151,7 +152,7 @@ union YYSTYPE
 		int oe;
 	} objectfield;
 
-#line 155 "engines/director/lingo/lingo-gr.h"
+#line 156 "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 dd7b83c..623ac66 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -101,7 +101,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token UNARY
 %token CASTREF VOID VAR POINT RECT ARRAY OBJECT REFERENCE
 %token<i> INT ARGC ARGCNORET
-%token<e> THEENTITY THEENTITYWITHID
+%token<e> THEENTITY THEENTITYWITHID THEMENUITEMENTITY
 %token<f> FLOAT
 %token<s> BLTIN FBLTIN RBLTIN
 %token<s> ID STRING HANDLER SYMBOL
@@ -189,6 +189,18 @@ asgn: tPUT expr tINTO ID 		{
 		g_lingo->codeInt($THEENTITYWITHID[0]);
 		g_lingo->codeInt($THEENTITYWITHID[1]);
 		$$ = $expr; }
+	// 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("STUB: menuItem entity");
+		g_lingo->code1(LC::c_swap);
+		g_lingo->code1(LC::c_theentityassign);
+		g_lingo->codeInt($THEMENUITEMENTITY[0]);
+		g_lingo->codeInt($THEMENUITEMENTITY[1]);
+		$$ = $expr; }
 	| tSET THEOBJECTFIELD tTO expr	{
 		g_lingo->code1(LC::c_objectfieldassign);
 		g_lingo->codeString($THEOBJECTFIELD.os->c_str());
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 0018db5..056910b 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1488,6 +1488,10 @@ YY_RULE_SETUP
 			yylval.e[0] = g_lingo->_theEntities[ptr]->entity;
 			yylval.e[1] = g_lingo->_theEntityFields[field]->field;
 
+			// the <field> of menuItem <expr>" of menu <expr>
+			if (g_lingo->_theEntityFields[field]->entity == kTheMenuItem)
+				return THEMENUITEMENTITY;
+
 			if (g_lingo->_theEntities[ptr]->hasId)
 				return THEENTITYWITHID;
 			else
@@ -1512,7 +1516,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 280 "engines/director/lingo/lingo-lex.l"
+#line 284 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1547,7 +1551,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 311 "engines/director/lingo/lingo-lex.l"
+#line 315 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1570,72 +1574,72 @@ YY_RULE_SETUP
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 330 "engines/director/lingo/lingo-lex.l"
+#line 334 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 331 "engines/director/lingo/lingo-lex.l"
+#line 335 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 332 "engines/director/lingo/lingo-lex.l"
+#line 336 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 333 "engines/director/lingo/lingo-lex.l"
+#line 337 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 334 "engines/director/lingo/lingo-lex.l"
+#line 338 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 335 "engines/director/lingo/lingo-lex.l"
+#line 339 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 336 "engines/director/lingo/lingo-lex.l"
+#line 340 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 337 "engines/director/lingo/lingo-lex.l"
+#line 341 "engines/director/lingo/lingo-lex.l"
 { count(); return tWORD; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 339 "engines/director/lingo/lingo-lex.l"
+#line 343 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 340 "engines/director/lingo/lingo-lex.l"
+#line 344 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 341 "engines/director/lingo/lingo-lex.l"
+#line 345 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 342 "engines/director/lingo/lingo-lex.l"
+#line 346 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 343 "engines/director/lingo/lingo-lex.l"
+#line 347 "engines/director/lingo/lingo-lex.l"
 { count(); return tEQ; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 345 "engines/director/lingo/lingo-lex.l"
+#line 349 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1671,41 +1675,41 @@ YY_RULE_SETUP
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 377 "engines/director/lingo/lingo-lex.l"
+#line 381 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 378 "engines/director/lingo/lingo-lex.l"
+#line 382 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 379 "engines/director/lingo/lingo-lex.l"
+#line 383 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
 case 73:
 /* rule 73 can match eol */
 YY_RULE_SETUP
-#line 380 "engines/director/lingo/lingo-lex.l"
+#line 384 "engines/director/lingo/lingo-lex.l"
 { count(); return '\n'; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 381 "engines/director/lingo/lingo-lex.l"
+#line 385 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 382 "engines/director/lingo/lingo-lex.l"
+#line 386 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 384 "engines/director/lingo/lingo-lex.l"
+#line 388 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1709 "engines/director/lingo/lingo-lex.cpp"
+#line 1713 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2665,7 +2669,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 384 "engines/director/lingo/lingo-lex.l"
+#line 388 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 6076df0..e31b519 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -256,6 +256,10 @@ the[ \t]+[[:alpha:]]+[ \t]+of[ \t]+{identifier}	{
 			yylval.e[0] = g_lingo->_theEntities[ptr]->entity;
 			yylval.e[1] = g_lingo->_theEntityFields[field]->field;
 
+			// the <field> of menuItem <expr>" of menu <expr>
+			if (g_lingo->_theEntityFields[field]->entity == kTheMenuItem)
+				return THEMENUITEMENTITY;
+
 			if (g_lingo->_theEntities[ptr]->hasId)
 				return THEENTITYWITHID;
 			else


Commit: c2aebb3afa705556b24be0589b2f42e4931a1817
    https://github.com/scummvm/scummvm/commit/c2aebb3afa705556b24be0589b2f42e4931a1817
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-16T18:21:28+01:00

Commit Message:
DIRECTOR: LINGO: Added test for 'the menuItem' field

Changed paths:
    engines/director/lingo/tests/the.lingo


diff --git a/engines/director/lingo/tests/the.lingo b/engines/director/lingo/tests/the.lingo
index 6ad82d6..94f775b 100644
--- a/engines/director/lingo/tests/the.lingo
+++ b/engines/director/lingo/tests/the.lingo
@@ -33,3 +33,5 @@ set h = the locH of sprite pSprite + pChangeH
 
 set the volume of sound 1 to 255
 put the volume of sound 1 into field 11
+
+set the checkMark of menuItem "Horizontal" of menu "The Ball" to False


Commit: b06b900cdd49e1240e37a8999156e731acf3d356
    https://github.com/scummvm/scummvm/commit/b06b900cdd49e1240e37a8999156e731acf3d356
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-16T18:21:28+01:00

Commit Message:
DIRECTOR: LINGO: Fix grammar for 'the number of castMembers'

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


diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 056910b..575de1d 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -373,7 +373,7 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[338] =
+static yyconst flex_int16_t yy_accept[339] =
     {   0,
         0,    0,   77,   75,    4,   73,   73,   75,   75,   75,
        72,   72,   72,   71,   72,   68,   72,   69,   69,   69,
@@ -411,7 +411,7 @@ static yyconst flex_int16_t yy_accept[338] =
        53,   54,   55,    0,    0,    0,   20,   47,    0,    0,
         0,   53,    0,    0,    0,    0,   47,    0,    0,    0,
         0,   50,   51,   47,    0,    0,   51,   47,    0,   53,
-        0,   53,    0,    0,   52,   52,    0
+        0,   53,    0,    0,    0,    0,   52,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -457,7 +457,7 @@ static yyconst flex_int32_t yy_meta[66] =
         5,    5,    5,    5,    1
     } ;
 
-static yyconst flex_int16_t yy_base[354] =
+static yyconst flex_int16_t yy_base[355] =
     {   0,
         0,   64,  240,  879,   68,  879,  879,   72,  180,    0,
       879,  164,  140,   55,   63,  879,  130,   59,   59,   59,
@@ -495,52 +495,52 @@ static yyconst flex_int16_t yy_base[354] =
         0,  879,  685,  695,  663,  700,  879,  879,  670,  671,
       676,    0,  712,  711,  713,  689,  879,  687,  697,  732,
       716,  739,  748,  879,  718,  750,  756,  879,  763,  767,
-      745,  771,  745,  734,  879,  879,  879,  812,  814,  817,
-      820,  826,  831,  836,  838,  843,  848,  851,  854,  859,
-      862,  867,  872
+      745,  771,  745,  734,  777,  783,  879,  879,  812,  814,
+      817,  820,  826,  831,  836,  838,  843,  848,  851,  854,
+      859,  862,  867,  872
     } ;
 
-static yyconst flex_int16_t yy_def[354] =
+static yyconst flex_int16_t yy_def[355] =
     {   0,
-      337,    1,  337,  337,  337,  337,  337,  337,  338,  339,
-      337,  337,  337,  337,  337,  337,  337,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  337,  337,  337,  340,  337,  337,
-      337,  337,  338,  337,  341,  337,  342,  337,  337,  337,
-      337,  337,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  337,  337,  337,  337,  340,  341,  342,  337,
-
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  337,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  337,
-      340,  340,  340,  340,  340,  340,  340,  340,  343,  340,
-      340,  337,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  340,  340,  340,  340,  340,  340,  340,  340,  340,
-      340,  344,  340,  340,  340,  340,  340,  337,  340,  340,
-      340,  340,  337,  345,  340,  337,  340,  340,  340,  340,
-      340,  337,  340,  340,  340,  340,  340,  340,  340,  344,
-
-      344,  344,  344,  340,  340,  337,  340,  340,  340,  337,
-      345,  340,  337,  340,  340,  346,  337,  340,  340,  340,
-      340,  337,  340,  340,  337,  337,  344,  344,  344,  340,
-      337,  340,  340,  337,  337,  340,  340,  347,  348,  337,
-      340,  340,  340,  337,  337,  337,  337,  337,  337,  337,
-      337,  344,  344,  344,  337,  340,  340,  337,  340,  340,
-      349,  348,  337,  340,  340,  340,  337,  337,  337,  337,
-      337,  337,  337,  344,  344,  344,  337,  337,  340,  349,
-      337,  340,  337,  337,  337,  337,  337,  350,  337,  344,
-      337,  344,  337,  340,  337,  337,  337,  337,  337,  337,
-
-      351,  337,  344,  337,  337,  337,  337,  337,  337,  337,
-      337,  351,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  350,  337,  337,  337,  337,  350,  337,  352,  353,
-      337,  353,  337,  337,  337,  337,    0,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337
+      338,    1,  338,  338,  338,  338,  338,  338,  339,  340,
+      338,  338,  338,  338,  338,  338,  338,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  338,  338,  338,  341,  338,  338,
+      338,  338,  339,  338,  342,  338,  343,  338,  338,  338,
+      338,  338,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  341,  338,  338,  338,  338,  341,  342,  343,  338,
+
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  338,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  338,
+      341,  341,  341,  341,  341,  341,  341,  341,  344,  341,
+      341,  338,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
+      341,  345,  341,  341,  341,  341,  341,  338,  341,  341,
+      341,  341,  338,  346,  341,  338,  341,  341,  341,  341,
+      341,  338,  341,  341,  341,  341,  341,  341,  341,  345,
+
+      345,  345,  345,  341,  341,  338,  341,  341,  341,  338,
+      346,  341,  338,  341,  341,  347,  338,  341,  341,  341,
+      341,  338,  341,  341,  338,  338,  345,  345,  345,  341,
+      338,  341,  341,  338,  338,  341,  341,  348,  349,  338,
+      341,  341,  341,  338,  338,  338,  338,  338,  338,  338,
+      338,  345,  345,  345,  338,  341,  341,  338,  341,  341,
+      350,  349,  338,  341,  341,  341,  338,  338,  338,  338,
+      338,  338,  338,  345,  345,  345,  338,  338,  341,  350,
+      338,  341,  338,  338,  338,  338,  338,  351,  338,  345,
+      338,  345,  338,  341,  338,  338,  338,  338,  338,  338,
+
+      352,  338,  345,  338,  338,  338,  338,  338,  338,  338,
+      338,  352,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  351,  338,  338,  338,  338,  351,  338,  353,  354,
+      338,  354,  338,  338,  338,  338,  338,    0,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338
     } ;
 
 static yyconst flex_int16_t yy_nxt[945] =
@@ -570,8 +570,8 @@ static yyconst flex_int16_t yy_nxt[945] =
        90,   91,  116,  115,  111,   92,   96,   95,   40,   40,
        95,   39,   40,   40,   41,   41,   40,   40,   41,  109,
       106,  110,  113,  114,  117,  118,  116,   96,  115,  107,
-      119,   96,  122,  123,  120,  124,  125,  133,  126,  337,
-      128,  129,  130,  131,  106,  132,  337,  127,  117,   42,
+      119,   96,  122,  123,  120,  124,  125,  133,  126,  338,
+      128,  129,  130,  131,  106,  132,  338,  127,  117,   42,
       118,  121,   96,  107,  119,  134,  122,  123,  135,  120,
       124,  125,  133,  126,  128,  129,  130,  131,  136,  132,
        42,  127,  137,  140,   42,  121,  138,  139,   42,  134,
@@ -585,24 +585,24 @@ static yyconst flex_int16_t yy_nxt[945] =
       160,  158,  152,  169,  176,  159,  155,   42,  161,  162,
       170,   42,  167,  171,  163,  164,  165,  174,  175,  172,
       166,  168,  172,  177,  178,  182,  152,  179,  169,  176,
-      180,  181,  149,  185,  170,  149,  186,  171,  187,  337,
+      180,  181,  149,  185,  170,  149,  186,  171,  187,  338,
       188,  174,  175,  189,  190,  198,  173,  191,  177,  178,
       182,  179,  194,  195,  180,  181,  192,  196,  185,  192,
 
       186,  197,  204,  187,  188,  199,  205,  189,  190,  198,
       173,  193,  191,  172,  206,  207,  172,  194,  195,  208,
-      183,  209,  196,  183,  337,  212,  197,  204,  214,  199,
+      183,  209,  196,  183,  338,  212,  197,  204,  214,  199,
       213,  205,  215,  213,  216,  218,  193,  219,  206,  207,
       201,  220,  221,  210,  208,  202,  209,  192,  203,  212,
-      192,  222,  214,  223,  222,  224,  215,  337,  337,  216,
-      218,  219,  337,  230,  201,  220,  221,  217,  210,  202,
-      337,  231,  203,  225,  225,  232,  225,  225,  223,  224,
-      225,  226,  226,  225,  337,  233,  225,  230,  226,  225,
+      192,  222,  214,  223,  222,  224,  215,  338,  338,  216,
+      218,  219,  338,  230,  201,  220,  221,  217,  210,  202,
+      338,  231,  203,  225,  225,  232,  225,  225,  223,  224,
+      225,  226,  226,  225,  338,  233,  225,  230,  226,  225,
       234,  236,  217,  213,  226,  231,  213,  237,  241,  232,
 
-      238,  229,  337,  238,  240,  242,  243,  255,  227,  233,
-      228,   53,  249,  235,  337,  234,  236,  248,  238,  259,
-      248,  238,  237,  241,  337,  256,  229,  251,  240,  242,
+      238,  229,  338,  238,  240,  242,  243,  255,  227,  233,
+      228,   53,  249,  235,  338,  234,  236,  248,  238,  259,
+      248,  238,  237,  241,  338,  256,  229,  251,  240,  242,
       243,  255,  227,  225,  228,  249,  225,  249,  235,  222,
       225,  226,  222,  225,  259,  250,  257,  260,  226,  256,
       251,  251,  258,  263,  225,  264,  244,  225,  265,  245,
@@ -613,42 +613,42 @@ static yyconst flex_int16_t yy_nxt[945] =
 
       271,  279,  272,  254,  226,  225,  225,  281,  225,  225,
       282,  250,  274,  226,  226,  283,  284,  285,  273,  278,
-      286,  277,  287,  288,  289,  279,  288,  288,  337,  293,
+      286,  277,  287,  288,  289,  279,  288,  288,  338,  293,
       288,  281,  294,  295,  282,  250,  296,  274,  275,  283,
       276,  284,  285,  297,  286,  298,  287,  225,  289,  291,
       225,  225,  291,  293,  225,  226,  294,  226,  295,  226,
       296,  299,  275,  300,  276,  302,  290,  307,  297,  298,
-      292,  225,  308,  306,  225,  304,  306,  337,  304,  226,
-      311,  226,  309,  337,  314,  299,  313,  310,  300,  313,
+      292,  225,  308,  306,  225,  304,  306,  338,  304,  226,
+      311,  226,  309,  338,  314,  299,  313,  310,  300,  313,
       302,  290,  307,  249,  226,  292,  304,  308,  317,  304,
 
       319,  315,  303,  305,  315,  311,  318,  309,  251,  314,
       323,  310,  322,  320,  315,  322,  320,  315,  249,  249,
-      337,  324,  317,  325,  305,  319,  303,  305,  337,  316,
-      318,  249,  251,  320,  251,  323,  320,  326,  328,  337,
+      338,  324,  317,  325,  305,  319,  303,  305,  338,  316,
+      318,  249,  251,  320,  251,  323,  320,  326,  328,  338,
       322,  321,  316,  322,  249,  324,  251,  325,  305,  327,
-      337,  329,  327,  316,  329,  336,  249,  327,  251,  337,
+      338,  329,  327,  316,  329,  336,  249,  327,  251,  338,
       327,  321,  326,  328,  329,  321,  316,  329,  331,  333,
-      251,  331,  331,  335,  334,  331,  337,  337,  337,  312,
-      336,  337,  337,  312,  337,  321,  337,  337,  337,  337,
-      337,  337,  337,  337,  333,  337,  337,  335,  334,  337,
-
-      337,  337,  337,  301,  337,  337,  337,  312,  337,  337,
-      337,  312,   43,   43,  337,   43,   43,   43,   45,   45,
-       53,   53,   53,   98,   98,   98,   99,   99,  337,   99,
-       99,   99,  184,  337,  337,  184,  184,  200,  337,  337,
-      200,  211,  211,  211,  239,  337,  239,  239,  239,  261,
-      337,  337,  261,  261,  262,  262,  262,  280,  280,  280,
-      301,  337,  337,  301,  301,  312,  312,  312,  330,  337,
-      337,  330,  330,  332,  337,  332,  332,  332,    3,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337
+      251,  331,  331,  335,  334,  331,  338,  338,  337,  312,
+      336,  337,  338,  312,  337,  321,  338,  337,  338,  338,
+      338,  338,  338,  338,  333,  338,  338,  335,  334,  338,
+
+      338,  338,  338,  301,  338,  338,  338,  312,  338,  338,
+      338,  312,   43,   43,  338,   43,   43,   43,   45,   45,
+       53,   53,   53,   98,   98,   98,   99,   99,  338,   99,
+       99,   99,  184,  338,  338,  184,  184,  200,  338,  338,
+      200,  211,  211,  211,  239,  338,  239,  239,  239,  261,
+      338,  338,  261,  261,  262,  262,  262,  280,  280,  280,
+      301,  338,  338,  301,  301,  312,  312,  312,  330,  338,
+      338,  330,  330,  332,  338,  332,  332,  332,    3,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338
     } ;
 
 static yyconst flex_int16_t yy_chk[945] =
@@ -737,26 +737,26 @@ static yyconst flex_int16_t yy_chk[945] =
       322,  313,  315,  322,  306,  318,  313,  319,  304,  323,
         0,  326,  323,  306,  326,  334,  313,  327,  306,    0,
       327,  320,  321,  325,  329,  313,  315,  329,  330,  331,
-      313,  330,  332,  333,  331,  332,    0,    0,    0,  330,
-      334,    0,    0,  332,    0,  320,    0,    0,    0,    0,
+      313,  330,  332,  333,  331,  332,    0,    0,  335,  330,
+      334,  335,    0,  332,  336,  320,    0,  336,    0,    0,
         0,    0,    0,    0,  331,    0,    0,  333,  331,    0,
 
         0,    0,    0,  329,    0,    0,    0,  330,    0,    0,
-        0,  332,  338,  338,    0,  338,  338,  338,  339,  339,
-      340,  340,  340,  341,  341,  341,  342,  342,    0,  342,
-      342,  342,  343,    0,    0,  343,  343,  344,    0,    0,
-      344,  345,  345,  345,  346,    0,  346,  346,  346,  347,
-        0,    0,  347,  347,  348,  348,  348,  349,  349,  349,
-      350,    0,    0,  350,  350,  351,  351,  351,  352,    0,
-        0,  352,  352,  353,    0,  353,  353,  353,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337,  337,  337,  337,  337,  337,  337,
-      337,  337,  337,  337
+        0,  332,  339,  339,    0,  339,  339,  339,  340,  340,
+      341,  341,  341,  342,  342,  342,  343,  343,    0,  343,
+      343,  343,  344,    0,    0,  344,  344,  345,    0,    0,
+      345,  346,  346,  346,  347,    0,  347,  347,  347,  348,
+        0,    0,  348,  348,  349,  349,  349,  350,  350,  350,
+      351,    0,    0,  351,  351,  352,  352,  352,  353,    0,
+        0,  353,  353,  354,    0,  354,  354,  354,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
+      338,  338,  338,  338
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1085,13 +1085,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 338 )
+				if ( yy_current_state >= 339 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 337 );
+		while ( yy_current_state != 338 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -2003,7 +2003,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 338 )
+			if ( yy_current_state >= 339 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2031,11 +2031,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 338 )
+		if ( yy_current_state >= 339 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 337);
+	yy_is_jam = (yy_current_state == 338);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index e31b519..65f2d87 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -201,7 +201,7 @@ the[ \t]+value[ \t]+of[ \t]*	{
 
 		return FBLTIN;
 	}
-the[ \t]+number[ \t]+of[ \t]+[[:alpha:]]+[ \t](in|of)	{
+the[ \t]+number[ \t]+of[ \t]+[[:alpha:]]+[ \t](in|of)[ \t]	{
 		count();
 
 		const char *ptr = &yytext[4]; // Skip 'the '


Commit: ca8064f3d0e33caf81f59a90af7c211e01460d07
    https://github.com/scummvm/scummvm/commit/ca8064f3d0e33caf81f59a90af7c211e01460d07
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-16T18:21:28+01:00

Commit Message:
DIRECTOR: LINGO: Added test for 'the number of castMembers"

Changed paths:
    engines/director/lingo/tests/the.lingo


diff --git a/engines/director/lingo/tests/the.lingo b/engines/director/lingo/tests/the.lingo
index 94f775b..19618fa 100644
--- a/engines/director/lingo/tests/the.lingo
+++ b/engines/director/lingo/tests/the.lingo
@@ -35,3 +35,5 @@ set the volume of sound 1 to 255
 put the volume of sound 1 into field 11
 
 set the checkMark of menuItem "Horizontal" of menu "The Ball" to False
+
+put the number of castMembers into field 5


Commit: a2c971c9253ea74633ce056188a47fa12ab31ff5
    https://github.com/scummvm/scummvm/commit/a2c971c9253ea74633ce056188a47fa12ab31ff5
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-16T18:21:28+01:00

Commit Message:
DIRECTOR: LINGO: Added parsing 'the rect of sprite'

Changed paths:
    engines/director/lingo/lingo-the.cpp


diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index c54712d..a3b372c 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -168,6 +168,7 @@ TheEntityField fields[] = {
 	{ kTheSprite,	"moveableSprite",kTheMoveableSprite,4 },//			D4 p
 	{ kTheSprite,	"pattern",		kThePattern,	2 },// D2 p
 	{ kTheSprite,	"puppet",		kThePuppet,		2 },// D2 p
+	{ kTheSprite,	"rect",			kTheRect,		4 },//				D4 p ???
 	{ kTheSprite,	"right",		kTheRight,		2 },// D2 p
 	{ kTheSprite,	"scoreColor",	kTheScoreColor,	4 },//				D4 p
 	{ kTheSprite,	"scriptNum",	kTheScriptNum,	4 },//				D4 p


Commit: f60116801633adbffd92b834f6020927e84bf7a9
    https://github.com/scummvm/scummvm/commit/f60116801633adbffd92b834f6020927e84bf7a9
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-16T18:21:28+01:00

Commit Message:
DIRECTOR: LINGO: Better diagnostics for unknown fields

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


diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 575de1d..d206c72 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1479,7 +1479,7 @@ 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);
+				error("LEXER: Unhandled the field %s of %s", field.c_str(), ptr);
 			}
 
 			if (g_lingo->_theEntityFields[field]->entity != g_lingo->_theEntities[ptr]->entity)
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 65f2d87..f7117f4 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -247,7 +247,7 @@ 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", ptr);
+				error("LEXER: Unhandled the field %s of %s", field.c_str(), ptr);
 			}
 
 			if (g_lingo->_theEntityFields[field]->entity != g_lingo->_theEntities[ptr]->entity)


Commit: 2c044b0c96b000e5f936b8ddbbfe53af38a3a8c7
    https://github.com/scummvm/scummvm/commit/2c044b0c96b000e5f936b8ddbbfe53af38a3a8c7
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-16T18:21:28+01:00

Commit Message:
DIRECTOR: LINGO: Added 'the loc of sprite' parsing

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


diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index a3b372c..3b2ba74 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -163,6 +163,7 @@ TheEntityField fields[] = {
 	{ kTheSprite,	"ink",			kTheInk,		2 },// D2 p
 	{ kTheSprite,	"left",			kTheLeft,		2 },// D2 p
 	{ kTheSprite,	"lineSize",		kTheLineSize,	2 },// D2 p
+	{ kTheSprite,	"loc",			kTheLoc,		4 },//				D4 p ???
 	{ kTheSprite,	"locH",			kTheLocH,		2 },// D2 p
 	{ kTheSprite,	"locV",			kTheLocV,		2 },// D2 p
 	{ kTheSprite,	"moveableSprite",kTheMoveableSprite,4 },//			D4 p
diff --git a/engines/director/lingo/lingo-the.h b/engines/director/lingo/lingo-the.h
index 5551aff..86916c6 100644
--- a/engines/director/lingo/lingo-the.h
+++ b/engines/director/lingo/lingo-the.h
@@ -178,6 +178,7 @@ enum TheFieldType {
 	kTheLeft,
 	kTheLineSize,
 	kTheLoaded,
+	kTheLoc,
 	kTheLocH,
 	kTheLocV,
 	kTheLong,




More information about the Scummvm-git-logs mailing list