[Scummvm-git-logs] scummvm master -> 458ad2a86f2abbcdc521cbee15ca293052fd4b1f

sev- sev at scummvm.org
Fri Dec 6 15:53:49 UTC 2019


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

Summary:
6c816c5aac DIRECTOR: Added more 'if' statement tests
a45beac457 DIRECTOR: LINGO: Initial code on 'if' preprocessing
458ad2a86f DIRECTOR: LINGO: Switch back to LALR(1) parser


Commit: 6c816c5aac050b412dd0ac1c9e704ef00cac0825
    https://github.com/scummvm/scummvm/commit/6c816c5aac050b412dd0ac1c9e704ef00cac0825
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-06T16:50:10+01:00

Commit Message:
DIRECTOR: Added more 'if' statement tests

Changed paths:
    engines/director/lingo/tests/if.lingo


diff --git a/engines/director/lingo/tests/if.lingo b/engines/director/lingo/tests/if.lingo
index 0821d71..6a5b500 100644
--- a/engines/director/lingo/tests/if.lingo
+++ b/engines/director/lingo/tests/if.lingo
@@ -50,6 +50,9 @@ else
   put FALSE
 end if
 
+if abs(y) = x and abs(x) = y then put 5
+if abs(y) = x and abs(x) = y then put 5 else put 6
+
 if the selection = the text of cast A31 then
     go to frame "sEnd"
     exit
@@ -88,7 +91,7 @@ else if whichTry = 1 then
 else if whichTry = 2 then
 	put 5
 	go to frame "sShow"
-else if whichTry = 3 then go to frame "sDo"
+else if whichTry = 3 then go to frame "sDo" else put 7 end if
 
 if rollOver(2) then
   put "The cursor is INSIDE the square." into field "Cursor Status"
@@ -96,6 +99,25 @@ else
   put "The cursor is OUTSIDE the square." into field "Cursor Status"
 end if
 
+if the selection = the text of cast A31 then
+    if whichTry = 3 then go to frame "sDo"
+else if whichTry = 1 then
+	if whichTry = 3 then go to frame "sDo" else
+		put 5
+	end      if
+else if whichTry = 2 then
+	if whichTry = 3 then go to frame "sDo" else
+		if the selection = the text of cast A21 then
+		    if whichTry = 3 then go to frame "Foo"
+		else if abra = 5 then put 6 else
+			put 7
+			if abra = 7 thhen put 5
+		end if
+	end if
+else if whichTry = 3 then go to frame "sDo"
+else put 6
+
+
 macro WindowHorzP X
     set X1 = constrainH( 14, X )
     if X1 = X then return( TRUE )


Commit: a45beac45712a64ddf3c66cf2cc12e348d555e27
    https://github.com/scummvm/scummvm/commit/a45beac45712a64ddf3c66cf2cc12e348d555e27
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-06T16:52:39+01:00

Commit Message:
DIRECTOR: LINGO: Initial code on 'if' preprocessing

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


diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 52e471a..9898846 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -214,7 +214,7 @@ void Lingo::addCode(const char *code, ScriptType type, uint16 id) {
 }
 
 Common::String Lingo::stripComments(const char *s) {
-	Common::String noComments;
+	Common::String res;
 
 	// Strip comments
 	while (*s) {
@@ -224,14 +224,16 @@ Common::String Lingo::stripComments(const char *s) {
 		}
 
 		if (*s)
-			noComments += *s;
+			res += *s;
 
 		s++;
 	}
 
+	Common::String tmp(res);
+	res.clear();
+
 	// Strip trailing whitespaces
-	Common::String res;
-	s = noComments.c_str();
+	s = tmp.c_str();
 	while (*s) {
 		if (*s == ' ' || *s == '\t') { // If we see a whitespace
 			const char *ps = s; // Remember where we saw it
@@ -257,6 +259,66 @@ Common::String Lingo::stripComments(const char *s) {
 		s++;
 	}
 
+	// Preprocess if statements
+	tmp = res;
+	int level = 0;
+
+	s = tmp.c_str();
+	const char *stringStart;
+
+	while (*s) {
+		// Scan first non-whitespace
+		while (*s && (*s == ' ' || *s == '\t' || *s == '\xc2')) { // If we see a whitespace
+			res += *s++;
+
+			if (*s && *(s - 1) == '\xc2') { // if it is a continuation synbol, eat next one
+				res += *s++;
+			}
+		}
+
+		if (!*s)	// end of input string
+			break;
+
+		stringStart = s;
+
+		if (!scumm_stricmp(s, "if")) {
+			level++;
+		}
+
+		// copy rest of the line
+		while (*s && *s != '\n') {
+			res += *s++;
+
+			if (*s && *(s - 1) == '\xc2') { // if it is a continuation synbol, eat next one
+				res += *s++;
+			}
+		}
+
+		// Now look if we have 'end if' at the end
+		if (s - stringStart >= strlen("end if")) {
+			if (tolower(*(s - 2)) == 'i' && tolower(*(s - 1)) == 'f') {
+				const char *tmps = s - strlen("end if");
+
+				while (tmps - stringStart > 0 && (*tmps == ' ' || *tmps == '\t')) // if we ended up with 'end     if'
+					tmps--;
+
+				if (tmps != s - strlen("end if")) {// if we were backtracking, then we're at end of 'end' now
+					if (tmps - stringStart > strlen("end")) {
+						tmps -= strlen("end");
+
+						if (!scumm_stricmp(s, "end"))
+							level--;
+					}
+				}
+			}
+		}
+
+		if (level) {
+
+		}
+
+	}
+
 	return res;
 }
 


Commit: 458ad2a86f2abbcdc521cbee15ca293052fd4b1f
    https://github.com/scummvm/scummvm/commit/458ad2a86f2abbcdc521cbee15ca293052fd4b1f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-12-06T16:53:14+01:00

Commit Message:
DIRECTOR: LINGO: Switch back to LALR(1) parser

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 6205e16..a4c7274 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -1,13 +1,14 @@
-/* A Bison parser, made by GNU Bison 3.4.2.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Skeleton implementation for Bison GLR parsers in C
+/* Skeleton implementation for Bison's Yacc-like parsers in C
 
-   Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
-   This program is free software: you can redistribute it and/or modify
+   This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -15,7 +16,9 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -30,30 +33,228 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-/* C GLR parser skeleton written by Paul Hilfinger.  */
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+   simplifying the original so-called "semantic" parser.  */
 
-/* Undocumented macros, especially those whose name start with YY_,
-   are private implementation details.  Do not rely on them.  */
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
 
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.4.2"
+#define YYBISON_VERSION "2.3"
 
 /* Skeleton name.  */
-#define YYSKELETON_NAME "glr.c"
+#define YYSKELETON_NAME "yacc.c"
 
 /* Pure parsers.  */
 #define YYPURE 0
 
-
-
-
-
-
-/* First part of user prologue.  */
-#line 50 "engines/director/lingo/lingo-gr.y"
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* 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,
+     ARGC = 268,
+     ARGCNORET = 269,
+     THEENTITY = 270,
+     THEENTITYWITHID = 271,
+     FLOAT = 272,
+     BLTIN = 273,
+     BLTINNOARGS = 274,
+     BLTINNOARGSORONE = 275,
+     BLTINONEARG = 276,
+     BLTINARGLIST = 277,
+     TWOWORDBUILTIN = 278,
+     FBLTIN = 279,
+     FBLTINNOARGS = 280,
+     FBLTINONEARG = 281,
+     FBLTINARGLIST = 282,
+     RBLTIN = 283,
+     RBLTINONEARG = 284,
+     ID = 285,
+     STRING = 286,
+     HANDLER = 287,
+     SYMBOL = 288,
+     ENDCLAUSE = 289,
+     tPLAYACCEL = 290,
+     tDOWN = 291,
+     tELSE = 292,
+     tNLELSIF = 293,
+     tEXIT = 294,
+     tFRAME = 295,
+     tGLOBAL = 296,
+     tGO = 297,
+     tIF = 298,
+     tINTO = 299,
+     tLOOP = 300,
+     tMACRO = 301,
+     tMOVIE = 302,
+     tNEXT = 303,
+     tOF = 304,
+     tPREVIOUS = 305,
+     tPUT = 306,
+     tREPEAT = 307,
+     tSET = 308,
+     tTHEN = 309,
+     tTHENNL = 310,
+     tTO = 311,
+     tWHEN = 312,
+     tWITH = 313,
+     tWHILE = 314,
+     tNLELSE = 315,
+     tFACTORY = 316,
+     tMETHOD = 317,
+     tOPEN = 318,
+     tPLAY = 319,
+     tDONE = 320,
+     tINSTANCE = 321,
+     tGE = 322,
+     tLE = 323,
+     tGT = 324,
+     tLT = 325,
+     tEQ = 326,
+     tNEQ = 327,
+     tAND = 328,
+     tOR = 329,
+     tNOT = 330,
+     tMOD = 331,
+     tAFTER = 332,
+     tBEFORE = 333,
+     tCONCAT = 334,
+     tCONTAINS = 335,
+     tSTARTS = 336,
+     tCHAR = 337,
+     tITEM = 338,
+     tLINE = 339,
+     tWORD = 340,
+     tSPRITE = 341,
+     tINTERSECTS = 342,
+     tWITHIN = 343,
+     tTELL = 344,
+     tPROPERTY = 345,
+     tON = 346,
+     tME = 347
+   };
+#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 ARGC 268
+#define ARGCNORET 269
+#define THEENTITY 270
+#define THEENTITYWITHID 271
+#define FLOAT 272
+#define BLTIN 273
+#define BLTINNOARGS 274
+#define BLTINNOARGSORONE 275
+#define BLTINONEARG 276
+#define BLTINARGLIST 277
+#define TWOWORDBUILTIN 278
+#define FBLTIN 279
+#define FBLTINNOARGS 280
+#define FBLTINONEARG 281
+#define FBLTINARGLIST 282
+#define RBLTIN 283
+#define RBLTINONEARG 284
+#define ID 285
+#define STRING 286
+#define HANDLER 287
+#define SYMBOL 288
+#define ENDCLAUSE 289
+#define tPLAYACCEL 290
+#define tDOWN 291
+#define tELSE 292
+#define tNLELSIF 293
+#define tEXIT 294
+#define tFRAME 295
+#define tGLOBAL 296
+#define tGO 297
+#define tIF 298
+#define tINTO 299
+#define tLOOP 300
+#define tMACRO 301
+#define tMOVIE 302
+#define tNEXT 303
+#define tOF 304
+#define tPREVIOUS 305
+#define tPUT 306
+#define tREPEAT 307
+#define tSET 308
+#define tTHEN 309
+#define tTHENNL 310
+#define tTO 311
+#define tWHEN 312
+#define tWITH 313
+#define tWHILE 314
+#define tNLELSE 315
+#define tFACTORY 316
+#define tMETHOD 317
+#define tOPEN 318
+#define tPLAY 319
+#define tDONE 320
+#define tINSTANCE 321
+#define tGE 322
+#define tLE 323
+#define tGT 324
+#define tLT 325
+#define tEQ 326
+#define tNEQ 327
+#define tAND 328
+#define tOR 329
+#define tNOT 330
+#define tMOD 331
+#define tAFTER 332
+#define tBEFORE 333
+#define tCONCAT 334
+#define tCONTAINS 335
+#define tSTARTS 336
+#define tCHAR 337
+#define tITEM 338
+#define tLINE 339
+#define tWORD 340
+#define tSPRITE 341
+#define tINTERSECTS 342
+#define tWITHIN 343
+#define tTELL 344
+#define tPROPERTY 345
+#define tON 346
+#define tME 347
+
+
+
+
+/* Copy the first part of user declarations.  */
+#line 49 "engines/director/lingo/lingo-gr.y"
 
 #define FORBIDDEN_SYMBOL_ALLOW_ALL
 
@@ -83,22 +284,11 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 }
 
 
-#line 87 "engines/director/lingo/lingo-gr.cpp"
-
-
-# ifndef YY_NULLPTR
-#  if defined __cplusplus
-#   if 201103L <= __cplusplus
-#    define YY_NULLPTR nullptr
-#   else
-#    define YY_NULLPTR 0
-#   endif
-#  else
-#   define YY_NULLPTR ((void*)0)
-#  endif
-# endif
 
-#include "lingo-gr.h"
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
 
 /* Enabling verbose error messages.  */
 #ifdef YYERROR_VERBOSE
@@ -108,137 +298,253 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 # define YYERROR_VERBOSE 0
 #endif
 
-/* Default (constant) value used for initialization for null
-   right-hand sides.  Unlike the standard yacc.c template, here we set
-   the default value of $$ to a zeroed-out value.  Since the default
-   value is undefined, this behavior is technically correct.  */
-static YYSTYPE yyval_default;
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+#line 79 "engines/director/lingo/lingo-gr.y"
+{
+	Common::String *s;
+	int i;
+	double f;
+	int e[2];	// Entity + field
+	int code;
+	int narg;	/* number of arguments */
+	Common::Array<double> *arr;
+}
+/* Line 193 of yacc.c.  */
+#line 320 "engines/director/lingo/lingo-gr.cpp"
+	YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
 
 
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
+/* Copy the second part of user declarations.  */
 
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
-#  endif
-# endif
-# ifndef YY_
-#  define YY_(Msgid) Msgid
-# endif
-#endif
 
-#ifndef YYFREE
-# define YYFREE free
-#endif
-#ifndef YYMALLOC
-# define YYMALLOC malloc
+/* Line 216 of yacc.c.  */
+#line 333 "engines/director/lingo/lingo-gr.cpp"
+
+#ifdef short
+# undef short
 #endif
-#ifndef YYREALLOC
-# define YYREALLOC realloc
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
 #endif
 
-#define YYSIZEMAX ((size_t) -1)
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
 
-#ifdef __cplusplus
-  typedef bool yybool;
-# define yytrue true
-# define yyfalse false
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
 #else
-  /* When we move to stdbool, get rid of the various casts to yybool.  */
-  typedef unsigned char yybool;
-# define yytrue 1
-# define yyfalse 0
+typedef unsigned short int yytype_uint16;
 #endif
 
-#ifndef YYSETJMP
-# include <setjmp.h>
-# define YYJMP_BUF jmp_buf
-# define YYSETJMP(Env) setjmp (Env)
-/* Pacify Clang and ICC.  */
-# define YYLONGJMP(Env, Val)                    \
- do {                                           \
-   longjmp (Env, Val);                          \
-   YYASSERT (0);                                \
- } while (yyfalse)
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
 #endif
 
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__                                               \
-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+#  define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+#  define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
 # else
-#  define YY_ATTRIBUTE(Spec) /* empty */
+#  define YYSIZE_T unsigned int
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
-#endif
-
-#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
-/* The _Noreturn keyword of C11.  */
-#ifndef _Noreturn
-# if (defined __cplusplus \
-      && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
-          || (defined _MSC_VER && 1900 <= _MSC_VER)))
-#  define _Noreturn [[noreturn]]
-# elif ((!defined __cplusplus || defined __clang__) \
-        && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0)  \
-            || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
-   /* _Noreturn works as-is.  */
-# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
-#  define _Noreturn __attribute__ ((__noreturn__))
-# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YYUSE(e) ((void) (e))
 #else
-# define YYUSE(E) /* empty */
+# define YYUSE(e) /* empty */
 #endif
 
-#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
-/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
-    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
-    _Pragma ("GCC diagnostic pop")
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(n) (n)
 #else
-# define YY_INITIAL_VALUE(Value) Value
-#endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+    int i;
 #endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
+{
+  return i;
+}
 #endif
 
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   elif defined __BUILTIN_VA_ARG_INCR
+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+#   elif defined _AIX
+#    define YYSTACK_ALLOC __alloca
+#   elif defined _MSC_VER
+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+#    define alloca _alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     ifndef _STDLIB_H
+#      define _STDLIB_H 1
+#     endif
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+#  endif
+#  if (defined __cplusplus && ! defined _STDLIB_H \
+       && ! ((defined YYMALLOC || defined malloc) \
+	     && (defined YYFREE || defined free)))
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   ifndef _STDLIB_H
+#    define _STDLIB_H 1
+#   endif
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+     && (! defined __cplusplus \
+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  yytype_int16 yyss;
+  YYSTYPE yyvs;
+  };
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+      + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (YYID (0))
+#  endif
+# endif
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack)					\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack, Stack, yysize);				\
+	Stack = &yyptr->Stack;						\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (YYID (0))
 
-#ifndef YYASSERT
-# define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0)))
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  126
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3379
+#define YYLAST   1563
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  107
@@ -246,28 +552,18 @@ static YYSTYPE yyval_default;
 #define YYNNTS  41
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  163
-/* YYNSTATES -- Number of states.  */
+/* YYNRULES -- Number of states.  */
 #define YYNSTATES  358
-/* YYMAXRHS -- Maximum number of symbols on right-hand side of rule.  */
-#define YYMAXRHS 11
-/* YYMAXLEFT -- Maximum number of symbols to the left of a handle
-   accessed by $0, $-1, etc., in any rule.  */
-#define YYMAXLEFT 0
 
-/* YYMAXUTOK -- Last valid token number (for yychar).  */
-#define YYMAXUTOK   347
-/* YYUNDEFTOK -- Symbol number (for yytoken) that denotes an unknown
-   token.  */
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
+#define YYMAXUTOK   347
 
-/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, with out-of-bounds checking.  */
-#define YYTRANSLATE(YYX)                                                \
-  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex.  */
-static const unsigned char yytranslate[] =
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
       99,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -307,30 +603,121 @@ static const unsigned char yytranslate[] =
 };
 
 #if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const yytype_uint16 yyprhs[] =
