[Scummvm-git-logs] scummvm master -> 799f99504971a4dedb7f18f771ebe9b9a8564424

sev- sev at scummvm.org
Wed Nov 27 17:28:19 UTC 2019


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

Summary:
799f995049 DIRECTOR: LINGO: Fix if statement parsing


Commit: 799f99504971a4dedb7f18f771ebe9b9a8564424
    https://github.com/scummvm/scummvm/commit/799f99504971a4dedb7f18f771ebe9b9a8564424
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-11-27T18:27:58+01:00

Commit Message:
DIRECTOR: LINGO: Fix if statement parsing

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 4cc746e..023ea72 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -265,7 +265,7 @@ extern int yyparse();
 using namespace Director;
 void yyerror(const char *s) {
 	g_lingo->_hadError = true;
-	warning("%s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
+	warning("LINGO: %s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
 }
 
 void checkEnd(Common::String *token, const char *expect, bool required) {
@@ -540,16 +540,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  127
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1834
+#define YYLAST   1804
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  106
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  46
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  168
+#define YYNRULES  169
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  365
+#define YYNSTATES  369
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -608,18 +608,18 @@ static const yytype_uint16 yyprhs[] =
       63,    68,    73,    79,    81,    83,    85,    87,    95,   106,
      118,   122,   129,   134,   141,   151,   161,   171,   178,   189,
      200,   201,   205,   208,   210,   213,   215,   222,   224,   231,
-     233,   237,   241,   244,   248,   250,   252,   253,   254,   256,
-     259,   262,   266,   268,   270,   272,   274,   276,   278,   280,
-     283,   286,   291,   296,   298,   300,   303,   305,   309,   313,
-     317,   321,   325,   329,   333,   337,   341,   345,   349,   353,
-     356,   360,   364,   368,   372,   375,   378,   382,   386,   391,
-     396,   401,   408,   413,   420,   425,   432,   437,   444,   447,
-     450,   452,   454,   457,   459,   462,   465,   468,   470,   473,
-     476,   478,   481,   486,   491,   498,   503,   506,   510,   512,
-     516,   518,   522,   524,   528,   531,   534,   537,   540,   544,
-     547,   550,   552,   556,   559,   562,   565,   569,   572,   573,
-     577,   578,   587,   590,   591,   600,   608,   615,   618,   619,
-     621,   625,   630,   631,   634,   635,   637,   641,   643
+     238,   240,   244,   248,   251,   255,   257,   259,   260,   261,
+     263,   266,   269,   273,   275,   277,   279,   281,   283,   285,
+     287,   290,   293,   298,   303,   305,   307,   310,   312,   316,
+     320,   324,   328,   332,   336,   340,   344,   348,   352,   356,
+     360,   363,   367,   371,   375,   379,   382,   385,   389,   393,
+     398,   403,   408,   415,   420,   427,   432,   439,   444,   451,
+     454,   457,   459,   461,   464,   466,   469,   472,   475,   477,
+     480,   483,   485,   488,   493,   498,   505,   510,   513,   517,
+     519,   523,   525,   529,   531,   535,   538,   541,   544,   547,
+     551,   554,   557,   559,   563,   566,   569,   572,   576,   579,
+     580,   584,   585,   594,   597,   598,   607,   615,   622,   625,
+     626,   628,   632,   637,   638,   641,   642,   644,   648,   650
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -648,48 +648,49 @@ static const yytype_int16 yyrhs[] =
       -1,   110,   127,   114,    -1,   118,   121,    -1,   121,    -1,
      119,   120,    -1,   120,    -1,   126,   122,    52,   127,   115,
      128,    -1,   119,    -1,   126,   122,    52,   127,   129,   128,
-      -1,   132,    -1,   132,    91,   132,    -1,    99,   122,   100,
-      -1,    50,    57,    -1,    50,    56,    28,    -1,    41,    -1,
-     111,    -1,    -1,    -1,   127,    -1,   129,   108,    -1,   129,
-     115,    -1,    55,    28,    52,    -1,    87,    -1,    12,    -1,
-      15,    -1,    31,    -1,    29,    -1,   133,    -1,    23,    -1,
-      24,   132,    -1,    25,   151,    -1,    25,    99,   151,   100,
-      -1,    28,    99,   150,   100,    -1,    28,    -1,    13,    -1,
-      14,   132,    -1,   113,    -1,   132,    93,   132,    -1,   132,
-      94,   132,    -1,   132,    95,   132,    -1,   132,    96,   132,
-      -1,   132,    74,   132,    -1,   132,   101,   132,    -1,   132,
-     102,   132,    -1,   132,    70,   132,    -1,   132,    65,   132,
-      -1,   132,    66,   132,    -1,   132,    71,   132,    -1,   132,
-      72,   132,    -1,    73,   132,    -1,   132,    92,   132,    -1,
-     132,    77,   132,    -1,   132,    78,   132,    -1,   132,    79,
-     132,    -1,    93,   132,    -1,    94,   132,    -1,    99,   132,
-     100,    -1,   103,   150,   104,    -1,    84,   132,    85,   132,
-      -1,    84,   132,    86,   132,    -1,    80,   132,    47,   132,
-      -1,    80,   132,    54,   132,    47,   132,    -1,    81,   132,
-      47,   132,    -1,    81,   132,    54,   132,    47,   132,    -1,
-      82,   132,    47,   132,    -1,    82,   132,    54,   132,    47,
-     132,    -1,    83,   132,    47,   132,    -1,    83,   132,    54,
-     132,    47,   132,    -1,    27,   132,    -1,    49,   132,    -1,
-     138,    -1,   141,    -1,    37,    50,    -1,    37,    -1,    39,
-     135,    -1,    88,   136,    -1,    64,   137,    -1,    17,    -1,
-      19,   132,    -1,    18,   132,    -1,    18,    -1,    20,   151,
-      -1,    20,    99,   151,   100,    -1,    90,    99,    28,   100,
-      -1,    90,    99,    28,   105,   150,   100,    -1,    61,   132,
-      56,   132,    -1,    61,   132,    -1,    21,    28,   150,    -1,
-      28,    -1,   135,   105,    28,    -1,    28,    -1,   136,   105,
-      28,    -1,    28,    -1,   137,   105,    28,    -1,    40,    43,
-      -1,    40,    46,    -1,    40,    48,    -1,    40,   139,    -1,
-      40,   139,   140,    -1,    40,   140,    -1,    38,   132,    -1,
-     132,    -1,    47,    45,   132,    -1,    45,   132,    -1,    62,
-      63,    -1,    62,   139,    -1,    62,   139,   140,    -1,    62,
-     140,    -1,    -1,    33,   142,   150,    -1,    -1,    44,    28,
-     144,   127,   147,   108,   148,   129,    -1,    59,    28,    -1,
-      -1,    60,    28,   145,   127,   147,   108,   148,   129,    -1,
-     146,   127,   147,   108,   148,   129,    32,    -1,   146,   127,
-     147,   108,   148,   129,    -1,    89,    28,    -1,    -1,    28,
-      -1,   147,   105,    28,    -1,   147,   108,   105,    28,    -1,
-      -1,    28,   151,    -1,    -1,   132,    -1,   150,   105,   132,
-      -1,   132,    -1,   151,   105,   132,    -1
+      -1,   126,   122,    53,   127,   129,   128,    -1,   132,    -1,
+     132,    91,   132,    -1,    99,   122,   100,    -1,    50,    57,
+      -1,    50,    56,    28,    -1,    41,    -1,   111,    -1,    -1,
+      -1,   127,    -1,   129,   108,    -1,   129,   115,    -1,    55,
+      28,    52,    -1,    87,    -1,    12,    -1,    15,    -1,    31,
+      -1,    29,    -1,   133,    -1,    23,    -1,    24,   132,    -1,
+      25,   151,    -1,    25,    99,   151,   100,    -1,    28,    99,
+     150,   100,    -1,    28,    -1,    13,    -1,    14,   132,    -1,
+     113,    -1,   132,    93,   132,    -1,   132,    94,   132,    -1,
+     132,    95,   132,    -1,   132,    96,   132,    -1,   132,    74,
+     132,    -1,   132,   101,   132,    -1,   132,   102,   132,    -1,
+     132,    70,   132,    -1,   132,    65,   132,    -1,   132,    66,
+     132,    -1,   132,    71,   132,    -1,   132,    72,   132,    -1,
+      73,   132,    -1,   132,    92,   132,    -1,   132,    77,   132,
+      -1,   132,    78,   132,    -1,   132,    79,   132,    -1,    93,
+     132,    -1,    94,   132,    -1,    99,   132,   100,    -1,   103,
+     150,   104,    -1,    84,   132,    85,   132,    -1,    84,   132,
+      86,   132,    -1,    80,   132,    47,   132,    -1,    80,   132,
+      54,   132,    47,   132,    -1,    81,   132,    47,   132,    -1,
+      81,   132,    54,   132,    47,   132,    -1,    82,   132,    47,
+     132,    -1,    82,   132,    54,   132,    47,   132,    -1,    83,
+     132,    47,   132,    -1,    83,   132,    54,   132,    47,   132,
+      -1,    27,   132,    -1,    49,   132,    -1,   138,    -1,   141,
+      -1,    37,    50,    -1,    37,    -1,    39,   135,    -1,    88,
+     136,    -1,    64,   137,    -1,    17,    -1,    19,   132,    -1,
+      18,   132,    -1,    18,    -1,    20,   151,    -1,    20,    99,
+     151,   100,    -1,    90,    99,    28,   100,    -1,    90,    99,
+      28,   105,   150,   100,    -1,    61,   132,    56,   132,    -1,
+      61,   132,    -1,    21,    28,   150,    -1,    28,    -1,   135,
+     105,    28,    -1,    28,    -1,   136,   105,    28,    -1,    28,
+      -1,   137,   105,    28,    -1,    40,    43,    -1,    40,    46,
+      -1,    40,    48,    -1,    40,   139,    -1,    40,   139,   140,
+      -1,    40,   140,    -1,    38,   132,    -1,   132,    -1,    47,
+      45,   132,    -1,    45,   132,    -1,    62,    63,    -1,    62,
+     139,    -1,    62,   139,   140,    -1,    62,   140,    -1,    -1,
+      33,   142,   150,    -1,    -1,    44,    28,   144,   127,   147,
+     108,   148,   129,    -1,    59,    28,    -1,    -1,    60,    28,
+     145,   127,   147,   108,   148,   129,    -1,   146,   127,   147,
+     108,   148,   129,    32,    -1,   146,   127,   147,   108,   148,
+     129,    -1,    89,    28,    -1,    -1,    28,    -1,   147,   105,
+      28,    -1,   147,   108,   105,    28,    -1,    -1,    28,   151,
+      -1,    -1,   132,    -1,   150,   105,   132,    -1,   132,    -1,
+     151,   105,   132,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -699,19 +700,19 @@ static const yytype_uint16 yyrline[] =
      146,   147,   148,   151,   157,   160,   161,   162,   168,   175,
      181,   187,   194,   202,   203,   206,   207,   212,   225,   243,
      257,   263,   266,   271,   281,   293,   305,   315,   325,   335,
-     347,   348,   351,   352,   355,   356,   359,   367,   368,   376,
-     377,   378,   381,   384,   391,   398,   406,   409,   412,   413,
-     414,   417,   423,   427,   430,   433,   436,   439,   440,   443,
-     446,   447,   448,   451,   455,   463,   469,   470,   471,   472,
-     473,   474,   475,   476,   477,   478,   479,   480,   481,   482,
-     483,   484,   485,   486,   487,   488,   489,   490,   491,   492,
-     493,   494,   495,   496,   497,   498,   499,   500,   503,   508,
-     509,   510,   511,   512,   513,   514,   515,   516,   519,   522,
-     525,   529,   530,   531,   532,   533,   534,   535,   538,   539,
-     542,   543,   546,   547,   558,   559,   560,   561,   565,   569,
-     575,   576,   579,   580,   583,   584,   588,   592,   596,   596,
-     626,   626,   631,   634,   634,   639,   647,   654,   656,   657,
-     658,   659,   662,   666,   674,   675,   676,   679,   680
+     347,   348,   351,   352,   355,   356,   359,   367,   368,   374,
+     382,   383,   384,   387,   390,   397,   404,   412,   415,   418,
+     419,   420,   423,   429,   433,   436,   439,   442,   445,   446,
+     449,   452,   453,   454,   457,   461,   469,   475,   476,   477,
+     478,   479,   480,   481,   482,   483,   484,   485,   486,   487,
+     488,   489,   490,   491,   492,   493,   494,   495,   496,   497,
+     498,   499,   500,   501,   502,   503,   504,   505,   506,   509,
+     514,   515,   516,   517,   518,   519,   520,   521,   522,   525,
+     528,   531,   535,   536,   537,   538,   539,   540,   541,   544,
+     545,   548,   549,   552,   553,   564,   565,   566,   567,   571,
+     575,   581,   582,   585,   586,   589,   590,   594,   598,   602,
+     602,   632,   632,   637,   640,   640,   645,   653,   660,   662,
+     663,   664,   665,   668,   672,   680,   681,   682,   685,   686
 };
 #endif
 
@@ -773,19 +774,19 @@ static const yytype_uint8 yyr1[] =
      112,   112,   112,   113,   113,   113,   113,   113,   113,   113,
      113,   113,   113,   114,   114,   115,   115,   115,   115,   115,
      115,   115,   115,   116,   116,   116,   116,   116,   116,   116,
-     117,   117,   118,   118,   119,   119,   120,   121,   121,   122,
-     122,   122,   123,   124,   125,   126,   127,   128,   129,   129,
-     129,   130,   131,   132,   132,   132,   132,   132,   132,   132,
+     117,   117,   118,   118,   119,   119,   120,   121,   121,   121,
+     122,   122,   122,   123,   124,   125,   126,   127,   128,   129,
+     129,   129,   130,   131,   132,   132,   132,   132,   132,   132,
      132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
      132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
      132,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     132,   132,   132,   132,   132,   132,   132,   132,   133,   134,
+     132,   132,   132,   132,   132,   132,   132,   132,   132,   133,
      134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   135,   135,
-     136,   136,   137,   137,   138,   138,   138,   138,   138,   138,
-     139,   139,   140,   140,   141,   141,   141,   141,   142,   141,
-     144,   143,   143,   145,   143,   143,   143,   146,   147,   147,
-     147,   147,   148,   149,   150,   150,   150,   151,   151
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   135,
+     135,   136,   136,   137,   137,   138,   138,   138,   138,   138,
+     138,   139,   139,   140,   140,   141,   141,   141,   141,   142,
+     141,   144,   143,   143,   145,   143,   143,   143,   146,   147,
+     147,   147,   147,   148,   149,   150,   150,   150,   151,   151
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -795,19 +796,19 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     4,     4,     4,     4,     4,     4,     5,
        4,     4,     5,     1,     1,     1,     1,     7,    10,    11,
        3,     6,     4,     6,     9,     9,     9,     6,    10,    10,
-       0,     3,     2,     1,     2,     1,     6,     1,     6,     1,
-       3,     3,     2,     3,     1,     1,     0,     0,     1,     2,
-       2,     3,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     4,     4,     1,     1,     2,     1,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     2,
-       3,     3,     3,     3,     2,     2,     3,     3,     4,     4,
-       4,     6,     4,     6,     4,     6,     4,     6,     2,     2,
-       1,     1,     2,     1,     2,     2,     2,     1,     2,     2,
-       1,     2,     4,     4,     6,     4,     2,     3,     1,     3,
-       1,     3,     1,     3,     2,     2,     2,     2,     3,     2,
-       2,     1,     3,     2,     2,     2,     3,     2,     0,     3,
-       0,     8,     2,     0,     8,     7,     6,     2,     0,     1,
-       3,     4,     0,     2,     0,     1,     3,     1,     3
+       0,     3,     2,     1,     2,     1,     6,     1,     6,     6,
+       1,     3,     3,     2,     3,     1,     1,     0,     0,     1,
+       2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
+       2,     2,     4,     4,     1,     1,     2,     1,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       2,     3,     3,     3,     3,     2,     2,     3,     3,     4,
+       4,     4,     6,     4,     6,     4,     6,     4,     6,     2,
+       2,     1,     1,     2,     1,     2,     2,     2,     1,     2,
+       2,     1,     2,     4,     4,     6,     4,     2,     3,     1,
+       3,     1,     3,     1,     3,     2,     2,     2,     2,     3,
+       2,     2,     1,     3,     2,     2,     2,     3,     2,     0,
+       3,     0,     8,     2,     0,     8,     7,     6,     2,     0,
+       1,     3,     4,     0,     2,     0,     1,     3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -815,43 +816,43 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    63,    74,     0,    64,   117,   120,     0,     0,
-       0,    68,     0,     0,     0,    73,    66,    65,   148,   113,
-       0,     0,    54,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    62,
-       0,     0,     0,     0,     0,     0,   164,     0,     3,    76,
-      25,    12,    26,     0,     0,     0,     0,     0,    23,    67,
-      24,   110,   111,    10,    56,    11,     5,     4,    73,     0,
-      75,   119,   118,     0,   167,   121,   164,    69,     0,    70,
-     108,   164,   163,   164,   112,   128,   114,     0,   134,     0,
-     135,     0,   136,   141,   137,   139,   150,   109,     0,    52,
-       0,     0,     0,     0,   152,   153,   126,   144,   145,   147,
-     132,   116,    89,     0,     0,     0,     0,     0,   130,   115,
-     157,     0,    94,    95,     0,   165,     0,     1,     9,     0,
-       0,     0,     0,    49,    57,     0,     0,     0,     0,     0,
+       0,     0,    64,    75,     0,    65,   118,   121,     0,     0,
+       0,    69,     0,     0,     0,    74,    67,    66,   149,   114,
+       0,     0,    55,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    63,
+       0,     0,     0,     0,     0,     0,   165,     0,     3,    77,
+      25,    12,    26,     0,     0,     0,     0,     0,    23,    68,
+      24,   111,   112,    10,    57,    11,     5,     4,    74,     0,
+      76,   120,   119,     0,   168,   122,   165,    70,     0,    71,
+     109,   165,   164,   165,   113,   129,   115,     0,   135,     0,
+     136,     0,   137,   142,   138,   140,   151,   110,     0,    53,
+       0,     0,     0,     0,   153,   154,   127,   145,   146,   148,
+     133,   117,    90,     0,     0,     0,     0,     0,   131,   116,
+     158,     0,    95,    96,     0,   166,     0,     1,     9,     0,
+       0,     0,     0,    50,    58,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   158,   164,     0,   167,     0,     0,   127,     0,
-     165,     0,   149,     0,   140,   143,     0,   138,    56,     0,
-       0,     0,    53,     0,     0,     0,     0,     0,    61,    56,
-       0,   146,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    96,    97,     0,     2,     0,
-      57,     0,     0,    56,     6,    56,     0,    30,     0,    56,
-      85,    86,    84,    87,    88,    81,    91,    92,    93,    90,
-      77,    78,    79,    80,    82,    83,   159,     0,   122,   168,
-      71,    72,   129,   142,   158,    13,    14,    15,    16,    21,
-      18,     0,     0,    20,    17,   158,   125,   133,   100,     0,
-     102,     0,   104,     0,   106,     0,    98,    99,   131,   123,
-     164,   166,    56,     0,    51,     0,    58,    57,    50,    32,
-      57,     0,   162,     0,    22,    19,     0,     0,     0,     0,
-       0,     0,    57,     0,     0,    57,    59,    60,    56,     0,
-     160,     0,    56,   162,   162,   101,   103,   105,   107,   124,
-       0,     0,    57,    37,    33,     7,    56,     0,    31,   161,
-     156,    56,    56,    27,    57,    56,     8,    56,    55,    57,
-      45,     0,    58,    57,    57,    47,    43,     0,   155,   151,
-     154,    56,    57,     0,    44,    40,     0,    57,     0,    42,
-       0,     0,    57,     0,    57,    56,    57,    56,    36,    34,
-      35,    56,     0,    28,    38,     0,    39,     0,    56,    29,
-      41,    57,    57,    46,    48
+       0,     0,   159,   165,     0,   168,     0,     0,   128,     0,
+     166,     0,   150,     0,   141,   144,     0,   139,    57,     0,
+       0,     0,    54,     0,     0,     0,     0,     0,    62,    57,
+       0,   147,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    97,    98,     0,     2,     0,
+      58,     0,     0,    57,     6,    57,     0,    30,     0,    57,
+      86,    87,    85,    88,    89,    82,    92,    93,    94,    91,
+      78,    79,    80,    81,    83,    84,   160,     0,   123,   169,
+      72,    73,   130,   143,   159,    13,    14,    15,    16,    21,
+      18,     0,     0,    20,    17,   159,   126,   134,   101,     0,
+     103,     0,   105,     0,   107,     0,    99,   100,   132,   124,
+     165,   167,    57,     0,    52,     0,    59,    58,    51,    32,
+      58,     0,   163,     0,    22,    19,     0,     0,     0,     0,
+       0,     0,    58,     0,     0,    58,    60,    61,    57,     0,
+     161,     0,    57,   163,   163,   102,   104,   106,   108,   125,
+       0,     0,    58,    37,    33,     7,    57,     0,    31,   162,
+     157,    57,    57,    27,    58,    57,     8,    57,    56,    58,
+      45,     0,    59,    58,    58,    47,    43,     0,   156,   152,
+     155,    57,    58,     0,    44,    40,     0,    58,     0,    42,
+       0,     0,    58,     0,    58,    57,    58,    57,    36,    34,
+      35,    57,    57,     0,    28,    38,     0,    39,     0,    57,
+      57,    29,    41,    58,    58,    58,    46,    48,    49
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -869,53 +870,53 @@ static const yytype_int16 yydefgoto[] =
 #define YYPACT_NINF -277
 static const yytype_int16 yypact[] =
 {
-     379,   -97,  -277,  -277,  1036,  -277,  -277,  1036,  1036,  1076,
-      14,  -277,  1036,  1149,  1036,  1189,  -277,  -277,  -277,    13,
-      43,   922,  -277,    69,  1036,    12,    48,    72,    75,    90,
-    1036,   963,    93,  1036,  1036,  1036,  1036,  1036,  1036,  -277,
-      94,    95,    30,  1036,  1036,  1036,  1036,     7,  -277,  -277,
-    -277,  -277,  -277,    35,    36,  1262,   839,  1036,  1732,  -277,
-    -277,  -277,  -277,  -277,  -277,  -277,  -277,  -277,    37,  1036,
-    1732,  1732,  1732,  1036,  1732,    50,  1036,  1732,  1036,    50,
-    1732,  1036,    50,  1036,  -277,  -277,    51,  1036,  -277,  1036,
-    -277,   112,  -277,  1732,    46,  -277,  -277,   155,   133,  -277,
-     -37,  1036,   -36,   110,  -277,  -277,  1567,  -277,    46,  -277,
-    -277,    58,   -49,  1303,  1336,  1369,  1402,  1600,  -277,    59,
-    -277,   137,   -49,   -49,  1666,  1732,     2,  -277,   471,  1262,
-    1036,  1262,    57,  1699,  -277,   815,  1036,  1036,  1036,  1036,
-    1036,  1036,  1036,  1036,  1036,  1036,  1036,  1036,  1036,  1036,
-    1036,  1036,   138,  1036,   155,  1666,   -33,  1036,    63,   -22,
-    1666,   -20,    63,   141,  1732,  1732,  1036,  -277,  -277,    84,
-    1036,  1036,  -277,  1036,  1036,  1534,  1036,  1036,  -277,  -277,
-    1036,  -277,   142,  1036,  1036,  1036,  1036,  1036,  1036,  1036,
-    1036,  1036,  1036,   145,   -13,  -277,  -277,  1036,  -277,    76,
-    1732,    79,  1633,  -277,  -277,  -277,  1036,  -277,  1036,  -277,
-     243,   243,   243,   -49,   -49,   -49,  1732,   243,   243,   282,
-      24,    24,   -49,   -49,  1732,  1732,  -277,   -32,  -277,  1732,
-    -277,  -277,  -277,  1732,   138,  -277,  -277,  1732,  1732,  1732,
-    1732,  1036,  1036,  1732,  1732,   138,  1732,  -277,  1732,  1231,
-    1732,  1435,  1732,  1468,  1732,  1501,  1732,  1732,  -277,  -277,
-    1036,  1732,  -277,    -5,  -277,   839,  -277,   655,  1732,  1732,
-     655,   152,    77,   -32,  1732,  1732,   -32,  1036,  1036,  1036,
-    1036,    -1,   655,   129,  1036,  -277,  -277,  -277,    -8,   163,
-    -277,   168,  -277,    77,    77,  1732,  1732,  1732,  1732,  -277,
-     167,  1036,  1732,   -10,  -277,  -277,  -277,   165,  -277,  -277,
-     563,  -277,  -277,  -277,  1732,  -277,  -277,  -277,  -277,   165,
-    -277,  1262,   839,   655,   165,   165,  -277,  1262,  -277,   655,
-     655,  -277,   655,   839,  -277,   144,   151,  -277,   172,  -277,
-     173,   154,   655,   176,  -277,  -277,  -277,  -277,  -277,  -277,
-    -277,  -277,   178,  -277,  -277,   839,  -277,   747,   747,  -277,
-    -277,  -277,   655,  -277,  -277
+     382,   -97,  -277,  -277,  1039,  -277,  -277,  1039,  1039,  1079,
+      14,  -277,  1039,  1152,  1039,  1192,  -277,  -277,  -277,    13,
+      43,   925,  -277,    69,  1039,    12,    48,    72,    75,    90,
+    1039,   966,    95,  1039,  1039,  1039,  1039,  1039,  1039,  -277,
+      99,   101,    35,  1039,  1039,  1039,  1039,     7,  -277,  -277,
+    -277,  -277,  -277,    37,    64,  1265,   842,  1039,  1702,  -277,
+    -277,  -277,  -277,  -277,  -277,  -277,  -277,  -277,    58,  1039,
+    1702,  1702,  1702,  1039,  1702,    51,  1039,  1702,  1039,    51,
+    1702,  1039,    51,  1039,  -277,  -277,    55,  1039,  -277,  1039,
+    -277,   118,  -277,  1702,    46,  -277,  -277,   155,   136,  -277,
+     -37,  1039,   -36,   113,  -277,  -277,   261,  -277,    46,  -277,
+    -277,    61,   -49,  1306,  1339,  1372,  1405,  1570,  -277,    65,
+    -277,   140,   -49,   -49,  1636,  1702,     2,  -277,   474,  1265,
+    1039,  1265,    57,  1669,  -277,   818,  1039,  1039,  1039,  1039,
+    1039,  1039,  1039,  1039,  1039,  1039,  1039,  1039,  1039,  1039,
+    1039,  1039,   141,  1039,   155,  1636,   -33,  1039,    68,   -22,
+    1636,   -20,    68,   148,  1702,  1702,  1039,  -277,  -277,    84,
+    1039,  1039,  -277,  1039,  1039,  1537,  1039,  1039,  -277,  -277,
+    1039,  -277,   151,  1039,  1039,  1039,  1039,  1039,  1039,  1039,
+    1039,  1039,  1039,   152,   -13,  -277,  -277,  1039,  -277,    82,
+    1702,    83,  1603,  -277,  -277,  -277,  1039,  -277,  1039,  -277,
+     984,   984,   984,   -49,   -49,   -49,  1702,   984,   984,  1097,
+      24,    24,   -49,   -49,  1702,  1702,  -277,   -32,  -277,  1702,
+    -277,  -277,  -277,  1702,   141,  -277,  -277,  1702,  1702,  1702,
+    1702,  1039,  1039,  1702,  1702,   141,  1702,  -277,  1702,  1234,
+    1702,  1438,  1702,  1471,  1702,  1504,  1702,  1702,  -277,  -277,
+    1039,  1702,  -277,    -5,  -277,   842,  -277,   658,  1702,  1702,
+     658,   167,    91,   -32,  1702,  1702,   -32,  1039,  1039,  1039,
+    1039,    -1,   658,   145,  1039,  -277,  -277,  -277,    -8,   169,
+    -277,   174,  -277,    91,    91,  1702,  1702,  1702,  1702,  -277,
+     171,  1039,  1702,   -10,  -277,  -277,  -277,   168,  -277,  -277,
+     566,  -277,  -277,  -277,  1702,  -277,  -277,  -277,  -277,   168,
+    -277,  1265,   842,   658,   168,   168,  -277,  1265,  -277,   658,
+     658,  -277,   658,   842,  -277,   147,   154,  -277,   176,  -277,
+     178,    63,   658,   179,  -277,  -277,  -277,  -277,  -277,  -277,
+    -277,  -277,  -277,   180,  -277,  -277,   842,  -277,   750,   750,
+    -277,  -277,  -277,  -277,   658,   658,  -277,  -277,  -277
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -277,  -277,    18,  -277,  -276,  -277,    83,  -277,   -50,     0,
-    -277,  -277,  -277,   -91,  -268,  -111,  -127,  -277,  -277,  -277,
-    -264,   -44,    28,  -198,  -277,  -277,     1,    45,  -277,  -277,
-    -277,  -277,  -277,   185,   -19,  -277,  -277,  -277,  -277,  -277,
-    -277,  -204,  -178,  -277,   -43,     8
+    -277,  -277,    18,  -277,  -276,  -277,    85,  -277,   -50,     0,
+    -277,  -277,  -277,   -89,  -268,  -108,  -127,  -277,  -277,  -277,
+    -264,   -44,    28,  -198,  -277,  -277,     1,    49,  -277,  -277,
+    -277,  -277,  -277,   188,   -19,  -277,  -277,  -277,  -277,  -277,
+    -277,  -204,  -172,  -277,   -43,     8
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -936,17 +937,17 @@ static const yytype_int16 yytable[] =
      231,   156,   160,   157,   125,   197,   159,   259,   164,   181,
      165,    89,   260,    91,   310,   139,   140,    96,   141,   299,
      103,   142,   175,   104,   197,    66,   196,   197,   323,   203,
-     204,    14,   235,   329,   330,   311,   312,   332,   105,   148,
-     149,   110,   118,   120,   234,   150,   151,   130,    51,   121,
-     133,   200,   202,   342,   129,   245,   153,   210,   211,   212,
+     204,    14,   235,   329,   330,   351,   352,   332,   105,   148,
+     149,   311,   312,   110,   234,   150,   151,   118,    51,   120,
+     133,   200,   202,   342,   121,   245,   129,   210,   211,   212,
      213,   214,   215,   216,   217,   218,   219,   220,   221,   222,
-     223,   224,   225,   209,   125,   157,   163,   166,   229,   265,
-     362,   172,   178,   182,   193,   194,   226,   233,   197,   232,
-     247,   237,   238,   258,   239,   240,   262,   243,   244,   264,
-     290,   246,   291,   301,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   336,   308,   309,   169,   261,   313,
-     341,   316,   305,   347,   349,   350,   351,   268,   353,   269,
-     359,   198,   319,   339,   236,   285,   108,   281,     0,     0,
+     223,   224,   225,   209,   125,   130,   157,   153,   229,   265,
+     163,   364,   365,   166,   172,   178,   182,   233,   194,   226,
+     193,   237,   238,   197,   239,   240,   232,   243,   244,   247,
+     258,   246,   262,   264,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   336,   290,   291,   169,   261,   301,
+     341,   308,   309,   313,   316,   305,   347,   268,   349,   269,
+     350,   354,   361,   198,   319,   285,   339,   281,   236,   108,
      136,   137,     0,     0,     0,   138,   139,   140,   263,   141,
      170,   171,   142,   143,   144,     0,     0,     0,     0,     0,
        0,     0,   274,   275,   307,   272,     0,   145,   146,   147,
@@ -955,142 +956,139 @@ static const yytype_int16 yytable[] =
        0,     0,   337,   333,     0,     0,     0,     0,   295,   296,
      297,   298,     0,   344,     0,   302,     0,     0,     0,     0,
        0,   293,     0,     0,   294,   288,     0,     0,   289,     0,
-       0,   355,   314,   357,     0,   360,     0,   358,     0,     0,
-     300,     0,     0,   303,   139,   140,     0,   141,     0,     0,
-     142,     0,   133,     0,     0,     0,     0,     0,   133,     0,
-     315,     0,     0,     0,     0,   145,   146,   147,   148,   149,
-       0,     0,   331,     0,   150,   151,     0,   335,     0,     0,
-       0,   338,   340,   139,   140,     0,   141,   361,   361,   142,
-     343,     0,     0,     0,     0,   348,     0,     0,     0,     0,
-     352,     0,   354,     0,   356,   146,   147,   148,   149,    -9,
-       1,     0,     0,   150,   151,     0,     0,     0,     0,   363,
-     364,     2,     3,     4,     5,     0,     6,     7,     8,     9,
-      10,     0,    11,    12,    13,     0,    14,    15,    16,     0,
-      17,     0,    18,     0,     0,     0,    19,     0,    20,    21,
-      22,     0,     0,    23,     0,     0,     0,     0,    24,    25,
-      26,     0,     0,     0,    27,     0,     0,     0,    28,    29,
-      30,    31,     0,    32,     0,     0,     0,     0,     0,     0,
-       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
-      35,    36,    37,    38,     0,     0,    39,    40,    41,    42,
-       0,     0,    43,    44,     0,     0,     0,    -9,    45,     0,
-       0,     0,    46,     2,     3,     4,     5,     0,     6,     7,
-       8,     9,    10,     0,    11,    12,    13,     0,    14,    15,
-      16,     0,    17,     0,    18,     0,     0,     0,    19,     0,
-      20,    21,    22,     0,     0,    23,     0,     0,     0,     0,
-      24,    25,    26,     0,     0,     0,    27,     0,     0,     0,
-      28,    29,    30,    31,     0,    32,     0,     0,     0,     0,
-       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
-       0,    34,    35,    36,    37,    38,     0,     0,    39,    40,
-      41,    42,     0,     0,    43,    44,     0,     0,     0,     0,
-      45,     0,     0,     0,    46,     2,     3,     4,     5,     0,
-       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
-      14,    68,    16,     0,    17,   328,    18,     0,     0,     0,
-      19,     0,    20,    21,    22,     0,     0,     0,     0,     0,
-       0,     0,    24,    25,    26,     0,     0,     0,    27,     0,
-       0,     0,     0,     0,    30,    31,     0,    32,     0,     0,
-       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
-       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
-      39,    40,     0,    42,     0,     0,    43,    44,     0,     0,
-       0,    66,    45,     0,     0,     0,    46,     2,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,     0,    14,    68,    16,     0,    17,     0,    18,     0,
-       0,     0,    19,     0,    20,    21,    22,     0,     0,     0,
-       0,     0,     0,     0,    24,    25,    26,     0,     0,     0,
-      27,     0,     0,     0,     0,     0,    30,    31,     0,    32,
-       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,    39,    40,     0,    42,     0,     0,    43,    44,
-       0,     0,     0,    66,    45,     0,     0,     0,    46,     2,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
-      11,    12,    13,     0,    14,    68,    16,     0,    17,     0,
-      18,     0,     0,     0,    19,     0,    20,    21,    22,     0,
-       0,     0,     0,     0,     0,     0,    24,    25,    26,     0,
-       0,     0,    27,     0,     0,     0,     0,     0,    30,    31,
-       0,    32,     0,     0,     0,     0,     0,     0,     0,     0,
-      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
-      37,    38,     0,     0,    39,    40,     0,    42,     0,     0,
-      43,    44,     0,     0,     0,     0,    45,     0,     0,     0,
-      46,     2,     3,     4,     5,     0,     6,     7,     8,     9,
-      10,     0,    11,    12,    13,     0,    14,    68,    16,   208,
-      17,     0,    18,     0,     0,     0,    19,     0,    20,    21,
-     136,   137,     0,     0,     0,   138,   139,   140,    24,   141,
-      26,     0,   142,   143,   144,     0,     0,     0,     0,     0,
-      30,    31,     0,    32,     0,     0,     0,   145,   146,   147,
-     148,   149,    33,    66,     0,     0,   150,   151,     0,    34,
-      35,    36,    37,    38,     0,     0,     0,    40,     0,    42,
-       0,     0,    43,    44,     2,     3,     4,     5,    45,     0,
-       0,     0,    46,     0,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,     0,     0,     0,     0,     0,     0,
-      87,     0,     0,     0,     0,    88,     0,    89,    90,    91,
-      92,    69,     0,    26,     0,     2,     3,     4,     5,     0,
-       0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
-      14,    68,    16,     0,    17,    33,     0,     0,     0,     0,
-       0,    87,    34,    35,    36,    37,    38,     0,    89,     0,
-      91,     0,    69,     0,    26,    43,    44,     0,     0,     0,
-       0,    45,     0,     0,     0,    46,   107,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
-       0,     0,     0,    34,    35,    36,    37,    38,     2,     3,
-       4,     5,     0,     0,     0,     0,    43,    44,     0,    11,
-      12,    13,    45,    14,    68,    16,    46,    17,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    69,     0,    26,     2,     3,
-       4,     5,     0,     0,     0,     0,     0,     0,     0,    11,
-      12,    13,     0,    14,    68,    16,     0,    17,     0,    33,
+       0,   356,   314,   358,     0,     0,   362,   359,   360,     0,
+     300,     0,     0,   303,     0,     0,     0,   180,     0,     0,
+       0,     0,   133,     0,     0,     0,   136,   137,   133,     0,
+     315,   138,   139,   140,     0,   141,     0,     0,   142,   143,
+     144,     0,   331,     0,     0,     0,     0,   335,     0,     0,
+       0,   338,   340,   145,   146,   147,   148,   149,   363,   363,
+     343,     0,   150,   151,     0,   348,     0,     0,     0,     0,
+     353,     0,   355,     0,   357,     0,     0,     0,     0,     0,
+       0,     0,    -9,     1,     0,     0,     0,     0,     0,     0,
+       0,   366,   367,   368,     2,     3,     4,     5,     0,     6,
+       7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
+      15,    16,     0,    17,     0,    18,     0,     0,     0,    19,
+       0,    20,    21,    22,     0,     0,    23,     0,     0,     0,
+       0,    24,    25,    26,     0,     0,     0,    27,     0,     0,
+       0,    28,    29,    30,    31,     0,    32,     0,     0,     0,
+       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
+      40,    41,    42,     0,     0,    43,    44,     0,     0,     0,
+      -9,    45,     0,     0,     0,    46,     2,     3,     4,     5,
+       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
+       0,    14,    15,    16,     0,    17,     0,    18,     0,     0,
+       0,    19,     0,    20,    21,    22,     0,     0,    23,     0,
+       0,     0,     0,    24,    25,    26,     0,     0,     0,    27,
+       0,     0,     0,    28,    29,    30,    31,     0,    32,     0,
+       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
+       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
+       0,    39,    40,    41,    42,     0,     0,    43,    44,     0,
+       0,     0,     0,    45,     0,     0,     0,    46,     2,     3,
+       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
+      12,    13,     0,    14,    68,    16,     0,    17,   328,    18,
+       0,     0,     0,    19,     0,    20,    21,    22,     0,     0,
+       0,     0,     0,     0,     0,    24,    25,    26,     0,     0,
+       0,    27,     0,     0,     0,     0,     0,    30,    31,     0,
+      32,     0,     0,     0,     0,     0,     0,     0,     0,    33,
        0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
-      38,     0,     0,     0,     0,    69,     0,    26,     0,    43,
-      44,     0,     0,     0,     0,    45,     0,     0,     0,    46,
+      38,     0,     0,    39,    40,     0,    42,     0,     0,    43,
+      44,     0,     0,     0,    66,    45,     0,     0,     0,    46,
+       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
+       0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
+       0,    18,     0,     0,     0,    19,     0,    20,    21,    22,
+       0,     0,     0,     0,     0,     0,     0,    24,    25,    26,
+       0,     0,     0,    27,     0,     0,     0,     0,     0,    30,
+      31,     0,    32,     0,     0,     0,     0,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
+      36,    37,    38,     0,     0,    39,    40,     0,    42,     0,
+       0,    43,    44,     0,     0,     0,    66,    45,     0,     0,
+       0,    46,     2,     3,     4,     5,     0,     6,     7,     8,
+       9,    10,     0,    11,    12,    13,     0,    14,    68,    16,
+       0,    17,     0,    18,     0,     0,     0,    19,     0,    20,
+      21,    22,     0,     0,     0,     0,     0,     0,     0,    24,
+      25,    26,     0,     0,     0,    27,     0,     0,     0,     0,
+       0,    30,    31,     0,    32,     0,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
+      34,    35,    36,    37,    38,     0,     0,    39,    40,     0,
+      42,     0,     0,    43,    44,     0,     0,     0,     0,    45,
+       0,     0,     0,    46,     2,     3,     4,     5,     0,     6,
+       7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
+      68,    16,   208,    17,     0,    18,     0,     0,     0,    19,
+       0,    20,    21,   136,   137,     0,     0,     0,   138,   139,
+     140,    24,   141,    26,     0,   142,   143,   144,     0,     0,
+       0,     0,     0,    30,    31,     0,    32,     0,     0,     0,
+     145,   146,   147,   148,   149,    33,    66,     0,     0,   150,
+     151,     0,    34,    35,    36,    37,    38,     0,     0,     0,
+      40,     0,    42,     0,     0,    43,    44,     2,     3,     4,
+       5,    45,     0,     0,     0,    46,     0,     0,    11,    12,
+      13,     0,    14,    68,    16,     0,    17,     0,     0,     0,
+       0,     0,     0,    87,     0,     0,     0,     0,    88,     0,
+      89,    90,    91,    92,    69,     0,    26,     0,     2,     3,
+       4,     5,     0,     0,     0,     0,     0,     0,     0,    11,
+      12,    13,     0,    14,    68,    16,     0,    17,    33,     0,
+       0,     0,     0,     0,    87,    34,    35,    36,    37,    38,
+       0,    89,     0,    91,     0,    69,     0,    26,    43,    44,
+       0,     0,     0,     0,    45,     0,     0,     0,    46,   107,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
        0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
-      38,     2,     3,     4,     5,     0,     0,     0,     0,    43,
-      44,     0,    11,    12,    13,    73,    14,    68,    16,    46,
-      17,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    69,     0,
+      38,     2,     3,     4,     5,   139,   140,     0,   141,    43,
+      44,   142,    11,    12,    13,    45,    14,    68,    16,    46,
+      17,     0,     0,     0,     0,     0,   145,   146,   147,   148,
+     149,     0,     0,     0,     0,   150,   151,     0,    69,     0,
       26,     2,     3,     4,     5,     0,     0,     0,     0,     0,
        0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
       17,     0,    33,     0,     0,     0,     0,     0,     0,    34,
       35,    36,    37,    38,     0,     0,     0,     0,    69,     0,
-      26,     0,    43,    44,     0,     0,     0,     0,    78,     0,
+      26,     0,    43,    44,     0,     0,     0,     0,    45,     0,
        0,     0,    46,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
-      35,    36,    37,    38,     2,     3,     4,     5,   277,     0,
-       0,     0,    43,    44,     0,    11,    12,    13,    81,    14,
-      68,    16,    46,    17,     0,     0,   136,   137,     0,     0,
-       0,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,    69,     0,    26,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   145,   146,   147,   148,   149,     0,     0,
-       0,     0,   150,   151,     0,    33,     0,     0,     0,     0,
+      35,    36,    37,    38,     2,     3,     4,     5,   139,   140,
+       0,   141,    43,    44,   142,    11,    12,    13,    73,    14,
+      68,    16,    46,    17,     0,     0,     0,     0,     0,     0,
+     146,   147,   148,   149,     0,     0,     0,     0,   150,   151,
+       0,    69,     0,    26,     2,     3,     4,     5,     0,     0,
+       0,     0,     0,     0,     0,    11,    12,    13,     0,    14,
+      68,    16,     0,    17,     0,    33,     0,     0,     0,     0,
        0,     0,    34,    35,    36,    37,    38,     0,     0,     0,
-     183,     0,     0,     0,     0,    43,    44,   184,     0,     0,
-       0,   131,     0,     0,     0,    46,     0,     0,   136,   137,
-       0,     0,     0,   138,   139,   140,     0,   141,     0,     0,
-     142,   143,   144,   185,     0,     0,     0,     0,     0,     0,
-     186,     0,     0,     0,     0,   145,   146,   147,   148,   149,
-       0,   136,   137,     0,   150,   151,   138,   139,   140,     0,
-     141,     0,     0,   142,   143,   144,   187,     0,     0,     0,
-       0,     0,     0,   188,     0,     0,     0,     0,   145,   146,
+       0,    69,     0,    26,     0,    43,    44,     0,     0,     0,
+       0,    78,     0,     0,     0,    46,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+       0,     0,    34,    35,    36,    37,    38,     2,     3,     4,
+       5,   277,     0,     0,     0,    43,    44,     0,    11,    12,
+      13,    81,    14,    68,    16,    46,    17,     0,     0,   136,
+     137,     0,     0,     0,   138,   139,   140,     0,   141,     0,
+       0,   142,   143,   144,    69,     0,    26,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   145,   146,   147,   148,
+     149,     0,     0,     0,     0,   150,   151,     0,    33,     0,
+       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
+       0,     0,     0,   183,     0,     0,     0,     0,    43,    44,
+     184,     0,     0,     0,   131,     0,     0,     0,    46,     0,
+       0,   136,   137,     0,     0,     0,   138,   139,   140,     0,
+     141,     0,     0,   142,   143,   144,   185,     0,     0,     0,
+       0,     0,     0,   186,     0,     0,     0,     0,   145,   146,
      147,   148,   149,     0,   136,   137,     0,   150,   151,   138,
-     139,   140,     0,   141,     0,     0,   142,   143,   144,   189,
-       0,     0,     0,     0,     0,     0,   190,     0,     0,     0,
+     139,   140,     0,   141,     0,     0,   142,   143,   144,   187,
+       0,     0,     0,     0,     0,     0,   188,     0,     0,     0,
        0,   145,   146,   147,   148,   149,     0,   136,   137,     0,
      150,   151,   138,   139,   140,     0,   141,     0,     0,   142,
-     143,   144,   278,     0,     0,     0,     0,     0,     0,     0,
+     143,   144,   189,     0,     0,     0,     0,     0,     0,   190,
        0,     0,     0,     0,   145,   146,   147,   148,   149,     0,
      136,   137,     0,   150,   151,   138,   139,   140,     0,   141,
-       0,     0,   142,   143,   144,   279,     0,     0,     0,     0,
+       0,     0,   142,   143,   144,   278,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   145,   146,   147,
      148,   149,     0,   136,   137,     0,   150,   151,   138,   139,
-     140,     0,   141,     0,     0,   142,   143,   144,   280,     0,
+     140,     0,   141,     0,     0,   142,   143,   144,   279,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      145,   146,   147,   148,   149,     0,   136,   137,     0,   150,
      151,   138,   139,   140,     0,   141,     0,     0,   142,   143,
-     144,     0,     0,     0,     0,     0,     0,     0,   241,     0,
+     144,   280,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   145,   146,   147,   148,   149,     0,   136,
      137,     0,   150,   151,   138,   139,   140,     0,   141,     0,
        0,   142,   143,   144,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   180,     0,   242,   145,   146,   147,   148,
+       0,   241,     0,     0,     0,     0,   145,   146,   147,   148,
      149,     0,   136,   137,     0,   150,   151,   138,   139,   140,
        0,   141,     0,     0,   142,   143,   144,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
+       0,     0,     0,     0,     0,     0,     0,     0,   242,   145,
      146,   147,   148,   149,     0,   136,   137,     0,   150,   151,
      138,   139,   140,     0,   141,     0,     0,   142,   143,   144,
        0,     0,     0,     0,     0,   191,   192,     0,     0,     0,
@@ -1124,17 +1122,17 @@ static const yytype_int16 yycheck[] =
      100,    73,    81,   105,    83,   105,    78,   100,    87,   108,
       89,    45,   105,    47,   292,    71,    72,    28,    74,   100,
       28,    77,   101,    28,   105,    98,   104,   105,   306,    52,
-      53,    27,    28,   311,   312,   293,   294,   315,    28,    95,
-      96,    28,    28,    28,   168,   101,   102,    91,   128,    99,
+      53,    27,    28,   311,   312,    52,    53,   315,    28,    95,
+      96,   293,   294,    28,   168,   101,   102,    28,   128,    28,
      129,   130,   131,   331,    99,   179,    99,   136,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     149,   150,   151,   135,   153,   105,   105,    45,   157,   203,
-     358,    28,    52,   105,   105,    28,    28,   166,   105,    28,
-      28,   170,   171,    28,   173,   174,   100,   176,   177,   100,
-      28,   180,   105,    54,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   321,    32,    28,    42,   197,    32,
-     327,    36,    58,    52,    32,    32,    52,   206,    32,   208,
-      32,   128,   303,   324,   169,   265,    31,   260,    -1,    -1,
+     149,   150,   151,   135,   153,    91,   105,    99,   157,   203,
+     105,   359,   360,    45,    28,    52,   105,   166,    28,    28,
+     105,   170,   171,   105,   173,   174,    28,   176,   177,    28,
+      28,   180,   100,   100,   183,   184,   185,   186,   187,   188,
+     189,   190,   191,   192,   321,    28,   105,    42,   197,    54,
+     327,    32,    28,    32,    36,    58,    52,   206,    32,   208,
+      32,    32,    32,   128,   303,   265,   324,   260,   169,    31,
       65,    66,    -1,    -1,    -1,    70,    71,    72,   200,    74,
       75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   241,   242,   288,   227,    -1,    92,    93,    94,
@@ -1143,96 +1141,85 @@ static const yytype_int16 yycheck[] =
       -1,    -1,   322,   317,    -1,    -1,    -1,    -1,   277,   278,
      279,   280,    -1,   333,    -1,   284,    -1,    -1,    -1,    -1,
       -1,   273,    -1,    -1,   276,   267,    -1,    -1,   270,    -1,
-      -1,   345,   301,   347,    -1,   355,    -1,   351,    -1,    -1,
-     282,    -1,    -1,   285,    71,    72,    -1,    74,    -1,    -1,
-      77,    -1,   321,    -1,    -1,    -1,    -1,    -1,   327,    -1,
-     302,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    -1,   314,    -1,   101,   102,    -1,   319,    -1,    -1,
-      -1,   323,   324,    71,    72,    -1,    74,   357,   358,    77,
-     332,    -1,    -1,    -1,    -1,   337,    -1,    -1,    -1,    -1,
-     342,    -1,   344,    -1,   346,    93,    94,    95,    96,     0,
-       1,    -1,    -1,   101,   102,    -1,    -1,    -1,    -1,   361,
-     362,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
-      21,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
-      31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,
-      41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    49,    50,
-      51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,
-      61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
-      81,    82,    83,    84,    -1,    -1,    87,    88,    89,    90,
-      -1,    -1,    93,    94,    -1,    -1,    -1,    98,    99,    -1,
-      -1,    -1,   103,    12,    13,    14,    15,    -1,    17,    18,
-      19,    20,    21,    -1,    23,    24,    25,    -1,    27,    28,
-      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,
-      39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,
-      49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,
-      59,    60,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,
-      -1,    80,    81,    82,    83,    84,    -1,    -1,    87,    88,
-      89,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,
-      99,    -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,
-      17,    18,    19,    20,    21,    -1,    23,    24,    25,    -1,
-      27,    28,    29,    -1,    31,    32,    33,    -1,    -1,    -1,
-      37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,
-      -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
-      -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
-      87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,
-      -1,    98,    99,    -1,    -1,    -1,   103,    12,    13,    14,
-      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
-      25,    -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,
-      -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,
-      55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,
-      -1,    -1,    -1,    98,    99,    -1,    -1,    -1,   103,    12,
-      13,    14,    15,    -1,    17,    18,    19,    20,    21,    -1,
-      23,    24,    25,    -1,    27,    28,    29,    -1,    31,    -1,
-      33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,
-      -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,
-      -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,
-      83,    84,    -1,    -1,    87,    88,    -1,    90,    -1,    -1,
-      93,    94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,
-     103,    12,    13,    14,    15,    -1,    17,    18,    19,    20,
-      21,    -1,    23,    24,    25,    -1,    27,    28,    29,    54,
-      31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,
-      65,    66,    -1,    -1,    -1,    70,    71,    72,    49,    74,
-      51,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      61,    62,    -1,    64,    -1,    -1,    -1,    92,    93,    94,
-      95,    96,    73,    98,    -1,    -1,   101,   102,    -1,    80,
-      81,    82,    83,    84,    -1,    -1,    -1,    88,    -1,    90,
-      -1,    -1,    93,    94,    12,    13,    14,    15,    99,    -1,
-      -1,    -1,   103,    -1,    -1,    23,    24,    25,    -1,    27,
-      28,    29,    -1,    31,    -1,    -1,    -1,    -1,    -1,    -1,
-      38,    -1,    -1,    -1,    -1,    43,    -1,    45,    46,    47,
-      48,    49,    -1,    51,    -1,    12,    13,    14,    15,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,
-      27,    28,    29,    -1,    31,    73,    -1,    -1,    -1,    -1,
-      -1,    38,    80,    81,    82,    83,    84,    -1,    45,    -1,
-      47,    -1,    49,    -1,    51,    93,    94,    -1,    -1,    -1,
-      -1,    99,    -1,    -1,    -1,   103,    63,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
-      -1,    -1,    -1,    80,    81,    82,    83,    84,    12,    13,
-      14,    15,    -1,    -1,    -1,    -1,    93,    94,    -1,    23,
-      24,    25,    99,    27,    28,    29,   103,    31,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    49,    -1,    51,    12,    13,
-      14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,
-      24,    25,    -1,    27,    28,    29,    -1,    31,    -1,    73,
+      -1,   345,   301,   347,    -1,    -1,   356,   351,   352,    -1,
+     282,    -1,    -1,   285,    -1,    -1,    -1,    56,    -1,    -1,
+      -1,    -1,   321,    -1,    -1,    -1,    65,    66,   327,    -1,
+     302,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    -1,   314,    -1,    -1,    -1,    -1,   319,    -1,    -1,
+      -1,   323,   324,    92,    93,    94,    95,    96,   358,   359,
+     332,    -1,   101,   102,    -1,   337,    -1,    -1,    -1,    -1,
+     342,    -1,   344,    -1,   346,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   363,   364,   365,    12,    13,    14,    15,    -1,    17,
+      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
+      28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
+      -1,    39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,
+      -1,    49,    50,    51,    -1,    -1,    -1,    55,    -1,    -1,
+      -1,    59,    60,    61,    62,    -1,    64,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
+      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
+      88,    89,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
+      98,    99,    -1,    -1,    -1,   103,    12,    13,    14,    15,
+      -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
+      -1,    27,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
+      -1,    37,    -1,    39,    40,    41,    -1,    -1,    44,    -1,
+      -1,    -1,    -1,    49,    50,    51,    -1,    -1,    -1,    55,
+      -1,    -1,    -1,    59,    60,    61,    62,    -1,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    87,    88,    89,    90,    -1,    -1,    93,    94,    -1,
+      -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    12,    13,
+      14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
+      24,    25,    -1,    27,    28,    29,    -1,    31,    32,    33,
+      -1,    -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,
+      -1,    55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
+      64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
       -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    -1,    -1,    -1,    -1,    49,    -1,    51,    -1,    93,
-      94,    -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,
+      84,    -1,    -1,    87,    88,    -1,    90,    -1,    -1,    93,
+      94,    -1,    -1,    -1,    98,    99,    -1,    -1,    -1,   103,
+      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
+      -1,    23,    24,    25,    -1,    27,    28,    29,    -1,    31,
+      -1,    33,    -1,    -1,    -1,    37,    -1,    39,    40,    41,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,
+      -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    61,
+      62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
+      82,    83,    84,    -1,    -1,    87,    88,    -1,    90,    -1,
+      -1,    93,    94,    -1,    -1,    -1,    98,    99,    -1,    -1,
+      -1,   103,    12,    13,    14,    15,    -1,    17,    18,    19,
+      20,    21,    -1,    23,    24,    25,    -1,    27,    28,    29,
+      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,
+      40,    41,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
+      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    -1,
+      -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    -1,
+      90,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,
+      -1,    -1,    -1,   103,    12,    13,    14,    15,    -1,    17,
+      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    27,
+      28,    29,    54,    31,    -1,    33,    -1,    -1,    -1,    37,
+      -1,    39,    40,    65,    66,    -1,    -1,    -1,    70,    71,
+      72,    49,    74,    51,    -1,    77,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,
+      92,    93,    94,    95,    96,    73,    98,    -1,    -1,   101,
+     102,    -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,
+      88,    -1,    90,    -1,    -1,    93,    94,    12,    13,    14,
+      15,    99,    -1,    -1,    -1,   103,    -1,    -1,    23,    24,
+      25,    -1,    27,    28,    29,    -1,    31,    -1,    -1,    -1,
+      -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,    43,    -1,
+      45,    46,    47,    48,    49,    -1,    51,    -1,    12,    13,
+      14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,
+      24,    25,    -1,    27,    28,    29,    -1,    31,    73,    -1,
+      -1,    -1,    -1,    -1,    38,    80,    81,    82,    83,    84,
+      -1,    45,    -1,    47,    -1,    49,    -1,    51,    93,    94,
+      -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    63,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,
       -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    93,
-      94,    -1,    23,    24,    25,    99,    27,    28,    29,   103,
-      31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    -1,
+      84,    12,    13,    14,    15,    71,    72,    -1,    74,    93,
+      94,    77,    23,    24,    25,    99,    27,    28,    29,   103,
+      31,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
+      96,    -1,    -1,    -1,    -1,   101,   102,    -1,    49,    -1,
       51,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    23,    24,    25,    -1,    27,    28,    29,    -1,
       31,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
@@ -1240,20 +1227,28 @@ static const yytype_int16 yycheck[] =
       51,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,    -1,
       -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,
-      81,    82,    83,    84,    12,    13,    14,    15,    47,    -1,
-      -1,    -1,    93,    94,    -1,    23,    24,    25,    99,    27,
-      28,    29,   103,    31,    -1,    -1,    65,    66,    -1,    -1,
-      -1,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    49,    -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    -1,
-      -1,    -1,   101,   102,    -1,    73,    -1,    -1,    -1,    -1,
+      81,    82,    83,    84,    12,    13,    14,    15,    71,    72,
+      -1,    74,    93,    94,    77,    23,    24,    25,    99,    27,
+      28,    29,   103,    31,    -1,    -1,    -1,    -1,    -1,    -1,
+      93,    94,    95,    96,    -1,    -1,    -1,    -1,   101,   102,
+      -1,    49,    -1,    51,    12,    13,    14,    15,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,    27,
+      28,    29,    -1,    31,    -1,    73,    -1,    -1,    -1,    -1,
       -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,
-      47,    -1,    -1,    -1,    -1,    93,    94,    54,    -1,    -1,
-      -1,    99,    -1,    -1,    -1,   103,    -1,    -1,    65,    66,
-      -1,    -1,    -1,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,
-      54,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    65,    66,    -1,   101,   102,    70,    71,    72,    -1,
+      -1,    49,    -1,    51,    -1,    93,    94,    -1,    -1,    -1,
+      -1,    99,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
+      -1,    -1,    80,    81,    82,    83,    84,    12,    13,    14,
+      15,    47,    -1,    -1,    -1,    93,    94,    -1,    23,    24,
+      25,    99,    27,    28,    29,   103,    31,    -1,    -1,    65,
+      66,    -1,    -1,    -1,    70,    71,    72,    -1,    74,    -1,
+      -1,    77,    78,    79,    49,    -1,    51,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
+      96,    -1,    -1,    -1,    -1,   101,   102,    -1,    73,    -1,
+      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
+      -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    93,    94,
+      54,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    -1,
+      -1,    65,    66,    -1,    -1,    -1,    70,    71,    72,    -1,
       74,    -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,
       -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,    92,    93,
       94,    95,    96,    -1,    65,    66,    -1,   101,   102,    70,
@@ -1261,7 +1256,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,
       -1,    92,    93,    94,    95,    96,    -1,    65,    66,    -1,
      101,   102,    70,    71,    72,    -1,    74,    -1,    -1,    77,
-      78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      78,    79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    54,
       -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
       65,    66,    -1,   101,   102,    70,    71,    72,    -1,    74,
       -1,    -1,    77,    78,    79,    47,    -1,    -1,    -1,    -1,
@@ -1271,14 +1266,14 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       92,    93,    94,    95,    96,    -1,    65,    66,    -1,   101,
      102,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,    -1,
+      79,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    65,
       66,    -1,   101,   102,    70,    71,    72,    -1,    74,    -1,
       -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    56,    -1,    91,    92,    93,    94,    95,
+      -1,    54,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
       96,    -1,    65,    66,    -1,   101,   102,    70,    71,    72,
       -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
       93,    94,    95,    96,    -1,    65,    66,    -1,   101,   102,
       70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
       -1,    -1,    -1,    -1,    -1,    85,    86,    -1,    -1,    -1,
@@ -1338,8 +1333,8 @@ static const yytype_uint8 yystos[] =
      120,   126,   127,   129,   118,   119,   121,   126,    32,   129,
      129,   128,   129,   127,   120,   128,   122,   114,   128,   121,
      128,   122,   129,   128,   114,   110,   117,    52,   128,    32,
-      32,    52,   128,    32,   128,   127,   128,   127,   127,    32,
-     114,   115,   129,   128,   128
+      32,    52,    53,   128,    32,   128,   127,   128,   127,   127,
+     127,    32,   114,   115,   129,   129,   128,   128,   128
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2484,22 +2479,32 @@ yyreduce:
     break;
 
   case 49:
-#line 376 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(STOP); ;}
+#line 374 "engines/director/lingo/lingo-gr.y"
+    {
+		inst then = 0;
+		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 1] = then;	/* thenpart */
+
+		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
   case 50:
-#line 377 "engines/director/lingo/lingo-gr.y"
+#line 382 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(STOP); ;}
+    break;
+
+  case 51:
+#line 383 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_eq, STOP); ;}
     break;
 
-  case 52:
-#line 381 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 387 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
-  case 53:
-#line 384 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 390 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2507,8 +2512,8 @@ yyreduce:
 		delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 54:
-#line 391 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 397 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2516,8 +2521,8 @@ yyreduce:
 		g_lingo->codeLabel(0); ;}
     break;
 
-  case 55:
-#line 398 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 404 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2526,23 +2531,23 @@ yyreduce:
 		g_lingo->code1(skipEnd); ;}
     break;
 
-  case 56:
-#line 406 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 412 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 57:
-#line 409 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 415 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 58:
-#line 412 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 418 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
-  case 61:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 423 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2550,82 +2555,82 @@ yyreduce:
 		delete (yyvsp[(2) - (3)].s); ;}
     break;
 
