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

sev- sev at scummvm.org
Wed Jan 15 20:08:07 UTC 2020


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

Summary:
73381b47cd DIRECTOR: LINGO: Added parsing of builtins with args in parens
bb6b94a474 DIRECTOR: LINGO: Added test for builtins with parens


Commit: 73381b47cdb5a2c8c0be2f38d1fe13114a002d83
    https://github.com/scummvm/scummvm/commit/73381b47cdb5a2c8c0be2f38d1fe13114a002d83
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-15T21:07:05+01:00

Commit Message:
DIRECTOR: LINGO: Added parsing of builtins with args in parens

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index e3bb1d2..ad8a67f 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -564,18 +564,18 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  122
+#define YYFINAL  124
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1479
+#define YYLAST   1600
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  98
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  48
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  163
+#define YYNRULES  165
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  345
+#define YYNSTATES  351
 
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   337
@@ -636,17 +636,17 @@ static const yytype_int16 yyrline[] =
      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,   395,   401,   406,   407,   408,   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,   439,   443,   444,
-     445,   446,   447,   448,   449,   450,   451,   454,   455,   457,
-     461,   466,   470,   475,   479,   491,   492,   493,   494,   498,
-     502,   507,   508,   510,   511,   515,   519,   523,   523,   553,
-     553,   553,   560,   561,   561,   568,   578,   586,   586,   588,
-     589,   590,   591,   593,   594,   595,   597,   599,   607,   608,
-     609,   611,   612,   614,   616,   617,   618,   619,   621,   622,
-     624,   625,   627,   631
+     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,   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
 };
 #endif
 
@@ -698,7 +698,7 @@ static const yytype_int16 yytoknum[] =
 };
 # endif
 