+{
+       0,     0,     3,     7,     9,    12,    13,    15,    17,    22,
+      27,    32,    37,    42,    47,    52,    57,    63,    69,    71,
+      73,    75,    77,    79,    85,    96,   108,   112,   119,   124,
+     135,   142,   152,   159,   160,   163,   170,   177,   179,   189,
+     195,   200,   206,   211,   214,   218,   220,   222,   223,   224,
+     225,   228,   231,   235,   237,   239,   241,   243,   245,   247,
+     249,   251,   253,   256,   259,   264,   266,   269,   271,   275,
+     279,   283,   287,   291,   295,   299,   303,   307,   311,   315,
+     319,   323,   326,   330,   334,   338,   342,   345,   348,   352,
+     356,   361,   366,   371,   378,   383,   390,   395,   402,   407,
+     414,   416,   419,   422,   424,   426,   429,   431,   434,   437,
+     440,   442,   445,   448,   450,   453,   458,   465,   470,   473,
+     477,   479,   483,   485,   489,   491,   495,   498,   501,   504,
+     507,   511,   514,   517,   519,   523,   526,   529,   532,   536,
+     539,   540,   544,   545,   554,   557,   558,   567,   576,   583,
+     586,   587,   589,   593,   598,   599,   601,   605,   606,   609,
+     610,   612,   616,   618
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int16 yyrhs[] =
+{
+     108,     0,    -1,   108,    99,   109,    -1,   109,    -1,     1,
+      99,    -1,    -1,   138,    -1,   112,    -1,    51,   127,    44,
+      30,    -1,    51,   127,    44,   128,    -1,    51,   127,    77,
+     127,    -1,    51,   127,    78,   127,    -1,    53,    30,    71,
+     127,    -1,    53,    15,    71,   127,    -1,    53,    30,    56,
+     127,    -1,    53,    15,    56,   127,    -1,    53,    16,   127,
+      56,   127,    -1,    53,    16,   126,    71,   127,    -1,   145,
+      -1,   127,    -1,   129,    -1,   111,    -1,   113,    -1,   117,
+     127,   123,   122,    34,    -1,   118,    71,   127,   122,    56,
+     127,   122,   123,   122,    34,    -1,   118,    71,   127,   122,
+      36,    56,   127,   122,   123,   122,    34,    -1,   124,   111,
+     122,    -1,   125,   127,    99,   123,   122,    34,    -1,   125,
+     127,    56,   127,    -1,   119,   127,    54,   121,   111,   122,
+     114,   122,   116,   122,    -1,   119,   127,    54,   121,   111,
+     122,    -1,   119,   127,    55,   123,   122,   114,   122,   116,
+     122,    -1,   119,   127,    55,   123,   122,    34,    -1,    -1,
+     115,   114,    -1,   120,   127,    54,   121,   111,   122,    -1,
+     120,   127,    55,   121,   123,   122,    -1,    34,    -1,   120,
+     127,    54,   121,   111,   122,    37,   111,   122,    -1,    37,
+     121,   123,   122,    34,    -1,    37,   121,   111,   122,    -1,
+      60,   121,   123,   122,    34,    -1,    60,   121,   111,   122,
+      -1,    52,    59,    -1,    52,    58,    30,    -1,    43,    -1,
+      38,    -1,    -1,    -1,    -1,   123,    99,    -1,   123,   112,
+      -1,    57,    30,    54,    -1,    89,    -1,    12,    -1,    17,
+      -1,    33,    -1,    31,    -1,    30,    -1,   126,    -1,   128,
+      -1,    25,    -1,    26,   127,    -1,    27,   147,    -1,    30,
+     100,   146,   101,    -1,    15,    -1,    16,   127,    -1,   110,
+      -1,   127,    94,   127,    -1,   127,    95,   127,    -1,   127,
+      96,   127,    -1,   127,    97,   127,    -1,   127,    76,   127,
+      -1,   127,   102,   127,    -1,   127,   103,   127,    -1,   127,
+      71,   127,    -1,   127,    72,   127,    -1,   127,    67,   127,
+      -1,   127,    68,   127,    -1,   127,    73,   127,    -1,   127,
+      74,   127,    -1,    75,   127,    -1,   127,    93,   127,    -1,
+     127,    79,   127,    -1,   127,    80,   127,    -1,   127,    81,
+     127,    -1,    94,   127,    -1,    95,   127,    -1,   100,   127,
+     101,    -1,   104,   146,   105,    -1,    86,   127,    87,   127,
+      -1,    86,   127,    88,   127,    -1,    82,   127,    49,   127,
+      -1,    82,   127,    56,   127,    49,   127,    -1,    83,   127,
+      49,   127,    -1,    83,   127,    56,   127,    49,   127,    -1,
+      84,   127,    49,   127,    -1,    84,   127,    56,   127,    49,
+     127,    -1,    85,   127,    49,   127,    -1,    85,   127,    56,
+     127,    49,   127,    -1,    92,    -1,    29,   127,    -1,    51,
+     127,    -1,   133,    -1,   136,    -1,    39,    52,    -1,    39,
+      -1,    41,   130,    -1,    90,   131,    -1,    66,   132,    -1,
+      19,    -1,    21,   127,    -1,    20,   127,    -1,    20,    -1,
+      22,   147,    -1,    92,   100,    30,   101,    -1,    92,   100,
+      30,   106,   146,   101,    -1,    63,   127,    58,   127,    -1,
+      63,   127,    -1,    23,    30,   146,    -1,    30,    -1,   130,
+     106,    30,    -1,    30,    -1,   131,   106,    30,    -1,    30,
+      -1,   132,   106,    30,    -1,    42,    45,    -1,    42,    48,
+      -1,    42,    50,    -1,    42,   134,    -1,    42,   134,   135,
+      -1,    42,   135,    -1,    40,   127,    -1,   127,    -1,    49,
+      47,   127,    -1,    47,   127,    -1,    64,    65,    -1,    64,
+     134,    -1,    64,   134,   135,    -1,    64,   135,    -1,    -1,
+      35,   137,   146,    -1,    -1,    46,    30,   139,   121,   142,
+      99,   144,   123,    -1,    61,    30,    -1,    -1,    62,    30,
+     140,   121,   142,    99,   144,   123,    -1,   141,   121,   142,
+      99,   144,   123,    34,   143,    -1,   141,   121,   142,    99,
+     144,   123,    -1,    91,    30,    -1,    -1,    30,    -1,   142,
+     106,    30,    -1,   142,    99,   106,    30,    -1,    -1,    30,
+      -1,   143,   106,    30,    -1,    -1,    30,   147,    -1,    -1,
+     127,    -1,   146,   106,   127,    -1,   127,    -1,   147,   106,
+     127,    -1
+};
+
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const unsigned short yyrline[] =
-{
-       0,   121,   121,   122,   123,   126,   127,   128,   131,   137,
-     140,   141,   142,   148,   155,   161,   168,   174,   182,   183,
-     184,   187,   188,   193,   206,   224,   238,   243,   246,   251,
-     261,   271,   281,   293,   294,   297,   303,   311,   312,   318,
-     322,   325,   329,   333,   336,   343,   350,   358,   361,   364,
-     365,   366,   369,   375,   379,   382,   385,   388,   391,   397,
-     398,   399,   402,   405,   406,   409,   417,   423,   424,   425,
-     426,   427,   428,   429,   430,   431,   432,   433,   434,   435,
-     436,   437,   438,   439,   440,   441,   442,   443,   444,   445,
-     446,   447,   448,   449,   450,   451,   452,   453,   454,   455,
-     456,   459,   464,   465,   466,   467,   468,   469,   470,   471,
-     472,   475,   478,   481,   485,   486,   487,   488,   489,   490,
-     493,   494,   497,   498,   501,   502,   513,   514,   515,   516,
-     520,   524,   530,   531,   534,   535,   538,   539,   543,   547,
-     551,   551,   581,   581,   586,   587,   587,   592,   599,   605,
-     607,   608,   609,   610,   613,   614,   615,   618,   622,   630,
-     631,   632,   635,   636
+static const yytype_uint16 yyrline[] =
+{
+       0,   120,   120,   121,   122,   125,   126,   127,   130,   136,
+     139,   140,   141,   147,   154,   160,   167,   173,   181,   182,
+     183,   186,   187,   192,   205,   223,   237,   242,   245,   250,
+     260,   270,   280,   292,   293,   296,   302,   310,   311,   317,
+     321,   324,   328,   332,   335,   342,   349,   357,   360,   363,
+     364,   365,   368,   374,   378,   381,   384,   387,   390,   396,
+     397,   398,   401,   404,   405,   408,   416,   422,   423,   424,
+     425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
+     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
+     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
+     455,   458,   463,   464,   465,   466,   467,   468,   469,   470,
+     471,   474,   477,   480,   484,   485,   486,   487,   488,   489,
+     492,   493,   496,   497,   500,   501,   512,   513,   514,   515,
+     519,   523,   529,   530,   533,   534,   537,   538,   542,   546,
+     550,   550,   580,   580,   585,   586,   586,   591,   598,   604,
+     606,   607,   608,   609,   612,   613,   614,   617,   621,   629,
+     630,   631,   634,   635
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || 0
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
@@ -355,61 +742,79 @@ static const char *const yytname[] =
   "elseifstmtlist", "elseifstmt", "endifstmt", "repeatwhile", "repeatwith",
   "if", "elseif", "begin", "end", "stmtlist", "when", "tell", "simpleexpr",
   "expr", "reference", "proc", "globallist", "propertylist",
-  "instancelist", "gotofunc", "gotoframe", "gotomovie", "playfunc", "$@1",
-  "defn", "$@2", "$@3", "on", "argdef", "endargdef", "argstore", "macro",
-  "arglist", "nonemptyarglist", YY_NULLPTR
+  "instancelist", "gotofunc", "gotoframe", "gotomovie", "playfunc", "@1",
+  "defn", "@2", "@3", "on", "argdef", "endargdef", "argstore", "macro",
+  "arglist", "nonemptyarglist", 0
 };
 #endif
 
-#define YYPACT_NINF -290
-#define YYTABLE_NINF -31
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const yytype_uint16 yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,    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,   107,   108,   108,   108,   109,   109,   109,   110,   110,
+     110,   110,   110,   110,   110,   110,   110,   110,   111,   111,
+     111,   112,   112,   112,   112,   112,   112,   112,   112,   113,
+     113,   113,   113,   114,   114,   115,   115,   116,   116,   116,
+     116,   116,   116,   117,   118,   119,   120,   121,   122,   123,
+     123,   123,   124,   125,   126,   126,   126,   126,   126,   127,
+     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
+     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
+     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
+     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
+     127,   128,   129,   129,   129,   129,   129,   129,   129,   129,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     130,   130,   131,   131,   132,   132,   133,   133,   133,   133,
+     133,   133,   134,   134,   135,   135,   136,   136,   136,   136,
+     137,   136,   139,   138,   138,   140,   138,   138,   138,   141,
+     142,   142,   142,   142,   143,   143,   143,   144,   145,   146,
+     146,   146,   147,   147
+};
 
-  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-     STATE-NUM.  */
-static const short yypact[] =
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
 {
-     341,   -83,  -290,  -290,  1231,  -290,  -290,  1271,  1231,  1231,
-      16,  -290,  1231,  1231,  1231,  1352,  -290,  -290,  -290,    21,
-      22,  1110,  -290,    53,  1231,    94,    -2,    67,    90,   126,
-    1231,  1150,   130,  1231,  1231,  1231,  1231,  1231,  1231,  -290,
-     136,   137,    63,  1231,  1231,  1231,  1231,     6,  -290,  -290,
-    -290,  -290,  -290,  1231,    99,  1231,   857,  1231,  -290,  1945,
-    -290,  -290,  -290,  -290,  -290,  -290,  -290,  -290,    71,  1231,
-    -290,  1978,  2011,  2044,  2077,    82,  1392,  2110,    86,  2143,
-    1231,    82,  1473,  -290,  -290,    87,  1231,  -290,  1231,  -290,
-     152,  -290,  2176,    77,  -290,  -290,  1507,   143,  -290,    -8,
-    1231,    10,   148,  -290,  -290,   919,  -290,    77,  -290,  -290,
-      98,   -43,    19,  1578,  1611,  1644,  1875,  -290,   101,  -290,
-     179,   -41,     0,  1005,  2209,     4,  -290,   427,  2242,  1231,
-     146,  -290,  1842,  1231,  1231,  1231,  1231,  1231,  1231,  1231,
-    1231,  1231,  1231,  1231,  1231,  1231,  1231,  1231,  1231,  1231,
-     180,  1231,  1545,  1231,   109,  1908,   -82,   109,   191,  2275,
-    2308,  1231,  -290,  -290,   125,  1231,  1231,  -290,  1231,  1231,
-     153,   833,  1231,  1231,  -290,  -290,  1231,  -290,   193,  1231,
-    1231,  1231,  1231,  1231,  1231,  1231,  1231,  1231,  1231,   200,
-     -51,  -290,  -290,  1231,  -290,   599,  2341,  -290,  -290,  -290,
-    1231,  -290,   158,   202,  1173,  1294,  3199,  3232,    15,  2374,
-    1467,  3243,   230,   312,   398,    48,    95,  2407,  2440,  -290,
-     -35,  2473,  -290,  -290,  2506,   180,  -290,  -290,  2539,  2572,
-    2605,  3254,  1231,  1231,  2638,  3265,   180,  2671,  -290,  2704,
-    1442,  2737,  1677,  2770,  1710,  2803,  1743,  2836,  2869,  -290,
-    -290,  1231,  2902,  -290,  -290,   199,   -11,   857,   599,  2935,
-     599,   129,   208,   -29,  3276,  2968,     2,  1231,  1231,  1231,
-    1231,     5,  -290,   188,  1231,  -290,    51,   211,   216,  -290,
-    -290,   129,   129,  3001,  3034,  3067,  3100,  -290,  1231,  3133,
-     -16,  -290,  -290,  -290,   212,  1231,  -290,  -290,   513,  -290,
-    -290,  3166,  -290,  -290,    20,  -290,  1776,   226,   685,   771,
-    -290,   599,    20,  -290,  -290,  -290,  -290,  1231,  -290,  -290,
-    -290,   156,   599,   224,  -290,   943,  1029,  -290,  1809,   857,
-    -290,   237,   234,  -290,  -290,  -290,   599,  -290,   599,  -290,
-    -290,   599,  -290,  -290,  -290,   235,  -290,   239,   857,  -290,
-    -290,  -290,  -290,  -290,   240,   857,  -290,  -290
+       0,     2,     3,     1,     2,     0,     1,     1,     4,     4,
+       4,     4,     4,     4,     4,     4,     5,     5,     1,     1,
+       1,     1,     1,     5,    10,    11,     3,     6,     4,    10,
+       6,     9,     6,     0,     2,     6,     6,     1,     9,     5,
+       4,     5,     4,     2,     3,     1,     1,     0,     0,     0,
+       2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     2,     2,     4,     1,     2,     1,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     2,     3,     3,     3,     3,     2,     2,     3,     3,
+       4,     4,     4,     6,     4,     6,     4,     6,     4,     6,
+       1,     2,     2,     1,     1,     2,     1,     2,     2,     2,
+       1,     2,     2,     1,     2,     4,     6,     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,     8,     6,     2,
+       0,     1,     3,     4,     0,     1,     3,     0,     2,     0,
+       1,     3,     1,     3
 };
 
-  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-     Performed when YYTABLE does not specify something else to do.  Zero
-     means the default is an error.  */
-static const unsigned char yydefact[] =
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const yytype_uint8 yydefact[] =
 {
        0,     0,    54,    65,     0,    55,   110,   113,     0,     0,
        0,    61,     0,     0,     0,    58,    57,    56,   140,   106,
@@ -449,18 +854,8 @@ static const unsigned char yydefact[] =
       36,    39,    41,    48,     0,     0,    48,    38
 };
 
-  /* YYPGOTO[NTERM-NUM].  */
-static const short yypgoto[] =
-{
-    -290,  -290,   149,  -290,   -54,     1,  -290,  -171,  -290,   -33,
-    -290,  -290,  -290,  -289,  -128,    -1,   -94,  -290,  -290,   182,
-      -4,   116,  -290,  -290,  -290,  -290,  -290,   252,   -19,  -290,
-    -290,  -290,  -290,  -290,  -290,  -169,  -290,  -123,  -290,   -39,
-     133
-};
-
-  /* YYDEFGOTO[NTERM-NUM].  */
-static const short yydefgoto[] =
+/* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
 {
       -1,    47,    48,    49,    50,   254,    52,   293,   294,   316,
       53,    54,    55,   295,   150,   199,   195,    56,    57,    58,
@@ -469,62 +864,117 @@ static const short yydefgoto[] =
       75
 };
 
-  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-     positive, shift that token.  If negative, reduce the rule whose
-     number is the opposite.  If YYTABLE_NINF, syntax error.  */
-static const short yytable[] =
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -289
+static const yytype_int16 yypact[] =
+{
+     341,   -37,  -289,  -289,   887,  -289,  -289,   887,   887,   887,
+      26,  -289,   887,   887,   887,   927,  -289,  -289,  -289,    18,
+      43,   766,  -289,    67,   887,     8,    -2,    87,    88,    89,
+     887,   806,    90,   887,   887,   887,   887,   887,   887,  -289,
+      93,    94,    27,   887,   887,   887,   887,     6,  -289,  -289,
+    -289,  -289,  -289,   887,    55,   887,   685,   887,  -289,  1427,
+    -289,  -289,  -289,  -289,  -289,  -289,  -289,  -289,    46,   887,
+    -289,  1427,  1427,  1427,  1427,    42,   887,  1427,    42,  1427,
+     887,    42,   887,  -289,  -289,    44,   887,  -289,   887,  -289,
+     104,  -289,  1427,    30,  -289,  -289,   961,   122,  -289,   -33,
+     887,   -10,    99,  -289,  -289,  1324,  -289,    30,  -289,  -289,
+      48,   -43,    19,   994,  1027,  1060,  1357,  -289,    49,  -289,
+     126,   -43,   -43,  1390,  1427,    -3,  -289,   427,  1427,   887,
+     146,  -289,  1291,   887,   887,   887,   887,   887,   887,   887,
+     887,   887,   887,   887,   887,   887,   887,   887,   887,   887,
+     128,   887,   961,   887,    53,  1390,   -21,    53,   130,  1427,
+    1427,   887,  -289,  -289,    79,   887,   887,  -289,   887,   887,
+      92,   661,   887,   887,  -289,  -289,   887,  -289,   136,   887,
+     887,   887,   887,   887,   887,   887,   887,   887,   887,   137,
+     -12,  -289,  -289,   887,  -289,   599,  1427,  -289,  -289,  -289,
+     887,  -289,   158,   158,   158,   158,  1460,  1460,   -43,  1427,
+     158,   158,   201,   229,   229,   -43,   -43,  1427,  1427,  -289,
+     -51,  1427,  -289,  -289,  1427,   128,  -289,  -289,  1427,  1427,
+    1427,   158,   887,   887,  1427,   158,   128,  1427,  -289,  1427,
+    1093,  1427,  1126,  1427,  1159,  1427,  1192,  1427,  1427,  -289,
+    -289,   887,  1427,  -289,  -289,   139,   -11,   685,   599,  1427,
+     599,    64,   141,   -49,   158,  1427,   -35,   887,   887,   887,
+     887,     0,  -289,   118,   887,  -289,    20,   154,   162,  -289,
+    -289,    64,    64,  1427,  1427,  1427,  1427,  -289,   887,  1427,
+     155,  -289,  -289,  -289,   155,   887,  -289,  -289,   513,  -289,
+    -289,  1427,  -289,  -289,   -16,  -289,  1225,   167,   599,   599,
+    -289,   599,   -16,  -289,  -289,  -289,  -289,   887,  -289,  -289,
+    -289,    96,   599,   164,  -289,   685,   685,  -289,  1258,   685,
+    -289,   169,   170,  -289,  -289,  -289,   599,  -289,   599,  -289,
+    -289,   599,  -289,  -289,  -289,   173,  -289,   175,   685,  -289,
+    -289,  -289,  -289,  -289,   178,   685,  -289,  -289
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+    -289,  -289,    83,  -289,   -54,     1,  -289,  -275,  -289,   -91,
+    -289,  -289,  -289,  -288,  -128,    -1,   -94,  -289,  -289,   123,
+      -4,    60,  -289,  -289,  -289,  -289,  -289,   199,   -19,  -289,
+    -289,  -289,  -289,  -289,  -289,  -173,  -289,  -171,  -289,   -39,
+      68
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If zero, do what YYDEFACT says.
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -6
+static const yytype_int16 yytable[] =
 {
       71,    51,   131,    72,    73,    74,   126,   125,    77,    74,
-      79,    74,   108,    99,   100,   317,    67,    92,   -30,   222,
-      96,   -30,   292,   317,   193,   273,   105,    92,   101,   111,
-     112,   113,   114,   115,   116,   225,   140,   154,   140,   121,
-     122,   123,   124,   157,   -30,   274,    76,   236,   168,   128,
-     250,   130,    84,   132,   313,   251,   263,   314,   292,   148,
-     149,   148,   149,   169,   261,   152,   172,   266,   179,   257,
-     281,   262,   124,    83,   162,   180,   155,   262,   124,   140,
-     315,   173,   159,    95,   160,   291,   133,   134,   177,   292,
-     135,   136,   137,   138,   140,   139,   171,   102,   140,   141,
-     142,   282,   148,   149,   258,   127,   287,   260,   262,   192,
-     193,   193,   143,   144,   145,   146,   147,   148,   149,   303,
-     103,   148,   149,   305,    88,   196,    90,   140,    51,   202,
+      79,    74,   108,    99,   100,   303,   317,    92,   313,   305,
+      96,   314,   292,   168,   317,   273,   105,    92,   101,   111,
+     112,   113,   114,   115,   116,   225,   140,   154,   169,   121,
+     122,   123,   124,   157,   315,   274,   172,   236,   261,   128,
+     281,   130,   263,   132,   291,   262,    76,   262,   292,   148,
+     149,   173,    67,   266,   282,   152,    97,    98,   179,   257,
+      83,   262,   124,    84,   162,   180,   155,    88,   124,    90,
+     222,    78,   159,    81,   160,   193,   133,   134,   177,   250,
+     135,   136,   137,   138,   251,   139,   171,    95,   140,   141,
+     142,   287,   192,   193,   258,   127,   193,   260,    14,   226,
+     299,   300,   143,   144,   145,   146,   147,   102,   103,   104,
+     109,   148,   149,   117,   119,   196,   129,   120,    51,   202,
      203,   204,   205,   206,   207,   208,   209,   210,   211,   212,
-     213,   214,   215,   216,   217,   218,    78,   124,    81,   221,
-     148,   149,    97,    98,    14,   226,   104,   224,   299,   300,
-     109,   228,   229,   120,   230,   231,   117,   119,   234,   235,
-     129,   151,   237,   167,   140,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   298,   325,   326,   153,   252,
-     329,   330,   153,   158,   255,   256,   259,   148,   149,   161,
-     197,   198,   174,   275,   178,   308,   309,   189,   311,   190,
-     219,   348,   271,   133,   134,   193,   322,   135,   136,   137,
-     138,   223,   139,   238,   232,   140,   141,   142,   264,   265,
-     249,   336,   338,   272,   139,   278,   341,   140,   280,   143,
-     144,   145,   146,   147,   288,   296,   297,   124,   148,   149,
-     292,   143,   144,   145,   146,   147,   320,   276,   333,   277,
-     148,   149,   331,   283,   284,   285,   286,   342,   343,   351,
-     289,   335,   337,   352,   290,   340,   194,   355,   139,   324,
-     227,   140,   170,   107,   301,     0,     0,     0,   302,     0,
-       0,   306,   304,     0,   353,   143,   144,   145,   146,   147,
-     310,   356,   312,     0,   148,   149,   139,     0,     0,   140,
+     213,   214,   215,   216,   217,   218,   151,   124,   153,   221,
+     158,   161,   167,   174,   178,   189,   190,   224,   219,   193,
+     223,   228,   229,   232,   230,   231,   238,   249,   234,   235,
+     278,   280,   237,   272,   288,   239,   240,   241,   242,   243,
+     244,   245,   246,   247,   248,   298,   325,   326,   296,   252,
+     329,   330,   297,   292,   255,   256,   259,   320,   333,   342,
+     197,   198,   331,   275,   343,   308,   309,   351,   311,   352,
+     194,   348,   271,   133,   134,   355,   322,   135,   136,   137,
+     138,   324,   139,   170,   227,   140,   141,   142,   264,   265,
+     107,   336,   338,     0,   139,     0,   341,   140,     0,   143,
+     144,   145,   146,   147,     0,     0,     0,   124,   148,   149,
+       0,   143,   144,   145,   146,   147,     0,   276,     0,   277,
+     148,   149,     0,   283,   284,   285,   286,     0,     0,     0,
+     289,   335,   337,     0,   290,   340,     0,   139,     0,     0,
+     140,     0,     0,     0,   301,     0,     0,     0,   302,     0,
+       0,   306,   304,     0,   353,   144,   145,   146,   147,     0,
+     310,   356,   312,   148,   149,   139,     0,     0,   140,     0,
      323,     0,     0,   328,     0,   327,     0,     0,     0,     0,
-       0,   332,     0,   334,   144,   145,   146,   147,     0,     0,
-       0,     0,   148,   149,   344,   345,   346,   347,     0,   349,
+       0,   332,     0,   334,     0,   146,   147,     0,     0,     0,
+       0,   148,   149,     0,   344,   345,   346,   347,     0,   349,
      350,    -5,     1,     0,     0,     0,     0,     0,     0,     0,
        0,     0,   354,     2,     0,   357,     3,     4,     5,     0,
        6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
       14,    15,    16,     0,    17,     0,    18,     0,     0,     0,
-      19,     0,    20,    21,    22,     0,     0,    23,   139,     0,
-       0,   140,    24,    25,    26,     0,     0,     0,    27,     0,
-       0,     0,    28,    29,    30,    31,     0,    32,   146,   147,
-       0,     0,     0,     0,   148,   149,    33,     0,     0,     0,
+      19,     0,    20,    21,    22,     0,     0,    23,     0,     0,
+       0,     0,    24,    25,    26,     0,     0,     0,    27,     0,
+       0,     0,    28,    29,    30,    31,     0,    32,     0,     0,
+       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
        0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
       39,    40,    41,    42,     0,    43,    44,     0,     0,     2,
       -5,    45,     3,     4,     5,    46,     6,     7,     8,     9,
       10,     0,    11,    12,    13,     0,    14,    15,    16,     0,
       17,     0,    18,     0,     0,     0,    19,     0,    20,    21,
-      22,     0,     0,    23,   139,     0,     0,   140,    24,    25,
+      22,     0,     0,    23,     0,     0,     0,     0,    24,    25,
       26,     0,     0,     0,    27,     0,     0,     0,    28,    29,
-      30,    31,     0,    32,   146,   147,     0,     0,     0,     0,
-     148,   149,    33,     0,     0,     0,     0,     0,     0,    34,
+      30,    31,     0,    32,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,    34,
       35,    36,    37,    38,     0,     0,    39,    40,    41,    42,
        0,    43,    44,     0,     0,     2,     0,    45,     3,     4,
        5,    46,     6,     7,     8,     9,    10,     0,    11,    12,
@@ -545,328 +995,147 @@ static const short yytable[] =
        0,    34,    35,    36,    37,    38,     0,     0,    39,    40,
        0,    42,     0,    43,    44,     0,     0,     2,   253,    45,
        3,     4,     5,    46,     6,     7,     8,     9,    10,     0,
-      11,    12,    13,     0,    14,    15,    16,     0,    17,     0,
-      18,     0,     0,     0,    19,     0,    20,    21,    22,     0,
-       0,     0,     0,     0,     0,     0,    24,    25,    26,     0,
-       0,     0,    27,     0,     0,     0,     0,     0,    30,    31,
-       0,    32,     0,     0,     0,     0,     0,     0,     0,     0,
-      33,     0,     0,     0,     0,     0,     0,    34,    35,    36,
-      37,    38,     0,     0,    39,    40,     0,    42,     0,    43,
-      44,     0,     0,     2,   253,    45,     3,     4,     5,    46,
-       6,     7,     8,     9,    10,     0,    11,    12,    13,     0,
-      14,    15,    16,     0,    17,     0,    18,     0,     0,     0,
-      19,     0,    20,    21,    22,     0,     0,     0,     0,     0,
-       0,     0,    24,    25,    26,     0,     0,     0,    27,     0,
-       0,     0,     0,     0,    30,    31,     0,    32,     0,     0,
-       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
-       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
-      39,    40,     0,    42,     0,    43,    44,     0,     0,     2,
-     253,    45,     3,     4,     5,    46,     6,     7,     8,     9,
-      10,     0,    11,    12,    13,     0,    14,    15,    16,   233,
-      17,     0,    18,     0,     0,     0,    19,     0,    20,    21,
-     133,   134,     0,     0,   135,   136,   137,   138,    24,   139,
-      26,     0,   140,   141,   142,     0,     0,     0,     0,     0,
-      30,    31,     0,    32,     0,     0,   143,   144,   145,   146,
-     147,     0,    33,     0,     0,   148,   149,     0,     0,    34,
-      35,    36,    37,    38,     0,     0,     0,    40,     0,    42,
-       0,    43,    44,     0,     0,     2,     0,    45,     3,     4,
-       5,    46,     6,     7,     8,     9,    10,     0,    11,    12,
-      13,     0,    14,    15,    16,     0,    17,   176,    18,     0,
-       0,     0,    19,     0,    20,    21,   133,   134,     0,     0,
-     135,   136,   137,   138,    24,   139,    26,     0,   140,   141,
-     142,     0,     0,     0,     0,     0,    30,    31,     0,    32,
-       0,     0,   143,   144,   145,   146,   147,     0,    33,     0,
-       0,   148,   149,     0,     0,    34,    35,    36,    37,    38,
-       0,     0,     0,    40,     0,    42,     0,    43,    44,     0,
-       0,     2,     0,    45,     3,     4,     5,    46,     6,     7,
-       8,     9,    10,     0,    11,    12,    13,     0,    14,    15,
-      16,     0,    17,     0,    18,     0,     0,     0,    19,     0,
-      20,    21,   133,   134,     0,     0,   135,   136,   137,   138,
-      24,   139,    26,     0,   140,   141,   142,     0,     0,     0,
-       0,     0,    30,    31,     0,    32,     0,     0,   143,   144,
-     145,   146,   147,     0,    33,     0,   191,   148,   149,     0,
-       0,    34,    35,    36,    37,    38,     0,     0,     0,    40,
-       0,    42,     2,    43,    44,     3,     4,     5,     0,    45,
-       0,     0,     0,    46,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,     0,     0,     0,     0,     0,     0,
-      86,     0,     0,     0,     0,    87,     0,    88,    89,    90,
-      91,    69,     2,    26,     0,     3,     4,     5,     0,     0,
-       0,     0,     0,     0,     0,    11,    12,    13,     0,    14,
-      68,    16,     0,    17,     0,    33,     0,     0,     0,     0,
-      86,     0,    34,    35,    36,    37,    38,    88,     0,    90,
-       0,    69,    70,    26,    43,    44,     0,     0,     0,     0,
-      45,     0,     0,     0,    46,   106,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
-       0,     0,    34,    35,    36,    37,    38,     0,     0,     0,
-       0,     0,    70,     2,    43,    44,     3,     4,     5,   139,
-      45,     0,   140,     0,    46,     0,    11,    12,    13,     0,
-      14,    68,    16,     0,    17,     0,   143,   144,   145,   146,
-     147,     0,     0,     0,     0,   148,   149,     0,     0,     0,
-       0,     0,    69,     2,    26,     0,     3,     4,     5,     0,
-       0,     0,     0,     0,     0,     0,    11,    12,    13,     0,
-      14,    68,    16,     0,    17,     0,    33,     0,     0,     0,
-       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
-       0,     0,    69,    70,    26,    43,    44,     0,     0,     0,
-       0,    45,     0,     0,     0,    46,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
-       0,     0,     0,    34,    35,    36,    37,    38,     0,     0,
-       0,     0,     0,    70,     2,    43,    44,     3,     4,     5,
-     139,    45,     0,   140,     0,    46,     0,    11,    12,    13,
-       0,    14,    68,    16,     0,    17,     0,   143,   144,   145,
-     146,   147,     0,     0,     0,     0,   148,   149,     0,     0,
-       0,     0,     0,    69,     2,    26,     0,     3,     4,     5,
-       0,     0,     0,     0,     0,     0,     0,    11,    12,    13,
-       0,    14,    68,    16,     0,    17,     0,    33,     0,     0,
-       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,     0,     0,    69,    70,    26,    43,    44,     0,     0,
-       0,     0,    80,     0,     0,     0,    46,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
-       0,     0,     0,     0,    34,    35,    36,    37,    38,     0,
-       0,     0,     0,     0,    70,     2,    43,    44,     3,     4,
-       5,   267,    45,     0,     0,     0,    46,     0,    11,    12,
-      13,     0,    14,    68,    16,     0,    17,     0,     0,   133,
-     134,     0,     0,   135,   136,   137,   138,     0,   139,     0,
-       0,   140,   141,   142,    69,     0,    26,     0,     0,     0,
-       0,     0,     0,     0,     0,   143,   144,   145,   146,   147,
-       0,     0,     0,   139,   148,   149,   140,     0,    33,     0,
-       0,   164,     0,     0,     0,    34,    35,    36,    37,    38,
-     143,   144,   145,   146,   147,    70,     0,    43,    44,   148,
-     149,     0,     0,    45,   133,   134,     0,    46,   135,   136,
-     137,   138,     0,   139,   165,   166,   140,   141,   142,   164,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     143,   144,   145,   146,   147,     0,     0,     0,     0,   148,
-     149,     0,   133,   134,     0,     0,   135,   136,   137,   138,
-       0,   139,   165,   166,   140,   141,   142,   181,     0,     0,
-       0,     0,     0,     0,   182,     0,     0,     0,   143,   144,
-     145,   146,   147,     0,     0,   133,   134,   148,   149,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-     183,     0,     0,     0,     0,     0,     0,   184,     0,     0,
-       0,   143,   144,   145,   146,   147,     0,     0,   133,   134,
-     148,   149,   135,   136,   137,   138,     0,   139,     0,     0,
-     140,   141,   142,   185,     0,     0,     0,     0,     0,     0,
-     186,     0,     0,     0,   143,   144,   145,   146,   147,     0,
-       0,   133,   134,   148,   149,   135,   136,   137,   138,     0,
-     139,     0,     0,   140,   141,   142,   268,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   143,   144,   145,
-     146,   147,     0,     0,   133,   134,   148,   149,   135,   136,
-     137,   138,     0,   139,     0,     0,   140,   141,   142,   269,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     143,   144,   145,   146,   147,     0,     0,   133,   134,   148,
-     149,   135,   136,   137,   138,     0,   139,     0,     0,   140,
-     141,   142,   270,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   143,   144,   145,   146,   147,     0,     0,
-     133,   134,   148,   149,   135,   136,   137,   138,     0,   139,
-       0,     0,   140,   141,   142,     0,     0,     0,     0,     0,
-     318,   319,     0,     0,     0,     0,   143,   144,   145,   146,
-     147,     0,     0,   133,   134,   148,   149,   135,   136,   137,
-     138,     0,   139,     0,     0,   140,   141,   142,     0,     0,
-       0,     0,     0,   339,     0,     0,     0,     0,     0,   143,
-     144,   145,   146,   147,     0,     0,   133,   134,   148,   149,
-     135,   136,   137,   138,     0,   139,     0,     0,   140,   141,
-     142,     0,     0,     0,     0,     0,     0,     0,   200,     0,
-       0,     0,   143,   144,   145,   146,   147,     0,     0,   133,
-     134,   148,   149,   135,   136,   137,   138,     0,   139,     0,
-       0,   140,   141,   142,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   143,   144,   145,   146,   147,
-       0,   201,   133,   134,   148,   149,   135,   136,   137,   138,
-       0,   139,     0,     0,   140,   141,   142,     0,     0,     0,
-       0,     0,   187,   188,     0,     0,     0,     0,   143,   144,
-     145,   146,   147,     0,     0,   133,   134,   148,   149,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   143,   144,   145,   146,   147,     0,     0,     0,   191,
-     148,   149,   133,   134,     0,     0,   135,   136,   137,   138,
-       0,   139,     0,     0,   140,   141,   142,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   143,   144,
-     145,   146,   147,     0,     0,   133,   134,   148,   149,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   143,   144,   145,   146,   147,     0,     0,   133,   134,
-     148,   149,   135,   136,   137,   138,     0,   139,     0,     0,
-     140,   141,   142,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   143,   144,   145,   146,   147,     0,
-       0,   133,   134,   148,   149,   135,   136,   137,   138,     0,
-     139,     0,     0,   140,   141,   142,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   143,   144,   145,
-     146,   147,     0,     0,   133,   134,   148,   149,   135,   136,
-     137,   138,     0,   139,     0,     0,   140,   141,   142,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     143,   144,   145,   146,   147,     0,     0,   133,   134,   148,
-     149,   135,   136,   137,   138,     0,   139,     0,     0,   140,
-     141,   142,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   143,   144,   145,   146,   147,     0,     0,
-     133,   134,   148,   149,   135,   136,   137,   138,     0,   139,
-       0,     0,   140,   141,   142,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   143,   144,   145,   146,
-     147,     0,     0,   133,   134,   148,   149,   135,   136,   137,
-     138,     0,   139,     0,     0,   140,   141,   142,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   143,
-     144,   145,   146,   147,     0,     0,   133,   134,   148,   149,
-     135,   136,   137,   138,     0,   139,     0,     0,   140,   141,
-     142,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   143,   144,   145,   146,   147,     0,     0,   133,
-     134,   148,   149,   135,   136,   137,   138,     0,   139,     0,
-       0,   140,   141,   142,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   143,   144,   145,   146,   147,
-       0,     0,   133,   134,   148,   149,   135,   136,   137,   138,
-       0,   139,     0,     0,   140,   141,   142,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   143,   144,
-     145,   146,   147,     0,     0,   133,   134,   148,   149,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   143,   144,   145,   146,   147,     0,     0,   133,   134,
-     148,   149,   135,   136,   137,   138,     0,   139,     0,     0,
-     140,   141,   142,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   143,   144,   145,   146,   147,     0,
+      11,    12,    13,     0,    14,    15,    16,   233,    17,     0,
+      18,     0,     0,     0,    19,     0,    20,    21,   133,   134,
+       0,     0,   135,   136,   137,   138,    24,   139,    26,     0,
+     140,   141,   142,     0,     0,     0,     0,     0,    30,    31,
+       0,    32,     0,     0,   143,   144,   145,   146,   147,     0,
+      33,     0,     0,   148,   149,     0,     0,    34,    35,    36,
+      37,    38,     0,     0,     0,    40,     0,    42,     2,    43,
+      44,     3,     4,     5,     0,    45,     0,     0,     0,    46,
+       0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
+       0,     0,     0,     0,     0,     0,    86,     0,     0,     0,
+       0,    87,     0,    88,    89,    90,    91,    69,     2,    26,
+       0,     3,     4,     5,     0,     0,     0,     0,     0,     0,
+       0,    11,    12,    13,     0,    14,    68,    16,     0,    17,
+       0,    33,     0,     0,     0,     0,    86,     0,    34,    35,
+      36,    37,    38,    88,     0,    90,     0,    69,    70,    26,
+      43,    44,     0,     0,     0,     0,    45,     0,     0,     0,
+      46,   106,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,     0,     0,    34,    35,
+      36,    37,    38,     0,     0,     0,     0,     0,    70,     2,
+      43,    44,     3,     4,     5,     0,    45,     0,     0,     0,
+      46,     0,    11,    12,    13,     0,    14,    68,    16,     0,
+      17,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    69,     2,
+      26,     0,     3,     4,     5,     0,     0,     0,     0,     0,
+       0,     0,    11,    12,    13,     0,    14,    68,    16,     0,
+      17,     0,    33,     0,     0,     0,     0,     0,     0,    34,
+      35,    36,    37,    38,     0,     0,     0,     0,    69,    70,
+      26,    43,    44,     0,     0,     0,     0,    45,     0,     0,
+       0,    46,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    33,     0,     0,   164,     0,     0,     0,    34,
+      35,    36,    37,    38,     0,     0,     0,     0,     0,    70,
+       0,    43,    44,     0,     0,     0,     0,    80,   133,   134,
+       0,    46,   135,   136,   137,   138,     0,   139,   165,   166,
+     140,   141,   142,   181,     0,     0,     0,     0,     0,     0,
+     182,     0,     0,     0,   143,   144,   145,   146,   147,     0,
        0,   133,   134,   148,   149,   135,   136,   137,   138,     0,
-     139,     0,     0,   140,   141,   142,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   143,   144,   145,
+     139,     0,     0,   140,   141,   142,   183,     0,     0,     0,
+       0,     0,     0,   184,     0,     0,     0,   143,   144,   145,
      146,   147,     0,     0,   133,   134,   148,   149,   135,   136,
-     137,   138,     0,   139,     0,     0,   140,   141,   142,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     137,   138,     0,   139,     0,     0,   140,   141,   142,   185,
+       0,     0,     0,     0,     0,     0,   186,     0,     0,     0,
      143,   144,   145,   146,   147,     0,     0,   133,   134,   148,
      149,   135,   136,   137,   138,     0,   139,     0,     0,   140,
-     141,   142,     0,     0,     0,     0,     0,     0,     0,     0,
+     141,   142,   267,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   143,   144,   145,   146,   147,     0,     0,
      133,   134,   148,   149,   135,   136,   137,   138,     0,   139,
-       0,     0,   140,   141,   142,     0,     0,     0,     0,     0,
+       0,     0,   140,   141,   142,   268,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,   143,   144,   145,   146,
      147,     0,     0,   133,   134,   148,   149,   135,   136,   137,
-     138,     0,   139,     0,     0,   140,   141,   142,     0,     0,
+     138,     0,   139,     0,     0,   140,   141,   142,   269,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,   143,
      144,   145,   146,   147,     0,     0,   133,   134,   148,   149,
      135,   136,   137,   138,     0,   139,     0,     0,   140,   141,
-     142,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     142,   270,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,   143,   144,   145,   146,   147,     0,     0,   133,
      134,   148,   149,   135,   136,   137,   138,     0,   139,     0,
-       0,   140,   141,   142,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   143,   144,   145,   146,   147,
+       0,   140,   141,   142,     0,     0,     0,     0,     0,   318,
+     319,     0,     0,     0,     0,   143,   144,   145,   146,   147,
        0,     0,   133,   134,   148,   149,   135,   136,   137,   138,
        0,   139,     0,     0,   140,   141,   142,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   143,   144,
+       0,     0,   339,     0,     0,     0,     0,     0,   143,   144,
      145,   146,   147,     0,     0,   133,   134,   148,   149,   135,
      136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   200,     0,     0,
        0,   143,   144,   145,   146,   147,     0,     0,   133,   134,
      148,   149,   135,   136,   137,   138,     0,   139,     0,     0,
      140,   141,   142,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   143,   144,   145,   146,   147,     0,
-       0,   133,   134,   148,   149,   135,   136,   137,   138,     0,
+       0,     0,   176,     0,   143,   144,   145,   146,   147,     0,
+     201,   133,   134,   148,   149,   135,   136,   137,   138,     0,
      139,     0,     0,   140,   141,   142,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   143,   144,   145,
      146,   147,     0,     0,   133,   134,   148,   149,   135,   136,
      137,   138,     0,   139,     0,     0,   140,   141,   142,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   187,   188,     0,     0,     0,     0,
      143,   144,   145,   146,   147,     0,     0,   133,   134,   148,
      149,   135,   136,   137,   138,     0,   139,     0,     0,   140,
      141,   142,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   143,   144,   145,   146,   147,     0,     0,
-     133,   134,   148,   149,   135,   136,   137,   138,     0,   139,
-       0,     0,   140,   141,   142,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   143,   144,   145,   146,
-     147,     0,     0,   133,   134,   148,   149,   135,   136,   137,
-     138,     0,   139,     0,     0,   140,   141,   142,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   143,
-     144,   145,   146,   147,     0,     0,   133,   134,   148,   149,
-     135,   136,   137,   138,     0,   139,     0,     0,   140,   141,
-     142,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   143,   144,   145,   146,   147,     0,     0,   133,
-     134,   148,   149,   135,   136,   137,   138,     0,   139,     0,
-       0,   140,   141,   142,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   143,   144,   145,   146,   147,
-       0,     0,   133,   134,   148,   149,   135,   136,   137,   138,
-       0,   139,     0,     0,   140,   141,   142,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   143,   144,
-     145,   146,   147,     0,     0,   133,   134,   148,   149,   135,
-     136,   137,   138,     0,   139,     0,     0,   140,   141,   142,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   143,   144,   145,   146,   147,     0,     0,   133,   134,
-     148,   149,   135,   136,   137,   138,     0,   139,     0,     0,
-     140,   141,   142,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   143,   144,   145,   146,   147,     0,
-       0,   133,   134,   148,   149,   135,   136,   137,   138,     0,
-     139,     0,     0,   140,   141,   142,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   143,   144,   145,
-     146,   147,     0,     0,   133,   134,   148,   149,   135,   136,
+       0,   191,   148,   149,   133,   134,     0,     0,   135,   136,
      137,   138,     0,   139,     0,     0,   140,   141,   142,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      143,   144,   145,   146,   147,     0,     0,   133,   134,   148,
-     149,   135,   136,   137,   138,     0,   139,     0,     0,   140,
+     149,   135,   136,     0,     0,     0,   139,     0,     0,   140,
      141,   142,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   143,   144,   145,   146,   147,     0,     0,
-     133,   134,   148,   149,   135,   136,   137,   138,     0,   139,
-       0,     0,   140,   141,   142,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   143,   144,   145,   146,
-     147,     0,     0,   133,   134,   148,   149,   135,   136,   137,
-     138,     0,   139,     0,     0,   140,   141,   142,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   143,
-     144,   145,   146,   147,     0,     0,   133,   134,   148,   149,
-     135,   136,     0,     0,     0,   139,     0,     0,   140,   141,
-     142,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   143,   144,   145,   146,   147,     0,     0,   133,
-     134,   148,   149,   135,   136,     0,     0,     0,   139,     0,
-       0,   140,   141,   142,     0,     0,     0,     0,     0,   139,
-       0,     0,   140,     0,     0,   143,   144,   145,   146,   147,
-     139,     0,     0,   140,   148,   149,   143,   144,   145,   146,
-     147,   139,     0,     0,   140,   148,   149,   143,   144,   145,
-     146,   147,   139,     0,     0,   140,   148,   149,   143,   144,
-     145,   146,   147,     0,     0,     0,     0,   148,   149,   143,
-     144,   145,   146,   147,     0,     0,     0,     0,   148,   149
+       0,     0,   148,   149
 };
 
-static const short yycheck[] =
+static const yytype_int16 yycheck[] =
 {
        4,     0,    56,     7,     8,     9,     0,    46,    12,    13,
-      14,    15,    31,    15,    16,   304,    99,    21,    34,   101,
-      24,    37,    38,   312,   106,    36,    30,    31,    30,    33,
-      34,    35,    36,    37,    38,   163,    79,    76,    79,    43,
-      44,    45,    46,    82,    60,    56,    30,   175,    56,    53,
-     101,    55,    30,    57,    34,   106,   225,    37,    38,   102,
-     103,   102,   103,    71,    99,    69,    56,   236,    49,   197,
-      99,   106,    76,    52,    93,    56,    80,   106,    82,    79,
-      60,    71,    86,    30,    88,    34,    67,    68,   107,    38,
-      71,    72,    73,    74,    79,    76,   100,    30,    79,    80,
-      81,    99,   102,   103,   198,    99,   101,   201,   106,   105,
-     106,   106,    93,    94,    95,    96,    97,   102,   103,   290,
-      30,   102,   103,   294,    47,   129,    49,    79,   127,   133,
+      14,    15,    31,    15,    16,   290,   304,    21,    34,   294,
+      24,    37,    38,    56,   312,    36,    30,    31,    30,    33,
+      34,    35,    36,    37,    38,   163,    79,    76,    71,    43,
+      44,    45,    46,    82,    60,    56,    56,   175,    99,    53,
+      99,    55,   225,    57,    34,   106,    30,   106,    38,   102,
+     103,    71,    99,   236,    99,    69,    58,    59,    49,   197,
+      52,   106,    76,    30,    93,    56,    80,    47,    82,    49,
+     101,    13,    86,    15,    88,   106,    67,    68,   107,   101,
+      71,    72,    73,    74,   106,    76,   100,    30,    79,    80,
+      81,   101,   105,   106,   198,    99,   106,   201,    29,    30,
+     281,   282,    93,    94,    95,    96,    97,    30,    30,    30,
+      30,   102,   103,    30,    30,   129,    71,   100,   127,   133,
      134,   135,   136,   137,   138,   139,   140,   141,   142,   143,
-     144,   145,   146,   147,   148,   149,    13,   151,    15,   153,
-     102,   103,    58,    59,    29,    30,    30,   161,   281,   282,
-      30,   165,   166,   100,   168,   169,    30,    30,   172,   173,
-      71,   100,   176,    30,    79,   179,   180,   181,   182,   183,
-     184,   185,   186,   187,   188,   279,   314,   315,   106,   193,
-     318,   319,   106,   106,   195,   196,   200,   102,   103,    47,
-      54,    55,    54,   257,   106,   299,   300,   106,   302,    30,
-      30,   339,   251,    67,    68,   106,   310,    71,    72,    73,
-      74,    30,    76,    30,    71,    79,    80,    81,   232,   233,
-      30,   325,   326,    34,    76,   106,   330,    79,    30,    93,
-      94,    95,    96,    97,    56,    34,    30,   251,   102,   103,
-      38,    93,    94,    95,    96,    97,    30,   258,    34,   260,
-     102,   103,   106,   267,   268,   269,   270,    30,    34,    34,
-     274,   325,   326,    34,   275,   329,   127,    37,    76,   312,
-     164,    79,   100,    31,   288,    -1,    -1,    -1,   289,    -1,
-      -1,   295,   293,    -1,   348,    93,    94,    95,    96,    97,
-     301,   355,   303,    -1,   102,   103,    76,    -1,    -1,    79,
+     144,   145,   146,   147,   148,   149,   100,   151,   106,   153,
+     106,    47,    30,    54,   106,   106,    30,   161,    30,   106,
+      30,   165,   166,    71,   168,   169,    30,    30,   172,   173,
+     106,    30,   176,    34,    56,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   279,   314,   315,    34,   193,
+     318,   319,    30,    38,   195,   196,   200,    30,    34,    30,
+      54,    55,   106,   257,    34,   299,   300,    34,   302,    34,
+     127,   339,   251,    67,    68,    37,   310,    71,    72,    73,
+      74,   312,    76,   100,   164,    79,    80,    81,   232,   233,
+      31,   325,   326,    -1,    76,    -1,   330,    79,    -1,    93,
+      94,    95,    96,    97,    -1,    -1,    -1,   251,   102,   103,
+      -1,    93,    94,    95,    96,    97,    -1,   258,    -1,   260,
+     102,   103,    -1,   267,   268,   269,   270,    -1,    -1,    -1,
+     274,   325,   326,    -1,   275,   329,    -1,    76,    -1,    -1,
+      79,    -1,    -1,    -1,   288,    -1,    -1,    -1,   289,    -1,
+      -1,   295,   293,    -1,   348,    94,    95,    96,    97,    -1,
+     301,   355,   303,   102,   103,    76,    -1,    -1,    79,    -1,
      311,    -1,    -1,   317,    -1,   316,    -1,    -1,    -1,    -1,
-      -1,   322,    -1,   324,    94,    95,    96,    97,    -1,    -1,
-      -1,    -1,   102,   103,   335,   336,   337,   338,    -1,   340,
+      -1,   322,    -1,   324,    -1,    96,    97,    -1,    -1,    -1,
+      -1,   102,   103,    -1,   335,   336,   337,   338,    -1,   340,
      341,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   353,    12,    -1,   356,    15,    16,    17,    -1,
       19,    20,    21,    22,    23,    -1,    25,    26,    27,    -1,
       29,    30,    31,    -1,    33,    -1,    35,    -1,    -1,    -1,
-      39,    -1,    41,    42,    43,    -1,    -1,    46,    76,    -1,
-      -1,    79,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
-      -1,    -1,    61,    62,    63,    64,    -1,    66,    96,    97,
-      -1,    -1,    -1,    -1,   102,   103,    75,    -1,    -1,    -1,
+      39,    -1,    41,    42,    43,    -1,    -1,    46,    -1,    -1,
+      -1,    -1,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
+      -1,    -1,    61,    62,    63,    64,    -1,    66,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,
       -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
       89,    90,    91,    92,    -1,    94,    95,    -1,    -1,    12,
       99,   100,    15,    16,    17,   104,    19,    20,    21,    22,
       23,    -1,    25,    26,    27,    -1,    29,    30,    31,    -1,
       33,    -1,    35,    -1,    -1,    -1,    39,    -1,    41,    42,
-      43,    -1,    -1,    46,    76,    -1,    -1,    79,    51,    52,
+      43,    -1,    -1,    46,    -1,    -1,    -1,    -1,    51,    52,
       53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    61,    62,
-      63,    64,    -1,    66,    96,    97,    -1,    -1,    -1,    -1,
-     102,   103,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      63,    64,    -1,    66,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,
       83,    84,    85,    86,    -1,    -1,    89,    90,    91,    92,
       -1,    94,    95,    -1,    -1,    12,    -1,   100,    15,    16,
       17,   104,    19,    20,    21,    22,    23,    -1,    25,    26,
@@ -887,278 +1156,97 @@ static const short yycheck[] =
       -1,    82,    83,    84,    85,    86,    -1,    -1,    89,    90,
       -1,    92,    -1,    94,    95,    -1,    -1,    12,    99,   100,
       15,    16,    17,   104,    19,    20,    21,    22,    23,    -1,
-      25,    26,    27,    -1,    29,    30,    31,    -1,    33,    -1,
-      35,    -1,    -1,    -1,    39,    -1,    41,    42,    43,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    51,    52,    53,    -1,
-      -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    63,    64,
-      -1,    66,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,
-      85,    86,    -1,    -1,    89,    90,    -1,    92,    -1,    94,
-      95,    -1,    -1,    12,    99,   100,    15,    16,    17,   104,
-      19,    20,    21,    22,    23,    -1,    25,    26,    27,    -1,
-      29,    30,    31,    -1,    33,    -1,    35,    -1,    -1,    -1,
-      39,    -1,    41,    42,    43,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
-      -1,    -1,    -1,    -1,    63,    64,    -1,    66,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,
-      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
-      89,    90,    -1,    92,    -1,    94,    95,    -1,    -1,    12,
-      99,   100,    15,    16,    17,   104,    19,    20,    21,    22,
-      23,    -1,    25,    26,    27,    -1,    29,    30,    31,    56,
-      33,    -1,    35,    -1,    -1,    -1,    39,    -1,    41,    42,
-      67,    68,    -1,    -1,    71,    72,    73,    74,    51,    76,
-      53,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-      63,    64,    -1,    66,    -1,    -1,    93,    94,    95,    96,
-      97,    -1,    75,    -1,    -1,   102,   103,    -1,    -1,    82,
-      83,    84,    85,    86,    -1,    -1,    -1,    90,    -1,    92,
-      -1,    94,    95,    -1,    -1,    12,    -1,   100,    15,    16,
-      17,   104,    19,    20,    21,    22,    23,    -1,    25,    26,
-      27,    -1,    29,    30,    31,    -1,    33,    58,    35,    -1,
-      -1,    -1,    39,    -1,    41,    42,    67,    68,    -1,    -1,
-      71,    72,    73,    74,    51,    76,    53,    -1,    79,    80,
-      81,    -1,    -1,    -1,    -1,    -1,    63,    64,    -1,    66,
-      -1,    -1,    93,    94,    95,    96,    97,    -1,    75,    -1,
-      -1,   102,   103,    -1,    -1,    82,    83,    84,    85,    86,
-      -1,    -1,    -1,    90,    -1,    92,    -1,    94,    95,    -1,
-      -1,    12,    -1,   100,    15,    16,    17,   104,    19,    20,
-      21,    22,    23,    -1,    25,    26,    27,    -1,    29,    30,
-      31,    -1,    33,    -1,    35,    -1,    -1,    -1,    39,    -1,
-      41,    42,    67,    68,    -1,    -1,    71,    72,    73,    74,
-      51,    76,    53,    -1,    79,    80,    81,    -1,    -1,    -1,
-      -1,    -1,    63,    64,    -1,    66,    -1,    -1,    93,    94,
-      95,    96,    97,    -1,    75,    -1,   101,   102,   103,    -1,
-      -1,    82,    83,    84,    85,    86,    -1,    -1,    -1,    90,
-      -1,    92,    12,    94,    95,    15,    16,    17,    -1,   100,
-      -1,    -1,    -1,   104,    -1,    25,    26,    27,    -1,    29,
-      30,    31,    -1,    33,    -1,    -1,    -1,    -1,    -1,    -1,
-      40,    -1,    -1,    -1,    -1,    45,    -1,    47,    48,    49,
-      50,    51,    12,    53,    -1,    15,    16,    17,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    25,    26,    27,    -1,    29,
-      30,    31,    -1,    33,    -1,    75,    -1,    -1,    -1,    -1,
-      40,    -1,    82,    83,    84,    85,    86,    47,    -1,    49,
-      -1,    51,    92,    53,    94,    95,    -1,    -1,    -1,    -1,
-     100,    -1,    -1,    -1,   104,    65,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    -1,
-      -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,    -1,
-      -1,    -1,    92,    12,    94,    95,    15,    16,    17,    76,
-     100,    -1,    79,    -1,   104,    -1,    25,    26,    27,    -1,
-      29,    30,    31,    -1,    33,    -1,    93,    94,    95,    96,
-      97,    -1,    -1,    -1,    -1,   102,   103,    -1,    -1,    -1,
-      -1,    -1,    51,    12,    53,    -1,    15,    16,    17,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,    -1,
-      29,    30,    31,    -1,    33,    -1,    75,    -1,    -1,    -1,
-      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
-      -1,    -1,    51,    92,    53,    94,    95,    -1,    -1,    -1,
-      -1,   100,    -1,    -1,    -1,   104,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,
-      -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,    -1,
-      -1,    -1,    -1,    92,    12,    94,    95,    15,    16,    17,
-      76,   100,    -1,    79,    -1,   104,    -1,    25,    26,    27,
-      -1,    29,    30,    31,    -1,    33,    -1,    93,    94,    95,
-      96,    97,    -1,    -1,    -1,    -1,   102,   103,    -1,    -1,
-      -1,    -1,    -1,    51,    12,    53,    -1,    15,    16,    17,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    27,
-      -1,    29,    30,    31,    -1,    33,    -1,    75,    -1,    -1,
-      -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,
-      -1,    -1,    -1,    51,    92,    53,    94,    95,    -1,    -1,
-      -1,    -1,   100,    -1,    -1,    -1,   104,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,
-      -1,    -1,    -1,    -1,    82,    83,    84,    85,    86,    -1,
-      -1,    -1,    -1,    -1,    92,    12,    94,    95,    15,    16,
-      17,    49,   100,    -1,    -1,    -1,   104,    -1,    25,    26,
-      27,    -1,    29,    30,    31,    -1,    33,    -1,    -1,    67,
-      68,    -1,    -1,    71,    72,    73,    74,    -1,    76,    -1,
-      -1,    79,    80,    81,    51,    -1,    53,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,
-      -1,    -1,    -1,    76,   102,   103,    79,    -1,    75,    -1,
-      -1,    44,    -1,    -1,    -1,    82,    83,    84,    85,    86,
-      93,    94,    95,    96,    97,    92,    -1,    94,    95,   102,
-     103,    -1,    -1,   100,    67,    68,    -1,   104,    71,    72,
-      73,    74,    -1,    76,    77,    78,    79,    80,    81,    44,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      93,    94,    95,    96,    97,    -1,    -1,    -1,    -1,   102,
-     103,    -1,    67,    68,    -1,    -1,    71,    72,    73,    74,
-      -1,    76,    77,    78,    79,    80,    81,    49,    -1,    -1,
-      -1,    -1,    -1,    -1,    56,    -1,    -1,    -1,    93,    94,
-      95,    96,    97,    -1,    -1,    67,    68,   102,   103,    71,
-      72,    73,    74,    -1,    76,    -1,    -1,    79,    80,    81,
-      49,    -1,    -1,    -1,    -1,    -1,    -1,    56,    -1,    -1,
-      -1,    93,    94,    95,    96,    97,    -1,    -1,    67,    68,
-     102,   103,    71,    72,    73,    74,    -1,    76,    -1,    -1,
+      25,    26,    27,    -1,    29,    30,    31,    56,    33,    -1,
+      35,    -1,    -1,    -1,    39,    -1,    41,    42,    67,    68,
+      -1,    -1,    71,    72,    73,    74,    51,    76,    53,    -1,
+      79,    80,    81,    -1,    -1,    -1,    -1,    -1,    63,    64,
+      -1,    66,    -1,    -1,    93,    94,    95,    96,    97,    -1,
+      75,    -1,    -1,   102,   103,    -1,    -1,    82,    83,    84,
+      85,    86,    -1,    -1,    -1,    90,    -1,    92,    12,    94,
+      95,    15,    16,    17,    -1,   100,    -1,    -1,    -1,   104,
+      -1,    25,    26,    27,    -1,    29,    30,    31,    -1,    33,
+      -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,
+      -1,    45,    -1,    47,    48,    49,    50,    51,    12,    53,
+      -1,    15,    16,    17,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    25,    26,    27,    -1,    29,    30,    31,    -1,    33,
+      -1,    75,    -1,    -1,    -1,    -1,    40,    -1,    82,    83,
+      84,    85,    86,    47,    -1,    49,    -1,    51,    92,    53,
+      94,    95,    -1,    -1,    -1,    -1,   100,    -1,    -1,    -1,
+     104,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,
+      84,    85,    86,    -1,    -1,    -1,    -1,    -1,    92,    12,
+      94,    95,    15,    16,    17,    -1,   100,    -1,    -1,    -1,
+     104,    -1,    25,    26,    27,    -1,    29,    30,    31,    -1,
+      33,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    51,    12,
+      53,    -1,    15,    16,    17,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    25,    26,    27,    -1,    29,    30,    31,    -1,
+      33,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,    82,
+      83,    84,    85,    86,    -1,    -1,    -1,    -1,    51,    92,
+      53,    94,    95,    -1,    -1,    -1,    -1,   100,    -1,    -1,
+      -1,   104,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    -1,    -1,    44,    -1,    -1,    -1,    82,
+      83,    84,    85,    86,    -1,    -1,    -1,    -1,    -1,    92,
+      -1,    94,    95,    -1,    -1,    -1,    -1,   100,    67,    68,
+      -1,   104,    71,    72,    73,    74,    -1,    76,    77,    78,
       79,    80,    81,    49,    -1,    -1,    -1,    -1,    -1,    -1,
       56,    -1,    -1,    -1,    93,    94,    95,    96,    97,    -1,
       -1,    67,    68,   102,   103,    71,    72,    73,    74,    -1,
       76,    -1,    -1,    79,    80,    81,    49,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
+      -1,    -1,    -1,    56,    -1,    -1,    -1,    93,    94,    95,
       96,    97,    -1,    -1,    67,    68,   102,   103,    71,    72,
       73,    74,    -1,    76,    -1,    -1,    79,    80,    81,    49,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    56,    -1,    -1,    -1,
       93,    94,    95,    96,    97,    -1,    -1,    67,    68,   102,
      103,    71,    72,    73,    74,    -1,    76,    -1,    -1,    79,
       80,    81,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,
       67,    68,   102,   103,    71,    72,    73,    74,    -1,    76,
-      -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-      54,    55,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
-      97,    -1,    -1,    67,    68,   102,   103,    71,    72,    73,
-      74,    -1,    76,    -1,    -1,    79,    80,    81,    -1,    -1,
-      -1,    -1,    -1,    54,    -1,    -1,    -1,    -1,    -1,    93,
-      94,    95,    96,    97,    -1,    -1,    67,    68,   102,   103,
-      71,    72,    73,    74,    -1,    76,    -1,    -1,    79,    80,
-      81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    -1,
-      -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,    67,
-      68,   102,   103,    71,    72,    73,    74,    -1,    76,    -1,
-      -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,
-      -1,    99,    67,    68,   102,   103,    71,    72,    73,    74,
-      -1,    76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-      -1,    -1,    87,    88,    -1,    -1,    -1,    -1,    93,    94,
-      95,    96,    97,    -1,    -1,    67,    68,   102,   103,    71,
-      72,    73,    74,    -1,    76,    -1,    -1,    79,    80,    81,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    93,    94,    95,    96,    97,    -1,    -1,    -1,   101,
-     102,   103,    67,    68,    -1,    -1,    71,    72,    73,    74,
-      -1,    76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
-      95,    96,    97,    -1,    -1,    67,    68,   102,   103,    71,
-      72,    73,    74,    -1,    76,    -1,    -1,    79,    80,    81,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    93,    94,    95,    96,    97,    -1,    -1,    67,    68,
-     102,   103,    71,    72,    73,    74,    -1,    76,    -1,    -1,
-      79,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    -1,
-      -1,    67,    68,   102,   103,    71,    72,    73,    74,    -1,
-      76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
-      96,    97,    -1,    -1,    67,    68,   102,   103,    71,    72,
-      73,    74,    -1,    76,    -1,    -1,    79,    80,    81,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      93,    94,    95,    96,    97,    -1,    -1,    67,    68,   102,
-     103,    71,    72,    73,    74,    -1,    76,    -1,    -1,    79,
-      80,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,
-      67,    68,   102,   103,    71,    72,    73,    74,    -1,    76,
-      -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
-      97,    -1,    -1,    67,    68,   102,   103,    71,    72,    73,
-      74,    -1,    76,    -1,    -1,    79,    80,    81,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
-      94,    95,    96,    97,    -1,    -1,    67,    68,   102,   103,
-      71,    72,    73,    74,    -1,    76,    -1,    -1,    79,    80,
-      81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,    67,
-      68,   102,   103,    71,    72,    73,    74,    -1,    76,    -1,
-      -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,
-      -1,    -1,    67,    68,   102,   103,    71,    72,    73,    74,
-      -1,    76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
-      95,    96,    97,    -1,    -1,    67,    68,   102,   103,    71,
-      72,    73,    74,    -1,    76,    -1,    -1,    79,    80,    81,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    93,    94,    95,    96,    97,    -1,    -1,    67,    68,
-     102,   103,    71,    72,    73,    74,    -1,    76,    -1,    -1,
-      79,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    -1,
-      -1,    67,    68,   102,   103,    71,    72,    73,    74,    -1,
-      76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
-      96,    97,    -1,    -1,    67,    68,   102,   103,    71,    72,
-      73,    74,    -1,    76,    -1,    -1,    79,    80,    81,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      93,    94,    95,    96,    97,    -1,    -1,    67,    68,   102,
-     103,    71,    72,    73,    74,    -1,    76,    -1,    -1,    79,
-      80,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,
-      67,    68,   102,   103,    71,    72,    73,    74,    -1,    76,
-      -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    79,    80,    81,    49,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
       97,    -1,    -1,    67,    68,   102,   103,    71,    72,    73,
-      74,    -1,    76,    -1,    -1,    79,    80,    81,    -1,    -1,
+      74,    -1,    76,    -1,    -1,    79,    80,    81,    49,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
       94,    95,    96,    97,    -1,    -1,    67,    68,   102,   103,
       71,    72,    73,    74,    -1,    76,    -1,    -1,    79,    80,
-      81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      81,    49,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,    67,
       68,   102,   103,    71,    72,    73,    74,    -1,    76,    -1,
-      -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,
+      -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    54,
+      55,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,
       -1,    -1,    67,    68,   102,   103,    71,    72,    73,    74,
       -1,    76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
+      -1,    -1,    54,    -1,    -1,    -1,    -1,    -1,    93,    94,
       95,    96,    97,    -1,    -1,    67,    68,   102,   103,    71,
       72,    73,    74,    -1,    76,    -1,    -1,    79,    80,    81,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    -1,    -1,
       -1,    93,    94,    95,    96,    97,    -1,    -1,    67,    68,
      102,   103,    71,    72,    73,    74,    -1,    76,    -1,    -1,
       79,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    -1,
-      -1,    67,    68,   102,   103,    71,    72,    73,    74,    -1,
+      -1,    -1,    58,    -1,    93,    94,    95,    96,    97,    -1,
+      99,    67,    68,   102,   103,    71,    72,    73,    74,    -1,
       76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
       96,    97,    -1,    -1,    67,    68,   102,   103,    71,    72,
       73,    74,    -1,    76,    -1,    -1,    79,    80,    81,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    87,    88,    -1,    -1,    -1,    -1,
       93,    94,    95,    96,    97,    -1,    -1,    67,    68,   102,
      103,    71,    72,    73,    74,    -1,    76,    -1,    -1,    79,
       80,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,
-      67,    68,   102,   103,    71,    72,    73,    74,    -1,    76,
-      -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
-      97,    -1,    -1,    67,    68,   102,   103,    71,    72,    73,
-      74,    -1,    76,    -1,    -1,    79,    80,    81,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
-      94,    95,    96,    97,    -1,    -1,    67,    68,   102,   103,
-      71,    72,    73,    74,    -1,    76,    -1,    -1,    79,    80,
-      81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,    67,
-      68,   102,   103,    71,    72,    73,    74,    -1,    76,    -1,
-      -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,
-      -1,    -1,    67,    68,   102,   103,    71,    72,    73,    74,
-      -1,    76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,
-      95,    96,    97,    -1,    -1,    67,    68,   102,   103,    71,
-      72,    73,    74,    -1,    76,    -1,    -1,    79,    80,    81,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    93,    94,    95,    96,    97,    -1,    -1,    67,    68,
-     102,   103,    71,    72,    73,    74,    -1,    76,    -1,    -1,
-      79,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    93,    94,    95,    96,    97,    -1,
-      -1,    67,    68,   102,   103,    71,    72,    73,    74,    -1,
-      76,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,
-      96,    97,    -1,    -1,    67,    68,   102,   103,    71,    72,
+      -1,   101,   102,   103,    67,    68,    -1,    -1,    71,    72,
       73,    74,    -1,    76,    -1,    -1,    79,    80,    81,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       93,    94,    95,    96,    97,    -1,    -1,    67,    68,   102,
-     103,    71,    72,    73,    74,    -1,    76,    -1,    -1,    79,
+     103,    71,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
       80,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,
-      67,    68,   102,   103,    71,    72,    73,    74,    -1,    76,
-      -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    93,    94,    95,    96,
-      97,    -1,    -1,    67,    68,   102,   103,    71,    72,    73,
-      74,    -1,    76,    -1,    -1,    79,    80,    81,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    93,
-      94,    95,    96,    97,    -1,    -1,    67,    68,   102,   103,
-      71,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    80,
-      81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    93,    94,    95,    96,    97,    -1,    -1,    67,
-      68,   102,   103,    71,    72,    -1,    -1,    -1,    76,    -1,
-      -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    76,
-      -1,    -1,    79,    -1,    -1,    93,    94,    95,    96,    97,
-      76,    -1,    -1,    79,   102,   103,    93,    94,    95,    96,
-      97,    76,    -1,    -1,    79,   102,   103,    93,    94,    95,
-      96,    97,    76,    -1,    -1,    79,   102,   103,    93,    94,
-      95,    96,    97,    -1,    -1,    -1,    -1,   102,   103,    93,
-      94,    95,    96,    97,    -1,    -1,    -1,    -1,   102,   103
+      -1,    -1,   102,   103
 };
 
-  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-     symbol of state STATE-NUM.  */
-static const unsigned char yystos[] =
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const yytype_uint8 yystos[] =
 {
        0,     1,    12,    15,    16,    17,    19,    20,    21,    22,
       23,    25,    26,    27,    29,    30,    31,    33,    35,    39,
@@ -1198,705 +1286,259 @@ static const unsigned char yystos[] =
      122,    34,    34,   111,   122,    37,   111,   122
 };
 
-  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const unsigned char yyr1[] =
-{
-       0,   107,   108,   108,   108,   109,   109,   109,   110,   110,
-     110,   110,   110,   110,   110,   110,   110,   110,   111,   111,
-     111,   112,   112,   112,   112,   112,   112,   112,   112,   113,
-     113,   113,   113,   114,   114,   115,   115,   116,   116,   116,
-     116,   116,   116,   117,   118,   119,   120,   121,   122,   123,
-     123,   123,   124,   125,   126,   126,   126,   126,   126,   127,
-     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
-     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
-     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
-     127,   127,   127,   127,   127,   127,   127,   127,   127,   127,
-     127,   128,   129,   129,   129,   129,   129,   129,   129,   129,
-     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     130,   130,   131,   131,   132,   132,   133,   133,   133,   133,
-     133,   133,   134,   134,   135,   135,   136,   136,   136,   136,
-     137,   136,   139,   138,   138,   140,   138,   138,   138,   141,
-     142,   142,   142,   142,   143,   143,   143,   144,   145,   146,
-     146,   146,   147,   147
-};
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  */
+
+#define YYFAIL		goto yyerrlab
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK (1);						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (YYID (0))
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (YYID (N))                                                    \
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (YYID (0))
+#endif
 
-  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const unsigned char yyr2[] =
-{
-       0,     2,     3,     1,     2,     0,     1,     1,     4,     4,
-       4,     4,     4,     4,     4,     4,     5,     5,     1,     1,
-       1,     1,     1,     5,    10,    11,     3,     6,     4,    10,
-       6,     9,     6,     0,     2,     6,     6,     1,     9,     5,
-       4,     5,     4,     2,     3,     1,     1,     0,     0,     0,
-       2,     2,     3,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     2,     4,     1,     2,     1,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     2,     3,     3,     3,     3,     2,     2,     3,     3,
-       4,     4,     4,     6,     4,     6,     4,     6,     4,     6,
-       1,     2,     2,     1,     1,     2,     1,     2,     2,     2,
-       1,     2,     2,     1,     2,     4,     6,     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,     8,     6,     2,
-       0,     1,     3,     4,     0,     1,     3,     0,     2,     0,
-       1,     3,     1,     3
-};
 
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+	      (Loc).first_line, (Loc).first_column,	\
+	      (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
 
-/* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none).  */
-static const unsigned char yydprec[] =
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
+do {									  \
+  if (yydebug)								  \
+    {									  \
+      YYFPRINTF (stderr, "%s ", Title);					  \
+      yy_symbol_print (stderr,						  \
+		  Type, Value); \
+      YYFPRINTF (stderr, "\n");						  \
+    }									  \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
 {
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0
-};
+  if (!yyvaluep)
+    return;
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
+# endif
+  switch (yytype)
+    {
+      default:
+	break;
+    }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
 
-/* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM.  */
-static const unsigned char yymerger[] =
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
 {
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0
-};
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+  YYFPRINTF (yyoutput, ")");
+}
 
-/* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as
-   in the case of predicates.  */
-static const yybool yyimmediate[] =
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    yytype_int16 *bottom;
+    yytype_int16 *top;
+#endif
 {
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0
-};
+  YYFPRINTF (stderr, "Stack now");
+  for (; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
 
-/* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
-   list of conflicting reductions corresponding to action entry for
-   state STATE-NUM in yytable.  0 means no conflicts.  The list in
-   yyconfl is terminated by a rule number of 0.  */
-static const unsigned short yyconflp[] =
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+    YYSTYPE *yyvsp;
+    int yyrule;
+#endif
 {
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,  1171,     0,
-       0,  1173,  1175,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   361,     0,   367,     0,
-       0,     0,     0,     0,  1178,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
-     365,   369,   371,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    97,     0,     0,     0,     0,     0,   373,
-       0,     0,     0,     0,     0,  1027,     0,     0,     0,  1029,
-       0,     0,     0,     0,   435,     0,     0,     0,     0,     0,
-       0,     0,   375,   377,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   437,   439,     0,
-       0,     0,     0,     0,     0,     0,     0,   505,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     507,   509,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    99,     0,     0,     0,     0,     0,     0,
-       0,   105,     0,     0,   511,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   265,     0,     0,     0,     0,   513,   515,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   397,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   399,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1180,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     401,   403,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   405,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   407,   409,     0,     0,     0,   487,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   489,   491,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   493,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   495,   497,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   499,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     501,   503,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,  1182,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,  1188,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1190,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,  1192,     0,     0,  1194,  1196,
-    1198,     0,  1200,  1202,  1204,  1206,  1208,     0,  1210,  1212,
-    1214,     0,  1216,  1218,  1220,     0,  1222,     0,  1224,     0,
-       0,     0,  1226,     0,  1228,  1230,     0,     0,     0,     0,
-       0,     0,     0,     0,  1232,     0,  1234,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,  1236,  1238,     0,  1240,
-       0,     0,     0,   357,   359,     0,     0,     0,  1242,     0,
-       0,     0,     0,     0,     0,  1244,  1246,  1248,  1250,  1252,
-       0,     0,     0,  1254,     0,  1256,     0,  1258,  1260,     0,
-       0,  1266,     0,  1262,  1268,  1270,  1272,  1264,  1274,  1276,
-    1278,  1280,  1282,     0,  1284,  1286,  1288,     0,  1290,  1292,
-    1294,     0,  1296,     0,  1298,     0,     0,     0,  1300,     0,
-    1302,  1304,     0,     0,     0,     0,     0,     0,     0,     0,
-    1306,     0,  1308,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,  1310,  1312,     0,  1314,     0,     0,     0,     0,
-       0,     0,     0,     0,  1316,     0,     0,     0,     0,     0,
-       0,  1318,  1320,  1322,  1324,  1326,     0,     0,     0,  1328,
-       0,  1330,     0,  1332,  1334,     0,     0,     0,     0,  1336,
-       0,     0,     0,  1338,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   411,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   413,   415,     0,     0,     0,
-       0,     0,     0,     1,     0,     0,     3,     5,     7,     0,
-       0,     0,     0,     0,     0,     0,     9,    11,    13,     0,
-      15,    17,    19,     0,    21,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    23,     0,    25,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    27,     0,     0,     0,
-       0,     0,     0,    29,    31,    33,    35,    37,     0,     0,
-       0,     0,     0,    39,    49,    41,    43,    51,    53,    55,
-       0,    45,     0,   417,     0,    47,     0,    57,    59,    61,
-       0,    63,    65,    67,     0,    69,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   419,   421,     0,     0,
-       0,     0,     0,    71,   183,    73,     0,   185,   187,   189,
-       0,     0,     0,     0,     0,     0,     0,   191,   193,   195,
-       0,   197,   199,   201,     0,   203,     0,    75,     0,     0,
-       0,     0,     0,     0,    77,    79,    81,    83,    85,     0,
-       0,     0,     0,   205,    87,   207,    89,    91,     0,     0,
-       0,     0,    93,     0,     0,     0,    95,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   209,     0,     0,
-       0,     0,     0,     0,   211,   213,   215,   217,   219,     0,
-       0,     0,     0,     0,   221,   301,   223,   225,   303,   305,
-     307,     0,   227,     0,     0,     0,   229,     0,   309,   311,
-     313,     0,   315,   317,   319,     0,   321,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   323,     0,   325,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   475,     0,   327,     0,
-       0,     0,     0,     0,     0,   329,   331,   333,   335,   337,
-       0,     0,     0,     0,     0,   339,     0,   341,   343,   477,
-     479,     0,     0,   345,     0,     0,     0,   347,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   353,   355,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   387,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   101,
-     103,     0,     0,     0,     0,   107,   109,     0,     0,   111,
-     113,   115,   117,     0,   119,     0,     0,   121,   123,   125,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   127,   129,   131,   133,   135,     0,     0,     0,     0,
-     137,   139,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   141,   143,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   145,   147,
-       0,     0,     0,     0,   149,   151,     0,     0,   153,   155,
-     157,   159,     0,   161,     0,     0,   163,   165,   167,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     169,   171,   173,   175,   177,     0,     0,   231,   233,   179,
-     181,   235,   237,   239,   241,     0,   243,     0,     0,   245,
-     247,   249,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   251,   253,   255,   257,   259,     0,     0,
-     267,   269,   261,   263,   271,   273,   275,   277,     0,   279,
-       0,     0,   281,   283,   285,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   287,   289,   291,   293,
-     295,     0,     0,     0,     0,   297,   299,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     349,   351,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   379,   381,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   383,   385,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   389,
-     391,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   393,   395,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   441,   443,     0,     0,   445,   447,   449,   451,     0,
-     453,     0,     0,   455,   457,   459,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   461,   463,   465,
-     467,   469,     0,     0,   517,   519,   471,   473,   521,   523,
-     525,   527,     0,   529,     0,     0,   531,   533,   535,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     537,   539,   541,   543,   545,     0,     0,   551,   553,   547,
-     549,   555,   557,   559,   561,     0,   563,     0,     0,   565,
-     567,   569,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   571,   573,   575,   577,   579,     0,     0,
-     585,   587,   581,   583,   589,   591,   593,   595,     0,   597,
-       0,     0,   599,   601,   603,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   605,   607,   609,   611,
-     613,     0,     0,     0,     0,   615,   617,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     619,   621,     0,     0,     0,     0,   623,   625,     0,     0,
-     627,   629,   631,   633,     0,   635,     0,     0,   637,   639,
-     641,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   643,   645,   647,   649,   651,     0,     0,   657,
-     659,   653,   655,   661,   663,   665,   667,     0,   669,     0,
-       0,   671,   673,   675,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   677,   679,   681,   683,   685,
-       0,     0,   691,   693,   687,   689,   695,   697,   699,   701,
-       0,   703,     0,     0,   705,   707,   709,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   711,   713,
-     715,   717,   719,     0,     0,   731,   733,   721,   723,   735,
-     737,   739,   741,     0,   743,     0,     0,   745,   747,   749,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   751,   753,   755,   757,   759,     0,     0,     0,     0,
-     761,   763,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   771,   773,     0,     0,     0,
-       0,   775,   777,     0,     0,   779,   781,   783,   785,     0,
-     787,     0,     0,   789,   791,   793,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   795,   797,   799,
-     801,   803,     0,     0,   809,   811,   805,   807,   813,   815,
-     817,   819,     0,   821,     0,     0,   823,   825,   827,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     829,   831,   833,   835,   837,     0,     0,   843,   845,   839,
-     841,   847,   849,   851,   853,     0,   855,     0,     0,   857,
-     859,   861,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   863,   865,   867,   869,   871,     0,     0,
-     877,   879,   873,   875,   881,   883,   885,   887,     0,   889,
-       0,     0,   891,   893,   895,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   897,   899,   901,   903,
-     905,     0,     0,   911,   913,   907,   909,   915,   917,   919,
-     921,     0,   923,     0,     0,   925,   927,   929,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   931,
-     933,   935,   937,   939,     0,     0,   945,   947,   941,   943,
-     949,   951,   953,   955,     0,   957,     0,     0,   959,   961,
-     963,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   965,   967,   969,   971,   973,     0,     0,     0,
-       0,   975,   977,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   979,   981,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   983,
-     985,     0,     0,     0,     0,   993,   995,     0,     0,   997,
-     999,  1001,  1003,     0,  1005,     0,     0,  1007,  1009,  1011,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,  1013,  1015,  1017,  1019,  1021,     0,     0,  1031,  1033,
-    1023,  1025,  1035,  1037,  1039,  1041,     0,  1043,     0,     0,
-    1045,  1047,  1049,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,  1051,  1053,  1055,  1057,  1059,     0,
-       0,  1065,  1067,  1061,  1063,  1069,  1071,  1073,  1075,     0,
-    1077,     0,     0,  1079,  1081,  1083,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,  1085,  1087,  1089,
-    1091,  1093,     0,     0,  1099,  1101,  1095,  1097,  1103,  1105,
-    1107,  1109,     0,  1111,     0,     0,  1113,  1115,  1117,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1119,  1121,  1123,  1125,  1127,     0,     0,  1133,  1135,  1129,
-    1131,  1137,  1139,  1141,  1143,     0,  1145,     0,     0,  1147,
-    1149,  1151,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,  1153,  1155,  1157,  1159,  1161,     0,     0,
-       0,     0,  1163,  1165,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,  1167,  1169,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1184,  1186,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   423,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   425,   427,     0,     0,     0,     0,     0,     0,     0,
-       0,   429,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   481,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   725,   431,   433,     0,     0,     0,     0,
-       0,     0,     0,     0,   765,   483,   485,     0,     0,     0,
-       0,     0,     0,     0,     0,   987,   727,   729,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   767,   769,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   989,   991
-};
-
-/* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
-   0, pointed into by YYCONFLP.  */
-static const short yyconfl[] =
-{
-       0,   113,     0,   113,     0,   113,     0,   113,     0,   113,
-       0,   113,     0,   113,     0,   113,     0,   113,     0,   113,
-       0,   113,     0,   113,     0,   113,     0,   113,     0,   113,
-       0,   113,     0,   113,     0,   113,     0,   113,     0,   113,
-       0,   113,     0,   113,     0,   113,     0,   113,     0,    58,
-       0,    58,     0,    58,     0,    58,     0,    58,     0,    58,
-       0,    58,     0,    58,     0,    58,     0,    58,     0,    58,
-       0,    58,     0,    58,     0,    58,     0,    58,     0,    58,
-       0,    58,     0,    58,     0,    58,     0,    58,     0,    58,
-       0,    58,     0,    58,     0,    58,     0,   106,     0,   100,
-       0,    19,     0,    19,     0,    58,     0,    66,     0,    66,
-       0,    66,     0,    66,     0,    66,     0,    66,     0,    66,
-       0,    66,     0,    66,     0,    66,     0,    66,     0,    66,
-       0,    66,     0,    66,     0,    66,     0,    66,     0,    66,
-       0,   112,     0,   112,     0,   111,     0,   111,     0,   162,
-       0,   162,     0,   162,     0,   162,     0,   162,     0,   162,
-       0,   162,     0,   162,     0,   162,     0,   162,     0,   162,
-       0,   162,     0,   162,     0,   162,     0,   162,     0,   162,
-       0,   162,     0,   159,     0,   159,     0,   159,     0,   159,
-       0,   159,     0,   159,     0,   159,     0,   159,     0,   159,
-       0,   159,     0,   159,     0,   159,     0,   159,     0,   159,
-       0,   159,     0,   159,     0,   159,     0,   159,     0,   159,
-       0,   159,     0,   159,     0,   159,     0,   159,     0,   159,
-       0,    62,     0,    62,     0,    62,     0,    62,     0,    62,
-       0,    62,     0,    62,     0,    62,     0,    62,     0,    62,
-       0,    62,     0,    62,     0,    62,     0,    62,     0,    62,
-       0,    62,     0,    62,     0,    63,     0,   101,     0,   101,
-       0,   101,     0,   101,     0,   101,     0,   101,     0,   101,
-       0,   101,     0,   101,     0,   101,     0,   101,     0,   101,
-       0,   101,     0,   101,     0,   101,     0,   101,     0,   101,
-       0,   159,     0,   159,     0,   159,     0,   159,     0,   159,
-       0,   159,     0,   159,     0,   159,     0,   159,     0,   159,
-       0,   159,     0,   159,     0,   159,     0,   159,     0,   159,
-       0,   159,     0,   159,     0,   159,     0,   159,     0,   159,
-       0,   159,     0,   159,     0,   159,     0,   159,     0,   133,
-       0,   133,     0,   102,     0,   102,     0,   118,     0,   118,
-       0,    81,     0,    81,     0,    81,     0,    86,     0,    86,
-       0,    86,     0,    87,     0,    87,     0,    87,     0,   160,
-       0,   160,     0,    49,     0,    49,     0,   160,     0,   132,
-       0,   132,     0,   135,     0,   135,     0,    59,     0,    77,
-       0,    77,     0,    77,     0,    78,     0,    78,     0,    78,
-       0,    75,     0,    75,     0,    75,     0,    76,     0,    76,
-       0,    76,     0,    79,     0,    79,     0,    79,     0,    80,
-       0,    80,     0,    80,     0,    72,     0,    72,     0,    72,
-       0,    83,     0,    83,     0,    83,     0,    83,     0,    83,
-       0,    83,     0,    83,     0,    83,     0,    83,     0,    83,
-       0,    83,     0,    83,     0,    83,     0,    83,     0,    83,
-       0,    83,     0,    83,     0,    84,     0,    84,     0,    84,
-       0,    85,     0,    85,     0,    85,     0,    82,     0,    82,
-       0,    82,     0,    68,     0,    68,     0,    68,     0,    69,
-       0,    69,     0,    69,     0,    70,     0,    70,     0,    70,
-       0,    71,     0,    71,     0,    71,     0,    73,     0,    73,
-       0,    73,     0,    73,     0,    73,     0,    73,     0,    73,
-       0,    73,     0,    73,     0,    73,     0,    73,     0,    73,
-       0,    73,     0,    73,     0,    73,     0,    73,     0,    73,
-       0,    74,     0,    74,     0,    74,     0,    74,     0,    74,
-       0,    74,     0,    74,     0,    74,     0,    74,     0,    74,
-       0,    74,     0,    74,     0,    74,     0,    74,     0,    74,
-       0,    74,     0,    74,     0,   163,     0,   163,     0,   163,
-       0,   163,     0,   163,     0,   163,     0,   163,     0,   163,
-       0,   163,     0,   163,     0,   163,     0,   163,     0,   163,
-       0,   163,     0,   163,     0,   163,     0,   163,     0,   134,
-       0,   134,     0,    10,     0,    10,     0,    10,     0,    10,
-       0,    10,     0,    10,     0,    10,     0,    10,     0,    10,
-       0,    10,     0,    10,     0,    10,     0,    10,     0,    10,
-       0,    10,     0,    10,     0,    10,     0,    11,     0,    11,
-       0,    11,     0,    11,     0,    11,     0,    11,     0,    11,
-       0,    11,     0,    11,     0,    11,     0,    11,     0,    11,
-       0,    11,     0,    11,     0,    11,     0,    11,     0,    11,
-       0,    15,     0,    15,     0,    15,     0,    15,     0,    15,
-       0,    15,     0,    15,     0,    15,     0,    15,     0,    15,
-       0,    15,     0,    15,     0,    15,     0,    15,     0,    15,
-       0,    15,     0,    15,     0,    13,     0,    13,     0,    13,
-       0,    14,     0,    14,     0,    14,     0,    14,     0,    14,
-       0,    14,     0,    14,     0,    14,     0,    14,     0,    14,
-       0,    14,     0,    14,     0,    14,     0,    14,     0,    14,
-       0,    14,     0,    14,     0,    12,     0,    12,     0,    12,
-       0,   117,     0,   117,     0,    92,     0,    92,     0,    92,
-       0,    92,     0,    92,     0,    92,     0,    92,     0,    92,
-       0,    92,     0,    92,     0,    92,     0,    92,     0,    92,
-       0,    92,     0,    92,     0,    92,     0,    92,     0,    94,
-       0,    94,     0,    94,     0,    94,     0,    94,     0,    94,
-       0,    94,     0,    94,     0,    94,     0,    94,     0,    94,
-       0,    94,     0,    94,     0,    94,     0,    94,     0,    94,
-       0,    94,     0,    96,     0,    96,     0,    96,     0,    96,
-       0,    96,     0,    96,     0,    96,     0,    96,     0,    96,
-       0,    96,     0,    96,     0,    96,     0,    96,     0,    96,
-       0,    96,     0,    96,     0,    96,     0,    98,     0,    98,
-       0,    98,     0,    98,     0,    98,     0,    98,     0,    98,
-       0,    98,     0,    98,     0,    98,     0,    98,     0,    98,
-       0,    98,     0,    98,     0,    98,     0,    98,     0,    98,
-       0,    90,     0,    90,     0,    90,     0,    90,     0,    90,
-       0,    90,     0,    90,     0,    90,     0,    90,     0,    90,
-       0,    90,     0,    90,     0,    90,     0,    90,     0,    90,
-       0,    90,     0,    90,     0,    91,     0,    91,     0,    91,
-       0,    91,     0,    91,     0,    91,     0,    91,     0,    91,
-       0,    91,     0,    91,     0,    91,     0,    91,     0,    91,
-       0,    91,     0,    91,     0,    91,     0,    91,     0,   161,
-       0,   161,     0,    28,     0,    28,     0,    17,     0,    17,
-       0,    17,     0,    16,     0,    16,     0,    16,     0,    16,
-       0,    16,     0,    16,     0,    16,     0,    16,     0,    16,
-       0,    16,     0,    16,     0,    16,     0,    16,     0,    16,
-       0,    16,     0,    16,     0,    16,     0,    33,     0,    33,
-       0,    93,     0,    93,     0,    93,     0,    93,     0,    93,
-       0,    93,     0,    93,     0,    93,     0,    93,     0,    93,
-       0,    93,     0,    93,     0,    93,     0,    93,     0,    93,
-       0,    93,     0,    93,     0,    95,     0,    95,     0,    95,
-       0,    95,     0,    95,     0,    95,     0,    95,     0,    95,
-       0,    95,     0,    95,     0,    95,     0,    95,     0,    95,
-       0,    95,     0,    95,     0,    95,     0,    95,     0,    97,
-       0,    97,     0,    97,     0,    97,     0,    97,     0,    97,
-       0,    97,     0,    97,     0,    97,     0,    97,     0,    97,
-       0,    97,     0,    97,     0,    97,     0,    97,     0,    97,
-       0,    97,     0,    99,     0,    99,     0,    99,     0,    99,
-       0,    99,     0,    99,     0,    99,     0,    99,     0,    99,
-       0,    99,     0,    99,     0,    99,     0,    99,     0,    99,
-       0,    99,     0,    99,     0,    99,     0,    48,     0,    48,
-       0,    33,     0,    33,     0,    30,    33,     0,    33,     0,
-      33,     0,   148,     0,    48,     0,    48,     0,   143,     0,
-     146,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0,
-      49,     0,    49,     0,    49,     0,    49,     0,    49,     0
-};
-
-/* Error token number */
-#define YYTERROR 1
-
-
-
-YYSTYPE yylval;
-
-int yynerrs;
-int yychar;
-
-static const int YYEOF = 0;
-static const int YYEMPTY = -2;
-
-typedef enum { yyok, yyaccept, yyabort, yyerr } YYRESULTTAG;
-
-#define YYCHK(YYE)                              \
-  do {                                          \
-    YYRESULTTAG yychk_flag = YYE;               \
-    if (yychk_flag != yyok)                     \
-      return yychk_flag;                        \
-  } while (0)
-
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-#  define YYFPRINTF fprintf
-# endif
-
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
-
-
-# define YYDPRINTF(Args)                        \
-  do {                                          \
-    if (yydebug)                                \
-      YYFPRINTF Args;                           \
-  } while (0)
-
-
-/*-----------------------------------.
-| Print this symbol's value on YYO.  |
-`-----------------------------------*/
-
-static void
-yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
-{
-  FILE *yyoutput = yyo;
-  YYUSE (yyoutput);
-  if (!yyvaluep)
-    return;
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yytype);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-}
-
-
-/*---------------------------.
-| Print this symbol on YYO.  |
-`---------------------------*/
-
-static void
-yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
-{
-  YYFPRINTF (yyo, "%s %s (",
-             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
-
-  yy_symbol_value_print (yyo, yytype, yyvaluep);
-  YYFPRINTF (yyo, ")");
+  int yynrhs = yyr2[yyrule];
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+	     yyrule - 1, yylno);
+  /* The symbols being reduced.  */
+  for (yyi = 0; yyi < yynrhs; yyi++)
+    {
+      fprintf (stderr, "   $%d = ", yyi + 1);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+		       &(yyvsp[(yyi + 1) - (yynrhs)])
+		       		       );
+      fprintf (stderr, "\n");
+    }
 }
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                  \
-  do {                                                                  \
-    if (yydebug)                                                        \
-      {                                                                 \
-        YYFPRINTF (stderr, "%s ", Title);                               \
-        yy_symbol_print (stderr, Type, Value);        \
-        YYFPRINTF (stderr, "\n");                                       \
-      }                                                                 \
-  } while (0)
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
-
-struct yyGLRStack;
-static void yypstack (struct yyGLRStack* yystackp, size_t yyk)
-  YY_ATTRIBUTE_UNUSED;
-static void yypdumpstack (struct yyGLRStack* yystackp)
-  YY_ATTRIBUTE_UNUSED;
-
 #else /* !YYDEBUG */
-
 # define YYDPRINTF(Args)
 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
 #endif /* !YYDEBUG */
 
+
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef YYINITDEPTH
+#ifndef	YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1904,40 +1546,39 @@ static void yypdumpstack (struct yyGLRStack* yystackp)
    if the built-in stack extension method is used).
 
    Do not make this value too large; the results are undefined if
-   SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
    evaluated with infinite-precision integer arithmetic.  */
 
 #ifndef YYMAXDEPTH
 # define YYMAXDEPTH 10000
 #endif
 
-/* Minimum number of free items on the stack allowed after an
-   allocation.  This is to allow allocation and initialization
-   to be completed by functions that call yyexpandGLRStack before the
-   stack is expanded, thus insuring that all necessary pointers get
-   properly redirected to new data.  */
-#define YYHEADROOM 2
+
 
-#ifndef YYSTACKEXPANDABLE
-#  define YYSTACKEXPANDABLE 1
-#endif
+#if YYERROR_VERBOSE
 
-#if YYSTACKEXPANDABLE
-# define YY_RESERVE_GLRSTACK(Yystack)                   \
-  do {                                                  \
-    if (Yystack->yyspaceLeft < YYHEADROOM)              \
-      yyexpandGLRStack (Yystack);                       \
-  } while (0)
+# ifndef yystrlen
+#  if defined __GLIBC__ && defined _STRING_H
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
 #else
-# define YY_RESERVE_GLRSTACK(Yystack)                   \
-  do {                                                  \
-    if (Yystack->yyspaceLeft < YYHEADROOM)              \
-      yyMemoryExhausted (Yystack);                      \
-  } while (0)
+static YYSIZE_T
+yystrlen (yystr)
+    const char *yystr;
 #endif
-
-
-#if YYERROR_VERBOSE
+{
+  YYSIZE_T yylen;
+  for (yylen = 0; yystr[yylen]; yylen++)
+    continue;
+  return yylen;
+}
+#  endif
+# endif
 
 # ifndef yystpcpy
 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
@@ -1945,8 +1586,16 @@ static void yypdumpstack (struct yyGLRStack* yystackp)
 #  else
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    YYDEST.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static char *
 yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+    char *yydest;
+    const char *yysrc;
+#endif
 {
   char *yyd = yydest;
   const char *yys = yysrc;
@@ -1967,2942 +1616,1607 @@ yystpcpy (char *yydest, const char *yysrc)
    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
    null, do not copy; instead, return the length of what the result
    would have been.  */
-static size_t
+static YYSIZE_T
 yytnamerr (char *yyres, const char *yystr)
 {
   if (*yystr == '"')
     {
-      size_t yyn = 0;
+      YYSIZE_T yyn = 0;
       char const *yyp = yystr;
 
       for (;;)
-        switch (*++yyp)
-          {
-          case '\'':
-          case ',':
-            goto do_not_strip_quotes;
-
-          case '\\':
-            if (*++yyp != '\\')
-              goto do_not_strip_quotes;
-            else
-              goto append;
-
-          append:
-          default:
-            if (yyres)
-              yyres[yyn] = *yyp;
-            yyn++;
-            break;
-
-          case '"':
-            if (yyres)
-              yyres[yyn] = '\0';
-            return yyn;
-          }
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
     do_not_strip_quotes: ;
     }
 
   if (! yyres)
-    return strlen (yystr);
+    return yystrlen (yystr);
 
-  return (size_t) (yystpcpy (yyres, yystr) - yyres);
+  return yystpcpy (yyres, yystr) - yyres;
 }
 # endif
 
-#endif /* !YYERROR_VERBOSE */
-
-/** State numbers, as in LALR(1) machine */
-typedef int yyStateNum;
-
-/** Rule numbers, as in LALR(1) machine */
-typedef int yyRuleNum;
-
-/** Grammar symbol */
-typedef int yySymbol;
-
-/** Item references, as in LALR(1) machine */
-typedef short yyItemNum;
-
-typedef struct yyGLRState yyGLRState;
-typedef struct yyGLRStateSet yyGLRStateSet;
-typedef struct yySemanticOption yySemanticOption;
-typedef union yyGLRStackItem yyGLRStackItem;
-typedef struct yyGLRStack yyGLRStack;
-
-struct yyGLRState {
-  /** Type tag: always true.  */
-  yybool yyisState;
-  /** Type tag for yysemantics.  If true, yysval applies, otherwise
-   *  yyfirstVal applies.  */
-  yybool yyresolved;
-  /** Number of corresponding LALR(1) machine state.  */
-  yyStateNum yylrState;
-  /** Preceding state in this stack */
-  yyGLRState* yypred;
-  /** Source position of the last token produced by my symbol */
-  size_t yyposn;
-  union {
-    /** First in a chain of alternative reductions producing the
-     *  nonterminal corresponding to this state, threaded through
-     *  yynext.  */
-    yySemanticOption* yyfirstVal;
-    /** Semantic value for this state.  */
-    YYSTYPE yysval;
-  } yysemantics;
-};
+/* Copy into YYRESULT an error message about the unexpected token
+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
+   including the terminating null byte.  If YYRESULT is null, do not
+   copy anything; just return the number of bytes that would be
+   copied.  As a special case, return 0 if an ordinary "syntax error"
+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
+   size calculation.  */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+  int yyn = yypact[yystate];
 
-struct yyGLRStateSet {
-  yyGLRState** yystates;
-  /** During nondeterministic operation, yylookaheadNeeds tracks which
-   *  stacks have actually needed the current lookahead.  During deterministic
-   *  operation, yylookaheadNeeds[0] is not maintained since it would merely
-   *  duplicate yychar != YYEMPTY.  */
-  yybool* yylookaheadNeeds;
-  size_t yysize, yycapacity;
-};
+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+    return 0;
+  else
+    {
+      int yytype = YYTRANSLATE (yychar);
+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+      YYSIZE_T yysize = yysize0;
+      YYSIZE_T yysize1;
+      int yysize_overflow = 0;
+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+      int yyx;
+
+# if 0
+      /* This is so xgettext sees the translatable formats that are
+	 constructed on the fly.  */
+      YY_("syntax error, unexpected %s");
+      YY_("syntax error, unexpected %s, expecting %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+      char *yyfmt;
+      char const *yyf;
+      static char const yyunexpected[] = "syntax error, unexpected %s";
+      static char const yyexpecting[] = ", expecting %s";
+      static char const yyor[] = " or %s";
+      char yyformat[sizeof yyunexpected
+		    + sizeof yyexpecting - 1
+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+		       * (sizeof yyor - 1))];
+      char const *yyprefix = yyexpecting;
+
+      /* Start YYX at -YYN if negative to avoid negative indexes in
+	 YYCHECK.  */
+      int yyxbegin = yyn < 0 ? -yyn : 0;
+
+      /* Stay within bounds of both yycheck and yytname.  */
+      int yychecklim = YYLAST - yyn + 1;
+      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+      int yycount = 1;
+
+      yyarg[0] = yytname[yytype];
+      yyfmt = yystpcpy (yyformat, yyunexpected);
+
+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	  {
+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+	      {
+		yycount = 1;
+		yysize = yysize0;
+		yyformat[sizeof yyunexpected - 1] = '\0';
+		break;
+	      }
+	    yyarg[yycount++] = yytname[yyx];
+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+	    yysize_overflow |= (yysize1 < yysize);
+	    yysize = yysize1;
+	    yyfmt = yystpcpy (yyfmt, yyprefix);
+	    yyprefix = yyor;
+	  }
+
+      yyf = YY_(yyformat);
+      yysize1 = yysize + yystrlen (yyf);
+      yysize_overflow |= (yysize1 < yysize);
+      yysize = yysize1;
+
+      if (yysize_overflow)
+	return YYSIZE_MAXIMUM;
+
+      if (yyresult)
+	{
+	  /* Avoid sprintf, as that infringes on the user's name space.
+	     Don't have undefined behavior even if the translation
+	     produced a string with the wrong number of "%s"s.  */
+	  char *yyp = yyresult;
+	  int yyi = 0;
+	  while ((*yyp = *yyf) != '\0')
+	    {
+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		{
+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
+		  yyf += 2;
+		}
+	      else
+		{
+		  yyp++;
+		  yyf++;
+		}
+	    }
+	}
+      return yysize;
+    }
+}
+#endif /* YYERROR_VERBOSE */
+
 
-struct yySemanticOption {
-  /** Type tag: always false.  */
-  yybool yyisState;
-  /** Rule number for this reduction */
-  yyRuleNum yyrule;
-  /** The last RHS state in the list of states to be reduced.  */
-  yyGLRState* yystate;
-  /** The lookahead for this reduction.  */
-  int yyrawchar;
-  YYSTYPE yyval;
-  /** Next sibling in chain of options.  To facilitate merging,
-   *  options are chained in decreasing order by address.  */
-  yySemanticOption* yynext;
-};
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
 
-/** Type of the items in the GLR stack.  The yyisState field
- *  indicates which item of the union is valid.  */
-union yyGLRStackItem {
-  yyGLRState yystate;
-  yySemanticOption yyoption;
-};
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  YYUSE (yyvaluep);
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-struct yyGLRStack {
-  int yyerrState;
+  switch (yytype)
+    {
 
+      default:
+	break;
+    }
+}
+
 
-  YYJMP_BUF yyexception_buffer;
-  yyGLRStackItem* yyitems;
-  yyGLRStackItem* yynextFree;
-  size_t yyspaceLeft;
-  yyGLRState* yysplitPoint;
-  yyGLRState* yylastDeleted;
-  yyGLRStateSet yytops;
-};
+/* Prevent warnings from -Wmissing-prototypes.  */
 
