[Scummvm-git-logs] scummvm master -> 6a96a062c732963bcacfcdb3253e8f18bda80502

sev- sev at scummvm.org
Tue Mar 7 19:35:42 CET 2017


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

Summary:
45dcd06eff DIRECTOR: Lingo: Added definition for 'on' clauses without 'end'
6a96a062c7 DIRECTOR: Lingo: Fix parsing D4 variant of 'on ...' clause


Commit: 45dcd06eff5354bcb85024f9c4a6035e4148138c
    https://github.com/scummvm/scummvm/commit/45dcd06eff5354bcb85024f9c4a6035e4148138c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-07T18:17:31+01:00

Commit Message:
DIRECTOR: Lingo: Added definition for 'on' clauses without 'end'

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index da928f7..1b6dd61 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -66,183 +66,185 @@
    /* Put the tokens into the symbol table, so that GDB and other debuggers
       know about them.  */
    enum yytokentype {
-     UNARY = 258,
-     CASTREF = 259,
-     VOID = 260,
-     VAR = 261,
-     POINT = 262,
-     RECT = 263,
-     ARRAY = 264,
-     OBJECT = 265,
-     REFERENCE = 266,
-     INT = 267,
-     THEENTITY = 268,
-     THEENTITYWITHID = 269,
-     FLOAT = 270,
-     BLTIN = 271,
-     BLTINNOARGS = 272,
-     BLTINNOARGSORONE = 273,
-     BLTINONEARG = 274,
-     BLTINARGLIST = 275,
-     TWOWORDBUILTIN = 276,
-     FBLTIN = 277,
-     FBLTINNOARGS = 278,
-     FBLTINONEARG = 279,
-     FBLTINARGLIST = 280,
-     RBLTIN = 281,
-     RBLTINONEARG = 282,
-     ID = 283,
-     STRING = 284,
-     HANDLER = 285,
-     SYMBOL = 286,
-     ENDCLAUSE = 287,
-     tPLAYACCEL = 288,
-     tDOWN = 289,
-     tELSE = 290,
-     tNLELSIF = 291,
-     tEXIT = 292,
-     tFRAME = 293,
-     tGLOBAL = 294,
-     tGO = 295,
-     tIF = 296,
-     tINTO = 297,
-     tLOOP = 298,
-     tMACRO = 299,
-     tMOVIE = 300,
-     tNEXT = 301,
-     tOF = 302,
-     tPREVIOUS = 303,
-     tPUT = 304,
-     tREPEAT = 305,
-     tSET = 306,
-     tTHEN = 307,
-     tTO = 308,
-     tWHEN = 309,
-     tWITH = 310,
-     tWHILE = 311,
-     tNLELSE = 312,
-     tFACTORY = 313,
-     tMETHOD = 314,
-     tOPEN = 315,
-     tPLAY = 316,
-     tDONE = 317,
-     tINSTANCE = 318,
-     tGE = 319,
-     tLE = 320,
-     tGT = 321,
-     tLT = 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
+     EOSTREAM = 258,
+     UNARY = 259,
+     CASTREF = 260,
+     VOID = 261,
+     VAR = 262,
+     POINT = 263,
+     RECT = 264,
+     ARRAY = 265,
+     OBJECT = 266,
+     REFERENCE = 267,
+     INT = 268,
+     THEENTITY = 269,
+     THEENTITYWITHID = 270,
+     FLOAT = 271,
+     BLTIN = 272,
+     BLTINNOARGS = 273,
+     BLTINNOARGSORONE = 274,
+     BLTINONEARG = 275,
+     BLTINARGLIST = 276,
+     TWOWORDBUILTIN = 277,
+     FBLTIN = 278,
+     FBLTINNOARGS = 279,
+     FBLTINONEARG = 280,
+     FBLTINARGLIST = 281,
+     RBLTIN = 282,
+     RBLTINONEARG = 283,
+     ID = 284,
+     STRING = 285,
+     HANDLER = 286,
+     SYMBOL = 287,
+     ENDCLAUSE = 288,
+     tPLAYACCEL = 289,
+     tDOWN = 290,
+     tELSE = 291,
+     tNLELSIF = 292,
+     tEXIT = 293,
+     tFRAME = 294,
+     tGLOBAL = 295,
+     tGO = 296,
+     tIF = 297,
+     tINTO = 298,
+     tLOOP = 299,
+     tMACRO = 300,
+     tMOVIE = 301,
+     tNEXT = 302,
+     tOF = 303,
+     tPREVIOUS = 304,
+     tPUT = 305,
+     tREPEAT = 306,
+     tSET = 307,
+     tTHEN = 308,
+     tTO = 309,
+     tWHEN = 310,
+     tWITH = 311,
+     tWHILE = 312,
+     tNLELSE = 313,
+     tFACTORY = 314,
+     tMETHOD = 315,
+     tOPEN = 316,
+     tPLAY = 317,
+     tDONE = 318,
+     tINSTANCE = 319,
+     tGE = 320,
+     tLE = 321,
+     tGT = 322,
+     tLT = 323,
+     tEQ = 324,
+     tNEQ = 325,
+     tAND = 326,
+     tOR = 327,
+     tNOT = 328,
+     tMOD = 329,
+     tAFTER = 330,
+     tBEFORE = 331,
+     tCONCAT = 332,
+     tCONTAINS = 333,
+     tSTARTS = 334,
+     tCHAR = 335,
+     tITEM = 336,
+     tLINE = 337,
+     tWORD = 338,
+     tSPRITE = 339,
+     tINTERSECTS = 340,
+     tWITHIN = 341,
+     tTELL = 342,
+     tPROPERTY = 343,
+     tON = 344,
+     tME = 345
    };
 #endif
 /* Tokens.  */
-#define UNARY 258
-#define CASTREF 259
-#define VOID 260
-#define VAR 261
-#define POINT 262
-#define RECT 263
-#define ARRAY 264
-#define OBJECT 265
-#define REFERENCE 266
-#define INT 267
-#define THEENTITY 268
-#define THEENTITYWITHID 269
-#define FLOAT 270
-#define BLTIN 271
-#define BLTINNOARGS 272
-#define BLTINNOARGSORONE 273
-#define BLTINONEARG 274
-#define BLTINARGLIST 275
-#define TWOWORDBUILTIN 276
-#define FBLTIN 277
-#define FBLTINNOARGS 278
-#define FBLTINONEARG 279
-#define FBLTINARGLIST 280
-#define RBLTIN 281
-#define RBLTINONEARG 282
-#define ID 283
-#define STRING 284
-#define HANDLER 285
-#define SYMBOL 286
-#define ENDCLAUSE 287
-#define tPLAYACCEL 288
-#define tDOWN 289
-#define tELSE 290
-#define tNLELSIF 291
-#define tEXIT 292
-#define tFRAME 293
-#define tGLOBAL 294
-#define tGO 295
-#define tIF 296
-#define tINTO 297
-#define tLOOP 298
-#define tMACRO 299
-#define tMOVIE 300
-#define tNEXT 301
-#define tOF 302
-#define tPREVIOUS 303
-#define tPUT 304
-#define tREPEAT 305
-#define tSET 306
-#define tTHEN 307
-#define tTO 308
-#define tWHEN 309
-#define tWITH 310
-#define tWHILE 311
-#define tNLELSE 312
-#define tFACTORY 313
-#define tMETHOD 314
-#define tOPEN 315
-#define tPLAY 316
-#define tDONE 317
-#define tINSTANCE 318
-#define tGE 319
-#define tLE 320
-#define tGT 321
-#define tLT 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 EOSTREAM 258
+#define UNARY 259
+#define CASTREF 260
+#define VOID 261
+#define VAR 262
+#define POINT 263
+#define RECT 264
+#define ARRAY 265
+#define OBJECT 266
+#define REFERENCE 267
+#define INT 268
+#define THEENTITY 269
+#define THEENTITYWITHID 270
+#define FLOAT 271
+#define BLTIN 272
+#define BLTINNOARGS 273
+#define BLTINNOARGSORONE 274
+#define BLTINONEARG 275
+#define BLTINARGLIST 276
+#define TWOWORDBUILTIN 277
+#define FBLTIN 278
+#define FBLTINNOARGS 279
+#define FBLTINONEARG 280
+#define FBLTINARGLIST 281
+#define RBLTIN 282
+#define RBLTINONEARG 283
+#define ID 284
+#define STRING 285
+#define HANDLER 286
+#define SYMBOL 287
+#define ENDCLAUSE 288
+#define tPLAYACCEL 289
+#define tDOWN 290
+#define tELSE 291
+#define tNLELSIF 292
+#define tEXIT 293
+#define tFRAME 294
+#define tGLOBAL 295
+#define tGO 296
+#define tIF 297
+#define tINTO 298
+#define tLOOP 299
+#define tMACRO 300
+#define tMOVIE 301
+#define tNEXT 302
+#define tOF 303
+#define tPREVIOUS 304
+#define tPUT 305
+#define tREPEAT 306
+#define tSET 307
+#define tTHEN 308
+#define tTO 309
+#define tWHEN 310
+#define tWITH 311
+#define tWHILE 312
+#define tNLELSE 313
+#define tFACTORY 314
+#define tMETHOD 315
+#define tOPEN 316
+#define tPLAY 317
+#define tDONE 318
+#define tINSTANCE 319
+#define tGE 320
+#define tLE 321
+#define tGT 322
+#define tLT 323
+#define tEQ 324
+#define tNEQ 325
+#define tAND 326
+#define tOR 327
+#define tNOT 328
+#define tMOD 329
+#define tAFTER 330
+#define tBEFORE 331
+#define tCONCAT 332
+#define tCONTAINS 333
+#define tSTARTS 334
+#define tCHAR 335
+#define tITEM 336
+#define tLINE 337
+#define tWORD 338
+#define tSPRITE 339
+#define tINTERSECTS 340
+#define tWITHIN 341
+#define tTELL 342
+#define tPROPERTY 343
+#define tON 344
+#define tME 345
 
 
 
@@ -310,7 +312,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 193 of yacc.c.  */
-#line 314 "engines/director/lingo/lingo-gr.cpp"
+#line 316 "engines/director/lingo/lingo-gr.cpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -323,7 +325,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 327 "engines/director/lingo/lingo-gr.cpp"
+#line 329 "engines/director/lingo/lingo-gr.cpp"
 
 #ifdef short
 # undef short
@@ -536,14 +538,14 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  123
+#define YYFINAL  124
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1879
+#define YYLAST   1880
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  105
+#define YYNTOKENS  106
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  44
+#define YYNNTS  43
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  163
 /* YYNRULES -- Number of states.  */
@@ -551,7 +553,7 @@ union yyalloc
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   344
+#define YYMAXUTOK   345
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -560,15 +562,15 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      97,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      98,     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,    96,    91,     2,
-      98,    99,    94,    92,   104,    93,     2,    95,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    97,    92,     2,
+      99,   100,    95,    93,   105,    94,     2,    96,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     101,    90,   100,     2,     2,     2,     2,     2,     2,     2,
+     102,    91,   101,     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,   102,     2,   103,     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,
@@ -593,7 +595,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
+      85,    86,    87,    88,    89,    90
 };
 
 #if YYDEBUG
@@ -616,98 +618,99 @@ static const yytype_uint16 yyprhs[] =
      482,   487,   490,   494,   496,   500,   502,   506,   508,   512,
      515,   518,   521,   524,   528,   531,   534,   536,   540,   543,
      546,   549,   553,   556,   557,   561,   562,   571,   574,   575,
-     584,   585,   586,   597,   598,   600,   604,   609,   610,   613,
-     614,   616,   620,   622
+     584,   592,   600,   603,   604,   606,   610,   615,   616,   619,
+     620,   622,   626,   628
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     106,     0,    -1,   106,   107,   108,    -1,   108,    -1,     1,
-     107,    -1,    97,    -1,    -1,   139,    -1,   146,    -1,   111,
-      -1,    49,   128,    42,    28,    -1,    49,   128,    42,   129,
-      -1,    49,   128,    74,   128,    -1,    49,   128,    75,   128,
-      -1,    51,    28,    90,   128,    -1,    51,    13,    90,   128,
-      -1,    51,    14,   128,    90,   128,    -1,    51,    28,    53,
-     128,    -1,    51,    13,    53,   128,    -1,    51,    14,   128,
-      53,   128,    -1,   128,    -1,   130,    -1,   110,    -1,   112,
-      -1,   119,    98,   118,    99,   125,   124,    32,    -1,   120,
-      90,   128,   124,    53,   128,   124,   125,   124,    32,    -1,
-     120,    90,   128,   124,    34,    53,   128,   124,   125,   124,
-      32,    -1,   126,   110,   124,    -1,   127,   128,   107,   125,
-     124,    32,    -1,   127,   128,    53,   128,    -1,   121,   118,
-      52,   107,   125,   124,    32,    -1,   121,   118,    52,   107,
-     125,   124,    57,   125,   124,    32,    -1,   121,   118,    52,
-     107,   125,   124,   123,   114,   124,    32,    -1,   121,   118,
-      52,   123,   110,   124,    -1,   121,   118,    52,   123,   110,
-     124,    57,   123,   110,   124,    -1,   121,   118,    52,   123,
-     110,   124,   115,   124,   113,   124,    -1,    -1,    57,   123,
-     110,    -1,   114,   117,    -1,   117,    -1,   115,   116,    -1,
-     116,    -1,   122,   118,    52,   123,   111,   124,    -1,   115,
-      -1,   122,   118,    52,   123,   125,   124,    -1,   128,    -1,
-     128,    90,   128,    -1,    98,   118,    99,    -1,    50,    56,
-      -1,    50,    55,    28,    -1,    41,    -1,    36,    -1,    -1,
-      -1,    -1,   125,   107,    -1,   125,   111,    -1,    54,    28,
-      52,    -1,    86,    -1,    12,    -1,    15,    -1,    31,    -1,
-      29,    -1,    23,    -1,    24,   128,    -1,    25,   148,    -1,
-      25,    98,   148,    99,    -1,    28,    98,   147,    99,    -1,
-      28,    -1,    13,    -1,    14,   128,    -1,   109,    -1,   128,
-      92,   128,    -1,   128,    93,   128,    -1,   128,    94,   128,
-      -1,   128,    95,   128,    -1,   128,    73,   128,    -1,   128,
-     100,   128,    -1,   128,   101,   128,    -1,   128,    69,   128,
-      -1,   128,    64,   128,    -1,   128,    65,   128,    -1,   128,
-      70,   128,    -1,   128,    71,   128,    -1,    72,   128,    -1,
-     128,    91,   128,    -1,   128,    76,   128,    -1,   128,    77,
-     128,    -1,   128,    78,   128,    -1,    92,   128,    -1,    93,
-     128,    -1,    98,   128,    99,    -1,   102,   147,   103,    -1,
-      83,   128,    84,   128,    -1,    83,   128,    85,   128,    -1,
-      79,   128,    47,   128,    -1,    79,   128,    53,   128,    47,
-     128,    -1,    80,   128,    47,   128,    -1,    80,   128,    53,
-     128,    47,   128,    -1,    81,   128,    47,   128,    -1,    81,
-     128,    53,   128,    47,   128,    -1,    82,   128,    47,   128,
-      -1,    82,   128,    53,   128,    47,   128,    -1,    27,   128,
-      -1,    49,   128,    -1,   134,    -1,   137,    -1,    37,    50,
-      -1,    37,    -1,    39,   131,    -1,    87,   132,    -1,    63,
-     133,    -1,    17,    -1,    19,   128,    -1,    18,   128,    -1,
-      18,    -1,    20,   148,    -1,    20,    98,   148,    99,    -1,
-      89,    98,    28,    99,    -1,    89,    98,    28,   104,   147,
-      99,    -1,    60,   128,    55,   128,    -1,    60,   128,    -1,
-      21,    28,   147,    -1,    28,    -1,   131,   104,    28,    -1,
-      28,    -1,   132,   104,    28,    -1,    28,    -1,   133,   104,
-      28,    -1,    40,    43,    -1,    40,    46,    -1,    40,    48,
-      -1,    40,   135,    -1,    40,   135,   136,    -1,    40,   136,
-      -1,    38,   128,    -1,   128,    -1,    47,    45,   128,    -1,
-      45,   128,    -1,    61,    62,    -1,    61,   135,    -1,    61,
-     135,   136,    -1,    61,   136,    -1,    -1,    33,   138,   147,
-      -1,    -1,    44,    28,   140,   123,   144,   107,   145,   125,
-      -1,    58,    28,    -1,    -1,    59,    28,   141,   123,   144,
-     107,   145,   125,    -1,    -1,    -1,    88,    28,   142,   123,
-     143,   144,   107,   145,   125,    32,    -1,    -1,    28,    -1,
-     144,   104,    28,    -1,   144,   107,   104,    28,    -1,    -1,
-      28,   148,    -1,    -1,   128,    -1,   147,   104,   128,    -1,
-     128,    -1,   148,   104,   128,    -1
+     107,     0,    -1,   107,   108,   109,    -1,   109,    -1,     1,
+     108,    -1,    98,    -1,    -1,   140,    -1,   146,    -1,   112,
+      -1,    50,   129,    43,    29,    -1,    50,   129,    43,   130,
+      -1,    50,   129,    75,   129,    -1,    50,   129,    76,   129,
+      -1,    52,    29,    91,   129,    -1,    52,    14,    91,   129,
+      -1,    52,    15,   129,    91,   129,    -1,    52,    29,    54,
+     129,    -1,    52,    14,    54,   129,    -1,    52,    15,   129,
+      54,   129,    -1,   129,    -1,   131,    -1,   111,    -1,   113,
+      -1,   120,    99,   119,   100,   126,   125,    33,    -1,   121,
+      91,   129,   125,    54,   129,   125,   126,   125,    33,    -1,
+     121,    91,   129,   125,    35,    54,   129,   125,   126,   125,
+      33,    -1,   127,   111,   125,    -1,   128,   129,   108,   126,
+     125,    33,    -1,   128,   129,    54,   129,    -1,   122,   119,
+      53,   108,   126,   125,    33,    -1,   122,   119,    53,   108,
+     126,   125,    58,   126,   125,    33,    -1,   122,   119,    53,
+     108,   126,   125,   124,   115,   125,    33,    -1,   122,   119,
+      53,   124,   111,   125,    -1,   122,   119,    53,   124,   111,
+     125,    58,   124,   111,   125,    -1,   122,   119,    53,   124,
+     111,   125,   116,   125,   114,   125,    -1,    -1,    58,   124,
+     111,    -1,   115,   118,    -1,   118,    -1,   116,   117,    -1,
+     117,    -1,   123,   119,    53,   124,   112,   125,    -1,   116,
+      -1,   123,   119,    53,   124,   126,   125,    -1,   129,    -1,
+     129,    91,   129,    -1,    99,   119,   100,    -1,    51,    57,
+      -1,    51,    56,    29,    -1,    42,    -1,    37,    -1,    -1,
+      -1,    -1,   126,   108,    -1,   126,   112,    -1,    55,    29,
+      53,    -1,    87,    -1,    13,    -1,    16,    -1,    32,    -1,
+      30,    -1,    24,    -1,    25,   129,    -1,    26,   148,    -1,
+      26,    99,   148,   100,    -1,    29,    99,   147,   100,    -1,
+      29,    -1,    14,    -1,    15,   129,    -1,   110,    -1,   129,
+      93,   129,    -1,   129,    94,   129,    -1,   129,    95,   129,
+      -1,   129,    96,   129,    -1,   129,    74,   129,    -1,   129,
+     101,   129,    -1,   129,   102,   129,    -1,   129,    70,   129,
+      -1,   129,    65,   129,    -1,   129,    66,   129,    -1,   129,
+      71,   129,    -1,   129,    72,   129,    -1,    73,   129,    -1,
+     129,    92,   129,    -1,   129,    77,   129,    -1,   129,    78,
+     129,    -1,   129,    79,   129,    -1,    93,   129,    -1,    94,
+     129,    -1,    99,   129,   100,    -1,   103,   147,   104,    -1,
+      84,   129,    85,   129,    -1,    84,   129,    86,   129,    -1,
+      80,   129,    48,   129,    -1,    80,   129,    54,   129,    48,
+     129,    -1,    81,   129,    48,   129,    -1,    81,   129,    54,
+     129,    48,   129,    -1,    82,   129,    48,   129,    -1,    82,
+     129,    54,   129,    48,   129,    -1,    83,   129,    48,   129,
+      -1,    83,   129,    54,   129,    48,   129,    -1,    28,   129,
+      -1,    50,   129,    -1,   135,    -1,   138,    -1,    38,    51,
+      -1,    38,    -1,    40,   132,    -1,    88,   133,    -1,    64,
+     134,    -1,    18,    -1,    20,   129,    -1,    19,   129,    -1,
+      19,    -1,    21,   148,    -1,    21,    99,   148,   100,    -1,
+      90,    99,    29,   100,    -1,    90,    99,    29,   105,   147,
+     100,    -1,    61,   129,    56,   129,    -1,    61,   129,    -1,
+      22,    29,   147,    -1,    29,    -1,   132,   105,    29,    -1,
+      29,    -1,   133,   105,    29,    -1,    29,    -1,   134,   105,
+      29,    -1,    41,    44,    -1,    41,    47,    -1,    41,    49,
+      -1,    41,   136,    -1,    41,   136,   137,    -1,    41,   137,
+      -1,    39,   129,    -1,   129,    -1,    48,    46,   129,    -1,
+      46,   129,    -1,    62,    63,    -1,    62,   136,    -1,    62,
+     136,   137,    -1,    62,   137,    -1,    -1,    34,   139,   147,
+      -1,    -1,    45,    29,   141,   124,   144,   108,   145,   126,
+      -1,    59,    29,    -1,    -1,    60,    29,   142,   124,   144,
+     108,   145,   126,    -1,   143,   124,   144,   108,   145,   126,
+      33,    -1,   143,   124,   144,   108,   145,   126,     3,    -1,
+      89,    29,    -1,    -1,    29,    -1,   144,   105,    29,    -1,
+     144,   108,   105,    29,    -1,    -1,    29,   148,    -1,    -1,
+     129,    -1,   147,   105,   129,    -1,   129,    -1,   148,   105,
+     129,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   118,   118,   119,   120,   123,   128,   129,   130,   131,
-     134,   140,   143,   144,   145,   151,   159,   167,   173,   181,
-     191,   192,   195,   196,   201,   214,   232,   246,   252,   255,
-     260,   270,   282,   294,   304,   314,   326,   327,   330,   331,
-     334,   335,   338,   346,   347,   355,   356,   357,   360,   363,
-     370,   377,   385,   388,   391,   392,   393,   396,   402,   406,
-     407,   410,   413,   416,   419,   422,   423,   424,   427,   431,
-     438,   444,   445,   446,   447,   448,   449,   450,   451,   452,
-     453,   454,   455,   456,   457,   458,   459,   460,   461,   462,
-     463,   464,   465,   466,   467,   468,   469,   470,   471,   472,
-     473,   474,   475,   478,   483,   484,   485,   486,   487,   488,
-     489,   490,   491,   494,   497,   500,   504,   505,   506,   507,
-     508,   509,   510,   513,   514,   517,   518,   521,   522,   533,
-     534,   535,   536,   539,   542,   547,   548,   551,   552,   555,
-     556,   559,   562,   565,   565,   595,   595,   600,   603,   603,
-     608,   609,   608,   618,   619,   620,   621,   624,   628,   636,
-     637,   638,   641,   642
+       0,   121,   121,   122,   123,   126,   131,   132,   133,   134,
+     137,   143,   146,   147,   148,   154,   162,   170,   176,   184,
+     194,   195,   198,   199,   204,   217,   235,   249,   255,   258,
+     263,   273,   285,   297,   307,   317,   329,   330,   333,   334,
+     337,   338,   341,   349,   350,   358,   359,   360,   363,   366,
+     373,   380,   388,   391,   394,   395,   396,   399,   405,   409,
+     410,   413,   416,   419,   422,   425,   426,   427,   430,   434,
+     441,   447,   448,   449,   450,   451,   452,   453,   454,   455,
+     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
+     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
+     476,   477,   478,   481,   486,   487,   488,   489,   490,   491,
+     492,   493,   494,   497,   500,   503,   507,   508,   509,   510,
+     511,   512,   513,   516,   517,   520,   521,   524,   525,   536,
+     537,   538,   539,   542,   545,   550,   551,   554,   555,   558,
+     559,   562,   565,   568,   568,   598,   598,   603,   606,   606,
+     611,   619,   626,   628,   629,   630,   631,   634,   638,   646,
+     647,   648,   651,   652
 };
 #endif
 
@@ -716,11 +719,11 @@ static const yytype_uint16 yyrline[] =
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "UNARY", "CASTREF", "VOID", "VAR",
-  "POINT", "RECT", "ARRAY", "OBJECT", "REFERENCE", "INT", "THEENTITY",
-  "THEENTITYWITHID", "FLOAT", "BLTIN", "BLTINNOARGS", "BLTINNOARGSORONE",
-  "BLTINONEARG", "BLTINARGLIST", "TWOWORDBUILTIN", "FBLTIN",
-  "FBLTINNOARGS", "FBLTINONEARG", "FBLTINARGLIST", "RBLTIN",
+  "$end", "error", "$undefined", "EOSTREAM", "UNARY", "CASTREF", "VOID",
+  "VAR", "POINT", "RECT", "ARRAY", "OBJECT", "REFERENCE", "INT",
+  "THEENTITY", "THEENTITYWITHID", "FLOAT", "BLTIN", "BLTINNOARGS",
+  "BLTINNOARGSORONE", "BLTINONEARG", "BLTINARGLIST", "TWOWORDBUILTIN",
+  "FBLTIN", "FBLTINNOARGS", "FBLTINONEARG", "FBLTINARGLIST", "RBLTIN",
   "RBLTINONEARG", "ID", "STRING", "HANDLER", "SYMBOL", "ENDCLAUSE",
   "tPLAYACCEL", "tDOWN", "tELSE", "tNLELSIF", "tEXIT", "tFRAME", "tGLOBAL",
   "tGO", "tIF", "tINTO", "tLOOP", "tMACRO", "tMOVIE", "tNEXT", "tOF",
@@ -737,7 +740,7 @@ static const char *const yytname[] =
   "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "tell",
   "expr", "reference", "proc", "globallist", "propertylist",
   "instancelist", "gotofunc", "gotoframe", "gotomovie", "playfunc", "@1",
-  "defn", "@2", "@3", "@4", "@5", "argdef", "argstore", "macro", "arglist",
+  "defn", "@2", "@3", "on", "argdef", "argstore", "macro", "arglist",
   "nonemptyarglist", 0
 };
 #endif
@@ -756,30 +759,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,
-      61,    38,    43,    45,    42,    47,    37,    10,    40,    41,
-      62,    60,    91,    93,    44
+     345,    61,    38,    43,    45,    42,    47,    37,    10,    40,
+      41,    62,    60,    91,    93,    44
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   105,   106,   106,   106,   107,   108,   108,   108,   108,
-     109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
-     110,   110,   111,   111,   111,   111,   111,   111,   111,   111,
-     112,   112,   112,   112,   112,   112,   113,   113,   114,   114,
-     115,   115,   116,   117,   117,   118,   118,   118,   119,   120,
-     121,   122,   123,   124,   125,   125,   125,   126,   127,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   129,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   131,   131,   132,   132,   133,   133,   134,
-     134,   134,   134,   134,   134,   135,   135,   136,   136,   137,
-     137,   137,   137,   138,   137,   140,   139,   139,   141,   139,
-     142,   143,   139,   144,   144,   144,   144,   145,   146,   147,
+       0,   106,   107,   107,   107,   108,   109,   109,   109,   109,
+     110,   110,   110,   110,   110,   110,   110,   110,   110,   110,
+     111,   111,   112,   112,   112,   112,   112,   112,   112,   112,
+     113,   113,   113,   113,   113,   113,   114,   114,   115,   115,
+     116,   116,   117,   118,   118,   119,   119,   119,   120,   121,
+     122,   123,   124,   125,   126,   126,   126,   127,   128,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   130,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   132,   132,   133,   133,   134,   134,   135,
+     135,   135,   135,   135,   135,   136,   136,   137,   137,   138,
+     138,   138,   138,   139,   138,   141,   140,   140,   142,   140,
+     140,   140,   143,   144,   144,   144,   144,   145,   146,   147,
      147,   147,   148,   148
 };
 
@@ -801,7 +804,7 @@ static const yytype_uint8 yyr2[] =
        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,     8,
-       0,     0,    10,     0,     1,     3,     4,     0,     2,     0,
+       7,     7,     2,     0,     1,     3,     4,     0,     2,     0,
        1,     3,     1,     3
 };
 
@@ -816,99 +819,99 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,    58,     0,
        0,     0,     0,     0,     0,   159,     0,     3,    71,    22,
        9,    23,     0,     0,     0,     0,     0,    20,    21,   105,