-#define YYPACT_NINF (-251)
+#define YYPACT_NINF (-264)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -712,41 +712,42 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     264,   -82,  -251,  -251,   867,  -251,   867,   867,    59,   901,
-    -251,  -251,  -251,  -251,  -251,   -25,    11,   750,  -251,  -251,
-     867,    47,    37,    19,    26,   867,   786,    64,   867,   867,
-     867,   867,   867,   867,   867,    69,  -251,   867,   867,   867,
-     102,     8,  -251,  -251,  -251,  -251,  -251,   867,    33,   867,
-     588,  -251,  1390,  -251,  -251,  -251,  -251,  -251,  -251,  -251,
-    -251,  -251,     6,   867,  1390,  1390,     0,     0,  -251,  -251,
-     867,  1390,    23,   867,  -251,  -251,  -251,    28,  -251,   867,
-    -251,    61,  -251,   953,  -251,    99,   940,   107,  -251,    -8,
-      59,     2,   101,   100,  -251,  1307,  -251,   953,  -251,  -251,
-      65,  -251,  1002,  1035,  1068,  1101,  1357,  1266,  -251,    66,
-     132,  -251,  -251,  1320,    58,    73,  -251,  -251,    62,    72,
-      79,  -251,  -251,   345,  1390,   867,  1390,  -251,  -251,   867,
-    1390,  -251,  -251,   867,   867,   867,   867,   867,   867,   867,
-     867,   867,   867,   867,   867,   867,   867,   867,   867,   867,
-     142,   867,   940,   867,  1320,    18,   867,     0,   142,   163,
-    1390,   867,  -251,  -251,    95,   867,   867,  -251,   867,   867,
-       3,   867,   867,   867,  -251,   867,  -251,   164,   867,   867,
-     867,   867,   867,   867,   867,   867,   867,   867,  -251,  -251,
-     167,  -251,  -251,    59,    59,  -251,    59,    67,  -251,  -251,
-    1390,   143,  -251,  1390,    20,    20,    20,    20,   171,   171,
-    -251,    15,    20,    20,    20,    20,    15,   -33,   -33,  -251,
-    -251,  -251,   -34,  1390,  -251,  1390,   -21,  -251,  1390,  -251,
-    -251,  -251,  1390,  1390,  1390,    20,   867,   867,  1390,    20,
-    1390,  1390,  -251,  1390,  1134,  1390,  1167,  1390,  1200,  1390,
-    1233,  1390,  1390,   669,  -251,  -251,  -251,  -251,  -251,    58,
-      73,  -251,   507,    -6,  -251,   144,   104,   174,   104,   142,
-    1390,    20,   867,   867,   867,   867,  -251,   507,  -251,  -251,
-     115,   153,   867,   507,   669,   180,  -251,  -251,  -251,   -17,
-    1390,  1390,  1390,  1390,  -251,   121,  -251,   867,  1390,  -251,
-    -251,  -251,   426,   507,   104,  -251,  1390,  -251,   120,   -16,
-     181,  -251,  -251,   507,  -251,  -251,  -251,   867,   124,  -251,
-    -251,  -251,   111,   507,   507,   125,  -251,  1390,  -251,   669,
-     186,   128,  -251,   507,   165,  -251,  -251,  -251,   133,  -251,
-     134,  -251,   507,  -251,  -251
+     270,   -72,  -264,  -264,   873,  -264,   907,   988,    93,  1022,
+    -264,  -264,  -264,  -264,  -264,   -21,    21,   756,  -264,  -264,
+     873,     3,    76,    27,    55,   873,   792,    59,   873,   873,
+     873,   873,   873,   873,   873,    62,  -264,   873,   873,   873,
+      57,     8,  -264,  -264,  -264,  -264,  -264,   873,    37,   873,
+     594,  -264,  1511,  -264,  -264,  -264,  -264,  -264,  -264,  -264,
+    -264,  -264,    -6,   873,  1511,   873,  1511,    19,   873,    19,
+    -264,  -264,   873,  1511,    28,   873,  -264,  -264,  -264,    30,
+    -264,   873,  -264,    63,  -264,  1074,  -264,    77,  1061,   100,
+    -264,    -8,    93,    11,    79,    84,  -264,  1428,  -264,  1074,
+    -264,  -264,    54,  -264,  1123,  1156,  1189,  1222,  1478,  1387,
+    -264,    56,   130,  -264,  -264,  1441,    58,    60,  -264,  -264,
+      66,    64,    65,  -264,  -264,   351,  1511,   873,  1511,  -264,
+    -264,   873,  1511,  -264,  -264,   873,   873,   873,   873,   873,
+     873,   873,   873,   873,   873,   873,   873,   873,   873,   873,
+     873,   873,   142,   873,  1061,  1441,   -27,   873,     7,    13,
+     873,    19,   142,   143,  1511,   873,  -264,  -264,    91,   873,
+     873,  -264,   873,   873,    35,   873,   873,   873,  -264,   873,
+    -264,   153,   873,   873,   873,   873,   873,   873,   873,   873,
+     873,   873,  -264,  -264,   155,  -264,  -264,    93,    93,  -264,
+      93,    71,  -264,  -264,  1511,   148,  -264,  1511,   170,   170,
+     170,   170,   133,   133,  -264,   -32,   170,   170,   170,   170,
+     -32,   -52,   -52,  -264,  -264,  -264,   -76,  -264,  1511,  -264,
+    -264,  1511,   -74,  -264,  1511,  -264,  -264,  -264,  1511,  1511,
+    1511,   170,   873,   873,  1511,   170,  1511,  1511,  -264,  1511,
+    1255,  1511,  1288,  1511,  1321,  1511,  1354,  1511,  1511,   675,
+    -264,  -264,  -264,  -264,  -264,    58,    60,  -264,   513,    15,
+    -264,   159,   105,   185,   105,   142,  1511,   170,   873,   873,
+     873,   873,  -264,   513,  -264,  -264,   126,   161,   873,   513,
+     675,   188,  -264,  -264,  -264,   -19,  1511,  1511,  1511,  1511,
+    -264,   129,  -264,   873,  1511,  -264,  -264,  -264,   432,   513,
+     105,  -264,  1511,  -264,    88,   -20,   191,  -264,  -264,   513,
+    -264,  -264,  -264,   873,   134,  -264,  -264,  -264,   119,   513,
+     513,   145,  -264,  1511,  -264,   675,   194,   147,  -264,   513,
+     177,  -264,  -264,  -264,   144,  -264,   149,  -264,   513,  -264,
+    -264
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -754,61 +755,62 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    52,    62,     0,    53,   148,   148,     0,    56,
-      55,    54,   127,   133,    64,   102,     0,     0,    44,   129,
+       0,     0,    52,    63,     0,    53,   150,   150,     0,    56,
+      55,    54,   129,   135,    65,   103,     0,     0,    44,   131,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   137,     0,     0,     0,
-     154,     0,     3,    65,    26,     7,    27,     0,     0,     0,
-       0,    58,    20,    59,    21,    99,   100,     6,    46,    19,
-      57,     4,    56,     0,    63,   149,   106,    60,    56,    97,
-     148,   151,   147,   148,    46,   101,   109,   103,   115,     0,
-     116,     0,   117,   118,   120,     0,    98,     0,    42,     0,
-       0,     0,     0,     0,   132,   108,   123,   124,   126,   113,
-     105,    79,     0,     0,     0,     0,     0,     0,   111,   104,
-       0,    84,    85,     0,    55,    54,   155,   158,     0,   156,
-     157,   160,     1,     5,    47,     0,    47,    47,    25,     0,
-      23,    24,    22,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   139,     0,     0,     0,
+     156,     0,     3,    66,    26,     7,    27,     0,     0,     0,
+       0,    58,    20,    59,    21,   100,   101,     6,    46,    19,
+      57,     4,    56,     0,    64,   150,   151,   108,   150,    61,
+      56,    98,   150,   153,   149,   150,    46,   102,   111,   104,
+     117,     0,   118,     0,   119,   120,   122,     0,    99,     0,
+      42,     0,     0,     0,     0,     0,   134,   110,   125,   126,
+     128,   115,   106,    80,     0,     0,     0,     0,     0,     0,
+     113,   105,     0,    85,    86,     0,    55,    54,   157,   160,
+       0,   158,   159,   162,     1,     5,    47,     0,    47,    47,
+      25,     0,    23,    24,    22,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     139,   148,     0,     0,   149,     0,     0,   128,   139,     0,
-     122,     0,   119,   130,     0,     0,     0,    43,     0,     0,
-       0,     0,     0,     0,    51,     0,   125,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    34,    34,
-       0,   138,    86,     0,     0,   153,     0,     0,     2,    48,
-      47,     0,    31,    47,    75,    76,    73,    74,    77,    78,
-      70,    81,    82,    83,    72,    71,    80,    66,    67,    68,
-      69,   140,     0,   150,    61,   152,     0,   110,   121,    46,
-       8,     9,    10,    11,    15,    13,     0,     0,    14,    12,
-      18,   107,   114,    89,     0,    91,     0,    93,     0,    95,
-       0,    87,    88,     0,    48,   112,   163,   162,   159,     0,
-       0,   161,    47,     0,    48,     0,   146,     0,   146,   139,
-      16,    17,     0,     0,     0,     0,    47,    47,    49,    50,
-       0,     0,     0,    47,     0,     0,    48,   141,    48,     0,
-      90,    92,    94,    96,    33,     0,    28,     0,    47,    37,
-      47,   142,   136,   134,   146,    32,    47,    48,    47,     0,
-     143,    48,    48,    47,    46,    45,    38,     0,     0,    46,
-      41,   144,   135,   131,    47,     0,    48,    47,    35,     0,
-       0,     0,    29,    47,     0,    47,   145,    30,     0,    48,
-       0,    36,    47,    40,    39
+       0,     0,   141,   150,     0,   151,     0,     0,     0,     0,
+       0,   130,   141,     0,   124,     0,   121,   132,     0,     0,
+       0,    43,     0,     0,     0,     0,     0,     0,    51,     0,
+     127,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,    34,     0,   140,    87,     0,     0,   155,
+       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,   142,     0,   107,   152,    60,
+      62,   154,     0,   112,   123,    46,     8,     9,    10,    11,
+      15,    13,     0,     0,    14,    12,    18,   109,   116,    90,
+       0,    92,     0,    94,     0,    96,     0,    88,    89,     0,
+      48,   114,   165,   164,   161,     0,     0,   163,    47,     0,
+      48,     0,   148,     0,   148,   141,    16,    17,     0,     0,
+       0,     0,    47,    47,    49,    50,     0,     0,     0,    47,
+       0,     0,    48,   143,    48,     0,    91,    93,    95,    97,
+      33,     0,    28,     0,    47,    37,    47,   144,   138,   136,
+     148,    32,    47,    48,    47,     0,   145,    48,    48,    47,
+      46,    45,    38,     0,     0,    46,    41,   146,   137,   133,
+      47,     0,    48,    47,    35,     0,     0,     0,    29,    47,
+       0,    47,   147,    30,     0,    48,     0,    36,    47,    40,
+      39
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -251,  -251,    89,  -251,  -236,  -251,     4,    30,  -251,  -251,
-    -251,  -251,  -251,  -251,   170,  -251,   -73,   -90,  -244,  -251,
-      -2,    -4,    51,   172,  -251,  -251,  -251,  -251,   -11,  -251,
-    -251,  -251,  -251,  -251,  -251,  -251,  -251,  -151,  -251,  -250,
-     175,     5,  -251,  -251,  -251,  -251,  -251,    24
+    -264,  -264,   106,  -264,  -250,  -264,     4,    39,  -264,  -264,
+    -264,  -264,  -264,  -264,   180,  -264,   -75,   -79,  -229,  -264,
+      -2,    -4,    68,   192,  -264,  -264,  -264,  -264,   -12,  -264,
+    -264,  -264,  -264,  -264,  -264,  -264,  -264,  -155,  -264,  -263,
+     193,   102,  -264,  -264,  -264,  -264,  -264,    40
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    41,    42,    43,    44,   127,   279,   253,    46,   308,
-     316,   128,    47,    48,    49,   317,   150,   199,   262,    50,
-      51,    52,    53,    54,    77,   109,   100,    55,    84,    56,
-      73,    57,    85,   229,    74,    58,   110,   222,   322,   286,
-      59,   155,    72,    60,   118,   119,   120,   121
+      -1,    41,    42,    43,    44,   129,   285,   259,    46,   314,
+     322,   130,    47,    48,    49,   323,   152,   203,   268,    50,
+      51,    52,    53,    54,    79,   111,   102,    55,    86,    56,
+      75,    57,    87,   235,    76,    58,   112,   226,   328,   292,
+      59,   159,    74,    60,   120,   121,   122,   123
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -816,306 +818,332 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      64,   158,    65,    65,    45,    71,    69,   226,   122,    61,
-     277,    66,    67,    83,   319,    98,    86,   276,   288,    75,
-     283,    95,    97,   281,   101,   102,   103,   104,   105,   106,
-     107,   139,    76,   111,   112,   113,   201,   202,   117,   168,
-      93,   282,   302,   124,   303,   126,   130,    94,   300,   171,
-     236,   169,    89,    90,   311,   148,   149,   266,    91,   152,
-     267,   172,   237,   313,   320,    92,   154,   323,   324,    65,
-     268,     2,   162,   267,   304,   160,     5,   267,   157,   139,
-      68,    10,   333,    11,   139,    99,   176,   140,   170,   259,
-     108,   260,   125,   335,   153,   342,    87,    88,   151,   123,
-     161,   146,   147,   148,   149,   145,   146,   147,   148,   149,
-     263,   224,   153,   265,     2,     8,   230,   156,   289,     5,
-     163,   200,   159,    68,   114,   203,   115,    45,   167,   204,
-     205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   174,    65,   173,   223,
-     314,   315,   225,   191,    40,   193,   269,   228,   195,   177,
-     190,   232,   233,   221,   234,   235,   196,   238,   239,   240,
-     194,   241,   280,   197,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   227,   242,   294,   295,   255,   264,
-     284,   256,   257,   299,   258,   287,   296,    40,   285,   116,
-     297,   301,   321,   305,   328,   330,   332,   336,   307,   337,
-     309,   339,   198,   341,   343,   231,   312,     0,   318,   254,
-     129,   261,   131,   325,     0,   132,     0,     0,   133,   134,
-     135,   136,   270,   271,   331,   139,     0,   334,   140,   141,
-     142,   326,     0,   338,     0,   340,   329,     0,     0,     0,
-       0,     0,   344,     0,   143,   144,   145,   146,   147,   148,
-     149,     0,     0,     0,    -5,     1,     0,     0,   290,   291,
-     292,   293,     0,     0,     0,     0,     2,     0,   298,     3,
+      64,   162,    66,    66,    45,    73,    71,   232,   124,   282,
+     325,   294,   141,    85,   100,   272,    88,   274,   273,    61,
+     273,    97,    99,    77,   103,   104,   105,   106,   107,   108,
+     109,   283,   141,   113,   114,   115,   150,   151,   119,   172,
+     306,   289,    78,   126,   287,   128,   132,   317,    95,   205,
+     206,   173,    89,    90,   148,   149,   150,   151,   175,   154,
+     326,   155,   288,   308,   155,   309,   227,   157,   155,     2,
+     176,    66,   310,   166,     5,   273,    96,   164,    70,   116,
+     101,   117,   242,   110,   319,   341,   153,   180,   329,   330,
+     174,    91,    92,   265,   243,   266,   127,    93,   167,   125,
+     229,   157,   165,   339,    94,     2,   230,   157,    67,    69,
+       5,     8,   236,   157,    70,    10,   348,    11,   320,   321,
+     295,   171,   160,   204,   163,   269,   177,   207,   271,    45,
+     178,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,   221,   222,   223,   224,   181,    66,
+     194,   195,    40,   228,   118,   197,   231,   198,   200,   201,
+     275,   234,   199,   225,   233,   238,   239,   156,   240,   241,
+     158,   244,   245,   246,   248,   247,   261,   161,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,    40,   286,
+     135,   136,   137,   138,   270,   262,   263,   141,   264,   291,
+     142,   143,   144,   300,   301,   290,   293,   302,   303,   307,
+     305,   311,   327,   336,   334,   342,   145,   146,   147,   148,
+     149,   150,   151,   345,   347,   313,   338,   315,   343,   349,
+     131,   202,   260,   318,   141,   324,   237,   142,   276,   277,
+     331,   267,   133,   134,     0,   332,     0,     0,     0,     0,
+     335,   337,     0,     0,   340,   147,   148,   149,   150,   151,
+     344,     0,   346,     0,     0,     0,     0,     0,     0,   350,
+      -5,     1,     0,     0,   296,   297,   298,   299,     0,     0,
+       0,     0,     2,     0,   304,     3,     4,     5,     6,     7,
+       8,     9,    10,     0,    11,     0,    12,    13,    14,   312,
+       0,     0,    15,    16,    17,    18,     0,     0,    19,     0,
+       0,     0,     0,    20,    21,    22,     0,     0,    23,   333,
+       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,   316,    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,   284,    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,    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,   284,    39,     2,     0,    40,     3,
        4,     5,     6,     7,     8,     9,    10,     0,    11,     0,
