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

sev- sev at scummvm.org
Tue Feb 7 11:07:29 CET 2017


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

Summary:
54aac6a03c DIRECTOR: Lingo: Fixed typo in builtin list and added sanity check to catch it
b0cd2a9016 DIRECTOR: Lingo: Fix lexer for built-ins detection
cf50378985 DIRECTOR: Lingo: Finally fixed grammar for BLTINARGLIST
a9fb3e3225 DIRECTOR: Lingo: Added debug output to lexer and fixed builtin.lingo test


Commit: 54aac6a03c1e655e13ccebeca2ea2a77d2c95382
    https://github.com/scummvm/scummvm/commit/54aac6a03c1e655e13ccebeca2ea2a77d2c95382
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-02-07T10:45:24+01:00

Commit Message:
DIRECTOR: Lingo: Fixed typo in builtin list and added sanity check to catch it

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


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 1042ca5..552030a 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -122,7 +122,7 @@ static struct BuiltinProto {
 	{ "ilk",	 		Lingo::b_ilk,			1, 2, false },	//			D4 f
 	{ "integerp",		Lingo::b_integerp,		1, 1, true },	// D2 f
 	{ "objectp",		Lingo::b_objectp,		1, 1, true },	// D2 f
-	{ "puctureP",		Lingo::b_pictureP,		1, 1, true },	//			D4 f
+	{ "pictureP",		Lingo::b_pictureP,		1, 1, true },	//			D4 f
 	{ "stringp",		Lingo::b_stringp,		1, 1, true },	// D2 f
 	{ "symbolp",		Lingo::b_symbolp,		1, 1, true },	// D2 f
 	// Misc
@@ -258,8 +258,12 @@ void Lingo::initBuiltIns() {
 		_functions[(void *)sym->u.s] = new FuncDesc(blt->name, "");
 	}
 
-	for (const char **b = builtinFunctions; *b; b++)
+	for (const char **b = builtinFunctions; *b; b++) {
+		if (!_builtins.contains(*b))
+			error("Incorrectly setup builtinFunctions[]: %s", *b);
+
 		_builtins[*b]->type = FBLTIN;
+	}
 
 	for (const char **b = twoWordBuiltins; *b; b++)
 		_twoWordBuiltins[*b] = true;


Commit: b0cd2a9016f21a95a27afbde7515541761aa60d0
    https://github.com/scummvm/scummvm/commit/b0cd2a9016f21a95a27afbde7515541761aa60d0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-02-07T10:55:02+01:00

Commit Message:
DIRECTOR: Lingo: Fix lexer for built-ins detection

Changed paths:
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l


diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 8675768..1598a27 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1472,16 +1472,16 @@ YY_RULE_SETUP
 					if (g_lingo->_builtins[yytext]->maxArgs == 0)
 						return type == BLTIN ? BLTINNOARGS : FBLTINNOARGS;
 					else if (g_lingo->_builtins[yytext]->maxArgs == 1)
-						return type == BLTINNOARGSORONE;
+						return BLTINNOARGSORONE;
 					else
-						return type == BLTINARGLIST;
+						return BLTINARGLIST;
 				} else if (g_lingo->_builtins[yytext]->nargs == 1 &&
 							g_lingo->_builtins[yytext]->maxArgs == 1) {
 					return type == BLTIN ? BLTINONEARG : FBLTINONEARG;
 				} else if (g_lingo->_builtins[yytext]->nargs == -1) {
-					return type == BLTINARGLIST;
+					return BLTINARGLIST;
 				} else {
-					return type == BLTINARGLIST;
+					return BLTINARGLIST;
 				}
 			}
 		}
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 5b93a46..a4134b8 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -274,16 +274,16 @@ whitespace [\t ]
 					if (g_lingo->_builtins[yytext]->maxArgs == 0)
 						return type == BLTIN ? BLTINNOARGS : FBLTINNOARGS;
 					else if (g_lingo->_builtins[yytext]->maxArgs == 1)
-						return type == BLTINNOARGSORONE;
+						return BLTINNOARGSORONE;
 					else
-						return type == BLTINARGLIST;
+						return BLTINARGLIST;
 				} else if (g_lingo->_builtins[yytext]->nargs == 1 &&
 							g_lingo->_builtins[yytext]->maxArgs == 1) {
 					return type == BLTIN ? BLTINONEARG : FBLTINONEARG;
 				} else if (g_lingo->_builtins[yytext]->nargs == -1) {
-					return type == BLTINARGLIST;
+					return BLTINARGLIST;
 				} else {
-					return type == BLTINARGLIST;
+					return BLTINARGLIST;
 				}
 			}
 		}


Commit: cf503789850b628cbf0e7aeeed837370ca1439de
    https://github.com/scummvm/scummvm/commit/cf503789850b628cbf0e7aeeed837370ca1439de
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-02-07T11:01:12+01:00

Commit Message:
DIRECTOR: Lingo: Finally fixed grammar for BLTINARGLIST

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 8c675c3..e25e206 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -526,18 +526,18 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  117
+#define YYFINAL  116
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1647
+#define YYLAST   1602
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  100
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  43
+#define YYNNTS  42
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  157
+#define YYNRULES  155
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  346
+#define YYNSTATES  341
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -605,7 +605,7 @@ static const yytype_uint16 yyprhs[] =
      478,   482,   485,   488,   491,   494,   498,   501,   504,   506,
      510,   513,   516,   519,   523,   526,   527,   531,   532,   541,
      544,   545,   554,   555,   556,   567,   568,   570,   574,   579,
-     580,   583,   584,   586,   590,   592,   596,   599
+     580,   583,   584,   586,   590,   592
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -655,7 +655,7 @@ static const yytype_int16 yyrhs[] =
       49,   123,    43,   123,    -1,    45,   123,    -1,   127,    -1,
      130,    -1,    33,    46,    -1,    33,    -1,    35,   125,    -1,
       59,   126,    -1,    16,    -1,    18,   123,    -1,    17,   123,
-      -1,    17,    -1,    19,   142,    -1,    84,    93,    24,    94,
+      -1,    17,    -1,    19,   141,    -1,    84,    93,    24,    94,
       -1,    84,    93,    24,    99,   140,    94,    -1,    56,   123,
       51,   123,    -1,    56,   123,    -1,    20,    24,   140,    -1,
       24,    -1,   125,    99,    24,    -1,    24,    -1,   126,    99,
@@ -670,8 +670,7 @@ static const yytype_int16 yyrhs[] =
      136,   137,   102,   138,   120,    28,    -1,    -1,    24,    -1,
      137,    99,    24,    -1,   137,   102,    99,    24,    -1,    -1,
       24,   141,    -1,    -1,   123,    -1,   140,    99,   123,    -1,
-     123,    -1,   141,    99,   123,    -1,   123,   102,    -1,   142,
-      99,   123,   102,    -1
+     123,    -1,   141,    99,   123,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -692,7 +691,7 @@ static const yytype_uint16 yyrline[] =
      506,   517,   518,   519,   520,   523,   526,   531,   532,   535,
      536,   539,   540,   543,   546,   549,   549,   579,   579,   585,
      588,   588,   593,   594,   593,   604,   605,   606,   607,   610,
-     614,   622,   623,   624,   627,   628,   631,   632
+     614,   622,   623,   624,   627,   628
 };
 #endif
 
@@ -721,8 +720,7 @@ static const char *const yytname[] =
   "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist",
   "when", "tell", "expr", "proc", "globallist", "instancelist", "gotofunc",
   "gotoframe", "gotomovie", "playfunc", "@1", "defn", "@2", "@3", "@4",
-  "@5", "argdef", "argstore", "macro", "arglist", "nonemptyarglist",
-  "nonemptyarglistnl", 0
+  "@5", "argdef", "argstore", "macro", "arglist", "nonemptyarglist", 0
 };
 #endif
 
@@ -762,7 +760,7 @@ static const yytype_uint8 yyr1[] =
      126,   127,   127,   127,   127,   127,   127,   128,   128,   129,
      129,   130,   130,   130,   130,   131,   130,   133,   132,   132,
      134,   132,   135,   136,   132,   137,   137,   137,   137,   138,
-     139,   140,   140,   140,   141,   141,   142,   142
+     139,   140,   140,   140,   141,   141
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -783,7 +781,7 @@ static const yytype_uint8 yyr2[] =
        3,     2,     2,     2,     2,     3,     2,     2,     1,     3,
        2,     2,     2,     3,     2,     0,     3,     0,     8,     2,
        0,     8,     0,     0,    10,     0,     1,     3,     4,     0,
-       2,     0,     1,     3,     1,     3,     2,     4
+       2,     0,     1,     3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -797,97 +795,97 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,    57,     0,     0,
        0,     0,     0,   151,     0,     3,    68,    21,     9,    22,
        0,     0,     0,     0,     0,    19,    20,   101,   102,     7,
