[Scummvm-git-logs] scummvm master -> 83c4cd19f0d964971991c073815832e1403fc025

sev- sev at scummvm.org
Mon Jan 9 19:00:12 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:
2d29e5db29 DIRECTOR: Add sanity check to 'go to' functions
b30971b03f DIRECTOR: Lingo: Removed 'me' as lexer token
83c4cd19f0 DIRECTOR: Lingo: Allow 'me' as an argument to the handlers


Commit: 2d29e5db29f0e38a83f1192d9f74832948c80447
    https://github.com/scummvm/scummvm/commit/2d29e5db29f0e38a83f1192d9f74832948c80447
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-09T18:35:11+01:00

Commit Message:
DIRECTOR: Add sanity check to 'go to' functions

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


diff --git a/engines/director/lingo/lingo-funcs.cpp b/engines/director/lingo/lingo-funcs.cpp
index 6becd14..0deab07 100644
--- a/engines/director/lingo/lingo-funcs.cpp
+++ b/engines/director/lingo/lingo-funcs.cpp
@@ -200,14 +200,23 @@ void Lingo::func_goto(Datum &frame, Datum &movie) {
 }
 
 void Lingo::func_gotoloop() {
+	if (!_vm->_currentScore)
+		return;
+
 	_vm->_currentScore->gotoloop();
 }
 
 void Lingo::func_gotonext() {
+	if (!_vm->_currentScore)
+		return;
+
 	_vm->_currentScore->gotonext();
 }
 
 void Lingo::func_gotoprevious() {
+	if (!_vm->_currentScore)
+		return;
+
 	_vm->_currentScore->gotoprevious();
 }
 


Commit: b30971b03f9506898a81b1dc2f5472e6d2ccb776
    https://github.com/scummvm/scummvm/commit/b30971b03f9506898a81b1dc2f5472e6d2ccb776
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-09T18:52:17+01:00

Commit Message:
DIRECTOR: Lingo: Removed 'me' as lexer token

Changed paths:
    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-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 8cc5f69..787f7e0 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -136,8 +136,7 @@
      tINTERSECTS = 325,
      tWITHIN = 326,
      tON = 327,
-     tME = 328,
-     tSOUND = 329
+     tSOUND = 328
    };
 #endif
 /* Tokens.  */
@@ -211,8 +210,7 @@
 #define tINTERSECTS 325
 #define tWITHIN 326
 #define tON 327
-#define tME 328
-#define tSOUND 329
+#define tSOUND 328
 
 
 
@@ -270,7 +268,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 193 of yacc.c.  */
-#line 274 "engines/director/lingo/lingo-gr.cpp"
+#line 272 "engines/director/lingo/lingo-gr.cpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -283,7 +281,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 287 "engines/director/lingo/lingo-gr.cpp"
+#line 285 "engines/director/lingo/lingo-gr.cpp"
 
 #ifdef short
 # undef short
@@ -498,10 +496,10 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  96
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   990
+#define YYLAST   1014
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  88
+#define YYNTOKENS  87
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  38
 /* YYNRULES -- Number of rules.  */
@@ -511,7 +509,7 @@ union yyalloc
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   329
+#define YYMAXUTOK   328
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -520,12 +518,12 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      82,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      81,     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,    81,    76,     2,
-      83,    84,    79,    77,    87,    78,     2,    80,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    80,    75,     2,
+      82,    83,    78,    76,    86,    77,     2,    79,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      86,    75,    85,     2,     2,     2,     2,     2,     2,     2,
+      85,    74,    84,     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,
@@ -551,7 +549,7 @@ static const yytype_uint8 yytranslate[] =
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       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
+      65,    66,    67,    68,    69,    70,    71,    72,    73
 };
 
 #if YYDEBUG
@@ -578,56 +576,56 @@ static const yytype_uint16 yyprhs[] =
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      89,     0,    -1,    89,    90,    91,    -1,    91,    -1,     1,
-      90,    -1,    82,    -1,    -1,   118,    -1,   111,    -1,   124,
-      -1,    92,    -1,    94,    -1,    40,   110,    33,    21,    -1,
-      42,    21,    75,   110,    -1,    42,    13,    75,   110,    -1,
-      42,    14,   110,    75,   110,    -1,    42,    21,    44,   110,
-      -1,    42,    13,    44,   110,    -1,    42,    14,   110,    44,
-     110,    -1,   110,    -1,   111,    -1,    93,    -1,    95,    -1,
-     102,    83,   101,    84,   108,   107,    27,    41,    -1,   103,
-      75,   110,   107,    44,   110,   107,   108,   107,    27,    41,
-      -1,   103,    75,   110,   107,    24,    44,   110,   107,   108,
-     107,    27,    41,    -1,   109,   110,   107,    -1,   104,   101,
-      43,    90,   108,   107,    27,    32,    -1,   104,   101,    43,
-      90,   108,   107,    48,   108,   107,    27,    32,    -1,   104,
-     101,    43,    90,   108,   107,   106,    97,   107,    27,    32,
-      -1,   104,   101,    43,   106,    93,   107,    -1,   104,   101,
-      43,   106,    93,   107,    48,   106,    93,   107,    -1,   104,
-     101,    43,   106,    93,   107,    98,   107,    96,   107,    -1,
-      -1,    48,   106,    93,    -1,    97,   100,    -1,   100,    -1,
-      98,    99,    -1,    99,    -1,   105,   101,    43,   106,    94,
-     107,    -1,    98,    -1,   105,   101,    43,   108,   107,    -1,
-     110,    -1,   110,    75,   110,    -1,    83,   101,    84,    -1,
+      88,     0,    -1,    88,    89,    90,    -1,    90,    -1,     1,
+      89,    -1,    81,    -1,    -1,   117,    -1,   110,    -1,   123,
+      -1,    91,    -1,    93,    -1,    40,   109,    33,    21,    -1,
+      42,    21,    74,   109,    -1,    42,    13,    74,   109,    -1,
+      42,    14,   109,    74,   109,    -1,    42,    21,    44,   109,
+      -1,    42,    13,    44,   109,    -1,    42,    14,   109,    44,
+     109,    -1,   109,    -1,   110,    -1,    92,    -1,    94,    -1,
+     101,    82,   100,    83,   107,   106,    27,    41,    -1,   102,
+      74,   109,   106,    44,   109,   106,   107,   106,    27,    41,
+      -1,   102,    74,   109,   106,    24,    44,   109,   106,   107,
+     106,    27,    41,    -1,   108,   109,   106,    -1,   103,   100,
+      43,    89,   107,   106,    27,    32,    -1,   103,   100,    43,
+      89,   107,   106,    48,   107,   106,    27,    32,    -1,   103,
+     100,    43,    89,   107,   106,   105,    96,   106,    27,    32,
+      -1,   103,   100,    43,   105,    92,   106,    -1,   103,   100,
+      43,   105,    92,   106,    48,   105,    92,   106,    -1,   103,
+     100,    43,   105,    92,   106,    97,   106,    95,   106,    -1,
+      -1,    48,   105,    92,    -1,    96,    99,    -1,    99,    -1,
+      97,    98,    -1,    98,    -1,   104,   100,    43,   105,    93,
+     106,    -1,    97,    -1,   104,   100,    43,   107,   106,    -1,
+     109,    -1,   109,    74,   109,    -1,    82,   100,    83,    -1,
       41,    47,    -1,    41,    46,    21,    -1,    32,    -1,    26,
-      -1,    -1,    -1,    -1,   108,    90,    -1,   108,    94,    -1,
+      -1,    -1,    -1,    -1,   107,    89,    -1,   107,    93,    -1,
       45,    21,    43,    -1,    12,    -1,    15,    -1,    22,    -1,
-      17,    -1,    21,    83,   125,    84,    -1,    21,    -1,    13,
-      -1,    14,   110,    -1,    92,    -1,   110,    77,   110,    -1,
-     110,    78,   110,    -1,   110,    79,   110,    -1,   110,    80,
-     110,    -1,   110,    65,   110,    -1,   110,    85,   110,    -1,
-     110,    86,   110,    -1,   110,    61,   110,    -1,   110,    56,
-     110,    -1,   110,    57,   110,    -1,   110,    62,   110,    -1,
-     110,    63,   110,    -1,    64,   110,    -1,   110,    76,   110,
-      -1,   110,    66,   110,    -1,   110,    67,   110,    -1,   110,
-      68,   110,    -1,    77,   110,    -1,    78,   110,    -1,    83,
-     110,    84,    -1,    69,   110,    70,   110,    -1,    69,   110,
-      71,   110,    -1,    40,   110,    -1,   114,    -1,   117,    -1,
-      28,    41,    -1,    28,    -1,    30,   112,    -1,    55,   113,
-      -1,    19,   110,    -1,    18,   110,    -1,    18,    -1,    20,
-     125,    -1,    51,   110,    46,   110,    -1,    51,   110,    -1,
-      74,    21,   125,    -1,    21,    -1,   112,    87,    21,    -1,
-      21,    -1,   113,    87,    21,    -1,    31,    34,    -1,    31,
-      37,    -1,    31,    39,    -1,    31,   115,    -1,    31,   115,
-     116,    -1,    31,   116,    -1,    29,   110,    -1,   110,    -1,
-      38,    36,   110,    -1,    36,   110,    -1,    52,    53,    -1,
-      52,   115,    -1,    52,   115,   116,    -1,    52,   116,    -1,
-      -1,    35,    21,   119,   106,   122,    90,   123,   108,    -1,
-      49,    21,    -1,    -1,    50,    21,   120,   106,   122,    90,
-     123,   108,    -1,    -1,    72,    21,   121,   106,   122,    90,
-     123,   108,    27,    21,    -1,    -1,    21,    -1,   122,    87,
-      21,    -1,   122,    90,    87,    21,    -1,    -1,    21,   106,
-     125,    -1,    -1,   110,    -1,   125,    87,   110,    -1
+      17,    -1,    21,    82,   124,    83,    -1,    21,    -1,    13,
+      -1,    14,   109,    -1,    91,    -1,   109,    76,   109,    -1,
+     109,    77,   109,    -1,   109,    78,   109,    -1,   109,    79,
+     109,    -1,   109,    65,   109,    -1,   109,    84,   109,    -1,
+     109,    85,   109,    -1,   109,    61,   109,    -1,   109,    56,
+     109,    -1,   109,    57,   109,    -1,   109,    62,   109,    -1,
+     109,    63,   109,    -1,    64,   109,    -1,   109,    75,   109,
+      -1,   109,    66,   109,    -1,   109,    67,   109,    -1,   109,
+      68,   109,    -1,    76,   109,    -1,    77,   109,    -1,    82,
+     109,    83,    -1,    69,   109,    70,   109,    -1,    69,   109,
+      71,   109,    -1,    40,   109,    -1,   113,    -1,   116,    -1,
+      28,    41,    -1,    28,    -1,    30,   111,    -1,    55,   112,
+      -1,    19,   109,    -1,    18,   109,    -1,    18,    -1,    20,
+     124,    -1,    51,   109,    46,   109,    -1,    51,   109,    -1,
+      73,    21,   124,    -1,    21,    -1,   111,    86,    21,    -1,
+      21,    -1,   112,    86,    21,    -1,    31,    34,    -1,    31,
+      37,    -1,    31,    39,    -1,    31,   114,    -1,    31,   114,
+     115,    -1,    31,   115,    -1,    29,   109,    -1,   109,    -1,
+      38,    36,   109,    -1,    36,   109,    -1,    52,    53,    -1,
+      52,   114,    -1,    52,   114,   115,    -1,    52,   115,    -1,
+      -1,    35,    21,   118,   105,   121,    89,   122,   107,    -1,
+      49,    21,    -1,    -1,    50,    21,   119,   105,   121,    89,
+     122,   107,    -1,    -1,    72,    21,   120,   105,   121,    89,
+     122,   107,    27,    21,    -1,    -1,    21,    -1,   121,    86,
+      21,    -1,   121,    89,    86,    21,    -1,    -1,    21,   105,
+     124,    -1,    -1,   109,    -1,   124,    86,   109,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -665,15 +663,15 @@ static const char *const yytname[] =
   "tNLELSE", "tFACTORY", "tMETHOD", "tOPEN", "tPLAY", "tDONE",
   "tPLAYACCEL", "tINSTANCE", "tGE", "tLE", "tGT", "tLT", "tEQ", "tNEQ",
   "tAND", "tOR", "tNOT", "tMOD", "tCONCAT", "tCONTAINS", "tSTARTS",
-  "tSPRITE", "tINTERSECTS", "tWITHIN", "tON", "tME", "tSOUND", "'='",
-  "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'",
-  "'<'", "','", "$accept", "program", "nl", "programline", "asgn",
-  "stmtoneliner", "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt",
-  "elseifstmtoneliner", "elseifstmtoneliner1", "elseifstmt1", "cond",
-  "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist",
-  "when", "expr", "func", "globallist", "instancelist", "gotofunc",
-  "gotoframe", "gotomovie", "playfunc", "defn", "@1", "@2", "@3", "argdef",
-  "argstore", "macro", "arglist", 0
+  "tSPRITE", "tINTERSECTS", "tWITHIN", "tON", "tSOUND", "'='", "'&'",
+  "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'",
+  "','", "$accept", "program", "nl", "programline", "asgn", "stmtoneliner",
+  "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
+  "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile",
+  "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "expr",
+  "func", "globallist", "instancelist", "gotofunc", "gotoframe",
+  "gotomovie", "playfunc", "defn", "@1", "@2", "@3", "argdef", "argstore",
+  "macro", "arglist", 0
 };
 #endif
 
@@ -689,28 +687,28 @@ static const yytype_uint16 yytoknum[] =
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
      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,    61,    38,    43,    45,    42,
