[Scummvm-git-logs] scummvm master -> 1214433874f57c749b5ca8062daacbbcc4a9eb2a

sev- sev at scummvm.org
Sun Jan 12 18:49:35 UTC 2020


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

Summary:
1214433874 DIRECTOR: LINGO: Added compilation support for D4 property arrays


Commit: 1214433874f57c749b5ca8062daacbbcc4a9eb2a
    https://github.com/scummvm/scummvm/commit/1214433874f57c749b5ca8062daacbbcc4a9eb2a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-01-12T19:49:07+01:00

Commit Message:
DIRECTOR: LINGO: Added compilation support for D4 property arrays

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


diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index a10e131..80c1ce8 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -63,6 +63,7 @@ static struct FuncDescr {
 	{ LC::c_argcpush,		"c_argcpush",		"i" },
 	{ LC::c_argcnoretpush,	"c_argcnoretpush",	"i" },
 	{ LC::c_arraypush,		"c_arraypush",		"i" },
+	{ LC::c_proparraypush,	"c_proparraypush",	"i" },
 	{ LC::c_printtop,		"c_printtop",		""  },
 	{ LC::c_intpush,		"c_intpush",		"i" },
 	{ LC::c_voidpush,		"c_voidpush",		""  },
@@ -293,6 +294,20 @@ void LC::c_arraypush() {
 	g_lingo->push(d);
 }
 
+void LC::c_proparraypush() {
+	Datum d;
+	int arraySize = g_lingo->readInt();
+
+	warning("STUB: c_proparraypush()");
+
+	for (int i = 0; i < arraySize * 2; i++)
+		g_lingo->pop();
+
+	d.u.i = arraySize;
+	d.type = INT;
+	g_lingo->push(d);
+}
+
 void LC::c_varpush() {
 	Common::String name(g_lingo->readString());
 	Datum d;
diff --git a/engines/director/lingo/lingo-code.h b/engines/director/lingo/lingo-code.h
index 05bfbfb..db3521b 100644
--- a/engines/director/lingo/lingo-code.h
+++ b/engines/director/lingo/lingo-code.h
@@ -69,6 +69,7 @@ namespace LC {
 	void c_argcpush();
 	void c_argcnoretpush();
 	void c_arraypush();
+	void c_proparraypush();
 	void c_assign();
 	bool verify(Symbol *s);
 	void c_eval();
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 4d15f96..8c1126b 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -333,14 +333,6 @@ int Lingo::codeInt(int val) {
 	return _currentScript->size();
 }
 
-int Lingo::codeArray(int arraySize) {
-	inst i = 0;
-	WRITE_UINT32(&i, arraySize);
-	g_lingo->code1(i);
-
-	return _currentScript->size();
-}
-
 bool Lingo::isInArgStack(Common::String *s) {
 	for (uint i = 0; i < _argstack.size(); i++)
 		if (_argstack[i]->equalsIgnoreCase(*s))
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 0eaeab1..3996f68 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -550,18 +550,18 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  126
+#define YYFINAL  133
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1598
+#define YYLAST   1637
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  107
+#define YYNTOKENS  108
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  41
+#define YYNNTS  46
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  160
+#define YYNRULES  170
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  342
+#define YYNSTATES  355
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -577,12 +577,12 @@ static const yytype_uint8 yytranslate[] =
      101,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,   100,    95,     2,
-     102,   103,    98,    96,   106,    97,     2,    99,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     102,   103,    98,    96,   104,    97,     2,    99,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   107,     2,
       93,     2,    94,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   104,     2,   105,     2,     2,     2,     2,     2,     2,
+       2,   105,     2,   106,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -621,82 +621,86 @@ static const yytype_uint16 yyprhs[] =
      110,   122,   126,   133,   138,   148,   161,   162,   165,   172,
      184,   192,   195,   199,   201,   203,   204,   205,   206,   209,
      212,   216,   218,   220,   222,   224,   226,   228,   230,   232,
-     234,   237,   240,   245,   247,   250,   252,   254,   258,   262,
-     266,   270,   274,   278,   282,   286,   290,   294,   298,   302,
-     306,   309,   313,   317,   321,   325,   328,   331,   335,   339,
-     344,   349,   354,   361,   366,   373,   378,   385,   390,   397,
-     402,   409,   411,   414,   417,   419,   421,   424,   426,   429,
-     432,   435,   437,   440,   443,   445,   448,   453,   456,   460,
-     462,   466,   468,   472,   474,   478,   481,   484,   487,   490,
-     494,   497,   501,   504,   507,   510,   514,   517,   518,   522,
-     523,   532,   535,   536,   544,   553,   560,   563,   564,   566,
-     570,   575,   576,   578,   582,   583,   586,   587,   589,   593,
-     595
+     234,   236,   239,   242,   247,   249,   252,   254,   256,   260,
+     264,   268,   272,   276,   280,   284,   288,   292,   296,   300,
+     304,   308,   311,   315,   319,   323,   327,   330,   333,   337,
+     342,   347,   352,   359,   364,   371,   376,   383,   388,   395,
+     400,   407,   409,   412,   415,   417,   419,   422,   424,   427,
+     430,   433,   435,   438,   441,   443,   446,   451,   454,   458,
+     460,   464,   466,   470,   472,   476,   479,   482,   485,   488,
+     492,   495,   499,   502,   505,   508,   512,   515,   516,   520,
+     521,   530,   533,   534,   542,   551,   558,   561,   562,   564,
+     568,   573,   574,   576,   580,   581,   584,   585,   587,   591,
+     593,   597,   601,   602,   604,   606,   608,   610,   614,   616,
+     620
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     108,     0,    -1,   108,   101,   109,    -1,   109,    -1,     1,
-     101,    -1,    -1,   138,    -1,   113,    -1,    52,   128,    45,
-      30,    -1,    52,   128,    45,   129,    -1,    52,   128,    74,
-     128,    -1,    52,   128,    75,   128,    -1,    54,    30,    68,
-     128,    -1,    54,    15,    68,   128,    -1,    54,    30,    56,
-     128,    -1,    54,    15,    56,   128,    -1,    54,    16,   127,
-      56,   128,    -1,    54,    16,   127,    68,   128,    -1,    54,
-      37,    56,   128,    -1,   145,    -1,   128,    -1,   130,    -1,
-     145,    -1,   128,    -1,   130,    -1,   117,    -1,   111,    -1,
-     114,    -1,   118,   128,   123,   124,   123,    91,    -1,   119,
-      68,   128,   123,    56,   128,   123,   124,   123,    91,    -1,
-     119,    68,   128,   123,    38,    56,   128,   123,   124,   123,
-      91,    -1,   125,   112,   123,    -1,   126,   128,   101,   124,
-     123,    92,    -1,   126,   128,    56,   128,    -1,   120,   128,
-     123,    55,   124,   123,   115,   123,    90,    -1,   120,   128,
-     123,    55,   124,   123,   115,    39,   122,   124,   123,    90,
-      -1,    -1,   116,   115,    -1,   121,   128,   123,    55,   124,
-     123,    -1,   120,   128,   123,    55,   111,   123,    39,   122,
-     111,   123,    90,    -1,   120,   128,   123,    55,   111,   123,
+     109,     0,    -1,   109,   101,   110,    -1,   110,    -1,     1,
+     101,    -1,    -1,   139,    -1,   114,    -1,    52,   129,    45,
+      30,    -1,    52,   129,    45,   130,    -1,    52,   129,    74,
+     129,    -1,    52,   129,    75,   129,    -1,    54,    30,    68,
+     129,    -1,    54,    15,    68,   129,    -1,    54,    30,    56,
+     129,    -1,    54,    15,    56,   129,    -1,    54,    16,   128,
+      56,   129,    -1,    54,    16,   128,    68,   129,    -1,    54,
+      37,    56,   129,    -1,   146,    -1,   129,    -1,   131,    -1,
+     146,    -1,   129,    -1,   131,    -1,   118,    -1,   112,    -1,
+     115,    -1,   119,   129,   124,   125,   124,    91,    -1,   120,
+      68,   129,   124,    56,   129,   124,   125,   124,    91,    -1,
+     120,    68,   129,   124,    38,    56,   129,   124,   125,   124,
+      91,    -1,   126,   113,   124,    -1,   127,   129,   101,   125,
+     124,    92,    -1,   127,   129,    56,   129,    -1,   121,   129,
+     124,    55,   125,   124,   116,   124,    90,    -1,   121,   129,
+     124,    55,   125,   124,   116,    39,   123,   125,   124,    90,
+      -1,    -1,   116,   117,    -1,   122,   129,   124,    55,   125,
+     124,    -1,   121,   129,   124,    55,   112,   124,    39,   123,
+     112,   124,    90,    -1,   121,   129,   124,    55,   112,   124,
       90,    -1,    53,    59,    -1,    53,    58,    30,    -1,    44,
-      -1,    40,    -1,    -1,    -1,    -1,   124,   101,    -1,   124,
-     113,    -1,    57,    30,    55,    -1,    86,    -1,    12,    -1,
-      17,    -1,    33,    -1,    31,    -1,    30,    -1,   127,    -1,
-     129,    -1,    25,    -1,    26,   128,    -1,    27,   146,    -1,
-      30,   102,   146,   103,    -1,    15,    -1,    16,   127,    -1,
-      37,    -1,   110,    -1,   128,    96,   128,    -1,   128,    97,
-     128,    -1,   128,    98,   128,    -1,   128,    99,   128,    -1,
-     128,    73,   128,    -1,   128,    94,   128,    -1,   128,    93,
-     128,    -1,   128,    68,   128,    -1,   128,    69,   128,    -1,
-     128,    66,   128,    -1,   128,    67,   128,    -1,   128,    70,
-     128,    -1,   128,    71,   128,    -1,    72,   128,    -1,   128,
-      95,   128,    -1,   128,    76,   128,    -1,   128,    77,   128,
-      -1,   128,    78,   128,    -1,    96,   128,    -1,    97,   128,
-      -1,   102,   128,   103,    -1,   104,   146,   105,    -1,    83,
-     128,    84,   128,    -1,    83,   128,    85,   128,    -1,    79,
-     128,    50,   128,    -1,    79,   128,    56,   128,    50,   128,
-      -1,    80,   128,    50,   128,    -1,    80,   128,    56,   128,
-      50,   128,    -1,    81,   128,    50,   128,    -1,    81,   128,
-      56,   128,    50,   128,    -1,    82,   128,    50,   128,    -1,
-      82,   128,    56,   128,    50,   128,    -1,    89,   102,    30,
-     103,    -1,    89,   102,    30,   106,   146,   103,    -1,    89,
-      -1,    29,   127,    -1,    52,   128,    -1,   134,    -1,   136,
-      -1,    41,    53,    -1,    41,    -1,    42,   131,    -1,    87,
-     132,    -1,    65,   133,    -1,    19,    -1,    21,   128,    -1,
-      20,   128,    -1,    20,    -1,    22,   146,    -1,    62,   128,
-      58,   128,    -1,    62,   128,    -1,    23,    30,   146,    -1,
-      30,    -1,   131,   106,    30,    -1,    30,    -1,   132,   106,
-      30,    -1,    30,    -1,   133,   106,    30,    -1,    43,    46,
-      -1,    43,    49,    -1,    43,    51,    -1,    43,   128,    -1,
-      43,   128,   135,    -1,    43,   135,    -1,    50,    48,   128,
-      -1,    48,   128,    -1,    63,    64,    -1,    63,   128,    -1,
-      63,   128,   135,    -1,    63,   135,    -1,    -1,    35,   137,
-     146,    -1,    -1,    47,    30,   139,   122,   142,   101,   144,
-     124,    -1,    61,    30,    -1,    -1,    36,   140,   122,   142,
-     101,   144,   124,    -1,   141,   122,   142,   101,   144,   124,
-      34,   143,    -1,   141,   122,   142,   101,   144,   124,    -1,
-      88,    30,    -1,    -1,    30,    -1,   142,   106,    30,    -1,
-     142,   101,   106,    30,    -1,    -1,    30,    -1,   143,   106,
-      30,    -1,    -1,    30,   147,    -1,    -1,   128,    -1,   146,
-     106,   128,    -1,   128,    -1,   147,   106,   128,    -1
+      -1,    40,    -1,    -1,    -1,    -1,   125,   101,    -1,   125,
+     114,    -1,    57,    30,    55,    -1,    86,    -1,    12,    -1,
+      17,    -1,    33,    -1,    31,    -1,    30,    -1,   149,    -1,
+     128,    -1,   130,    -1,    25,    -1,    26,   129,    -1,    27,
+     147,    -1,    30,   102,   147,   103,    -1,    15,    -1,    16,
+     128,    -1,    37,    -1,   111,    -1,   129,    96,   129,    -1,
+     129,    97,   129,    -1,   129,    98,   129,    -1,   129,    99,
+     129,    -1,   129,    73,   129,    -1,   129,    94,   129,    -1,
+     129,    93,   129,    -1,   129,    68,   129,    -1,   129,    69,
+     129,    -1,   129,    66,   129,    -1,   129,    67,   129,    -1,
+     129,    70,   129,    -1,   129,    71,   129,    -1,    72,   129,
+      -1,   129,    95,   129,    -1,   129,    76,   129,    -1,   129,
+      77,   129,    -1,   129,    78,   129,    -1,    96,   129,    -1,
+      97,   129,    -1,   102,   129,   103,    -1,    83,   129,    84,
+     129,    -1,    83,   129,    85,   129,    -1,    79,   129,    50,
+     129,    -1,    79,   129,    56,   129,    50,   129,    -1,    80,
+     129,    50,   129,    -1,    80,   129,    56,   129,    50,   129,
+      -1,    81,   129,    50,   129,    -1,    81,   129,    56,   129,
+      50,   129,    -1,    82,   129,    50,   129,    -1,    82,   129,
+      56,   129,    50,   129,    -1,    89,   102,    30,   103,    -1,
+      89,   102,    30,   104,   147,   103,    -1,    89,    -1,    29,
+     128,    -1,    52,   129,    -1,   135,    -1,   137,    -1,    41,
+      53,    -1,    41,    -1,    42,   132,    -1,    87,   133,    -1,
+      65,   134,    -1,    19,    -1,    21,   129,    -1,    20,   129,
+      -1,    20,    -1,    22,   147,    -1,    62,   129,    58,   129,
+      -1,    62,   129,    -1,    23,    30,   147,    -1,    30,    -1,
+     132,   104,    30,    -1,    30,    -1,   133,   104,    30,    -1,
+      30,    -1,   134,   104,    30,    -1,    43,    46,    -1,    43,
+      49,    -1,    43,    51,    -1,    43,   129,    -1,    43,   129,
+     136,    -1,    43,   136,    -1,    50,    48,   129,    -1,    48,
+     129,    -1,    63,    64,    -1,    63,   129,    -1,    63,   129,
+     136,    -1,    63,   136,    -1,    -1,    35,   138,   147,    -1,
+      -1,    47,    30,   140,   123,   143,   101,   145,   125,    -1,
+      61,    30,    -1,    -1,    36,   141,   123,   143,   101,   145,
+     125,    -1,   142,   123,   143,   101,   145,   125,    34,   144,
+      -1,   142,   123,   143,   101,   145,   125,    -1,    88,    30,
+      -1,    -1,    30,    -1,   143,   104,    30,    -1,   143,   101,
+     104,    30,    -1,    -1,    30,    -1,   144,   104,    30,    -1,
+      -1,    30,   148,    -1,    -1,   129,    -1,   147,   104,   129,
+      -1,   129,    -1,   148,   104,   129,    -1,   105,   150,   106,
+      -1,    -1,   107,    -1,   151,    -1,   152,    -1,   128,    -1,
+     151,   104,   128,    -1,   153,    -1,   152,   104,   153,    -1,
+      33,   107,   128,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -707,8 +711,8 @@ static const yytype_uint16 yyrline[] =
      199,   200,   203,   204,   205,   206,   209,   210,   215,   226,
      243,   255,   260,   262,   267,   277,   289,   290,   293,   301,
      311,   324,   327,   334,   341,   349,   352,   355,   356,   357,
-     360,   366,   370,   373,   376,   379,   382,   388,   389,   390,
-     393,   396,   397,   400,   408,   414,   418,   419,   420,   421,
+     360,   366,   370,   373,   376,   379,   382,   386,   389,   390,
+     391,   394,   397,   398,   401,   409,   415,   419,   420,   421,
      422,   423,   424,   425,   426,   427,   428,   429,   430,   431,
      432,   433,   434,   435,   436,   437,   438,   439,   440,   441,
      442,   443,   444,   445,   446,   447,   448,   449,   450,   451,
@@ -718,7 +722,8 @@ static const yytype_uint16 yyrline[] =
      519,   525,   526,   529,   530,   534,   538,   542,   542,   572,
      572,   578,   579,   579,   585,   593,   600,   602,   603,   604,
      605,   608,   609,   610,   613,   616,   624,   625,   626,   629,
-     630
+     630,   633,   636,   637,   638,   639,   642,   643,   646,   647,
+     650
 };
 #endif
 
@@ -742,14 +747,15 @@ static const char *const yytname[] =
   "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE",
   "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tME", "tENDIF",
   "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'",
-  "'/'", "'%'", "'\\n'", "'('", "')'", "'['", "']'", "','", "$accept",
-  "program", "programline", "asgn", "stmtoneliner", "stmtonelinerwithif",
-  "stmt", "ifstmt", "elseifstmtlist", "elseifstmt", "ifoneliner",
-  "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist",
-  "when", "tell", "simpleexpr", "expr", "reference", "proc", "globallist",
-  "propertylist", "instancelist", "gotofunc", "gotomovie", "playfunc",
-  "@1", "defn", "@2", "@3", "on", "argdef", "endargdef", "argstore",
-  "macro", "arglist", "nonemptyarglist", 0
+  "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
+  "$accept", "program", "programline", "asgn", "stmtoneliner",
+  "stmtonelinerwithif", "stmt", "ifstmt", "elseifstmtlist", "elseifstmt",
+  "ifoneliner", "repeatwhile", "repeatwith", "if", "elseif", "begin",
+  "end", "stmtlist", "when", "tell", "simpleexpr", "expr", "reference",
+  "proc", "globallist", "propertylist", "instancelist", "gotofunc",
+  "gotomovie", "playfunc", "@1", "defn", "@2", "@3", "on", "argdef",
+  "endargdef", "argstore", "macro", "arglist", "nonemptyarglist", "list",
+  "valuelist", "linearlist", "proplist", "proppair", 0
 };
 #endif
 
@@ -768,30 +774,31 @@ static const yytype_uint16 yytoknum[] =
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
      345,   346,   347,    60,    62,    38,    43,    45,    42,    47,
-      37,    10,    40,    41,    91,    93,    44
+      37,    10,    40,    41,    44,    91,    93,    58
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   107,   108,   108,   108,   109,   109,   109,   110,   110,
-     110,   110,   110,   110,   110,   110,   110,   110,   110,   111,
-     111,   111,   112,   112,   112,   112,   113,   113,   113,   113,
-     113,   113,   113,   113,   114,   114,   115,   115,   116,   117,
-     117,   118,   119,   120,   121,   122,   123,   124,   124,   124,
-     125,   126,   127,   127,   127,   127,   127,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   129,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   131,
-     131,   132,   132,   133,   133,   134,   134,   134,   134,   134,
-     134,   135,   135,   136,   136,   136,   136,   137,   136,   139,
-     138,   138,   140,   138,   138,   138,   141,   142,   142,   142,
-     142,   143,   143,   143,   144,   145,   146,   146,   146,   147,
-     147
+       0,   108,   109,   109,   109,   110,   110,   110,   111,   111,
+     111,   111,   111,   111,   111,   111,   111,   111,   111,   112,
+     112,   112,   113,   113,   113,   113,   114,   114,   114,   114,
+     114,   114,   114,   114,   115,   115,   116,   116,   117,   118,
+     118,   119,   120,   121,   122,   123,   124,   125,   125,   125,
+     126,   127,   128,   128,   128,   128,   128,   128,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   130,   131,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   132,
+     132,   133,   133,   134,   134,   135,   135,   135,   135,   135,
+     135,   136,   136,   137,   137,   137,   137,   138,   137,   140,
+     139,   139,   141,   139,   139,   139,   142,   143,   143,   143,
+     143,   144,   144,   144,   145,   146,   147,   147,   147,   148,
+     148,   149,   150,   150,   150,   150,   151,   151,   152,   152,
+     153
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -803,9 +810,9 @@ static const yytype_uint8 yyr2[] =
       11,     3,     6,     4,     9,    12,     0,     2,     6,    11,
        7,     2,     3,     1,     1,     0,     0,     0,     2,     2,
        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     2,     4,     1,     2,     1,     1,     3,     3,     3,
+       1,     2,     2,     4,     1,     2,     1,     1,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       2,     3,     3,     3,     3,     2,     2,     3,     3,     4,
+       3,     2,     3,     3,     3,     3,     2,     2,     3,     4,
        4,     4,     6,     4,     6,     4,     6,     4,     6,     4,
        6,     1,     2,     2,     1,     1,     2,     1,     2,     2,
        2,     1,     2,     2,     1,     2,     4,     2,     3,     1,
@@ -813,6 +820,7 @@ static const yytype_uint8 yyr2[] =
        2,     3,     2,     2,     2,     3,     2,     0,     3,     0,
        8,     2,     0,     7,     8,     6,     2,     0,     1,     3,
        4,     0,     1,     3,     0,     2,     0,     1,     3,     1,
+       3,     3,     0,     1,     1,     1,     1,     3,     1,     3,
        3
 };
 
@@ -821,103 +829,105 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    52,    63,     0,    53,   111,   114,     0,   156,
-       0,    59,     0,   156,     0,    56,    55,    54,   137,   142,
-      65,   107,     0,     0,    43,     0,     0,     0,     0,     0,
+       0,     0,    52,    64,     0,    53,   111,   114,     0,   156,
+       0,    60,     0,   156,     0,    56,    55,    54,   137,   142,
+      66,   107,     0,     0,    43,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      51,     0,     0,   101,     0,     0,     0,   162,     0,     3,
+      67,    26,     7,    27,     0,     0,     0,     0,     0,    58,
+      20,    59,    21,   104,   105,     6,    45,    19,    57,     4,
+      56,    65,    56,     0,   113,   112,   157,   115,   156,    61,
+      62,   102,   156,   159,   155,   156,    45,   106,   119,   108,
+     125,     0,   126,     0,   127,   128,   130,   139,   103,     0,
+      41,     0,     0,     0,     0,     0,   141,   117,   133,   134,
+     136,   123,   110,    81,     0,     0,     0,     0,     0,   121,
+     109,   146,     0,    86,    87,     0,    54,   163,   166,     0,
+     164,   165,   168,     1,     5,    46,     0,    46,    46,    25,
+       0,    23,    24,    22,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      51,     0,     0,   101,     0,     0,     0,   156,     0,     3,
-      66,    26,     7,    27,     0,     0,     0,     0,     0,    57,
-      20,    58,    21,   104,   105,     6,    45,    19,     4,    56,
-      64,    56,     0,   113,   112,   157,   115,   156,    60,    61,
-     102,   156,   159,   155,   156,    45,   106,   119,   108,   125,
-       0,   126,     0,   127,   128,   130,   139,   103,     0,    41,
-       0,     0,     0,     0,     0,   141,   117,   133,   134,   136,
-     123,   110,    80,     0,     0,     0,     0,     0,   121,   109,
-     146,     0,    85,    86,     0,     0,     1,     5,    46,     0,
-      46,    46,    25,     0,    23,    24,    22,     0,     0,     0,
+       0,     0,   147,   156,     0,     0,   118,   157,     0,     0,
+     138,   147,     0,   132,     0,   129,    45,     0,     0,     0,
+      42,     0,     0,     0,     0,     0,     0,    50,     0,   135,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   147,   156,     0,     0,   118,
-     157,     0,     0,   138,   147,     0,   132,     0,   129,    45,
-       0,     0,     0,    42,     0,     0,     0,     0,     0,     0,
-      50,     0,   135,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    87,    88,     2,    47,
-      46,     0,    31,    46,     0,    47,    76,    77,    74,    75,
-      78,    79,    71,    82,    83,    84,    73,    72,    81,    67,
-      68,    69,    70,   148,     0,   158,    62,   160,     0,   120,
+       0,     0,     0,    88,     0,   161,     0,     0,     2,    47,
+      46,     0,    31,    46,     0,    47,    77,    78,    75,    76,
+      79,    80,    72,    83,    84,    85,    74,    73,    82,    68,
+      69,    70,    71,   148,     0,   158,    63,   160,     0,   120,
      131,   147,     8,     9,    10,    11,    15,    13,     0,     0,
       14,    12,    18,   116,   124,    91,     0,    93,     0,    95,
-       0,    97,     0,    89,    90,   122,    99,   156,    46,     0,
-      47,     0,    33,    46,   154,     0,   154,     0,    16,    17,
-       0,     0,     0,     0,     0,    48,    49,     0,     0,     0,
-      46,     0,     0,     0,    47,   149,    47,   154,    92,    94,
-      96,    98,   100,    28,     0,    46,    36,    46,    32,   150,
-     145,   143,    47,    46,    47,    44,    46,    36,     0,     0,
-     151,   140,    47,    46,    45,     0,    37,    46,    45,    40,
-     152,   144,    46,     0,    47,    34,     0,     0,     0,     0,
-      29,    46,    47,    46,   153,    30,     0,    46,     0,    35,
-      38,    39
+       0,    97,     0,    89,    90,   122,    99,   156,   170,   167,
+       0,   169,    46,     0,    47,     0,    33,    46,   154,     0,
+     154,     0,    16,    17,     0,     0,     0,     0,     0,    48,
+      49,     0,     0,     0,    46,     0,     0,     0,    47,   149,
+      47,   154,    92,    94,    96,    98,   100,    28,     0,    46,
+      36,    46,    32,   150,   145,   143,    47,    46,    47,    46,
+       0,   151,   140,    47,    46,    45,    44,    37,     0,     0,
+      45,    40,   152,   144,    46,     0,    47,    46,    34,     0,
+       0,     0,    29,    46,     0,    46,   153,    30,     0,    47,
+       0,    35,    46,    39,    38
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    48,    49,    50,    51,   131,   276,    53,   306,   307,
-     132,    54,    55,    56,   308,   155,   199,   258,    57,    58,
-      59,    60,    61,    62,    88,   119,   111,    63,    95,    64,
-      84,    65,   169,    85,    66,   224,   321,   284,    67,   161,
-      83
+      -1,    48,    49,    50,    51,   138,   290,    53,   319,   327,
+     139,    54,    55,    56,   328,   162,   209,   272,    57,    58,
+      59,    60,    61,    62,    89,   120,   112,    63,    96,    64,
+      85,    65,   176,    86,    66,   234,   333,   298,    67,   168,
+      84,    68,   129,   130,   131,   132
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -268
+#define YYPACT_NINF -283
 static const yytype_int16 yypact[] =
 {
-     312,   -79,  -268,  -268,    73,  -268,  -268,   972,   972,   972,
-       5,  -268,   972,   972,    73,  1005,  -268,  -268,  -268,  -268,
-    -268,   -36,    46,   850,  -268,    62,   972,   -13,    65,    71,
-      79,   972,   911,    81,   972,   972,   972,   972,   972,   972,
-    -268,    82,    83,   -76,   972,   972,   972,   972,     9,  -268,
-    -268,  -268,  -268,  -268,   972,    47,   972,   676,   972,  -268,
-    1486,  -268,  -268,  -268,  -268,  -268,  -268,  -268,  -268,  -268,
-    -268,    12,   972,  1486,  1486,  1486,    10,   972,  1486,    10,
-    -268,   972,  1486,    11,   972,  -268,  -268,  -268,    17,  -268,
-     972,  -268,    76,  -268,  1058,  -268,  -268,  1044,    88,  -268,
-     -14,    73,     7,    69,    72,  -268,  1380,  -268,  1058,  -268,
-    -268,    22,  -268,  1094,  1128,  1162,  1196,  1452,  -268,    23,
-    -268,   100,  -268,  -268,  1414,   -44,  -268,   403,  1486,   972,
-    1486,  -268,  -268,   972,  1486,  -268,  -268,  1366,   972,   972,
-     972,   972,   972,   972,   972,   972,   972,   972,   972,   972,
-     972,   972,   972,   972,   972,   120,   972,  1044,   972,    10,
-    1414,   -88,   972,    10,   120,   122,  1486,   972,  -268,  -268,
-      70,   972,   972,  -268,   972,   972,    26,   972,   972,   972,
-    -268,   972,  -268,   123,   972,   972,   972,   972,   972,   972,
-     972,   972,   972,   972,   124,   -10,  -268,  -268,  -268,  -268,
-    1486,   101,  -268,  1486,   972,  -268,   -40,   -40,   -40,   -40,
-    1499,  1499,  -268,   -30,   -40,   -40,   -40,   -40,   -30,    -1,
-      -1,  -268,  -268,  -268,   -53,  1486,  -268,  1486,   -17,  -268,
-    1486,   120,  -268,  -268,  1486,  1486,  1486,   -40,   972,   972,
-    1486,   -40,  1486,  1486,  -268,  1486,  1230,  1486,  1264,  1486,
-    1298,  1486,  1332,  1486,  1486,  -268,  -268,   972,   585,    -4,
-    -268,   102,  1486,   585,    52,   129,    52,   -15,  1486,   -40,
-     972,   972,   972,   972,     2,  -268,  -268,    75,   105,   972,
-     585,   767,    77,   132,  -268,  -268,  -268,    52,  1486,  1486,
-    1486,  1486,  -268,  -268,   972,  1486,   133,  -268,  -268,  -268,
-     494,   585,  -268,  1486,  -268,  -268,   136,   133,   972,   -26,
-     157,   585,  -268,   585,  -268,    98,  -268,  1486,  -268,  -268,
-    -268,    57,   585,    99,  -268,  -268,   138,   767,   161,   103,
-    -268,   585,  -268,  -268,  -268,  -268,   106,   585,   108,  -268,
-    -268,  -268
+     336,   -86,  -283,  -283,    29,  -283,  -283,   996,   996,   996,
+      15,  -283,   996,   996,    29,  1030,  -283,  -283,  -283,  -283,
+    -283,   -17,    22,   874,  -283,    26,   996,    33,    18,    31,
+      35,   996,   935,    37,   996,   996,   996,   996,   996,   996,
+    -283,    51,    79,    16,   996,   996,   996,    52,     9,  -283,
+    -283,  -283,  -283,  -283,   996,    53,   996,   700,   996,  -283,
+    1525,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,
+    -283,  -283,    17,   996,  1525,  1525,  1525,    19,   996,  1525,
+      19,  -283,   996,  1525,    20,   996,  -283,  -283,  -283,    23,
+    -283,   996,  -283,    72,  -283,  1083,  -283,  -283,  1070,    92,
+    -283,   -14,    29,     2,    69,    71,  -283,  1419,  -283,  1083,
+    -283,  -283,    24,  -283,  1133,  1167,  1201,  1235,  1491,  -283,
+      27,  -283,   100,  -283,  -283,  1453,    25,  -283,  -283,    54,
+      57,    59,  -283,  -283,   427,  1525,   996,  1525,  -283,  -283,
+     996,  1525,  -283,  -283,  1405,   996,   996,   996,   996,   996,
+     996,   996,   996,   996,   996,   996,   996,   996,   996,   996,
+     996,   996,   107,   996,  1070,   996,    19,  1453,     1,   996,
+      19,   107,   134,  1525,   996,  -283,  -283,    77,   996,   996,
+    -283,   996,   996,    12,   996,   996,   996,  -283,   996,  -283,
+     135,   996,   996,   996,   996,   996,   996,   996,   996,   996,
+     996,   136,     8,  -283,    29,  -283,    29,   137,  -283,  -283,
+    1525,   113,  -283,  1525,   996,  -283,     0,     0,     0,     0,
+    1538,  1538,  -283,     4,     0,     0,     0,     0,     4,   -55,
+     -55,  -283,  -283,  -283,   -78,  1525,  -283,  1525,   -15,  -283,
+    1525,   107,  -283,  -283,  1525,  1525,  1525,     0,   996,   996,
+    1525,     0,  1525,  1525,  -283,  1525,  1269,  1525,  1303,  1525,
+    1337,  1525,  1371,  1525,  1525,  -283,  -283,   996,  -283,  -283,
+      25,  -283,   609,   -16,  -283,   114,  1525,   609,    78,   143,
+      78,   -11,  1525,     0,   996,   996,   996,   996,    10,  -283,
+    -283,    89,   127,   996,   609,   791,   102,   165,  -283,  -283,
+    -283,    78,  1525,  1525,  1525,  1525,  -283,  -283,   996,  1525,
+    -283,  -283,  -283,  -283,   518,   609,  -283,  1525,  -283,    76,
+     -27,   166,   609,  -283,   609,  -283,  -283,  -283,   996,   108,
+    -283,  -283,  -283,    93,   609,   110,  -283,  1525,  -283,   791,
+     169,   112,  -283,   609,   149,  -283,  -283,  -283,   115,  -283,
+     116,  -283,   609,  -283,  -283
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -268,  -268,    68,  -268,  -267,  -268,    21,  -268,  -108,  -268,
-    -268,  -268,  -268,   144,  -268,   -81,   -11,   -84,  -268,  -268,
-       6,    -7,    33,   147,  -268,  -268,  -268,  -268,   -21,  -268,
-    -268,  -268,  -268,  -268,  -268,  -152,  -268,  -243,   148,    -6,
-    -268
+    -283,  -283,    75,  -283,  -282,  -283,    21,  -283,  -283,  -283,
+    -283,  -283,  -283,   156,  -283,   -82,    -2,   -98,  -283,  -283,
+       6,    -7,    38,   157,  -283,  -283,  -283,  -283,   -21,  -283,
+    -283,  -283,  -283,  -283,  -283,  -154,  -283,  -266,   159,    -6,
+    -283,  -283,  -283,  -283,  -283,    14
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -927,330 +937,338 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -6
 static const yytype_int16 yytable[] =
 {
-      73,    74,    75,    76,   164,    78,    75,    79,    82,   126,
-      70,   109,   228,   318,   297,   226,    94,    86,   158,    97,
-      80,    52,    68,   286,   106,   108,   121,   112,   113,   114,
-     115,   116,   117,   144,   278,    77,   145,   122,   123,   124,
-      75,   125,   174,   144,   302,    98,    99,   128,   264,   130,
-     134,   137,   279,   265,   175,   150,   151,   152,   153,   154,
-     333,   197,   158,   177,   319,   157,   151,   152,   153,   154,
-      75,   159,   144,   168,   160,   178,    87,    75,   163,   267,
-     100,   101,   238,   166,   266,     2,   287,   182,   231,   265,
-       5,   265,    96,   256,   239,   102,   257,   153,   154,    14,
-     232,   104,   103,    69,    16,   292,    17,   176,   158,   105,
-     127,   110,   118,   120,   156,   129,   158,   162,   173,   201,
-     202,   263,   200,   165,   167,   179,   203,   180,   183,   194,
-     195,   206,   207,   208,   209,   210,   211,   212,   213,   214,
-     215,   216,   217,   218,   219,   220,   221,   222,    52,    75,
-     223,   225,   229,   244,   255,   227,   260,   281,   283,   285,
-     230,   294,   299,   328,   234,   235,   293,   236,   237,   298,
-     240,   241,   242,   305,   243,   314,   280,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   320,   325,   259,
-     330,   334,   261,   332,   335,   198,   339,   262,   341,   316,
-     300,   133,   301,   233,   135,   136,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   311,     0,
-     313,     0,     0,     0,     0,     0,     0,     0,   322,     0,
-       0,   268,   269,   324,     0,     0,     0,   327,     0,     0,
-     331,     0,     0,     0,     0,     0,     0,   277,   337,     0,
-      75,   274,   282,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   288,   289,   290,   291,     0,     0,   296,
-       0,     0,   295,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   304,     0,   309,   303,     0,     0,
-       0,     0,   312,     0,     0,   315,     0,     0,     0,     0,
-       0,   317,   323,     0,     0,     0,   326,     0,     0,     0,
-       0,   329,    -5,     1,     0,     0,     0,     0,     0,     0,
-     336,     0,   338,     0,     2,     0,   340,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    15,    16,     0,    17,     0,    18,    19,    20,
-       0,     0,     0,    21,    22,    23,    24,     0,     0,    25,
-       0,     0,     0,     0,    26,    27,    28,     0,     0,    29,
-       0,     0,     0,    30,    31,    32,     0,    33,     0,     0,
-       0,     0,     0,     0,    34,     0,     0,     0,     0,     0,
-       0,    35,    36,    37,    38,    39,     0,     0,    40,    41,
-      42,    43,     0,     0,     0,     0,     0,     0,    44,    45,
-       0,     0,     0,    -5,    46,     2,    47,     0,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,     0,    14,    15,    16,     0,    17,     0,    18,    19,
-      20,     0,     0,     0,    21,    22,    23,    24,     0,     0,
-      25,     0,     0,     0,     0,    26,    27,    28,     0,     0,
-      29,     0,     0,     0,    30,    31,    32,     0,    33,     0,
-       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
-       0,     0,    35,    36,    37,    38,    39,     0,     0,    40,
-      41,    42,    43,     0,     0,     0,     0,     0,     0,    44,
-      45,     0,     0,     0,     0,    46,     2,    47,     0,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    15,    16,     0,    17,   310,    18,
-       0,    20,     0,     0,     0,    21,    22,    23,    24,     0,
-       0,     0,     0,     0,     0,     0,    26,    27,    28,     0,
-       0,    29,     0,     0,     0,     0,    31,    32,     0,    33,
-       0,     0,     0,     0,     0,     0,    34,     0,     0,     0,
-       0,     0,     0,    35,    36,    37,    38,    39,     0,     0,
-      40,    41,     0,    43,     0,     0,     0,     0,     0,     0,
-      44,    45,     0,     0,     0,   275,    46,     2,    47,     0,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
-      11,    12,    13,     0,    14,    15,    16,     0,    17,     0,
-      18,     0,    20,     0,     0,     0,    21,    22,    23,    24,
-       0,     0,     0,     0,     0,     0,     0,    26,    27,    28,
-       0,     0,    29,     0,     0,     0,     0,    31,    32,     0,
-      33,     0,     0,     0,     0,     0,     0,    34,     0,     0,
-       0,     0,     0,     0,    35,    36,    37,    38,    39,     0,
-       0,    40,    41,     0,    43,     0,     0,     0,     0,     0,
-       0,    44,    45,     0,     0,     0,   275,    46,     2,    47,
-       0,     3,     4,     5,     0,     6,     7,     8,     9,    10,
+      74,    75,    76,    77,   171,    79,    76,    80,    83,   133,
+      71,   110,   330,   311,   300,    69,    95,   238,   151,    98,
+      81,    52,   292,   278,   107,   109,   279,   113,   114,   115,
+     116,   117,   118,   101,   102,   316,    87,   123,   124,   125,
+     293,     2,   181,   160,   161,    78,     5,   135,   103,   137,
+     141,   144,    88,   128,   182,   104,    97,   345,   184,    70,
+      16,   105,    17,   331,     2,   106,   164,   111,   248,     5,
+     185,    76,   166,   151,   175,   167,   152,   151,    76,   170,
+     249,   119,    70,    16,   173,   126,   280,   281,   189,   279,
+     301,    99,   100,   279,   241,   157,   158,   159,   160,   161,
+     158,   159,   160,   161,   236,   165,    14,   242,   183,   121,
+     134,   266,   267,   306,   165,   325,   326,   277,   122,   163,
+     174,   136,   180,   165,   169,   186,   187,   172,   190,   210,
+     202,   201,   204,   213,    47,   211,   212,   233,   216,   217,
+     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
+     228,   229,   230,   231,   232,    52,    76,    47,   235,   127,
+     205,   206,   237,   207,   239,   254,   265,   240,   274,   295,
+     270,   244,   245,   299,   246,   247,   294,   250,   251,   252,
+     307,   253,   297,   308,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   312,   313,   332,   340,   338,   346,
+     314,   342,   315,   347,   349,   351,   353,   276,   273,   208,
+     268,   275,   269,   140,   142,   243,   143,     0,   322,     0,
+     324,   271,     0,     0,     0,   334,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   343,     0,
+       0,   282,   283,   336,     0,     0,     0,     0,   339,     0,
+       0,   352,     0,     0,     0,     0,     0,     0,     0,     0,
+      76,   288,     0,     0,     0,     0,     0,     0,     0,     0,
+     291,     0,     0,     0,     0,   296,     0,   302,   303,   304,
+     305,     0,     0,     0,     0,     0,   309,     0,     0,     0,
+       0,     0,   310,     0,     0,     0,     0,     0,     0,     0,
+       0,   317,     0,     0,     0,     0,     0,   318,     0,   320,
+       0,     0,     0,     0,     0,   323,     0,   329,     0,     0,
+       0,   337,   335,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   341,     0,     0,   344,    -5,     1,     0,     0,
+       0,   348,     0,   350,     0,     0,     0,     0,     2,     0,
+     354,     3,     4,     5,     0,     6,     7,     8,     9,    10,
        0,    11,    12,    13,     0,    14,    15,    16,     0,    17,
-       0,    18,     0,    20,     0,     0,     0,    21,    22,    23,
-      24,     0,     0,     0,     0,     0,     0,     0,    26,     0,
-      28,     0,     0,     0,     0,     0,     0,     0,    31,    32,
+       0,    18,    19,    20,     0,     0,     0,    21,    22,    23,
+      24,     0,     0,    25,     0,     0,     0,     0,    26,    27,
+      28,     0,     0,    29,     0,     0,     0,    30,    31,    32,
        0,    33,     0,     0,     0,     0,     0,     0,    34,     0,
        0,     0,     0,     0,     0,    35,    36,    37,    38,    39,
-       0,     0,     0,    41,     0,    43,     0,     0,     0,     0,
-       0,     0,    44,    45,     0,     0,     0,     0,    46,     2,
-      47,     0,     3,     4,     5,     0,     6,     7,     8,     9,
+       0,     0,    40,    41,    42,    43,     0,     0,     0,     0,
+       0,     0,    44,    45,     0,     0,     0,    -5,    46,     2,
+       0,    47,     3,     4,     5,     0,     6,     7,     8,     9,
       10,     0,    11,    12,    13,     0,    14,    15,    16,     0,
-      17,     0,    18,     0,    20,     0,     0,     0,    21,    22,
-      23,     0,     0,     0,     0,     0,     0,     0,     0,    26,
-       0,    28,     0,     0,     0,     0,     0,     0,     0,    31,
+      17,     0,    18,    19,    20,     0,     0,     0,    21,    22,
+      23,    24,     0,     0,    25,     0,     0,     0,     0,    26,
+      27,    28,     0,     0,    29,     0,     0,     0,    30,    31,
       32,     0,    33,     0,     0,     0,     0,     0,     0,    34,
        0,     0,     0,     0,     0,     0,    35,    36,    37,    38,
-      39,     0,     0,     0,    41,     0,    43,     0,     0,     0,
-       0,     0,     2,    44,    45,     3,     4,     5,     0,    46,
-       0,    47,     0,     0,     0,    11,    12,    13,     0,    14,
-      71,    16,     0,    17,     0,     0,     0,    20,     0,     0,
-       0,     0,     0,     0,     0,     0,    89,     0,    90,    91,
-      92,    93,    72,     0,    28,     0,     0,     0,     0,     0,
+      39,     0,     0,    40,    41,    42,    43,     0,     0,     0,
+       0,     0,     0,    44,    45,     0,     0,     0,     0,    46,
+       2,     0,    47,     3,     4,     5,     0,     6,     7,     8,
+       9,    10,     0,    11,    12,    13,     0,    14,    15,    16,
+       0,    17,   321,    18,     0,    20,     0,     0,     0,    21,
+      22,    23,    24,     0,     0,     0,     0,     0,     0,     0,
+      26,    27,    28,     0,     0,    29,     0,     0,     0,     0,
+      31,    32,     0,    33,     0,     0,     0,     0,     0,     0,
+      34,     0,     0,     0,     0,     0,     0,    35,    36,    37,
+      38,    39,     0,     0,    40,    41,     0,    43,     0,     0,
+       0,     0,     0,     0,    44,    45,     0,     0,     0,   289,
+      46,     2,     0,    47,     3,     4,     5,     0,     6,     7,
+       8,     9,    10,     0,    11,    12,    13,     0,    14,    15,
+      16,     0,    17,     0,    18,     0,    20,     0,     0,     0,
+      21,    22,    23,    24,     0,     0,     0,     0,     0,     0,
+       0,    26,    27,    28,     0,     0,    29,     0,     0,     0,
+       0,    31,    32,     0,    33,     0,     0,     0,     0,     0,
+       0,    34,     0,     0,     0,     0,     0,     0,    35,    36,
+      37,    38,    39,     0,     0,    40,    41,     0,    43,     0,
+       0,     0,     0,     0,     0,    44,    45,     0,     0,     0,
+     289,    46,     2,     0,    47,     3,     4,     5,     0,     6,
+       7,     8,     9,    10,     0,    11,    12,    13,     0,    14,
+      15,    16,     0,    17,     0,    18,     0,    20,     0,     0,
+       0,    21,    22,    23,    24,     0,     0,     0,     0,     0,
+       0,     0,    26,     0,    28,     0,     0,     0,     0,     0,
+       0,     0,    31,    32,     0,    33,     0,     0,     0,     0,
+       0,     0,    34,     0,     0,     0,     0,     0,     0,    35,
+      36,    37,    38,    39,     0,     0,     0,    41,     0,    43,
+       0,     0,     0,     0,     0,     0,    44,    45,     0,     0,
+       0,     0,    46,     2,     0,    47,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
+      14,    15,    16,     0,    17,     0,    18,     0,    20,     0,
+       0,     0,    21,    22,    23,     0,     0,     0,     0,     0,
+       0,     0,     0,    26,     0,    28,     0,     0,     0,     0,
+       0,     0,     0,    31,    32,     0,    33,     0,     0,     0,
+       0,     0,     0,    34,     0,     0,     0,     0,     0,     0,
+      35,    36,    37,    38,    39,     0,     0,     0,    41,     0,
+      43,     0,     0,     0,     0,     0,     2,    44,    45,     3,
+       4,     5,     0,    46,     0,     0,    47,     0,     0,    11,
+      12,    13,     0,    14,    72,    16,     0,    17,     0,     0,
+       0,    20,     0,     0,     0,     0,     0,     0,     0,     0,
+      90,     0,    91,    92,    93,    94,    73,     0,    28,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    34,     2,     0,     0,
+       3,     4,     5,    35,    36,    37,    38,    39,     0,     0,
+      11,    12,    13,    43,    14,    72,    16,     0,    17,     0,
+      44,    45,    20,     0,     0,     0,    46,     0,     0,    47,
+       0,     0,     0,    91,     0,    93,     0,    73,     0,    28,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   108,
+       0,     0,     0,     0,     0,     0,     0,    34,     2,     0,
+       0,     3,     4,     5,    35,    36,    37,    38,    39,     0,
+       0,    11,    12,    13,    43,    14,    72,    16,     0,    17,
+       0,    44,    45,    20,     0,     0,     0,    46,     0,     0,
+      47,     0,     2,     0,     0,     3,     4,     5,    73,     0,
+      28,     0,     0,     0,     0,    11,    12,    13,     0,    14,
+      72,    16,     0,    17,     0,     0,     0,    20,    34,     0,
+       0,     0,     0,     0,     0,    35,    36,    37,    38,    39,
+       0,     0,    73,     0,    28,    43,     0,     0,     0,     0,
+       0,     0,    44,    45,     0,     0,     0,     0,    46,     0,
+       0,    47,    34,     0,     0,     0,     0,     0,     0,    35,
+      36,    37,    38,    39,     0,   177,     0,     0,     0,    43,
+       0,     0,     0,     0,     0,     0,    44,    45,     0,     0,
+       0,    91,    82,    93,     0,    47,   145,   146,   147,   148,
+     149,   150,     0,   151,   178,   179,   152,   153,   154,   145,
+     146,   147,   148,   149,   150,     0,   151,     0,     0,   152,
+     153,   154,     0,   155,   156,   157,   158,   159,   160,   161,
+       0,     0,     0,     0,     0,     0,   155,   156,   157,   158,
+     159,   160,   161,   191,     0,     0,     0,     0,     0,   192,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   145,
+     146,   147,   148,   149,   150,     0,   151,     0,     0,   152,
+     153,   154,     0,     0,     0,     0,     0,   193,     0,     0,
+       0,     0,     0,   194,     0,     0,   155,   156,   157,   158,
+     159,   160,   161,   145,   146,   147,   148,   149,   150,     0,
+     151,     0,     0,   152,   153,   154,     0,     0,     0,     0,
+       0,   195,     0,     0,     0,     0,     0,   196,     0,     0,
+     155,   156,   157,   158,   159,   160,   161,   145,   146,   147,
+     148,   149,   150,     0,   151,     0,     0,   152,   153,   154,
+       0,     0,     0,     0,     0,   197,     0,     0,     0,     0,
+       0,   198,     0,     0,   155,   156,   157,   158,   159,   160,
+     161,   145,   146,   147,   148,   149,   150,     0,   151,     0,
+       0,   152,   153,   154,     0,     0,     0,     0,     0,   284,
+       0,     0,     0,     0,     0,     0,     0,     0,   155,   156,
+     157,   158,   159,   160,   161,   145,   146,   147,   148,   149,
+     150,     0,   151,     0,     0,   152,   153,   154,     0,     0,
+       0,     0,     0,   285,     0,     0,     0,     0,     0,     0,
+       0,     0,   155,   156,   157,   158,   159,   160,   161,   145,
+     146,   147,   148,   149,   150,     0,   151,     0,     0,   152,
+     153,   154,     0,     0,     0,     0,     0,   286,     0,     0,
+       0,     0,     0,     0,     0,     0,   155,   156,   157,   158,
+     159,   160,   161,   145,   146,   147,   148,   149,   150,     0,
+     151,     0,     0,   152,   153,   154,     0,     0,     0,     0,
+       0,   287,     0,     0,     0,     0,     0,     0,     0,     0,
+     155,   156,   157,   158,   159,   160,   161,   145,   146,   147,
+     148,   149,   150,     0,   151,     0,     0,   152,   153,   154,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    34,     2,     0,     0,     3,     4,     5,    35,
-      36,    37,    38,    39,     0,     0,    11,    12,    13,    43,
-      14,    71,    16,     0,    17,     0,    44,    45,    20,     0,
-       0,     0,    46,     0,    47,     0,     0,     0,     0,    90,
-       0,    92,     0,    72,     0,    28,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   107,     0,     0,     0,     0,
-       0,     0,     0,    34,     2,     0,     0,     3,     4,     5,
-      35,    36,    37,    38,    39,     0,     0,    11,    12,    13,
-      43,    14,    71,    16,     0,    17,     0,    44,    45,    20,
-       0,     0,     0,    46,     0,    47,     0,     2,     0,     0,
-       3,     4,     5,     0,    72,     0,    28,     0,     0,     0,
-      11,    12,    13,     0,    14,    71,    16,     0,    17,     0,
-       0,     0,    20,     0,    34,     0,     0,     0,     0,     0,
-       0,    35,    36,    37,    38,    39,     0,    72,     0,    28,
-       0,    43,     0,     0,     0,     0,     0,     0,    44,    45,
-       0,     0,     0,     0,    46,     0,    47,    34,     0,     0,
-       0,     0,     0,     0,    35,    36,    37,    38,    39,   170,
-       0,     0,     0,     0,    43,     0,     0,     0,     0,     0,
-       0,    44,    45,     0,     0,     0,    90,    81,    92,    47,
-     138,   139,   140,   141,   142,   143,     0,   144,   171,   172,
-     145,   146,   147,     0,   138,   139,   140,   141,   142,   143,
-       0,   144,     0,     0,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   184,     0,     0,     0,     0,     0,
-     185,   148,   149,   150,   151,   152,   153,   154,     0,     0,
-     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
-     145,   146,   147,     0,     0,     0,     0,     0,   186,     0,
-       0,     0,     0,     0,   187,     0,     0,   148,   149,   150,
-     151,   152,   153,   154,   138,   139,   140,   141,   142,   143,
-       0,   144,     0,     0,   145,   146,   147,     0,     0,     0,
-       0,     0,   188,     0,     0,     0,     0,     0,   189,     0,
-       0,   148,   149,   150,   151,   152,   153,   154,   138,   139,
-     140,   141,   142,   143,     0,   144,     0,     0,   145,   146,
-     147,     0,     0,     0,     0,     0,   190,     0,     0,     0,
-       0,     0,   191,     0,     0,   148,   149,   150,   151,   152,
-     153,   154,   138,   139,   140,   141,   142,   143,     0,   144,
-       0,     0,   145,   146,   147,     0,     0,     0,     0,     0,
-     270,     0,     0,     0,     0,     0,     0,     0,     0,   148,
-     149,   150,   151,   152,   153,   154,   138,   139,   140,   141,
-     142,   143,     0,   144,     0,     0,   145,   146,   147,     0,
-       0,     0,     0,     0,   271,     0,     0,     0,     0,     0,
-       0,     0,     0,   148,   149,   150,   151,   152,   153,   154,
-     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
-     145,   146,   147,     0,     0,     0,     0,     0,   272,     0,
-       0,     0,     0,     0,     0,     0,     0,   148,   149,   150,
-     151,   152,   153,   154,   138,   139,   140,   141,   142,   143,
-       0,   144,     0,     0,   145,   146,   147,     0,     0,     0,
-       0,     0,   273,     0,     0,     0,     0,     0,     0,     0,
-       0,   148,   149,   150,   151,   152,   153,   154,   138,   139,
-     140,   141,   142,   143,     0,   144,     0,     0,   145,   146,
-     147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   204,     0,     0,   148,   149,   150,   151,   152,
-     153,   154,   138,   139,   140,   141,   142,   143,   181,   144,
-       0,     0,   145,   146,   147,     0,   138,   139,   140,   141,
-     142,   143,     0,   144,     0,     0,   145,   146,   147,   148,
-     149,   150,   151,   152,   153,   154,     0,   205,     0,     0,
-       0,     0,     0,   148,   149,   150,   151,   152,   153,   154,
-     138,   139,   140,   141,   142,   143,     0,   144,     0,     0,
-     145,   146,   147,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   148,   149,   150,
-     151,   152,   153,   154,     0,     0,     0,   196,   138,   139,
-     140,   141,   142,   143,     0,   144,     0,     0,   145,   146,
-     147,     0,     0,     0,     0,     0,   192,   193,     0,     0,
-       0,     0,     0,     0,     0,   148,   149,   150,   151,   152,
-     153,   154,   138,   139,   140,   141,   142,   143,     0,   144,
-       0,     0,   145,   146,   147,   138,   139,   140,   141,     0,
-       0,     0,   144,     0,     0,   145,   146,   147,     0,   148,
-     149,   150,   151,   152,   153,   154,     0,     0,     0,     0,
-       0,     0,   148,   149,   150,   151,   152,   153,   154
+       0,   214,     0,     0,   155,   156,   157,   158,   159,   160,
+     161,   145,   146,   147,   148,   149,   150,   188,   151,     0,
+       0,   152,   153,   154,     0,   145,   146,   147,   148,   149,
+     150,     0,   151,     0,     0,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,     0,   215,     0,     0,     0,
+       0,     0,   155,   156,   157,   158,   159,   160,   161,   145,
+     146,   147,   148,   149,   150,     0,   151,     0,     0,   152,
+     153,   154,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   155,   156,   157,   158,
+     159,   160,   161,     0,     0,     0,   203,   145,   146,   147,
+     148,   149,   150,     0,   151,     0,     0,   152,   153,   154,
+       0,     0,     0,     0,     0,   199,   200,     0,     0,     0,
+       0,     0,     0,     0,   155,   156,   157,   158,   159,   160,
+     161,   145,   146,   147,   148,   149,   150,     0,   151,     0,
+       0,   152,   153,   154,   145,   146,   147,   148,     0,     0,
+       0,   151,     0,     0,   152,   153,   154,     0,   155,   156,
+     157,   158,   159,   160,   161,     0,     0,     0,     0,     0,
+       0,   155,   156,   157,   158,   159,   160,   161
 };
 
 static const yytype_int16 yycheck[] =
 {
-       7,     8,     9,     9,    85,    12,    13,    13,    15,     0,
-       4,    32,   164,    39,   281,   103,    23,    53,   106,    26,
-      14,     0,   101,   266,    31,    32,   102,    34,    35,    36,
-      37,    38,    39,    73,    38,    30,    76,    44,    45,    46,
-      47,    47,    56,    73,   287,    58,    59,    54,   101,    56,
-      57,    58,    56,   106,    68,    95,    96,    97,    98,    99,
-     327,   105,   106,    56,    90,    72,    96,    97,    98,    99,
-      77,    77,    73,    94,    81,    68,    30,    84,    84,   231,
-      15,    16,    56,    90,   101,    12,   101,   108,   169,   106,
-      17,   106,    30,   103,    68,    30,   106,    98,    99,    29,
-      30,    30,    37,    30,    31,   103,    33,   101,   106,    30,
-     101,    30,    30,    30,   102,    68,   106,   106,    30,   130,
-     131,   205,   129,   106,    48,    56,   133,    55,   106,   106,
-      30,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,   127,   156,
-      30,   158,    30,    30,    30,   162,    55,    55,   106,    30,
-     167,    56,    30,   106,   171,   172,    91,   174,   175,    92,
-     177,   178,   179,    40,   181,    39,   260,   184,   185,   186,
-     187,   188,   189,   190,   191,   192,   193,    30,    90,   200,
-      91,    30,   203,    55,    91,   127,    90,   204,    90,   307,
-     284,    57,   286,   170,    57,    57,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   302,    -1,
-     304,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   312,    -1,
-      -1,   238,   239,   314,    -1,    -1,    -1,   318,    -1,    -1,
-     324,    -1,    -1,    -1,    -1,    -1,    -1,   258,   332,    -1,
-     257,   257,   263,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   270,   271,   272,   273,    -1,    -1,   280,
-      -1,    -1,   279,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   295,    -1,   297,   294,    -1,    -1,
-      -1,    -1,   303,    -1,    -1,   306,    -1,    -1,    -1,    -1,
-      -1,   308,   313,    -1,    -1,    -1,   317,    -1,    -1,    -1,
-      -1,   322,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,
-     331,    -1,   333,    -1,    12,    -1,   337,    15,    16,    17,
-      -1,    19,    20,    21,    22,    23,    -1,    25,    26,    27,
-      -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    37,
-      -1,    -1,    -1,    41,    42,    43,    44,    -1,    -1,    47,
-      -1,    -1,    -1,    -1,    52,    53,    54,    -1,    -1,    57,
-      -1,    -1,    -1,    61,    62,    63,    -1,    65,    -1,    -1,
-      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,
-      -1,    79,    80,    81,    82,    83,    -1,    -1,    86,    87,
-      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,
-      -1,    -1,    -1,   101,   102,    12,   104,    -1,    15,    16,
-      17,    -1,    19,    20,    21,    22,    23,    -1,    25,    26,
-      27,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
-      37,    -1,    -1,    -1,    41,    42,    43,    44,    -1,    -1,
-      47,    -1,    -1,    -1,    -1,    52,    53,    54,    -1,    -1,
-      57,    -1,    -1,    -1,    61,    62,    63,    -1,    65,    -1,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
-      -1,    -1,    79,    80,    81,    82,    83,    -1,    -1,    86,
-      87,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,
-      97,    -1,    -1,    -1,    -1,   102,    12,   104,    -1,    15,
-      16,    17,    -1,    19,    20,    21,    22,    23,    -1,    25,
-      26,    27,    -1,    29,    30,    31,    -1,    33,    34,    35,
-      -1,    37,    -1,    -1,    -1,    41,    42,    43,    44,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    54,    -1,
-      -1,    57,    -1,    -1,    -1,    -1,    62,    63,    -1,    65,
-      -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
-      -1,    -1,    -1,    79,    80,    81,    82,    83,    -1,    -1,
-      86,    87,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,
-      96,    97,    -1,    -1,    -1,   101,   102,    12,   104,    -1,
-      15,    16,    17,    -1,    19,    20,    21,    22,    23,    -1,
-      25,    26,    27,    -1,    29,    30,    31,    -1,    33,    -1,
-      35,    -1,    37,    -1,    -1,    -1,    41,    42,    43,    44,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    54,
-      -1,    -1,    57,    -1,    -1,    -1,    -1,    62,    63,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
-      -1,    -1,    -1,    -1,    79,    80,    81,    82,    83,    -1,
-      -1,    86,    87,    -1,    89,    -1,    -1,    -1,    -1,    -1,
-      -1,    96,    97,    -1,    -1,    -1,   101,   102,    12,   104,
-      -1,    15,    16,    17,    -1,    19,    20,    21,    22,    23,
+       7,     8,     9,     9,    86,    12,    13,    13,    15,     0,
+       4,    32,    39,   295,   280,   101,    23,   171,    73,    26,
+      14,     0,    38,   101,    31,    32,   104,    34,    35,    36,
+      37,    38,    39,    15,    16,   301,    53,    44,    45,    46,
+      56,    12,    56,    98,    99,    30,    17,    54,    30,    56,
+      57,    58,    30,    47,    68,    37,    30,   339,    56,    30,
+      31,    30,    33,    90,    12,    30,    73,    30,    56,    17,
+      68,    78,    78,    73,    95,    82,    76,    73,    85,    85,
+      68,    30,    30,    31,    91,    33,   101,   241,   109,   104,
+     101,    58,    59,   104,   176,    95,    96,    97,    98,    99,
+      96,    97,    98,    99,   103,   104,    29,    30,   102,    30,
+     101,   103,   104,   103,   104,    39,    40,   215,   102,   102,
+      48,    68,    30,   104,   104,    56,    55,   104,   104,   136,
+      30,   104,   107,   140,   105,   137,   138,    30,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   134,   163,   105,   165,   107,
+     106,   104,   169,   104,    30,    30,    30,   174,    55,    55,
+      33,   178,   179,    30,   181,   182,   274,   184,   185,   186,
+      91,   188,   104,    56,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   200,    92,    30,    30,   104,    90,    30,
+     298,    91,   300,    91,    55,    90,    90,   214,   210,   134,
+     204,   213,   206,    57,    57,   177,    57,    -1,   316,    -1,
+     318,   207,    -1,    -1,    -1,   323,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   336,    -1,
+      -1,   248,   249,   325,    -1,    -1,    -1,    -1,   330,    -1,
+      -1,   349,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     267,   267,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     272,    -1,    -1,    -1,    -1,   277,    -1,   284,   285,   286,
+     287,    -1,    -1,    -1,    -1,    -1,   293,    -1,    -1,    -1,
+      -1,    -1,   294,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   308,    -1,    -1,    -1,    -1,    -1,   309,    -1,   311,
+      -1,    -1,    -1,    -1,    -1,   317,    -1,   319,    -1,    -1,
+      -1,   328,   324,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   334,    -1,    -1,   337,     0,     1,    -1,    -1,
+      -1,   343,    -1,   345,    -1,    -1,    -1,    -1,    12,    -1,
+     352,    15,    16,    17,    -1,    19,    20,    21,    22,    23,
       -1,    25,    26,    27,    -1,    29,    30,    31,    -1,    33,
-      -1,    35,    -1,    37,    -1,    -1,    -1,    41,    42,    43,
-      44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,    -1,
-      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    63,
+      -1,    35,    36,    37,    -1,    -1,    -1,    41,    42,    43,
+      44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    52,    53,
+      54,    -1,    -1,    57,    -1,    -1,    -1,    61,    62,    63,
       -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
       -1,    -1,    -1,    -1,    -1,    79,    80,    81,    82,    83,
-      -1,    -1,    -1,    87,    -1,    89,    -1,    -1,    -1,    -1,
-      -1,    -1,    96,    97,    -1,    -1,    -1,    -1,   102,    12,
-     104,    -1,    15,    16,    17,    -1,    19,    20,    21,    22,
+      -1,    -1,    86,    87,    88,    89,    -1,    -1,    -1,    -1,
+      -1,    -1,    96,    97,    -1,    -1,    -1,   101,   102,    12,
+      -1,   105,    15,    16,    17,    -1,    19,    20,    21,    22,
       23,    -1,    25,    26,    27,    -1,    29,    30,    31,    -1,
-      33,    -1,    35,    -1,    37,    -1,    -1,    -1,    41,    42,
-      43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,
-      -1,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
+      33,    -1,    35,    36,    37,    -1,    -1,    -1,    41,    42,
+      43,    44,    -1,    -1,    47,    -1,    -1,    -1,    -1,    52,
+      53,    54,    -1,    -1,    57,    -1,    -1,    -1,    61,    62,
       63,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
       -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    82,
-      83,    -1,    -1,    -1,    87,    -1,    89,    -1,    -1,    -1,
-      -1,    -1,    12,    96,    97,    15,    16,    17,    -1,   102,
-      -1,   104,    -1,    -1,    -1,    25,    26,    27,    -1,    29,
-      30,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,    49,
-      50,    51,    52,    -1,    54,    -1,    -1,    -1,    -1,    -1,
+      83,    -1,    -1,    86,    87,    88,    89,    -1,    -1,    -1,
+      -1,    -1,    -1,    96,    97,    -1,    -1,    -1,    -1,   102,
+      12,    -1,   105,    15,    16,    17,    -1,    19,    20,    21,
+      22,    23,    -1,    25,    26,    27,    -1,    29,    30,    31,
+      -1,    33,    34,    35,    -1,    37,    -1,    -1,    -1,    41,
+      42,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      52,    53,    54,    -1,    -1,    57,    -1,    -1,    -1,    -1,
+      62,    63,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
+      72,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
+      82,    83,    -1,    -1,    86,    87,    -1,    89,    -1,    -1,
+      -1,    -1,    -1,    -1,    96,    97,    -1,    -1,    -1,   101,
+     102,    12,    -1,   105,    15,    16,    17,    -1,    19,    20,
+      21,    22,    23,    -1,    25,    26,    27,    -1,    29,    30,
+      31,    -1,    33,    -1,    35,    -1,    37,    -1,    -1,    -1,
+      41,    42,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    52,    53,    54,    -1,    -1,    57,    -1,    -1,    -1,
+      -1,    62,    63,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
+      81,    82,    83,    -1,    -1,    86,    87,    -1,    89,    -1,
+      -1,    -1,    -1,    -1,    -1,    96,    97,    -1,    -1,    -1,
+     101,   102,    12,    -1,   105,    15,    16,    17,    -1,    19,
+      20,    21,    22,    23,    -1,    25,    26,    27,    -1,    29,
+      30,    31,    -1,    33,    -1,    35,    -1,    37,    -1,    -1,
+      -1,    41,    42,    43,    44,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    52,    -1,    54,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    62,    63,    -1,    65,    -1,    -1,    -1,    -1,
+      -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+      80,    81,    82,    83,    -1,    -1,    -1,    87,    -1,    89,
+      -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    -1,    -1,
+      -1,    -1,   102,    12,    -1,   105,    15,    16,    17,    -1,
+      19,    20,    21,    22,    23,    -1,    25,    26,    27,    -1,
+      29,    30,    31,    -1,    33,    -1,    35,    -1,    37,    -1,
+      -1,    -1,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    52,    -1,    54,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    62,    63,    -1,    65,    -1,    -1,    -1,
+      -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,
+      79,    80,    81,    82,    83,    -1,    -1,    -1,    87,    -1,
+      89,    -1,    -1,    -1,    -1,    -1,    12,    96,    97,    15,
+      16,    17,    -1,   102,    -1,    -1,   105,    -1,    -1,    25,
+      26,    27,    -1,    29,    30,    31,    -1,    33,    -1,    -1,
+      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      46,    -1,    48,    49,    50,    51,    52,    -1,    54,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    72,    12,    -1,    -1,
+      15,    16,    17,    79,    80,    81,    82,    83,    -1,    -1,
+      25,    26,    27,    89,    29,    30,    31,    -1,    33,    -1,
+      96,    97,    37,    -1,    -1,    -1,   102,    -1,    -1,   105,
+      -1,    -1,    -1,    48,    -1,    50,    -1,    52,    -1,    54,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,    12,    -1,
+      -1,    15,    16,    17,    79,    80,    81,    82,    83,    -1,
+      -1,    25,    26,    27,    89,    29,    30,    31,    -1,    33,
+      -1,    96,    97,    37,    -1,    -1,    -1,   102,    -1,    -1,
+     105,    -1,    12,    -1,    -1,    15,    16,    17,    52,    -1,
+      54,    -1,    -1,    -1,    -1,    25,    26,    27,    -1,    29,
+      30,    31,    -1,    33,    -1,    -1,    -1,    37,    72,    -1,
+      -1,    -1,    -1,    -1,    -1,    79,    80,    81,    82,    83,
+      -1,    -1,    52,    -1,    54,    89,    -1,    -1,    -1,    -1,
+      -1,    -1,    96,    97,    -1,    -1,    -1,    -1,   102,    -1,
+      -1,   105,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+      80,    81,    82,    83,    -1,    45,    -1,    -1,    -1,    89,
+      -1,    -1,    -1,    -1,    -1,    -1,    96,    97,    -1,    -1,
+      -1,    48,   102,    50,    -1,   105,    66,    67,    68,    69,
+      70,    71,    -1,    73,    74,    75,    76,    77,    78,    66,
+      67,    68,    69,    70,    71,    -1,    73,    -1,    -1,    76,
+      77,    78,    -1,    93,    94,    95,    96,    97,    98,    99,
+      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
+      97,    98,    99,    50,    -1,    -1,    -1,    -1,    -1,    56,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
+      67,    68,    69,    70,    71,    -1,    73,    -1,    -1,    76,
+      77,    78,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
+      -1,    -1,    -1,    56,    -1,    -1,    93,    94,    95,    96,
+      97,    98,    99,    66,    67,    68,    69,    70,    71,    -1,
+      73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
+      -1,    50,    -1,    -1,    -1,    -1,    -1,    56,    -1,    -1,
+      93,    94,    95,    96,    97,    98,    99,    66,    67,    68,
+      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
+      -1,    56,    -1,    -1,    93,    94,    95,    96,    97,    98,
+      99,    66,    67,    68,    69,    70,    71,    -1,    73,    -1,
+      -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    50,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
+      95,    96,    97,    98,    99,    66,    67,    68,    69,    70,
+      71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,
+      -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    93,    94,    95,    96,    97,    98,    99,    66,
+      67,    68,    69,    70,    71,    -1,    73,    -1,    -1,    76,
+      77,    78,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
+      97,    98,    99,    66,    67,    68,    69,    70,    71,    -1,
+      73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
+      -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      93,    94,    95,    96,    97,    98,    99,    66,    67,    68,
+      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    72,    12,    -1,    -1,    15,    16,    17,    79,
-      80,    81,    82,    83,    -1,    -1,    25,    26,    27,    89,
-      29,    30,    31,    -1,    33,    -1,    96,    97,    37,    -1,
-      -1,    -1,   102,    -1,   104,    -1,    -1,    -1,    -1,    48,
-      -1,    50,    -1,    52,    -1,    54,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    72,    12,    -1,    -1,    15,    16,    17,
-      79,    80,    81,    82,    83,    -1,    -1,    25,    26,    27,
-      89,    29,    30,    31,    -1,    33,    -1,    96,    97,    37,
-      -1,    -1,    -1,   102,    -1,   104,    -1,    12,    -1,    -1,
-      15,    16,    17,    -1,    52,    -1,    54,    -1,    -1,    -1,
-      25,    26,    27,    -1,    29,    30,    31,    -1,    33,    -1,
-      -1,    -1,    37,    -1,    72,    -1,    -1,    -1,    -1,    -1,
-      -1,    79,    80,    81,    82,    83,    -1,    52,    -1,    54,
-      -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,
-      -1,    -1,    -1,    -1,   102,    -1,   104,    72,    -1,    -1,
-      -1,    -1,    -1,    -1,    79,    80,    81,    82,    83,    45,
-      -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,
-      -1,    96,    97,    -1,    -1,    -1,    48,   102,    50,   104,
-      66,    67,    68,    69,    70,    71,    -1,    73,    74,    75,
-      76,    77,    78,    -1,    66,    67,    68,    69,    70,    71,
-      -1,    73,    -1,    -1,    76,    77,    78,    93,    94,    95,
-      96,    97,    98,    99,    50,    -1,    -1,    -1,    -1,    -1,
-      56,    93,    94,    95,    96,    97,    98,    99,    -1,    -1,
-      66,    67,    68,    69,    70,    71,    -1,    73,    -1,    -1,
-      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-      -1,    -1,    -1,    -1,    56,    -1,    -1,    93,    94,    95,
-      96,    97,    98,    99,    66,    67,    68,    69,    70,    71,
-      -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,
-      -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    56,    -1,
-      -1,    93,    94,    95,    96,    97,    98,    99,    66,    67,
-      68,    69,    70,    71,    -1,    73,    -1,    -1,    76,    77,
-      78,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,
-      -1,    -1,    56,    -1,    -1,    93,    94,    95,    96,    97,
-      98,    99,    66,    67,    68,    69,    70,    71,    -1,    73,
-      -1,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,
-      50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
-      94,    95,    96,    97,    98,    99,    66,    67,    68,    69,
-      70,    71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,
-      -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    93,    94,    95,    96,    97,    98,    99,
-      66,    67,    68,    69,    70,    71,    -1,    73,    -1,    -1,
-      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
-      96,    97,    98,    99,    66,    67,    68,    69,    70,    71,
-      -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,
-      -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    93,    94,    95,    96,    97,    98,    99,    66,    67,
-      68,    69,    70,    71,    -1,    73,    -1,    -1,    76,    77,
-      78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    56,    -1,    -1,    93,    94,    95,    96,    97,
-      98,    99,    66,    67,    68,    69,    70,    71,    58,    73,
-      -1,    -1,    76,    77,    78,    -1,    66,    67,    68,    69,
-      70,    71,    -1,    73,    -1,    -1,    76,    77,    78,    93,
-      94,    95,    96,    97,    98,    99,    -1,   101,    -1,    -1,
-      -1,    -1,    -1,    93,    94,    95,    96,    97,    98,    99,
-      66,    67,    68,    69,    70,    71,    -1,    73,    -1,    -1,
-      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
-      96,    97,    98,    99,    -1,    -1,    -1,   103,    66,    67,
-      68,    69,    70,    71,    -1,    73,    -1,    -1,    76,    77,
-      78,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,
-      98,    99,    66,    67,    68,    69,    70,    71,    -1,    73,
-      -1,    -1,    76,    77,    78,    66,    67,    68,    69,    -1,
-      -1,    -1,    73,    -1,    -1,    76,    77,    78,    -1,    93,
-      94,    95,    96,    97,    98,    99,    -1,    -1,    -1,    -1,
-      -1,    -1,    93,    94,    95,    96,    97,    98,    99
+      -1,    56,    -1,    -1,    93,    94,    95,    96,    97,    98,
+      99,    66,    67,    68,    69,    70,    71,    58,    73,    -1,
+      -1,    76,    77,    78,    -1,    66,    67,    68,    69,    70,
+      71,    -1,    73,    -1,    -1,    76,    77,    78,    93,    94,
+      95,    96,    97,    98,    99,    -1,   101,    -1,    -1,    -1,
+      -1,    -1,    93,    94,    95,    96,    97,    98,    99,    66,
+      67,    68,    69,    70,    71,    -1,    73,    -1,    -1,    76,
+      77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
+      97,    98,    99,    -1,    -1,    -1,   103,    66,    67,    68,
+      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
+      -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    98,
+      99,    66,    67,    68,    69,    70,    71,    -1,    73,    -1,
+      -1,    76,    77,    78,    66,    67,    68,    69,    -1,    -1,
+      -1,    73,    -1,    -1,    76,    77,    78,    -1,    93,    94,
+      95,    96,    97,    98,    99,    -1,    -1,    -1,    -1,    -1,
+      -1,    93,    94,    95,    96,    97,    98,    99
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1261,37 +1279,38 @@ static const yytype_uint8 yystos[] =
       23,    25,    26,    27,    29,    30,    31,    33,    35,    36,
       37,    41,    42,    43,    44,    47,    52,    53,    54,    57,
       61,    62,    63,    65,    72,    79,    80,    81,    82,    83,
-      86,    87,    88,    89,    96,    97,   102,   104,   108,   109,
-     110,   111,   113,   114,   118,   119,   120,   125,   126,   127,
-     128,   129,   130,   134,   136,   138,   141,   145,   101,    30,
-     127,    30,    52,   128,   128,   128,   146,    30,   128,   146,
-     127,   102,   128,   147,   137,   140,    53,    30,   131,    46,
-      48,    49,    50,    51,   128,   135,    30,   128,    58,    59,
-      15,    16,    30,    37,    30,    30,   128,    64,   128,   135,
-      30,   133,   128,   128,   128,   128,   128,   128,    30,   132,
-      30,   102,   128,   128,   128,   146,     0,   101,   128,    68,
-     128,   112,   117,   120,   128,   130,   145,   128,    66,    67,
-      68,    69,    70,    71,    73,    76,    77,    78,    93,    94,
-      95,    96,    97,    98,    99,   122,   102,   128,   106,   146,
-     128,   146,   106,   146,   122,   106,   128,    48,   135,   139,
-      45,    74,    75,    30,    56,    68,   127,    56,    68,    56,
-      55,    58,   135,   106,    50,    56,    50,    56,    50,    56,
-      50,    56,    84,    85,   106,    30,   103,   105,   109,   123,
-     128,   123,   123,   128,    56,   101,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,    30,   142,   128,   103,   128,   142,    30,
-     128,   122,    30,   129,   128,   128,   128,   128,    56,    68,
-     128,   128,   128,   128,    30,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,    30,   103,   106,   124,   123,
-      55,   123,   128,   124,   101,   106,   101,   142,   128,   128,
-      50,    50,    50,    50,   146,   101,   113,   123,    38,    56,
-     124,    55,   123,   106,   144,    30,   144,   101,   128,   128,
-     128,   128,   103,    91,    56,   128,   123,   111,    92,    30,
-     124,   124,   144,   128,   123,    40,   115,   116,   121,   123,
-      34,   124,   123,   124,    39,   123,   115,   128,    39,    90,
-      30,   143,   124,   123,   122,    90,   123,   122,   106,   123,
-      91,   124,    55,   111,    30,    91,   123,   124,   123,    90,
-     123,    90
+      86,    87,    88,    89,    96,    97,   102,   105,   109,   110,
+     111,   112,   114,   115,   119,   120,   121,   126,   127,   128,
+     129,   130,   131,   135,   137,   139,   142,   146,   149,   101,
+      30,   128,    30,    52,   129,   129,   129,   147,    30,   129,
+     147,   128,   102,   129,   148,   138,   141,    53,    30,   132,
+      46,    48,    49,    50,    51,   129,   136,    30,   129,    58,
+      59,    15,    16,    30,    37,    30,    30,   129,    64,   129,
+     136,    30,   134,   129,   129,   129,   129,   129,   129,    30,
+     133,    30,   102,   129,   129,   129,    33,   107,   128,   150,
+     151,   152,   153,     0,   101,   129,    68,   129,   113,   118,
+     121,   129,   131,   146,   129,    66,    67,    68,    69,    70,
+      71,    73,    76,    77,    78,    93,    94,    95,    96,    97,
+      98,    99,   123,   102,   129,   104,   147,   129,   147,   104,
+     147,   123,   104,   129,    48,   136,   140,    45,    74,    75,
+      30,    56,    68,   128,    56,    68,    56,    55,    58,   136,
+     104,    50,    56,    50,    56,    50,    56,    50,    56,    84,
+      85,   104,    30,   103,   107,   106,   104,   104,   110,   124,
+     129,   124,   124,   129,    56,   101,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,    30,   143,   129,   103,   129,   143,    30,
+     129,   123,    30,   130,   129,   129,   129,   129,    56,    68,
+     129,   129,   129,   129,    30,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,    30,   103,   104,   128,   128,
+      33,   153,   125,   124,    55,   124,   129,   125,   101,   104,
+     101,   143,   129,   129,    50,    50,    50,    50,   147,   101,
+     114,   124,    38,    56,   125,    55,   124,   104,   145,    30,
+     145,   101,   129,   129,   129,   129,   103,    91,    56,   129,
+     124,   112,    92,    30,   125,   125,   145,   129,   124,   116,
+     124,    34,   125,   124,   125,    39,    40,   117,   122,   124,
+      39,    90,    30,   144,   125,   124,   123,   129,    90,   123,
+     104,   124,    91,   125,   124,   112,    30,    91,   124,    55,
+     124,    90,   125,    90,   124
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2438,39 +2457,39 @@ yyreduce:
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 57:
-#line 388 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 389 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(1) - (1)].code); ;}
     break;
 
-  case 59:
-#line 390 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 391 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 60:
-#line 393 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 394 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 61:
-#line 396 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 397 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 62:
-#line 397 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 398 "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 63:
-#line 400 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 401 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2481,8 +2500,8 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 64:
-#line 408 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 409 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
@@ -2491,122 +2510,117 @@ yyreduce:
 		g_lingo->code2(e, f); ;}
     break;
 
-  case 65:
-#line 414 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 415 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].objectfield).s->c_str());
 		g_lingo->codeInt((yyvsp[(1) - (1)].objectfield).e); ;}
     break;
 
-  case 67:
-#line 419 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_add); ;}
-    break;
-
   case 68:
 #line 420 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_sub); ;}
+    { g_lingo->code1(LC::c_add); ;}
     break;
 
   case 69:
 #line 421 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_mul); ;}
+    { g_lingo->code1(LC::c_sub); ;}
     break;
 
   case 70:
 #line 422 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_div); ;}
+    { g_lingo->code1(LC::c_mul); ;}
     break;
 
   case 71:
 #line 423 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_mod); ;}
+    { g_lingo->code1(LC::c_div); ;}
     break;
 
   case 72:
 #line 424 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_gt); ;}
+    { g_lingo->code1(LC::c_mod); ;}
     break;
 
   case 73:
 #line 425 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_lt); ;}
+    { g_lingo->code1(LC::c_gt); ;}
     break;
 
   case 74:
 #line 426 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_eq); ;}
+    { g_lingo->code1(LC::c_lt); ;}
     break;
 
   case 75:
 #line 427 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_neq); ;}
+    { g_lingo->code1(LC::c_eq); ;}
     break;
 
   case 76:
 #line 428 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_ge); ;}
+    { g_lingo->code1(LC::c_neq); ;}
     break;
 
   case 77:
 #line 429 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_le); ;}
+    { g_lingo->code1(LC::c_ge); ;}
     break;
 
   case 78:
 #line 430 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_and); ;}
+    { g_lingo->code1(LC::c_le); ;}
     break;
 
   case 79:
 #line 431 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_or); ;}
+    { g_lingo->code1(LC::c_and); ;}
     break;
 
   case 80:
 #line 432 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_not); ;}
+    { g_lingo->code1(LC::c_or); ;}
     break;
 
   case 81:
 #line 433 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_ampersand); ;}
+    { g_lingo->code1(LC::c_not); ;}
     break;
 
   case 82:
 #line 434 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_concat); ;}
+    { g_lingo->code1(LC::c_ampersand); ;}
     break;
 
   case 83:
 #line 435 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_contains); ;}
+    { g_lingo->code1(LC::c_concat); ;}
     break;
 
   case 84:
 #line 436 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(LC::c_starts); ;}
+    { g_lingo->code1(LC::c_contains); ;}
     break;
 
   case 85:
 #line 437 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
+    { g_lingo->code1(LC::c_starts); ;}
     break;
 
   case 86:
 #line 438 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(LC::c_negate); ;}
+    { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
   case 87:
 #line 439 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
+    { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(LC::c_negate); ;}
     break;
 
   case 88:
 #line 440 "engines/director/lingo/lingo-gr.y"
-    { (yyval.code) = g_lingo->code1(LC::c_arraypush); g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
+    { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 89:
@@ -2975,9 +2989,61 @@ yyreduce:
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
+  case 161:
+#line 633 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
+    break;
+
+  case 162:
+#line 636 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); ;}
+    break;
+
+  case 163:
+#line 637 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); ;}
+    break;
+
+  case 164:
+#line 638 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[(1) - (1)].narg)); ;}
+    break;
+
+  case 165:
+#line 639 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[(1) - (1)].narg)); ;}
+    break;
+
+  case 166:
+#line 642 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = 1; ;}
+    break;
+
+  case 167:
+#line 643 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
+    break;
+
+  case 168:
+#line 646 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = 1; ;}
+    break;
+
+  case 169:
+#line 647 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
+    break;
+
+  case 170:
+#line 650 "engines/director/lingo/lingo-gr.y"
+    {
+		g_lingo->code1(LC::c_symbolpush);
+		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str()); ;}
+    break;
+
 
 /* Line 1267 of yacc.c.  */
-#line 2981 "engines/director/lingo/lingo-gr.cpp"
+#line 3047 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3191,6 +3257,6 @@ yyreturn:
 }
 
 
-#line 633 "engines/director/lingo/lingo-gr.y"
+#line 656 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 668c52f..b4d8486 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -116,8 +116,8 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token tON tME tENDIF tENDREPEAT tENDTELL
 
 %type<code> asgn begin elseif end expr if when repeatwhile
-%type<code> repeatwith stmtlist tell reference simpleexpr
-%type<narg> argdef arglist nonemptyarglist
+%type<code> repeatwith stmtlist tell reference simpleexpr list valuelist
+%type<narg> argdef arglist nonemptyarglist linearlist proplist
 %type<s> on
 
 %left tAND tOR
@@ -287,7 +287,7 @@ ifstmt: if expr end tTHEN stmtlist end elseifstmtlist end tENDIF {
 	;
 
 elseifstmtlist:	/* nothing */
-	| elseifstmt elseifstmtlist
+	| elseifstmtlist elseifstmt
 	;
 
 elseifstmt: elseif expr end tTHEN stmtlist end {
@@ -383,6 +383,7 @@ simpleexpr: INT		{
 		$$ = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString($1->c_str());
 		delete $1; }
+	| list
 	;
 
 expr: simpleexpr { $$ = $1; }
@@ -437,7 +438,6 @@ expr: simpleexpr { $$ = $1; }
 	| '+' expr  %prec UNARY		{ $$ = $2; }
 	| '-' expr  %prec UNARY		{ $$ = $2; g_lingo->code1(LC::c_negate); }
 	| '(' expr ')'				{ $$ = $2; }
-	| '[' arglist ']'			{ $$ = g_lingo->code1(LC::c_arraypush); g_lingo->codeArray($2); }
 	| tSPRITE expr tINTERSECTS expr 	{ g_lingo->code1(LC::c_intersects); }
 	| tSPRITE expr tWITHIN expr		 	{ g_lingo->code1(LC::c_within); }
 	| tCHAR expr tOF expr				{ g_lingo->code1(LC::c_charOf); }
@@ -630,4 +630,27 @@ nonemptyarglist:  expr			{ $$ = 1; }
 	| nonemptyarglist ',' expr	{ $$ = $1 + 1; }
 	;
 
+list: '[' valuelist ']'		{ $$ = $2; }
+	;
+
+valuelist:	/* nothing */	{ $$ = g_lingo->code2(LC::c_arraypush, 0); }
+	| ':'					{ $$ = g_lingo->code2(LC::c_proparraypush, 0); }
+	| linearlist { $$ = g_lingo->code1(LC::c_arraypush); $$ = g_lingo->codeInt($1); }
+	| proplist	 { $$ = g_lingo->code1(LC::c_proparraypush); $$ = g_lingo->codeInt($1); }
+	;
+
+linearlist: simpleexpr			{ $$ = 1; }
+	| linearlist ',' simpleexpr { $$ = $1 + 1; }
+	;
+
+proplist:  proppair			{ $$ = 1; }
+	| proplist ',' proppair	{ $$ = $1 + 1; }
+	;
+
+proppair: SYMBOL ':' simpleexpr {
+		g_lingo->code1(LC::c_symbolpush);
+		g_lingo->codeString($1->c_str()); }
+	;
+
+
 %%
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index b67fafe..bd81c4c 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -205,7 +205,6 @@ public:
 	int codeString(const char *s);
 	void codeLabel(int label);
 	int codeInt(int val);
-	int codeArray(int arraySize);
 
 	int calcStringAlignment(const char *s) {
 		return calcCodeAlignment(strlen(s) + 1);




More information about the Scummvm-git-logs mailing list