-  case 62:
-#line 423 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 429 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
 		g_lingo->code1(STOP); ;}
     break;
 
-  case 63:
-#line 427 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 433 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt((yyvsp[(1) - (1)].i)); ;}
     break;
 
-  case 64:
-#line 430 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 436 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_floatpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
-  case 65:
-#line 433 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 439 "engines/director/lingo/lingo-gr.y"
     {											// D3
 		(yyval.code) = g_lingo->code1(g_lingo->c_symbolpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
-  case 66:
-#line 436 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 442 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_stringpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
-  case 68:
-#line 440 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 446 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 69:
-#line 443 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 449 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 70:
-#line 446 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 452 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 71:
-#line 447 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 453 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 72:
-#line 448 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 454 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg));
 		delete (yyvsp[(1) - (4)].s); ;}
     break;
 
-  case 73:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 457 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_eval);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str());
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 74:
-#line 455 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 461 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2636,8 +2641,8 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 75:
-#line 463 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 469 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2646,392 +2651,392 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 77:
-#line 470 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 476 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
-  case 78:
-#line 471 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 477 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
-  case 79:
-#line 472 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 478 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
-  case 80:
-#line 473 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 479 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
-  case 81:
-#line 474 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 480 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
-  case 82:
-#line 475 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 481 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
-  case 83:
-#line 476 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 482 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
-  case 84:
-#line 477 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 483 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
-  case 85:
-#line 478 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 484 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
-  case 86:
-#line 479 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 485 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
-  case 87:
-#line 480 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 486 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
-  case 88:
-#line 481 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 487 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
-  case 89:
-#line 482 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 488 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
-  case 90:
-#line 483 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 489 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
-  case 91:
-#line 484 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 490 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
-  case 92:
-#line 485 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 491 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
-  case 93:
-#line 486 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 492 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
-  case 94:
-#line 487 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 493 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
-  case 95:
-#line 488 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 494 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
-  case 96:
-#line 489 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 495 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
-  case 97:
-#line 490 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 496 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_arraypush); g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
-  case 98:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 497 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
-  case 99:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 498 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
-  case 100:
-#line 493 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 499 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
-  case 101:
-#line 494 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 500 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
-  case 102:
-#line 495 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 501 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
-  case 103:
-#line 496 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 502 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
-  case 104:
-#line 497 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 503 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
-  case 105:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 504 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
-  case 106:
-#line 499 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 505 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
-  case 107:
-#line 500 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 506 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
-  case 108:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 509 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 109:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 514 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 112:
-#line 511 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 517 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
-  case 113:
-#line 512 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 518 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 117:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 522 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 118:
-#line 519 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 525 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 119:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 528 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 120:
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 531 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_voidpush);
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 1);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 121:
-#line 529 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 535 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 122:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 536 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
-  case 123:
-#line 531 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 537 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
-  case 124:
-#line 532 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 538 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
-  case 125:
-#line 533 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 539 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
-  case 126:
-#line 534 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 540 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
-  case 127:
-#line 535 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 541 "engines/director/lingo/lingo-gr.y"
     { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 128:
-#line 538 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 544 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 129:
-#line 539 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 545 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 130:
-#line 542 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 548 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 131:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 549 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 132:
-#line 546 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 552 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 133:
-#line 547 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 553 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 134:
-#line 558 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 564 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
-  case 135:
-#line 559 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 565 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
-  case 136:
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 566 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
-  case 137:
-#line 561 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 567 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 138:
-#line 565 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 571 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 139:
-#line 569 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 575 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 144:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 589 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 145:
-#line 584 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 590 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 146:
-#line 588 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 594 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 147:
-#line 592 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 598 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 148:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 602 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
-  case 149:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 602 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 150:
-#line 626 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 632 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 151:
-#line 627 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 633 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg));
 			g_lingo->_indef = false; ;}
     break;
 