-      47,    37,    10,    40,    41,    62,    60,    44
+     325,   326,   327,   328,    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,    88,    89,    89,    89,    90,    91,    91,    91,    91,
-      91,    91,    92,    92,    92,    92,    92,    92,    92,    93,
-      93,    94,    94,    94,    94,    94,    94,    95,    95,    95,
-      95,    95,    95,    96,    96,    97,    97,    98,    98,    99,
-     100,   100,   101,   101,   101,   102,   103,   104,   105,   106,
-     107,   108,   108,   108,   109,   110,   110,   110,   110,   110,
+       0,    87,    88,    88,    88,    89,    90,    90,    90,    90,
+      90,    90,    91,    91,    91,    91,    91,    91,    91,    92,
+      92,    93,    93,    93,    93,    93,    93,    94,    94,    94,
+      94,    94,    94,    95,    95,    96,    96,    97,    97,    98,
+      99,    99,   100,   100,   100,   101,   102,   103,   104,   105,
+     106,   107,   107,   107,   108,   109,   109,   109,   109,   109,
+     109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
+     109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
+     109,   109,   109,   109,   109,   109,   110,   110,   110,   110,
      110,   110,   110,   110,   110,   110,   110,   110,   110,   110,
-     110,   110,   110,   110,   110,   110,   110,   110,   110,   110,
-     110,   110,   110,   110,   110,   110,   111,   111,   111,   111,
-     111,   111,   111,   111,   111,   111,   111,   111,   111,   111,
-     112,   112,   113,   113,   114,   114,   114,   114,   114,   114,
-     115,   115,   116,   116,   117,   117,   117,   117,   119,   118,
-     118,   120,   118,   121,   118,   122,   122,   122,   122,   123,
-     124,   125,   125,   125
+     111,   111,   112,   112,   113,   113,   113,   113,   113,   113,
+     114,   114,   115,   115,   116,   116,   116,   116,   118,   117,
+     117,   119,   117,   120,   117,   121,   121,   121,   121,   122,
+     123,   124,   124,   124
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -779,47 +777,47 @@ static const yytype_int16 yydefgoto[] =
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -214
+#define YYPACT_NINF -215
 static const yytype_int16 yypact[] =
 {
-     263,   -63,  -214,  -214,    11,  -214,  -214,    11,    11,    11,
-     172,  -214,   -14,    15,   671,  -214,    31,    11,    61,    77,
-      47,    82,    84,    11,   703,    88,    11,    11,    89,    90,
-      11,    11,    11,     2,  -214,     3,  -214,  -214,  -214,    29,
-      38,   659,    11,   904,  -214,  -214,  -214,  -214,  -214,  -214,
-    -214,    32,    11,  -214,   904,   904,   904,   904,    27,    11,
-      11,  -214,  -214,    30,    11,  -214,    11,  -214,    80,  -214,
-     904,    24,  -214,  -214,   722,    98,  -214,   -38,    11,   -36,
-      78,  -214,  -214,   774,  -214,    24,  -214,  -214,    35,    -8,
-     800,  -214,    11,    -8,    -8,   852,  -214,   335,   659,    11,
-     659,    83,   878,   904,    11,    11,    11,    11,    11,    11,
+     263,   -39,  -215,  -215,    11,  -215,  -215,    11,    11,    11,
+     929,  -215,    15,    25,   674,  -215,    31,    11,   -26,    65,
+      44,    48,    53,    11,   706,    64,    11,    11,    68,    70,
+      11,    11,    11,     2,  -215,     3,  -215,  -215,  -215,    12,
+      22,   750,    11,   904,  -215,  -215,  -215,  -215,  -215,  -215,
+    -215,    16,    11,  -215,   904,   904,   904,   904,    17,    11,
+      11,  -215,  -215,    19,    11,  -215,    11,  -215,    73,  -215,
+     904,    24,  -215,  -215,   745,    89,  -215,   -34,    11,   -29,
+      69,  -215,  -215,   779,  -215,    24,  -215,  -215,    27,    -8,
+     804,  -215,    11,    -8,    -8,   854,  -215,   334,   750,    11,
+     750,    71,   879,   904,    11,    11,    11,    11,    11,    11,
       11,    11,    11,    11,    11,    11,    11,    11,    11,    11,
-     722,    11,     9,    27,   106,   904,   904,    11,  -214,  -214,
-     110,  -214,    11,    11,   748,    11,    11,  -214,  -214,    11,
-    -214,   113,    11,    11,  -214,    27,  -214,  -214,    52,   904,
-      53,   826,   -63,    11,  -214,   244,   244,   244,    -8,    -8,
-      -8,   904,   244,   244,   316,   -45,   -45,    -8,    -8,   904,
-     904,   904,  -214,  -214,   904,   120,  -214,   904,   904,    11,
-      11,   904,   904,   120,   904,  -214,   904,   904,   120,  -214,
-      -2,  -214,  -214,   613,   904,  -214,   -37,   904,   904,   -37,
-     -37,   474,   116,    11,   474,  -214,  -214,   142,    79,    79,
-      79,  -214,  -214,   138,    11,   904,    28,   -10,  -214,   147,
-    -214,  -214,  -214,   128,   904,  -214,   139,  -214,   148,  -214,
-    -214,   148,  -214,   659,  -214,   474,   474,   402,  -214,  -214,
-     474,  -214,   474,   148,   148,  -214,   659,   613,  -214,   130,
-     137,   160,   474,   157,   159,  -214,   163,   144,  -214,  -214,
-    -214,  -214,  -214,   164,   151,   162,   165,   -17,  -214,   613,
-    -214,   546,   154,  -214,  -214,  -214,   474,  -214,  -214,  -214,
-    -214,  -214
+     745,    11,   -47,    17,    90,   904,   904,    11,  -215,  -215,
+      94,  -215,    11,    11,   590,    11,    11,  -215,  -215,    11,
+    -215,    95,    11,    11,  -215,    17,  -215,  -215,    34,   904,
+      36,   829,   -39,    11,  -215,   244,   244,   244,    -8,    -8,
+      -8,   904,   244,   244,   315,   138,   138,    -8,    -8,   904,
+     904,   904,  -215,  -215,   904,   100,  -215,   904,   904,    11,
+      11,   904,   904,   100,   904,  -215,   904,   904,   100,  -215,
+      -6,  -215,  -215,   608,   904,  -215,   -59,   904,   904,   -59,
+     -59,   471,    78,    11,   471,  -215,  -215,   105,    41,    41,
+      41,  -215,  -215,   104,    11,   904,   -11,   -13,  -215,   113,
+    -215,  -215,  -215,    96,   904,  -215,   109,  -215,   110,  -215,
+    -215,   110,  -215,   750,  -215,   471,   471,   400,  -215,  -215,
+     471,  -215,   471,   110,   110,  -215,   750,   608,  -215,   112,
+     120,   144,   471,   139,   141,  -215,   142,   128,  -215,  -215,
+    -215,  -215,  -215,   147,   137,   148,   149,   -20,  -215,   608,
+    -215,   542,   143,  -215,  -215,  -215,   471,  -215,  -215,  -215,
+    -215,  -215
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -214,  -214,    10,    99,     4,  -186,     0,  -214,  -214,  -214,
-     -19,  -175,   -43,   -69,  -214,  -214,  -214,  -213,    -9,   -16,
-     -97,  -214,    40,     5,  -214,  -214,  -214,   177,   -12,  -214,
-    -214,  -214,  -214,  -214,  -109,  -123,  -214,   -46
+    -215,  -215,    10,    93,     4,  -179,     0,  -215,  -215,  -215,
+     -31,  -214,   -56,   -69,  -215,  -215,  -215,  -209,    -9,   -16,
+     -97,  -215,    40,     5,  -215,  -215,  -215,   167,   -12,  -215,
+    -215,  -215,  -215,  -215,  -133,  -102,  -215,   -51
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -829,210 +827,214 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -61
 static const yytype_int16 yytable[] =
 {
-      37,    60,    96,   -10,    35,    44,   132,   205,   135,   -51,
-     -51,    50,    86,   122,   123,   246,   229,   107,   108,    49,
-     109,   110,   202,     2,     3,     4,     5,    61,     6,   148,
-     246,   150,    51,    11,   116,   117,    62,   133,   230,   136,
-     118,   119,   203,    97,    54,    49,   145,    55,    56,    57,
-     207,    52,    73,    19,    70,   226,   248,    74,   110,   128,
-      66,   258,    68,    83,    70,   -51,    89,    90,    80,   248,
-      93,    94,    95,   140,   199,    26,   227,   118,   119,   200,
-      27,   102,   103,   277,    49,   -10,   221,   222,    30,    31,
-      77,    78,   120,   172,    32,   204,   121,    37,    79,    57,
-      57,    35,    44,    81,   125,    82,   126,    75,    76,    87,
-      91,    92,    98,    99,   121,    59,   127,   124,   134,   131,
-     175,   137,   141,   235,   236,   237,   152,   173,   240,   183,
-     242,   176,    57,   190,   185,   188,   189,   191,   102,   149,
-     151,   195,   252,   193,   155,   156,   157,   158,   159,   160,
+      37,    60,    96,   -10,    35,    44,   -51,   -51,   122,   123,
+     132,    50,    86,   229,   205,   135,   226,   248,   202,   246,
+      75,    76,    49,     2,     3,     4,     5,   207,     6,   148,
+     248,   150,    51,    11,   246,   230,   172,   227,   203,   121,
+     133,   145,    49,    97,    54,   136,    62,    55,    56,    57,
+     199,    52,    73,    19,    70,   200,    61,    74,   110,   128,
+      66,   -51,    68,    83,    70,    80,    89,    90,   258,    81,
+      93,    94,    95,   140,    82,    26,   118,   119,    77,    78,
+      27,   102,   103,    49,   -10,    87,    79,    30,    31,    91,
+     277,    92,   120,    32,    98,   204,    99,    37,    59,    57,
+      57,    35,    44,   121,   125,   124,   126,   221,   222,   127,
+     131,   173,   137,   141,   152,   176,   185,   189,   134,   191,
+     175,   195,   214,   235,   236,   237,   218,   219,   240,   183,
+     242,   223,    57,   190,   234,   188,   229,   238,   102,   149,
+     151,   241,   252,   193,   155,   156,   157,   158,   159,   160,
      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     214,   171,   192,   218,   250,   223,   219,   174,   234,   238,
-     276,   241,   177,   178,   229,   181,   182,   257,   259,   184,
-     261,   262,   186,   187,   264,   213,   265,   267,   216,   217,
-     266,   272,   273,   194,   274,   279,   147,   275,   231,   225,
-     255,    85,     0,     0,     0,     0,   208,   228,   239,   209,
-     210,     0,     0,     0,     0,   249,     0,     0,     0,   197,
-     198,   247,     0,     0,   253,     0,   254,   256,   -60,   -60,
-       0,     0,     0,   -60,   -60,   -60,   263,   -60,   -60,   -60,
-     -60,     0,   268,   215,   270,     0,     0,     0,   -60,     0,
-     269,   -60,   -60,     0,   224,    59,     0,   -60,   -60,     0,
+     259,   171,   192,   261,   250,   262,   264,   174,   265,   266,
+     276,   267,   177,   178,   272,   181,   182,   257,   273,   184,
+     274,   275,   186,   187,   279,   213,   231,   255,   216,   217,
+     147,    85,     0,   194,     0,     0,     0,     0,     0,   225,
+     107,   108,     0,   109,   110,     0,   208,   228,   239,   209,
+     210,     0,     0,     0,     0,   249,   116,   117,     0,   197,
+     198,   247,   118,   119,   253,     0,   254,   256,     0,     0,
+       0,     0,     0,     0,     0,     0,   263,     0,     0,     0,
+       0,     0,   268,   215,   270,     0,     0,     0,     0,     0,
+     269,     0,     0,     0,   224,     0,     0,     0,     0,     0,
      280,     0,   281,    -6,     1,     0,     0,     0,     0,     0,
        0,   278,     0,   102,     0,     2,     3,     4,     5,     0,
        6,     7,     8,     9,    10,    11,   102,     0,     0,     0,
        0,    12,     0,    13,    14,    15,     0,     0,    16,     0,
        0,     0,     0,    17,    18,    19,   107,   108,    20,   109,
-     110,     0,    21,    22,    23,    24,     0,     0,    25,     0,
-     113,   114,   115,   116,   117,     0,     0,    26,     0,   118,
-     119,     0,    27,     0,     0,    28,     0,    29,     0,     0,
-      30,    31,     0,     0,     0,    -6,    32,     2,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,    11,     0,     0,
-       0,     0,     0,    12,     0,    13,    14,    15,     0,     0,
-      16,     0,     0,     0,     0,    17,    18,    19,   107,   108,
-      20,   109,   110,     0,    21,    22,    23,    24,     0,     0,
-      25,     0,     0,   114,   115,   116,   117,     0,     0,    26,
-       0,   118,   119,     0,    27,     0,     0,    28,     0,    29,
-       0,     0,    30,    31,     2,     3,     4,     5,    32,     6,
-       7,     8,     9,    51,    11,     0,     0,     0,     0,   251,
+     110,     0,    21,    22,    23,    24,     0,     0,    25,   113,
+     114,   115,   116,   117,     0,     0,     0,    26,   118,   119,
+       0,     0,    27,     0,     0,    28,    29,     0,     0,    30,
+      31,     0,     0,     0,    -6,    32,     2,     3,     4,     5,
+       0,     6,     7,     8,     9,    10,    11,     0,     0,     0,
+       0,     0,    12,     0,    13,    14,    15,     0,     0,    16,
+       0,     0,     0,     0,    17,    18,    19,   107,   108,    20,
+     109,   110,     0,    21,    22,    23,    24,     0,     0,    25,
+       0,   114,   115,   116,   117,     0,     0,     0,    26,   118,
+     119,     0,     0,    27,     0,     0,    28,    29,     0,     0,
+      30,    31,     2,     3,     4,     5,    32,     6,     7,     8,
+       9,    51,    11,     0,     0,     0,     0,   251,    12,     0,
+      13,    14,    15,     0,     0,     0,     0,     0,     0,     0,
+      17,    18,    19,     0,     0,    20,     0,     0,     0,     0,
+       0,    23,    24,     0,     0,    25,     0,     0,     0,     0,
+       0,     0,     0,     0,    26,     0,     0,     0,     0,    27,
+       0,     0,     0,    29,     0,     0,    30,    31,     0,     0,
+       0,    49,    32,     2,     3,     4,     5,     0,     6,     7,
+       8,     9,    51,    11,     0,     0,     0,     0,     0,    12,
+       0,    13,    14,    15,     0,     0,     0,     0,     0,     0,
+       0,    17,    18,    19,     0,     0,    20,     0,     0,     0,
+       0,     0,    23,    24,     0,     0,    25,     0,     0,     0,
+       0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
+      27,     0,     0,     0,    29,     0,     0,    30,    31,     0,
+       0,     0,    49,    32,     2,     3,     4,     5,     0,     6,
+       7,     8,     9,    51,    11,     0,     0,     0,     0,     0,
       12,     0,    13,    14,    15,     0,     0,     0,     0,     0,
        0,     0,    17,    18,    19,     0,     0,    20,     0,     0,
        0,     0,     0,    23,    24,     0,     0,    25,     0,     0,
        0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
-       0,    27,     0,     0,     0,     0,    29,     0,     0,    30,
-      31,     0,     0,     0,    49,    32,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    51,    11,     0,     0,     0,
-       0,     0,    12,     0,    13,    14,    15,     0,     0,     0,
-       0,     0,     0,     0,    17,    18,    19,     0,     0,    20,
-       0,     0,     0,     0,     0,    23,    24,     0,     0,    25,
-       0,     0,     0,     0,     0,     0,     0,     0,    26,     0,
-       0,     0,     0,    27,     0,     0,     0,     0,    29,     0,
-       0,    30,    31,     0,     0,     0,    49,    32,     2,     3,
-       4,     5,     0,     6,     7,     8,     9,    51,    11,     0,
-       0,     0,     0,     0,    12,     0,    13,    14,    15,     0,
-       0,     0,     0,     0,     0,     0,    17,    18,    19,     0,
-       0,    20,     0,     0,     0,     0,     0,    23,    24,     0,
-       0,    25,     0,     0,     0,     0,     0,     0,     0,     0,
-      26,     0,     0,     0,     0,    27,     0,     0,     0,     0,
-      29,     0,     0,    30,    31,     2,     3,     4,     5,    32,
-       6,     7,     8,     9,    51,    11,     0,     0,     0,     0,
-       0,    12,     0,    13,    14,     0,     0,     0,     0,     0,
-       0,     0,     0,    17,     0,    19,     0,     0,     0,     0,
-       0,     0,     0,     0,    23,    24,     0,     0,    25,     0,
-       0,     2,     3,     4,     5,     0,     6,    26,     0,     0,
-      51,    11,    27,     2,     3,     4,     5,    29,     6,     0,
-      30,    31,    51,    11,     0,     0,    32,     0,     0,    52,
-      64,    19,     0,     0,     0,    65,     0,    66,    67,    68,
-      69,    52,     0,    19,     0,     2,     3,     4,     5,     0,
-       6,     0,     0,    26,    51,    11,     0,     0,    27,     0,
-       0,     0,    64,     0,     0,    26,    30,    31,     0,    66,
-      27,    68,   100,    52,     0,    19,     0,     0,    30,    31,
-       0,     0,     0,     0,    32,   130,    84,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    26,     0,     0,
-       0,     0,    27,     0,     0,     0,     0,     0,   104,   105,
-      30,    31,     0,   106,   107,   108,    32,   109,   110,   111,
-     112,     0,   179,     0,     0,     0,     0,     0,   113,   114,
-     115,   116,   117,     0,   104,   105,     0,   118,   119,   106,
-     107,   108,     0,   109,   110,   111,   112,     0,     0,     0,
-     139,     0,     0,   180,   113,   114,   115,   116,   117,     0,
+       0,    27,     0,     0,     0,    29,     0,     0,    30,    31,
+       2,     3,     4,     5,    32,     6,     7,     8,     9,    51,
+      11,     0,     0,     0,   179,     0,    12,     0,    13,    14,
+       0,     0,     0,     0,     0,     0,   104,   105,    17,     0,
+      19,   106,   107,   108,     0,   109,   110,   111,   112,    23,
+      24,     0,     0,    25,   180,   113,   114,   115,   116,   117,
+       0,     0,    26,     0,   118,   119,     0,    27,     0,     0,
+       0,    29,     0,     0,    30,    31,     2,     3,     4,     5,
+      32,     6,     0,     0,     0,    51,    11,     0,     0,     0,
+       0,     0,     0,    64,     0,     0,     0,     0,    65,     0,
+      66,    67,    68,    69,    52,     0,    19,     0,     2,     3,
+       4,     5,     0,     6,     0,     0,     0,    51,    11,     0,
+       0,     0,     0,     0,     0,    64,     0,     0,    26,     0,
+       0,     0,    66,    27,    68,     0,    52,     0,    19,     0,
+      30,    31,     0,     0,     0,     0,    32,     0,     0,    84,
+       0,     0,     2,     3,     4,     5,     0,     6,     0,     0,
+      26,    51,    11,     0,     0,    27,     0,     0,   130,     0,
+       0,     0,    30,    31,     0,     0,     0,     0,    32,     0,
+      52,     0,    19,     0,     0,     0,     0,     0,     0,     0,
+       0,   104,   105,     0,     0,     0,   106,   107,   108,     0,
+     109,   110,   111,   112,    26,     0,     0,     0,     0,    27,
+     113,   114,   115,   116,   117,   139,    30,    31,     0,   118,
+     119,     0,   100,     0,     0,   104,   105,     0,     0,     0,
+     106,   107,   108,     0,   109,   110,   111,   112,     0,     0,
+       0,     0,     0,     0,   113,   114,   115,   116,   117,     0,
      104,   105,     0,   118,   119,   106,   107,   108,     0,   109,
-     110,   111,   112,     0,     0,     0,     0,     0,     0,     0,
-     113,   114,   115,   116,   117,     0,   104,   105,     0,   118,
-     119,   106,   107,   108,     0,   109,   110,   111,   112,     0,
-     142,   143,     0,     0,     0,     0,   113,   114,   115,   116,
-     117,     0,   104,   105,     0,   118,   119,   106,   107,   108,
-       0,   109,   110,   111,   112,     0,     0,     0,     0,     0,
-       0,   153,   113,   114,   115,   116,   117,     0,   104,   105,
-     146,   118,   119,   106,   107,   108,     0,   109,   110,   111,
-     112,     0,     0,     0,     0,     0,     0,     0,   113,   114,
-     115,   116,   117,     0,   104,   105,   146,   118,   119,   106,
-     107,   108,     0,   109,   110,   111,   112,     0,     0,     0,
+     110,   111,   112,     0,   142,   143,     0,     0,     0,   113,
+     114,   115,   116,   117,     0,   104,   105,     0,   118,   119,
+     106,   107,   108,     0,   109,   110,   111,   112,     0,     0,
+       0,     0,     0,   153,   113,   114,   115,   116,   117,     0,
+     104,   105,   146,   118,   119,   106,   107,   108,     0,   109,
+     110,   111,   112,     0,     0,     0,     0,     0,     0,   113,
+     114,   115,   116,   117,     0,   104,   105,   146,   118,   119,
+     106,   107,   108,     0,   109,   110,   111,   112,     0,     0,
        0,     0,     0,   153,   113,   114,   115,   116,   117,     0,
      104,   105,     0,   118,   119,   106,   107,   108,     0,   109,
-     110,   111,   112,     0,     0,     0,     0,     0,     0,     0,
-     113,   114,   115,   116,   117,     0,     0,     0,     0,   118,
-     119
+     110,   111,   112,     0,     0,     0,     0,     0,     0,   113,
+     114,   115,   116,   117,     0,   -60,   -60,     0,   118,   119,
+     -60,   -60,   -60,     0,   -60,   -60,   -60,   -60,     0,     0,
+       0,     0,     0,     0,   -60,     0,     0,   -60,   -60,     0,
+       0,    59,     0,   -60,   -60
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    10,     0,     0,     0,     0,    44,   193,    44,    26,
-      27,     1,    24,    59,    60,   228,    26,    62,    63,    82,
-      65,    66,    24,    12,    13,    14,    15,    41,    17,    98,
-     243,   100,    21,    22,    79,    80,    21,    75,    48,    75,
-      85,    86,    44,    33,     4,    82,    92,     7,     8,     9,
-      87,    40,    21,    42,    14,    27,   231,    17,    66,    71,
-      36,   247,    38,    23,    24,    82,    26,    27,    21,   244,
-      30,    31,    32,    85,   183,    64,    48,    85,    86,   188,
-      69,    41,    42,   269,    82,    82,   209,   210,    77,    78,
-      13,    14,    52,    84,    83,   192,    87,    97,    21,    59,
-      60,    97,    97,    21,    64,    21,    66,    46,    47,    21,
-      21,    21,    83,    75,    87,    83,    36,    87,    78,    21,
-     129,    43,    87,   220,   221,   222,    43,    21,   225,   138,
-     227,    21,    92,   149,    21,   144,    84,    84,    98,    99,
-     100,    21,   239,   152,   104,   105,   106,   107,   108,   109,
+       0,    10,     0,     0,     0,     0,    26,    27,    59,    60,
+      44,     1,    24,    26,   193,    44,    27,   231,    24,   228,
+      46,    47,    81,    12,    13,    14,    15,    86,    17,    98,
+     244,   100,    21,    22,   243,    48,    83,    48,    44,    86,
+      74,    92,    81,    33,     4,    74,    21,     7,     8,     9,
+     183,    40,    21,    42,    14,   188,    41,    17,    66,    71,
+      36,    81,    38,    23,    24,    21,    26,    27,   247,    21,
+      30,    31,    32,    85,    21,    64,    84,    85,    13,    14,
+      69,    41,    42,    81,    81,    21,    21,    76,    77,    21,
+     269,    21,    52,    82,    82,   192,    74,    97,    82,    59,
+      60,    97,    97,    86,    64,    86,    66,   209,   210,    36,
+      21,    21,    43,    86,    43,    21,    21,    83,    78,    83,
+     129,    21,    44,   220,   221,   222,    21,    86,   225,   138,
+     227,    27,    92,   149,    21,   144,    26,    41,    98,    99,
+     100,    32,   239,   152,   104,   105,   106,   107,   108,   109,
      110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-      44,   121,   152,    21,   233,    27,    87,   127,    21,    41,
-     267,    32,   132,   133,    26,   135,   136,   246,    48,   139,
-      43,    21,   142,   143,    27,   201,    27,    43,   204,   205,
-      27,    27,    41,   153,    32,    41,    97,    32,   217,   215,
-     243,    24,    -1,    -1,    -1,    -1,   196,   216,   224,   199,
-     200,    -1,    -1,    -1,    -1,   231,    -1,    -1,    -1,   179,
-     180,   230,    -1,    -1,   240,    -1,   242,   243,    56,    57,
-      -1,    -1,    -1,    61,    62,    63,   252,    65,    66,    67,
-      68,    -1,   258,   203,   260,    -1,    -1,    -1,    76,    -1,
-     259,    79,    80,    -1,   214,    83,    -1,    85,    86,    -1,
+      48,   121,   152,    43,   233,    21,    27,   127,    27,    27,
+     267,    43,   132,   133,    27,   135,   136,   246,    41,   139,
+      32,    32,   142,   143,    41,   201,   217,   243,   204,   205,
+      97,    24,    -1,   153,    -1,    -1,    -1,    -1,    -1,   215,
+      62,    63,    -1,    65,    66,    -1,   196,   216,   224,   199,
+     200,    -1,    -1,    -1,    -1,   231,    78,    79,    -1,   179,
+     180,   230,    84,    85,   240,    -1,   242,   243,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   252,    -1,    -1,    -1,
+      -1,    -1,   258,   203,   260,    -1,    -1,    -1,    -1,    -1,
+     259,    -1,    -1,    -1,   214,    -1,    -1,    -1,    -1,    -1,
      276,    -1,   278,     0,     1,    -1,    -1,    -1,    -1,    -1,
       -1,   271,    -1,   233,    -1,    12,    13,    14,    15,    -1,
       17,    18,    19,    20,    21,    22,   246,    -1,    -1,    -1,
       -1,    28,    -1,    30,    31,    32,    -1,    -1,    35,    -1,
       -1,    -1,    -1,    40,    41,    42,    62,    63,    45,    65,
-      66,    -1,    49,    50,    51,    52,    -1,    -1,    55,    -1,
-      76,    77,    78,    79,    80,    -1,    -1,    64,    -1,    85,
-      86,    -1,    69,    -1,    -1,    72,    -1,    74,    -1,    -1,
-      77,    78,    -1,    -1,    -1,    82,    83,    12,    13,    14,
-      15,    -1,    17,    18,    19,    20,    21,    22,    -1,    -1,
-      -1,    -1,    -1,    28,    -1,    30,    31,    32,    -1,    -1,
-      35,    -1,    -1,    -1,    -1,    40,    41,    42,    62,    63,
-      45,    65,    66,    -1,    49,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    77,    78,    79,    80,    -1,    -1,    64,
-      -1,    85,    86,    -1,    69,    -1,    -1,    72,    -1,    74,
-      -1,    -1,    77,    78,    12,    13,    14,    15,    83,    17,
-      18,    19,    20,    21,    22,    -1,    -1,    -1,    -1,    27,
+      66,    -1,    49,    50,    51,    52,    -1,    -1,    55,    75,
+      76,    77,    78,    79,    -1,    -1,    -1,    64,    84,    85,
+      -1,    -1,    69,    -1,    -1,    72,    73,    -1,    -1,    76,
+      77,    -1,    -1,    -1,    81,    82,    12,    13,    14,    15,
+      -1,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,
+      -1,    -1,    28,    -1,    30,    31,    32,    -1,    -1,    35,
+      -1,    -1,    -1,    -1,    40,    41,    42,    62,    63,    45,
+      65,    66,    -1,    49,    50,    51,    52,    -1,    -1,    55,
+      -1,    76,    77,    78,    79,    -1,    -1,    -1,    64,    84,
+      85,    -1,    -1,    69,    -1,    -1,    72,    73,    -1,    -1,
+      76,    77,    12,    13,    14,    15,    82,    17,    18,    19,
+      20,    21,    22,    -1,    -1,    -1,    -1,    27,    28,    -1,
+      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      40,    41,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,
+      -1,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    69,
+      -1,    -1,    -1,    73,    -1,    -1,    76,    77,    -1,    -1,
+      -1,    81,    82,    12,    13,    14,    15,    -1,    17,    18,
+      19,    20,    21,    22,    -1,    -1,    -1,    -1,    -1,    28,
+      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    40,    41,    42,    -1,    -1,    45,    -1,    -1,    -1,
+      -1,    -1,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,
+      69,    -1,    -1,    -1,    73,    -1,    -1,    76,    77,    -1,
+      -1,    -1,    81,    82,    12,    13,    14,    15,    -1,    17,
+      18,    19,    20,    21,    22,    -1,    -1,    -1,    -1,    -1,
       28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    40,    41,    42,    -1,    -1,    45,    -1,    -1,
       -1,    -1,    -1,    51,    52,    -1,    -1,    55,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,
-      -1,    69,    -1,    -1,    -1,    -1,    74,    -1,    -1,    77,
-      78,    -1,    -1,    -1,    82,    83,    12,    13,    14,    15,
-      -1,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,
-      -1,    -1,    28,    -1,    30,    31,    32,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    40,    41,    42,    -1,    -1,    45,
-      -1,    -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    55,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,
-      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    74,    -1,
-      -1,    77,    78,    -1,    -1,    -1,    82,    83,    12,    13,
-      14,    15,    -1,    17,    18,    19,    20,    21,    22,    -1,
-      -1,    -1,    -1,    -1,    28,    -1,    30,    31,    32,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    40,    41,    42,    -1,
-      -1,    45,    -1,    -1,    -1,    -1,    -1,    51,    52,    -1,
-      -1,    55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      64,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
-      74,    -1,    -1,    77,    78,    12,    13,    14,    15,    83,
-      17,    18,    19,    20,    21,    22,    -1,    -1,    -1,    -1,
-      -1,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    40,    -1,    42,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    55,    -1,
-      -1,    12,    13,    14,    15,    -1,    17,    64,    -1,    -1,
-      21,    22,    69,    12,    13,    14,    15,    74,    17,    -1,
-      77,    78,    21,    22,    -1,    -1,    83,    -1,    -1,    40,
-      29,    42,    -1,    -1,    -1,    34,    -1,    36,    37,    38,
-      39,    40,    -1,    42,    -1,    12,    13,    14,    15,    -1,
-      17,    -1,    -1,    64,    21,    22,    -1,    -1,    69,    -1,
-      -1,    -1,    29,    -1,    -1,    64,    77,    78,    -1,    36,
-      69,    38,    83,    40,    -1,    42,    -1,    -1,    77,    78,
-      -1,    -1,    -1,    -1,    83,    33,    53,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,
-      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    56,    57,
-      77,    78,    -1,    61,    62,    63,    83,    65,    66,    67,
-      68,    -1,    44,    -1,    -1,    -1,    -1,    -1,    76,    77,
-      78,    79,    80,    -1,    56,    57,    -1,    85,    86,    61,
-      62,    63,    -1,    65,    66,    67,    68,    -1,    -1,    -1,
-      46,    -1,    -1,    75,    76,    77,    78,    79,    80,    -1,
-      56,    57,    -1,    85,    86,    61,    62,    63,    -1,    65,
-      66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    77,    78,    79,    80,    -1,    56,    57,    -1,    85,
-      86,    61,    62,    63,    -1,    65,    66,    67,    68,    -1,
-      70,    71,    -1,    -1,    -1,    -1,    76,    77,    78,    79,
-      80,    -1,    56,    57,    -1,    85,    86,    61,    62,    63,
-      -1,    65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,
-      -1,    75,    76,    77,    78,    79,    80,    -1,    56,    57,
-      84,    85,    86,    61,    62,    63,    -1,    65,    66,    67,
-      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
-      78,    79,    80,    -1,    56,    57,    84,    85,    86,    61,
-      62,    63,    -1,    65,    66,    67,    68,    -1,    -1,    -1,
-      -1,    -1,    -1,    75,    76,    77,    78,    79,    80,    -1,
-      56,    57,    -1,    85,    86,    61,    62,    63,    -1,    65,
-      66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,    85,
-      86
+      -1,    69,    -1,    -1,    -1,    73,    -1,    -1,    76,    77,
+      12,    13,    14,    15,    82,    17,    18,    19,    20,    21,
+      22,    -1,    -1,    -1,    44,    -1,    28,    -1,    30,    31,
+      -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    40,    -1,
+      42,    61,    62,    63,    -1,    65,    66,    67,    68,    51,
+      52,    -1,    -1,    55,    74,    75,    76,    77,    78,    79,
+      -1,    -1,    64,    -1,    84,    85,    -1,    69,    -1,    -1,
+      -1,    73,    -1,    -1,    76,    77,    12,    13,    14,    15,
+      82,    17,    -1,    -1,    -1,    21,    22,    -1,    -1,    -1,
+      -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,    34,    -1,
+      36,    37,    38,    39,    40,    -1,    42,    -1,    12,    13,
+      14,    15,    -1,    17,    -1,    -1,    -1,    21,    22,    -1,
+      -1,    -1,    -1,    -1,    -1,    29,    -1,    -1,    64,    -1,
+      -1,    -1,    36,    69,    38,    -1,    40,    -1,    42,    -1,
+      76,    77,    -1,    -1,    -1,    -1,    82,    -1,    -1,    53,
+      -1,    -1,    12,    13,    14,    15,    -1,    17,    -1,    -1,
+      64,    21,    22,    -1,    -1,    69,    -1,    -1,    33,    -1,
+      -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    82,    -1,
+      40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    56,    57,    -1,    -1,    -1,    61,    62,    63,    -1,
+      65,    66,    67,    68,    64,    -1,    -1,    -1,    -1,    69,
+      75,    76,    77,    78,    79,    46,    76,    77,    -1,    84,
+      85,    -1,    82,    -1,    -1,    56,    57,    -1,    -1,    -1,
+      61,    62,    63,    -1,    65,    66,    67,    68,    -1,    -1,
+      -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,
+      56,    57,    -1,    84,    85,    61,    62,    63,    -1,    65,
+      66,    67,    68,    -1,    70,    71,    -1,    -1,    -1,    75,
+      76,    77,    78,    79,    -1,    56,    57,    -1,    84,    85,
+      61,    62,    63,    -1,    65,    66,    67,    68,    -1,    -1,
+      -1,    -1,    -1,    74,    75,    76,    77,    78,    79,    -1,
+      56,    57,    83,    84,    85,    61,    62,    63,    -1,    65,
+      66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,
+      76,    77,    78,    79,    -1,    56,    57,    83,    84,    85,
+      61,    62,    63,    -1,    65,    66,    67,    68,    -1,    -1,
+      -1,    -1,    -1,    74,    75,    76,    77,    78,    79,    -1,
+      56,    57,    -1,    84,    85,    61,    62,    63,    -1,    65,
+      66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,
+      76,    77,    78,    79,    -1,    56,    57,    -1,    84,    85,
+      61,    62,    63,    -1,    65,    66,    67,    68,    -1,    -1,
+      -1,    -1,    -1,    -1,    75,    -1,    -1,    78,    79,    -1,
+      -1,    82,    -1,    84,    85
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1041,33 +1043,33 @@ static const yytype_uint8 yystos[] =
 {
        0,     1,    12,    13,    14,    15,    17,    18,    19,    20,
       21,    22,    28,    30,    31,    32,    35,    40,    41,    42,
-      45,    49,    50,    51,    52,    55,    64,    69,    72,    74,
-      77,    78,    83,    89,    91,    92,    93,    94,    95,   102,
-     103,   104,   109,   110,   111,   114,   117,   118,   124,    82,
-      90,    21,    40,    92,   110,   110,   110,   110,   125,    83,
-     106,    41,    21,   112,    29,    34,    36,    37,    38,    39,
-     110,   115,   116,    21,   110,    46,    47,    13,    14,    21,
-      21,    21,    21,   110,    53,   115,   116,    21,   113,   110,
-     110,    21,    21,   110,   110,   110,     0,    90,    83,    75,
-      83,   101,   110,   110,    56,    57,    61,    62,    63,    65,
-      66,    67,    68,    76,    77,    78,    79,    80,    85,    86,
-     110,    87,   125,   125,    87,   110,   110,    36,   116,   119,
-      33,    21,    44,    75,   110,    44,    75,    43,   120,    46,
-     116,    87,    70,    71,   121,   125,    84,    91,   101,   110,
-     101,   110,    43,    75,   107,   110,   110,   110,   110,   110,
-     110,   110,   110,   110,   110,   110,   110,   110,   110,   110,
-     110,   110,    84,    21,   110,   106,    21,   110,   110,    44,
-      75,   110,   110,   106,   110,    21,   110,   110,   106,    84,
-     107,    84,    90,   106,   110,    21,   122,   110,   110,   122,
-     122,   108,    24,    44,   108,    93,   111,    87,    90,    90,
-      90,    90,    94,   107,    44,   110,   107,   107,    21,    87,
-     123,   123,   123,    27,   110,   107,    27,    48,   106,    26,
-      48,    98,    99,   105,    21,   108,   108,   108,    41,   107,
-     108,    32,   108,    97,    98,   100,   105,   106,    99,   107,
-     101,    27,   108,   107,   107,   100,   107,   101,    93,    48,
-      96,    43,    21,   107,    27,    27,    27,    43,   107,   106,
-     107,   106,    27,    41,    32,    32,   108,    93,    94,    41,
-     107,   107
+      45,    49,    50,    51,    52,    55,    64,    69,    72,    73,
+      76,    77,    82,    88,    90,    91,    92,    93,    94,   101,
+     102,   103,   108,   109,   110,   113,   116,   117,   123,    81,
+      89,    21,    40,    91,   109,   109,   109,   109,   124,    82,
+     105,    41,    21,   111,    29,    34,    36,    37,    38,    39,
+     109,   114,   115,    21,   109,    46,    47,    13,    14,    21,
+      21,    21,    21,   109,    53,   114,   115,    21,   112,   109,
+     109,    21,    21,   109,   109,   109,     0,    89,    82,    74,
+      82,   100,   109,   109,    56,    57,    61,    62,    63,    65,
+      66,    67,    68,    75,    76,    77,    78,    79,    84,    85,
+     109,    86,   124,   124,    86,   109,   109,    36,   115,   118,
+      33,    21,    44,    74,   109,    44,    74,    43,   119,    46,
+     115,    86,    70,    71,   120,   124,    83,    90,   100,   109,
+     100,   109,    43,    74,   106,   109,   109,   109,   109,   109,
+     109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
+     109,   109,    83,    21,   109,   105,    21,   109,   109,    44,
+      74,   109,   109,   105,   109,    21,   109,   109,   105,    83,
+     106,    83,    89,   105,   109,    21,   121,   109,   109,   121,
+     121,   107,    24,    44,   107,    92,   110,    86,    89,    89,
+      89,    89,    93,   106,    44,   109,   106,   106,    21,    86,
+     122,   122,   122,    27,   109,   106,    27,    48,   105,    26,
+      48,    97,    98,   104,    21,   107,   107,   107,    41,   106,
+     107,    32,   107,    96,    97,    99,   104,   105,    98,   106,
+     100,    27,   107,   106,   106,    99,   106,   100,    92,    48,
+      95,    43,    21,   106,    27,    27,    27,    43,   106,   105,
+     106,   105,    27,    41,    32,    32,   107,    92,    93,    41,
+     106,   106
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2626,7 +2628,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 2630 "engines/director/lingo/lingo-gr.cpp"
+#line 2632 "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 a580125..34c0598e 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -109,8 +109,7 @@
      tINTERSECTS = 325,
      tWITHIN = 326,
      tON = 327,
-     tME = 328,
-     tSOUND = 329
+     tSOUND = 328
    };
 #endif
 /* Tokens.  */
@@ -184,8 +183,7 @@
 #define tINTERSECTS 325
 #define tWITHIN 326
 #define tON 327
-#define tME 328
-#define tSOUND 329
+#define tSOUND 328
 
 
 
@@ -203,7 +201,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 1529 of yacc.c.  */
-#line 207 "engines/director/lingo/lingo-gr.hpp"
+#line 205 "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 3ad87e1..b10ef75 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -89,7 +89,7 @@ void yyerror(const char *s) {
 %token tGE tLE tGT tLT tEQ tNEQ tAND tOR tNOT tMOD
 %token tCONCAT tCONTAINS tSTARTS
 %token tSPRITE tINTERSECTS tWITHIN
-%token tON tME tSOUND
+%token tON tSOUND
 
 %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 77ca20a..e1f861f 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 62
-#define YY_END_OF_BUFFER 63
+#define YY_NUM_RULES 61
+#define YY_END_OF_BUFFER 62
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -375,29 +375,29 @@ struct yy_trans_info
 	};
 static yyconst flex_int16_t yy_accept[211] =
     {   0,
-        0,    0,   63,   61,    3,   59,   59,   61,   61,   58,
-       58,   58,   57,   58,   58,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,    2,    2,    3,   59,    0,    0,    0,    0,
-        0,   60,   54,    1,   56,   57,   53,   51,   52,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   18,
-        8,   55,   55,   55,   24,   55,   55,   55,   30,   31,
-       55,   33,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   45,   55,   55,    2,    2,    0,    1,   56,    4,
-       55,   55,   55,   55,   12,   55,   55,   55,   55,    0,
-
-       55,   55,   55,   55,   55,   26,   55,   55,   29,   55,
-       55,   55,   36,   55,   38,   55,   55,   55,   55,   55,
-       55,   55,    0,   55,    6,    7,   11,   14,   55,   55,
-       55,    0,   55,   55,   21,   22,   55,   55,   55,   28,
-       32,   34,   55,   55,   55,   55,   55,    0,   44,   49,
-       55,   47,   10,   55,   55,   15,   55,   17,   55,   55,
-       23,   55,   27,   55,   55,   39,   55,   55,   43,   43,
-       50,   55,    0,   55,   55,   16,   55,   55,   25,   55,
-       37,   46,   40,    0,   43,   48,    0,   55,   13,   55,
-       55,   55,    0,   43,    9,    5,   19,   55,   35,    0,
-
-       43,   55,    0,    0,   20,   42,    0,    0,   41,    0
+        0,    0,   62,   60,    3,   58,   58,   60,   60,   57,
+       57,   57,   56,   57,   57,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,    2,    2,    3,   58,    0,    0,    0,    0,
+        0,   59,   53,    1,   55,   56,   52,   50,   51,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   18,
+        8,   54,   54,   54,   54,   54,   54,   54,   29,   30,
+       54,   32,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   44,   54,   54,    2,    2,    0,    1,   55,    4,
+       54,   54,   54,   54,   12,   54,   54,   54,   54,    0,
+
+       54,   54,   54,   54,   54,   25,   54,   54,   28,   54,
+       54,   54,   35,   54,   37,   54,   54,   54,   54,   54,
+       54,   54,    0,   54,    6,    7,   11,   14,   54,   54,
+       54,    0,   54,   54,   21,   22,   54,   54,   54,   27,
+       31,   33,   54,   54,   54,   54,   54,    0,   43,   48,
+       54,   46,   10,   54,   54,   15,   54,   17,   54,   54,
+       23,   54,   26,   54,   54,   38,   54,   54,   42,   42,
+       49,   54,    0,   54,   54,   16,   54,   54,   24,   54,
+       36,   45,   39,    0,   42,   47,    0,   54,   13,   54,
+       54,   54,    0,   42,    9,    5,   19,   54,   34,    0,
+
+       42,   54,    0,    0,   20,   41,    0,    0,   40,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -1098,91 +1098,86 @@ YY_RULE_SETUP
 case 24:
 YY_RULE_SETUP
 #line 95 "engines/director/lingo/lingo-lex.l"
-{ count(); return tME; }
+{ count(); return tMETHOD; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 96 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMETHOD; }
+{ count(); return tMOD; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 97 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMOD; }
+{ count(); return tMOVIE; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 98 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMOVIE; }
+{ count(); return tNEXT; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 99 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEXT; }
+{ count(); return tNOT; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 100 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNOT; }
+{ count(); return tOF; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 101 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOF; }
+{ count(); return tON; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 102 "engines/director/lingo/lingo-lex.l"
-{ count(); return tON; }
+{ count(); return tOPEN; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 103 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOPEN; }
+{ count(); return tOR; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 104 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOR; }
+{ count(); return tPLAY; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 105 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPLAY; }
+{ count(); return tPREVIOUS; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 106 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPREVIOUS; }
+{ count(); return tPUT; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 107 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPUT; }
+{ count(); return tREPEAT; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 108 "engines/director/lingo/lingo-lex.l"
-{ count(); return tREPEAT; }
+{ count(); return tSET; }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 109 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSET; }
+{ count(); return tSOUND; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 110 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSOUND; }
+{ count(); return tSTARTS; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 111 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSTARTS; }
-	YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 112 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1192,9 +1187,9 @@ YY_RULE_SETUP
 		return THEENTITYWITHID;
 	}
 	YY_BREAK
-case 42:
+case 41:
 YY_RULE_SETUP
-#line 120 "engines/director/lingo/lingo-lex.l"
+#line 119 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1236,9 +1231,9 @@ YY_RULE_SETUP
 		warning("Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
-case 43:
+case 42:
 YY_RULE_SETUP
-#line 160 "engines/director/lingo/lingo-lex.l"
+#line 159 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1259,64 +1254,64 @@ YY_RULE_SETUP
 		warning("Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 178 "engines/director/lingo/lingo-lex.l"
+{ count(); return tTHEN; }
+	YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 179 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTHEN; }
+{ count(); return tTO; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 180 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTO; }
+{ count(); return tSPRITE; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 181 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSPRITE; }
+{ count(); return tWITH; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 182 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITH; }
+{ count(); return tWITHIN; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 183 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITHIN; }
+{ count(); return tWHEN; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 184 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHEN; }
+{ count(); return tWHILE; }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 185 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHILE; }
+#line 186 "engines/director/lingo/lingo-lex.l"
+{ count(); return tNEQ; }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 187 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEQ; }
+{ count(); return tGE; }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 188 "engines/director/lingo/lingo-lex.l"
-{ count(); return tGE; }
+{ count(); return tLE; }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 189 "engines/director/lingo/lingo-lex.l"
-{ count(); return tLE; }
-	YY_BREAK
-case 54:
-YY_RULE_SETUP
-#line 190 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
-case 55:
+case 54:
 YY_RULE_SETUP
-#line 192 "engines/director/lingo/lingo-lex.l"
+#line 191 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1344,43 +1339,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 217 "engines/director/lingo/lingo-lex.l"
+{ count(); yylval.f = atof(yytext); return FLOAT; }
+	YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 218 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.f = atof(yytext); return FLOAT; }
+{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 219 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
+{ count(); return *yytext; }
 	YY_BREAK
 case 58:
+/* rule 58 can match eol */
 YY_RULE_SETUP
 #line 220 "engines/director/lingo/lingo-lex.l"
-{ count(); return *yytext; }
+{ return '\n'; }
 	YY_BREAK
 case 59:
-/* rule 59 can match eol */
 YY_RULE_SETUP
 #line 221 "engines/director/lingo/lingo-lex.l"
-{ return '\n'; }
+{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 222 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
-	YY_BREAK
-case 61:
-YY_RULE_SETUP
-#line 223 "engines/director/lingo/lingo-lex.l"
 
 	YY_BREAK
-case 62:
+case 61:
 YY_RULE_SETUP
-#line 225 "engines/director/lingo/lingo-lex.l"
+#line 224 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1384 "engines/director/lingo/lingo-lex.cpp"
+#line 1379 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2380,7 +2375,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 225 "engines/director/lingo/lingo-lex.l"
+#line 224 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 294cc66..aa0aa7e 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -92,7 +92,6 @@ whitespace [\t ]
 (?i:into)			{ count(); return tINTO; }
 (?i:loop)			{ count(); return tLOOP; }
 (?i:macro)			{ count(); return tMACRO; }
-(?i:me)				{ count(); return tME; }
 (?i:method)			{ count(); return tMETHOD; }
 (?i:mod)			{ count(); return tMOD; }
 (?i:movie)			{ count(); return tMOVIE; }


Commit: 83c4cd19f0d964971991c073815832e1403fc025
    https://github.com/scummvm/scummvm/commit/83c4cd19f0d964971991c073815832e1403fc025
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-01-09T18:59:05+01:00

Commit Message:
DIRECTOR: Lingo: Allow 'me' as an argument to the handlers

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 787f7e0..d4b25c7 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -496,16 +496,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  96
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1014
+#define YYLAST   1029
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  87
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  38
+#define YYNNTS  39
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  133
+#define YYNRULES  134
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  282
+#define YYNSTATES  283
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -569,15 +569,15 @@ static const yytype_uint16 yyprhs[] =
      353,   355,   358,   361,   364,   367,   369,   372,   377,   380,
      384,   386,   390,   392,   396,   399,   402,   405,   408,   412,
      415,   418,   420,   424,   427,   430,   433,   437,   440,   441,
-     450,   453,   454,   463,   464,   475,   476,   478,   482,   487,
-     488,   492,   493,   495
+     450,   453,   454,   463,   464,   465,   477,   478,   480,   484,
+     489,   490,   494,   495,   497
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
       88,     0,    -1,    88,    89,    90,    -1,    90,    -1,     1,
-      89,    -1,    81,    -1,    -1,   117,    -1,   110,    -1,   123,
+      89,    -1,    81,    -1,    -1,   117,    -1,   110,    -1,   124,
       -1,    91,    -1,    93,    -1,    40,   109,    33,    21,    -1,
       42,    21,    74,   109,    -1,    42,    13,    74,   109,    -1,
       42,    14,   109,    74,   109,    -1,    42,    21,    44,   109,
@@ -600,7 +600,7 @@ static const yytype_int8 yyrhs[] =
       41,    47,    -1,    41,    46,    21,    -1,    32,    -1,    26,
       -1,    -1,    -1,    -1,   107,    89,    -1,   107,    93,    -1,
       45,    21,    43,    -1,    12,    -1,    15,    -1,    22,    -1,
-      17,    -1,    21,    82,   124,    83,    -1,    21,    -1,    13,
+      17,    -1,    21,    82,   125,    83,    -1,    21,    -1,    13,
       -1,    14,   109,    -1,    91,    -1,   109,    76,   109,    -1,
      109,    77,   109,    -1,   109,    78,   109,    -1,   109,    79,
      109,    -1,   109,    65,   109,    -1,   109,    84,   109,    -1,
@@ -613,19 +613,20 @@ static const yytype_int8 yyrhs[] =
       71,   109,    -1,    40,   109,    -1,   113,    -1,   116,    -1,
       28,    41,    -1,    28,    -1,    30,   111,    -1,    55,   112,
       -1,    19,   109,    -1,    18,   109,    -1,    18,    -1,    20,
-     124,    -1,    51,   109,    46,   109,    -1,    51,   109,    -1,
-      73,    21,   124,    -1,    21,    -1,   111,    86,    21,    -1,
+     125,    -1,    51,   109,    46,   109,    -1,    51,   109,    -1,
+      73,    21,   125,    -1,    21,    -1,   111,    86,    21,    -1,
       21,    -1,   112,    86,    21,    -1,    31,    34,    -1,    31,
       37,    -1,    31,    39,    -1,    31,   114,    -1,    31,   114,
      115,    -1,    31,   115,    -1,    29,   109,    -1,   109,    -1,
       38,    36,   109,    -1,    36,   109,    -1,    52,    53,    -1,
       52,   114,    -1,    52,   114,   115,    -1,    52,   115,    -1,
-      -1,    35,    21,   118,   105,   121,    89,   122,   107,    -1,
-      49,    21,    -1,    -1,    50,    21,   119,   105,   121,    89,
-     122,   107,    -1,    -1,    72,    21,   120,   105,   121,    89,
-     122,   107,    27,    21,    -1,    -1,    21,    -1,   121,    86,
-      21,    -1,   121,    89,    86,    21,    -1,    -1,    21,   105,
-     124,    -1,    -1,   109,    -1,   124,    86,   109,    -1
+      -1,    35,    21,   118,   105,   122,    89,   123,   107,    -1,
+      49,    21,    -1,    -1,    50,    21,   119,   105,   122,    89,
+     123,   107,    -1,    -1,    -1,    72,    21,   120,   105,   121,
+     122,    89,   123,   107,    27,    21,    -1,    -1,    21,    -1,
+     122,    86,    21,    -1,   122,    89,    86,    21,    -1,    -1,
+      21,   105,   125,    -1,    -1,   109,    -1,   125,    86,   109,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -643,8 +644,8 @@ static const yytype_uint16 yyrline[] =
      415,   417,   418,   419,   422,   425,   428,   429,   430,   431,
      434,   435,   438,   439,   450,   451,   452,   453,   456,   459,
      464,   465,   468,   469,   472,   473,   476,   479,   509,   509,
-     515,   518,   518,   523,   523,   535,   536,   537,   538,   540,
-     544,   552,   553,   554
+     515,   518,   518,   523,   524,   523,   536,   537,   538,   539,
+     541,   545,   553,   554,   555
 };
 #endif
 
@@ -670,8 +671,8 @@ static const char *const yytname[] =
   "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile",
   "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "expr",
   "func", "globallist", "instancelist", "gotofunc", "gotoframe",
-  "gotomovie", "playfunc", "defn", "@1", "@2", "@3", "argdef", "argstore",
-  "macro", "arglist", 0
+  "gotomovie", "playfunc", "defn", "@1", "@2", "@3", "@4", "argdef",
+  "argstore", "macro", "arglist", 0
 };
 #endif
 
