[Scummvm-cvs-logs] scummvm master -> 3864f316e0df25b82348b6443e2d1774567bc290

sev- sev at scummvm.org
Sun Aug 7 07:32:00 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:
e63460badc JANITORIAL: Compactify a bit built-in palette
3864f316e0 DIRECTOR: Lingo: Added 'play' and 'play done' command stubs


Commit: e63460badc60f422159cb812b1a7b787661f2a37
    https://github.com/scummvm/scummvm/commit/e63460badc60f422159cb812b1a7b787661f2a37
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-07T07:31:50+02:00

Commit Message:
JANITORIAL: Compactify a bit built-in palette

Changed paths:
    engines/director/score.cpp



diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 9fedb06..bcf65d8 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -46,70 +46,54 @@
 namespace Director {
 
 static byte defaultPalette[768] = {
-	  0,   0,   0,  17,  17,  17,  34,  34,  34,  68,  68,  68,
-	 85,  85,  85, 119, 119, 119, 136, 136, 136, 170, 170, 170,
-	187, 187, 187, 221, 221, 221, 238, 238, 238,   0,   0,  17,
-	  0,   0,  34,   0,   0,  68,   0,   0,  85,   0,   0, 119,
-	  0,   0, 136,   0,   0, 170,   0,   0, 187,   0,   0, 221,
-	  0,   0, 238,   0,  17,   0,   0,  34,   0,   0,  68,   0,
-	  0,  85,   0,   0, 119,   0,   0, 136,   0,   0, 170,   0,
-	  0, 187,   0,   0, 221,   0,   0, 238,   0,  17,   0,   0,
-	 34,   0,   0,  68,   0,   0,  85,   0,   0, 119,   0,   0,
-	136,   0,   0, 170,   0,   0, 187,   0,   0, 221,   0,   0,
-	238,   0,   0,   0,   0,  51,   0,   0, 102,   0,   0, 153,
-	  0,   0, 204,   0,   0, 255,   0,  51,   0,   0,  51,  51,
-	  0,  51, 102,   0,  51, 153,   0,  51, 204,   0,  51, 255,
-	  0, 102,   0,   0, 102,  51,   0, 102, 102,   0, 102, 153,
-	  0, 102, 204,   0, 102, 255,   0, 153,   0,   0, 153,  51,
-	  0, 153, 102,   0, 153, 153,   0, 153, 204,   0, 153, 255,
-	  0, 204,   0,   0, 204,  51,   0, 204, 102,   0, 204, 153,
-	  0, 204, 204,   0, 204, 255,   0, 255,   0,   0, 255,  51,
-	  0, 255, 102,   0, 255, 153,   0, 255, 204,   0, 255, 255,
-	 51,   0,   0,  51,   0,  51,  51,   0, 102,  51,   0, 153,
-	 51,   0, 204,  51,   0, 255,  51,  51,   0,  51,  51,  51,
-	 51,  51, 102,  51,  51, 153,  51,  51, 204,  51,  51, 255,
-	 51, 102,   0,  51, 102,  51,  51, 102, 102,  51, 102, 153,
-	 51, 102, 204,  51, 102, 255,  51, 153,   0,  51, 153,  51,
-	 51, 153, 102,  51, 153, 153,  51, 153, 204,  51, 153, 255,
-	 51, 204,   0,  51, 204,  51,  51, 204, 102,  51, 204, 153,
-	 51, 204, 204,  51, 204, 255,  51, 255,   0,  51, 255,  51,
-	 51, 255, 102,  51, 255, 153,  51, 255, 204,  51, 255, 255,
-	102,   0,   0, 102,   0,  51, 102,   0, 102, 102,   0, 153,
-	102,   0, 204, 102,   0, 255, 102,  51,   0, 102,  51,  51,
-	102,  51, 102, 102,  51, 153, 102,  51, 204, 102,  51, 255,
-	102, 102,   0, 102, 102,  51, 102, 102, 102, 102, 102, 153,
-	102, 102, 204, 102, 102, 255, 102, 153,   0, 102, 153,  51,
-	102, 153, 102, 102, 153, 153, 102, 153, 204, 102, 153, 255,
-	102, 204,   0, 102, 204,  51, 102, 204, 102, 102, 204, 153,
-	102, 204, 204, 102, 204, 255, 102, 255,   0, 102, 255,  51,
-	102, 255, 102, 102, 255, 153, 102, 255, 204, 102, 255, 255,
-	153,   0,   0, 153,   0,  51, 153,   0, 102, 153,   0, 153,
-	153,   0, 204, 153,   0, 255, 153,  51,   0, 153,  51,  51,
-	153,  51, 102, 153,  51, 153, 153,  51, 204, 153,  51, 255,
-	153, 102,   0, 153, 102,  51, 153, 102, 102, 153, 102, 153,
-	153, 102, 204, 153, 102, 255, 153, 153,   0, 153, 153,  51,
-	153, 153, 102, 153, 153, 153, 153, 153, 204, 153, 153, 255,
-	153, 204,   0, 153, 204,  51, 153, 204, 102, 153, 204, 153,
-	153, 204, 204, 153, 204, 255, 153, 255,   0, 153, 255,  51,
-	153, 255, 102, 153, 255, 153, 153, 255, 204, 153, 255, 255,
-	204,   0,   0, 204,   0,  51, 204,   0, 102, 204,   0, 153,
-	204,   0, 204, 204,   0, 255, 204,  51,   0, 204,  51,  51,
-	204,  51, 102, 204,  51, 153, 204,  51, 204, 204,  51, 255,
-	204, 102,   0, 204, 102,  51, 204, 102, 102, 204, 102, 153,
-	204, 102, 204, 204, 102, 255, 204, 153,   0, 204, 153,  51,
-	204, 153, 102, 204, 153, 153, 204, 153, 204, 204, 153, 255,
-	204, 204,   0, 204, 204,  51, 204, 204, 102, 204, 204, 153,
-	204, 204, 204, 204, 204, 255, 204, 255,   0, 204, 255,  51,
-	204, 255, 102, 204, 255, 153, 204, 255, 204, 204, 255, 255,
-	255,   0,   0, 255,   0,  51, 255,   0, 102, 255,   0, 153,
-	255,   0, 204, 255,   0, 255, 255,  51,   0, 255,  51,  51,
-	255,  51, 102, 255,  51, 153, 255,  51, 204, 255,  51, 255,
-	255, 102,   0, 255, 102,  51, 255, 102, 102, 255, 102, 153,
-	255, 102, 204, 255, 102, 255, 255, 153,   0, 255, 153,  51,
-	255, 153, 102, 255, 153, 153, 255, 153, 204, 255, 153, 255,
-	255, 204,   0, 255, 204,  51, 255, 204, 102, 255, 204, 153,
-	255, 204, 204, 255, 204, 255, 255, 255,   0, 255, 255,  51,
-	255, 255, 102, 255, 255, 153, 255, 255, 204, 255, 255, 255 };
+	  0,   0,   0,  17,  17,  17,  34,  34,  34,  68,  68,  68,  85,  85,  85, 119,
+	119, 119, 136, 136, 136, 170, 170, 170, 187, 187, 187, 221, 221, 221, 238, 238,
+	238,   0,   0,  17,   0,   0,  34,   0,   0,  68,   0,   0,  85,   0,   0, 119,
+	  0,   0, 136,   0,   0, 170,   0,   0, 187,   0,   0, 221,   0,   0, 238,   0,
+	 17,   0,   0,  34,   0,   0,  68,   0,   0,  85,   0,   0, 119,   0,   0, 136,
+	  0,   0, 170,   0,   0, 187,   0,   0, 221,   0,   0, 238,   0,  17,   0,   0,
+	 34,   0,   0,  68,   0,   0,  85,   0,   0, 119,   0,   0, 136,   0,   0, 170,
+	  0,   0, 187,   0,   0, 221,   0,   0, 238,   0,   0,   0,   0,  51,   0,   0,
+	102,   0,   0, 153,   0,   0, 204,   0,   0, 255,   0,  51,   0,   0,  51,  51,
+	  0,  51, 102,   0,  51, 153,   0,  51, 204,   0,  51, 255,   0, 102,   0,   0,
+	102,  51,   0, 102, 102,   0, 102, 153,   0, 102, 204,   0, 102, 255,   0, 153,
+	  0,   0, 153,  51,   0, 153, 102,   0, 153, 153,   0, 153, 204,   0, 153, 255,
+	  0, 204,   0,   0, 204,  51,   0, 204, 102,   0, 204, 153,   0, 204, 204,   0,
+	204, 255,   0, 255,   0,   0, 255,  51,   0, 255, 102,   0, 255, 153,   0, 255,
+	204,   0, 255, 255,  51,   0,   0,  51,   0,  51,  51,   0, 102,  51,   0, 153,
+	 51,   0, 204,  51,   0, 255,  51,  51,   0,  51,  51,  51,  51,  51, 102,  51,
+	 51, 153,  51,  51, 204,  51,  51, 255,  51, 102,   0,  51, 102,  51,  51, 102,
+	102,  51, 102, 153,  51, 102, 204,  51, 102, 255,  51, 153,   0,  51, 153,  51,
+	 51, 153, 102,  51, 153, 153,  51, 153, 204,  51, 153, 255,  51, 204,   0,  51,
+	204,  51,  51, 204, 102,  51, 204, 153,  51, 204, 204,  51, 204, 255,  51, 255,
+	  0,  51, 255,  51,  51, 255, 102,  51, 255, 153,  51, 255, 204,  51, 255, 255,
+	102,   0,   0, 102,   0,  51, 102,   0, 102, 102,   0, 153, 102,   0, 204, 102,
+	  0, 255, 102,  51,   0, 102,  51,  51, 102,  51, 102, 102,  51, 153, 102,  51,
+	204, 102,  51, 255, 102, 102,   0, 102, 102,  51, 102, 102, 102, 102, 102, 153,
+	102, 102, 204, 102, 102, 255, 102, 153,   0, 102, 153,  51, 102, 153, 102, 102,
+	153, 153, 102, 153, 204, 102, 153, 255, 102, 204,   0, 102, 204,  51, 102, 204,
+	102, 102, 204, 153, 102, 204, 204, 102, 204, 255, 102, 255,   0, 102, 255,  51,
+	102, 255, 102, 102, 255, 153, 102, 255, 204, 102, 255, 255, 153,   0,   0, 153,
+	  0,  51, 153,   0, 102, 153,   0, 153, 153,   0, 204, 153,   0, 255, 153,  51,
+	  0, 153,  51,  51, 153,  51, 102, 153,  51, 153, 153,  51, 204, 153,  51, 255,
+	153, 102,   0, 153, 102,  51, 153, 102, 102, 153, 102, 153, 153, 102, 204, 153,
+	102, 255, 153, 153,   0, 153, 153,  51, 153, 153, 102, 153, 153, 153, 153, 153,
+	204, 153, 153, 255, 153, 204,   0, 153, 204,  51, 153, 204, 102, 153, 204, 153,
+	153, 204, 204, 153, 204, 255, 153, 255,   0, 153, 255,  51, 153, 255, 102, 153,
+	255, 153, 153, 255, 204, 153, 255, 255, 204,   0,   0, 204,   0,  51, 204,   0,
+	102, 204,   0, 153, 204,   0, 204, 204,   0, 255, 204,  51,   0, 204,  51,  51,
+	204,  51, 102, 204,  51, 153, 204,  51, 204, 204,  51, 255, 204, 102,   0, 204,
+	102,  51, 204, 102, 102, 204, 102, 153, 204, 102, 204, 204, 102, 255, 204, 153,
+	  0, 204, 153,  51, 204, 153, 102, 204, 153, 153, 204, 153, 204, 204, 153, 255,
+	204, 204,   0, 204, 204,  51, 204, 204, 102, 204, 204, 153, 204, 204, 204, 204,
+	204, 255, 204, 255,   0, 204, 255,  51, 204, 255, 102, 204, 255, 153, 204, 255,
+	204, 204, 255, 255, 255,   0,   0, 255,   0,  51, 255,   0, 102, 255,   0, 153,
+	255,   0, 204, 255,   0, 255, 255,  51,   0, 255,  51,  51, 255,  51, 102, 255,
+	 51, 153, 255,  51, 204, 255,  51, 255, 255, 102,   0, 255, 102,  51, 255, 102,
+	102, 255, 102, 153, 255, 102, 204, 255, 102, 255, 255, 153,   0, 255, 153,  51,
+	255, 153, 102, 255, 153, 153, 255, 153, 204, 255, 153, 255, 255, 204,   0, 255,
+	204,  51, 255, 204, 102, 255, 204, 153, 255, 204, 204, 255, 204, 255, 255, 255,
+	  0, 255, 255,  51, 255, 255, 102, 255, 255, 153, 255, 255, 204, 255, 255, 255 };
 
 Score::Score(DirectorEngine *vm) {
 	_vm = vm;


Commit: 3864f316e0df25b82348b6443e2d1774567bc290
    https://github.com/scummvm/scummvm/commit/3864f316e0df25b82348b6443e2d1774567bc290
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-07T07:31:50+02:00

Commit Message:
DIRECTOR: Lingo: Added 'play' and 'play done' command stubs

Changed paths:
    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-code.cpp b/engines/director/lingo/lingo-code.cpp
index f9b2c1c..779ddf7 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -695,6 +695,20 @@ void Lingo::c_gotoprevious() {
 	g_lingo->func_gotoprevious();
 }
 
+void Lingo::c_play() {
+	Common::String frame((char *)&(*g_lingo->_currentScript)[g_lingo->_pc]);
+	g_lingo->_pc += g_lingo->calcStringAlignment(frame.c_str());
+
+	Common::String movie((char *)&(*g_lingo->_currentScript)[g_lingo->_pc]);
+	g_lingo->_pc += g_lingo->calcStringAlignment(movie.c_str());
+
+	warning("STUB: c_play(%s, %s)", frame.c_str(), movie.c_str());
+}
+
+void Lingo::c_playdone() {
+	warning("STUB: c_playdone()");
+}
+
 void Lingo::c_call() {
 	Common::String name((char *)&(*g_lingo->_currentScript)[g_lingo->_pc]);
 	g_lingo->_pc += g_lingo->calcStringAlignment(name.c_str());
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 87b2311..d8409c5 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -115,21 +115,23 @@
      tFACTORY = 304,
      tMETHOD = 305,
      tOPEN = 306,
-     tGE = 307,
-     tLE = 308,
-     tGT = 309,
-     tLT = 310,
-     tEQ = 311,
-     tNEQ = 312,
-     tAND = 313,
-     tOR = 314,
-     tNOT = 315,
-     tCONCAT = 316,
-     tCONTAINS = 317,
-     tSTARTS = 318,
-     tSPRITE = 319,
-     tINTERSECTS = 320,
-     tWITHIN = 321
+     tPLAY = 307,
+     tDONE = 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.  */
@@ -182,21 +184,23 @@
 #define tFACTORY 304
 #define tMETHOD 305
 #define tOPEN 306
-#define tGE 307
-#define tLE 308
-#define tGT 309
-#define tLT 310
-#define tEQ 311
-#define tNEQ 312
-#define tAND 313
-#define tOR 314
-#define tNOT 315
-#define tCONCAT 316
-#define tCONTAINS 317
-#define tSTARTS 318
-#define tSPRITE 319
-#define tINTERSECTS 320
-#define tWITHIN 321
+#define tPLAY 307
+#define tDONE 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
 
 
 
@@ -254,7 +258,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 193 of yacc.c.  */
-#line 258 "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
@@ -267,7 +271,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 271 "engines/director/lingo/lingo-gr.cpp"
+#line 275 "engines/director/lingo/lingo-gr.cpp"
 
 #ifdef short
 # undef short
@@ -480,22 +484,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  83
+#define YYFINAL  87
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   800
+#define YYLAST   784
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  80
+#define YYNTOKENS  82
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  34
+#define YYNNTS  35
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  123
+#define YYNRULES  125
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  262
+#define YYNSTATES  261
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   321
+#define YYMAXUTOK   323
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -504,12 +508,12 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      73,     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,    72,    78,     2,
-      74,    75,    70,    68,    79,    69,     2,    71,     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,
-      77,    67,    76,     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,
@@ -535,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
+      65,    66,    67,    68
 };
 
 #if YYDEBUG
@@ -552,62 +556,62 @@ static const yytype_uint16 yyprhs[] =
      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,
-     352,   355,   358,   360,   365,   368,   370,   374,   377,   380,
-     383,   386,   390,   393,   397,   400,   403,   405,   409,   412,
-     416,   417,   426,   429,   430,   439,   440,   442,   446,   451,
-     452,   456,   457,   459
+     351,   354,   357,   360,   362,   367,   370,   372,   376,   379,
+     382,   385,   388,   392,   395,   398,   400,   404,   407,   410,
+     413,   417,   420,   421,   430,   433,   434,   443,   444,   446,
+     450,   455,   456,   460,   461,   463
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      81,     0,    -1,    81,    82,    83,    -1,    83,    -1,     1,
-      73,    -1,    73,    -1,    -1,   107,    -1,   102,    -1,   112,
-      -1,    84,    -1,    86,    -1,    40,   101,    31,    19,    -1,
-      42,    19,    67,   101,    -1,    42,    12,    67,   101,    -1,
-      42,    13,   101,    67,   101,    -1,    42,    19,    44,   101,
-      -1,    42,    12,    44,   101,    -1,    42,    13,   101,    44,
-     101,    -1,   101,    -1,   102,    -1,    85,    -1,    87,    -1,
-      94,    74,    93,    75,   100,    99,    25,    41,    -1,    95,
-      67,   101,    99,    44,   101,    99,   100,    99,    25,    41,
-      -1,    95,    67,   101,    99,    22,    44,   101,    99,   100,
-      99,    25,    41,    -1,    45,    19,    43,   101,    -1,    96,
-      93,    43,    82,   100,    99,    25,    30,    -1,    96,    93,
-      43,    82,   100,    99,    48,   100,    99,    25,    30,    -1,
-      96,    93,    43,    82,   100,    99,    98,    89,    99,    25,
-      30,    -1,    96,    93,    43,    98,    85,    99,    -1,    96,
-      93,    43,    98,    85,    99,    48,    98,    85,    99,    -1,
-      96,    93,    43,    98,    85,    99,    90,    99,    88,    99,
-      -1,    -1,    48,    98,    85,    -1,    89,    92,    -1,    92,
-      -1,    90,    91,    -1,    91,    -1,    97,    93,    43,    98,
-      86,    99,    -1,    90,    -1,    97,    93,    43,   100,    99,
-      -1,   101,    -1,   101,    67,   101,    -1,    74,    93,    75,
+      83,     0,    -1,    83,    84,    85,    -1,    85,    -1,     1,
+      75,    -1,    75,    -1,    -1,   110,    -1,   104,    -1,   115,
+      -1,    86,    -1,    88,    -1,    40,   103,    31,    19,    -1,
+      42,    19,    69,   103,    -1,    42,    12,    69,   103,    -1,
+      42,    13,   103,    69,   103,    -1,    42,    19,    44,   103,
+      -1,    42,    12,    44,   103,    -1,    42,    13,   103,    44,
+     103,    -1,   103,    -1,   104,    -1,    87,    -1,    89,    -1,
+      96,    76,    95,    77,   102,   101,    25,    41,    -1,    97,
+      69,   103,   101,    44,   103,   101,   102,   101,    25,    41,
+      -1,    97,    69,   103,   101,    22,    44,   103,   101,   102,
+     101,    25,    41,    -1,    45,    19,    43,   103,    -1,    98,
+      95,    43,    84,   102,   101,    25,    30,    -1,    98,    95,
+      43,    84,   102,   101,    48,   102,   101,    25,    30,    -1,
+      98,    95,    43,    84,   102,   101,   100,    91,   101,    25,
+      30,    -1,    98,    95,    43,   100,    87,   101,    -1,    98,
+      95,    43,   100,    87,   101,    48,   100,    87,   101,    -1,
+      98,    95,    43,   100,    87,   101,    92,   101,    90,   101,
+      -1,    -1,    48,   100,    87,    -1,    91,    94,    -1,    94,
+      -1,    92,    93,    -1,    93,    -1,    99,    95,    43,   100,
+      88,   101,    -1,    92,    -1,    99,    95,    43,   102,   101,
+      -1,   103,    -1,   103,    69,   103,    -1,    76,    95,    77,
       -1,    41,    47,    -1,    41,    46,    19,    -1,    30,    -1,
-      24,    -1,    -1,    -1,    -1,   100,    82,    -1,   100,    86,
+      24,    -1,    -1,    -1,    -1,   102,    84,    -1,   102,    88,
       -1,    11,    -1,    14,    -1,    20,    -1,    16,    -1,    19,
-      74,   113,    75,    -1,    19,    -1,    12,    -1,    13,   101,
-      -1,    84,    -1,   101,    68,   101,    -1,   101,    69,   101,
-      -1,   101,    70,   101,    -1,   101,    71,   101,    -1,   101,
-      76,   101,    -1,   101,    77,   101,    -1,   101,    57,   101,
-      -1,   101,    52,   101,    -1,   101,    53,   101,    -1,   101,
-      58,   101,    -1,   101,    59,   101,    -1,    60,   101,    -1,
-     101,    78,   101,    -1,   101,    61,   101,    -1,   101,    62,
-     101,    -1,   101,    63,   101,    -1,    68,   101,    -1,    69,
-     101,    -1,    74,   101,    75,    -1,    64,   101,    65,   101,
-      -1,    64,   101,    66,   101,    -1,    34,    20,    -1,    35,
-      19,    -1,    40,   101,    -1,   104,    -1,    26,    -1,    28,
-     103,    -1,    18,   101,    -1,    17,   101,    -1,    17,    -1,
-      51,   101,    46,   101,    -1,    51,   101,    -1,    19,    -1,
-     103,    79,    19,    -1,    29,    32,    -1,    29,    37,    -1,
-      29,    39,    -1,    29,   105,    -1,    29,   105,   106,    -1,
-      29,   106,    -1,    44,    27,    20,    -1,    27,    20,    -1,
-      44,    20,    -1,    20,    -1,    38,    36,    20,    -1,    36,
-      20,    -1,    44,    36,    20,    -1,    -1,    33,    19,   108,
-      98,   110,    82,   111,   100,    -1,    49,    19,    -1,    -1,
-      50,    19,   109,    98,   110,    82,   111,   100,    -1,    -1,
-      19,    -1,   110,    79,    19,    -1,   110,    82,    79,    19,
-      -1,    -1,    19,    98,   113,    -1,    -1,   101,    -1,   113,
-      79,   101,    -1
+      76,   116,    77,    -1,    19,    -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,    34,    20,    -1,    35,
+      19,    -1,    40,   103,    -1,   106,    -1,   109,    -1,    26,
+      -1,    28,   105,    -1,    18,   103,    -1,    17,   103,    -1,
+      17,    -1,    51,   103,    46,   103,    -1,    51,   103,    -1,
+      19,    -1,   105,    81,    19,    -1,    29,    32,    -1,    29,
+      37,    -1,    29,    39,    -1,    29,   107,    -1,    29,   107,
+     108,    -1,    29,   108,    -1,    27,    20,    -1,    20,    -1,
+      38,    36,    20,    -1,    36,    20,    -1,    52,    53,    -1,
+      52,   107,    -1,    52,   107,   108,    -1,    52,   108,    -1,
+      -1,    33,    19,   111,   100,   113,    84,   114,   102,    -1,
+      49,    19,    -1,    -1,    50,    19,   112,   100,   113,    84,
+     114,   102,    -1,    -1,    19,    -1,   113,    81,    19,    -1,
+     113,    84,    81,    19,    -1,    -1,    19,   100,   116,    -1,
+      -1,   103,    -1,   116,    81,   103,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -621,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,   405,
-     406,   409,   412,   415,   416,   419,   420,   431,   432,   433,
-     434,   439,   445,   452,   453,   454,   455,   458,   459,   460,
-     488,   488,   494,   497,   497,   503,   504,   505,   506,   508,
-     512,   520,   521,   522
+     393,   394,   395,   396,   399,   400,   401,   402,   403,   404,
+     406,   407,   410,   413,   416,   417,   420,   421,   432,   433,
+     434,   435,   440,   446,   453,   454,   457,   458,   461,   462,
+     467,   473,   505,   505,   511,   514,   514,   520,   521,   522,
+     523,   525,   529,   537,   538,   539
 };
 #endif
 