-#if YYSTACKEXPANDABLE
-static void yyexpandGLRStack (yyGLRStack* yystackp);
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
 #endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
 
-_Noreturn static void
-yyFail (yyGLRStack* yystackp, const char* yymsg)
-{
-  if (yymsg != YY_NULLPTR)
-    yyerror (yymsg);
-  YYLONGJMP (yystackp->yyexception_buffer, 1);
-}
 
-_Noreturn static void
-yyMemoryExhausted (yyGLRStack* yystackp)
-{
-  YYLONGJMP (yystackp->yyexception_buffer, 2);
-}
 
-#if YYDEBUG || YYERROR_VERBOSE
-/** A printable representation of TOKEN.  */
-static inline const char*
-yytokenName (yySymbol yytoken)
-{
-  if (yytoken == YYEMPTY)
-    return "";
+/* The look-ahead symbol.  */
+int yychar;
 
-  return yytname[yytoken];
-}
-#endif
+/* The semantic value of the look-ahead symbol.  */
+YYSTYPE yylval;
 
-/** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
- *  at YYVSP[YYLOW0].yystate.yypred.  Leaves YYVSP[YYLOW1].yystate.yypred
- *  containing the pointer to the next state in the chain.  */
-static void yyfillin (yyGLRStackItem *, int, int) YY_ATTRIBUTE_UNUSED;
-static void
-yyfillin (yyGLRStackItem *yyvsp, int yylow0, int yylow1)
-{
-  int i;
-  yyGLRState *s = yyvsp[yylow0].yystate.yypred;
-  for (i = yylow0-1; i >= yylow1; i -= 1)
-    {
-#if YYDEBUG
-      yyvsp[i].yystate.yylrState = s->yylrState;
-#endif
-      yyvsp[i].yystate.yyresolved = s->yyresolved;
-      if (s->yyresolved)
-        yyvsp[i].yystate.yysemantics.yysval = s->yysemantics.yysval;
-      else
-        /* The effect of using yysval or yyloc (in an immediate rule) is
-         * undefined.  */
-        yyvsp[i].yystate.yysemantics.yyfirstVal = YY_NULLPTR;
-      s = yyvsp[i].yystate.yypred = s->yypred;
-    }
-}
+/* Number of syntax errors so far.  */
+int yynerrs;
 
 
-/** If yychar is empty, fetch the next token.  */
-static inline yySymbol
-yygetToken (int *yycharp)
-{
-  yySymbol yytoken;
-  if (*yycharp == YYEMPTY)
-    {
-      YYDPRINTF ((stderr, "Reading a token: "));
-      *yycharp = yylex ();
-    }
-  if (*yycharp <= YYEOF)
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+    void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+  
+  int yystate;
+  int yyn;
+  int yyresult;
+  /* Number of tokens to shift before error messages enabled.  */
+  int yyerrstatus;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+  /* Three stacks and their tools:
+     `yyss': related to states,
+     `yyvs': related to semantic values,
+     `yyls': related to locations.
+
+     Refer to the stacks thru separate pointers, to allow yyoverflow
+     to reallocate them elsewhere.  */
+
+  /* The state stack.  */
+  yytype_int16 yyssa[YYINITDEPTH];
+  yytype_int16 *yyss = yyssa;
+  yytype_int16 *yyssp;
+
+  /* The semantic value stack.  */
+  YYSTYPE yyvsa[YYINITDEPTH];
+  YYSTYPE *yyvs = yyvsa;
+  YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+
+  YYSIZE_T yystacksize = YYINITDEPTH;
+
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+
+  /* The number of symbols on the RHS of the reduced rule.
+     Keep to zero when no symbol should be popped.  */
+  int yylen = 0;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY;		/* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed.  So pushing a state here evens the stacks.  */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack.  Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	yytype_int16 *yyss1 = yyss;
+
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	yytype_int16 *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss);
+	YYSTACK_RELOCATE (yyvs);
+
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+  /* Do appropriate processing given the current state.  Read a
+     look-ahead token if we need one and don't already have one.  */
+
+  /* First try to decide what to do without reference to look-ahead token.  */
+  yyn = yypact[yystate];
+  if (yyn == YYPACT_NINF)
+    goto yydefault;
+
+  /* Not known => get a look-ahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
     {
-      *yycharp = yytoken = YYEOF;
+      yychar = yytoken = YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yytoken = YYTRANSLATE (*yycharp);
+      yytoken = YYTRANSLATE (yychar);
       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
     }
-  return yytoken;
-}
 
-/* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1.  Otherwise, fill in
- * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
- * For convenience, always return YYLOW1.  */
-static inline int yyfill (yyGLRStackItem *, int *, int, yybool)
-     YY_ATTRIBUTE_UNUSED;
-static inline int
-yyfill (yyGLRStackItem *yyvsp, int *yylow, int yylow1, yybool yynormal)
-{
-  if (!yynormal && yylow1 < *yylow)
-    {
-      yyfillin (yyvsp, *yylow, yylow1);
-      *yylow = yylow1;
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yyn == 0 || yyn == YYTABLE_NINF)
+	goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
     }
