[Scummvm-cvs-logs] scummvm master -> 708bf81589dece72f1ee506fd719ba798febf10b

sev- sev at scummvm.org
Wed Aug 10 18:42:26 CEST 2016


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

Summary:
509e1f3bac DIRECTOR: Lingo: Moved 'mci' and 'mciwait' to built-ins
708bf81589 DIRECTOR: Lingo: Use first argument of 'puppetPalette' verbatim


Commit: 509e1f3bac6fac0fdddd2423f2fd97465e1c35a0
    https://github.com/scummvm/scummvm/commit/509e1f3bac6fac0fdddd2423f2fd97465e1c35a0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-10T18:42:16+02:00

Commit Message:
DIRECTOR: Lingo: Moved 'mci' and 'mciwait' to built-ins

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



diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 6981e1c..6b60ce7 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -103,6 +103,8 @@ static struct BuiltinProto {
 	{ "point",	Lingo::b_point, 2, 2, true },
 	// Sound
 	{ "beep",	 		Lingo::b_beep,			0, 1, false },	// D2
+	{ "mci",	 		Lingo::b_mci,			1, 1, false },
+	{ "mciwait",		Lingo::b_mciwait,			1, 1, false },
 	{ 0, 0, 0, 0, false }
 };
 
@@ -565,6 +567,21 @@ void Lingo::b_beep(int nargs) {
 	warning("STUB: b_beep(%d)", d.u.i);
 }
 
+void Lingo::b_mci(int nargs) {
+	Datum d = g_lingo->pop();
+
+	d.toString();
+
+	g_lingo->func_mci(*d.u.s);
+}
+
+void Lingo::b_mciwait(int nargs) {
+	Datum d = g_lingo->pop();
+
+	d.toString();
+
+	g_lingo->func_mciwait(*d.u.s);
+}
 
 
 } // End of namespace Director
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 13778ee..31bea9e 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -657,22 +657,6 @@ void Lingo::c_ifcode() {
 //************************
 // Built-in functions
 //************************
-void Lingo::c_mci() {
-	Common::String s((char *)&(*g_lingo->_currentScript)[g_lingo->_pc]);
-
-	g_lingo->func_mci(s);
-
-	g_lingo->_pc += g_lingo->calcStringAlignment(s.c_str());
-}
-
-void Lingo::c_mciwait() {
-	Common::String s((char *)&(*g_lingo->_currentScript)[g_lingo->_pc]);
-
-	g_lingo->func_mciwait(s);
-
-	g_lingo->_pc += g_lingo->calcStringAlignment(s.c_str());
-}
-
 void Lingo::c_goto() {
 	Datum mode = g_lingo->pop();
 	Datum frame, movie;
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 2fc8fb9..1758d5c 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -98,42 +98,40 @@
      tINTO = 287,
      tLOOP = 288,
      tMACRO = 289,
-     tMCI = 290,
-     tMCIWAIT = 291,
-     tMOVIE = 292,
-     tNEXT = 293,
-     tOF = 294,
-     tPREVIOUS = 295,
-     tPUT = 296,
-     tREPEAT = 297,
-     tSET = 298,
-     tTHEN = 299,
-     tTO = 300,
-     tWHEN = 301,
-     tWITH = 302,
-     tWHILE = 303,
-     tNLELSE = 304,
-     tFACTORY = 305,
-     tMETHOD = 306,
-     tOPEN = 307,
-     tPLAY = 308,
-     tDONE = 309,
-     tPLAYACCEL = 310,
-     tGE = 311,
-     tLE = 312,
-     tGT = 313,
-     tLT = 314,
-     tEQ = 315,
-     tNEQ = 316,
-     tAND = 317,
-     tOR = 318,
-     tNOT = 319,
-     tCONCAT = 320,
-     tCONTAINS = 321,
-     tSTARTS = 322,
-     tSPRITE = 323,
-     tINTERSECTS = 324,
-     tWITHIN = 325
+     tMOVIE = 290,
+     tNEXT = 291,
+     tOF = 292,
+     tPREVIOUS = 293,
+     tPUT = 294,
+     tREPEAT = 295,
+     tSET = 296,
+     tTHEN = 297,
+     tTO = 298,
+     tWHEN = 299,
+     tWITH = 300,
+     tWHILE = 301,
+     tNLELSE = 302,
+     tFACTORY = 303,
+     tMETHOD = 304,
+     tOPEN = 305,
+     tPLAY = 306,
+     tDONE = 307,
+     tPLAYACCEL = 308,
+     tGE = 309,
+     tLE = 310,
+     tGT = 311,
+     tLT = 312,
+     tEQ = 313,
+     tNEQ = 314,
+     tAND = 315,
+     tOR = 316,
+     tNOT = 317,
+     tCONCAT = 318,
+     tCONTAINS = 319,
+     tSTARTS = 320,
+     tSPRITE = 321,
+     tINTERSECTS = 322,
+     tWITHIN = 323
    };
 #endif
 /* Tokens.  */
@@ -169,42 +167,40 @@
 #define tINTO 287
 #define tLOOP 288
 #define tMACRO 289
-#define tMCI 290
-#define tMCIWAIT 291
-#define tMOVIE 292
-#define tNEXT 293
-#define tOF 294
-#define tPREVIOUS 295
-#define tPUT 296
-#define tREPEAT 297
-#define tSET 298
-#define tTHEN 299
-#define tTO 300
-#define tWHEN 301
-#define tWITH 302
-#define tWHILE 303
-#define tNLELSE 304
-#define tFACTORY 305
-#define tMETHOD 306
-#define tOPEN 307
-#define tPLAY 308
-#define tDONE 309
-#define tPLAYACCEL 310
-#define tGE 311
-#define tLE 312
-#define tGT 313
-#define tLT 314
-#define tEQ 315
-#define tNEQ 316
-#define tAND 317
-#define tOR 318
-#define tNOT 319
-#define tCONCAT 320
-#define tCONTAINS 321
-#define tSTARTS 322
-#define tSPRITE 323
-#define tINTERSECTS 324
-#define tWITHIN 325
+#define tMOVIE 290
+#define tNEXT 291
+#define tOF 292
+#define tPREVIOUS 293
+#define tPUT 294
+#define tREPEAT 295
+#define tSET 296
+#define tTHEN 297
+#define tTO 298
+#define tWHEN 299
+#define tWITH 300
+#define tWHILE 301
+#define tNLELSE 302
+#define tFACTORY 303
+#define tMETHOD 304
+#define tOPEN 305
+#define tPLAY 306
+#define tDONE 307
+#define tPLAYACCEL 308
+#define tGE 309
+#define tLE 310
+#define tGT 311
+#define tLT 312
+#define tEQ 313
+#define tNEQ 314
+#define tAND 315
+#define tOR 316
+#define tNOT 317
+#define tCONCAT 318
+#define tCONTAINS 319
+#define tSTARTS 320
+#define tSPRITE 321
+#define tINTERSECTS 322
+#define tWITHIN 323
 
 
 
@@ -262,7 +258,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 193 of yacc.c.  */
-#line 266 "engines/director/lingo/lingo-gr.cpp"
+#line 262 "engines/director/lingo/lingo-gr.cpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -275,7 +271,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 279 "engines/director/lingo/lingo-gr.cpp"
+#line 275 "engines/director/lingo/lingo-gr.cpp"
 
 #ifdef short
 # undef short
@@ -488,22 +484,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  91
+#define YYFINAL  87
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   939
+#define YYLAST   921
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  84
+#define YYNTOKENS  82
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  35
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  126
+#define YYNRULES  124
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  263
+#define YYNSTATES  259
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   325
+#define YYMAXUTOK   323
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -512,12 +508,12 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      77,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      75,     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,    76,    82,     2,
-      78,    79,    74,    72,    83,    73,     2,    75,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    74,    80,     2,
+      76,    77,    72,    70,    81,    71,     2,    73,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      81,    71,    80,     2,     2,     2,     2,     2,     2,     2,
+      79,    69,    78,     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,
@@ -543,7 +539,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
+      65,    66,    67,    68
 };
 
 #if YYDEBUG
@@ -559,63 +555,63 @@ static const yytype_uint16 yyprhs[] =
      223,   224,   225,   228,   231,   233,   235,   237,   239,   244,
      246,   248,   251,   253,   257,   261,   265,   269,   273,   277,
      281,   285,   289,   293,   297,   300,   304,   308,   312,   316,
-     319,   322,   326,   331,   336,   339,   342,   345,   347,   349,
-     351,   354,   357,   360,   362,   365,   370,   373,   375,   379,
-     382,   385,   388,   391,   395,   398,   401,   403,   407,   410,
-     413,   416,   420,   423,   424,   433,   436,   437,   446,   447,
-     449,   453,   458,   459,   463,   464,   466
+     319,   322,   326,   331,   336,   339,   341,   343,   345,   348,
+     351,   354,   356,   359,   364,   367,   369,   373,   376,   379,
+     382,   385,   389,   392,   395,   397,   401,   404,   407,   410,
+     414,   417,   418,   427,   430,   431,   440,   441,   443,   447,
+     452,   453,   457,   458,   460
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      85,     0,    -1,    85,    86,    87,    -1,    87,    -1,     1,
-      86,    -1,    77,    -1,    -1,   112,    -1,   106,    -1,   117,
-      -1,    88,    -1,    90,    -1,    41,   105,    32,    20,    -1,
-      43,    20,    71,   105,    -1,    43,    12,    71,   105,    -1,
-      43,    13,   105,    71,   105,    -1,    43,    20,    45,   105,
-      -1,    43,    12,    45,   105,    -1,    43,    13,   105,    45,
-     105,    -1,   105,    -1,   106,    -1,    89,    -1,    91,    -1,
-      98,    78,    97,    79,   104,   103,    26,    42,    -1,    99,
-      71,   105,   103,    45,   105,   103,   104,   103,    26,    42,
-      -1,    99,    71,   105,   103,    23,    45,   105,   103,   104,
-     103,    26,    42,    -1,    46,    20,    44,   105,    -1,   100,
-      97,    44,    86,   104,   103,    26,    31,    -1,   100,    97,
-      44,    86,   104,   103,    49,   104,   103,    26,    31,    -1,
-     100,    97,    44,    86,   104,   103,   102,    93,   103,    26,
-      31,    -1,   100,    97,    44,   102,    89,   103,    -1,   100,
-      97,    44,   102,    89,   103,    49,   102,    89,   103,    -1,
-     100,    97,    44,   102,    89,   103,    94,   103,    92,   103,
-      -1,    -1,    49,   102,    89,    -1,    93,    96,    -1,    96,
-      -1,    94,    95,    -1,    95,    -1,   101,    97,    44,   102,
-      90,   103,    -1,    94,    -1,   101,    97,    44,   104,   103,
-      -1,   105,    -1,   105,    71,   105,    -1,    78,    97,    79,
-      -1,    42,    48,    -1,    42,    47,    20,    -1,    31,    -1,
-      25,    -1,    -1,    -1,    -1,   104,    86,    -1,   104,    90,
+      83,     0,    -1,    83,    84,    85,    -1,    85,    -1,     1,
+      84,    -1,    75,    -1,    -1,   110,    -1,   104,    -1,   115,
+      -1,    86,    -1,    88,    -1,    39,   103,    32,    20,    -1,
+      41,    20,    69,   103,    -1,    41,    12,    69,   103,    -1,
+      41,    13,   103,    69,   103,    -1,    41,    20,    43,   103,
+      -1,    41,    12,    43,   103,    -1,    41,    13,   103,    43,
+     103,    -1,   103,    -1,   104,    -1,    87,    -1,    89,    -1,
+      96,    76,    95,    77,   102,   101,    26,    40,    -1,    97,
+      69,   103,   101,    43,   103,   101,   102,   101,    26,    40,
+      -1,    97,    69,   103,   101,    23,    43,   103,   101,   102,
+     101,    26,    40,    -1,    44,    20,    42,   103,    -1,    98,
+      95,    42,    84,   102,   101,    26,    31,    -1,    98,    95,
+      42,    84,   102,   101,    47,   102,   101,    26,    31,    -1,
+      98,    95,    42,    84,   102,   101,   100,    91,   101,    26,
+      31,    -1,    98,    95,    42,   100,    87,   101,    -1,    98,
+      95,    42,   100,    87,   101,    47,   100,    87,   101,    -1,
+      98,    95,    42,   100,    87,   101,    92,   101,    90,   101,
+      -1,    -1,    47,   100,    87,    -1,    91,    94,    -1,    94,
+      -1,    92,    93,    -1,    93,    -1,    99,    95,    42,   100,
+      88,   101,    -1,    92,    -1,    99,    95,    42,   102,   101,
+      -1,   103,    -1,   103,    69,   103,    -1,    76,    95,    77,
+      -1,    40,    46,    -1,    40,    45,    20,    -1,    31,    -1,
+      25,    -1,    -1,    -1,    -1,   102,    84,    -1,   102,    88,
       -1,    11,    -1,    14,    -1,    21,    -1,    16,    -1,    20,