@@ -641,16 +645,16 @@ static const char *const yytname[] =
   "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", "tGE", "tLE", "tGT", "tLT",
-  "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tCONCAT", "tCONTAINS", "tSTARTS",
-  "tSPRITE", "tINTERSECTS", "tWITHIN", "'='", "'+'", "'-'", "'*'", "'/'",
-  "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", "'&'", "','", "$accept",
-  "program", "nl", "programline", "asgn", "stmtoneliner", "stmt", "ifstmt",
-  "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
-  "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile",
-  "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "expr", "func",
-  "globallist", "gotofunc", "gotoframe", "gotomovie", "defn", "@1", "@2",
-  "argdef", "argstore", "macro", "arglist", 0
+  "tNLELSE", "tFACTORY", "tMETHOD", "tOPEN", "tPLAY", "tDONE", "tGE",
+  "tLE", "tGT", "tLT", "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tCONCAT",
+  "tCONTAINS", "tSTARTS", "tSPRITE", "tINTERSECTS", "tWITHIN", "'='",
+  "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'",
+  "'&'", "','", "$accept", "program", "nl", "programline", "asgn",
+  "stmtoneliner", "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt",
+  "elseifstmtoneliner", "elseifstmtoneliner1", "elseifstmt1", "cond",
+  "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist",
+  "expr", "func", "globallist", "gotofunc", "gotoframe", "gotomovie",
+  "playfunc", "defn", "@1", "@2", "argdef", "argstore", "macro", "arglist", 0
 };
 #endif
 