-  return yylow1;
-}
 
-/** Perform user action for rule number YYN, with RHS length YYRHSLEN,
- *  and top stack item YYVSP.  YYLVALP points to place to put semantic
- *  value ($$), and yylocp points to place for location information
- *  (@$).  Returns yyok for normal return, yyaccept for YYACCEPT,
- *  yyerr for YYERROR, yyabort for YYABORT.  */
-static YYRESULTTAG
-yyuserAction (yyRuleNum yyn, int yyrhslen, yyGLRStackItem* yyvsp,
-              yyGLRStack* yystackp,
-              YYSTYPE* yyvalp)
-{
-  yybool yynormal YY_ATTRIBUTE_UNUSED = (yybool) (yystackp->yysplitPoint == YY_NULLPTR);
-  int yylow;
-  YYUSE (yyvalp);
-  YYUSE (yyrhslen);
-# undef yyerrok
-# define yyerrok (yystackp->yyerrState = 0)
-# undef YYACCEPT
-# define YYACCEPT return yyaccept
-# undef YYABORT
-# define YYABORT return yyabort
-# undef YYERROR
-# define YYERROR return yyerrok, yyerr
-# undef YYRECOVERING
-# define YYRECOVERING() (yystackp->yyerrState != 0)
-# undef yyclearin
-# define yyclearin (yychar = YYEMPTY)
-# undef YYFILL
-# define YYFILL(N) yyfill (yyvsp, &yylow, (N), yynormal)
-# undef YYBACKUP
-# define YYBACKUP(Token, Value)                                              \
-  return yyerror (YY_("syntax error: cannot back up")),     \
-         yyerrok, yyerr
-
-  yylow = 1;
-  if (yyrhslen == 0)
-    *yyvalp = yyval_default;
-  else
-    *yyvalp = yyvsp[YYFILL (1-yyrhslen)].yystate.yysemantics.yysval;
+  if (yyn == YYFINAL)
+    YYACCEPT;
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the shifted token unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
+  yystate = yyn;
+  *++yyvsp = yylval;
+
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-  case 4:
-#line 123 "engines/director/lingo/lingo-gr.y"
-    { yyerrok; }
-#line 2239 "engines/director/lingo/lingo-gr.cpp"
+        case 4:
+#line 122 "engines/director/lingo/lingo-gr.y"
+    { yyerrok; ;}
     break;
 
   case 8:
-#line 131 "engines/director/lingo/lingo-gr.y"
+#line 130 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
-		g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str());
+		g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str());
 		g_lingo->code1(g_lingo->c_assign);