-      12,    13,    14,   306,     0,     0,    15,    16,    17,    18,
-       0,     0,    19,     0,     0,     0,     0,    20,    21,    22,
-       0,     0,    23,   327,     0,     0,    24,    25,    26,     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,    34,    35,    36,     0,     0,     0,     0,     0,     0,
-      37,    38,     0,     0,     0,    -5,    39,     2,     0,    40,
+       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,    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,    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,    34,    35,    36,     0,     0,     0,     0,     0,
+       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,   310,    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,   278,    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,    21,    22,     0,     0,    23,     0,     0,     0,     0,
-      25,    26,     0,    27,     0,     0,     0,     0,     0,     0,
+      40,     3,     4,     5,     0,     7,     8,    62,    10,     0,
+      11,     0,     0,     0,    14,     0,     0,     0,     0,     0,
+       0,     0,     0,    80,     0,    81,    82,    83,    84,    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,    81,     0,    83,     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,     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,     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,    31,
-      32,    33,     0,     0,    34,    35,     0,     0,     0,     0,
-       0,     0,     0,    37,    38,     0,     0,     0,   278,    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,    78,     0,    79,
-      80,    81,    82,    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,    79,     0,    81,     0,    63,
-       0,    22,     0,     0,     0,     0,    37,    38,     0,     0,
-       0,    96,    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,     0,     0,    39,     2,
-       0,    40,     3,     4,     5,     0,     7,     8,    62,    10,
-       0,    11,     0,     0,     0,    14,     0,     0,     0,     0,
+      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,
-      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,    39,
-       0,     0,    40,     0,    28,     0,     0,     0,     0,     0,
-       0,    29,    30,    31,    32,    33,   164,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    37,    38,     0,
-       0,     0,    79,    70,    81,     0,    40,   133,   134,   135,
-     136,   137,   138,     0,   139,   165,   166,   140,   141,   142,
-     133,   134,   135,   136,   137,   138,     0,   139,     0,     0,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-       0,     0,     0,     0,     0,     0,   143,   144,   145,   146,
-     147,   148,   149,   178,     0,     0,     0,     0,     0,   179,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   133,
-     134,   135,   136,   137,   138,     0,   139,     0,     0,   140,
-     141,   142,     0,     0,     0,     0,   180,     0,     0,     0,
-       0,     0,   181,     0,     0,   143,   144,   145,   146,   147,
-     148,   149,   133,   134,   135,   136,   137,   138,     0,   139,
-       0,     0,   140,   141,   142,     0,     0,     0,     0,   182,
-       0,     0,     0,     0,     0,   183,     0,     0,   143,   144,
-     145,   146,   147,   148,   149,   133,   134,   135,   136,   137,
-     138,     0,   139,     0,     0,   140,   141,   142,     0,     0,
-       0,     0,   184,     0,     0,     0,     0,     0,   185,     0,
-       0,   143,   144,   145,   146,   147,   148,   149,   133,   134,
-     135,   136,   137,   138,     0,   139,     0,     0,   140,   141,
-     142,     0,     0,     0,     0,   272,     0,     0,     0,     0,
-       0,     0,     0,     0,   143,   144,   145,   146,   147,   148,
-     149,   133,   134,   135,   136,   137,   138,     0,   139,     0,
-       0,   140,   141,   142,     0,     0,     0,     0,   273,     0,
-       0,     0,     0,     0,     0,     0,     0,   143,   144,   145,
-     146,   147,   148,   149,   133,   134,   135,   136,   137,   138,
-       0,   139,     0,     0,   140,   141,   142,     0,     0,     0,
-       0,   274,     0,     0,     0,     0,     0,     0,     0,     0,
-     143,   144,   145,   146,   147,   148,   149,   133,   134,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-       0,     0,     0,     0,   275,     0,     0,     0,     0,     0,
-       0,     0,     0,   143,   144,   145,   146,   147,   148,   149,
-     133,   134,   135,   136,   137,   138,     0,   139,     0,     0,
-     140,   141,   142,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   188,     0,     0,   143,   144,   145,   146,
-     147,   148,   149,   133,   134,   135,   136,   137,   138,     0,
-     139,     0,     0,   140,   141,   142,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   143,
-     144,   145,   146,   147,   148,   149,   175,   189,     0,     0,
-       0,     0,     0,     0,   133,   134,   135,   136,   137,   138,
-       0,   139,     0,     0,   140,   141,   142,   133,   134,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,     0,     0,     0,
-       0,     0,     0,   143,   144,   145,   146,   147,   148,   149,
-       0,     0,     0,   192,   133,   134,   135,   136,   137,   138,
-       0,   139,     0,     0,   140,   141,   142,     0,     0,     0,
-       0,     0,   186,   187,     0,     0,     0,     0,     0,     0,
-     143,   144,   145,   146,   147,   148,   149,   133,   134,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
+       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,    81,    72,    83,     0,    40,   135,   136,
+     137,   138,   139,   140,     0,   141,   169,   170,   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,   182,     0,     0,     0,     0,     0,
+     183,     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,   184,     0,     0,
+       0,     0,     0,   185,     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,
+     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,   278,     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,   279,
+       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,   280,     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,   281,     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,   192,     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,
-       0,     0,     0,   143,   144,   145,   146,   147,   148,   149
+     145,   146,   147,   148,   149,   150,   151,   179,   193,     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,   196,   135,   136,   137,   138,   139,
+     140,     0,   141,     0,     0,   142,   143,   144,     0,     0,
+       0,     0,     0,   190,   191,     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,     0,     0,     0,   145,   146,   147,   148,   149,   150,
+     151
 };
 
 static const yytype_int16 yycheck[] =
 {
-       4,    74,     6,     7,     0,     9,     8,   158,     0,    91,
-     254,     6,     7,    17,    30,    26,    20,   253,   268,    44,
-     264,    25,    26,    29,    28,    29,    30,    31,    32,    33,
-      34,    64,    21,    37,    38,    39,   126,   127,    40,    47,
-      21,    47,   286,    47,   288,    49,    50,    21,   284,    47,
-      47,    59,    15,    16,   304,    88,    89,    91,    21,    63,
-      94,    59,    59,   307,    80,    28,    70,   311,   312,    73,
-      91,    12,    83,    94,    91,    79,    17,    94,    73,    64,
-      21,    22,   326,    24,    64,    21,    97,    67,    90,    22,
-      21,    24,    59,   329,    94,   339,    49,    50,    92,    91,
-      39,    86,    87,    88,    89,    85,    86,    87,    88,    89,
-     200,    93,    94,   203,    12,    20,    21,    94,   269,    17,
-      21,   125,    94,    21,    22,   129,    24,   123,    21,   133,
-     134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,    46,   151,    47,   153,
-      30,    31,   156,    21,    95,    97,   229,   161,    96,    94,
-      94,   165,   166,    21,   168,   169,    94,   171,   172,   173,
-      97,   175,   262,    94,   178,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,    21,    21,   276,   277,    21,    46,
-      46,   193,   194,   283,   196,    21,    81,    95,    94,    97,
-      47,    21,    21,    82,    80,    94,    81,    21,   298,    81,
-     300,    46,   123,    80,    80,   164,   306,    -1,   308,   189,
-      50,   197,    50,   313,    -1,    50,    -1,    -1,    57,    58,
-      59,    60,   236,   237,   324,    64,    -1,   327,    67,    68,
-      69,   314,    -1,   333,    -1,   335,   319,    -1,    -1,    -1,
-      -1,    -1,   342,    -1,    83,    84,    85,    86,    87,    88,
-      89,    -1,    -1,    -1,     0,     1,    -1,    -1,   272,   273,
-     274,   275,    -1,    -1,    -1,    -1,    12,    -1,   282,    15,
+       4,    76,     6,     7,     0,     9,     8,   162,     0,   259,
+      30,   274,    64,    17,    26,    91,    20,    91,    94,    91,
+      94,    25,    26,    44,    28,    29,    30,    31,    32,    33,
+      34,   260,    64,    37,    38,    39,    88,    89,    40,    47,
+     290,   270,    21,    47,    29,    49,    50,   310,    21,   128,
+     129,    59,    49,    50,    86,    87,    88,    89,    47,    63,
+      80,    65,    47,   292,    68,   294,    93,    94,    72,    12,
+      59,    75,    91,    85,    17,    94,    21,    81,    21,    22,
+      21,    24,    47,    21,   313,   335,    92,    99,   317,   318,
+      92,    15,    16,    22,    59,    24,    59,    21,    21,    91,
+      93,    94,    39,   332,    28,    12,    93,    94,     6,     7,
+      17,    20,    21,    94,    21,    22,   345,    24,    30,    31,
+     275,    21,    94,   127,    94,   204,    47,   131,   207,   125,
+      46,   135,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,    94,   153,
+      94,    21,    95,   157,    97,    97,   160,    97,    94,    94,
+     235,   165,    96,    21,    21,   169,   170,    65,   172,   173,
+      68,   175,   176,   177,    21,   179,    21,    75,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,    95,   268,
+      57,    58,    59,    60,    46,   197,   198,    64,   200,    94,
+      67,    68,    69,   282,   283,    46,    21,    81,    47,    21,
+     289,    82,    21,    94,    80,    21,    83,    84,    85,    86,
+      87,    88,    89,    46,    80,   304,    81,   306,    81,    80,
+      50,   125,   193,   312,    64,   314,   168,    67,   242,   243,
+     319,   201,    50,    50,    -1,   320,    -1,    -1,    -1,    -1,
+     325,   330,    -1,    -1,   333,    85,    86,    87,    88,    89,
+     339,    -1,   341,    -1,    -1,    -1,    -1,    -1,    -1,   348,
+       0,     1,    -1,    -1,   278,   279,   280,   281,    -1,    -1,
+      -1,    -1,    12,    -1,   288,    15,    16,    17,    18,    19,
+      20,    21,    22,    -1,    24,    -1,    26,    27,    28,   303,
+      -1,    -1,    32,    33,    34,    35,    -1,    -1,    38,    -1,
+      -1,    -1,    -1,    43,    44,    45,    -1,    -1,    48,   323,
+      -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,    27,    28,   297,    -1,    -1,    32,    33,    34,    35,
-      -1,    -1,    38,    -1,    -1,    -1,    -1,    43,    44,    45,
-      -1,    -1,    48,   317,    -1,    -1,    52,    53,    54,    -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,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-      86,    87,    -1,    -1,    -1,    91,    92,    12,    -1,    95,
+      -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,    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,    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,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
+      -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,    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,
+      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,    43,    -1,    45,    -1,    -1,    -1,
+      73,    74,    -1,    -1,    -1,    -1,    -1,    -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,
+      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,    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,
+      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,    47,    -1,    -1,    83,    84,    85,    86,    87,
+      -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,    47,    -1,    -1,    83,    84,
+      -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,    47,    -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,
+      -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,    -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,    -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
+      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
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1128,35 +1156,36 @@ static const yytype_uint8 yystos[] =
       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,   125,   127,   129,   133,   138,
-     141,    91,    21,    43,   119,   119,   139,   139,    21,   118,
-      92,   119,   140,   128,   132,    44,    21,   122,    37,    39,
-      40,    41,    42,   119,   126,   130,   119,    49,    50,    15,
-      16,    21,    28,    21,    21,   119,    55,   119,   126,    21,
-     124,   119,   119,   119,   119,   119,   119,   119,    21,   123,
-     134,   119,   119,   119,    22,    24,    97,   118,   142,   143,
-     144,   145,     0,    91,   119,    59,   119,   103,   109,   112,
-     119,   121,   138,    57,    58,    59,    60,    61,    62,    64,
-      67,    68,    69,    83,    84,    85,    86,    87,    88,    89,
-     114,    92,   119,    94,   119,   139,    94,   139,   114,    94,
-     119,    39,   126,    21,    36,    65,    66,    21,    47,    59,
-     118,    47,    59,    47,    46,    49,   126,    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,
+     141,    91,    21,    43,   119,    92,   119,   139,    92,   139,
+      21,   118,    92,   119,   140,   128,   132,    44,    21,   122,
+      37,    39,    40,    41,    42,   119,   126,   130,   119,    49,
+      50,    15,    16,    21,    28,    21,    21,   119,    55,   119,
+     126,    21,   124,   119,   119,   119,   119,   119,   119,   119,
+      21,   123,   134,   119,   119,   119,    22,    24,    97,   118,
+     142,   143,   144,   145,     0,    91,   119,    59,   119,   103,
+     109,   112,   119,   121,   138,    57,    58,    59,    60,    61,
+      62,    64,    67,    68,    69,    83,    84,    85,    86,    87,
+      88,    89,   114,    92,   119,   119,   139,    94,   139,   139,
+      94,   139,   114,    94,   119,    39,   126,    21,    36,    65,
+      66,    21,    47,    59,   118,    47,    59,    47,    46,    49,
+     126,    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,    21,   135,   119,    93,   119,   135,    21,   119,   131,
-      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,   145,   116,   115,    46,   115,    91,    94,    91,   114,
-     119,   119,    41,    41,    41,    41,   102,   116,    91,   104,
-     115,    29,    47,   116,    46,    94,   137,    21,   137,   135,
-     119,   119,   119,   119,   115,   115,    81,    47,   119,   115,
-     102,    21,   116,   116,    91,    82,   119,   115,   107,   115,
-      25,   137,   115,   116,    30,    31,   108,   113,   115,    30,
-      80,    21,   136,   116,   116,   115,   114,   119,    80,   114,
-      94,   115,    81,   116,   115,   102,    21,    81,   115,    46,
-     115,    80,   116,    80,   115
+     119,   119,   119,   119,   119,    21,   135,    93,   119,    93,
+      93,   119,   135,    21,   119,   131,    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,   145,   116,   115,
+      46,   115,    91,    94,    91,   114,   119,   119,    41,    41,
+      41,    41,   102,   116,    91,   104,   115,    29,    47,   116,
+      46,    94,   137,    21,   137,   135,   119,   119,   119,   119,
+     115,   115,    81,    47,   119,   115,   102,    21,   116,   116,
+      91,    82,   119,   115,   107,   115,    25,   137,   115,   116,
+      30,    31,   108,   113,   115,    30,    80,    21,   136,   116,
+     116,   115,   114,   119,    80,   114,    94,   115,    81,   116,
+     115,   102,    21,    81,   115,    46,   115,    80,   116,    80,
+     115
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1171,14 +1200,14 @@ static const yytype_uint8 yyr1[] =
      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,   121,   121,   121,   121,   121,   121,   122,
-     122,   123,   123,   124,   124,   125,   125,   125,   125,   125,
-     125,   126,   126,   127,   127,   127,   127,   128,   127,   130,
-     131,   129,   129,   132,   129,   129,   129,   134,   133,   135,
-     135,   135,   135,   136,   136,   136,   137,   138,   139,   139,
-     139,   140,   140,   141,   142,   142,   142,   142,   143,   143,
-     144,   144,   145,   145
+     119,   119,   119,   119,   119,   119,   119,   119,   120,   121,
+     121,   121,   121,   121,   121,   121,   121,   121,   121,   121,
+     121,   122,   122,   123,   123,   124,   124,   125,   125,   125,
+     125,   125,   125,   126,   126,   127,   127,   127,   127,   128,
+     127,   130,   131,   129,   129,   132,   129,   129,   129,   134,
+     133,   135,   135,   135,   135,   136,   136,   136,   137,   138,
+     139,   139,   139,   140,   140,   141,   142,   142,   142,   142,
+     143,   143,   144,   144,   145,   145
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1190,17 +1219,17 @@ static const yytype_int8 yyr2[] =
       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,
-       2,     4,     1,     2,     1,     1,     3,     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,     2,     2,     2,     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
+       4,     2,     4,     1,     2,     1,     1,     3,     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,     2,     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
 };
 
 