@@ -707,8 +708,8 @@ static const yytype_uint8 yyr1[] =
      110,   110,   110,   110,   110,   110,   110,   110,   110,   110,
      111,   111,   112,   112,   113,   113,   113,   113,   113,   113,
      114,   114,   115,   115,   116,   116,   116,   116,   118,   117,
-     117,   119,   117,   120,   117,   121,   121,   121,   121,   122,
-     123,   124,   124,   124
+     117,   119,   117,   120,   121,   117,   122,   122,   122,   122,
+     123,   124,   125,   125,   125
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -726,8 +727,8 @@ static const yytype_uint8 yyr2[] =
        1,     2,     2,     2,     2,     1,     2,     4,     2,     3,
        1,     3,     1,     3,     2,     2,     2,     2,     3,     2,
        2,     1,     3,     2,     2,     2,     3,     2,     0,     8,
-       2,     0,     8,     0,    10,     0,     1,     3,     4,     0,
-       3,     0,     1,     3
+       2,     0,     8,     0,     0,    11,     0,     1,     3,     4,
+       0,     3,     0,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -735,35 +736,35 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    55,    61,     0,    56,    58,    95,     0,   131,
+       0,     0,    55,    61,     0,    56,    58,    95,     0,   132,
       49,    57,    90,     0,     0,    47,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     3,    63,    21,    11,    22,     0,
        0,     0,     0,    19,     8,    87,    88,     7,     9,     5,
