From 3e835a9e2a617eb23c94d7c0977f929178d31bea Mon Sep 17 00:00:00 2001
From: Eugene Sandulenko
Date: Mon, 23 Dec 2019 12:59:59 +0100
Subject: DIRECTOR: LINGO: Simplified grammar for 'go' keyword

---
 engines/director/lingo/lingo-gr.cpp  | 1298 +++++++++++++++++-----------------
 engines/director/lingo/lingo-gr.h    |  208 +++---
 engines/director/lingo/lingo-gr.y    |   14 +-
 engines/director/lingo/lingo-lex.cpp |  667 ++++++++---------
 engines/director/lingo/lingo-lex.l   |    3 +-
 5 files changed, 1081 insertions(+), 1109 deletions(-)

diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 2d5ba04067..f8c2c50c1a 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -104,58 +104,57 @@
      tELSE = 293,
      tELSIF = 294,
      tEXIT = 295,
-     tFRAME = 296,
-     tGLOBAL = 297,
-     tGO = 298,
-     tIF = 299,
-     tINTO = 300,
-     tLOOP = 301,
-     tMACRO = 302,
-     tMOVIE = 303,
-     tNEXT = 304,
-     tOF = 305,
-     tPREVIOUS = 306,
-     tPUT = 307,
-     tREPEAT = 308,
-     tSET = 309,
-     tTHEN = 310,
-     tTO = 311,
-     tWHEN = 312,
-     tWITH = 313,
-     tWHILE = 314,
-     tNLELSE = 315,
-     tFACTORY = 316,
-     tOPEN = 317,
-     tPLAY = 318,
-     tDONE = 319,
-     tINSTANCE = 320,
-     tGE = 321,
-     tLE = 322,
-     tEQ = 323,
-     tNEQ = 324,
-     tAND = 325,
-     tOR = 326,
-     tNOT = 327,
-     tMOD = 328,
-     tAFTER = 329,
-     tBEFORE = 330,
-     tCONCAT = 331,
-     tCONTAINS = 332,
-     tSTARTS = 333,
-     tCHAR = 334,
-     tITEM = 335,
-     tLINE = 336,
-     tWORD = 337,
-     tSPRITE = 338,
-     tINTERSECTS = 339,
-     tWITHIN = 340,
-     tTELL = 341,
-     tPROPERTY = 342,
-     tON = 343,
-     tME = 344,
-     tENDIF = 345,
-     tENDREPEAT = 346,
-     tENDTELL = 347
+     tGLOBAL = 296,
+     tGO = 297,
+     tIF = 298,
+     tINTO = 299,
+     tLOOP = 300,
+     tMACRO = 301,
+     tMOVIE = 302,
+     tNEXT = 303,
+     tOF = 304,
+     tPREVIOUS = 305,
+     tPUT = 306,
+     tREPEAT = 307,
+     tSET = 308,
+     tTHEN = 309,
+     tTO = 310,
+     tWHEN = 311,
+     tWITH = 312,
+     tWHILE = 313,
+     tNLELSE = 314,
+     tFACTORY = 315,
+     tOPEN = 316,
+     tPLAY = 317,
+     tDONE = 318,
+     tINSTANCE = 319,
+     tGE = 320,
+     tLE = 321,
+     tEQ = 322,
+     tNEQ = 323,
+     tAND = 324,
+     tOR = 325,
+     tNOT = 326,
+     tMOD = 327,
+     tAFTER = 328,
+     tBEFORE = 329,
+     tCONCAT = 330,
+     tCONTAINS = 331,
+     tSTARTS = 332,
+     tCHAR = 333,
+     tITEM = 334,
+     tLINE = 335,
+     tWORD = 336,
+     tSPRITE = 337,
+     tINTERSECTS = 338,
+     tWITHIN = 339,
+     tTELL = 340,
+     tPROPERTY = 341,
+     tON = 342,
+     tME = 343,
+     tENDIF = 344,
+     tENDREPEAT = 345,
+     tENDTELL = 346
    };
 #endif
 /* Tokens.  */
@@ -197,58 +196,57 @@
 #define tELSE 293
 #define tELSIF 294
 #define tEXIT 295
-#define tFRAME 296
-#define tGLOBAL 297
-#define tGO 298
-#define tIF 299
-#define tINTO 300
-#define tLOOP 301
-#define tMACRO 302
-#define tMOVIE 303
-#define tNEXT 304
-#define tOF 305
-#define tPREVIOUS 306
-#define tPUT 307
-#define tREPEAT 308
-#define tSET 309
-#define tTHEN 310
-#define tTO 311
-#define tWHEN 312
-#define tWITH 313
-#define tWHILE 314
-#define tNLELSE 315
-#define tFACTORY 316
-#define tOPEN 317
-#define tPLAY 318
-#define tDONE 319
-#define tINSTANCE 320
-#define tGE 321
-#define tLE 322
-#define tEQ 323
-#define tNEQ 324
-#define tAND 325
-#define tOR 326
-#define tNOT 327
-#define tMOD 328
-#define tAFTER 329
-#define tBEFORE 330
-#define tCONCAT 331
-#define tCONTAINS 332
-#define tSTARTS 333
-#define tCHAR 334
-#define tITEM 335
-#define tLINE 336
-#define tWORD 337
-#define tSPRITE 338
-#define tINTERSECTS 339
-#define tWITHIN 340
-#define tTELL 341
-#define tPROPERTY 342
-#define tON 343
-#define tME 344
-#define tENDIF 345
-#define tENDREPEAT 346
-#define tENDTELL 347
+#define tGLOBAL 296
+#define tGO 297
+#define tIF 298
+#define tINTO 299
+#define tLOOP 300
+#define tMACRO 301
+#define tMOVIE 302
+#define tNEXT 303
+#define tOF 304
+#define tPREVIOUS 305
+#define tPUT 306
+#define tREPEAT 307
+#define tSET 308
+#define tTHEN 309
+#define tTO 310
+#define tWHEN 311
+#define tWITH 312
+#define tWHILE 313
+#define tNLELSE 314
+#define tFACTORY 315
+#define tOPEN 316
+#define tPLAY 317
+#define tDONE 318
+#define tINSTANCE 319
+#define tGE 320
+#define tLE 321
+#define tEQ 322
+#define tNEQ 323
+#define tAND 324
+#define tOR 325
+#define tNOT 326
+#define tMOD 327
+#define tAFTER 328
+#define tBEFORE 329
+#define tCONCAT 330
+#define tCONTAINS 331
+#define tSTARTS 332
+#define tCHAR 333
+#define tITEM 334
+#define tLINE 335
+#define tWORD 336
+#define tSPRITE 337
+#define tINTERSECTS 338
+#define tWITHIN 339
+#define tTELL 340
+#define tPROPERTY 341
+#define tON 342
+#define tME 343
+#define tENDIF 344
+#define tENDREPEAT 345
+#define tENDTELL 346
 
 
 
@@ -316,7 +314,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 193 of yacc.c.  */
-#line 320 "engines/director/lingo/lingo-gr.cpp"
+#line 318 "engines/director/lingo/lingo-gr.cpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -329,7 +327,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 333 "engines/director/lingo/lingo-gr.cpp"
+#line 331 "engines/director/lingo/lingo-gr.cpp"
 
 #ifdef short
 # undef short
@@ -542,22 +540,22 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  126
+#define YYFINAL  124
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1526
+#define YYLAST   1368
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  107
+#define YYNTOKENS  106
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  40
+#define YYNNTS  39
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  154
+#define YYNRULES  152
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  326
+#define YYNSTATES  323
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   347
+#define YYMAXUTOK   346
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -566,15 +564,15 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     101,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     100,     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,   100,    95,     2,
-     102,   103,    98,    96,   106,    97,     2,    99,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    99,    94,     2,
+     101,   102,    97,    95,   105,    96,     2,    98,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      93,     2,    94,     2,     2,     2,     2,     2,     2,     2,
+      92,     2,    93,     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,   104,     2,   105,     2,     2,     2,     2,     2,     2,
+       2,   103,     2,   104,     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,
@@ -599,7 +597,7 @@ static const yytype_uint8 yytranslate[] =
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    88,    89,    90,    91,    92
+      85,    86,    87,    88,    89,    90,    91
 };
 
 #if YYDEBUG
@@ -619,72 +617,72 @@ static const yytype_uint16 yyprhs[] =
      355,   362,   367,   374,   376,   379,   382,   384,   386,   389,
      391,   394,   397,   400,   402,   405,   408,   410,   413,   418,
      421,   425,   427,   431,   433,   437,   439,   443,   446,   449,
-     452,   455,   459,   462,   465,   467,   471,   474,   477,   480,
-     484,   487,   488,   492,   493,   502,   505,   506,   514,   523,
-     530,   533,   534,   536,   540,   545,   546,   548,   552,   553,
-     556,   557,   559,   563,   565
+     452,   455,   459,   462,   466,   469,   472,   475,   479,   482,
+     483,   487,   488,   497,   500,   501,   509,   518,   525,   528,
+     529,   531,   535,   540,   541,   543,   547,   548,   551,   552,
+     554,   558,   560
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     108,     0,    -1,   108,   101,   109,    -1,   109,    -1,     1,
-     101,    -1,    -1,   137,    -1,   112,    -1,    52,   126,    45,
-      30,    -1,    52,   126,    45,   127,    -1,    52,   126,    74,
-     126,    -1,    52,   126,    75,   126,    -1,    54,    30,    68,
-     126,    -1,    54,    15,    68,   126,    -1,    54,    30,    56,
-     126,    -1,    54,    15,    56,   126,    -1,    54,    16,   126,
-      56,   126,    -1,    54,    16,   125,    68,   126,    -1,   144,
-      -1,   126,    -1,   128,    -1,   111,    -1,   113,    -1,   116,
-     126,   121,   122,   121,    91,    -1,   117,    68,   126,   121,
-      56,   126,   121,   122,   121,    91,    -1,   117,    68,   126,
-     121,    37,    56,   126,   121,   122,   121,    91,    -1,   123,
-     111,   121,    -1,   124,   126,   101,   122,   121,    92,    -1,
-     124,   126,    56,   126,    -1,   118,   126,   121,    55,   122,
-     121,   114,   121,    90,    -1,   118,   126,   121,    55,   122,
-     121,   114,    38,   120,   122,   121,    90,    -1,    -1,   115,
-     114,    -1,   119,   126,   121,    55,   122,   121,    -1,    53,
-      59,    -1,    53,    58,    30,    -1,    44,    -1,    39,    -1,
-      -1,    -1,    -1,   122,   101,    -1,   122,   112,    -1,    57,
-      30,    55,    -1,    86,    -1,    12,    -1,    17,    -1,    33,
-      -1,    31,    -1,    30,    -1,   125,    -1,   127,    -1,    25,
-      -1,    26,   126,    -1,    27,   146,    -1,    30,   102,   145,
-     103,    -1,    15,    -1,    16,   126,    -1,   110,    -1,   126,
-      96,   126,    -1,   126,    97,   126,    -1,   126,    98,   126,
-      -1,   126,    99,   126,    -1,   126,    73,   126,    -1,   126,
-      94,   126,    -1,   126,    93,   126,    -1,   126,    68,   126,
-      -1,   126,    69,   126,    -1,   126,    66,   126,    -1,   126,
-      67,   126,    -1,   126,    70,   126,    -1,   126,    71,   126,
-      -1,    72,   126,    -1,   126,    95,   126,    -1,   126,    76,
-     126,    -1,   126,    77,   126,    -1,   126,    78,   126,    -1,
-      96,   126,    -1,    97,   126,    -1,   102,   126,   103,    -1,
-     104,   145,   105,    -1,    83,   126,    84,   126,    -1,    83,
-     126,    85,   126,    -1,    79,   126,    50,   126,    -1,    79,
-     126,    56,   126,    50,   126,    -1,    80,   126,    50,   126,
-      -1,    80,   126,    56,   126,    50,   126,    -1,    81,   126,
-      50,   126,    -1,    81,   126,    56,   126,    50,   126,    -1,
-      82,   126,    50,   126,    -1,    82,   126,    56,   126,    50,
-     126,    -1,    89,   102,    30,   103,    -1,    89,   102,    30,
-     106,   145,   103,    -1,    89,    -1,    29,   125,    -1,    52,
-     126,    -1,   132,    -1,   135,    -1,    40,    53,    -1,    40,
-      -1,    42,   129,    -1,    87,   130,    -1,    65,   131,    -1,
-      19,    -1,    21,   126,    -1,    20,   126,    -1,    20,    -1,
-      22,   146,    -1,    62,   126,    58,   126,    -1,    62,   126,
-      -1,    23,    30,   145,    -1,    30,    -1,   129,   106,    30,
-      -1,    30,    -1,   130,   106,    30,    -1,    30,    -1,   131,
-     106,    30,    -1,    43,    46,    -1,    43,    49,    -1,    43,
-      51,    -1,    43,   133,    -1,    43,   133,   134,    -1,    43,
-     134,    -1,    41,   126,    -1,   126,    -1,    50,    48,   126,
-      -1,    48,   126,    -1,    63,    64,    -1,    63,   133,    -1,
-      63,   133,   134,    -1,    63,   134,    -1,    -1,    35,   136,
-     145,    -1,    -1,    47,    30,   138,   120,   141,   101,   143,
-     122,    -1,    61,    30,    -1,    -1,    36,   139,   120,   141,
-     101,   143,   122,    -1,   140,   120,   141,   101,   143,   122,
-      34,   142,    -1,   140,   120,   141,   101,   143,   122,    -1,
-      88,    30,    -1,    -1,    30,    -1,   141,   106,    30,    -1,
-     141,   101,   106,    30,    -1,    -1,    30,    -1,   142,   106,
-      30,    -1,    -1,    30,   146,    -1,    -1,   126,    -1,   145,
-     106,   126,    -1,   126,    -1,   146,   106,   126,    -1
+     107,     0,    -1,   107,   100,   108,    -1,   108,    -1,     1,
+     100,    -1,    -1,   135,    -1,   111,    -1,    51,   125,    44,
+      30,    -1,    51,   125,    44,   126,    -1,    51,   125,    73,
+     125,    -1,    51,   125,    74,   125,    -1,    53,    30,    67,
+     125,    -1,    53,    15,    67,   125,    -1,    53,    30,    55,
+     125,    -1,    53,    15,    55,   125,    -1,    53,    16,   125,
+      55,   125,    -1,    53,    16,   124,    67,   125,    -1,   142,
+      -1,   125,    -1,   127,    -1,   110,    -1,   112,    -1,   115,
+     125,   120,   121,   120,    90,    -1,   116,    67,   125,   120,
+      55,   125,   120,   121,   120,    90,    -1,   116,    67,   125,
+     120,    37,    55,   125,   120,   121,   120,    90,    -1,   122,
+     110,   120,    -1,   123,   125,   100,   121,   120,    91,    -1,
+     123,   125,    55,   125,    -1,   117,   125,   120,    54,   121,
+     120,   113,   120,    89,    -1,   117,   125,   120,    54,   121,
+     120,   113,    38,   119,   121,   120,    89,    -1,    -1,   114,
+     113,    -1,   118,   125,   120,    54,   121,   120,    -1,    52,
+      58,    -1,    52,    57,    30,    -1,    43,    -1,    39,    -1,
+      -1,    -1,    -1,   121,   100,    -1,   121,   111,    -1,    56,
+      30,    54,    -1,    85,    -1,    12,    -1,    17,    -1,    33,
+      -1,    31,    -1,    30,    -1,   124,    -1,   126,    -1,    25,
+      -1,    26,   125,    -1,    27,   144,    -1,    30,   101,   143,
+     102,    -1,    15,    -1,    16,   125,    -1,   109,    -1,   125,
+      95,   125,    -1,   125,    96,   125,    -1,   125,    97,   125,
+      -1,   125,    98,   125,    -1,   125,    72,   125,    -1,   125,
+      93,   125,    -1,   125,    92,   125,    -1,   125,    67,   125,
+      -1,   125,    68,   125,    -1,   125,    65,   125,    -1,   125,
+      66,   125,    -1,   125,    69,   125,    -1,   125,    70,   125,
+      -1,    71,   125,    -1,   125,    94,   125,    -1,   125,    75,
+     125,    -1,   125,    76,   125,    -1,   125,    77,   125,    -1,
+      95,   125,    -1,    96,   125,    -1,   101,   125,   102,    -1,
+     103,   143,   104,    -1,    82,   125,    83,   125,    -1,    82,
+     125,    84,   125,    -1,    78,   125,    49,   125,    -1,    78,
+     125,    55,   125,    49,   125,    -1,    79,   125,    49,   125,
+      -1,    79,   125,    55,   125,    49,   125,    -1,    80,   125,
+      49,   125,    -1,    80,   125,    55,   125,    49,   125,    -1,
+      81,   125,    49,   125,    -1,    81,   125,    55,   125,    49,
+     125,    -1,    88,   101,    30,   102,    -1,    88,   101,    30,
+     105,   143,   102,    -1,    88,    -1,    29,   124,    -1,    51,
+     125,    -1,   131,    -1,   133,    -1,    40,    52,    -1,    40,
+      -1,    41,   128,    -1,    86,   129,    -1,    64,   130,    -1,
+      19,    -1,    21,   125,    -1,    20,   125,    -1,    20,    -1,
+      22,   144,    -1,    61,   125,    57,   125,    -1,    61,   125,
+      -1,    23,    30,   143,    -1,    30,    -1,   128,   105,    30,
+      -1,    30,    -1,   129,   105,    30,    -1,    30,    -1,   130,
+     105,    30,    -1,    42,    45,    -1,    42,    48,    -1,    42,
+      50,    -1,    42,   124,    -1,    42,   124,   132,    -1,    42,
+     132,    -1,    49,    47,   125,    -1,    47,   125,    -1,    62,
+      63,    -1,    62,   124,    -1,    62,   124,   132,    -1,    62,
+     132,    -1,    -1,    35,   134,   143,    -1,    -1,    46,    30,
+     136,   119,   139,   100,   141,   121,    -1,    60,    30,    -1,
+      -1,    36,   137,   119,   139,   100,   141,   121,    -1,   138,
+     119,   139,   100,   141,   121,    34,   140,    -1,   138,   119,
+     139,   100,   141,   121,    -1,    87,    30,    -1,    -1,    30,
+      -1,   139,   105,    30,    -1,   139,   100,   105,    30,    -1,
+      -1,    30,    -1,   140,   105,    30,    -1,    -1,    30,   144,
+      -1,    -1,   125,    -1,   143,   105,   125,    -1,   125,    -1,
+     144,   105,   125,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -702,10 +700,10 @@ static const yytype_uint16 yyrline[] =
      403,   404,   405,   406,   409,   414,   415,   416,   417,   418,
      419,   420,   421,   422,   425,   428,   431,   435,   436,   437,
      438,   441,   442,   445,   446,   449,   450,   461,   462,   463,