@@ -665,27 +669,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,    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,    80,    81,    81,    81,    82,    83,    83,    83,    83,
-      83,    83,    84,    84,    84,    84,    84,    84,    84,    85,
-      85,    86,    86,    86,    86,    86,    86,    87,    87,    87,
-      87,    87,    87,    88,    88,    89,    89,    90,    90,    91,
-      92,    92,    93,    93,    93,    94,    95,    96,    97,    98,
-      99,   100,   100,   100,   101,   101,   101,   101,   101,   101,
-     101,   101,   101,   101,   101,   101,   101,   101,   101,   101,
-     101,   101,   101,   101,   101,   101,   101,   101,   101,   101,
-     101,   101,   101,   101,   102,   102,   102,   102,   102,   102,
-     102,   102,   102,   102,   102,   103,   103,   104,   104,   104,
-     104,   104,   104,   105,   105,   105,   105,   106,   106,   106,
-     108,   107,   107,   109,   107,   110,   110,   110,   110,   111,
-     112,   113,   113,   113
+       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,   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.  */
@@ -699,11 +704,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,     2,
-       2,     2,     1,     4,     2,     1,     3,     2,     2,     2,
-       2,     3,     2,     3,     2,     2,     1,     3,     2,     3,
-       0,     8,     2,     0,     8,     0,     1,     3,     4,     0,
-       3,     0,     1,     3
+       2,     3,     4,     4,     2,     2,     2,     1,     1,     1,
+       2,     2,     2,     1,     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
@@ -711,85 +716,85 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    54,    60,     0,    55,    57,    92,     0,    49,
-      56,    88,     0,     0,    47,     0,     0,     0,     0,     0,
+       0,     0,    54,    60,     0,    55,    57,    93,     0,    49,
+      56,    89,     0,     0,    47,     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,     7,     9,     4,    59,     0,    62,    61,    91,
-      90,   121,   121,    95,    89,   106,     0,    97,     0,    98,
-       0,    99,     0,   100,   102,   110,    84,    85,    86,     0,
-      45,     0,     0,     0,     0,   112,   113,    94,    74,     0,
-      79,    80,     0,     1,     5,     6,     0,     0,     0,     0,
-      42,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   122,     0,   120,
-       0,   104,   108,     0,   105,     0,     0,     0,   101,    49,
+       0,     0,     3,    62,    21,    11,    22,     0,     0,     0,
+      19,     8,    87,    88,     7,     9,     4,    59,     0,    62,
+      61,    92,    91,   123,   123,    96,    90,   105,     0,    98,
+       0,    99,     0,   100,   101,   103,   112,    84,    85,    86,
+       0,    45,     0,     0,     0,     0,   114,   115,    95,   108,
+     109,   111,    74,     0,    79,    80,     0,     1,     5,     6,
+       0,     0,     0,     0,    42,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   124,     0,   122,     0,   104,   107,     0,   102,    49,
        0,    46,     0,     0,     0,     0,     0,     0,    49,     0,