@@ -1638,73 +1667,73 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
     case 18: /* BLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1642 "engines/director/lingo/lingo-gr.cpp"
+#line 1671 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 19: /* FBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1648 "engines/director/lingo/lingo-gr.cpp"
+#line 1677 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 20: /* RBLTIN  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1654 "engines/director/lingo/lingo-gr.cpp"
+#line 1683 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 21: /* ID  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1660 "engines/director/lingo/lingo-gr.cpp"
+#line 1689 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 22: /* STRING  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1666 "engines/director/lingo/lingo-gr.cpp"
+#line 1695 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* HANDLER  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1672 "engines/director/lingo/lingo-gr.cpp"
+#line 1701 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* SYMBOL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1678 "engines/director/lingo/lingo-gr.cpp"
+#line 1707 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* ENDCLAUSE  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1684 "engines/director/lingo/lingo-gr.cpp"
+#line 1713 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* tPLAYACCEL  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1690 "engines/director/lingo/lingo-gr.cpp"
+#line 1719 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* tMETHOD  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1696 "engines/director/lingo/lingo-gr.cpp"
+#line 1725 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* THEOBJECTFIELD  */
 #line 131 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 1702 "engines/director/lingo/lingo-gr.cpp"
+#line 1731 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 133: /* on  */
 #line 130 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1708 "engines/director/lingo/lingo-gr.cpp"