-     464,   468,   472,   478,   479,   482,   483,   486,   487,   491,
-     495,   499,   499,   529,   529,   535,   536,   536,   542,   550,
-     557,   559,   560,   561,   562,   565,   566,   567,   570,   574,
-     582,   583,   584,   587,   588
+     464,   468,   472,   478,   479,   482,   483,   487,   491,   495,
+     495,   525,   525,   531,   532,   532,   538,   546,   553,   555,
+     556,   557,   558,   561,   562,   563,   566,   570,   578,   579,
+     580,   583,   584
 };
 #endif
 
@@ -721,11 +719,11 @@ static const char *const yytname[] =
   "TWOWORDBUILTIN", "FBLTIN", "FBLTINNOARGS", "FBLTINONEARG",
   "FBLTINARGLIST", "RBLTIN", "RBLTINONEARG", "ID", "STRING", "HANDLER",
   "SYMBOL", "ENDCLAUSE", "tPLAYACCEL", "tMETHOD", "tDOWN", "tELSE",
-  "tELSIF", "tEXIT", "tFRAME", "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP",
-  "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT",
-  "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE",
-  "tFACTORY", "tOPEN", "tPLAY", "tDONE", "tINSTANCE", "tGE", "tLE", "tEQ",
-  "tNEQ", "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT",
+  "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP", "tMACRO",
+  "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT", "tSET",
+  "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE", "tFACTORY",
+  "tOPEN", "tPLAY", "tDONE", "tINSTANCE", "tGE", "tLE", "tEQ", "tNEQ",
+  "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT",
   "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE",
   "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tME", "tENDIF",
   "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'",
@@ -734,9 +732,9 @@ static const char *const yytname[] =
   "elseifstmtlist", "elseifstmt", "repeatwhile", "repeatwith", "if",
   "elseif", "begin", "end", "stmtlist", "when", "tell", "simpleexpr",
   "expr", "reference", "proc", "globallist", "propertylist",
-  "instancelist", "gotofunc", "gotoframe", "gotomovie", "playfunc", "@1",
-  "defn", "@2", "@3", "on", "argdef", "endargdef", "argstore", "macro",
-  "arglist", "nonemptyarglist", 0
+  "instancelist", "gotofunc", "gotomovie", "playfunc", "@1", "defn", "@2",
+  "@3", "on", "argdef", "endargdef", "argstore", "macro", "arglist",
+  "nonemptyarglist", 0
 };
 #endif
 
@@ -754,30 +752,30 @@ static const yytype_uint16 yytoknum[] =
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
-     345,   346,   347,    60,    62,    38,    43,    45,    42,    47,
-      37,    10,    40,    41,    91,    93,    44
+     345,   346,    60,    62,    38,    43,    45,    42,    47,    37,
+      10,    40,    41,    91,    93,    44
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   107,   108,   108,   108,   109,   109,   109,   110,   110,
-     110,   110,   110,   110,   110,   110,   110,   110,   111,   111,
-     111,   112,   112,   112,   112,   112,   112,   112,   112,   113,
-     113,   114,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   122,   122,   123,   124,   125,   125,   125,   125,   125,
-     126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   127,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   129,   129,   130,   130,   131,   131,   132,   132,   132,
-     132,   132,   132,   133,   133,   134,   134,   135,   135,   135,
-     135,   136,   135,   138,   137,   137,   139,   137,   137,   137,
-     140,   141,   141,   141,   141,   142,   142,   142,   143,   144,
-     145,   145,   145,   146,   146
+       0,   106,   107,   107,   107,   108,   108,   108,   109,   109,
+     109,   109,   109,   109,   109,   109,   109,   109,   110,   110,
+     110,   111,   111,   111,   111,   111,   111,   111,   111,   112,
+     112,   113,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,   121,   121,   122,   123,   124,   124,   124,   124,   124,
+     125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   126,   127,   127,   127,   127,   127,
+     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
+     127,   128,   128,   129,   129,   130,   130,   131,   131,   131,
+     131,   131,   131,   132,   132,   133,   133,   133,   133,   134,
+     133,   136,   135,   135,   137,   135,   135,   135,   138,   139,
+     139,   139,   139,   140,   140,   140,   141,   142,   143,   143,
+     143,   144,   144
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -795,10 +793,10 @@ static const yytype_uint8 yyr2[] =
        6,     4,     6,     1,     2,     2,     1,     1,     2,     1,
        2,     2,     2,     1,     2,     2,     1,     2,     4,     2,
        3,     1,     3,     1,     3,     1,     3,     2,     2,     2,