-       8,     5,     4,    65,     0,    67,   109,   108,     0,   111,
-     151,    63,   151,   154,   150,   151,   103,   117,   105,     0,
-     121,     0,   122,     0,   123,   128,   124,   126,   137,   100,
-       0,    47,     0,     0,     0,     0,   139,   140,   115,   131,
-     132,   134,   119,   106,    81,     0,     0,     0,     0,     0,
-     142,     0,    86,    87,     0,   152,     0,     1,     6,     0,
-       0,     0,     0,    44,    52,     0,     0,     0,     0,     0,
+       8,     5,     4,    65,     0,    67,   109,   108,   154,   111,
+     151,    63,   151,   150,   151,   103,   117,   105,     0,   121,
+       0,   122,     0,   123,   128,   124,   126,   137,   100,     0,
+      47,     0,     0,     0,     0,   139,   140,   115,   131,   132,
+     134,   119,   106,    81,     0,     0,     0,     0,     0,   142,
+       0,    86,    87,     0,   152,     0,     1,     6,     0,     0,
+       0,     0,    44,    52,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   151,     0,   156,     0,   116,   152,     0,     0,
-     136,     0,   127,   130,     0,   125,    51,     0,     0,     0,
-      48,     0,     0,     0,     0,     0,    56,    51,     0,   133,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    51,     0,    88,    89,     0,     2,     0,    52,     0,
-       0,    51,     0,    26,     0,    53,    77,    78,    76,    79,
-      80,    73,    83,    84,    85,    82,    69,    70,    71,    72,
-      74,    75,     0,    64,   155,   118,   129,   145,    10,    11,
-      12,    17,    14,     0,     0,    16,    13,   145,   114,   120,
-      92,     0,    94,     0,    96,     0,    98,     0,    90,    91,
-     143,   112,   151,   153,    53,     0,    46,    53,     0,    45,
-      28,    52,   157,   146,     0,    18,    15,     0,     0,     0,
-       0,     0,   145,     0,    52,     0,     0,    52,    52,    54,
-      55,     0,     0,   149,   149,    93,    95,    97,    99,     0,
-     113,     0,     0,    52,    51,    32,    27,   147,     0,    53,
-      53,   149,    23,    52,    53,    29,    53,     0,    50,    51,
-      52,    40,     0,   148,   138,   141,    53,    53,    52,    52,
-      52,    42,    38,     0,     0,    39,    35,     0,     0,    52,
-       0,     0,    37,     0,     0,    52,    51,    52,    51,   144,
-       0,    24,    30,    31,    51,    33,     0,    34,     0,    25,
-      53,    36,    52,    52,    41,    43
+       0,   151,     0,     0,   116,   152,     0,   136,     0,   127,
+     130,     0,   125,    51,     0,     0,     0,    48,     0,     0,
+       0,     0,     0,    56,    51,     0,   133,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    51,     0,
+      88,    89,     0,     2,     0,    52,     0,     0,    51,     0,
+      26,     0,    53,    77,    78,    76,    79,    80,    73,    83,
+      84,    85,    82,    69,    70,    71,    72,    74,    75,   155,
+      64,   118,   129,   145,    10,    11,    12,    17,    14,     0,
+       0,    16,    13,   145,   114,   120,    92,     0,    94,     0,
+      96,     0,    98,     0,    90,    91,   143,   112,   151,   153,
+      53,     0,    46,    53,     0,    45,    28,    52,   146,     0,
+      18,    15,     0,     0,     0,     0,     0,   145,     0,    52,
+       0,     0,    52,    52,    54,    55,     0,     0,   149,   149,
+      93,    95,    97,    99,     0,   113,     0,     0,    52,    51,
+      32,    27,   147,     0,    53,    53,   149,    23,    52,    53,
+      29,    53,     0,    50,    51,    52,    40,     0,   148,   138,
+     141,    53,    53,    52,    52,    52,    42,    38,     0,     0,
+      39,    35,     0,     0,    52,     0,     0,    37,     0,     0,
+      52,    51,    52,    51,   144,     0,    24,    30,    31,    51,
+      33,     0,    34,     0,    25,    53,    36,    52,    52,    41,
+      43
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    44,   269,    45,    46,    47,   270,    49,   327,   310,
-     311,   301,   312,   122,    50,    51,    52,   302,   217,   193,
-     251,    53,    54,    55,    56,    78,   103,    57,    86,    87,
-      58,    75,    59,   156,   167,   181,   262,   254,   289,    60,
-     148,    74,    69
+      -1,    44,   264,    45,    46,    47,   265,    49,   322,   305,
+     306,   296,   307,   121,    50,    51,    52,   297,   213,   190,
+     247,    53,    54,    55,    56,    77,   102,    57,    85,    86,
+      58,    74,    59,   153,   164,   178,   257,   249,   284,    60,
+     146,    69
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -273
+#define YYPACT_NINF -278
 static const yytype_int16 yypact[] =
 {
-     306,   -70,  -273,  -273,   914,  -273,  -273,   914,   914,   914,
-      39,  -273,   914,   972,  -273,  -273,  -273,   -21,    65,   819,
-    -273,    79,   914,    58,    62,    87,    91,    92,   914,   877,
-      93,   914,   914,   914,   914,   914,   914,  -273,    95,   -10,
-     914,   914,   914,   914,     3,  -273,  -273,  -273,  -273,  -273,
-      30,    40,  1009,   914,   914,  1551,  -273,  -273,  -273,  -273,
-    -273,  -273,  -273,    31,   914,  1551,  1551,  1551,  1454,    45,
-     914,  1551,   914,  1551,    48,   914,  -273,  -273,    49,   914,
-    -273,   914,  -273,   108,  -273,  1551,    59,  -273,  -273,  1038,
-     127,  -273,   -37,   914,   -34,   104,  -273,  -273,  1358,  -273,
-      59,  -273,  -273,    54,   -26,  1070,  1102,  1134,  1166,  1390,
-    -273,   130,   -26,   -26,  1487,  1551,   -39,  -273,   393,  1009,
-     914,  1009,   109,  1519,  1551,   718,   914,   914,   914,   914,
-     914,   914,   914,   914,   914,   914,   914,   914,   914,   914,
-     914,   914,   914,  1038,  -273,   914,    57,  1487,    -2,   914,
-      57,   134,  1551,  1551,   914,  -273,  -273,   137,   914,   914,
-    -273,   914,   914,  1326,   914,   914,  -273,  -273,   914,  -273,
-     140,   914,   914,   914,   914,   914,   914,   914,   914,   914,
-     914,  -273,    -1,  -273,  -273,   914,  -273,    73,  1551,    74,
-    1422,   -70,   914,  -273,   914,  -273,    18,    18,    18,   -26,
-     -26,   -26,  1551,    18,    18,   183,   146,   146,   -26,   -26,
-    1551,  1551,  1454,  -273,  1551,  -273,  1551,   147,  -273,  1551,
-    1551,  1551,  1551,   914,   914,  1551,  1551,   147,  1551,  -273,
-    1551,  1198,  1551,  1230,  1551,  1262,  1551,  1294,  1551,  1551,
-    -273,  -273,   914,  1551,  -273,     8,  -273,  -273,   741,  1551,
-    1551,   567,  -273,  -273,   -43,  1551,  1551,   -43,   914,   914,
-     914,   914,   147,     2,   567,   121,   914,   567,  -273,  -273,
-    -273,   154,   159,    88,    88,  1551,  1551,  1551,  1551,   -43,
-    -273,   160,   914,  1551,   -22,    -6,  -273,  -273,   166,  -273,
-    -273,    88,  -273,  1551,  -273,  -273,  -273,   162,  -273,  -273,
-     162,  -273,  1009,  -273,   567,   567,  -273,  -273,   567,   567,
-     162,   162,  -273,  1009,   741,  -273,   138,   144,   480,   567,
-     169,   170,  -273,   172,   153,  -273,  -273,  -273,  -273,  -273,
-     175,  -273,  -273,  -273,  -273,  -273,   741,  -273,   654,  -273,
-     654,  -273,  -273,   567,  -273,  -273
+     294,   -76,  -278,  -278,   902,  -278,  -278,   902,   902,   902,
+      32,  -278,   902,   960,  -278,  -278,  -278,   -21,    40,   807,
+    -278,    48,   902,    45,    46,    50,    56,    66,   902,   865,
+      74,   902,   902,   902,   902,   902,   902,  -278,    75,   -62,
+     902,   902,   902,   902,     2,  -278,  -278,  -278,  -278,  -278,
+       8,    15,   997,   902,   902,  1506,  -278,  -278,  -278,  -278,
+    -278,  -278,  -278,    21,   902,  1506,  1506,  1506,  1506,    26,
+     902,  1506,   902,    26,   902,  -278,  -278,    47,   902,  -278,
+     902,  -278,   104,  -278,  1506,    25,  -278,  -278,  1026,   125,
+    -278,   -38,   902,   -37,   102,  -278,  -278,  1346,  -278,    25,
+    -278,  -278,    52,   -45,  1058,  1090,  1122,  1154,  1378,  -278,
+     130,   -45,   -45,  1442,  1506,    24,  -278,   381,   997,   902,
+     997,   107,  1474,  1506,   706,   902,   902,   902,   902,   902,
+     902,   902,   902,   902,   902,   902,   902,   902,   902,   902,
+     902,   902,  1026,   902,    59,  1442,   -77,    59,   137,  1506,
+    1506,   902,  -278,  -278,   140,   902,   902,  -278,   902,   902,
+    1314,   902,   902,  -278,  -278,   902,  -278,   141,   902,   902,
+     902,   902,   902,   902,   902,   902,   902,   902,  -278,    19,
+    -278,  -278,   902,  -278,    73,  1506,    85,  1410,   -76,   902,
+    -278,   902,  -278,    16,    16,    16,   -45,   -45,   -45,  1506,
+      16,    16,    20,   197,   197,   -45,   -45,  1506,  1506,  1506,
+    -278,  -278,  1506,   157,  -278,  1506,  1506,  1506,  1506,   902,
+     902,  1506,  1506,   157,  1506,  -278,  1506,  1186,  1506,  1218,
+    1506,  1250,  1506,  1282,  1506,  1506,  -278,  -278,   902,  1506,
+    -278,    27,  -278,  -278,   729,  1506,  1506,   555,  -278,   -73,
+    1506,  1506,   -73,   902,   902,   902,   902,   157,    49,   555,
+     133,   902,   555,  -278,  -278,  -278,   160,   161,    90,    90,
+    1506,  1506,  1506,  1506,   -73,  -278,   165,   902,  1506,    -7,
+       7,  -278,  -278,   170,  -278,  -278,    90,  -278,  1506,  -278,
+    -278,  -278,   164,  -278,  -278,   164,  -278,   997,  -278,   555,
+     555,  -278,  -278,   555,   555,   164,   164,  -278,   997,   729,
+    -278,   146,   152,   468,   555,   176,   177,  -278,   178,   159,
+    -278,  -278,  -278,  -278,  -278,   180,  -278,  -278,  -278,  -278,
+    -278,   729,  -278,   642,  -278,   642,  -278,  -278,   555,  -278,
+    -278
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -273,  -273,    20,    86,  -273,  -237,     0,  -273,  -273,  -273,
-     -78,  -272,  -102,  -117,  -273,  -273,  -273,  -270,  -100,   -62,
-    -228,  -273,  -273,     1,  -273,  -273,  -273,  -273,   180,   -28,
-    -273,  -273,  -273,  -273,  -273,  -273,  -273,  -210,  -267,  -273,
-     -25,  -273,  -273
+    -278,  -278,    23,    92,  -278,  -240,     0,  -278,  -278,  -278,
+     -70,  -211,   -93,  -117,  -278,  -278,  -278,  -277,  -126,   -61,
+     -56,  -278,  -278,     1,  -278,  -278,  -278,  -278,   185,   -22,
+    -278,  -278,  -278,  -278,  -278,  -278,  -278,  -217,  -208,  -278,
+     -25,   202
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -897,286 +895,284 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -7
 static const yytype_int16 yytable[] =
 {
-      48,   101,   187,   117,   189,    65,   295,   290,    66,    67,
-      68,   268,   161,    71,    73,   164,   264,   257,   116,   267,
-      85,    62,    61,    89,   306,    76,   298,   313,   315,    98,
-      85,   296,   104,   105,   106,   107,   108,   109,   265,   315,
-     313,   112,   113,   114,   115,   146,   132,   299,   162,    61,
-     150,   165,   279,   123,   124,   125,   272,   266,   155,   184,
-     185,   304,   305,    70,   118,   143,   308,   227,   309,   140,
-     141,   115,   169,   147,    92,    93,   115,   325,   318,   319,
-     152,   240,   153,   111,   129,   130,    94,   131,   144,    77,
-     132,   248,   213,   241,   163,    61,   280,   185,   242,   341,
-      81,   185,    83,    88,   135,   136,   137,   138,   139,    90,
-      91,    95,   343,   140,   141,    96,    97,   102,    48,   110,
-     123,   188,   190,   119,   142,   120,   245,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   115,   145,   195,   212,   149,   151,   154,
-     214,   160,   166,   170,   182,   216,   185,   191,   215,   219,
-     220,   218,   221,   222,   229,   225,   226,   244,   246,   228,
-     282,   253,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   286,   287,   297,   317,   243,   288,   292,   271,
-     303,   326,   328,   249,   298,   250,   324,   331,   332,   314,
-     333,   334,   281,   339,   186,   284,   285,   300,   322,   100,
-       0,   247,   129,   130,     0,   131,     0,   263,   132,     0,
-       0,   294,     0,     0,   255,   256,   336,     0,   338,     0,
-       0,   307,   252,     0,   340,   138,   139,     0,   316,     0,
-       0,   140,   141,   115,     0,     0,   320,   321,   323,   129,
-     130,     0,   131,     0,     0,   132,     0,   330,     0,   275,
-     276,   277,   278,   335,     0,   337,     0,   283,     0,     0,
-     136,   137,   138,   139,   273,     0,     0,   274,   140,   141,
-     344,   345,     0,   293,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   291,
-       0,     0,     0,   123,     0,     0,    -6,     1,     0,     0,
-       0,     0,     0,     0,   123,     0,     0,     2,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,    14,     0,    15,     0,    16,     0,     0,   342,    17,
-     342,    18,    19,    20,     0,     0,    21,     0,     0,     0,
-       0,    22,    23,    24,     0,     0,    25,     0,     0,     0,
-      26,    27,    28,    29,     0,    30,     0,     0,     0,     0,
-       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
-       0,    32,    33,    34,    35,    36,     0,     0,    37,    38,
-      39,     0,     0,    40,    41,     0,     0,     0,    -6,    42,
-       0,     0,     0,    43,     2,     3,     4,     5,     0,     6,
-       7,     8,     9,    10,     0,    11,    12,    13,    14,     0,
-      15,     0,    16,     0,     0,     0,    17,     0,    18,    19,
-      20,     0,     0,    21,     0,     0,     0,     0,    22,    23,
-      24,     0,     0,    25,     0,     0,     0,    26,    27,    28,
-      29,     0,    30,     0,     0,     0,     0,     0,     0,     0,
-       0,    31,     0,     0,     0,     0,     0,     0,    32,    33,
-      34,    35,    36,     0,     0,    37,    38,    39,     0,     0,
-      40,    41,     0,     0,     0,     0,    42,     0,     0,     0,
-      43,     2,     3,     4,     5,     0,     6,     7,     8,     9,
-      10,     0,    11,    12,    63,    14,     0,    15,   329,    16,
-       0,     0,     0,    17,     0,    18,    19,    20,     0,     0,
-       0,     0,     0,     0,     0,    22,    23,    24,     0,     0,
-      25,     0,     0,     0,     0,     0,    28,    29,     0,    30,
-       0,     0,     0,     0,     0,     0,     0,     0,    31,     0,
-       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
-       0,     0,    37,     0,    39,     0,     0,    40,    41,     0,
-       0,     0,    61,    42,     0,     0,     0,    43,     2,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    63,    14,     0,    15,     0,    16,     0,     0,     0,
-      17,     0,    18,    19,    20,     0,     0,     0,     0,     0,
-       0,     0,    22,    23,    24,     0,     0,    25,     0,     0,
-       0,     0,     0,    28,    29,     0,    30,     0,     0,     0,
-       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,    32,    33,    34,    35,    36,     0,     0,    37,
-       0,    39,     0,     0,    40,    41,     0,     0,     0,    61,
-      42,     0,     0,     0,    43,     2,     3,     4,     5,     0,
-       6,     7,     8,     9,    10,     0,    11,    12,    63,    14,
+      48,   184,   116,   186,   263,    65,   252,   100,    66,    67,
+      68,   158,   161,    71,    68,   308,    61,   210,   115,    61,
+      84,   290,   182,    88,    62,    75,   267,   131,   308,    97,
+      84,   110,   103,   104,   105,   106,   107,   108,   223,   293,
+     274,   111,   112,   113,   114,   144,   291,   159,   162,   147,
+     139,   140,   236,   122,   123,   124,    70,   260,    91,    92,
+     294,   285,   244,   152,    76,   142,    80,   117,    82,   320,
+      93,   114,    87,   145,    94,   114,   261,   166,   301,   149,
+      95,   150,   128,   129,   310,   130,   128,   129,   131,   130,
+      96,   336,   131,   160,    61,   310,    89,    90,   101,   109,
+     119,   118,   134,   135,   136,   137,   138,   135,   136,   137,
+     138,   139,   140,   237,   141,   139,   140,    48,   238,   122,
+     185,   187,   181,   182,   241,   143,   193,   194,   195,   196,
+     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,   114,   275,   209,   151,   148,   192,   182,   157,
+     163,   167,   212,   292,   179,   188,   215,   216,   182,   217,
+     218,   211,   221,   222,   214,   225,   224,   240,   309,   226,
+     227,   228,   229,   230,   231,   232,   233,   234,   235,   242,
+     312,   248,   277,   239,   259,   282,   266,   262,   281,   283,
+     245,   319,   246,   287,   298,   331,   293,   333,   276,   321,
+     323,   279,   280,   335,   326,   327,   328,   329,   334,   183,
+     295,   243,   317,   258,    99,    73,     0,   289,     0,     0,
+     250,   251,     0,     0,     0,     0,     0,   302,   299,   300,
+       0,     0,     0,   303,   311,   304,     0,     0,     0,   114,
+       0,     0,   315,   316,   318,   313,   314,     0,     0,     0,
+       0,     0,     0,   325,   270,   271,   272,   273,     0,   330,
+       0,   332,   278,   128,   129,     0,   130,     0,     0,   131,
+       0,     0,   268,     0,     0,   269,   339,   340,   288,   338,
+       0,     0,     0,     0,     0,     0,   137,   138,     0,     0,
+       0,     0,   139,   140,    -6,     1,     0,   286,   122,     0,
+       0,     0,     0,     0,     0,     2,     3,     4,     5,   122,
+       6,     7,     8,     9,    10,     0,    11,    12,    13,    14,
        0,    15,     0,    16,     0,     0,     0,    17,     0,    18,
-      19,    20,     0,     0,     0,     0,     0,     0,     0,    22,
-      23,    24,     0,     0,    25,     0,     0,     0,     0,     0,
+      19,    20,     0,   337,    21,   337,     0,     0,     0,    22,
+      23,    24,     0,     0,    25,     0,     0,     0,    26,    27,
       28,    29,     0,    30,     0,     0,     0,     0,     0,     0,
        0,     0,    31,     0,     0,     0,     0,     0,     0,    32,
-      33,    34,    35,    36,     0,     0,    37,     0,    39,     0,
-       0,    40,    41,     0,     0,     0,     0,    42,     0,     0,
+      33,    34,    35,    36,     0,     0,    37,    38,    39,     0,
+       0,    40,    41,     0,     0,     0,    -6,    42,     0,     0,
        0,    43,     2,     3,     4,     5,     0,     6,     7,     8,
-       9,    10,     0,    11,    12,    63,    14,   194,    15,     0,
-      16,     0,     0,     0,    17,     0,    18,    19,   126,   127,
-       0,     0,     0,   128,   129,   130,    22,   131,    24,     0,
-     132,   133,   134,     0,     0,     0,     0,    28,    29,     0,
-      30,     0,     0,     0,   135,   136,   137,   138,   139,    31,
-      61,     0,     0,   140,   141,     0,    32,    33,    34,    35,
-      36,     0,     0,     0,     0,    39,     0,     0,    40,    41,
-       2,     3,     4,     5,    42,     0,     0,     0,    43,     0,
-       0,    11,    12,    63,    14,     0,    15,     0,     0,     0,
-       0,     0,     0,    79,     0,     0,     0,     0,    80,     0,
-      81,    82,    83,    84,    64,     0,    24,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    31,     2,     3,
-       4,     5,     0,     0,    32,    33,    34,    35,    36,    11,
-      12,    63,    14,     0,    15,     0,    40,    41,     0,     0,
-       0,    79,    42,     0,     0,     0,    43,     0,    81,     0,
-      83,     0,    64,     0,    24,     2,     3,     4,     5,     0,
-       0,     0,     0,     0,     0,    99,    11,    12,    63,    14,
-       0,    15,     0,     0,     0,    31,     0,     0,     0,     0,
-       0,     0,    32,    33,    34,    35,    36,     0,     0,    64,
-       0,    24,     0,     0,    40,    41,     0,     0,     0,     0,
-      42,     0,     0,     0,    43,     0,     0,     0,     0,     0,
-       0,     0,    31,     2,     3,     4,     5,     0,     0,    32,
-      33,    34,    35,    36,    11,    12,    63,    14,     0,    15,
-       0,    40,    41,     0,     0,     0,     0,    42,     0,     0,
-       0,    43,     0,     0,     0,     0,     0,    64,     0,    24,
-       2,     3,     4,     5,     0,     0,     0,     0,     0,     0,
-       0,    11,    12,    63,    14,     0,    15,     0,     0,     0,
+       9,    10,     0,    11,    12,    13,    14,     0,    15,     0,
+      16,     0,     0,     0,    17,     0,    18,    19,    20,     0,
+       0,    21,     0,     0,     0,     0,    22,    23,    24,     0,
+       0,    25,     0,     0,     0,    26,    27,    28,    29,     0,
+      30,     0,     0,     0,     0,     0,     0,     0,     0,    31,
+       0,     0,     0,     0,     0,     0,    32,    33,    34,    35,
+      36,     0,     0,    37,    38,    39,     0,     0,    40,    41,
+       0,     0,     0,     0,    42,     0,     0,     0,    43,     2,
+       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
+      11,    12,    63,    14,     0,    15,   324,    16,     0,     0,
+       0,    17,     0,    18,    19,    20,     0,     0,     0,     0,
+       0,     0,     0,    22,    23,    24,     0,     0,    25,     0,
+       0,     0,     0,     0,    28,    29,     0,    30,     0,     0,
+       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
+      37,     0,    39,     0,     0,    40,    41,     0,     0,     0,
+      61,    42,     0,     0,     0,    43,     2,     3,     4,     5,
+       0,     6,     7,     8,     9,    10,     0,    11,    12,    63,
+      14,     0,    15,     0,    16,     0,     0,     0,    17,     0,
+      18,    19,    20,     0,     0,     0,     0,     0,     0,     0,
+      22,    23,    24,     0,     0,    25,     0,     0,     0,     0,
+       0,    28,    29,     0,    30,     0,     0,     0,     0,     0,
+       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
+      32,    33,    34,    35,    36,     0,     0,    37,     0,    39,
+       0,     0,    40,    41,     0,     0,     0,    61,    42,     0,
+       0,     0,    43,     2,     3,     4,     5,     0,     6,     7,
+       8,     9,    10,     0,    11,    12,    63,    14,     0,    15,
+       0,    16,     0,     0,     0,    17,     0,    18,    19,    20,
+       0,     0,     0,     0,     0,     0,     0,    22,    23,    24,
+       0,     0,    25,     0,     0,     0,     0,     0,    28,    29,
+       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
       31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
-      35,    36,     0,     0,    64,     0,    24,     0,     0,    40,
-      41,     0,     0,     0,     0,    72,     0,     0,     0,    43,
-       0,     0,     0,     0,     0,     0,   157,    31,     0,     0,
-       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
-       0,     0,     0,     0,     0,     0,    40,    41,   126,   127,
-       0,     0,   121,   128,   129,   130,    43,   131,   158,   159,
-     132,   133,   134,   171,     0,     0,     0,     0,     0,   172,
-       0,     0,     0,     0,   135,   136,   137,   138,   139,     0,
-     126,   127,     0,   140,   141,   128,   129,   130,     0,   131,
-       0,     0,   132,   133,   134,   173,     0,     0,     0,     0,
-       0,   174,     0,     0,     0,     0,   135,   136,   137,   138,
-     139,     0,   126,   127,     0,   140,   141,   128,   129,   130,
-       0,   131,     0,     0,   132,   133,   134,   175,     0,     0,
-       0,     0,     0,   176,     0,     0,     0,     0,   135,   136,
-     137,   138,   139,     0,   126,   127,     0,   140,   141,   128,
-     129,   130,     0,   131,     0,     0,   132,   133,   134,   177,
-       0,     0,     0,     0,     0,   178,     0,     0,     0,     0,
-     135,   136,   137,   138,   139,     0,   126,   127,     0,   140,
-     141,   128,   129,   130,     0,   131,     0,     0,   132,   133,
-     134,   258,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   135,   136,   137,   138,   139,     0,   126,   127,
-       0,   140,   141,   128,   129,   130,     0,   131,     0,     0,
-     132,   133,   134,   259,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   135,   136,   137,   138,   139,     0,
-     126,   127,     0,   140,   141,   128,   129,   130,     0,   131,
-       0,     0,   132,   133,   134,   260,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   135,   136,   137,   138,
-     139,     0,   126,   127,     0,   140,   141,   128,   129,   130,
-       0,   131,     0,     0,   132,   133,   134,   261,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   135,   136,
-     137,   138,   139,     0,   126,   127,     0,   140,   141,   128,
-     129,   130,     0,   131,     0,     0,   132,   133,   134,     0,
-       0,     0,     0,     0,     0,   223,     0,     0,     0,     0,
-     135,   136,   137,   138,   139,     0,   126,   127,     0,   140,
-     141,   128,   129,   130,     0,   131,     0,     0,   132,   133,
-     134,     0,     0,     0,     0,     0,     0,     0,     0,   168,
-       0,   224,   135,   136,   137,   138,   139,     0,   126,   127,
-       0,   140,   141,   128,   129,   130,     0,   131,     0,     0,
-     132,   133,   134,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   135,   136,   137,   138,   139,     0,
-     126,   127,     0,   140,   141,   128,   129,   130,     0,   131,
-       0,     0,   132,   133,   134,     0,     0,     0,     0,     0,
-     179,   180,     0,     0,     0,     0,   135,   136,   137,   138,
-     139,     0,   126,   127,     0,   140,   141,   128,   129,   130,
-       0,   131,     0,     0,   132,   133,   134,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   192,   135,   136,
-     137,   138,   139,     0,   126,   127,   183,   140,   141,   128,
-     129,   130,     0,   131,     0,     0,   132,   133,   134,     0,
+      35,    36,     0,     0,    37,     0,    39,     0,     0,    40,
+      41,     0,     0,     0,     0,    42,     0,     0,     0,    43,
+       2,     3,     4,     5,     0,     6,     7,     8,     9,    10,
+       0,    11,    12,    63,    14,   191,    15,     0,    16,     0,
+       0,     0,    17,     0,    18,    19,   125,   126,     0,     0,
+       0,   127,   128,   129,    22,   130,    24,     0,   131,   132,
+     133,     0,     0,     0,     0,    28,    29,     0,    30,     0,
+       0,     0,   134,   135,   136,   137,   138,    31,    61,     0,
+       0,   139,   140,     0,    32,    33,    34,    35,    36,     0,
+       0,     0,     0,    39,     0,     0,    40,    41,     2,     3,
+       4,     5,    42,     0,     0,     0,    43,     0,     0,    11,
+      12,    63,    14,     0,    15,     0,     0,     0,     0,     0,
+       0,    78,     0,     0,     0,     0,    79,     0,    80,    81,
+      82,    83,    64,     0,    24,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    31,     2,     3,     4,     5,
+       0,     0,    32,    33,    34,    35,    36,    11,    12,    63,
+      14,     0,    15,     0,    40,    41,     0,     0,     0,    78,
+      42,     0,     0,     0,    43,     0,    80,     0,    82,     0,
+      64,     0,    24,     2,     3,     4,     5,     0,     0,     0,
+       0,     0,     0,    98,    11,    12,    63,    14,     0,    15,
+       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
+      32,    33,    34,    35,    36,     0,     0,    64,     0,    24,
+       0,     0,    40,    41,     0,     0,     0,     0,    42,     0,
+       0,     0,    43,     0,     0,     0,     0,     0,     0,     0,
+      31,     2,     3,     4,     5,     0,     0,    32,    33,    34,
+      35,    36,    11,    12,    63,    14,     0,    15,     0,    40,
+      41,     0,     0,     0,     0,    42,     0,     0,     0,    43,
+       0,     0,     0,     0,     0,    64,     0,    24,     2,     3,
+       4,     5,     0,     0,     0,     0,     0,     0,     0,    11,
+      12,    63,    14,     0,    15,     0,     0,     0,    31,     0,
+       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
+       0,     0,    64,     0,    24,     0,     0,    40,    41,     0,
+       0,     0,     0,    72,     0,     0,     0,    43,     0,     0,
+       0,     0,     0,     0,   154,    31,     0,     0,     0,     0,
+       0,     0,    32,    33,    34,    35,    36,     0,     0,     0,
+       0,     0,     0,     0,    40,    41,   125,   126,     0,     0,
+     120,   127,   128,   129,    43,   130,   155,   156,   131,   132,
+     133,   168,     0,     0,     0,     0,     0,   169,     0,     0,
+       0,     0,   134,   135,   136,   137,   138,     0,   125,   126,
+       0,   139,   140,   127,   128,   129,     0,   130,     0,     0,
+     131,   132,   133,   170,     0,     0,     0,     0,     0,   171,
+       0,     0,     0,     0,   134,   135,   136,   137,   138,     0,
+     125,   126,     0,   139,   140,   127,   128,   129,     0,   130,
+       0,     0,   131,   132,   133,   172,     0,     0,     0,     0,
+       0,   173,     0,     0,     0,     0,   134,   135,   136,   137,
+     138,     0,   125,   126,     0,   139,   140,   127,   128,   129,
+       0,   130,     0,     0,   131,   132,   133,   174,     0,     0,
+       0,     0,     0,   175,     0,     0,     0,     0,   134,   135,
+     136,   137,   138,     0,   125,   126,     0,   139,   140,   127,
+     128,   129,     0,   130,     0,     0,   131,   132,   133,   253,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     135,   136,   137,   138,   139,     0,    61,   126,   127,   140,
-     141,     0,   128,   129,   130,     0,   131,     0,     0,   132,
-     133,   134,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   135,   136,   137,   138,   139,     0,   126,
-     127,   183,   140,   141,   128,   129,   130,     0,   131,     0,
-       0,   132,   133,   134,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   192,   135,   136,   137,   138,   139,
-       0,   126,   127,     0,   140,   141,   128,   129,   130,     0,
-     131,     0,     0,   132,   133,   134,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   135,   136,   137,
-     138,   139,     0,     0,     0,     0,   140,   141
+     134,   135,   136,   137,   138,     0,   125,   126,     0,   139,
+     140,   127,   128,   129,     0,   130,     0,     0,   131,   132,
+     133,   254,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   134,   135,   136,   137,   138,     0,   125,   126,
+       0,   139,   140,   127,   128,   129,     0,   130,     0,     0,
+     131,   132,   133,   255,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   134,   135,   136,   137,   138,     0,
+     125,   126,     0,   139,   140,   127,   128,   129,     0,   130,
+       0,     0,   131,   132,   133,   256,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   134,   135,   136,   137,
+     138,     0,   125,   126,     0,   139,   140,   127,   128,   129,
+       0,   130,     0,     0,   131,   132,   133,     0,     0,     0,
+       0,     0,     0,   219,     0,     0,     0,     0,   134,   135,
+     136,   137,   138,     0,   125,   126,     0,   139,   140,   127,
+     128,   129,     0,   130,     0,     0,   131,   132,   133,     0,
+       0,     0,     0,     0,     0,     0,     0,   165,     0,   220,
+     134,   135,   136,   137,   138,     0,   125,   126,     0,   139,
+     140,   127,   128,   129,     0,   130,     0,     0,   131,   132,
+     133,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   134,   135,   136,   137,   138,     0,   125,   126,
+       0,   139,   140,   127,   128,   129,     0,   130,     0,     0,
+     131,   132,   133,     0,     0,     0,     0,     0,   176,   177,
+       0,     0,     0,     0,   134,   135,   136,   137,   138,     0,
+     125,   126,     0,   139,   140,   127,   128,   129,     0,   130,
+       0,     0,   131,   132,   133,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   189,   134,   135,   136,   137,
+     138,     0,   125,   126,   180,   139,   140,   127,   128,   129,
+       0,   130,     0,     0,   131,   132,   133,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   134,   135,
+     136,   137,   138,     0,   125,   126,   180,   139,   140,   127,
+     128,   129,     0,   130,     0,     0,   131,   132,   133,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   189,
+     134,   135,   136,   137,   138,     0,   125,   126,     0,   139,
+     140,   127,   128,   129,     0,   130,     0,     0,   131,   132,
+     133,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   134,   135,   136,   137,   138,     0,     0,     0,
+       0,   139,   140
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    29,   119,     0,   121,     4,    28,   274,     7,     8,
-       9,   248,    49,    12,    13,    49,   244,   227,    43,   247,
-      19,     1,    92,    22,   291,    46,    32,   297,   300,    28,
-      29,    53,    31,    32,    33,    34,    35,    36,    30,   311,
-     310,    40,    41,    42,    43,    70,    72,    53,    85,    92,
-      75,    85,   262,    52,    53,    54,    99,    49,    86,    98,
-      99,   289,   290,    24,    44,    64,   294,   167,   296,    95,
-      96,    70,   100,    72,    12,    13,    75,   314,   306,   307,
-      79,   181,    81,    93,    66,    67,    24,    69,    68,    24,
-      72,   191,    94,    94,    93,    92,    94,    99,    99,   336,
-      41,    99,    43,    24,    86,    87,    88,    89,    90,    51,
-      52,    24,   340,    95,    96,    24,    24,    24,   118,    24,
-     119,   120,   121,    93,    93,    85,   188,   126,   127,   128,
+       0,   118,     0,   120,   244,     4,   223,    29,     7,     8,
+       9,    49,    49,    12,    13,   292,    92,    94,    43,    92,
+      19,    28,    99,    22,     1,    46,    99,    72,   305,    28,
+      29,    93,    31,    32,    33,    34,    35,    36,   164,    32,
+     257,    40,    41,    42,    43,    70,    53,    85,    85,    74,
+      95,    96,   178,    52,    53,    54,    24,    30,    12,    13,
+      53,   269,   188,    85,    24,    64,    41,    44,    43,   309,
+      24,    70,    24,    72,    24,    74,    49,    99,   286,    78,
+      24,    80,    66,    67,   295,    69,    66,    67,    72,    69,
+      24,   331,    72,    92,    92,   306,    51,    52,    24,    24,
+      85,    93,    86,    87,    88,    89,    90,    87,    88,    89,
+      90,    95,    96,    94,    93,    95,    96,   117,    99,   118,
+     119,   120,    98,    99,   185,    99,   125,   126,   127,   128,
      129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,    99,   125,   145,    99,    99,    41,
-     149,    24,    48,    99,    24,   154,    99,    48,    24,   158,
-     159,    24,   161,   162,    24,   164,   165,    94,    94,   168,
-      49,    24,   171,   172,   173,   174,   175,   176,   177,   178,
-     179,   180,    28,    24,   284,   302,   185,    99,    28,   251,
-      24,    53,    48,   192,    32,   194,   313,    28,    28,   299,
-      28,    48,   264,    28,   118,   267,   268,   285,   310,    29,
-      -1,   191,    66,    67,    -1,    69,    -1,   242,    72,    -1,
-      -1,   283,    -1,    -1,   223,   224,   326,    -1,   328,    -1,
-      -1,   293,   212,    -1,   334,    89,    90,    -1,   300,    -1,
-      -1,    95,    96,   242,    -1,    -1,   308,   309,   310,    66,
-      67,    -1,    69,    -1,    -1,    72,    -1,   319,    -1,   258,
-     259,   260,   261,   325,    -1,   327,    -1,   266,    -1,    -1,
-      87,    88,    89,    90,   254,    -1,    -1,   257,    95,    96,
-     342,   343,    -1,   282,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   279,
-      -1,    -1,    -1,   302,    -1,    -1,     0,     1,    -1,    -1,
-      -1,    -1,    -1,    -1,   313,    -1,    -1,    11,    12,    13,
-      14,    -1,    16,    17,    18,    19,    20,    -1,    22,    23,
-      24,    25,    -1,    27,    -1,    29,    -1,    -1,   338,    33,
-     340,    35,    36,    37,    -1,    -1,    40,    -1,    -1,    -1,
-      -1,    45,    46,    47,    -1,    -1,    50,    -1,    -1,    -1,
-      54,    55,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,
-      -1,    75,    76,    77,    78,    79,    -1,    -1,    82,    83,
-      84,    -1,    -1,    87,    88,    -1,    -1,    -1,    92,    93,
-      -1,    -1,    -1,    97,    11,    12,    13,    14,    -1,    16,
-      17,    18,    19,    20,    -1,    22,    23,    24,    25,    -1,
-      27,    -1,    29,    -1,    -1,    -1,    33,    -1,    35,    36,
-      37,    -1,    -1,    40,    -1,    -1,    -1,    -1,    45,    46,
-      47,    -1,    -1,    50,    -1,    -1,    -1,    54,    55,    56,
-      57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,
-      77,    78,    79,    -1,    -1,    82,    83,    84,    -1,    -1,
-      87,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,
-      97,    11,    12,    13,    14,    -1,    16,    17,    18,    19,
-      20,    -1,    22,    23,    24,    25,    -1,    27,    28,    29,
-      -1,    -1,    -1,    33,    -1,    35,    36,    37,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    45,    46,    47,    -1,    -1,
-      50,    -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    59,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-      -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,
-      -1,    -1,    82,    -1,    84,    -1,    -1,    87,    88,    -1,
-      -1,    -1,    92,    93,    -1,    -1,    -1,    97,    11,    12,
-      13,    14,    -1,    16,    17,    18,    19,    20,    -1,    22,
-      23,    24,    25,    -1,    27,    -1,    29,    -1,    -1,    -1,
-      33,    -1,    35,    36,    37,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    45,    46,    47,    -1,    -1,    50,    -1,    -1,
-      -1,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    82,
-      -1,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,    92,
-      93,    -1,    -1,    -1,    97,    11,    12,    13,    14,    -1,
+     139,   140,   141,    94,   143,    41,    99,   124,    99,    24,
+      48,    99,   151,   279,    24,    48,   155,   156,    99,   158,
+     159,    24,   161,   162,    24,    24,   165,    94,   294,   168,
+     169,   170,   171,   172,   173,   174,   175,   176,   177,    94,
+     297,    24,    49,   182,   240,    24,   247,   243,    28,    99,
+     189,   308,   191,    28,    24,   321,    32,   323,   259,    53,
+      48,   262,   263,   329,    28,    28,    28,    48,    28,   117,
+     280,   188,   305,   238,    29,    13,    -1,   278,    -1,    -1,
+     219,   220,    -1,    -1,    -1,    -1,    -1,   288,   284,   285,
+      -1,    -1,    -1,   289,   295,   291,    -1,    -1,    -1,   238,
+      -1,    -1,   303,   304,   305,   301,   302,    -1,    -1,    -1,
+      -1,    -1,    -1,   314,   253,   254,   255,   256,    -1,   320,
+      -1,   322,   261,    66,    67,    -1,    69,    -1,    -1,    72,
+      -1,    -1,   249,    -1,    -1,   252,   337,   338,   277,   335,
+      -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    -1,    -1,
+      -1,    -1,    95,    96,     0,     1,    -1,   274,   297,    -1,
+      -1,    -1,    -1,    -1,    -1,    11,    12,    13,    14,   308,
       16,    17,    18,    19,    20,    -1,    22,    23,    24,    25,
       -1,    27,    -1,    29,    -1,    -1,    -1,    33,    -1,    35,
-      36,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,
-      46,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,
+      36,    37,    -1,   333,    40,   335,    -1,    -1,    -1,    45,
+      46,    47,    -1,    -1,    50,    -1,    -1,    -1,    54,    55,
       56,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,
-      76,    77,    78,    79,    -1,    -1,    82,    -1,    84,    -1,
-      -1,    87,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,
+      76,    77,    78,    79,    -1,    -1,    82,    83,    84,    -1,
+      -1,    87,    88,    -1,    -1,    -1,    92,    93,    -1,    -1,
       -1,    97,    11,    12,    13,    14,    -1,    16,    17,    18,
-      19,    20,    -1,    22,    23,    24,    25,    49,    27,    -1,
-      29,    -1,    -1,    -1,    33,    -1,    35,    36,    60,    61,
-      -1,    -1,    -1,    65,    66,    67,    45,    69,    47,    -1,
-      72,    73,    74,    -1,    -1,    -1,    -1,    56,    57,    -1,
-      59,    -1,    -1,    -1,    86,    87,    88,    89,    90,    68,
-      92,    -1,    -1,    95,    96,    -1,    75,    76,    77,    78,
-      79,    -1,    -1,    -1,    -1,    84,    -1,    -1,    87,    88,
-      11,    12,    13,    14,    93,    -1,    -1,    -1,    97,    -1,
-      -1,    22,    23,    24,    25,    -1,    27,    -1,    -1,    -1,
-      -1,    -1,    -1,    34,    -1,    -1,    -1,    -1,    39,    -1,
-      41,    42,    43,    44,    45,    -1,    47,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    11,    12,
-      13,    14,    -1,    -1,    75,    76,    77,    78,    79,    22,
-      23,    24,    25,    -1,    27,    -1,    87,    88,    -1,    -1,
-      -1,    34,    93,    -1,    -1,    -1,    97,    -1,    41,    -1,
-      43,    -1,    45,    -1,    47,    11,    12,    13,    14,    -1,
-      -1,    -1,    -1,    -1,    -1,    58,    22,    23,    24,    25,
-      -1,    27,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    45,
-      -1,    47,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
-      93,    -1,    -1,    -1,    97,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    68,    11,    12,    13,    14,    -1,    -1,    75,
-      76,    77,    78,    79,    22,    23,    24,    25,    -1,    27,
-      -1,    87,    88,    -1,    -1,    -1,    -1,    93,    -1,    -1,
-      -1,    97,    -1,    -1,    -1,    -1,    -1,    45,    -1,    47,
-      11,    12,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    22,    23,    24,    25,    -1,    27,    -1,    -1,    -1,
+      19,    20,    -1,    22,    23,    24,    25,    -1,    27,    -1,
+      29,    -1,    -1,    -1,    33,    -1,    35,    36,    37,    -1,
+      -1,    40,    -1,    -1,    -1,    -1,    45,    46,    47,    -1,
+      -1,    50,    -1,    -1,    -1,    54,    55,    56,    57,    -1,
+      59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,
+      79,    -1,    -1,    82,    83,    84,    -1,    -1,    87,    88,
+      -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    97,    11,
+      12,    13,    14,    -1,    16,    17,    18,    19,    20,    -1,
+      22,    23,    24,    25,    -1,    27,    28,    29,    -1,    -1,
+      -1,    33,    -1,    35,    36,    37,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    45,    46,    47,    -1,    -1,    50,    -1,
+      -1,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,
+      -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,
+      82,    -1,    84,    -1,    -1,    87,    88,    -1,    -1,    -1,
+      92,    93,    -1,    -1,    -1,    97,    11,    12,    13,    14,
+      -1,    16,    17,    18,    19,    20,    -1,    22,    23,    24,
+      25,    -1,    27,    -1,    29,    -1,    -1,    -1,    33,    -1,
+      35,    36,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      45,    46,    47,    -1,    -1,    50,    -1,    -1,    -1,    -1,
+      -1,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,    76,    77,    78,    79,    -1,    -1,    82,    -1,    84,
+      -1,    -1,    87,    88,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    -1,    97,    11,    12,    13,    14,    -1,    16,    17,
+      18,    19,    20,    -1,    22,    23,    24,    25,    -1,    27,
+      -1,    29,    -1,    -1,    -1,    33,    -1,    35,    36,    37,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,
+      -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    56,    57,
+      -1,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
-      78,    79,    -1,    -1,    45,    -1,    47,    -1,    -1,    87,
+      78,    79,    -1,    -1,    82,    -1,    84,    -1,    -1,    87,
+      88,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    97,
+      11,    12,    13,    14,    -1,    16,    17,    18,    19,    20,
+      -1,    22,    23,    24,    25,    49,    27,    -1,    29,    -1,
+      -1,    -1,    33,    -1,    35,    36,    60,    61,    -1,    -1,
+      -1,    65,    66,    67,    45,    69,    47,    -1,    72,    73,
+      74,    -1,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,
+      -1,    -1,    86,    87,    88,    89,    90,    68,    92,    -1,
+      -1,    95,    96,    -1,    75,    76,    77,    78,    79,    -1,
+      -1,    -1,    -1,    84,    -1,    -1,    87,    88,    11,    12,
+      13,    14,    93,    -1,    -1,    -1,    97,    -1,    -1,    22,
+      23,    24,    25,    -1,    27,    -1,    -1,    -1,    -1,    -1,
+      -1,    34,    -1,    -1,    -1,    -1,    39,    -1,    41,    42,
+      43,    44,    45,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    68,    11,    12,    13,    14,
+      -1,    -1,    75,    76,    77,    78,    79,    22,    23,    24,
+      25,    -1,    27,    -1,    87,    88,    -1,    -1,    -1,    34,
+      93,    -1,    -1,    -1,    97,    -1,    41,    -1,    43,    -1,
+      45,    -1,    47,    11,    12,    13,    14,    -1,    -1,    -1,
+      -1,    -1,    -1,    58,    22,    23,    24,    25,    -1,    27,
+      -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,    76,    77,    78,    79,    -1,    -1,    45,    -1,    47,
+      -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    93,    -1,
+      -1,    -1,    97,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      68,    11,    12,    13,    14,    -1,    -1,    75,    76,    77,
+      78,    79,    22,    23,    24,    25,    -1,    27,    -1,    87,
       88,    -1,    -1,    -1,    -1,    93,    -1,    -1,    -1,    97,
-      -1,    -1,    -1,    -1,    -1,    -1,    38,    68,    -1,    -1,
-      -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    60,    61,
-      -1,    -1,    93,    65,    66,    67,    97,    69,    70,    71,
+      -1,    -1,    -1,    -1,    -1,    45,    -1,    47,    11,    12,
+      13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    22,
+      23,    24,    25,    -1,    27,    -1,    -1,    -1,    68,    -1,
+      -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,
+      -1,    -1,    45,    -1,    47,    -1,    -1,    87,    88,    -1,
+      -1,    -1,    -1,    93,    -1,    -1,    -1,    97,    -1,    -1,
+      -1,    -1,    -1,    -1,    38,    68,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    60,    61,    -1,    -1,
+      93,    65,    66,    67,    97,    69,    70,    71,    72,    73,
+      74,    43,    -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,
+      -1,    -1,    86,    87,    88,    89,    90,    -1,    60,    61,
+      -1,    95,    96,    65,    66,    67,    -1,    69,    -1,    -1,
       72,    73,    74,    43,    -1,    -1,    -1,    -1,    -1,    49,
       -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,    -1,
       60,    61,    -1,    95,    96,    65,    66,    67,    -1,    69,
@@ -1187,7 +1183,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,    86,    87,
       88,    89,    90,    -1,    60,    61,    -1,    95,    96,    65,
       66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    43,
-      -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       86,    87,    88,    89,    90,    -1,    60,    61,    -1,    95,
       96,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
       74,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -1199,38 +1195,32 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    72,    73,    74,    43,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,    89,
       90,    -1,    60,    61,    -1,    95,    96,    65,    66,    67,
-      -1,    69,    -1,    -1,    72,    73,    74,    43,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,
+      -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
+      -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,    86,    87,
       88,    89,    90,    -1,    60,    61,    -1,    95,    96,    65,
       66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    51,    -1,    85,
       86,    87,    88,    89,    90,    -1,    60,    61,    -1,    95,
       96,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    51,
-      -1,    85,    86,    87,    88,    89,    90,    -1,    60,    61,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    86,    87,    88,    89,    90,    -1,    60,    61,
       -1,    95,    96,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    80,    81,
       -1,    -1,    -1,    -1,    86,    87,    88,    89,    90,    -1,
       60,    61,    -1,    95,    96,    65,    66,    67,    -1,    69,
       -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      80,    81,    -1,    -1,    -1,    -1,    86,    87,    88,    89,
-      90,    -1,    60,    61,    -1,    95,    96,    65,    66,    67,
+      -1,    -1,    -1,    -1,    -1,    85,    86,    87,    88,    89,
+      90,    -1,    60,    61,    94,    95,    96,    65,    66,    67,
       -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,
       88,    89,    90,    -1,    60,    61,    94,    95,    96,    65,
       66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      86,    87,    88,    89,    90,    -1,    92,    60,    61,    95,
-      96,    -1,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    86,    87,    88,    89,    90,    -1,    60,
-      61,    94,    95,    96,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    85,    86,    87,    88,    89,    90,
-      -1,    60,    61,    -1,    95,    96,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    86,    87,    88,
-      89,    90,    -1,    -1,    -1,    -1,    95,    96
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    85,
+      86,    87,    88,    89,    90,    -1,    60,    61,    -1,    95,
+      96,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    86,    87,    88,    89,    90,    -1,    -1,    -1,
+      -1,    95,    96
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1243,35 +1233,35 @@ static const yytype_uint8 yystos[] =
       59,    68,    75,    76,    77,    78,    79,    82,    83,    84,
       87,    88,    93,    97,   101,   103,   104,   105,   106,   107,
      114,   115,   116,   121,   122,   123,   124,   127,   130,   132,
-     139,    92,   102,    24,    45,   123,   123,   123,   123,   142,
-      24,   123,    93,   123,   141,   131,    46,    24,   125,    34,
-      39,    41,    42,    43,    44,   123,   128,   129,    24,   123,
-      51,    52,    12,    13,    24,    24,    24,    24,   123,    58,
-     128,   129,    24,   126,   123,   123,   123,   123,   123,   123,
-      24,    93,   123,   123,   123,   123,   140,     0,   102,    93,
-      85,    93,   113,   123,   123,   123,    60,    61,    65,    66,
-      67,    69,    72,    73,    74,    86,    87,    88,    89,    90,
-      95,    96,    93,   123,   102,    99,   140,   123,   140,    99,
-     140,    99,   123,   123,    41,   129,   133,    38,    70,    71,
-      24,    49,    85,   123,    49,    85,    48,   134,    51,   129,
-      99,    43,    49,    43,    49,    43,    49,    43,    49,    80,
-      81,   135,    24,    94,    98,    99,   103,   113,   123,   113,
-     123,    48,    85,   119,    49,   102,   123,   123,   123,   123,
-     123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     123,   123,   123,    94,   123,    24,   123,   118,    24,   123,
-     123,   123,   123,    49,    85,   123,   123,   118,   123,    24,
+     139,    92,   102,    24,    45,   123,   123,   123,   123,   141,
+      24,   123,    93,   141,   131,    46,    24,   125,    34,    39,
+      41,    42,    43,    44,   123,   128,   129,    24,   123,    51,
+      52,    12,    13,    24,    24,    24,    24,   123,    58,   128,
+     129,    24,   126,   123,   123,   123,   123,   123,   123,    24,
+      93,   123,   123,   123,   123,   140,     0,   102,    93,    85,
+      93,   113,   123,   123,   123,    60,    61,    65,    66,    67,
+      69,    72,    73,    74,    86,    87,    88,    89,    90,    95,
+      96,    93,   123,    99,   140,   123,   140,   140,    99,   123,
+     123,    41,   129,   133,    38,    70,    71,    24,    49,    85,
+     123,    49,    85,    48,   134,    51,   129,    99,    43,    49,
+      43,    49,    43,    49,    43,    49,    80,    81,   135,    24,
+      94,    98,    99,   103,   113,   123,   113,   123,    48,    85,
+     119,    49,   102,   123,   123,   123,   123,   123,   123,   123,
      123,   123,   123,   123,   123,   123,   123,   123,   123,   123,
-     118,    94,    99,   123,    94,   119,    94,   102,   118,   123,
-     123,   120,   102,    24,   137,   123,   123,   137,    43,    43,
-      43,    43,   136,   140,   120,    30,    49,   120,   105,   102,
-     106,   119,    99,   102,   102,   123,   123,   123,   123,   137,
-      94,   119,    49,   123,   119,   119,    28,    24,    99,   138,
-     138,   102,    28,   123,   119,    28,    53,   118,    32,    53,
-     110,   111,   117,    24,   120,   120,   138,   119,   120,   120,
-     109,   110,   112,   117,   118,   111,   119,   113,   120,   120,
-     119,   119,   112,   119,   113,   105,    53,   108,    48,    28,
-     119,    28,    28,    28,    48,   119,   118,   119,   118,    28,
-     118,   105,   106,   120,   119,   119
+      94,    24,   123,   118,    24,   123,   123,   123,   123,    49,
+      85,   123,   123,   118,   123,    24,   123,   123,   123,   123,
+     123,   123,   123,   123,   123,   123,   118,    94,    99,   123,
+      94,   119,    94,   102,   118,   123,   123,   120,    24,   137,
+     123,   123,   137,    43,    43,    43,    43,   136,   140,   120,
+      30,    49,   120,   105,   102,   106,   119,    99,   102,   102,
+     123,   123,   123,   123,   137,    94,   119,    49,   123,   119,
+     119,    28,    24,    99,   138,   138,   102,    28,   123,   119,
+      28,    53,   118,    32,    53,   110,   111,   117,    24,   120,
+     120,   138,   119,   120,   120,   109,   110,   112,   117,   118,
+     111,   119,   113,   120,   120,   119,   119,   112,   119,   113,
+     105,    53,   108,    48,    28,   119,    28,    28,    28,    48,
+     119,   118,   119,   118,    28,   118,   105,   106,   120,   119,
+     119
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2971,19 +2961,9 @@ yyreduce:
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 156:
-#line 631 "engines/director/lingo/lingo-gr.y"
-    { (yyval.narg) = 1; ;}
-    break;
-
-  case 157:
-#line 632 "engines/director/lingo/lingo-gr.y"
-    { (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
-    break;
-
 
 /* Line 1267 of yacc.c.  */
-#line 2987 "engines/director/lingo/lingo-gr.cpp"
+#line 2967 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3197,6 +3177,6 @@ yyreturn:
 }
 
 
-#line 635 "engines/director/lingo/lingo-gr.y"
+#line 631 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 8ea770a..39cb8a2 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -104,7 +104,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token tON tME
 
 %type<code> asgn begin elseif elsestmtoneliner end expr if when repeatwhile repeatwith stmtlist tell
-%type<narg> argdef arglist nonemptyarglist nonemptyarglistnl
+%type<narg> argdef arglist nonemptyarglist
 
 %right '='
 %left tLT tLE tGT tGE tNEQ tCONTAINS tSTARTS
@@ -490,7 +490,7 @@ proc: tPUT expr				{ g_lingo->code1(g_lingo->c_printtop); }
 	| BLTINNOARGSORONE 		{
 		g_lingo->code2(g_lingo->c_voidpush, g_lingo->_builtins[*$1]->u.func);
 		delete $1; }
-	| BLTINARGLIST nonemptyarglistnl { g_lingo->codeFunc($1, $2); }
+	| BLTINARGLIST nonemptyarglist { g_lingo->codeFunc($1, $2); }
 	| tME '(' ID ')'				{ g_lingo->codeMe($3, 0); }
 	| tME '(' ID ',' arglist ')'	{ g_lingo->codeMe($3, $5); }
 	| tOPEN expr tWITH expr	{ g_lingo->code1(g_lingo->c_open); }
@@ -628,8 +628,4 @@ nonemptyarglist:  expr			{ $$ = 1; }
 	| nonemptyarglist ',' expr	{ $$ = $1 + 1; }
 	;
 
-nonemptyarglistnl: expr nl			{ $$ = 1; }
-	| nonemptyarglistnl ',' expr nl	{ $$ = $1 + 1; }
-	;
-
 %%


Commit: a9fb3e3225dac382318f7c1ef09e7c61aeb2ac4c
    https://github.com/scummvm/scummvm/commit/a9fb3e3225dac382318f7c1ef09e7c61aeb2ac4c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-02-07T11:09:06+01:00

Commit Message:
DIRECTOR: Lingo: Added debug output to lexer and fixed builtin.lingo test

Changed paths:
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l
    engines/director/lingo/tests/builtin.lingo


diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 1598a27..829a423 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1278,6 +1278,9 @@ YY_RULE_SETUP
 {
 		count();
 
+		if (debugChannelSet(-1, kDebugLingoCompile))
+			debug("LEXER: the sqrt: Read '%s'", yytext);
+
 		yylval.e[0] = g_lingo->_theEntities["sqrt"]->entity;
 		yylval.e[1] = 0;	// No field
 
@@ -1286,10 +1289,13 @@ YY_RULE_SETUP
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 150 "engines/director/lingo/lingo-lex.l"
+#line 153 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
+		if (debugChannelSet(-1, kDebugLingoCompile))
+			debug("LEXER: the of: Read '%s'", yytext);
+
 		const char *ptr = &yytext[4]; // Skip 'the '
 		while (*ptr == ' ' || *ptr == '\t')
 			ptr++;
@@ -1330,10 +1336,13 @@ YY_RULE_SETUP
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 190 "engines/director/lingo/lingo-lex.l"
+#line 196 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
+		if (debugChannelSet(-1, kDebugLingoCompile))
+			debug("LEXER: the date: Read '%s'", yytext);
+
 		const char *ptr = &yytext[4]; // Skip 'the '
 		while (*ptr == ' ' || *ptr == '\t')
 			ptr++;
@@ -1365,10 +1374,13 @@ YY_RULE_SETUP
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 221 "engines/director/lingo/lingo-lex.l"
+#line 230 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
+		if (debugChannelSet(-1, kDebugLingoCompile))
+			debug("LEXER: the: Read '%s'", yytext);
+
 		const char *ptr = &yytext[4]; // Skip 'the '
 		while (*ptr == ' ' || *ptr == '\t')
 			ptr++;
@@ -1388,71 +1400,74 @@ YY_RULE_SETUP
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 240 "engines/director/lingo/lingo-lex.l"
+#line 252 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 241 "engines/director/lingo/lingo-lex.l"
+#line 253 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 242 "engines/director/lingo/lingo-lex.l"
+#line 254 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 243 "engines/director/lingo/lingo-lex.l"
+#line 255 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 244 "engines/director/lingo/lingo-lex.l"
+#line 256 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 245 "engines/director/lingo/lingo-lex.l"
+#line 257 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 246 "engines/director/lingo/lingo-lex.l"
+#line 258 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 247 "engines/director/lingo/lingo-lex.l"
+#line 259 "engines/director/lingo/lingo-lex.l"
 { count(); return tWORD; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 249 "engines/director/lingo/lingo-lex.l"
+#line 261 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 250 "engines/director/lingo/lingo-lex.l"
+#line 262 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 251 "engines/director/lingo/lingo-lex.l"
+#line 263 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 252 "engines/director/lingo/lingo-lex.l"
+#line 264 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 254 "engines/director/lingo/lingo-lex.l"
+#line 266 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
 
+		if (debugChannelSet(-1, kDebugLingoCompile))
+			debug("LEXER: identifier: Read '%s'", yytext);
+
 		if (g_lingo->_ignoreMe && yylval.s->equalsIgnoreCase("me"))
 			return ID;
 
@@ -1491,41 +1506,41 @@ YY_RULE_SETUP
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 293 "engines/director/lingo/lingo-lex.l"
+#line 308 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 294 "engines/director/lingo/lingo-lex.l"
+#line 309 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 295 "engines/director/lingo/lingo-lex.l"
+#line 310 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
 case 67:
 /* rule 67 can match eol */
 YY_RULE_SETUP
-#line 296 "engines/director/lingo/lingo-lex.l"
+#line 311 "engines/director/lingo/lingo-lex.l"
 { return '\n'; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 297 "engines/director/lingo/lingo-lex.l"
+#line 312 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 298 "engines/director/lingo/lingo-lex.l"
+#line 313 "engines/director/lingo/lingo-lex.l"
 
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 300 "engines/director/lingo/lingo-lex.l"
+#line 315 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1529 "engines/director/lingo/lingo-lex.cpp"
+#line 1544 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2488,7 +2503,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 300 "engines/director/lingo/lingo-lex.l"
+#line 315 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index a4134b8..d6bf59a 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -142,6 +142,9 @@ whitespace [\t ]
 (?i:the[ \t]+sqrt[\t ]+of[\t ]+)	{
 		count();
 
+		if (debugChannelSet(-1, kDebugLingoCompile))
+			debug("LEXER: the sqrt: Read '%s'", yytext);
+
 		yylval.e[0] = g_lingo->_theEntities["sqrt"]->entity;
 		yylval.e[1] = 0;	// No field
 
@@ -150,6 +153,9 @@ whitespace [\t ]
 (?i:the[ \t]+[[:alpha:]]+[\t ]+of[\t ]+[[:alpha:]]+)	{
 		count();
 
+		if (debugChannelSet(-1, kDebugLingoCompile))
+			debug("LEXER: the of: Read '%s'", yytext);
+
 		const char *ptr = &yytext[4]; // Skip 'the '
 		while (*ptr == ' ' || *ptr == '\t')
 			ptr++;
@@ -190,6 +196,9 @@ whitespace [\t ]
 (?i:the[ \t]+[[:alpha:]]+[ \t+](date|time))		{
 		count();
 
+		if (debugChannelSet(-1, kDebugLingoCompile))
+			debug("LEXER: the date: Read '%s'", yytext);
+
 		const char *ptr = &yytext[4]; // Skip 'the '
 		while (*ptr == ' ' || *ptr == '\t')
 			ptr++;
@@ -221,6 +230,9 @@ whitespace [\t ]
 (?i:the[ \t]+[[:alpha:]]+)		{
 		count();
 
+		if (debugChannelSet(-1, kDebugLingoCompile))
+			debug("LEXER: the: Read '%s'", yytext);
+
 		const char *ptr = &yytext[4]; // Skip 'the '
 		while (*ptr == ' ' || *ptr == '\t')
 			ptr++;
@@ -255,6 +267,9 @@ whitespace [\t ]
 		count();
 		yylval.s = new Common::String(yytext);
 
+		if (debugChannelSet(-1, kDebugLingoCompile))
+			debug("LEXER: identifier: Read '%s'", yytext);
+
 		if (g_lingo->_ignoreMe && yylval.s->equalsIgnoreCase("me"))
 			return ID;
 
diff --git a/engines/director/lingo/tests/builtin.lingo b/engines/director/lingo/tests/builtin.lingo
index e499a23..561ecd3 100644
--- a/engines/director/lingo/tests/builtin.lingo
+++ b/engines/director/lingo/tests/builtin.lingo
@@ -27,4 +27,4 @@ move cast 1, cast 3
 move cast 3
 put findEmpty(cast 10)
 pasteClipBoardInto cast 2
-put the width of the cast 3
+put the width of cast 3





More information about the Scummvm-git-logs mailing list