-       4,    60,     0,    63,    62,    94,    93,   132,    96,   131,
-     131,    89,   100,    91,     0,   104,     0,   105,     0,   106,
+       4,    60,     0,    63,    62,    94,    93,   133,    96,   132,
+     132,    89,   100,    91,     0,   104,     0,   105,     0,   106,
      111,   107,   109,   118,    86,     0,    45,     0,     0,     0,
        0,   120,   121,    98,   114,   115,   117,   102,    92,    76,
-       0,   123,   131,    81,    82,     0,     1,     6,     0,     0,
+       0,   123,   132,    81,    82,     0,     1,     6,     0,     0,
        0,     0,    42,    50,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   130,     0,   110,   113,     0,   108,    49,
+       0,     0,     0,   131,     0,   110,   113,     0,   108,    49,
        0,    46,     0,     0,     0,     0,     0,    54,    49,     0,
      116,     0,     0,     0,    49,    99,    83,     2,     0,    50,
        0,     0,    49,     0,    26,    72,    73,    71,    74,    75,
       68,    78,    79,    80,    77,    64,    65,    66,    67,    69,
-      70,   133,    59,   101,   112,   125,    12,    17,    14,     0,
-       0,    16,    13,   125,    97,   103,    84,    85,   125,    51,
-       0,    44,    51,     0,    43,   126,     0,    18,    15,     0,
-       0,    50,     0,     0,    50,    50,    20,     0,   129,   129,
-     129,    52,    53,     0,     0,    50,    49,    30,   127,     0,
-      51,    51,    51,     0,    50,    51,     0,    51,     0,    48,
-      49,    50,    38,     0,   128,   119,   122,     0,    23,    51,
+      70,   134,    59,   101,   112,   126,    12,    17,    14,     0,
+       0,    16,    13,   126,    97,   103,    84,    85,   124,    51,
+       0,    44,    51,     0,    43,   127,     0,    18,    15,     0,
+     126,    50,     0,     0,    50,    50,    20,     0,   130,   130,
+       0,    52,    53,     0,     0,    50,    49,    30,   128,     0,
+      51,    51,   130,     0,    50,    51,     0,    51,     0,    48,
+      49,    50,    38,     0,   129,   119,   122,    51,    23,    51,
       50,    27,    50,    50,    40,    36,     0,     0,    37,    33,
        0,     0,    50,     0,     0,    35,     0,     0,    50,    49,
