diff options
| -rw-r--r-- | engines/director/lingo/lingo-code.cpp | 16 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-codegen.cpp | 9 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-gr.cpp | 1175 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-gr.y | 1 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-lex.cpp | 2 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-lex.l | 2 | ||||
| -rw-r--r-- | engines/director/lingo/lingo.h | 2 | ||||
| -rw-r--r-- | engines/director/lingo/tests/arrays.lingo | 2 | 
8 files changed, 629 insertions, 580 deletions
| diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index 82c7d2780f..f55c6946b1 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -55,6 +55,7 @@ static struct FuncDescr {  } funcDescr[] = {  	{ 0,					"STOP",			"" },  	{ Lingo::c_xpop,		"c_xpop",		"" }, +	{ Lingo::c_arraypush,	"c_arraypush",		"i" },  	{ Lingo::c_printtop,	"c_printtop",	"" },  	{ Lingo::c_constpush,	"c_constpush",	"i" },  	{ Lingo::c_voidpush,	"c_voidpush",	"" }, @@ -233,6 +234,21 @@ void Lingo::c_symbolpush() {  	g_lingo->push(Datum(new Common::String(s)));  } +void Lingo::c_arraypush() { +	Datum d; +	inst v = (*g_lingo->_currentScript)[g_lingo->_pc++]; +	int arraySize = READ_UINT32(&v); + +	warning("STUB: c_arraypush()"); + +	for (int i = 0; i < arraySize; i++) +		g_lingo->pop(); + +	d.u.i = arraySize; +	d.type = INT; +	g_lingo->push(d); +} +  void Lingo::c_varpush() {  	Common::String name((char *)&(*g_lingo->_currentScript)[g_lingo->_pc]);  	Datum d; diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp index 1d72aec36b..b30bf03cde 100644 --- a/engines/director/lingo/lingo-codegen.cpp +++ b/engines/director/lingo/lingo-codegen.cpp @@ -272,6 +272,15 @@ int Lingo::codeConst(int val) {  	return res;  } +int Lingo::codeArray(int arraySize) { +	int res = g_lingo->code1(g_lingo->c_arraypush); +	inst i = 0; +	WRITE_UINT32(&i, arraySize); +	g_lingo->code1(i); + +	return res; +} +  void Lingo::codeArg(Common::String *s) {  	_argstack.push_back(s);  } diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index 89e64cc75d..03ac16c6a8 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -518,18 +518,18 @@ union yyalloc  #endif  /* YYFINAL -- State number of the termination state.  */ -#define YYFINAL  108 +#define YYFINAL  110  /* YYLAST -- Last index in YYTABLE.  */ -#define YYLAST   1596 +#define YYLAST   1648  /* YYNTOKENS -- Number of terminals.  */ -#define YYNTOKENS  94 +#define YYNTOKENS  96  /* YYNNTS -- Number of nonterminals.  */  #define YYNNTS  39  /* YYNRULES -- Number of rules.  */ -#define YYNRULES  149 +#define YYNRULES  150  /* YYNRULES -- Number of states.  */ -#define YYNSTATES  326 +#define YYNSTATES  329  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */  #define YYUNDEFTOK  2 @@ -545,12 +545,12 @@ static const yytype_uint8 yytranslate[] =        88,     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,    87,    82,     2, -      89,    90,    85,    83,    93,    84,     2,    86,     2,     2, +      89,    90,    85,    83,    95,    84,     2,    86,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,        92,    81,    91,     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,     2, +       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,     2,     2,     2,     2,     2,     2,     2,     2, @@ -590,76 +590,77 @@ static const yytype_uint16 yyprhs[] =       223,   225,   226,   227,   228,   231,   234,   238,   240,   242,       244,   246,   248,   253,   255,   257,   260,   262,   266,   270,       274,   278,   282,   286,   290,   294,   298,   302,   306,   310, -     313,   317,   321,   325,   329,   333,   336,   339,   343,   348, -     353,   358,   365,   370,   377,   382,   389,   394,   401,   404, -     406,   408,   411,   413,   416,   419,   422,   425,   427,   432, -     435,   440,   447,   452,   455,   459,   461,   465,   467,   471, -     474,   477,   480,   483,   487,   490,   493,   495,   499,   502, -     505,   508,   512,   515,   516,   525,   528,   529,   538,   539, -     540,   551,   552,   554,   558,   563,   564,   568,   569,   571 +     313,   317,   321,   325,   329,   333,   336,   339,   343,   347, +     352,   357,   362,   369,   374,   381,   386,   393,   398,   405, +     408,   410,   412,   415,   417,   420,   423,   426,   429,   431, +     436,   439,   444,   451,   456,   459,   463,   465,   469,   471, +     475,   478,   481,   484,   487,   491,   494,   497,   499,   503, +     506,   509,   512,   516,   519,   520,   529,   532,   533,   542, +     543,   544,   555,   556,   558,   562,   567,   568,   572,   573, +     575  };  /* YYRHS -- A `-1'-separated list of the rules' RHS.  */  static const yytype_int16 yyrhs[] =  { -      95,     0,    -1,    95,    96,    97,    -1,    97,    -1,     1, -      96,    -1,    88,    -1,    -1,   124,    -1,   117,    -1,   131, -      -1,    98,    -1,   100,    -1,    41,   116,    34,    21,    -1, -      41,   116,    67,   116,    -1,    41,   116,    68,   116,    -1, -      43,    21,    81,   116,    -1,    43,    12,    81,   116,    -1, -      43,    13,   116,    81,   116,    -1,    43,    21,    45,   116, -      -1,    43,    12,    45,   116,    -1,    43,    13,   116,    45, -     116,    -1,   116,    -1,   117,    -1,    99,    -1,   101,    -1, -     108,    89,   107,    90,   114,   113,    25,    -1,   109,    81, -     116,   113,    45,   116,   113,   114,   113,    25,    -1,   109, -      81,   116,   113,    26,    45,   116,   113,   114,   113,    25, -      -1,   115,   116,   113,    -1,   110,   107,    44,    96,   114, -     113,    25,    -1,   110,   107,    44,    96,   114,   113,    49, -     114,   113,    25,    -1,   110,   107,    44,    96,   114,   113, -     112,   103,   113,    25,    -1,   110,   107,    44,   112,    99, -     113,    -1,   110,   107,    44,   112,    99,   113,    49,   112, -      99,   113,    -1,   110,   107,    44,   112,    99,   113,   104, -     113,   102,   113,    -1,    -1,    49,   112,    99,    -1,   103, -     106,    -1,   106,    -1,   104,   105,    -1,   105,    -1,   111, -     107,    44,   112,   100,   113,    -1,   104,    -1,   111,   107, -      44,   114,   113,    -1,   116,    -1,   116,    81,   116,    -1, -      89,   107,    90,    -1,    42,    48,    -1,    42,    47,    21, -      -1,    33,    -1,    28,    -1,    -1,    -1,    -1,   114,    96, -      -1,   114,   100,    -1,    46,    21,    44,    -1,    11,    -1, +      97,     0,    -1,    97,    98,    99,    -1,    99,    -1,     1, +      98,    -1,    88,    -1,    -1,   126,    -1,   119,    -1,   133, +      -1,   100,    -1,   102,    -1,    41,   118,    34,    21,    -1, +      41,   118,    67,   118,    -1,    41,   118,    68,   118,    -1, +      43,    21,    81,   118,    -1,    43,    12,    81,   118,    -1, +      43,    13,   118,    81,   118,    -1,    43,    21,    45,   118, +      -1,    43,    12,    45,   118,    -1,    43,    13,   118,    45, +     118,    -1,   118,    -1,   119,    -1,   101,    -1,   103,    -1, +     110,    89,   109,    90,   116,   115,    25,    -1,   111,    81, +     118,   115,    45,   118,   115,   116,   115,    25,    -1,   111, +      81,   118,   115,    26,    45,   118,   115,   116,   115,    25, +      -1,   117,   118,   115,    -1,   112,   109,    44,    98,   116, +     115,    25,    -1,   112,   109,    44,    98,   116,   115,    49, +     116,   115,    25,    -1,   112,   109,    44,    98,   116,   115, +     114,   105,   115,    25,    -1,   112,   109,    44,   114,   101, +     115,    -1,   112,   109,    44,   114,   101,   115,    49,   114, +     101,   115,    -1,   112,   109,    44,   114,   101,   115,   106, +     115,   104,   115,    -1,    -1,    49,   114,   101,    -1,   105, +     108,    -1,   108,    -1,   106,   107,    -1,   107,    -1,   113, +     109,    44,   114,   102,   115,    -1,   106,    -1,   113,   109, +      44,   116,   115,    -1,   118,    -1,   118,    81,   118,    -1, +      89,   109,    90,    -1,    42,    48,    -1,    42,    47,    21, +      -1,    33,    -1,    28,    -1,    -1,    -1,    -1,   116,    98, +      -1,   116,   102,    -1,    46,    21,    44,    -1,    11,    -1,        14,    -1,    24,    -1,    22,    -1,    16,    -1,    21,    89, -     132,    90,    -1,    21,    -1,    12,    -1,    13,   116,    -1, -      98,    -1,   116,    83,   116,    -1,   116,    84,   116,    -1, -     116,    85,   116,    -1,   116,    86,   116,    -1,   116,    66, -     116,    -1,   116,    91,   116,    -1,   116,    92,   116,    -1, -     116,    62,   116,    -1,   116,    57,   116,    -1,   116,    58, -     116,    -1,   116,    63,   116,    -1,   116,    64,   116,    -1, -      65,   116,    -1,   116,    82,   116,    -1,   116,    67,   116, -      -1,   116,    69,   116,    -1,   116,    70,   116,    -1,   116, -      71,   116,    -1,    83,   116,    -1,    84,   116,    -1,    89, -     116,    90,    -1,    76,   116,    77,   116,    -1,    76,   116, -      78,   116,    -1,    72,   116,    39,   116,    -1,    72,   116, -      45,   116,    39,   116,    -1,    73,   116,    39,   116,    -1, -      73,   116,    45,   116,    39,   116,    -1,    74,   116,    39, -     116,    -1,    74,   116,    45,   116,    39,   116,    -1,    75, -     116,    39,   116,    -1,    75,   116,    45,   116,    39,   116, -      -1,    41,   116,    -1,   120,    -1,   123,    -1,    29,    42, -      -1,    29,    -1,    31,   118,    -1,    56,   119,    -1,    18, -     116,    -1,    17,   116,    -1,    17,    -1,    19,    89,   132, -      90,    -1,    19,   132,    -1,    80,    89,    21,    90,    -1, -      80,    89,    21,    93,   132,    90,    -1,    52,   116,    47, -     116,    -1,    52,   116,    -1,    20,    21,   132,    -1,    21, -      -1,   118,    93,    21,    -1,    21,    -1,   119,    93,    21, -      -1,    32,    35,    -1,    32,    38,    -1,    32,    40,    -1, -      32,   121,    -1,    32,   121,   122,    -1,    32,   122,    -1, -      30,   116,    -1,   116,    -1,    39,    37,   116,    -1,    37, -     116,    -1,    53,    54,    -1,    53,   121,    -1,    53,   121, -     122,    -1,    53,   122,    -1,    -1,    36,    21,   125,   112, -     129,    96,   130,   114,    -1,    50,    21,    -1,    -1,    51, -      21,   126,   112,   129,    96,   130,   114,    -1,    -1,    -1, -      79,    21,   127,   112,   128,   129,    96,   130,   114,    25, -      -1,    -1,    21,    -1,   129,    93,    21,    -1,   129,    96, -      93,    21,    -1,    -1,    21,   112,   132,    -1,    -1,   116, -      -1,   132,    93,   116,    -1 +     134,    90,    -1,    21,    -1,    12,    -1,    13,   118,    -1, +     100,    -1,   118,    83,   118,    -1,   118,    84,   118,    -1, +     118,    85,   118,    -1,   118,    86,   118,    -1,   118,    66, +     118,    -1,   118,    91,   118,    -1,   118,    92,   118,    -1, +     118,    62,   118,    -1,   118,    57,   118,    -1,   118,    58, +     118,    -1,   118,    63,   118,    -1,   118,    64,   118,    -1, +      65,   118,    -1,   118,    82,   118,    -1,   118,    67,   118, +      -1,   118,    69,   118,    -1,   118,    70,   118,    -1,   118, +      71,   118,    -1,    83,   118,    -1,    84,   118,    -1,    89, +     118,    90,    -1,    93,   134,    94,    -1,    76,   118,    77, +     118,    -1,    76,   118,    78,   118,    -1,    72,   118,    39, +     118,    -1,    72,   118,    45,   118,    39,   118,    -1,    73, +     118,    39,   118,    -1,    73,   118,    45,   118,    39,   118, +      -1,    74,   118,    39,   118,    -1,    74,   118,    45,   118, +      39,   118,    -1,    75,   118,    39,   118,    -1,    75,   118, +      45,   118,    39,   118,    -1,    41,   118,    -1,   122,    -1, +     125,    -1,    29,    42,    -1,    29,    -1,    31,   120,    -1, +      56,   121,    -1,    18,   118,    -1,    17,   118,    -1,    17, +      -1,    19,    89,   134,    90,    -1,    19,   134,    -1,    80, +      89,    21,    90,    -1,    80,    89,    21,    95,   134,    90, +      -1,    52,   118,    47,   118,    -1,    52,   118,    -1,    20, +      21,   134,    -1,    21,    -1,   120,    95,    21,    -1,    21, +      -1,   121,    95,    21,    -1,    32,    35,    -1,    32,    38, +      -1,    32,    40,    -1,    32,   123,    -1,    32,   123,   124, +      -1,    32,   124,    -1,    30,   118,    -1,   118,    -1,    39, +      37,   118,    -1,    37,   118,    -1,    53,    54,    -1,    53, +     123,    -1,    53,   123,   124,    -1,    53,   124,    -1,    -1, +      36,    21,   127,   114,   131,    98,   132,   116,    -1,    50, +      21,    -1,    -1,    51,    21,   128,   114,   131,    98,   132, +     116,    -1,    -1,    -1,    79,    21,   129,   114,   130,   131, +      98,   132,   116,    25,    -1,    -1,    21,    -1,   131,    95, +      21,    -1,   131,    98,    95,    21,    -1,    -1,    21,   114, +     134,    -1,    -1,   118,    -1,   134,    95,   118,    -1  };  /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ @@ -674,12 +675,13 @@ static const yytype_uint16 yyrline[] =       391,   394,   397,   400,   404,   411,   417,   418,   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,   451,   452, -     453,   454,   455,   457,   458,   459,   462,   465,   468,   469, -     470,   471,   472,   473,   474,   477,   478,   481,   482,   493, -     494,   495,   496,   499,   502,   507,   508,   511,   512,   515, -     516,   519,   522,   552,   552,   558,   561,   561,   566,   567, -     566,   577,   578,   579,   580,   582,   586,   594,   595,   596 +     441,   442,   443,   444,   445,   446,   447,   448,   449,   452, +     453,   454,   455,   456,   458,   459,   460,   463,   466,   469, +     470,   471,   472,   473,   474,   475,   478,   479,   482,   483, +     494,   495,   496,   497,   500,   503,   508,   509,   512,   513, +     516,   517,   520,   523,   553,   553,   559,   562,   562,   567, +     568,   567,   578,   579,   580,   581,   583,   587,   595,   596, +     597  };  #endif @@ -700,14 +702,14 @@ static const char *const yytname[] =    "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE",    "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD",    "tSPRITE", "tINTERSECTS", "tWITHIN", "tON", "tME", "'='", "'&'", "'+'", -  "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", "','", -  "$accept", "program", "nl", "programline", "asgn", "stmtoneliner", -  "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner", -  "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile", -  "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "expr", -  "func", "globallist", "instancelist", "gotofunc", "gotoframe", -  "gotomovie", "playfunc", "defn", "@1", "@2", "@3", "@4", "argdef", -  "argstore", "macro", "arglist", 0 +  "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", "'['", +  "']'", "','", "$accept", "program", "nl", "programline", "asgn", +  "stmtoneliner", "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", +  "elseifstmtoneliner", "elseifstmtoneliner1", "elseifstmt1", "cond", +  "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist", +  "when", "expr", "func", "globallist", "instancelist", "gotofunc", +  "gotoframe", "gotomovie", "playfunc", "defn", "@1", "@2", "@3", "@4", +  "argdef", "argstore", "macro", "arglist", 0  };  #endif @@ -725,28 +727,29 @@ static const yytype_uint16 yytoknum[] =       315,   316,   317,   318,   319,   320,   321,   322,   323,   324,       325,   326,   327,   328,   329,   330,   331,   332,   333,   334,       335,    61,    38,    43,    45,    42,    47,    37,    10,    40, -      41,    62,    60,    44 +      41,    62,    60,    91,    93,    44  };  # endif  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */  static const yytype_uint8 yyr1[] =  { -       0,    94,    95,    95,    95,    96,    97,    97,    97,    97, -      97,    97,    98,    98,    98,    98,    98,    98,    98,    98, -      98,    99,    99,   100,   100,   100,   100,   100,   100,   101, -     101,   101,   101,   101,   101,   102,   102,   103,   103,   104, -     104,   105,   106,   106,   107,   107,   107,   108,   109,   110, -     111,   112,   113,   114,   114,   114,   115,   116,   116,   116, -     116,   116,   116,   116,   116,   116,   116,   116,   116,   116, -     116,   116,   116,   116,   116,   116,   116,   116,   116,   116, -     116,   116,   116,   116,   116,   116,   116,   116,   116,   116, -     116,   116,   116,   116,   116,   116,   116,   116,   117,   117, -     117,   117,   117,   117,   117,   117,   117,   117,   117,   117, -     117,   117,   117,   117,   117,   118,   118,   119,   119,   120, -     120,   120,   120,   120,   120,   121,   121,   122,   122,   123, -     123,   123,   123,   125,   124,   124,   126,   124,   127,   128, -     124,   129,   129,   129,   129,   130,   131,   132,   132,   132 +       0,    96,    97,    97,    97,    98,    99,    99,    99,    99, +      99,    99,   100,   100,   100,   100,   100,   100,   100,   100, +     100,   101,   101,   102,   102,   102,   102,   102,   102,   103, +     103,   103,   103,   103,   103,   104,   104,   105,   105,   106, +     106,   107,   108,   108,   109,   109,   109,   110,   111,   112, +     113,   114,   115,   116,   116,   116,   117,   118,   118,   118, +     118,   118,   118,   118,   118,   118,   118,   118,   118,   118, +     118,   118,   118,   118,   118,   118,   118,   118,   118,   118, +     118,   118,   118,   118,   118,   118,   118,   118,   118,   118, +     118,   118,   118,   118,   118,   118,   118,   118,   118,   119, +     119,   119,   119,   119,   119,   119,   119,   119,   119,   119, +     119,   119,   119,   119,   119,   119,   120,   120,   121,   121, +     122,   122,   122,   122,   122,   122,   123,   123,   124,   124, +     125,   125,   125,   125,   127,   126,   126,   128,   126,   129, +     130,   126,   131,   131,   131,   131,   132,   133,   134,   134, +     134  };  /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ @@ -760,13 +763,14 @@ static const yytype_uint8 yyr2[] =         1,     0,     0,     0,     2,     2,     3,     1,     1,     1,         1,     1,     4,     1,     1,     2,     1,     3,     3,     3,         3,     3,     3,     3,     3,     3,     3,     3,     3,     2, -       3,     3,     3,     3,     3,     2,     2,     3,     4,     4, -       4,     6,     4,     6,     4,     6,     4,     6,     2,     1, -       1,     2,     1,     2,     2,     2,     2,     1,     4,     2, -       4,     6,     4,     2,     3,     1,     3,     1,     3,     2, -       2,     2,     2,     3,     2,     2,     1,     3,     2,     2, -       2,     3,     2,     0,     8,     2,     0,     8,     0,     0, -      10,     0,     1,     3,     4,     0,     3,     0,     1,     3 +       3,     3,     3,     3,     3,     2,     2,     3,     3,     4, +       4,     4,     6,     4,     6,     4,     6,     4,     6,     2, +       1,     1,     2,     1,     2,     2,     2,     2,     1,     4, +       2,     4,     6,     4,     2,     3,     1,     3,     1,     3, +       2,     2,     2,     2,     3,     2,     2,     1,     3,     2, +       2,     2,     3,     2,     0,     8,     2,     0,     8,     0, +       0,    10,     0,     1,     3,     4,     0,     3,     0,     1, +       3  };  /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -774,97 +778,97 @@ static const yytype_uint8 yyr2[] =     means the default is an error.  */  static const yytype_uint8 yydefact[] =  { -       0,     0,    57,    64,     0,    58,    61,   107,     0,   147, -       0,    51,    60,    59,   102,     0,     0,    49,     0,     0, -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -       3,    66,    23,    11,    24,     0,     0,     0,     0,    21, -       8,    99,   100,     7,     9,     5,     4,    63,     0,    66, -      65,   106,   105,   147,   148,   109,   147,   147,   147,   101, -     115,   103,     0,   119,     0,   120,     0,   121,   126,   122, -     124,   133,    98,     0,    47,     0,     0,     0,     0,   135, -     136,   113,   129,   130,   132,   117,   104,    79,     0,     0, -       0,     0,     0,   138,     0,    85,    86,     0,     1,     6, -       0,     0,     0,     0,    44,    52,     0,     0,     0,     0, +       0,     0,    57,    64,     0,    58,    61,   108,     0,   148, +       0,    51,    60,    59,   103,     0,     0,    49,     0,     0,         0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -       0,     0,     0,     0,   148,     0,     0,   114,     0,   146, -       0,   125,   128,     0,   123,    51,     0,     0,     0,    48, -       0,     0,     0,     0,     0,    56,    51,     0,   131,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,   148, +       0,     3,    66,    23,    11,    24,     0,     0,     0,     0, +      21,     8,   100,   101,     7,     9,     5,     4,    63,     0, +      66,    65,   107,   106,   148,   149,   110,   148,   148,   148, +     102,   116,   104,     0,   120,     0,   121,     0,   122,   127, +     123,   125,   134,    99,     0,    47,     0,     0,     0,     0, +     136,   137,   114,   130,   131,   133,   118,   105,    79,     0, +       0,     0,     0,     0,   139,     0,    85,    86,     0,     0, +       1,     6,     0,     0,     0,     0,    44,    52,     0,     0,         0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -      51,     0,    87,     2,     0,    52,     0,     0,    51,     0, -      28,    75,    76,    74,    77,    78,    71,    81,    82,    83, -      84,    80,    67,    68,    69,    70,    72,    73,   108,   149, -      62,   116,   127,   141,    12,    13,    14,    19,    16,     0, -       0,    18,    15,   141,   112,   118,    90,     0,    92,     0, -      94,     0,    96,     0,    88,    89,   139,   110,   147,    53, -       0,    46,    53,     0,    45,   142,     0,    20,    17,     0, -       0,     0,     0,     0,   141,     0,    52,     0,     0,    52, -      52,    22,     0,   145,   145,    91,    93,    95,    97,     0, -     111,    54,    55,     0,     0,    52,    51,    32,   143,     0, -      53,    53,   145,    25,    52,    53,    29,    53,     0,    50, -      51,    52,    40,     0,   144,   134,   137,    53,    53,    52, -      52,    52,    42,    38,     0,     0,    39,    35,     0,     0, -      52,     0,     0,    37,     0,     0,    52,    51,    52,    51, -     140,     0,    26,    30,    31,    51,    33,     0,    34,     0, -      27,    52,    36,    52,    43,    41 +       0,     0,     0,     0,     0,     0,   149,     0,     0,   115, +       0,   147,     0,   126,   129,     0,   124,    51,     0,     0, +       0,    48,     0,     0,     0,     0,     0,    56,    51,     0, +     132,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,    51,     0,    87,    88,     2,     0,    52,     0, +       0,    51,     0,    28,    75,    76,    74,    77,    78,    71, +      81,    82,    83,    84,    80,    67,    68,    69,    70,    72, +      73,   109,   150,    62,   117,   128,   142,    12,    13,    14, +      19,    16,     0,     0,    18,    15,   142,   113,   119,    91, +       0,    93,     0,    95,     0,    97,     0,    89,    90,   140, +     111,   148,    53,     0,    46,    53,     0,    45,   143,     0, +      20,    17,     0,     0,     0,     0,     0,   142,     0,    52, +       0,     0,    52,    52,    22,     0,   146,   146,    92,    94, +      96,    98,     0,   112,    54,    55,     0,     0,    52,    51, +      32,   144,     0,    53,    53,   146,    25,    52,    53,    29, +      53,     0,    50,    51,    52,    40,     0,   145,   135,   138, +      53,    53,    52,    52,    52,    42,    38,     0,     0,    39, +      35,     0,     0,    52,     0,     0,    37,     0,     0,    52, +      51,    52,    51,   141,     0,    26,    30,    31,    51,    33, +       0,    34,     0,    27,    52,    36,    52,    43,    41  };  /* YYDEFGOTO[NTERM-NUM].  */  static const yytype_int16 yydefgoto[] =  { -      -1,    39,   261,    40,    59,    42,   262,    44,   308,   291, -     292,   282,   293,   113,    45,    46,    47,   283,   319,   180, -     246,    48,    49,   251,    71,    96,    51,    79,    80,    52, -      53,   145,   156,   170,   244,   236,   270,    54,    65 +      -1,    40,   264,    41,    60,    43,   265,    45,   311,   294, +     295,   285,   296,   115,    46,    47,    48,   286,   322,   183, +     249,    49,    50,   254,    72,    97,    52,    80,    81,    53, +      54,   147,   158,   172,   247,   239,   273,    55,    66  };  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing     STATE-NUM.  */ -#define YYPACT_NINF -256 +#define YYPACT_NINF -266  static const yytype_int16 yypact[] =  { -     309,   -63,  -256,  -256,   870,  -256,  -256,   870,   870,   908, -      14,  1504,  -256,  -256,    -2,    25,   768,  -256,    33,   870, -     -14,    17,    52,    67,    73,   870,   834,    75,   870,   870, -     870,   870,   870,   870,    76,   -15,   870,   870,   870,    10, -    -256,    11,  -256,  -256,  -256,   -12,    21,   944,   870,  1473, -    -256,  -256,  -256,  -256,  -256,  -256,  -256,    15,   870,  -256, -    1473,  1473,  1473,   870,  1473,    12,   870,   870,   870,  -256, -    -256,    13,   870,  -256,   870,  -256,    70,  -256,  1473,    56, -    -256,  -256,   968,    87,  -256,   -33,   870,   -30,    66,  -256, -    -256,  1318,  -256,    56,  -256,  -256,    22,   -50,  1004,  1040, -    1076,  1112,  1349,  -256,    93,   -50,   -50,  1411,  -256,   388, -     944,   870,   944,    74,  1442,  1473,   870,   870,   870,   870, -     870,   870,   870,   870,   870,   870,   870,   870,   870,   870, -     870,   870,   870,   968,  1411,   -38,   870,    12,   -37,    12, -      96,  1473,  1473,   870,  -256,  -256,   101,   870,   870,  -256, -     870,   870,  1287,   870,   870,  -256,  -256,   870,  -256,   102, -     870,   870,   870,   870,   870,   870,   870,   870,   870,   870, -    -256,   -26,  -256,  -256,    34,  1473,    36,  1380,   -63,   870, -    -256,    65,    65,    65,   -50,   -50,   -50,  1473,  1473,    65, -      65,   730,   160,   160,   -50,   -50,  1473,  1473,  -256,  1473, -    -256,  -256,  1473,   109,  -256,  1473,  1473,  1473,  1473,   870, -     870,  1473,  1473,   109,  1473,  -256,  1473,  1148,  1473,  1184, -    1473,  1220,  1473,  1256,  1473,  1473,  -256,  -256,   870,  -256, -       5,  -256,  -256,   694,  1473,  -256,   -56,  1473,  1473,   -56, -     870,   870,   870,   870,   109,   -22,   541,    88,   870,   541, -    -256,  -256,   115,    44,    44,  1473,  1473,  1473,  1473,   -56, -    -256,  -256,  -256,   113,   870,  1473,    -4,    -6,  -256,   119, -    -256,  -256,    44,  -256,  1473,  -256,  -256,  -256,   114,  -256, -    -256,   114,  -256,   944,  -256,   541,   541,  -256,  -256,   541, -     541,   114,   114,  -256,   944,   694,  -256,    92,    99,   462, -     541,   120,   127,  -256,   128,   100,  -256,  -256,  -256,  -256, -    -256,   129,  -256,  -256,  -256,    -1,  -256,   694,  -256,   620, -    -256,   541,  -256,  -256,  -256,  -256 +     317,   -63,  -266,  -266,   908,  -266,  -266,   908,   908,   946, +      18,  1546,  -266,  -266,     6,    29,   806,  -266,    39,   908, +      10,    43,    46,    47,    58,   908,   872,    59,   908,   908, +     908,   908,   908,   908,    61,    -4,   908,   908,   908,   908, +      11,  -266,    12,  -266,  -266,  -266,    -3,     7,   982,   908, +    1515,  -266,  -266,  -266,  -266,  -266,  -266,  -266,     3,   908, +    -266,  1515,  1515,  1515,   908,  1515,    13,   908,   908,   908, +    -266,  -266,    14,   908,  -266,   908,  -266,    69,  -266,  1515, +     -11,  -266,  -266,  1010,    86,  -266,   -29,   908,   -28,    68, +    -266,  -266,  1360,  -266,   -11,  -266,  -266,    22,   -49,  1046, +    1082,  1118,  1154,  1391,  -266,    97,   -49,   -49,  1453,   -19, +    -266,   400,   982,   908,   982,    75,  1484,  1515,   908,   908, +     908,   908,   908,   908,   908,   908,   908,   908,   908,   908, +     908,   908,   908,   908,   908,  1010,  1453,   -36,   908,    13, +     -24,    13,    99,  1515,  1515,   908,  -266,  -266,   100,   908, +     908,  -266,   908,   908,  1329,   908,   908,  -266,  -266,   908, +    -266,   101,   908,   908,   908,   908,   908,   908,   908,   908, +     908,   908,  -266,   -12,  -266,  -266,  -266,    33,  1515,    35, +    1422,   -63,   908,  -266,   768,   768,   768,   -49,   -49,   -49, +    1515,  1515,   768,   768,  1556,    78,    78,   -49,   -49,  1515, +    1515,  -266,  1515,  -266,  -266,  1515,   105,  -266,  1515,  1515, +    1515,  1515,   908,   908,  1515,  1515,   105,  1515,  -266,  1515, +    1190,  1515,  1226,  1515,  1262,  1515,  1298,  1515,  1515,  -266, +    -266,   908,  -266,    -5,  -266,  -266,   732,  1515,  -266,   -64, +    1515,  1515,   -64,   908,   908,   908,   908,   105,    15,   566, +      82,   908,   566,  -266,  -266,   107,    36,    36,  1515,  1515, +    1515,  1515,   -64,  -266,  -266,  -266,   110,   908,  1515,    -2, +     -15,  -266,   109,  -266,  -266,    36,  -266,  1515,  -266,  -266, +    -266,   108,  -266,  -266,   108,  -266,   982,  -266,   566,   566, +    -266,  -266,   566,   566,   108,   108,  -266,   982,   732,  -266, +      90,   102,   483,   566,   118,   124,  -266,   125,   111,  -266, +    -266,  -266,  -266,  -266,   128,  -266,  -266,  -266,   -18,  -266, +     732,  -266,   649,  -266,   566,  -266,  -266,  -266,  -266  };  /* YYPGOTO[NTERM-NUM].  */  static const yytype_int16 yypgoto[] =  { -    -256,  -256,     8,    46,     3,  -225,     0,  -256,  -256,  -256, -    -109,  -253,  -130,   -96,  -256,  -256,  -256,  -255,   -10,   -16, -    -212,  -256,    53,     4,  -256,  -256,  -256,   136,   -13,  -256, -    -256,  -256,  -256,  -256,  -256,  -195,  -228,  -256,   -61 +    -266,  -266,     1,    45,     4,  -233,     0,  -266,  -266,  -266, +    -116,  -265,  -137,   -85,  -266,  -266,  -266,  -259,   -10,   -27, +    -229,  -266,    65,     5,  -266,  -266,  -266,   132,   -17,  -266, +    -266,  -266,  -266,  -266,  -266,  -201,  -243,  -266,   -31  };  /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If @@ -874,281 +878,283 @@ static const yytype_int16 yypgoto[] =  #define YYTABLE_NINF -64  static const yytype_int16 yytable[] =  { -      43,    68,   135,    41,    50,   137,   138,   139,   250,    56, -     108,   -10,   150,    94,   174,   153,   176,   122,   239,   123, -     249,   276,   279,   294,   -53,    55,   271,   -53,   296,    85, -      86,   247,    55,    83,    84,    66,   294,   252,    87,   296, -      69,   131,   132,   280,   287,   277,    70,   109,   151,   259, -     248,   154,   198,   200,    81,   136,   136,    60,   285,   286, -      61,    62,    64,   289,   227,   290,   144,   228,   260,    78, -     306,   136,    82,    88,   104,   299,   300,   110,    91,    78, -     158,    97,    98,    99,   100,   101,   102,   -53,    89,   105, -     106,   107,   322,    74,    90,    76,    95,   103,    55,   -10, -     114,   115,   111,   321,    67,   136,   140,   143,   149,    43, -     155,   133,    41,    50,   171,   159,   134,   201,   178,    64, -      64,    64,   204,   215,   229,   141,   231,   142,   119,   120, -     235,   121,   122,   264,   123,   203,   268,   269,   273,   152, -     284,   307,   279,   309,   315,   312,   213,   126,   127,   128, -     129,   130,   313,   314,   320,   173,   131,   132,   281,   230, -     226,   303,    93,   114,   175,   177,     0,   245,   233,   181, -     182,   183,   184,   185,   186,   187,   188,   189,   190,   191, -     192,   193,   194,   195,   196,   197,   232,   298,     0,   199, -       0,     0,     0,     0,     0,     0,   202,     0,   305,     0, -     205,   206,     0,   207,   208,     0,   211,   212,     0,     0, -     214,     0,     0,   216,   217,   218,   219,   220,   221,   222, -     223,   224,   225,   119,   120,     0,   121,   122,     0,   123, -     263,     0,   234,   266,   267,     0,     0,     0,     0,     0, -       0,     0,     0,     0,   253,   129,   130,   254,     0,   275, -       0,   131,   132,     0,     0,     0,   278,     0,   288,     0, -       0,     0,   237,   238,     0,   297,     0,   272,     0,     0, -     295,     0,     0,   301,   302,   304,     0,     0,     0,     0, -       0,    64,     0,     0,   311,     0,     0,     0,     0,     0, -     316,     0,   318,   255,   256,   257,   258,   317,     0,     0, -       0,   265,     0,     0,     0,   324,     0,   325,     0,    -6, -       1,     0,     0,     0,     0,     0,     0,   274,     0,   323, +      44,    69,    57,   253,    42,    51,   252,   -53,   109,    95, +     -53,   110,   -10,   282,   274,   242,   152,   155,   124,   299, +     125,   250,   297,   279,    56,    56,    75,   177,    77,   179, +     299,   255,   290,   137,   283,   297,   139,   140,   141,    67, +     251,   111,   133,   134,   288,   289,   262,   280,    70,   292, +      71,   293,   153,   156,   201,    86,    87,    84,    85,   138, +      82,   302,   303,   146,    88,   309,   203,    89,    90,    61, +     -53,   138,    62,    63,    65,   175,   138,   160,   230,    91, +      96,    79,   104,   231,    83,   105,   112,   325,   113,   324, +      92,    79,    68,    98,    99,   100,   101,   102,   103,    56, +     -10,   106,   107,   108,    65,   263,   145,   151,   138,   142, +     138,    44,   157,   116,   117,    42,    51,   161,   173,   181, +     204,   207,   218,   232,   135,   234,   238,   267,   271,   136, +     287,   272,    65,    65,    65,   276,   282,   206,   143,   310, +     144,   121,   122,   315,   123,   124,   312,   125,   216,   316, +     317,   233,   154,   323,   284,   318,   176,   306,    94,     0, +       0,     0,   229,   131,   132,     0,     0,     0,     0,   133, +     134,   236,     0,     0,     0,     0,     0,   116,   178,   180, +       0,     0,   235,   184,   185,   186,   187,   188,   189,   190, +     191,   192,   193,   194,   195,   196,   197,   198,   199,   200, +     248,   301,     0,   202,     0,     0,     0,     0,     0,     0, +     205,     0,   308,     0,   208,   209,     0,   210,   211,     0, +     214,   215,   266,     0,   217,   269,   270,   219,   220,   221, +     222,   223,   224,   225,   226,   227,   228,     0,     0,     0, +     256,   278,     0,   257,     0,     0,     0,   237,     0,     0, +     291,     0,     0,     0,     0,     0,     0,   300,     0,   281, +       0,     0,     0,   275,     0,   304,   305,   307,     0,     0, +       0,     0,     0,   298,     0,     0,   314,   240,   241,     0, +       0,     0,   319,     0,   321,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,    65,   327,     0,   328, +     320,     0,     0,     0,     0,     0,     0,     0,   258,   259, +     260,   261,     0,     0,     0,     0,   268,    -6,     1,     0, +       0,     0,   326,     0,     0,     0,     0,     0,     2,     3, +       4,     5,   277,     6,     7,     8,     9,    10,    11,    12, +       0,    13,     0,     0,     0,     0,    14,     0,    15,    16, +      17,   116,     0,    18,     0,     0,     0,     0,    19,    20, +      21,     0,   116,    22,     0,     0,     0,    23,    24,    25, +      26,     0,     0,    27,     0,     0,     0,     0,     0,     0, +       0,     0,    28,     0,     0,     0,     0,     0,     0,    29, +      30,    31,    32,    33,     0,     0,    34,    35,     0,     0, +      36,    37,     0,     0,     0,    -6,    38,     0,     0,     0, +      39,     2,     3,     4,     5,     0,     6,     7,     8,     9, +      10,    11,    12,     0,    13,     0,     0,     0,     0,    14, +       0,    15,    16,    17,     0,     0,    18,     0,     0,     0, +       0,    19,    20,    21,     0,     0,    22,     0,     0,     0, +      23,    24,    25,    26,     0,     0,    27,     0,     0,     0, +       0,     0,     0,     0,     0,    28,     0,     0,     0,     0, +       0,     0,    29,    30,    31,    32,    33,     0,     0,    34, +      35,     0,     0,    36,    37,     0,     0,     0,     0,    38, +       0,     0,     0,    39,     2,     3,     4,     5,     0,     6, +       7,     8,     9,    10,    58,    12,     0,    13,   313,     0, +       0,     0,    14,     0,    15,    16,    17,     0,     0,     0, +       0,     0,     0,     0,    19,    20,    21,     0,     0,    22, +       0,     0,     0,     0,     0,    25,    26,     0,     0,    27, +       0,     0,     0,     0,     0,     0,     0,     0,    28,     0, +       0,     0,     0,     0,     0,    29,    30,    31,    32,    33, +       0,     0,     0,    35,     0,     0,    36,    37,     0,     0, +       0,    56,    38,     0,     0,     0,    39,     2,     3,     4, +       5,     0,     6,     7,     8,     9,    10,    58,    12,     0, +      13,     0,     0,     0,     0,    14,     0,    15,    16,    17, +       0,     0,     0,     0,     0,     0,     0,    19,    20,    21, +       0,     0,    22,     0,     0,     0,     0,     0,    25,    26, +       0,     0,    27,     0,     0,     0,     0,     0,     0,     0, +       0,    28,     0,     0,     0,     0,     0,     0,    29,    30, +      31,    32,    33,     0,     0,     0,    35,     0,     0,    36, +      37,     0,     0,     0,    56,    38,     0,     0,     0,    39,         2,     3,     4,     5,     0,     6,     7,     8,     9,    10, -      11,    12,     0,    13,     0,     0,   114,     0,    14,     0, -      15,    16,    17,     0,     0,    18,     0,   114,     0,     0, -      19,    20,    21,     0,     0,    22,     0,     0,     0,    23, -      24,    25,    26,     0,     0,    27,     0,     0,     0,     0, +      58,    12,     0,    13,     0,     0,     0,     0,    14,     0, +      15,    16,    17,     0,     0,     0,     0,     0,     0,     0, +      19,    20,    21,     0,     0,    22,     0,     0,     0,     0, +       0,    25,    26,     0,     0,    27,     0,     0,     0,     0,         0,     0,     0,     0,    28,     0,     0,     0,     0,     0, -       0,    29,    30,    31,    32,    33,     0,     0,    34,    35, -       0,     0,    36,    37,     0,     0,     0,    -6,    38,     2, -       3,     4,     5,     0,     6,     7,     8,     9,    10,    11, -      12,     0,    13,     0,     0,     0,     0,    14,     0,    15, -      16,    17,     0,     0,    18,     0,     0,     0,     0,    19, -      20,    21,     0,     0,    22,     0,     0,     0,    23,    24, -      25,    26,     0,     0,    27,     0,     0,     0,     0,     0, -       0,     0,     0,    28,     0,     0,     0,     0,     0,     0, -      29,    30,    31,    32,    33,     0,     0,    34,    35,     0, -       0,    36,    37,     2,     3,     4,     5,    38,     6,     7, -       8,     9,    10,    57,    12,     0,    13,   310,     0,     0, -       0,    14,     0,    15,    16,    17,     0,     0,     0,     0, -       0,     0,     0,    19,    20,    21,     0,     0,    22,     0, +       0,    29,    30,    31,    32,    33,     0,     0,     0,    35, +       0,     0,    36,    37,     0,     0,     0,     0,    38,     0, +       0,     0,    39,     2,     3,     4,     5,     0,     6,     7, +       8,     9,    10,    58,    12,     0,    13,     0,     0,     0, +       0,    14,     0,    15,    16,     0,     0,     0,     0,     0, +       0,     0,     0,    19,     0,    21,     0,     0,     0,     0,         0,     0,     0,     0,    25,    26,     0,     0,    27,     0,         0,     0,     0,     0,     0,     0,     0,    28,     0,     0,         0,     0,     0,     0,    29,    30,    31,    32,    33,     0, -       0,     0,    35,     0,     0,    36,    37,     0,     0,     0, -      55,    38,     2,     3,     4,     5,     0,     6,     7,     8, -       9,    10,    57,    12,     0,    13,     0,     0,     0,     0, -      14,     0,    15,    16,    17,     0,     0,     0,     0,     0, -       0,     0,    19,    20,    21,     0,     0,    22,     0,     0, -       0,     0,     0,    25,    26,     0,     0,    27,     0,     0, -       0,     0,     0,     0,     0,     0,    28,     0,     0,     0, -       0,     0,     0,    29,    30,    31,    32,    33,     0,     0, -       0,    35,     0,     0,    36,    37,     0,     0,     0,    55, -      38,     2,     3,     4,     5,     0,     6,     7,     8,     9, -      10,    57,    12,     0,    13,     0,     0,     0,     0,    14, -       0,    15,    16,    17,     0,     0,     0,     0,     0,     0, -       0,    19,    20,    21,     0,     0,    22,     0,     0,     0, -       0,     0,    25,    26,     0,     0,    27,     0,     0,     0, -       0,     0,     0,     0,     0,    28,     0,     0,     0,     0, -       0,     0,    29,    30,    31,    32,    33,     0,     0,     0, -      35,     0,     0,    36,    37,     2,     3,     4,     5,    38, -       6,     7,     8,     9,    10,    57,    12,     0,    13,     0, -       0,     0,     0,    14,     0,    15,    16,     0,     0,     0, -       0,     0,     0,     0,     0,    19,     0,    21,     0,     0, -       0,     0,     0,     0,     0,     0,    25,    26,     0,     0, -      27,     0,     0,     0,     0,     0,     0,     0,     0,    28, -       0,     0,     0,     0,     0,     0,    29,    30,    31,    32, -      33,     0,     0,     0,    35,     0,     0,    36,    37,     2, -       3,     4,     5,    38,     6,     0,     0,     0,     0,    57, -      12,     0,    13,   119,   120,     0,   121,   122,    72,   123, -       0,     0,     0,    73,     0,    74,    75,    76,    77,    58, -       0,    21,     0,   127,   128,   129,   130,     0,     0,     0, -       0,   131,   132,     0,     0,     0,     0,     0,     0,     0, -       0,     0,     0,    28,     0,     0,     0,     0,     0,     0, -      29,    30,    31,    32,    33,     2,     3,     4,     5,     0, -       6,    36,    37,     0,     0,    57,    12,    38,    13,     0, -       0,     0,     0,     0,    72,     0,     0,     0,     0,     0, -       0,    74,     0,    76,     0,    58,     0,    21,     0,     0, -       0,     2,     3,     4,     5,     0,     6,     0,    92,     0, -       0,    57,    12,     0,    13,     0,     0,     0,     0,    28, -       0,     0,     0,     0,     0,     0,    29,    30,    31,    32, -      33,    58,     0,    21,     0,     0,     0,    36,    37,     2, -       3,     4,     5,    38,     6,     0,     0,     0,     0,    57, -      12,     0,    13,     0,     0,    28,     0,     0,     0,     0, -       0,     0,    29,    30,    31,    32,    33,     0,     0,    58, -       0,    21,     0,    36,    37,     2,     3,     4,     5,    38, -       6,     0,     0,     0,     0,    57,    12,     0,    13,     0, -       0,     0,     0,    28,     0,     0,     0,     0,     0,     0, -      29,    30,    31,    32,    33,    58,     0,    21,     0,     0, -       0,    36,    37,     0,     0,     0,     0,    63,     0,     0, -       0,     0,   146,     0,     0,     0,     0,     0,     0,    28, -       0,     0,     0,     0,     0,     0,    29,    30,    31,    32, -      33,     0,     0,     0,     0,   116,   117,    36,    37,     0, -     118,   119,   120,   112,   121,   147,   148,   123,   124,   125, -       0,     0,     0,   160,     0,     0,     0,     0,     0,   161, -     126,   127,   128,   129,   130,     0,     0,     0,     0,   131, -     132,   116,   117,     0,     0,     0,   118,   119,   120,     0, -     121,   122,     0,   123,   124,   125,     0,     0,     0,   162, -       0,     0,     0,     0,     0,   163,   126,   127,   128,   129, -     130,     0,     0,     0,     0,   131,   132,   116,   117,     0, -       0,     0,   118,   119,   120,     0,   121,   122,     0,   123, -     124,   125,     0,     0,     0,   164,     0,     0,     0,     0, -       0,   165,   126,   127,   128,   129,   130,     0,     0,     0, -       0,   131,   132,   116,   117,     0,     0,     0,   118,   119, -     120,     0,   121,   122,     0,   123,   124,   125,     0,     0, -       0,   166,     0,     0,     0,     0,     0,   167,   126,   127, -     128,   129,   130,     0,     0,     0,     0,   131,   132,   116, -     117,     0,     0,     0,   118,   119,   120,     0,   121,   122, -       0,   123,   124,   125,     0,     0,     0,   240,     0,     0, -       0,     0,     0,     0,   126,   127,   128,   129,   130,     0, -       0,     0,     0,   131,   132,   116,   117,     0,     0,     0, -     118,   119,   120,     0,   121,   122,     0,   123,   124,   125, -       0,     0,     0,   241,     0,     0,     0,     0,     0,     0, -     126,   127,   128,   129,   130,     0,     0,     0,     0,   131, -     132,   116,   117,     0,     0,     0,   118,   119,   120,     0, -     121,   122,     0,   123,   124,   125,     0,     0,     0,   242, -       0,     0,     0,     0,     0,     0,   126,   127,   128,   129, -     130,     0,     0,     0,     0,   131,   132,   116,   117,     0, -       0,     0,   118,   119,   120,     0,   121,   122,     0,   123, -     124,   125,     0,     0,     0,   243,     0,     0,     0,     0, -       0,     0,   126,   127,   128,   129,   130,     0,     0,     0, -       0,   131,   132,   116,   117,     0,     0,     0,   118,   119, -     120,     0,   121,   122,     0,   123,   124,   125,     0,     0, -       0,     0,   209,     0,     0,     0,     0,     0,   126,   127, -     128,   129,   130,     0,   116,   117,     0,   131,   132,   118, -     119,   120,     0,   121,   122,     0,   123,   124,   125,     0, -       0,     0,     0,     0,     0,   157,     0,     0,   210,   126, -     127,   128,   129,   130,     0,   116,   117,     0,   131,   132, -     118,   119,   120,     0,   121,   122,     0,   123,   124,   125, -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -     126,   127,   128,   129,   130,     0,   116,   117,     0,   131, -     132,   118,   119,   120,     0,   121,   122,     0,   123,   124, -     125,     0,     0,     0,     0,     0,   168,   169,     0,     0, -       0,   126,   127,   128,   129,   130,     0,   116,   117,     0, -     131,   132,   118,   119,   120,     0,   121,   122,     0,   123, -     124,   125,     0,     0,     0,     0,     0,     0,     0,     0, -       0,   179,   126,   127,   128,   129,   130,     0,   116,   117, -     172,   131,   132,   118,   119,   120,     0,   121,   122,     0, -     123,   124,   125,     0,     0,     0,     0,     0,     0,     0, -       0,     0,     0,   126,   127,   128,   129,   130,     0,   116, -     117,   172,   131,   132,   118,   119,   120,     0,   121,   122, -       0,   123,   124,   125,     0,     0,     0,     0,     0,     0, -       0,     0,     0,   179,   126,   127,   128,   129,   130,     0, -     116,   117,     0,   131,   132,   118,   119,   120,     0,   121, -     122,     0,   123,   124,   125,     0,     0,     0,     0,     0, -       0,     0,     0,     0,     0,   126,   127,   128,   129,   130, -       0,   -63,   -63,     0,   131,   132,   -63,   -63,   -63,     0, -     -63,   -63,     0,   -63,   -63,   -63,     0,     0,     0,     0, -       0,     0,     0,     0,     0,     0,   -63,     0,     0,   -63, -     -63,     0,     0,    67,     0,   -63,   -63 +       0,     0,    35,     0,     0,    36,    37,     2,     3,     4, +       5,    38,     6,     0,     0,    39,     0,    58,    12,     0, +      13,   121,   122,     0,   123,   124,    73,   125,     0,     0, +       0,    74,     0,    75,    76,    77,    78,    59,     0,    21, +     128,   129,   130,   131,   132,     0,     0,     0,     0,   133, +     134,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,    28,     0,     0,     0,     0,     0,     0,    29,    30, +      31,    32,    33,     2,     3,     4,     5,     0,     6,    36, +      37,     0,     0,    58,    12,    38,    13,     0,     0,    39, +       0,     0,    73,     0,     0,     0,     0,     0,     0,    75, +       0,    77,     0,    59,     0,    21,     0,     0,     0,     2, +       3,     4,     5,     0,     6,     0,    93,     0,     0,    58, +      12,     0,    13,     0,     0,     0,     0,    28,     0,     0, +       0,     0,     0,     0,    29,    30,    31,    32,    33,    59, +       0,    21,     0,     0,     0,    36,    37,     2,     3,     4, +       5,    38,     6,     0,     0,    39,     0,    58,    12,     0, +      13,     0,     0,    28,     0,     0,     0,     0,     0,     0, +      29,    30,    31,    32,    33,     0,     0,    59,     0,    21, +       0,    36,    37,     2,     3,     4,     5,    38,     6,     0, +       0,    39,     0,    58,    12,     0,    13,     0,     0,     0, +       0,    28,     0,     0,     0,     0,     0,     0,    29,    30, +      31,    32,    33,    59,     0,    21,     0,     0,     0,    36, +      37,     0,     0,     0,     0,    64,     0,     0,     0,    39, +       0,     0,     0,     0,   148,     0,     0,    28,     0,     0, +       0,     0,     0,     0,    29,    30,    31,    32,    33,     0, +       0,     0,     0,     0,     0,    36,    37,   118,   119,     0, +       0,   114,   120,   121,   122,    39,   123,   149,   150,   125, +     126,   127,     0,     0,     0,   162,     0,     0,     0,     0, +       0,   163,   128,   129,   130,   131,   132,     0,     0,     0, +       0,   133,   134,   118,   119,     0,     0,     0,   120,   121, +     122,     0,   123,   124,     0,   125,   126,   127,     0,     0, +       0,   164,     0,     0,     0,     0,     0,   165,   128,   129, +     130,   131,   132,     0,     0,     0,     0,   133,   134,   118, +     119,     0,     0,     0,   120,   121,   122,     0,   123,   124, +       0,   125,   126,   127,     0,     0,     0,   166,     0,     0, +       0,     0,     0,   167,   128,   129,   130,   131,   132,     0, +       0,     0,     0,   133,   134,   118,   119,     0,     0,     0, +     120,   121,   122,     0,   123,   124,     0,   125,   126,   127, +       0,     0,     0,   168,     0,     0,     0,     0,     0,   169, +     128,   129,   130,   131,   132,     0,     0,     0,     0,   133, +     134,   118,   119,     0,     0,     0,   120,   121,   122,     0, +     123,   124,     0,   125,   126,   127,     0,     0,     0,   243, +       0,     0,     0,     0,     0,     0,   128,   129,   130,   131, +     132,     0,     0,     0,     0,   133,   134,   118,   119,     0, +       0,     0,   120,   121,   122,     0,   123,   124,     0,   125, +     126,   127,     0,     0,     0,   244,     0,     0,     0,     0, +       0,     0,   128,   129,   130,   131,   132,     0,     0,     0, +       0,   133,   134,   118,   119,     0,     0,     0,   120,   121, +     122,     0,   123,   124,     0,   125,   126,   127,     0,     0, +       0,   245,     0,     0,     0,     0,     0,     0,   128,   129, +     130,   131,   132,     0,     0,     0,     0,   133,   134,   118, +     119,     0,     0,     0,   120,   121,   122,     0,   123,   124, +       0,   125,   126,   127,     0,     0,     0,   246,     0,     0, +       0,     0,     0,     0,   128,   129,   130,   131,   132,     0, +       0,     0,     0,   133,   134,   118,   119,     0,     0,     0, +     120,   121,   122,     0,   123,   124,     0,   125,   126,   127, +       0,     0,     0,     0,   212,     0,     0,     0,     0,     0, +     128,   129,   130,   131,   132,     0,   118,   119,     0,   133, +     134,   120,   121,   122,     0,   123,   124,     0,   125,   126, +     127,     0,     0,     0,     0,     0,     0,   159,     0,     0, +     213,   128,   129,   130,   131,   132,     0,   118,   119,     0, +     133,   134,   120,   121,   122,     0,   123,   124,     0,   125, +     126,   127,     0,     0,     0,     0,     0,     0,     0,     0, +       0,     0,   128,   129,   130,   131,   132,     0,   118,   119, +       0,   133,   134,   120,   121,   122,     0,   123,   124,     0, +     125,   126,   127,     0,     0,     0,     0,     0,   170,   171, +       0,     0,     0,   128,   129,   130,   131,   132,     0,   118, +     119,     0,   133,   134,   120,   121,   122,     0,   123,   124, +       0,   125,   126,   127,     0,     0,     0,     0,     0,     0, +       0,     0,     0,   182,   128,   129,   130,   131,   132,     0, +     118,   119,   174,   133,   134,   120,   121,   122,     0,   123, +     124,     0,   125,   126,   127,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,   128,   129,   130,   131,   132, +       0,   118,   119,   174,   133,   134,   120,   121,   122,     0, +     123,   124,     0,   125,   126,   127,     0,     0,     0,     0, +       0,     0,     0,     0,     0,   182,   128,   129,   130,   131, +     132,     0,   118,   119,     0,   133,   134,   120,   121,   122, +       0,   123,   124,     0,   125,   126,   127,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,   128,   129,   130, +     131,   132,     0,   -63,   -63,     0,   133,   134,   -63,   -63, +     -63,     0,   -63,   -63,     0,   -63,   -63,   -63,     0,   121, +     122,     0,   123,   124,     0,   125,     0,     0,   -63,     0, +       0,   -63,   -63,     0,     0,    68,     0,   -63,   -63,   129, +     130,   131,   132,     0,     0,     0,     0,   133,   134  };  static const yytype_int16 yycheck[] =  { -       0,    11,    63,     0,     0,    66,    67,    68,   233,     1, -       0,     0,    45,    26,   110,    45,   112,    67,   213,    69, -     232,    25,    28,   278,    25,    88,   254,    28,   281,    12, -      13,    26,    88,    47,    48,    21,   291,    93,    21,   292, -      42,    91,    92,    49,   272,    49,    21,    39,    81,   244, -      45,    81,    90,    90,    21,    93,    93,     4,   270,   271, -       7,     8,     9,   275,    90,   277,    79,    93,    90,    16, -     295,    93,    19,    21,    89,   287,   288,    89,    25,    26, -      93,    28,    29,    30,    31,    32,    33,    88,    21,    36, -      37,    38,   317,    37,    21,    39,    21,    21,    88,    88, -      47,    48,    81,   315,    89,    93,    93,    37,    21,   109, -      44,    58,   109,   109,    21,    93,    63,    21,    44,    66, -      67,    68,    21,    21,    90,    72,    90,    74,    63,    64, -      21,    66,    67,    45,    69,   145,    21,    93,    25,    86, -      21,    49,    28,    44,    44,    25,   156,    82,    83,    84, -      85,    86,    25,    25,    25,   109,    91,    92,   267,   175, -     170,   291,    26,   110,   111,   112,    -1,   228,   178,   116, -     117,   118,   119,   120,   121,   122,   123,   124,   125,   126, -     127,   128,   129,   130,   131,   132,   178,   283,    -1,   136, -      -1,    -1,    -1,    -1,    -1,    -1,   143,    -1,   294,    -1, -     147,   148,    -1,   150,   151,    -1,   153,   154,    -1,    -1, -     157,    -1,    -1,   160,   161,   162,   163,   164,   165,   166, -     167,   168,   169,    63,    64,    -1,    66,    67,    -1,    69, -     246,    -1,   179,   249,   250,    -1,    -1,    -1,    -1,    -1, -      -1,    -1,    -1,    -1,   236,    85,    86,   239,    -1,   265, -      -1,    91,    92,    -1,    -1,    -1,   266,    -1,   274,    -1, -      -1,    -1,   209,   210,    -1,   281,    -1,   259,    -1,    -1, -     280,    -1,    -1,   289,   290,   291,    -1,    -1,    -1,    -1, -      -1,   228,    -1,    -1,   300,    -1,    -1,    -1,    -1,    -1, -     306,    -1,   308,   240,   241,   242,   243,   307,    -1,    -1, -      -1,   248,    -1,    -1,    -1,   321,    -1,   323,    -1,     0, -       1,    -1,    -1,    -1,    -1,    -1,    -1,   264,    -1,   319, +       0,    11,     1,   236,     0,     0,   235,    25,    39,    26, +      28,     0,     0,    28,   257,   216,    45,    45,    67,   284, +      69,    26,   281,    25,    88,    88,    37,   112,    39,   114, +     295,    95,   275,    64,    49,   294,    67,    68,    69,    21, +      45,    40,    91,    92,   273,   274,   247,    49,    42,   278, +      21,   280,    81,    81,    90,    12,    13,    47,    48,    95, +      21,   290,   291,    80,    21,   298,    90,    21,    21,     4, +      88,    95,     7,     8,     9,    94,    95,    94,    90,    21, +      21,    16,    21,    95,    19,    89,    89,   320,    81,   318, +      25,    26,    89,    28,    29,    30,    31,    32,    33,    88, +      88,    36,    37,    38,    39,    90,    37,    21,    95,    95, +      95,   111,    44,    48,    49,   111,   111,    95,    21,    44, +      21,    21,    21,    90,    59,    90,    21,    45,    21,    64, +      21,    95,    67,    68,    69,    25,    28,   147,    73,    49, +      75,    63,    64,    25,    66,    67,    44,    69,   158,    25, +      25,   178,    87,    25,   270,    44,   111,   294,    26,    -1, +      -1,    -1,   172,    85,    86,    -1,    -1,    -1,    -1,    91, +      92,   181,    -1,    -1,    -1,    -1,    -1,   112,   113,   114, +      -1,    -1,   181,   118,   119,   120,   121,   122,   123,   124, +     125,   126,   127,   128,   129,   130,   131,   132,   133,   134, +     231,   286,    -1,   138,    -1,    -1,    -1,    -1,    -1,    -1, +     145,    -1,   297,    -1,   149,   150,    -1,   152,   153,    -1, +     155,   156,   249,    -1,   159,   252,   253,   162,   163,   164, +     165,   166,   167,   168,   169,   170,   171,    -1,    -1,    -1, +     239,   268,    -1,   242,    -1,    -1,    -1,   182,    -1,    -1, +     277,    -1,    -1,    -1,    -1,    -1,    -1,   284,    -1,   269, +      -1,    -1,    -1,   262,    -1,   292,   293,   294,    -1,    -1, +      -1,    -1,    -1,   283,    -1,    -1,   303,   212,   213,    -1, +      -1,    -1,   309,    -1,   311,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,   231,   324,    -1,   326, +     310,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   243,   244, +     245,   246,    -1,    -1,    -1,    -1,   251,     0,     1,    -1, +      -1,    -1,   322,    -1,    -1,    -1,    -1,    -1,    11,    12, +      13,    14,   267,    16,    17,    18,    19,    20,    21,    22, +      -1,    24,    -1,    -1,    -1,    -1,    29,    -1,    31,    32, +      33,   286,    -1,    36,    -1,    -1,    -1,    -1,    41,    42, +      43,    -1,   297,    46,    -1,    -1,    -1,    50,    51,    52, +      53,    -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72, +      73,    74,    75,    76,    -1,    -1,    79,    80,    -1,    -1, +      83,    84,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1, +      93,    11,    12,    13,    14,    -1,    16,    17,    18,    19, +      20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,    29, +      -1,    31,    32,    33,    -1,    -1,    36,    -1,    -1,    -1, +      -1,    41,    42,    43,    -1,    -1,    46,    -1,    -1,    -1, +      50,    51,    52,    53,    -1,    -1,    56,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1, +      -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,    79, +      80,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    89, +      -1,    -1,    -1,    93,    11,    12,    13,    14,    -1,    16, +      17,    18,    19,    20,    21,    22,    -1,    24,    25,    -1, +      -1,    -1,    29,    -1,    31,    32,    33,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    41,    42,    43,    -1,    -1,    46, +      -1,    -1,    -1,    -1,    -1,    52,    53,    -1,    -1,    56, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1, +      -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    76, +      -1,    -1,    -1,    80,    -1,    -1,    83,    84,    -1,    -1, +      -1,    88,    89,    -1,    -1,    -1,    93,    11,    12,    13, +      14,    -1,    16,    17,    18,    19,    20,    21,    22,    -1, +      24,    -1,    -1,    -1,    -1,    29,    -1,    31,    32,    33, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    42,    43, +      -1,    -1,    46,    -1,    -1,    -1,    -1,    -1,    52,    53, +      -1,    -1,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73, +      74,    75,    76,    -1,    -1,    -1,    80,    -1,    -1,    83, +      84,    -1,    -1,    -1,    88,    89,    -1,    -1,    -1,    93,        11,    12,    13,    14,    -1,    16,    17,    18,    19,    20, -      21,    22,    -1,    24,    -1,    -1,   283,    -1,    29,    -1, -      31,    32,    33,    -1,    -1,    36,    -1,   294,    -1,    -1, -      41,    42,    43,    -1,    -1,    46,    -1,    -1,    -1,    50, -      51,    52,    53,    -1,    -1,    56,    -1,    -1,    -1,    -1, +      21,    22,    -1,    24,    -1,    -1,    -1,    -1,    29,    -1, +      31,    32,    33,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      41,    42,    43,    -1,    -1,    46,    -1,    -1,    -1,    -1, +      -1,    52,    53,    -1,    -1,    56,    -1,    -1,    -1,    -1,        -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1, -      -1,    72,    73,    74,    75,    76,    -1,    -1,    79,    80, -      -1,    -1,    83,    84,    -1,    -1,    -1,    88,    89,    11, -      12,    13,    14,    -1,    16,    17,    18,    19,    20,    21, -      22,    -1,    24,    -1,    -1,    -1,    -1,    29,    -1,    31, -      32,    33,    -1,    -1,    36,    -1,    -1,    -1,    -1,    41, -      42,    43,    -1,    -1,    46,    -1,    -1,    -1,    50,    51, -      52,    53,    -1,    -1,    56,    -1,    -1,    -1,    -1,    -1, -      -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1, -      72,    73,    74,    75,    76,    -1,    -1,    79,    80,    -1, -      -1,    83,    84,    11,    12,    13,    14,    89,    16,    17, -      18,    19,    20,    21,    22,    -1,    24,    25,    -1,    -1, -      -1,    29,    -1,    31,    32,    33,    -1,    -1,    -1,    -1, -      -1,    -1,    -1,    41,    42,    43,    -1,    -1,    46,    -1, +      -1,    72,    73,    74,    75,    76,    -1,    -1,    -1,    80, +      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1, +      -1,    -1,    93,    11,    12,    13,    14,    -1,    16,    17, +      18,    19,    20,    21,    22,    -1,    24,    -1,    -1,    -1, +      -1,    29,    -1,    31,    32,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,        -1,    -1,    -1,    -1,    52,    53,    -1,    -1,    56,    -1,        -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,        -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    -1, -      -1,    -1,    80,    -1,    -1,    83,    84,    -1,    -1,    -1, -      88,    89,    11,    12,    13,    14,    -1,    16,    17,    18, -      19,    20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1, -      29,    -1,    31,    32,    33,    -1,    -1,    -1,    -1,    -1, -      -1,    -1,    41,    42,    43,    -1,    -1,    46,    -1,    -1, -      -1,    -1,    -1,    52,    53,    -1,    -1,    56,    -1,    -1, -      -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1, -      -1,    -1,    -1,    72,    73,    74,    75,    76,    -1,    -1, -      -1,    80,    -1,    -1,    83,    84,    -1,    -1,    -1,    88, -      89,    11,    12,    13,    14,    -1,    16,    17,    18,    19, -      20,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,    29, -      -1,    31,    32,    33,    -1,    -1,    -1,    -1,    -1,    -1, -      -1,    41,    42,    43,    -1,    -1,    46,    -1,    -1,    -1, -      -1,    -1,    52,    53,    -1,    -1,    56,    -1,    -1,    -1, -      -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1, -      -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,    -1, -      80,    -1,    -1,    83,    84,    11,    12,    13,    14,    89, -      16,    17,    18,    19,    20,    21,    22,    -1,    24,    -1, -      -1,    -1,    -1,    29,    -1,    31,    32,    -1,    -1,    -1, -      -1,    -1,    -1,    -1,    -1,    41,    -1,    43,    -1,    -1, -      -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    -1,    -1, -      56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65, -      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75, -      76,    -1,    -1,    -1,    80,    -1,    -1,    83,    84,    11, -      12,    13,    14,    89,    16,    -1,    -1,    -1,    -1,    21, -      22,    -1,    24,    63,    64,    -1,    66,    67,    30,    69, -      -1,    -1,    -1,    35,    -1,    37,    38,    39,    40,    41, -      -1,    43,    -1,    83,    84,    85,    86,    -1,    -1,    -1, -      -1,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -      -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1, -      72,    73,    74,    75,    76,    11,    12,    13,    14,    -1, -      16,    83,    84,    -1,    -1,    21,    22,    89,    24,    -1, -      -1,    -1,    -1,    -1,    30,    -1,    -1,    -1,    -1,    -1, -      -1,    37,    -1,    39,    -1,    41,    -1,    43,    -1,    -1, -      -1,    11,    12,    13,    14,    -1,    16,    -1,    54,    -1, -      -1,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,    65, -      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75, -      76,    41,    -1,    43,    -1,    -1,    -1,    83,    84,    11, -      12,    13,    14,    89,    16,    -1,    -1,    -1,    -1,    21, -      22,    -1,    24,    -1,    -1,    65,    -1,    -1,    -1,    -1, -      -1,    -1,    72,    73,    74,    75,    76,    -1,    -1,    41, -      -1,    43,    -1,    83,    84,    11,    12,    13,    14,    89, -      16,    -1,    -1,    -1,    -1,    21,    22,    -1,    24,    -1, -      -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1, -      72,    73,    74,    75,    76,    41,    -1,    43,    -1,    -1, -      -1,    83,    84,    -1,    -1,    -1,    -1,    89,    -1,    -1, -      -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,    -1,    65, -      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    74,    75, -      76,    -1,    -1,    -1,    -1,    57,    58,    83,    84,    -1, -      62,    63,    64,    89,    66,    67,    68,    69,    70,    71, -      -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45, +      -1,    -1,    80,    -1,    -1,    83,    84,    11,    12,    13, +      14,    89,    16,    -1,    -1,    93,    -1,    21,    22,    -1, +      24,    63,    64,    -1,    66,    67,    30,    69,    -1,    -1, +      -1,    35,    -1,    37,    38,    39,    40,    41,    -1,    43,        82,    83,    84,    85,    86,    -1,    -1,    -1,    -1,    91, -      92,    57,    58,    -1,    -1,    -1,    62,    63,    64,    -1, -      66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,    39, -      -1,    -1,    -1,    -1,    -1,    45,    82,    83,    84,    85, -      86,    -1,    -1,    -1,    -1,    91,    92,    57,    58,    -1, -      -1,    -1,    62,    63,    64,    -1,    66,    67,    -1,    69, +      92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73, +      74,    75,    76,    11,    12,    13,    14,    -1,    16,    83, +      84,    -1,    -1,    21,    22,    89,    24,    -1,    -1,    93, +      -1,    -1,    30,    -1,    -1,    -1,    -1,    -1,    -1,    37, +      -1,    39,    -1,    41,    -1,    43,    -1,    -1,    -1,    11, +      12,    13,    14,    -1,    16,    -1,    54,    -1,    -1,    21, +      22,    -1,    24,    -1,    -1,    -1,    -1,    65,    -1,    -1, +      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    41, +      -1,    43,    -1,    -1,    -1,    83,    84,    11,    12,    13, +      14,    89,    16,    -1,    -1,    93,    -1,    21,    22,    -1, +      24,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1, +      72,    73,    74,    75,    76,    -1,    -1,    41,    -1,    43, +      -1,    83,    84,    11,    12,    13,    14,    89,    16,    -1, +      -1,    93,    -1,    21,    22,    -1,    24,    -1,    -1,    -1, +      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73, +      74,    75,    76,    41,    -1,    43,    -1,    -1,    -1,    83, +      84,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    93, +      -1,    -1,    -1,    -1,    34,    -1,    -1,    65,    -1,    -1, +      -1,    -1,    -1,    -1,    72,    73,    74,    75,    76,    -1, +      -1,    -1,    -1,    -1,    -1,    83,    84,    57,    58,    -1, +      -1,    89,    62,    63,    64,    93,    66,    67,    68,    69,        70,    71,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,        -1,    45,    82,    83,    84,    85,    86,    -1,    -1,    -1,        -1,    91,    92,    57,    58,    -1,    -1,    -1,    62,    63, @@ -1157,10 +1163,10 @@ static const yytype_int16 yycheck[] =        84,    85,    86,    -1,    -1,    -1,    -1,    91,    92,    57,        58,    -1,    -1,    -1,    62,    63,    64,    -1,    66,    67,        -1,    69,    70,    71,    -1,    -1,    -1,    39,    -1,    -1, -      -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,    -1, +      -1,    -1,    -1,    45,    82,    83,    84,    85,    86,    -1,        -1,    -1,    -1,    91,    92,    57,    58,    -1,    -1,    -1,        62,    63,    64,    -1,    66,    67,    -1,    69,    70,    71, -      -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,        82,    83,    84,    85,    86,    -1,    -1,    -1,    -1,    91,        92,    57,    58,    -1,    -1,    -1,    62,    63,    64,    -1,        66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,    39, @@ -1171,33 +1177,41 @@ static const yytype_int16 yycheck[] =        -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,    -1,        -1,    91,    92,    57,    58,    -1,    -1,    -1,    62,    63,        64,    -1,    66,    67,    -1,    69,    70,    71,    -1,    -1, -      -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    82,    83, -      84,    85,    86,    -1,    57,    58,    -1,    91,    92,    62, -      63,    64,    -1,    66,    67,    -1,    69,    70,    71,    -1, -      -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    81,    82, -      83,    84,    85,    86,    -1,    57,    58,    -1,    91,    92, +      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83, +      84,    85,    86,    -1,    -1,    -1,    -1,    91,    92,    57, +      58,    -1,    -1,    -1,    62,    63,    64,    -1,    66,    67, +      -1,    69,    70,    71,    -1,    -1,    -1,    39,    -1,    -1, +      -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,    -1, +      -1,    -1,    -1,    91,    92,    57,    58,    -1,    -1,    -1,        62,    63,    64,    -1,    66,    67,    -1,    69,    70,    71, -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,        82,    83,    84,    85,    86,    -1,    57,    58,    -1,    91,        92,    62,    63,    64,    -1,    66,    67,    -1,    69,    70, -      71,    -1,    -1,    -1,    -1,    -1,    77,    78,    -1,    -1, -      -1,    82,    83,    84,    85,    86,    -1,    57,    58,    -1, +      71,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1, +      81,    82,    83,    84,    85,    86,    -1,    57,    58,    -1,        91,    92,    62,    63,    64,    -1,    66,    67,    -1,    69,        70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -      -1,    81,    82,    83,    84,    85,    86,    -1,    57,    58, -      90,    91,    92,    62,    63,    64,    -1,    66,    67,    -1, -      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    82,    83,    84,    85,    86,    -1,    57,    58, +      -1,    91,    92,    62,    63,    64,    -1,    66,    67,    -1, +      69,    70,    71,    -1,    -1,    -1,    -1,    -1,    77,    78,        -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    57, -      58,    90,    91,    92,    62,    63,    64,    -1,    66,    67, +      58,    -1,    91,    92,    62,    63,    64,    -1,    66,    67,        -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,    -1,        -1,    -1,    -1,    81,    82,    83,    84,    85,    86,    -1, -      57,    58,    -1,    91,    92,    62,    63,    64,    -1,    66, +      57,    58,    90,    91,    92,    62,    63,    64,    -1,    66,        67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1,    -1,        -1,    -1,    -1,    -1,    -1,    82,    83,    84,    85,    86, -      -1,    57,    58,    -1,    91,    92,    62,    63,    64,    -1, +      -1,    57,    58,    90,    91,    92,    62,    63,    64,    -1,        66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,    -1, -      -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,    -1,    85, -      86,    -1,    -1,    89,    -1,    91,    92 +      -1,    -1,    -1,    -1,    -1,    81,    82,    83,    84,    85, +      86,    -1,    57,    58,    -1,    91,    92,    62,    63,    64, +      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84, +      85,    86,    -1,    57,    58,    -1,    91,    92,    62,    63, +      64,    -1,    66,    67,    -1,    69,    70,    71,    -1,    63, +      64,    -1,    66,    67,    -1,    69,    -1,    -1,    82,    -1, +      -1,    85,    86,    -1,    -1,    89,    -1,    91,    92,    83, +      84,    85,    86,    -1,    -1,    -1,    -1,    91,    92  };  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1207,36 +1221,36 @@ static const yytype_uint8 yystos[] =         0,     1,    11,    12,    13,    14,    16,    17,    18,    19,        20,    21,    22,    24,    29,    31,    32,    33,    36,    41,        42,    43,    46,    50,    51,    52,    53,    56,    65,    72, -      73,    74,    75,    76,    79,    80,    83,    84,    89,    95, -      97,    98,    99,   100,   101,   108,   109,   110,   115,   116, -     117,   120,   123,   124,   131,    88,    96,    21,    41,    98, -     116,   116,   116,    89,   116,   132,    21,    89,   112,    42, -      21,   118,    30,    35,    37,    38,    39,    40,   116,   121, -     122,    21,   116,    47,    48,    12,    13,    21,    21,    21, -      21,   116,    54,   121,   122,    21,   119,   116,   116,   116, -     116,   116,   116,    21,    89,   116,   116,   116,     0,    96, -      89,    81,    89,   107,   116,   116,    57,    58,    62,    63, -      64,    66,    67,    69,    70,    71,    82,    83,    84,    85, -      86,    91,    92,   116,   116,   132,    93,   132,   132,   132, -      93,   116,   116,    37,   122,   125,    34,    67,    68,    21, -      45,    81,   116,    45,    81,    44,   126,    47,   122,    93, -      39,    45,    39,    45,    39,    45,    39,    45,    77,    78, -     127,    21,    90,    97,   107,   116,   107,   116,    44,    81, -     113,   116,   116,   116,   116,   116,   116,   116,   116,   116, -     116,   116,   116,   116,   116,   116,   116,   116,    90,   116, -      90,    21,   116,   112,    21,   116,   116,   116,   116,    45, -      81,   116,   116,   112,   116,    21,   116,   116,   116,   116, -     116,   116,   116,   116,   116,   116,   112,    90,    93,    90, -     113,    90,    96,   112,   116,    21,   129,   116,   116,   129, -      39,    39,    39,    39,   128,   132,   114,    26,    45,   114, -      99,   117,    93,    96,    96,   116,   116,   116,   116,   129, -      90,    96,   100,   113,    45,   116,   113,   113,    21,    93, -     130,   130,    96,    25,   116,   113,    25,    49,   112,    28, -      49,   104,   105,   111,    21,   114,   114,   130,   113,   114, -     114,   103,   104,   106,   111,   112,   105,   113,   107,   114, -     114,   113,   113,   106,   113,   107,    99,    49,   102,    44, -      25,   113,    25,    25,    25,    44,   113,   112,   113,   112, -      25,   114,    99,   100,   113,   113 +      73,    74,    75,    76,    79,    80,    83,    84,    89,    93, +      97,    99,   100,   101,   102,   103,   110,   111,   112,   117, +     118,   119,   122,   125,   126,   133,    88,    98,    21,    41, +     100,   118,   118,   118,    89,   118,   134,    21,    89,   114, +      42,    21,   120,    30,    35,    37,    38,    39,    40,   118, +     123,   124,    21,   118,    47,    48,    12,    13,    21,    21, +      21,    21,   118,    54,   123,   124,    21,   121,   118,   118, +     118,   118,   118,   118,    21,    89,   118,   118,   118,   134, +       0,    98,    89,    81,    89,   109,   118,   118,    57,    58, +      62,    63,    64,    66,    67,    69,    70,    71,    82,    83, +      84,    85,    86,    91,    92,   118,   118,   134,    95,   134, +     134,   134,    95,   118,   118,    37,   124,   127,    34,    67, +      68,    21,    45,    81,   118,    45,    81,    44,   128,    47, +     124,    95,    39,    45,    39,    45,    39,    45,    39,    45, +      77,    78,   129,    21,    90,    94,    99,   109,   118,   109, +     118,    44,    81,   115,   118,   118,   118,   118,   118,   118, +     118,   118,   118,   118,   118,   118,   118,   118,   118,   118, +     118,    90,   118,    90,    21,   118,   114,    21,   118,   118, +     118,   118,    45,    81,   118,   118,   114,   118,    21,   118, +     118,   118,   118,   118,   118,   118,   118,   118,   118,   114, +      90,    95,    90,   115,    90,    98,   114,   118,    21,   131, +     118,   118,   131,    39,    39,    39,    39,   130,   134,   116, +      26,    45,   116,   101,   119,    95,    98,    98,   118,   118, +     118,   118,   131,    90,    98,   102,   115,    45,   118,   115, +     115,    21,    95,   132,   132,    98,    25,   118,   115,    25, +      49,   114,    28,    49,   106,   107,   113,    21,   116,   116, +     132,   115,   116,   116,   105,   106,   108,   113,   114,   107, +     115,   109,   116,   116,   115,   115,   108,   115,   109,   101, +      49,   104,    44,    25,   115,    25,    25,    25,    44,   115, +     114,   115,   114,    25,   116,   101,   102,   115,   115  };  #define yyerrok		(yyerrstatus = 0) @@ -2580,215 +2594,220 @@ yyreduce:    case 88:  #line 439 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_intersects); ;} +    { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}      break;    case 89:  #line 440 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_within); ;} +    { g_lingo->code1(g_lingo->c_intersects); ;}      break;    case 90:  #line 441 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_charOf); ;} +    { g_lingo->code1(g_lingo->c_within); ;}      break;    case 91:  #line 442 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_charToOf); ;} +    { g_lingo->code1(g_lingo->c_charOf); ;}      break;    case 92:  #line 443 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_itemOf); ;} +    { g_lingo->code1(g_lingo->c_charToOf); ;}      break;    case 93:  #line 444 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_itemToOf); ;} +    { g_lingo->code1(g_lingo->c_itemOf); ;}      break;    case 94:  #line 445 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_lineOf); ;} +    { g_lingo->code1(g_lingo->c_itemToOf); ;}      break;    case 95:  #line 446 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_lineToOf); ;} +    { g_lingo->code1(g_lingo->c_lineOf); ;}      break;    case 96:  #line 447 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_wordOf); ;} +    { g_lingo->code1(g_lingo->c_lineToOf); ;}      break;    case 97:  #line 448 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_wordToOf); ;} +    { g_lingo->code1(g_lingo->c_wordOf); ;}      break;    case 98: -#line 451 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_printtop); ;} +#line 449 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_wordToOf); ;}      break; -  case 101: -#line 454 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_exitRepeat); ;} +  case 99: +#line 452 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_printtop); ;}      break;    case 102:  #line 455 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_exitRepeat); ;} +    break; + +  case 103: +#line 456 "engines/director/lingo/lingo-gr.y"      { g_lingo->codeConst(0); // Push fake value on stack  							  g_lingo->code1(g_lingo->c_procret); ;}      break; -  case 105: -#line 459 "engines/director/lingo/lingo-gr.y" +  case 106: +#line 460 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);  		delete (yyvsp[(1) - (2)].s); ;}      break; -  case 106: -#line 462 "engines/director/lingo/lingo-gr.y" +  case 107: +#line 463 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func);  		delete (yyvsp[(1) - (2)].s); ;}      break; -  case 107: -#line 465 "engines/director/lingo/lingo-gr.y" +  case 108: +#line 466 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code2(g_lingo->c_voidpush, g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func);  		delete (yyvsp[(1) - (1)].s); ;}      break; -  case 108: -#line 468 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;} -    break; -    case 109:  #line 469 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;} +    { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}      break;    case 110:  #line 470 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;} +    { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}      break;    case 111:  #line 471 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;} +    { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}      break;    case 112:  #line 472 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_open); ;} +    { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}      break;    case 113:  #line 473 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;} +    { g_lingo->code1(g_lingo->c_open); ;}      break;    case 114:  #line 474 "engines/director/lingo/lingo-gr.y" -    { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;} +    { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}      break;    case 115: -#line 477 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} +#line 475 "engines/director/lingo/lingo-gr.y" +    { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}      break;    case 116:  #line 478 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} +    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}      break;    case 117: -#line 481 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} +#line 479 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}      break;    case 118:  #line 482 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} +    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}      break;    case 119: -#line 493 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_gotoloop); ;} +#line 483 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}      break;    case 120:  #line 494 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_gotonext); ;} +    { g_lingo->code1(g_lingo->c_gotoloop); ;}      break;    case 121:  #line 495 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_gotoprevious); ;} +    { g_lingo->code1(g_lingo->c_gotonext); ;}      break;    case 122:  #line 496 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_gotoprevious); ;} +    break; + +  case 123: +#line 497 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->codeConst(1);  		g_lingo->code1(g_lingo->c_goto); ;}      break; -  case 123: -#line 499 "engines/director/lingo/lingo-gr.y" +  case 124: +#line 500 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->codeConst(3);  		g_lingo->code1(g_lingo->c_goto); ;}      break; -  case 124: -#line 502 "engines/director/lingo/lingo-gr.y" +  case 125: +#line 503 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->codeConst(2);  		g_lingo->code1(g_lingo->c_goto); ;}      break; -  case 129: -#line 515 "engines/director/lingo/lingo-gr.y" +  case 130: +#line 516 "engines/director/lingo/lingo-gr.y"      { g_lingo->code1(g_lingo->c_playdone); ;}      break; -  case 130: -#line 516 "engines/director/lingo/lingo-gr.y" +  case 131: +#line 517 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->codeConst(1);  		g_lingo->code1(g_lingo->c_play); ;}      break; -  case 131: -#line 519 "engines/director/lingo/lingo-gr.y" +  case 132: +#line 520 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->codeConst(3);  		g_lingo->code1(g_lingo->c_play); ;}      break; -  case 132: -#line 522 "engines/director/lingo/lingo-gr.y" +  case 133: +#line 523 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->codeConst(2);  		g_lingo->code1(g_lingo->c_play); ;}      break; -  case 133: -#line 552 "engines/director/lingo/lingo-gr.y" +  case 134: +#line 553 "engines/director/lingo/lingo-gr.y"      { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}      break; -  case 134: -#line 553 "engines/director/lingo/lingo-gr.y" +  case 135: +#line 554 "engines/director/lingo/lingo-gr.y"      {  			g_lingo->codeConst(0); // Push fake value on stack  			g_lingo->code1(g_lingo->c_procret); @@ -2796,38 +2815,38 @@ yyreduce:  			g_lingo->_indef = false; ;}      break; -  case 135: -#line 558 "engines/director/lingo/lingo-gr.y" +  case 136: +#line 559 "engines/director/lingo/lingo-gr.y"      {  			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));  		;}      break; -  case 136: -#line 561 "engines/director/lingo/lingo-gr.y" +  case 137: +#line 562 "engines/director/lingo/lingo-gr.y"      { g_lingo->_indef = true; ;}      break; -  case 137: -#line 562 "engines/director/lingo/lingo-gr.y" +  case 138: +#line 563 "engines/director/lingo/lingo-gr.y"      {  			g_lingo->code1(g_lingo->c_procret);  			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);  			g_lingo->_indef = false; ;}      break; -  case 138: -#line 566 "engines/director/lingo/lingo-gr.y" +  case 139: +#line 567 "engines/director/lingo/lingo-gr.y"      { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}      break; -  case 139: -#line 567 "engines/director/lingo/lingo-gr.y" +  case 140: +#line 568 "engines/director/lingo/lingo-gr.y"      { g_lingo->_ignoreMe = true; ;}      break; -  case 140: -#line 567 "engines/director/lingo/lingo-gr.y" +  case 141: +#line 568 "engines/director/lingo/lingo-gr.y"      {  				g_lingo->codeConst(0); // Push fake value on stack  				g_lingo->code1(g_lingo->c_procret); @@ -2839,33 +2858,33 @@ yyreduce:  			;}      break; -  case 141: -#line 577 "engines/director/lingo/lingo-gr.y" -    { (yyval.narg) = 0; ;} -    break; -    case 142:  #line 578 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;} +    { (yyval.narg) = 0; ;}      break;    case 143:  #line 579 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} +    { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}      break;    case 144:  #line 580 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;} +    { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}      break;    case 145: -#line 582 "engines/director/lingo/lingo-gr.y" -    { g_lingo->codeArgStore(); ;} +#line 581 "engines/director/lingo/lingo-gr.y" +    { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}      break;    case 146: -#line 586 "engines/director/lingo/lingo-gr.y" +#line 583 "engines/director/lingo/lingo-gr.y" +    { g_lingo->codeArgStore(); ;} +    break; + +  case 147: +#line 587 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->c_call);  		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str()); @@ -2874,24 +2893,24 @@ yyreduce:  		g_lingo->code1(numpar); ;}      break; -  case 147: -#line 594 "engines/director/lingo/lingo-gr.y" -    { (yyval.narg) = 0; ;} -    break; -    case 148:  #line 595 "engines/director/lingo/lingo-gr.y" -    { (yyval.narg) = 1; ;} +    { (yyval.narg) = 0; ;}      break;    case 149:  #line 596 "engines/director/lingo/lingo-gr.y" +    { (yyval.narg) = 1; ;} +    break; + +  case 150: +#line 597 "engines/director/lingo/lingo-gr.y"      { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}      break;  /* Line 1267 of yacc.c.  */ -#line 2895 "engines/director/lingo/lingo-gr.cpp" +#line 2914 "engines/director/lingo/lingo-gr.cpp"        default: break;      }    YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -3105,6 +3124,6 @@ yyreturn:  } -#line 599 "engines/director/lingo/lingo-gr.y" +#line 600 "engines/director/lingo/lingo-gr.y" diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index 392850bf51..778496bf94 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -436,6 +436,7 @@ expr: INT		{ $$ = g_lingo->codeConst($1); }  	| '+' expr  %prec UNARY		{ $$ = $2; }  	| '-' expr  %prec UNARY		{ $$ = $2; g_lingo->code1(g_lingo->c_negate); }  	| '(' expr ')'				{ $$ = $2; } +	| '[' arglist ']'			{ $$ = g_lingo->codeArray($2); }  	| tSPRITE expr tINTERSECTS expr 	{ g_lingo->code1(g_lingo->c_intersects); }  	| tSPRITE expr tWITHIN expr		 	{ g_lingo->code1(g_lingo->c_within); }  	| tCHAR expr tOF expr				{ g_lingo->code1(g_lingo->c_charOf); } diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp index c93e788b97..922425048e 100644 --- a/engines/director/lingo/lingo-lex.cpp +++ b/engines/director/lingo/lingo-lex.cpp @@ -415,7 +415,7 @@ static yyconst flex_int32_t yy_ec[256] =         15,   16,    1,    1,   17,   18,   19,   20,   21,   22,         23,   24,   25,   26,   26,   27,   28,   29,   30,   31,         32,   33,   34,   35,   36,   37,   38,   39,   40,   26, -        1,    1,    1,    8,   41,    1,   42,   43,   44,   45, +        8,    1,    8,    8,   41,    1,   42,   43,   44,   45,         46,   47,   48,   49,   50,   26,   26,   51,   52,   53,         54,   55,   56,   57,   58,   59,   60,   61,   62,   63, diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l index b7a54f7357..5afe926913 100644 --- a/engines/director/lingo/lingo-lex.l +++ b/engines/director/lingo/lingo-lex.l @@ -65,7 +65,7 @@ identifier [_[:alpha:]][_[:alnum:]]*  constfloat [[:digit:]]+\.[[:digit:]]*  constinteger [[:digit:]]+  conststring \"[^\"\r\n]*\" -operator [-+*/%=^:,()><&] +operator [-+*/%=^:,()><&\[\]]  newline [ \t]*[\n\r]  whitespace [\t ] diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index 4cd7b3c11e..5d6c29b915 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -211,6 +211,7 @@ public:  	int codeString(const char *s);  	void codeLabel(int label);  	int codeConst(int val); +	int codeArray(int arraySize);  	int calcStringAlignment(const char *s) {  		return calcCodeAlignment(strlen(s) + 1); @@ -267,6 +268,7 @@ public:  	static void c_stringpush();  	static void c_symbolpush();  	static void c_varpush(); +	static void c_arraypush();  	static void c_assign();  	bool verify(Symbol *s);  	static void c_eval(); diff --git a/engines/director/lingo/tests/arrays.lingo b/engines/director/lingo/tests/arrays.lingo new file mode 100644 index 0000000000..2d1c9ef93d --- /dev/null +++ b/engines/director/lingo/tests/arrays.lingo @@ -0,0 +1,2 @@ +set a to [1, 2, 3] +put a | 