+#line 1737 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -1974,7 +2003,7 @@ yyreduce:
   case 4:
 #line 137 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 1978 "engines/director/lingo/lingo-gr.cpp"
+#line 2007 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -1985,7 +2014,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 1989 "engines/director/lingo/lingo-gr.cpp"
+#line 2018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -1993,19 +2022,19 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 1997 "engines/director/lingo/lingo-gr.cpp"
+#line 2026 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 152 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2003 "engines/director/lingo/lingo-gr.cpp"
+#line 2032 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 153 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2009 "engines/director/lingo/lingo-gr.cpp"
+#line 2038 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2016,7 +2045,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2020 "engines/director/lingo/lingo-gr.cpp"
+#line 2049 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2028,7 +2057,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2032 "engines/director/lingo/lingo-gr.cpp"
+#line 2061 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2039,7 +2068,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2043 "engines/director/lingo/lingo-gr.cpp"
+#line 2072 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2051,7 +2080,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2055 "engines/director/lingo/lingo-gr.cpp"
+#line 2084 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2062,7 +2091,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2066 "engines/director/lingo/lingo-gr.cpp"
+#line 2095 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2073,7 +2102,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2077 "engines/director/lingo/lingo-gr.cpp"
+#line 2106 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2084,7 +2113,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2088 "engines/director/lingo/lingo-gr.cpp"
+#line 2117 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28:
@@ -2095,7 +2124,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body;	/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2099 "engines/director/lingo/lingo-gr.cpp"
+#line 2128 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 29:
@@ -2112,7 +2141,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-9].code) + 5] = end; }
-#line 2116 "engines/director/lingo/lingo-gr.cpp"
+#line 2145 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
@@ -2129,7 +2158,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2133 "engines/director/lingo/lingo-gr.cpp"
+#line 2162 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
@@ -2139,7 +2168,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2143 "engines/director/lingo/lingo-gr.cpp"
+#line 2172 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
@@ -2148,7 +2177,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2152 "engines/director/lingo/lingo-gr.cpp"
+#line 2181 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2157,7 +2186,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2161 "engines/director/lingo/lingo-gr.cpp"
+#line 2190 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
@@ -2165,7 +2194,7 @@ yyreduce:
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2169 "engines/director/lingo/lingo-gr.cpp"
+#line 2198 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
@@ -2180,7 +2209,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2184 "engines/director/lingo/lingo-gr.cpp"
+#line 2213 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
@@ -2195,7 +2224,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2199 "engines/director/lingo/lingo-gr.cpp"
+#line 2228 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
@@ -2206,7 +2235,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2210 "engines/director/lingo/lingo-gr.cpp"
+#line 2239 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
@@ -2221,7 +2250,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2225 "engines/director/lingo/lingo-gr.cpp"
+#line 2254 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
@@ -2236,13 +2265,13 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2240 "engines/director/lingo/lingo-gr.cpp"
+#line 2269 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
 #line 324 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2246 "engines/director/lingo/lingo-gr.cpp"