-		((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code);
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 2250 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = (yyvsp[(2) - (4)].code);
+		delete (yyvsp[(4) - (4)].s); ;}
     break;
 
   case 9:
-#line 137 "engines/director/lingo/lingo-gr.y"
+#line 136 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_assign);
-			((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code); }
-#line 2258 "engines/director/lingo/lingo-gr.cpp"
+			(yyval.code) = (yyvsp[(2) - (4)].code); ;}
     break;
 
   case 10:
-#line 140 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).code) = g_lingo->code1(g_lingo->c_after); }
-#line 2264 "engines/director/lingo/lingo-gr.cpp"
+#line 139 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;}
     break;
 
   case 11:
-#line 141 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).code) = g_lingo->code1(g_lingo->c_before); }
-#line 2270 "engines/director/lingo/lingo-gr.cpp"
+#line 140 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;}
     break;
 
   case 12:
-#line 142 "engines/director/lingo/lingo-gr.y"
+#line 141 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
-		g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.s)->c_str());
+		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
 		g_lingo->code1(g_lingo->c_assign);
-		((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code);
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.s); }
-#line 2281 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = (yyvsp[(4) - (4)].code);
+		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
   case 13:
-#line 148 "engines/director/lingo/lingo-gr.y"
+#line 147 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentityassign);
-		g_lingo->codeInt((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.e)[0]);
-		g_lingo->codeInt((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.e)[1]);
-		((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code); }
-#line 2293 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeInt((yyvsp[(2) - (4)].e)[0]);
+		g_lingo->codeInt((yyvsp[(2) - (4)].e)[1]);
+		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
   case 14:
-#line 155 "engines/director/lingo/lingo-gr.y"
+#line 154 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_varpush);
-		g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.s)->c_str());
+		g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
 		g_lingo->code1(g_lingo->c_assign);
-		((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code);
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.s); }
-#line 2304 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = (yyvsp[(4) - (4)].code);
+		delete (yyvsp[(2) - (4)].s); ;}
     break;
 
   case 15:
-#line 161 "engines/director/lingo/lingo-gr.y"
+#line 160 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentityassign);
-		g_lingo->codeInt((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.e)[0]);
-		g_lingo->codeInt((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.e)[1]);
-		((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code); }
-#line 2316 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeInt((yyvsp[(2) - (4)].e)[0]);
+		g_lingo->codeInt((yyvsp[(2) - (4)].e)[1]);
+		(yyval.code) = (yyvsp[(4) - (4)].code); ;}
     break;
 
   case 16:
-#line 168 "engines/director/lingo/lingo-gr.y"
+#line 167 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
-		g_lingo->codeInt((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.e)[0]);
-		g_lingo->codeInt((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.e)[1]);
-		((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code); }
-#line 2327 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeInt((yyvsp[(2) - (5)].e)[0]);
+		g_lingo->codeInt((yyvsp[(2) - (5)].e)[1]);
+		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
     break;
 
   case 17:
-#line 174 "engines/director/lingo/lingo-gr.y"
+#line 173 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_swap);
 		g_lingo->code1(g_lingo->c_theentityassign);
-		g_lingo->codeInt((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.e)[0]);
-		g_lingo->codeInt((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.e)[1]);
-		((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code); }
-#line 2338 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeInt((yyvsp[(2) - (5)].e)[0]);
+		g_lingo->codeInt((yyvsp[(2) - (5)].e)[1]);
+		(yyval.code) = (yyvsp[(5) - (5)].code); ;}
     break;
 
   case 23:
-#line 193 "engines/director/lingo/lingo-gr.y"
+#line 192 "engines/director/lingo/lingo-gr.y"
     {
 		inst body = 0, end = 0;
-		WRITE_UINT32(&body, (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&end, (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.code));
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.code) + 1] = body;	/* body of loop */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.code) + 2] = end;	/* end, if cond fails */
+		WRITE_UINT32(&body, (yyvsp[(3) - (5)].code) - (yyvsp[(1) - (5)].code));
+		WRITE_UINT32(&end, (yyvsp[(4) - (5)].code) - (yyvsp[(1) - (5)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (5)].code) + 1] = body;	/* body of loop */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (5)].code) + 2] = end;	/* end, if cond fails */
 
-		checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "repeat", true); }
-#line 2351 "engines/director/lingo/lingo-gr.cpp"
+		checkEnd((yyvsp[(5) - (5)].s), "repeat", true); ;}
     break;
 
   case 24:
-#line 206 "engines/director/lingo/lingo-gr.y"
+#line 205 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
-		WRITE_UINT32(&init, (((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&finish, (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&body, (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&end, (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code));
+		WRITE_UINT32(&init, (yyvsp[(3) - (10)].code) - (yyvsp[(1) - (10)].code));
+		WRITE_UINT32(&finish, (yyvsp[(6) - (10)].code) - (yyvsp[(1) - (10)].code));
+		WRITE_UINT32(&body, (yyvsp[(8) - (10)].code) - (yyvsp[(1) - (10)].code));
+		WRITE_UINT32(&end, (yyvsp[(9) - (10)].code) - (yyvsp[(1) - (10)].code));
 		WRITE_UINT32(&inc, 1);
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code) + 1] = init;	/* initial count value */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code) + 2] = finish;/* final count value */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code) + 3] = body;	/* body of loop */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code) + 4] = inc;	/* increment */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code) + 5] = end;	/* end, if cond fails */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 1] = init;	/* initial count value */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 2] = finish;/* final count value */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 3] = body;	/* body of loop */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 4] = inc;	/* increment */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 5] = end;	/* end, if cond fails */
 
-		checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "repeat", true); }
-#line 2370 "engines/director/lingo/lingo-gr.cpp"
+		checkEnd((yyvsp[(10) - (10)].s), "repeat", true); ;}
     break;
 
   case 25:
-#line 224 "engines/director/lingo/lingo-gr.y"
+#line 223 "engines/director/lingo/lingo-gr.y"
     {
 		inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
-		WRITE_UINT32(&init, (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&finish, (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&body, (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&end, (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval.code));
+		WRITE_UINT32(&init, (yyvsp[(3) - (11)].code) - (yyvsp[(1) - (11)].code));
+		WRITE_UINT32(&finish, (yyvsp[(7) - (11)].code) - (yyvsp[(1) - (11)].code));
+		WRITE_UINT32(&body, (yyvsp[(9) - (11)].code) - (yyvsp[(1) - (11)].code));
+		WRITE_UINT32(&end, (yyvsp[(10) - (11)].code) - (yyvsp[(1) - (11)].code));
 		WRITE_UINT32(&inc, (uint32)-1);
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval.code) + 1] = init;	/* initial count value */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval.code) + 2] = finish;/* final count value */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval.code) + 3] = body;	/* body of loop */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval.code) + 4] = inc;	/* increment */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-10)].yystate.yysemantics.yysval.code) + 5] = end;	/* end, if cond fails */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (11)].code) + 1] = init;	/* initial count value */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (11)].code) + 2] = finish;/* final count value */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (11)].code) + 3] = body;	/* body of loop */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (11)].code) + 4] = inc;	/* increment */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (11)].code) + 5] = end;	/* end, if cond fails */
 
-		checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "repeat", true); }
-#line 2389 "engines/director/lingo/lingo-gr.cpp"
+		checkEnd((yyvsp[(11) - (11)].s), "repeat", true); ;}
     break;
 
   case 26:
-#line 238 "engines/director/lingo/lingo-gr.y"
+#line 237 "engines/director/lingo/lingo-gr.y"
     {
 		inst end = 0;
-		WRITE_UINT32(&end, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code));
+		WRITE_UINT32(&end, (yyvsp[(3) - (3)].code) - (yyvsp[(1) - (3)].code));
 		g_lingo->code1(STOP);
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code) + 1] = end; }
-#line 2399 "engines/director/lingo/lingo-gr.cpp"
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (3)].code) + 1] = end; ;}
     break;
 
   case 27:
-#line 243 "engines/director/lingo/lingo-gr.y"
+#line 242 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
-			checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "tell", true); }
-#line 2407 "engines/director/lingo/lingo-gr.cpp"
+			checkEnd((yyvsp[(6) - (6)].s), "tell", true); ;}
     break;
 
   case 28:
-#line 246 "engines/director/lingo/lingo-gr.y"
+#line 245 "engines/director/lingo/lingo-gr.y"
     {
 			warning("STUB: TELL is not implemented");
-		}
-#line 2415 "engines/director/lingo/lingo-gr.cpp"
+		;}
     break;
 
   case 29:
-#line 251 "engines/director/lingo/lingo-gr.y"
+#line 250 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
-		WRITE_UINT32(&then, (((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&else1, (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&end, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code));
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code) + 1] = then;	/* thenpart */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code) + 2] = else1;	/* elsepart */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code) + 3] = end;	/* end, if cond fails */
+		WRITE_UINT32(&then, (yyvsp[(4) - (10)].code) - (yyvsp[(1) - (10)].code));
+		WRITE_UINT32(&else1, (yyvsp[(6) - (10)].code) - (yyvsp[(1) - (10)].code));
+		WRITE_UINT32(&end, (yyvsp[(10) - (10)].code) - (yyvsp[(1) - (10)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 1] = then;	/* thenpart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 2] = else1;	/* elsepart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (10)].code) + 3] = end;	/* end, if cond fails */
 
-		g_lingo->processIf(0, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-9)].yystate.yysemantics.yysval.code)); }
-#line 2430 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->processIf(0, (yyvsp[(10) - (10)].code) - (yyvsp[(1) - (10)].code)); ;}
     break;
 
   case 30:
-#line 261 "engines/director/lingo/lingo-gr.y"
+#line 260 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
-		WRITE_UINT32(&then, (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code));
+		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
 		WRITE_UINT32(&else1, 0);
-		WRITE_UINT32(&end, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code));
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code) + 1] = then;	/* thenpart */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code) + 2] = else1;	/* elsepart */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code) + 3] = end; 	/* end, if cond fails */
+		WRITE_UINT32(&end, (yyvsp[(6) - (6)].code) - (yyvsp[(1) - (6)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 1] = then;	/* thenpart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 2] = else1;	/* elsepart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 3] = end; 	/* end, if cond fails */
 
-		g_lingo->processIf(0, 0); }
-#line 2445 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->processIf(0, 0); ;}
     break;
 
   case 31:
-#line 271 "engines/director/lingo/lingo-gr.y"
+#line 270 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, else1 = 0, end = 0;
-		WRITE_UINT32(&then, (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&else1, (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&end, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code));
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code) + 1] = then;	/* thenpart */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code) + 2] = else1;	/* elsepart */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code) + 3] = end;	/* end, if cond fails */
+		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
+		WRITE_UINT32(&else1, (yyvsp[(7) - (9)].code) - (yyvsp[(1) - (9)].code));
+		WRITE_UINT32(&end, (yyvsp[(9) - (9)].code) - (yyvsp[(1) - (9)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 1] = then;	/* thenpart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 2] = else1;	/* elsepart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 3] = end;	/* end, if cond fails */
 
-		g_lingo->processIf(0, 0); }
-#line 2460 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->processIf(0, 0); ;}
     break;
 
   case 32:
-#line 281 "engines/director/lingo/lingo-gr.y"
+#line 280 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0, end = 0;
-		WRITE_UINT32(&then, (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code));
-		WRITE_UINT32(&end, (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code));
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code) + 1] = then;	/* thenpart */
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code) + 3] = end;	/* end, if cond fails */
+		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
+		WRITE_UINT32(&end, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 1] = then;	/* thenpart */
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 3] = end;	/* end, if cond fails */
 
-		checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "if", true);
+		checkEnd((yyvsp[(6) - (6)].s), "if", true);
 
-		g_lingo->processIf(0, 0); }
-#line 2475 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->processIf(0, 0); ;}
     break;
 
   case 35:
-#line 297 "engines/director/lingo/lingo-gr.y"
+#line 296 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
-		WRITE_UINT32(&then, (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code));
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code) + 1] = then;	/* thenpart */
+		WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 1] = then;	/* thenpart */
 
-		g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code)); }
-#line 2486 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
   case 36:
-#line 303 "engines/director/lingo/lingo-gr.y"
+#line 302 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
-		WRITE_UINT32(&then, (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code));
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code) + 1] = then;	/* thenpart */
+		WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 1] = then;	/* thenpart */
 
-		g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code)); }
-#line 2497 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;}
     break;
 
   case 38:
-#line 312 "engines/director/lingo/lingo-gr.y"
+#line 311 "engines/director/lingo/lingo-gr.y"
     {
 		inst then = 0;
-		WRITE_UINT32(&then, (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code));
-		(*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code) + 1] = then;	/* thenpart */
+		WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code));
+		(*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 1] = then;	/* thenpart */
 
-		g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code)); }
-#line 2508 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeLabel((yyvsp[(1) - (9)].code)); ;}
     break;
 
   case 39:
-#line 318 "engines/director/lingo/lingo-gr.y"
+#line 317 "engines/director/lingo/lingo-gr.y"
     {
-			g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.code));
+			g_lingo->codeLabel((yyvsp[(2) - (5)].code));
 
-			checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "if", true); }
-#line 2517 "engines/director/lingo/lingo-gr.cpp"
+			checkEnd((yyvsp[(5) - (5)].s), "if", true); ;}
     break;
 
   case 40:
-#line 322 "engines/director/lingo/lingo-gr.y"
+#line 321 "engines/director/lingo/lingo-gr.y"
     {
-			g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code)); }
-#line 2524 "engines/director/lingo/lingo-gr.cpp"
+			g_lingo->codeLabel((yyvsp[(2) - (4)].code)); ;}
     break;
 
   case 41:
-#line 325 "engines/director/lingo/lingo-gr.y"
+#line 324 "engines/director/lingo/lingo-gr.y"
     {
-			g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.code));
+			g_lingo->codeLabel((yyvsp[(2) - (5)].code));
 
-			checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "if", true); }
-#line 2533 "engines/director/lingo/lingo-gr.cpp"
+			checkEnd((yyvsp[(5) - (5)].s), "if", true); ;}
     break;
 
   case 42:
-#line 329 "engines/director/lingo/lingo-gr.y"
+#line 328 "engines/director/lingo/lingo-gr.y"
     {
-			g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code)); }
-#line 2540 "engines/director/lingo/lingo-gr.cpp"
+			g_lingo->codeLabel((yyvsp[(2) - (4)].code)); ;}
     break;
 
   case 43:
-#line 333 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); }
-#line 2546 "engines/director/lingo/lingo-gr.cpp"
+#line 332 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
     break;
 
   case 44:
-#line 336 "engines/director/lingo/lingo-gr.y"
+#line 335 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
+		(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
 		g_lingo->code3(STOP, STOP, STOP);
-		g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str());
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 2556 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str());
+		delete (yyvsp[(3) - (3)].s); ;}
     break;
 
   case 45:
-#line 343 "engines/director/lingo/lingo-gr.y"
+#line 342 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_ifcode);
+		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
-		g_lingo->codeLabel(0); }
-#line 2566 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeLabel(0); ;}
     break;
 
   case 46:
-#line 350 "engines/director/lingo/lingo-gr.y"
+#line 349 "engines/director/lingo/lingo-gr.y"
     {
 		inst skipEnd;
 		WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_ifcode);
+		(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
-		g_lingo->code1(skipEnd); }
-#line 2577 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->code1(skipEnd); ;}
     break;
 
   case 47:
-#line 358 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).code) = g_lingo->_currentScript->size(); }
-#line 2583 "engines/director/lingo/lingo-gr.cpp"
+#line 357 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 48:
-#line 361 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(STOP); ((*yyvalp).code) = g_lingo->_currentScript->size(); }
-#line 2589 "engines/director/lingo/lingo-gr.cpp"
+#line 360 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 49:
-#line 364 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).code) = g_lingo->_currentScript->size(); }
-#line 2595 "engines/director/lingo/lingo-gr.cpp"
+#line 363 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->_currentScript->size(); ;}
     break;
 
   case 52:
-#line 369 "engines/director/lingo/lingo-gr.y"
+#line 368 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_whencode);
+		(yyval.code) = g_lingo->code1(g_lingo->c_whencode);
 		g_lingo->code1(STOP);
-		g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s)->c_str());
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s); }
-#line 2605 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeString((yyvsp[(2) - (3)].s)->c_str());
+		delete (yyvsp[(2) - (3)].s); ;}
     break;
 
   case 53:
-#line 375 "engines/director/lingo/lingo-gr.y"
+#line 374 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_tellcode);
-		g_lingo->code1(STOP); }
-#line 2613 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = g_lingo->code1(g_lingo->c_tellcode);
+		g_lingo->code1(STOP); ;}
     break;
 
   case 54:
-#line 379 "engines/director/lingo/lingo-gr.y"
+#line 378 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_intpush);
-		g_lingo->codeInt((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.i)); }
-#line 2621 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
+		g_lingo->codeInt((yyvsp[(1) - (1)].i)); ;}
     break;
 
   case 55:
-#line 382 "engines/director/lingo/lingo-gr.y"
+#line 381 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_floatpush);
-		g_lingo->codeFloat((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.f)); }
-#line 2629 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = g_lingo->code1(g_lingo->c_floatpush);
+		g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
     break;
 
   case 56:
-#line 385 "engines/director/lingo/lingo-gr.y"
+#line 384 "engines/director/lingo/lingo-gr.y"
     {											// D3
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_symbolpush);
-		g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str()); }
-#line 2637 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = g_lingo->code1(g_lingo->c_symbolpush);
+		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
   case 57:
-#line 388 "engines/director/lingo/lingo-gr.y"
+#line 387 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_stringpush);
-		g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str()); }
-#line 2645 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = g_lingo->code1(g_lingo->c_stringpush);
+		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
     break;
 
   case 58:
-#line 391 "engines/director/lingo/lingo-gr.y"
+#line 390 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_eval);
-		g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str());
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 2654 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = g_lingo->code1(g_lingo->c_eval);
+		g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str());
+		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 59:
-#line 397 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code); }
-#line 2660 "engines/director/lingo/lingo-gr.cpp"
+#line 396 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = (yyvsp[(1) - (1)].code); ;}
     break;
 
   case 61:
-#line 399 "engines/director/lingo/lingo-gr.y"
+#line 398 "engines/director/lingo/lingo-gr.y"
     {
-		g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), 0);
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 2668 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
+		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 62:
-#line 402 "engines/director/lingo/lingo-gr.y"
+#line 401 "engines/director/lingo/lingo-gr.y"
     {
-		g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s), 1);
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s); }
-#line 2676 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
+		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 63:
-#line 405 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.narg)); }
-#line 2682 "engines/director/lingo/lingo-gr.cpp"
+#line 404 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 64:
-#line 406 "engines/director/lingo/lingo-gr.y"
+#line 405 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.s), (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.narg));
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.s); }
-#line 2690 "engines/director/lingo/lingo-gr.cpp"
+		(yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg));
+		delete (yyvsp[(1) - (4)].s); ;}
     break;
 
   case 65:
-#line 409 "engines/director/lingo/lingo-gr.y"
+#line 408 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_intpush);
+		(yyval.code) = g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
 		g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