-      78,   118,    79,    -1,    20,    -1,    12,    -1,    13,   105,
-      -1,    88,    -1,   105,    72,   105,    -1,   105,    73,   105,
-      -1,   105,    74,   105,    -1,   105,    75,   105,    -1,   105,
-      80,   105,    -1,   105,    81,   105,    -1,   105,    61,   105,
-      -1,   105,    56,   105,    -1,   105,    57,   105,    -1,   105,
-      62,   105,    -1,   105,    63,   105,    -1,    64,   105,    -1,
-     105,    82,   105,    -1,   105,    65,   105,    -1,   105,    66,
-     105,    -1,   105,    67,   105,    -1,    72,   105,    -1,    73,
-     105,    -1,    78,   105,    79,    -1,    68,   105,    69,   105,
-      -1,    68,   105,    70,   105,    -1,    35,    21,    -1,    36,
-      20,    -1,    41,   105,    -1,   108,    -1,   111,    -1,    27,
-      -1,    29,   107,    -1,    18,   105,    -1,    17,   105,    -1,
-      17,    -1,    19,   118,    -1,    52,   105,    47,   105,    -1,
-      52,   105,    -1,    20,    -1,   107,    83,    20,    -1,    30,
-      33,    -1,    30,    38,    -1,    30,    40,    -1,    30,   109,
-      -1,    30,   109,   110,    -1,    30,   110,    -1,    28,   105,
-      -1,   105,    -1,    39,    37,   105,    -1,    37,   105,    -1,
-      53,    54,    -1,    53,   109,    -1,    53,   109,   110,    -1,
-      53,   110,    -1,    -1,    34,    20,   113,   102,   115,    86,
-     116,   104,    -1,    50,    20,    -1,    -1,    51,    20,   114,
-     102,   115,    86,   116,   104,    -1,    -1,    20,    -1,   115,
-      83,    20,    -1,   115,    86,    83,    20,    -1,    -1,    20,
-     102,   118,    -1,    -1,   105,    -1,   118,    83,   105,    -1
+      76,   116,    77,    -1,    20,    -1,    12,    -1,    13,   103,
+      -1,    86,    -1,   103,    70,   103,    -1,   103,    71,   103,
+      -1,   103,    72,   103,    -1,   103,    73,   103,    -1,   103,
+      78,   103,    -1,   103,    79,   103,    -1,   103,    59,   103,
+      -1,   103,    54,   103,    -1,   103,    55,   103,    -1,   103,
+      60,   103,    -1,   103,    61,   103,    -1,    62,   103,    -1,
+     103,    80,   103,    -1,   103,    63,   103,    -1,   103,    64,
+     103,    -1,   103,    65,   103,    -1,    70,   103,    -1,    71,
+     103,    -1,    76,   103,    77,    -1,    66,   103,    67,   103,
+      -1,    66,   103,    68,   103,    -1,    39,   103,    -1,   106,
+      -1,   109,    -1,    27,    -1,    29,   105,    -1,    18,   103,
+      -1,    17,   103,    -1,    17,    -1,    19,   116,    -1,    50,
+     103,    45,   103,    -1,    50,   103,    -1,    20,    -1,   105,
+      81,    20,    -1,    30,    33,    -1,    30,    36,    -1,    30,
+      38,    -1,    30,   107,    -1,    30,   107,   108,    -1,    30,
+     108,    -1,    28,   103,    -1,   103,    -1,    37,    35,   103,
+      -1,    35,   103,    -1,    51,    52,    -1,    51,   107,    -1,
+      51,   107,   108,    -1,    51,   108,    -1,    -1,    34,    20,
+     111,   100,   113,    84,   114,   102,    -1,    48,    20,    -1,
+      -1,    49,    20,   112,   100,   113,    84,   114,   102,    -1,
+      -1,    20,    -1,   113,    81,    20,    -1,   113,    84,    81,
+      20,    -1,    -1,    20,   100,   116,    -1,    -1,   103,    -1,
+     116,    81,   103,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -629,11 +625,11 @@ static const yytype_uint16 yyrline[] =
      337,   339,   340,   341,   344,   345,   348,   351,   355,   358,
      362,   369,   375,   376,   377,   378,   379,   380,   381,   382,
      383,   384,   385,   386,   387,   388,   389,   390,   391,   392,
-     393,   394,   395,   396,   399,   400,   401,   402,   403,   404,
-     406,   407,   410,   413,   416,   417,   418,   421,   422,   433,
-     434,   435,   436,   439,   442,   447,   448,   451,   452,   455,
-     456,   459,   462,   492,   492,   498,   501,   501,   507,   508,
-     509,   510,   512,   516,   524,   525,   526
+     393,   394,   395,   396,   399,   400,   401,   402,   404,   405,
+     408,   411,   414,   415,   416,   419,   420,   431,   432,   433,
+     434,   437,   440,   445,   446,   449,   450,   453,   454,   457,
+     460,   490,   490,   496,   499,   499,   505,   506,   507,   508,
+     510,   514,   522,   523,   524
 };
 #endif
 
@@ -647,9 +643,9 @@ static const char *const yytname[] =
   "THEENTITYWITHID", "FLOAT", "BLTIN", "BLTINNOARGS", "BLTINNOARGSORONE",
   "BLTINONEARG", "BLTINARGLIST", "ID", "STRING", "HANDLER", "tDOWN",
   "tELSE", "tNLELSIF", "tEND", "tEXIT", "tFRAME", "tGLOBAL", "tGO", "tIF",