-       2,     3,     2,     2,     1,     3,     2,     2,     2,     3,
-       2,     0,     3,     0,     8,     2,     0,     7,     8,     6,
-       2,     0,     1,     3,     4,     0,     1,     3,     0,     2,
-       0,     1,     3,     1,     3
+       2,     3,     2,     3,     2,     2,     2,     3,     2,     0,
+       3,     0,     8,     2,     0,     7,     8,     6,     2,     0,
+       1,     3,     4,     0,     1,     3,     0,     2,     0,     1,
+       3,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -807,96 +805,96 @@ static const yytype_uint8 yyr2[] =
 static const yytype_uint8 yydefact[] =
 {
        0,     0,    45,    56,     0,    46,   103,   106,     0,     0,
-       0,    52,     0,     0,     0,    49,    48,    47,   131,   136,
+       0,    52,     0,     0,     0,    49,    48,    47,   129,   134,
       99,     0,     0,    36,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    44,
-       0,     0,    93,     0,     0,     0,   150,     0,     3,    58,
+       0,     0,    93,     0,     0,     0,   148,     0,     3,    58,
       21,     7,    22,     0,     0,     0,     0,     0,    50,    19,
       51,    20,    96,    97,     6,    38,    18,     4,    49,     0,
-      57,   105,   104,   153,   107,   150,    53,    54,    49,    94,
-     150,   149,   150,    38,    98,   111,   100,     0,   117,     0,
-     118,     0,   119,   124,   120,   122,   133,    95,     0,    34,
-       0,     0,     0,     0,   135,   109,   127,   128,   130,   115,
-     102,    72,     0,     0,     0,     0,     0,   113,   101,   140,
-       0,    77,    78,     0,   151,     0,     1,     5,    39,     0,
-      39,    39,     0,     0,     0,     0,     0,     0,     0,     0,
+      57,   105,   104,   151,   107,   148,    53,    54,    49,    94,
+     148,   147,   148,    38,    98,   111,   100,   117,     0,   118,
+       0,   119,   120,   122,   131,    95,     0,    34,     0,     0,
+       0,     0,   133,   109,   125,   126,   128,   115,   102,    72,
+       0,     0,     0,     0,     0,   113,   101,   138,     0,    77,
+      78,     0,   149,     0,     1,     5,    39,     0,    39,    39,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     141,   150,     0,     0,   110,   151,     0,   132,   141,     0,
-     123,   126,     0,   121,    38,     0,     0,     0,    35,     0,
-       0,    50,     0,     0,     0,    43,     0,   129,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    79,    80,     0,     2,    40,    39,     0,    26,     0,
-      40,    68,    69,    66,    67,    70,    71,    63,    74,    75,
-      76,    65,    64,    73,    59,    60,    61,    62,   142,     0,
-     154,    55,     0,   112,   125,   141,     8,     9,    10,    11,
-      15,    13,     0,     0,    14,    12,   108,   116,    83,     0,
-      85,     0,    87,     0,    89,     0,    81,    82,   114,    91,
-     150,   152,    39,     0,    40,    28,    39,   148,     0,   148,
-       0,    17,    16,     0,     0,     0,     0,     0,    41,    42,
-       0,     0,     0,    39,     0,     0,    40,   143,    40,   148,
-      84,    86,    88,    90,    92,    23,     0,    39,    31,    27,
-     144,   139,   137,    40,    39,    40,    37,    39,    31,     0,
-     145,   134,    40,    39,    38,     0,    32,    39,   146,   138,
-      39,     0,    40,    29,     0,     0,     0,    24,    39,    40,
-     147,    25,     0,    39,    30,    33
+       0,     0,     0,     0,     0,     0,     0,     0,   139,   148,
+       0,     0,   110,   149,     0,   130,   139,     0,   124,     0,
+     121,    38,     0,     0,     0,    35,     0,     0,    50,     0,
+       0,     0,    43,     0,   127,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    79,    80,
+       0,     2,    40,    39,     0,    26,     0,    40,    68,    69,
+      66,    67,    70,    71,    63,    74,    75,    76,    65,    64,
+      73,    59,    60,    61,    62,   140,     0,   152,    55,     0,
+     112,   123,   139,     8,     9,    10,    11,    15,    13,     0,
+       0,    14,    12,   108,   116,    83,     0,    85,     0,    87,
+       0,    89,     0,    81,    82,   114,    91,   148,   150,    39,
+       0,    40,    28,    39,   146,     0,   146,     0,    17,    16,
+       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
+      39,     0,     0,    40,   141,    40,   146,    84,    86,    88,
+      90,    92,    23,     0,    39,    31,    27,   142,   137,   135,
+      40,    39,    40,    37,    39,    31,     0,   143,   132,    40,
+      39,    38,     0,    32,    39,   144,   136,    39,     0,    40,
+      29,     0,     0,     0,    24,    39,    40,   145,    25,     0,
+      39,    30,    33
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    47,    48,    49,    50,   269,    52,   297,   298,    53,
-      54,    55,   299,   150,   195,   252,    56,    57,    58,    59,
-      60,    61,    86,   118,   110,    62,    94,    95,    63,    82,
-      64,   164,    83,    65,   219,   309,   276,    66,   156,    74
+      -1,    47,    48,    49,    50,   266,    52,   294,   295,    53,
+      54,    55,   296,   148,   192,   249,    56,    57,    58,    59,
+      60,    61,    86,   116,   108,    62,    93,    63,    82,    64,
+     161,    83,    65,   216,   306,   273,    66,   154,    74
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -210
+#define YYPACT_NINF -240
 static const yytype_int16 yypact[] =
 {
-     302,   -35,  -210,  -210,   893,  -210,  -210,   893,   893,   893,
-      50,  -210,   893,   893,    75,   926,  -210,  -210,  -210,  -210,
-      35,    59,   749,  -210,    64,   893,   -42,    -2,    65,    74,
-     893,   832,    77,   893,   893,   893,   893,   893,   893,  -210,
-      79,    80,     9,   893,   893,   893,   893,     2,  -210,  -210,
-    -210,  -210,  -210,   893,    44,   893,   666,   893,  -210,  1427,
-    -210,  -210,  -210,  -210,  -210,  -210,  -210,  -210,    11,   893,
-    1427,  1427,  1427,  1427,     8,   893,  1427,     8,  -210,  -210,
-     893,     8,   893,  -210,  -210,  -210,    10,   893,  -210,   893,
-    -210,    67,  -210,  1427,     4,  -210,  -210,   965,    88,  -210,
-      -1,   893,     0,    62,  -210,  1321,  -210,     4,  -210,  -210,
-      13,  -210,   999,  1033,  1067,  1101,  1393,  -210,    14,  -210,
-      91,  -210,  -210,  1355,  1427,   -31,  -210,   393,  1427,   893,
-    1427,  -210,  1271,   893,   893,   893,   893,   893,   893,   893,
-     893,   893,   893,   893,   893,   893,   893,   893,   893,   893,
-      92,   893,   965,   893,    17,  1355,   -22,    17,    92,    94,
-    1427,  1427,   893,  -210,  -210,    -6,   893,   893,  -210,   893,
-     893,    58,  1307,   893,   893,  -210,   893,  -210,    97,   893,
-     893,   893,   893,   893,   893,   893,   893,   893,   893,    98,
-      -7,  -210,  -210,   893,  -210,  -210,  1427,    93,  -210,   893,
-    -210,   -51,   -51,   -51,   -51,   141,   141,  -210,   -38,   -51,
-     -51,   -51,   -51,   -38,   -36,   -36,  -210,  -210,  -210,   -86,
-    1427,  -210,   -37,  -210,  1427,    92,  -210,  -210,  1427,  1427,
-    1427,   -51,   893,   893,  1427,   -51,  1427,  -210,  1427,  1135,
-    1427,  1169,  1427,  1203,  1427,  1237,  1427,  1427,  -210,  -210,
-     893,  1427,   575,     1,  -210,  1427,   575,    45,   120,    45,
-     -29,   -51,  1427,   893,   893,   893,   893,    -5,  -210,  -210,
-      61,    99,   893,   575,    68,   123,  -210,  -210,  -210,    45,
-    1427,  1427,  1427,  1427,  -210,  -210,   893,  1427,   115,  -210,
-    -210,   484,   575,  -210,  1427,  -210,  -210,   119,   115,   893,
-     129,   575,  -210,   575,  -210,    71,  -210,  1427,  -210,    81,
-     575,    73,  -210,  -210,   112,   138,    82,  -210,   575,  -210,
-    -210,  -210,    84,   575,  -210,  -210
+     281,   -80,  -240,  -240,   723,  -240,  -240,   723,   723,   723,
+      16,  -240,   723,   723,    73,   756,  -240,  -240,  -240,  -240,
+      25,    53,   184,  -240,    57,   723,    -2,    78,    69,    71,
+     723,    33,    77,   723,   723,   723,   723,   723,   723,  -240,
+      87,    88,    18,   723,   723,   723,   723,     2,  -240,  -240,
+    -240,  -240,  -240,   723,    54,   723,   641,   723,  -240,  1257,
+    -240,  -240,  -240,  -240,  -240,  -240,  -240,  -240,    21,   723,
+    1257,  1257,  1257,  1257,    15,   723,  1257,    15,  -240,  -240,
+     723,    15,   723,  -240,  -240,  -240,    20,  -240,   723,  -240,
+      79,  -240,   -31,  -240,  -240,   795,    94,  -240,   -42,   723,
+       7,    95,  -240,  1151,  -240,   -31,  -240,  -240,    43,  -240,
+     829,   863,   897,   931,  1223,  -240,    45,  -240,   121,  -240,
+    -240,  1185,  1257,    -7,  -240,   371,  1257,   723,  1257,  -240,
+    1101,   723,   723,   723,   723,   723,   723,   723,   723,   723,
+     723,   723,   723,   723,   723,   723,   723,   723,   122,   723,
+     795,   723,    49,  1185,   -78,    49,   122,   126,  1257,   723,
+    -240,  -240,    82,   723,   723,  -240,   723,   723,    90,  1137,
+     723,   723,  -240,   723,  -240,   128,   723,   723,   723,   723,
+     723,   723,   723,   723,   723,   723,   131,   -30,  -240,  -240,
+     723,  -240,  -240,  1257,   110,  -240,   723,  -240,   -37,   -37,
+     -37,   -37,  1270,  1270,  -240,   -28,   -37,   -37,   -37,   -37,
+     -28,   -50,   -50,  -240,  -240,  -240,     0,  1257,  -240,     9,
+    -240,  1257,   122,  -240,  -240,  1257,  1257,  1257,   -37,   723,
+     723,  1257,   -37,  1257,  -240,  1257,   965,  1257,   999,  1257,
+    1033,  1257,  1067,  1257,  1257,  -240,  -240,   723,  1257,   551,
+     -27,  -240,  1257,   551,    60,   141,    60,    10,   -37,  1257,
+     723,   723,   723,   723,    11,  -240,  -240,    92,   129,   723,
+     551,    97,   153,  -240,  -240,  -240,    60,  1257,  1257,  1257,
+    1257,  -240,  -240,   723,  1257,   150,  -240,  -240,   461,   551,
+    -240,  1257,  -240,  -240,   152,   150,   723,   161,   551,  -240,
+     551,  -240,   104,  -240,  1257,  -240,    93,   551,   105,  -240,
+    -240,   143,   169,   112,  -240,   551,  -240,  -240,  -240,   111,
+     551,  -240,  -240
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -210,  -210,    63,  -210,   130,    19,  -210,  -127,  -210,  -210,
-    -210,  -210,  -210,   -82,   -40,    -3,  -210,  -210,    -8,    -4,
-      20,  -210,  -210,  -210,  -210,  -210,   157,   -21,  -210,  -210,
-    -210,  -210,  -210,  -210,  -146,  -210,  -209,  -210,   -39,    87
+    -240,  -240,    80,  -240,   147,    19,  -240,   -89,  -240,  -240,
+    -240,  -240,  -240,   -82,   -40,  -105,  -240,  -240,    -8,    -4,
+      48,  -240,  -240,  -240,  -240,  -240,   -19,  -240,  -240,  -240,
+    -240,  -240,  -240,  -141,  -240,  -239,  -240,   -39,    39
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -906,316 +904,284 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -6
 static const yytype_int16 yytable[] =
 {
-      70,   158,   126,    71,    72,    73,    79,   125,    76,    73,
-     108,    73,   222,   100,   101,   257,    98,    99,    93,    51,
-     258,    97,   139,    14,   226,   140,   105,    93,   102,   111,
-     112,   113,   114,   115,   116,   139,   154,   139,   271,   121,
-     122,   123,   124,   157,   145,   146,   147,   148,   149,   128,
-     278,   130,    89,   132,    91,   169,   173,   272,   146,   147,
-     148,   149,   148,   149,   259,   152,    67,   170,   174,   258,
-     293,   124,   279,   163,   192,   193,   155,   258,   124,   260,
-      75,   221,   225,   160,   193,   161,   177,     2,    84,    85,
-     197,   198,     5,   171,    96,   103,   249,   172,   284,   250,
-      77,   193,    81,   127,   104,    78,    16,   109,    17,   117,
-     119,   120,   129,   151,   153,   162,   159,   175,   168,   178,
-     189,   190,   218,   193,   223,   196,   232,   237,   248,   201,
-     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-     212,   213,   214,   215,   216,   217,    51,   124,   254,   220,
-     277,   275,   285,   290,   296,   286,   253,   304,   224,   308,
-     289,   313,   228,   229,   317,   230,   231,   319,   320,   234,
-     235,   306,   236,   321,   324,   238,   239,   240,   241,   242,
-     243,   244,   245,   246,   247,   227,   131,   315,   107,   251,
-     194,     0,     0,     0,     0,   255,     0,   256,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   133,   134,   135,
-     136,   267,   270,     0,   139,     0,   274,   140,   141,   142,
-       0,     0,   312,     0,     0,     0,     0,     0,   261,   262,
-       0,     0,     0,   288,   143,   144,   145,   146,   147,   148,
-     149,     0,     0,     0,     0,     0,   124,   295,     0,     0,
-       0,   273,     0,     0,   302,     0,     0,   305,     0,   280,
-     281,   282,   283,   311,     0,     0,     0,   314,   287,     0,
-     316,     0,     0,   291,     0,   292,     0,     0,   322,     0,
-       0,     0,   294,   325,     0,     0,     0,     0,     0,     0,
-     301,     0,   303,     0,     0,   307,     0,     0,     0,   310,
-       0,     0,    -5,     1,     0,     0,     0,     0,     0,   318,
-       0,     0,     0,     0,     2,     0,   323,     3,     4,     5,
-       0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,    14,    15,    16,     0,    17,     0,    18,    19,     0,
-       0,     0,    20,     0,    21,    22,    23,     0,     0,    24,
-       0,     0,     0,     0,    25,    26,    27,     0,     0,    28,
-       0,     0,     0,    29,    30,    31,     0,    32,     0,     0,
-       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
-       0,    34,    35,    36,    37,    38,     0,     0,    39,    40,
-      41,    42,     0,     0,     0,     0,     0,     0,    43,    44,
-       0,     0,     0,    -5,    45,     2,    46,     0,     3,     4,
-       5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,     0,    14,    15,    16,     0,    17,     0,    18,    19,
-       0,     0,     0,    20,     0,    21,    22,    23,     0,     0,
-      24,     0,     0,     0,     0,    25,    26,    27,     0,     0,
-      28,     0,     0,     0,    29,    30,    31,     0,    32,     0,
-       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
-       0,     0,    34,    35,    36,    37,    38,     0,     0,    39,
-      40,    41,    42,     0,     0,     0,     0,     0,     0,    43,
-      44,     0,     0,     0,     0,    45,     2,    46,     0,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,    14,    15,    16,     0,    17,   300,    18,
-       0,     0,     0,     0,    20,     0,    21,    22,    23,     0,
-       0,     0,     0,     0,     0,     0,    25,    26,    27,     0,
-       0,    28,     0,     0,     0,     0,    30,    31,     0,    32,
-       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
-       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
-      39,    40,     0,    42,     0,     0,     0,     0,     0,     0,
-      43,    44,     0,     0,     0,   268,    45,     2,    46,     0,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
-      11,    12,    13,     0,    14,    15,    16,     0,    17,     0,
-      18,     0,     0,     0,     0,    20,     0,    21,    22,    23,
-       0,     0,     0,     0,     0,     0,     0,    25,    26,    27,
-       0,     0,    28,     0,     0,     0,     0,    30,    31,     0,
-      32,     0,     0,     0,     0,     0,     0,    33,     0,     0,
-       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,    39,    40,     0,    42,     0,     0,     0,     0,     0,
-       0,    43,    44,     0,     0,     0,   268,    45,     2,    46,
-       0,     3,     4,     5,     0,     6,     7,     8,     9,    10,
-       0,    11,    12,    13,     0,    14,    15,    16,     0,    17,
-       0,    18,     0,     0,     0,     0,    20,     0,    21,    22,
-       0,     0,     0,     0,     0,     0,     0,     0,    25,     0,
-      27,     0,     0,     0,     0,     0,     0,     0,    30,    31,
-       0,    32,     0,     0,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,     0,    40,     0,    42,     0,     0,     0,     0,
-       0,     2,    43,    44,     3,     4,     5,     0,    45,     0,
-      46,     0,     0,     0,    11,    12,    13,     0,    14,    68,
-      16,     0,    17,     0,     0,     0,     0,     0,     0,     0,
-      87,     0,     0,     0,     0,    88,     0,    89,    90,    91,
-      92,    69,     0,    27,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
-      36,    37,    38,     0,     0,     0,     0,     0,    42,     0,
-       0,     0,     0,     0,     2,    43,    44,     3,     4,     5,
-       0,    45,     0,    46,     0,     0,     0,    11,    12,    13,
-       0,    14,    68,    16,     0,    17,     0,     0,     0,     0,
-       0,     0,     0,    87,     0,     0,     0,     0,     0,     0,
-      89,     0,    91,     0,    69,     0,    27,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   106,     0,     0,     0,
-       0,     0,     0,     0,    33,     2,     0,     0,     3,     4,
-       5,    34,    35,    36,    37,    38,     0,     0,    11,    12,
-      13,    42,    14,    68,    16,     0,    17,     0,    43,    44,
-       0,     0,     0,     0,    45,     0,    46,     0,     2,     0,
-       0,     3,     4,     5,     0,    69,     0,    27,     0,     0,
+      70,   156,   124,    71,    72,    73,    79,   123,    76,    73,
+     268,    73,   106,   166,    92,   219,    88,   275,    90,    51,
+      67,    95,   137,   105,   218,   167,   103,   190,   269,   109,
+     110,   111,   112,   113,   114,   137,   152,   290,   138,   119,
+     120,   121,   122,   155,   137,     2,    75,   146,   147,   126,
+       5,   128,    77,   130,    81,    96,    97,   143,   144,   145,
+     146,   147,   170,    78,    16,   150,    17,   144,   145,   146,
+     147,   122,   246,   160,   171,   247,   153,    84,   122,   222,
+      88,   257,    90,    85,   158,     2,   174,    94,   194,   195,
+       5,   168,   253,    98,    99,   169,   104,   189,   190,   101,
+     254,   102,   125,    78,    16,   255,    17,   107,   100,   256,
+     276,    14,   223,   281,   255,   255,   190,   115,   117,   118,
+     151,   127,   149,   193,   165,   157,   159,   198,   199,   200,
+     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+     211,   212,   213,   214,    51,   122,   270,   217,   175,   172,
+     186,   187,   215,   250,   190,   221,   220,   229,   234,   225,
+     226,   245,   227,   228,   251,   272,   231,   232,   288,   233,
+     289,   274,   235,   236,   237,   238,   239,   240,   241,   242,
+     243,   244,   282,   287,   283,   298,   248,   300,   286,   293,
+     301,   305,   252,   310,   307,   314,     2,   316,   312,   317,
+     321,     5,   318,   129,   315,   191,   303,     0,   264,   267,
+     224,   320,     0,   271,    78,    16,     0,    17,     0,   309,
+       0,     0,     0,     0,     0,   258,   259,     0,     0,    87,
+     285,    88,    89,    90,    91,     0,     0,     0,     0,     0,
+       0,     0,     0,   122,   292,     0,     0,     0,     0,     0,
+       0,   299,     0,     0,   302,     0,   277,   278,   279,   280,
+     308,     0,     0,     0,   311,   284,     0,   313,     0,     0,
+       0,     0,     0,     0,     0,   319,     0,     0,     0,   291,
+     322,    -5,     1,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   304,     2,     0,     0,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
+      14,    15,    16,     0,    17,     0,    18,    19,     0,     0,
+       0,    20,    21,    22,    23,     0,     0,    24,     0,     0,
+       0,     0,    25,    26,    27,     0,     0,    28,     0,     0,
+       0,    29,    30,    31,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
+      35,    36,    37,    38,     0,     0,    39,    40,    41,    42,
+       0,     0,     0,     0,     0,     0,    43,    44,     0,     0,
+       0,    -5,    45,     2,    46,     0,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
+      14,    15,    16,     0,    17,     0,    18,    19,     0,     0,
+       0,    20,    21,    22,    23,     0,     0,    24,     0,     0,
+       0,     0,    25,    26,    27,     0,     0,    28,     0,     0,
+       0,    29,    30,    31,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
+      35,    36,    37,    38,     0,     0,    39,    40,    41,    42,
+       0,     0,     0,     0,     0,     0,    43,    44,     0,     0,
+       0,     0,    45,     2,    46,     0,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
+      14,    15,    16,     0,    17,   297,    18,     0,     0,     0,
+       0,    20,    21,    22,    23,     0,     0,     0,     0,     0,
+       0,     0,    25,    26,    27,     0,     0,    28,     0,     0,
+       0,     0,    30,    31,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
+      35,    36,    37,    38,     0,     0,    39,    40,     0,    42,
+       0,     0,     0,     0,     0,     0,    43,    44,     0,     0,
+       0,   265,    45,     2,    46,     0,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
+      14,    15,    16,     0,    17,     0,    18,     0,     0,     0,
+       0,    20,    21,    22,    23,     0,     0,     0,     0,     0,
+       0,     0,    25,    26,    27,     0,     0,    28,     0,     0,
+       0,     0,    30,    31,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
+      35,    36,    37,    38,     0,     0,    39,    40,     0,    42,
+       0,     0,     0,     0,     0,     0,    43,    44,     0,     0,
+       0,   265,    45,     2,    46,     0,     3,     4,     5,     0,
+       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
+      14,    15,    16,     0,    17,     0,    18,     0,     0,     0,
+       0,    20,    21,    22,     0,     0,     0,     0,     0,     0,
+       0,     0,    25,     0,    27,     0,     0,     0,     0,     0,
+       0,     0,    30,    31,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
+      35,    36,    37,    38,     0,     0,     0,    40,     0,    42,
+       0,     0,     0,     0,     0,     2,    43,    44,     3,     4,
+       5,     0,    45,     0,    46,     0,     0,     0,    11,    12,
+      13,     0,    14,    68,    16,     0,    17,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     2,     0,
+       0,     3,     4,     5,    69,     0,    27,     0,     0,     0,
        0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
-       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
-       0,     0,    34,    35,    36,    37,    38,     0,    69,     0,
-      27,     0,    42,     0,     0,     0,     0,     0,     0,    43,
-      44,     0,     0,     0,     0,    45,     0,    46,    33,     0,
-       0,     0,     0,     0,     0,    34,    35,    36,    37,    38,
-     165,     0,     0,     0,     0,    42,     0,     0,     0,     0,
-       0,     0,    43,    44,     0,     0,     0,     0,    80,     0,
-      46,   133,   134,   135,   136,   137,   138,     0,   139,   166,
-     167,   140,   141,   142,     0,     0,     0,     0,     0,   179,
-       0,     0,     0,     0,     0,   180,     0,     0,   143,   144,
-     145,   146,   147,   148,   149,   133,   134,   135,   136,   137,
-     138,     0,   139,     0,     0,   140,   141,   142,     0,     0,
-       0,     0,     0,   181,     0,     0,     0,     0,     0,   182,
-       0,     0,   143,   144,   145,   146,   147,   148,   149,   133,
-     134,   135,   136,   137,   138,     0,   139,     0,     0,   140,
-     141,   142,     0,     0,     0,     0,     0,   183,     0,     0,
-       0,     0,     0,   184,     0,     0,   143,   144,   145,   146,
-     147,   148,   149,   133,   134,   135,   136,   137,   138,     0,
-     139,     0,     0,   140,   141,   142,     0,     0,     0,     0,
-       0,   185,     0,     0,     0,     0,     0,   186,     0,     0,
-     143,   144,   145,   146,   147,   148,   149,   133,   134,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-       0,     0,     0,     0,     0,   263,     0,     0,     0,     0,
-       0,     0,     0,     0,   143,   144,   145,   146,   147,   148,
-     149,   133,   134,   135,   136,   137,   138,     0,   139,     0,
-       0,   140,   141,   142,     0,     0,     0,     0,     0,   264,
-       0,     0,     0,     0,     0,     0,     0,     0,   143,   144,
-     145,   146,   147,   148,   149,   133,   134,   135,   136,   137,
-     138,     0,   139,     0,     0,   140,   141,   142,     0,     0,
-       0,     0,     0,   265,     0,     0,     0,     0,     0,     0,
-       0,     0,   143,   144,   145,   146,   147,   148,   149,   133,
-     134,   135,   136,   137,   138,     0,   139,     0,     0,   140,
-     141,   142,     0,     0,     0,     0,     0,   266,     0,     0,
-       0,     0,     0,     0,     0,     0,   143,   144,   145,   146,
-     147,   148,   149,   133,   134,   135,   136,   137,   138,     0,
-     139,     0,     0,   140,   141,   142,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   199,     0,     0,
-     143,   144,   145,   146,   147,   148,   149,   133,   134,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   233,   143,   144,   145,   146,   147,   148,
-     149,     0,   200,   133,   134,   135,   136,   137,   138,   176,
-     139,     0,     0,   140,   141,   142,     0,   133,   134,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-     143,   144,   145,   146,   147,   148,   149,     0,     0,     0,
-       0,     0,     0,     0,   143,   144,   145,   146,   147,   148,
-     149,   133,   134,   135,   136,   137,   138,     0,   139,     0,
-       0,   140,   141,   142,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   143,   144,
-     145,   146,   147,   148,   149,     0,     0,     0,   191,   133,
-     134,   135,   136,   137,   138,     0,   139,     0,     0,   140,
-     141,   142,     0,     0,     0,     0,     0,   187,   188,     0,
-       0,     0,     0,     0,     0,     0,   143,   144,   145,   146,
-     147,   148,   149,   133,   134,   135,   136,   137,   138,     0,
-     139,     0,     0,   140,   141,   142,     0,     0,     0,     0,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,    34,    35,    36,    37,    38,     0,    69,     0,    27,
+       0,    42,     0,     0,     0,     0,     0,     0,    43,    44,
+       0,     0,     0,     0,    45,     0,    46,    33,     0,     0,
+       0,     0,     0,     0,    34,    35,    36,    37,    38,   162,
+       0,     0,     0,     0,    42,     0,     0,     0,     0,     0,
+       0,    43,    44,     0,     0,     0,     0,    80,     0,    46,
+     131,   132,   133,   134,   135,   136,     0,   137,   163,   164,
+     138,   139,   140,     0,     0,     0,     0,     0,   176,     0,
+       0,     0,     0,     0,   177,     0,     0,   141,   142,   143,
+     144,   145,   146,   147,   131,   132,   133,   134,   135,   136,
+       0,   137,     0,     0,   138,   139,   140,     0,     0,     0,
+       0,     0,   178,     0,     0,     0,     0,     0,   179,     0,
+       0,   141,   142,   143,   144,   145,   146,   147,   131,   132,
+     133,   134,   135,   136,     0,   137,     0,     0,   138,   139,
+     140,     0,     0,     0,     0,     0,   180,     0,     0,     0,
+       0,     0,   181,     0,     0,   141,   142,   143,   144,   145,
+     146,   147,   131,   132,   133,   134,   135,   136,     0,   137,
+       0,     0,   138,   139,   140,     0,     0,     0,     0,     0,
+     182,     0,     0,     0,     0,     0,   183,     0,     0,   141,
+     142,   143,   144,   145,   146,   147,   131,   132,   133,   134,
+     135,   136,     0,   137,     0,     0,   138,   139,   140,     0,
+       0,     0,     0,     0,   260,     0,     0,     0,     0,     0,
+       0,     0,     0,   141,   142,   143,   144,   145,   146,   147,
+     131,   132,   133,   134,   135,   136,     0,   137,     0,     0,
+     138,   139,   140,     0,     0,     0,     0,     0,   261,     0,
+       0,     0,     0,     0,     0,     0,     0,   141,   142,   143,
+     144,   145,   146,   147,   131,   132,   133,   134,   135,   136,
+       0,   137,     0,     0,   138,   139,   140,     0,     0,     0,
+       0,     0,   262,     0,     0,     0,     0,     0,     0,     0,
+       0,   141,   142,   143,   144,   145,   146,   147,   131,   132,
+     133,   134,   135,   136,     0,   137,     0,     0,   138,   139,
+     140,     0,     0,     0,     0,     0,   263,     0,     0,     0,
+       0,     0,     0,     0,     0,   141,   142,   143,   144,   145,
+     146,   147,   131,   132,   133,   134,   135,   136,     0,   137,
+       0,     0,   138,   139,   140,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   196,     0,     0,   141,
+     142,   143,   144,   145,   146,   147,   131,   132,   133,   134,
+     135,   136,     0,   137,     0,     0,   138,   139,   140,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     143,   144,   145,   146,   147,   148,   149
+       0,     0,   230,   141,   142,   143,   144,   145,   146,   147,
+       0,   197,   131,   132,   133,   134,   135,   136,   173,   137,
+       0,     0,   138,   139,   140,     0,   131,   132,   133,   134,
+     135,   136,     0,   137,     0,     0,   138,   139,   140,   141,
+     142,   143,   144,   145,   146,   147,     0,     0,     0,     0,
+       0,     0,     0,   141,   142,   143,   144,   145,   146,   147,
+     131,   132,   133,   134,   135,   136,     0,   137,     0,     0,
+     138,   139,   140,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   141,   142,   143,
+     144,   145,   146,   147,     0,     0,     0,   188,   131,   132,
+     133,   134,   135,   136,     0,   137,     0,     0,   138,   139,
+     140,     0,     0,     0,     0,     0,   184,   185,     0,     0,
+       0,     0,     0,     0,     0,   141,   142,   143,   144,   145,
+     146,   147,   131,   132,   133,   134,   135,   136,     0,   137,
+       0,     0,   138,   139,   140,   131,   132,   133,   134,     0,
+       0,     0,   137,     0,     0,   138,   139,   140,     0,   141,
+     142,   143,   144,   145,   146,   147,     0,     0,     0,     0,
+       0,     0,   141,   142,   143,   144,   145,   146,   147
 };
 
 static const yytype_int16 yycheck[] =
 {
        4,    83,     0,     7,     8,     9,    14,    46,    12,    13,
-      31,    15,   158,    15,    16,   101,    58,    59,    22,     0,
-     106,    25,    73,    29,    30,    76,    30,    31,    30,    33,
-      34,    35,    36,    37,    38,    73,    75,    73,    37,    43,
-      44,    45,    46,    82,    95,    96,    97,    98,    99,    53,
-     259,    55,    48,    57,    50,    56,    56,    56,    96,    97,
-      98,    99,    98,    99,   101,    69,   101,    68,    68,   106,
-     279,    75,   101,    94,   105,   106,    80,   106,    82,   225,
-      30,   103,   164,    87,   106,    89,   107,    12,    53,    30,
-     130,   131,    17,   101,    30,    30,   103,   101,   103,   106,
-      13,   106,    15,   101,    30,    30,    31,    30,    33,    30,
-      30,   102,    68,   102,   106,    48,   106,    55,    30,   106,
-     106,    30,    30,   106,    30,   129,    68,    30,    30,   133,
+      37,    15,    31,    55,    22,   156,    47,   256,    49,     0,
+     100,    25,    72,    31,   102,    67,    30,   105,    55,    33,
+      34,    35,    36,    37,    38,    72,    75,   276,    75,    43,
+      44,    45,    46,    82,    72,    12,    30,    97,    98,    53,
+      17,    55,    13,    57,    15,    57,    58,    94,    95,    96,
+      97,    98,    55,    30,    31,    69,    33,    95,    96,    97,
+      98,    75,   102,    92,    67,   105,    80,    52,    82,   161,
+      47,   222,    49,    30,    88,    12,   105,    30,   128,   129,
+      17,    99,   197,    15,    16,    99,    63,   104,   105,    30,
+     100,    30,   100,    30,    31,   105,    33,    30,    30,   100,
+     100,    29,    30,   102,   105,   105,   105,    30,    30,   101,
+     105,    67,   101,   127,    30,   105,    47,   131,   132,   133,
      134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,   127,   151,    55,   153,
-      30,   106,    91,    30,    39,    56,   196,    38,   162,    30,
-      92,    90,   166,   167,    91,   169,   170,    55,    30,   173,
-     174,   298,   176,    91,    90,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   165,    56,   106,    31,   193,
-     127,    -1,    -1,    -1,    -1,   199,    -1,   200,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    68,
-      69,   250,   252,    -1,    73,    -1,   256,    76,    77,    78,
-      -1,    -1,   304,    -1,    -1,    -1,    -1,    -1,   232,   233,
-      -1,    -1,    -1,   273,    93,    94,    95,    96,    97,    98,
-      99,    -1,    -1,    -1,    -1,    -1,   250,   287,    -1,    -1,
-      -1,   254,    -1,    -1,   294,    -1,    -1,   297,    -1,   263,
-     264,   265,   266,   303,    -1,    -1,    -1,   307,   272,    -1,
-     310,    -1,    -1,   276,    -1,   278,    -1,    -1,   318,    -1,
-      -1,    -1,   286,   323,    -1,    -1,    -1,    -1,    -1,    -1,
-     293,    -1,   295,    -1,    -1,   299,    -1,    -1,    -1,   302,
-      -1,    -1,     0,     1,    -1,    -1,    -1,    -1,    -1,   312,
-      -1,    -1,    -1,    -1,    12,    -1,   319,    15,    16,    17,
-      -1,    19,    20,    21,    22,    23,    -1,    25,    26,    27,
-      -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    -1,
-      -1,    -1,    40,    -1,    42,    43,    44,    -1,    -1,    47,
-      -1,    -1,    -1,    -1,    52,    53,    54,    -1,    -1,    57,
-      -1,    -1,    -1,    61,    62,    63,    -1,    65,    -1,    -1,
-      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,
-      -1,    79,    80,    81,    82,    83,    -1,    -1,    86,    87,
-      88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,    97,
-      -1,    -1,    -1,   101,   102,    12,   104,    -1,    15,    16,
-      17,    -1,    19,    20,    21,    22,    23,    -1,    25,    26,
-      27,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
-      -1,    -1,    -1,    40,    -1,    42,    43,    44,    -1,    -1,
-      47,    -1,    -1,    -1,    -1,    52,    53,    54,    -1,    -1,
-      57,    -1,    -1,    -1,    61,    62,    63,    -1,    65,    -1,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
-      -1,    -1,    79,    80,    81,    82,    83,    -1,    -1,    86,
-      87,    88,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,
-      97,    -1,    -1,    -1,    -1,   102,    12,   104,    -1,    15,
-      16,    17,    -1,    19,    20,    21,    22,    23,    -1,    25,
-      26,    27,    -1,    29,    30,    31,    -1,    33,    34,    35,
-      -1,    -1,    -1,    -1,    40,    -1,    42,    43,    44,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    54,    -1,
-      -1,    57,    -1,    -1,    -1,    -1,    62,    63,    -1,    65,
-      -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
-      -1,    -1,    -1,    79,    80,    81,    82,    83,    -1,    -1,
-      86,    87,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,
-      96,    97,    -1,    -1,    -1,   101,   102,    12,   104,    -1,
-      15,    16,    17,    -1,    19,    20,    21,    22,    23,    -1,
-      25,    26,    27,    -1,    29,    30,    31,    -1,    33,    -1,
-      35,    -1,    -1,    -1,    -1,    40,    -1,    42,    43,    44,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,    53,    54,
-      -1,    -1,    57,    -1,    -1,    -1,    -1,    62,    63,    -1,
-      65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,
-      -1,    -1,    -1,    -1,    79,    80,    81,    82,    83,    -1,
-      -1,    86,    87,    -1,    89,    -1,    -1,    -1,    -1,    -1,
-      -1,    96,    97,    -1,    -1,    -1,   101,   102,    12,   104,
-      -1,    15,    16,    17,    -1,    19,    20,    21,    22,    23,
+     144,   145,   146,   147,   125,   149,   251,   151,   105,    54,
+     105,    30,    30,   193,   105,   159,    30,    67,    30,   163,
+     164,    30,   166,   167,    54,   105,   170,   171,   273,   173,
+     275,    30,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,    90,    30,    55,   290,   190,   292,    91,    39,
+      38,    30,   196,    89,   299,    90,    12,    54,   105,    30,
+      89,    17,    90,    56,   309,   125,   295,    -1,   247,   249,
+     162,   316,    -1,   253,    30,    31,    -1,    33,    -1,   301,
+      -1,    -1,    -1,    -1,    -1,   229,   230,    -1,    -1,    45,
+     270,    47,    48,    49,    50,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   247,   284,    -1,    -1,    -1,    -1,    -1,
+      -1,   291,    -1,    -1,   294,    -1,   260,   261,   262,   263,
+     300,    -1,    -1,    -1,   304,   269,    -1,   307,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   315,    -1,    -1,    -1,   283,
+     320,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   296,    12,    -1,    -1,    15,    16,    17,    -1,
+      19,    20,    21,    22,    23,    -1,    25,    26,    27,    -1,
+      29,    30,    31,    -1,    33,    -1,    35,    36,    -1,    -1,
+      -1,    40,    41,    42,    43,    -1,    -1,    46,    -1,    -1,
+      -1,    -1,    51,    52,    53,    -1,    -1,    56,    -1,    -1,
+      -1,    60,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    78,
+      79,    80,    81,    82,    -1,    -1,    85,    86,    87,    88,
+      -1,    -1,    -1,    -1,    -1,    -1,    95,    96,    -1,    -1,
+      -1,   100,   101,    12,   103,    -1,    15,    16,    17,    -1,
+      19,    20,    21,    22,    23,    -1,    25,    26,    27,    -1,
+      29,    30,    31,    -1,    33,    -1,    35,    36,    -1,    -1,
+      -1,    40,    41,    42,    43,    -1,    -1,    46,    -1,    -1,
+      -1,    -1,    51,    52,    53,    -1,    -1,    56,    -1,    -1,
+      -1,    60,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    78,
+      79,    80,    81,    82,    -1,    -1,    85,    86,    87,    88,
+      -1,    -1,    -1,    -1,    -1,    -1,    95,    96,    -1,    -1,
+      -1,    -1,   101,    12,   103,    -1,    15,    16,    17,    -1,
+      19,    20,    21,    22,    23,    -1,    25,    26,    27,    -1,
+      29,    30,    31,    -1,    33,    34,    35,    -1,    -1,    -1,
+      -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    51,    52,    53,    -1,    -1,    56,    -1,    -1,
+      -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    78,
+      79,    80,    81,    82,    -1,    -1,    85,    86,    -1,    88,
+      -1,    -1,    -1,    -1,    -1,    -1,    95,    96,    -1,    -1,
+      -1,   100,   101,    12,   103,    -1,    15,    16,    17,    -1,
+      19,    20,    21,    22,    23,    -1,    25,    26,    27,    -1,
+      29,    30,    31,    -1,    33,    -1,    35,    -1,    -1,    -1,
+      -1,    40,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    51,    52,    53,    -1,    -1,    56,    -1,    -1,
+      -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    78,
+      79,    80,    81,    82,    -1,    -1,    85,    86,    -1,    88,
+      -1,    -1,    -1,    -1,    -1,    -1,    95,    96,    -1,    -1,
+      -1,   100,   101,    12,   103,    -1,    15,    16,    17,    -1,
+      19,    20,    21,    22,    23,    -1,    25,    26,    27,    -1,
+      29,    30,    31,    -1,    33,    -1,    35,    -1,    -1,    -1,
+      -1,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    51,    -1,    53,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,
+      -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    78,
+      79,    80,    81,    82,    -1,    -1,    -1,    86,    -1,    88,
+      -1,    -1,    -1,    -1,    -1,    12,    95,    96,    15,    16,
+      17,    -1,   101,    -1,   103,    -1,    -1,    -1,    25,    26,
+      27,    -1,    29,    30,    31,    -1,    33,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,
+      -1,    15,    16,    17,    51,    -1,    53,    -1,    -1,    -1,
       -1,    25,    26,    27,    -1,    29,    30,    31,    -1,    33,
-      -1,    35,    -1,    -1,    -1,    -1,    40,    -1,    42,    43,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,    -1,
-      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    63,
-      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,
-      -1,    -1,    -1,    -1,    -1,    79,    80,    81,    82,    83,
-      -1,    -1,    -1,    87,    -1,    89,    -1,    -1,    -1,    -1,
-      -1,    12,    96,    97,    15,    16,    17,    -1,   102,    -1,
-     104,    -1,    -1,    -1,    25,    26,    27,    -1,    29,    30,
-      31,    -1,    33,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      41,    -1,    -1,    -1,    -1,    46,    -1,    48,    49,    50,
-      51,    52,    -1,    54,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
+      -1,    78,    79,    80,    81,    82,    -1,    51,    -1,    53,
+      -1,    88,    -1,    -1,    -1,    -1,    -1,    -1,    95,    96,
+      -1,    -1,    -1,    -1,   101,    -1,   103,    71,    -1,    -1,
+      -1,    -1,    -1,    -1,    78,    79,    80,    81,    82,    44,
+      -1,    -1,    -1,    -1,    88,    -1,    -1,    -1,    -1,    -1,
+      -1,    95,    96,    -1,    -1,    -1,    -1,   101,    -1,   103,
+      65,    66,    67,    68,    69,    70,    -1,    72,    73,    74,
+      75,    76,    77,    -1,    -1,    -1,    -1,    -1,    49,    -1,
+      -1,    -1,    -1,    -1,    55,    -1,    -1,    92,    93,    94,
+      95,    96,    97,    98,    65,    66,    67,    68,    69,    70,
+      -1,    72,    -1,    -1,    75,    76,    77,    -1,    -1,    -1,
+      -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    55,    -1,
+      -1,    92,    93,    94,    95,    96,    97,    98,    65,    66,
+      67,    68,    69,    70,    -1,    72,    -1,    -1,    75,    76,
+      77,    -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,
+      -1,    -1,    55,    -1,    -1,    92,    93,    94,    95,    96,
+      97,    98,    65,    66,    67,    68,    69,    70,    -1,    72,
+      -1,    -1,    75,    76,    77,    -1,    -1,    -1,    -1,    -1,
+      49,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    92,
+      93,    94,    95,    96,    97,    98,    65,    66,    67,    68,
+      69,    70,    -1,    72,    -1,    -1,    75,    76,    77,    -1,
+      -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    97,    98,
+      65,    66,    67,    68,    69,    70,    -1,    72,    -1,    -1,
+      75,    76,    77,    -1,    -1,    -1,    -1,    -1,    49,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
+      95,    96,    97,    98,    65,    66,    67,    68,    69,    70,
+      -1,    72,    -1,    -1,    75,    76,    77,    -1,    -1,    -1,
+      -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    94,    95,    96,    97,    98,    65,    66,
+      67,    68,    69,    70,    -1,    72,    -1,    -1,    75,    76,
+      77,    -1,    -1,    -1,    -1,    -1,    49,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      97,    98,    65,    66,    67,    68,    69,    70,    -1,    72,
+      -1,    -1,    75,    76,    77,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    -1,    92,
+      93,    94,    95,    96,    97,    98,    65,    66,    67,    68,
+      69,    70,    -1,    72,    -1,    -1,    75,    76,    77,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-      81,    82,    83,    -1,    -1,    -1,    -1,    -1,    89,    -1,
-      -1,    -1,    -1,    -1,    12,    96,    97,    15,    16,    17,
-      -1,   102,    -1,   104,    -1,    -1,    -1,    25,    26,    27,
-      -1,    29,    30,    31,    -1,    33,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    41,    -1,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    50,    -1,    52,    -1,    54,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    72,    12,    -1,    -1,    15,    16,
-      17,    79,    80,    81,    82,    83,    -1,    -1,    25,    26,
-      27,    89,    29,    30,    31,    -1,    33,    -1,    96,    97,
-      -1,    -1,    -1,    -1,   102,    -1,   104,    -1,    12,    -1,
-      -1,    15,    16,    17,    -1,    52,    -1,    54,    -1,    -1,
-      -1,    25,    26,    27,    -1,    29,    30,    31,    -1,    33,
-      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
-      -1,    -1,    79,    80,    81,    82,    83,    -1,    52,    -1,
-      54,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    96,
-      97,    -1,    -1,    -1,    -1,   102,    -1,   104,    72,    -1,
-      -1,    -1,    -1,    -1,    -1,    79,    80,    81,    82,    83,
-      45,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,
-      -1,    -1,    96,    97,    -1,    -1,    -1,    -1,   102,    -1,
-     104,    66,    67,    68,    69,    70,    71,    -1,    73,    74,
-      75,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    50,
-      -1,    -1,    -1,    -1,    -1,    56,    -1,    -1,    93,    94,
-      95,    96,    97,    98,    99,    66,    67,    68,    69,    70,
-      71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,
-      -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    56,
-      -1,    -1,    93,    94,    95,    96,    97,    98,    99,    66,
-      67,    68,    69,    70,    71,    -1,    73,    -1,    -1,    76,
-      77,    78,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
-      -1,    -1,    -1,    56,    -1,    -1,    93,    94,    95,    96,
-      97,    98,    99,    66,    67,    68,    69,    70,    71,    -1,
-      73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
-      -1,    50,    -1,    -1,    -1,    -1,    -1,    56,    -1,    -1,
-      93,    94,    95,    96,    97,    98,    99,    66,    67,    68,
-      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
-      -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    98,
-      99,    66,    67,    68,    69,    70,    71,    -1,    73,    -1,
-      -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    50,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
-      95,    96,    97,    98,    99,    66,    67,    68,    69,    70,
-      71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,
-      -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    93,    94,    95,    96,    97,    98,    99,    66,
-      67,    68,    69,    70,    71,    -1,    73,    -1,    -1,    76,
-      77,    78,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
-      97,    98,    99,    66,    67,    68,    69,    70,    71,    -1,
-      73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    -1,    -1,
-      93,    94,    95,    96,    97,    98,    99,    66,    67,    68,
-      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    56,    93,    94,    95,    96,    97,    98,
-      99,    -1,   101,    66,    67,    68,    69,    70,    71,    58,
-      73,    -1,    -1,    76,    77,    78,    -1,    66,    67,    68,
-      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
-      93,    94,    95,    96,    97,    98,    99,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    98,
-      99,    66,    67,    68,    69,    70,    71,    -1,    73,    -1,
-      -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
-      95,    96,    97,    98,    99,    -1,    -1,    -1,   103,    66,
-      67,    68,    69,    70,    71,    -1,    73,    -1,    -1,    76,
-      77,    78,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
-      97,    98,    99,    66,    67,    68,    69,    70,    71,    -1,
-      73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      93,    94,    95,    96,    97,    98,    99
+      -1,    -1,    55,    92,    93,    94,    95,    96,    97,    98,
+      -1,   100,    65,    66,    67,    68,    69,    70,    57,    72,
+      -1,    -1,    75,    76,    77,    -1,    65,    66,    67,    68,
+      69,    70,    -1,    72,    -1,    -1,    75,    76,    77,    92,
+      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    97,    98,
+      65,    66,    67,    68,    69,    70,    -1,    72,    -1,    -1,
+      75,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
+      95,    96,    97,    98,    -1,    -1,    -1,   102,    65,    66,
+      67,    68,    69,    70,    -1,    72,    -1,    -1,    75,    76,
+      77,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      97,    98,    65,    66,    67,    68,    69,    70,    -1,    72,
+      -1,    -1,    75,    76,    77,    65,    66,    67,    68,    -1,
+      -1,    -1,    72,    -1,    -1,    75,    76,    77,    -1,    92,
+      93,    94,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    94,    95,    96,    97,    98
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1224,37 +1190,37 @@ static const yytype_uint8 yystos[] =
 {
        0,     1,    12,    15,    16,    17,    19,    20,    21,    22,
       23,    25,    26,    27,    29,    30,    31,    33,    35,    36,
-      40,    42,    43,    44,    47,    52,    53,    54,    57,    61,
-      62,    63,    65,    72,    79,    80,    81,    82,    83,    86,
-      87,    88,    89,    96,    97,   102,   104,   108,   109,   110,
-     111,   112,   113,   116,   117,   118,   123,   124,   125,   126,
-     127,   128,   132,   135,   137,   140,   144,   101,    30,    52,
-     126,   126,   126,   126,   146,    30,   126,   146,    30,   125,
-     102,   146,   136,   139,    53,    30,   129,    41,    46,    48,
-      49,    50,    51,   126,   133,   134,    30,   126,    58,    59,
-      15,    16,    30,    30,    30,   126,    64,   133,   134,    30,
-     131,   126,   126,   126,   126,   126,   126,    30,   130,    30,
-     102,   126,   126,   126,   126,   145,     0,   101,   126,    68,
-     126,   111,   126,    66,    67,    68,    69,    70,    71,    73,
-      76,    77,    78,    93,    94,    95,    96,    97,    98,    99,
-     120,   102,   126,   106,   145,   126,   145,   145,   120,   106,
-     126,   126,    48,   134,   138,    45,    74,    75,    30,    56,
-      68,   125,   126,    56,    68,    55,    58,   134,   106,    50,
-      56,    50,    56,    50,    56,    50,    56,    84,    85,   106,
-      30,   103,   105,   106,   109,   121,   126,   121,   121,    56,
-     101,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   126,   126,   126,   126,    30,   141,
-     126,   103,   141,    30,   126,   120,    30,   127,   126,   126,
-     126,   126,    68,    56,   126,   126,   126,    30,   126,   126,
-     126,   126,   126,   126,   126,   126,   126,   126,    30,   103,
-     106,   126,   122,   121,    55,   126,   122,   101,   106,   101,
-     141,   126,   126,    50,    50,    50,    50,   145,   101,   112,
-     121,    37,    56,   122,   121,   106,   143,    30,   143,   101,
-     126,   126,   126,   126,   103,    91,    56,   126,   121,    92,
-      30,   122,   122,   143,   126,   121,    39,   114,   115,   119,
-      34,   122,   121,   122,    38,   121,   114,   126,    30,   142,
-     122,   121,   120,    90,   121,   106,   121,    91,   122,    55,
-      30,    91,   121,   122,    90,   121
+      40,    41,    42,    43,    46,    51,    52,    53,    56,    60,
+      61,    62,    64,    71,    78,    79,    80,    81,    82,    85,
+      86,    87,    88,    95,    96,   101,   103,   107,   108,   109,
+     110,   111,   112,   115,   116,   117,   122,   123,   124,   125,
+     126,   127,   131,   133,   135,   138,   142,   100,    30,    51,
+     125,   125,   125,   125,   144,    30,   125,   144,    30,   124,
+     101,   144,   134,   137,    52,    30,   128,    45,    47,    48,
+      49,    50,   124,   132,    30,   125,    57,    58,    15,    16,
+      30,    30,    30,   125,    63,   124,   132,    30,   130,   125,
+     125,   125,   125,   125,   125,    30,   129,    30,   101,   125,
+     125,   125,   125,   143,     0,   100,   125,    67,   125,   110,
+     125,    65,    66,    67,    68,    69,    70,    72,    75,    76,
+      77,    92,    93,    94,    95,    96,    97,    98,   119,   101,
+     125,   105,   143,   125,   143,   143,   119,   105,   125,    47,
+     132,   136,    44,    73,    74,    30,    55,    67,   124,   125,
+      55,    67,    54,    57,   132,   105,    49,    55,    49,    55,
+      49,    55,    49,    55,    83,    84,   105,    30,   102,   104,
+     105,   108,   120,   125,   120,   120,    55,   100,   125,   125,
+     125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,    30,   139,   125,   102,   139,
+      30,   125,   119,    30,   126,   125,   125,   125,   125,    67,
+      55,   125,   125,   125,    30,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,    30,   102,   105,   125,   121,
+     120,    54,   125,   121,   100,   105,   100,   139,   125,   125,
+      49,    49,    49,    49,   143,   100,   111,   120,    37,    55,
+     121,   120,   105,   141,    30,   141,   100,   125,   125,   125,
+     125,   102,    90,    55,   125,   120,    91,    30,   121,   121,
+     141,   125,   120,    39,   113,   114,   118,    34,   121,   120,
+     121,    38,   120,   113,   125,    30,   140,   121,   120,   119,
+      89,   120,   105,   120,    90,   121,    54,    30,    90,   120,
+     121,    89,   120
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2732,54 +2698,54 @@ yyreduce:
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
-  case 127:
-#line 486 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 482 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
-  case 128:
-#line 487 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 483 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 129:
-#line 491 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 487 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 130:
-#line 495 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 491 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
-  case 131:
-#line 499 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 495 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
-  case 132:
-#line 499 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 495 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
-  case 133:
-#line 529 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 525 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = kStateInArgs; g_lingo->_currentFactory.clear(); ;}
     break;
 
-  case 134:
-#line 530 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 526 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg));
@@ -2787,18 +2753,18 @@ yyreduce:
 			g_lingo->_indef = kStateNone; ;}
     break;
 
-  case 135:
-#line 535 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 531 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;}
     break;
 
-  case 136:
-#line 536 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 532 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = kStateInArgs; ;}
     break;
 
-  case 137:
-#line 537 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 533 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*(yyvsp[(1) - (7)].s), (yyvsp[(3) - (7)].code), (yyvsp[(4) - (7)].narg) + 1, &g_lingo->_currentFactory);
@@ -2806,8 +2772,8 @@ yyreduce:
 			g_lingo->_indef = kStateNone; ;}
     break;
 
-  case 138:
-#line 542 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 538 "engines/director/lingo/lingo-gr.y"
     {	// D3
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (8)].s), (yyvsp[(2) - (8)].code), (yyvsp[(3) - (8)].narg));
@@ -2818,8 +2784,8 @@ yyreduce:
 		checkEnd((yyvsp[(7) - (8)].s), (yyvsp[(1) - (8)].s)->c_str(), false); ;}
     break;
 