-       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,    58,     0,    96,   107,   103,
-     109,   115,    12,    17,    14,     0,     0,    16,    13,    26,
-     115,    93,    82,    83,    51,     0,    44,    51,     0,    43,
-     123,   116,     0,    18,    15,     0,    50,     0,     0,    50,
-      50,    20,     0,   119,   119,    52,    53,     0,     0,    50,
-      49,    30,   117,     0,    51,    51,     0,    50,    51,     0,
-      51,     0,    48,    49,    50,    38,     0,   118,   111,   114,
-      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
+     110,     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,    58,     0,    97,   106,
+     117,    12,    17,    14,     0,     0,    16,    13,    26,   117,
+      94,    82,    83,    51,     0,    44,    51,     0,    43,   125,
+     118,     0,    18,    15,     0,    50,     0,     0,    50,    50,
+      20,     0,   121,   121,    52,    53,     0,     0,    50,    49,
+      30,   119,     0,    51,    51,     0,    50,    51,     0,    51,
+       0,    48,    49,    50,    38,     0,   120,   113,   116,    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,    30,   195,    31,    47,    33,   196,    35,   241,   225,
-     226,   215,   227,    89,    36,    37,    38,   216,   251,   175,
-     186,    39,   191,    54,    41,    63,    64,    42,   119,   128,
-     182,   204,    43,   108
+      -1,    31,   194,    32,    49,    34,   195,    36,   240,   224,
+     225,   214,   226,    93,    37,    38,    39,   215,   250,   174,
+     185,    40,   190,    56,    42,    64,    65,    43,    44,   119,
+     128,   181,   203,    45,   112
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -180
+#define YYPACT_NINF -189
 static const yytype_int16 yypact[] =
 {
-     208,   -57,  -180,  -180,   479,  -180,  -180,   479,   479,   695,
-    -180,  -180,    30,    31,  -180,    33,    27,    38,   479,   -11,
-     131,    41,    46,    52,   479,   479,   479,   479,   479,   479,
-       3,  -180,     4,  -180,  -180,  -180,     6,    15,   490,   673,
-    -180,  -180,  -180,  -180,  -180,     9,   479,  -180,   673,   673,
-     673,   479,   479,  -180,    -6,  -180,    66,  -180,    67,  -180,
-      55,  -180,    -2,    28,  -180,  -180,  -180,  -180,   504,    73,
-    -180,   -30,   479,   -22,    71,  -180,  -180,   553,    60,   575,
-      60,    60,   624,  -180,  -180,   272,   490,   479,   490,    72,
-     651,   479,   479,   479,   479,   479,   479,   479,   479,   479,
-     479,   479,   479,   479,   479,   479,   504,   673,   -60,    37,
-     107,  -180,  -180,   114,  -180,   119,   120,   112,  -180,  -180,
-     130,  -180,   479,   479,   526,   479,   479,   479,  -180,   479,
-     479,   479,  -180,  -180,    76,   673,    77,   597,    80,   479,
-     673,   673,   673,   673,   673,   673,   673,   673,   722,   722,
-      60,    60,   673,   673,   673,  -180,   479,  -180,  -180,  -180,
-    -180,   137,  -180,   673,   673,   479,   479,   673,   673,   673,
-     137,   673,   673,   673,  -180,    -1,  -180,  -180,   454,   673,
-     673,  -180,     5,   673,   673,     5,   331,   115,   479,   331,
-    -180,  -180,   141,    82,    82,  -180,  -180,   139,   479,   673,
-       8,    -7,  -180,   143,  -180,  -180,   124,   673,  -180,   136,
-    -180,   145,  -180,  -180,   145,  -180,   490,  -180,   331,   331,
-    -180,  -180,   331,  -180,   331,   145,   145,  -180,   490,   454,
-    -180,   123,   129,   331,   148,   149,  -180,   150,   133,  -180,
-    -180,  -180,  -180,   152,   138,   153,   154,   -12,  -180,   454,
-    -180,   395,   144,  -180,  -180,  -180,   331,  -180,  -180,  -180,
-    -180,  -180
+     206,   -68,  -189,  -189,   443,  -189,  -189,   443,   443,   478,
+    -189,  -189,    18,    49,  -189,    45,    14,    51,   443,    25,
+      48,    54,    56,    60,   443,    12,   443,   443,   443,   443,
+     443,     2,  -189,     3,  -189,  -189,  -189,     4,    21,   504,
+     682,  -189,  -189,  -189,  -189,  -189,  -189,     7,   443,  -189,
+     682,   682,   682,   443,   443,  -189,    33,  -189,    74,  -189,
+      95,  -189,    80,  -189,    15,  -189,  -189,  -189,  -189,   518,
+      98,  -189,   -26,   443,   -23,    75,  -189,  -189,   562,  -189,
+      15,  -189,   276,   584,   276,   276,   633,  -189,  -189,   272,
+     504,   443,   504,    76,   660,   443,   443,   443,   443,   443,
+     443,   443,   443,   443,   443,   443,   443,   443,   443,   443,
+     518,   682,   -18,    40,   103,  -189,  -189,   105,  -189,  -189,
+     110,  -189,   443,   443,   540,   443,   443,   443,  -189,   443,
+    -189,   443,   443,  -189,  -189,    57,   682,    59,   606,    62,
+     443,   682,   682,   682,   682,   682,   682,   682,   682,   704,
+     704,   276,   276,   682,   682,   682,  -189,   443,  -189,  -189,
+     119,  -189,   682,   682,   443,   443,   682,   682,   682,   119,
+     682,   682,   682,  -189,    13,  -189,  -189,   460,   682,   682,
+    -189,   -58,   682,   682,   -58,   333,    96,   443,   333,  -189,
+    -189,   125,    64,    64,  -189,  -189,   121,   443,   682,     8,
+      -4,  -189,   129,  -189,  -189,   108,   682,  -189,   120,  -189,
+     127,  -189,  -189,   127,  -189,   504,  -189,   333,   333,  -189,
+    -189,   333,  -189,   333,   127,   127,  -189,   504,   460,  -189,
+     107,   113,   333,   128,   134,  -189,   136,   126,  -189,  -189,
+    -189,  -189,   137,   122,   138,   140,    -9,  -189,   460,  -189,
+     399,   123,  -189,  -189,  -189,   333,  -189,  -189,  -189,  -189,
+    -189
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -180,  -180,   -28,    97,    23,  -170,     0,  -180,  -180,  -180,
-     -15,  -164,   -38,   -81,  -180,  -180,  -180,  -179,    -8,   -44,
-    -166,     2,    24,  -180,  -180,  -180,   125,  -180,  -180,  -180,
-      21,     7,  -180,   142
+    -189,  -189,   -27,    82,     6,  -166,     0,  -189,  -189,  -189,
+     -28,  -187,   -51,   -80,  -189,  -189,  -189,  -188,    -8,   -46,
+    -162,     1,    24,  -189,  -189,   149,   -12,  -189,  -189,  -189,
+    -189,    10,   -17,  -189,   130
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -799,172 +804,168 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -60
 static const yytype_int16 yytable[] =
 {
-      34,    52,    85,    83,   -10,   134,    48,   136,   190,    49,
-      50,   189,   -51,   -51,   122,   155,    44,   212,   114,   156,
-      68,   187,   125,    32,    40,   115,    77,    78,    79,    80,
-      81,    82,   228,   209,   116,    69,    70,   123,   218,   219,
-      90,   213,   222,   188,   224,   126,   228,    66,   106,    53,
-     230,    55,    65,   107,   107,   233,   210,    67,    56,   239,
-      74,   -51,   230,    57,    58,    75,    60,    58,    59,    60,
-      61,    76,   117,   110,   124,    62,    84,   -10,    84,   257,
-      86,   256,    87,    51,   192,    34,   111,   112,    90,   135,
-     137,   113,   121,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   154,    32,    40,
-     177,   161,    91,    92,   127,   138,   156,    93,    94,    95,
-     170,    96,    97,    98,   163,   164,   157,   167,   168,   169,
-     178,   171,   172,   173,   158,   232,   103,   104,   105,   159,
-     160,   179,   197,    71,    72,   200,   201,   238,   116,   162,
-      73,   174,   176,    84,   193,   208,   181,   194,   180,   198,
-     202,   203,   217,   221,   206,   220,   223,   183,   184,   212,
-     231,   240,   242,   244,   245,   246,   247,   252,   234,   253,
-     235,   237,   133,   254,   255,   259,   214,   236,   118,   243,
-     199,   185,   211,     0,   109,   248,     0,   250,     0,     0,
-     207,   205,     0,     0,     0,   229,     0,     0,    -6,     1,
-       0,     0,   260,     0,   261,     0,     0,     0,    90,     2,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
-      90,     0,   249,     0,    11,     0,    12,    13,    14,     0,
-       0,    15,    16,    17,     0,     0,     0,     0,    18,    19,
-      20,   258,     0,    21,     0,     0,     0,    22,    23,    24,
-       0,     0,     0,     0,     0,     0,     0,     0,    25,     0,
-       0,     0,    26,     0,     0,     0,    27,    28,     0,     0,
-       0,    -6,    29,     2,     3,     4,     5,     0,     6,     7,
+      35,    54,    87,   -10,    89,    50,    33,    46,    51,    52,
+     135,   189,   137,    81,   188,   -51,   -51,    88,   122,    69,
+     211,   125,   227,   191,    41,    78,   229,    82,    83,    84,
+      85,    86,    57,   208,    67,   186,   227,    55,   229,    58,
+      94,   217,   218,   123,   212,   221,   126,   223,    60,   110,
+      62,    60,   118,    62,   111,   111,   209,   187,   232,   156,
+      72,    73,   238,   157,    66,    79,   -51,    74,   130,    57,
+      68,    70,    71,    75,   124,    76,    58,    88,   -10,    77,
+      90,    59,   256,    53,   255,    60,    61,    62,    63,    35,
+      91,    94,   136,   138,   115,    33,   141,   142,   143,   144,
+     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
+     155,   160,   176,    41,   114,   116,   117,   121,   127,   139,
+     169,   157,   158,   162,   163,   159,   166,   167,   168,   161,
+     170,   177,   171,   172,   173,   231,   175,    88,   180,   196,
+     197,   178,   199,   200,   201,   202,   205,   237,   216,   219,
+     222,   211,   207,   243,   192,   239,   241,   193,   179,   244,
+     220,   245,   251,   252,   258,   182,   183,   230,   253,   246,
+     254,   134,   213,   235,    80,   233,   204,   234,   236,   184,
+       0,     0,     0,     0,   113,     0,   242,     0,   198,     0,
+       0,   210,   247,     0,   249,     0,     0,     0,   206,     0,
+       0,     0,     0,     0,   228,     0,    -6,     1,     0,   259,
+       0,   260,     0,     0,     0,     0,    94,     2,     3,     4,
+       5,     0,     6,     7,     8,     9,    10,     0,    94,     0,
+       0,   248,    11,     0,    12,    13,    14,     0,     0,    15,
+      16,    17,     0,     0,     0,     0,    18,    19,    20,     0,
+     257,    21,     0,     0,     0,    22,    23,    24,    25,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    26,     0,
+       0,     0,    27,     0,     0,     0,    28,    29,     0,     0,
+       0,    -6,    30,     2,     3,     4,     5,     0,     6,     7,
        8,     9,    10,     0,     0,     0,     0,     0,    11,     0,
       12,    13,    14,     0,     0,    15,    16,    17,     0,     0,
        0,     0,    18,    19,    20,     0,     0,    21,     0,     0,
-       0,    22,    23,    24,     0,     0,     0,     0,     0,     0,
-       0,     0,    25,     0,     0,     0,    26,     0,     0,     0,
-      27,    28,     2,     3,     4,     5,    29,     6,     7,     8,
-      45,    10,     0,     0,     0,     0,     0,    11,     0,    12,
-      13,    14,     0,     0,     0,    16,    17,     0,     0,     0,
-       0,    18,    19,    20,     0,     0,    21,     0,     0,     0,
-       0,     0,    24,     0,     0,     0,     0,     0,     0,     0,
-       0,    25,     0,     0,     0,    26,     0,     0,     0,    27,
-      28,     0,     0,     0,    84,    29,     2,     3,     4,     5,
-       0,     6,     7,     8,    45,    10,     0,     0,     0,     0,
-       0,    11,     0,    12,    13,    14,     0,     0,     0,    16,
-      17,     0,     0,     0,     0,    18,    19,    20,     0,     0,
-      21,     0,     0,     0,     0,     0,    24,     0,     0,     0,
-       0,     0,     0,     0,     0,    25,     0,     0,     0,    26,
-       0,     0,     0,    27,    28,     2,     3,     4,     5,    29,
-       6,     7,     8,    45,    10,     0,     0,     0,     0,     0,
-      11,     0,    12,    13,     0,     0,     0,     0,    16,    17,
-       2,     3,     4,     5,    18,     6,    20,     0,    45,    10,
-       0,     2,     3,     4,     5,    24,     6,     0,     0,    45,
-      10,     0,     0,     0,    25,     0,     0,     0,    26,    46,
-       0,    20,    27,    28,     0,     0,     0,     0,    29,     0,
-      46,     0,    20,     0,     0,   120,     0,     0,     0,    25,
-       0,     0,     0,    26,     0,     0,     0,    27,    28,     0,
-      25,     0,     0,    29,    26,     0,    91,    92,    27,    28,
-       0,    93,    94,    95,    88,    96,    97,    98,     0,     0,
-     165,     0,    99,   100,   101,   102,     0,     0,    91,    92,
-     103,   104,   105,    93,    94,    95,     0,    96,    97,    98,
-       0,     0,     0,   166,    99,   100,   101,   102,     0,   129,
-       0,     0,   103,   104,   105,    91,    92,     0,     0,     0,
-      93,    94,    95,     0,    96,    97,    98,     0,     0,     0,
-       0,    99,   100,   101,   102,     0,     0,    91,    92,   103,
-     104,   105,    93,    94,    95,     0,    96,    97,    98,     0,
-     130,   131,     0,    99,   100,   101,   102,     0,     0,    91,
-      92,   103,   104,   105,    93,    94,    95,     0,    96,    97,
-      98,     0,     0,     0,   139,    99,   100,   101,   102,     0,
-       0,     0,   132,   103,   104,   105,    91,    92,     0,     0,
-       0,    93,    94,    95,     0,    96,    97,    98,     0,     0,
-       0,     0,    99,   100,   101,   102,     0,     0,     0,   132,
-     103,   104,   105,    91,    92,     0,     0,     0,    93,    94,
-      95,     0,    96,    97,    98,     0,     0,     0,   139,    99,
-     100,   101,   102,     0,     0,    91,    92,   103,   104,   105,
-      93,    94,    95,     0,    96,    97,    98,     0,     0,     0,
-       0,    99,   100,   101,   102,     0,     0,   -59,   -59,   103,
-     104,   105,   -59,   -59,   -59,     0,   -59,   -59,   -59,     0,
-       0,     0,     0,     0,     0,   -59,   -59,     0,     0,    51,
-       0,   -59,   -59,   -59,    91,    92,     0,     0,     0,    93,
-      94,    95,     0,    96,    97,    98,     0,     0,     0,     0,
-       0,     0,   101,   102,     0,     0,     0,     0,   103,   104,
-     105
+       0,    22,    23,    24,    25,     0,     0,     0,     0,     0,
+      95,    96,     0,     0,    26,    97,    98,    99,    27,   100,
+     101,   102,    28,    29,     2,     3,     4,     5,    30,     6,
+       7,     8,    47,    10,   107,   108,   109,     0,     0,    11,
+       0,    12,    13,    14,     0,     0,     0,    16,    17,     0,
+       0,     0,     0,    18,    19,    20,     0,     0,    21,     0,
+       0,     0,     0,     0,    24,    25,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    26,     0,     0,     0,    27,
+       0,     0,     0,    28,    29,     0,     0,     0,    88,    30,
+       2,     3,     4,     5,     0,     6,     7,     8,    47,    10,
+       0,     0,     0,     0,     0,    11,     0,    12,    13,    14,
+       0,     0,     0,    16,    17,     0,     0,     0,     0,    18,
+      19,    20,     0,     0,    21,     0,     0,     0,     0,     0,
+      24,    25,     0,     0,     2,     3,     4,     5,     0,     6,
+       0,    26,    47,    10,     0,    27,     0,     0,     0,    28,
+      29,     2,     3,     4,     5,    30,     6,     7,     8,    47,
+      10,     0,     0,    48,     0,    20,    11,     0,    12,    13,
+       0,     0,     0,     0,    16,    17,     0,     0,     0,     0,
+      18,     0,    20,     0,     0,    26,     0,     0,     0,    27,
+       0,    24,    25,    28,    29,     2,     3,     4,     5,    30,
+       6,     0,    26,    47,    10,     0,    27,     0,     0,     0,
+      28,    29,   -59,   -59,     0,     0,    30,   -59,   -59,   -59,
+       0,   -59,   -59,   -59,    48,     0,    20,     0,     0,   120,
+     -59,   -59,     0,     0,    53,     0,   -59,   -59,   -59,     0,
+       0,     0,     0,     0,     0,     0,    26,     0,     0,     0,
+      27,     0,    95,    96,    28,    29,     0,    97,    98,    99,
+      92,   100,   101,   102,   164,     0,     0,     0,   103,   104,
+     105,   106,     0,     0,    95,    96,   107,   108,   109,    97,
+      98,    99,     0,   100,   101,   102,     0,     0,   129,   165,
+     103,   104,   105,   106,     0,     0,    95,    96,   107,   108,
+     109,    97,    98,    99,     0,   100,   101,   102,     0,     0,
+       0,     0,   103,   104,   105,   106,     0,     0,    95,    96,
+     107,   108,   109,    97,    98,    99,     0,   100,   101,   102,
+       0,   131,   132,     0,   103,   104,   105,   106,     0,     0,
+      95,    96,   107,   108,   109,    97,    98,    99,     0,   100,
+     101,   102,     0,     0,     0,   140,   103,   104,   105,   106,
+       0,     0,     0,   133,   107,   108,   109,    95,    96,     0,
+       0,     0,    97,    98,    99,     0,   100,   101,   102,     0,
+       0,     0,     0,   103,   104,   105,   106,     0,     0,     0,
+     133,   107,   108,   109,    95,    96,     0,     0,     0,    97,
+      98,    99,     0,   100,   101,   102,     0,     0,     0,   140,
+     103,   104,   105,   106,     0,     0,    95,    96,   107,   108,
+     109,    97,    98,    99,     0,   100,   101,   102,     0,     0,
+       0,     0,   103,   104,   105,   106,     0,     0,    95,    96,
+     107,   108,   109,    97,    98,    99,     0,   100,   101,   102,
+       0,     0,     0,     0,     0,     0,   105,   106,     0,     0,
+       0,     0,   107,   108,   109
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,     9,    30,     0,     0,    86,     4,    88,   178,     7,
-       8,   177,    24,    25,    44,    75,    73,    24,    20,    79,
-      18,    22,    44,     0,     0,    27,    24,    25,    26,    27,
-      28,    29,   211,    25,    36,    46,    47,    67,   204,   205,
-      38,    48,   208,    44,   210,    67,   225,    20,    46,    19,
-     214,    20,    19,    51,    52,   221,    48,    19,    27,   229,
-      19,    73,   226,    32,    36,    19,    38,    36,    37,    38,
-      39,    19,    44,    79,    72,    44,    73,    73,    73,   249,
-      74,   247,    67,    74,    79,    85,    20,    20,    86,    87,
-      88,    36,    19,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,    85,    85,
-     138,   119,    52,    53,    43,    43,    79,    57,    58,    59,
-     128,    61,    62,    63,   122,   123,    19,   125,   126,   127,
-     138,   129,   130,   131,    20,   216,    76,    77,    78,    20,
-      20,   139,   186,    12,    13,   189,   190,   228,    36,    19,
-      19,    75,    75,    73,   182,   199,    19,   185,   156,    44,
-      19,    79,    19,   207,    25,    41,    30,   165,   166,    24,
-     214,    48,    43,    25,    25,    25,    43,    25,   222,    41,
-     224,   225,    85,    30,    30,    41,   201,   225,    63,   233,
-     188,   170,   200,    -1,    52,   239,    -1,   241,    -1,    -1,
-     198,   194,    -1,    -1,    -1,   213,    -1,    -1,     0,     1,
-      -1,    -1,   256,    -1,   258,    -1,    -1,    -1,   216,    11,
-      12,    13,    14,    -1,    16,    17,    18,    19,    20,    -1,
-     228,    -1,   240,    -1,    26,    -1,    28,    29,    30,    -1,
-      -1,    33,    34,    35,    -1,    -1,    -1,    -1,    40,    41,
-      42,   251,    -1,    45,    -1,    -1,    -1,    49,    50,    51,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
-      -1,    -1,    64,    -1,    -1,    -1,    68,    69,    -1,    -1,
-      -1,    73,    74,    11,    12,    13,    14,    -1,    16,    17,
+       0,     9,     0,     0,    31,     4,     0,    75,     7,     8,
+      90,   177,    92,    25,   176,    24,    25,    75,    44,    18,
+      24,    44,   210,    81,     0,    24,   213,    26,    27,    28,
+      29,    30,    20,    25,    20,    22,   224,    19,   225,    27,
+      39,   203,   204,    69,    48,   207,    69,   209,    36,    48,
+      38,    36,    64,    38,    53,    54,    48,    44,   220,    77,
+      12,    13,   228,    81,    19,    53,    75,    19,    80,    20,
+      19,    46,    47,    19,    73,    19,    27,    75,    75,    19,
+      76,    32,   248,    76,   246,    36,    37,    38,    39,    89,
+      69,    90,    91,    92,    20,    89,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   119,   139,    89,    81,    20,    36,    19,    43,    43,
+     128,    81,    19,   122,   123,    20,   125,   126,   127,    19,
+     129,   139,   131,   132,    77,   215,    77,    75,    19,   185,
+      44,   140,   188,   189,    19,    81,    25,   227,    19,    41,
+      30,    24,   198,    25,   181,    48,    43,   184,   157,    25,
+     206,    25,    25,    41,    41,   164,   165,   213,    30,    43,
+      30,    89,   200,   224,    25,   221,   193,   223,   224,   169,
+      -1,    -1,    -1,    -1,    54,    -1,   232,    -1,   187,    -1,
+      -1,   199,   238,    -1,   240,    -1,    -1,    -1,   197,    -1,
+      -1,    -1,    -1,    -1,   212,    -1,     0,     1,    -1,   255,
+      -1,   257,    -1,    -1,    -1,    -1,   215,    11,    12,    13,
+      14,    -1,    16,    17,    18,    19,    20,    -1,   227,    -1,
+      -1,   239,    26,    -1,    28,    29,    30,    -1,    -1,    33,
+      34,    35,    -1,    -1,    -1,    -1,    40,    41,    42,    -1,
+     250,    45,    -1,    -1,    -1,    49,    50,    51,    52,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -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,    -1,    -1,    -1,    -1,    -1,    26,    -1,
       28,    29,    30,    -1,    -1,    33,    34,    35,    -1,    -1,
       -1,    -1,    40,    41,    42,    -1,    -1,    45,    -1,    -1,
-      -1,    49,    50,    51,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    60,    -1,    -1,    -1,    64,    -1,    -1,    -1,
-      68,    69,    11,    12,    13,    14,    74,    16,    17,    18,
-      19,    20,    -1,    -1,    -1,    -1,    -1,    26,    -1,    28,
-      29,    30,    -1,    -1,    -1,    34,    35,    -1,    -1,    -1,
-      -1,    40,    41,    42,    -1,    -1,    45,    -1,    -1,    -1,
-      -1,    -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    60,    -1,    -1,    -1,    64,    -1,    -1,    -1,    68,
-      69,    -1,    -1,    -1,    73,    74,    11,    12,    13,    14,
-      -1,    16,    17,    18,    19,    20,    -1,    -1,    -1,    -1,
-      -1,    26,    -1,    28,    29,    30,    -1,    -1,    -1,    34,
-      35,    -1,    -1,    -1,    -1,    40,    41,    42,    -1,    -1,
-      45,    -1,    -1,    -1,    -1,    -1,    51,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    64,
-      -1,    -1,    -1,    68,    69,    11,    12,    13,    14,    74,
-      16,    17,    18,    19,    20,    -1,    -1,    -1,    -1,    -1,
-      26,    -1,    28,    29,    -1,    -1,    -1,    -1,    34,    35,
-      11,    12,    13,    14,    40,    16,    42,    -1,    19,    20,
-      -1,    11,    12,    13,    14,    51,    16,    -1,    -1,    19,
-      20,    -1,    -1,    -1,    60,    -1,    -1,    -1,    64,    40,
-      -1,    42,    68,    69,    -1,    -1,    -1,    -1,    74,    -1,
-      40,    -1,    42,    -1,    -1,    31,    -1,    -1,    -1,    60,
-      -1,    -1,    -1,    64,    -1,    -1,    -1,    68,    69,    -1,
-      60,    -1,    -1,    74,    64,    -1,    52,    53,    68,    69,
-      -1,    57,    58,    59,    74,    61,    62,    63,    -1,    -1,
-      44,    -1,    68,    69,    70,    71,    -1,    -1,    52,    53,
-      76,    77,    78,    57,    58,    59,    -1,    61,    62,    63,
-      -1,    -1,    -1,    67,    68,    69,    70,    71,    -1,    46,
-      -1,    -1,    76,    77,    78,    52,    53,    -1,    -1,    -1,
-      57,    58,    59,    -1,    61,    62,    63,    -1,    -1,    -1,
-      -1,    68,    69,    70,    71,    -1,    -1,    52,    53,    76,
-      77,    78,    57,    58,    59,    -1,    61,    62,    63,    -1,
-      65,    66,    -1,    68,    69,    70,    71,    -1,    -1,    52,
-      53,    76,    77,    78,    57,    58,    59,    -1,    61,    62,
-      63,    -1,    -1,    -1,    67,    68,    69,    70,    71,    -1,
-      -1,    -1,    75,    76,    77,    78,    52,    53,    -1,    -1,
-      -1,    57,    58,    59,    -1,    61,    62,    63,    -1,    -1,
-      -1,    -1,    68,    69,    70,    71,    -1,    -1,    -1,    75,
-      76,    77,    78,    52,    53,    -1,    -1,    -1,    57,    58,
-      59,    -1,    61,    62,    63,    -1,    -1,    -1,    67,    68,
-      69,    70,    71,    -1,    -1,    52,    53,    76,    77,    78,
-      57,    58,    59,    -1,    61,    62,    63,    -1,    -1,    -1,
-      -1,    68,    69,    70,    71,    -1,    -1,    52,    53,    76,
-      77,    78,    57,    58,    59,    -1,    61,    62,    63,    -1,
-      -1,    -1,    -1,    -1,    -1,    70,    71,    -1,    -1,    74,
-      -1,    76,    77,    78,    52,    53,    -1,    -1,    -1,    57,
-      58,    59,    -1,    61,    62,    63,    -1,    -1,    -1,    -1,
-      -1,    -1,    70,    71,    -1,    -1,    -1,    -1,    76,    77,
-      78
+      -1,    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1,
+      54,    55,    -1,    -1,    62,    59,    60,    61,    66,    63,
+      64,    65,    70,    71,    11,    12,    13,    14,    76,    16,
+      17,    18,    19,    20,    78,    79,    80,    -1,    -1,    26,
+      -1,    28,    29,    30,    -1,    -1,    -1,    34,    35,    -1,
+      -1,    -1,    -1,    40,    41,    42,    -1,    -1,    45,    -1,
+      -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -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,
+      -1,    -1,    -1,    -1,    -1,    26,    -1,    28,    29,    30,
+      -1,    -1,    -1,    34,    35,    -1,    -1,    -1,    -1,    40,
+      41,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,
+      51,    52,    -1,    -1,    11,    12,    13,    14,    -1,    16,
+      -1,    62,    19,    20,    -1,    66,    -1,    -1,    -1,    70,
+      71,    11,    12,    13,    14,    76,    16,    17,    18,    19,
+      20,    -1,    -1,    40,    -1,    42,    26,    -1,    28,    29,
+      -1,    -1,    -1,    -1,    34,    35,    -1,    -1,    -1,    -1,
+      40,    -1,    42,    -1,    -1,    62,    -1,    -1,    -1,    66,
+      -1,    51,    52,    70,    71,    11,    12,    13,    14,    76,
+      16,    -1,    62,    19,    20,    -1,    66,    -1,    -1,    -1,
+      70,    71,    54,    55,    -1,    -1,    76,    59,    60,    61,
+      -1,    63,    64,    65,    40,    -1,    42,    -1,    -1,    31,
+      72,    73,    -1,    -1,    76,    -1,    78,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,    -1,
+      66,    -1,    54,    55,    70,    71,    -1,    59,    60,    61,
+      76,    63,    64,    65,    44,    -1,    -1,    -1,    70,    71,
+      72,    73,    -1,    -1,    54,    55,    78,    79,    80,    59,
+      60,    61,    -1,    63,    64,    65,    -1,    -1,    46,    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,
+      -1,    -1,    78,    79,    80
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -973,31 +974,31 @@ static const yytype_uint8 yystos[] =
 {
        0,     1,    11,    12,    13,    14,    16,    17,    18,    19,
       20,    26,    28,    29,    30,    33,    34,    35,    40,    41,
-      42,    45,    49,    50,    51,    60,    64,    68,    69,    74,
-      81,    83,    84,    85,    86,    87,    94,    95,    96,   101,
-     102,   104,   107,   112,    73,    19,    40,    84,   101,   101,
-     101,    74,    98,    19,   103,    20,    27,    32,    36,    37,
-      38,    39,    44,   105,   106,    19,    20,    19,   101,    46,
-      47,    12,    13,    19,    19,    19,    19,   101,   101,   101,
-     101,   101,   101,     0,    73,    82,    74,    67,    74,    93,
-     101,    52,    53,    57,    58,    59,    61,    62,    63,    68,
-      69,    70,    71,    76,    77,    78,   101,   101,   113,   113,
-      79,    20,    20,    36,    20,    27,    36,    44,   106,   108,
-      31,    19,    44,    67,   101,    44,    67,    43,   109,    46,
-      65,    66,    75,    83,    93,   101,    93,   101,    43,    67,
-     101,   101,   101,   101,   101,   101,   101,   101,   101,   101,
-     101,   101,   101,   101,   101,    75,    79,    19,    20,    20,
-      20,    98,    19,   101,   101,    44,    67,   101,   101,   101,
-      98,   101,   101,   101,    75,    99,    75,    82,    98,   101,
-     101,    19,   110,   101,   101,   110,   100,    22,    44,   100,
-      85,   102,    79,    82,    82,    82,    86,    99,    44,   101,
-      99,    99,    19,    79,   111,   111,    25,   101,    99,    25,
-      48,    98,    24,    48,    90,    91,    97,    19,   100,   100,
-      41,    99,   100,    30,   100,    89,    90,    92,    97,    98,
-      91,    99,    93,   100,    99,    99,    92,    99,    93,    85,
-      48,    88,    43,    99,    25,    25,    25,    43,    99,    98,
-      99,    98,    25,    41,    30,    30,   100,    85,    86,    41,
-      99,    99
+      42,    45,    49,    50,    51,    52,    62,    66,    70,    71,
+      76,    83,    85,    86,    87,    88,    89,    96,    97,    98,
+     103,   104,   106,   109,   110,   115,    75,    19,    40,    86,
+     103,   103,   103,    76,   100,    19,   105,    20,    27,    32,
+      36,    37,    38,    39,   107,   108,    19,    20,    19,   103,
+      46,    47,    12,    13,    19,    19,    19,    19,   103,    53,
+     107,   108,   103,   103,   103,   103,   103,     0,    75,    84,
+      76,    69,    76,    95,   103,    54,    55,    59,    60,    61,
+      63,    64,    65,    70,    71,    72,    73,    78,    79,    80,
+     103,   103,   116,   116,    81,    20,    20,    36,   108,   111,
+      31,    19,    44,    69,   103,    44,    69,    43,   112,    46,
+     108,    67,    68,    77,    85,    95,   103,    95,   103,    43,
+      69,   103,   103,   103,   103,   103,   103,   103,   103,   103,
+     103,   103,   103,   103,   103,   103,    77,    81,    19,    20,
+     100,    19,   103,   103,    44,    69,   103,   103,   103,   100,
+     103,   103,   103,    77,   101,    77,    84,   100,   103,   103,
+      19,   113,   103,   103,   113,   102,    22,    44,   102,    87,
+     104,    81,    84,    84,    84,    88,   101,    44,   103,   101,
+     101,    19,    81,   114,   114,    25,   103,   101,    25,    48,
+     100,    24,    48,    92,    93,    99,    19,   102,   102,    41,
+     101,   102,    30,   102,    91,    92,    94,    99,   100,    93,
+     101,    95,   102,   101,   101,    94,   101,    95,    87,    48,
+      90,    43,   101,    25,    25,    25,    43,   101,   100,   101,
+     100,    25,    41,    30,    30,   102,    87,    88,    41,   101,
+     101
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2311,70 +2312,70 @@ yyreduce:
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
-  case 88:
-#line 403 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 404 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeConst(0); // Push fake value on stack
 							  g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
-  case 90:
-#line 406 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 407 "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 91:
-#line 409 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 410 "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 412 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 413 "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 93:
-#line 415 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_open); ;}
-    break;
-
   case 94:
 #line 416 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
+    { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
   case 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); ;}
+#line 417 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
   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); ;}