-  case 152:
-#line 631 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 637 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
 		;}
     break;
 
-  case 153:
-#line 634 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 640 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 154:
-#line 635 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 641 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; ;}
     break;
 
-  case 155:
-#line 639 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 645 "engines/director/lingo/lingo-gr.y"
     {	// D3
 				g_lingo->code1(g_lingo->c_procret);
 				g_lingo->define(*(yyvsp[(1) - (7)].s), (yyvsp[(2) - (7)].code), (yyvsp[(3) - (7)].narg));
@@ -3042,8 +3047,8 @@ yyreduce:
 			;}
     break;
 
-  case 156:
-#line 647 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 653 "engines/director/lingo/lingo-gr.y"
     {	// D4. No 'end' clause
 				g_lingo->code1(g_lingo->c_procret);
 				g_lingo->define(*(yyvsp[(1) - (6)].s), (yyvsp[(2) - (6)].code), (yyvsp[(3) - (6)].narg));
@@ -3052,38 +3057,38 @@ yyreduce:
 			;}
     break;
 
-  case 157:
-#line 654 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 660 "engines/director/lingo/lingo-gr.y"
     { (yyval.s) = (yyvsp[(2) - (2)].s); g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; ;}
     break;
 
-  case 158:
-#line 656 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 662 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 159:
-#line 657 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 663 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 160:
-#line 658 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 664 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 161:
-#line 659 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 665 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 162:
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 668 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 163:
-#line 666 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 672 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -3092,34 +3097,34 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 164:
-#line 674 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 680 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 165:
-#line 675 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 681 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 166:
-#line 676 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 682 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 167:
-#line 679 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 685 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 168:
-#line 680 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 686 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3123 "engines/director/lingo/lingo-gr.cpp"
+#line 3128 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3333,6 +3338,6 @@ yyreturn:
 }
 
 
-#line 683 "engines/director/lingo/lingo-gr.y"
+#line 689 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 6953d54..c3a4b1d 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -60,7 +60,7 @@ extern int yyparse();
 using namespace Director;
 void yyerror(const char *s) {
 	g_lingo->_hadError = true;
-	warning("%s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
+	warning("LINGO: %s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
 }
 
 void checkEnd(Common::String *token, const char *expect, bool required) {
@@ -371,6 +371,12 @@ elseifstmt1: elseifstmtoneliner
 		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel($1); }
+	| elseif cond tTHENNL begin stmtlist end {
+		inst then = 0;
+		WRITE_UINT32(&then, $5 - $1);
+		(*g_lingo->_currentScript)[$1 + 1] = then;	/* thenpart */
+
+		g_lingo->codeLabel($1); }
 	;
 
 cond:	   expr 				{ g_lingo->code1(STOP); }




More information about the Scummvm-git-logs mailing list