-  case 139:
-#line 550 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 546 "engines/director/lingo/lingo-gr.y"
     {	// D4. No 'end' clause
 		g_lingo->code1(g_lingo->c_procret);
 		g_lingo->define(*(yyvsp[(1) - (6)].s), (yyvsp[(2) - (6)].code), (yyvsp[(3) - (6)].narg));
@@ -2828,38 +2794,38 @@ yyreduce:
 		g_lingo->_ignoreMe = false; ;}
     break;
 
-  case 140:
-#line 557 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 553 "engines/director/lingo/lingo-gr.y"
     { (yyval.s) = (yyvsp[(2) - (2)].s); g_lingo->_indef = kStateInArgs; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; ;}
     break;
 
-  case 141:
-#line 559 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 555 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 142:
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 556 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
-  case 143:
-#line 561 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 557 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 144:
-#line 562 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 558 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
-  case 148:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 566 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; ;}
     break;
 
-  case 149:
-#line 574 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 570 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -2868,34 +2834,34 @@ yyreduce:
 		g_lingo->code1(numpar); ;}
     break;
 
-  case 150:
-#line 582 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 578 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
-  case 151:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 579 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 152:
-#line 584 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 580 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
-  case 153:
-#line 587 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 583 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
-  case 154:
-#line 588 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 584 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 2899 "engines/director/lingo/lingo-gr.cpp"
+#line 2865 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3109,6 +3075,6 @@ yyreturn:
 }
 
 