+    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 97:
-#line 431 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotoloop); ;}
+#line 421 "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 98:
 #line 432 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotonext); ;}
+    { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
   case 99:
 #line 433 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotoprevious); ;}
+    { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
   case 100:
 #line 434 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_gotoprevious); ;}
+    break;
+
+  case 101:
+#line 435 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_goto);
 		g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str());
@@ -2382,8 +2383,8 @@ yyreduce:
 		delete (yyvsp[(2) - (2)].s); ;}
     break;
 
-  case 101:
-#line 439 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 440 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_goto);
 		g_lingo->codeString((yyvsp[(2) - (3)].s)->c_str());
@@ -2392,8 +2393,8 @@ yyreduce:
 		delete (yyvsp[(3) - (3)].s); ;}
     break;
 
-  case 102:
-#line 445 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 446 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_goto);
 		g_lingo->codeString("");
@@ -2401,11 +2402,6 @@ yyreduce:
 		delete (yyvsp[(2) - (2)].s); ;}
     break;
 
-  case 103:
-#line 452 "engines/director/lingo/lingo-gr.y"
-    { (yyval.s) = (yyvsp[(3) - (3)].s); ;}
-    break;
-
   case 104:
 #line 453 "engines/director/lingo/lingo-gr.y"
     { (yyval.s) = (yyvsp[(2) - (2)].s); ;}