-     106,     7,     8,     5,     4,    68,     0,    70,   114,   113,
-       0,   162,   116,   159,    64,     0,    65,   159,   158,   159,
-     107,   123,   109,     0,   129,     0,   130,     0,   131,   136,
-     132,   134,   145,   104,     0,    48,     0,     0,     0,     0,
-     147,   148,   121,   139,   140,   142,   127,   111,    84,     0,
-       0,     0,     0,     0,   125,   110,   150,     0,    89,    90,
-       0,   160,     0,     1,     6,     0,     0,     0,     0,    45,
-      53,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   159,     0,
-     162,     0,     0,   122,     0,   160,     0,   144,     0,   135,
-     138,     0,   133,    52,     0,     0,     0,    49,     0,     0,
-       0,     0,     0,    57,    52,     0,   141,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    52,
-       0,    91,    92,     0,     2,     0,    53,     0,     0,    52,
-       0,    27,     0,    54,    80,    81,    79,    82,    83,    76,
-      86,    87,    88,    85,    72,    73,    74,    75,    77,    78,
-     117,   163,    66,    67,   124,   137,   153,     0,    10,    11,
-      12,    13,    18,    15,     0,     0,    17,    14,   153,   120,
-     128,    95,     0,    97,     0,    99,     0,   101,     0,    93,
-      94,   126,   151,   118,   159,   161,    54,     0,    47,    54,
-       0,    46,    29,    53,   154,     0,   103,    19,    16,     0,
-       0,     0,     0,     0,   153,     0,    53,     0,     0,    53,
-      53,    55,    56,     0,     0,   157,   157,    96,    98,   100,
-     102,     0,   119,     0,     0,    53,    52,    33,    28,   155,
-       0,    54,    54,   157,    24,    53,    54,    30,    54,     0,
-      51,    52,    53,    41,     0,   156,   146,   149,    54,    54,
-      53,    53,    53,    43,    39,     0,     0,    40,    36,     0,
-       0,    53,     0,     0,    38,     0,     0,    53,    52,    53,
-      52,   152,     0,    25,    31,    32,    52,    34,     0,    35,
+     106,     7,    52,     8,     5,     4,    68,     0,    70,   114,
+     113,     0,   162,   116,   159,    64,     0,    65,   159,   158,
+     159,   107,   123,   109,     0,   129,     0,   130,     0,   131,
+     136,   132,   134,   145,   104,     0,    48,     0,     0,     0,
+       0,   147,   148,   121,   139,   140,   142,   127,   111,    84,
+       0,     0,     0,     0,     0,   125,   110,   152,     0,    89,
+      90,     0,   160,     0,     1,     6,     0,     0,     0,     0,
+      45,    53,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   153,
+     159,     0,   162,     0,     0,   122,     0,   160,     0,   144,
+       0,   135,   138,     0,   133,    52,     0,     0,     0,    49,
+       0,     0,     0,     0,     0,    57,    52,     0,   141,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    91,    92,     0,     2,     0,    53,     0,     0,
+      52,     0,    27,     0,    54,    80,    81,    79,    82,    83,
+      76,    86,    87,    88,    85,    72,    73,    74,    75,    77,
+      78,   154,     0,   117,   163,    66,    67,   124,   137,   153,
+       0,    10,    11,    12,    13,    18,    15,     0,     0,    17,
+      14,   153,   120,   128,    95,     0,    97,     0,    99,     0,
+     101,     0,    93,    94,   126,   118,   159,   161,    54,     0,
+      47,    54,     0,    46,    29,    53,     0,   157,     0,   103,
+      19,    16,     0,     0,     0,     0,     0,     0,    53,     0,
+       0,    53,    53,    55,    56,     0,   155,     0,    54,   157,
+     157,    96,    98,   100,   102,   119,     0,     0,    53,    52,
+      33,    28,   156,     0,    54,    54,    24,    53,    54,    30,
+      54,     0,    51,    52,    53,    41,     0,   151,   150,   146,
+     149,    54,    53,    53,    53,    43,    39,     0,     0,    40,
+      36,     0,    53,     0,     0,    38,     0,     0,    53,    52,
+      53,    52,     0,    25,    31,    32,    52,    34,     0,    35,
        0,    26,    54,    37,    53,    53,    42,    44
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    46,   281,    47,    48,    49,   282,    51,   339,   322,
-     323,   313,   324,   128,    52,    53,    54,   314,   226,   201,
-     263,    55,    56,    57,   229,    58,    82,   115,   107,    59,
-      90,    91,    60,    79,    61,   163,   174,   189,   274,   265,
-     301,    62,   156,    72
+      -1,    46,   283,    47,    48,    49,   284,    51,   340,   324,
+     325,   315,   326,   129,    52,    53,    54,   316,   149,   202,
+     265,    55,    56,    57,   232,    58,    83,   116,   108,    59,
+      91,    92,    60,    80,    61,   165,   176,    62,   222,   288,
+      63,   158,    73
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -271
+#define YYPACT_NINF -258
 static const yytype_int16 yypact[] =
 {
-     341,   -56,  -271,  -271,   990,  -271,  -271,   990,   990,  1062,
-      23,  -271,   990,  1102,  1174,  -271,  -271,  -271,     3,    36,
-     878,  -271,    42,   990,    46,    81,    44,    51,    53,   990,
-     950,    61,   990,   990,   990,   990,   990,   990,  -271,    65,
-      69,     7,   990,   990,   990,   990,     2,  -271,  -271,  -271,
-    -271,  -271,    13,    33,  1214,   796,   990,  1778,  -271,  -271,
-    -271,  -271,  -271,  -271,  -271,    20,   990,  1778,  1778,  1778,
-     990,  1778,    25,   990,  1778,   990,    25,   990,    25,   990,
-    -271,  -271,    47,   990,  -271,   990,  -271,   107,  -271,  1778,
-     -18,  -271,  -271,  1249,   127,  -271,   -36,   990,   -30,   104,
-    -271,  -271,  1613,  -271,   -18,  -271,  -271,    54,   -75,  1282,
-    1315,  1348,  1381,  1646,  -271,    55,  -271,   129,   -75,   -75,
-    1712,  1778,    28,  -271,   432,  1214,   990,  1214,   108,  1745,
-    -271,  1546,   990,   990,   990,   990,   990,   990,   990,   990,
-     990,   990,   990,   990,   990,   990,   990,   990,   990,  1249,
-    1712,   -12,   990,    57,    -8,  1712,    15,    57,   135,  1778,
-    1778,   990,  -271,  -271,    88,   990,   990,  -271,   990,   990,
-    1580,   990,   990,  -271,  -271,   990,  -271,   136,   990,   990,
-     990,   990,   990,   990,   990,   990,   990,   990,   137,  -271,
-      18,  -271,  -271,   990,  -271,    72,  1778,    75,  1679,   -56,
-     990,  -271,   990,  -271,   238,   238,   238,   -75,   -75,   -75,
-    1778,   238,   238,   770,    12,    12,   -75,   -75,  1778,  1778,
-    -271,  1778,  -271,  -271,  -271,  1778,   140,   990,  -271,  -271,
-    1778,  1778,  1778,  1778,   990,   990,  1778,  1778,   140,  1778,
-    -271,  1778,  1414,  1778,  1447,  1778,  1480,  1778,  1513,  1778,
-    1778,  -271,  -271,  -271,   990,  1778,  -271,    -6,  -271,  -271,
-     796,  1778,  1778,   614,  -271,   -35,  1778,  1778,  1778,   -35,
-     990,   990,   990,   990,   140,    26,   614,   122,   990,   614,
-    -271,  -271,  -271,   146,   161,    86,    86,  1778,  1778,  1778,
-    1778,   -35,  -271,   159,   990,  1778,   -25,   -17,  -271,  -271,
-     164,  -271,  -271,    86,  -271,  1778,  -271,  -271,  -271,   157,
-    -271,  -271,   157,  -271,  1214,  -271,   614,   614,  -271,  -271,
-     614,   614,   157,   157,  -271,  1214,   796,  -271,   138,   144,
-     523,   614,   166,   167,  -271,   168,   150,  -271,  -271,  -271,
-    -271,  -271,   172,  -271,  -271,  -271,  -271,  -271,   796,  -271,
-     705,  -271,   705,  -271,  -271,   614,  -271,  -271
+     340,   -78,  -258,  -258,   990,  -258,  -258,   990,   990,  1062,
+      -1,  -258,   990,  1102,  1174,  -258,  -258,  -258,   -11,    36,
+     878,  -258,    54,   990,    46,    37,    61,    65,    67,   990,
+     950,    71,   990,   990,   990,   990,   990,   990,  -258,    80,
+      86,   -77,   990,   990,   990,   990,     3,  -258,  -258,  -258,
+    -258,  -258,    17,    26,  1214,   796,   990,  1778,  -258,  -258,
+    -258,  -258,  -258,  -258,  -258,  -258,    19,   990,  1778,  1778,
+    1778,   990,  1778,    14,   990,  1778,   990,    14,   990,    14,
+     990,  -258,  -258,    15,   990,  -258,   990,  -258,    76,  -258,
+    1778,    34,  -258,  -258,  1249,    94,  -258,   -43,   990,   -38,
+      73,  -258,  -258,  1613,  -258,    34,  -258,  -258,    25,   -52,
+    1282,  1315,  1348,  1381,  1646,  -258,    27,  -258,    95,   -52,
+     -52,  1712,  1778,     2,  -258,   523,  1214,   990,  1214,    78,
+    1745,  -258,  1546,   990,   990,   990,   990,   990,   990,   990,
+     990,   990,   990,   990,   990,   990,   990,   990,   990,   104,
+     990,  1249,  1712,   -31,   990,    48,   -27,  1712,   -14,    48,
+     125,  1778,  1778,   990,  -258,  -258,    83,   990,   990,  -258,
+     990,   990,  1580,   990,   990,  -258,  -258,   990,  -258,   127,
+     990,   990,   990,   990,   990,   990,   990,   990,   990,   990,
+     128,    -8,  -258,  -258,   990,  -258,    58,  1778,    59,  1679,
+     -78,   990,  -258,   990,  -258,   158,   158,   158,   -52,   -52,
+     -52,  1778,   158,   158,   236,   770,   770,   -52,   -52,  1778,
+    1778,  -258,   -42,  -258,  1778,  -258,  -258,  -258,  1778,   104,
+     990,  -258,  -258,  1778,  1778,  1778,  1778,   990,   990,  1778,
+    1778,   104,  1778,  -258,  1778,  1414,  1778,  1447,  1778,  1480,
+    1778,  1513,  1778,  1778,  -258,  -258,   990,  1778,  -258,   -12,
+    -258,  -258,   796,  1778,  1778,   614,   131,    56,   -42,  1778,
+    1778,  1778,   -42,   990,   990,   990,   990,    -7,   614,   108,
+     990,   614,  -258,  -258,  -258,   130,  -258,   136,  -258,    56,
+      56,  1778,  1778,  1778,  1778,  -258,   133,   990,  1778,   -26,
+     -19,  -258,  -258,   432,  -258,  -258,  -258,  1778,  -258,  -258,
+    -258,   139,  -258,  -258,   139,  -258,  1214,  -258,  -258,   614,
+     614,  -258,   614,   614,   139,   139,  -258,  1214,   796,  -258,
+     109,   117,   614,   140,   146,  -258,   147,   138,  -258,  -258,
+    -258,  -258,   160,  -258,  -258,  -258,  -258,  -258,   796,  -258,
+     705,  -258,   705,  -258,  -258,   614,  -258,  -258
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -271,  -271,    19,    82,  -271,   -51,     0,  -271,  -271,  -271,
-     -90,  -264,  -114,  -109,  -271,  -271,  -271,  -270,   -99,   -19,
-    -198,  -271,  -271,     1,  -271,  -271,  -271,  -271,  -271,  -271,
-     180,   -27,  -271,  -271,  -271,  -271,  -271,  -271,  -271,  -232,
-    -237,  -271,   -23,    -2
+    -258,  -258,    18,    72,  -258,   -49,     0,  -258,  -258,  -258,
+    -104,  -255,  -126,  -124,  -258,  -258,  -258,  -257,  -105,   -20,
+    -200,  -258,  -258,     1,  -258,  -258,  -258,  -258,  -258,  -258,
+     169,   -29,  -258,  -258,  -258,  -258,  -258,  -258,  -212,  -176,
+    -258,   -33,    13
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -918,41 +921,41 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -7
 static const yytype_int16 yytable[] =
 {
-      50,   138,   123,   105,   130,    67,   269,   307,    68,    69,
-      71,    76,    78,    74,    71,    71,   195,   168,   197,   310,
-      64,    89,   122,   171,    93,   146,   147,    85,   277,    87,
-     102,    89,   308,   108,   109,   110,   111,   112,   113,   325,
-     311,    63,   291,   118,   119,   120,   121,   278,   327,   302,
-     153,    73,   325,    80,   169,   129,   157,   131,   276,   327,
-     172,   279,    63,   162,    81,   124,   318,   149,   151,   284,
-      92,   150,    99,   154,   121,   238,   150,   176,   155,   100,
-     121,   101,   135,   136,   159,   137,   160,   220,   138,   106,
-     252,   222,   152,   114,    96,    97,   152,   116,   170,    63,
-     260,    94,    95,   316,   317,   117,   144,   145,   320,    98,
-     321,   125,   146,   147,   223,   227,   228,   253,   148,   193,
-     330,   331,   254,   126,    50,   292,   129,   196,   198,   152,
-     193,   192,   193,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   121,
-     203,   158,   161,   221,   355,   167,   173,   190,   177,   188,
-     199,   193,   225,   224,   240,   251,   230,   231,   264,   232,
-     233,   256,   236,   237,   258,   294,   239,   257,   298,   241,
-     242,   243,   244,   245,   246,   247,   248,   249,   250,   299,
-     300,   304,   315,   310,   255,   338,   340,   309,   343,   344,
-     345,   261,   346,   262,   351,   329,   194,   312,   334,   280,
-     104,     0,   326,     0,     0,     0,   336,     0,   259,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   266,     0,
-       0,   275,     0,     0,     0,   267,   268,     0,     0,   348,
-       0,   350,     0,     0,   283,     0,     0,   352,     0,     0,
-       0,     0,     0,     0,     0,   121,     0,   293,     0,     0,
-     296,   297,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   287,   288,   289,   290,   337,   306,     0,     0,   295,
-       0,     0,     0,     0,   285,     0,   319,     0,   286,     0,
-       0,     0,     0,   328,     0,   305,     0,   353,     0,     0,
-       0,   332,   333,   335,     0,     0,     0,     0,   135,   136,
-     303,   137,   342,     0,   138,   129,     0,     0,   347,     0,
-     349,     0,     0,     0,     0,     0,   129,     0,     0,   141,
-     142,   143,   144,   145,     0,   356,   357,     0,   146,   147,
-       0,    -6,     1,     0,     0,     0,     0,     0,     0,     0,
+      50,   106,   196,   124,   198,    68,   131,   309,    69,    70,
+      72,   170,   123,    75,    72,    72,   173,   268,   312,    65,
+      64,    90,   118,   279,    94,   139,    77,    79,    74,   272,
+     103,    90,   310,   109,   110,   111,   112,   113,   114,   313,
+      81,   155,   280,   119,   120,   121,   122,   159,   171,   147,
+     148,    97,    98,   174,   327,   130,    64,   132,   278,   329,
+     229,   281,   164,   266,   125,    82,    99,   327,   151,   223,
+     329,   241,   152,   225,   154,   122,   178,   152,   154,   157,
+      86,   122,    88,    93,   153,   161,   226,   162,   303,   156,
+     100,   194,   255,   295,   101,   262,   102,   256,   194,   172,
+     107,    64,    95,    96,   319,   320,   193,   194,   322,   115,
+     323,   230,   231,   304,   305,   117,   126,   127,   150,   154,
+     160,   332,   163,   169,   191,    50,   175,   130,   197,   199,
+     179,   200,   190,   221,   205,   206,   207,   208,   209,   210,
+     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
+     204,   122,   355,   194,   227,   224,   243,   254,   258,   260,
+     286,   287,   297,   301,   228,   302,   306,   339,   233,   234,
+     341,   235,   236,   343,   239,   240,   312,   259,   242,   344,
+     345,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   346,   331,   351,   311,   257,   314,   195,   335,   105,
+       0,     0,   263,   337,   264,     0,     0,     0,   328,     0,
+       0,     0,     0,   282,     0,     0,     0,     0,   261,     0,
+       0,     0,     0,   277,     0,     0,     0,     0,     0,   136,
+     137,   269,   138,     0,   348,   139,   350,     0,   270,   271,
+     267,   352,     0,     0,     0,   285,     0,     0,     0,     0,
+     142,   143,   144,   145,   146,     0,     0,   122,   296,   147,
+     148,   299,   300,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   291,   292,   293,   294,   308,   338,
+       0,   298,     0,     0,     0,     0,   289,   321,     0,     0,
+     290,     0,     0,     0,   330,     0,     0,     0,   307,   353,
+       0,     0,   333,   334,   336,     0,     0,   136,   137,     0,
+     138,     0,   342,   139,     0,     0,     0,   130,   347,     0,
+     349,     0,     0,     0,     0,     0,     0,     0,   130,   143,
+     144,   145,   146,     0,   356,   357,     0,   147,   148,     0,
+      -6,     1,     0,     0,     0,     0,     0,     0,     0,     0,
      354,     0,   354,     2,     3,     4,     5,     0,     6,     7,
        8,     9,    10,     0,    11,    12,    13,     0,     0,    14,
       15,     0,    16,     0,    17,     0,     0,     0,    18,     0,
@@ -961,385 +964,387 @@ static const yytype_int16 yytable[] =
       28,    29,    30,     0,    31,     0,     0,     0,     0,     0,
        0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
       33,    34,    35,    36,    37,     0,     0,    38,    39,    40,
-      41,     0,     0,    42,    43,     0,     0,     0,    -6,    44,
-       0,     0,     0,    45,     2,     3,     4,     5,     0,     6,
-       7,     8,     9,    10,     0,    11,    12,    13,     0,     0,
-      14,    15,     0,    16,     0,    17,     0,     0,     0,    18,
-       0,    19,    20,    21,     0,     0,    22,     0,     0,     0,
-       0,    23,    24,    25,     0,     0,    26,     0,     0,     0,
-      27,    28,    29,    30,     0,    31,     0,     0,     0,     0,
-       0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
-      40,    41,     0,     0,    42,    43,     0,     0,     0,     0,
-      44,     0,     0,     0,    45,     2,     3,     4,     5,     0,
+      41,     0,     0,    42,    43,   317,     0,     0,    -6,    44,
+       0,     0,     0,    45,     0,     2,     3,     4,     5,     0,
        6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
-       0,    65,    15,     0,    16,   341,    17,     0,     0,     0,
+       0,    66,    15,     0,    16,   318,    17,     0,     0,     0,
       18,     0,    19,    20,    21,     0,     0,     0,     0,     0,
        0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
        0,     0,     0,    29,    30,     0,    31,     0,     0,     0,
        0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
        0,     0,    33,    34,    35,    36,    37,     0,     0,    38,
       39,     0,    41,     0,     0,    42,    43,     0,     0,     0,
-      63,    44,     0,     0,     0,    45,     2,     3,     4,     5,
+      64,    44,     0,     0,     0,    45,     2,     3,     4,     5,
        0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,     0,    65,    15,     0,    16,     0,    17,     0,     0,
-       0,    18,     0,    19,    20,    21,     0,     0,     0,     0,
+       0,     0,    14,    15,     0,    16,     0,    17,     0,     0,
+       0,    18,     0,    19,    20,    21,     0,     0,    22,     0,
        0,     0,     0,    23,    24,    25,     0,     0,    26,     0,
-       0,     0,     0,     0,    29,    30,     0,    31,     0,     0,
+       0,     0,    27,    28,    29,    30,     0,    31,     0,     0,
        0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
        0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-      38,    39,     0,    41,     0,     0,    42,    43,     0,     0,
-       0,    63,    44,     0,     0,     0,    45,     2,     3,     4,
+      38,    39,    40,    41,     0,     0,    42,    43,     0,     0,
+       0,     0,    44,     0,     0,     0,    45,     2,     3,     4,
        5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,     0,     0,    65,    15,     0,    16,     0,    17,     0,
+      13,     0,     0,    66,    15,     0,    16,     0,    17,     0,
        0,     0,    18,     0,    19,    20,    21,     0,     0,     0,
        0,     0,     0,     0,    23,    24,    25,     0,     0,    26,
        0,     0,     0,     0,     0,    29,    30,     0,    31,     0,
        0,     0,     0,     0,     0,     0,     0,    32,     0,     0,
        0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
        0,    38,    39,     0,    41,     0,     0,    42,    43,     0,
-       0,     0,     0,    44,     0,     0,     0,    45,     2,     3,
+       0,     0,    64,    44,     0,     0,     0,    45,     2,     3,
        4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,     0,    65,    15,     0,    16,     0,    17,
-       0,     0,     0,    18,     0,    19,    20,     0,     0,     0,
-     135,   136,     0,   137,     0,    23,   138,    25,     0,     0,
-       0,     0,     0,     0,     0,     0,    29,    30,     0,    31,
-       0,     0,   142,   143,   144,   145,     0,     0,    32,     0,
-     146,   147,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,     0,    39,     0,    41,     0,     0,    42,    43,
-       2,     3,     4,     5,    44,     0,     0,     0,    45,     0,
-       0,    11,    12,    13,     0,     0,    65,    15,     0,    16,
-       0,     0,     0,     0,     0,     0,    83,     0,     0,     0,
-       0,    84,     0,    85,    86,    87,    88,    66,     0,    25,
+      12,    13,     0,     0,    66,    15,     0,    16,     0,    17,
+       0,     0,     0,    18,     0,    19,    20,    21,     0,     0,
+       0,     0,     0,     0,     0,    23,    24,    25,     0,     0,
+      26,     0,     0,     0,     0,     0,    29,    30,     0,    31,
+       0,     0,     0,     0,     0,     0,     0,     0,    32,     0,
+       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
+       0,     0,    38,    39,     0,    41,     0,     0,    42,    43,
+       0,     0,     0,     0,    44,     0,     0,     0,    45,     2,
+       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
+      11,    12,    13,     0,     0,    66,    15,     0,    16,     0,
+      17,     0,     0,     0,    18,     0,    19,    20,     0,     0,
+       0,   136,   137,     0,   138,     0,    23,   139,    25,     0,
+       0,     0,     0,     0,     0,     0,     0,    29,    30,     0,
+      31,     0,     0,     0,     0,   145,   146,     0,     0,    32,
+       0,   147,   148,     0,     0,     0,    33,    34,    35,    36,
+      37,     0,     0,     0,    39,     0,    41,     0,     0,    42,
+      43,     2,     3,     4,     5,    44,     0,     0,     0,    45,
+       0,     0,    11,    12,    13,     0,     0,    66,    15,     0,
+      16,     0,     0,     0,     0,     0,     0,    84,     0,     0,
+       0,     0,    85,     0,    86,    87,    88,    89,    67,     0,
+      25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     2,     3,     4,     5,     0,     0,     0,
+       0,    42,    43,     0,    11,    12,    13,    44,     0,    66,
+      15,    45,    16,     0,     0,     0,     0,     0,     0,    84,
+       0,     0,     0,     0,     0,     0,    86,     0,    88,     0,
+      67,     0,    25,     2,     3,     4,     5,     0,     0,     0,
+       0,     0,     0,   104,    11,    12,    13,     0,     0,    66,
+      15,     0,    16,    32,     0,     0,     0,     0,     0,     0,
+      33,    34,    35,    36,    37,     0,     0,     0,     0,     0,
+      67,     0,    25,    42,    43,     0,     0,     0,     0,    44,
+       0,     0,     0,    45,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
+      33,    34,    35,    36,    37,     2,     3,     4,     5,     0,
+       0,     0,     0,    42,    43,     0,    11,    12,    13,    44,
+       0,    66,    15,    45,    16,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      32,     0,     0,     0,     0,     0,     0,    33,    34,    35,
-      36,    37,     2,     3,     4,     5,     0,     0,     0,     0,
-      42,    43,     0,    11,    12,    13,    44,     0,    65,    15,
-      45,    16,     0,     0,     0,     0,     0,     0,    83,     0,
-       0,     0,     0,     0,     0,    85,     0,    87,     0,    66,
-       0,    25,     2,     3,     4,     5,     0,     0,     0,     0,
-       0,     0,   103,    11,    12,    13,     0,     0,    65,    15,
-       0,    16,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,     0,     0,     0,     0,     0,    66,
-       0,    25,    42,    43,     0,     0,     0,     0,    44,     0,
-       0,     0,    45,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
-      34,    35,    36,    37,     2,     3,     4,     5,     0,     0,
-       0,     0,    42,    43,     0,    11,    12,    13,    44,     0,
-      65,    15,    45,    16,     0,     0,     0,     0,     0,     0,
+       0,     0,    67,     0,    25,     2,     3,     4,     5,     0,
+       0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
+       0,    66,    15,     0,    16,    32,     0,     0,     0,     0,
+       0,     0,    33,    34,    35,    36,    37,     0,     0,     0,
+       0,     0,    67,     0,    25,    42,    43,     0,     0,     0,
+       0,    71,     0,     0,     0,    45,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+       0,     0,    33,    34,    35,    36,    37,     2,     3,     4,
+       5,     0,     0,     0,     0,    42,    43,     0,    11,    12,
+      13,    76,     0,    66,    15,    45,    16,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    67,     0,    25,     2,     3,     4,
+       5,     0,     0,     0,     0,     0,     0,     0,    11,    12,
+      13,     0,     0,    66,    15,     0,    16,    32,     0,     0,
+       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,     0,     0,     0,    67,     0,    25,    42,    43,     0,
+       0,     0,     0,    78,     0,     0,     0,    45,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    32,     0,     0,
+       0,     0,   166,     0,    33,    34,    35,    36,    37,     0,
+       0,     0,     0,     0,     0,     0,     0,    42,    43,     0,
+       0,     0,     0,   128,   133,   134,     0,    45,     0,   135,
+     136,   137,     0,   138,   167,   168,   139,   140,   141,     0,
+     180,     0,     0,     0,     0,     0,   181,     0,     0,     0,
+       0,   142,   143,   144,   145,   146,     0,   133,   134,     0,
+     147,   148,   135,   136,   137,     0,   138,     0,     0,   139,
+     140,   141,     0,   182,     0,     0,     0,     0,     0,   183,
+       0,     0,     0,     0,   142,   143,   144,   145,   146,     0,
+     133,   134,     0,   147,   148,   135,   136,   137,     0,   138,
+       0,     0,   139,   140,   141,     0,   184,     0,     0,     0,
+       0,     0,   185,     0,     0,     0,     0,   142,   143,   144,
+     145,   146,     0,   133,   134,     0,   147,   148,   135,   136,
+     137,     0,   138,     0,     0,   139,   140,   141,     0,   186,
+       0,     0,     0,     0,     0,   187,     0,     0,     0,     0,
+     142,   143,   144,   145,   146,     0,   133,   134,     0,   147,
+     148,   135,   136,   137,     0,   138,     0,     0,   139,   140,
+     141,     0,   273,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   142,   143,   144,   145,   146,     0,   133,
+     134,     0,   147,   148,   135,   136,   137,     0,   138,     0,
+       0,   139,   140,   141,     0,   274,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   142,   143,   144,   145,
+     146,     0,   133,   134,     0,   147,   148,   135,   136,   137,
+       0,   138,     0,     0,   139,   140,   141,     0,   275,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   142,
+     143,   144,   145,   146,     0,   133,   134,     0,   147,   148,
+     135,   136,   137,     0,   138,     0,     0,   139,   140,   141,
+       0,   276,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   142,   143,   144,   145,   146,     0,   133,   134,
+       0,   147,   148,   135,   136,   137,     0,   138,     0,     0,
+     139,   140,   141,     0,     0,     0,     0,     0,     0,     0,
+     203,     0,     0,     0,     0,   142,   143,   144,   145,   146,
+       0,   133,   134,     0,   147,   148,   135,   136,   137,     0,
+     138,     0,     0,   139,   140,   141,     0,     0,     0,     0,
+       0,     0,     0,     0,   237,     0,     0,     0,   142,   143,
+     144,   145,   146,     0,    64,   133,   134,   147,   148,     0,
+     135,   136,   137,     0,   138,     0,     0,   139,   140,   141,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   177,
+       0,   238,   142,   143,   144,   145,   146,     0,   133,   134,
+       0,   147,   148,   135,   136,   137,     0,   138,     0,     0,
+     139,   140,   141,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   142,   143,   144,   145,   146,
+       0,   133,   134,     0,   147,   148,   135,   136,   137,     0,
+     138,     0,     0,   139,   140,   141,     0,     0,     0,     0,
+       0,   188,   189,     0,     0,     0,     0,     0,   142,   143,
+     144,   145,   146,     0,   133,   134,     0,   147,   148,   135,
+     136,   137,     0,   138,     0,     0,   139,   140,   141,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    66,     0,    25,     2,     3,     4,     5,     0,     0,
-       0,     0,     0,     0,     0,    11,    12,    13,     0,     0,
-      65,    15,     0,    16,    32,     0,     0,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,     0,     0,     0,     0,
-       0,    66,     0,    25,    42,    43,     0,     0,     0,     0,
-      70,     0,     0,     0,    45,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-       0,    33,    34,    35,    36,    37,     2,     3,     4,     5,
-       0,     0,     0,     0,    42,    43,     0,    11,    12,    13,
-      75,     0,    65,    15,    45,    16,     0,     0,     0,     0,
+     201,   142,   143,   144,   145,   146,     0,   133,   134,   192,
+     147,   148,   135,   136,   137,     0,   138,     0,     0,   139,
+     140,   141,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   142,   143,   144,   145,   146,     0,
+     133,   134,   192,   147,   148,   135,   136,   137,     0,   138,
+       0,     0,   139,   140,   141,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   201,   142,   143,   144,
+     145,   146,     0,   133,   134,     0,   147,   148,   135,   136,
+     137,     0,   138,     0,     0,   139,   140,   141,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    66,     0,    25,     2,     3,     4,     5,
-       0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
-       0,     0,    65,    15,     0,    16,    32,     0,     0,     0,
-       0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-       0,     0,     0,    66,     0,    25,    42,    43,     0,     0,
-       0,     0,    77,     0,     0,     0,    45,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
-       0,   164,     0,    33,    34,    35,    36,    37,     0,     0,
-       0,     0,     0,     0,     0,     0,    42,    43,     0,     0,
-       0,     0,   127,   132,   133,     0,    45,     0,   134,   135,
-     136,     0,   137,   165,   166,   138,   139,   140,     0,   178,
-       0,     0,     0,     0,     0,   179,     0,     0,     0,     0,
-     141,   142,   143,   144,   145,     0,   132,   133,     0,   146,
-     147,   134,   135,   136,     0,   137,     0,     0,   138,   139,
-     140,     0,   180,     0,     0,     0,     0,     0,   181,     0,
-       0,     0,     0,   141,   142,   143,   144,   145,     0,   132,
-     133,     0,   146,   147,   134,   135,   136,     0,   137,     0,
-       0,   138,   139,   140,     0,   182,     0,     0,     0,     0,
-       0,   183,     0,     0,     0,     0,   141,   142,   143,   144,
-     145,     0,   132,   133,     0,   146,   147,   134,   135,   136,
-       0,   137,     0,     0,   138,   139,   140,     0,   184,     0,
-       0,     0,     0,     0,   185,     0,     0,     0,     0,   141,
-     142,   143,   144,   145,     0,   132,   133,     0,   146,   147,
-     134,   135,   136,     0,   137,     0,     0,   138,   139,   140,
-       0,   270,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   141,   142,   143,   144,   145,     0,   132,   133,
-       0,   146,   147,   134,   135,   136,     0,   137,     0,     0,
-     138,   139,   140,     0,   271,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   141,   142,   143,   144,   145,
-       0,   132,   133,     0,   146,   147,   134,   135,   136,     0,
-     137,     0,     0,   138,   139,   140,     0,   272,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   141,   142,
-     143,   144,   145,     0,   132,   133,     0,   146,   147,   134,
-     135,   136,     0,   137,     0,     0,   138,   139,   140,     0,
-     273,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   141,   142,   143,   144,   145,     0,   132,   133,     0,
-     146,   147,   134,   135,   136,     0,   137,     0,     0,   138,
-     139,   140,     0,     0,     0,     0,     0,     0,     0,   202,
-       0,     0,     0,     0,   141,   142,   143,   144,   145,     0,
-     132,   133,     0,   146,   147,   134,   135,   136,     0,   137,
-       0,     0,   138,   139,   140,     0,     0,     0,     0,     0,
-       0,     0,     0,   234,     0,     0,     0,   141,   142,   143,
-     144,   145,     0,    63,   132,   133,   146,   147,     0,   134,
-     135,   136,     0,   137,     0,     0,   138,   139,   140,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   175,     0,
-     235,   141,   142,   143,   144,   145,     0,   132,   133,     0,
-     146,   147,   134,   135,   136,     0,   137,     0,     0,   138,
-     139,   140,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   141,   142,   143,   144,   145,     0,
-     132,   133,     0,   146,   147,   134,   135,   136,     0,   137,
-       0,     0,   138,   139,   140,     0,     0,     0,     0,     0,
-     186,   187,     0,     0,     0,     0,     0,   141,   142,   143,
-     144,   145,     0,   132,   133,     0,   146,   147,   134,   135,
-     136,     0,   137,     0,     0,   138,   139,   140,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   200,
-     141,   142,   143,   144,   145,     0,   132,   133,   191,   146,
-     147,   134,   135,   136,     0,   137,     0,     0,   138,   139,
-     140,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   141,   142,   143,   144,   145,     0,   132,
-     133,   191,   146,   147,   134,   135,   136,     0,   137,     0,
-       0,   138,   139,   140,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   200,   141,   142,   143,   144,
-     145,     0,   132,   133,     0,   146,   147,   134,   135,   136,
-       0,   137,     0,     0,   138,   139,   140,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   141,
-     142,   143,   144,   145,     0,     0,     0,     0,   146,   147
+     142,   143,   144,   145,   146,     0,     0,     0,     0,   147,
+     148
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    76,     0,    30,    55,     4,   238,    32,     7,     8,
-       9,    13,    14,    12,    13,    14,   125,    53,   127,    36,
-       1,    20,    45,    53,    23,   100,   101,    45,    34,    47,
-      29,    30,    57,    32,    33,    34,    35,    36,    37,   309,
-      57,    97,   274,    42,    43,    44,    45,    53,   312,   286,
-      73,    28,   322,    50,    90,    54,    79,    56,   256,   323,
-      90,   259,    97,    90,    28,    46,   303,    66,    70,   104,
-      28,    70,    28,    75,    73,   174,    75,   104,    77,    28,
-      79,    28,    70,    71,    83,    73,    85,    99,    76,    28,
-     189,    99,   104,    28,    13,    14,   104,    28,    97,    97,
-     199,    55,    56,   301,   302,    98,    94,    95,   306,    28,
-     308,    98,   100,   101,    99,    27,    28,    99,    98,   104,
-     318,   319,   104,    90,   124,    99,   125,   126,   127,   104,
-     104,   103,   104,   132,   133,   134,   135,   136,   137,   138,
+       0,    30,   126,     0,   128,     4,    55,    33,     7,     8,
+       9,    54,    45,    12,    13,    14,    54,   229,    37,     1,
+      98,    20,    99,    35,    23,    77,    13,    14,    29,   241,
+      29,    30,    58,    32,    33,    34,    35,    36,    37,    58,
+      51,    74,    54,    42,    43,    44,    45,    80,    91,   101,
+     102,    14,    15,    91,   311,    54,    98,    56,   258,   314,
+     165,   261,    91,   105,    46,    29,    29,   324,    67,   100,
+     325,   176,    71,   100,   105,    74,   105,    76,   105,    78,
+      46,    80,    48,    29,    71,    84,   100,    86,   288,    76,
+      29,   105,   100,   100,    29,   200,    29,   105,   105,    98,
+      29,    98,    56,    57,   304,   305,   104,   105,   308,    29,
+     310,    28,    29,   289,   290,    29,    99,    91,    99,   105,
+     105,   321,    46,    29,    29,   125,    53,   126,   127,   128,
+     105,    53,   105,    29,   133,   134,   135,   136,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     131,   104,    45,   152,   352,    28,    52,    28,   104,   104,
-      52,   104,   161,    28,    28,    28,   165,   166,    28,   168,
-     169,    99,   171,   172,    99,    53,   175,   196,    32,   178,
-     179,   180,   181,   182,   183,   184,   185,   186,   187,    28,
-     104,    32,    28,    36,   193,    57,    52,   296,    32,    32,
-      32,   200,    52,   202,    32,   314,   124,   297,   322,   260,
-      30,    -1,   311,    -1,    -1,    -1,   325,    -1,   199,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   227,    -1,
-      -1,   254,    -1,    -1,    -1,   234,   235,    -1,    -1,   338,
-      -1,   340,    -1,    -1,   263,    -1,    -1,   346,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   254,    -1,   276,    -1,    -1,
-     279,   280,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   270,   271,   272,   273,   326,   295,    -1,    -1,   278,
-      -1,    -1,    -1,    -1,   265,    -1,   305,    -1,   269,    -1,
-      -1,    -1,    -1,   312,    -1,   294,    -1,   348,    -1,    -1,
-      -1,   320,   321,   322,    -1,    -1,    -1,    -1,    70,    71,
-     291,    73,   331,    -1,    76,   314,    -1,    -1,   337,    -1,
-     339,    -1,    -1,    -1,    -1,    -1,   325,    -1,    -1,    91,
-      92,    93,    94,    95,    -1,   354,   355,    -1,   100,   101,
-      -1,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     350,    -1,   352,    12,    13,    14,    15,    -1,    17,    18,
-      19,    20,    21,    -1,    23,    24,    25,    -1,    -1,    28,
-      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,
-      39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,
-      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
-      59,    60,    61,    -1,    63,    -1,    -1,    -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,    92,    93,    -1,    -1,    -1,    97,    98,
-      -1,    -1,    -1,   102,    12,    13,    14,    15,    -1,    17,
-      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    -1,
-      28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,
-      -1,    39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,
-      -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,
-      58,    59,    60,    61,    -1,    63,    -1,    -1,    -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,    92,    93,    -1,    -1,    -1,    -1,
-      98,    -1,    -1,    -1,   102,    12,    13,    14,    15,    -1,
-      17,    18,    19,    20,    21,    -1,    23,    24,    25,    -1,
-      -1,    28,    29,    -1,    31,    32,    33,    -1,    -1,    -1,
-      37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
-      -1,    -1,    -1,    60,    61,    -1,    63,    -1,    -1,    -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,    92,    93,    -1,    -1,    -1,
-      97,    98,    -1,    -1,    -1,   102,    12,    13,    14,    15,
-      -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
-      -1,    -1,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
-      -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
-      -1,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,    -1,
-      -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,    92,    93,    -1,    -1,
-      -1,    97,    98,    -1,    -1,    -1,   102,    12,    13,    14,
-      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
-      25,    -1,    -1,    28,    29,    -1,    31,    -1,    33,    -1,
-      -1,    -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    49,    50,    51,    -1,    -1,    54,
-      -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,
-      -1,    -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,    92,    93,    -1,
-      -1,    -1,    -1,    98,    -1,    -1,    -1,   102,    12,    13,
-      14,    15,    -1,    17,    18,    19,    20,    21,    -1,    23,
-      24,    25,    -1,    -1,    28,    29,    -1,    31,    -1,    33,
-      -1,    -1,    -1,    37,    -1,    39,    40,    -1,    -1,    -1,
-      70,    71,    -1,    73,    -1,    49,    76,    51,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    63,
-      -1,    -1,    92,    93,    94,    95,    -1,    -1,    72,    -1,
-     100,   101,    -1,    -1,    -1,    79,    80,    81,    82,    83,
-      -1,    -1,    -1,    87,    -1,    89,    -1,    -1,    92,    93,
-      12,    13,    14,    15,    98,    -1,    -1,    -1,   102,    -1,
-      -1,    23,    24,    25,    -1,    -1,    28,    29,    -1,    31,
-      -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,
-      -1,    43,    -1,    45,    46,    47,    48,    49,    -1,    51,
+     132,   150,   352,   105,    29,   154,    29,    29,   100,   100,
+      29,   105,    54,    33,   163,    29,    33,    58,   167,   168,
+      53,   170,   171,    33,   173,   174,    37,   197,   177,    33,
+      33,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,    53,   316,    33,   299,   194,   300,   125,   324,    30,
+      -1,    -1,   201,   327,   203,    -1,    -1,    -1,   313,    -1,
+      -1,    -1,    -1,   262,    -1,    -1,    -1,    -1,   200,    -1,
+      -1,    -1,    -1,   256,    -1,    -1,    -1,    -1,    -1,    71,
+      72,   230,    74,    -1,   339,    77,   341,    -1,   237,   238,
+     222,   346,    -1,    -1,    -1,   265,    -1,    -1,    -1,    -1,
+      92,    93,    94,    95,    96,    -1,    -1,   256,   278,   101,
+     102,   281,   282,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   273,   274,   275,   276,   298,   328,
+      -1,   280,    -1,    -1,    -1,    -1,   268,   307,    -1,    -1,
+     272,    -1,    -1,    -1,   314,    -1,    -1,    -1,   297,   348,
+      -1,    -1,   322,   323,   324,    -1,    -1,    71,    72,    -1,
+      74,    -1,   332,    77,    -1,    -1,    -1,   316,   338,    -1,
+     340,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   327,    93,
+      94,    95,    96,    -1,   354,   355,    -1,   101,   102,    -1,
+       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     350,    -1,   352,    13,    14,    15,    16,    -1,    18,    19,
+      20,    21,    22,    -1,    24,    25,    26,    -1,    -1,    29,
+      30,    -1,    32,    -1,    34,    -1,    -1,    -1,    38,    -1,
+      40,    41,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,
+      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,
+      60,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    89,
+      90,    -1,    -1,    93,    94,     3,    -1,    -1,    98,    99,
+      -1,    -1,    -1,   103,    -1,    13,    14,    15,    16,    -1,
+      18,    19,    20,    21,    22,    -1,    24,    25,    26,    -1,
+      -1,    29,    30,    -1,    32,    33,    34,    -1,    -1,    -1,
+      38,    -1,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
+      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
+      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
+      88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
+      98,    99,    -1,    -1,    -1,   103,    13,    14,    15,    16,
+      -1,    18,    19,    20,    21,    22,    -1,    24,    25,    26,
+      -1,    -1,    29,    30,    -1,    32,    -1,    34,    -1,    -1,
+      -1,    38,    -1,    40,    41,    42,    -1,    -1,    45,    -1,
+      -1,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
+      -1,    -1,    59,    60,    61,    62,    -1,    64,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
+      -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
+      87,    88,    89,    90,    -1,    -1,    93,    94,    -1,    -1,
+      -1,    -1,    99,    -1,    -1,    -1,   103,    13,    14,    15,
+      16,    -1,    18,    19,    20,    21,    22,    -1,    24,    25,
+      26,    -1,    -1,    29,    30,    -1,    32,    -1,    34,    -1,
+      -1,    -1,    38,    -1,    40,    41,    42,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
+      -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,
+      -1,    -1,    98,    99,    -1,    -1,    -1,   103,    13,    14,
+      15,    16,    -1,    18,    19,    20,    21,    22,    -1,    24,
+      25,    26,    -1,    -1,    29,    30,    -1,    32,    -1,    34,
+      -1,    -1,    -1,    38,    -1,    40,    41,    42,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
+      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
+      -1,    -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,
+      -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    13,
+      14,    15,    16,    -1,    18,    19,    20,    21,    22,    -1,
+      24,    25,    26,    -1,    -1,    29,    30,    -1,    32,    -1,
+      34,    -1,    -1,    -1,    38,    -1,    40,    41,    -1,    -1,
+      -1,    71,    72,    -1,    74,    -1,    50,    77,    52,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
+      64,    -1,    -1,    -1,    -1,    95,    96,    -1,    -1,    73,
+      -1,   101,   102,    -1,    -1,    -1,    80,    81,    82,    83,
+      84,    -1,    -1,    -1,    88,    -1,    90,    -1,    -1,    93,
+      94,    13,    14,    15,    16,    99,    -1,    -1,    -1,   103,
+      -1,    -1,    24,    25,    26,    -1,    -1,    29,    30,    -1,
+      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
+      -1,    -1,    44,    -1,    46,    47,    48,    49,    50,    -1,
+      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
+      82,    83,    84,    13,    14,    15,    16,    -1,    -1,    -1,
+      -1,    93,    94,    -1,    24,    25,    26,    99,    -1,    29,
+      30,   103,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,    -1,
+      50,    -1,    52,    13,    14,    15,    16,    -1,    -1,    -1,
+      -1,    -1,    -1,    63,    24,    25,    26,    -1,    -1,    29,
+      30,    -1,    32,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,    -1,
+      50,    -1,    52,    93,    94,    -1,    -1,    -1,    -1,    99,
+      -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    81,    82,    83,    84,    13,    14,    15,    16,    -1,
+      -1,    -1,    -1,    93,    94,    -1,    24,    25,    26,    99,
+      -1,    29,    30,   103,    32,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      72,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
-      82,    83,    12,    13,    14,    15,    -1,    -1,    -1,    -1,
-      92,    93,    -1,    23,    24,    25,    98,    -1,    28,    29,
-     102,    31,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,
-      -1,    -1,    -1,    -1,    -1,    45,    -1,    47,    -1,    49,
-      -1,    51,    12,    13,    14,    15,    -1,    -1,    -1,    -1,
-      -1,    -1,    62,    23,    24,    25,    -1,    -1,    28,    29,
-      -1,    31,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-      80,    81,    82,    83,    -1,    -1,    -1,    -1,    -1,    49,
-      -1,    51,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,
-      -1,    -1,   102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-      80,    81,    82,    83,    12,    13,    14,    15,    -1,    -1,
-      -1,    -1,    92,    93,    -1,    23,    24,    25,    98,    -1,
-      28,    29,   102,    31,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    50,    -1,    52,    13,    14,    15,    16,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    24,    25,    26,    -1,
+      -1,    29,    30,    -1,    32,    73,    -1,    -1,    -1,    -1,
+      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,
+      -1,    -1,    50,    -1,    52,    93,    94,    -1,    -1,    -1,
+      -1,    99,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
+      -1,    -1,    80,    81,    82,    83,    84,    13,    14,    15,
+      16,    -1,    -1,    -1,    -1,    93,    94,    -1,    24,    25,
+      26,    99,    -1,    29,    30,   103,    32,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    -1,    51,    12,    13,    14,    15,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,    -1,
-      28,    29,    -1,    31,    72,    -1,    -1,    -1,    -1,    -1,
-      -1,    79,    80,    81,    82,    83,    -1,    -1,    -1,    -1,
-      -1,    49,    -1,    51,    92,    93,    -1,    -1,    -1,    -1,
-      98,    -1,    -1,    -1,   102,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,
-      -1,    79,    80,    81,    82,    83,    12,    13,    14,    15,
-      -1,    -1,    -1,    -1,    92,    93,    -1,    23,    24,    25,
-      98,    -1,    28,    29,   102,    31,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    50,    -1,    52,    13,    14,    15,
+      16,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,    25,
+      26,    -1,    -1,    29,    30,    -1,    32,    73,    -1,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    -1,    -1,    -1,    50,    -1,    52,    93,    94,    -1,
+      -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
+      -1,    -1,    43,    -1,    80,    81,    82,    83,    84,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    -1,
+      -1,    -1,    -1,    99,    65,    66,    -1,   103,    -1,    70,
+      71,    72,    -1,    74,    75,    76,    77,    78,    79,    -1,
+      48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,
+      -1,    92,    93,    94,    95,    96,    -1,    65,    66,    -1,
+     101,   102,    70,    71,    72,    -1,    74,    -1,    -1,    77,
+      78,    79,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,
+      -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
+      65,    66,    -1,   101,   102,    70,    71,    72,    -1,    74,
+      -1,    -1,    77,    78,    79,    -1,    48,    -1,    -1,    -1,
+      -1,    -1,    54,    -1,    -1,    -1,    -1,    92,    93,    94,
+      95,    96,    -1,    65,    66,    -1,   101,   102,    70,    71,
+      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    48,
+      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,
+      92,    93,    94,    95,    96,    -1,    65,    66,    -1,   101,
+     102,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
+      79,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    65,
+      66,    -1,   101,   102,    70,    71,    72,    -1,    74,    -1,
+      -1,    77,    78,    79,    -1,    48,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
+      96,    -1,    65,    66,    -1,   101,   102,    70,    71,    72,
+      -1,    74,    -1,    -1,    77,    78,    79,    -1,    48,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    94,    95,    96,    -1,    65,    66,    -1,   101,   102,
+      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
+      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    94,    95,    96,    -1,    65,    66,
+      -1,   101,   102,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      54,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      -1,    65,    66,    -1,   101,   102,    70,    71,    72,    -1,
+      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,    93,
+      94,    95,    96,    -1,    98,    65,    66,   101,   102,    -1,
+      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
+      -1,    91,    92,    93,    94,    95,    96,    -1,    65,    66,
+      -1,   101,   102,    70,    71,    72,    -1,    74,    -1,    -1,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
+      -1,    65,    66,    -1,   101,   102,    70,    71,    72,    -1,
+      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    92,    93,
+      94,    95,    96,    -1,    65,    66,    -1,   101,   102,    70,
+      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    49,    -1,    51,    12,    13,    14,    15,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,    25,
-      -1,    -1,    28,    29,    -1,    31,    72,    -1,    -1,    -1,
-      -1,    -1,    -1,    79,    80,    81,    82,    83,    -1,    -1,
-      -1,    -1,    -1,    49,    -1,    51,    92,    93,    -1,    -1,
-      -1,    -1,    98,    -1,    -1,    -1,   102,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
-      -1,    42,    -1,    79,    80,    81,    82,    83,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
-      -1,    -1,    98,    64,    65,    -1,   102,    -1,    69,    70,
-      71,    -1,    73,    74,    75,    76,    77,    78,    -1,    47,
-      -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,
-      91,    92,    93,    94,    95,    -1,    64,    65,    -1,   100,
-     101,    69,    70,    71,    -1,    73,    -1,    -1,    76,    77,
-      78,    -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    -1,
-      -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,    64,
-      65,    -1,   100,   101,    69,    70,    71,    -1,    73,    -1,
-      -1,    76,    77,    78,    -1,    47,    -1,    -1,    -1,    -1,
-      -1,    53,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
-      95,    -1,    64,    65,    -1,   100,   101,    69,    70,    71,
-      -1,    73,    -1,    -1,    76,    77,    78,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    91,
-      92,    93,    94,    95,    -1,    64,    65,    -1,   100,   101,
-      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    91,    92,    93,    94,    95,    -1,    64,    65,
-      -1,   100,   101,    69,    70,    71,    -1,    73,    -1,    -1,
-      76,    77,    78,    -1,    47,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,
-      -1,    64,    65,    -1,   100,   101,    69,    70,    71,    -1,
-      73,    -1,    -1,    76,    77,    78,    -1,    47,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
-      93,    94,    95,    -1,    64,    65,    -1,   100,   101,    69,
-      70,    71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    91,    92,    93,    94,    95,    -1,    64,    65,    -1,
-     100,   101,    69,    70,    71,    -1,    73,    -1,    -1,    76,
-      77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,
-      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
-      64,    65,    -1,   100,   101,    69,    70,    71,    -1,    73,
-      -1,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    53,    -1,    -1,    -1,    91,    92,    93,
-      94,    95,    -1,    97,    64,    65,   100,   101,    -1,    69,
-      70,    71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,
-      90,    91,    92,    93,    94,    95,    -1,    64,    65,    -1,
-     100,   101,    69,    70,    71,    -1,    73,    -1,    -1,    76,
-      77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
-      64,    65,    -1,   100,   101,    69,    70,    71,    -1,    73,
-      -1,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,
-      84,    85,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,
-      94,    95,    -1,    64,    65,    -1,   100,   101,    69,    70,
-      71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,
-      91,    92,    93,    94,    95,    -1,    64,    65,    99,   100,
-     101,    69,    70,    71,    -1,    73,    -1,    -1,    76,    77,
-      78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,    64,
-      65,    99,   100,   101,    69,    70,    71,    -1,    73,    -1,
-      -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    90,    91,    92,    93,    94,
-      95,    -1,    64,    65,    -1,   100,   101,    69,    70,    71,
-      -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,
-      92,    93,    94,    95,    -1,    -1,    -1,    -1,   100,   101
+      91,    92,    93,    94,    95,    96,    -1,    65,    66,   100,
+     101,   102,    70,    71,    72,    -1,    74,    -1,    -1,    77,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
+      65,    66,   100,   101,   102,    70,    71,    72,    -1,    74,
+      -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
+      95,    96,    -1,    65,    66,    -1,   101,   102,    70,    71,
+      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      92,    93,    94,    95,    96,    -1,    -1,    -1,    -1,   101,
+     102
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     1,    12,    13,    14,    15,    17,    18,    19,    20,
-      21,    23,    24,    25,    28,    29,    31,    33,    37,    39,
-      40,    41,    44,    49,    50,    51,    54,    58,    59,    60,
-      61,    63,    72,    79,    80,    81,    82,    83,    86,    87,
-      88,    89,    92,    93,    98,   102,   106,   108,   109,   110,
-     111,   112,   119,   120,   121,   126,   127,   128,   130,   134,
-     137,   139,   146,    97,   107,    28,    49,   128,   128,   128,
-      98,   128,   148,    28,   128,    98,   148,    98,   148,   138,
-      50,    28,   131,    38,    43,    45,    46,    47,    48,   128,
-     135,   136,    28,   128,    55,    56,    13,    14,    28,    28,
-      28,    28,   128,    62,   135,   136,    28,   133,   128,   128,
-     128,   128,   128,   128,    28,   132,    28,    98,   128,   128,
-     128,   128,   147,     0,   107,    98,    90,    98,   118,   128,
-     110,   128,    64,    65,    69,    70,    71,    73,    76,    77,
-      78,    91,    92,    93,    94,    95,   100,   101,    98,   128,
-     128,   148,   104,   147,   148,   128,   147,   147,   104,   128,
-     128,    45,   136,   140,    42,    74,    75,    28,    53,    90,
-     128,    53,    90,    52,   141,    55,   136,   104,    47,    53,
-      47,    53,    47,    53,    47,    53,    84,    85,   104,   142,
-      28,    99,   103,   104,   108,   118,   128,   118,   128,    52,
-      90,   124,    53,   107,   128,   128,   128,   128,   128,   128,
-     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-      99,   128,    99,    99,    28,   128,   123,    27,    28,   129,
-     128,   128,   128,   128,    53,    90,   128,   128,   123,   128,
-      28,   128,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,    28,   123,    99,   104,   128,    99,   124,    99,   107,
-     123,   128,   128,   125,    28,   144,   128,   128,   128,   144,
-      47,    47,    47,    47,   143,   147,   125,    34,    53,   125,
-     110,   107,   111,   124,   104,   107,   107,   128,   128,   128,
-     128,   144,    99,   124,    53,   128,   124,   124,    32,    28,
-     104,   145,   145,   107,    32,   128,   124,    32,    57,   123,
-      36,    57,   115,   116,   122,    28,   125,   125,   145,   124,
-     125,   125,   114,   115,   117,   122,   123,   116,   124,   118,
-     125,   125,   124,   124,   117,   124,   118,   110,    57,   113,
-      52,    32,   124,    32,    32,    32,    52,   124,   123,   124,
-     123,    32,   123,   110,   111,   125,   124,   124
+       0,     1,    13,    14,    15,    16,    18,    19,    20,    21,
+      22,    24,    25,    26,    29,    30,    32,    34,    38,    40,
+      41,    42,    45,    50,    51,    52,    55,    59,    60,    61,
+      62,    64,    73,    80,    81,    82,    83,    84,    87,    88,
+      89,    90,    93,    94,    99,   103,   107,   109,   110,   111,
+     112,   113,   120,   121,   122,   127,   128,   129,   131,   135,
+     138,   140,   143,   146,    98,   108,    29,    50,   129,   129,
+     129,    99,   129,   148,    29,   129,    99,   148,    99,   148,
+     139,    51,    29,   132,    39,    44,    46,    47,    48,    49,
+     129,   136,   137,    29,   129,    56,    57,    14,    15,    29,
+      29,    29,    29,   129,    63,   136,   137,    29,   134,   129,
+     129,   129,   129,   129,   129,    29,   133,    29,    99,   129,
+     129,   129,   129,   147,     0,   108,    99,    91,    99,   119,
+     129,   111,   129,    65,    66,    70,    71,    72,    74,    77,
+      78,    79,    92,    93,    94,    95,    96,   101,   102,   124,
+      99,   129,   129,   148,   105,   147,   148,   129,   147,   147,
+     105,   129,   129,    46,   137,   141,    43,    75,    76,    29,
+      54,    91,   129,    54,    91,    53,   142,    56,   137,   105,
+      48,    54,    48,    54,    48,    54,    48,    54,    85,    86,
+     105,    29,   100,   104,   105,   109,   119,   129,   119,   129,
+      53,    91,   125,    54,   108,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,    29,   144,   100,   129,   100,   100,    29,   129,   124,
+      28,    29,   130,   129,   129,   129,   129,    54,    91,   129,
+     129,   124,   129,    29,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,    29,   100,   105,   129,   100,   125,
+     100,   108,   124,   129,   129,   126,   105,   108,   144,   129,
+     129,   129,   144,    48,    48,    48,    48,   147,   126,    35,
+      54,   126,   111,   108,   112,   125,    29,   105,   145,   108,
+     108,   129,   129,   129,   129,   100,   125,    54,   129,   125,
+     125,    33,    29,   126,   145,   145,    33,   129,   125,    33,
+      58,   124,    37,    58,   116,   117,   123,     3,    33,   126,
+     126,   125,   126,   126,   115,   116,   118,   123,   124,   117,
+     125,   119,   126,   125,   125,   118,   125,   119,   111,    58,
+     114,    53,   125,    33,    33,    33,    53,   125,   124,   125,
+     124,    33,   124,   111,   112,   126,   125,   125
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2154,12 +2159,12 @@ yyreduce:
   switch (yyn)
     {
         case 4:
-#line 120 "engines/director/lingo/lingo-gr.y"
+#line 123 "engines/director/lingo/lingo-gr.y"
     { yyerrok; ;}
     break;
 
   case 5:
-#line 123 "engines/director/lingo/lingo-gr.y"
+#line 126 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 1;
@@ -2167,7 +2172,7 @@ yyreduce:
     break;
 
   case 10:
-#line 134 "engines/director/lingo/lingo-gr.y"
+#line 137 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str());
@@ -2177,24 +2182,24 @@ yyreduce:
     break;
 
   case 11:
-#line 140 "engines/director/lingo/lingo-gr.y"
+#line 143 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_assign);
 			(yyval.code) = (yyvsp[(2) - (4)].code); ;}
     break;
 
   case 12:
-#line 143 "engines/director/lingo/lingo-gr.y"
+#line 146 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;}
     break;
 
   case 13:
-#line 144 "engines/director/lingo/lingo-gr.y"
+#line 147 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;}
     break;
 
   case 14:
-#line 145 "engines/director/lingo/lingo-gr.y"
+#line 148 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2204,7 +2209,7 @@ yyreduce:
     break;
 
   case 15:
-#line 151 "engines/director/lingo/lingo-gr.y"
+#line 154 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2216,7 +2221,7 @@ yyreduce:
     break;
 
   case 16:
-#line 159 "engines/director/lingo/lingo-gr.y"
+#line 162 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2228,7 +2233,7 @@ yyreduce:
     break;
 
   case 17:
-#line 167 "engines/director/lingo/lingo-gr.y"
+#line 170 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2238,7 +2243,7 @@ yyreduce:
     break;
 
   case 18:
-#line 173 "engines/director/lingo/lingo-gr.y"
+#line 176 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2250,7 +2255,7 @@ yyreduce:
     break;
 
   case 19:
-#line 181 "engines/director/lingo/lingo-gr.y"
+#line 184 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2262,7 +2267,7 @@ yyreduce:
     break;
 
   case 24:
-#line 201 "engines/director/lingo/lingo-gr.y"
+#line 204 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[(5) - (7)].code) - (yyvsp[(1) - (7)].code));
@@ -2274,7 +2279,7 @@ yyreduce:
     break;
 
   case 25:
-#line 214 "engines/director/lingo/lingo-gr.y"
+#line 217 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2292,7 +2297,7 @@ yyreduce:
     break;
 
   case 26:
-#line 232 "engines/director/lingo/lingo-gr.y"
+#line 235 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (11)].code) - (yyvsp[(1) - (11)].code));
@@ -2310,7 +2315,7 @@ yyreduce:
     break;
 
   case 27:
-#line 246 "engines/director/lingo/lingo-gr.y"
+#line 249 "engines/director/lingo/lingo-gr.y"
     {
 			inst end = 0;
 			WRITE_UINT32(&end, (yyvsp[(3) - (3)].code) - (yyvsp[(1) - (3)].code));
@@ -2320,21 +2325,21 @@ yyreduce:
     break;
 
   case 28:
-#line 252 "engines/director/lingo/lingo-gr.y"
+#line 255 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 			checkEnd((yyvsp[(6) - (6)].s), "tell", true); ;}
     break;
 
   case 29:
-#line 255 "engines/director/lingo/lingo-gr.y"
+#line 258 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 		;}
     break;
 
   case 30:
-#line 260 "engines/director/lingo/lingo-gr.y"
+#line 263 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (7)].code) - (yyvsp[(1) - (7)].code));
@@ -2348,7 +2353,7 @@ yyreduce:
     break;
 
   case 31:
-#line 270 "engines/director/lingo/lingo-gr.y"
+#line 273 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2364,7 +2369,7 @@ yyreduce:
     break;
 
   case 32:
-#line 282 "engines/director/lingo/lingo-gr.y"
+#line 285 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2380,7 +2385,7 @@ yyreduce:
     break;
 
   case 33:
-#line 294 "engines/director/lingo/lingo-gr.y"
+#line 297 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2394,7 +2399,7 @@ yyreduce:
     break;
 
   case 34:
-#line 304 "engines/director/lingo/lingo-gr.y"
+#line 307 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2408,7 +2413,7 @@ yyreduce:
     break;
 
   case 35:
-#line 314 "engines/director/lingo/lingo-gr.y"
+#line 317 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2422,17 +2427,17 @@ yyreduce:
     break;
 
   case 36:
-#line 326 "engines/director/lingo/lingo-gr.y"
+#line 329 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
   case 37:
-#line 327 "engines/director/lingo/lingo-gr.y"
+#line 330 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 42:
-#line 338 "engines/director/lingo/lingo-gr.y"
+#line 341 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2442,7 +2447,7 @@ yyreduce:
     break;
 
   case 44:
-#line 347 "engines/director/lingo/lingo-gr.y"
+#line 350 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2452,22 +2457,22 @@ yyreduce:
     break;
 
   case 45:
-#line 355 "engines/director/lingo/lingo-gr.y"
+#line 358 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); ;}
     break;
 
   case 46:
-#line 356 "engines/director/lingo/lingo-gr.y"
+#line 359 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_eq, STOP); ;}
     break;
 
   case 48:
-#line 360 "engines/director/lingo/lingo-gr.y"
+#line 363 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
   case 49:
-#line 363 "engines/director/lingo/lingo-gr.y"
+#line 366 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2476,7 +2481,7 @@ yyreduce:
     break;
 
   case 50:
-#line 370 "engines/director/lingo/lingo-gr.y"
+#line 373 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2485,7 +2490,7 @@ yyreduce:
     break;
 
   case 51:
-#line 377 "engines/director/lingo/lingo-gr.y"
+#line 380 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2495,22 +2500,22 @@ yyreduce:
     break;
 
   case 52:
-#line 385 "engines/director/lingo/lingo-gr.y"
+#line 388 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 53:
-#line 388 "engines/director/lingo/lingo-gr.y"
+#line 391 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 54:
-#line 391 "engines/director/lingo/lingo-gr.y"
+#line 394 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 57:
-#line 396 "engines/director/lingo/lingo-gr.y"
+#line 399 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2519,71 +2524,71 @@ yyreduce:
     break;
 
   case 58:
-#line 402 "engines/director/lingo/lingo-gr.y"
+#line 405 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
 		g_lingo->code1(STOP); ;}
     break;
 
   case 59:
-#line 406 "engines/director/lingo/lingo-gr.y"
+#line 409 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeConst((yyvsp[(1) - (1)].i)); ;}
     break;
 
   case 60:
-#line 407 "engines/director/lingo/lingo-gr.y"
+#line 410 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_fconstpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
   case 61:
-#line 410 "engines/director/lingo/lingo-gr.y"
+#line 413 "engines/director/lingo/lingo-gr.y"
     {											// D3
 		(yyval.code) = g_lingo->code1(g_lingo->c_symbolpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
   case 62:
-#line 413 "engines/director/lingo/lingo-gr.y"
+#line 416 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_stringpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
   case 63:
-#line 416 "engines/director/lingo/lingo-gr.y"
+#line 419 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 64:
-#line 419 "engines/director/lingo/lingo-gr.y"
+#line 422 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 65:
-#line 422 "engines/director/lingo/lingo-gr.y"
+#line 425 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 66:
-#line 423 "engines/director/lingo/lingo-gr.y"
+#line 426 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
   case 67:
-#line 424 "engines/director/lingo/lingo-gr.y"
+#line 427 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg));
 		delete (yyvsp[(1) - (4)].s); ;}
     break;
 
   case 68:
-#line 427 "engines/director/lingo/lingo-gr.y"
+#line 430 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_eval);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str());
@@ -2591,7 +2596,7 @@ yyreduce:
     break;
 
   case 69:
-#line 431 "engines/director/lingo/lingo-gr.y"
+#line 434 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentitypush);
@@ -2602,7 +2607,7 @@ yyreduce:
     break;
 
   case 70:
-#line 438 "engines/director/lingo/lingo-gr.y"
+#line 441 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2612,205 +2617,205 @@ yyreduce:
     break;
 
   case 72:
-#line 445 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
   case 73:
-#line 446 "engines/director/lingo/lingo-gr.y"
+#line 449 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
   case 74:
-#line 447 "engines/director/lingo/lingo-gr.y"
+#line 450 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
   case 75:
-#line 448 "engines/director/lingo/lingo-gr.y"
+#line 451 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
   case 76:
-#line 449 "engines/director/lingo/lingo-gr.y"
+#line 452 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
   case 77:
-#line 450 "engines/director/lingo/lingo-gr.y"
+#line 453 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
   case 78:
-#line 451 "engines/director/lingo/lingo-gr.y"
+#line 454 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
   case 79:
-#line 452 "engines/director/lingo/lingo-gr.y"
+#line 455 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
   case 80:
-#line 453 "engines/director/lingo/lingo-gr.y"
+#line 456 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
   case 81:
-#line 454 "engines/director/lingo/lingo-gr.y"
+#line 457 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
   case 82:
-#line 455 "engines/director/lingo/lingo-gr.y"
+#line 458 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
   case 83:
-#line 456 "engines/director/lingo/lingo-gr.y"
+#line 459 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
   case 84:
-#line 457 "engines/director/lingo/lingo-gr.y"
+#line 460 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
   case 85:
-#line 458 "engines/director/lingo/lingo-gr.y"
+#line 461 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
   case 86:
-#line 459 "engines/director/lingo/lingo-gr.y"
+#line 462 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
   case 87:
-#line 460 "engines/director/lingo/lingo-gr.y"
+#line 463 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
   case 88:
-#line 461 "engines/director/lingo/lingo-gr.y"
+#line 464 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
   case 89:
-#line 462 "engines/director/lingo/lingo-gr.y"
+#line 465 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
   case 90:
-#line 463 "engines/director/lingo/lingo-gr.y"
+#line 466 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
   case 91:
-#line 464 "engines/director/lingo/lingo-gr.y"
+#line 467 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 92:
-#line 465 "engines/director/lingo/lingo-gr.y"
+#line 468 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
   case 93:
-#line 466 "engines/director/lingo/lingo-gr.y"
+#line 469 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
   case 94:
-#line 467 "engines/director/lingo/lingo-gr.y"
+#line 470 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
   case 95:
-#line 468 "engines/director/lingo/lingo-gr.y"
+#line 471 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
   case 96:
-#line 469 "engines/director/lingo/lingo-gr.y"
+#line 472 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
   case 97:
-#line 470 "engines/director/lingo/lingo-gr.y"
+#line 473 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
   case 98:
-#line 471 "engines/director/lingo/lingo-gr.y"
+#line 474 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
   case 99:
-#line 472 "engines/director/lingo/lingo-gr.y"
+#line 475 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
   case 100:
-#line 473 "engines/director/lingo/lingo-gr.y"
+#line 476 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
   case 101:
-#line 474 "engines/director/lingo/lingo-gr.y"
+#line 477 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
   case 102:
-#line 475 "engines/director/lingo/lingo-gr.y"
+#line 478 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
   case 103:
-#line 478 "engines/director/lingo/lingo-gr.y"
+#line 481 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 104:
-#line 483 "engines/director/lingo/lingo-gr.y"
+#line 486 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
   case 107:
-#line 486 "engines/director/lingo/lingo-gr.y"
+#line 489 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
   case 108:
-#line 487 "engines/director/lingo/lingo-gr.y"
+#line 490 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
   case 112:
-#line 491 "engines/director/lingo/lingo-gr.y"
+#line 494 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 113:
-#line 494 "engines/director/lingo/lingo-gr.y"
+#line 497 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 114:
-#line 497 "engines/director/lingo/lingo-gr.y"
+#line 500 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 115:
-#line 500 "engines/director/lingo/lingo-gr.y"
+#line 503 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_voidpush);
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 1);
@@ -2818,151 +2823,151 @@ yyreduce:
     break;
 
   case 116:
-#line 504 "engines/director/lingo/lingo-gr.y"
+#line 507 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 117:
-#line 505 "engines/director/lingo/lingo-gr.y"
+#line 508 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
   case 118:
-#line 506 "engines/director/lingo/lingo-gr.y"
+#line 509 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
   case 119:
-#line 507 "engines/director/lingo/lingo-gr.y"
+#line 510 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
   case 120:
-#line 508 "engines/director/lingo/lingo-gr.y"
+#line 511 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
   case 121:
-#line 509 "engines/director/lingo/lingo-gr.y"
+#line 512 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
   case 122:
-#line 510 "engines/director/lingo/lingo-gr.y"
+#line 513 "engines/director/lingo/lingo-gr.y"
     { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}
     break;
 
   case 123:
-#line 513 "engines/director/lingo/lingo-gr.y"
+#line 516 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 124:
-#line 514 "engines/director/lingo/lingo-gr.y"
+#line 517 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 125:
-#line 517 "engines/director/lingo/lingo-gr.y"
+#line 520 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 126:
-#line 518 "engines/director/lingo/lingo-gr.y"
+#line 521 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 127:
-#line 521 "engines/director/lingo/lingo-gr.y"
+#line 524 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 128:
-#line 522 "engines/director/lingo/lingo-gr.y"
+#line 525 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 129:
-#line 533 "engines/director/lingo/lingo-gr.y"
+#line 536 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
   case 130:
-#line 534 "engines/director/lingo/lingo-gr.y"
+#line 537 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
   case 131:
-#line 535 "engines/director/lingo/lingo-gr.y"
+#line 538 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
   case 132:
-#line 536 "engines/director/lingo/lingo-gr.y"
+#line 539 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 133:
-#line 539 "engines/director/lingo/lingo-gr.y"
+#line 542 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 134:
-#line 542 "engines/director/lingo/lingo-gr.y"
+#line 545 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 139:
-#line 555 "engines/director/lingo/lingo-gr.y"
+#line 558 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
   case 140:
-#line 556 "engines/director/lingo/lingo-gr.y"
+#line 559 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 141:
-#line 559 "engines/director/lingo/lingo-gr.y"
+#line 562 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 142:
-#line 562 "engines/director/lingo/lingo-gr.y"
+#line 565 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 143:
-#line 565 "engines/director/lingo/lingo-gr.y"
+#line 568 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
   case 144:
-#line 565 "engines/director/lingo/lingo-gr.y"
+#line 568 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
   case 145:
-#line 595 "engines/director/lingo/lingo-gr.y"
+#line 598 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
   case 146:
-#line 596 "engines/director/lingo/lingo-gr.y"
+#line 599 "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));
@@ -2970,19 +2975,19 @@ yyreduce:
     break;
 
   case 147:
-#line 600 "engines/director/lingo/lingo-gr.y"
+#line 603 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
 		;}
     break;
 
   case 148:
-#line 603 "engines/director/lingo/lingo-gr.y"
+#line 606 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
   case 149:
-#line 604 "engines/director/lingo/lingo-gr.y"
+#line 607 "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) + 1, &g_lingo->_currentFactory);
@@ -2990,54 +2995,59 @@ yyreduce:
     break;
 
   case 150:
-#line 608 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
-    break;
+#line 611 "engines/director/lingo/lingo-gr.y"
+    {	// D3
+				g_lingo->code1(g_lingo->c_procret);
+				g_lingo->define(*(yyvsp[(1) - (7)].s), (yyvsp[(2) - (7)].code), (yyvsp[(3) - (7)].narg));
+				g_lingo->_indef = false;
+				g_lingo->_ignoreMe = false;
 
-  case 151:
-#line 609 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->_ignoreMe = true; ;}
+				checkEnd((yyvsp[(7) - (7)].s), (yyvsp[(1) - (7)].s)->c_str(), false);
+			;}
     break;
 
-  case 152:
-#line 609 "engines/director/lingo/lingo-gr.y"
-    {
+  case 151:
+#line 619 "engines/director/lingo/lingo-gr.y"
+    {	// D4. No 'end' clause
 				g_lingo->code1(g_lingo->c_procret);
-				g_lingo->define(*(yyvsp[(2) - (10)].s), (yyvsp[(4) - (10)].code), (yyvsp[(6) - (10)].narg));
+				g_lingo->define(*(yyvsp[(1) - (7)].s), (yyvsp[(2) - (7)].code), (yyvsp[(3) - (7)].narg));
 				g_lingo->_indef = false;
 				g_lingo->_ignoreMe = false;
-
-				checkEnd((yyvsp[(10) - (10)].s), (yyvsp[(2) - (10)].s)->c_str(), false);
 			;}
     break;
 
+  case 152:
+#line 626 "engines/director/lingo/lingo-gr.y"
+    { (yyval.s) = (yyvsp[(2) - (2)].s); g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; ;}
+    break;
+
   case 153:
-#line 618 "engines/director/lingo/lingo-gr.y"
+#line 628 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
   case 154:
-#line 619 "engines/director/lingo/lingo-gr.y"
+#line 629 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
   case 155:
-#line 620 "engines/director/lingo/lingo-gr.y"
+#line 630 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 156:
-#line 621 "engines/director/lingo/lingo-gr.y"
+#line 631 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
   case 157:
-#line 624 "engines/director/lingo/lingo-gr.y"
+#line 634 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
   case 158:
-#line 628 "engines/director/lingo/lingo-gr.y"
+#line 638 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -3047,33 +3057,33 @@ yyreduce:
     break;
 
   case 159:
-#line 636 "engines/director/lingo/lingo-gr.y"
+#line 646 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
   case 160:
-#line 637 "engines/director/lingo/lingo-gr.y"
+#line 647 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
   case 161:
-#line 638 "engines/director/lingo/lingo-gr.y"
+#line 648 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 162:
-#line 641 "engines/director/lingo/lingo-gr.y"
+#line 651 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
   case 163:
-#line 642 "engines/director/lingo/lingo-gr.y"
+#line 652 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3077 "engines/director/lingo/lingo-gr.cpp"
+#line 3087 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3287,6 +3297,6 @@ yyreturn:
 }
 
 
-#line 645 "engines/director/lingo/lingo-gr.y"
+#line 655 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index fc29598..38fb38e 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -39,183 +39,185 @@
    /* Put the tokens into the symbol table, so that GDB and other debuggers
       know about them.  */
    enum yytokentype {
-     UNARY = 258,
-     CASTREF = 259,
-     VOID = 260,
-     VAR = 261,
-     POINT = 262,
-     RECT = 263,
-     ARRAY = 264,
-     OBJECT = 265,
-     REFERENCE = 266,
-     INT = 267,
-     THEENTITY = 268,
-     THEENTITYWITHID = 269,
-     FLOAT = 270,
-     BLTIN = 271,
-     BLTINNOARGS = 272,
-     BLTINNOARGSORONE = 273,
-     BLTINONEARG = 274,
-     BLTINARGLIST = 275,
-     TWOWORDBUILTIN = 276,
-     FBLTIN = 277,
-     FBLTINNOARGS = 278,
-     FBLTINONEARG = 279,
-     FBLTINARGLIST = 280,
-     RBLTIN = 281,
-     RBLTINONEARG = 282,
-     ID = 283,
-     STRING = 284,
-     HANDLER = 285,
-     SYMBOL = 286,
-     ENDCLAUSE = 287,
-     tPLAYACCEL = 288,
-     tDOWN = 289,
-     tELSE = 290,
-     tNLELSIF = 291,
-     tEXIT = 292,
-     tFRAME = 293,
-     tGLOBAL = 294,
-     tGO = 295,
-     tIF = 296,
-     tINTO = 297,
-     tLOOP = 298,
-     tMACRO = 299,
-     tMOVIE = 300,
-     tNEXT = 301,
-     tOF = 302,
-     tPREVIOUS = 303,
-     tPUT = 304,
-     tREPEAT = 305,
-     tSET = 306,
-     tTHEN = 307,
-     tTO = 308,
-     tWHEN = 309,
-     tWITH = 310,
-     tWHILE = 311,
-     tNLELSE = 312,
-     tFACTORY = 313,
-     tMETHOD = 314,
-     tOPEN = 315,
-     tPLAY = 316,
-     tDONE = 317,
-     tINSTANCE = 318,
-     tGE = 319,
-     tLE = 320,
-     tGT = 321,
-     tLT = 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
+     EOSTREAM = 258,
+     UNARY = 259,
+     CASTREF = 260,
+     VOID = 261,
+     VAR = 262,
+     POINT = 263,
+     RECT = 264,
+     ARRAY = 265,
+     OBJECT = 266,
+     REFERENCE = 267,
+     INT = 268,
+     THEENTITY = 269,
+     THEENTITYWITHID = 270,
+     FLOAT = 271,
+     BLTIN = 272,
+     BLTINNOARGS = 273,
+     BLTINNOARGSORONE = 274,
+     BLTINONEARG = 275,
+     BLTINARGLIST = 276,
+     TWOWORDBUILTIN = 277,
+     FBLTIN = 278,
+     FBLTINNOARGS = 279,
+     FBLTINONEARG = 280,
+     FBLTINARGLIST = 281,
+     RBLTIN = 282,
+     RBLTINONEARG = 283,
+     ID = 284,
+     STRING = 285,
+     HANDLER = 286,
+     SYMBOL = 287,
+     ENDCLAUSE = 288,
+     tPLAYACCEL = 289,
+     tDOWN = 290,
+     tELSE = 291,
+     tNLELSIF = 292,
+     tEXIT = 293,
+     tFRAME = 294,
+     tGLOBAL = 295,
+     tGO = 296,
+     tIF = 297,
+     tINTO = 298,
+     tLOOP = 299,
+     tMACRO = 300,
+     tMOVIE = 301,
+     tNEXT = 302,
+     tOF = 303,
+     tPREVIOUS = 304,
+     tPUT = 305,
+     tREPEAT = 306,
+     tSET = 307,
+     tTHEN = 308,
+     tTO = 309,
+     tWHEN = 310,
+     tWITH = 311,
+     tWHILE = 312,
+     tNLELSE = 313,
+     tFACTORY = 314,
+     tMETHOD = 315,
+     tOPEN = 316,
+     tPLAY = 317,
+     tDONE = 318,
+     tINSTANCE = 319,
+     tGE = 320,
+     tLE = 321,
+     tGT = 322,
+     tLT = 323,
+     tEQ = 324,
+     tNEQ = 325,
+     tAND = 326,
+     tOR = 327,
+     tNOT = 328,
+     tMOD = 329,
+     tAFTER = 330,
+     tBEFORE = 331,
+     tCONCAT = 332,
+     tCONTAINS = 333,
+     tSTARTS = 334,
+     tCHAR = 335,
+     tITEM = 336,
+     tLINE = 337,
+     tWORD = 338,
+     tSPRITE = 339,
+     tINTERSECTS = 340,
+     tWITHIN = 341,
+     tTELL = 342,
+     tPROPERTY = 343,
+     tON = 344,
+     tME = 345
    };
 #endif
 /* Tokens.  */
-#define UNARY 258
-#define CASTREF 259
-#define VOID 260
-#define VAR 261
-#define POINT 262
-#define RECT 263
-#define ARRAY 264
-#define OBJECT 265
-#define REFERENCE 266
-#define INT 267
-#define THEENTITY 268
-#define THEENTITYWITHID 269
-#define FLOAT 270
-#define BLTIN 271
-#define BLTINNOARGS 272
-#define BLTINNOARGSORONE 273
-#define BLTINONEARG 274
-#define BLTINARGLIST 275
-#define TWOWORDBUILTIN 276
-#define FBLTIN 277
-#define FBLTINNOARGS 278
-#define FBLTINONEARG 279
-#define FBLTINARGLIST 280
-#define RBLTIN 281
-#define RBLTINONEARG 282
-#define ID 283
-#define STRING 284
-#define HANDLER 285
-#define SYMBOL 286
-#define ENDCLAUSE 287
-#define tPLAYACCEL 288
-#define tDOWN 289
-#define tELSE 290
-#define tNLELSIF 291
-#define tEXIT 292
-#define tFRAME 293
-#define tGLOBAL 294
-#define tGO 295
-#define tIF 296
-#define tINTO 297
-#define tLOOP 298
-#define tMACRO 299
-#define tMOVIE 300
-#define tNEXT 301
-#define tOF 302
-#define tPREVIOUS 303
-#define tPUT 304
-#define tREPEAT 305
-#define tSET 306
-#define tTHEN 307
-#define tTO 308
-#define tWHEN 309
-#define tWITH 310
-#define tWHILE 311
-#define tNLELSE 312
-#define tFACTORY 313
-#define tMETHOD 314
-#define tOPEN 315
-#define tPLAY 316
-#define tDONE 317
-#define tINSTANCE 318
-#define tGE 319
-#define tLE 320
-#define tGT 321
-#define tLT 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 EOSTREAM 258
+#define UNARY 259
+#define CASTREF 260
+#define VOID 261
+#define VAR 262
+#define POINT 263
+#define RECT 264
+#define ARRAY 265
+#define OBJECT 266
+#define REFERENCE 267
+#define INT 268
+#define THEENTITY 269
+#define THEENTITYWITHID 270
+#define FLOAT 271
+#define BLTIN 272
+#define BLTINNOARGS 273
+#define BLTINNOARGSORONE 274
+#define BLTINONEARG 275
+#define BLTINARGLIST 276
+#define TWOWORDBUILTIN 277
+#define FBLTIN 278
+#define FBLTINNOARGS 279
+#define FBLTINONEARG 280
+#define FBLTINARGLIST 281
+#define RBLTIN 282
+#define RBLTINONEARG 283
+#define ID 284
+#define STRING 285
+#define HANDLER 286
+#define SYMBOL 287
+#define ENDCLAUSE 288
+#define tPLAYACCEL 289
+#define tDOWN 290
+#define tELSE 291
+#define tNLELSIF 292
+#define tEXIT 293
+#define tFRAME 294
+#define tGLOBAL 295
+#define tGO 296
+#define tIF 297
+#define tINTO 298
+#define tLOOP 299
+#define tMACRO 300
+#define tMOVIE 301
+#define tNEXT 302
+#define tOF 303
+#define tPREVIOUS 304
+#define tPUT 305
+#define tREPEAT 306
+#define tSET 307
+#define tTHEN 308
+#define tTO 309
+#define tWHEN 310
+#define tWITH 311
+#define tWHILE 312
+#define tNLELSE 313
+#define tFACTORY 314
+#define tMETHOD 315
+#define tOPEN 316
+#define tPLAY 317
+#define tDONE 318
+#define tINSTANCE 319
+#define tGE 320
+#define tLE 321
+#define tGT 322
+#define tLT 323
+#define tEQ 324
+#define tNEQ 325
+#define tAND 326
+#define tOR 327
+#define tNOT 328
+#define tMOD 329
+#define tAFTER 330
+#define tBEFORE 331
+#define tCONCAT 332
+#define tCONTAINS 333
+#define tSTARTS 334
+#define tCHAR 335
+#define tITEM 336
+#define tLINE 337
+#define tWORD 338
+#define tSPRITE 339
+#define tINTERSECTS 340
+#define tWITHIN 341
+#define tTELL 342
+#define tPROPERTY 343
+#define tON 344
+#define tME 345
 
 
 
@@ -233,7 +235,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 1529 of yacc.c.  */
-#line 237 "engines/director/lingo/lingo-gr.hpp"
+#line 239 "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 35290c6..0115c54 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -86,6 +86,8 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 	Common::Array<double> *arr;
 }
 