-  "tINTO", "tLOOP", "tMACRO", "tMCI", "tMCIWAIT", "tMOVIE", "tNEXT", "tOF",
-  "tPREVIOUS", "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH",
-  "tWHILE", "tNLELSE", "tFACTORY", "tMETHOD", "tOPEN", "tPLAY", "tDONE",
+  "tINTO", "tLOOP", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS",
+  "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE",
+  "tNLELSE", "tFACTORY", "tMETHOD", "tOPEN", "tPLAY", "tDONE",
   "tPLAYACCEL", "tGE", "tLE", "tGT", "tLT", "tEQ", "tNEQ", "tAND", "tOR",
   "tNOT", "tCONCAT", "tCONTAINS", "tSTARTS", "tSPRITE", "tINTERSECTS",
   "tWITHIN", "'='", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('",
@@ -674,28 +670,28 @@ static const yytype_uint16 yytoknum[] =
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      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,    61,    43,    45,    42,    47,    37,    10,    40,    41,
-      62,    60,    38,    44
+     315,   316,   317,   318,   319,   320,   321,   322,   323,    61,
+      43,    45,    42,    47,    37,    10,    40,    41,    62,    60,
+      38,    44
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    84,    85,    85,    85,    86,    87,    87,    87,    87,
-      87,    87,    88,    88,    88,    88,    88,    88,    88,    89,
-      89,    90,    90,    90,    90,    90,    90,    91,    91,    91,
-      91,    91,    91,    92,    92,    93,    93,    94,    94,    95,
-      96,    96,    97,    97,    97,    98,    99,   100,   101,   102,
-     103,   104,   104,   104,   105,   105,   105,   105,   105,   105,
-     105,   105,   105,   105,   105,   105,   105,   105,   105,   105,
-     105,   105,   105,   105,   105,   105,   105,   105,   105,   105,
-     105,   105,   105,   105,   106,   106,   106,   106,   106,   106,
-     106,   106,   106,   106,   106,   106,   106,   107,   107,   108,
-     108,   108,   108,   108,   108,   109,   109,   110,   110,   111,
-     111,   111,   111,   113,   112,   112,   114,   112,   115,   115,
-     115,   115,   116,   117,   118,   118,   118
+       0,    82,    83,    83,    83,    84,    85,    85,    85,    85,
+      85,    85,    86,    86,    86,    86,    86,    86,    86,    87,
+      87,    88,    88,    88,    88,    88,    88,    89,    89,    89,
+      89,    89,    89,    90,    90,    91,    91,    92,    92,    93,
+      94,    94,    95,    95,    95,    96,    97,    98,    99,   100,
+     101,   102,   102,   102,   103,   103,   103,   103,   103,   103,
+     103,   103,   103,   103,   103,   103,   103,   103,   103,   103,
+     103,   103,   103,   103,   103,   103,   103,   103,   103,   103,
+     103,   103,   103,   103,   104,   104,   104,   104,   104,   104,
+     104,   104,   104,   104,   104,   105,   105,   106,   106,   106,
+     106,   106,   106,   107,   107,   108,   108,   109,   109,   109,
+     109,   111,   110,   110,   112,   110,   113,   113,   113,   113,
+     114,   115,   116,   116,   116
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -709,11 +705,11 @@ static const yytype_uint8 yyr2[] =
        0,     0,     2,     2,     1,     1,     1,     1,     4,     1,
        1,     2,     1,     3,     3,     3,     3,     3,     3,     3,
        3,     3,     3,     3,     2,     3,     3,     3,     3,     2,
-       2,     3,     4,     4,     2,     2,     2,     1,     1,     1,
-       2,     2,     2,     1,     2,     4,     2,     1,     3,     2,
-       2,     2,     2,     3,     2,     2,     1,     3,     2,     2,
-       2,     3,     2,     0,     8,     2,     0,     8,     0,     1,
-       3,     4,     0,     3,     0,     1,     3
+       2,     3,     4,     4,     2,     1,     1,     1,     2,     2,
+       2,     1,     2,     4,     2,     1,     3,     2,     2,     2,
+       2,     3,     2,     2,     1,     3,     2,     2,     2,     3,
+       2,     0,     8,     2,     0,     8,     0,     1,     3,     4,
+       0,     3,     0,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -721,85 +717,83 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    54,    60,     0,    55,    57,    93,     0,   124,
-      49,    56,    89,     0,     0,    47,     0,     0,     0,     0,
+       0,     0,    54,    60,     0,    55,    57,    91,     0,   122,
+      49,    56,    87,     0,     0,    47,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     3,    62,    21,    11,    22,     0,     0,
-       0,    19,     8,    87,    88,     7,     9,     5,     4,    59,
-       0,    62,    61,    92,    91,   125,    94,   124,   124,    97,
-      90,     0,    99,     0,   100,     0,   101,   106,   102,   104,
-     113,    84,    85,    86,     0,    45,     0,     0,     0,     0,
-     115,   116,    96,   109,   110,   112,    74,     0,    79,    80,
-       0,     1,     6,     0,     0,     0,     0,    42,     0,     0,
+       0,     3,    62,    21,    11,    22,     0,     0,     0,    19,
+       8,    85,    86,     7,     9,     5,     4,    59,     0,    62,
+      61,    90,    89,   123,    92,   122,   122,    95,    88,     0,
+      97,     0,    98,     0,    99,   104,   100,   102,   111,    84,
+       0,    45,     0,     0,     0,     0,   113,   114,    94,   107,
+     108,   110,    74,     0,    79,    80,     0,     1,     6,     0,
+       0,     0,     0,    42,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   123,     0,   105,   108,
-       0,   103,    49,     0,    46,     0,     0,     0,     0,     0,
-       0,    49,     0,   111,     0,     0,    81,     2,     0,    50,
-       0,     0,    49,     0,    70,    71,    69,    72,    73,    76,
-      77,    78,    63,    64,    65,    66,    67,    68,    75,   126,
-      58,    98,   107,   118,    12,    17,    14,     0,     0,    16,
-      13,    26,   118,    95,    82,    83,    51,     0,    44,    51,
-       0,    43,   119,     0,    18,    15,     0,    50,     0,     0,
-      50,    50,    20,     0,   122,   122,    52,    53,     0,     0,
-      50,    49,    30,   120,     0,    51,    51,     0,    50,    51,
-       0,    51,     0,    48,    49,    50,    38,     0,   121,   114,
-     117,    23,    51,    50,    27,    50,    50,    40,    36,     0,
-       0,    37,    33,     0,    50,     0,     0,    35,     0,     0,
-      50,    49,    50,    49,     0,     0,     0,     0,    49,    31,
-       0,    32,     0,     0,    24,    28,    29,    50,    34,    50,
-      25,    41,    39
+       0,     0,   121,     0,   103,   106,     0,   101,    49,     0,
+      46,     0,     0,     0,     0,     0,     0,    49,     0,   109,
+       0,     0,    81,     2,     0,    50,     0,     0,    49,     0,
+      70,    71,    69,    72,    73,    76,    77,    78,    63,    64,
+      65,    66,    67,    68,    75,   124,    58,    96,   105,   116,
+      12,    17,    14,     0,     0,    16,    13,    26,   116,    93,
+      82,    83,    51,     0,    44,    51,     0,    43,   117,     0,
+      18,    15,     0,    50,     0,     0,    50,    50,    20,     0,
+     120,   120,    52,    53,     0,     0,    50,    49,    30,   118,
+       0,    51,    51,     0,    50,    51,     0,    51,     0,    48,
+      49,    50,    38,     0,   119,   112,   115,    23,    51,    50,
+      27,    50,    50,    40,    36,     0,     0,    37,    33,     0,
+      50,     0,     0,    35,     0,     0,    50,    49,    50,    49,
+       0,     0,     0,     0,    49,    31,     0,    32,     0,     0,
+      24,    28,    29,    50,    34,    50,    25,    41,    39
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    32,   196,    33,    51,    35,   197,    37,   242,   226,
-     227,   216,   228,    96,    38,    39,    40,   217,   252,   177,
-     187,    41,   192,    60,    43,    68,    69,    44,    45,   122,
-     131,   183,   205,    46,    56
+      -1,    30,   192,    31,    49,    33,   193,    35,   238,   222,
+     223,   212,   224,    92,    36,    37,    38,   213,   248,   173,
+     183,    39,   188,    58,    41,    66,    67,    42,    43,   118,
+     127,   179,   201,    44,    54
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -199
+#define YYPACT_NINF -198
 static const yytype_int16 yypact[] =
 {
-     248,   -50,  -199,  -199,   169,  -199,  -199,   169,   169,   169,
-      49,  -199,  -199,     9,   588,  -199,    13,    26,    18,   169,
-       4,    11,    34,    36,    39,   169,   626,   169,   169,   169,
-     169,   169,     6,  -199,     7,  -199,  -199,  -199,   -17,    -7,
-     394,   813,  -199,  -199,  -199,  -199,  -199,  -199,  -199,   -16,
-     169,  -199,   813,   813,   813,   813,   -18,   169,   169,  -199,
-      -6,   169,  -199,   169,  -199,    43,  -199,   813,    -5,  -199,
-    -199,  -199,  -199,   640,    56,  -199,   -36,   169,   -28,    38,
-    -199,  -199,   693,  -199,    -5,  -199,   857,   715,   857,   857,
-     764,  -199,   348,   394,   169,   394,    42,   791,   169,   169,
-     169,   169,   169,   169,   169,   169,   169,   169,   169,   169,
-     169,   169,   169,   640,   169,   -58,   -18,    65,   813,   813,
-     169,  -199,  -199,    67,  -199,   169,   169,   671,   169,   169,
-     169,  -199,   169,  -199,   169,   169,  -199,  -199,    10,   813,
-      14,   737,   -50,   169,   813,   813,   813,   813,   813,   813,
-     813,   813,   835,   835,   857,   857,   813,   813,   813,   813,
-    -199,  -199,   813,    68,  -199,   813,   813,   169,   169,   813,
-     813,   813,    68,   813,   813,   813,  -199,    -4,  -199,  -199,
-     542,   813,  -199,   -57,   813,   813,   -57,   411,    45,   169,
-     411,  -199,  -199,    74,    20,    20,  -199,  -199,    70,   169,
-     813,   -10,    -3,  -199,    80,  -199,  -199,    59,   813,  -199,
-      76,  -199,    83,  -199,  -199,    83,  -199,   394,  -199,   411,
-     411,  -199,  -199,   411,  -199,   411,    83,    83,  -199,   394,
-     542,  -199,    60,    73,   411,    93,    94,  -199,    95,    81,
-    -199,  -199,  -199,  -199,   102,    90,   106,   125,   -14,  -199,
-     542,  -199,   479,   116,  -199,  -199,  -199,   411,  -199,  -199,
-    -199,  -199,  -199
+     244,   -52,  -198,  -198,   386,  -198,  -198,   386,   386,   386,
+     792,  -198,  -198,    19,   574,  -198,    23,   386,    11,     7,
+      27,    42,    43,   386,   614,   386,   386,   386,   386,   386,
+       5,  -198,     6,  -198,  -198,  -198,   -47,    -8,   513,   770,
+    -198,  -198,  -198,  -198,  -198,  -198,  -198,    -5,   386,  -198,
+     770,   770,   770,   770,    -6,   386,   386,  -198,     1,   386,
+    -198,   386,  -198,    37,  -198,   770,     9,  -198,  -198,   152,
+      56,  -198,   -36,   386,   -28,    36,  -198,  -198,   650,  -198,
+       9,  -198,   841,   672,   841,   841,   721,  -198,   342,   513,
+     386,   513,    44,   748,   386,   386,   386,   386,   386,   386,
+     386,   386,   386,   386,   386,   386,   386,   386,   386,   152,
+     386,   -56,    -6,    63,   770,   770,   386,  -198,  -198,    64,
+    -198,   386,   386,   628,   386,   386,   386,  -198,   386,  -198,
+     386,   386,  -198,  -198,     8,   770,    10,   694,   -52,   386,
+     770,   770,   770,   770,   770,   770,   770,   770,   819,   819,
+     841,   841,   770,   770,   770,   770,  -198,  -198,   770,    72,
+    -198,   770,   770,   386,   386,   770,   770,   770,    72,   770,
+     770,   770,  -198,   -11,  -198,  -198,   530,   770,  -198,   -57,
+     770,   770,   -57,   403,    50,   386,   403,  -198,  -198,    74,
+      14,    14,  -198,  -198,    73,   386,   770,   -10,   -16,  -198,
+      78,  -198,  -198,    61,   770,  -198,    75,  -198,    79,  -198,
+    -198,    79,  -198,   513,  -198,   403,   403,  -198,  -198,   403,
+    -198,   403,    79,    79,  -198,   513,   530,  -198,    58,    65,
+     403,    77,    82,  -198,    84,    69,  -198,  -198,  -198,  -198,
+      86,    76,    88,    89,   -15,  -198,   530,  -198,   469,    81,
+    -198,  -198,  -198,   403,  -198,  -198,  -198,  -198,  -198
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -199,  -199,    12,    71,     3,  -172,     0,  -199,  -199,  -199,
-     -45,  -197,   -67,   -91,  -199,  -199,  -199,  -198,    -9,   115,
-    -169,    41,     5,  -199,  -199,   134,   -11,  -199,  -199,  -199,
-    -199,    -8,   -33,  -199,    17
+    -198,  -198,    12,    25,     2,  -172,     0,  -198,  -198,  -198,
+     -83,  -197,  -105,   -61,  -198,  -198,  -198,  -186,    -9,   113,
+    -167,    41,     3,  -198,  -198,    98,    -7,  -198,  -198,  -198,
+    -198,   -45,   -67,  -198,    -3
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -809,198 +803,196 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -60
 static const yytype_int16 yytable[] =
 {
-      36,    58,   138,    34,   140,    42,    91,   -10,   191,   125,
-     190,   -51,   -51,    48,   229,    85,   210,   128,   231,   188,
-      47,   160,   213,    76,    77,   114,   193,    47,   229,    59,
-     231,    78,    63,    70,    65,   126,   219,   220,    72,   211,
-     223,   189,   225,   129,    92,    52,   214,    71,    53,    54,
-      55,    74,    75,   234,    79,    67,    80,   121,   240,    81,
-      73,    93,    57,   -51,    94,   114,    82,    67,    86,    87,
-      88,    89,    90,   133,   115,   116,   124,   117,   258,   257,
-     120,    97,   130,    47,   -10,   161,   142,   164,   182,   176,
-     199,   113,    36,   178,   203,    34,   207,    42,    55,    55,
-     218,   221,   118,   204,   119,   -59,   -59,   224,   213,   241,
-     -59,   -59,   -59,   163,   -59,   -59,   -59,   243,   127,   245,
-     246,   247,   172,   -59,   -59,   248,   233,    57,   253,   -59,
-     -59,   -59,   254,   180,    97,   139,   141,   255,   239,   144,
+      34,    56,    32,    40,   187,    87,   -10,   121,   186,   209,
+     -51,   -51,   184,    46,   227,   124,   206,    81,    45,    72,
+      73,   156,   225,    45,   189,   110,   227,    74,   134,    89,
+     136,   210,   185,   122,   215,   216,   225,   207,   219,    57,
+     221,   125,    88,    68,    61,    50,    63,    75,    51,    52,
+      53,   230,   111,   112,   236,    65,    70,    71,    69,   117,
+     -51,    90,    76,    77,    78,    65,    82,    83,    84,    85,
+      86,    55,   116,   129,   254,   110,   120,   253,   126,    93,
+      45,   -10,   113,   157,   160,   172,   138,   174,    34,   109,
+      32,    40,   178,   195,   199,   200,    53,    53,   214,   203,
+     114,   217,   115,   241,   209,   237,   220,   239,   242,   159,
+     243,   244,   249,   133,   123,   211,   250,   233,   168,   251,
+     252,   256,    80,   182,   202,     0,     0,     0,     0,   176,
+      93,   135,   137,     0,     0,   140,   141,   142,   143,   144,
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   179,   159,   256,   215,   260,   237,
-      84,   162,   206,   137,   186,     0,   165,   166,     0,   169,
-     170,   171,     0,   173,     0,   174,   175,     0,     0,     0,
-       2,     3,     4,     5,   181,     6,     0,     0,     0,    49,
-      11,     0,   212,     0,     0,   194,     0,     0,   195,     0,
-       0,     0,     0,     0,     0,   230,     0,     0,   184,   185,
-      50,     0,    21,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     200,     0,   250,    27,     0,     0,     0,    28,     0,     0,
-     208,    29,    30,     0,     0,     0,     0,    31,    -6,     1,
-       0,     0,   259,     0,     0,     0,     0,     0,    97,     2,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,    11,
-      97,     0,     0,     0,     0,    12,     0,    13,    14,    15,
-       0,     0,    16,    17,    18,     0,     0,     0,     0,    19,
-      20,    21,     0,     0,    22,     0,     0,     0,    23,    24,
-      25,    26,   198,     0,     0,   201,   202,     0,     0,     0,
-       0,     0,    27,     0,     0,   209,    28,     0,     0,     0,
-      29,    30,     0,   222,     0,    -6,    31,     0,     0,     0,
-     232,     0,     0,     0,     0,     0,     0,     0,   235,     0,
-     236,   238,     0,     0,     0,     0,     0,     0,     0,   244,
-       0,     0,     0,     0,     0,   249,     0,   251,     0,     2,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,    11,
-       0,     0,   261,     0,   262,    12,     0,    13,    14,    15,
-       0,     0,    16,    17,    18,     0,     0,     0,     0,    19,
-      20,    21,     0,     0,    22,     0,     0,     0,    23,    24,
-      25,    26,     0,     0,     0,     2,     3,     4,     5,     0,
-       6,     0,    27,     0,    49,    11,    28,     0,     0,     0,
-      29,    30,     2,     3,     4,     5,    31,     6,     7,     8,
-       9,    49,    11,     0,     0,    50,     0,    21,    12,     0,
-      13,    14,    15,     0,     0,     0,    17,    18,     0,     0,
-       0,     0,    19,    20,    21,     0,     0,    22,    27,     0,
-       0,     0,    28,    25,    26,     0,    29,    30,     0,     0,
-       0,     0,    95,     0,     0,    27,     0,     0,     0,    28,
-       0,     0,     0,    29,    30,     0,     0,     0,    47,    31,
-       2,     3,     4,     5,     0,     6,     7,     8,     9,    49,
+     175,   155,   229,     0,     0,     0,     0,   158,     0,     0,
+       0,     0,   161,   162,   235,   165,   166,   167,     0,   169,
+       0,   170,   171,     0,     0,     0,     0,     0,     0,     0,
+     177,     0,     0,     0,   119,     0,     0,     0,   208,     0,
+       0,   190,     0,     0,   191,     0,     0,     0,     0,     0,
+       0,   226,     0,     0,   180,   181,    94,    95,     0,     0,
+       0,    96,    97,    98,     0,    99,   100,   101,     0,     0,
+       0,     0,   102,   103,   104,   105,   196,     0,   246,     0,
+     106,   107,   108,     0,     0,     0,   204,     0,     0,     0,
+       0,     0,     0,     0,    -6,     1,     0,     0,   255,     0,
+       0,     0,     0,     0,    93,     2,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,    11,    93,     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,   194,     0,     0,   197,
+     198,     0,     0,     0,     0,     0,    25,     0,     0,   205,
+      26,     0,     0,     0,    27,    28,     0,   218,     0,    -6,
+      29,     0,     0,     0,   228,     0,     0,     0,     0,     0,
+       0,     0,   231,     0,   232,   234,     0,     0,     0,     0,
+       0,     0,     0,   240,     0,     0,     0,     0,     0,   245,
+       0,   247,     0,     2,     3,     4,     5,     0,     6,     7,
+       8,     9,    10,    11,     0,     0,   257,     0,   258,    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,     0,     2,     3,     4,
+       5,     0,     6,     0,    25,     0,    47,    11,    26,     0,
+       0,     0,    27,    28,     2,     3,     4,     5,    29,     6,
+       7,     8,     9,    47,    11,    48,     0,    19,     0,     0,
+      12,     0,    13,    14,    15,     0,     0,     0,     0,     0,
+       0,     0,    17,    18,    19,     0,     0,    20,    25,     0,
+       0,     0,    26,    23,    24,     0,    27,    28,     0,     0,
+       0,     0,    29,     0,     0,    25,     0,     0,     0,    26,
+       0,     0,     0,    27,    28,     0,     0,     0,    45,    29,
+       2,     3,     4,     5,     0,     6,     7,     8,     9,    47,
       11,     0,     0,     0,     0,     0,    12,     0,    13,    14,
-      15,     0,     0,     0,    17,    18,     0,     0,     0,     0,
-      19,    20,    21,     0,     0,    22,     0,     0,     0,     0,
-       0,    25,    26,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    27,     0,     0,     0,    28,     0,     0,
-       0,    29,    30,     2,     3,     4,     5,    31,     6,     7,
-       8,     9,    49,    11,     0,     0,     0,     0,     0,    12,
-       0,    13,    14,     0,     0,     0,     0,    17,    18,     0,
-       0,     0,     0,    19,     0,    21,     0,     0,     0,     0,
-       0,     0,     0,     0,    25,    26,     0,     0,     0,     2,
-       3,     4,     5,     0,     6,     0,    27,     0,    49,    11,
-      28,     0,     0,     0,    29,    30,    61,     0,     0,     0,
-      31,    62,     0,     0,     0,    63,    64,    65,    66,    50,
-       0,    21,     0,     0,     0,     0,     0,     2,     3,     4,
-       5,     0,     6,     0,     0,     0,    49,    11,     0,     0,
-       0,     0,    27,     0,    61,     0,    28,     0,     0,     0,
-      29,    30,     0,    63,     0,    65,    31,    50,     0,    21,
-       0,     0,   123,     0,     0,     0,     0,     0,     0,     0,
-      83,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      27,     0,     0,     0,    28,     0,    98,    99,    29,    30,
-       0,   100,   101,   102,    31,   103,   104,   105,     0,     0,
-       0,     0,   106,   107,   108,   109,   167,     0,     0,     0,
-     110,   111,   112,     0,     0,     0,     0,    98,    99,     0,
-       0,     0,   100,   101,   102,     0,   103,   104,   105,     0,
-     132,     0,   168,   106,   107,   108,   109,     0,     0,    98,
-      99,   110,   111,   112,   100,   101,   102,     0,   103,   104,
-     105,     0,     0,     0,     0,   106,   107,   108,   109,     0,
-       0,    98,    99,   110,   111,   112,   100,   101,   102,     0,
-     103,   104,   105,     0,   134,   135,     0,   106,   107,   108,
-     109,     0,     0,    98,    99,   110,   111,   112,   100,   101,
-     102,     0,   103,   104,   105,     0,     0,     0,   143,   106,
-     107,   108,   109,     0,     0,     0,   136,   110,   111,   112,
-      98,    99,     0,     0,     0,   100,   101,   102,     0,   103,
-     104,   105,     0,     0,     0,     0,   106,   107,   108,   109,
-       0,     0,     0,   136,   110,   111,   112,    98,    99,     0,
-       0,     0,   100,   101,   102,     0,   103,   104,   105,     0,
-       0,     0,   143,   106,   107,   108,   109,     0,     0,    98,
-      99,   110,   111,   112,   100,   101,   102,     0,   103,   104,
-     105,     0,     0,     0,     0,   106,   107,   108,   109,     0,
-       0,    98,    99,   110,   111,   112,   100,   101,   102,     0,
-     103,   104,   105,     0,     0,     0,     0,     0,     0,   108,
-     109,     0,     0,    98,    99,   110,   111,   112,   100,   101,
-     102,     0,   103,   104,   105,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   110,   111,   112
+      15,     0,     0,     0,     0,     0,     0,     0,    17,    18,
+      19,     0,     0,    20,     0,     0,     0,     0,     0,    23,
+      24,     0,     0,     0,     2,     3,     4,     5,     0,     6,
+       0,    25,     0,    47,    11,    26,     0,     0,     0,    27,
+      28,     2,     3,     4,     5,    29,     6,     7,     8,     9,
+      47,    11,    48,     0,    19,     0,     0,    12,     0,    13,
+      14,     0,     0,     0,     0,     0,     0,     0,     0,    17,
+       0,    19,     0,     0,     0,    25,     0,     0,     0,    26,
+      23,    24,     0,    27,    28,     2,     3,     4,     5,    91,
+       6,     0,    25,     0,    47,    11,    26,     0,     0,     0,
+      27,    28,    59,     0,     0,     0,    29,    60,     0,    61,
+      62,    63,    64,    48,     0,    19,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     2,     3,     4,     5,     0,
+       6,     0,     0,     0,    47,    11,    25,     0,     0,     0,
+      26,     0,    59,     0,    27,    28,     0,     0,     0,    61,
+      29,    63,     0,    48,     0,    19,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    79,     0,     0,     0,
+       0,   163,     0,     0,     0,     0,    25,     0,     0,     0,
+      26,     0,    94,    95,    27,    28,     0,    96,    97,    98,
+      29,    99,   100,   101,     0,   128,     0,   164,   102,   103,
+     104,   105,     0,     0,    94,    95,   106,   107,   108,    96,
+      97,    98,     0,    99,   100,   101,     0,     0,     0,     0,
+     102,   103,   104,   105,     0,     0,    94,    95,   106,   107,
+     108,    96,    97,    98,     0,    99,   100,   101,     0,   130,
+     131,     0,   102,   103,   104,   105,     0,     0,    94,    95,
+     106,   107,   108,    96,    97,    98,     0,    99,   100,   101,
+       0,     0,     0,   139,   102,   103,   104,   105,     0,     0,
+       0,   132,   106,   107,   108,    94,    95,     0,     0,     0,
+      96,    97,    98,     0,    99,   100,   101,     0,     0,     0,
+       0,   102,   103,   104,   105,     0,     0,     0,   132,   106,
+     107,   108,    94,    95,     0,     0,     0,    96,    97,    98,
+       0,    99,   100,   101,     0,     0,     0,   139,   102,   103,
+     104,   105,     0,     0,    94,    95,   106,   107,   108,    96,
+      97,    98,     0,    99,   100,   101,     0,     0,     0,     0,
+     102,   103,   104,   105,     0,     0,   -59,   -59,   106,   107,
+     108,   -59,   -59,   -59,     0,   -59,   -59,   -59,     0,     0,
+       0,     0,     0,     0,   -59,   -59,     0,     0,    55,     0,
+     -59,   -59,   -59,    94,    95,     0,     0,     0,    96,    97,
+      98,     0,    99,   100,   101,     0,     0,     0,     0,     0,
+       0,   104,   105,     0,     0,    94,    95,   106,   107,   108,
+      96,    97,    98,     0,    99,   100,   101,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   106,
+     107,   108
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    10,    93,     0,    95,     0,     0,     0,   180,    45,
-     179,    25,    26,     1,   212,    26,    26,    45,   215,    23,
-      77,    79,    25,    12,    13,    83,    83,    77,   226,    20,
-     227,    20,    37,    20,    39,    71,   205,   206,    20,    49,
-     209,    45,   211,    71,    32,     4,    49,    21,     7,     8,
-       9,    47,    48,   222,    20,    14,    20,    68,   230,    20,
-      19,    78,    78,    77,    71,    83,    25,    26,    27,    28,
-      29,    30,    31,    84,    57,    58,    20,    83,   250,   248,
-      37,    40,    44,    77,    77,    20,    44,    20,    20,    79,
-      45,    50,    92,    79,    20,    92,    26,    92,    57,    58,
-      20,    42,    61,    83,    63,    56,    57,    31,    25,    49,
-      61,    62,    63,   122,    65,    66,    67,    44,    77,    26,
-      26,    26,   131,    74,    75,    44,   217,    78,    26,    80,
-      81,    82,    42,   142,    93,    94,    95,    31,   229,    98,
+       0,    10,     0,     0,   176,     0,     0,    43,   175,    25,
+      25,    26,    23,     1,   211,    43,    26,    24,    75,    12,
+      13,    77,   208,    75,    81,    81,   223,    20,    89,    76,
+      91,    47,    43,    69,   201,   202,   222,    47,   205,    20,
+     207,    69,    30,    20,    35,     4,    37,    20,     7,     8,
+       9,   218,    55,    56,   226,    14,    45,    46,    17,    66,
+      75,    69,    20,    20,    23,    24,    25,    26,    27,    28,
+      29,    76,    35,    80,   246,    81,    20,   244,    42,    38,
+      75,    75,    81,    20,    20,    77,    42,    77,    88,    48,
+      88,    88,    20,    43,    20,    81,    55,    56,    20,    26,
+      59,    40,    61,    26,    25,    47,    31,    42,    26,   118,
+      26,    42,    26,    88,    73,   198,    40,   222,   127,    31,
+      31,    40,    24,   168,   191,    -1,    -1,    -1,    -1,   138,
+      89,    90,    91,    -1,    -1,    94,    95,    96,    97,    98,
       99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-     109,   110,   111,   112,   142,   114,    31,   202,    42,   226,
-      26,   120,   195,    92,   172,    -1,   125,   126,    -1,   128,
-     129,   130,    -1,   132,    -1,   134,   135,    -1,    -1,    -1,
-      11,    12,    13,    14,   143,    16,    -1,    -1,    -1,    20,
-      21,    -1,   201,    -1,    -1,   183,    -1,    -1,   186,    -1,
-      -1,    -1,    -1,    -1,    -1,   214,    -1,    -1,   167,   168,
-      41,    -1,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     189,    -1,   241,    64,    -1,    -1,    -1,    68,    -1,    -1,
-     199,    72,    73,    -1,    -1,    -1,    -1,    78,     0,     1,
-      -1,    -1,   252,    -1,    -1,    -1,    -1,    -1,   217,    11,
-      12,    13,    14,    -1,    16,    17,    18,    19,    20,    21,
-     229,    -1,    -1,    -1,    -1,    27,    -1,    29,    30,    31,
-      -1,    -1,    34,    35,    36,    -1,    -1,    -1,    -1,    41,
-      42,    43,    -1,    -1,    46,    -1,    -1,    -1,    50,    51,
-      52,    53,   187,    -1,    -1,   190,   191,    -1,    -1,    -1,
-      -1,    -1,    64,    -1,    -1,   200,    68,    -1,    -1,    -1,
-      72,    73,    -1,   208,    -1,    77,    78,    -1,    -1,    -1,
-     215,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   223,    -1,
-     225,   226,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   234,
-      -1,    -1,    -1,    -1,    -1,   240,    -1,   242,    -1,    11,
-      12,    13,    14,    -1,    16,    17,    18,    19,    20,    21,
-      -1,    -1,   257,    -1,   259,    27,    -1,    29,    30,    31,
-      -1,    -1,    34,    35,    36,    -1,    -1,    -1,    -1,    41,
-      42,    43,    -1,    -1,    46,    -1,    -1,    -1,    50,    51,
-      52,    53,    -1,    -1,    -1,    11,    12,    13,    14,    -1,
-      16,    -1,    64,    -1,    20,    21,    68,    -1,    -1,    -1,
-      72,    73,    11,    12,    13,    14,    78,    16,    17,    18,
-      19,    20,    21,    -1,    -1,    41,    -1,    43,    27,    -1,
-      29,    30,    31,    -1,    -1,    -1,    35,    36,    -1,    -1,
-      -1,    -1,    41,    42,    43,    -1,    -1,    46,    64,    -1,
-      -1,    -1,    68,    52,    53,    -1,    72,    73,    -1,    -1,
-      -1,    -1,    78,    -1,    -1,    64,    -1,    -1,    -1,    68,
-      -1,    -1,    -1,    72,    73,    -1,    -1,    -1,    77,    78,
+     138,   110,   213,    -1,    -1,    -1,    -1,   116,    -1,    -1,
+      -1,    -1,   121,   122,   225,   124,   125,   126,    -1,   128,
+      -1,   130,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     139,    -1,    -1,    -1,    32,    -1,    -1,    -1,   197,    -1,
+      -1,   179,    -1,    -1,   182,    -1,    -1,    -1,    -1,    -1,
+      -1,   210,    -1,    -1,   163,   164,    54,    55,    -1,    -1,
+      -1,    59,    60,    61,    -1,    63,    64,    65,    -1,    -1,
+      -1,    -1,    70,    71,    72,    73,   185,    -1,   237,    -1,
+      78,    79,    80,    -1,    -1,    -1,   195,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     0,     1,    -1,    -1,   248,    -1,
+      -1,    -1,    -1,    -1,   213,    11,    12,    13,    14,    -1,
+      16,    17,    18,    19,    20,    21,   225,    -1,    -1,    -1,
+      -1,    27,    -1,    29,    30,    31,    -1,    -1,    34,    -1,
+      -1,    -1,    -1,    39,    40,    41,    -1,    -1,    44,    -1,
+      -1,    -1,    48,    49,    50,    51,   183,    -1,    -1,   186,
+     187,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,   196,
+      66,    -1,    -1,    -1,    70,    71,    -1,   204,    -1,    75,
+      76,    -1,    -1,    -1,   211,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   219,    -1,   221,   222,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   230,    -1,    -1,    -1,    -1,    -1,   236,
+      -1,   238,    -1,    11,    12,    13,    14,    -1,    16,    17,
+      18,    19,    20,    21,    -1,    -1,   253,    -1,   255,    27,
+      -1,    29,    30,    31,    -1,    -1,    34,    -1,    -1,    -1,
+      -1,    39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,
+      48,    49,    50,    51,    -1,    -1,    -1,    11,    12,    13,
+      14,    -1,    16,    -1,    62,    -1,    20,    21,    66,    -1,
+      -1,    -1,    70,    71,    11,    12,    13,    14,    76,    16,
+      17,    18,    19,    20,    21,    39,    -1,    41,    -1,    -1,
+      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    39,    40,    41,    -1,    -1,    44,    62,    -1,
+      -1,    -1,    66,    50,    51,    -1,    70,    71,    -1,    -1,
+      -1,    -1,    76,    -1,    -1,    62,    -1,    -1,    -1,    66,
+      -1,    -1,    -1,    70,    71,    -1,    -1,    -1,    75,    76,
       11,    12,    13,    14,    -1,    16,    17,    18,    19,    20,
       21,    -1,    -1,    -1,    -1,    -1,    27,    -1,    29,    30,
-      31,    -1,    -1,    -1,    35,    36,    -1,    -1,    -1,    -1,
-      41,    42,    43,    -1,    -1,    46,    -1,    -1,    -1,    -1,
-      -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    64,    -1,    -1,    -1,    68,    -1,    -1,
-      -1,    72,    73,    11,    12,    13,    14,    78,    16,    17,
-      18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,    27,
-      -1,    29,    30,    -1,    -1,    -1,    -1,    35,    36,    -1,
-      -1,    -1,    -1,    41,    -1,    43,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    52,    53,    -1,    -1,    -1,    11,
-      12,    13,    14,    -1,    16,    -1,    64,    -1,    20,    21,
-      68,    -1,    -1,    -1,    72,    73,    28,    -1,    -1,    -1,
-      78,    33,    -1,    -1,    -1,    37,    38,    39,    40,    41,
-      -1,    43,    -1,    -1,    -1,    -1,    -1,    11,    12,    13,
-      14,    -1,    16,    -1,    -1,    -1,    20,    21,    -1,    -1,
-      -1,    -1,    64,    -1,    28,    -1,    68,    -1,    -1,    -1,
-      72,    73,    -1,    37,    -1,    39,    78,    41,    -1,    43,
-      -1,    -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      64,    -1,    -1,    -1,    68,    -1,    56,    57,    72,    73,
-      -1,    61,    62,    63,    78,    65,    66,    67,    -1,    -1,
-      -1,    -1,    72,    73,    74,    75,    45,    -1,    -1,    -1,
-      80,    81,    82,    -1,    -1,    -1,    -1,    56,    57,    -1,
-      -1,    -1,    61,    62,    63,    -1,    65,    66,    67,    -1,
-      47,    -1,    71,    72,    73,    74,    75,    -1,    -1,    56,
-      57,    80,    81,    82,    61,    62,    63,    -1,    65,    66,
-      67,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    -1,
-      -1,    56,    57,    80,    81,    82,    61,    62,    63,    -1,
-      65,    66,    67,    -1,    69,    70,    -1,    72,    73,    74,
-      75,    -1,    -1,    56,    57,    80,    81,    82,    61,    62,
-      63,    -1,    65,    66,    67,    -1,    -1,    -1,    71,    72,
-      73,    74,    75,    -1,    -1,    -1,    79,    80,    81,    82,
-      56,    57,    -1,    -1,    -1,    61,    62,    63,    -1,    65,
-      66,    67,    -1,    -1,    -1,    -1,    72,    73,    74,    75,
-      -1,    -1,    -1,    79,    80,    81,    82,    56,    57,    -1,
-      -1,    -1,    61,    62,    63,    -1,    65,    66,    67,    -1,
-      -1,    -1,    71,    72,    73,    74,    75,    -1,    -1,    56,
-      57,    80,    81,    82,    61,    62,    63,    -1,    65,    66,
-      67,    -1,    -1,    -1,    -1,    72,    73,    74,    75,    -1,
-      -1,    56,    57,    80,    81,    82,    61,    62,    63,    -1,
-      65,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
-      75,    -1,    -1,    56,    57,    80,    81,    82,    61,    62,
-      63,    -1,    65,    66,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,    82
+      31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,
+      41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    50,
+      51,    -1,    -1,    -1,    11,    12,    13,    14,    -1,    16,
+      -1,    62,    -1,    20,    21,    66,    -1,    -1,    -1,    70,
+      71,    11,    12,    13,    14,    76,    16,    17,    18,    19,
+      20,    21,    39,    -1,    41,    -1,    -1,    27,    -1,    29,
+      30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      -1,    41,    -1,    -1,    -1,    62,    -1,    -1,    -1,    66,
+      50,    51,    -1,    70,    71,    11,    12,    13,    14,    76,
+      16,    -1,    62,    -1,    20,    21,    66,    -1,    -1,    -1,
+      70,    71,    28,    -1,    -1,    -1,    76,    33,    -1,    35,
+      36,    37,    38,    39,    -1,    41,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    11,    12,    13,    14,    -1,
+      16,    -1,    -1,    -1,    20,    21,    62,    -1,    -1,    -1,
+      66,    -1,    28,    -1,    70,    71,    -1,    -1,    -1,    35,
+      76,    37,    -1,    39,    -1,    41,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,
+      -1,    43,    -1,    -1,    -1,    -1,    62,    -1,    -1,    -1,
+      66,    -1,    54,    55,    70,    71,    -1,    59,    60,    61,
+      76,    63,    64,    65,    -1,    45,    -1,    69,    70,    71,
+      72,    73,    -1,    -1,    54,    55,    78,    79,    80,    59,
+      60,    61,    -1,    63,    64,    65,    -1,    -1,    -1,    -1,
+      70,    71,    72,    73,    -1,    -1,    54,    55,    78,    79,
+      80,    59,    60,    61,    -1,    63,    64,    65,    -1,    67,
+      68,    -1,    70,    71,    72,    73,    -1,    -1,    54,    55,
+      78,    79,    80,    59,    60,    61,    -1,    63,    64,    65,
+      -1,    -1,    -1,    69,    70,    71,    72,    73,    -1,    -1,
+      -1,    77,    78,    79,    80,    54,    55,    -1,    -1,    -1,
+      59,    60,    61,    -1,    63,    64,    65,    -1,    -1,    -1,
+      -1,    70,    71,    72,    73,    -1,    -1,    -1,    77,    78,
+      79,    80,    54,    55,    -1,    -1,    -1,    59,    60,    61,
+      -1,    63,    64,    65,    -1,    -1,    -1,    69,    70,    71,
+      72,    73,    -1,    -1,    54,    55,    78,    79,    80,    59,
+      60,    61,    -1,    63,    64,    65,    -1,    -1,    -1,    -1,
+      70,    71,    72,    73,    -1,    -1,    54,    55,    78,    79,
+      80,    59,    60,    61,    -1,    63,    64,    65,    -1,    -1,
+      -1,    -1,    -1,    -1,    72,    73,    -1,    -1,    76,    -1,
+      78,    79,    80,    54,    55,    -1,    -1,    -1,    59,    60,
+      61,    -1,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,    73,    -1,    -1,    54,    55,    78,    79,    80,
+      59,    60,    61,    -1,    63,    64,    65,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
+      79,    80
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1008,32 +1000,31 @@ static const yytype_int16 yycheck[] =
 static const yytype_uint8 yystos[] =
 {
        0,     1,    11,    12,    13,    14,    16,    17,    18,    19,
-      20,    21,    27,    29,    30,    31,    34,    35,    36,    41,
-      42,    43,    46,    50,    51,    52,    53,    64,    68,    72,
-      73,    78,    85,    87,    88,    89,    90,    91,    98,    99,
-     100,   105,   106,   108,   111,   112,   117,    77,    86,    20,
-      41,    88,   105,   105,   105,   105,   118,    78,   102,    20,
-     107,    28,    33,    37,    38,    39,    40,   105,   109,   110,
-      20,    21,    20,   105,    47,    48,    12,    13,    20,    20,
-      20,    20,   105,    54,   109,   110,   105,   105,   105,   105,
-     105,     0,    86,    78,    71,    78,    97,   105,    56,    57,
-      61,    62,    63,    65,    66,    67,    72,    73,    74,    75,
-      80,    81,    82,   105,    83,   118,   118,    83,   105,   105,
-      37,   110,   113,    32,    20,    45,    71,   105,    45,    71,
-      44,   114,    47,   110,    69,    70,    79,    87,    97,   105,
-      97,   105,    44,    71,   105,   105,   105,   105,   105,   105,
-     105,   105,   105,   105,   105,   105,   105,   105,   105,   105,
-      79,    20,   105,   102,    20,   105,   105,    45,    71,   105,
-     105,   105,   102,   105,   105,   105,    79,   103,    79,    86,
-     102,   105,    20,   115,   105,   105,   115,   104,    23,    45,
-     104,    89,   106,    83,    86,    86,    86,    90,   103,    45,
-     105,   103,   103,    20,    83,   116,   116,    26,   105,   103,
-      26,    49,   102,    25,    49,    94,    95,   101,    20,   104,
-     104,    42,   103,   104,    31,   104,    93,    94,    96,   101,
-     102,    95,   103,    97,   104,   103,   103,    96,   103,    97,
-      89,    49,    92,    44,   103,    26,    26,    26,    44,   103,
-     102,   103,   102,    26,    42,    31,    31,   104,    89,    90,
-      42,   103,   103
+      20,    21,    27,    29,    30,    31,    34,    39,    40,    41,
+      44,    48,    49,    50,    51,    62,    66,    70,    71,    76,
+      83,    85,    86,    87,    88,    89,    96,    97,    98,   103,
+     104,   106,   109,   110,   115,    75,    84,    20,    39,    86,
+     103,   103,   103,   103,   116,    76,   100,    20,   105,    28,
+      33,    35,    36,    37,    38,   103,   107,   108,    20,   103,
+      45,    46,    12,    13,    20,    20,    20,    20,   103,    52,
+     107,   108,   103,   103,   103,   103,   103,     0,    84,    76,
+      69,    76,    95,   103,    54,    55,    59,    60,    61,    63,
+      64,    65,    70,    71,    72,    73,    78,    79,    80,   103,
+      81,   116,   116,    81,   103,   103,    35,   108,   111,    32,
+      20,    43,    69,   103,    43,    69,    42,   112,    45,   108,
+      67,    68,    77,    85,    95,   103,    95,   103,    42,    69,
+     103,   103,   103,   103,   103,   103,   103,   103,   103,   103,
+     103,   103,   103,   103,   103,   103,    77,    20,   103,   100,
+      20,   103,   103,    43,    69,   103,   103,   103,   100,   103,
+     103,   103,    77,   101,    77,    84,   100,   103,    20,   113,
+     103,   103,   113,   102,    23,    43,   102,    87,   104,    81,
+      84,    84,    84,    88,   101,    43,   103,   101,   101,    20,
+      81,   114,   114,    26,   103,   101,    26,    47,   100,    25,
+      47,    92,    93,    99,    20,   102,   102,    40,   101,   102,
+      31,   102,    91,    92,    94,    99,   100,    93,   101,    95,
+     102,   101,   101,    94,   101,    95,    87,    47,    90,    42,
+     101,    26,    26,    26,    42,   101,   100,   101,   100,    26,
+      40,    31,    31,   102,    87,    88,    40,   101,   101
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2334,140 +2325,130 @@ yyreduce:
 
   case 84:
 #line 399 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_mci); g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str()); delete (yyvsp[(2) - (2)].s); ;}
-    break;
-
-  case 85:
-#line 400 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_mciwait); g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str()); delete (yyvsp[(2) - (2)].s); ;}
-    break;
-
-  case 86:
-#line 401 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 89:
-#line 404 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 402 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeConst(0); // Push fake value on stack
 							  g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 91:
-#line 407 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 405 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_handlers[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 92:
-#line 410 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 408 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->_handlers[*(yyvsp[(1) - (2)].s)]->u.func);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
-  case 93:
-#line 413 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 411 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code2(g_lingo->c_voidpush, g_lingo->_handlers[*(yyvsp[(1) - (1)].s)]->u.func);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 94:
-#line 416 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 414 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
-  case 95:
-#line 417 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 415 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
-  case 96:
-#line 418 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 416 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
-  case 97:
-#line 421 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 419 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
-  case 98:
-#line 422 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 420 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 99:
-#line 433 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 431 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
-  case 100:
-#line 434 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 432 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
-  case 101:
-#line 435 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 433 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
-  case 102:
-#line 436 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 434 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 103:
-#line 439 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 437 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 104:
-#line 442 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 440 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 109:
-#line 455 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 453 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 110:
-#line 456 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 454 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 111:
-#line 459 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 457 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 112:
-#line 462 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 460 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 113:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 490 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 114:
-#line 493 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 491 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeConst(0); // Push fake value on stack
 			g_lingo->code1(g_lingo->c_procret);
@@ -2475,20 +2456,20 @@ yyreduce:
 			g_lingo->_indef = false; ;}
     break;
 
-  case 115:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 496 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
 		;}
     break;
 
-  case 116:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 499 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 117:
-#line 502 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 500 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeConst(0); // Push fake value on stack
 			g_lingo->code1(g_lingo->c_procret);
@@ -2496,33 +2477,33 @@ yyreduce:
 			g_lingo->_indef = false; ;}
     break;
 
-  case 118:
-#line 507 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 505 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 119:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 506 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 120:
-#line 509 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 507 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 121:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 508 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 122:
-#line 512 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 510 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 123:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 514 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str());
@@ -2531,24 +2512,24 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 124:
-#line 524 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 522 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 125:
-#line 525 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 523 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 126:
-#line 526 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 524 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 2552 "engines/director/lingo/lingo-gr.cpp"
+#line 2533 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2762,6 +2743,6 @@ yyreturn:
 }
 
 