@@ -2413,36 +2409,59 @@ yyreduce:
 
   case 105:
 #line 454 "engines/director/lingo/lingo-gr.y"
-    { (yyval.s) = (yyvsp[(2) - (2)].s); ;}
+    { (yyval.s) = (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 106:
-#line 455 "engines/director/lingo/lingo-gr.y"
-    { (yyval.s) = (yyvsp[(1) - (1)].s); ;}
+#line 457 "engines/director/lingo/lingo-gr.y"
+    { (yyval.s) = (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 107:
 #line 458 "engines/director/lingo/lingo-gr.y"
-    { (yyval.s) = (yyvsp[(3) - (3)].s); ;}
+    { (yyval.s) = (yyvsp[(2) - (2)].s); ;}
     break;
 
   case 108:
-#line 459 "engines/director/lingo/lingo-gr.y"
-    { (yyval.s) = (yyvsp[(2) - (2)].s); ;}
+#line 461 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
   case 109:
-#line 460 "engines/director/lingo/lingo-gr.y"
-    { (yyval.s) = (yyvsp[(3) - (3)].s); ;}
+#line 462 "engines/director/lingo/lingo-gr.y"
+    {
+		g_lingo->code1(g_lingo->c_play);
+		g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str());
+		g_lingo->codeString("");
+		delete (yyvsp[(2) - (2)].s); ;}
     break;
 
   case 110:
-#line 488 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
+#line 467 "engines/director/lingo/lingo-gr.y"
+    {
+		g_lingo->code1(g_lingo->c_play);
+		g_lingo->codeString((yyvsp[(2) - (3)].s)->c_str());
+		g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str());
+		delete (yyvsp[(2) - (3)].s);
+		delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 111:
-#line 489 "engines/director/lingo/lingo-gr.y"
+#line 473 "engines/director/lingo/lingo-gr.y"
+    {
+		g_lingo->code1(g_lingo->c_play);
+		g_lingo->codeString("");
+		g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str());
+		delete (yyvsp[(2) - (2)].s); ;}
+    break;
+
+  case 112:
+#line 505 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
+    break;
+
+  case 113:
+#line 506 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeConst(0); // Push fake value on stack
 			g_lingo->code1(g_lingo->c_procret);
@@ -2450,20 +2469,20 @@ yyreduce:
 			g_lingo->_indef = false; ;}
     break;
 
-  case 112:
-#line 494 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 511 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
 		;}
     break;
 
-  case 113:
-#line 497 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 514 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
-  case 114:
-#line 498 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 515 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeConst(0); // Push fake value on stack
 			g_lingo->code1(g_lingo->c_procret);
@@ -2471,33 +2490,33 @@ yyreduce:
 			g_lingo->_indef = false; ;}
     break;
 
-  case 115:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 520 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 116:
-#line 504 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 521 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 117:
-#line 505 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 522 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 118:
-#line 506 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 523 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 119:
-#line 508 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 525 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
-  case 120:
-#line 512 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 529 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str());
@@ -2506,24 +2525,24 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 121:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 537 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 122:
-#line 521 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 538 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 123:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 539 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 2527 "engines/director/lingo/lingo-gr.cpp"
+#line 2546 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2737,6 +2756,6 @@ yyreturn:
 }
 
 
-#line 525 "engines/director/lingo/lingo-gr.y"
+#line 542 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 4969805..387ebfe 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -88,21 +88,23 @@
      tFACTORY = 304,
      tMETHOD = 305,
      tOPEN = 306,
-     tGE = 307,
-     tLE = 308,
-     tGT = 309,
-     tLT = 310,
-     tEQ = 311,
-     tNEQ = 312,
-     tAND = 313,
-     tOR = 314,
-     tNOT = 315,
-     tCONCAT = 316,
-     tCONTAINS = 317,
-     tSTARTS = 318,
-     tSPRITE = 319,
-     tINTERSECTS = 320,
-     tWITHIN = 321
+     tPLAY = 307,
+     tDONE = 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.  */
@@ -155,21 +157,23 @@
 #define tFACTORY 304
 #define tMETHOD 305
 #define tOPEN 306
-#define tGE 307
-#define tLE 308
-#define tGT 309
-#define tLT 310
-#define tEQ 311
-#define tNEQ 312
-#define tAND 313
-#define tOR 314
-#define tNOT 315
-#define tCONCAT 316
-#define tCONTAINS 317
-#define tSTARTS 318
-#define tSPRITE 319
-#define tINTERSECTS 320
-#define tWITHIN 321
+#define tPLAY 307
+#define tDONE 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
 
 
 
@@ -187,7 +191,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 1529 of yacc.c.  */
-#line 191 "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 786d243..afefe69 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 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 tWITH tWHILE tNLELSE tFACTORY tMETHOD tOPEN
+%token tWITH tWHILE tNLELSE tFACTORY tMETHOD tOPEN tPLAY tDONE
 %token tGE tLE tGT tLT tEQ tNEQ tAND tOR tNOT
 %token tCONCAT tCONTAINS tSTARTS
 %token tSPRITE tINTERSECTS tWITHIN
@@ -400,6 +400,7 @@ func: tMCI STRING			{ g_lingo->code1(g_lingo->c_mci); g_lingo->codeString($2->c_
 	| 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); }
 	| gotofunc
+	| playfunc
 	| tEXIT					{ g_lingo->codeConst(0); // Push fake value on stack
 							  g_lingo->code1(g_lingo->c_procret); }
 	| tGLOBAL globallist
@@ -449,15 +450,31 @@ gotofunc: tGO tLOOP				{ g_lingo->code1(g_lingo->c_gotoloop); }
 		delete $2; }
 	;
 
-gotoframe: tTO tFRAME STRING	{ $$ = $3; }
-	| tFRAME STRING				{ $$ = $2; }
-	| tTO STRING				{ $$ = $2; }
+gotoframe: tFRAME STRING		{ $$ = $2; }
 	| STRING					{ $$ = $1; }
 	;
 
 gotomovie: tOF tMOVIE STRING	{ $$ = $3; }
 	| tMOVIE STRING				{ $$ = $2; }
-	| tTO tMOVIE STRING			{ $$ = $3; }
+	;
+
+playfunc: tPLAY tDONE			{ g_lingo->code1(g_lingo->c_playdone); }
+	| tPLAY gotoframe 			{
+		g_lingo->code1(g_lingo->c_play);
+		g_lingo->codeString($2->c_str());
+		g_lingo->codeString("");
+		delete $2; }
+	| tPLAY gotoframe gotomovie	{
+		g_lingo->code1(g_lingo->c_play);
+		g_lingo->codeString($2->c_str());
+		g_lingo->codeString($3->c_str());
+		delete $2;
+		delete $3; }
+	| tPLAY gotomovie				{
+		g_lingo->code1(g_lingo->c_play);
+		g_lingo->codeString("");
+		g_lingo->codeString($2->c_str());
+		delete $2; }
 	;
 
 // macro
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 387fd67..dfea1ce 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 55
-#define YY_END_OF_BUFFER 56
+#define YY_NUM_RULES 58
+#define YY_END_OF_BUFFER 59
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,28 +373,30 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[189] =
+static yyconst flex_int16_t yy_accept[197] =
     {   0,
-        0,    0,   56,   54,    3,   52,   52,   54,   54,   51,
-       51,   51,   50,   51,   51,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,    2,    2,    3,   52,    0,    0,   52,    0,
-        0,   53,   47,    1,   49,   50,   46,   44,   45,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   16,
-        7,   48,   48,   48,   48,   48,   48,   48,   48,   27,
-       48,   29,   48,   48,   48,   48,   48,   48,   48,   38,
-       48,   48,    2,    2,    0,    1,   49,    4,   48,   48,
-       48,   11,   48,   48,   48,   48,   48,   48,   48,   21,
-
-       48,   48,   48,   26,   48,   48,   31,   48,   33,   48,
-       48,   48,   48,   48,   48,    0,   48,    6,   10,   13,
-       48,   48,   48,   48,   18,   19,   48,   48,   48,   48,
-       25,   28,   48,   48,   48,   48,    0,   37,   42,   48,
-       40,    9,   48,   48,   14,   48,   48,   20,   48,   48,
-       24,   48,   48,   48,   48,   36,   43,   48,    0,   48,
-       48,   15,   48,   48,   23,   48,   32,   39,   34,    0,
-       41,    0,   48,   12,   48,   22,   48,    0,    8,    5,
-       48,   30,    0,   48,    0,   17,   35,    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,   55,    0,
+        0,   56,   50,    1,   52,   53,   49,   47,   48,   51,
+       51,   51,   51,   51,   51,   51,   51,   51,   51,   17,
+        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,   18,   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
+
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -439,59 +441,61 @@ static yyconst flex_int32_t yy_meta[61] =
         6,    6,    6,    6,    6,    6,    6,    6,    6,    6
     } ;
 