-		WRITE_UINT32(&e, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.e)[0]);
-		WRITE_UINT32(&f, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.e)[1]);
-		g_lingo->code2(e, f); }
-#line 2703 "engines/director/lingo/lingo-gr.cpp"
+		WRITE_UINT32(&e, (yyvsp[(1) - (1)].e)[0]);
+		WRITE_UINT32(&f, (yyvsp[(1) - (1)].e)[1]);
+		g_lingo->code2(e, f); ;}
     break;
 
   case 66:
-#line 417 "engines/director/lingo/lingo-gr.y"
+#line 416 "engines/director/lingo/lingo-gr.y"
     {
-		((*yyvalp).code) = g_lingo->code1(g_lingo->c_theentitypush);
+		(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
 		inst e = 0, f = 0;
-		WRITE_UINT32(&e, (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.e)[0]);
-		WRITE_UINT32(&f, (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.e)[1]);
-		g_lingo->code2(e, f); }
-#line 2714 "engines/director/lingo/lingo-gr.cpp"
+		WRITE_UINT32(&e, (yyvsp[(1) - (2)].e)[0]);
+		WRITE_UINT32(&f, (yyvsp[(1) - (2)].e)[1]);
+		g_lingo->code2(e, f); ;}
     break;
 
   case 68:
-#line 424 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_add); }
-#line 2720 "engines/director/lingo/lingo-gr.cpp"
+#line 423 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_add); ;}
     break;
 
   case 69:
-#line 425 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_sub); }
-#line 2726 "engines/director/lingo/lingo-gr.cpp"
+#line 424 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_sub); ;}
     break;
 
   case 70:
-#line 426 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_mul); }
-#line 2732 "engines/director/lingo/lingo-gr.cpp"
+#line 425 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_mul); ;}
     break;
 
   case 71:
-#line 427 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_div); }
-#line 2738 "engines/director/lingo/lingo-gr.cpp"
+#line 426 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_div); ;}
     break;
 
   case 72:
-#line 428 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_mod); }
-#line 2744 "engines/director/lingo/lingo-gr.cpp"
+#line 427 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_mod); ;}
     break;
 
   case 73:
-#line 429 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gt); }
-#line 2750 "engines/director/lingo/lingo-gr.cpp"
+#line 428 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_gt); ;}
     break;
 
   case 74:
-#line 430 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_lt); }
-#line 2756 "engines/director/lingo/lingo-gr.cpp"
+#line 429 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_lt); ;}
     break;
 
   case 75:
-#line 431 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_eq); }
-#line 2762 "engines/director/lingo/lingo-gr.cpp"
+#line 430 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_eq); ;}
     break;
 
   case 76:
-#line 432 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_neq); }
-#line 2768 "engines/director/lingo/lingo-gr.cpp"
+#line 431 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_neq); ;}
     break;
 
   case 77:
-#line 433 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_ge); }
-#line 2774 "engines/director/lingo/lingo-gr.cpp"
+#line 432 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_ge); ;}
     break;
 
   case 78:
-#line 434 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_le); }
-#line 2780 "engines/director/lingo/lingo-gr.cpp"
+#line 433 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_le); ;}
     break;
 
   case 79:
-#line 435 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_and); }
-#line 2786 "engines/director/lingo/lingo-gr.cpp"
+#line 434 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_and); ;}
     break;
 
   case 80:
-#line 436 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_or); }
-#line 2792 "engines/director/lingo/lingo-gr.cpp"
+#line 435 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_or); ;}
     break;
 
   case 81:
-#line 437 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_not); }
-#line 2798 "engines/director/lingo/lingo-gr.cpp"
+#line 436 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_not); ;}
     break;
 
   case 82:
-#line 438 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_ampersand); }
-#line 2804 "engines/director/lingo/lingo-gr.cpp"
+#line 437 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_ampersand); ;}
     break;
 
   case 83:
-#line 439 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_concat); }
-#line 2810 "engines/director/lingo/lingo-gr.cpp"
+#line 438 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_concat); ;}
     break;
 
   case 84:
-#line 440 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_contains); }
-#line 2816 "engines/director/lingo/lingo-gr.cpp"
+#line 439 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_contains); ;}
     break;
 
   case 85:
-#line 441 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_starts); }
-#line 2822 "engines/director/lingo/lingo-gr.cpp"
+#line 440 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_starts); ;}
     break;
 
   case 86:
-#line 442 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code); }
-#line 2828 "engines/director/lingo/lingo-gr.cpp"
+#line 441 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = (yyvsp[(2) - (2)].code); ;}
     break;
 
   case 87:
-#line 443 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code); g_lingo->code1(g_lingo->c_negate); }
-#line 2834 "engines/director/lingo/lingo-gr.cpp"
+#line 442 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
     break;
 
   case 88:
-#line 444 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.code); }
-#line 2840 "engines/director/lingo/lingo-gr.cpp"
+#line 443 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = (yyvsp[(2) - (3)].code); ;}
     break;
 
   case 89:
-#line 445 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).code) = g_lingo->code1(g_lingo->c_arraypush); g_lingo->codeArray((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.narg)); }
-#line 2846 "engines/director/lingo/lingo-gr.cpp"
+#line 444 "engines/director/lingo/lingo-gr.y"
+    { (yyval.code) = g_lingo->code1(g_lingo->c_arraypush); g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;}
     break;
 
   case 90:
-#line 446 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_intersects); }
-#line 2852 "engines/director/lingo/lingo-gr.cpp"
+#line 445 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_intersects); ;}
     break;
 
   case 91:
-#line 447 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_within); }
-#line 2858 "engines/director/lingo/lingo-gr.cpp"
+#line 446 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_within); ;}
     break;
 
   case 92:
-#line 448 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_charOf); }
-#line 2864 "engines/director/lingo/lingo-gr.cpp"
+#line 447 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_charOf); ;}
     break;
 
   case 93:
-#line 449 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_charToOf); }
-#line 2870 "engines/director/lingo/lingo-gr.cpp"
+#line 448 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_charToOf); ;}
     break;
 
   case 94:
-#line 450 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_itemOf); }
-#line 2876 "engines/director/lingo/lingo-gr.cpp"
+#line 449 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_itemOf); ;}
     break;
 
   case 95:
-#line 451 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_itemToOf); }
-#line 2882 "engines/director/lingo/lingo-gr.cpp"
+#line 450 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_itemToOf); ;}
     break;
 
   case 96:
-#line 452 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_lineOf); }
-#line 2888 "engines/director/lingo/lingo-gr.cpp"
+#line 451 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_lineOf); ;}
     break;
 
   case 97:
-#line 453 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_lineToOf); }
-#line 2894 "engines/director/lingo/lingo-gr.cpp"
+#line 452 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_lineToOf); ;}
     break;
 
   case 98:
-#line 454 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_wordOf); }
-#line 2900 "engines/director/lingo/lingo-gr.cpp"
+#line 453 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_wordOf); ;}
     break;
 
   case 99:
-#line 455 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_wordToOf); }
-#line 2906 "engines/director/lingo/lingo-gr.cpp"
+#line 454 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_wordToOf); ;}
     break;
 
   case 100:
-#line 456 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeMe(nullptr, 0); }
-#line 2912 "engines/director/lingo/lingo-gr.cpp"
+#line 455 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeMe(nullptr, 0); ;}
     break;
 
   case 101:
-#line 459 "engines/director/lingo/lingo-gr.y"
+#line 458 "engines/director/lingo/lingo-gr.y"
     {
-		g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s), 1);
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s); }
-#line 2920 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
+		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 102:
-#line 464 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_printtop); }
-#line 2926 "engines/director/lingo/lingo-gr.cpp"
+#line 463 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_printtop); ;}
     break;
 
   case 105:
-#line 467 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_exitRepeat); }
-#line 2932 "engines/director/lingo/lingo-gr.cpp"
+#line 466 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_exitRepeat); ;}
     break;
 
   case 106:
-#line 468 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_procret); }
-#line 2938 "engines/director/lingo/lingo-gr.cpp"
+#line 467 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_procret); ;}
     break;
 
   case 110:
-#line 472 "engines/director/lingo/lingo-gr.y"
+#line 471 "engines/director/lingo/lingo-gr.y"
     {
-		g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), 0);
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 2946 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0);
+		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 111:
-#line 475 "engines/director/lingo/lingo-gr.y"
+#line 474 "engines/director/lingo/lingo-gr.y"
     {
-		g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s), 1);
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s); }
-#line 2954 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
+		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 112:
-#line 478 "engines/director/lingo/lingo-gr.y"
+#line 477 "engines/director/lingo/lingo-gr.y"
     {
-		g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s), 1);
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s); }
-#line 2962 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1);
+		delete (yyvsp[(1) - (2)].s); ;}
     break;
 
   case 113:
-#line 481 "engines/director/lingo/lingo-gr.y"
+#line 480 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_voidpush);
-		g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), 1);
-		delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 2971 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeFunc((yyvsp[(1) - (1)].s), 1);
+		delete (yyvsp[(1) - (1)].s); ;}
     break;
 
   case 114:
-#line 485 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.narg)); }
-#line 2977 "engines/director/lingo/lingo-gr.cpp"
+#line 484 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
     break;
 
   case 115:
-#line 486 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeMe((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s), 0); }
-#line 2983 "engines/director/lingo/lingo-gr.cpp"
+#line 485 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;}
     break;
 
   case 116:
-#line 487 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeMe((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.s), (((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.narg)); }
-#line 2989 "engines/director/lingo/lingo-gr.cpp"
+#line 486 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;}
     break;
 
   case 117:
-#line 488 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_open); }
-#line 2995 "engines/director/lingo/lingo-gr.cpp"
+#line 487 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_open); ;}
     break;
 
   case 118:
-#line 489 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); }
-#line 3001 "engines/director/lingo/lingo-gr.cpp"
+#line 488 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
     break;
 
   case 119:
-#line 490 "engines/director/lingo/lingo-gr.y"
-    { Common::String s(*(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.s)); s += '-'; s += *(((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s); g_lingo->codeFunc(&s, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.narg)); }
-#line 3007 "engines/director/lingo/lingo-gr.cpp"
+#line 489 "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 120:
-#line 493 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str()); delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 3013 "engines/director/lingo/lingo-gr.cpp"
+#line 492 "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 121:
-#line 494 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str()); delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 3019 "engines/director/lingo/lingo-gr.cpp"
+#line 493 "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 122:
-#line 497 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str()); delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 3025 "engines/director/lingo/lingo-gr.cpp"
+#line 496 "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 123:
-#line 498 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_property); g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str()); delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 3031 "engines/director/lingo/lingo-gr.cpp"
+#line 497 "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 124:
-#line 501 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str()); delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 3037 "engines/director/lingo/lingo-gr.cpp"
+#line 500 "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 125:
-#line 502 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str()); delete (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); }
-#line 3043 "engines/director/lingo/lingo-gr.cpp"
+#line 501 "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 126:
-#line 513 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotoloop); }
-#line 3049 "engines/director/lingo/lingo-gr.cpp"
+#line 512 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_gotoloop); ;}
     break;
 
   case 127:
-#line 514 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotonext); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 513 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_gotonext); ;}
     break;
 
   case 128:
-#line 515 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_gotoprevious); }
-#line 3061 "engines/director/lingo/lingo-gr.cpp"
+#line 514 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_gotoprevious); ;}
     break;
 
   case 129:
-#line 516 "engines/director/lingo/lingo-gr.y"
+#line 515 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
-		g_lingo->code1(g_lingo->c_goto); }
-#line 3070 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 130:
-#line 520 "engines/director/lingo/lingo-gr.y"
+#line 519 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
-		g_lingo->code1(g_lingo->c_goto); }
-#line 3079 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 131:
-#line 524 "engines/director/lingo/lingo-gr.y"
+#line 523 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
-		g_lingo->code1(g_lingo->c_goto); }
-#line 3088 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->code1(g_lingo->c_goto); ;}
     break;
 
   case 136:
-#line 538 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->code1(g_lingo->c_playdone); }
-#line 3094 "engines/director/lingo/lingo-gr.cpp"
+#line 537 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->code1(g_lingo->c_playdone); ;}
     break;
 
   case 137:
-#line 539 "engines/director/lingo/lingo-gr.y"
+#line 538 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(1);
-		g_lingo->code1(g_lingo->c_play); }
-#line 3103 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 138:
-#line 543 "engines/director/lingo/lingo-gr.y"
+#line 542 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(3);
-		g_lingo->code1(g_lingo->c_play); }
-#line 3112 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 139:
-#line 547 "engines/director/lingo/lingo-gr.y"
+#line 546 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_intpush);
 		g_lingo->codeInt(2);
-		g_lingo->code1(g_lingo->c_play); }
-#line 3121 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->code1(g_lingo->c_play); ;}
     break;
 
   case 140:
-#line 551 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeSetImmediate(true); }
-#line 3127 "engines/director/lingo/lingo-gr.cpp"
+#line 550 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeSetImmediate(true); ;}
     break;
 
   case 141:
-#line 551 "engines/director/lingo/lingo-gr.y"
+#line 550 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->codeSetImmediate(false);
-		g_lingo->codeFunc((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.s), (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.narg)); }
-#line 3135 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;}
     break;
 
   case 142:
-#line 581 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); }
-#line 3141 "engines/director/lingo/lingo-gr.cpp"
+#line 580 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
     break;
 
   case 143:
-#line 582 "engines/director/lingo/lingo-gr.y"
+#line 581 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
-			g_lingo->define(*(((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval.s), (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.code), (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.narg));
-			g_lingo->_indef = false; }
-#line 3150 "engines/director/lingo/lingo-gr.cpp"
+			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg));
+			g_lingo->_indef = false; ;}
     break;
 
   case 144:
-#line 586 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeFactory(*(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)); }
-#line 3156 "engines/director/lingo/lingo-gr.cpp"
+#line 585 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;}
     break;
 
   case 145:
-#line 587 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->_indef = true; }
-#line 3162 "engines/director/lingo/lingo-gr.cpp"
+#line 586 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->_indef = true; ;}
     break;
 
   case 146:
-#line 588 "engines/director/lingo/lingo-gr.y"
+#line 587 "engines/director/lingo/lingo-gr.y"
     {
 			g_lingo->code1(g_lingo->c_procret);
-			g_lingo->define(*(((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval.s), (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.code), (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.narg) + 1, &g_lingo->_currentFactory);
-			g_lingo->_indef = false; }
-#line 3171 "engines/director/lingo/lingo-gr.cpp"
+			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);
+			g_lingo->_indef = false; ;}
     break;
 
   case 147:
-#line 592 "engines/director/lingo/lingo-gr.y"
+#line 591 "engines/director/lingo/lingo-gr.y"
     {	// D3
 		g_lingo->code1(g_lingo->c_procret);
-		g_lingo->define(*(((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.s), (((yyGLRStackItem const *)yyvsp)[YYFILL (-6)].yystate.yysemantics.yysval.code), (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.narg));
+		g_lingo->define(*(yyvsp[(1) - (8)].s), (yyvsp[(2) - (8)].code), (yyvsp[(3) - (8)].narg));
 		g_lingo->_indef = false;
 		g_lingo->_ignoreMe = false;
 
-		checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s), (((yyGLRStackItem const *)yyvsp)[YYFILL (-7)].yystate.yysemantics.yysval.s)->c_str(), false); }
-#line 3183 "engines/director/lingo/lingo-gr.cpp"
+		checkEnd((yyvsp[(7) - (8)].s), (yyvsp[(1) - (8)].s)->c_str(), false); ;}
     break;
 
   case 148:
-#line 599 "engines/director/lingo/lingo-gr.y"
+#line 598 "engines/director/lingo/lingo-gr.y"
     {	// D4. No 'end' clause
 		g_lingo->code1(g_lingo->c_procret);
-		g_lingo->define(*(((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.s), (((yyGLRStackItem const *)yyvsp)[YYFILL (-4)].yystate.yysemantics.yysval.code), (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.narg));
+		g_lingo->define(*(yyvsp[(1) - (6)].s), (yyvsp[(2) - (6)].code), (yyvsp[(3) - (6)].narg));
 		g_lingo->_indef = false;
-		g_lingo->_ignoreMe = false; }
-#line 3193 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->_ignoreMe = false; ;}
     break;
 
   case 149:
-#line 605 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).s) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s); g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3199 "engines/director/lingo/lingo-gr.cpp"
+#line 604 "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 150:
-#line 607 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).narg) = 0; }
-#line 3205 "engines/director/lingo/lingo-gr.cpp"
+#line 606 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = 0; ;}
     break;
 
   case 151:
-#line 608 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeArg((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)); ((*yyvalp).narg) = 1; }
-#line 3211 "engines/director/lingo/lingo-gr.cpp"
+#line 607 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
   case 152:
-#line 609 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeArg((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)); ((*yyvalp).narg) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.narg) + 1; }
-#line 3217 "engines/director/lingo/lingo-gr.cpp"
+#line 608 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 153:
-#line 610 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeArg((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)); ((*yyvalp).narg) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.narg) + 1; }
-#line 3223 "engines/director/lingo/lingo-gr.cpp"
+#line 609 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
   case 157:
-#line 618 "engines/director/lingo/lingo-gr.y"
-    { g_lingo->codeArgStore(); }
-#line 3229 "engines/director/lingo/lingo-gr.cpp"
+#line 617 "engines/director/lingo/lingo-gr.y"
+    { g_lingo->codeArgStore(); ;}
     break;
 
   case 158:
-#line 622 "engines/director/lingo/lingo-gr.y"
+#line 621 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
-		g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s)->c_str());
+		g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str());
 		inst numpar = 0;
-		WRITE_UINT32(&numpar, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.narg));
-		g_lingo->code1(numpar); }
-#line 3240 "engines/director/lingo/lingo-gr.cpp"
+		WRITE_UINT32(&numpar, (yyvsp[(2) - (2)].narg));
+		g_lingo->code1(numpar); ;}
     break;
 
   case 159:
-#line 630 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).narg) = 0; }
-#line 3246 "engines/director/lingo/lingo-gr.cpp"
+#line 629 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = 0; ;}
     break;
 
   case 160:
-#line 631 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).narg) = 1; }
-#line 3252 "engines/director/lingo/lingo-gr.cpp"
+#line 630 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = 1; ;}
     break;
 
   case 161:
-#line 632 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).narg) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.narg) + 1; }
-#line 3258 "engines/director/lingo/lingo-gr.cpp"
+#line 631 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 162:
-#line 635 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).narg) = 1; }
-#line 3264 "engines/director/lingo/lingo-gr.cpp"
+#line 634 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = 1; ;}
     break;
 
   case 163:
-#line 636 "engines/director/lingo/lingo-gr.y"
-    { ((*yyvalp).narg) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.narg) + 1; }
-#line 3270 "engines/director/lingo/lingo-gr.cpp"
+#line 635 "engines/director/lingo/lingo-gr.y"
+    { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
-#line 3274 "engines/director/lingo/lingo-gr.cpp"
-
+/* Line 1267 of yacc.c.  */
+#line 3007 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
-  return yyok;
-# undef yyerrok
-# undef YYABORT
-# undef YYACCEPT
-# undef YYERROR
-# undef YYBACKUP
-# undef yyclearin
-# undef YYRECOVERING
-}
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
 
+  *++yyvsp = yyval;
 
-static void
-yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1)
-{
-  YYUSE (yy0);
-  YYUSE (yy1);
 
-  switch (yyn)
-    {
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
 
-      default: break;
-    }
-}
+  yyn = yyr1[yyn];
 
-                              /* Bison grammar-table manipulation.  */
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
 
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
+  goto yynewstate;
 
-static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-{
-  YYUSE (yyvaluep);
-  if (!yymsg)
-    yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YYUSE (yytype);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-}
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if ! YYERROR_VERBOSE
+      yyerror (YY_("syntax error"));
+#else
+      {
+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+	  {
+	    YYSIZE_T yyalloc = 2 * yysize;
+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
+	    if (yymsg != yymsgbuf)
+	      YYSTACK_FREE (yymsg);
+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+	    if (yymsg)
+	      yymsg_alloc = yyalloc;
+	    else
+	      {
+		yymsg = yymsgbuf;
+		yymsg_alloc = sizeof yymsgbuf;
+	      }
+	  }
+
+	if (0 < yysize && yysize <= yymsg_alloc)
+	  {
+	    (void) yysyntax_error (yymsg, yystate, yychar);
+	    yyerror (yymsg);
+	  }
+	else
+	  {
+	    yyerror (YY_("syntax error"));
+	    if (yysize != 0)
+	      goto yyexhaustedlab;
+	  }
+      }
+#endif
+    }
 
-/** Number of symbols composing the right hand side of rule #RULE.  */
-static inline int
-yyrhsLength (yyRuleNum yyrule)
-{
-  return yyr2[yyrule];
-}
 
-static void
-yydestroyGLRState (char const *yymsg, yyGLRState *yys)
-{
-  if (yys->yyresolved)
-    yydestruct (yymsg, yystos[yys->yylrState],
-                &yys->yysemantics.yysval);
-  else
+
+  if (yyerrstatus == 3)
     {
-#if YYDEBUG
-      if (yydebug)
-        {
-          if (yys->yysemantics.yyfirstVal)
-            YYFPRINTF (stderr, "%s unresolved", yymsg);
-          else
-            YYFPRINTF (stderr, "%s incomplete", yymsg);
-          YY_SYMBOL_PRINT ("", yystos[yys->yylrState], YY_NULLPTR, &yys->yyloc);
-        }
-#endif
+      /* If just tried and failed to reuse look-ahead token after an
+	 error, discard it.  */
 
-      if (yys->yysemantics.yyfirstVal)
-        {
-          yySemanticOption *yyoption = yys->yysemantics.yyfirstVal;
-          yyGLRState *yyrh;
-          int yyn;
-          for (yyrh = yyoption->yystate, yyn = yyrhsLength (yyoption->yyrule);
-               yyn > 0;
-               yyrh = yyrh->yypred, yyn -= 1)
-            yydestroyGLRState (yymsg, yyrh);
-        }
+      if (yychar <= YYEOF)
+	{
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+	}
+      else
+	{
+	  yydestruct ("Error: discarding",
+		      yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
     }
-}
 
-/** Left-hand-side symbol for rule #YYRULE.  */
-static inline yySymbol
-yylhsNonterm (yyRuleNum yyrule)
-{
-  return yyr1[yyrule];
-}
+  /* Else will try to reuse look-ahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (/*CONSTCOND*/ 0)
+     goto yyerrorlab;
+
+  /* Do not reclaim the symbols of the rule which action triggered
+     this YYERROR.  */
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (yyn != YYPACT_NINF)
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
 
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-290)))
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
 
-/** True iff LR state YYSTATE has only a default reduction (regardless
- *  of token).  */
-static inline yybool
-yyisDefaultedState (yyStateNum yystate)
-{
-  return (yybool) yypact_value_is_default (yypact[yystate]);
-}
 
-/** The default reduction for YYSTATE, assuming it has one.  */
-static inline yyRuleNum
-yydefaultAction (yyStateNum yystate)
-{
-  return yydefact[yystate];
-}
-
-#define yytable_value_is_error(Yytable_value) \
-  0
-
-/** The action to take in YYSTATE on seeing YYTOKEN.
- *  Result R means
- *    R < 0:  Reduce on rule -R.
- *    R = 0:  Error.
- *    R > 0:  Shift to state R.
- *  Set *YYCONFLICTS to a pointer into yyconfl to a 0-terminated list
- *  of conflicting reductions.
- */
-static inline int
-yygetLRActions (yyStateNum yystate, yySymbol yytoken, const short** yyconflicts)
-{
-  int yyindex = yypact[yystate] + yytoken;
-  if (yyisDefaultedState (yystate)
-      || yyindex < 0 || YYLAST < yyindex || yycheck[yyindex] != yytoken)
-    {
-      *yyconflicts = yyconfl;
-      return -yydefact[yystate];
-    }
-  else if (! yytable_value_is_error (yytable[yyindex]))
-    {
-      *yyconflicts = yyconfl + yyconflp[yyindex];
-      return yytable[yyindex];
-    }
-  else
-    {
-      *yyconflicts = yyconfl + yyconflp[yyindex];
-      return 0;
-    }
-}
-
-/** Compute post-reduction state.
- * \param yystate   the current state
- * \param yysym     the nonterminal to push on the stack
- */
-static inline yyStateNum
-yyLRgotoState (yyStateNum yystate, yySymbol yysym)
-{
-  int yyr = yypgoto[yysym - YYNTOKENS] + yystate;
-  if (0 <= yyr && yyr <= YYLAST && yycheck[yyr] == yystate)
-    return yytable[yyr];
-  else
-    return yydefgoto[yysym - YYNTOKENS];
-}
-
-static inline yybool
-yyisShiftAction (int yyaction)
-{
-  return (yybool) (0 < yyaction);
-}
-
-static inline yybool
-yyisErrorAction (int yyaction)
-{
-  return (yybool) (yyaction == 0);
-}
-
-                                /* GLRStates */
-
-/** Return a fresh GLRStackItem in YYSTACKP.  The item is an LR state
- *  if YYISSTATE, and otherwise a semantic option.  Callers should call
- *  YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
- *  headroom.  */
-
-static inline yyGLRStackItem*
-yynewGLRStackItem (yyGLRStack* yystackp, yybool yyisState)
-{
-  yyGLRStackItem* yynewItem = yystackp->yynextFree;
-  yystackp->yyspaceLeft -= 1;
-  yystackp->yynextFree += 1;
-  yynewItem->yystate.yyisState = yyisState;
-  return yynewItem;
-}
-
-/** Add a new semantic action that will execute the action for rule
- *  YYRULE on the semantic values in YYRHS to the list of
- *  alternative actions for YYSTATE.  Assumes that YYRHS comes from
- *  stack #YYK of *YYSTACKP. */
-static void
-yyaddDeferredAction (yyGLRStack* yystackp, size_t yyk, yyGLRState* yystate,
-                     yyGLRState* yyrhs, yyRuleNum yyrule)
-{
-  yySemanticOption* yynewOption =
-    &yynewGLRStackItem (yystackp, yyfalse)->yyoption;
-  YYASSERT (!yynewOption->yyisState);
-  yynewOption->yystate = yyrhs;
-  yynewOption->yyrule = yyrule;
-  if (yystackp->yytops.yylookaheadNeeds[yyk])
-    {
-      yynewOption->yyrawchar = yychar;
-      yynewOption->yyval = yylval;
-    }
-  else
-    yynewOption->yyrawchar = YYEMPTY;
-  yynewOption->yynext = yystate->yysemantics.yyfirstVal;
-  yystate->yysemantics.yyfirstVal = yynewOption;
-
-  YY_RESERVE_GLRSTACK (yystackp);
-}
-
-                                /* GLRStacks */
-
-/** Initialize YYSET to a singleton set containing an empty stack.  */
-static yybool
-yyinitStateSet (yyGLRStateSet* yyset)
-{
-  yyset->yysize = 1;
-  yyset->yycapacity = 16;
-  yyset->yystates
-    = (yyGLRState**) YYMALLOC (yyset->yycapacity * sizeof yyset->yystates[0]);
-  if (! yyset->yystates)
-    return yyfalse;
-  yyset->yystates[0] = YY_NULLPTR;
-  yyset->yylookaheadNeeds
-    = (yybool*) YYMALLOC (yyset->yycapacity * sizeof yyset->yylookaheadNeeds[0]);
-  if (! yyset->yylookaheadNeeds)
-    {
-      YYFREE (yyset->yystates);
-      return yyfalse;
-    }
-  memset (yyset->yylookaheadNeeds,
-          0, yyset->yycapacity * sizeof yyset->yylookaheadNeeds[0]);
-  return yytrue;
-}
-
-static void yyfreeStateSet (yyGLRStateSet* yyset)
-{
-  YYFREE (yyset->yystates);
-  YYFREE (yyset->yylookaheadNeeds);
-}
-
-/** Initialize *YYSTACKP to a single empty stack, with total maximum
- *  capacity for all stacks of YYSIZE.  */
-static yybool
-yyinitGLRStack (yyGLRStack* yystackp, size_t yysize)
-{
-  yystackp->yyerrState = 0;
-  yynerrs = 0;
-  yystackp->yyspaceLeft = yysize;
-  yystackp->yyitems =
-    (yyGLRStackItem*) YYMALLOC (yysize * sizeof yystackp->yynextFree[0]);
-  if (!yystackp->yyitems)
-    return yyfalse;
-  yystackp->yynextFree = yystackp->yyitems;
-  yystackp->yysplitPoint = YY_NULLPTR;
-  yystackp->yylastDeleted = YY_NULLPTR;
-  return yyinitStateSet (&yystackp->yytops);
-}
-
-
-#if YYSTACKEXPANDABLE
-# define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \
-  &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE
-
-/** If *YYSTACKP is expandable, extend it.  WARNING: Pointers into the
-    stack from outside should be considered invalid after this call.
-    We always expand when there are 1 or fewer items left AFTER an
-    allocation, so that we can avoid having external pointers exist
-    across an allocation.  */
-static void
-yyexpandGLRStack (yyGLRStack* yystackp)
-{
-  yyGLRStackItem* yynewItems;
-  yyGLRStackItem* yyp0, *yyp1;
-  size_t yynewSize;
-  size_t yyn;
-  size_t yysize = (size_t) (yystackp->yynextFree - yystackp->yyitems);
-  if (YYMAXDEPTH - YYHEADROOM < yysize)
-    yyMemoryExhausted (yystackp);
-  yynewSize = 2*yysize;
-  if (YYMAXDEPTH < yynewSize)
-    yynewSize = YYMAXDEPTH;
-  yynewItems = (yyGLRStackItem*) YYMALLOC (yynewSize * sizeof yynewItems[0]);
-  if (! yynewItems)
-    yyMemoryExhausted (yystackp);
-  for (yyp0 = yystackp->yyitems, yyp1 = yynewItems, yyn = yysize;
-       0 < yyn;
-       yyn -= 1, yyp0 += 1, yyp1 += 1)
-    {
-      *yyp1 = *yyp0;
-      if (*(yybool *) yyp0)
-        {
-          yyGLRState* yys0 = &yyp0->yystate;
-          yyGLRState* yys1 = &yyp1->yystate;
-          if (yys0->yypred != YY_NULLPTR)
-            yys1->yypred =
-              YYRELOC (yyp0, yyp1, yys0->yypred, yystate);
-          if (! yys0->yyresolved && yys0->yysemantics.yyfirstVal != YY_NULLPTR)
-            yys1->yysemantics.yyfirstVal =
-              YYRELOC (yyp0, yyp1, yys0->yysemantics.yyfirstVal, yyoption);
-        }
-      else
-        {
-          yySemanticOption* yyv0 = &yyp0->yyoption;
-          yySemanticOption* yyv1 = &yyp1->yyoption;
-          if (yyv0->yystate != YY_NULLPTR)
-            yyv1->yystate = YYRELOC (yyp0, yyp1, yyv0->yystate, yystate);
-          if (yyv0->yynext != YY_NULLPTR)
-            yyv1->yynext = YYRELOC (yyp0, yyp1, yyv0->yynext, yyoption);
-        }
-    }
-  if (yystackp->yysplitPoint != YY_NULLPTR)
-    yystackp->yysplitPoint = YYRELOC (yystackp->yyitems, yynewItems,
-                                      yystackp->yysplitPoint, yystate);
-
-  for (yyn = 0; yyn < yystackp->yytops.yysize; yyn += 1)
-    if (yystackp->yytops.yystates[yyn] != YY_NULLPTR)
-      yystackp->yytops.yystates[yyn] =
-        YYRELOC (yystackp->yyitems, yynewItems,
-                 yystackp->yytops.yystates[yyn], yystate);
-  YYFREE (yystackp->yyitems);
-  yystackp->yyitems = yynewItems;
-  yystackp->yynextFree = yynewItems + yysize;
-  yystackp->yyspaceLeft = yynewSize - yysize;
-}
-#endif
-
-static void
-yyfreeGLRStack (yyGLRStack* yystackp)
-{
-  YYFREE (yystackp->yyitems);
-  yyfreeStateSet (&yystackp->yytops);
-}
-
-/** Assuming that YYS is a GLRState somewhere on *YYSTACKP, update the
- *  splitpoint of *YYSTACKP, if needed, so that it is at least as deep as
- *  YYS.  */
-static inline void
-yyupdateSplit (yyGLRStack* yystackp, yyGLRState* yys)
-{
-  if (yystackp->yysplitPoint != YY_NULLPTR && yystackp->yysplitPoint > yys)
-    yystackp->yysplitPoint = yys;
-}
-
-/** Invalidate stack #YYK in *YYSTACKP.  */
-static inline void
-yymarkStackDeleted (yyGLRStack* yystackp, size_t yyk)
-{
-  if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
-    yystackp->yylastDeleted = yystackp->yytops.yystates[yyk];
-  yystackp->yytops.yystates[yyk] = YY_NULLPTR;
-}
-
-/** Undelete the last stack in *YYSTACKP that was marked as deleted.  Can
-    only be done once after a deletion, and only when all other stacks have
-    been deleted.  */
-static void
-yyundeleteLastStack (yyGLRStack* yystackp)
-{
-  if (yystackp->yylastDeleted == YY_NULLPTR || yystackp->yytops.yysize != 0)
-    return;
-  yystackp->yytops.yystates[0] = yystackp->yylastDeleted;
-  yystackp->yytops.yysize = 1;
-  YYDPRINTF ((stderr, "Restoring last deleted stack as stack #0.\n"));
-  yystackp->yylastDeleted = YY_NULLPTR;
-}
-
-static inline void
-yyremoveDeletes (yyGLRStack* yystackp)
-{
-  size_t yyi, yyj;
-  yyi = yyj = 0;
-  while (yyj < yystackp->yytops.yysize)
-    {
-      if (yystackp->yytops.yystates[yyi] == YY_NULLPTR)
-        {
-          if (yyi == yyj)
-            {
-              YYDPRINTF ((stderr, "Removing dead stacks.\n"));
-            }
-          yystackp->yytops.yysize -= 1;
-        }
-      else
-        {
-          yystackp->yytops.yystates[yyj] = yystackp->yytops.yystates[yyi];
-          /* In the current implementation, it's unnecessary to copy
-             yystackp->yytops.yylookaheadNeeds[yyi] since, after
-             yyremoveDeletes returns, the parser immediately either enters
-             deterministic operation or shifts a token.  However, it doesn't
-             hurt, and the code might evolve to need it.  */
-          yystackp->yytops.yylookaheadNeeds[yyj] =
-            yystackp->yytops.yylookaheadNeeds[yyi];
-          if (yyj != yyi)
-            {
-              YYDPRINTF ((stderr, "Rename stack %lu -> %lu.\n",
-                          (unsigned long) yyi, (unsigned long) yyj));
-            }
-          yyj += 1;
-        }
-      yyi += 1;
+      yydestruct ("Error: popping",
+		  yystos[yystate], yyvsp);
+      YYPOPSTACK (1);
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
     }
-}
-
-/** Shift to a new state on stack #YYK of *YYSTACKP, corresponding to LR
- * state YYLRSTATE, at input position YYPOSN, with (resolved) semantic
- * value *YYVALP and source location *YYLOCP.  */
-static inline void
-yyglrShift (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
-            size_t yyposn,
-            YYSTYPE* yyvalp)
-{
-  yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
-
-  yynewState->yylrState = yylrState;
-  yynewState->yyposn = yyposn;
-  yynewState->yyresolved = yytrue;
-  yynewState->yypred = yystackp->yytops.yystates[yyk];
-  yynewState->yysemantics.yysval = *yyvalp;
-  yystackp->yytops.yystates[yyk] = yynewState;
-
-  YY_RESERVE_GLRSTACK (yystackp);
-}
 