-#line 529 "engines/director/lingo/lingo-gr.y"
+#line 527 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index d7ab892..de14709 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -71,42 +71,40 @@
      tINTO = 287,
      tLOOP = 288,
      tMACRO = 289,
-     tMCI = 290,
-     tMCIWAIT = 291,
-     tMOVIE = 292,
-     tNEXT = 293,
-     tOF = 294,
-     tPREVIOUS = 295,
-     tPUT = 296,
-     tREPEAT = 297,
-     tSET = 298,
-     tTHEN = 299,
-     tTO = 300,
-     tWHEN = 301,
-     tWITH = 302,
-     tWHILE = 303,
-     tNLELSE = 304,
-     tFACTORY = 305,
-     tMETHOD = 306,
-     tOPEN = 307,
-     tPLAY = 308,
-     tDONE = 309,
-     tPLAYACCEL = 310,
-     tGE = 311,
-     tLE = 312,
-     tGT = 313,
-     tLT = 314,
-     tEQ = 315,
-     tNEQ = 316,
-     tAND = 317,
-     tOR = 318,
-     tNOT = 319,
-     tCONCAT = 320,
-     tCONTAINS = 321,
-     tSTARTS = 322,
-     tSPRITE = 323,
-     tINTERSECTS = 324,
-     tWITHIN = 325
+     tMOVIE = 290,
+     tNEXT = 291,
+     tOF = 292,
+     tPREVIOUS = 293,
+     tPUT = 294,
+     tREPEAT = 295,
+     tSET = 296,
+     tTHEN = 297,
+     tTO = 298,
+     tWHEN = 299,
+     tWITH = 300,
+     tWHILE = 301,
+     tNLELSE = 302,
+     tFACTORY = 303,
+     tMETHOD = 304,
+     tOPEN = 305,
+     tPLAY = 306,
+     tDONE = 307,
+     tPLAYACCEL = 308,
+     tGE = 309,
+     tLE = 310,
+     tGT = 311,
+     tLT = 312,
+     tEQ = 313,
+     tNEQ = 314,
+     tAND = 315,
+     tOR = 316,
+     tNOT = 317,
+     tCONCAT = 318,
+     tCONTAINS = 319,
+     tSTARTS = 320,
+     tSPRITE = 321,
+     tINTERSECTS = 322,
+     tWITHIN = 323
    };
 #endif
 /* Tokens.  */