-#line 591 "engines/director/lingo/lingo-gr.y"
+#line 587 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 8d3bc683c2..40d1491edc 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -77,58 +77,57 @@
      tELSE = 293,
      tELSIF = 294,
      tEXIT = 295,
-     tFRAME = 296,
-     tGLOBAL = 297,
-     tGO = 298,
-     tIF = 299,
-     tINTO = 300,
-     tLOOP = 301,
-     tMACRO = 302,
-     tMOVIE = 303,
-     tNEXT = 304,
-     tOF = 305,
-     tPREVIOUS = 306,
-     tPUT = 307,
-     tREPEAT = 308,
-     tSET = 309,
-     tTHEN = 310,
-     tTO = 311,
-     tWHEN = 312,
-     tWITH = 313,
-     tWHILE = 314,
-     tNLELSE = 315,
-     tFACTORY = 316,
-     tOPEN = 317,
-     tPLAY = 318,
-     tDONE = 319,
-     tINSTANCE = 320,
-     tGE = 321,
-     tLE = 322,
-     tEQ = 323,
-     tNEQ = 324,
-     tAND = 325,
-     tOR = 326,
-     tNOT = 327,
-     tMOD = 328,
-     tAFTER = 329,
-     tBEFORE = 330,
-     tCONCAT = 331,
-     tCONTAINS = 332,
-     tSTARTS = 333,
-     tCHAR = 334,
-     tITEM = 335,
-     tLINE = 336,
-     tWORD = 337,
-     tSPRITE = 338,
-     tINTERSECTS = 339,
-     tWITHIN = 340,
-     tTELL = 341,
-     tPROPERTY = 342,
-     tON = 343,
-     tME = 344,
-     tENDIF = 345,
-     tENDREPEAT = 346,
-     tENDTELL = 347
+     tGLOBAL = 296,
+     tGO = 297,
+     tIF = 298,
+     tINTO = 299,
+     tLOOP = 300,
+     tMACRO = 301,
+     tMOVIE = 302,
+     tNEXT = 303,
+     tOF = 304,
+     tPREVIOUS = 305,
+     tPUT = 306,
+     tREPEAT = 307,
+     tSET = 308,
+     tTHEN = 309,
+     tTO = 310,
+     tWHEN = 311,
+     tWITH = 312,
+     tWHILE = 313,
+     tNLELSE = 314,
+     tFACTORY = 315,
+     tOPEN = 316,
+     tPLAY = 317,
+     tDONE = 318,
+     tINSTANCE = 319,
+     tGE = 320,
+     tLE = 321,
+     tEQ = 322,
+     tNEQ = 323,
+     tAND = 324,
+     tOR = 325,
+     tNOT = 326,
+     tMOD = 327,
+     tAFTER = 328,
+     tBEFORE = 329,
+     tCONCAT = 330,
+     tCONTAINS = 331,
+     tSTARTS = 332,
+     tCHAR = 333,
+     tITEM = 334,
+     tLINE = 335,
+     tWORD = 336,
+     tSPRITE = 337,
+     tINTERSECTS = 338,
+     tWITHIN = 339,
+     tTELL = 340,
+     tPROPERTY = 341,
+     tON = 342,
+     tME = 343,
+     tENDIF = 344,
+     tENDREPEAT = 345,
+     tENDTELL = 346
    };
 #endif
 /* Tokens.  */