-/** Shift stack #YYK of *YYSTACKP, to a new state corresponding to LR
- *  state YYLRSTATE, at input position YYPOSN, with the (unresolved)
- *  semantic value of YYRHS under the action for YYRULE.  */
-static inline void
-yyglrShiftDefer (yyGLRStack* yystackp, size_t yyk, yyStateNum yylrState,
-                 size_t yyposn, yyGLRState* yyrhs, yyRuleNum yyrule)
-{
-  yyGLRState* yynewState = &yynewGLRStackItem (yystackp, yytrue)->yystate;
-  YYASSERT (yynewState->yyisState);
-
-  yynewState->yylrState = yylrState;
-  yynewState->yyposn = yyposn;
-  yynewState->yyresolved = yyfalse;
-  yynewState->yypred = yystackp->yytops.yystates[yyk];
-  yynewState->yysemantics.yyfirstVal = YY_NULLPTR;
-  yystackp->yytops.yystates[yyk] = yynewState;
-
-  /* Invokes YY_RESERVE_GLRSTACK.  */
-  yyaddDeferredAction (yystackp, yyk, yynewState, yyrhs, yyrule);
-}
+  if (yyn == YYFINAL)
+    YYACCEPT;
 
-#if !YYDEBUG
-# define YY_REDUCE_PRINT(Args)
-#else
-# define YY_REDUCE_PRINT(Args)          \
-  do {                                  \
-    if (yydebug)                        \
-      yy_reduce_print Args;             \
-  } while (0)
-
-/*----------------------------------------------------------------------.
-| Report that stack #YYK of *YYSTACKP is going to be reduced by YYRULE. |
-`----------------------------------------------------------------------*/
-
-static inline void
-yy_reduce_print (yybool yynormal, yyGLRStackItem* yyvsp, size_t yyk,
-                 yyRuleNum yyrule)
-{
-  int yynrhs = yyrhsLength (yyrule);
-  int yyi;
-  YYFPRINTF (stderr, "Reducing stack %lu by rule %d (line %lu):\n",
-             (unsigned long) yyk, yyrule - 1,
-             (unsigned long) yyrline[yyrule]);
-  if (! yynormal)
-    yyfillin (yyvsp, 1, -yynrhs);
-  /* The symbols being reduced.  */
-  for (yyi = 0; yyi < yynrhs; yyi++)
-    {
-      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr,
-                       yystos[yyvsp[yyi - yynrhs + 1].yystate.yylrState],
-                       &yyvsp[yyi - yynrhs + 1].yystate.yysemantics.yysval                       );
-      if (!yyvsp[yyi - yynrhs + 1].yystate.yyresolved)
-        YYFPRINTF (stderr, " (unresolved)");
-      YYFPRINTF (stderr, "\n");
-    }
-}
-#endif
-
-/** Pop the symbols consumed by reduction #YYRULE from the top of stack
- *  #YYK of *YYSTACKP, and perform the appropriate semantic action on their
- *  semantic values.  Assumes that all ambiguities in semantic values
- *  have been previously resolved.  Set *YYVALP to the resulting value,
- *  and *YYLOCP to the computed location (if any).  Return value is as
- *  for userAction.  */
-static inline YYRESULTTAG
-yydoAction (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
-            YYSTYPE* yyvalp)
-{
-  int yynrhs = yyrhsLength (yyrule);
+  *++yyvsp = yylval;
 
-  if (yystackp->yysplitPoint == YY_NULLPTR)
-    {
-      /* Standard special case: single stack.  */
-      yyGLRStackItem* yyrhs = (yyGLRStackItem*) yystackp->yytops.yystates[yyk];
-      YYASSERT (yyk == 0);
-      yystackp->yynextFree -= yynrhs;
-      yystackp->yyspaceLeft += (size_t) yynrhs;
-      yystackp->yytops.yystates[0] = & yystackp->yynextFree[-1].yystate;
-      YY_REDUCE_PRINT ((yytrue, yyrhs, yyk, yyrule));
-      return yyuserAction (yyrule, yynrhs, yyrhs, yystackp,
-                           yyvalp);
-    }
-  else
-    {
-      int yyi;
-      yyGLRState* yys;
-      yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
-      yys = yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred
-        = yystackp->yytops.yystates[yyk];
-      for (yyi = 0; yyi < yynrhs; yyi += 1)
-        {
-          yys = yys->yypred;
-          YYASSERT (yys);
-        }
-      yyupdateSplit (yystackp, yys);
-      yystackp->yytops.yystates[yyk] = yys;
-      YY_REDUCE_PRINT ((yyfalse, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1, yyk, yyrule));
-      return yyuserAction (yyrule, yynrhs, yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
-                           yystackp, yyvalp);
-    }
-}
 
-/** Pop items off stack #YYK of *YYSTACKP according to grammar rule YYRULE,
- *  and push back on the resulting nonterminal symbol.  Perform the
- *  semantic action associated with YYRULE and store its value with the
- *  newly pushed state, if YYFORCEEVAL or if *YYSTACKP is currently
- *  unambiguous.  Otherwise, store the deferred semantic action with
- *  the new state.  If the new state would have an identical input
- *  position, LR state, and predecessor to an existing state on the stack,
- *  it is identified with that existing state, eliminating stack #YYK from
- *  *YYSTACKP.  In this case, the semantic value is
- *  added to the options for the existing state's semantic value.
- */
-static inline YYRESULTTAG
-yyglrReduce (yyGLRStack* yystackp, size_t yyk, yyRuleNum yyrule,
-             yybool yyforceEval)
-{
-  size_t yyposn = yystackp->yytops.yystates[yyk]->yyposn;
+  /* Shift the error token.  */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
 
-  if (yyforceEval || yystackp->yysplitPoint == YY_NULLPTR)
-    {
-      YYSTYPE yysval;
-
-      YYRESULTTAG yyflag = yydoAction (yystackp, yyk, yyrule, &yysval);
-      if (yyflag == yyerr && yystackp->yysplitPoint != YY_NULLPTR)
-        {
-          YYDPRINTF ((stderr, "Parse on stack %lu rejected by rule #%d.\n",
-                     (unsigned long) yyk, yyrule - 1));
-        }
-      if (yyflag != yyok)
-        return yyflag;
-      YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyrule], &yysval, &yyloc);
-      yyglrShift (yystackp, yyk,
-                  yyLRgotoState (yystackp->yytops.yystates[yyk]->yylrState,
-                                 yylhsNonterm (yyrule)),
-                  yyposn, &yysval);
-    }
-  else
-    {
-      size_t yyi;
-      int yyn;
-      yyGLRState* yys, *yys0 = yystackp->yytops.yystates[yyk];
-      yyStateNum yynewLRState;
-
-      for (yys = yystackp->yytops.yystates[yyk], yyn = yyrhsLength (yyrule);
-           0 < yyn; yyn -= 1)
-        {
-          yys = yys->yypred;
-          YYASSERT (yys);
-        }
-      yyupdateSplit (yystackp, yys);
-      yynewLRState = yyLRgotoState (yys->yylrState, yylhsNonterm (yyrule));
-      YYDPRINTF ((stderr,
-                  "Reduced stack %lu by rule #%d; action deferred.  "
-                  "Now in state %d.\n",
-                  (unsigned long) yyk, yyrule - 1, yynewLRState));
-      for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
-        if (yyi != yyk && yystackp->yytops.yystates[yyi] != YY_NULLPTR)
-          {
-            yyGLRState *yysplit = yystackp->yysplitPoint;
-            yyGLRState *yyp = yystackp->yytops.yystates[yyi];
-            while (yyp != yys && yyp != yysplit && yyp->yyposn >= yyposn)
-              {
-                if (yyp->yylrState == yynewLRState && yyp->yypred == yys)
-                  {
-                    yyaddDeferredAction (yystackp, yyk, yyp, yys0, yyrule);
-                    yymarkStackDeleted (yystackp, yyk);
-                    YYDPRINTF ((stderr, "Merging stack %lu into stack %lu.\n",
-                                (unsigned long) yyk,
-                                (unsigned long) yyi));
-                    return yyok;
-                  }
-                yyp = yyp->yypred;
-              }
-          }
-      yystackp->yytops.yystates[yyk] = yys;
-      yyglrShiftDefer (yystackp, yyk, yynewLRState, yyposn, yys0, yyrule);
-    }
-  return yyok;
-}
+  yystate = yyn;
+  goto yynewstate;
 
-static size_t
-yysplitStack (yyGLRStack* yystackp, size_t yyk)
-{
-  if (yystackp->yysplitPoint == YY_NULLPTR)
-    {
-      YYASSERT (yyk == 0);
-      yystackp->yysplitPoint = yystackp->yytops.yystates[yyk];
-    }
-  if (yystackp->yytops.yysize >= yystackp->yytops.yycapacity)
-    {
-      yyGLRState** yynewStates = YY_NULLPTR;
-      yybool* yynewLookaheadNeeds;
-
-      if (yystackp->yytops.yycapacity
-          > (YYSIZEMAX / (2 * sizeof yynewStates[0])))
-        yyMemoryExhausted (yystackp);
-      yystackp->yytops.yycapacity *= 2;
-
-      yynewStates =
-        (yyGLRState**) YYREALLOC (yystackp->yytops.yystates,
-                                  (yystackp->yytops.yycapacity
-                                   * sizeof yynewStates[0]));
-      if (yynewStates == YY_NULLPTR)
-        yyMemoryExhausted (yystackp);
-      yystackp->yytops.yystates = yynewStates;
-
-      yynewLookaheadNeeds =
-        (yybool*) YYREALLOC (yystackp->yytops.yylookaheadNeeds,
-                             (yystackp->yytops.yycapacity
-                              * sizeof yynewLookaheadNeeds[0]));
-      if (yynewLookaheadNeeds == YY_NULLPTR)
-        yyMemoryExhausted (yystackp);
-      yystackp->yytops.yylookaheadNeeds = yynewLookaheadNeeds;
-    }
-  yystackp->yytops.yystates[yystackp->yytops.yysize]
-    = yystackp->yytops.yystates[yyk];
-  yystackp->yytops.yylookaheadNeeds[yystackp->yytops.yysize]
-    = yystackp->yytops.yylookaheadNeeds[yyk];
-  yystackp->yytops.yysize += 1;
-  return yystackp->yytops.yysize-1;
-}
 