@@ -142,42 +140,40 @@
 #define tINTO 287
 #define tLOOP 288
 #define tMACRO 289
-#define tMCI 290
-#define tMCIWAIT 291
-#define tMOVIE 292
-#define tNEXT 293
-#define tOF 294
-#define tPREVIOUS 295
-#define tPUT 296
-#define tREPEAT 297
-#define tSET 298
-#define tTHEN 299
-#define tTO 300
-#define tWHEN 301
-#define tWITH 302
-#define tWHILE 303
-#define tNLELSE 304
-#define tFACTORY 305
-#define tMETHOD 306
-#define tOPEN 307
-#define tPLAY 308
-#define tDONE 309
-#define tPLAYACCEL 310
-#define tGE 311
-#define tLE 312
-#define tGT 313
-#define tLT 314
-#define tEQ 315
-#define tNEQ 316
-#define tAND 317
-#define tOR 318
-#define tNOT 319
-#define tCONCAT 320
-#define tCONTAINS 321
-#define tSTARTS 322
-#define tSPRITE 323
-#define tINTERSECTS 324
-#define tWITHIN 325
+#define tMOVIE 290
+#define tNEXT 291
+#define tOF 292
+#define tPREVIOUS 293
+#define tPUT 294
+#define tREPEAT 295
+#define tSET 296
+#define tTHEN 297
+#define tTO 298
+#define tWHEN 299
+#define tWITH 300
+#define tWHILE 301
+#define tNLELSE 302
+#define tFACTORY 303
+#define tMETHOD 304
+#define tOPEN 305
+#define tPLAY 306
+#define tDONE 307
+#define tPLAYACCEL 308
+#define tGE 309
+#define tLE 310
+#define tGT 311
+#define tLT 312
+#define tEQ 313
+#define tNEQ 314
+#define tAND 315
+#define tOR 316
+#define tNOT 317
+#define tCONCAT 318
+#define tCONTAINS 319
+#define tSTARTS 320
+#define tSPRITE 321
+#define tINTERSECTS 322
+#define tWITHIN 323
 
 
 