-static yyconst flex_int16_t yy_base[194] =
+static yyconst flex_int16_t yy_base[202] =
     {   0,
-        0,   59,  164,  454,   63,   67,   71,   75,  153,  454,
-      144,  141,   52,   68,  124,   56,    0,   56,   57,   67,
-       72,   68,   68,   69,  112,   70,  104,  105,   80,  117,
-      119,  120,  171,  175,  179,   97,  183,  187,  191,   80,
-      116,  454,  454,    0,   93,  134,  454,  454,  454,    0,
-      112,   82,  104,  137,  172,  174,  181,  184,  173,    0,
-        0,  170,  175,  187,  182,  176,  175,  176,  181,    0,
-      196,    0,  197,  186,  190,  188,  197,  218,  218,    0,
-      225,  214,  249,  260,  216,    0,   80,    0,  223,  229,
-      230,    0,  226,  227,  234,  250,  248,  242,  244,  240,
-
-      255,  257,  252,    0,  258,  252,    0,  268,    0,  265,
-      262,  291,  273,  277,  267,  276,  288,    0,    0,    0,
-      277,  287,  295,  284,    0,    0,  288,  305,  289,  302,
-        0,    0,  299,  309,  294,  297,  330,    0,    0,  312,
-      310,  345,  313,  308,    0,  317,  312,    0,  328,  335,
-        0,  328,  326,  335,  328,  362,    0,  335,  366,  336,
-      332,    0,  351,  340,    0,  340,    0,    0,    0,  378,
-        0,  354,  345,    0,  367,    0,  356,  368,  454,    0,
-      359,    0,  388,  366,  398,    0,  399,  454,  429,  431,
-      437,  442,  447
-
+        0,   59,  162,  472,   63,   67,   71,   75,  154,  472,
+      141,  134,   52,   68,  129,   56,    0,   56,   57,   67,
+       72,   68,   68,   69,  112,   70,  104,  111,   80,  118,
+      130,  143,  175,  180,  189,   97,  193,  167,  197,   80,
+      129,  472,  472,    0,   93,  128,  472,  472,  472,    0,
+      104,   82,  176,  114,  112,  165,  187,  190,  179,  169,
+        0,  176,  181,  196,  191,  186,  185,  184,  189,    0,
+      196,    0,  207,  204,  193,  198,  201,  205,  221,  226,
+        0,  230,  219,  259,  263,  221,    0,   80,    0,  223,
+      238,  232,  251,    0,  240,  244,  253,  264,  281,  265,
+
+      258,  258,  254,  263,  267,  260,    0,  269,  260,  264,
+        0,  281,    0,  278,  273,  325,  278,  281,  285,  298,
+      303,    0,    0,    0,    0,  294,  304,  317,  306,  305,
+        0,    0,  309,  323,  312,  324,    0,    0,    0,  321,
+      331,  316,  317,  348,    0,    0,  335,  332,  359,  336,
+      321,    0,  340,  472,  335,    0,  346,  355,    0,  348,
+      345,  361,  351,  379,    0,  358,  389,  359,  350,    0,
+      371,  360,    0,  362,    0,    0,    0,  396,    0,  376,
+      371,    0,  386,    0,  375,  387,  472,    0,  379,    0,
+      411,  386,  417,    0,  421,  472,  447,  449,  455,  460,
+
+      465
     } ;
 
-static yyconst flex_int16_t yy_def[194] =
+static yyconst flex_int16_t yy_def[202] =
     {   0,
-      188,    1,  188,  188,  188,  188,  188,  188,  189,  188,
-      188,  188,  188,  188,  188,  190,  190,  190,  190,  190,
-      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
-      190,  190,  188,  188,  188,  188,  188,  188,  188,  188,
-      189,  188,  188,  191,  188,  188,  188,  188,  188,  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,  188,  188,  188,  191,  188,  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,  188,  190,  190,  190,  190,
-      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
-      190,  190,  190,  190,  190,  190,  192,  190,  190,  190,
-      190,  188,  190,  190,  190,  190,  190,  190,  190,  190,
-      190,  190,  190,  190,  190,  192,  190,  190,  188,  190,
-      190,  190,  190,  190,  190,  190,  190,  190,  190,  188,
-      190,  188,  190,  190,  190,  190,  190,  188,  188,  190,
-      190,  190,  188,  190,  193,  190,  193,    0,  188,  188,
-      188,  188,  188
-
+      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
     } ;
 
-static yyconst flex_int16_t yy_nxt[515] =
+static yyconst flex_int16_t yy_nxt[533] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,    4,
        13,   14,   10,   15,   16,   17,   18,   19,   20,   21,
@@ -502,57 +506,59 @@ static yyconst flex_int16_t yy_nxt[515] =
        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,
-       87,   54,   59,   55,   62,   60,   63,   69,   75,   36,
+       88,   54,   59,   55,   62,   60,   63,   69,   76,   36,
 
-       36,   58,   56,   87,   85,   51,   52,   53,   89,   40,
+       36,   58,   56,   88,   86,   51,   52,   53,   90,   40,
        57,   61,   68,   40,   54,   59,   55,   62,   60,   63,
-       69,   42,   75,   70,   58,   56,   64,   85,   65,   88,
-       66,   89,   71,   72,   73,   76,   49,   74,   90,   67,
-       79,   81,   82,   45,   46,   77,   80,   70,   78,   44,
-       64,   43,   65,   88,   66,   71,   72,   73,   42,   76,
-       74,   90,   67,  188,   79,   81,   82,   91,   77,   80,
-      188,   78,   83,   36,   36,   84,   84,   36,   36,   84,
-       35,   36,   36,   37,   37,   36,   36,   37,   38,   92,
-       91,   38,   38,   39,   39,   38,   93,   94,   95,  188,
-
-       96,   97,   98,   99,  100,   40,  188,  101,  102,   40,
-      188,  103,  104,   92,  105,  106,  188,  107,  108,  109,
-       93,   94,   95,   96,   97,   98,  110,   99,  100,   40,
-      101,  102,  111,   40,  103,  104,  112,  188,  105,  106,
-      107,  108,  109,  113,  188,  115,  116,  114,  119,  110,
-       83,   36,   36,   84,  117,  118,  111,  120,  121,  122,
-      112,   84,   36,   36,   84,  123,  124,  113,  115,  116,
-      126,  114,  119,  127,  128,  125,  129,  117,  118,  130,
-      120,  121,  122,  131,  132,  133,  134,  135,  141,  123,
-      124,  136,  137,  126,  142,  137,  127,  128,  125,  139,
-
-      129,  140,  143,  130,  144,  145,  131,  132,  133,  146,
-      134,  135,  141,  147,  136,  148,  150,  138,  142,  149,
-      151,  152,  139,  153,  140,  154,  143,  144,  155,  145,
-      157,  137,  158,  146,  137,  160,  147,  161,  148,  150,
-      138,  162,  163,  149,  151,  152,  159,  153,  154,  159,
-      164,  155,  165,  168,  157,  166,  158,  167,  169,  160,
-      161,  171,  173,  170,  162,  163,  170,  159,  174,  175,
-      159,  176,  177,  179,  164,  180,  165,  168,  166,  170,
-      167,  169,  170,  181,  171,  173,  182,  183,  172,  185,
-      184,  174,  185,  175,  176,  177,  186,  179,  180,  185,
-
-      188,  188,  185,  188,  188,  178,  188,  181,  188,  182,
-      188,  183,  172,  184,  188,  188,  188,  188,  188,  186,
-      188,  188,  188,  188,  188,  188,  188,  188,  178,   41,
-       41,  188,   41,   41,   41,   50,   50,   86,   86,  188,
-      188,   86,   86,  156,  188,  188,  188,  156,  187,  188,
-      188,  188,  187,    3,  188,  188,  188,  188,  188,  188,
-      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
-      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
-      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
-      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
-
-      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
-      188,  188,  188,  188
+       69,   89,   76,   70,   58,   56,   64,   86,   65,   94,
+       66,   90,   71,   72,   42,   73,   77,   45,   46,   67,
+       74,   49,   44,   75,   93,   89,   78,   70,   43,   79,
+       64,   80,   65,   94,   66,   71,   72,   81,   73,   42,
+       77,  196,   67,   74,   82,   83,   75,   93,   38,   78,
+       99,   38,   79,   99,  196,   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,   98,  100,  101,   40,
+       92,   95,  102,  103,  108,   40,  196,  104,  105,  106,
+      107,  109,  110,  196,  111,   91,  112,   96,   97,   98,
+      100,  101,  113,   92,  114,  115,  102,  103,  108,   40,
+      104,  105,  106,  107,  116,  109,  110,  111,  117,  112,
+      119,  120,  118,  196,  121,  113,  122,  114,  123,  115,
+       84,   36,   36,   85,   85,   36,   36,   85,  116,  124,
+      196,  125,  117,  119,  120,  126,  118,  121,  127,  128,
+      122,  123,   99,  130,  135,   99,  132,  133,  134,  136,
+      196,  137,  131,  124,  125,  138,  139,  140,  126,  141,
+
+      142,  127,  143,  128,  146,  147,  148,  130,  135,  132,
+      133,  134,  129,  136,  137,  131,  149,  150,  138,  139,
+      140,  151,  152,  141,  142,  143,  144,  146,  147,  144,
+      148,  153,  196,  154,  155,  129,  156,  157,  196,  158,
+      149,  150,  159,  160,  151,  161,  152,  162,  163,  144,
+      169,  145,  144,  165,  166,  153,  154,  155,  168,  156,
+      167,  157,  158,  167,  170,  171,  159,  160,  172,  161,
+      162,  163,  173,  169,  145,  174,  175,  165,  166,  176,
+      178,  177,  168,  178,  179,  181,  182,  170,  171,  183,
+      167,  184,  172,  167,  185,  187,  173,  178,  174,  175,
+
+      178,  188,  189,  176,  177,  190,  191,  179,  181,  182,
+      192,  180,  193,  183,  184,  193,  194,  185,  193,  187,
+      196,  193,  196,  186,  188,  196,  189,  196,  190,  196,
+      191,  196,  196,  192,  196,  180,  196,  196,  196,  194,
+      196,  196,  196,  196,  196,  196,  186,   41,   41,  196,
+       41,   41,   41,   50,   50,   87,   87,  196,  196,   87,
+       87,  164,  196,  196,  196,  164,  195,  196,  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
     } ;
 
-static yyconst flex_int16_t yy_chk[515] =
+static yyconst flex_int16_t yy_chk[533] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -563,54 +569,56 @@ static yyconst flex_int16_t yy_chk[515] =
         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,
-       87,   20,   22,   20,   23,   22,   24,   26,   29,   36,
+       88,   20,   22,   20,   23,   22,   24,   26,   29,   36,
 
        36,   21,   20,   45,   40,   16,   18,   19,   52,    6,
        21,   23,   26,    7,   20,   22,   20,   23,   22,   24,
