[Scummvm-git-logs] scummvm master -> 23e0bc5d8d9535a68dc414f198e7f5d4dbbdfe63

sev- sev at scummvm.org
Wed Jan 11 10:52:38 CET 2017


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

Summary:
9feebaf649 DIRECTOR: Lingo: Add debug print out of immediate floats
8fa8b4578f DIRECTOR: Better trace for Lingo tests
23e0bc5d8d DIRECTOR: Lingo: Improvements to me() handling in factories


Commit: 9feebaf649a0344cd001417958f0ac2c51765d80
    https://github.com/scummvm/scummvm/commit/9feebaf649a0344cd001417958f0ac2c51765d80
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-11T10:18:20+01:00

Commit Message:
DIRECTOR: Lingo: Add debug print out of immediate floats

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


diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 675f7ef..4543e52 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -53,14 +53,14 @@ static struct FuncDescr {
 	const char *name;
 	const char *args;
 } funcDescr[] = {
-	{ 0,					"STOP",		"" },
+	{ 0,					"STOP",			"" },
 	{ Lingo::c_xpop,		"c_xpop",		"" },
 	{ Lingo::c_printtop,	"c_printtop",	"" },
 	{ Lingo::c_constpush,	"c_constpush",	"i" },
 	{ Lingo::c_voidpush,	"c_voidpush",	"" },
 	{ Lingo::c_fconstpush,	"c_fconstpush",	"f" },
 	{ Lingo::c_stringpush,	"c_stringpush",	"s" },
-	{ Lingo::c_symbolpush,	"c_symbolpush","s" },	// D3
+	{ Lingo::c_symbolpush,	"c_symbolpush",	"s" },	// D3
 	{ Lingo::c_varpush,		"c_varpush",	"s" },
 	{ Lingo::c_assign,		"c_assign",		"" },
 	{ Lingo::c_eval,		"c_eval",		"s" },
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index ba39d10..6ff3c0c 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -99,6 +99,14 @@ Common::String Lingo::decodeInstruction(uint pc, uint *newPc) {
 					res += Common::String::format(" %d", v);
 					break;
 				}
+			case 'f':
+				{
+					i = (*_currentScript)[pc++];
+					double v = *((double *)&i);
+
+					res += Common::String::format(" %lf", v);
+					break;
+				}
 			case 'o':
 				{
 					i = (*_currentScript)[pc++];


Commit: 8fa8b4578f92a2288bd6d36da7cefb67e9e4b171
    https://github.com/scummvm/scummvm/commit/8fa8b4578f92a2288bd6d36da7cefb67e9e4b171
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-11T10:34:33+01:00

Commit Message:
DIRECTOR: Better trace for Lingo tests

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


diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 2811c0c..1377b08 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -457,7 +457,7 @@ void Lingo::runTests() {
 
 			stream->read(script, size);
 
-			debugC(2, kDebugLingoCompile, "Compiling file %s of size %d, id: %d", fileList[i].c_str(), size, counter);
+			debug(">> Compiling file %s of size %d, id: %d", fileList[i].c_str(), size, counter);
 
 			_hadError = false;
 			addCode(script, kMovieScript, counter);
@@ -465,7 +465,7 @@ void Lingo::runTests() {
 			if (!_hadError)
 				executeScript(kMovieScript, counter);
 			else
-				debugC(2, kDebugLingoCompile, "Skipping execution");
+				debug(">> Skipping execution");
 
 			free(script);
 


Commit: 23e0bc5d8d9535a68dc414f198e7f5d4dbbdfe63
    https://github.com/scummvm/scummvm/commit/23e0bc5d8d9535a68dc414f198e7f5d4dbbdfe63
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-11T10:38:14+01:00

Commit Message:
DIRECTOR: Lingo: Improvements to me() handling in factories

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


diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 6ff3c0c..71d7d3f 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -297,7 +297,7 @@ void Lingo::codeArgStore() {
 int Lingo::codeFunc(Common::String *s, int numpar) {
 	int ret = g_lingo->code1(g_lingo->c_call);
 
-	if (s->equalsIgnoreCase("me")) {
+	if (!_currentFactory.empty() && s->equalsIgnoreCase("me")) {
 		if (!g_lingo->_currentFactory.empty()) {
 			g_lingo->codeString(g_lingo->_currentFactory.c_str());
 			debugC(2, kDebugLingoCompile, "Replaced 'me' with %s", g_lingo->_currentFactory.c_str());
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 7f75b36..d1fc53a 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -142,7 +142,8 @@
      tSPRITE = 331,
      tINTERSECTS = 332,
      tWITHIN = 333,
-     tON = 334
+     tON = 334,
+     tME = 335
    };
 #endif
 /* Tokens.  */
@@ -223,6 +224,7 @@
 #define tINTERSECTS 332
 #define tWITHIN 333
 #define tON 334
+#define tME 335
 
 
 
@@ -290,7 +292,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 193 of yacc.c.  */
-#line 294 "engines/director/lingo/lingo-gr.cpp"
+#line 296 "engines/director/lingo/lingo-gr.cpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -303,7 +305,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 307 "engines/director/lingo/lingo-gr.cpp"
+#line 309 "engines/director/lingo/lingo-gr.cpp"
 
 #ifdef short
 # undef short
@@ -518,10 +520,10 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  105
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1486
+#define YYLAST   1494
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  93
+#define YYNTOKENS  94
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  39
 /* YYNRULES -- Number of rules.  */
@@ -531,7 +533,7 @@ union yyalloc
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   334
+#define YYMAXUTOK   335
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -540,12 +542,12 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      87,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      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,    86,    81,     2,
-      88,    89,    84,    82,    92,    83,     2,    85,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    87,    82,     2,
+      89,    90,    85,    83,    93,    84,     2,    86,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      91,    80,    90,     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,
@@ -572,7 +574,7 @@ static const yytype_uint8 yytranslate[] =
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-      75,    76,    77,    78,    79
+      75,    76,    77,    78,    79,    80
 };
 
 #if YYDEBUG
@@ -600,62 +602,62 @@ static const yytype_uint16 yyprhs[] =
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-      94,     0,    -1,    94,    95,    96,    -1,    96,    -1,     1,
-      95,    -1,    87,    -1,    -1,   123,    -1,   116,    -1,   130,
-      -1,    97,    -1,    99,    -1,    41,   115,    34,    21,    -1,
-      41,   115,    67,   115,    -1,    41,   115,    68,   115,    -1,
-      43,    21,    80,   115,    -1,    43,    12,    80,   115,    -1,
-      43,    13,   115,    80,   115,    -1,    43,    21,    45,   115,
-      -1,    43,    12,    45,   115,    -1,    43,    13,   115,    45,
-     115,    -1,   115,    -1,   116,    -1,    98,    -1,   100,    -1,
-     107,    88,   106,    89,   113,   112,    25,    -1,   108,    80,
-     115,   112,    45,   115,   112,   113,   112,    25,    -1,   108,
-      80,   115,   112,    26,    45,   115,   112,   113,   112,    25,
-      -1,   114,   115,   112,    -1,   109,   106,    44,    95,   113,
-     112,    25,    -1,   109,   106,    44,    95,   113,   112,    49,
-     113,   112,    25,    -1,   109,   106,    44,    95,   113,   112,
-     111,   102,   112,    25,    -1,   109,   106,    44,   111,    98,
-     112,    -1,   109,   106,    44,   111,    98,   112,    49,   111,
-      98,   112,    -1,   109,   106,    44,   111,    98,   112,   103,
-     112,   101,   112,    -1,    -1,    49,   111,    98,    -1,   102,
-     105,    -1,   105,    -1,   103,   104,    -1,   104,    -1,   110,
-     106,    44,   111,    99,   112,    -1,   103,    -1,   110,   106,
-      44,   113,   112,    -1,   115,    -1,   115,    80,   115,    -1,
-      88,   106,    89,    -1,    42,    48,    -1,    42,    47,    21,
-      -1,    33,    -1,    28,    -1,    -1,    -1,    -1,   113,    95,
-      -1,   113,    99,    -1,    46,    21,    44,    -1,    11,    -1,
-      14,    -1,    24,    -1,    22,    -1,    16,    -1,    21,    88,
-     131,    89,    -1,    21,    -1,    12,    -1,    13,   115,    -1,
-      97,    -1,   115,    82,   115,    -1,   115,    83,   115,    -1,
-     115,    84,   115,    -1,   115,    85,   115,    -1,   115,    66,
-     115,    -1,   115,    90,   115,    -1,   115,    91,   115,    -1,
-     115,    62,   115,    -1,   115,    57,   115,    -1,   115,    58,
-     115,    -1,   115,    63,   115,    -1,   115,    64,   115,    -1,
-      65,   115,    -1,   115,    81,   115,    -1,   115,    67,   115,
-      -1,   115,    69,   115,    -1,   115,    70,   115,    -1,   115,
-      71,   115,    -1,    82,   115,    -1,    83,   115,    -1,    88,
-     115,    89,    -1,    76,   115,    77,   115,    -1,    76,   115,
-      78,   115,    -1,    72,   115,    39,   115,    -1,    72,   115,
-      45,   115,    39,   115,    -1,    73,   115,    39,   115,    -1,
-      73,   115,    45,   115,    39,   115,    -1,    74,   115,    39,
-     115,    -1,    74,   115,    45,   115,    39,   115,    -1,    75,
-     115,    39,   115,    -1,    75,   115,    45,   115,    39,   115,
-      -1,    41,   115,    -1,   119,    -1,   122,    -1,    29,    42,
-      -1,    29,    -1,    31,   117,    -1,    56,   118,    -1,    18,
-     115,    -1,    17,   115,    -1,    17,    -1,    19,   131,    -1,
-      52,   115,    47,   115,    -1,    52,   115,    -1,    20,    21,
-     131,    -1,    21,    -1,   117,    92,    21,    -1,    21,    -1,
-     118,    92,    21,    -1,    32,    35,    -1,    32,    38,    -1,
-      32,    40,    -1,    32,   120,    -1,    32,   120,   121,    -1,
-      32,   121,    -1,    30,   115,    -1,   115,    -1,    39,    37,
-     115,    -1,    37,   115,    -1,    53,    54,    -1,    53,   120,
-      -1,    53,   120,   121,    -1,    53,   121,    -1,    -1,    36,
-      21,   124,   111,   128,    95,   129,   113,    -1,    50,    21,
-      -1,    -1,    51,    21,   125,   111,   128,    95,   129,   113,
-      -1,    -1,    -1,    79,    21,   126,   111,   127,   128,    95,
-     129,   113,    25,    -1,    -1,    21,    -1,   128,    92,    21,
-      -1,   128,    95,    92,    21,    -1,    -1,    21,   111,   131,
-      -1,    -1,   115,    -1,   131,    92,   115,    -1
+      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,
+      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,   132,    -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
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -695,8 +697,8 @@ static const char *const yytname[] =
   "tPLAY", "tDONE", "tPLAYACCEL", "tINSTANCE", "tGE", "tLE", "tGT", "tLT",
   "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE",
   "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD",
-  "tSPRITE", "tINTERSECTS", "tWITHIN", "tON", "'='", "'&'", "'+'", "'-'",
-  "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", "','",
+  "tSPRITE", "tINTERSECTS", "tWITHIN", "tON", "tME", "'='", "'&'", "'+'",
+  "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", "','",
   "$accept", "program", "nl", "programline", "asgn", "stmtoneliner",
   "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
   "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile",
@@ -720,29 +722,29 @@ static const yytype_uint16 yytoknum[] =
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-      61,    38,    43,    45,    42,    47,    37,    10,    40,    41,
-      62,    60,    44
+     335,    61,    38,    43,    45,    42,    47,    37,    10,    40,
+      41,    62,    60,    44
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    93,    94,    94,    94,    95,    96,    96,    96,    96,
-      96,    96,    97,    97,    97,    97,    97,    97,    97,    97,
-      97,    98,    98,    99,    99,    99,    99,    99,    99,   100,
-     100,   100,   100,   100,   100,   101,   101,   102,   102,   103,
-     103,   104,   105,   105,   106,   106,   106,   107,   108,   109,
-     110,   111,   112,   113,   113,   113,   114,   115,   115,   115,
-     115,   115,   115,   115,   115,   115,   115,   115,   115,   115,
-     115,   115,   115,   115,   115,   115,   115,   115,   115,   115,
-     115,   115,   115,   115,   115,   115,   115,   115,   115,   115,
-     115,   115,   115,   115,   115,   115,   115,   115,   116,   116,
+       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,   117,   117,   118,   118,   119,   119,   119,   119,
-     119,   119,   120,   120,   121,   121,   122,   122,   122,   122,
-     124,   123,   123,   125,   123,   126,   127,   123,   128,   128,
-     128,   128,   129,   130,   131,   131,   131
+     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,   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
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -815,50 +817,50 @@ static const yytype_int16 yydefgoto[] =
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -234
+#define YYPACT_NINF -244
 static const yytype_int16 yypact[] =
 {
-     318,   -60,  -234,  -234,   880,  -234,  -234,   880,   880,   880,
-      16,  1395,  -234,  -234,    -3,    44,   771,  -234,    47,   880,
-      57,    81,    78,    80,    89,   880,   844,    92,   880,   880,
-     880,   880,   880,   880,   100,   880,   880,   880,     4,  -234,
-       5,  -234,  -234,  -234,    35,    -9,   917,   880,  1365,  -234,
-    -234,  -234,  -234,  -234,  -234,  -234,    36,   880,  -234,  1365,
-    1365,  1365,  1365,   -18,   880,   880,   880,  -234,  -234,    40,
-     880,  -234,   880,  -234,    90,  -234,  1365,    -6,  -234,  -234,
-     940,   112,  -234,   -35,   880,   -32,    91,  -234,  -234,   -41,
-    -234,    -6,  -234,  -234,    45,    21,   158,   975,  1010,  1045,
-    1245,  -234,    21,    21,  1305,  -234,   396,   917,   880,   917,
-      94,  1335,  1365,   880,   880,   880,   880,   880,   880,   880,
-     880,   880,   880,   880,   880,   880,   880,   880,   880,   880,
-     940,   880,   -18,   -28,   -18,   115,  1365,  1365,   880,  -234,
-    -234,   118,   880,   880,  -234,   880,   880,  1215,   880,   880,
-    -234,  -234,   880,  -234,   119,   880,   880,   880,   880,   880,
-     880,   880,   880,   880,   880,  -234,  -234,  -234,    59,  1365,
-      60,  1275,   -60,   880,  -234,    62,    62,    62,    21,    21,
-      21,  1365,  1365,    62,    62,   207,   463,   463,    21,    21,
-    1365,  1365,  1365,  -234,  -234,  1365,   121,  -234,  1365,  1365,
-    1365,  1365,   880,   880,  1365,  1365,   121,  1365,  -234,  1365,
-    1080,  1365,  1115,  1365,  1150,  1365,  1185,  1365,  1365,  -234,
-    -234,     6,  -234,  -234,   698,  1365,  -234,    11,  1365,  1365,
-      11,   880,   880,   880,   880,   121,   547,   105,   880,   547,
-    -234,  -234,   130,    64,    64,  1365,  1365,  1365,  1365,    11,
-    -234,  -234,   129,   880,  1365,   -11,   -13,  -234,   139,  -234,
-    -234,    64,  -234,  1365,  -234,  -234,  -234,   133,  -234,  -234,
-     133,  -234,   917,  -234,   547,   547,  -234,  -234,   547,   547,
-     133,   133,  -234,   917,   698,  -234,   136,   138,   469,   547,
-     161,   162,  -234,   164,   146,  -234,  -234,  -234,  -234,  -234,
-     166,  -234,  -234,  -234,   -17,  -234,   698,  -234,   625,  -234,
-     547,  -234,  -234,  -234,  -234
+     318,   -73,  -244,  -244,   871,  -244,  -244,   871,   871,   871,
+      26,  1402,  -244,  -244,    19,    49,   769,  -244,    53,   871,
+      17,    89,    70,    73,    77,   871,   835,    78,   871,   871,
+     871,   871,   871,   871,    90,   871,   871,   871,     4,  -244,
+       5,  -244,  -244,  -244,    29,    40,   909,   871,  1371,  -244,
+    -244,  -244,  -244,  -244,  -244,  -244,    36,   871,  -244,  1371,
+    1371,  1371,  1371,    35,   871,   871,   871,  -244,  -244,    38,
+     871,  -244,   871,  -244,    95,  -244,  1371,    80,  -244,  -244,
+     933,   112,  -244,   -32,   871,   -13,    91,  -244,  -244,   -41,
+    -244,    80,  -244,  -244,    43,    21,   158,   969,  1005,  1041,
+    1247,  -244,    21,    21,  1309,  -244,   397,   909,   871,   909,
+      93,  1340,  1371,   871,   871,   871,   871,   871,   871,   871,
+     871,   871,   871,   871,   871,   871,   871,   871,   871,   871,
+     933,   871,    35,   -59,    35,   117,  1371,  1371,   871,  -244,
+    -244,   118,   871,   871,  -244,   871,   871,  1216,   871,   871,
+    -244,  -244,   871,  -244,   119,   871,   871,   871,   871,   871,
+     871,   871,   871,   871,   871,  -244,  -244,  -244,    57,  1371,
+      58,  1278,   -73,   871,  -244,    60,    60,    60,    21,    21,
+      21,  1371,  1371,    60,    60,   465,   313,   313,    21,    21,
+    1371,  1371,  1371,  -244,  -244,  1371,   128,  -244,  1371,  1371,
+    1371,  1371,   871,   871,  1371,  1371,   128,  1371,  -244,  1371,
+    1077,  1371,  1113,  1371,  1149,  1371,  1185,  1371,  1371,  -244,
+    -244,     7,  -244,  -244,   703,  1371,  -244,   -53,  1371,  1371,
+     -53,   871,   871,   871,   871,   128,   550,   105,   871,   550,
+    -244,  -244,   132,    61,    61,  1371,  1371,  1371,  1371,   -53,
+    -244,  -244,   131,   871,  1371,   -11,    -1,  -244,   139,  -244,
+    -244,    61,  -244,  1371,  -244,  -244,  -244,   133,  -244,  -244,
+     133,  -244,   909,  -244,   550,   550,  -244,  -244,   550,   550,
+     133,   133,  -244,   909,   703,  -244,   136,   138,   471,   550,
+     161,   162,  -244,   164,   146,  -244,  -244,  -244,  -244,  -244,
+     166,  -244,  -244,  -244,   -17,  -244,   703,  -244,   629,  -244,
+     550,  -244,  -244,  -244,  -244
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -234,  -234,     8,    95,     2,  -217,     0,  -234,  -234,  -234,
-     -56,  -186,   -76,   -89,  -234,  -234,  -234,  -233,   -10,    15,
-    -204,  -234,    50,     3,  -234,  -234,  -234,   191,   -14,  -234,
-    -234,  -234,  -234,  -234,  -234,  -182,  -209,  -234,    53
+    -244,  -244,     8,    94,     2,  -217,     0,  -244,  -244,  -244,
+     -55,  -186,   -76,   -89,  -244,  -244,  -244,  -243,   -10,    15,
+    -204,  -244,    50,     3,  -244,  -244,  -244,   191,   -14,  -244,
+    -244,  -244,  -244,  -244,  -244,  -196,  -208,  -244,    39
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -869,35 +871,35 @@ static const yytype_int16 yypgoto[] =
 static const yytype_int16 yytable[] =
 {
       42,    66,    40,    49,   105,   -10,   152,   240,   -53,    55,
-     145,   -53,    92,   148,   265,   268,   113,   114,   168,   239,
-     170,   115,   116,   117,   230,   118,   119,    54,   120,   121,
-     122,    72,   237,    74,   283,   260,   269,    64,   266,    67,
-     123,   124,   125,   126,   127,   146,   106,   283,   149,   128,
-     129,   238,   276,   249,    59,   274,   275,    60,    61,    62,
-     278,   193,   279,   139,   131,    68,    76,   295,    79,    80,
-     -53,   108,   288,   289,   131,    89,    76,   153,    95,    96,
+     230,   -53,    92,   145,   265,    54,   113,   114,   168,   239,
+     170,   115,   116,   117,   283,   118,   119,   268,   120,   121,
+     122,   193,   148,   237,   131,    54,   260,   283,   266,   249,
+     242,   123,   124,   125,   126,   127,   106,    64,   269,   146,
+     128,   129,   238,   276,    59,   274,   275,    60,    61,    62,
+     278,    67,   279,   139,    81,    82,    76,   295,   149,    80,
+      68,   -53,   288,   289,    79,    89,    76,   153,    95,    96,
       97,    98,    99,   100,   285,   102,   103,   104,   119,   311,
-     120,    54,   -10,    83,    84,   285,   111,   112,    54,    86,
-     310,    87,    85,   242,    81,    82,    42,   130,    40,    49,
-      88,   128,   129,    93,    62,    62,    62,   132,   133,   134,
-     136,   101,   137,   107,    65,   116,   117,   138,   118,   119,
-     196,   120,   135,   144,   147,   150,   194,   154,   172,   197,
-     208,   206,   226,   123,   124,   125,   126,   127,   220,   222,
-     253,   257,   128,   129,   262,   219,   258,   111,   169,   171,
+     120,    86,    54,   -10,    87,   285,   111,   112,    88,    93,
+     310,    83,    84,   132,   133,   134,    42,   130,    40,    49,
+      85,   101,   128,   129,    62,    62,    62,    72,   107,    74,
+     136,   108,   137,   116,   117,    65,   118,   119,   131,   120,
+     196,   135,   138,   144,   147,   150,   154,   172,   194,   197,
+     208,   206,   123,   124,   125,   126,   127,   220,   222,   226,
+     253,   128,   129,   257,   258,   219,   262,   111,   169,   171,
      273,   268,   224,   175,   176,   177,   178,   179,   180,   181,
      182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
      223,   192,   298,   287,   221,   296,   301,   302,   195,   303,
      304,   309,   198,   199,   294,   200,   201,   155,   204,   205,
-     270,   167,   207,   156,   292,   209,   210,   211,   212,   213,
+     167,   270,   207,   156,   292,   209,   210,   211,   212,   213,
      214,   215,   216,   217,   218,   113,   114,    91,     0,     0,
      115,   116,   117,   225,   118,   119,     0,   120,   121,   122,
-       0,     0,     0,     0,     0,   243,     0,     0,   244,   123,
-     124,   125,   126,   127,     0,   267,     0,     0,   128,   129,
-       0,   252,   228,   229,   255,   256,     0,   261,     0,   284,
+       0,     0,     0,     0,     0,   243,     0,     0,   244,     0,
+     123,   124,   125,   126,   127,   267,     0,     0,     0,   128,
+     129,   252,   228,   229,   255,   256,     0,   261,     0,   284,
        0,     0,     0,     0,     0,     0,     0,     0,     0,   264,
-     116,   117,     0,   118,   119,     0,   120,     0,   277,     0,
-       0,   245,   246,   247,   248,   286,   306,     0,   254,   124,
-     125,   126,   127,   290,   291,   293,     0,   128,   129,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   277,     0,
+       0,   245,   246,   247,   248,   286,   306,     0,   254,     0,
+       0,     0,     0,   290,   291,   293,     0,     0,     0,     0,
        0,     0,     0,   263,   300,     0,     0,     0,   312,     0,
      305,     0,   307,     0,     0,     0,     0,     0,    -6,     1,
        0,     0,   111,     0,     0,   313,     0,   314,     0,     2,
@@ -905,152 +907,153 @@ static const yytype_int16 yytable[] =
       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,     0,     0,
-      35,    36,     0,     0,     0,    -6,    37,     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,     0,     0,    35,    36,
-       2,     3,     4,     5,    37,     6,     7,     8,     9,    10,
-      56,    12,     0,    13,   299,     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,   116,   117,     0,   118,
-     119,     0,   120,     0,    28,     0,     0,     0,     0,     0,
-       0,    29,    30,    31,    32,    33,     0,   126,   127,     0,
-       0,    35,    36,   128,   129,     0,    54,    37,     2,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,    56,    12,
+      25,    26,     0,     0,    27,     0,   116,   117,     0,   118,
+     119,     0,   120,    28,     0,     0,     0,     0,     0,     0,
+      29,    30,    31,    32,    33,     0,     0,    34,   126,   127,
+       0,    35,    36,     0,   128,   129,    -6,    37,     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,     0,     0,     0,     0,     0,    19,    20,
-      21,     0,     0,    22,     0,     0,     0,     0,     0,    25,
+      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,     0,     0,     0,    35,
-      36,     0,     0,     0,    54,    37,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,    56,    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,     0,     0,    35,    36,     2,
-       3,     4,     5,    37,     6,     7,     8,     9,    10,    56,
-      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,     0,     0,
-      35,    36,     2,     3,     4,     5,    37,     6,     0,     0,
-       0,     0,    56,    12,     0,    13,     0,     0,     0,     0,
-       0,    70,     0,     0,     0,     0,    71,     0,    72,    73,
-      74,    75,    57,     0,    21,     0,     0,     0,     0,     0,
+      30,    31,    32,    33,     0,     0,    34,     0,     0,     0,
+      35,    36,     2,     3,     4,     5,    37,     6,     7,     8,
+       9,    10,    56,    12,     0,    13,   299,     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,   116,   117,
+       0,   118,   119,     0,   120,     0,    28,     0,     0,     0,
+       0,     0,     0,    29,    30,    31,    32,    33,   124,   125,
+     126,   127,     0,     0,    35,    36,   128,   129,     0,    54,
+      37,     2,     3,     4,     5,     0,     6,     7,     8,     9,
+      10,    56,    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,
+       0,     0,     0,    35,    36,     0,     0,     0,    54,    37,
+       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
+      56,    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,     0,
+       0,     0,    35,    36,     2,     3,     4,     5,    37,     6,
+       7,     8,     9,    10,    56,    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,
+       2,     3,     4,     5,     0,     6,    35,    36,     0,     0,
+      56,    12,    37,    13,     0,     0,     0,     0,     0,    70,
+       0,     0,     0,     0,    71,     0,    72,    73,    74,    75,
+      57,     0,    21,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    28,     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,    35,    36,     0,     0,    56,    12,    37,    13,
+       0,     0,     0,     0,     0,    70,     0,     0,     0,     0,
+       0,     0,    72,     0,    74,     0,    57,     0,    21,     0,
+       0,     0,     2,     3,     4,     5,     0,     6,     0,    90,
+       0,     0,    56,    12,     0,    13,     0,     0,     0,     0,
+      28,     0,     0,     0,     0,     0,     0,    29,    30,    31,
+      32,    33,    57,     0,    21,     0,     0,     0,    35,    36,
+       2,     3,     4,     5,    37,     6,     0,     0,     0,     0,
+      56,    12,     0,    13,     0,     0,    28,     0,     0,     0,
        0,     0,     0,    29,    30,    31,    32,    33,     0,     0,
-       0,     0,     0,    35,    36,     2,     3,     4,     5,    37,
-       6,     0,     0,     0,     0,    56,    12,     0,    13,     0,
-       0,     0,     0,     0,    70,     0,     0,     0,     0,     0,
-       0,    72,     0,    74,     0,    57,     0,    21,     0,     0,
-       0,     2,     3,     4,     5,     0,     6,     0,    90,     0,
-       0,    56,    12,     0,    13,     0,     0,     0,     0,    28,
-       0,     0,     0,     0,     0,     0,    29,    30,    31,    32,
-      33,    57,     0,    21,     0,     0,    35,    36,     2,     3,
-       4,     5,    37,     6,     0,     0,     0,     0,    56,    12,
-       0,    13,     0,     0,     0,    28,     0,     0,     0,     0,
-       0,     0,    29,    30,    31,    32,    33,     0,    57,     0,
-      21,     0,    35,    36,     0,     0,     0,     0,    37,     0,
-       0,     0,     0,     0,   141,     0,     0,     0,     0,     0,
-       0,     0,    28,     0,     0,     0,     0,     0,     0,    29,
-      30,    31,    32,    33,     0,     0,     0,   113,   114,    35,
-      36,     0,   115,   116,   117,   109,   118,   142,   143,   120,
-     121,   122,     0,     0,   157,     0,     0,     0,     0,     0,
-     158,   123,   124,   125,   126,   127,     0,     0,     0,     0,
-     128,   129,   113,   114,     0,     0,     0,   115,   116,   117,
-       0,   118,   119,     0,   120,   121,   122,     0,     0,   159,
-       0,     0,     0,     0,     0,   160,   123,   124,   125,   126,
-     127,     0,     0,     0,     0,   128,   129,   113,   114,     0,
-       0,     0,   115,   116,   117,     0,   118,   119,     0,   120,
-     121,   122,     0,     0,   161,     0,     0,     0,     0,     0,
-     162,   123,   124,   125,   126,   127,     0,     0,     0,     0,
-     128,   129,   113,   114,     0,     0,     0,   115,   116,   117,
-       0,   118,   119,     0,   120,   121,   122,     0,     0,   231,
-       0,     0,     0,     0,     0,     0,   123,   124,   125,   126,
-     127,     0,     0,     0,     0,   128,   129,   113,   114,     0,
-       0,     0,   115,   116,   117,     0,   118,   119,     0,   120,
-     121,   122,     0,     0,   232,     0,     0,     0,     0,     0,
-       0,   123,   124,   125,   126,   127,     0,     0,     0,     0,
+      57,     0,    21,     0,    35,    36,     0,     0,     0,     0,
+      37,     0,     0,     0,     0,     0,     0,   141,     0,     0,
+       0,     0,     0,     0,    28,     0,     0,     0,     0,     0,
+       0,    29,    30,    31,    32,    33,     0,     0,     0,     0,
+     113,   114,    35,    36,     0,   115,   116,   117,   109,   118,
+     142,   143,   120,   121,   122,     0,     0,     0,   157,     0,
+       0,     0,     0,     0,   158,   123,   124,   125,   126,   127,
+       0,     0,     0,     0,   128,   129,   113,   114,     0,     0,
+       0,   115,   116,   117,     0,   118,   119,     0,   120,   121,
+     122,     0,     0,     0,   159,     0,     0,     0,     0,     0,
+     160,   123,   124,   125,   126,   127,     0,     0,     0,     0,
      128,   129,   113,   114,     0,     0,     0,   115,   116,   117,
-       0,   118,   119,     0,   120,   121,   122,     0,     0,   233,
-       0,     0,     0,     0,     0,     0,   123,   124,   125,   126,
-     127,     0,     0,     0,     0,   128,   129,   113,   114,     0,
-       0,     0,   115,   116,   117,     0,   118,   119,     0,   120,
-     121,   122,     0,     0,   234,     0,     0,     0,     0,     0,
+       0,   118,   119,     0,   120,   121,   122,     0,     0,     0,
+     161,     0,     0,     0,     0,     0,   162,   123,   124,   125,
+     126,   127,     0,     0,     0,     0,   128,   129,   113,   114,
+       0,     0,     0,   115,   116,   117,     0,   118,   119,     0,
+     120,   121,   122,     0,     0,     0,   231,     0,     0,     0,
+       0,     0,     0,   123,   124,   125,   126,   127,     0,     0,
+       0,     0,   128,   129,   113,   114,     0,     0,     0,   115,
+     116,   117,     0,   118,   119,     0,   120,   121,   122,     0,
+       0,     0,   232,     0,     0,     0,     0,     0,     0,   123,
+     124,   125,   126,   127,     0,     0,     0,     0,   128,   129,
+     113,   114,     0,     0,     0,   115,   116,   117,     0,   118,
+     119,     0,   120,   121,   122,     0,     0,     0,   233,     0,
+       0,     0,     0,     0,     0,   123,   124,   125,   126,   127,
+       0,     0,     0,     0,   128,   129,   113,   114,     0,     0,
+       0,   115,   116,   117,     0,   118,   119,     0,   120,   121,
+     122,     0,     0,     0,   234,     0,     0,     0,     0,     0,
        0,   123,   124,   125,   126,   127,     0,     0,     0,     0,
      128,   129,   113,   114,     0,     0,     0,   115,   116,   117,
        0,   118,   119,     0,   120,   121,   122,     0,     0,     0,
-     202,     0,     0,     0,     0,     0,   123,   124,   125,   126,
-     127,     0,   113,   114,     0,   128,   129,   115,   116,   117,
-       0,   118,   119,     0,   120,   121,   122,     0,     0,     0,
-       0,     0,     0,     0,     0,   203,   123,   124,   125,   126,
-     127,     0,   113,   114,     0,   128,   129,   115,   116,   117,
-       0,   118,   119,     0,   120,   121,   122,     0,     0,     0,
-       0,     0,   163,   164,     0,     0,   123,   124,   125,   126,
-     127,     0,   113,   114,     0,   128,   129,   115,   116,   117,
-       0,   118,   119,     0,   120,   121,   122,     0,     0,     0,
-       0,     0,     0,     0,     0,   173,   123,   124,   125,   126,
-     127,     0,   113,   114,   166,   128,   129,   115,   116,   117,
-       0,   118,   119,     0,   120,   121,   122,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   123,   124,   125,   126,
-     127,     0,   113,   114,   166,   128,   129,   115,   116,   117,
-       0,   118,   119,     0,   120,   121,   122,     0,     0,     0,
-       0,     0,     0,     0,     0,   173,   123,   124,   125,   126,
-     127,     0,   113,   114,     0,   128,   129,   115,   116,   117,
-       0,   118,   119,     0,   120,   121,   122,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   123,   124,   125,   126,
-     127,     0,   -63,   -63,     0,   128,   129,   -63,   -63,   -63,
-       0,   -63,   -63,     0,   -63,   -63,   -63,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   -63,     0,     0,   -63,
-     -63,     0,     0,    65,     0,   -63,   -63
+       0,   202,     0,     0,     0,     0,     0,   123,   124,   125,
+     126,   127,     0,   113,   114,     0,   128,   129,   115,   116,
+     117,     0,   118,   119,     0,   120,   121,   122,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   203,   123,   124,
+     125,   126,   127,     0,   113,   114,     0,   128,   129,   115,
+     116,   117,     0,   118,   119,     0,   120,   121,   122,     0,
+       0,     0,     0,     0,   163,   164,     0,     0,     0,   123,
+     124,   125,   126,   127,     0,   113,   114,     0,   128,   129,
+     115,   116,   117,     0,   118,   119,     0,   120,   121,   122,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   173,
+     123,   124,   125,   126,   127,     0,   113,   114,   166,   128,
+     129,   115,   116,   117,     0,   118,   119,     0,   120,   121,
+     122,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   123,   124,   125,   126,   127,     0,   113,   114,   166,
+     128,   129,   115,   116,   117,     0,   118,   119,     0,   120,
+     121,   122,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   173,   123,   124,   125,   126,   127,     0,   113,   114,
+       0,   128,   129,   115,   116,   117,     0,   118,   119,     0,
+     120,   121,   122,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   123,   124,   125,   126,   127,     0,   -63,
+     -63,     0,   128,   129,   -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,    65,     0,   -63,   -63
 };
 
 static const yytype_int16 yycheck[] =
 {
        0,    11,     0,     0,     0,     0,    47,   224,    25,     1,
-      45,    28,    26,    45,    25,    28,    57,    58,   107,   223,
-     109,    62,    63,    64,   206,    66,    67,    87,    69,    70,
-      71,    37,    26,    39,   267,   244,    49,    21,    49,    42,
-      81,    82,    83,    84,    85,    80,    38,   280,    80,    90,
-      91,    45,   261,   235,     4,   259,   260,     7,     8,     9,
-     264,    89,   266,    77,    92,    21,    16,   284,    21,    19,
-      87,    80,   276,   277,    92,    25,    26,    91,    28,    29,
+     206,    28,    26,    45,    25,    88,    57,    58,   107,   223,
+     109,    62,    63,    64,   267,    66,    67,    28,    69,    70,
+      71,    90,    45,    26,    93,    88,   244,   280,    49,   235,
+      93,    82,    83,    84,    85,    86,    38,    21,    49,    81,
+      91,    92,    45,   261,     4,   259,   260,     7,     8,     9,
+     264,    42,   266,    77,    47,    48,    16,   284,    81,    19,
+      21,    88,   276,   277,    21,    25,    26,    91,    28,    29,
       30,    31,    32,    33,   270,    35,    36,    37,    67,   306,
-      69,    87,    87,    12,    13,   281,    46,    47,    87,    21,
-     304,    21,    21,    92,    47,    48,   106,    57,   106,   106,
-      21,    90,    91,    21,    64,    65,    66,    64,    65,    66,
-      70,    21,    72,    88,    88,    63,    64,    37,    66,    67,
-     140,    69,    92,    21,    84,    44,    21,    92,    44,    21,
-      21,   151,    21,    81,    82,    83,    84,    85,    89,    89,
-      45,    21,    90,    91,    25,   165,    92,   107,   108,   109,
+      69,    21,    88,    88,    21,   281,    46,    47,    21,    21,
+     304,    12,    13,    64,    65,    66,   106,    57,   106,   106,
+      21,    21,    91,    92,    64,    65,    66,    37,    89,    39,
+      70,    81,    72,    63,    64,    89,    66,    67,    93,    69,
+     140,    93,    37,    21,    84,    44,    93,    44,    21,    21,
+      21,   151,    82,    83,    84,    85,    86,    90,    90,    21,
+      45,    91,    92,    21,    93,   165,    25,   107,   108,   109,
       21,    28,   172,   113,   114,   115,   116,   117,   118,   119,
      120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
      172,   131,    44,   272,   169,    49,    25,    25,   138,    25,
       44,    25,   142,   143,   283,   145,   146,    39,   148,   149,
-     256,   106,   152,    45,   280,   155,   156,   157,   158,   159,
+     106,   256,   152,    45,   280,   155,   156,   157,   158,   159,
      160,   161,   162,   163,   164,    57,    58,    26,    -1,    -1,
       62,    63,    64,   173,    66,    67,    -1,    69,    70,    71,
-      -1,    -1,    -1,    -1,    -1,   227,    -1,    -1,   230,    81,
-      82,    83,    84,    85,    -1,   255,    -1,    -1,    90,    91,
-      -1,   236,   202,   203,   239,   240,    -1,   249,    -1,   269,
+      -1,    -1,    -1,    -1,    -1,   227,    -1,    -1,   230,    -1,
+      82,    83,    84,    85,    86,   255,    -1,    -1,    -1,    91,
+      92,   236,   202,   203,   239,   240,    -1,   249,    -1,   269,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   254,
-      63,    64,    -1,    66,    67,    -1,    69,    -1,   263,    -1,
-      -1,   231,   232,   233,   234,   270,   296,    -1,   238,    82,
-      83,    84,    85,   278,   279,   280,    -1,    90,    91,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   263,    -1,
+      -1,   231,   232,   233,   234,   270,   296,    -1,   238,    -1,
+      -1,    -1,    -1,   278,   279,   280,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,   253,   289,    -1,    -1,    -1,   308,    -1,
      295,    -1,   297,    -1,    -1,    -1,    -1,    -1,     0,     1,
       -1,    -1,   272,    -1,    -1,   310,    -1,   312,    -1,    11,
@@ -1058,118 +1061,119 @@ static const yytype_int16 yycheck[] =
       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,    -1,    -1,
-      82,    83,    -1,    -1,    -1,    87,    88,    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,    -1,    -1,    82,    83,
-      11,    12,    13,    14,    88,    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,    63,    64,    -1,    66,
-      67,    -1,    69,    -1,    65,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    73,    74,    75,    76,    -1,    84,    85,    -1,
-      -1,    82,    83,    90,    91,    -1,    87,    88,    11,    12,
+      52,    53,    -1,    -1,    56,    -1,    63,    64,    -1,    66,
+      67,    -1,    69,    65,    -1,    -1,    -1,    -1,    -1,    -1,
+      72,    73,    74,    75,    76,    -1,    -1,    79,    85,    86,
+      -1,    83,    84,    -1,    91,    92,    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,
+      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,    -1,    -1,    -1,    82,
-      83,    -1,    -1,    -1,    87,    88,    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,    -1,    -1,    82,    83,    11,
-      12,    13,    14,    88,    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,    -1,    -1,
-      82,    83,    11,    12,    13,    14,    88,    16,    -1,    -1,
-      -1,    -1,    21,    22,    -1,    24,    -1,    -1,    -1,    -1,
-      -1,    30,    -1,    -1,    -1,    -1,    35,    -1,    37,    38,
-      39,    40,    41,    -1,    43,    -1,    -1,    -1,    -1,    -1,
+      73,    74,    75,    76,    -1,    -1,    79,    -1,    -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,
+      -1,    -1,    -1,    52,    53,    -1,    -1,    56,    63,    64,
+      -1,    66,    67,    -1,    69,    -1,    65,    -1,    -1,    -1,
+      -1,    -1,    -1,    72,    73,    74,    75,    76,    83,    84,
+      85,    86,    -1,    -1,    83,    84,    91,    92,    -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,
+      -1,    -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,    -1,
+      -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,
+      11,    12,    13,    14,    -1,    16,    83,    84,    -1,    -1,
+      21,    22,    89,    24,    -1,    -1,    -1,    -1,    -1,    30,
+      -1,    -1,    -1,    -1,    35,    -1,    37,    38,    39,    40,
+      41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    65,    -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,
-      -1,    -1,    -1,    82,    83,    11,    12,    13,    14,    88,
-      16,    -1,    -1,    -1,    -1,    21,    22,    -1,    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,    82,    83,    11,    12,
-      13,    14,    88,    16,    -1,    -1,    -1,    -1,    21,    22,
-      -1,    24,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
-      -1,    -1,    72,    73,    74,    75,    76,    -1,    41,    -1,
-      43,    -1,    82,    83,    -1,    -1,    -1,    -1,    88,    -1,
-      -1,    -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
-      73,    74,    75,    76,    -1,    -1,    -1,    57,    58,    82,
-      83,    -1,    62,    63,    64,    88,    66,    67,    68,    69,
-      70,    71,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
-      45,    81,    82,    83,    84,    85,    -1,    -1,    -1,    -1,
-      90,    91,    57,    58,    -1,    -1,    -1,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    39,
-      -1,    -1,    -1,    -1,    -1,    45,    81,    82,    83,    84,
-      85,    -1,    -1,    -1,    -1,    90,    91,    57,    58,    -1,
-      -1,    -1,    62,    63,    64,    -1,    66,    67,    -1,    69,
-      70,    71,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
-      45,    81,    82,    83,    84,    85,    -1,    -1,    -1,    -1,
-      90,    91,    57,    58,    -1,    -1,    -1,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    39,
-      -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    84,
-      85,    -1,    -1,    -1,    -1,    90,    91,    57,    58,    -1,
-      -1,    -1,    62,    63,    64,    -1,    66,    67,    -1,    69,
-      70,    71,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
-      -1,    81,    82,    83,    84,    85,    -1,    -1,    -1,    -1,
-      90,    91,    57,    58,    -1,    -1,    -1,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    39,
-      -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    84,
-      85,    -1,    -1,    -1,    -1,    90,    91,    57,    58,    -1,
-      -1,    -1,    62,    63,    64,    -1,    66,    67,    -1,    69,
-      70,    71,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
-      -1,    81,    82,    83,    84,    85,    -1,    -1,    -1,    -1,
-      90,    91,    57,    58,    -1,    -1,    -1,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
-      45,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    84,
-      85,    -1,    57,    58,    -1,    90,    91,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      85,    -1,    57,    58,    -1,    90,    91,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    -1,    77,    78,    -1,    -1,    81,    82,    83,    84,
-      85,    -1,    57,    58,    -1,    90,    91,    62,    63,    64,
+      41,    -1,    43,    -1,    83,    84,    -1,    -1,    -1,    -1,
+      89,    -1,    -1,    -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,    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,    70,    71,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      85,    -1,    57,    58,    89,    90,    91,    62,    63,    64,
+      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,    -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,    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,    81,    82,    83,    84,
-      85,    -1,    57,    58,    89,    90,    91,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      85,    -1,    57,    58,    -1,    90,    91,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    81,    82,    83,    84,
-      85,    -1,    57,    58,    -1,    90,    91,    62,    63,    64,
-      -1,    66,    67,    -1,    69,    70,    71,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,    84,
-      85,    -1,    -1,    88,    -1,    90,    91
+      -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,    -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,    77,    78,    -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,    -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,
+      -1,    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,    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,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    82,    -1,    -1,    85,    86,    -1,
+      -1,    89,    -1,    91,    92
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1179,35 +1183,35 @@ 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,    82,    83,    88,    94,    96,
-      97,    98,    99,   100,   107,   108,   109,   114,   115,   116,
-     119,   122,   123,   130,    87,    95,    21,    41,    97,   115,
-     115,   115,   115,   131,    21,    88,   111,    42,    21,   117,
-      30,    35,    37,    38,    39,    40,   115,   120,   121,    21,
-     115,    47,    48,    12,    13,    21,    21,    21,    21,   115,
-      54,   120,   121,    21,   118,   115,   115,   115,   115,   115,
-     115,    21,   115,   115,   115,     0,    95,    88,    80,    88,
-     106,   115,   115,    57,    58,    62,    63,    64,    66,    67,
-      69,    70,    71,    81,    82,    83,    84,    85,    90,    91,
-     115,    92,   131,   131,   131,    92,   115,   115,    37,   121,
-     124,    34,    67,    68,    21,    45,    80,   115,    45,    80,
-      44,   125,    47,   121,    92,    39,    45,    39,    45,    39,
-      45,    39,    45,    77,    78,   126,    89,    96,   106,   115,
-     106,   115,    44,    80,   112,   115,   115,   115,   115,   115,
-     115,   115,   115,   115,   115,   115,   115,   115,   115,   115,
-     115,   115,   115,    89,    21,   115,   111,    21,   115,   115,
-     115,   115,    45,    80,   115,   115,   111,   115,    21,   115,
-     115,   115,   115,   115,   115,   115,   115,   115,   115,   111,
-      89,   112,    89,    95,   111,   115,    21,   128,   115,   115,
-     128,    39,    39,    39,    39,   127,   113,    26,    45,   113,
-      98,   116,    92,    95,    95,   115,   115,   115,   115,   128,
-      95,    99,   112,    45,   115,   112,   112,    21,    92,   129,
-     129,    95,    25,   115,   112,    25,    49,   111,    28,    49,
-     103,   104,   110,    21,   113,   113,   129,   112,   113,   113,
-     102,   103,   105,   110,   111,   104,   112,   106,   113,   113,
-     112,   112,   105,   112,   106,    98,    49,   101,    44,    25,
-     112,    25,    25,    25,    44,   112,   111,   112,   111,    25,
-     113,    98,    99,   112,   112
+      73,    74,    75,    76,    79,    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,   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,   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,    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,    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,   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,   113,    90,    96,   112,   116,    21,   129,   116,   116,
+     129,    39,    39,    39,    39,   128,   114,    26,    45,   114,
+      99,   117,    93,    96,    96,   116,   116,   116,   116,   129,
+      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
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2847,7 +2851,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 2851 "engines/director/lingo/lingo-gr.cpp"
+#line 2855 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 5c0928a..37451f0 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -115,7 +115,8 @@
      tSPRITE = 331,
      tINTERSECTS = 332,
      tWITHIN = 333,
-     tON = 334
+     tON = 334,
+     tME = 335
    };
 #endif
 /* Tokens.  */
@@ -196,6 +197,7 @@
 #define tINTERSECTS 332
 #define tWITHIN 333
 #define tON 334
+#define tME 335
 
 
 
@@ -213,7 +215,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 1529 of yacc.c.  */
-#line 217 "engines/director/lingo/lingo-gr.hpp"
+#line 219 "engines/director/lingo/lingo-gr.hpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 33a004a..6439cea 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -100,7 +100,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token tGE tLE tGT tLT tEQ tNEQ tAND tOR tNOT tMOD
 %token tAFTER tBEFORE tCONCAT tCONTAINS tSTARTS tCHAR tITEM tLINE tWORD
 %token tSPRITE tINTERSECTS tWITHIN
-%token tON
+%token tON tME
 
 %type<code> asgn begin elseif elsestmtoneliner end expr if when repeatwhile repeatwith stmtlist
 %type<narg> argdef arglist
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index afc5670..f3c498b 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1437,6 +1437,12 @@ YY_RULE_SETUP
 		if (g_lingo->_twoWordBuiltins.contains(yytext))
 			return TWOWORDBUILTIN;
 
+		// Special treatment of 'me'. First parameter is method name
+		if (!g_lingo->_currentFactory.empty()) {
+			if (yylval.s->equalsIgnoreCase("me"))
+				return tME;
+		}
+
 		if (g_lingo->_handlers.contains(yytext)) {
 			if (g_lingo->_handlers[yytext]->type == BLTIN && g_lingo->_handlers[yytext]->parens == false) {
 				if (g_lingo->_handlers[yytext]->nargs == 0) {
@@ -1462,41 +1468,41 @@ YY_RULE_SETUP
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 271 "engines/director/lingo/lingo-lex.l"
+#line 277 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 272 "engines/director/lingo/lingo-lex.l"
+#line 278 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 273 "engines/director/lingo/lingo-lex.l"
+#line 279 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
 case 65:
 /* rule 65 can match eol */
 YY_RULE_SETUP
-#line 274 "engines/director/lingo/lingo-lex.l"
+#line 280 "engines/director/lingo/lingo-lex.l"
 { return '\n'; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 275 "engines/director/lingo/lingo-lex.l"
+#line 281 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 276 "engines/director/lingo/lingo-lex.l"
+#line 282 "engines/director/lingo/lingo-lex.l"
 
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 278 "engines/director/lingo/lingo-lex.l"
+#line 284 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1500 "engines/director/lingo/lingo-lex.cpp"
+#line 1506 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2496,7 +2502,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 278 "engines/director/lingo/lingo-lex.l"
+#line 284 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index afd90ae..9d9dba7 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -246,6 +246,12 @@ whitespace [\t ]
 		if (g_lingo->_twoWordBuiltins.contains(yytext))
 			return TWOWORDBUILTIN;
 
+		// Special treatment of 'me'. First parameter is method name
+		if (!g_lingo->_currentFactory.empty()) {
+			if (yylval.s->equalsIgnoreCase("me"))
+				return tME;
+		}
+
 		if (g_lingo->_handlers.contains(yytext)) {
 			if (g_lingo->_handlers[yytext]->type == BLTIN && g_lingo->_handlers[yytext]->parens == false) {
 				if (g_lingo->_handlers[yytext]->nargs == 0) {





More information about the Scummvm-git-logs mailing list