@@ -170,58 +169,57 @@
 #define tELSE 293
 #define tELSIF 294
 #define tEXIT 295
-#define tFRAME 296
-#define tGLOBAL 297
-#define tGO 298
-#define tIF 299
-#define tINTO 300
-#define tLOOP 301
-#define tMACRO 302
-#define tMOVIE 303
-#define tNEXT 304
-#define tOF 305
-#define tPREVIOUS 306
-#define tPUT 307
-#define tREPEAT 308
-#define tSET 309
-#define tTHEN 310
-#define tTO 311
-#define tWHEN 312
-#define tWITH 313
-#define tWHILE 314
-#define tNLELSE 315
-#define tFACTORY 316
-#define tOPEN 317
-#define tPLAY 318
-#define tDONE 319
-#define tINSTANCE 320
-#define tGE 321
-#define tLE 322
-#define tEQ 323
-#define tNEQ 324
-#define tAND 325
-#define tOR 326
-#define tNOT 327
-#define tMOD 328
-#define tAFTER 329
-#define tBEFORE 330
-#define tCONCAT 331
-#define tCONTAINS 332
-#define tSTARTS 333
-#define tCHAR 334
-#define tITEM 335
-#define tLINE 336
-#define tWORD 337
-#define tSPRITE 338
-#define tINTERSECTS 339
-#define tWITHIN 340
-#define tTELL 341
-#define tPROPERTY 342
-#define tON 343
-#define tME 344
-#define tENDIF 345
-#define tENDREPEAT 346
-#define tENDTELL 347
+#define tGLOBAL 296
+#define tGO 297
+#define tIF 298
+#define tINTO 299
+#define tLOOP 300
+#define tMACRO 301
+#define tMOVIE 302
+#define tNEXT 303
+#define tOF 304
+#define tPREVIOUS 305
+#define tPUT 306
+#define tREPEAT 307
+#define tSET 308
+#define tTHEN 309
+#define tTO 310
+#define tWHEN 311
+#define tWITH 312
+#define tWHILE 313
+#define tNLELSE 314
+#define tFACTORY 315
+#define tOPEN 316
+#define tPLAY 317
+#define tDONE 318
+#define tINSTANCE 319
+#define tGE 320
+#define tLE 321
+#define tEQ 322
+#define tNEQ 323
+#define tAND 324
+#define tOR 325
+#define tNOT 326
+#define tMOD 327
+#define tAFTER 328
+#define tBEFORE 329
+#define tCONCAT 330
+#define tCONTAINS 331
+#define tSTARTS 332
+#define tCHAR 333
+#define tITEM 334
+#define tLINE 335
+#define tWORD 336
+#define tSPRITE 337
+#define tINTERSECTS 338
+#define tWITHIN 339
+#define tTELL 340
+#define tPROPERTY 341
+#define tON 342
+#define tME 343
+#define tENDIF 344
+#define tENDREPEAT 345
+#define tENDTELL 346
 
 
 
@@ -239,7 +237,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 1529 of yacc.c.  */
-#line 243 "engines/director/lingo/lingo-gr.hpp"
+#line 241 "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 2f918a70b3..bd1d0a4f1e 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -98,7 +98,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token<s> FBLTIN FBLTINNOARGS FBLTINONEARG FBLTINARGLIST RBLTIN RBLTINONEARG
 %token<s> ID STRING HANDLER SYMBOL
 %token<s> ENDCLAUSE tPLAYACCEL tMETHOD
-%token tDOWN tELSE tELSIF tEXIT tFRAME tGLOBAL tGO tIF tINTO tLOOP tMACRO
+%token tDOWN tELSE tELSIF tEXIT tGLOBAL tGO tIF tINTO tLOOP tMACRO
 %token tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN
 %token tWITH tWHILE tNLELSE tFACTORY tOPEN tPLAY tDONE tINSTANCE
 %token tGE tLE tEQ tNEQ tAND tOR tNOT tMOD