-      50,    49,   124,     0,     0,     0,     0,    49,    31,     0,
-      32,     0,     0,    24,    28,    29,    50,    34,    50,    25,
-      41,    39
+      50,    49,     0,     0,     0,     0,     0,    49,    31,     0,
+      32,     0,   125,     0,    24,    28,    29,    50,    34,    50,
+      25,    41,    39
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
@@ -772,52 +773,52 @@ static const yytype_int16 yydefgoto[] =
       -1,    33,   211,    34,    53,    36,   212,    38,   260,   243,
      244,   232,   245,   101,    39,    40,    41,   233,   271,   154,
      201,    42,    43,   206,    63,    88,    45,    71,    72,    46,
-      47,   129,   138,   144,   196,   220,    48,    58
+      47,   129,   138,   144,   200,   196,   220,    48,    58
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -215
+#define YYPACT_NINF -217
 static const yytype_int16 yypact[] =
 {
-     263,   -39,  -215,  -215,    11,  -215,  -215,    11,    11,    11,
-     929,  -215,    15,    25,   674,  -215,    31,    11,   -26,    65,
-      44,    48,    53,    11,   706,    64,    11,    11,    68,    70,
-      11,    11,    11,     2,  -215,     3,  -215,  -215,  -215,    12,
-      22,   750,    11,   904,  -215,  -215,  -215,  -215,  -215,  -215,
-    -215,    16,    11,  -215,   904,   904,   904,   904,    17,    11,
-      11,  -215,  -215,    19,    11,  -215,    11,  -215,    73,  -215,
-     904,    24,  -215,  -215,   745,    89,  -215,   -34,    11,   -29,
-      69,  -215,  -215,   779,  -215,    24,  -215,  -215,    27,    -8,
-     804,  -215,    11,    -8,    -8,   854,  -215,   334,   750,    11,
-     750,    71,   879,   904,    11,    11,    11,    11,    11,    11,
-      11,    11,    11,    11,    11,    11,    11,    11,    11,    11,
-     745,    11,   -47,    17,    90,   904,   904,    11,  -215,  -215,
-      94,  -215,    11,    11,   590,    11,    11,  -215,  -215,    11,
-    -215,    95,    11,    11,  -215,    17,  -215,  -215,    34,   904,
-      36,   829,   -39,    11,  -215,   244,   244,   244,    -8,    -8,
-      -8,   904,   244,   244,   315,   138,   138,    -8,    -8,   904,
-     904,   904,  -215,  -215,   904,   100,  -215,   904,   904,    11,
-      11,   904,   904,   100,   904,  -215,   904,   904,   100,  -215,
-      -6,  -215,  -215,   608,   904,  -215,   -59,   904,   904,   -59,
-     -59,   471,    78,    11,   471,  -215,  -215,   105,    41,    41,
-      41,  -215,  -215,   104,    11,   904,   -11,   -13,  -215,   113,
-    -215,  -215,  -215,    96,   904,  -215,   109,  -215,   110,  -215,
-    -215,   110,  -215,   750,  -215,   471,   471,   400,  -215,  -215,
-     471,  -215,   471,   110,   110,  -215,   750,   608,  -215,   112,
-     120,   144,   471,   139,   141,  -215,   142,   128,  -215,  -215,
-    -215,  -215,  -215,   147,   137,   148,   149,   -20,  -215,   608,
-    -215,   542,   143,  -215,  -215,  -215,   471,  -215,  -215,  -215,
-    -215,  -215
+     275,   -30,  -217,  -217,   762,  -217,  -217,   762,   762,   762,
+     173,  -217,    17,    10,   686,  -217,    32,   762,    13,    64,
+      41,    47,    52,   762,   718,    55,   762,   762,    58,    59,
+     762,   762,   762,     2,  -217,     3,  -217,  -217,  -217,     6,
+      15,   776,   762,   944,  -217,  -217,  -217,  -217,  -217,  -217,
+    -217,     9,   762,  -217,   944,   944,   944,   944,     8,   762,
+     762,  -217,  -217,    19,   762,  -217,   762,  -217,    50,  -217,
+     944,   -11,  -217,  -217,   794,    74,  -217,   -28,   762,   -24,
+      53,  -217,  -217,   819,  -217,   -11,  -217,  -217,    21,   -10,
+     844,  -217,   762,   -10,   -10,   894,  -217,   346,   776,   762,
+     776,    60,   919,   944,   762,   762,   762,   762,   762,   762,
+     762,   762,   762,   762,   762,   762,   762,   762,   762,   762,
+     794,   762,     7,     8,    77,   944,   944,   762,  -217,  -217,
+      89,  -217,   762,   762,   602,   762,   762,  -217,  -217,   762,
+    -217,    92,   762,   762,  -217,     8,  -217,  -217,    31,   944,
+      33,   869,   -30,   762,  -217,    46,    46,    46,   -10,   -10,
+     -10,   944,    46,    46,   256,   -44,   -44,   -10,   -10,   944,
+     944,   944,  -217,  -217,   944,    94,  -217,   944,   944,   762,
+     762,   944,   944,    94,   944,  -217,   944,   944,  -217,  -217,
+      -7,  -217,  -217,   620,   944,  -217,   -57,   944,   944,   -57,
+      94,   483,    73,   762,   483,  -217,  -217,    98,    42,    42,
+     -57,  -217,  -217,    99,   762,   944,   -15,   -12,  -217,   106,
+    -217,  -217,    42,    93,   944,  -217,   101,  -217,   110,  -217,
+    -217,   110,  -217,   776,  -217,   483,   483,  -217,  -217,  -217,
+     483,  -217,   483,   110,   110,  -217,   776,   620,  -217,   112,
+     119,   412,   483,   114,   115,  -217,   136,   123,  -217,  -217,
+    -217,  -217,   116,   141,   129,   142,   145,   -20,  -217,   620,
+    -217,   554,  -217,   139,  -217,  -217,  -217,   483,  -217,  -217,
+    -217,  -217,  -217
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -215,  -215,    10,    93,     4,  -179,     0,  -215,  -215,  -215,
-     -31,  -214,   -56,   -69,  -215,  -215,  -215,  -209,    -9,   -16,
-     -97,  -215,    40,     5,  -215,  -215,  -215,   167,   -12,  -215,
-    -215,  -215,  -215,  -215,  -133,  -102,  -215,   -51
+    -217,  -217,    12,    84,     4,  -182,     0,  -217,  -217,  -217,
+     -33,  -216,   -58,   -68,  -217,  -217,  -217,  -205,    -9,    22,
+     -23,  -217,    40,     5,  -217,  -217,  -217,   162,   -16,  -217,
+    -217,  -217,  -217,  -217,  -217,  -157,  -170,  -217,   -50
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -827,90 +828,94 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -61
 static const yytype_int16 yytable[] =
 {
-      37,    60,    96,   -10,    35,    44,   -51,   -51,   122,   123,
-     132,    50,    86,   229,   205,   135,   226,   248,   202,   246,
-      75,    76,    49,     2,     3,     4,     5,   207,     6,   148,
-     248,   150,    51,    11,   246,   230,   172,   227,   203,   121,
-     133,   145,    49,    97,    54,   136,    62,    55,    56,    57,
-     199,    52,    73,    19,    70,   200,    61,    74,   110,   128,
-      66,   -51,    68,    83,    70,    80,    89,    90,   258,    81,
-      93,    94,    95,   140,    82,    26,   118,   119,    77,    78,
-      27,   102,   103,    49,   -10,    87,    79,    30,    31,    91,
-     277,    92,   120,    32,    98,   204,    99,    37,    59,    57,
-      57,    35,    44,   121,   125,   124,   126,   221,   222,   127,
-     131,   173,   137,   141,   152,   176,   185,   189,   134,   191,
-     175,   195,   214,   235,   236,   237,   218,   219,   240,   183,
-     242,   223,    57,   190,   234,   188,   229,   238,   102,   149,
-     151,   241,   252,   193,   155,   156,   157,   158,   159,   160,
+      37,    60,    96,   -10,    35,    44,   -51,   -51,    86,   122,
+     123,   205,   226,    50,   229,   248,   132,   202,   107,   108,
+     135,   109,   110,   246,    49,    66,   199,    68,   248,   207,
+     148,    62,   150,   227,   116,   117,   230,   203,   246,   221,
+     118,   119,   145,   210,    54,    97,   133,    55,    56,    57,
+     136,    49,   237,    73,    70,   128,   110,    74,    61,    75,
+      76,   -51,    80,    83,    70,   258,    89,    90,    81,   140,
+      93,    94,    95,    82,   118,   119,    87,    77,    78,    91,
+      92,   102,   103,    49,   -10,    79,   127,   278,    98,    99,
+     172,    59,   120,   121,   121,   131,   137,    37,   173,    57,
+      57,    35,    44,   152,   125,   124,   126,   141,   107,   108,
+     176,   109,   110,   185,   189,   195,   191,   214,   134,   218,
+     175,   113,   114,   115,   116,   117,   223,   234,   219,   183,
+     118,   119,    57,   241,   238,   188,   229,   272,   102,   149,
+     151,   264,   265,   193,   155,   156,   157,   158,   159,   160,
      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     259,   171,   192,   261,   250,   262,   264,   174,   265,   266,
-     276,   267,   177,   178,   272,   181,   182,   257,   273,   184,
-     274,   275,   186,   187,   279,   213,   231,   255,   216,   217,
-     147,    85,     0,   194,     0,     0,     0,     0,     0,   225,
-     107,   108,     0,   109,   110,     0,   208,   228,   239,   209,
-     210,     0,     0,     0,     0,   249,   116,   117,     0,   197,
-     198,   247,   118,   119,   253,     0,   254,   256,     0,     0,
-       0,     0,     0,     0,     0,     0,   263,     0,     0,     0,
-       0,     0,   268,   215,   270,     0,     0,     0,     0,     0,
-     269,     0,     0,     0,   224,     0,     0,     0,     0,     0,
-     280,     0,   281,    -6,     1,     0,     0,     0,     0,     0,
-       0,   278,     0,   102,     0,     2,     3,     4,     5,     0,
-       6,     7,     8,     9,    10,    11,   102,     0,     0,     0,
-       0,    12,     0,    13,    14,    15,     0,     0,    16,     0,
-       0,     0,     0,    17,    18,    19,   107,   108,    20,   109,
-     110,     0,    21,    22,    23,    24,     0,     0,    25,   113,
-     114,   115,   116,   117,     0,     0,     0,    26,   118,   119,
-       0,     0,    27,     0,     0,    28,    29,     0,     0,    30,
-      31,     0,     0,     0,    -6,    32,     2,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,    11,     0,     0,     0,
-       0,     0,    12,     0,    13,    14,    15,     0,     0,    16,
-       0,     0,     0,     0,    17,    18,    19,   107,   108,    20,
-     109,   110,     0,    21,    22,    23,    24,     0,     0,    25,
-       0,   114,   115,   116,   117,     0,     0,     0,    26,   118,
-     119,     0,     0,    27,     0,     0,    28,    29,     0,     0,
-      30,    31,     2,     3,     4,     5,    32,     6,     7,     8,
-       9,    51,    11,     0,     0,     0,     0,   251,    12,     0,
-      13,    14,    15,     0,     0,     0,     0,     0,     0,     0,
-      17,    18,    19,     0,     0,    20,     0,     0,     0,     0,
-       0,    23,    24,     0,     0,    25,     0,     0,     0,     0,
-       0,     0,     0,     0,    26,     0,     0,     0,     0,    27,
-       0,     0,     0,    29,     0,     0,    30,    31,     0,     0,
-       0,    49,    32,     2,     3,     4,     5,     0,     6,     7,
-       8,     9,    51,    11,     0,     0,     0,     0,     0,    12,
-       0,    13,    14,    15,     0,     0,     0,     0,     0,     0,
-       0,    17,    18,    19,     0,     0,    20,     0,     0,     0,
-       0,     0,    23,    24,     0,     0,    25,     0,     0,     0,
-       0,     0,     0,     0,     0,    26,     0,     0,     0,     0,
-      27,     0,     0,     0,    29,     0,     0,    30,    31,     0,
-       0,     0,    49,    32,     2,     3,     4,     5,     0,     6,
-       7,     8,     9,    51,    11,     0,     0,     0,     0,     0,
+     259,   171,   261,   266,   192,   250,   267,   174,   273,   204,
+     274,   190,   177,   178,   275,   181,   182,   276,   257,   184,
+     280,   147,   186,   187,   231,   255,    85,     0,     0,     0,
+       0,     0,     0,   194,     0,     0,     0,   235,   236,     0,
+       0,     0,   240,     0,   242,     0,     0,   228,   208,     0,
+       0,   209,     0,     0,   251,     0,   252,     0,     0,   197,
+     198,   247,   222,   213,     0,     0,   216,   217,     0,   -60,
+     -60,     0,     0,     0,   -60,   -60,   -60,   225,   -60,   -60,
+     -60,   -60,     0,   215,   277,     0,   239,     0,   -60,     0,
+     269,   -60,   -60,   249,   224,    59,     0,   -60,   -60,     0,
+       0,     0,   253,     0,   254,   256,     0,     0,     0,     0,
+       0,   279,     0,   102,   263,    -6,     1,     0,     0,     0,
+     268,     0,   270,     0,     0,     0,   102,     2,     3,     4,
+       5,     0,     6,     7,     8,     9,    10,    11,     0,   281,
+       0,   282,     0,    12,     0,    13,    14,    15,     0,     0,
+      16,     0,     0,     0,     0,    17,    18,    19,   107,   108,
+      20,   109,   110,     0,    21,    22,    23,    24,     0,     0,
+      25,     0,   114,   115,   116,   117,     0,     0,     0,    26,
+     118,   119,     0,     0,    27,     0,     0,    28,    29,     0,
+       0,    30,    31,     0,     0,     0,    -6,    32,     2,     3,
+       4,     5,     0,     6,     7,     8,     9,    10,    11,     0,
+       0,     0,     0,     0,    12,     0,    13,    14,    15,     0,
+       0,    16,     0,     0,     0,     0,    17,    18,    19,     0,
+       0,    20,     0,     0,     0,    21,    22,    23,    24,     0,
+       0,    25,     0,     0,     0,     0,     0,     0,     0,     0,
+      26,     0,     0,     0,     0,    27,     0,     0,    28,    29,
+       0,     0,    30,    31,     2,     3,     4,     5,    32,     6,
+       7,     8,     9,    51,    11,     0,     0,     0,     0,   262,
       12,     0,    13,    14,    15,     0,     0,     0,     0,     0,
        0,     0,    17,    18,    19,     0,     0,    20,     0,     0,
        0,     0,     0,    23,    24,     0,     0,    25,     0,     0,
        0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
        0,    27,     0,     0,     0,    29,     0,     0,    30,    31,
-       2,     3,     4,     5,    32,     6,     7,     8,     9,    51,
-      11,     0,     0,     0,   179,     0,    12,     0,    13,    14,
-       0,     0,     0,     0,     0,     0,   104,   105,    17,     0,
-      19,   106,   107,   108,     0,   109,   110,   111,   112,    23,
-      24,     0,     0,    25,   180,   113,   114,   115,   116,   117,
-       0,     0,    26,     0,   118,   119,     0,    27,     0,     0,
-       0,    29,     0,     0,    30,    31,     2,     3,     4,     5,
-      32,     6,     0,     0,     0,    51,    11,     0,     0,     0,
-       0,     0,     0,    64,     0,     0,     0,     0,    65,     0,
-      66,    67,    68,    69,    52,     0,    19,     0,     2,     3,
-       4,     5,     0,     6,     0,     0,     0,    51,    11,     0,
-       0,     0,     0,     0,     0,    64,     0,     0,    26,     0,
-       0,     0,    66,    27,    68,     0,    52,     0,    19,     0,
-      30,    31,     0,     0,     0,     0,    32,     0,     0,    84,
-       0,     0,     2,     3,     4,     5,     0,     6,     0,     0,
-      26,    51,    11,     0,     0,    27,     0,     0,   130,     0,
-       0,     0,    30,    31,     0,     0,     0,     0,    32,     0,
-      52,     0,    19,     0,     0,     0,     0,     0,     0,     0,
-       0,   104,   105,     0,     0,     0,   106,   107,   108,     0,
-     109,   110,   111,   112,    26,     0,     0,     0,     0,    27,
-     113,   114,   115,   116,   117,   139,    30,    31,     0,   118,
-     119,     0,   100,     0,     0,   104,   105,     0,     0,     0,
+       0,     0,     0,    49,    32,     2,     3,     4,     5,     0,
+       6,     7,     8,     9,    51,    11,     0,     0,     0,     0,
+       0,    12,     0,    13,    14,    15,     0,     0,     0,     0,
+       0,     0,     0,    17,    18,    19,     0,     0,    20,     0,
+       0,     0,     0,     0,    23,    24,     0,     0,    25,     0,
+       0,     0,     0,     0,     0,     0,     0,    26,     0,     0,
+       0,     0,    27,     0,     0,     0,    29,     0,     0,    30,
+      31,     0,     0,     0,    49,    32,     2,     3,     4,     5,
+       0,     6,     7,     8,     9,    51,    11,     0,     0,     0,
+       0,     0,    12,     0,    13,    14,    15,     0,     0,     0,
+       0,     0,     0,     0,    17,    18,    19,     0,     0,    20,
+       0,     0,     0,     0,     0,    23,    24,     0,     0,    25,
+       0,     0,     0,     0,     0,     0,     0,     0,    26,     0,
+       0,     0,     0,    27,     0,     0,     0,    29,     0,     0,
+      30,    31,     2,     3,     4,     5,    32,     6,     7,     8,
+       9,    51,    11,     0,     0,     0,   179,     0,    12,     0,
+      13,    14,     0,     0,     0,     0,     0,     0,   104,   105,
+      17,     0,    19,   106,   107,   108,     0,   109,   110,   111,
+     112,    23,    24,     0,     0,    25,   180,   113,   114,   115,
+     116,   117,     0,     0,    26,     0,   118,   119,     0,    27,
+       0,     0,     0,    29,     0,     0,    30,    31,     2,     3,
+       4,     5,    32,     6,     0,     0,     0,    51,    11,     0,
+       0,     0,     0,     0,     0,    64,     0,     0,     0,     0,
+      65,     0,    66,    67,    68,    69,    52,     0,    19,     0,
+       2,     3,     4,     5,     0,     6,     0,     0,     0,    51,
+      11,     0,     0,     0,     0,     0,     0,    64,     0,     0,
+      26,     0,     0,     0,    66,    27,    68,     0,    52,     0,
+      19,     0,    30,    31,     0,     0,     0,     0,    32,     0,
+       0,    84,     0,     0,     2,     3,     4,     5,     0,     6,
+       0,     0,    26,    51,    11,     0,     0,    27,     2,     3,
+       4,     5,     0,     6,    30,    31,     0,    51,    11,     0,
+      32,     0,    52,     0,    19,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    52,     0,    19,     0,
+       0,     0,     0,     0,     0,     0,    26,   130,     0,     0,
+       0,    27,     0,     0,     0,     0,     0,     0,    30,    31,
+      26,     0,     0,     0,    32,    27,     0,     0,     0,     0,
+     104,   105,    30,    31,     0,   106,   107,   108,   100,   109,
+     110,   111,   112,     0,     0,   139,     0,     0,     0,   113,
+     114,   115,   116,   117,     0,   104,   105,     0,   118,   119,
      106,   107,   108,     0,   109,   110,   111,   112,     0,     0,
        0,     0,     0,     0,   113,   114,   115,   116,   117,     0,
      104,   105,     0,   118,   119,   106,   107,   108,     0,   109,
@@ -925,98 +930,99 @@ static const yytype_int16 yytable[] =
        0,     0,     0,   153,   113,   114,   115,   116,   117,     0,
      104,   105,     0,   118,   119,   106,   107,   108,     0,   109,
      110,   111,   112,     0,     0,     0,     0,     0,     0,   113,
-     114,   115,   116,   117,     0,   -60,   -60,     0,   118,   119,
-     -60,   -60,   -60,     0,   -60,   -60,   -60,   -60,     0,     0,
-       0,     0,     0,     0,   -60,     0,     0,   -60,   -60,     0,
-       0,    59,     0,   -60,   -60
+     114,   115,   116,   117,     0,     0,     0,     0,   118,   119
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    10,     0,     0,     0,     0,    26,    27,    59,    60,
-      44,     1,    24,    26,   193,    44,    27,   231,    24,   228,
-      46,    47,    81,    12,    13,    14,    15,    86,    17,    98,
-     244,   100,    21,    22,   243,    48,    83,    48,    44,    86,
-      74,    92,    81,    33,     4,    74,    21,     7,     8,     9,
-     183,    40,    21,    42,    14,   188,    41,    17,    66,    71,
-      36,    81,    38,    23,    24,    21,    26,    27,   247,    21,
-      30,    31,    32,    85,    21,    64,    84,    85,    13,    14,
-      69,    41,    42,    81,    81,    21,    21,    76,    77,    21,
-     269,    21,    52,    82,    82,   192,    74,    97,    82,    59,
-      60,    97,    97,    86,    64,    86,    66,   209,   210,    36,
-      21,    21,    43,    86,    43,    21,    21,    83,    78,    83,
-     129,    21,    44,   220,   221,   222,    21,    86,   225,   138,
-     227,    27,    92,   149,    21,   144,    26,    41,    98,    99,
-     100,    32,   239,   152,   104,   105,   106,   107,   108,   109,
+       0,    10,     0,     0,     0,     0,    26,    27,    24,    59,
+      60,   193,    27,     1,    26,   231,    44,    24,    62,    63,
+      44,    65,    66,   228,    81,    36,   183,    38,   244,    86,
+      98,    21,   100,    48,    78,    79,    48,    44,   243,   209,
+      84,    85,    92,   200,     4,    33,    74,     7,     8,     9,
+      74,    81,   222,    21,    14,    71,    66,    17,    41,    46,
+      47,    81,    21,    23,    24,   247,    26,    27,    21,    85,
+      30,    31,    32,    21,    84,    85,    21,    13,    14,    21,
+      21,    41,    42,    81,    81,    21,    36,   269,    82,    74,
+      83,    82,    52,    86,    86,    21,    43,    97,    21,    59,
+      60,    97,    97,    43,    64,    86,    66,    86,    62,    63,
+      21,    65,    66,    21,    83,    21,    83,    44,    78,    21,
+     129,    75,    76,    77,    78,    79,    27,    21,    86,   138,
+      84,    85,    92,    32,    41,   144,    26,    21,    98,    99,
+     100,    27,    27,   152,   104,   105,   106,   107,   108,   109,
      110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
-      48,   121,   152,    43,   233,    21,    27,   127,    27,    27,
-     267,    43,   132,   133,    27,   135,   136,   246,    41,   139,
-      32,    32,   142,   143,    41,   201,   217,   243,   204,   205,
-      97,    24,    -1,   153,    -1,    -1,    -1,    -1,    -1,   215,
-      62,    63,    -1,    65,    66,    -1,   196,   216,   224,   199,
-     200,    -1,    -1,    -1,    -1,   231,    78,    79,    -1,   179,
-     180,   230,    84,    85,   240,    -1,   242,   243,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   252,    -1,    -1,    -1,
-      -1,    -1,   258,   203,   260,    -1,    -1,    -1,    -1,    -1,
-     259,    -1,    -1,    -1,   214,    -1,    -1,    -1,    -1,    -1,
-     276,    -1,   278,     0,     1,    -1,    -1,    -1,    -1,    -1,
-      -1,   271,    -1,   233,    -1,    12,    13,    14,    15,    -1,
-      17,    18,    19,    20,    21,    22,   246,    -1,    -1,    -1,
-      -1,    28,    -1,    30,    31,    32,    -1,    -1,    35,    -1,
-      -1,    -1,    -1,    40,    41,    42,    62,    63,    45,    65,
-      66,    -1,    49,    50,    51,    52,    -1,    -1,    55,    75,
-      76,    77,    78,    79,    -1,    -1,    -1,    64,    84,    85,
-      -1,    -1,    69,    -1,    -1,    72,    73,    -1,    -1,    76,
-      77,    -1,    -1,    -1,    81,    82,    12,    13,    14,    15,
-      -1,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,
-      -1,    -1,    28,    -1,    30,    31,    32,    -1,    -1,    35,
-      -1,    -1,    -1,    -1,    40,    41,    42,    62,    63,    45,
-      65,    66,    -1,    49,    50,    51,    52,    -1,    -1,    55,
-      -1,    76,    77,    78,    79,    -1,    -1,    -1,    64,    84,
-      85,    -1,    -1,    69,    -1,    -1,    72,    73,    -1,    -1,
-      76,    77,    12,    13,    14,    15,    82,    17,    18,    19,
-      20,    21,    22,    -1,    -1,    -1,    -1,    27,    28,    -1,
-      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      40,    41,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,
-      -1,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,    69,
-      -1,    -1,    -1,    73,    -1,    -1,    76,    77,    -1,    -1,
-      -1,    81,    82,    12,    13,    14,    15,    -1,    17,    18,
-      19,    20,    21,    22,    -1,    -1,    -1,    -1,    -1,    28,
-      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    40,    41,    42,    -1,    -1,    45,    -1,    -1,    -1,
-      -1,    -1,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,    -1,
-      69,    -1,    -1,    -1,    73,    -1,    -1,    76,    77,    -1,
-      -1,    -1,    81,    82,    12,    13,    14,    15,    -1,    17,
-      18,    19,    20,    21,    22,    -1,    -1,    -1,    -1,    -1,
+      48,   121,    43,    27,   152,   233,    43,   127,    27,   192,
+      41,   149,   132,   133,    32,   135,   136,    32,   246,   139,
+      41,    97,   142,   143,   217,   243,    24,    -1,    -1,    -1,
+      -1,    -1,    -1,   153,    -1,    -1,    -1,   220,   221,    -1,
+      -1,    -1,   225,    -1,   227,    -1,    -1,   216,   196,    -1,
+      -1,   199,    -1,    -1,   237,    -1,   239,    -1,    -1,   179,
+     180,   230,   210,   201,    -1,    -1,   204,   205,    -1,    56,
+      57,    -1,    -1,    -1,    61,    62,    63,   215,    65,    66,
+      67,    68,    -1,   203,   267,    -1,   224,    -1,    75,    -1,
+     259,    78,    79,   231,   214,    82,    -1,    84,    85,    -1,
+      -1,    -1,   240,    -1,   242,   243,    -1,    -1,    -1,    -1,
+      -1,   271,    -1,   233,   252,     0,     1,    -1,    -1,    -1,
+     258,    -1,   260,    -1,    -1,    -1,   246,    12,    13,    14,
+      15,    -1,    17,    18,    19,    20,    21,    22,    -1,   277,
+      -1,   279,    -1,    28,    -1,    30,    31,    32,    -1,    -1,
+      35,    -1,    -1,    -1,    -1,    40,    41,    42,    62,    63,
+      45,    65,    66,    -1,    49,    50,    51,    52,    -1,    -1,
+      55,    -1,    76,    77,    78,    79,    -1,    -1,    -1,    64,
+      84,    85,    -1,    -1,    69,    -1,    -1,    72,    73,    -1,
+      -1,    76,    77,    -1,    -1,    -1,    81,    82,    12,    13,
+      14,    15,    -1,    17,    18,    19,    20,    21,    22,    -1,
+      -1,    -1,    -1,    -1,    28,    -1,    30,    31,    32,    -1,
+      -1,    35,    -1,    -1,    -1,    -1,    40,    41,    42,    -1,
+      -1,    45,    -1,    -1,    -1,    49,    50,    51,    52,    -1,
+      -1,    55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      64,    -1,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
+      -1,    -1,    76,    77,    12,    13,    14,    15,    82,    17,
+      18,    19,    20,    21,    22,    -1,    -1,    -1,    -1,    27,
       28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    40,    41,    42,    -1,    -1,    45,    -1,    -1,
       -1,    -1,    -1,    51,    52,    -1,    -1,    55,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,
       -1,    69,    -1,    -1,    -1,    73,    -1,    -1,    76,    77,
-      12,    13,    14,    15,    82,    17,    18,    19,    20,    21,
-      22,    -1,    -1,    -1,    44,    -1,    28,    -1,    30,    31,
-      -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    40,    -1,
-      42,    61,    62,    63,    -1,    65,    66,    67,    68,    51,
-      52,    -1,    -1,    55,    74,    75,    76,    77,    78,    79,
-      -1,    -1,    64,    -1,    84,    85,    -1,    69,    -1,    -1,
-      -1,    73,    -1,    -1,    76,    77,    12,    13,    14,    15,
-      82,    17,    -1,    -1,    -1,    21,    22,    -1,    -1,    -1,
-      -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,    34,    -1,
-      36,    37,    38,    39,    40,    -1,    42,    -1,    12,    13,
-      14,    15,    -1,    17,    -1,    -1,    -1,    21,    22,    -1,
-      -1,    -1,    -1,    -1,    -1,    29,    -1,    -1,    64,    -1,
-      -1,    -1,    36,    69,    38,    -1,    40,    -1,    42,    -1,
-      76,    77,    -1,    -1,    -1,    -1,    82,    -1,    -1,    53,
-      -1,    -1,    12,    13,    14,    15,    -1,    17,    -1,    -1,
-      64,    21,    22,    -1,    -1,    69,    -1,    -1,    33,    -1,
-      -1,    -1,    76,    77,    -1,    -1,    -1,    -1,    82,    -1,
-      40,    -1,    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    56,    57,    -1,    -1,    -1,    61,    62,    63,    -1,
-      65,    66,    67,    68,    64,    -1,    -1,    -1,    -1,    69,
-      75,    76,    77,    78,    79,    46,    76,    77,    -1,    84,
-      85,    -1,    82,    -1,    -1,    56,    57,    -1,    -1,    -1,
+      -1,    -1,    -1,    81,    82,    12,    13,    14,    15,    -1,
+      17,    18,    19,    20,    21,    22,    -1,    -1,    -1,    -1,
+      -1,    28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    40,    41,    42,    -1,    -1,    45,    -1,
+      -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    55,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,
+      -1,    -1,    69,    -1,    -1,    -1,    73,    -1,    -1,    76,
+      77,    -1,    -1,    -1,    81,    82,    12,    13,    14,    15,
+      -1,    17,    18,    19,    20,    21,    22,    -1,    -1,    -1,
+      -1,    -1,    28,    -1,    30,    31,    32,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    40,    41,    42,    -1,    -1,    45,
+      -1,    -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    55,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,
+      -1,    -1,    -1,    69,    -1,    -1,    -1,    73,    -1,    -1,
+      76,    77,    12,    13,    14,    15,    82,    17,    18,    19,
+      20,    21,    22,    -1,    -1,    -1,    44,    -1,    28,    -1,
+      30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    56,    57,
+      40,    -1,    42,    61,    62,    63,    -1,    65,    66,    67,
+      68,    51,    52,    -1,    -1,    55,    74,    75,    76,    77,
+      78,    79,    -1,    -1,    64,    -1,    84,    85,    -1,    69,
+      -1,    -1,    -1,    73,    -1,    -1,    76,    77,    12,    13,
+      14,    15,    82,    17,    -1,    -1,    -1,    21,    22,    -1,
+      -1,    -1,    -1,    -1,    -1,    29,    -1,    -1,    -1,    -1,
+      34,    -1,    36,    37,    38,    39,    40,    -1,    42,    -1,
+      12,    13,    14,    15,    -1,    17,    -1,    -1,    -1,    21,
+      22,    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,    -1,
+      64,    -1,    -1,    -1,    36,    69,    38,    -1,    40,    -1,
+      42,    -1,    76,    77,    -1,    -1,    -1,    -1,    82,    -1,
+      -1,    53,    -1,    -1,    12,    13,    14,    15,    -1,    17,
+      -1,    -1,    64,    21,    22,    -1,    -1,    69,    12,    13,
+      14,    15,    -1,    17,    76,    77,    -1,    21,    22,    -1,
+      82,    -1,    40,    -1,    42,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,    42,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    64,    33,    -1,    -1,
+      -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,
+      64,    -1,    -1,    -1,    82,    69,    -1,    -1,    -1,    -1,
+      56,    57,    76,    77,    -1,    61,    62,    63,    82,    65,
+      66,    67,    68,    -1,    -1,    46,    -1,    -1,    -1,    75,
+      76,    77,    78,    79,    -1,    56,    57,    -1,    84,    85,
       61,    62,    63,    -1,    65,    66,    67,    68,    -1,    -1,
       -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,
       56,    57,    -1,    84,    85,    61,    62,    63,    -1,    65,
@@ -1031,10 +1037,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    74,    75,    76,    77,    78,    79,    -1,
       56,    57,    -1,    84,    85,    61,    62,    63,    -1,    65,
       66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,
-      76,    77,    78,    79,    -1,    56,    57,    -1,    84,    85,
-      61,    62,    63,    -1,    65,    66,    67,    68,    -1,    -1,
-      -1,    -1,    -1,    -1,    75,    -1,    -1,    78,    79,    -1,
-      -1,    82,    -1,    84,    85
+      76,    77,    78,    79,    -1,    -1,    -1,    -1,    84,    85
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1045,31 +1048,31 @@ static const yytype_uint8 yystos[] =
       21,    22,    28,    30,    31,    32,    35,    40,    41,    42,
       45,    49,    50,    51,    52,    55,    64,    69,    72,    73,
       76,    77,    82,    88,    90,    91,    92,    93,    94,   101,
-     102,   103,   108,   109,   110,   113,   116,   117,   123,    81,
-      89,    21,    40,    91,   109,   109,   109,   109,   124,    82,
+     102,   103,   108,   109,   110,   113,   116,   117,   124,    81,
+      89,    21,    40,    91,   109,   109,   109,   109,   125,    82,
      105,    41,    21,   111,    29,    34,    36,    37,    38,    39,
      109,   114,   115,    21,   109,    46,    47,    13,    14,    21,
       21,    21,    21,   109,    53,   114,   115,    21,   112,   109,
      109,    21,    21,   109,   109,   109,     0,    89,    82,    74,
       82,   100,   109,   109,    56,    57,    61,    62,    63,    65,
       66,    67,    68,    75,    76,    77,    78,    79,    84,    85,
-     109,    86,   124,   124,    86,   109,   109,    36,   115,   118,
+     109,    86,   125,   125,    86,   109,   109,    36,   115,   118,
       33,    21,    44,    74,   109,    44,    74,    43,   119,    46,
-     115,    86,    70,    71,   120,   124,    83,    90,   100,   109,
+     115,    86,    70,    71,   120,   125,    83,    90,   100,   109,
      100,   109,    43,    74,   106,   109,   109,   109,   109,   109,
      109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
      109,   109,    83,    21,   109,   105,    21,   109,   109,    44,
       74,   109,   109,   105,   109,    21,   109,   109,   105,    83,
-     106,    83,    89,   105,   109,    21,   121,   109,   109,   121,
+     106,    83,    89,   105,   109,    21,   122,   109,   109,   122,
      121,   107,    24,    44,   107,    92,   110,    86,    89,    89,
-      89,    89,    93,   106,    44,   109,   106,   106,    21,    86,
-     122,   122,   122,    27,   109,   106,    27,    48,   105,    26,
-      48,    97,    98,   104,    21,   107,   107,   107,    41,   106,
+     122,    89,    93,   106,    44,   109,   106,   106,    21,    86,
+     123,   123,    89,    27,   109,   106,    27,    48,   105,    26,
+      48,    97,    98,   104,    21,   107,   107,   123,    41,   106,
      107,    32,   107,    96,    97,    99,   104,   105,    98,   106,
-     100,    27,   107,   106,   106,    99,   106,   100,    92,    48,
-      95,    43,    21,   106,    27,    27,    27,    43,   106,   105,
-     106,   105,    27,    41,    32,    32,   107,    92,    93,    41,
-     106,   106
+     100,   107,   107,   106,   106,    99,   106,   100,    92,    48,
+      95,    43,    27,   106,    27,    27,    27,    43,   106,   105,
+     106,   105,    21,    27,    41,    32,    32,   107,    92,    93,
+      41,   106,   106
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2564,45 +2567,51 @@ yyreduce:
 
   case 124:
 #line 524 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->_ignoreMe = true; ;}
+    break;
+
+  case 125:
+#line 524 "engines/director/lingo/lingo-gr.y"
     {
 				g_lingo->codeConst(0); // Push fake value on stack
 				g_lingo->code1(g_lingo->c_procret);
-				g_lingo->define(*(yyvsp[(2) - (10)].s), (yyvsp[(4) - (10)].code), (yyvsp[(5) - (10)].narg));
+				g_lingo->define(*(yyvsp[(2) - (11)].s), (yyvsp[(4) - (11)].code), (yyvsp[(6) - (11)].narg));
 				g_lingo->_indef = false;
+				g_lingo->_ignoreMe = false;
 
-				if (*(yyvsp[(2) - (10)].s) != *(yyvsp[(10) - (10)].s)) {
+				if (*(yyvsp[(2) - (11)].s) != *(yyvsp[(11) - (11)].s)) {
 					yyerror("on vs end handler mismatch");
 				}
 			;}
     break;
 
-  case 125:
-#line 535 "engines/director/lingo/lingo-gr.y"
-    { (yyval.narg) = 0; ;}
-    break;
-
   case 126:
 #line 536 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
+    { (yyval.narg) = 0; ;}
     break;
 
   case 127:
 #line 537 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
+    { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
   case 128:
 #line 538 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
+    { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 129:
-#line 540 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeArgStore(); ;}
+#line 539 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
   case 130:
-#line 544 "engines/director/lingo/lingo-gr.y"
+#line 541 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeArgStore(); ;}
+    break;
+
+  case 131:
+#line 545 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str());
@@ -2611,24 +2620,24 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 131:
-#line 552 "engines/director/lingo/lingo-gr.y"
-    { (yyval.narg) = 0; ;}
-    break;
-
   case 132:
 #line 553 "engines/director/lingo/lingo-gr.y"
-    { (yyval.narg) = 1; ;}
+    { (yyval.narg) = 0; ;}
     break;
 
   case 133:
 #line 554 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = 1; ;}
+    break;
+
+  case 134:
+#line 555 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 2632 "engines/director/lingo/lingo-gr.cpp"
+#line 2641 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2842,6 +2851,6 @@ yyreturn:
 }
 
 
-#line 557 "engines/director/lingo/lingo-gr.y"
+#line 558 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index b10ef75..4b5f7f4 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -521,13 +521,14 @@ defn: tMACRO ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); }
 			g_lingo->define(*$2, $4, $5 + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; }	;
 	| tON ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); }
-		begin argdef nl argstore stmtlist tEND ID	{
+		begin { g_lingo->_ignoreMe = true; } argdef nl argstore stmtlist tEND ID	{
 				g_lingo->codeConst(0); // Push fake value on stack
 				g_lingo->code1(g_lingo->c_procret);
-				g_lingo->define(*$2, $4, $5);
+				g_lingo->define(*$2, $4, $6);
 				g_lingo->_indef = false;
+				g_lingo->_ignoreMe = false;
 
-				if (*$2 != *$10) {
+				if (*$2 != *$11) {
 					yyerror("on vs end handler mismatch");
 				}
 			}
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index e1f861f..dea1475 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1316,6 +1316,9 @@ YY_RULE_SETUP
 		count();
 		yylval.s = new Common::String(yytext);
 
+		if (g_lingo->_ignoreMe && yylval.s->equalsIgnoreCase("me"))
+			return ID;
+
 		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) {
@@ -1341,41 +1344,41 @@ YY_RULE_SETUP
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 217 "engines/director/lingo/lingo-lex.l"
+#line 220 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 218 "engines/director/lingo/lingo-lex.l"
+#line 221 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 219 "engines/director/lingo/lingo-lex.l"
+#line 222 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
 case 58:
 /* rule 58 can match eol */
 YY_RULE_SETUP
-#line 220 "engines/director/lingo/lingo-lex.l"
+#line 223 "engines/director/lingo/lingo-lex.l"
 { return '\n'; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 221 "engines/director/lingo/lingo-lex.l"
+#line 224 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 222 "engines/director/lingo/lingo-lex.l"
+#line 225 "engines/director/lingo/lingo-lex.l"
 
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 224 "engines/director/lingo/lingo-lex.l"
+#line 227 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1379 "engines/director/lingo/lingo-lex.cpp"
+#line 1382 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2375,7 +2378,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 224 "engines/director/lingo/lingo-lex.l"
+#line 227 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index aa0aa7e..25fde2a 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -192,6 +192,9 @@ whitespace [\t ]
 		count();
 		yylval.s = new Common::String(yytext);
 
+		if (g_lingo->_ignoreMe && yylval.s->equalsIgnoreCase("me"))
+			return ID;
+
 		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) {
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 9c6b586..5eb687f 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -98,6 +98,7 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) {
 	_pc = 0;
 	_returning = false;
 	_indef = false;
+	_ignoreMe = false;
 
 	_linenumber = _colnumber = 0;
 
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 67ab57a..0ed69de 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -421,6 +421,7 @@ public:
 	ScriptType _currentScriptType;
 	bool _returning;
 	bool _indef;
+	bool _ignoreMe;
 
 	Common::Array<CFrame *> _callstack;
 	Common::Array<Common::String *> _argstack;





More information about the Scummvm-git-logs mailing list