+%token EOSTREAM
+
 %token UNARY
 %token CASTREF VOID VAR POINT RECT ARRAY OBJECT REFERENCE
 %token<i> INT
@@ -105,6 +107,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 
 %type<code> asgn begin elseif elsestmtoneliner end expr if when repeatwhile repeatwith stmtlist tell
 %type<narg> argdef arglist nonemptyarglist
+%type<s> on
 
 %right '='
 %left tLT tLE tGT tGE tNEQ tCONTAINS tSTARTS
@@ -605,16 +608,23 @@ defn: tMACRO ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); }
 			g_lingo->code1(g_lingo->c_procret);
 			g_lingo->define(*$2, $4, $5 + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; }	;
-	| tON ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); }			// D3
-		begin { g_lingo->_ignoreMe = true; } argdef nl argstore stmtlist ENDCLAUSE	{
+	| on begin  argdef nl argstore stmtlist ENDCLAUSE {	// D3
 				g_lingo->code1(g_lingo->c_procret);
-				g_lingo->define(*$2, $4, $6);
+				g_lingo->define(*$1, $2, $3);
 				g_lingo->_indef = false;
 				g_lingo->_ignoreMe = false;
 
-				checkEnd($10, $2->c_str(), false);
+				checkEnd($7, $1->c_str(), false);
+			}
+	| on begin argdef nl argstore stmtlist EOSTREAM {	// D4. No 'end' clause
+				g_lingo->code1(g_lingo->c_procret);
+				g_lingo->define(*$1, $2, $3);
+				g_lingo->_indef = false;
+				g_lingo->_ignoreMe = false;
 			}
 
+on:  tON ID { $$ = $2; g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
+
 argdef:  /* nothing */ 		{ $$ = 0; }
 	| ID					{ g_lingo->codeArg($1); $$ = 1; }
 	| argdef ',' ID			{ g_lingo->codeArg($3); $$ = $1 + 1; }
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index c931dc8..6da3602 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -744,6 +744,8 @@ char *yytext;
 
 using namespace Director;
 
+#define yyterminate() return EOSTREAM
+
 int yyparse();
 static void count() {
 	if (debugChannelSet(-1, kDebugLingoParse))
@@ -781,7 +783,7 @@ static int checkImmediate(int token) {
 	return token;
 }
 
-#line 785 "engines/director/lingo/lingo-lex.cpp"
+#line 787 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -964,10 +966,10 @@ YY_DECL
 	register char *yy_cp, *yy_bp;
 	register int yy_act;
     
-#line 85 "engines/director/lingo/lingo-lex.l"
+#line 87 "engines/director/lingo/lingo-lex.l"
 
 
-#line 971 "engines/director/lingo/lingo-lex.cpp"
+#line 973 "engines/director/lingo/lingo-lex.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -1054,89 +1056,89 @@ do_action:	/* This label is used only to access EOF actions. */
 case 1:
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 87 "engines/director/lingo/lingo-lex.l"
+#line 89 "engines/director/lingo/lingo-lex.l"
 { g_lingo->_linenumber++; g_lingo->_colnumber = 0; }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 88 "engines/director/lingo/lingo-lex.l"
+#line 90 "engines/director/lingo/lingo-lex.l"
 
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 89 "engines/director/lingo/lingo-lex.l"
+#line 91 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 90 "engines/director/lingo/lingo-lex.l"
+#line 92 "engines/director/lingo/lingo-lex.l"
 { count(); return ' '; }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 92 "engines/director/lingo/lingo-lex.l"
+#line 94 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(yytext); return SYMBOL; }	// D3
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 94 "engines/director/lingo/lingo-lex.l"
+#line 96 "engines/director/lingo/lingo-lex.l"
 { count(); return tAFTER; }		// D3
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 95 "engines/director/lingo/lingo-lex.l"
+#line 97 "engines/director/lingo/lingo-lex.l"
 { count(); return tAND; }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 96 "engines/director/lingo/lingo-lex.l"
+#line 98 "engines/director/lingo/lingo-lex.l"
 { count(); return tBEFORE; }	// D3
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 97 "engines/director/lingo/lingo-lex.l"
+#line 99 "engines/director/lingo/lingo-lex.l"
 { count(); return tCHAR; }		// D3
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 98 "engines/director/lingo/lingo-lex.l"
+#line 100 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONTAINS; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 99 "engines/director/lingo/lingo-lex.l"
+#line 101 "engines/director/lingo/lingo-lex.l"
 { count(); return tDONE; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 100 "engines/director/lingo/lingo-lex.l"
+#line 102 "engines/director/lingo/lingo-lex.l"
 { count(); return tDOWN; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 101 "engines/director/lingo/lingo-lex.l"
+#line 103 "engines/director/lingo/lingo-lex.l"
 { count(); return tIF; }
 	YY_BREAK
 case 14:
 /* rule 14 can match eol */
 YY_RULE_SETUP
-#line 102 "engines/director/lingo/lingo-lex.l"
+#line 104 "engines/director/lingo/lingo-lex.l"
 { countnl(); return tNLELSIF; }
 	YY_BREAK
 case 15:
 /* rule 15 can match eol */
 YY_RULE_SETUP
-#line 103 "engines/director/lingo/lingo-lex.l"
+#line 105 "engines/director/lingo/lingo-lex.l"
 { countnl(); return tNLELSE; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 104 "engines/director/lingo/lingo-lex.l"
+#line 106 "engines/director/lingo/lingo-lex.l"
 { count(); return tELSE; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 105 "engines/director/lingo/lingo-lex.l"
+#line 107 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1151,162 +1153,162 @@ YY_RULE_SETUP
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 116 "engines/director/lingo/lingo-lex.l"
+#line 118 "engines/director/lingo/lingo-lex.l"
 { count(); return tFACTORY; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 117 "engines/director/lingo/lingo-lex.l"
+#line 119 "engines/director/lingo/lingo-lex.l"
 { count(); return tEXIT; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 118 "engines/director/lingo/lingo-lex.l"
+#line 120 "engines/director/lingo/lingo-lex.l"
 { count(); return tFRAME; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 119 "engines/director/lingo/lingo-lex.l"
+#line 121 "engines/director/lingo/lingo-lex.l"
 { count(); return tGLOBAL; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 120 "engines/director/lingo/lingo-lex.l"
+#line 122 "engines/director/lingo/lingo-lex.l"
 { count(); return tGO; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 121 "engines/director/lingo/lingo-lex.l"
+#line 123 "engines/director/lingo/lingo-lex.l"
 { count(); return tGO; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 122 "engines/director/lingo/lingo-lex.l"
+#line 124 "engines/director/lingo/lingo-lex.l"
 { count(); return tINSTANCE; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 123 "engines/director/lingo/lingo-lex.l"
+#line 125 "engines/director/lingo/lingo-lex.l"
 { count(); return tINTERSECTS; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 124 "engines/director/lingo/lingo-lex.l"
+#line 126 "engines/director/lingo/lingo-lex.l"
 { count(); return tINTO; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 125 "engines/director/lingo/lingo-lex.l"
+#line 127 "engines/director/lingo/lingo-lex.l"
 { count(); return tITEM; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 126 "engines/director/lingo/lingo-lex.l"
+#line 128 "engines/director/lingo/lingo-lex.l"
 { count(); return tLINE; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 127 "engines/director/lingo/lingo-lex.l"
+#line 129 "engines/director/lingo/lingo-lex.l"
 { count(); return checkImmediate(tLOOP); }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 128 "engines/director/lingo/lingo-lex.l"
+#line 130 "engines/director/lingo/lingo-lex.l"
 { count(); return tMACRO; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 129 "engines/director/lingo/lingo-lex.l"
+#line 131 "engines/director/lingo/lingo-lex.l"
 { count(); return tMETHOD; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 130 "engines/director/lingo/lingo-lex.l"
+#line 132 "engines/director/lingo/lingo-lex.l"
 { count(); return tMOD; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 131 "engines/director/lingo/lingo-lex.l"
+#line 133 "engines/director/lingo/lingo-lex.l"
 { count(); return tMOVIE; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 132 "engines/director/lingo/lingo-lex.l"
+#line 134 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEXT; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 133 "engines/director/lingo/lingo-lex.l"
+#line 135 "engines/director/lingo/lingo-lex.l"
 { count(); return tNOT; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 134 "engines/director/lingo/lingo-lex.l"
+#line 136 "engines/director/lingo/lingo-lex.l"
 { count(); return tOF; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 135 "engines/director/lingo/lingo-lex.l"
+#line 137 "engines/director/lingo/lingo-lex.l"
 { count(); return tON; }		// D3
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 136 "engines/director/lingo/lingo-lex.l"
+#line 138 "engines/director/lingo/lingo-lex.l"
 { count(); return tOPEN; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 137 "engines/director/lingo/lingo-lex.l"
+#line 139 "engines/director/lingo/lingo-lex.l"
 { count(); return tOR; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 138 "engines/director/lingo/lingo-lex.l"
+#line 140 "engines/director/lingo/lingo-lex.l"
 { count(); return tPLAY; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 139 "engines/director/lingo/lingo-lex.l"
+#line 141 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 140 "engines/director/lingo/lingo-lex.l"
+#line 142 "engines/director/lingo/lingo-lex.l"
 { count(); return tPREVIOUS; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 141 "engines/director/lingo/lingo-lex.l"
+#line 143 "engines/director/lingo/lingo-lex.l"
 { count(); return tPROPERTY; }	// D4
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 142 "engines/director/lingo/lingo-lex.l"
+#line 144 "engines/director/lingo/lingo-lex.l"
 { count(); return tPUT; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 143 "engines/director/lingo/lingo-lex.l"
+#line 145 "engines/director/lingo/lingo-lex.l"
 { count(); return checkImmediate(tREPEAT); }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 144 "engines/director/lingo/lingo-lex.l"
+#line 146 "engines/director/lingo/lingo-lex.l"
 { count(); return tSET; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 145 "engines/director/lingo/lingo-lex.l"
+#line 147 "engines/director/lingo/lingo-lex.l"
 { count(); return tSTARTS; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 146 "engines/director/lingo/lingo-lex.l"
+#line 148 "engines/director/lingo/lingo-lex.l"
 { count(); return tTELL; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 147 "engines/director/lingo/lingo-lex.l"
+#line 149 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1318,7 +1320,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 155 "engines/director/lingo/lingo-lex.l"
+#line 157 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1330,7 +1332,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 163 "engines/director/lingo/lingo-lex.l"
+#line 165 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1374,7 +1376,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 203 "engines/director/lingo/lingo-lex.l"
+#line 205 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1409,7 +1411,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 234 "engines/director/lingo/lingo-lex.l"
+#line 236 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1432,67 +1434,67 @@ YY_RULE_SETUP
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 253 "engines/director/lingo/lingo-lex.l"
+#line 255 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 254 "engines/director/lingo/lingo-lex.l"
+#line 256 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 255 "engines/director/lingo/lingo-lex.l"
+#line 257 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 256 "engines/director/lingo/lingo-lex.l"
+#line 258 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 257 "engines/director/lingo/lingo-lex.l"
+#line 259 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 258 "engines/director/lingo/lingo-lex.l"
+#line 260 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 259 "engines/director/lingo/lingo-lex.l"
+#line 261 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 260 "engines/director/lingo/lingo-lex.l"
+#line 262 "engines/director/lingo/lingo-lex.l"
 { count(); return tWORD; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 262 "engines/director/lingo/lingo-lex.l"
+#line 264 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 263 "engines/director/lingo/lingo-lex.l"
+#line 265 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 264 "engines/director/lingo/lingo-lex.l"
+#line 266 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 265 "engines/director/lingo/lingo-lex.l"
+#line 267 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 267 "engines/director/lingo/lingo-lex.l"
+#line 269 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1541,41 +1543,41 @@ YY_RULE_SETUP
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 312 "engines/director/lingo/lingo-lex.l"
+#line 314 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 313 "engines/director/lingo/lingo-lex.l"
+#line 315 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 314 "engines/director/lingo/lingo-lex.l"
+#line 316 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
 case 70:
 /* rule 70 can match eol */
 YY_RULE_SETUP
-#line 315 "engines/director/lingo/lingo-lex.l"
+#line 317 "engines/director/lingo/lingo-lex.l"
 { return '\n'; }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 316 "engines/director/lingo/lingo-lex.l"
+#line 318 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 317 "engines/director/lingo/lingo-lex.l"
+#line 319 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 319 "engines/director/lingo/lingo-lex.l"
+#line 321 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1579 "engines/director/lingo/lingo-lex.cpp"
+#line 1581 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2538,7 +2540,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 319 "engines/director/lingo/lingo-lex.l"
+#line 321 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 6a38bac..779913a 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -35,6 +35,8 @@
 
 using namespace Director;
 
+#define yyterminate() return EOSTREAM
+
 int yyparse();
 static void count() {
 	if (debugChannelSet(-1, kDebugLingoParse))


Commit: 6a96a062c732963bcacfcdb3253e8f18bda80502
    https://github.com/scummvm/scummvm/commit/6a96a062c732963bcacfcdb3253e8f18bda80502
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2017-03-07T19:34:41+01:00

Commit Message:
DIRECTOR: Lingo: Fix parsing D4 variant of 'on ...' clause

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 1b6dd61..4e6d8a0 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -66,185 +66,183 @@
    /* Put the tokens into the symbol table, so that GDB and other debuggers
       know about them.  */
    enum yytokentype {
-     EOSTREAM = 258,
-     UNARY = 259,
-     CASTREF = 260,
-     VOID = 261,
-     VAR = 262,
-     POINT = 263,
-     RECT = 264,
-     ARRAY = 265,
-     OBJECT = 266,
-     REFERENCE = 267,
-     INT = 268,
-     THEENTITY = 269,
-     THEENTITYWITHID = 270,
-     FLOAT = 271,
-     BLTIN = 272,
-     BLTINNOARGS = 273,
-     BLTINNOARGSORONE = 274,
-     BLTINONEARG = 275,
-     BLTINARGLIST = 276,
-     TWOWORDBUILTIN = 277,
-     FBLTIN = 278,
-     FBLTINNOARGS = 279,
-     FBLTINONEARG = 280,
-     FBLTINARGLIST = 281,
-     RBLTIN = 282,
-     RBLTINONEARG = 283,
-     ID = 284,
-     STRING = 285,
-     HANDLER = 286,
-     SYMBOL = 287,
-     ENDCLAUSE = 288,
-     tPLAYACCEL = 289,
-     tDOWN = 290,
-     tELSE = 291,
-     tNLELSIF = 292,
-     tEXIT = 293,
-     tFRAME = 294,
-     tGLOBAL = 295,
-     tGO = 296,
-     tIF = 297,
-     tINTO = 298,
-     tLOOP = 299,
-     tMACRO = 300,
-     tMOVIE = 301,
-     tNEXT = 302,
-     tOF = 303,
-     tPREVIOUS = 304,
-     tPUT = 305,
-     tREPEAT = 306,
-     tSET = 307,
-     tTHEN = 308,
-     tTO = 309,
-     tWHEN = 310,
-     tWITH = 311,
-     tWHILE = 312,
-     tNLELSE = 313,
-     tFACTORY = 314,
-     tMETHOD = 315,
-     tOPEN = 316,
-     tPLAY = 317,
-     tDONE = 318,
-     tINSTANCE = 319,
-     tGE = 320,
-     tLE = 321,
-     tGT = 322,
-     tLT = 323,
-     tEQ = 324,
-     tNEQ = 325,
-     tAND = 326,
-     tOR = 327,
-     tNOT = 328,
-     tMOD = 329,
-     tAFTER = 330,
-     tBEFORE = 331,
-     tCONCAT = 332,
-     tCONTAINS = 333,
-     tSTARTS = 334,
-     tCHAR = 335,
-     tITEM = 336,
-     tLINE = 337,
-     tWORD = 338,
-     tSPRITE = 339,
-     tINTERSECTS = 340,
-     tWITHIN = 341,
-     tTELL = 342,
-     tPROPERTY = 343,
-     tON = 344,
-     tME = 345
+     UNARY = 258,
+     CASTREF = 259,
+     VOID = 260,
+     VAR = 261,
+     POINT = 262,
+     RECT = 263,
+     ARRAY = 264,
+     OBJECT = 265,
+     REFERENCE = 266,
+     INT = 267,
+     THEENTITY = 268,
+     THEENTITYWITHID = 269,
+     FLOAT = 270,
+     BLTIN = 271,
+     BLTINNOARGS = 272,
+     BLTINNOARGSORONE = 273,
+     BLTINONEARG = 274,
+     BLTINARGLIST = 275,
+     TWOWORDBUILTIN = 276,
+     FBLTIN = 277,
+     FBLTINNOARGS = 278,
+     FBLTINONEARG = 279,
+     FBLTINARGLIST = 280,
+     RBLTIN = 281,
+     RBLTINONEARG = 282,
+     ID = 283,
+     STRING = 284,
+     HANDLER = 285,
+     SYMBOL = 286,
+     ENDCLAUSE = 287,
+     tPLAYACCEL = 288,
+     tDOWN = 289,
+     tELSE = 290,
+     tNLELSIF = 291,
+     tEXIT = 292,
+     tFRAME = 293,
+     tGLOBAL = 294,
+     tGO = 295,
+     tIF = 296,
+     tINTO = 297,
+     tLOOP = 298,
+     tMACRO = 299,
+     tMOVIE = 300,
+     tNEXT = 301,
+     tOF = 302,
+     tPREVIOUS = 303,
+     tPUT = 304,
+     tREPEAT = 305,
+     tSET = 306,
+     tTHEN = 307,
+     tTO = 308,
+     tWHEN = 309,
+     tWITH = 310,
+     tWHILE = 311,
+     tNLELSE = 312,
+     tFACTORY = 313,
+     tMETHOD = 314,
+     tOPEN = 315,
+     tPLAY = 316,
+     tDONE = 317,
+     tINSTANCE = 318,
+     tGE = 319,
+     tLE = 320,
+     tGT = 321,
+     tLT = 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
    };
 #endif
 /* Tokens.  */
-#define EOSTREAM 258
-#define UNARY 259
-#define CASTREF 260
-#define VOID 261
-#define VAR 262
-#define POINT 263
-#define RECT 264
-#define ARRAY 265
-#define OBJECT 266
-#define REFERENCE 267
-#define INT 268
-#define THEENTITY 269
-#define THEENTITYWITHID 270
-#define FLOAT 271
-#define BLTIN 272
-#define BLTINNOARGS 273
-#define BLTINNOARGSORONE 274
-#define BLTINONEARG 275
-#define BLTINARGLIST 276
-#define TWOWORDBUILTIN 277
-#define FBLTIN 278
-#define FBLTINNOARGS 279
-#define FBLTINONEARG 280
-#define FBLTINARGLIST 281
-#define RBLTIN 282
-#define RBLTINONEARG 283
-#define ID 284
-#define STRING 285
-#define HANDLER 286
-#define SYMBOL 287
-#define ENDCLAUSE 288
-#define tPLAYACCEL 289
-#define tDOWN 290
-#define tELSE 291
-#define tNLELSIF 292
-#define tEXIT 293
-#define tFRAME 294
-#define tGLOBAL 295
-#define tGO 296
-#define tIF 297
-#define tINTO 298
-#define tLOOP 299
-#define tMACRO 300
-#define tMOVIE 301
-#define tNEXT 302
-#define tOF 303
-#define tPREVIOUS 304
-#define tPUT 305
-#define tREPEAT 306
-#define tSET 307
-#define tTHEN 308
-#define tTO 309
-#define tWHEN 310
-#define tWITH 311
-#define tWHILE 312
-#define tNLELSE 313
-#define tFACTORY 314
-#define tMETHOD 315
-#define tOPEN 316
-#define tPLAY 317
-#define tDONE 318
-#define tINSTANCE 319
-#define tGE 320
-#define tLE 321
-#define tGT 322
-#define tLT 323
-#define tEQ 324
-#define tNEQ 325
-#define tAND 326
-#define tOR 327
-#define tNOT 328
-#define tMOD 329
-#define tAFTER 330
-#define tBEFORE 331
-#define tCONCAT 332
-#define tCONTAINS 333
-#define tSTARTS 334
-#define tCHAR 335
-#define tITEM 336
-#define tLINE 337
-#define tWORD 338
-#define tSPRITE 339
-#define tINTERSECTS 340
-#define tWITHIN 341
-#define tTELL 342
-#define tPROPERTY 343
-#define tON 344
-#define tME 345
+#define UNARY 258
+#define CASTREF 259
+#define VOID 260
+#define VAR 261
+#define POINT 262
+#define RECT 263
+#define ARRAY 264
+#define OBJECT 265
+#define REFERENCE 266
+#define INT 267
+#define THEENTITY 268
+#define THEENTITYWITHID 269
+#define FLOAT 270
+#define BLTIN 271
+#define BLTINNOARGS 272
+#define BLTINNOARGSORONE 273
+#define BLTINONEARG 274
+#define BLTINARGLIST 275
+#define TWOWORDBUILTIN 276
+#define FBLTIN 277
+#define FBLTINNOARGS 278
+#define FBLTINONEARG 279
+#define FBLTINARGLIST 280
+#define RBLTIN 281
+#define RBLTINONEARG 282
+#define ID 283
+#define STRING 284
+#define HANDLER 285
+#define SYMBOL 286
+#define ENDCLAUSE 287
+#define tPLAYACCEL 288
+#define tDOWN 289
+#define tELSE 290
+#define tNLELSIF 291
+#define tEXIT 292
+#define tFRAME 293
+#define tGLOBAL 294
+#define tGO 295
+#define tIF 296
+#define tINTO 297
+#define tLOOP 298
+#define tMACRO 299
+#define tMOVIE 300
+#define tNEXT 301
+#define tOF 302
+#define tPREVIOUS 303
+#define tPUT 304
+#define tREPEAT 305
+#define tSET 306
+#define tTHEN 307
+#define tTO 308
+#define tWHEN 309
+#define tWITH 310
+#define tWHILE 311
+#define tNLELSE 312
+#define tFACTORY 313
+#define tMETHOD 314
+#define tOPEN 315
+#define tPLAY 316
+#define tDONE 317
+#define tINSTANCE 318
+#define tGE 319
+#define tLE 320
+#define tGT 321
+#define tLT 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
 
 
 
@@ -312,7 +310,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 193 of yacc.c.  */
-#line 316 "engines/director/lingo/lingo-gr.cpp"
+#line 314 "engines/director/lingo/lingo-gr.cpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -325,7 +323,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 329 "engines/director/lingo/lingo-gr.cpp"
+#line 327 "engines/director/lingo/lingo-gr.cpp"
 
 #ifdef short
 # undef short
@@ -540,20 +538,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  124
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1880
+#define YYLAST   1878
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  106
+#define YYNTOKENS  105
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  43
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  163
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  358
+#define YYNSTATES  357
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   345
+#define YYMAXUTOK   344
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -562,15 +560,15 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      98,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      97,     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,    97,    92,     2,
-      99,   100,    95,    93,   105,    94,     2,    96,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    96,    91,     2,
+      98,    99,    94,    92,   104,    93,     2,    95,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     102,    91,   101,     2,     2,     2,     2,     2,     2,     2,
+     101,    90,   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,     2,
-       2,   103,     2,   104,     2,     2,     2,     2,     2,     2,
+       2,   102,     2,   103,     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,
@@ -595,7 +593,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
+      85,    86,    87,    88,    89
 };
 
 #if YYDEBUG
@@ -618,99 +616,99 @@ static const yytype_uint16 yyprhs[] =
      482,   487,   490,   494,   496,   500,   502,   506,   508,   512,
      515,   518,   521,   524,   528,   531,   534,   536,   540,   543,
      546,   549,   553,   556,   557,   561,   562,   571,   574,   575,
-     584,   592,   600,   603,   604,   606,   610,   615,   616,   619,
-     620,   622,   626,   628
+     584,   592,   599,   602,   603,   605,   609,   614,   615,   618,
+     619,   621,   625,   627
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     107,     0,    -1,   107,   108,   109,    -1,   109,    -1,     1,
-     108,    -1,    98,    -1,    -1,   140,    -1,   146,    -1,   112,
-      -1,    50,   129,    43,    29,    -1,    50,   129,    43,   130,
-      -1,    50,   129,    75,   129,    -1,    50,   129,    76,   129,
-      -1,    52,    29,    91,   129,    -1,    52,    14,    91,   129,
-      -1,    52,    15,   129,    91,   129,    -1,    52,    29,    54,
-     129,    -1,    52,    14,    54,   129,    -1,    52,    15,   129,
-      54,   129,    -1,   129,    -1,   131,    -1,   111,    -1,   113,
-      -1,   120,    99,   119,   100,   126,   125,    33,    -1,   121,
-      91,   129,   125,    54,   129,   125,   126,   125,    33,    -1,
-     121,    91,   129,   125,    35,    54,   129,   125,   126,   125,
-      33,    -1,   127,   111,   125,    -1,   128,   129,   108,   126,
-     125,    33,    -1,   128,   129,    54,   129,    -1,   122,   119,
-      53,   108,   126,   125,    33,    -1,   122,   119,    53,   108,
-     126,   125,    58,   126,   125,    33,    -1,   122,   119,    53,
-     108,   126,   125,   124,   115,   125,    33,    -1,   122,   119,
-      53,   124,   111,   125,    -1,   122,   119,    53,   124,   111,
-     125,    58,   124,   111,   125,    -1,   122,   119,    53,   124,
-     111,   125,   116,   125,   114,   125,    -1,    -1,    58,   124,
-     111,    -1,   115,   118,    -1,   118,    -1,   116,   117,    -1,
-     117,    -1,   123,   119,    53,   124,   112,   125,    -1,   116,
-      -1,   123,   119,    53,   124,   126,   125,    -1,   129,    -1,
-     129,    91,   129,    -1,    99,   119,   100,    -1,    51,    57,
-      -1,    51,    56,    29,    -1,    42,    -1,    37,    -1,    -1,
-      -1,    -1,   126,   108,    -1,   126,   112,    -1,    55,    29,
-      53,    -1,    87,    -1,    13,    -1,    16,    -1,    32,    -1,
-      30,    -1,    24,    -1,    25,   129,    -1,    26,   148,    -1,
-      26,    99,   148,   100,    -1,    29,    99,   147,   100,    -1,
-      29,    -1,    14,    -1,    15,   129,    -1,   110,    -1,   129,
-      93,   129,    -1,   129,    94,   129,    -1,   129,    95,   129,
-      -1,   129,    96,   129,    -1,   129,    74,   129,    -1,   129,
-     101,   129,    -1,   129,   102,   129,    -1,   129,    70,   129,
-      -1,   129,    65,   129,    -1,   129,    66,   129,    -1,   129,
-      71,   129,    -1,   129,    72,   129,    -1,    73,   129,    -1,
-     129,    92,   129,    -1,   129,    77,   129,    -1,   129,    78,
-     129,    -1,   129,    79,   129,    -1,    93,   129,    -1,    94,
-     129,    -1,    99,   129,   100,    -1,   103,   147,   104,    -1,
-      84,   129,    85,   129,    -1,    84,   129,    86,   129,    -1,
-      80,   129,    48,   129,    -1,    80,   129,    54,   129,    48,
-     129,    -1,    81,   129,    48,   129,    -1,    81,   129,    54,
-     129,    48,   129,    -1,    82,   129,    48,   129,    -1,    82,
-     129,    54,   129,    48,   129,    -1,    83,   129,    48,   129,
-      -1,    83,   129,    54,   129,    48,   129,    -1,    28,   129,
-      -1,    50,   129,    -1,   135,    -1,   138,    -1,    38,    51,
-      -1,    38,    -1,    40,   132,    -1,    88,   133,    -1,    64,
-     134,    -1,    18,    -1,    20,   129,    -1,    19,   129,    -1,
-      19,    -1,    21,   148,    -1,    21,    99,   148,   100,    -1,
-      90,    99,    29,   100,    -1,    90,    99,    29,   105,   147,
-     100,    -1,    61,   129,    56,   129,    -1,    61,   129,    -1,
-      22,    29,   147,    -1,    29,    -1,   132,   105,    29,    -1,
-      29,    -1,   133,   105,    29,    -1,    29,    -1,   134,   105,
-      29,    -1,    41,    44,    -1,    41,    47,    -1,    41,    49,
-      -1,    41,   136,    -1,    41,   136,   137,    -1,    41,   137,
-      -1,    39,   129,    -1,   129,    -1,    48,    46,   129,    -1,
-      46,   129,    -1,    62,    63,    -1,    62,   136,    -1,    62,
-     136,   137,    -1,    62,   137,    -1,    -1,    34,   139,   147,
-      -1,    -1,    45,    29,   141,   124,   144,   108,   145,   126,
-      -1,    59,    29,    -1,    -1,    60,    29,   142,   124,   144,
-     108,   145,   126,    -1,   143,   124,   144,   108,   145,   126,
-      33,    -1,   143,   124,   144,   108,   145,   126,     3,    -1,
-      89,    29,    -1,    -1,    29,    -1,   144,   105,    29,    -1,
-     144,   108,   105,    29,    -1,    -1,    29,   148,    -1,    -1,
-     129,    -1,   147,   105,   129,    -1,   129,    -1,   148,   105,
-     129,    -1
+     106,     0,    -1,   106,   107,   108,    -1,   108,    -1,     1,
+     107,    -1,    97,    -1,    -1,   139,    -1,   145,    -1,   111,
+      -1,    49,   128,    42,    28,    -1,    49,   128,    42,   129,
+      -1,    49,   128,    74,   128,    -1,    49,   128,    75,   128,
+      -1,    51,    28,    90,   128,    -1,    51,    13,    90,   128,
+      -1,    51,    14,   128,    90,   128,    -1,    51,    28,    53,
+     128,    -1,    51,    13,    53,   128,    -1,    51,    14,   128,
+      53,   128,    -1,   128,    -1,   130,    -1,   110,    -1,   112,
+      -1,   119,    98,   118,    99,   125,   124,    32,    -1,   120,
+      90,   128,   124,    53,   128,   124,   125,   124,    32,    -1,
+     120,    90,   128,   124,    34,    53,   128,   124,   125,   124,
+      32,    -1,   126,   110,   124,    -1,   127,   128,   107,   125,
+     124,    32,    -1,   127,   128,    53,   128,    -1,   121,   118,
+      52,   107,   125,   124,    32,    -1,   121,   118,    52,   107,
+     125,   124,    57,   125,   124,    32,    -1,   121,   118,    52,
+     107,   125,   124,   123,   114,   124,    32,    -1,   121,   118,
+      52,   123,   110,   124,    -1,   121,   118,    52,   123,   110,
+     124,    57,   123,   110,   124,    -1,   121,   118,    52,   123,
+     110,   124,   115,   124,   113,   124,    -1,    -1,    57,   123,
+     110,    -1,   114,   117,    -1,   117,    -1,   115,   116,    -1,
+     116,    -1,   122,   118,    52,   123,   111,   124,    -1,   115,
+      -1,   122,   118,    52,   123,   125,   124,    -1,   128,    -1,
+     128,    90,   128,    -1,    98,   118,    99,    -1,    50,    56,
+      -1,    50,    55,    28,    -1,    41,    -1,    36,    -1,    -1,
+      -1,    -1,   125,   107,    -1,   125,   111,    -1,    54,    28,
+      52,    -1,    86,    -1,    12,    -1,    15,    -1,    31,    -1,
+      29,    -1,    23,    -1,    24,   128,    -1,    25,   147,    -1,
+      25,    98,   147,    99,    -1,    28,    98,   146,    99,    -1,
+      28,    -1,    13,    -1,    14,   128,    -1,   109,    -1,   128,
+      92,   128,    -1,   128,    93,   128,    -1,   128,    94,   128,
+      -1,   128,    95,   128,    -1,   128,    73,   128,    -1,   128,
+     100,   128,    -1,   128,   101,   128,    -1,   128,    69,   128,
+      -1,   128,    64,   128,    -1,   128,    65,   128,    -1,   128,
+      70,   128,    -1,   128,    71,   128,    -1,    72,   128,    -1,
+     128,    91,   128,    -1,   128,    76,   128,    -1,   128,    77,
+     128,    -1,   128,    78,   128,    -1,    92,   128,    -1,    93,
+     128,    -1,    98,   128,    99,    -1,   102,   146,   103,    -1,
+      83,   128,    84,   128,    -1,    83,   128,    85,   128,    -1,
+      79,   128,    47,   128,    -1,    79,   128,    53,   128,    47,
+     128,    -1,    80,   128,    47,   128,    -1,    80,   128,    53,
+     128,    47,   128,    -1,    81,   128,    47,   128,    -1,    81,
+     128,    53,   128,    47,   128,    -1,    82,   128,    47,   128,
+      -1,    82,   128,    53,   128,    47,   128,    -1,    27,   128,
+      -1,    49,   128,    -1,   134,    -1,   137,    -1,    37,    50,
+      -1,    37,    -1,    39,   131,    -1,    87,   132,    -1,    63,
+     133,    -1,    17,    -1,    19,   128,    -1,    18,   128,    -1,
+      18,    -1,    20,   147,    -1,    20,    98,   147,    99,    -1,
+      89,    98,    28,    99,    -1,    89,    98,    28,   104,   146,
+      99,    -1,    60,   128,    55,   128,    -1,    60,   128,    -1,
+      21,    28,   146,    -1,    28,    -1,   131,   104,    28,    -1,
+      28,    -1,   132,   104,    28,    -1,    28,    -1,   133,   104,
+      28,    -1,    40,    43,    -1,    40,    46,    -1,    40,    48,
+      -1,    40,   135,    -1,    40,   135,   136,    -1,    40,   136,
+      -1,    38,   128,    -1,   128,    -1,    47,    45,   128,    -1,
+      45,   128,    -1,    61,    62,    -1,    61,   135,    -1,    61,
+     135,   136,    -1,    61,   136,    -1,    -1,    33,   138,   146,
+      -1,    -1,    44,    28,   140,   123,   143,   107,   144,   125,
+      -1,    58,    28,    -1,    -1,    59,    28,   141,   123,   143,
+     107,   144,   125,    -1,   142,   123,   143,   107,   144,   125,
+      32,    -1,   142,   123,   143,   107,   144,   125,    -1,    88,
+      28,    -1,    -1,    28,    -1,   143,   104,    28,    -1,   143,
+     107,   104,    28,    -1,    -1,    28,   147,    -1,    -1,   128,
+      -1,   146,   104,   128,    -1,   128,    -1,   147,   104,   128,
+      -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   121,   121,   122,   123,   126,   131,   132,   133,   134,
-     137,   143,   146,   147,   148,   154,   162,   170,   176,   184,
-     194,   195,   198,   199,   204,   217,   235,   249,   255,   258,
-     263,   273,   285,   297,   307,   317,   329,   330,   333,   334,
-     337,   338,   341,   349,   350,   358,   359,   360,   363,   366,
-     373,   380,   388,   391,   394,   395,   396,   399,   405,   409,
-     410,   413,   416,   419,   422,   425,   426,   427,   430,   434,
-     441,   447,   448,   449,   450,   451,   452,   453,   454,   455,
-     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
-     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
-     476,   477,   478,   481,   486,   487,   488,   489,   490,   491,
-     492,   493,   494,   497,   500,   503,   507,   508,   509,   510,
-     511,   512,   513,   516,   517,   520,   521,   524,   525,   536,
-     537,   538,   539,   542,   545,   550,   551,   554,   555,   558,
-     559,   562,   565,   568,   568,   598,   598,   603,   606,   606,
-     611,   619,   626,   628,   629,   630,   631,   634,   638,   646,
-     647,   648,   651,   652
+       0,   119,   119,   120,   121,   124,   129,   130,   131,   132,
+     135,   141,   144,   145,   146,   152,   160,   168,   174,   182,
+     192,   193,   196,   197,   202,   215,   233,   247,   253,   256,
+     261,   271,   283,   295,   305,   315,   327,   328,   331,   332,
+     335,   336,   339,   347,   348,   356,   357,   358,   361,   364,
+     371,   378,   386,   389,   392,   393,   394,   397,   403,   407,
+     408,   411,   414,   417,   420,   423,   424,   425,   428,   432,
+     439,   445,   446,   447,   448,   449,   450,   451,   452,   453,
+     454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
+     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
+     474,   475,   476,   479,   484,   485,   486,   487,   488,   489,
+     490,   491,   492,   495,   498,   501,   505,   506,   507,   508,
+     509,   510,   511,   514,   515,   518,   519,   522,   523,   534,
+     535,   536,   537,   540,   543,   548,   549,   552,   553,   556,
+     557,   560,   563,   566,   566,   596,   596,   601,   604,   604,
+     609,   617,   624,   626,   627,   628,   629,   632,   636,   644,
+     645,   646,   649,   650
 };
 #endif
 
@@ -719,11 +717,11 @@ static const yytype_uint16 yyrline[] =
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "EOSTREAM", "UNARY", "CASTREF", "VOID",
-  "VAR", "POINT", "RECT", "ARRAY", "OBJECT", "REFERENCE", "INT",
-  "THEENTITY", "THEENTITYWITHID", "FLOAT", "BLTIN", "BLTINNOARGS",
-  "BLTINNOARGSORONE", "BLTINONEARG", "BLTINARGLIST", "TWOWORDBUILTIN",
-  "FBLTIN", "FBLTINNOARGS", "FBLTINONEARG", "FBLTINARGLIST", "RBLTIN",
+  "$end", "error", "$undefined", "UNARY", "CASTREF", "VOID", "VAR",
+  "POINT", "RECT", "ARRAY", "OBJECT", "REFERENCE", "INT", "THEENTITY",
+  "THEENTITYWITHID", "FLOAT", "BLTIN", "BLTINNOARGS", "BLTINNOARGSORONE",
+  "BLTINONEARG", "BLTINARGLIST", "TWOWORDBUILTIN", "FBLTIN",
+  "FBLTINNOARGS", "FBLTINONEARG", "FBLTINARGLIST", "RBLTIN",
   "RBLTINONEARG", "ID", "STRING", "HANDLER", "SYMBOL", "ENDCLAUSE",
   "tPLAYACCEL", "tDOWN", "tELSE", "tNLELSIF", "tEXIT", "tFRAME", "tGLOBAL",
   "tGO", "tIF", "tINTO", "tLOOP", "tMACRO", "tMOVIE", "tNEXT", "tOF",
@@ -759,31 +757,31 @@ 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,    61,    38,    43,    45,    42,    47,    37,    10,    40,
-      41,    62,    60,    91,    93,    44
+      61,    38,    43,    45,    42,    47,    37,    10,    40,    41,
+      62,    60,    91,    93,    44
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   106,   107,   107,   107,   108,   109,   109,   109,   109,
-     110,   110,   110,   110,   110,   110,   110,   110,   110,   110,
-     111,   111,   112,   112,   112,   112,   112,   112,   112,   112,
-     113,   113,   113,   113,   113,   113,   114,   114,   115,   115,
-     116,   116,   117,   118,   118,   119,   119,   119,   120,   121,
-     122,   123,   124,   125,   126,   126,   126,   127,   128,   129,
-     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,   129,   130,   131,   131,   131,   131,   131,   131,
-     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   131,   131,   132,   132,   133,   133,   134,   134,   135,
-     135,   135,   135,   135,   135,   136,   136,   137,   137,   138,
-     138,   138,   138,   139,   138,   141,   140,   140,   142,   140,
-     140,   140,   143,   144,   144,   144,   144,   145,   146,   147,
-     147,   147,   148,   148
+       0,   105,   106,   106,   106,   107,   108,   108,   108,   108,
+     109,   109,   109,   109,   109,   109,   109,   109,   109,   109,
+     110,   110,   111,   111,   111,   111,   111,   111,   111,   111,
+     112,   112,   112,   112,   112,   112,   113,   113,   114,   114,
+     115,   115,   116,   117,   117,   118,   118,   118,   119,   120,
+     121,   122,   123,   124,   125,   125,   125,   126,   127,   128,
+     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
+     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
+     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
+     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
+     128,   128,   128,   129,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   131,   131,   132,   132,   133,   133,   134,
+     134,   134,   134,   134,   134,   135,   135,   136,   136,   137,
+     137,   137,   137,   138,   137,   140,   139,   139,   141,   139,
+     139,   139,   142,   143,   143,   143,   143,   144,   145,   146,
+     146,   146,   147,   147
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -804,7 +802,7 @@ static const yytype_uint8 yyr2[] =
        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,     8,
-       7,     7,     2,     0,     1,     3,     4,     0,     2,     0,
+       7,     6,     2,     0,     1,     3,     4,     0,     2,     0,
        1,     3,     1,     3
 };
 
@@ -843,19 +841,19 @@ static const yytype_uint8 yydefact[] =
       19,    16,     0,     0,     0,     0,     0,     0,    53,     0,
        0,    53,    53,    55,    56,     0,   155,     0,    54,   157,
      157,    96,    98,   100,   102,   119,     0,     0,    53,    52,
-      33,    28,   156,     0,    54,    54,    24,    53,    54,    30,
-      54,     0,    51,    52,    53,    41,     0,   151,   150,   146,
-     149,    54,    53,    53,    53,    43,    39,     0,     0,    40,
-      36,     0,    53,     0,     0,    38,     0,     0,    53,    52,
-      53,    52,     0,    25,    31,    32,    52,    34,     0,    35,
-       0,    26,    54,    37,    53,    53,    42,    44
+      33,    28,   156,   151,    54,    54,    24,    53,    54,    30,
+      54,     0,    51,    52,    53,    41,     0,   150,   146,   149,
+      54,    53,    53,    53,    43,    39,     0,     0,    40,    36,
+       0,    53,     0,     0,    38,     0,     0,    53,    52,    53,
+      52,     0,    25,    31,    32,    52,    34,     0,    35,     0,
+      26,    54,    37,    53,    53,    42,    44
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    46,   283,    47,    48,    49,   284,    51,   340,   324,
-     325,   315,   326,   129,    52,    53,    54,   316,   149,   202,
+      -1,    46,   283,    47,    48,    49,   284,    51,   339,   323,
+     324,   315,   325,   129,    52,    53,    54,   316,   149,   202,
      265,    55,    56,    57,   232,    58,    83,   116,   108,    59,
       91,    92,    60,    80,    61,   165,   176,    62,   222,   288,
       63,   158,    73
@@ -863,55 +861,55 @@ static const yytype_int16 yydefgoto[] =
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -258
+#define YYPACT_NINF -272
 static const yytype_int16 yypact[] =
 {
-     340,   -78,  -258,  -258,   990,  -258,  -258,   990,   990,  1062,
-      -1,  -258,   990,  1102,  1174,  -258,  -258,  -258,   -11,    36,
-     878,  -258,    54,   990,    46,    37,    61,    65,    67,   990,
-     950,    71,   990,   990,   990,   990,   990,   990,  -258,    80,
-      86,   -77,   990,   990,   990,   990,     3,  -258,  -258,  -258,
-    -258,  -258,    17,    26,  1214,   796,   990,  1778,  -258,  -258,
-    -258,  -258,  -258,  -258,  -258,  -258,    19,   990,  1778,  1778,
-    1778,   990,  1778,    14,   990,  1778,   990,    14,   990,    14,
-     990,  -258,  -258,    15,   990,  -258,   990,  -258,    76,  -258,
-    1778,    34,  -258,  -258,  1249,    94,  -258,   -43,   990,   -38,
-      73,  -258,  -258,  1613,  -258,    34,  -258,  -258,    25,   -52,
-    1282,  1315,  1348,  1381,  1646,  -258,    27,  -258,    95,   -52,
-     -52,  1712,  1778,     2,  -258,   523,  1214,   990,  1214,    78,
-    1745,  -258,  1546,   990,   990,   990,   990,   990,   990,   990,
-     990,   990,   990,   990,   990,   990,   990,   990,   990,   104,
-     990,  1249,  1712,   -31,   990,    48,   -27,  1712,   -14,    48,
-     125,  1778,  1778,   990,  -258,  -258,    83,   990,   990,  -258,
-     990,   990,  1580,   990,   990,  -258,  -258,   990,  -258,   127,
-     990,   990,   990,   990,   990,   990,   990,   990,   990,   990,
-     128,    -8,  -258,  -258,   990,  -258,    58,  1778,    59,  1679,
-     -78,   990,  -258,   990,  -258,   158,   158,   158,   -52,   -52,
-     -52,  1778,   158,   158,   236,   770,   770,   -52,   -52,  1778,
-    1778,  -258,   -42,  -258,  1778,  -258,  -258,  -258,  1778,   104,
-     990,  -258,  -258,  1778,  1778,  1778,  1778,   990,   990,  1778,
-    1778,   104,  1778,  -258,  1778,  1414,  1778,  1447,  1778,  1480,
-    1778,  1513,  1778,  1778,  -258,  -258,   990,  1778,  -258,   -12,
-    -258,  -258,   796,  1778,  1778,   614,   131,    56,   -42,  1778,
-    1778,  1778,   -42,   990,   990,   990,   990,    -7,   614,   108,
-     990,   614,  -258,  -258,  -258,   130,  -258,   136,  -258,    56,
-      56,  1778,  1778,  1778,  1778,  -258,   133,   990,  1778,   -26,
-     -19,  -258,  -258,   432,  -258,  -258,  -258,  1778,  -258,  -258,
-    -258,   139,  -258,  -258,   139,  -258,  1214,  -258,  -258,   614,
-     614,  -258,   614,   614,   139,   139,  -258,  1214,   796,  -258,
-     109,   117,   614,   140,   146,  -258,   147,   138,  -258,  -258,
-    -258,  -258,   160,  -258,  -258,  -258,  -258,  -258,   796,  -258,
-     705,  -258,   705,  -258,  -258,   614,  -258,  -258
+     340,   -77,  -272,  -272,   989,  -272,  -272,   989,   989,  1061,
+      39,  -272,   989,  1101,  1173,  -272,  -272,  -272,    24,    58,
+     877,  -272,    77,   989,    15,    37,    80,    81,    83,   989,
+     949,    85,   989,   989,   989,   989,   989,   989,  -272,    86,
+      87,   -76,   989,   989,   989,   989,     3,  -272,  -272,  -272,
+    -272,  -272,    19,    26,  1213,   795,   989,  1777,  -272,  -272,
+    -272,  -272,  -272,  -272,  -272,  -272,    20,   989,  1777,  1777,
+    1777,   989,  1777,    16,   989,  1777,   989,    16,   989,    16,
+     989,  -272,  -272,    17,   989,  -272,   989,  -272,    78,  -272,
+    1777,    35,  -272,  -272,  1248,    91,  -272,   -51,   989,   -42,
+      72,  -272,  -272,  1612,  -272,    35,  -272,  -272,    22,   -72,
+    1281,  1314,  1347,  1380,  1645,  -272,    27,  -272,   102,   -72,
+     -72,  1711,  1777,    -9,  -272,   431,  1213,   989,  1213,   100,
+    1744,  -272,  1545,   989,   989,   989,   989,   989,   989,   989,
+     989,   989,   989,   989,   989,   989,   989,   989,   989,   104,
+     989,  1248,  1711,   -46,   989,    29,   -45,  1711,   -15,    29,
+     126,  1777,  1777,   989,  -272,  -272,    74,   989,   989,  -272,
+     989,   989,  1579,   989,   989,  -272,  -272,   989,  -272,   128,
+     989,   989,   989,   989,   989,   989,   989,   989,   989,   989,
+     129,    -8,  -272,  -272,   989,  -272,    59,  1777,    60,  1678,
+     -77,   989,  -272,   989,  -272,   238,   238,   238,   -72,   -72,
+     -72,  1777,   238,   238,   127,   769,   769,   -72,   -72,  1777,
+    1777,  -272,   -28,  -272,  1777,  -272,  -272,  -272,  1777,   104,
+     989,  -272,  -272,  1777,  1777,  1777,  1777,   989,   989,  1777,
+    1777,   104,  1777,  -272,  1777,  1413,  1777,  1446,  1777,  1479,
+    1777,  1512,  1777,  1777,  -272,  -272,   989,  1777,  -272,   -11,
+    -272,  -272,   795,  1777,  1777,   613,   132,    57,   -28,  1777,
+    1777,  1777,   -28,   989,   989,   989,   989,    -6,   613,   109,
+     989,   613,  -272,  -272,  -272,   131,  -272,   137,  -272,    57,
+      57,  1777,  1777,  1777,  1777,  -272,   134,   989,  1777,   -25,
+     -30,  -272,  -272,   522,  -272,  -272,  -272,  1777,  -272,  -272,
+    -272,   140,  -272,  -272,   140,  -272,  1213,  -272,   613,   613,
+    -272,   613,   613,   140,   140,  -272,  1213,   795,  -272,   110,
+     118,   613,   141,   145,  -272,   148,   139,  -272,  -272,  -272,
+    -272,   160,  -272,  -272,  -272,  -272,  -272,   795,  -272,   704,
+    -272,   704,  -272,  -272,   613,  -272,  -272
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -258,  -258,    18,    72,  -258,   -49,     0,  -258,  -258,  -258,
-    -104,  -255,  -126,  -124,  -258,  -258,  -258,  -257,  -105,   -20,
-    -200,  -258,  -258,     1,  -258,  -258,  -258,  -258,  -258,  -258,
-     169,   -29,  -258,  -258,  -258,  -258,  -258,  -258,  -212,  -176,
-    -258,   -33,    13
+    -272,  -272,    18,    68,  -272,   -54,     0,  -272,  -272,  -272,
+    -106,  -258,  -124,  -110,  -272,  -272,  -272,  -271,  -103,   -18,
+    -198,  -272,  -272,     1,  -272,  -272,  -272,  -272,  -272,  -272,
+     171,   -13,  -272,  -272,  -272,  -272,  -272,  -272,  -180,  -186,
+    -272,   -33,    12
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -921,42 +919,51 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -7
 static const yytype_int16 yytable[] =
 {
-      50,   106,   196,   124,   198,    68,   131,   309,    69,    70,
-      72,   170,   123,    75,    72,    72,   173,   268,   312,    65,
-      64,    90,   118,   279,    94,   139,    77,    79,    74,   272,
-     103,    90,   310,   109,   110,   111,   112,   113,   114,   313,
-      81,   155,   280,   119,   120,   121,   122,   159,   171,   147,
-     148,    97,    98,   174,   327,   130,    64,   132,   278,   329,
-     229,   281,   164,   266,   125,    82,    99,   327,   151,   223,
-     329,   241,   152,   225,   154,   122,   178,   152,   154,   157,
-      86,   122,    88,    93,   153,   161,   226,   162,   303,   156,
-     100,   194,   255,   295,   101,   262,   102,   256,   194,   172,
-     107,    64,    95,    96,   319,   320,   193,   194,   322,   115,
-     323,   230,   231,   304,   305,   117,   126,   127,   150,   154,
-     160,   332,   163,   169,   191,    50,   175,   130,   197,   199,
-     179,   200,   190,   221,   205,   206,   207,   208,   209,   210,
+      50,   131,   170,   124,   139,    68,   312,   309,    69,    70,
+      72,   173,   123,    75,    72,    72,   196,   106,   198,    65,
+      64,    90,   118,   279,    94,    77,    79,   313,   147,   148,
+     103,    90,   310,   109,   110,   111,   112,   113,   114,   171,
+     326,   155,   280,   119,   120,   121,   122,   159,   174,   268,
+      97,    98,   326,   223,   225,   130,   328,   132,   154,   154,
+     278,   272,   229,   281,   125,    99,   328,    74,   151,    64,
+      95,    96,   152,   241,    81,   122,   266,   152,   164,   157,
+      86,   122,    88,   153,   226,   161,    82,   162,   156,   194,
+     303,   255,   178,   295,   193,   194,   256,   262,   194,   172,
+      64,   230,   231,   304,   305,    93,   318,   319,   100,   101,
+     321,   102,   322,   107,   115,   117,   127,   126,   150,   169,
+     154,   160,   331,   163,   175,    50,   179,   130,   197,   199,
+     191,   190,   221,   194,   205,   206,   207,   208,   209,   210,
      211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     204,   122,   355,   194,   227,   224,   243,   254,   258,   260,
-     286,   287,   297,   301,   228,   302,   306,   339,   233,   234,
-     341,   235,   236,   343,   239,   240,   312,   259,   242,   344,
-     345,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   346,   331,   351,   311,   257,   314,   195,   335,   105,
-       0,     0,   263,   337,   264,     0,     0,     0,   328,     0,
-       0,     0,     0,   282,     0,     0,     0,     0,   261,     0,
-       0,     0,     0,   277,     0,     0,     0,     0,     0,   136,
-     137,   269,   138,     0,   348,   139,   350,     0,   270,   271,
-     267,   352,     0,     0,     0,   285,     0,     0,     0,     0,
-     142,   143,   144,   145,   146,     0,     0,   122,   296,   147,
-     148,   299,   300,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   291,   292,   293,   294,   308,   338,
-       0,   298,     0,     0,     0,     0,   289,   321,     0,     0,
-     290,     0,     0,     0,   330,     0,     0,     0,   307,   353,
-       0,     0,   333,   334,   336,     0,     0,   136,   137,     0,
-     138,     0,   342,   139,     0,     0,     0,   130,   347,     0,
-     349,     0,     0,     0,     0,     0,     0,     0,   130,   143,
-     144,   145,   146,     0,   356,   357,     0,   147,   148,     0,
-      -6,     1,     0,     0,     0,     0,     0,     0,     0,     0,
-     354,     0,   354,     2,     3,     4,     5,     0,     6,     7,
+     204,   122,   200,   354,   227,   224,   243,   254,   258,   260,
+     286,   287,   297,   301,   228,   302,   306,   338,   233,   234,
+     340,   235,   236,   342,   239,   240,   312,   343,   242,   259,
+     344,   244,   245,   246,   247,   248,   249,   250,   251,   252,
+     253,   345,   350,   195,   314,   257,   311,   136,   137,   334,
+     138,   105,   263,   139,   264,     0,   330,     0,   282,     0,
+     327,     0,     0,     0,     0,     0,   336,     0,   261,   143,
+     144,   145,   146,   277,     0,     0,     0,   147,   148,     0,
+       0,   269,     0,     0,     0,   347,     0,   349,   270,   271,
+     267,     0,   351,     0,     0,     0,     0,   285,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   122,     0,     0,
+     296,     0,     0,   299,   300,     0,     0,     0,     0,     0,
+       0,     0,     0,   337,   291,   292,   293,   294,     0,     0,
+     308,   298,     0,     0,     0,     0,   289,     0,     0,   320,
+     290,     0,     0,   352,     0,     0,   329,     0,   307,     0,
+       0,     0,     0,   332,   333,   335,     0,     0,   136,   137,
+       0,   138,     0,   341,   139,     0,     0,   130,     0,   346,
+       0,   348,     0,     0,     0,     0,     0,   130,     0,   142,
+     143,   144,   145,   146,     0,   355,   356,     0,   147,   148,
+      -6,     1,     0,     0,     0,     0,     0,     0,     0,   353,
+       0,   353,     2,     3,     4,     5,     0,     6,     7,     8,
+       9,    10,     0,    11,    12,    13,     0,     0,    14,    15,
+       0,    16,     0,    17,     0,     0,     0,    18,     0,    19,
+      20,    21,     0,     0,    22,     0,     0,     0,     0,    23,
+      24,    25,     0,     0,    26,     0,     0,     0,    27,    28,
+      29,    30,     0,    31,     0,     0,     0,     0,     0,     0,
+       0,     0,    32,     0,     0,     0,     0,     0,     0,    33,
+      34,    35,    36,    37,     0,     0,    38,    39,    40,    41,
+       0,     0,    42,    43,     0,     0,     0,    -6,    44,     0,
+       0,     0,    45,     2,     3,     4,     5,     0,     6,     7,
        8,     9,    10,     0,    11,    12,    13,     0,     0,    14,
       15,     0,    16,     0,    17,     0,     0,     0,    18,     0,
       19,    20,    21,     0,     0,    22,     0,     0,     0,     0,
@@ -964,10 +971,19 @@ static const yytype_int16 yytable[] =
       28,    29,    30,     0,    31,     0,     0,     0,     0,     0,
        0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
       33,    34,    35,    36,    37,     0,     0,    38,    39,    40,
-      41,     0,     0,    42,    43,   317,     0,     0,    -6,    44,
-       0,     0,     0,    45,     0,     2,     3,     4,     5,     0,
+      41,     0,     0,    42,    43,     0,     0,     0,     0,    44,
+       0,     0,     0,    45,     2,     3,     4,     5,     0,     6,
+       7,     8,     9,    10,     0,    11,    12,    13,     0,     0,
+      66,    15,     0,    16,   317,    17,     0,     0,     0,    18,
+       0,    19,    20,    21,     0,     0,     0,     0,     0,     0,
+       0,    23,    24,    25,     0,     0,    26,     0,     0,     0,
+       0,     0,    29,    30,     0,    31,     0,     0,     0,     0,
+       0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
+       0,    33,    34,    35,    36,    37,     0,     0,    38,    39,
+       0,    41,     0,     0,    42,    43,     0,     0,     0,    64,
+      44,     0,     0,     0,    45,     2,     3,     4,     5,     0,
        6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
-       0,    66,    15,     0,    16,   318,    17,     0,     0,     0,
+       0,    66,    15,     0,    16,     0,    17,     0,     0,     0,
       18,     0,    19,    20,    21,     0,     0,     0,     0,     0,
        0,     0,    23,    24,    25,     0,     0,    26,     0,     0,
        0,     0,     0,    29,    30,     0,    31,     0,     0,     0,
@@ -976,60 +992,53 @@ static const yytype_int16 yytable[] =
       39,     0,    41,     0,     0,    42,    43,     0,     0,     0,
       64,    44,     0,     0,     0,    45,     2,     3,     4,     5,
        0,     6,     7,     8,     9,    10,     0,    11,    12,    13,
-       0,     0,    14,    15,     0,    16,     0,    17,     0,     0,
-       0,    18,     0,    19,    20,    21,     0,     0,    22,     0,
+       0,     0,    66,    15,     0,    16,     0,    17,     0,     0,
+       0,    18,     0,    19,    20,    21,     0,     0,     0,     0,
        0,     0,     0,    23,    24,    25,     0,     0,    26,     0,
-       0,     0,    27,    28,    29,    30,     0,    31,     0,     0,
+       0,     0,     0,     0,    29,    30,     0,    31,     0,     0,
        0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
        0,     0,     0,    33,    34,    35,    36,    37,     0,     0,
-      38,    39,    40,    41,     0,     0,    42,    43,     0,     0,
+      38,    39,     0,    41,     0,     0,    42,    43,     0,     0,
        0,     0,    44,     0,     0,     0,    45,     2,     3,     4,
        5,     0,     6,     7,     8,     9,    10,     0,    11,    12,
       13,     0,     0,    66,    15,     0,    16,     0,    17,     0,
-       0,     0,    18,     0,    19,    20,    21,     0,     0,     0,
-       0,     0,     0,     0,    23,    24,    25,     0,     0,    26,
+       0,     0,    18,     0,    19,    20,     0,     0,     0,   136,
+     137,     0,   138,     0,    23,   139,    25,     0,     0,     0,
        0,     0,     0,     0,     0,    29,    30,     0,    31,     0,
-       0,     0,     0,     0,     0,     0,     0,    32,     0,     0,
-       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,    38,    39,     0,    41,     0,     0,    42,    43,     0,
-       0,     0,    64,    44,     0,     0,     0,    45,     2,     3,
-       4,     5,     0,     6,     7,     8,     9,    10,     0,    11,
-      12,    13,     0,     0,    66,    15,     0,    16,     0,    17,
-       0,     0,     0,    18,     0,    19,    20,    21,     0,     0,
-       0,     0,     0,     0,     0,    23,    24,    25,     0,     0,
-      26,     0,     0,     0,     0,     0,    29,    30,     0,    31,
-       0,     0,     0,     0,     0,     0,     0,     0,    32,     0,
-       0,     0,     0,     0,     0,    33,    34,    35,    36,    37,
-       0,     0,    38,    39,     0,    41,     0,     0,    42,    43,
-       0,     0,     0,     0,    44,     0,     0,     0,    45,     2,
-       3,     4,     5,     0,     6,     7,     8,     9,    10,     0,
+       0,     0,     0,   145,   146,     0,     0,    32,     0,   147,
+     148,     0,     0,     0,    33,    34,    35,    36,    37,     0,
+       0,     0,    39,     0,    41,     0,     0,    42,    43,     2,
+       3,     4,     5,    44,     0,     0,     0,    45,     0,     0,
       11,    12,    13,     0,     0,    66,    15,     0,    16,     0,
-      17,     0,     0,     0,    18,     0,    19,    20,     0,     0,
-       0,   136,   137,     0,   138,     0,    23,   139,    25,     0,
-       0,     0,     0,     0,     0,     0,     0,    29,    30,     0,
-      31,     0,     0,     0,     0,   145,   146,     0,     0,    32,
-       0,   147,   148,     0,     0,     0,    33,    34,    35,    36,
-      37,     0,     0,     0,    39,     0,    41,     0,     0,    42,
-      43,     2,     3,     4,     5,    44,     0,     0,     0,    45,
-       0,     0,    11,    12,    13,     0,     0,    66,    15,     0,
-      16,     0,     0,     0,     0,     0,     0,    84,     0,     0,
-       0,     0,    85,     0,    86,    87,    88,    89,    67,     0,
-      25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    84,     0,     0,     0,     0,
+      85,     0,    86,    87,    88,    89,    67,     0,    25,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    32,
+       0,     0,     0,     0,     0,     0,    33,    34,    35,    36,
+      37,     2,     3,     4,     5,     0,     0,     0,     0,    42,
+      43,     0,    11,    12,    13,    44,     0,    66,    15,    45,
+      16,     0,     0,     0,     0,     0,     0,    84,     0,     0,
+       0,     0,     0,     0,    86,     0,    88,     0,    67,     0,
+      25,     2,     3,     4,     5,     0,     0,     0,     0,     0,
+       0,   104,    11,    12,    13,     0,     0,    66,    15,     0,
+      16,    32,     0,     0,     0,     0,     0,     0,    33,    34,
+      35,    36,    37,     0,     0,     0,     0,     0,    67,     0,
+      25,    42,    43,     0,     0,     0,     0,    44,     0,     0,
+       0,    45,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    32,     0,     0,     0,     0,     0,     0,    33,    34,
       35,    36,    37,     2,     3,     4,     5,     0,     0,     0,
        0,    42,    43,     0,    11,    12,    13,    44,     0,    66,
-      15,    45,    16,     0,     0,     0,     0,     0,     0,    84,
-       0,     0,     0,     0,     0,     0,    86,     0,    88,     0,
+      15,    45,    16,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
       67,     0,    25,     2,     3,     4,     5,     0,     0,     0,
-       0,     0,     0,   104,    11,    12,    13,     0,     0,    66,
+       0,     0,     0,     0,    11,    12,    13,     0,     0,    66,
       15,     0,    16,    32,     0,     0,     0,     0,     0,     0,
       33,    34,    35,    36,    37,     0,     0,     0,     0,     0,
-      67,     0,    25,    42,    43,     0,     0,     0,     0,    44,
+      67,     0,    25,    42,    43,     0,     0,     0,     0,    71,
        0,     0,     0,    45,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    32,     0,     0,     0,     0,     0,     0,
       33,    34,    35,    36,    37,     2,     3,     4,     5,     0,
-       0,     0,     0,    42,    43,     0,    11,    12,    13,    44,
+       0,     0,     0,    42,    43,     0,    11,    12,    13,    76,
        0,    66,    15,    45,    16,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    67,     0,    25,     2,     3,     4,     5,     0,
@@ -1037,314 +1046,301 @@ static const yytype_int16 yytable[] =
        0,    66,    15,     0,    16,    32,     0,     0,     0,     0,
        0,     0,    33,    34,    35,    36,    37,     0,     0,     0,
        0,     0,    67,     0,    25,    42,    43,     0,     0,     0,
-       0,    71,     0,     0,     0,    45,     0,     0,     0,     0,
+       0,    78,     0,     0,     0,    45,     0,     0,     0,     0,
        0,     0,     0,     0,     0,    32,     0,     0,     0,     0,
-       0,     0,    33,    34,    35,    36,    37,     2,     3,     4,
-       5,     0,     0,     0,     0,    42,    43,     0,    11,    12,
-      13,    76,     0,    66,    15,    45,    16,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    67,     0,    25,     2,     3,     4,
-       5,     0,     0,     0,     0,     0,     0,     0,    11,    12,
-      13,     0,     0,    66,    15,     0,    16,    32,     0,     0,
-       0,     0,     0,     0,    33,    34,    35,    36,    37,     0,
-       0,     0,     0,     0,    67,     0,    25,    42,    43,     0,
-       0,     0,     0,    78,     0,     0,     0,    45,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    32,     0,     0,
-       0,     0,   166,     0,    33,    34,    35,    36,    37,     0,
-       0,     0,     0,     0,     0,     0,     0,    42,    43,     0,
-       0,     0,     0,   128,   133,   134,     0,    45,     0,   135,
-     136,   137,     0,   138,   167,   168,   139,   140,   141,     0,
-     180,     0,     0,     0,     0,     0,   181,     0,     0,     0,
+     166,     0,    33,    34,    35,    36,    37,     0,     0,     0,
+       0,     0,     0,     0,     0,    42,    43,     0,     0,     0,
+       0,   128,   133,   134,     0,    45,     0,   135,   136,   137,
+       0,   138,   167,   168,   139,   140,   141,     0,   180,     0,
+       0,     0,     0,     0,   181,     0,     0,     0,     0,   142,
+     143,   144,   145,   146,     0,   133,   134,     0,   147,   148,
+     135,   136,   137,     0,   138,     0,     0,   139,   140,   141,
+       0,   182,     0,     0,     0,     0,     0,   183,     0,     0,
+       0,     0,   142,   143,   144,   145,   146,     0,   133,   134,
+       0,   147,   148,   135,   136,   137,     0,   138,     0,     0,
+     139,   140,   141,     0,   184,     0,     0,     0,     0,     0,
+     185,     0,     0,     0,     0,   142,   143,   144,   145,   146,
+       0,   133,   134,     0,   147,   148,   135,   136,   137,     0,
+     138,     0,     0,   139,   140,   141,     0,   186,     0,     0,
+       0,     0,     0,   187,     0,     0,     0,     0,   142,   143,
+     144,   145,   146,     0,   133,   134,     0,   147,   148,   135,
+     136,   137,     0,   138,     0,     0,   139,   140,   141,     0,
+     273,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,   142,   143,   144,   145,   146,     0,   133,   134,     0,
      147,   148,   135,   136,   137,     0,   138,     0,     0,   139,
-     140,   141,     0,   182,     0,     0,     0,     0,     0,   183,
+     140,   141,     0,   274,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,   142,   143,   144,   145,   146,     0,
      133,   134,     0,   147,   148,   135,   136,   137,     0,   138,
-       0,     0,   139,   140,   141,     0,   184,     0,     0,     0,
-       0,     0,   185,     0,     0,     0,     0,   142,   143,   144,
+       0,     0,   139,   140,   141,     0,   275,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   142,   143,   144,
      145,   146,     0,   133,   134,     0,   147,   148,   135,   136,
-     137,     0,   138,     0,     0,   139,   140,   141,     0,   186,
-       0,     0,     0,     0,     0,   187,     0,     0,     0,     0,
+     137,     0,   138,     0,     0,   139,   140,   141,     0,   276,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     142,   143,   144,   145,   146,     0,   133,   134,     0,   147,
+     148,   135,   136,   137,     0,   138,     0,     0,   139,   140,
+     141,     0,     0,     0,     0,     0,     0,     0,   203,     0,
+       0,     0,     0,   142,   143,   144,   145,   146,     0,   133,
+     134,     0,   147,   148,   135,   136,   137,     0,   138,     0,
+       0,   139,   140,   141,     0,     0,     0,     0,     0,     0,
+       0,     0,   237,     0,     0,     0,   142,   143,   144,   145,
+     146,     0,    64,   133,   134,   147,   148,     0,   135,   136,
+     137,     0,   138,     0,     0,   139,   140,   141,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   177,     0,   238,
      142,   143,   144,   145,   146,     0,   133,   134,     0,   147,
      148,   135,   136,   137,     0,   138,     0,     0,   139,   140,
-     141,     0,   273,     0,     0,     0,     0,     0,     0,     0,
+     141,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   142,   143,   144,   145,   146,     0,   133,
      134,     0,   147,   148,   135,   136,   137,     0,   138,     0,
-       0,   139,   140,   141,     0,   274,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   142,   143,   144,   145,
+       0,   139,   140,   141,     0,     0,     0,     0,     0,   188,
+     189,     0,     0,     0,     0,     0,   142,   143,   144,   145,
      146,     0,   133,   134,     0,   147,   148,   135,   136,   137,
-       0,   138,     0,     0,   139,   140,   141,     0,   275,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   142,
-     143,   144,   145,   146,     0,   133,   134,     0,   147,   148,
+       0,   138,     0,     0,   139,   140,   141,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   201,   142,
+     143,   144,   145,   146,     0,   133,   134,   192,   147,   148,
      135,   136,   137,     0,   138,     0,     0,   139,   140,   141,
-       0,   276,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,   142,   143,   144,   145,   146,     0,   133,   134,
-       0,   147,   148,   135,   136,   137,     0,   138,     0,     0,
+     192,   147,   148,   135,   136,   137,     0,   138,     0,     0,
      139,   140,   141,     0,     0,     0,     0,     0,     0,     0,
-     203,     0,     0,     0,     0,   142,   143,   144,   145,   146,
+       0,     0,     0,     0,   201,   142,   143,   144,   145,   146,
        0,   133,   134,     0,   147,   148,   135,   136,   137,     0,
      138,     0,     0,   139,   140,   141,     0,     0,     0,     0,
-       0,     0,     0,     0,   237,     0,     0,     0,   142,   143,
-     144,   145,   146,     0,    64,   133,   134,   147,   148,     0,
-     135,   136,   137,     0,   138,     0,     0,   139,   140,   141,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   177,
-       0,   238,   142,   143,   144,   145,   146,     0,   133,   134,
-       0,   147,   148,   135,   136,   137,     0,   138,     0,     0,
-     139,   140,   141,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   142,   143,   144,   145,   146,
-       0,   133,   134,     0,   147,   148,   135,   136,   137,     0,
-     138,     0,     0,   139,   140,   141,     0,     0,     0,     0,
-       0,   188,   189,     0,     0,     0,     0,     0,   142,   143,
-     144,   145,   146,     0,   133,   134,     0,   147,   148,   135,
-     136,   137,     0,   138,     0,     0,   139,   140,   141,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     201,   142,   143,   144,   145,   146,     0,   133,   134,   192,
-     147,   148,   135,   136,   137,     0,   138,     0,     0,   139,
-     140,   141,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   142,   143,   144,   145,   146,     0,
-     133,   134,   192,   147,   148,   135,   136,   137,     0,   138,
-       0,     0,   139,   140,   141,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   201,   142,   143,   144,
-     145,   146,     0,   133,   134,     0,   147,   148,   135,   136,
-     137,     0,   138,     0,     0,   139,   140,   141,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     142,   143,   144,   145,   146,     0,     0,     0,     0,   147,
-     148
+       0,     0,     0,     0,     0,     0,     0,     0,   142,   143,
+     144,   145,   146,     0,     0,     0,     0,   147,   148
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    30,   126,     0,   128,     4,    55,    33,     7,     8,
-       9,    54,    45,    12,    13,    14,    54,   229,    37,     1,
-      98,    20,    99,    35,    23,    77,    13,    14,    29,   241,
-      29,    30,    58,    32,    33,    34,    35,    36,    37,    58,
-      51,    74,    54,    42,    43,    44,    45,    80,    91,   101,
-     102,    14,    15,    91,   311,    54,    98,    56,   258,   314,
-     165,   261,    91,   105,    46,    29,    29,   324,    67,   100,
-     325,   176,    71,   100,   105,    74,   105,    76,   105,    78,
-      46,    80,    48,    29,    71,    84,   100,    86,   288,    76,
-      29,   105,   100,   100,    29,   200,    29,   105,   105,    98,
-      29,    98,    56,    57,   304,   305,   104,   105,   308,    29,
-     310,    28,    29,   289,   290,    29,    99,    91,    99,   105,
-     105,   321,    46,    29,    29,   125,    53,   126,   127,   128,
-     105,    53,   105,    29,   133,   134,   135,   136,   137,   138,
+       0,    55,    53,     0,    76,     4,    36,    32,     7,     8,
+       9,    53,    45,    12,    13,    14,   126,    30,   128,     1,
+      97,    20,    98,    34,    23,    13,    14,    57,   100,   101,
+      29,    30,    57,    32,    33,    34,    35,    36,    37,    90,
+     311,    74,    53,    42,    43,    44,    45,    80,    90,   229,
+      13,    14,   323,    99,    99,    54,   314,    56,   104,   104,
+     258,   241,   165,   261,    46,    28,   324,    28,    67,    97,
+      55,    56,    71,   176,    50,    74,   104,    76,    91,    78,
+      45,    80,    47,    71,    99,    84,    28,    86,    76,   104,
+     288,    99,   105,    99,   103,   104,   104,   200,   104,    98,
+      97,    27,    28,   289,   290,    28,   304,   305,    28,    28,
+     308,    28,   310,    28,    28,    28,    90,    98,    98,    28,
+     104,   104,   320,    45,    52,   125,   104,   126,   127,   128,
+      28,   104,    28,   104,   133,   134,   135,   136,   137,   138,
      139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-     132,   150,   352,   105,    29,   154,    29,    29,   100,   100,
-      29,   105,    54,    33,   163,    29,    33,    58,   167,   168,
-      53,   170,   171,    33,   173,   174,    37,   197,   177,    33,
-      33,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,    53,   316,    33,   299,   194,   300,   125,   324,    30,
-      -1,    -1,   201,   327,   203,    -1,    -1,    -1,   313,    -1,
-      -1,    -1,    -1,   262,    -1,    -1,    -1,    -1,   200,    -1,
-      -1,    -1,    -1,   256,    -1,    -1,    -1,    -1,    -1,    71,
-      72,   230,    74,    -1,   339,    77,   341,    -1,   237,   238,
-     222,   346,    -1,    -1,    -1,   265,    -1,    -1,    -1,    -1,
-      92,    93,    94,    95,    96,    -1,    -1,   256,   278,   101,
-     102,   281,   282,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   273,   274,   275,   276,   298,   328,
-      -1,   280,    -1,    -1,    -1,    -1,   268,   307,    -1,    -1,
-     272,    -1,    -1,    -1,   314,    -1,    -1,    -1,   297,   348,
-      -1,    -1,   322,   323,   324,    -1,    -1,    71,    72,    -1,
-      74,    -1,   332,    77,    -1,    -1,    -1,   316,   338,    -1,
-     340,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   327,    93,
-      94,    95,    96,    -1,   354,   355,    -1,   101,   102,    -1,
-       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     350,    -1,   352,    13,    14,    15,    16,    -1,    18,    19,
-      20,    21,    22,    -1,    24,    25,    26,    -1,    -1,    29,
-      30,    -1,    32,    -1,    34,    -1,    -1,    -1,    38,    -1,
-      40,    41,    42,    -1,    -1,    45,    -1,    -1,    -1,    -1,
-      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,
-      60,    61,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      80,    81,    82,    83,    84,    -1,    -1,    87,    88,    89,
-      90,    -1,    -1,    93,    94,     3,    -1,    -1,    98,    99,
-      -1,    -1,    -1,   103,    -1,    13,    14,    15,    16,    -1,
-      18,    19,    20,    21,    22,    -1,    24,    25,    26,    -1,
-      -1,    29,    30,    -1,    32,    33,    34,    -1,    -1,    -1,
-      38,    -1,    40,    41,    42,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
-      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    87,
-      88,    -1,    90,    -1,    -1,    93,    94,    -1,    -1,    -1,
-      98,    99,    -1,    -1,    -1,   103,    13,    14,    15,    16,
-      -1,    18,    19,    20,    21,    22,    -1,    24,    25,    26,
-      -1,    -1,    29,    30,    -1,    32,    -1,    34,    -1,    -1,
-      -1,    38,    -1,    40,    41,    42,    -1,    -1,    45,    -1,
-      -1,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
-      -1,    -1,    59,    60,    61,    62,    -1,    64,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,
-      -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,
-      87,    88,    89,    90,    -1,    -1,    93,    94,    -1,    -1,
-      -1,    -1,    99,    -1,    -1,    -1,   103,    13,    14,    15,
-      16,    -1,    18,    19,    20,    21,    22,    -1,    24,    25,
-      26,    -1,    -1,    29,    30,    -1,    32,    -1,    34,    -1,
-      -1,    -1,    38,    -1,    40,    41,    42,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
-      -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
-      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,    -1,
-      -1,    -1,    98,    99,    -1,    -1,    -1,   103,    13,    14,
-      15,    16,    -1,    18,    19,    20,    21,    22,    -1,    24,
-      25,    26,    -1,    -1,    29,    30,    -1,    32,    -1,    34,
-      -1,    -1,    -1,    38,    -1,    40,    41,    42,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,    64,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,
-      -1,    -1,    87,    88,    -1,    90,    -1,    -1,    93,    94,
-      -1,    -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    13,
-      14,    15,    16,    -1,    18,    19,    20,    21,    22,    -1,
-      24,    25,    26,    -1,    -1,    29,    30,    -1,    32,    -1,
-      34,    -1,    -1,    -1,    38,    -1,    40,    41,    -1,    -1,
-      -1,    71,    72,    -1,    74,    -1,    50,    77,    52,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,    62,    -1,
-      64,    -1,    -1,    -1,    -1,    95,    96,    -1,    -1,    73,
-      -1,   101,   102,    -1,    -1,    -1,    80,    81,    82,    83,
-      84,    -1,    -1,    -1,    88,    -1,    90,    -1,    -1,    93,
-      94,    13,    14,    15,    16,    99,    -1,    -1,    -1,   103,
-      -1,    -1,    24,    25,    26,    -1,    -1,    29,    30,    -1,
-      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
-      -1,    -1,    44,    -1,    46,    47,    48,    49,    50,    -1,
-      52,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     132,   150,    52,   351,    28,   154,    28,    28,    99,    99,
+      28,   104,    53,    32,   163,    28,    32,    57,   167,   168,
+      52,   170,   171,    32,   173,   174,    36,    32,   177,   197,
+      32,   180,   181,   182,   183,   184,   185,   186,   187,   188,
+     189,    52,    32,   125,   300,   194,   299,    70,    71,   323,
+      73,    30,   201,    76,   203,    -1,   316,    -1,   262,    -1,
+     313,    -1,    -1,    -1,    -1,    -1,   326,    -1,   200,    92,
+      93,    94,    95,   256,    -1,    -1,    -1,   100,   101,    -1,
+      -1,   230,    -1,    -1,    -1,   338,    -1,   340,   237,   238,
+     222,    -1,   345,    -1,    -1,    -1,    -1,   265,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   256,    -1,    -1,
+     278,    -1,    -1,   281,   282,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   327,   273,   274,   275,   276,    -1,    -1,
+     298,   280,    -1,    -1,    -1,    -1,   268,    -1,    -1,   307,
+     272,    -1,    -1,   347,    -1,    -1,   314,    -1,   297,    -1,
+      -1,    -1,    -1,   321,   322,   323,    -1,    -1,    70,    71,
+      -1,    73,    -1,   331,    76,    -1,    -1,   316,    -1,   337,
+      -1,   339,    -1,    -1,    -1,    -1,    -1,   326,    -1,    91,
+      92,    93,    94,    95,    -1,   353,   354,    -1,   100,   101,
+       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   349,
+      -1,   351,    12,    13,    14,    15,    -1,    17,    18,    19,
+      20,    21,    -1,    23,    24,    25,    -1,    -1,    28,    29,
+      -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,    39,
+      40,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    49,
+      50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,
+      60,    61,    -1,    63,    -1,    -1,    -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,    92,    93,    -1,    -1,    -1,    97,    98,    -1,
+      -1,    -1,   102,    12,    13,    14,    15,    -1,    17,    18,
+      19,    20,    21,    -1,    23,    24,    25,    -1,    -1,    28,
+      29,    -1,    31,    -1,    33,    -1,    -1,    -1,    37,    -1,
+      39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,    -1,
+      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
+      59,    60,    61,    -1,    63,    -1,    -1,    -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,    92,    93,    -1,    -1,    -1,    -1,    98,
+      -1,    -1,    -1,   102,    12,    13,    14,    15,    -1,    17,
+      18,    19,    20,    21,    -1,    23,    24,    25,    -1,    -1,
+      28,    29,    -1,    31,    32,    33,    -1,    -1,    -1,    37,
+      -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,
+      -1,    -1,    60,    61,    -1,    63,    -1,    -1,    -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,    92,    93,    -1,    -1,    -1,    97,
+      98,    -1,    -1,    -1,   102,    12,    13,    14,    15,    -1,
+      17,    18,    19,    20,    21,    -1,    23,    24,    25,    -1,
+      -1,    28,    29,    -1,    31,    -1,    33,    -1,    -1,    -1,
+      37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
+      -1,    -1,    -1,    60,    61,    -1,    63,    -1,    -1,    -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,    92,    93,    -1,    -1,    -1,
+      97,    98,    -1,    -1,    -1,   102,    12,    13,    14,    15,
+      -1,    17,    18,    19,    20,    21,    -1,    23,    24,    25,
+      -1,    -1,    28,    29,    -1,    31,    -1,    33,    -1,    -1,
+      -1,    37,    -1,    39,    40,    41,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,
+      -1,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,    -1,
+      -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,    92,    93,    -1,    -1,
+      -1,    -1,    98,    -1,    -1,    -1,   102,    12,    13,    14,
+      15,    -1,    17,    18,    19,    20,    21,    -1,    23,    24,
+      25,    -1,    -1,    28,    29,    -1,    31,    -1,    33,    -1,
+      -1,    -1,    37,    -1,    39,    40,    -1,    -1,    -1,    70,
+      71,    -1,    73,    -1,    49,    76,    51,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,
+      -1,    -1,    -1,    94,    95,    -1,    -1,    72,    -1,   100,
+     101,    -1,    -1,    -1,    79,    80,    81,    82,    83,    -1,
+      -1,    -1,    87,    -1,    89,    -1,    -1,    92,    93,    12,
+      13,    14,    15,    98,    -1,    -1,    -1,   102,    -1,    -1,
+      23,    24,    25,    -1,    -1,    28,    29,    -1,    31,    -1,
+      -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,    -1,    -1,
+      43,    -1,    45,    46,    47,    48,    49,    -1,    51,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      82,    83,    84,    13,    14,    15,    16,    -1,    -1,    -1,
-      -1,    93,    94,    -1,    24,    25,    26,    99,    -1,    29,
-      30,   103,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
-      -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,    -1,
-      50,    -1,    52,    13,    14,    15,    16,    -1,    -1,    -1,
-      -1,    -1,    -1,    63,    24,    25,    26,    -1,    -1,    29,
-      30,    -1,    32,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      80,    81,    82,    83,    84,    -1,    -1,    -1,    -1,    -1,
-      50,    -1,    52,    93,    94,    -1,    -1,    -1,    -1,    99,
-      -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      80,    81,    82,    83,    84,    13,    14,    15,    16,    -1,
-      -1,    -1,    -1,    93,    94,    -1,    24,    25,    26,    99,
-      -1,    29,    30,   103,    32,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    72,
+      -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    82,
+      83,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    92,
+      93,    -1,    23,    24,    25,    98,    -1,    28,    29,   102,
+      31,    -1,    -1,    -1,    -1,    -1,    -1,    38,    -1,    -1,
+      -1,    -1,    -1,    -1,    45,    -1,    47,    -1,    49,    -1,
+      51,    12,    13,    14,    15,    -1,    -1,    -1,    -1,    -1,
+      -1,    62,    23,    24,    25,    -1,    -1,    28,    29,    -1,
+      31,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
+      81,    82,    83,    -1,    -1,    -1,    -1,    -1,    49,    -1,
+      51,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,
+      -1,   102,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
+      81,    82,    83,    12,    13,    14,    15,    -1,    -1,    -1,
+      -1,    92,    93,    -1,    23,    24,    25,    98,    -1,    28,
+      29,   102,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    50,    -1,    52,    13,    14,    15,    16,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    24,    25,    26,    -1,
-      -1,    29,    30,    -1,    32,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    -1,    -1,    -1,
-      -1,    -1,    50,    -1,    52,    93,    94,    -1,    -1,    -1,
-      -1,    99,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    82,    83,    84,    13,    14,    15,
-      16,    -1,    -1,    -1,    -1,    93,    94,    -1,    24,    25,
-      26,    99,    -1,    29,    30,   103,    32,    -1,    -1,    -1,
+      49,    -1,    51,    12,    13,    14,    15,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    23,    24,    25,    -1,    -1,    28,
+      29,    -1,    31,    72,    -1,    -1,    -1,    -1,    -1,    -1,
+      79,    80,    81,    82,    83,    -1,    -1,    -1,    -1,    -1,
+      49,    -1,    51,    92,    93,    -1,    -1,    -1,    -1,    98,
+      -1,    -1,    -1,   102,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,    -1,    -1,
+      79,    80,    81,    82,    83,    12,    13,    14,    15,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    23,    24,    25,    98,
+      -1,    28,    29,   102,    31,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    50,    -1,    52,    13,    14,    15,
-      16,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,    25,
-      26,    -1,    -1,    29,    30,    -1,    32,    73,    -1,    -1,
-      -1,    -1,    -1,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    -1,    -1,    -1,    50,    -1,    52,    93,    94,    -1,
-      -1,    -1,    -1,    99,    -1,    -1,    -1,   103,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    73,    -1,    -1,
-      -1,    -1,    43,    -1,    80,    81,    82,    83,    84,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    -1,
-      -1,    -1,    -1,    99,    65,    66,    -1,   103,    -1,    70,
-      71,    72,    -1,    74,    75,    76,    77,    78,    79,    -1,
-      48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,
-      -1,    92,    93,    94,    95,    96,    -1,    65,    66,    -1,
-     101,   102,    70,    71,    72,    -1,    74,    -1,    -1,    77,
-      78,    79,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,
-      -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
-      65,    66,    -1,   101,   102,    70,    71,    72,    -1,    74,
-      -1,    -1,    77,    78,    79,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    54,    -1,    -1,    -1,    -1,    92,    93,    94,
-      95,    96,    -1,    65,    66,    -1,   101,   102,    70,    71,
-      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,
-      92,    93,    94,    95,    96,    -1,    65,    66,    -1,   101,
-     102,    70,    71,    72,    -1,    74,    -1,    -1,    77,    78,
-      79,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,    65,
-      66,    -1,   101,   102,    70,    71,    72,    -1,    74,    -1,
-      -1,    77,    78,    79,    -1,    48,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,
-      96,    -1,    65,    66,    -1,   101,   102,    70,    71,    72,
-      -1,    74,    -1,    -1,    77,    78,    79,    -1,    48,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    94,    95,    96,    -1,    65,    66,    -1,   101,   102,
-      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
-      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    94,    95,    96,    -1,    65,    66,
-      -1,   101,   102,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      54,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    65,    66,    -1,   101,   102,    70,    71,    72,    -1,
-      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    54,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    98,    65,    66,   101,   102,    -1,
-      70,    71,    72,    -1,    74,    -1,    -1,    77,    78,    79,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,
-      -1,    91,    92,    93,    94,    95,    96,    -1,    65,    66,
-      -1,   101,   102,    70,    71,    72,    -1,    74,    -1,    -1,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,
-      -1,    65,    66,    -1,   101,   102,    70,    71,    72,    -1,
-      74,    -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,
-      -1,    85,    86,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      94,    95,    96,    -1,    65,    66,    -1,   101,   102,    70,
-      71,    72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,
+      -1,    -1,    49,    -1,    51,    12,    13,    14,    15,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    23,    24,    25,    -1,
+      -1,    28,    29,    -1,    31,    72,    -1,    -1,    -1,    -1,
+      -1,    -1,    79,    80,    81,    82,    83,    -1,    -1,    -1,
+      -1,    -1,    49,    -1,    51,    92,    93,    -1,    -1,    -1,
+      -1,    98,    -1,    -1,    -1,   102,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    -1,
+      42,    -1,    79,    80,    81,    82,    83,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    98,    64,    65,    -1,   102,    -1,    69,    70,    71,
+      -1,    73,    74,    75,    76,    77,    78,    -1,    47,    -1,
+      -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    91,
+      92,    93,    94,    95,    -1,    64,    65,    -1,   100,   101,
+      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
+      -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,
+      -1,    -1,    91,    92,    93,    94,    95,    -1,    64,    65,
+      -1,   100,   101,    69,    70,    71,    -1,    73,    -1,    -1,
+      76,    77,    78,    -1,    47,    -1,    -1,    -1,    -1,    -1,
+      53,    -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,
+      -1,    64,    65,    -1,   100,   101,    69,    70,    71,    -1,
+      73,    -1,    -1,    76,    77,    78,    -1,    47,    -1,    -1,
+      -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,    91,    92,
+      93,    94,    95,    -1,    64,    65,    -1,   100,   101,    69,
+      70,    71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,
+      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    91,    92,    93,    94,    95,    -1,    64,    65,    -1,
+     100,   101,    69,    70,    71,    -1,    73,    -1,    -1,    76,
+      77,    78,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,
+      64,    65,    -1,   100,   101,    69,    70,    71,    -1,    73,
+      -1,    -1,    76,    77,    78,    -1,    47,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,
+      94,    95,    -1,    64,    65,    -1,   100,   101,    69,    70,
+      71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,    47,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      91,    92,    93,    94,    95,    96,    -1,    65,    66,   100,
-     101,   102,    70,    71,    72,    -1,    74,    -1,    -1,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    92,    93,    94,    95,    96,    -1,
-      65,    66,   100,   101,   102,    70,    71,    72,    -1,    74,
-      -1,    -1,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
-      95,    96,    -1,    65,    66,    -1,   101,   102,    70,    71,
-      72,    -1,    74,    -1,    -1,    77,    78,    79,    -1,    -1,
+      91,    92,    93,    94,    95,    -1,    64,    65,    -1,   100,
+     101,    69,    70,    71,    -1,    73,    -1,    -1,    76,    77,
+      78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,    -1,
+      -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,    64,
+      65,    -1,   100,   101,    69,    70,    71,    -1,    73,    -1,
+      -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    53,    -1,    -1,    -1,    91,    92,    93,    94,
+      95,    -1,    97,    64,    65,   100,   101,    -1,    69,    70,
+      71,    -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    90,
+      91,    92,    93,    94,    95,    -1,    64,    65,    -1,   100,
+     101,    69,    70,    71,    -1,    73,    -1,    -1,    76,    77,
+      78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    91,    92,    93,    94,    95,    -1,    64,
+      65,    -1,   100,   101,    69,    70,    71,    -1,    73,    -1,
+      -1,    76,    77,    78,    -1,    -1,    -1,    -1,    -1,    84,
+      85,    -1,    -1,    -1,    -1,    -1,    91,    92,    93,    94,
+      95,    -1,    64,    65,    -1,   100,   101,    69,    70,    71,
+      -1,    73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,
+      92,    93,    94,    95,    -1,    64,    65,    99,   100,   101,
+      69,    70,    71,    -1,    73,    -1,    -1,    76,    77,    78,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      92,    93,    94,    95,    96,    -1,    -1,    -1,    -1,   101,
-     102
+      -1,    -1,    91,    92,    93,    94,    95,    -1,    64,    65,
+      99,   100,   101,    69,    70,    71,    -1,    73,    -1,    -1,
+      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    90,    91,    92,    93,    94,    95,
+      -1,    64,    65,    -1,   100,   101,    69,    70,    71,    -1,
+      73,    -1,    -1,    76,    77,    78,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
+      93,    94,    95,    -1,    -1,    -1,    -1,   100,   101
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     1,    13,    14,    15,    16,    18,    19,    20,    21,
-      22,    24,    25,    26,    29,    30,    32,    34,    38,    40,
-      41,    42,    45,    50,    51,    52,    55,    59,    60,    61,
-      62,    64,    73,    80,    81,    82,    83,    84,    87,    88,
-      89,    90,    93,    94,    99,   103,   107,   109,   110,   111,
-     112,   113,   120,   121,   122,   127,   128,   129,   131,   135,
-     138,   140,   143,   146,    98,   108,    29,    50,   129,   129,
-     129,    99,   129,   148,    29,   129,    99,   148,    99,   148,
-     139,    51,    29,   132,    39,    44,    46,    47,    48,    49,
-     129,   136,   137,    29,   129,    56,    57,    14,    15,    29,
-      29,    29,    29,   129,    63,   136,   137,    29,   134,   129,
-     129,   129,   129,   129,   129,    29,   133,    29,    99,   129,
-     129,   129,   129,   147,     0,   108,    99,    91,    99,   119,
-     129,   111,   129,    65,    66,    70,    71,    72,    74,    77,
-      78,    79,    92,    93,    94,    95,    96,   101,   102,   124,
-      99,   129,   129,   148,   105,   147,   148,   129,   147,   147,
-     105,   129,   129,    46,   137,   141,    43,    75,    76,    29,
-      54,    91,   129,    54,    91,    53,   142,    56,   137,   105,
-      48,    54,    48,    54,    48,    54,    48,    54,    85,    86,
-     105,    29,   100,   104,   105,   109,   119,   129,   119,   129,
-      53,    91,   125,    54,   108,   129,   129,   129,   129,   129,
-     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,    29,   144,   100,   129,   100,   100,    29,   129,   124,
-      28,    29,   130,   129,   129,   129,   129,    54,    91,   129,
-     129,   124,   129,    29,   129,   129,   129,   129,   129,   129,
-     129,   129,   129,   129,    29,   100,   105,   129,   100,   125,
-     100,   108,   124,   129,   129,   126,   105,   108,   144,   129,
-     129,   129,   144,    48,    48,    48,    48,   147,   126,    35,
-      54,   126,   111,   108,   112,   125,    29,   105,   145,   108,
-     108,   129,   129,   129,   129,   100,   125,    54,   129,   125,
-     125,    33,    29,   126,   145,   145,    33,   129,   125,    33,
-      58,   124,    37,    58,   116,   117,   123,     3,    33,   126,
-     126,   125,   126,   126,   115,   116,   118,   123,   124,   117,
-     125,   119,   126,   125,   125,   118,   125,   119,   111,    58,
-     114,    53,   125,    33,    33,    33,    53,   125,   124,   125,
-     124,    33,   124,   111,   112,   126,   125,   125
+       0,     1,    12,    13,    14,    15,    17,    18,    19,    20,
+      21,    23,    24,    25,    28,    29,    31,    33,    37,    39,
+      40,    41,    44,    49,    50,    51,    54,    58,    59,    60,
+      61,    63,    72,    79,    80,    81,    82,    83,    86,    87,
+      88,    89,    92,    93,    98,   102,   106,   108,   109,   110,
+     111,   112,   119,   120,   121,   126,   127,   128,   130,   134,
+     137,   139,   142,   145,    97,   107,    28,    49,   128,   128,
+     128,    98,   128,   147,    28,   128,    98,   147,    98,   147,
+     138,    50,    28,   131,    38,    43,    45,    46,    47,    48,
+     128,   135,   136,    28,   128,    55,    56,    13,    14,    28,
+      28,    28,    28,   128,    62,   135,   136,    28,   133,   128,
+     128,   128,   128,   128,   128,    28,   132,    28,    98,   128,
+     128,   128,   128,   146,     0,   107,    98,    90,    98,   118,
+     128,   110,   128,    64,    65,    69,    70,    71,    73,    76,
+      77,    78,    91,    92,    93,    94,    95,   100,   101,   123,
+      98,   128,   128,   147,   104,   146,   147,   128,   146,   146,
+     104,   128,   128,    45,   136,   140,    42,    74,    75,    28,
+      53,    90,   128,    53,    90,    52,   141,    55,   136,   104,
+      47,    53,    47,    53,    47,    53,    47,    53,    84,    85,
+     104,    28,    99,   103,   104,   108,   118,   128,   118,   128,
+      52,    90,   124,    53,   107,   128,   128,   128,   128,   128,
+     128,   128,   128,   128,   128,   128,   128,   128,   128,   128,
+     128,    28,   143,    99,   128,    99,    99,    28,   128,   123,
+      27,    28,   129,   128,   128,   128,   128,    53,    90,   128,
+     128,   123,   128,    28,   128,   128,   128,   128,   128,   128,
+     128,   128,   128,   128,    28,    99,   104,   128,    99,   124,
+      99,   107,   123,   128,   128,   125,   104,   107,   143,   128,
+     128,   128,   143,    47,    47,    47,    47,   146,   125,    34,
+      53,   125,   110,   107,   111,   124,    28,   104,   144,   107,
+     107,   128,   128,   128,   128,    99,   124,    53,   128,   124,
+     124,    32,    28,   125,   144,   144,    32,   128,   124,    32,
+      57,   123,    36,    57,   115,   116,   122,    32,   125,   125,
+     124,   125,   125,   114,   115,   117,   122,   123,   116,   124,
+     118,   125,   124,   124,   117,   124,   118,   110,    57,   113,
+      52,   124,    32,    32,    32,    52,   124,   123,   124,   123,
+      32,   123,   110,   111,   125,   124,   124
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2159,12 +2155,12 @@ yyreduce:
   switch (yyn)
     {
         case 4:
-#line 123 "engines/director/lingo/lingo-gr.y"
+#line 121 "engines/director/lingo/lingo-gr.y"
     { yyerrok; ;}
     break;
 
   case 5:
-#line 126 "engines/director/lingo/lingo-gr.y"
+#line 124 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->_linenumber++;
 		g_lingo->_colnumber = 1;
@@ -2172,7 +2168,7 @@ yyreduce:
     break;
 
   case 10:
-#line 137 "engines/director/lingo/lingo-gr.y"
+#line 135 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str());
@@ -2182,24 +2178,24 @@ yyreduce:
     break;
 
   case 11:
-#line 143 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_assign);
 			(yyval.code) = (yyvsp[(2) - (4)].code); ;}
     break;
 
   case 12:
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 144 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;}
     break;
 
   case 13:
-#line 147 "engines/director/lingo/lingo-gr.y"
+#line 145 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;}
     break;
 
   case 14:
-#line 148 "engines/director/lingo/lingo-gr.y"
+#line 146 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2209,7 +2205,7 @@ yyreduce:
     break;
 
   case 15:
-#line 154 "engines/director/lingo/lingo-gr.y"
+#line 152 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2221,7 +2217,7 @@ yyreduce:
     break;
 
   case 16:
-#line 162 "engines/director/lingo/lingo-gr.y"
+#line 160 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2233,7 +2229,7 @@ yyreduce:
     break;
 
   case 17:
-#line 170 "engines/director/lingo/lingo-gr.y"
+#line 168 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
 		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -2243,7 +2239,7 @@ yyreduce:
     break;
 
   case 18:
-#line 176 "engines/director/lingo/lingo-gr.y"
+#line 174 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2255,7 +2251,7 @@ yyreduce:
     break;
 
   case 19:
-#line 184 "engines/director/lingo/lingo-gr.y"
+#line 182 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
@@ -2267,7 +2263,7 @@ yyreduce:
     break;
 
   case 24:
-#line 204 "engines/director/lingo/lingo-gr.y"
+#line 202 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
 		WRITE_UINT32(&body, (yyvsp[(5) - (7)].code) - (yyvsp[(1) - (7)].code));
@@ -2279,7 +2275,7 @@ yyreduce:
     break;
 
   case 25:
-#line 217 "engines/director/lingo/lingo-gr.y"
+#line 215 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2297,7 +2293,7 @@ yyreduce:
     break;
 
   case 26:
-#line 235 "engines/director/lingo/lingo-gr.y"
+#line 233 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
 		WRITE_UINT32(&init, (yyvsp[(3) - (11)].code) - (yyvsp[(1) - (11)].code));
@@ -2315,7 +2311,7 @@ yyreduce:
     break;
 
   case 27:
-#line 249 "engines/director/lingo/lingo-gr.y"
+#line 247 "engines/director/lingo/lingo-gr.y"
     {
 			inst end = 0;
 			WRITE_UINT32(&end, (yyvsp[(3) - (3)].code) - (yyvsp[(1) - (3)].code));
@@ -2325,21 +2321,21 @@ yyreduce:
     break;
 
   case 28:
-#line 255 "engines/director/lingo/lingo-gr.y"
+#line 253 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 			checkEnd((yyvsp[(6) - (6)].s), "tell", true); ;}
     break;
 
   case 29:
-#line 258 "engines/director/lingo/lingo-gr.y"
+#line 256 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
 		;}
     break;
 
   case 30:
-#line 263 "engines/director/lingo/lingo-gr.y"
+#line 261 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (7)].code) - (yyvsp[(1) - (7)].code));
@@ -2353,7 +2349,7 @@ yyreduce:
     break;
 
   case 31:
-#line 273 "engines/director/lingo/lingo-gr.y"
+#line 271 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2369,7 +2365,7 @@ yyreduce:
     break;
 
   case 32:
-#line 285 "engines/director/lingo/lingo-gr.y"
+#line 283 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2385,7 +2381,7 @@ yyreduce:
     break;
 
   case 33:
-#line 297 "engines/director/lingo/lingo-gr.y"
+#line 295 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2399,7 +2395,7 @@ yyreduce:
     break;
 
   case 34:
-#line 307 "engines/director/lingo/lingo-gr.y"
+#line 305 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2413,7 +2409,7 @@ yyreduce:
     break;
 
   case 35:
-#line 317 "engines/director/lingo/lingo-gr.y"
+#line 315 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
@@ -2427,17 +2423,17 @@ yyreduce:
     break;
 
   case 36:
-#line 329 "engines/director/lingo/lingo-gr.y"
+#line 327 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = 0; ;}
     break;
 
   case 37:
-#line 330 "engines/director/lingo/lingo-gr.y"
+#line 328 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 42:
-#line 341 "engines/director/lingo/lingo-gr.y"
+#line 339 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2447,7 +2443,7 @@ yyreduce:
     break;
 
   case 44:
-#line 350 "engines/director/lingo/lingo-gr.y"
+#line 348 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
 		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
@@ -2457,22 +2453,22 @@ yyreduce:
     break;
 
   case 45:
-#line 358 "engines/director/lingo/lingo-gr.y"
+#line 356 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); ;}
     break;
 
   case 46:
-#line 359 "engines/director/lingo/lingo-gr.y"
+#line 357 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_eq, STOP); ;}
     break;
 
   case 48:
-#line 363 "engines/director/lingo/lingo-gr.y"
+#line 361 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
   case 49:
-#line 366 "engines/director/lingo/lingo-gr.y"
+#line 364 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2481,7 +2477,7 @@ yyreduce:
     break;
 
   case 50:
-#line 373 "engines/director/lingo/lingo-gr.y"
+#line 371 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
@@ -2490,7 +2486,7 @@ yyreduce:
     break;
 
   case 51:
-#line 380 "engines/director/lingo/lingo-gr.y"
+#line 378 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2500,22 +2496,22 @@ yyreduce:
     break;
 
   case 52:
-#line 388 "engines/director/lingo/lingo-gr.y"
+#line 386 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 53:
-#line 391 "engines/director/lingo/lingo-gr.y"
+#line 389 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 54:
-#line 394 "engines/director/lingo/lingo-gr.y"
+#line 392 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 57:
-#line 399 "engines/director/lingo/lingo-gr.y"
+#line 397 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
@@ -2524,71 +2520,71 @@ yyreduce:
     break;
 
   case 58:
-#line 405 "engines/director/lingo/lingo-gr.y"
+#line 403 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
 		g_lingo->code1(STOP); ;}
     break;
 
   case 59:
-#line 409 "engines/director/lingo/lingo-gr.y"
+#line 407 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeConst((yyvsp[(1) - (1)].i)); ;}
     break;
 
   case 60:
-#line 410 "engines/director/lingo/lingo-gr.y"
+#line 408 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_fconstpush);
 		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
   case 61:
-#line 413 "engines/director/lingo/lingo-gr.y"
+#line 411 "engines/director/lingo/lingo-gr.y"
     {											// D3
 		(yyval.code) = g_lingo->code1(g_lingo->c_symbolpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
   case 62:
-#line 416 "engines/director/lingo/lingo-gr.y"
+#line 414 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_stringpush);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
   case 63:
-#line 419 "engines/director/lingo/lingo-gr.y"
+#line 417 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 64:
-#line 422 "engines/director/lingo/lingo-gr.y"
+#line 420 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 65:
-#line 425 "engines/director/lingo/lingo-gr.y"
+#line 423 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 66:
-#line 426 "engines/director/lingo/lingo-gr.y"
+#line 424 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
   case 67:
-#line 427 "engines/director/lingo/lingo-gr.y"
+#line 425 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg));
 		delete (yyvsp[(1) - (4)].s); ;}
     break;
 
   case 68:
-#line 430 "engines/director/lingo/lingo-gr.y"
+#line 428 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_eval);
 		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str());
@@ -2596,7 +2592,7 @@ yyreduce:
     break;
 
   case 69:
-#line 434 "engines/director/lingo/lingo-gr.y"
+#line 432 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->codeConst(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentitypush);
@@ -2607,7 +2603,7 @@ yyreduce:
     break;
 
   case 70:
-#line 441 "engines/director/lingo/lingo-gr.y"
+#line 439 "engines/director/lingo/lingo-gr.y"
     {
 		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
@@ -2617,205 +2613,205 @@ yyreduce:
     break;
 
   case 72:
-#line 448 "engines/director/lingo/lingo-gr.y"
+#line 446 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
   case 73:
-#line 449 "engines/director/lingo/lingo-gr.y"
+#line 447 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
   case 74:
-#line 450 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
   case 75:
-#line 451 "engines/director/lingo/lingo-gr.y"
+#line 449 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
   case 76:
-#line 452 "engines/director/lingo/lingo-gr.y"
+#line 450 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
   case 77:
-#line 453 "engines/director/lingo/lingo-gr.y"
+#line 451 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
   case 78:
-#line 454 "engines/director/lingo/lingo-gr.y"
+#line 452 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
   case 79:
-#line 455 "engines/director/lingo/lingo-gr.y"
+#line 453 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
   case 80:
-#line 456 "engines/director/lingo/lingo-gr.y"
+#line 454 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
   case 81:
-#line 457 "engines/director/lingo/lingo-gr.y"
+#line 455 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
   case 82:
-#line 458 "engines/director/lingo/lingo-gr.y"
+#line 456 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
   case 83:
-#line 459 "engines/director/lingo/lingo-gr.y"
+#line 457 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
   case 84:
-#line 460 "engines/director/lingo/lingo-gr.y"
+#line 458 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
   case 85:
-#line 461 "engines/director/lingo/lingo-gr.y"
+#line 459 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
   case 86:
-#line 462 "engines/director/lingo/lingo-gr.y"
+#line 460 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
   case 87:
-#line 463 "engines/director/lingo/lingo-gr.y"
+#line 461 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
   case 88:
-#line 464 "engines/director/lingo/lingo-gr.y"
+#line 462 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
   case 89:
-#line 465 "engines/director/lingo/lingo-gr.y"
+#line 463 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
   case 90:
-#line 466 "engines/director/lingo/lingo-gr.y"
+#line 464 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
   case 91:
-#line 467 "engines/director/lingo/lingo-gr.y"
+#line 465 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 92:
-#line 468 "engines/director/lingo/lingo-gr.y"
+#line 466 "engines/director/lingo/lingo-gr.y"
     { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
   case 93:
-#line 469 "engines/director/lingo/lingo-gr.y"
+#line 467 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
   case 94:
-#line 470 "engines/director/lingo/lingo-gr.y"
+#line 468 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
   case 95:
-#line 471 "engines/director/lingo/lingo-gr.y"
+#line 469 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
   case 96:
-#line 472 "engines/director/lingo/lingo-gr.y"
+#line 470 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
   case 97:
-#line 473 "engines/director/lingo/lingo-gr.y"
+#line 471 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
   case 98:
-#line 474 "engines/director/lingo/lingo-gr.y"
+#line 472 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
   case 99:
-#line 475 "engines/director/lingo/lingo-gr.y"
+#line 473 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
   case 100:
-#line 476 "engines/director/lingo/lingo-gr.y"
+#line 474 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
   case 101:
-#line 477 "engines/director/lingo/lingo-gr.y"
+#line 475 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
   case 102:
-#line 478 "engines/director/lingo/lingo-gr.y"
+#line 476 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
   case 103:
-#line 481 "engines/director/lingo/lingo-gr.y"
+#line 479 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 104:
-#line 486 "engines/director/lingo/lingo-gr.y"
+#line 484 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
   case 107:
-#line 489 "engines/director/lingo/lingo-gr.y"
+#line 487 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
   case 108:
-#line 490 "engines/director/lingo/lingo-gr.y"
+#line 488 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
   case 112:
-#line 494 "engines/director/lingo/lingo-gr.y"
+#line 492 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
 		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 113:
-#line 497 "engines/director/lingo/lingo-gr.y"
+#line 495 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 114:
-#line 500 "engines/director/lingo/lingo-gr.y"
+#line 498 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
 		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 115:
-#line 503 "engines/director/lingo/lingo-gr.y"
+#line 501 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_voidpush);
 		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 1);
@@ -2823,151 +2819,151 @@ yyreduce:
     break;
 
   case 116:
-#line 507 "engines/director/lingo/lingo-gr.y"
+#line 505 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 117:
-#line 508 "engines/director/lingo/lingo-gr.y"
+#line 506 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;}
     break;
 
   case 118:
-#line 509 "engines/director/lingo/lingo-gr.y"
+#line 507 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
   case 119:
-#line 510 "engines/director/lingo/lingo-gr.y"
+#line 508 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
   case 120:
-#line 511 "engines/director/lingo/lingo-gr.y"
+#line 509 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
   case 121:
-#line 512 "engines/director/lingo/lingo-gr.y"
+#line 510 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
   case 122:
-#line 513 "engines/director/lingo/lingo-gr.y"
+#line 511 "engines/director/lingo/lingo-gr.y"
     { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;}
     break;
 
   case 123:
-#line 516 "engines/director/lingo/lingo-gr.y"
+#line 514 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 124:
-#line 517 "engines/director/lingo/lingo-gr.y"
+#line 515 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 125:
-#line 520 "engines/director/lingo/lingo-gr.y"
+#line 518 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 126:
-#line 521 "engines/director/lingo/lingo-gr.y"
+#line 519 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 127:
-#line 524 "engines/director/lingo/lingo-gr.y"
+#line 522 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 128:
-#line 525 "engines/director/lingo/lingo-gr.y"
+#line 523 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 129:
-#line 536 "engines/director/lingo/lingo-gr.y"
+#line 534 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
   case 130:
-#line 537 "engines/director/lingo/lingo-gr.y"
+#line 535 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
   case 131:
-#line 538 "engines/director/lingo/lingo-gr.y"
+#line 536 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
   case 132:
-#line 539 "engines/director/lingo/lingo-gr.y"
+#line 537 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 133:
-#line 542 "engines/director/lingo/lingo-gr.y"
+#line 540 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 134:
-#line 545 "engines/director/lingo/lingo-gr.y"
+#line 543 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 139:
-#line 558 "engines/director/lingo/lingo-gr.y"
+#line 556 "engines/director/lingo/lingo-gr.y"
     { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
   case 140:
-#line 559 "engines/director/lingo/lingo-gr.y"
+#line 557 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(1);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 141:
-#line 562 "engines/director/lingo/lingo-gr.y"
+#line 560 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(3);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 142:
-#line 565 "engines/director/lingo/lingo-gr.y"
+#line 563 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeConst(2);
 		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 143:
-#line 568 "engines/director/lingo/lingo-gr.y"
+#line 566 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeSetImmediate(true); ;}
     break;
 
   case 144:
-#line 568 "engines/director/lingo/lingo-gr.y"
+#line 566 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
   case 145:
-#line 598 "engines/director/lingo/lingo-gr.y"
+#line 596 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
   case 146:
-#line 599 "engines/director/lingo/lingo-gr.y"
+#line 597 "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));
@@ -2975,19 +2971,19 @@ yyreduce:
     break;
 
   case 147:
-#line 603 "engines/director/lingo/lingo-gr.y"
+#line 601 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
 		;}
     break;
 
   case 148:
-#line 606 "engines/director/lingo/lingo-gr.y"
+#line 604 "engines/director/lingo/lingo-gr.y"
     { g_lingo->_indef = true; ;}
     break;
 
   case 149:
-#line 607 "engines/director/lingo/lingo-gr.y"
+#line 605 "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) + 1, &g_lingo->_currentFactory);
@@ -2995,7 +2991,7 @@ yyreduce:
     break;
 
   case 150:
-#line 611 "engines/director/lingo/lingo-gr.y"
+#line 609 "engines/director/lingo/lingo-gr.y"
     {	// D3
 				g_lingo->code1(g_lingo->c_procret);
 				g_lingo->define(*(yyvsp[(1) - (7)].s), (yyvsp[(2) - (7)].code), (yyvsp[(3) - (7)].narg));
@@ -3007,47 +3003,47 @@ yyreduce:
     break;
 
   case 151:
-#line 619 "engines/director/lingo/lingo-gr.y"
+#line 617 "engines/director/lingo/lingo-gr.y"
     {	// D4. No 'end' clause
 				g_lingo->code1(g_lingo->c_procret);
-				g_lingo->define(*(yyvsp[(1) - (7)].s), (yyvsp[(2) - (7)].code), (yyvsp[(3) - (7)].narg));
+				g_lingo->define(*(yyvsp[(1) - (6)].s), (yyvsp[(2) - (6)].code), (yyvsp[(3) - (6)].narg));
 				g_lingo->_indef = false;
 				g_lingo->_ignoreMe = false;
 			;}
     break;
 
   case 152:
-#line 626 "engines/director/lingo/lingo-gr.y"
+#line 624 "engines/director/lingo/lingo-gr.y"
     { (yyval.s) = (yyvsp[(2) - (2)].s); g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; ;}
     break;
 
   case 153:
-#line 628 "engines/director/lingo/lingo-gr.y"
+#line 626 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
   case 154:
-#line 629 "engines/director/lingo/lingo-gr.y"
+#line 627 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
   case 155:
-#line 630 "engines/director/lingo/lingo-gr.y"
+#line 628 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 156:
-#line 631 "engines/director/lingo/lingo-gr.y"
+#line 629 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
   case 157:
-#line 634 "engines/director/lingo/lingo-gr.y"
+#line 632 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
   case 158:
-#line 638 "engines/director/lingo/lingo-gr.y"
+#line 636 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
@@ -3057,33 +3053,33 @@ yyreduce:
     break;
 
   case 159:
-#line 646 "engines/director/lingo/lingo-gr.y"
+#line 644 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
   case 160:
-#line 647 "engines/director/lingo/lingo-gr.y"
+#line 645 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
   case 161:
-#line 648 "engines/director/lingo/lingo-gr.y"
+#line 646 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 162:
-#line 651 "engines/director/lingo/lingo-gr.y"
+#line 649 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
   case 163:
-#line 652 "engines/director/lingo/lingo-gr.y"
+#line 650 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 3087 "engines/director/lingo/lingo-gr.cpp"
+#line 3083 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3297,6 +3293,6 @@ yyreturn:
 }
 
 
-#line 655 "engines/director/lingo/lingo-gr.y"
+#line 653 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 38fb38e..fc29598 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -39,185 +39,183 @@
    /* Put the tokens into the symbol table, so that GDB and other debuggers
       know about them.  */
    enum yytokentype {
-     EOSTREAM = 258,
-     UNARY = 259,
-     CASTREF = 260,
-     VOID = 261,
-     VAR = 262,
-     POINT = 263,
-     RECT = 264,
-     ARRAY = 265,
-     OBJECT = 266,
-     REFERENCE = 267,
-     INT = 268,
-     THEENTITY = 269,
-     THEENTITYWITHID = 270,
-     FLOAT = 271,
-     BLTIN = 272,
-     BLTINNOARGS = 273,
-     BLTINNOARGSORONE = 274,
-     BLTINONEARG = 275,
-     BLTINARGLIST = 276,
-     TWOWORDBUILTIN = 277,
-     FBLTIN = 278,
-     FBLTINNOARGS = 279,
-     FBLTINONEARG = 280,
-     FBLTINARGLIST = 281,
-     RBLTIN = 282,
-     RBLTINONEARG = 283,
-     ID = 284,
-     STRING = 285,
-     HANDLER = 286,
-     SYMBOL = 287,
-     ENDCLAUSE = 288,
-     tPLAYACCEL = 289,
-     tDOWN = 290,
-     tELSE = 291,
-     tNLELSIF = 292,
-     tEXIT = 293,
-     tFRAME = 294,
-     tGLOBAL = 295,
-     tGO = 296,
-     tIF = 297,
-     tINTO = 298,
-     tLOOP = 299,
-     tMACRO = 300,
-     tMOVIE = 301,
-     tNEXT = 302,
-     tOF = 303,
-     tPREVIOUS = 304,
-     tPUT = 305,
-     tREPEAT = 306,
-     tSET = 307,
-     tTHEN = 308,
-     tTO = 309,
-     tWHEN = 310,
-     tWITH = 311,
-     tWHILE = 312,
-     tNLELSE = 313,
-     tFACTORY = 314,
-     tMETHOD = 315,
-     tOPEN = 316,
-     tPLAY = 317,
-     tDONE = 318,
-     tINSTANCE = 319,
-     tGE = 320,
-     tLE = 321,
-     tGT = 322,
-     tLT = 323,
-     tEQ = 324,
-     tNEQ = 325,
-     tAND = 326,
-     tOR = 327,
-     tNOT = 328,
-     tMOD = 329,
-     tAFTER = 330,
-     tBEFORE = 331,
-     tCONCAT = 332,
-     tCONTAINS = 333,
-     tSTARTS = 334,
-     tCHAR = 335,
-     tITEM = 336,
-     tLINE = 337,
-     tWORD = 338,
-     tSPRITE = 339,
-     tINTERSECTS = 340,
-     tWITHIN = 341,
-     tTELL = 342,
-     tPROPERTY = 343,
-     tON = 344,
-     tME = 345
+     UNARY = 258,
+     CASTREF = 259,
+     VOID = 260,
+     VAR = 261,
+     POINT = 262,
+     RECT = 263,
+     ARRAY = 264,
+     OBJECT = 265,
+     REFERENCE = 266,
+     INT = 267,
+     THEENTITY = 268,
+     THEENTITYWITHID = 269,
+     FLOAT = 270,
+     BLTIN = 271,
+     BLTINNOARGS = 272,
+     BLTINNOARGSORONE = 273,
+     BLTINONEARG = 274,
+     BLTINARGLIST = 275,
+     TWOWORDBUILTIN = 276,
+     FBLTIN = 277,
+     FBLTINNOARGS = 278,
+     FBLTINONEARG = 279,
+     FBLTINARGLIST = 280,
+     RBLTIN = 281,
+     RBLTINONEARG = 282,
+     ID = 283,
+     STRING = 284,
+     HANDLER = 285,
+     SYMBOL = 286,
+     ENDCLAUSE = 287,
+     tPLAYACCEL = 288,
+     tDOWN = 289,
+     tELSE = 290,
+     tNLELSIF = 291,
+     tEXIT = 292,
+     tFRAME = 293,
+     tGLOBAL = 294,
+     tGO = 295,
+     tIF = 296,
+     tINTO = 297,
+     tLOOP = 298,
+     tMACRO = 299,
+     tMOVIE = 300,
+     tNEXT = 301,
+     tOF = 302,
+     tPREVIOUS = 303,
+     tPUT = 304,
+     tREPEAT = 305,
+     tSET = 306,
+     tTHEN = 307,
+     tTO = 308,
+     tWHEN = 309,
+     tWITH = 310,
+     tWHILE = 311,
+     tNLELSE = 312,
+     tFACTORY = 313,
+     tMETHOD = 314,
+     tOPEN = 315,
+     tPLAY = 316,
+     tDONE = 317,
+     tINSTANCE = 318,
+     tGE = 319,
+     tLE = 320,
+     tGT = 321,
+     tLT = 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
    };
 #endif
 /* Tokens.  */
-#define EOSTREAM 258
-#define UNARY 259
-#define CASTREF 260
-#define VOID 261
-#define VAR 262
-#define POINT 263
-#define RECT 264
-#define ARRAY 265
-#define OBJECT 266
-#define REFERENCE 267
-#define INT 268
-#define THEENTITY 269
-#define THEENTITYWITHID 270
-#define FLOAT 271
-#define BLTIN 272
-#define BLTINNOARGS 273
-#define BLTINNOARGSORONE 274
-#define BLTINONEARG 275
-#define BLTINARGLIST 276
-#define TWOWORDBUILTIN 277
-#define FBLTIN 278
-#define FBLTINNOARGS 279
-#define FBLTINONEARG 280
-#define FBLTINARGLIST 281
-#define RBLTIN 282
-#define RBLTINONEARG 283
-#define ID 284
-#define STRING 285
-#define HANDLER 286
-#define SYMBOL 287
-#define ENDCLAUSE 288
-#define tPLAYACCEL 289
-#define tDOWN 290
-#define tELSE 291
-#define tNLELSIF 292
-#define tEXIT 293
-#define tFRAME 294
-#define tGLOBAL 295
-#define tGO 296
-#define tIF 297
-#define tINTO 298
-#define tLOOP 299
-#define tMACRO 300
-#define tMOVIE 301
-#define tNEXT 302
-#define tOF 303
-#define tPREVIOUS 304
-#define tPUT 305
-#define tREPEAT 306
-#define tSET 307
-#define tTHEN 308
-#define tTO 309
-#define tWHEN 310
-#define tWITH 311
-#define tWHILE 312
-#define tNLELSE 313
-#define tFACTORY 314
-#define tMETHOD 315
-#define tOPEN 316
-#define tPLAY 317
-#define tDONE 318
-#define tINSTANCE 319
-#define tGE 320
-#define tLE 321
-#define tGT 322
-#define tLT 323
-#define tEQ 324
-#define tNEQ 325
-#define tAND 326
-#define tOR 327
-#define tNOT 328
-#define tMOD 329
-#define tAFTER 330
-#define tBEFORE 331
-#define tCONCAT 332
-#define tCONTAINS 333
-#define tSTARTS 334
-#define tCHAR 335
-#define tITEM 336
-#define tLINE 337
-#define tWORD 338
-#define tSPRITE 339
-#define tINTERSECTS 340
-#define tWITHIN 341
-#define tTELL 342
-#define tPROPERTY 343
-#define tON 344
-#define tME 345
+#define UNARY 258
+#define CASTREF 259
+#define VOID 260
+#define VAR 261
+#define POINT 262
+#define RECT 263
+#define ARRAY 264
+#define OBJECT 265
+#define REFERENCE 266
+#define INT 267
+#define THEENTITY 268
+#define THEENTITYWITHID 269
+#define FLOAT 270
+#define BLTIN 271
+#define BLTINNOARGS 272
+#define BLTINNOARGSORONE 273
+#define BLTINONEARG 274
+#define BLTINARGLIST 275
+#define TWOWORDBUILTIN 276
+#define FBLTIN 277
+#define FBLTINNOARGS 278
+#define FBLTINONEARG 279
+#define FBLTINARGLIST 280
+#define RBLTIN 281
+#define RBLTINONEARG 282
+#define ID 283
+#define STRING 284
+#define HANDLER 285
+#define SYMBOL 286
+#define ENDCLAUSE 287
+#define tPLAYACCEL 288
+#define tDOWN 289
+#define tELSE 290
+#define tNLELSIF 291
+#define tEXIT 292
+#define tFRAME 293
+#define tGLOBAL 294
+#define tGO 295
+#define tIF 296
+#define tINTO 297
+#define tLOOP 298
+#define tMACRO 299
+#define tMOVIE 300
+#define tNEXT 301
+#define tOF 302
+#define tPREVIOUS 303
+#define tPUT 304
+#define tREPEAT 305
+#define tSET 306
+#define tTHEN 307
+#define tTO 308
+#define tWHEN 309
+#define tWITH 310
+#define tWHILE 311
+#define tNLELSE 312
+#define tFACTORY 313
+#define tMETHOD 314
+#define tOPEN 315
+#define tPLAY 316
+#define tDONE 317
+#define tINSTANCE 318
+#define tGE 319
+#define tLE 320
+#define tGT 321
+#define tLT 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
 
 
 
@@ -235,7 +233,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 1529 of yacc.c.  */
-#line 239 "engines/director/lingo/lingo-gr.hpp"
+#line 237 "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 0115c54..1e898e9 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -86,8 +86,6 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 	Common::Array<double> *arr;
 }
 
-%token EOSTREAM
-
 %token UNARY
 %token CASTREF VOID VAR POINT RECT ARRAY OBJECT REFERENCE
 %token<i> INT
@@ -616,7 +614,7 @@ defn: tMACRO ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); }
 
 				checkEnd($7, $1->c_str(), false);
 			}
-	| on begin argdef nl argstore stmtlist EOSTREAM {	// D4. No 'end' clause
+	| on begin argdef nl argstore stmtlist {	// D4. No 'end' clause
 				g_lingo->code1(g_lingo->c_procret);
 				g_lingo->define(*$1, $2, $3);
 				g_lingo->_indef = false;
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 6da3602..c931dc8 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -744,8 +744,6 @@ char *yytext;
 
 using namespace Director;
 
-#define yyterminate() return EOSTREAM
-
 int yyparse();
 static void count() {
 	if (debugChannelSet(-1, kDebugLingoParse))
@@ -783,7 +781,7 @@ static int checkImmediate(int token) {
 	return token;
 }
 
-#line 787 "engines/director/lingo/lingo-lex.cpp"
+#line 785 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -966,10 +964,10 @@ YY_DECL
 	register char *yy_cp, *yy_bp;
 	register int yy_act;
     
-#line 87 "engines/director/lingo/lingo-lex.l"
+#line 85 "engines/director/lingo/lingo-lex.l"
 
 
-#line 973 "engines/director/lingo/lingo-lex.cpp"
+#line 971 "engines/director/lingo/lingo-lex.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -1056,89 +1054,89 @@ do_action:	/* This label is used only to access EOF actions. */
 case 1:
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 89 "engines/director/lingo/lingo-lex.l"
+#line 87 "engines/director/lingo/lingo-lex.l"
 { g_lingo->_linenumber++; g_lingo->_colnumber = 0; }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 90 "engines/director/lingo/lingo-lex.l"
+#line 88 "engines/director/lingo/lingo-lex.l"
 
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 91 "engines/director/lingo/lingo-lex.l"
+#line 89 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 92 "engines/director/lingo/lingo-lex.l"
+#line 90 "engines/director/lingo/lingo-lex.l"
 { count(); return ' '; }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 94 "engines/director/lingo/lingo-lex.l"
+#line 92 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(yytext); return SYMBOL; }	// D3
 	YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 96 "engines/director/lingo/lingo-lex.l"
+#line 94 "engines/director/lingo/lingo-lex.l"
 { count(); return tAFTER; }		// D3
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 97 "engines/director/lingo/lingo-lex.l"
+#line 95 "engines/director/lingo/lingo-lex.l"
 { count(); return tAND; }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 98 "engines/director/lingo/lingo-lex.l"
+#line 96 "engines/director/lingo/lingo-lex.l"
 { count(); return tBEFORE; }	// D3
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 99 "engines/director/lingo/lingo-lex.l"
+#line 97 "engines/director/lingo/lingo-lex.l"
 { count(); return tCHAR; }		// D3
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 100 "engines/director/lingo/lingo-lex.l"
+#line 98 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONTAINS; }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 101 "engines/director/lingo/lingo-lex.l"
+#line 99 "engines/director/lingo/lingo-lex.l"
 { count(); return tDONE; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 102 "engines/director/lingo/lingo-lex.l"
+#line 100 "engines/director/lingo/lingo-lex.l"
 { count(); return tDOWN; }
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 103 "engines/director/lingo/lingo-lex.l"
+#line 101 "engines/director/lingo/lingo-lex.l"
 { count(); return tIF; }
 	YY_BREAK
 case 14:
 /* rule 14 can match eol */
 YY_RULE_SETUP
-#line 104 "engines/director/lingo/lingo-lex.l"
+#line 102 "engines/director/lingo/lingo-lex.l"
 { countnl(); return tNLELSIF; }
 	YY_BREAK
 case 15:
 /* rule 15 can match eol */
 YY_RULE_SETUP
-#line 105 "engines/director/lingo/lingo-lex.l"
+#line 103 "engines/director/lingo/lingo-lex.l"
 { countnl(); return tNLELSE; }
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 106 "engines/director/lingo/lingo-lex.l"
+#line 104 "engines/director/lingo/lingo-lex.l"
 { count(); return tELSE; }
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 107 "engines/director/lingo/lingo-lex.l"
+#line 105 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1153,162 +1151,162 @@ YY_RULE_SETUP
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 118 "engines/director/lingo/lingo-lex.l"
+#line 116 "engines/director/lingo/lingo-lex.l"
 { count(); return tFACTORY; }
 	YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 119 "engines/director/lingo/lingo-lex.l"
+#line 117 "engines/director/lingo/lingo-lex.l"
 { count(); return tEXIT; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 120 "engines/director/lingo/lingo-lex.l"
+#line 118 "engines/director/lingo/lingo-lex.l"
 { count(); return tFRAME; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 121 "engines/director/lingo/lingo-lex.l"
+#line 119 "engines/director/lingo/lingo-lex.l"
 { count(); return tGLOBAL; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 122 "engines/director/lingo/lingo-lex.l"
+#line 120 "engines/director/lingo/lingo-lex.l"
 { count(); return tGO; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 123 "engines/director/lingo/lingo-lex.l"
+#line 121 "engines/director/lingo/lingo-lex.l"
 { count(); return tGO; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 124 "engines/director/lingo/lingo-lex.l"
+#line 122 "engines/director/lingo/lingo-lex.l"
 { count(); return tINSTANCE; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 125 "engines/director/lingo/lingo-lex.l"
+#line 123 "engines/director/lingo/lingo-lex.l"
 { count(); return tINTERSECTS; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 126 "engines/director/lingo/lingo-lex.l"
+#line 124 "engines/director/lingo/lingo-lex.l"
 { count(); return tINTO; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 127 "engines/director/lingo/lingo-lex.l"
+#line 125 "engines/director/lingo/lingo-lex.l"
 { count(); return tITEM; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 128 "engines/director/lingo/lingo-lex.l"
+#line 126 "engines/director/lingo/lingo-lex.l"
 { count(); return tLINE; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 129 "engines/director/lingo/lingo-lex.l"
+#line 127 "engines/director/lingo/lingo-lex.l"
 { count(); return checkImmediate(tLOOP); }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 130 "engines/director/lingo/lingo-lex.l"
+#line 128 "engines/director/lingo/lingo-lex.l"
 { count(); return tMACRO; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 131 "engines/director/lingo/lingo-lex.l"
+#line 129 "engines/director/lingo/lingo-lex.l"
 { count(); return tMETHOD; }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 132 "engines/director/lingo/lingo-lex.l"
+#line 130 "engines/director/lingo/lingo-lex.l"
 { count(); return tMOD; }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 133 "engines/director/lingo/lingo-lex.l"
+#line 131 "engines/director/lingo/lingo-lex.l"
 { count(); return tMOVIE; }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 134 "engines/director/lingo/lingo-lex.l"
+#line 132 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEXT; }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 135 "engines/director/lingo/lingo-lex.l"
+#line 133 "engines/director/lingo/lingo-lex.l"
 { count(); return tNOT; }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 136 "engines/director/lingo/lingo-lex.l"
+#line 134 "engines/director/lingo/lingo-lex.l"
 { count(); return tOF; }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 137 "engines/director/lingo/lingo-lex.l"
+#line 135 "engines/director/lingo/lingo-lex.l"
 { count(); return tON; }		// D3
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 138 "engines/director/lingo/lingo-lex.l"
+#line 136 "engines/director/lingo/lingo-lex.l"
 { count(); return tOPEN; }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 139 "engines/director/lingo/lingo-lex.l"
+#line 137 "engines/director/lingo/lingo-lex.l"
 { count(); return tOR; }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 140 "engines/director/lingo/lingo-lex.l"
+#line 138 "engines/director/lingo/lingo-lex.l"
 { count(); return tPLAY; }
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 141 "engines/director/lingo/lingo-lex.l"
+#line 139 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 142 "engines/director/lingo/lingo-lex.l"
+#line 140 "engines/director/lingo/lingo-lex.l"
 { count(); return tPREVIOUS; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 143 "engines/director/lingo/lingo-lex.l"
+#line 141 "engines/director/lingo/lingo-lex.l"
 { count(); return tPROPERTY; }	// D4
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 144 "engines/director/lingo/lingo-lex.l"
+#line 142 "engines/director/lingo/lingo-lex.l"
 { count(); return tPUT; }
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 145 "engines/director/lingo/lingo-lex.l"
+#line 143 "engines/director/lingo/lingo-lex.l"
 { count(); return checkImmediate(tREPEAT); }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 146 "engines/director/lingo/lingo-lex.l"
+#line 144 "engines/director/lingo/lingo-lex.l"
 { count(); return tSET; }
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 147 "engines/director/lingo/lingo-lex.l"
+#line 145 "engines/director/lingo/lingo-lex.l"
 { count(); return tSTARTS; }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 148 "engines/director/lingo/lingo-lex.l"
+#line 146 "engines/director/lingo/lingo-lex.l"
 { count(); return tTELL; }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 149 "engines/director/lingo/lingo-lex.l"
+#line 147 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1320,7 +1318,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 157 "engines/director/lingo/lingo-lex.l"
+#line 155 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1332,7 +1330,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 165 "engines/director/lingo/lingo-lex.l"
+#line 163 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1376,7 +1374,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 205 "engines/director/lingo/lingo-lex.l"
+#line 203 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1411,7 +1409,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 236 "engines/director/lingo/lingo-lex.l"
+#line 234 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1434,67 +1432,67 @@ YY_RULE_SETUP
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 255 "engines/director/lingo/lingo-lex.l"
+#line 253 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 256 "engines/director/lingo/lingo-lex.l"
+#line 254 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 257 "engines/director/lingo/lingo-lex.l"
+#line 255 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 258 "engines/director/lingo/lingo-lex.l"
+#line 256 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 259 "engines/director/lingo/lingo-lex.l"
+#line 257 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 260 "engines/director/lingo/lingo-lex.l"
+#line 258 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 261 "engines/director/lingo/lingo-lex.l"
+#line 259 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 262 "engines/director/lingo/lingo-lex.l"
+#line 260 "engines/director/lingo/lingo-lex.l"
 { count(); return tWORD; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 264 "engines/director/lingo/lingo-lex.l"
+#line 262 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 265 "engines/director/lingo/lingo-lex.l"
+#line 263 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 266 "engines/director/lingo/lingo-lex.l"
+#line 264 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 267 "engines/director/lingo/lingo-lex.l"
+#line 265 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 269 "engines/director/lingo/lingo-lex.l"
+#line 267 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1543,41 +1541,41 @@ YY_RULE_SETUP
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 314 "engines/director/lingo/lingo-lex.l"
+#line 312 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 315 "engines/director/lingo/lingo-lex.l"
+#line 313 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 316 "engines/director/lingo/lingo-lex.l"
+#line 314 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
 case 70:
 /* rule 70 can match eol */
 YY_RULE_SETUP
-#line 317 "engines/director/lingo/lingo-lex.l"
+#line 315 "engines/director/lingo/lingo-lex.l"
 { return '\n'; }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 318 "engines/director/lingo/lingo-lex.l"
+#line 316 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 319 "engines/director/lingo/lingo-lex.l"
+#line 317 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 321 "engines/director/lingo/lingo-lex.l"
+#line 319 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1581 "engines/director/lingo/lingo-lex.cpp"
+#line 1579 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2540,7 +2538,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 321 "engines/director/lingo/lingo-lex.l"
+#line 319 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 779913a..6a38bac 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -35,8 +35,6 @@
 
 using namespace Director;
 
-#define yyterminate() return EOSTREAM
-
 int yyparse();
 static void count() {
 	if (debugChannelSet(-1, kDebugLingoParse))





More information about the Scummvm-git-logs mailing list