@@ -461,11 +461,11 @@ instancelist: ID				{ g_lingo->code1(g_lingo->c_instance); g_lingo->codeString($
 gotofunc: tGO tLOOP				{ g_lingo->code1(g_lingo->c_gotoloop); }
 	| tGO tNEXT					{ g_lingo->code1(g_lingo->c_gotonext); }
 	| tGO tPREVIOUS				{ g_lingo->code1(g_lingo->c_gotoprevious); }
-	| tGO gotoframe 			{
+	| tGO simpleexpr 			{
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_goto); }
-	| tGO gotoframe gotomovie	{
+	| tGO simpleexpr gotomovie	{
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_goto); }
@@ -475,20 +475,16 @@ gotofunc: tGO tLOOP				{ g_lingo->code1(g_lingo->c_gotoloop); }
 		g_lingo->code1(g_lingo->c_goto); }
 	;
 
-gotoframe: tFRAME expr
-	| expr
-	;
-
 gotomovie: tOF tMOVIE expr
 	| tMOVIE expr
 	;
 
 playfunc: tPLAY tDONE			{ g_lingo->code1(g_lingo->c_playdone); }
-	| tPLAY gotoframe 			{
+	| tPLAY simpleexpr 			{
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(g_lingo->c_play); }
-	| tPLAY gotoframe gotomovie	{
+	| tPLAY simpleexpr gotomovie	{
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(g_lingo->c_play); }
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 38b3da6bbe..3f1e0ffcd6 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 74
-#define YY_END_OF_BUFFER 75
+#define YY_NUM_RULES 75
+#define YY_END_OF_BUFFER 76
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,39 +373,41 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[284] =
+static yyconst flex_int16_t yy_accept[292] =
     {   0,
-        0,    0,   75,   73,    4,   71,   71,   73,   73,   73,
-       70,   70,   70,   69,   70,   66,   70,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   73,    3,    3,    4,   71,
-        0,    0,    0,   72,    5,   65,    2,   68,   69,   64,
-       62,   63,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   22,   13,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   35,   36,   67,   38,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   55,
-       67,   67,   67,    1,    3,    3,    5,    2,   68,   67,
-
-        7,   67,   67,   67,   67,   67,   67,   16,   67,   67,
-       67,   67,    0,   67,   67,   67,   67,   67,   67,   67,
-       31,   67,   67,   34,   67,   67,   67,   67,   43,   67,
-       45,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,    9,   67,   11,   12,   15,    0,   16,   18,   67,
-       67,   67,    0,   67,   67,   25,   26,   27,   28,   67,
-       67,   67,   33,   37,   39,   67,   67,   67,   67,   67,
-       47,    0,   54,   59,   67,   57,   61,    6,   67,   67,
-        0,   16,   16,   67,   19,   67,   21,   67,   67,   29,
-       67,   32,   67,   67,   67,   67,   67,   67,   53,   53,
-
-       53,   53,   60,   67,    8,   67,    0,   16,   67,   20,
-       67,   67,   67,   67,   67,   67,   44,   56,   46,    0,
-        0,   53,   53,   53,   58,   67,   14,   17,   67,   67,
-        0,   30,   67,   67,   67,    0,    0,    0,    0,   53,
-       53,   53,   10,   23,   67,   30,   30,   67,   41,   42,
-        0,    0,    0,   53,   53,   53,   67,   30,   40,    0,
-        0,    0,    0,    0,   53,   24,   52,   51,   52,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   48,   49,
-       50,   50,    0
+        0,    0,   76,   74,    4,   72,   72,   74,   74,   74,
+       71,   71,   71,   70,   71,   67,   71,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   74,    3,    3,    4,   72,
+        0,    0,    0,   73,    5,   66,    2,   69,   70,   65,
+       63,   64,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   22,   13,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   35,   36,   68,   38,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   56,   68,
+       68,   68,    1,    3,    3,    5,    2,   69,   68,    7,
+
+       68,   68,   68,   68,   68,   68,   16,   68,   68,   68,
+        0,   68,   68,   68,   68,   68,   68,   68,   31,   68,
+       68,   34,   68,   68,   68,   68,   44,   68,   46,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,    9,
+       68,   11,   12,   15,    0,   16,   18,   68,   68,    0,
+       68,   68,   25,   26,   27,   28,   68,   68,   68,   33,
+       37,   40,   68,   68,   68,   68,   68,   48,    0,   55,
+       60,   68,   58,   62,    6,   68,   68,    0,   16,   16,
+       68,   68,   21,   68,   68,   29,   68,   32,    0,   68,
+       68,   68,   68,   68,   68,   54,   54,   54,   54,   61,
+
+       68,    8,   68,    0,   16,   68,   19,    0,   68,   68,
+       68,    0,   68,   68,   68,   45,   57,   47,    0,    0,
+       54,   54,   54,   59,   68,   14,   17,    0,   68,   68,
+        0,   30,    0,   68,   68,   68,    0,    0,    0,    0,
+       54,   54,   54,   10,    0,   23,   68,   30,   30,    0,
+       68,   42,   43,    0,    0,    0,   54,   54,   54,    0,
+       68,   30,    0,   41,    0,    0,    0,    0,    0,   54,
+        0,   24,   39,   53,   52,   53,    0,    0,    0,    0,
+        0,   20,    0,    0,    0,    0,   49,   50,   51,   51,
+        0
+
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -451,81 +453,83 @@ static yyconst flex_int32_t yy_meta[66] =
         5,    5,    5,    5,    1
     } ;
 
-static yyconst flex_int16_t yy_base[299] =
+static yyconst flex_int16_t yy_base[307] =
     {   0,
-        0,   64,  177,  752,   68,  752,  752,   72,  159,    0,
-      752,  113,  107,   55,   63,  752,   94,   58,   60,   58,
-       54,   62,   77,   63,    0,   94,   70,  109,  106,  109,
-      121,   75,  138,  137,  146,   82,  141,  185,  199,  752,
-      205,   94,   93,  752,    0,  752,    0,   79,   90,  752,
-      752,  752,    0,   69,  129,  128,  163,  139,  182,  160,
-      178,  174,  193,  196,  185,  130,    0,  182,  200,  190,
-      195,  203,  192,  208,  191,  196,    0,    0,  211,    0,
-      216,  231,  201,  211,  213,  223,  217,  235,  242,    0,
-      246,  230,  240,  752,  279,  296,    0,    0,   70,  247,
-
-        0,  248,  246,  252,  269,  265,  270,  304,  260,  269,
-      277,  289,  308,  277,  293,  293,  287,  291,  291,  301,
-        0,  301,  295,    0,  302,  294,  298,  307,    0,  306,
-        0,  315,  309,  322,  351,  328,  333,  339,  344,  335,
-      336,    0,  353,    0,    0,  177,  224,    0,    0,  342,
-      353,  358,  347,  361,  349,    0,    0,    0,    0,  353,
-      355,  365,    0,    0,  370,  365,  370,  377,  362,  363,
-        0,  400,    0,    0,  387,  385,    0,    0,  392,  389,
-      415,    0,    0,  385,    0,  396,  752,  395,  391,    0,
-      408,    0,  410,  396,  398,  397,  420,  402,  457,  466,
-
-      467,  468,    0,  428,    0,  434,  442,    0,  434,    0,
-      456,  458,  488,  461,  446,  453,    0,    0,    0,  489,
-      472,  511,  520,  527,    0,  462,  752,    0,  465,  483,
-      374,    0,  482,  480,  475,  531,  509,  513,  515,  539,
-      545,  554,    0,    0,  483,    0,    0,  519,    0,    0,
-      517,  441,  529,  561,  577,  581,  534,    0,    0,  551,
-      591,  554,  601,  603,  605,    0,  752,  607,  752,  611,
-      572,  615,  577,  623,  624,  630,  637,  600,  632,  647,
-      649,  654,  752,  691,  693,  696,  699,  705,  710,  715,
-      718,  723,  725,  730,  735,  738,  741,  746
-
+        0,   64,  186,  764,   68,  764,  764,   72,  179,    0,
+      764,  161,  154,   55,   63,  764,  142,   58,   60,   58,
+       54,   62,   68,   63,    0,   87,   69,  109,   74,  114,
+      102,   75,  129,  128,  148,   94,  187,  191,  201,  764,
+      205,   99,  142,  764,    0,  764,    0,  114,  119,  764,
+      764,  764,    0,   65,  121,  132,  139,   89,  182,  110,
+      156,  162,  180,  183,   81,    0,  180,  179,  187,  187,
+      199,  186,  210,  183,  191,    0,    0,  202,    0,  211,
+      221,  198,  203,  201,  216,  212,  232,  240,    0,  243,
+      228,  239,  764,  274,  295,    0,    0,   79,  244,    0,
+
+      250,  248,  247,  248,  255,  264,  290,  253,  256,  283,
+      309,  272,  288,  285,  281,  285,  284,  296,    0,  296,
+      284,    0,  294,  284,  288,  297,    0,  308,    0,  305,
+      299,  306,  333,  321,  324,  312,  333,  325,  326,    0,
+      346,    0,    0,  178,  362,    0,    0,  335,  349,  339,
+      353,  339,    0,    0,    0,    0,  343,  346,  356,    0,
+        0,  382,  354,  359,  364,  350,  355,    0,  396,    0,
+        0,  371,  369,    0,    0,  382,  382,  406,    0,    0,
+      377,  385,  411,  386,  384,    0,  400,    0,  424,  406,
+      397,  402,  402,  417,  406,  439,  450,  463,  464,    0,
+
+      419,    0,  424,  436,    0,  422,    0,  474,  456,  457,
+      480,  437,  461,  448,  452,    0,    0,    0,  496,  469,
+      505,  507,  520,    0,  465,  764,    0,  480,  481,  499,
+      486,    0,  503,  503,  495,  492,  531,  517,  513,  517,
+      552,  563,  564,    0,  534,    0,  511,    0,    0,  520,
+      531,    0,    0,  540,  575,  550,  579,  581,  591,  551,
+      556,    0,  567,    0,  571,  592,  574,  603,  605,  616,
+      583,    0,  764,  764,  604,  764,  614,  605,  626,  608,
+      640,  764,  634,  641,  649,  619,  656,  667,  669,  671,
+      764,  703,  705,  708,  711,  717,  722,  727,  730,  735,
+
+      737,  742,  747,  750,  753,  758
     } ;
 
-static yyconst flex_int16_t yy_def[299] =
+static yyconst flex_int16_t yy_def[307] =
     {   0,
-      283,    1,  283,  283,  283,  283,  283,  283,  284,  285,
-      283,  283,  283,  283,  283,  283,  283,  286,  286,  286,
-      286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
-      286,  286,  286,  286,  286,  283,  283,  283,  283,  283,
-      283,  283,  284,  283,  287,  283,  288,  283,  283,  283,
-      283,  283,  286,  286,  286,  286,  286,  286,  286,  286,
-      286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
-      286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
-      286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
-      286,  286,  286,  283,  283,  283,  287,  288,  283,  286,
-
-      286,  286,  286,  286,  286,  286,  286,  289,  286,  286,
-      286,  286,  283,  286,  286,  286,  286,  286,  286,  286,
-      286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
-      286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
-      286,  286,  286,  286,  286,  286,  290,  291,  286,  286,
-      286,  286,  283,  286,  286,  286,  286,  286,  286,  286,
-      286,  286,  286,  286,  286,  286,  286,  286,  286,  286,
-      286,  292,  286,  286,  286,  286,  286,  286,  286,  286,
-      283,  293,  291,  286,  286,  286,  283,  286,  286,  286,
-      286,  286,  286,  286,  286,  286,  286,  286,  292,  292,
-
-      292,  292,  286,  286,  286,  286,  283,  293,  286,  286,
-      286,  286,  294,  286,  286,  286,  286,  286,  286,  283,
-      283,  292,  292,  292,  286,  286,  283,  286,  286,  286,
-      295,  296,  286,  286,  286,  283,  283,  283,  283,  292,
-      292,  292,  286,  286,  286,  297,  296,  286,  286,  286,
-      283,  283,  283,  292,  292,  292,  286,  297,  286,  283,
-      298,  283,  283,  283,  292,  286,  283,  298,  283,  283,
-      283,  283,  283,  283,  283,  283,  283,  283,  298,  298,
-      283,  298,    0,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283,  283
-
+      291,    1,  291,  291,  291,  291,  291,  291,  292,  293,
+      291,  291,  291,  291,  291,  291,  291,  294,  294,  294,
+      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  294,  294,  294,  291,  291,  291,  291,  291,
+      291,  291,  292,  291,  295,  291,  296,  291,  291,  291,
+      291,  291,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  291,  291,  291,  295,  296,  291,  294,  294,
+
+      294,  294,  294,  294,  294,  294,  297,  294,  294,  294,
+      291,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  294,  294,  298,  299,  294,  294,  294,  291,
+      294,  294,  294,  294,  294,  294,  294,  294,  294,  294,
+      294,  294,  294,  294,  294,  294,  294,  294,  300,  294,
+      294,  294,  294,  294,  294,  294,  294,  291,  301,  299,
+      294,  294,  291,  294,  294,  294,  294,  294,  291,  294,
+      294,  294,  294,  294,  294,  300,  300,  300,  300,  294,
+
+      294,  294,  294,  291,  301,  294,  294,  291,  294,  294,
+      302,  291,  294,  294,  294,  294,  294,  294,  291,  291,
+      300,  300,  300,  294,  294,  291,  294,  291,  294,  294,
+      303,  304,  291,  294,  294,  294,  291,  291,  291,  291,
+      300,  300,  300,  294,  291,  294,  294,  305,  304,  291,
+      294,  294,  294,  291,  291,  291,  300,  300,  300,  291,
+      294,  305,  291,  294,  291,  306,  291,  291,  291,  300,
+      291,  294,  291,  291,  306,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  306,  306,  291,  306,
+        0,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+
+      291,  291,  291,  291,  291,  291
     } ;
 
-static yyconst flex_int16_t yy_nxt[818] =
+static yyconst flex_int16_t yy_nxt[830] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   11,
        13,    4,   14,   15,   16,   17,   18,   19,   20,   21,
@@ -535,91 +539,92 @@ static yyconst flex_int16_t yy_nxt[818] =
        27,   28,   29,   30,   31,   25,   32,   33,   34,   25,
        25,   35,   25,   25,   36,   37,   48,   49,   38,   39,
        40,   40,   41,   41,   40,   40,   41,   50,   51,   54,
-       56,   57,   99,   59,   94,   94,   55,   58,   60,   65,
-       61,   99,   66,   63,   70,   84,   94,   94,   44,   71,
-
-       62,   48,   49,  100,   54,   56,   57,   59,   52,   64,
-       55,   58,   60,   65,   61,   67,   66,   47,   63,   70,
-       84,   46,   68,   71,   62,   72,   75,  100,   69,   73,
-       77,  113,   42,   64,  113,   76,   42,   78,   74,   79,
-       67,   80,   95,   40,   40,   96,   68,   81,  101,  102,
-       72,   75,   69,   82,   73,   77,   83,   88,   85,   76,
-       89,   78,   74,   79,   44,   80,   90,  104,   86,   91,
-       92,   81,   87,  101,  102,   93,  283,   82,  181,  103,
-       83,  181,   88,   85,  283,   89,   96,   40,   40,   96,
-       90,  104,   86,  107,   91,   92,   87,  108,  109,   93,
-
-       39,   40,   40,   41,  103,   42,   41,   40,   40,   41,
-      105,  110,  111,  283,  112,  114,  115,  107,  117,  106,
-      116,  119,  108,  109,  118,  147,  120,  121,  147,  123,
-      124,  125,  126,  133,  105,  129,  110,  111,  112,  114,
-      115,  130,  117,  106,  122,  116,  119,  131,  118,   42,
-      120,  127,  121,  123,  124,  132,  125,  126,  133,  129,
-      128,  134,  135,   42,  138,  130,  136,  140,  122,   42,
-      137,  131,  139,  283,  283,  283,  127,  141,  142,  132,
-       95,   40,   40,   96,  128,  134,  143,  135,  138,  144,
-      146,  136,  140,  145,  149,  137,  139,   96,   40,   40,
-
-       96,  141,  142,  150,  151,  147,  152,  158,  147,  113,
-      143,  154,  113,  155,  144,  146,   53,  145,  149,  283,
-      157,  159,  156,  160,  161,  162,  168,  150,  151,  163,
-      164,  152,  158,  165,  166,  154,  283,  167,  155,  169,
-      283,  170,  153,   42,  157,  159,  156,  160,  171,  161,
-      162,  168,  172,  163,  164,  172,  174,  165,  166,  175,
-       42,  167,  176,  177,  169,  170,  153,  178,  179,  180,
-      283,  184,  171,  185,  186,  231,  187,  188,  231,  173,
-      174,  189,  190,  175,  191,  192,  193,  176,  177,  194,
-      195,  178,  179,  196,  180,  184,  197,  198,  185,  186,
-
-      187,  172,  188,  173,  172,  189,  190,  203,  191,  204,
-      192,  193,  205,  206,  194,  195,  181,  209,  196,  181,
-      197,  198,  210,  211,  212,  215,  200,  213,  214,  283,
-      216,  217,  203,  201,  204,  219,  202,  205,  206,  207,
-      218,  209,  261,  283,  283,  261,  210,  211,  212,  215,
-      200,  283,  213,  214,  216,  217,  225,  201,  220,  219,
-      202,  220,  226,  227,  207,  218,  221,  220,  220,  220,
-      220,  220,  220,  228,  229,  221,  221,  221,  230,  233,
-      225,  234,  222,  283,  224,  244,  226,  235,  227,  231,
-      236,  237,  231,  236,  283,  243,  283,  228,  223,  229,
-
-       53,  245,  248,  230,  233,  234,  239,  222,  237,  224,
-      244,  235,  220,  249,  250,  220,  237,  257,  238,  243,
-      221,  220,  223,  239,  220,  251,  245,  248,  220,  221,
-      239,  220,  236,  237,  252,  236,  221,  249,  250,  253,
-      220,  257,  238,  220,  240,  259,  220,  239,  221,  220,
-      251,  260,  241,  242,  221,  220,  262,  283,  220,  252,
-      238,  283,  263,  221,  253,  263,  283,  266,  240,  259,
-      221,  267,  283,  254,  269,  260,  241,  242,  264,  255,
-      262,  264,  220,  283,  238,  220,  221,  283,  283,  256,
-      221,  266,  261,  275,  283,  261,  267,  254,  276,  269,
-
-      283,  265,  270,  255,  272,  270,  274,  272,  283,  274,
-      283,  283,  270,  256,  221,  270,  272,  283,  275,  272,
-      237,  281,  237,  276,  277,  279,  265,  277,  279,  283,
-      271,  280,  273,  279,  280,  239,  279,  239,  277,  283,
-      271,  277,  237,  283,  273,  237,  281,  237,  280,  283,
-      282,  280,  278,  282,  271,  282,  273,  239,  282,  239,
-      283,  239,  283,  283,  271,  283,  278,  237,  273,  283,
-      283,  283,  283,  283,  283,  283,  278,  283,  283,  283,
-      283,  239,  283,  283,  283,  283,  283,  283,  283,  283,
-      278,   43,   43,  283,   43,   43,   43,   45,   45,   53,
-
-       53,   53,   97,   97,   97,   98,   98,  283,   98,   98,
-       98,  148,  283,  148,  148,  148,  182,  283,  283,  182,
-      182,  183,  183,  183,  199,  283,  283,  199,  208,  208,
-      208,  232,  283,  232,  232,  232,  246,  283,  283,  246,
-      246,  247,  247,  247,  258,  258,  258,  268,  283,  283,
-      268,    3,  283,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-
-      283,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283
+       56,   57,  111,   59,   63,  111,   55,   58,   60,   64,
+       61,   98,   65,   69,   74,   83,   93,   93,   70,   99,
+
+       62,   93,   93,   75,   54,   56,   57,   59,   66,   63,
+       55,   58,   60,   64,   61,   67,   65,  103,   69,   74,
+       83,   68,   70,   99,   62,   71,   98,   75,   80,   72,
+       48,   49,   42,   66,   81,   76,   42,   82,   73,   67,
+      100,  103,   77,  106,   78,   68,   79,   44,   87,   84,
+       71,   88,   80,  101,   72,  102,   52,   89,   81,   85,
+       76,   82,   73,   86,   47,  100,   77,  106,   78,   46,
+       79,   90,   91,   87,   84,  107,   88,   92,  101,  178,
+      102,   89,  178,   85,   44,  291,  108,   86,   94,   40,
+       40,   95,   95,   40,   40,   95,   90,   91,  109,  114,
+
+      107,   92,   39,   40,   40,   41,   41,   40,   40,   41,
+      104,  108,  110,  112,  113,  115,  116,  117,  291,  105,
+      118,  121,  123,  109,  114,  122,  291,  124,  131,  119,
+      291,  291,  127,  128,  104,  129,  110,  112,  113,  115,
+      116,  125,  117,  105,  118,  121,  120,  123,  130,  122,
+      126,   42,  124,  131,  119,   42,  127,  128,  132,  129,
+      133,  291,  136,  134,  138,   42,  125,  135,  142,   42,
+      120,  137,  130,  291,  126,   94,   40,   40,   95,  139,
+      140,  141,  132,  143,  144,  133,  136,  147,  134,  138,
+      148,  145,  135,  142,  145,  137,   95,   40,   40,   95,
+
+      149,  155,   53,  139,  140,  141,  151,  143,  152,  144,
+      111,  147,  154,  111,  148,  156,  157,  153,  160,  158,
+      159,  291,  161,  162,  163,  149,  155,  164,  165,  166,
+      151,  167,  168,  152,  169,  173,  154,  169,   42,  156,
+      157,  153,  160,  150,  158,  159,  161,  162,  163,  171,
+      172,  164,  174,  165,  166,  167,  168,  175,  176,   42,
+      173,  170,  177,  145,  181,  182,  145,  150,  183,  184,
+      291,  185,  186,  171,  172,  187,  188,  174,  191,  192,
+      193,  175,  176,  189,  194,  170,  189,  177,  181,  195,
+      182,  200,  183,  201,  184,  185,  186,  169,  190,  187,
+
+      169,  188,  202,  191,  192,  193,  203,  178,  194,  206,
+      178,  207,  208,  195,  209,  208,  200,  210,  201,  211,
+      291,  291,  197,  190,  213,  189,  214,  202,  189,  198,
+      204,  203,  199,  206,  215,  207,  216,  217,  209,  218,
+      219,  210,  291,  219,  211,  212,  197,  224,  220,  213,
+      214,  219,  225,  198,  219,  204,  199,  226,  215,  220,
+      216,  227,  217,  218,  219,  219,  221,  219,  219,  233,
+      212,  224,  220,  220,  229,  208,  225,  230,  208,  234,
+      223,  231,  226,  235,  231,  227,  236,  231,  238,  291,
+      231,  221,   53,  233,  222,  228,  291,  237,  244,  229,
+
+      237,  246,  230,  240,  234,  223,  219,  235,  219,  219,
+      236,  219,  245,  238,  220,  238,  220,  247,  222,  250,
+      228,  219,  244,  251,  219,  239,  246,  240,  252,  220,
+      240,  253,  237,  254,  255,  237,  245,  291,  241,  242,
+      238,  256,  247,  291,  250,  261,  243,  263,  251,  239,
+      260,  291,  252,  219,  240,  253,  219,  264,  254,  255,
+      239,  220,  241,  242,  219,  219,  256,  219,  219,  261,
+      243,  263,  220,  220,  265,  260,  266,  267,  271,  266,
+      268,  264,  269,  268,  239,  269,  257,  273,  220,  272,
+      220,  274,  219,  266,  276,  219,  266,  258,  265,  259,
+
+      220,  267,  271,  282,  277,  291,  279,  277,  291,  279,
+      257,  270,  273,  272,  291,  277,  274,  281,  277,  276,
+      281,  258,  238,  259,  238,  220,  283,  279,  282,  284,
+      279,  291,  278,  291,  280,  287,  270,  240,  287,  240,
+      289,  285,  288,  278,  285,  288,  291,  238,  291,  238,
+      285,  283,  291,  285,  284,  280,  278,  287,  280,  238,
+      287,  240,  291,  240,  291,  289,  291,  278,  288,  286,
+      290,  288,  290,  290,  240,  290,  291,  291,  286,  280,
+      291,  291,  291,  291,  238,  291,  291,  291,  291,  291,
+      291,  291,  291,  286,  291,  291,  291,  291,  240,  291,
+
+      291,  291,  286,   43,   43,  291,   43,   43,   43,   45,
+       45,   53,   53,   53,   96,   96,   96,   97,   97,  291,
+       97,   97,   97,  146,  291,  146,  146,  146,  179,  291,
+      291,  179,  179,  180,  180,  180,  196,  291,  291,  196,
+      205,  205,  205,  232,  291,  232,  232,  232,  248,  291,
+      291,  248,  248,  249,  249,  249,  262,  262,  262,  275,
+      291,  291,  275,    3,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291
     } ;
 
-static yyconst flex_int16_t yy_chk[818] =
+static yyconst flex_int16_t yy_chk[830] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -629,88 +634,89 @@ static yyconst flex_int16_t yy_chk[818] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    2,   14,   14,    2,    5,
         5,    5,    5,    8,    8,    8,    8,   15,   15,   18,
-       19,   20,   99,   21,   36,   36,   18,   20,   22,   24,
-       22,   48,   24,   23,   27,   32,   42,   42,   43,   27,
-
-       22,   49,   49,   54,   18,   19,   20,   21,   17,   23,
-       18,   20,   22,   24,   22,   26,   24,   13,   23,   27,
-       32,   12,   26,   27,   22,   28,   29,   54,   26,   28,
-       30,   66,    5,   23,   66,   29,    8,   30,   28,   30,
-       26,   30,   37,   37,   37,   37,   26,   31,   55,   56,
-       28,   29,   26,   31,   28,   30,   31,   34,   33,   29,
-       34,   30,   28,   30,    9,   30,   34,   58,   33,   35,
-       35,   31,   33,   55,   56,   35,    3,   31,  146,   57,
-       31,  146,   34,   33,    0,   34,   38,   38,   38,   38,
-       34,   58,   33,   60,   35,   35,   33,   61,   62,   35,
-
-       39,   39,   39,   39,   57,   37,   41,   41,   41,   41,
-       59,   63,   64,    0,   65,   68,   68,   60,   70,   59,
-       69,   72,   61,   62,   71,  147,   73,   74,  147,   75,
-       76,   79,   81,   87,   59,   83,   63,   64,   65,   68,
-       68,   84,   70,   59,   74,   69,   72,   85,   71,   38,
-       73,   82,   74,   75,   76,   86,   79,   81,   87,   83,
-       82,   88,   89,   39,   92,   84,   91,  100,   74,   41,
-       91,   85,   93,    0,    0,    0,   82,  102,  103,   86,
-       95,   95,   95,   95,   82,   88,  104,   89,   92,  105,
-      107,   91,  100,  106,  109,   91,   93,   96,   96,   96,
-
-       96,  102,  103,  110,  111,  108,  112,  117,  108,  113,
-      104,  114,  113,  115,  105,  107,  108,  106,  109,    0,
-      116,  118,  115,  119,  120,  122,  130,  110,  111,  123,
-      125,  112,  117,  126,  127,  114,    0,  128,  115,  132,
-        0,  133,  113,   95,  116,  118,  115,  119,  134,  120,
-      122,  130,  135,  123,  125,  135,  136,  126,  127,  137,
-       96,  128,  138,  139,  132,  133,  113,  140,  141,  143,
-        0,  150,  134,  151,  152,  231,  153,  154,  231,  135,
-      136,  155,  160,  137,  161,  162,  165,  138,  139,  166,
-      167,  140,  141,  168,  143,  150,  169,  170,  151,  152,
-
-      153,  172,  154,  135,  172,  155,  160,  175,  161,  176,
-      162,  165,  179,  180,  166,  167,  181,  184,  168,  181,
-      169,  170,  186,  188,  189,  194,  172,  191,  193,    0,
-      195,  196,  175,  172,  176,  198,  172,  179,  180,  181,
-      197,  184,  252,    0,    0,  252,  186,  188,  189,  194,
-      172,    0,  191,  193,  195,  196,  204,  172,  199,  198,
-      172,  199,  206,  207,  181,  197,  199,  200,  201,  202,
-      200,  201,  202,  209,  211,  200,  201,  202,  212,  214,
-      204,  215,  200,    0,  202,  229,  206,  216,  207,  213,
-      220,  221,  213,  220,    0,  226,    0,  209,  201,  211,
-
-      213,  230,  233,  212,  214,  215,  221,  200,  220,  202,
-      229,  216,  222,  234,  235,  222,  221,  245,  220,  226,
-      222,  223,  201,  220,  223,  237,  230,  233,  224,  223,
-      221,  224,  236,  220,  238,  236,  224,  234,  235,  239,
-      240,  245,  220,  240,  222,  248,  241,  220,  240,  241,
-      237,  251,  223,  224,  241,  242,  253,    0,  242,  238,
-      236,    0,  254,  242,  239,  254,    0,  257,  222,  248,
-      254,  260,    0,  240,  262,  251,  223,  224,  255,  241,
-      253,  255,  256,    0,  236,  256,  255,    0,    0,  242,
-      256,  257,  261,  271,    0,  261,  260,  240,  273,  262,
-
-        0,  256,  263,  241,  264,  263,  265,  264,  268,  265,
-        0,  268,  270,  242,  265,  270,  272,    0,  271,  272,
-      263,  278,  264,  273,  274,  275,  256,  274,  275,    0,
-      263,  276,  264,  279,  276,  263,  279,  264,  277,    0,
-      270,  277,  274,    0,  272,  263,  278,  264,  280,    0,
-      281,  280,  274,  281,  263,  282,  264,  274,  282,  263,
-        0,  264,    0,    0,  270,    0,  277,  274,  272,    0,
-        0,    0,    0,    0,    0,    0,  274,    0,    0,    0,
-        0,  274,    0,    0,    0,    0,    0,    0,    0,    0,
-      277,  284,  284,    0,  284,  284,  284,  285,  285,  286,
-
-      286,  286,  287,  287,  287,  288,  288,    0,  288,  288,
-      288,  289,    0,  289,  289,  289,  290,    0,    0,  290,
-      290,  291,  291,  291,  292,    0,    0,  292,  293,  293,
-      293,  294,    0,  294,  294,  294,  295,    0,    0,  295,
-      295,  296,  296,  296,  297,  297,  297,  298,    0,    0,
-      298,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-
-      283,  283,  283,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  283
+       19,   20,   65,   21,   23,   65,   18,   20,   22,   24,
+       22,   98,   24,   27,   29,   32,   36,   36,   27,   54,
+
+       22,   42,   42,   29,   18,   19,   20,   21,   26,   23,
+       18,   20,   22,   24,   22,   26,   24,   58,   27,   29,
+       32,   26,   27,   54,   22,   28,   48,   29,   31,   28,
+       49,   49,    5,   26,   31,   30,    8,   31,   28,   26,
+       55,   58,   30,   60,   30,   26,   30,   43,   34,   33,
+       28,   34,   31,   56,   28,   57,   17,   34,   31,   33,
+       30,   31,   28,   33,   13,   55,   30,   60,   30,   12,
+       30,   35,   35,   34,   33,   61,   34,   35,   56,  144,
+       57,   34,  144,   33,    9,    3,   62,   33,   37,   37,
+       37,   37,   38,   38,   38,   38,   35,   35,   63,   68,
+
+       61,   35,   39,   39,   39,   39,   41,   41,   41,   41,
+       59,   62,   64,   67,   67,   69,   70,   71,    0,   59,
+       72,   74,   78,   63,   68,   75,    0,   80,   86,   73,
+        0,    0,   82,   83,   59,   84,   64,   67,   67,   69,
+       70,   81,   71,   59,   72,   74,   73,   78,   85,   75,
+       81,   37,   80,   86,   73,   38,   82,   83,   87,   84,
+       88,    0,   91,   90,   99,   39,   81,   90,  104,   41,
+       73,   92,   85,    0,   81,   94,   94,   94,   94,  101,
+      102,  103,   87,  105,  106,   88,   91,  108,   90,   99,
+      109,  107,   90,  104,  107,   92,   95,   95,   95,   95,
+
+      110,  115,  107,  101,  102,  103,  112,  105,  113,  106,
+      111,  108,  114,  111,  109,  116,  117,  113,  121,  118,
+      120,    0,  123,  124,  125,  110,  115,  126,  128,  130,
+      112,  131,  132,  113,  133,  136,  114,  133,   94,  116,
+      117,  113,  121,  111,  118,  120,  123,  124,  125,  134,
+      135,  126,  137,  128,  130,  131,  132,  138,  139,   95,
+      136,  133,  141,  145,  148,  149,  145,  111,  150,  151,
+        0,  152,  157,  134,  135,  158,  159,  137,  163,  164,
+      165,  138,  139,  162,  166,  133,  162,  141,  148,  167,
+      149,  172,  150,  173,  151,  152,  157,  169,  162,  158,
+
+      169,  159,  176,  163,  164,  165,  177,  178,  166,  181,
+      178,  182,  183,  167,  184,  183,  172,  185,  173,  187,
+        0,    0,  169,  162,  190,  189,  191,  176,  189,  169,
+      178,  177,  169,  181,  192,  182,  193,  194,  184,  195,
+      196,  185,    0,  196,  187,  189,  169,  201,  196,  190,
+      191,  197,  203,  169,  197,  178,  169,  204,  192,  197,
+      193,  206,  194,  195,  198,  199,  197,  198,  199,  212,
+      189,  201,  198,  199,  209,  208,  203,  210,  208,  213,
+      199,  211,  204,  214,  211,  206,  215,  231,  220,    0,
+      231,  197,  211,  212,  198,  208,    0,  219,  225,  209,
+
+      219,  229,  210,  220,  213,  199,  221,  214,  222,  221,
+      215,  222,  228,  220,  221,  219,  222,  230,  198,  233,
+      208,  223,  225,  234,  223,  219,  229,  220,  235,  223,
+      219,  236,  237,  238,  239,  237,  228,    0,  221,  222,
+      219,  240,  230,    0,  233,  247,  223,  250,  234,  219,
+      245,    0,  235,  241,  219,  236,  241,  251,  238,  239,
+      237,  241,  221,  222,  242,  243,  240,  242,  243,  247,
+      223,  250,  242,  243,  254,  245,  255,  256,  260,  255,
+      257,  251,  258,  257,  237,  258,  241,  263,  257,  261,
+      258,  265,  259,  266,  267,  259,  266,  242,  254,  243,
+
+      259,  256,  260,  271,  268,  275,  269,  268,  275,  269,
+      241,  259,  263,  261,    0,  277,  265,  270,  277,  267,
+      270,  242,  268,  243,  269,  270,  278,  279,  271,  280,
+      279,    0,  268,    0,  269,  283,  259,  268,  283,  269,
+      286,  281,  284,  277,  281,  284,    0,  268,    0,  269,
+      285,  278,    0,  285,  280,  279,  268,  287,  269,  281,
+      287,  268,    0,  269,    0,  286,    0,  277,  288,  281,
+      289,  288,  290,  289,  281,  290,    0,    0,  285,  279,
+        0,    0,    0,    0,  281,    0,    0,    0,    0,    0,
+        0,    0,    0,  281,    0,    0,    0,    0,  281,    0,
+
+        0,    0,  285,  292,  292,    0,  292,  292,  292,  293,
+      293,  294,  294,  294,  295,  295,  295,  296,  296,    0,
+      296,  296,  296,  297,    0,  297,  297,  297,  298,    0,
+        0,  298,  298,  299,  299,  299,  300,    0,    0,  300,
+      301,  301,  301,  302,    0,  302,  302,  302,  303,    0,
+        0,  303,  303,  304,  304,  304,  305,  305,  305,  306,
+        0,    0,  306,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
+      291,  291,  291,  291,  291,  291,  291,  291,  291
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -797,7 +803,7 @@ static int checkImmediate(int token) {
 	return token;
 }
 
-#line 801 "engines/director/lingo/lingo-lex.cpp"
+#line 807 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -983,7 +989,7 @@ YY_DECL
 #line 85 "engines/director/lingo/lingo-lex.l"
 
 
-#line 987 "engines/director/lingo/lingo-lex.cpp"
+#line 993 "engines/director/lingo/lingo-lex.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -1037,13 +1043,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 >= 284 )
+				if ( yy_current_state >= 292 )
 					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_current_state != 283 );
+		while ( yy_current_state != 291 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1174,12 +1180,12 @@ YY_RULE_SETUP
 case 19:
 YY_RULE_SETUP
 #line 124 "engines/director/lingo/lingo-lex.l"
-{ count(); return tFRAME; }
+{ count(); return tGLOBAL; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
 #line 125 "engines/director/lingo/lingo-lex.l"
-{ count(); return tGLOBAL; }
+{ count(); return tGO; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
@@ -1289,46 +1295,51 @@ YY_RULE_SETUP
 case 40:
 YY_RULE_SETUP
 #line 155 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
+{ count(); return tPLAY; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 156 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPREVIOUS; }
+{ count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 157 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPROPERTY; }	// D4
+{ count(); return tPREVIOUS; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 158 "engines/director/lingo/lingo-lex.l"
-{ count(); return tPUT; }
+{ count(); return tPROPERTY; }	// D4
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 159 "engines/director/lingo/lingo-lex.l"
-{ count(); return checkImmediate(tREPEAT); }
+{ count(); return tPUT; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 160 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSET; }
+{ count(); return checkImmediate(tREPEAT); }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 161 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSTARTS; }
+{ count(); return tSET; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 162 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTELL; }
+{ count(); return tSTARTS; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 163 "engines/director/lingo/lingo-lex.l"
+{ count(); return tTELL; }
+	YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 164 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1338,9 +1349,9 @@ YY_RULE_SETUP
 		return THEENTITYWITHID;
 	}
 	YY_BREAK
-case 49:
+case 50:
 YY_RULE_SETUP
-#line 171 "engines/director/lingo/lingo-lex.l"
+#line 172 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1350,9 +1361,9 @@ YY_RULE_SETUP
 		return THEENTITYWITHID;
 	}
 	YY_BREAK
-case 50:
+case 51:
 YY_RULE_SETUP
-#line 179 "engines/director/lingo/lingo-lex.l"
+#line 180 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1361,9 +1372,9 @@ YY_RULE_SETUP
 		return FBLTINONEARG;
 	}
 	YY_BREAK
-case 51:
+case 52:
 YY_RULE_SETUP
-#line 186 "engines/director/lingo/lingo-lex.l"
+#line 187 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1405,9 +1416,9 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
-case 52:
+case 53:
 YY_RULE_SETUP
-#line 226 "engines/director/lingo/lingo-lex.l"
+#line 227 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1440,9 +1451,9 @@ YY_RULE_SETUP
 			return THEENTITY;
 	}
 	YY_BREAK
-case 53:
+case 54:
 YY_RULE_SETUP
-#line 257 "engines/director/lingo/lingo-lex.l"
+#line 258 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1463,74 +1474,74 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity %s", ptr);
 	}
 	YY_BREAK