@@ -195,7 +191,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 1529 of yacc.c.  */
-#line 199 "engines/director/lingo/lingo-gr.hpp"
+#line 195 "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 0e25ec5..1315078 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -84,7 +84,7 @@ void yyerror(char *s) {
 %token<s> BLTIN BLTINNOARGS BLTINNOARGSORONE BLTINONEARG BLTINARGLIST
 %token<s> ID STRING HANDLER
 %token tDOWN tELSE tNLELSIF tEND tEXIT tFRAME tGLOBAL tGO tIF tINTO tLOOP tMACRO
-%token tMCI tMCIWAIT tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN
+%token tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN
 %token tWITH tWHILE tNLELSE tFACTORY tMETHOD tOPEN tPLAY tDONE tPLAYACCEL
 %token tGE tLE tGT tLT tEQ tNEQ tAND tOR tNOT
 %token tCONCAT tCONTAINS tSTARTS
@@ -396,9 +396,7 @@ expr: INT		{ $$ = g_lingo->codeConst($1); }
 	| tSPRITE expr tWITHIN expr		 	{ g_lingo->code1(g_lingo->c_within); }
 	;
 
-func: tMCI STRING			{ g_lingo->code1(g_lingo->c_mci); g_lingo->codeString($2->c_str()); delete $2; }
-	| tMCIWAIT ID			{ g_lingo->code1(g_lingo->c_mciwait); g_lingo->codeString($2->c_str()); delete $2; }
-	| tPUT expr				{ g_lingo->code1(g_lingo->c_printtop); }
+func: tPUT expr				{ g_lingo->code1(g_lingo->c_printtop); }
 	| gotofunc
 	| playfunc
 	| tEXIT					{ g_lingo->codeConst(0); // Push fake value on stack
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 69c8745..5fbd8d8 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 58
-#define YY_END_OF_BUFFER 59
+#define YY_NUM_RULES 56
+#define YY_END_OF_BUFFER 57
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,30 +373,28 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[197] =
+static yyconst flex_int16_t yy_accept[191] =
     {   0,
-        0,    0,   59,   57,    3,   55,   55,   57,   57,   54,
-       54,   54,   53,   54,   54,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,    2,    2,    3,   55,    0,    0,    0,    0,
-        0,   56,   50,    1,   52,   53,   49,   47,   48,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   18,
-        8,   51,   51,   51,   51,   51,   51,   51,   51,   29,
-       51,   31,   51,   51,   51,   51,   51,   51,   51,   51,
-       41,   51,   51,    2,    2,    0,    1,   52,    4,   51,
-       51,   51,   51,   12,   51,   51,   51,   51,    0,   51,
-
-       51,   51,   23,   51,   51,   51,   28,   51,   51,   51,
-       34,   51,   36,   51,   51,   51,   51,   51,   51,    0,
-       51,    6,    7,   11,   14,   51,   51,   51,    0,   51,
-       20,   21,   51,   51,   51,   51,   27,   30,   32,   51,
-       51,   51,   51,    0,   40,   45,   51,   43,   10,   51,
-       51,   15,   51,   17,   51,   22,   51,   51,   26,   51,
-       51,   51,   51,   39,   46,   51,    0,   51,   51,   16,
-       51,   51,   25,   51,   35,   42,   37,    0,   44,    0,
-       51,   13,   51,   24,   51,    0,    9,    5,   51,   33,
-        0,   51,    0,   19,   38,    0
-
+        0,    0,   57,   55,    3,   53,   53,   55,   55,   52,
+       52,   52,   51,   52,   52,   49,   49,   49,   49,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   49,
+       49,   49,    2,    2,    3,   53,    0,    0,    0,    0,
+        0,   54,   48,    1,   50,   51,   47,   45,   46,   49,
+       49,   49,   49,   49,   49,   49,   49,   49,   49,   18,
+        8,   49,   49,   49,   49,   49,   49,   49,   27,   49,
+       29,   49,   49,   49,   49,   49,   49,   49,   49,   39,
+       49,   49,    2,    2,    0,    1,   50,    4,   49,   49,
+       49,   49,   12,   49,   49,   49,   49,    0,   49,   49,
+
+       49,   49,   49,   49,   26,   49,   49,   49,   32,   49,
+       34,   49,   49,   49,   49,   49,   49,    0,   49,    6,
+        7,   11,   14,   49,   49,   49,    0,   49,   20,   21,
+       49,   49,   49,   25,   28,   30,   49,   49,   49,   49,
+        0,   38,   43,   49,   41,   10,   49,   49,   15,   49,
+       17,   49,   22,   49,   24,   49,   49,   49,   49,   37,
+       44,   49,    0,   49,   49,   16,   49,   23,   49,   33,
+       40,   35,    0,   42,    0,   49,   13,   49,   49,    0,
+        9,    5,   49,   31,    0,   49,    0,   19,   36,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -441,61 +439,59 @@ static yyconst flex_int32_t yy_meta[61] =
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5
     } ;
 
-static yyconst flex_int16_t yy_base[202] =
+static yyconst flex_int16_t yy_base[196] =
     {   0,
-        0,   59,  187,  465,   63,   67,   71,   75,  169,  465,
-      152,  140,   52,   68,  130,   56,    0,   56,   57,   67,
-       72,   68,   68,   69,  112,   70,  104,  111,   80,  118,
-      130,  143,  175,  180,  189,  465,  193,  167,  197,   80,
-      136,  465,  465,    0,   93,   90,  465,  465,  465,    0,
-      104,   82,  176,  108,  112,  165,  187,  190,  117,  133,
-        0,  175,  180,  192,  190,  183,  184,  183,  188,    0,
-      202,    0,  207,  204,  193,  198,  200,  205,  221,  220,
-        0,  230,  212,  266,  276,  220,    0,   80,    0,  220,
-      240,  234,  243,    0,  232,  233,  240,  256,  280,  271,
-
-      263,  263,  259,  254,  272,  265,    0,  271,  264,  268,
-        0,  284,    0,  281,  276,  303,  282,  285,  285,  294,
-      303,    0,    0,    0,    0,  283,  304,  311,  308,  308,
-        0,    0,  311,  325,  315,  322,    0,    0,    0,  321,
-      330,  316,  317,  169,    0,    0,  327,  328,  212,  329,
-      324,    0,  330,  465,  325,    0,  334,  340,    0,  332,
-      331,  348,  342,  252,    0,  347,  382,  353,  348,    0,
-      369,  358,    0,  359,    0,    0,    0,  393,    0,  373,
-      368,    0,  377,    0,  369,  381,  465,    0,  372,    0,
-      404,  376,  409,    0,  414,  465,  444,  446,  451,  455,
-
-      459
+        0,   59,  203,  452,   63,   67,   71,   75,  167,  452,
+      157,  154,   52,   68,  143,   56,    0,   56,   57,   67,
+       72,   68,   68,   69,   85,  102,  102,  104,   80,  119,
+      113,  120,  173,  177,  181,  452,  185,  189,  193,  102,
+       99,  452,  452,    0,   80,  129,  452,  452,  452,    0,
+       91,  120,  165,  118,  126,  146,  184,  187,  171,   96,
+        0,  172,  177,  189,  178,  177,  178,  184,    0,  188,
+        0,  202,  199,  188,  192,  192,  199,  220,  219,    0,
+      226,  208,  251,  262,  217,    0,   78,    0,  219,  227,
+      230,  239,    0,  228,  229,  242,  256,  273,  257,  250,
+
+      251,  255,  263,  256,    0,  262,  253,  258,    0,  274,
+        0,  271,  267,  304,  271,  274,  273,  284,  299,    0,
+        0,    0,    0,  279,  297,  308,  297,  296,    0,    0,
+      301,  304,  314,    0,    0,    0,  311,  320,  305,  307,
+      156,    0,    0,  322,  319,  341,  321,  320,    0,  326,
+      452,  322,    0,  327,    0,  328,  329,  344,  336,  370,
+        0,  343,  375,  344,  341,    0,  345,    0,  348,    0,
+        0,    0,  380,    0,  363,  355,    0,  372,  360,  372,
+      452,    0,  363,    0,  394,  366,  398,    0,  400,  452,
+      431,  433,  438,  442,  446
+
     } ;
 
-static yyconst flex_int16_t yy_def[202] =
+static yyconst flex_int16_t yy_def[196] =
     {   0,
-      196,    1,  196,  196,  196,  196,  196,  196,  197,  196,
-      196,  196,  196,  196,  196,  198,  198,  198,  198,  198,
-      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
-      198,  198,  196,  196,  196,  196,  196,  196,  196,  196,
-      197,  196,  196,  199,  196,  196,  196,  196,  196,  198,
-      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
-      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
-      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
-      198,  198,  198,  196,  196,  196,  199,  196,  198,  198,
-      198,  198,  198,  198,  198,  198,  198,  198,  196,  198,
-
-      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
-      198,  198,  198,  198,  198,  198,  198,  198,  198,  196,
-      198,  198,  198,  198,  198,  198,  198,  198,  196,  198,
-      198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
-      198,  198,  198,  200,  198,  198,  198,  198,  196,  198,
-      198,  198,  198,  196,  198,  198,  198,  198,  198,  198,
-      198,  198,  198,  200,  198,  198,  196,  198,  198,  198,
-      198,  198,  198,  198,  198,  198,  198,  196,  198,  196,
-      198,  198,  198,  198,  198,  196,  196,  198,  198,  198,
-      196,  198,  201,  198,  201,    0,  196,  196,  196,  196,
-
-      196
+      190,    1,  190,  190,  190,  190,  190,  190,  191,  190,
+      190,  190,  190,  190,  190,  192,  192,  192,  192,  192,
+      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
+      192,  192,  190,  190,  190,  190,  190,  190,  190,  190,
+      191,  190,  190,  193,  190,  190,  190,  190,  190,  192,
+      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
+      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
+      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
+      192,  192,  190,  190,  190,  193,  190,  192,  192,  192,
+      192,  192,  192,  192,  192,  192,  192,  190,  192,  192,
+
+      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
+      192,  192,  192,  192,  192,  192,  192,  190,  192,  192,
+      192,  192,  192,  192,  192,  192,  190,  192,  192,  192,
+      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
+      194,  192,  192,  192,  192,  190,  192,  192,  192,  192,
+      190,  192,  192,  192,  192,  192,  192,  192,  192,  194,
+      192,  192,  190,  192,  192,  192,  192,  192,  192,  192,
+      192,  192,  190,  192,  190,  192,  192,  192,  192,  190,
+      190,  192,  192,  192,  190,  192,  195,  192,  195,    0,
+      190,  190,  190,  190,  190
+
     } ;
 
-static yyconst flex_int16_t yy_nxt[526] =
+static yyconst flex_int16_t yy_nxt[513] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,    4,
        13,   14,   10,   15,   16,   17,   18,   19,   20,   21,
@@ -505,59 +501,58 @@ static yyconst flex_int16_t yy_nxt[526] =
        27,   28,   29,   30,   31,   17,   17,   32,   17,   17,
        33,   45,   46,   34,   35,   36,   36,   37,   38,   39,
        39,   38,   38,   39,   39,   38,   37,   36,   36,   37,
-       47,   48,   51,   52,   53,   40,   57,   61,   68,   40,
-       88,   54,   59,   55,   62,   60,   63,   69,   76,   45,
-
-       46,   58,   56,   88,   86,   51,   52,   53,   90,   40,
-       57,   61,   68,   40,   54,   59,   55,   62,   60,   63,
-       69,   89,   76,   70,   58,   56,   64,   86,   65,   94,
-       66,   90,   71,   72,   99,   73,   77,   99,   93,   67,
-       74,   42,   49,   75,   98,   89,   78,   70,   44,   79,
-       64,   80,   65,   94,   66,   71,   72,   81,   73,   43,
-       77,   93,   67,   74,   82,   83,   75,   98,   38,   78,
-      144,   38,   79,  144,   42,   80,   84,   36,   36,   85,
-       81,   85,   36,   36,   85,   40,  196,   95,   82,   83,
-       35,   36,   36,   37,   37,   36,   36,   37,   38,   39,
-
-       39,   38,   91,   96,   97,  196,  100,  101,  102,   40,
-       92,   95,  103,  167,  104,   40,  167,  105,  106,  107,
-      108,  109,  110,  196,  111,   91,  112,   96,   97,  100,
-      101,  113,  102,   92,  114,  115,  103,  104,  116,   40,
-      105,  106,  107,  119,  108,  109,  110,  111,  117,  112,
-      120,  121,  118,  178,  113,  196,  178,  114,  122,  115,
-      123,  124,  116,  125,  126,  127,  119,   84,   36,   36,
-       85,  128,  117,  120,  121,  135,  118,   85,   36,   36,
-       85,   99,  122,  123,   99,  124,  125,  126,  127,  130,
-      196,  132,  133,  134,  136,  128,  137,  138,  131,  135,
-
-      139,  140,  141,  142,  144,  143,  148,  144,  146,  147,
-      151,  129,  149,  130,  132,  133,  134,  150,  136,  137,
-      138,  131,  152,  139,  140,  153,  141,  142,  143,  145,
-      148,  146,  147,  151,  129,  154,  149,  155,  156,  157,
-      159,  150,  158,  160,  161,  165,  152,  162,  163,  153,
-      166,  168,  145,  169,  170,  171,  172,  173,  154,  174,
-      155,  156,  175,  157,  159,  158,  176,  160,  161,  165,
-      162,  163,  177,  179,  166,  168,  169,  170,  171,  181,
-      172,  173,  174,  167,  182,  175,  167,  183,  196,  184,
-      176,  185,  187,  189,  178,  177,  179,  178,  188,  190,
-
-      191,  196,  181,  192,  180,  193,  194,  182,  193,  196,
-      193,  183,  184,  193,  185,  196,  187,  189,  196,  196,
-      186,  188,  190,  196,  191,  196,  192,  196,  180,  194,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  186,   41,   41,  196,   41,   41,   50,
-       50,   87,   87,  196,   87,   87,  164,  196,  196,  164,
-      195,  196,  196,  195,    3,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196
+       47,   48,   51,   52,   53,   40,   57,   61,   87,   40,
+       87,   54,   59,   55,   62,   60,   63,   98,   75,   64,
+
+       98,   58,   56,   65,   42,   51,   52,   53,   88,   40,
+       57,   61,   66,   40,   54,   59,   55,   62,   60,   63,
+       67,   69,   75,   64,   58,   56,   85,   65,   72,   68,
+       70,   71,   88,   73,   79,   66,   74,   76,   45,   46,
+       80,   81,   82,   93,   67,   69,   89,   77,   92,   85,
+       78,   72,   68,   70,   71,   49,   73,  141,   79,   74,
+      141,   76,   44,   80,   43,   81,   82,   93,   94,   89,
+       77,   92,   42,   78,   83,   36,   36,   84,   84,   36,
+       36,   84,   35,   36,   36,   37,   37,   36,   36,   37,
+       38,   90,   94,   38,   38,   39,   39,   38,   97,   91,
+
+       95,   96,  190,   99,  100,  101,  106,   40,  190,  102,
+      103,   40,  190,  104,   90,  105,  107,  108,  190,  109,
+      110,   97,   91,  111,   95,   96,   99,  100,  112,  101,
+      106,   40,  102,  103,  113,   40,  104,  114,  105,  117,
+      107,  108,  109,  110,  115,  120,  111,  118,  116,  190,
+      119,  112,   83,   36,   36,   84,  121,  122,  113,  123,
+      124,  114,  117,   84,   36,   36,   84,  125,  115,  120,
+      118,  126,  116,  119,   98,  128,  132,   98,  130,  121,
+      131,  122,  123,  124,  129,  133,  190,  134,  135,  136,
+      125,  137,  138,  139,  145,  126,  140,  143,  144,  128,
+
+      132,  130,  146,  131,  127,  141,  148,  129,  141,  133,
+      134,  135,  136,  147,  137,  149,  138,  139,  145,  140,
+      143,  144,  150,  190,  151,  152,  146,  127,  153,  148,
+      142,  154,  155,  156,  157,  190,  158,  147,  159,  149,
+      161,  162,  163,  164,  168,  163,  150,  151,  152,  165,
+      166,  153,  167,  142,  154,  169,  155,  156,  157,  158,
+      170,  159,  171,  178,  161,  162,  172,  164,  168,  174,
+      176,  173,  165,  166,  173,  167,  163,  177,  169,  163,
+      179,  173,  181,  170,  173,  182,  171,  178,  183,  172,
+      184,  185,  174,  176,  186,  187,  188,  175,  187,  187,
+
+      177,  190,  187,  179,  190,  190,  181,  180,  182,  190,
+      190,  190,  183,  184,  190,  185,  190,  186,  190,  188,
+      190,  175,  190,  190,  190,  190,  190,  190,  190,  190,
+      180,   41,   41,  190,   41,   41,   50,   50,   86,   86,
+      190,   86,   86,  160,  190,  190,  160,  189,  190,  190,
+      189,    3,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190
     } ;
 