+#line 2275 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
@@ -2252,7 +2281,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2256 "engines/director/lingo/lingo-gr.cpp"
+#line 2285 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
@@ -2262,7 +2291,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); }
-#line 2266 "engines/director/lingo/lingo-gr.cpp"
+#line 2295 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2273,25 +2302,25 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
-#line 2277 "engines/director/lingo/lingo-gr.cpp"
+#line 2306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
 #line 345 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2283 "engines/director/lingo/lingo-gr.cpp"
+#line 2312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
 #line 347 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2289 "engines/director/lingo/lingo-gr.cpp"
+#line 2318 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
 #line 349 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2295 "engines/director/lingo/lingo-gr.cpp"
+#line 2324 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
@@ -2301,7 +2330,7 @@ yyreduce:
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2305 "engines/director/lingo/lingo-gr.cpp"
+#line 2334 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
@@ -2309,7 +2338,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2313 "engines/director/lingo/lingo-gr.cpp"
+#line 2342 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
@@ -2317,7 +2346,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2321 "engines/director/lingo/lingo-gr.cpp"
+#line 2350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 54:
@@ -2326,7 +2355,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2330 "engines/director/lingo/lingo-gr.cpp"
+#line 2359 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
@@ -2335,7 +2364,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2339 "engines/director/lingo/lingo-gr.cpp"
+#line 2368 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
@@ -2344,33 +2373,41 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2348 "engines/director/lingo/lingo-gr.cpp"
+#line 2377 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
 #line 379 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2354 "engines/director/lingo/lingo-gr.cpp"