-case 54:
-YY_RULE_SETUP
-#line 276 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTHEN; }
-	YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 277 "engines/director/lingo/lingo-lex.l"
-{ count(); return tTO; }
+{ count(); return tTHEN; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 278 "engines/director/lingo/lingo-lex.l"
-{ count(); return tSPRITE; }
+{ count(); return tTO; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 279 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITH; }
+{ count(); return tSPRITE; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 280 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWITHIN; }
+{ count(); return tWITH; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 281 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHEN; }
+{ count(); return tWITHIN; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 282 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHILE; }
+{ count(); return tWHEN; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 283 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWORD; }
+{ count(); return tWHILE; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 285 "engines/director/lingo/lingo-lex.l"
-{ count(); return tNEQ; }
+#line 284 "engines/director/lingo/lingo-lex.l"
+{ count(); return tWORD; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 286 "engines/director/lingo/lingo-lex.l"
-{ count(); return tGE; }
+{ count(); return tNEQ; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 287 "engines/director/lingo/lingo-lex.l"
-{ count(); return tLE; }
+{ count(); return tGE; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 288 "engines/director/lingo/lingo-lex.l"
-{ count(); return tCONCAT; }
+{ count(); return tLE; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 289 "engines/director/lingo/lingo-lex.l"
-{ count(); return tEQ; }
+{ count(); return tCONCAT; }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 291 "engines/director/lingo/lingo-lex.l"
+#line 290 "engines/director/lingo/lingo-lex.l"
+{ count(); return tEQ; }
+	YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 292 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1586,43 +1597,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 68:
-YY_RULE_SETUP
-#line 345 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.f = atof(yytext); return FLOAT; }
-	YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 346 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
+{ count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 347 "engines/director/lingo/lingo-lex.l"
-{ count(); return *yytext; }
+{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 71:
-/* rule 71 can match eol */
 YY_RULE_SETUP
 #line 348 "engines/director/lingo/lingo-lex.l"
-{ count(); return '\n'; }
+{ count(); return *yytext; }
 	YY_BREAK
 case 72:
+/* rule 72 can match eol */
 YY_RULE_SETUP
 #line 349 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
+{ count(); return '\n'; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 350 "engines/director/lingo/lingo-lex.l"
-{ count(); }
+{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 352 "engines/director/lingo/lingo-lex.l"
+#line 351 "engines/director/lingo/lingo-lex.l"
+{ count(); }
+	YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 353 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1626 "engines/director/lingo/lingo-lex.cpp"
+#line 1637 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1916,7 +1927,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 >= 284 )
+			if ( yy_current_state >= 292 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1944,11 +1955,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 >= 284 )
+		if ( yy_current_state >= 292 )
 			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 == 283);
+	yy_is_jam = (yy_current_state == 291);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2582,7 +2593,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 352 "engines/director/lingo/lingo-lex.l"
+#line 353 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 22347e28e7..df5203a001 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -121,8 +121,8 @@ whitespace [\t ]
 	}
 (?i:factory)	{ count(); return tFACTORY; }
 (?i:exit)		{ count(); return tEXIT; }
-(?i:frame)		{ count(); return tFRAME; }
 (?i:global)		{ count(); return tGLOBAL; }
+(?i:go[\t ]+to[\t ]+frame)	{ count(); return tGO; }
 (?i:go[\t ]+to)	{ count(); return tGO; }
 (?i:go)			{ count(); return tGO; }
 (?i:instance)	{ count(); return tINSTANCE; }
@@ -151,6 +151,7 @@ whitespace [\t ]
 (?i:on)			{ count(); return tON; }		// D3
 (?i:open)		{ count(); return tOPEN; }
 (?i:or)			{ count(); return tOR; }
+(?i:play[\t ]+frame)	{ count(); return tPLAY; }
 (?i:play)		{ count(); return tPLAY; }
 (?i:playAccel)	{ count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
 (?i:previous)	{ count(); return tPREVIOUS; }
-- 
cgit v1.2.3