-static yyconst flex_int16_t yy_chk[526] =
+static yyconst flex_int16_t yy_chk[513] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -567,56 +562,55 @@ static yyconst flex_int16_t yy_chk[526] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         2,   13,   13,    2,    5,    5,    5,    5,    6,    6,
         6,    6,    7,    7,    7,    7,    8,    8,    8,    8,
-       14,   14,   16,   18,   19,    6,   21,   23,   26,    7,
-       88,   20,   22,   20,   23,   22,   24,   26,   29,   46,
-
-       46,   21,   20,   45,   40,   16,   18,   19,   52,    6,
-       21,   23,   26,    7,   20,   22,   20,   23,   22,   24,
-       26,   51,   29,   27,   21,   20,   25,   40,   25,   55,
-       25,   52,   27,   27,   60,   28,   30,   60,   54,   25,
-       28,   41,   15,   28,   59,   51,   30,   27,   12,   30,
-       25,   31,   25,   55,   25,   27,   27,   31,   28,   11,
-       30,   54,   25,   28,   32,   32,   28,   59,   38,   30,
-      144,   38,   30,  144,    9,   31,   33,   33,   33,   33,
-       31,   34,   34,   34,   34,   38,    3,   56,   32,   32,
-       35,   35,   35,   35,   37,   37,   37,   37,   39,   39,
-
-       39,   39,   53,   57,   58,    0,   62,   63,   64,   38,
-       53,   56,   65,  149,   66,   39,  149,   67,   68,   69,
-       71,   73,   74,    0,   75,   53,   76,   57,   58,   62,
-       63,   77,   64,   53,   78,   79,   65,   66,   80,   39,
-       67,   68,   69,   83,   71,   73,   74,   75,   82,   76,
-       86,   90,   82,  164,   77,    0,  164,   78,   91,   79,
-       92,   93,   80,   95,   96,   97,   83,   84,   84,   84,
-       84,   98,   82,   86,   90,  104,   82,   85,   85,   85,
-       85,   99,   91,   92,   99,   93,   95,   96,   97,  100,
-        0,  101,  102,  103,  105,   98,  106,  108,  100,  104,
-
-      109,  110,  112,  114,  116,  115,  119,  116,  117,  118,
-      126,   99,  120,  100,  101,  102,  103,  121,  105,  106,
-      108,  100,  127,  109,  110,  128,  112,  114,  115,  116,
-      119,  117,  118,  126,   99,  129,  120,  130,  133,  134,
-      136,  121,  135,  140,  141,  147,  127,  142,  143,  128,
-      148,  150,  116,  151,  153,  155,  157,  158,  129,  160,
-      130,  133,  161,  134,  136,  135,  162,  140,  141,  147,
-      142,  143,  163,  166,  148,  150,  151,  153,  155,  168,
-      157,  158,  160,  167,  169,  161,  167,  171,    0,  172,
-      162,  174,  180,  183,  178,  163,  166,  178,  181,  185,
-
-      186,    0,  168,  189,  167,  191,  192,  169,  191,    0,
-      193,  171,  172,  193,  174,  195,  180,  183,  195,    0,
-      178,  181,  185,    0,  186,    0,  189,    0,  167,  192,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  178,  197,  197,    0,  197,  197,  198,
-      198,  199,  199,    0,  199,  199,  200,    0,    0,  200,
-      201,    0,    0,  201,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196
+       14,   14,   16,   18,   19,    6,   21,   23,   87,    7,
+       45,   20,   22,   20,   23,   22,   24,   60,   29,   25,
+
+       60,   21,   20,   25,   41,   16,   18,   19,   51,    6,
+       21,   23,   25,    7,   20,   22,   20,   23,   22,   24,
+       26,   27,   29,   25,   21,   20,   40,   25,   28,   26,
+       27,   27,   51,   28,   31,   25,   28,   30,   46,   46,
+       31,   32,   32,   55,   26,   27,   52,   30,   54,   40,
+       30,   28,   26,   27,   27,   15,   28,  141,   31,   28,
+      141,   30,   12,   31,   11,   32,   32,   55,   56,   52,
+       30,   54,    9,   30,   33,   33,   33,   33,   34,   34,
+       34,   34,   35,   35,   35,   35,   37,   37,   37,   37,
+       38,   53,   56,   38,   39,   39,   39,   39,   59,   53,
+
+       57,   58,    3,   62,   63,   64,   70,   38,    0,   65,
+       66,   39,    0,   67,   53,   68,   72,   73,    0,   74,
+       75,   59,   53,   76,   57,   58,   62,   63,   77,   64,
+       70,   38,   65,   66,   78,   39,   67,   79,   68,   82,
+       72,   73,   74,   75,   81,   90,   76,   85,   81,    0,
+       89,   77,   83,   83,   83,   83,   91,   92,   78,   94,
+       95,   79,   82,   84,   84,   84,   84,   96,   81,   90,
+       85,   97,   81,   89,   98,   99,  102,   98,  100,   91,
+      101,   92,   94,   95,   99,  103,    0,  104,  106,  107,
+       96,  108,  110,  112,  117,   97,  113,  115,  116,   99,
+
+      102,  100,  118,  101,   98,  114,  124,   99,  114,  103,
+      104,  106,  107,  119,  108,  125,  110,  112,  117,  113,
+      115,  116,  126,    0,  127,  128,  118,   98,  131,  124,
+      114,  132,  133,  137,  138,    0,  139,  119,  140,  125,
+      144,  145,  146,  147,  154,  146,  126,  127,  128,  148,
+      150,  131,  152,  114,  132,  156,  133,  137,  138,  139,
+      157,  140,  158,  167,  144,  145,  159,  147,  154,  162,
+      164,  160,  148,  150,  160,  152,  163,  165,  156,  163,
+      169,  173,  175,  157,  173,  176,  158,  167,  178,  159,
+      179,  180,  162,  164,  183,  185,  186,  163,  185,  187,
+
+      165,  189,  187,  169,  189,    0,  175,  173,  176,    0,
+        0,    0,  178,  179,    0,  180,    0,  183,    0,  186,
+        0,  163,    0,    0,    0,    0,    0,    0,    0,    0,
+      173,  191,  191,    0,  191,  191,  192,  192,  193,  193,
+        0,  193,  193,  194,    0,    0,  194,  195,    0,    0,
+      195,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -690,7 +684,7 @@ static void countnl() {
 	g_lingo->_colnumber = strlen(p);
 }
 