+#line 2383 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
 #line 381 "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"
+    break;
+
+  case 61:
+#line 384 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2362 "engines/director/lingo/lingo-gr.cpp"
+#line 2399 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 61:
-#line 384 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 387 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2370 "engines/director/lingo/lingo-gr.cpp"
+#line 2407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 387 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 390 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2379,457 +2416,465 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2383 "engines/director/lingo/lingo-gr.cpp"
+#line 2420 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 395 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 398 "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 2394 "engines/director/lingo/lingo-gr.cpp"
+#line 2431 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
-#line 401 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 404 "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 2404 "engines/director/lingo/lingo-gr.cpp"
+#line 2441 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 407 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 410 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2410 "engines/director/lingo/lingo-gr.cpp"
+#line 2447 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 408 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 411 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2416 "engines/director/lingo/lingo-gr.cpp"
+#line 2453 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 409 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 412 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2422 "engines/director/lingo/lingo-gr.cpp"
+#line 2459 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 410 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 413 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2428 "engines/director/lingo/lingo-gr.cpp"
+#line 2465 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 411 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 414 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2434 "engines/director/lingo/lingo-gr.cpp"
+#line 2471 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 412 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 415 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2440 "engines/director/lingo/lingo-gr.cpp"
+#line 2477 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 413 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 416 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2446 "engines/director/lingo/lingo-gr.cpp"
+#line 2483 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 414 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 417 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2452 "engines/director/lingo/lingo-gr.cpp"
+#line 2489 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 415 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 418 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2458 "engines/director/lingo/lingo-gr.cpp"
+#line 2495 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 416 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 419 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2464 "engines/director/lingo/lingo-gr.cpp"
+#line 2501 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 420 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2470 "engines/director/lingo/lingo-gr.cpp"
+#line 2507 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 418 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 421 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2476 "engines/director/lingo/lingo-gr.cpp"
+#line 2513 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 419 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 422 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2482 "engines/director/lingo/lingo-gr.cpp"
+#line 2519 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 420 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 423 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2488 "engines/director/lingo/lingo-gr.cpp"
+#line 2525 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 421 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 424 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2494 "engines/director/lingo/lingo-gr.cpp"
+#line 2531 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 422 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 425 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2500 "engines/director/lingo/lingo-gr.cpp"
+#line 2537 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 423 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 426 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2506 "engines/director/lingo/lingo-gr.cpp"
+#line 2543 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 424 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 427 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2512 "engines/director/lingo/lingo-gr.cpp"
+#line 2549 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 425 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 428 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); }
-#line 2518 "engines/director/lingo/lingo-gr.cpp"
+#line 2555 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 426 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 429 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2524 "engines/director/lingo/lingo-gr.cpp"
+#line 2561 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 427 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 430 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2530 "engines/director/lingo/lingo-gr.cpp"
+#line 2567 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 428 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 431 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2536 "engines/director/lingo/lingo-gr.cpp"
+#line 2573 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 429 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 432 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2542 "engines/director/lingo/lingo-gr.cpp"
+#line 2579 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 433 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2548 "engines/director/lingo/lingo-gr.cpp"
+#line 2585 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 431 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 434 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2554 "engines/director/lingo/lingo-gr.cpp"
+#line 2591 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 432 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 435 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2560 "engines/director/lingo/lingo-gr.cpp"
+#line 2597 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 433 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 436 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2566 "engines/director/lingo/lingo-gr.cpp"
+#line 2603 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 434 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 437 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2572 "engines/director/lingo/lingo-gr.cpp"
+#line 2609 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 435 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 438 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2578 "engines/director/lingo/lingo-gr.cpp"
+#line 2615 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 436 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 439 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2584 "engines/director/lingo/lingo-gr.cpp"
+#line 2621 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 437 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 440 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2590 "engines/director/lingo/lingo-gr.cpp"
+#line 2627 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 439 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 442 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2598 "engines/director/lingo/lingo-gr.cpp"
+#line 2635 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 443 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 446 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2604 "engines/director/lingo/lingo-gr.cpp"
+#line 2641 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 101:
-#line 446 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 449 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2610 "engines/director/lingo/lingo-gr.cpp"
+#line 2647 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 447 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 450 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 2616 "engines/director/lingo/lingo-gr.cpp"
+#line 2653 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 454 "engines/director/lingo/lingo-gr.y"
+                                                {
+		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
+		delete (yyvsp[-3].s); }
+#line 2661 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 108:
+#line 457 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2624 "engines/director/lingo/lingo-gr.cpp"
+#line 2669 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 460 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 2630 "engines/director/lingo/lingo-gr.cpp"
+#line 2675 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 455 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 461 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 2636 "engines/director/lingo/lingo-gr.cpp"
+#line 2681 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 457 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 463 "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 2645 "engines/director/lingo/lingo-gr.cpp"
+#line 2690 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 461 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 467 "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 2654 "engines/director/lingo/lingo-gr.cpp"
+#line 2699 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 466 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 472 "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 2663 "engines/director/lingo/lingo-gr.cpp"
+#line 2708 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 470 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 476 "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 2672 "engines/director/lingo/lingo-gr.cpp"
+#line 2717 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 475 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 481 "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 2681 "engines/director/lingo/lingo-gr.cpp"
+#line 2726 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 479 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 485 "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 2690 "engines/director/lingo/lingo-gr.cpp"
+#line 2735 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 497 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 2696 "engines/director/lingo/lingo-gr.cpp"
+#line 2741 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 498 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 2702 "engines/director/lingo/lingo-gr.cpp"
+#line 2747 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 493 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 499 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 2708 "engines/director/lingo/lingo-gr.cpp"
+#line 2753 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 494 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 500 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 2717 "engines/director/lingo/lingo-gr.cpp"
+#line 2762 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 504 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 2726 "engines/director/lingo/lingo-gr.cpp"
+#line 2771 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 502 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 508 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 2735 "engines/director/lingo/lingo-gr.cpp"
+#line 2780 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 516 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_playdone); }
-#line 2741 "engines/director/lingo/lingo-gr.cpp"
+#line 2786 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 511 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 517 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 2750 "engines/director/lingo/lingo-gr.cpp"
+#line 2795 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 515 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 521 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 2759 "engines/director/lingo/lingo-gr.cpp"
+#line 2804 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 525 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 2768 "engines/director/lingo/lingo-gr.cpp"
+#line 2813 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 523 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 529 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 2774 "engines/director/lingo/lingo-gr.cpp"
+#line 2819 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 523 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 529 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 2783 "engines/director/lingo/lingo-gr.cpp"
+#line 2828 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 553 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 559 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 2789 "engines/director/lingo/lingo-gr.cpp"
+#line 2834 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 553 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 559 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 2795 "engines/director/lingo/lingo-gr.cpp"
+#line 2840 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 554 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 560 "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 2806 "engines/director/lingo/lingo-gr.cpp"
+#line 2851 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 566 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 2812 "engines/director/lingo/lingo-gr.cpp"
+#line 2857 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 561 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 567 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 2818 "engines/director/lingo/lingo-gr.cpp"
+#line 2863 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 562 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 568 "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 2829 "engines/director/lingo/lingo-gr.cpp"
+#line 2874 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 568 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 574 "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));
@@ -2840,11 +2885,11 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 2844 "engines/director/lingo/lingo-gr.cpp"
+#line 2889 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 578 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 584 "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));
@@ -2852,65 +2897,65 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 2856 "engines/director/lingo/lingo-gr.cpp"
+#line 2901 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 586 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 592 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 2862 "engines/director/lingo/lingo-gr.cpp"
+#line 2907 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 586 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 592 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 2868 "engines/director/lingo/lingo-gr.cpp"
+#line 2913 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 588 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 594 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 2874 "engines/director/lingo/lingo-gr.cpp"
+#line 2919 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 595 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 2880 "engines/director/lingo/lingo-gr.cpp"
+#line 2925 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 590 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 596 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 2886 "engines/director/lingo/lingo-gr.cpp"
+#line 2931 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 591 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 597 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 2892 "engines/director/lingo/lingo-gr.cpp"
+#line 2937 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 594 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 600 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 2898 "engines/director/lingo/lingo-gr.cpp"
+#line 2943 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 595 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 601 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 2904 "engines/director/lingo/lingo-gr.cpp"
+#line 2949 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 597 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 603 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 2910 "engines/director/lingo/lingo-gr.cpp"
+#line 2955 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 599 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 605 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -2918,113 +2963,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 2922 "engines/director/lingo/lingo-gr.cpp"
+#line 2967 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 607 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 613 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 2928 "engines/director/lingo/lingo-gr.cpp"
+#line 2973 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 608 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 614 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 2934 "engines/director/lingo/lingo-gr.cpp"
+#line 2979 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 609 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 615 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 2940 "engines/director/lingo/lingo-gr.cpp"
+#line 2985 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 611 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 617 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 2946 "engines/director/lingo/lingo-gr.cpp"
+#line 2991 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 612 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 618 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 2952 "engines/director/lingo/lingo-gr.cpp"
+#line 2997 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 614 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 620 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2958 "engines/director/lingo/lingo-gr.cpp"
+#line 3003 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 616 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 622 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 2964 "engines/director/lingo/lingo-gr.cpp"
+#line 3009 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 617 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 623 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 2970 "engines/director/lingo/lingo-gr.cpp"
+#line 3015 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 624 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 2976 "engines/director/lingo/lingo-gr.cpp"
+#line 3021 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 619 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 625 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 2982 "engines/director/lingo/lingo-gr.cpp"
+#line 3027 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 621 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 627 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 2988 "engines/director/lingo/lingo-gr.cpp"
+#line 3033 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 622 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 628 "engines/director/lingo/lingo-gr.y"
                                     { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 2994 "engines/director/lingo/lingo-gr.cpp"
+#line 3039 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 624 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 630 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3000 "engines/director/lingo/lingo-gr.cpp"
+#line 3045 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 625 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 631 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3006 "engines/director/lingo/lingo-gr.cpp"
+#line 3051 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 627 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 633 "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 3015 "engines/director/lingo/lingo-gr.cpp"
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 631 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 637 "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 3024 "engines/director/lingo/lingo-gr.cpp"
+#line 3069 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3028 "engines/director/lingo/lingo-gr.cpp"
+#line 3073 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3256,5 +3301,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 637 "engines/director/lingo/lingo-gr.y"
+#line 643 "engines/director/lingo/lingo-gr.y"
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 9a064ca..4bdd1f4 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -378,6 +378,9 @@ simpleexpr: INT		{
 
 expr: simpleexpr { $$ = $simpleexpr; }
 	| reference
+	| FBLTIN '(' arglist ')' {
+		g_lingo->codeFunc($FBLTIN, $arglist);
+		delete $FBLTIN; }
 	| FBLTIN arglist	{
 		g_lingo->codeFunc($FBLTIN, $arglist);
 		delete $FBLTIN; }
@@ -448,6 +451,9 @@ proc: tPUT expr				{ g_lingo->code1(LC::c_printtop); }
 	| tGLOBAL globallist
 	| tPROPERTY propertylist
 	| tINSTANCE instancelist
+	| BLTIN '(' arglist ')'			{
+		g_lingo->codeFunc($BLTIN, $arglist);
+		delete $BLTIN; }
 	| BLTIN arglist			{
 		g_lingo->codeFunc($BLTIN, $arglist);
 		delete $BLTIN; }


Commit: bb6b94a474df0e4cc3142f9601d61dd819c24184
    https://github.com/scummvm/scummvm/commit/bb6b94a474df0e4cc3142f9601d61dd819c24184
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-15T21:07:32+01:00

Commit Message:
DIRECTOR: LINGO: Added test for builtins with parens

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


diff --git a/engines/director/lingo/tests/builtin.lingo b/engines/director/lingo/tests/builtin.lingo
index ee933dd..198efa8 100644
--- a/engines/director/lingo/tests/builtin.lingo
+++ b/engines/director/lingo/tests/builtin.lingo
@@ -33,3 +33,5 @@ put the width of cast 3
 unload
 unload ab
 unload ab, bc
+
+put framesToHMS(integer(field 3),30,false,false) into field 5




More information about the Scummvm-git-logs mailing list