-       26,   41,   29,   27,   21,   20,   25,   40,   25,   51,
-       25,   52,   27,   27,   28,   30,   15,   28,   53,   25,
-       31,   32,   32,   46,   46,   30,   31,   27,   30,   12,
-       25,   11,   25,   51,   25,   27,   27,   28,    9,   30,
-       28,   53,   25,    3,   31,   32,   32,   54,   30,   31,
-        0,   30,   33,   33,   33,   33,   34,   34,   34,   34,
-       35,   35,   35,   35,   37,   37,   37,   37,   38,   55,
-       54,   38,   39,   39,   39,   39,   56,   57,   58,    0,
-
-       59,   62,   63,   64,   65,   38,    0,   66,   67,   39,
-        0,   68,   69,   55,   71,   73,    0,   74,   75,   76,
-       56,   57,   58,   59,   62,   63,   77,   64,   65,   38,
-       66,   67,   78,   39,   68,   69,   79,    0,   71,   73,
-       74,   75,   76,   81,    0,   82,   85,   81,   91,   77,
-       83,   83,   83,   83,   89,   90,   78,   93,   94,   95,
-       79,   84,   84,   84,   84,   96,   97,   81,   82,   85,
-       98,   81,   91,   99,  100,   97,  101,   89,   90,  102,
-       93,   94,   95,  103,  105,  106,  108,  110,  115,   96,
-       97,  111,  112,   98,  116,  112,   99,  100,   97,  113,
-
-      101,  114,  117,  102,  121,  122,  103,  105,  106,  123,
-      108,  110,  115,  124,  111,  127,  129,  112,  116,  128,
-      130,  133,  113,  134,  114,  135,  117,  121,  136,  122,
-      140,  137,  141,  123,  137,  143,  124,  144,  127,  129,
-      112,  146,  147,  128,  130,  133,  142,  134,  135,  142,
-      149,  136,  150,  154,  140,  152,  141,  153,  155,  143,
-      144,  158,  160,  156,  146,  147,  156,  159,  161,  163,
-      159,  164,  166,  172,  149,  173,  150,  154,  152,  170,
-      153,  155,  170,  175,  158,  160,  177,  178,  159,  183,
-      181,  161,  183,  163,  164,  166,  184,  172,  173,  185,
-
-      187,    0,  185,  187,    0,  170,    0,  175,    0,  177,
-        0,  178,  159,  181,    0,    0,    0,    0,    0,  184,
-        0,    0,    0,    0,    0,    0,    0,    0,  170,  189,
-      189,    0,  189,  189,  189,  190,  190,  191,  191,    0,
-        0,  191,  191,  192,    0,    0,    0,  192,  193,    0,
-        0,    0,  193,  188,  188,  188,  188,  188,  188,  188,
-      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
-      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
-      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
-      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
-
-      188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
-      188,  188,  188,  188
+       26,   51,   29,   27,   21,   20,   25,   40,   25,   55,
+       25,   52,   27,   27,   41,   28,   30,   46,   46,   25,
+       28,   15,   12,   28,   54,   51,   30,   27,   11,   30,
+       25,   31,   25,   55,   25,   27,   27,   31,   28,    9,
+       30,    3,   25,   28,   32,   32,   28,   54,   38,   30,
+       60,   38,   30,   60,    0,   31,   33,   33,   33,   33,
+       31,   34,   34,   34,   34,   38,    0,   56,   32,   32,
+       35,   35,   35,   35,   37,   37,   37,   37,   39,   39,
+
+       39,   39,   53,   57,   58,    0,   59,   62,   63,   38,
+       53,   56,   64,   65,   71,   39,    0,   66,   67,   68,
+       69,   73,   74,    0,   75,   53,   76,   57,   58,   59,
+       62,   63,   77,   53,   78,   79,   64,   65,   71,   39,
+       66,   67,   68,   69,   80,   73,   74,   75,   82,   76,
+       83,   86,   82,    0,   90,   77,   91,   78,   92,   79,
+       84,   84,   84,   84,   85,   85,   85,   85,   80,   93,
+        0,   95,   82,   83,   86,   96,   82,   90,   97,   98,
+       91,   92,   99,  100,  104,   99,  101,  102,  103,  105,
+        0,  106,  100,   93,   95,  108,  109,  110,   96,  112,
+
+      114,   97,  115,   98,  117,  118,  119,  100,  104,  101,
+      102,  103,   99,  105,  106,  100,  120,  121,  108,  109,
+      110,  126,  127,  112,  114,  115,  116,  117,  118,  116,
+      119,  128,    0,  129,  130,   99,  133,  134,    0,  135,
+      120,  121,  136,  140,  126,  141,  127,  142,  143,  144,
+      151,  116,  144,  147,  148,  128,  129,  130,  150,  133,
+      149,  134,  135,  149,  153,  155,  136,  140,  157,  141,
+      142,  143,  158,  151,  116,  160,  161,  147,  148,  162,
+      164,  163,  150,  164,  166,  168,  169,  153,  155,  171,
+      167,  172,  157,  167,  174,  180,  158,  178,  160,  161,
+
+      178,  181,  183,  162,  163,  185,  186,  166,  168,  169,
+      189,  167,  191,  171,  172,  191,  192,  174,  193,  180,
+        0,  193,  195,  178,  181,  195,  183,    0,  185,    0,
+      186,    0,    0,  189,    0,  167,    0,    0,    0,  192,
+        0,    0,    0,    0,    0,    0,  178,  197,  197,    0,
+      197,  197,  197,  198,  198,  199,  199,    0,    0,  199,
+      199,  200,    0,    0,    0,  200,  201,    0,    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
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -684,7 +692,7 @@ static void countnl() {
 	g_lingo->_colnumber = strlen(p);
 }
 
-#line 688 "engines/director/lingo/lingo-lex.cpp"
+#line 696 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -872,7 +880,7 @@ YY_DECL
 #line 69 "engines/director/lingo/lingo-lex.l"
 
 
-#line 876 "engines/director/lingo/lingo-lex.cpp"
+#line 884 "engines/director/lingo/lingo-lex.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -926,13 +934,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 >= 189 )
+				if ( yy_current_state >= 197 )
 					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] != 454 );
+		while ( yy_base[yy_current_state] != 472 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -984,153 +992,168 @@ YY_RULE_SETUP
 case 6:
 YY_RULE_SETUP
 #line 77 "engines/director/lingo/lingo-lex.l"
-{ count(); return tDOWN; }
+{ count(); return tDONE; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
 #line 78 "engines/director/lingo/lingo-lex.l"
-{ count(); return tIF; }
+{ count(); return tDOWN; }
 	YY_BREAK
 case 8:
-/* rule 8 can match eol */
 YY_RULE_SETUP
 #line 79 "engines/director/lingo/lingo-lex.l"
-{ countnl(); return tNLELSIF; }
+{ count(); return tIF; }
 	YY_BREAK
 case 9:
 /* rule 9 can match eol */
 YY_RULE_SETUP
 #line 80 "engines/director/lingo/lingo-lex.l"
-{ countnl(); return tNLELSE; }
+{ countnl(); return tNLELSIF; }
 	YY_BREAK
 case 10:
+/* rule 10 can match eol */
 YY_RULE_SETUP
 #line 81 "engines/director/lingo/lingo-lex.l"
-{ count(); return tELSE; }
+{ countnl(); return tNLELSE; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
 #line 82 "engines/director/lingo/lingo-lex.l"
-{ count(); return tEND; }
+{ count(); return tELSE; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
 #line 83 "engines/director/lingo/lingo-lex.l"
-{ count(); return tFACTORY; }
+{ count(); return tEND; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
 #line 84 "engines/director/lingo/lingo-lex.l"
-{ count(); return tEXIT; }
+{ count(); return tFACTORY; }
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
 #line 85 "engines/director/lingo/lingo-lex.l"
-{ count(); return tFRAME; }
+{ count(); return tEXIT; }
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
 #line 86 "engines/director/lingo/lingo-lex.l"
-{ count(); return tGLOBAL; }
+{ count(); return tFRAME; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
 #line 87 "engines/director/lingo/lingo-lex.l"
-{ count(); return tGO; }
+{ count(); return tGLOBAL; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
 #line 88 "engines/director/lingo/lingo-lex.l"
-{ count(); return tINTERSECTS; }
+{ count(); return tGO; }
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
 #line 89 "engines/director/lingo/lingo-lex.l"
-{ count(); return tINTO; }
+{ count(); return tGO; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
 #line 90 "engines/director/lingo/lingo-lex.l"
-{ count(); return tLOOP; }
+{ count(); return tINTERSECTS; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
 #line 91 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMACRO; }
+{ count(); return tINTO; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
 #line 92 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMCI; }
+{ count(); return tLOOP; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
 #line 93 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMCIWAIT; }
+{ count(); return tMACRO; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
 #line 94 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMETHOD; }
+{ count(); return tMCI; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
 #line 95 "engines/director/lingo/lingo-lex.l"
-{ count(); return tMOVIE; }
+{ count(); return tMCIWAIT; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 96 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEXT; }
+{ count(); return tMETHOD; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 97 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNOT; }
+{ count(); return tMOVIE; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 98 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOF; }
+{ count(); return tNEXT; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 99 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOPEN; }
+{ count(); return tNOT; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 100 "engines/director/lingo/lingo-lex.l"
-{ count(); return tOR; }
+{ count(); return tOF; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 101 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPREVIOUS; }
+{ count(); return tOPEN; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 102 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPUT; }
+{ count(); return tOR; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 103 "engines/director/lingo/lingo-lex.l"
-{ count(); return tREPEAT; }
+{ count(); return tPLAY; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 104 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSET; }
+{ count(); return tPREVIOUS; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 105 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSTARTS; }
+{ count(); return tPUT; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 106 "engines/director/lingo/lingo-lex.l"
+{ count(); return tREPEAT; }
+	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();
 
@@ -1172,9 +1195,9 @@ YY_RULE_SETUP
 		warning("Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
-case 36:
+case 39:
 YY_RULE_SETUP
-#line 146 "engines/director/lingo/lingo-lex.l"
+#line 149 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1195,64 +1218,64 @@ YY_RULE_SETUP
 		warning("Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
-case 37:
+case 40:
 YY_RULE_SETUP
-#line 165 "engines/director/lingo/lingo-lex.l"
+#line 168 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
-case 38:
+case 41:
 YY_RULE_SETUP
-#line 166 "engines/director/lingo/lingo-lex.l"
+#line 169 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
-case 39:
+case 42:
 YY_RULE_SETUP
-#line 167 "engines/director/lingo/lingo-lex.l"
+#line 170 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
-case 40:
+case 43:
 YY_RULE_SETUP
-#line 168 "engines/director/lingo/lingo-lex.l"
+#line 171 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
-case 41:
+case 44:
 YY_RULE_SETUP
-#line 169 "engines/director/lingo/lingo-lex.l"
+#line 172 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
-case 42:
+case 45:
 YY_RULE_SETUP
-#line 170 "engines/director/lingo/lingo-lex.l"
+#line 173 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
-case 43:
+case 46:
 YY_RULE_SETUP
-#line 171 "engines/director/lingo/lingo-lex.l"
+#line 174 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
-case 44:
+case 47:
 YY_RULE_SETUP
-#line 173 "engines/director/lingo/lingo-lex.l"
+#line 176 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
-case 45:
+case 48:
 YY_RULE_SETUP
-#line 174 "engines/director/lingo/lingo-lex.l"
+#line 177 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
-case 46:
+case 49:
 YY_RULE_SETUP
-#line 175 "engines/director/lingo/lingo-lex.l"
+#line 178 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
-case 47:
+case 50:
 YY_RULE_SETUP
-#line 176 "engines/director/lingo/lingo-lex.l"
+#line 179 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
-case 48:
+case 51:
 YY_RULE_SETUP
-#line 178 "engines/director/lingo/lingo-lex.l"
+#line 181 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1278,43 +1301,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 49:
+case 52:
 YY_RULE_SETUP
-#line 202 "engines/director/lingo/lingo-lex.l"
+#line 205 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
-case 50:
+case 53:
 YY_RULE_SETUP
-#line 203 "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 51:
+case 54:
 YY_RULE_SETUP
-#line 204 "engines/director/lingo/lingo-lex.l"
+#line 207 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
-case 52:
-/* rule 52 can match eol */
+case 55:
+/* rule 55 can match eol */
 YY_RULE_SETUP
-#line 205 "engines/director/lingo/lingo-lex.l"
+#line 208 "engines/director/lingo/lingo-lex.l"
 { return '\n'; }
 	YY_BREAK
-case 53:
+case 56:
 YY_RULE_SETUP
-#line 206 "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 54:
+case 57:
 YY_RULE_SETUP
-#line 207 "engines/director/lingo/lingo-lex.l"
+#line 210 "engines/director/lingo/lingo-lex.l"
 
 	YY_BREAK
-case 55:
+case 58:
 YY_RULE_SETUP
-#line 209 "engines/director/lingo/lingo-lex.l"
+#line 212 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1318 "engines/director/lingo/lingo-lex.cpp"
+#line 1341 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1607,7 +1630,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 >= 189 )
+			if ( yy_current_state >= 197 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1635,11 +1658,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 >= 189 )
+		if ( yy_current_state >= 197 )
 			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 == 188);
+	yy_is_jam = (yy_current_state == 196);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2314,7 +2337,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 209 "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 4f539c6..16e060a 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -74,6 +74,7 @@ whitespace [\t ]
 
 (?i:and)			{ count(); return tAND; }
 (?i:contains)		{ count(); return tCONTAINS; }
+(?i:done)			{ count(); return tDONE; }
 (?i:down)			{ count(); return tDOWN; }
 (?i:if)				{ count(); return tIF; }
 (?i:[\n\r]+[\t ]*else[\t ]+if)	{ countnl(); return tNLELSIF; }
@@ -85,6 +86,7 @@ whitespace [\t ]
 (?i:frame)			{ count(); return tFRAME; }
 (?i:global)			{ count(); return tGLOBAL; }
 (?i:go)				{ count(); return tGO; }
+(?i:go[\t ]+to)		{ count(); return tGO; }
 (?i:intersects)		{ count(); return tINTERSECTS; }
 (?i:into)			{ count(); return tINTO; }
 (?i:loop)			{ count(); return tLOOP; }
@@ -98,6 +100,7 @@ whitespace [\t ]
 (?i:of)				{ count(); return tOF; }
 (?i:open)			{ count(); return tOPEN; }
 (?i:or)				{ count(); return tOR; }
+(?i:play)			{ count(); return tPLAY; }
 (?i:previous)		{ count(); return tPREVIOUS; }
 (?i:put)			{ count(); return tPUT; }
 (?i:repeat)			{ count(); return tREPEAT; }
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index afb23df..15b581c 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -249,6 +249,9 @@ public:
 	static void c_gotoprevious();
 	static void c_global();
 
+	static void c_play();
+	static void c_playdone();
+
 	static void c_open();
 
 	static void b_abs();






More information about the Scummvm-git-logs mailing list