-#line 694 "engines/director/lingo/lingo-lex.cpp"
+#line 688 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -878,7 +872,7 @@ YY_DECL
 #line 69 "engines/director/lingo/lingo-lex.l"
 
 
-#line 882 "engines/director/lingo/lingo-lex.cpp"
+#line 876 "engines/director/lingo/lingo-lex.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -932,13 +926,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 197 )
+				if ( yy_current_state >= 191 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 465 );
+		while ( yy_base[yy_current_state] != 452 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -1077,81 +1071,71 @@ YY_RULE_SETUP
 case 23:
 YY_RULE_SETUP
 #line 94 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMCI; }
+{ count(); return tMETHOD; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
 #line 95 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMCIWAIT; }
+{ count(); return tMOVIE; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 96 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMETHOD; }
+{ count(); return tNEXT; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 97 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMOVIE; }
+{ count(); return tNOT; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 98 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEXT; }
+{ count(); return tOF; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 99 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNOT; }
+{ count(); return tOPEN; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 100 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOF; }
+{ count(); return tOR; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 101 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOPEN; }
+{ count(); return tPLAY; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 102 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOR; }
+{ count(); return tPREVIOUS; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 103 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPLAY; }
+{ count(); return tPUT; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 104 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPREVIOUS; }
+{ count(); return tREPEAT; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 105 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPUT; }
+{ count(); return tSET; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 106 "engines/director/lingo/lingo-lex.l"
-{ count(); return tREPEAT; }
+{ count(); return tSTARTS; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 107 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSET; }
-	YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 108 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSTARTS; }
-	YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 109 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1193,9 +1177,9 @@ YY_RULE_SETUP
 		warning("Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
-case 39:
+case 37:
 YY_RULE_SETUP
-#line 149 "engines/director/lingo/lingo-lex.l"
+#line 147 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1216,64 +1200,64 @@ YY_RULE_SETUP
 		warning("Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 166 "engines/director/lingo/lingo-lex.l"
+{ count(); return tTHEN; }
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 167 "engines/director/lingo/lingo-lex.l"
+{ count(); return tTO; }
+	YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 168 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTHEN; }
+{ count(); return tSPRITE; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 169 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTO; }
+{ count(); return tWITH; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 170 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSPRITE; }
+{ count(); return tWITHIN; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 171 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITH; }
+{ count(); return tWHEN; }
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 172 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITHIN; }
+{ count(); return tWHILE; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 173 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHEN; }
+#line 174 "engines/director/lingo/lingo-lex.l"
+{ count(); return tNEQ; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 174 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHILE; }
+#line 175 "engines/director/lingo/lingo-lex.l"
+{ count(); return tGE; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 176 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEQ; }
+{ count(); return tLE; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 177 "engines/director/lingo/lingo-lex.l"
-{ count(); return tGE; }
+{ count(); return tCONCAT; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 178 "engines/director/lingo/lingo-lex.l"
-{ count(); return tLE; }
-	YY_BREAK
-case 50:
-YY_RULE_SETUP
 #line 179 "engines/director/lingo/lingo-lex.l"
-{ count(); return tCONCAT; }
-	YY_BREAK
-case 51:
-YY_RULE_SETUP
-#line 181 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1301,43 +1285,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 52:
+case 50:
 YY_RULE_SETUP
-#line 207 "engines/director/lingo/lingo-lex.l"
+#line 205 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
-case 53:
+case 51:
 YY_RULE_SETUP
-#line 208 "engines/director/lingo/lingo-lex.l"
+#line 206 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
-case 54:
+case 52:
 YY_RULE_SETUP
-#line 209 "engines/director/lingo/lingo-lex.l"
+#line 207 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
-case 55:
-/* rule 55 can match eol */
+case 53:
+/* rule 53 can match eol */
 YY_RULE_SETUP
-#line 210 "engines/director/lingo/lingo-lex.l"
+#line 208 "engines/director/lingo/lingo-lex.l"
 { return '\n'; }
 	YY_BREAK
-case 56:
+case 54:
 YY_RULE_SETUP
-#line 211 "engines/director/lingo/lingo-lex.l"
+#line 209 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
-case 57:
+case 55:
 YY_RULE_SETUP
-#line 212 "engines/director/lingo/lingo-lex.l"
+#line 210 "engines/director/lingo/lingo-lex.l"
 
 	YY_BREAK
-case 58:
+case 56:
 YY_RULE_SETUP
-#line 214 "engines/director/lingo/lingo-lex.l"
+#line 212 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1341 "engines/director/lingo/lingo-lex.cpp"
+#line 1325 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1630,7 +1614,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 197 )
+			if ( yy_current_state >= 191 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1658,11 +1642,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 197 )
+		if ( yy_current_state >= 191 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 196);
+	yy_is_jam = (yy_current_state == 190);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2337,7 +2321,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 214 "engines/director/lingo/lingo-lex.l"
+#line 212 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 0693399..8c89a99 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -91,8 +91,6 @@ whitespace [\t ]
 (?i:into)			{ count(); return tINTO; }
 (?i:loop)			{ count(); return tLOOP; }
 (?i:macro)			{ count(); return tMACRO; }
-(?i:mci)			{ count(); return tMCI; }
-(?i:mciwait)		{ count(); return tMCIWAIT; }
 (?i:method)			{ count(); return tMETHOD; }
 (?i:movie)			{ count(); return tMOVIE; }
 (?i:next)			{ count(); return tNEXT; }
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 2bc1c59..7082bef 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -318,6 +318,8 @@ public:
 	static void b_point(int nargs);
 
 	static void b_beep(int nargs);
+	static void b_mci(int nargs);
+	static void b_mciwait(int nargs);
 
 	void func_mci(Common::String &s);
 	void func_mciwait(Common::String &s);


Commit: 708bf81589dece72f1ee506fd719ba798febf10b
    https://github.com/scummvm/scummvm/commit/708bf81589dece72f1ee506fd719ba798febf10b
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-10T18:42:16+02:00

Commit Message:
DIRECTOR: Lingo: Use first argument of 'puppetPalette' verbatim

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



diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 6b60ce7..5001eea 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -144,6 +144,15 @@ void Lingo::printStubWithArglist(const char *funcname, int nargs) {
 	warning("STUB: %s", s.c_str());
 }
 
+void Lingo::convertVOIDtoString(int arg, int nargs) {
+	if (_stack[_stack.size() - nargs + arg].type == VOID) {
+		if (_stack[_stack.size() - nargs + arg].u.s != NULL)
+			g_lingo->_stack[_stack.size() - nargs + arg].type = STRING;
+		else
+			warning("Incorrect convertVOIDtoString for arg %d of %d", arg, nargs);
+	}
+}
+
 void Lingo::dropStack(int nargs) {
 	for (int i = 0; i < nargs; i++)
 		pop();
@@ -496,6 +505,8 @@ void Lingo::b_moveableSprite(int nargs) {
 }
 
 void Lingo::b_puppetPalette(int nargs) {
+	g_lingo->convertVOIDtoString(0, nargs);
+
 	g_lingo->printStubWithArglist("b_puppetPalette", nargs);
 
 	g_lingo->dropStack(nargs);
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 31bea9e..fe1c62f 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -57,7 +57,7 @@ void Lingo::push(Datum d) {
 
 void Lingo::pushVoid() {
 	Datum d;
-	d.u.i = 0;
+	d.u.s = NULL;
 	d.type = VOID;
 	push(d);
 }
@@ -81,7 +81,7 @@ void Lingo::c_printtop(void) {
 
 	switch (d.type) {
 	case VOID:
-		warning("Void");
+		warning("Void, came from %s", d.u.s ? d.u.s->c_str() : "<>");
 		break;
 	case INT:
 		warning("%d", d.u.i);
@@ -123,7 +123,7 @@ void Lingo::c_constpush() {
 
 void Lingo::c_voidpush() {
 	Datum d;
-	d.u.i = 0;
+	d.u.s = NULL;
 	d.type = VOID;
 	g_lingo->push(d);
 }
@@ -186,7 +186,7 @@ void Lingo::c_assign() {
 		return;
 	}
 
-	if (d1.u.sym->type == STRING) // Free memory if needed
+	if ((d1.u.sym->type == STRING || d1.u.sym->type == VOID) && d1.u.sym->u.s) // Free memory if needed
 		delete d1.u.sym->u.s;
 
 	if (d1.u.sym->type == POINT || d1.u.sym->type == RECT || d1.u.sym->type == ARRAY)
@@ -252,6 +252,8 @@ void Lingo::c_eval() {
 		d.u.arr = d.u.sym->u.arr;
 	else if (d.u.sym->type == SYMBOL)
 		d.u.i = d.u.sym->u.i;
+	else if (d.u.sym->type == VOID)
+		d.u.s = new Common::String(*d.u.sym->name);
 	else
 		warning("c_eval: unhandled type: %s", d.type2str());
 
@@ -761,7 +763,7 @@ void Lingo::c_call() {
 	for (int i = nargs; i < sym->nargs; i++) {
 		Datum d;
 
-		d.u.i = 0;
+		d.u.s = NULL;
 		d.type = VOID;
 		g_lingo->push(d);
 	}
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 7082bef..a42b796 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -256,6 +256,7 @@ public:
 	static void c_open();
 
 	void printStubWithArglist(const char *funcname, int nargs);
+	void convertVOIDtoString(int arg, int nargs);
 	void dropStack(int nargs);
 
 	static void b_abs(int nargs);






More information about the Scummvm-git-logs mailing list