-/** True iff YYY0 and YYY1 represent identical options at the top level.
- *  That is, they represent the same rule applied to RHS symbols
- *  that produce the same terminal symbols.  */
-static yybool
-yyidenticalOptions (yySemanticOption* yyy0, yySemanticOption* yyy1)
-{
-  if (yyy0->yyrule == yyy1->yyrule)
-    {
-      yyGLRState *yys0, *yys1;
-      int yyn;
-      for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
-           yyn = yyrhsLength (yyy0->yyrule);
-           yyn > 0;
-           yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
-        if (yys0->yyposn != yys1->yyposn)
-          return yyfalse;
-      return yytrue;
-    }
-  else
-    return yyfalse;
-}
-
-/** Assuming identicalOptions (YYY0,YYY1), destructively merge the
- *  alternative semantic values for the RHS-symbols of YYY1 and YYY0.  */
-static void
-yymergeOptionSets (yySemanticOption* yyy0, yySemanticOption* yyy1)
-{
-  yyGLRState *yys0, *yys1;
-  int yyn;
-  for (yys0 = yyy0->yystate, yys1 = yyy1->yystate,
-       yyn = yyrhsLength (yyy0->yyrule);
-       yyn > 0;
-       yys0 = yys0->yypred, yys1 = yys1->yypred, yyn -= 1)
-    {
-      if (yys0 == yys1)
-        break;
-      else if (yys0->yyresolved)
-        {
-          yys1->yyresolved = yytrue;
-          yys1->yysemantics.yysval = yys0->yysemantics.yysval;
-        }
-      else if (yys1->yyresolved)
-        {
-          yys0->yyresolved = yytrue;
-          yys0->yysemantics.yysval = yys1->yysemantics.yysval;
-        }
-      else
-        {
-          yySemanticOption** yyz0p = &yys0->yysemantics.yyfirstVal;
-          yySemanticOption* yyz1 = yys1->yysemantics.yyfirstVal;
-          while (yytrue)
-            {
-              if (yyz1 == *yyz0p || yyz1 == YY_NULLPTR)
-                break;
-              else if (*yyz0p == YY_NULLPTR)
-                {
-                  *yyz0p = yyz1;
-                  break;
-                }
-              else if (*yyz0p < yyz1)
-                {
-                  yySemanticOption* yyz = *yyz0p;
-                  *yyz0p = yyz1;
-                  yyz1 = yyz1->yynext;
-                  (*yyz0p)->yynext = yyz;
-                }
-              yyz0p = &(*yyz0p)->yynext;
-            }
-          yys1->yysemantics.yyfirstVal = yys0->yysemantics.yyfirstVal;
-        }
-    }
-}
-
-/** Y0 and Y1 represent two possible actions to take in a given
- *  parsing state; return 0 if no combination is possible,
- *  1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred.  */
-static int
-yypreference (yySemanticOption* y0, yySemanticOption* y1)
-{
-  yyRuleNum r0 = y0->yyrule, r1 = y1->yyrule;
-  int p0 = yydprec[r0], p1 = yydprec[r1];
-
-  if (p0 == p1)
-    {
-      if (yymerger[r0] == 0 || yymerger[r0] != yymerger[r1])
-        return 0;
-      else
-        return 1;
-    }
-  if (p0 == 0 || p1 == 0)
-    return 0;
-  if (p0 < p1)
-    return 3;
-  if (p1 < p0)
-    return 2;
-  return 0;
-}
-
-static YYRESULTTAG yyresolveValue (yyGLRState* yys,
-                                   yyGLRStack* yystackp);
-
-
-/** Resolve the previous YYN states starting at and including state YYS
- *  on *YYSTACKP. If result != yyok, some states may have been left
- *  unresolved possibly with empty semantic option chains.  Regardless
- *  of whether result = yyok, each state has been left with consistent
- *  data so that yydestroyGLRState can be invoked if necessary.  */
-static YYRESULTTAG
-yyresolveStates (yyGLRState* yys, int yyn,
-                 yyGLRStack* yystackp)
-{
-  if (0 < yyn)
-    {
-      YYASSERT (yys->yypred);
-      YYCHK (yyresolveStates (yys->yypred, yyn-1, yystackp));
-      if (! yys->yyresolved)
-        YYCHK (yyresolveValue (yys, yystackp));
-    }
-  return yyok;
-}
-
-/** Resolve the states for the RHS of YYOPT on *YYSTACKP, perform its
- *  user action, and return the semantic value and location in *YYVALP
- *  and *YYLOCP.  Regardless of whether result = yyok, all RHS states
- *  have been destroyed (assuming the user action destroys all RHS
- *  semantic values if invoked).  */
-static YYRESULTTAG
-yyresolveAction (yySemanticOption* yyopt, yyGLRStack* yystackp,
-                 YYSTYPE* yyvalp)
-{
-  yyGLRStackItem yyrhsVals[YYMAXRHS + YYMAXLEFT + 1];
-  int yynrhs = yyrhsLength (yyopt->yyrule);
-  YYRESULTTAG yyflag =
-    yyresolveStates (yyopt->yystate, yynrhs, yystackp);
-  if (yyflag != yyok)
-    {
-      yyGLRState *yys;
-      for (yys = yyopt->yystate; yynrhs > 0; yys = yys->yypred, yynrhs -= 1)
-        yydestroyGLRState ("Cleanup: popping", yys);
-      return yyflag;
-    }
-
-  yyrhsVals[YYMAXRHS + YYMAXLEFT].yystate.yypred = yyopt->yystate;
-  {
-    int yychar_current = yychar;
-    YYSTYPE yylval_current = yylval;
-    yychar = yyopt->yyrawchar;
-    yylval = yyopt->yyval;
-    yyflag = yyuserAction (yyopt->yyrule, yynrhs,
-                           yyrhsVals + YYMAXRHS + YYMAXLEFT - 1,
-                           yystackp, yyvalp);
-    yychar = yychar_current;
-    yylval = yylval_current;
-  }
-  return yyflag;
-}
-
-#if YYDEBUG
-static void
-yyreportTree (yySemanticOption* yyx, int yyindent)
-{
-  int yynrhs = yyrhsLength (yyx->yyrule);
-  int yyi;
-  yyGLRState* yys;
-  yyGLRState* yystates[1 + YYMAXRHS];
-  yyGLRState yyleftmost_state;
-
-  for (yyi = yynrhs, yys = yyx->yystate; 0 < yyi; yyi -= 1, yys = yys->yypred)
-    yystates[yyi] = yys;
-  if (yys == YY_NULLPTR)
-    {
-      yyleftmost_state.yyposn = 0;
-      yystates[0] = &yyleftmost_state;
-    }
-  else
-    yystates[0] = yys;
-
-  if (yyx->yystate->yyposn < yys->yyposn + 1)
-    YYFPRINTF (stderr, "%*s%s -> <Rule %d, empty>\n",
-               yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
-               yyx->yyrule - 1);
-  else
-    YYFPRINTF (stderr, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
-               yyindent, "", yytokenName (yylhsNonterm (yyx->yyrule)),
-               yyx->yyrule - 1, (unsigned long) (yys->yyposn + 1),
-               (unsigned long) yyx->yystate->yyposn);
-  for (yyi = 1; yyi <= yynrhs; yyi += 1)
-    {
-      if (yystates[yyi]->yyresolved)
-        {
-          if (yystates[yyi-1]->yyposn+1 > yystates[yyi]->yyposn)
-            YYFPRINTF (stderr, "%*s%s <empty>\n", yyindent+2, "",
-                       yytokenName (yystos[yystates[yyi]->yylrState]));
-          else
-            YYFPRINTF (stderr, "%*s%s <tokens %lu .. %lu>\n", yyindent+2, "",
-                       yytokenName (yystos[yystates[yyi]->yylrState]),
-                       (unsigned long) (yystates[yyi-1]->yyposn + 1),
-                       (unsigned long) yystates[yyi]->yyposn);
-        }
-      else
-        yyreportTree (yystates[yyi]->yysemantics.yyfirstVal, yyindent+2);
-    }
-}
-#endif
-
-static YYRESULTTAG
-yyreportAmbiguity (yySemanticOption* yyx0,
-                   yySemanticOption* yyx1)
-{
-  YYUSE (yyx0);
-  YYUSE (yyx1);
-
-#if YYDEBUG
-  YYFPRINTF (stderr, "Ambiguity detected.\n");
-  YYFPRINTF (stderr, "Option 1,\n");
-  yyreportTree (yyx0, 2);
-  YYFPRINTF (stderr, "\nOption 2,\n");
-  yyreportTree (yyx1, 2);
-  YYFPRINTF (stderr, "\n");
-#endif
-
-  yyerror (YY_("syntax is ambiguous"));
-  return yyabort;
-}
-
-/** Resolve the ambiguity represented in state YYS in *YYSTACKP,
- *  perform the indicated actions, and set the semantic value of YYS.
- *  If result != yyok, the chain of semantic options in YYS has been
- *  cleared instead or it has been left unmodified except that
- *  redundant options may have been removed.  Regardless of whether
- *  result = yyok, YYS has been left with consistent data so that
- *  yydestroyGLRState can be invoked if necessary.  */
-static YYRESULTTAG
-yyresolveValue (yyGLRState* yys, yyGLRStack* yystackp)
-{
-  yySemanticOption* yyoptionList = yys->yysemantics.yyfirstVal;
-  yySemanticOption* yybest = yyoptionList;
-  yySemanticOption** yypp;
-  yybool yymerge = yyfalse;
-  YYSTYPE yysval;
-  YYRESULTTAG yyflag;
-
-  for (yypp = &yyoptionList->yynext; *yypp != YY_NULLPTR; )
-    {
-      yySemanticOption* yyp = *yypp;
-
-      if (yyidenticalOptions (yybest, yyp))
-        {
-          yymergeOptionSets (yybest, yyp);
-          *yypp = yyp->yynext;
-        }
-      else
-        {
-          switch (yypreference (yybest, yyp))
-            {
-            case 0:
-              return yyreportAmbiguity (yybest, yyp);
-              break;
-            case 1:
-              yymerge = yytrue;
-              break;
-            case 2:
-              break;
-            case 3:
-              yybest = yyp;
-              yymerge = yyfalse;
-              break;
-            default:
-              /* This cannot happen so it is not worth a YYASSERT (yyfalse),
-                 but some compilers complain if the default case is
-                 omitted.  */
-              break;
-            }
-          yypp = &yyp->yynext;
-        }
-    }
-
-  if (yymerge)
-    {
-      yySemanticOption* yyp;
-      int yyprec = yydprec[yybest->yyrule];
-      yyflag = yyresolveAction (yybest, yystackp, &yysval);
-      if (yyflag == yyok)
-        for (yyp = yybest->yynext; yyp != YY_NULLPTR; yyp = yyp->yynext)
-          {
-            if (yyprec == yydprec[yyp->yyrule])
-              {
-                YYSTYPE yysval_other;
-                yyflag = yyresolveAction (yyp, yystackp, &yysval_other);
-                if (yyflag != yyok)
-                  {
-                    yydestruct ("Cleanup: discarding incompletely merged value for",
-                                yystos[yys->yylrState],
-                                &yysval);
-                    break;
-                  }
-                yyuserMerge (yymerger[yyp->yyrule], &yysval, &yysval_other);
-              }
-          }
-    }
-  else
-    yyflag = yyresolveAction (yybest, yystackp, &yysval);
-
-  if (yyflag == yyok)
-    {
-      yys->yyresolved = yytrue;
-      yys->yysemantics.yysval = yysval;
-    }
-  else
-    yys->yysemantics.yyfirstVal = YY_NULLPTR;
-  return yyflag;
-}
-
-static YYRESULTTAG
-yyresolveStack (yyGLRStack* yystackp)
-{
-  if (yystackp->yysplitPoint != YY_NULLPTR)
-    {
-      yyGLRState* yys;
-      int yyn;
-
-      for (yyn = 0, yys = yystackp->yytops.yystates[0];
-           yys != yystackp->yysplitPoint;
-           yys = yys->yypred, yyn += 1)
-        continue;
-      YYCHK (yyresolveStates (yystackp->yytops.yystates[0], yyn, yystackp
-                             ));
-    }
-  return yyok;
-}
-
-static void
-yycompressStack (yyGLRStack* yystackp)
-{
-  yyGLRState* yyp, *yyq, *yyr;
-
-  if (yystackp->yytops.yysize != 1 || yystackp->yysplitPoint == YY_NULLPTR)
-    return;
-
-  for (yyp = yystackp->yytops.yystates[0], yyq = yyp->yypred, yyr = YY_NULLPTR;
-       yyp != yystackp->yysplitPoint;
-       yyr = yyp, yyp = yyq, yyq = yyp->yypred)
-    yyp->yypred = yyr;
-
-  yystackp->yyspaceLeft += (size_t) (yystackp->yynextFree - yystackp->yyitems);
-  yystackp->yynextFree = ((yyGLRStackItem*) yystackp->yysplitPoint) + 1;
-  yystackp->yyspaceLeft -= (size_t) (yystackp->yynextFree - yystackp->yyitems);
-  yystackp->yysplitPoint = YY_NULLPTR;
-  yystackp->yylastDeleted = YY_NULLPTR;
-
-  while (yyr != YY_NULLPTR)
-    {
-      yystackp->yynextFree->yystate = *yyr;
-      yyr = yyr->yypred;
-      yystackp->yynextFree->yystate.yypred = &yystackp->yynextFree[-1].yystate;
-      yystackp->yytops.yystates[0] = &yystackp->yynextFree->yystate;
-      yystackp->yynextFree += 1;
-      yystackp->yyspaceLeft -= 1;
-    }
-}
-
-static YYRESULTTAG
-yyprocessOneStack (yyGLRStack* yystackp, size_t yyk,
-                   size_t yyposn)
-{
-  while (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
-    {
-      yyStateNum yystate = yystackp->yytops.yystates[yyk]->yylrState;
-      YYDPRINTF ((stderr, "Stack %lu Entering state %d\n",
-                  (unsigned long) yyk, yystate));
-
-      YYASSERT (yystate != YYFINAL);
-
-      if (yyisDefaultedState (yystate))
-        {
-          YYRESULTTAG yyflag;
-          yyRuleNum yyrule = yydefaultAction (yystate);
-          if (yyrule == 0)
-            {
-              YYDPRINTF ((stderr, "Stack %lu dies.\n",
-                          (unsigned long) yyk));
-              yymarkStackDeleted (yystackp, yyk);
-              return yyok;
-            }
-          yyflag = yyglrReduce (yystackp, yyk, yyrule, yyimmediate[yyrule]);
-          if (yyflag == yyerr)
-            {
-              YYDPRINTF ((stderr,
-                          "Stack %lu dies "
-                          "(predicate failure or explicit user error).\n",
-                          (unsigned long) yyk));
-              yymarkStackDeleted (yystackp, yyk);
-              return yyok;
-            }
-          if (yyflag != yyok)
-            return yyflag;
-        }
-      else
-        {
-          yySymbol yytoken;
-          int yyaction;
-          const short* yyconflicts;
-
-          yystackp->yytops.yylookaheadNeeds[yyk] = yytrue;
-          yytoken = yygetToken (&yychar);
-          yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
-
-          while (*yyconflicts != 0)
-            {
-              YYRESULTTAG yyflag;
-              size_t yynewStack = yysplitStack (yystackp, yyk);
-              YYDPRINTF ((stderr, "Splitting off stack %lu from %lu.\n",
-                          (unsigned long) yynewStack,
-                          (unsigned long) yyk));
-              yyflag = yyglrReduce (yystackp, yynewStack,
-                                    *yyconflicts,
-                                    yyimmediate[*yyconflicts]);
-              if (yyflag == yyok)
-                YYCHK (yyprocessOneStack (yystackp, yynewStack,
-                                          yyposn));
-              else if (yyflag == yyerr)
-                {
-                  YYDPRINTF ((stderr, "Stack %lu dies.\n",
-                              (unsigned long) yynewStack));
-                  yymarkStackDeleted (yystackp, yynewStack);
-                }
-              else
-                return yyflag;
-              yyconflicts += 1;
-            }
-
-          if (yyisShiftAction (yyaction))
-            break;
-          else if (yyisErrorAction (yyaction))
-            {
-              YYDPRINTF ((stderr, "Stack %lu dies.\n",
-                          (unsigned long) yyk));
-              yymarkStackDeleted (yystackp, yyk);
-              break;
-            }
-          else
-            {
-              YYRESULTTAG yyflag = yyglrReduce (yystackp, yyk, -yyaction,
-                                                yyimmediate[-yyaction]);
-              if (yyflag == yyerr)
-                {
-                  YYDPRINTF ((stderr,
-                              "Stack %lu dies "
-                              "(predicate failure or explicit user error).\n",
-                              (unsigned long) yyk));
-                  yymarkStackDeleted (yystackp, yyk);
-                  break;
-                }
-              else if (yyflag != yyok)
-                return yyflag;
-            }
-        }
-    }
-  return yyok;
-}
-
-static void
-yyreportSyntaxError (yyGLRStack* yystackp)
-{
-  if (yystackp->yyerrState != 0)
-    return;
-#if ! YYERROR_VERBOSE
-  yyerror (YY_("syntax error"));
-#else
-  {
-  yySymbol yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-  size_t yysize0 = yytnamerr (YY_NULLPTR, yytokenName (yytoken));
-  size_t yysize = yysize0;
-  yybool yysize_overflow = yyfalse;
-  char* yymsg = YY_NULLPTR;
-  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
-  /* Internationalized format string. */
-  const char *yyformat = YY_NULLPTR;
-  /* Arguments of yyformat. */
-  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-  /* Number of reported tokens (one for the "unexpected", one per
-     "expected").  */
-  int yycount = 0;
-
-  /* There are many possibilities here to consider:
-     - If this state is a consistent state with a default action, then
-       the only way this function was invoked is if the default action
-       is an error action.  In that case, don't check for expected
-       tokens because there are none.
-     - The only way there can be no lookahead present (in yychar) is if
-       this state is a consistent state with a default action.  Thus,
-       detecting the absence of a lookahead is sufficient to determine
-       that there is no unexpected or expected token to report.  In that
-       case, just report a simple "syntax error".
-     - Don't assume there isn't a lookahead just because this state is a
-       consistent state with a default action.  There might have been a
-       previous inconsistent state, consistent state with a non-default
-       action, or user semantic action that manipulated yychar.
-     - Of course, the expected token list depends on states to have
-       correct lookahead information, and it depends on the parser not
-       to perform extra reductions after fetching a lookahead from the
-       scanner and before detecting a syntax error.  Thus, state merging
-       (from LALR or IELR) and default reductions corrupt the expected
-       token list.  However, the list is correct for canonical LR with
-       one exception: it will still contain any token that will not be
-       accepted due to an error action in a later state.
-  */
-  if (yytoken != YYEMPTY)
-    {
-      int yyn = yypact[yystackp->yytops.yystates[0]->yylrState];
-      yyarg[yycount++] = yytokenName (yytoken);
-      if (!yypact_value_is_default (yyn))
-        {
-          /* Start YYX at -YYN if negative to avoid negative indexes in
-             YYCHECK.  In other words, skip the first -YYN actions for this
-             state because they are default actions.  */
-          int yyxbegin = yyn < 0 ? -yyn : 0;
-          /* Stay within bounds of both yycheck and yytname.  */
-          int yychecklim = YYLAST - yyn + 1;
-          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
-          int yyx;
-          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
-            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
-                && !yytable_value_is_error (yytable[yyx + yyn]))
-              {
-                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
-                  {
-                    yycount = 1;
-                    yysize = yysize0;
-                    break;
-                  }
-                yyarg[yycount++] = yytokenName (yyx);
-                {
-                  size_t yysz = yysize + yytnamerr (YY_NULLPTR, yytokenName (yyx));
-                  if (yysz < yysize)
-                    yysize_overflow = yytrue;
-                  yysize = yysz;
-                }
-              }
-        }
-    }
-
-  switch (yycount)
-    {
-#define YYCASE_(N, S)                   \
-      case N:                           \
-        yyformat = S;                   \
-      break
-    default: /* Avoid compiler warnings. */
-      YYCASE_(0, YY_("syntax error"));
-      YYCASE_(1, YY_("syntax error, unexpected %s"));
-      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
-      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
-      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
-      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-#undef YYCASE_
-    }
-
-  {
-    size_t yysz = yysize + strlen (yyformat);
-    if (yysz < yysize)
-      yysize_overflow = yytrue;
-    yysize = yysz;
-  }
-
-  if (!yysize_overflow)
-    yymsg = (char *) YYMALLOC (yysize);
-
-  if (yymsg)
-    {
-      char *yyp = yymsg;
-      int yyi = 0;
-      while ((*yyp = *yyformat))
-        {
-          if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
-            {
-              yyp += yytnamerr (yyp, yyarg[yyi++]);
-              yyformat += 2;
-            }
-          else
-            {
-              yyp++;
-              yyformat++;
-            }
-        }
-      yyerror (yymsg);
-      YYFREE (yymsg);
-    }
-  else
-    {
-      yyerror (YY_("syntax error"));
-      yyMemoryExhausted (yystackp);
-    }
-  }
-#endif /* YYERROR_VERBOSE */
-  yynerrs += 1;
-}
-
-/* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
-   yylval, and yylloc are the syntactic category, semantic value, and location
-   of the lookahead.  */
-static void
-yyrecoverSyntaxError (yyGLRStack* yystackp)
-{
-  if (yystackp->yyerrState == 3)
-    /* We just shifted the error token and (perhaps) took some
-       reductions.  Skip tokens until we can proceed.  */
-    while (yytrue)
-      {
-        yySymbol yytoken;
-        int yyj;
-        if (yychar == YYEOF)
-          yyFail (yystackp, YY_NULLPTR);
-        if (yychar != YYEMPTY)
-          {
-            yytoken = YYTRANSLATE (yychar);
-            yydestruct ("Error: discarding",
-                        yytoken, &yylval);
-            yychar = YYEMPTY;
-          }
-        yytoken = yygetToken (&yychar);
-        yyj = yypact[yystackp->yytops.yystates[0]->yylrState];
-        if (yypact_value_is_default (yyj))
-          return;
-        yyj += yytoken;
-        if (yyj < 0 || YYLAST < yyj || yycheck[yyj] != yytoken)
-          {
-            if (yydefact[yystackp->yytops.yystates[0]->yylrState] != 0)
-              return;
-          }
-        else if (! yytable_value_is_error (yytable[yyj]))
-          return;
-      }
-
-  /* Reduce to one stack.  */
-  {
-    size_t yyk;
-    for (yyk = 0; yyk < yystackp->yytops.yysize; yyk += 1)
-      if (yystackp->yytops.yystates[yyk] != YY_NULLPTR)
-        break;
-    if (yyk >= yystackp->yytops.yysize)
-      yyFail (yystackp, YY_NULLPTR);
-    for (yyk += 1; yyk < yystackp->yytops.yysize; yyk += 1)
-      yymarkStackDeleted (yystackp, yyk);
-    yyremoveDeletes (yystackp);
-    yycompressStack (yystackp);
-  }
-
-  /* Now pop stack until we find a state that shifts the error token.  */
-  yystackp->yyerrState = 3;
-  while (yystackp->yytops.yystates[0] != YY_NULLPTR)
-    {
-      yyGLRState *yys = yystackp->yytops.yystates[0];
-      int yyj = yypact[yys->yylrState];
-      if (! yypact_value_is_default (yyj))
-        {
-          yyj += YYTERROR;
-          if (0 <= yyj && yyj <= YYLAST && yycheck[yyj] == YYTERROR
-              && yyisShiftAction (yytable[yyj]))
-            {
-              /* Shift the error token.  */
-              YY_SYMBOL_PRINT ("Shifting", yystos[yytable[yyj]],
-                               &yylval, &yyerrloc);
-              yyglrShift (yystackp, 0, yytable[yyj],
-                          yys->yyposn, &yylval);
-              yys = yystackp->yytops.yystates[0];
-              break;
-            }
-        }
-      if (yys->yypred != YY_NULLPTR)
-        yydestroyGLRState ("Error: popping", yys);
-      yystackp->yytops.yystates[0] = yys->yypred;
-      yystackp->yynextFree -= 1;
-      yystackp->yyspaceLeft += 1;
-    }
-  if (yystackp->yytops.yystates[0] == YY_NULLPTR)
-    yyFail (yystackp, YY_NULLPTR);
-}
-
-#define YYCHK1(YYE)                                                          \
-  do {                                                                       \
-    switch (YYE) {                                                           \
-    case yyok:                                                               \
-      break;                                                                 \
-    case yyabort:                                                            \
-      goto yyabortlab;                                                       \
-    case yyaccept:                                                           \
-      goto yyacceptlab;                                                      \
-    case yyerr:                                                              \
-      goto yyuser_error;                                                     \
-    default:                                                                 \
-      goto yybuglab;                                                         \
-    }                                                                        \
-  } while (0)
-
-/*----------.
-| yyparse.  |
-`----------*/
-
-int
-yyparse (void)
-{
-  int yyresult;
-  yyGLRStack yystack;
-  yyGLRStack* const yystackp = &yystack;
-  size_t yyposn;
-
-  YYDPRINTF ((stderr, "Starting parse\n"));
-
-  yychar = YYEMPTY;
-  yylval = yyval_default;
-
-  if (! yyinitGLRStack (yystackp, YYINITDEPTH))
-    goto yyexhaustedlab;
-  switch (YYSETJMP (yystack.yyexception_buffer))
-    {
-    case 0: break;
-    case 1: goto yyabortlab;
-    case 2: goto yyexhaustedlab;
-    default: goto yybuglab;
-    }
-  yyglrShift (&yystack, 0, 0, 0, &yylval);
-  yyposn = 0;
-
-  while (yytrue)
-    {
-      /* For efficiency, we have two loops, the first of which is
-         specialized to deterministic operation (single stack, no
-         potential ambiguity).  */
-      /* Standard mode */
-      while (yytrue)
-        {
-          yyStateNum yystate = yystack.yytops.yystates[0]->yylrState;
-          YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-          if (yystate == YYFINAL)
-            goto yyacceptlab;
-          if (yyisDefaultedState (yystate))
-            {
-              yyRuleNum yyrule = yydefaultAction (yystate);
-              if (yyrule == 0)
-                {
-                  yyreportSyntaxError (&yystack);
-                  goto yyuser_error;
-                }
-              YYCHK1 (yyglrReduce (&yystack, 0, yyrule, yytrue));
-            }
-          else
-            {
-              yySymbol yytoken = yygetToken (&yychar);
-              const short* yyconflicts;
-              int yyaction = yygetLRActions (yystate, yytoken, &yyconflicts);
-              if (*yyconflicts != 0)
-                break;
-              if (yyisShiftAction (yyaction))
-                {
-                  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-                  yychar = YYEMPTY;
-                  yyposn += 1;
-                  yyglrShift (&yystack, 0, yyaction, yyposn, &yylval);
-                  if (0 < yystack.yyerrState)
-                    yystack.yyerrState -= 1;
-                }
-              else if (yyisErrorAction (yyaction))
-                {                  yyreportSyntaxError (&yystack);
-                  goto yyuser_error;
-                }
-              else
-                YYCHK1 (yyglrReduce (&yystack, 0, -yyaction, yytrue));
-            }
-        }
-
-      while (yytrue)
-        {
-          yySymbol yytoken_to_shift;
-          size_t yys;
-
-          for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
-            yystackp->yytops.yylookaheadNeeds[yys] = (yybool) (yychar != YYEMPTY);
-
-          /* yyprocessOneStack returns one of three things:
-
-              - An error flag.  If the caller is yyprocessOneStack, it
-                immediately returns as well.  When the caller is finally
-                yyparse, it jumps to an error label via YYCHK1.
-
-              - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
-                (&yystack, yys), which sets the top state of yys to NULL.  Thus,
-                yyparse's following invocation of yyremoveDeletes will remove
-                the stack.
-
-              - yyok, when ready to shift a token.
-
-             Except in the first case, yyparse will invoke yyremoveDeletes and
-             then shift the next token onto all remaining stacks.  This
-             synchronization of the shift (that is, after all preceding
-             reductions on all stacks) helps prevent double destructor calls
-             on yylval in the event of memory exhaustion.  */
-
-          for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
-            YYCHK1 (yyprocessOneStack (&yystack, yys, yyposn));
-          yyremoveDeletes (&yystack);
-          if (yystack.yytops.yysize == 0)
-            {
-              yyundeleteLastStack (&yystack);
-              if (yystack.yytops.yysize == 0)
-                yyFail (&yystack, YY_("syntax error"));
-              YYCHK1 (yyresolveStack (&yystack));
-              YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
-              yyreportSyntaxError (&yystack);
-              goto yyuser_error;
-            }
-
-          /* If any yyglrShift call fails, it will fail after shifting.  Thus,
-             a copy of yylval will already be on stack 0 in the event of a
-             failure in the following loop.  Thus, yychar is set to YYEMPTY
-             before the loop to make sure the user destructor for yylval isn't
-             called twice.  */
-          yytoken_to_shift = YYTRANSLATE (yychar);
-          yychar = YYEMPTY;
-          yyposn += 1;
-          for (yys = 0; yys < yystack.yytops.yysize; yys += 1)
-            {
-              yyStateNum yystate = yystack.yytops.yystates[yys]->yylrState;
-              const short* yyconflicts;
-              int yyaction = yygetLRActions (yystate, yytoken_to_shift,
-                              &yyconflicts);
-              /* Note that yyconflicts were handled by yyprocessOneStack.  */
-              YYDPRINTF ((stderr, "On stack %lu, ", (unsigned long) yys));
-              YY_SYMBOL_PRINT ("shifting", yytoken_to_shift, &yylval, &yylloc);
-              yyglrShift (&yystack, yys, yyaction, yyposn,
-                          &yylval);
-              YYDPRINTF ((stderr, "Stack %lu now in state #%d\n",
-                          (unsigned long) yys,
-                          yystack.yytops.yystates[yys]->yylrState));
-            }
-
-          if (yystack.yytops.yysize == 1)
-            {
-              YYCHK1 (yyresolveStack (&yystack));
-              YYDPRINTF ((stderr, "Returning to deterministic operation.\n"));
-              yycompressStack (&yystack);
-              break;
-            }
-        }
-      continue;
-    yyuser_error:
-      yyrecoverSyntaxError (&yystack);
-      yyposn = yystack.yytops.yystates[0]->yyposn;
-    }
-
- yyacceptlab:
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
- yybuglab:
-  YYASSERT (yyfalse);
-  goto yyabortlab;
-
- yyabortlab:
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
- yyexhaustedlab:
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
   yyerror (YY_("memory exhausted"));
   yyresult = 2;
-  goto yyreturn;
-
- yyreturn:
-  if (yychar != YYEMPTY)
-    yydestruct ("Cleanup: discarding lookahead",
-                YYTRANSLATE (yychar), &yylval);
-
-  /* If the stack is well-formed, pop the stack until it is empty,
-     destroying its entries as we go.  But free the stack regardless
-     of whether it is well-formed.  */
-  if (yystack.yyitems)
-    {
-      yyGLRState** yystates = yystack.yytops.yystates;
-      if (yystates)
-        {
-          size_t yysize = yystack.yytops.yysize;
-          size_t yyk;
-          for (yyk = 0; yyk < yysize; yyk += 1)
-            if (yystates[yyk])
-              {
-                while (yystates[yyk])
-                  {
-                    yyGLRState *yys = yystates[yyk];
-                    if (yys->yypred != YY_NULLPTR)
-                      yydestroyGLRState ("Cleanup: popping", yys);
-                    yystates[yyk] = yys->yypred;
-                    yystack.yynextFree -= 1;
-                    yystack.yyspaceLeft += 1;
-                  }
-                break;
-              }
-        }
-      yyfreeGLRStack (&yystack);
-    }
-
-  return yyresult;
-}
-
-/* DEBUGGING ONLY */
-#if YYDEBUG
-static void
-yy_yypstack (yyGLRState* yys)
-{
-  if (yys->yypred)
-    {
-      yy_yypstack (yys->yypred);
-      YYFPRINTF (stderr, " -> ");
-    }
-  YYFPRINTF (stderr, "%d@%lu", yys->yylrState,
-             (unsigned long) yys->yyposn);
-}
-
-static void
-yypstates (yyGLRState* yyst)
-{
-  if (yyst == YY_NULLPTR)
-    YYFPRINTF (stderr, "<null>");
-  else
-    yy_yypstack (yyst);
-  YYFPRINTF (stderr, "\n");
-}
-
-static void
-yypstack (yyGLRStack* yystackp, size_t yyk)
-{
-  yypstates (yystackp->yytops.yystates[yyk]);
-}
-
-#define YYINDEX(YYX)                                                         \
-    ((YYX) == YY_NULLPTR ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems)
-
+  /* Fall through.  */
+#endif
 
-static void
-yypdumpstack (yyGLRStack* yystackp)
-{
-  yyGLRStackItem* yyp;
-  size_t yyi;
-  for (yyp = yystackp->yyitems; yyp < yystackp->yynextFree; yyp += 1)
-    {
-      YYFPRINTF (stderr, "%3lu. ",
-                 (unsigned long) (yyp - yystackp->yyitems));
-      if (*(yybool *) yyp)
-        {
-          YYASSERT (yyp->yystate.yyisState);
-          YYASSERT (yyp->yyoption.yyisState);
-          YYFPRINTF (stderr, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
-                     yyp->yystate.yyresolved, yyp->yystate.yylrState,
-                     (unsigned long) yyp->yystate.yyposn,
-                     (long) YYINDEX (yyp->yystate.yypred));
-          if (! yyp->yystate.yyresolved)
-            YYFPRINTF (stderr, ", firstVal: %ld",
-                       (long) YYINDEX (yyp->yystate
-                                             .yysemantics.yyfirstVal));
-        }
-      else
-        {
-          YYASSERT (!yyp->yystate.yyisState);
-          YYASSERT (!yyp->yyoption.yyisState);
-          YYFPRINTF (stderr, "Option. rule: %d, state: %ld, next: %ld",
-                     yyp->yyoption.yyrule - 1,
-                     (long) YYINDEX (yyp->yyoption.yystate),
-                     (long) YYINDEX (yyp->yyoption.yynext));
-        }
-      YYFPRINTF (stderr, "\n");
+yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  /* Do not reclaim the symbols of the rule which action triggered
+     this YYABORT or YYACCEPT.  */
+  YYPOPSTACK (yylen);
+  YY_STACK_PRINT (yyss, yyssp);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK (1);
     }
-  YYFPRINTF (stderr, "Tops:");
-  for (yyi = 0; yyi < yystackp->yytops.yysize; yyi += 1)
-    YYFPRINTF (stderr, "%lu: %ld; ", (unsigned long) yyi,
-               (long) YYINDEX (yystackp->yytops.yystates[yyi]));
-  YYFPRINTF (stderr, "\n");
-}
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+  if (yymsg != yymsgbuf)
+    YYSTACK_FREE (yymsg);
 #endif
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
+}
 
-#undef yylval
-#undef yychar
-#undef yynerrs
 
+#line 638 "engines/director/lingo/lingo-gr.y"
 
 
-#line 639 "engines/director/lingo/lingo-gr.y"
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index b337474..9930ecd 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -1,13 +1,14 @@
-/* A Bison parser, made by GNU Bison 3.4.2.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Skeleton interface for Bison GLR parsers in C
+/* Skeleton interface for Bison's Yacc-like parsers in C
 
-   Copyright (C) 2002-2015, 2018-2019 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
-   This program is free software: you can redistribute it and/or modify
+   This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation, either version 3 of the License, or
-   (at your option) any later version.
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -15,7 +16,9 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -30,120 +33,203 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_YY_ENGINES_DIRECTOR_LINGO_LINGO_GR_HPP_INCLUDED
-# define YY_YY_ENGINES_DIRECTOR_LINGO_LINGO_GR_HPP_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token type.  */
+/* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-  enum yytokentype
-  {
-    UNARY = 258,
-    CASTREF = 259,
-    VOID = 260,
-    VAR = 261,
-    POINT = 262,
-    RECT = 263,
-    ARRAY = 264,
-    OBJECT = 265,
-    REFERENCE = 266,
-    INT = 267,
-    ARGC = 268,
-    ARGCNORET = 269,
-    THEENTITY = 270,
-    THEENTITYWITHID = 271,
-    FLOAT = 272,
-    BLTIN = 273,
-    BLTINNOARGS = 274,
-    BLTINNOARGSORONE = 275,
-    BLTINONEARG = 276,
-    BLTINARGLIST = 277,
-    TWOWORDBUILTIN = 278,
-    FBLTIN = 279,
-    FBLTINNOARGS = 280,
-    FBLTINONEARG = 281,
-    FBLTINARGLIST = 282,
-    RBLTIN = 283,
-    RBLTINONEARG = 284,
-    ID = 285,
-    STRING = 286,
-    HANDLER = 287,
-    SYMBOL = 288,
-    ENDCLAUSE = 289,
-    tPLAYACCEL = 290,
-    tDOWN = 291,
-    tELSE = 292,
-    tNLELSIF = 293,
-    tEXIT = 294,
-    tFRAME = 295,
-    tGLOBAL = 296,
-    tGO = 297,
-    tIF = 298,
-    tINTO = 299,
-    tLOOP = 300,
-    tMACRO = 301,
-    tMOVIE = 302,
-    tNEXT = 303,
-    tOF = 304,
-    tPREVIOUS = 305,
-    tPUT = 306,
-    tREPEAT = 307,
-    tSET = 308,
-    tTHEN = 309,
-    tTHENNL = 310,
-    tTO = 311,
-    tWHEN = 312,
-    tWITH = 313,
-    tWHILE = 314,
-    tNLELSE = 315,
-    tFACTORY = 316,
-    tMETHOD = 317,
-    tOPEN = 318,
-    tPLAY = 319,
-    tDONE = 320,
-    tINSTANCE = 321,
-    tGE = 322,
-    tLE = 323,
-    tGT = 324,
-    tLT = 325,
-    tEQ = 326,
-    tNEQ = 327,
-    tAND = 328,
-    tOR = 329,
-    tNOT = 330,
-    tMOD = 331,
-    tAFTER = 332,
-    tBEFORE = 333,
-    tCONCAT = 334,
-    tCONTAINS = 335,
-    tSTARTS = 336,
-    tCHAR = 337,
-    tITEM = 338,
-    tLINE = 339,
-    tWORD = 340,
-    tSPRITE = 341,
-    tINTERSECTS = 342,
-    tWITHIN = 343,
-    tTELL = 344,
-    tPROPERTY = 345,
-    tON = 346,
-    tME = 347
-  };
+   /* 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,
+     ARGC = 268,
+     ARGCNORET = 269,
+     THEENTITY = 270,
+     THEENTITYWITHID = 271,
+     FLOAT = 272,
+     BLTIN = 273,
+     BLTINNOARGS = 274,
+     BLTINNOARGSORONE = 275,
+     BLTINONEARG = 276,
+     BLTINARGLIST = 277,
+     TWOWORDBUILTIN = 278,
+     FBLTIN = 279,
+     FBLTINNOARGS = 280,
+     FBLTINONEARG = 281,
+     FBLTINARGLIST = 282,
+     RBLTIN = 283,
+     RBLTINONEARG = 284,
+     ID = 285,
+     STRING = 286,
+     HANDLER = 287,
+     SYMBOL = 288,
+     ENDCLAUSE = 289,
+     tPLAYACCEL = 290,
+     tDOWN = 291,
+     tELSE = 292,
+     tNLELSIF = 293,
+     tEXIT = 294,
+     tFRAME = 295,
+     tGLOBAL = 296,
+     tGO = 297,
+     tIF = 298,
+     tINTO = 299,
+     tLOOP = 300,
+     tMACRO = 301,
+     tMOVIE = 302,
+     tNEXT = 303,
+     tOF = 304,
+     tPREVIOUS = 305,
+     tPUT = 306,
+     tREPEAT = 307,
+     tSET = 308,
+     tTHEN = 309,
+     tTHENNL = 310,
+     tTO = 311,
+     tWHEN = 312,
+     tWITH = 313,
+     tWHILE = 314,
+     tNLELSE = 315,
+     tFACTORY = 316,
+     tMETHOD = 317,
+     tOPEN = 318,
+     tPLAY = 319,
+     tDONE = 320,
+     tINSTANCE = 321,
+     tGE = 322,
+     tLE = 323,
+     tGT = 324,
+     tLT = 325,
+     tEQ = 326,
+     tNEQ = 327,
+     tAND = 328,
+     tOR = 329,
+     tNOT = 330,
+     tMOD = 331,
+     tAFTER = 332,
+     tBEFORE = 333,
+     tCONCAT = 334,
+     tCONTAINS = 335,
+     tSTARTS = 336,
+     tCHAR = 337,
+     tITEM = 338,
+     tLINE = 339,
+     tWORD = 340,
+     tSPRITE = 341,
+     tINTERSECTS = 342,
+     tWITHIN = 343,
+     tTELL = 344,
+     tPROPERTY = 345,
+     tON = 346,
+     tME = 347
+   };
 #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 ARGC 268
+#define ARGCNORET 269
+#define THEENTITY 270
+#define THEENTITYWITHID 271
+#define FLOAT 272
+#define BLTIN 273
+#define BLTINNOARGS 274
+#define BLTINNOARGSORONE 275
+#define BLTINONEARG 276
+#define BLTINARGLIST 277
+#define TWOWORDBUILTIN 278
+#define FBLTIN 279
+#define FBLTINNOARGS 280
+#define FBLTINONEARG 281
+#define FBLTINARGLIST 282
+#define RBLTIN 283
+#define RBLTINONEARG 284
+#define ID 285
+#define STRING 286
+#define HANDLER 287
+#define SYMBOL 288
+#define ENDCLAUSE 289
+#define tPLAYACCEL 290
+#define tDOWN 291
+#define tELSE 292
+#define tNLELSIF 293
+#define tEXIT 294
+#define tFRAME 295
+#define tGLOBAL 296
+#define tGO 297
+#define tIF 298
+#define tINTO 299
+#define tLOOP 300
+#define tMACRO 301
+#define tMOVIE 302
+#define tNEXT 303
+#define tOF 304
+#define tPREVIOUS 305
+#define tPUT 306
+#define tREPEAT 307
+#define tSET 308
+#define tTHEN 309
+#define tTHENNL 310
+#define tTO 311
+#define tWHEN 312
+#define tWITH 313
+#define tWHILE 314
+#define tNLELSE 315
+#define tFACTORY 316
+#define tMETHOD 317
+#define tOPEN 318
+#define tPLAY 319
+#define tDONE 320
+#define tINSTANCE 321
+#define tGE 322
+#define tLE 323
+#define tGT 324
+#define tLT 325
+#define tEQ 326
+#define tNEQ 327
+#define tAND 328
+#define tOR 329
+#define tNOT 330
+#define tMOD 331
+#define tAFTER 332
+#define tBEFORE 333
+#define tCONCAT 334
+#define tCONTAINS 335
+#define tSTARTS 336
+#define tCHAR 337
+#define tITEM 338
+#define tLINE 339
+#define tWORD 340
+#define tSPRITE 341
+#define tINTERSECTS 342
+#define tWITHIN 343
+#define tTELL 344
+#define tPROPERTY 345
+#define tON 346
+#define tME 347
+
+
+
 
-/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-union YYSTYPE
+typedef union YYSTYPE
+#line 79 "engines/director/lingo/lingo-gr.y"
 {
-#line 80 "engines/director/lingo/lingo-gr.y"
-
 	Common::String *s;
 	int i;
 	double f;
@@ -151,18 +237,14 @@ union YYSTYPE
 	int code;
 	int narg;	/* number of arguments */
 	Common::Array<double> *arr;
-
-#line 156 "engines/director/lingo/lingo-gr.hpp"
-
-};
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
+}
+/* Line 1529 of yacc.c.  */
+#line 243 "engines/director/lingo/lingo-gr.hpp"
+	YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
-
 extern YYSTYPE yylval;
 
-int yyparse (void);
-
-#endif /* !YY_YY_ENGINES_DIRECTOR_LINGO_LINGO_GR_HPP_INCLUDED  */
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index f5b5268..d05d37b 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -45,7 +45,6 @@
 
 
 %debug
-%glr-parser
 
 %{
 #define FORBIDDEN_SYMBOL_ALLOW_ALL




More information about the Scummvm-git-logs mailing list