diff options
author | Eugene Sandulenko | 2019-12-05 18:32:18 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-12-05 18:32:18 +0100 |
commit | 89353fb42721d2dd84e53a842e6fd0e600076ff0 (patch) | |
tree | 440d798437e96639318216c00a0470943bb2324d | |
parent | 57f979c705c0e5463821fae0181568f8b14d7e4f (diff) | |
download | scummvm-rg350-89353fb42721d2dd84e53a842e6fd0e600076ff0.tar.gz scummvm-rg350-89353fb42721d2dd84e53a842e6fd0e600076ff0.tar.bz2 scummvm-rg350-89353fb42721d2dd84e53a842e6fd0e600076ff0.zip |
DIRECTOR: LINGO: Switch to GLR parser. Improvements
-rw-r--r-- | engines/director/lingo/lingo-gr.cpp | 6242 | ||||
-rw-r--r-- | engines/director/lingo/lingo-gr.h | 332 | ||||
-rw-r--r-- | engines/director/lingo/lingo-gr.y | 36 |
3 files changed, 4085 insertions, 2525 deletions
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index 1cca32dd35..6205e16a32 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -1,14 +1,13 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.4.2. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* Skeleton implementation for Bison GLR parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 2002-2015, 2018-2019 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 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, 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 @@ -16,9 +15,7 @@ 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, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -33,228 +30,30 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ +/* C GLR parser skeleton written by Paul Hilfinger. */ -/* 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. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "3.4.2" /* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" +#define YYSKELETON_NAME "glr.c" /* Pure parsers. */ #define YYPURE 0 -/* 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" + + + + + +/* First part of user prologue. */ +#line 50 "engines/director/lingo/lingo-gr.y" #define FORBIDDEN_SYMBOL_ALLOW_ALL @@ -284,11 +83,22 @@ void checkEnd(Common::String *token, const char *expect, bool required) { } +#line 87 "engines/director/lingo/lingo-gr.cpp" -/* Enabling traces. */ -#ifndef YYDEBUG -# define YYDEBUG 1 -#endif + +# 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 verbose error messages. */ #ifdef YYERROR_VERBOSE @@ -298,272 +108,166 @@ void checkEnd(Common::String *token, const char *expect, bool required) { # define YYERROR_VERBOSE 0 #endif -/* 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 - +/* 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; -/* Copy the second part of user declarations. */ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> -/* Line 216 of yacc.c. */ -#line 333 "engines/director/lingo/lingo-gr.cpp" - -#ifdef short -# undef short +#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 -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +#ifndef YYFREE +# define YYFREE free #endif - -#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; +#ifndef YYMALLOC +# define YYMALLOC malloc +#endif +#ifndef YYREALLOC +# define YYREALLOC realloc #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; +#define YYSIZEMAX ((size_t) -1) + +#ifdef __cplusplus + typedef bool yybool; +# define yytrue true +# define yyfalse false #else -typedef unsigned short int yytype_uint16; + /* When we move to stdbool, get rid of the various casts to yybool. */ + typedef unsigned char yybool; +# define yytrue 1 +# define yyfalse 0 #endif -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short int yytype_int16; +#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) #endif -#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 +#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) # else -# define YYSIZE_T unsigned int +# define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif -#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 +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +/* 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 # 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 -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(n) (n) +#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") #else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int i) -#else -static int -YYID (i) - int i; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return i; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ #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 128 +#define YYFINAL 126 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1711 +#define YYLAST 3379 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 107 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 41 /* YYNRULES -- Number of rules. */ -#define YYNRULES 164 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 365 - -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ -#define YYUNDEFTOK 2 +#define YYNRULES 163 +/* YYNSTATES -- 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. */ +#define YYUNDEFTOK 2 -#define YYTRANSLATE(YYX) \ - ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +/* 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) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint8 yytranslate[] = +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex. */ +static const unsigned char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 99, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -603,122 +307,30 @@ static const yytype_uint8 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, - 132, 143, 150, 160, 161, 164, 171, 178, 188, 194, - 199, 205, 210, 213, 217, 219, 221, 222, 223, 224, - 227, 230, 234, 236, 238, 240, 242, 244, 246, 248, - 250, 252, 255, 258, 263, 268, 270, 273, 275, 279, - 283, 287, 291, 295, 299, 303, 307, 311, 315, 319, - 323, 327, 330, 334, 338, 342, 346, 349, 352, 356, - 360, 365, 370, 375, 382, 387, 394, 399, 406, 411, - 418, 420, 423, 426, 428, 430, 433, 435, 438, 441, - 444, 446, 449, 452, 454, 457, 462, 467, 474, 479, - 482, 486, 488, 492, 494, 498, 500, 504, 507, 510, - 513, 516, 520, 523, 526, 528, 532, 535, 538, 541, - 545, 548, 549, 553, 554, 563, 566, 567, 576, 585, - 592, 595, 596, 598, 602, 607, 608, 610, 614, 615, - 618, 619, 621, 625, 627 -}; - -/* 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, - 99, -1, 119, 127, 54, 121, 111, 122, 114, 122, - 116, 122, -1, 119, 127, 55, 123, 122, 34, -1, - 119, 127, 55, 123, 122, 114, 122, 116, 122, -1, - -1, 115, 114, -1, 120, 127, 54, 121, 111, 122, - -1, 120, 127, 55, 121, 123, 122, -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, 27, 100, - 147, 101, -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, 22, 100, 147, - 101, -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 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, 316, 320, - 323, 327, 331, 334, 341, 348, 356, 359, 362, 363, - 364, 367, 373, 377, 380, 383, 386, 389, 395, 396, - 397, 400, 403, 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, - 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 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 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +#if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = @@ -743,543 +355,810 @@ 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", 0 + "instancelist", "gotofunc", "gotoframe", "gotomovie", "playfunc", "$@1", + "defn", "$@2", "$@3", "on", "argdef", "endargdef", "argstore", "macro", + "arglist", "nonemptyarglist", YY_NULLPTR }; #endif -# 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 +#define YYPACT_NINF -290 +#define YYTABLE_NINF -31 -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const short yypact[] = { - 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, 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, - 127, 128, 129, 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 + 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 }; -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = + /* 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[] = { - 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, 7, - 10, 6, 9, 0, 2, 6, 6, 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, 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, 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-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, 53, 65, 0, 54, 110, 113, 0, 0, - 0, 60, 0, 0, 0, 57, 56, 55, 141, 106, - 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, - 0, 0, 100, 0, 0, 0, 160, 0, 3, 67, - 21, 7, 22, 0, 0, 0, 0, 0, 58, 19, - 59, 20, 103, 104, 6, 46, 18, 4, 57, 0, - 100, 66, 112, 111, 0, 163, 114, 160, 61, 0, - 62, 101, 160, 159, 160, 105, 121, 107, 0, 127, - 0, 128, 0, 129, 134, 130, 132, 143, 102, 0, - 42, 0, 0, 0, 0, 145, 146, 119, 137, 138, - 140, 125, 109, 81, 0, 0, 0, 0, 0, 123, - 108, 150, 0, 86, 87, 0, 161, 0, 1, 5, - 48, 0, 0, 47, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 151, 160, 0, 163, 0, 0, 120, 0, - 161, 0, 142, 0, 133, 136, 0, 131, 46, 0, - 0, 0, 43, 0, 0, 58, 0, 0, 0, 51, - 46, 0, 139, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 88, 89, 0, 2, - 47, 47, 46, 48, 26, 0, 48, 77, 78, 75, - 76, 79, 80, 72, 83, 84, 85, 82, 68, 69, - 70, 71, 73, 74, 152, 0, 115, 164, 63, 64, - 122, 135, 151, 8, 9, 10, 11, 15, 13, 0, - 0, 14, 12, 151, 118, 126, 92, 0, 94, 0, - 96, 0, 98, 0, 90, 91, 124, 116, 160, 162, - 49, 50, 0, 0, 0, 47, 28, 47, 158, 0, - 0, 17, 16, 0, 0, 0, 0, 0, 0, 23, - 0, 0, 47, 33, 0, 0, 48, 153, 158, 158, - 93, 95, 97, 99, 117, 0, 47, 33, 31, 45, - 47, 33, 0, 27, 154, 149, 48, 48, 47, 48, - 29, 47, 0, 34, 0, 155, 144, 147, 48, 47, - 0, 46, 46, 47, 0, 46, 46, 156, 148, 47, - 0, 47, 48, 48, 32, 0, 0, 48, 0, 0, - 24, 30, 47, 47, 47, 47, 46, 47, 47, 157, - 25, 39, 0, 41, 0, 0, 35, 36, 38, 40, - 47, 0, 0, 47, 37 + 0, 0, 54, 65, 0, 55, 110, 113, 0, 0, + 0, 61, 0, 0, 0, 58, 57, 56, 140, 106, + 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, + 0, 0, 100, 0, 0, 0, 159, 0, 3, 67, + 21, 7, 22, 0, 0, 0, 0, 0, 59, 19, + 60, 20, 103, 104, 6, 47, 18, 4, 58, 0, + 100, 66, 112, 111, 162, 114, 159, 62, 63, 101, + 159, 158, 159, 105, 120, 107, 0, 126, 0, 127, + 0, 128, 133, 129, 131, 142, 102, 0, 43, 0, + 0, 0, 0, 144, 145, 118, 136, 137, 139, 124, + 109, 81, 0, 0, 0, 0, 0, 122, 108, 149, + 0, 86, 87, 0, 160, 0, 1, 5, 49, 0, + 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 150, 159, 0, 0, 119, 160, 0, 141, 0, 132, + 135, 0, 130, 47, 0, 0, 0, 44, 0, 0, + 59, 0, 0, 0, 52, 47, 0, 138, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 88, 89, 0, 2, 48, 48, 47, 49, 26, + 0, 49, 77, 78, 75, 76, 79, 80, 72, 83, + 84, 85, 82, 68, 69, 70, 71, 73, 74, 151, + 0, 163, 64, 121, 134, 150, 8, 9, 10, 11, + 15, 13, 0, 0, 14, 12, 150, 117, 125, 92, + 0, 94, 0, 96, 0, 98, 0, 90, 91, 123, + 115, 159, 161, 50, 51, 0, 0, 0, 48, 28, + 48, 157, 0, 0, 17, 16, 0, 0, 0, 0, + 0, 0, 23, 0, 0, 48, 33, 0, 0, 49, + 152, 157, 157, 93, 95, 97, 99, 116, 0, 48, + 30, 32, 46, 48, 33, 0, 27, 153, 148, 49, + 49, 48, 49, 48, 0, 34, 0, 154, 143, 146, + 49, 48, 0, 37, 47, 47, 48, 0, 47, 47, + 155, 147, 48, 0, 48, 49, 49, 31, 0, 0, + 49, 0, 0, 24, 29, 48, 48, 48, 48, 47, + 48, 48, 156, 25, 40, 0, 42, 0, 0, 35, + 36, 39, 41, 48, 0, 0, 48, 38 }; -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = + /* YYPGOTO[NTERM-NUM]. */ +static const short yypgoto[] = { - -1, 47, 48, 49, 50, 261, 52, 300, 301, 323, - 53, 54, 55, 302, 152, 204, 200, 56, 57, 58, - 59, 60, 61, 87, 120, 112, 62, 95, 96, 63, - 84, 64, 168, 180, 65, 225, 328, 286, 66, 161, - 76 + -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 }; -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -265 -static const yytype_int16 yypact[] = -{ - 302, -75, -265, -265, 848, -265, -265, 848, 848, 888, - 8, -265, 848, 969, 848, 1009, -265, -265, -265, 0, - 41, 727, -265, 44, 848, -44, 39, 55, 77, 85, - 848, 767, 91, 848, 848, 848, 848, 848, 848, -265, - 96, 100, 52, 848, 848, 848, 848, 7, -265, -265, - -265, -265, -265, 848, 86, 848, 646, 848, -265, 1575, - -265, -265, -265, -265, -265, -265, -265, -265, 56, 848, - -265, 1575, 1575, 1575, 848, 1575, 54, 848, 1575, 848, - 54, 1575, 848, 54, 848, -265, -265, 58, 848, -265, - 848, -265, 118, -265, 1575, 67, -265, -265, 1043, 138, - -265, -35, 848, -28, 117, -265, -265, 1472, -265, 67, - -265, -265, 66, -56, 1076, 1109, 1142, 1175, 1505, -265, - 69, -265, 146, -56, -56, 1538, 1575, -5, -265, 388, - 1575, 848, 1340, -265, 1439, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 848, 848, 848, 848, 848, 848, - 848, 848, 160, 848, 1043, 1538, -38, 848, 87, -13, - 1538, -12, 87, 161, 1575, 1575, 848, -265, -265, 95, - 848, 848, -265, 848, 848, 124, 622, 848, 848, -265, - -265, 848, -265, 167, 848, 848, 848, 848, 848, 848, - 848, 848, 848, 848, 168, -2, -265, -265, 848, -265, - 560, 1575, -265, -265, -265, 848, -265, 16, 16, 16, - 16, 1608, 1608, -56, 1575, 16, 16, 166, 26, 26, - -56, -56, 1575, 1575, -265, -42, -265, 1575, -265, -265, - -265, 1575, 160, -265, -265, 1575, 1575, 1575, 16, 848, - 848, 1575, 16, 160, 1575, -265, 1575, 1208, 1575, 1241, - 1575, 1274, 1575, 1307, 1575, 1575, -265, -265, 848, 1575, - -265, -265, 165, -11, 646, 560, 1575, 560, 97, 172, - -39, 16, 1575, -27, 848, 848, 848, 848, 2, -265, - 149, 848, -265, 28, 174, 176, -265, -265, 97, 97, - 1575, 1575, 1575, 1575, -265, 848, 1575, -16, -265, -265, - -265, 171, 848, -265, -265, 474, -265, -265, 1575, -265, - -265, -265, 21, -265, 1373, 181, 560, 560, -265, 560, - 21, -265, -265, -265, 848, -265, -265, -265, 106, 560, - 179, -265, 646, 646, -265, 1406, 646, -265, 184, 182, - -265, -265, -265, 560, -265, 560, -265, -265, 560, -265, - -265, -265, 183, -265, 188, 646, -265, -265, -265, -265, - -265, 187, 646, -265, -265 -}; - -/* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = + /* YYDEFGOTO[NTERM-NUM]. */ +static const short yydefgoto[] = { - -265, -265, 99, -265, -54, 19, -265, -210, -265, -94, - -265, -265, -265, -264, -167, -104, -86, -265, -265, 127, - -4, 61, -265, -265, -265, -265, -265, 200, -19, -265, - -265, -265, -265, -265, -265, -182, -265, -138, -265, -40, - 3 + -1, 47, 48, 49, 50, 254, 52, 293, 294, 316, + 53, 54, 55, 295, 150, 199, 195, 56, 57, 58, + 59, 60, 61, 85, 118, 110, 62, 93, 94, 63, + 82, 64, 163, 175, 65, 220, 321, 279, 66, 156, + 75 }; -/* 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, 232, 133, 72, 73, 75, 127, 128, 78, 75, - 81, 75, 110, 243, 99, 100, 80, 94, 83, 51, - 98, 173, 299, 142, 67, 280, 107, 94, 177, 113, - 114, 115, 116, 117, 118, 264, 174, 158, 77, 123, - 124, 125, 126, 178, 162, 281, 150, 151, 324, 130, - 270, 132, 85, 134, 101, 102, 324, 268, 321, 299, - 288, 273, 298, 226, 269, 154, 299, 269, 157, 103, - 155, 86, 289, 126, 97, 155, 167, 156, 160, 269, - 126, 322, 159, 310, 164, 104, 165, 311, 228, 229, - 182, 313, 141, 157, 198, 142, 262, 263, 176, 257, - 197, 198, 141, 294, 258, 142, 129, 105, 198, 145, - 146, 147, 148, 149, 90, 106, 92, 265, 150, 151, - 267, 111, 148, 149, 14, 233, 119, 201, 150, 151, - 121, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 51, 126, - 306, 307, 122, 227, 332, 333, 153, 131, 336, 337, - 157, 283, 231, 284, 163, 166, 235, 236, 172, 237, - 238, 179, 183, 241, 242, 194, 195, 244, 297, 355, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 224, 230, 309, 198, 259, 239, 312, 245, 256, 279, - 305, 266, 287, 285, 318, 295, 304, 320, 303, 299, - 282, 327, 338, 340, 349, 330, 350, 358, 278, 334, - 316, 317, 359, 319, 362, 339, 331, 341, 199, 175, - 234, 109, 329, 0, 0, 271, 272, 0, 351, 352, - 353, 354, 141, 356, 357, 142, 343, 345, 0, 0, - 0, 348, 0, 0, 126, 0, 361, 0, 0, 364, - 146, 147, 148, 149, 0, 0, 0, 0, 150, 151, - 290, 291, 292, 293, 0, 0, 0, 296, 342, 344, - 0, 0, 347, 0, 0, 0, 0, 0, 0, 0, - 0, 308, 0, 0, 0, 0, 0, 0, 314, 0, - 0, 360, -5, 1, 0, 0, 0, 0, 363, 0, - 0, 0, 0, 0, 2, 0, 0, 3, 4, 5, - 335, 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, 0, - 0, 0, 0, 24, 25, 26, 0, 0, 0, 27, - 0, 0, 0, 28, 29, 30, 31, 0, 32, 0, + /* 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[] = +{ + 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, + 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, + 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, + 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, + 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, + 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, + 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, + 13, 0, 14, 15, 16, 0, 17, 307, 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, 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, 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, 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, 0, 45, 3, - 4, 5, 46, 6, 7, 8, 9, 10, 0, 11, - 12, 13, 0, 14, 15, 16, 0, 17, 315, 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, 260, 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, 260, - 45, 3, 4, 5, 46, 6, 7, 8, 9, 10, - 0, 11, 12, 13, 0, 14, 15, 16, 240, 17, - 0, 18, 0, 0, 0, 19, 0, 20, 21, 135, - 136, 0, 0, 137, 138, 139, 140, 24, 141, 26, - 0, 142, 143, 144, 0, 0, 0, 0, 0, 30, - 31, 0, 32, 0, 0, 145, 146, 147, 148, 149, - 0, 33, 0, 0, 150, 151, 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, 88, 0, 0, - 0, 0, 89, 0, 90, 91, 92, 93, 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, 88, 0, 34, - 35, 36, 37, 38, 90, 0, 92, 0, 69, 70, - 26, 43, 44, 0, 0, 0, 0, 45, 0, 0, - 0, 46, 108, 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, 0, 0, 0, 0, - 34, 35, 36, 37, 38, 0, 0, 0, 0, 0, - 70, 2, 43, 44, 3, 4, 5, 0, 74, 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, 79, - 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 169, 0, 0, - 0, 34, 35, 36, 37, 38, 0, 0, 0, 0, - 0, 70, 0, 43, 44, 0, 0, 0, 0, 82, - 135, 136, 0, 46, 137, 138, 139, 140, 0, 141, - 170, 171, 142, 143, 144, 184, 0, 0, 0, 0, - 0, 0, 185, 0, 0, 0, 145, 146, 147, 148, - 149, 0, 0, 135, 136, 150, 151, 137, 138, 139, - 140, 0, 141, 0, 0, 142, 143, 144, 186, 0, - 0, 0, 0, 0, 0, 187, 0, 0, 0, 145, - 146, 147, 148, 149, 0, 0, 135, 136, 150, 151, - 137, 138, 139, 140, 0, 141, 0, 0, 142, 143, - 144, 188, 0, 0, 0, 0, 0, 0, 189, 0, - 0, 0, 145, 146, 147, 148, 149, 0, 0, 135, - 136, 150, 151, 137, 138, 139, 140, 0, 141, 0, - 0, 142, 143, 144, 190, 0, 0, 0, 0, 0, - 0, 191, 0, 0, 0, 145, 146, 147, 148, 149, - 0, 0, 135, 136, 150, 151, 137, 138, 139, 140, - 0, 141, 0, 0, 142, 143, 144, 274, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 145, 146, - 147, 148, 149, 0, 0, 135, 136, 150, 151, 137, - 138, 139, 140, 0, 141, 0, 0, 142, 143, 144, - 275, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 145, 146, 147, 148, 149, 0, 0, 135, 136, - 150, 151, 137, 138, 139, 140, 0, 141, 0, 0, - 142, 143, 144, 276, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 145, 146, 147, 148, 149, 0, - 0, 135, 136, 150, 151, 137, 138, 139, 140, 0, - 141, 0, 0, 142, 143, 144, 277, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 145, 146, 147, - 148, 149, 0, 0, 135, 136, 150, 151, 137, 138, - 139, 140, 0, 141, 0, 0, 142, 143, 144, 0, - 0, 0, 0, 0, 202, 203, 0, 0, 0, 0, - 145, 146, 147, 148, 149, 0, 0, 135, 136, 150, - 151, 137, 138, 139, 140, 0, 141, 0, 0, 142, - 143, 144, 0, 0, 0, 0, 0, 325, 326, 0, - 0, 0, 0, 145, 146, 147, 148, 149, 0, 0, - 135, 136, 150, 151, 137, 138, 139, 140, 0, 141, - 0, 0, 142, 143, 144, 0, 0, 0, 0, 0, - 346, 0, 0, 0, 0, 0, 145, 146, 147, 148, - 149, 0, 0, 135, 136, 150, 151, 137, 138, 139, - 140, 0, 141, 0, 0, 142, 143, 144, 0, 0, - 0, 0, 0, 0, 0, 205, 0, 0, 0, 145, - 146, 147, 148, 149, 0, 0, 135, 136, 150, 151, - 137, 138, 139, 140, 0, 141, 0, 0, 142, 143, - 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 181, 0, 145, 146, 147, 148, 149, 0, 206, 135, - 136, 150, 151, 137, 138, 139, 140, 0, 141, 0, - 0, 142, 143, 144, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 145, 146, 147, 148, 149, - 0, 0, 135, 136, 150, 151, 137, 138, 139, 140, - 0, 141, 0, 0, 142, 143, 144, 0, 0, 0, - 0, 0, 192, 193, 0, 0, 0, 0, 145, 146, - 147, 148, 149, 0, 0, 135, 136, 150, 151, 137, - 138, 139, 140, 0, 141, 0, 0, 142, 143, 144, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 145, 146, 147, 148, 149, 0, 0, 0, 196, - 150, 151, 135, 136, 0, 0, 137, 138, 139, 140, - 0, 141, 0, 0, 142, 143, 144, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 145, 146, - 147, 148, 149, 0, 0, 135, 136, 150, 151, 137, - 138, 0, 0, 0, 141, 0, 0, 142, 143, 144, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 145, 146, 147, 148, 149, 0, 0, 0, 0, - 150, 151 + 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, + 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, 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, 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 }; -static const yytype_int16 yycheck[] = -{ - 4, 168, 56, 7, 8, 9, 46, 0, 12, 13, - 14, 15, 31, 180, 58, 59, 13, 21, 15, 0, - 24, 56, 38, 79, 99, 36, 30, 31, 56, 33, - 34, 35, 36, 37, 38, 202, 71, 77, 30, 43, - 44, 45, 46, 71, 84, 56, 102, 103, 312, 53, - 232, 55, 52, 57, 15, 16, 320, 99, 37, 38, - 99, 243, 34, 101, 106, 69, 38, 106, 106, 30, - 74, 30, 99, 77, 30, 79, 95, 74, 82, 106, - 84, 60, 79, 99, 88, 30, 90, 297, 101, 101, - 109, 301, 76, 106, 106, 79, 200, 201, 102, 101, - 105, 106, 76, 101, 106, 79, 99, 30, 106, 93, - 94, 95, 96, 97, 47, 30, 49, 203, 102, 103, - 206, 30, 96, 97, 29, 30, 30, 131, 102, 103, - 30, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 129, 153, - 288, 289, 100, 157, 321, 322, 100, 71, 325, 326, - 106, 265, 166, 267, 106, 47, 170, 171, 30, 173, - 174, 54, 106, 177, 178, 106, 30, 181, 282, 346, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 30, 30, 296, 106, 198, 71, 300, 30, 30, 34, - 286, 205, 30, 106, 308, 56, 30, 311, 34, 38, - 264, 30, 106, 34, 30, 319, 34, 34, 258, 323, - 306, 307, 34, 309, 37, 329, 320, 331, 129, 102, - 169, 31, 318, -1, -1, 239, 240, -1, 342, 343, - 344, 345, 76, 347, 348, 79, 332, 333, -1, -1, - -1, 337, -1, -1, 258, -1, 360, -1, -1, 363, - 94, 95, 96, 97, -1, -1, -1, -1, 102, 103, - 274, 275, 276, 277, -1, -1, -1, 281, 332, 333, - -1, -1, 336, -1, -1, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, -1, -1, -1, 302, -1, - -1, 355, 0, 1, -1, -1, -1, -1, 362, -1, - -1, -1, -1, -1, 12, -1, -1, 15, 16, 17, - 324, 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, -1, - -1, -1, -1, 51, 52, 53, -1, -1, -1, 57, - -1, -1, -1, 61, 62, 63, 64, -1, 66, -1, +static const short 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, + 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, + 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, + 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, + -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, + 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, + 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, + 27, -1, 29, 30, 31, -1, 33, 34, 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, -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, 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, -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, -1, 100, 15, - 16, 17, 104, 19, 20, 21, 22, 23, -1, 25, - 26, 27, -1, 29, 30, 31, -1, 33, 34, 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, 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, -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, 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, + 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, + 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, - 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, + 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, 49, -1, - -1, -1, -1, -1, -1, 56, -1, -1, -1, 93, + 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, 49, -1, -1, -1, -1, -1, -1, 56, -1, + 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, 49, -1, -1, -1, -1, -1, - -1, 56, -1, -1, -1, 93, 94, 95, 96, 97, + -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, 49, -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, - 49, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -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, 49, -1, -1, -1, -1, -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, 49, -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, 54, 55, -1, -1, -1, -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, 54, 55, -1, + 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, - 54, -1, -1, -1, -1, -1, 93, 94, 95, 96, + -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, 56, -1, -1, -1, 93, + -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, - 58, -1, 93, 94, 95, 96, 97, -1, 99, 67, + -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, 87, 88, -1, -1, -1, -1, 93, 94, + -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, -1, 101, - 102, 103, 67, 68, -1, -1, 71, 72, 73, 74, + -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, -1, -1, 76, -1, -1, 79, 80, 81, + 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, -1, - 102, 103 + -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, -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 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const unsigned char yystos[] = { 0, 1, 12, 15, 16, 17, 19, 20, 21, 22, 23, 25, 26, 27, 29, 30, 31, 33, 35, 39, @@ -1288,291 +1167,736 @@ static const yytype_uint8 yystos[] = 90, 91, 92, 94, 95, 100, 104, 108, 109, 110, 111, 112, 113, 117, 118, 119, 124, 125, 126, 127, 128, 129, 133, 136, 138, 141, 145, 99, 30, 51, - 92, 127, 127, 127, 100, 127, 147, 30, 127, 100, - 147, 127, 100, 147, 137, 52, 30, 130, 40, 45, - 47, 48, 49, 50, 127, 134, 135, 30, 127, 58, - 59, 15, 16, 30, 30, 30, 30, 127, 65, 134, - 135, 30, 132, 127, 127, 127, 127, 127, 127, 30, - 131, 30, 100, 127, 127, 127, 127, 146, 0, 99, - 127, 71, 127, 111, 127, 67, 68, 71, 72, 73, - 74, 76, 79, 80, 81, 93, 94, 95, 96, 97, - 102, 103, 121, 100, 127, 127, 147, 106, 146, 147, - 127, 146, 146, 106, 127, 127, 47, 135, 139, 44, - 77, 78, 30, 56, 71, 126, 127, 56, 71, 54, - 140, 58, 135, 106, 49, 56, 49, 56, 49, 56, - 49, 56, 87, 88, 106, 30, 101, 105, 106, 109, - 123, 127, 54, 55, 122, 56, 99, 127, 127, 127, + 92, 127, 127, 127, 127, 147, 30, 127, 147, 127, + 100, 147, 137, 52, 30, 130, 40, 45, 47, 48, + 49, 50, 127, 134, 135, 30, 127, 58, 59, 15, + 16, 30, 30, 30, 30, 127, 65, 134, 135, 30, + 132, 127, 127, 127, 127, 127, 127, 30, 131, 30, + 100, 127, 127, 127, 127, 146, 0, 99, 127, 71, + 127, 111, 127, 67, 68, 71, 72, 73, 74, 76, + 79, 80, 81, 93, 94, 95, 96, 97, 102, 103, + 121, 100, 127, 106, 146, 127, 146, 146, 106, 127, + 127, 47, 135, 139, 44, 77, 78, 30, 56, 71, + 126, 127, 56, 71, 54, 140, 58, 135, 106, 49, + 56, 49, 56, 49, 56, 49, 56, 87, 88, 106, + 30, 101, 105, 106, 109, 123, 127, 54, 55, 122, + 56, 99, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 30, + 142, 127, 101, 30, 127, 121, 30, 128, 127, 127, + 127, 127, 71, 56, 127, 127, 121, 127, 30, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 30, + 101, 106, 127, 99, 112, 122, 122, 121, 123, 127, + 123, 99, 106, 142, 127, 127, 142, 49, 49, 49, + 49, 146, 34, 36, 56, 111, 122, 122, 106, 144, + 30, 99, 99, 127, 127, 127, 127, 101, 56, 127, + 122, 34, 38, 114, 115, 120, 34, 30, 123, 144, + 144, 127, 122, 114, 122, 114, 127, 34, 123, 123, + 122, 123, 122, 34, 37, 60, 116, 120, 54, 55, + 30, 143, 123, 122, 116, 121, 121, 122, 127, 121, + 121, 106, 122, 34, 122, 111, 123, 111, 123, 54, + 111, 123, 30, 34, 122, 122, 122, 122, 121, 122, + 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, 127, 127, 127, 30, 142, 101, 127, 101, 101, - 30, 127, 121, 30, 128, 127, 127, 127, 127, 71, - 56, 127, 127, 121, 127, 30, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 30, 101, 106, 127, - 99, 112, 122, 122, 121, 123, 127, 123, 99, 106, - 142, 127, 127, 142, 49, 49, 49, 49, 146, 34, - 36, 56, 111, 122, 122, 106, 144, 30, 99, 99, - 127, 127, 127, 127, 101, 56, 127, 122, 34, 38, - 114, 115, 120, 34, 30, 123, 144, 144, 127, 122, - 99, 114, 122, 114, 127, 34, 123, 123, 122, 123, - 122, 37, 60, 116, 120, 54, 55, 30, 143, 123, - 122, 116, 121, 121, 122, 127, 121, 121, 106, 122, - 34, 122, 111, 123, 111, 123, 54, 111, 123, 30, - 34, 122, 122, 122, 122, 121, 122, 122, 34, 34, - 111, 122, 37, 111, 122 + 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. */ +/* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */ +static const unsigned char yydprec[] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; -#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 +/* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */ +static const unsigned char yymerger[] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; + +/* YYIMMEDIATE[RULE-NUM] -- True iff rule #RULE-NUM is not to be deferred, as + in the case of predicates. */ +static const yybool yyimmediate[] = +{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 +}; +/* 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[] = +{ + 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 +}; -/* YYLEX -- calling `yylex' with the right arguments. */ +/* 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 -#ifdef YYLEX_PARAM -# define YYLEX yylex (YYLEX_PARAM) -#else -# define YYLEX yylex () -#endif -/* Enable debugging if requested. */ + +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 -# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif -# 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; +/* This macro is provided for backward compatibility. */ +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif -{ - 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. | -`--------------------------------*/ +# define YYDPRINTF(Args) \ + do { \ + if (yydebug) \ + YYFPRINTF Args; \ + } while (0) -#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 -{ - 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, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ +/*-----------------------------------. +| Print this symbol's value on YYO. | +`-----------------------------------*/ -#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 +yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) { - YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); - YYFPRINTF (stderr, "\n"); + FILE *yyoutput = yyo; + YYUSE (yyoutput); + if (!yyvaluep) + return; + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } -# 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. | -`------------------------------------------------*/ +/*---------------------------. +| Print this symbol on YYO. | +`---------------------------*/ -#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 +yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) { - 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"); - } + YYFPRINTF (yyo, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + + yy_symbol_value_print (yyo, yytype, yyvaluep); + YYFPRINTF (yyo, ")"); } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, Rule); \ -} 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 (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 */ +#endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1580,39 +1904,40 @@ int yydebug; if the built-in stack extension method is used). Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem) 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 -#if YYERROR_VERBOSE +#ifndef YYSTACKEXPANDABLE +# define YYSTACKEXPANDABLE 1 +#endif -# 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) +#if YYSTACKEXPANDABLE +# define YY_RESERVE_GLRSTACK(Yystack) \ + do { \ + if (Yystack->yyspaceLeft < YYHEADROOM) \ + yyexpandGLRStack (Yystack); \ + } while (0) #else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; +# define YY_RESERVE_GLRSTACK(Yystack) \ + do { \ + if (Yystack->yyspaceLeft < YYHEADROOM) \ + yyMemoryExhausted (Yystack); \ + } while (0) #endif -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif + + +#if YYERROR_VERBOSE # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE @@ -1620,16 +1945,8 @@ yystrlen (yystr) # 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; @@ -1650,1617 +1967,2942 @@ yystpcpy (yydest, 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 YYSIZE_T +static size_t yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYSIZE_T yyn = 0; + size_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; - /* Fall through. */ - 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; + else + goto append; + + append: + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } if (! yyres) - return yystrlen (yystr); + return strlen (yystr); - return yystpcpy (yyres, yystr) - yyres; + return (size_t) (yystpcpy (yyres, yystr) - yyres); } # endif -/* 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]; - - 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 */ - +#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; +}; -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ +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; +}; -/*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); +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; +}; - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); +/** 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; +}; - switch (yytype) - { +struct yyGLRStack { + int yyerrState; - default: - break; - } -} - -/* Prevent warnings from -Wmissing-prototypes. */ + YYJMP_BUF yyexception_buffer; + yyGLRStackItem* yyitems; + yyGLRStackItem* yynextFree; + size_t yyspaceLeft; + yyGLRState* yysplitPoint; + yyGLRState* yylastDeleted; + yyGLRStateSet yytops; +}; -#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 (); +#if YYSTACKEXPANDABLE +static void yyexpandGLRStack (yyGLRStack* yystackp); #endif -#endif /* ! YYPARSE_PARAM */ - - - -/* The look-ahead symbol. */ -int yychar; - -/* The semantic value of the look-ahead symbol. */ -YYSTYPE yylval; - -/* Number of syntax errors so far. */ -int yynerrs; +_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); +} -/*----------. -| yyparse. | -`----------*/ +#if YYDEBUG || YYERROR_VERBOSE +/** A printable representation of TOKEN. */ +static inline const char* +yytokenName (yySymbol yytoken) +{ + if (yytoken == YYEMPTY) + return ""; -#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; + return yytname[yytoken]; +} #endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void) -#else -int -yyparse () -#endif -#endif +/** 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 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) + int i; + yyGLRState *s = yyvsp[yylow0].yystate.yypred; + for (i = yylow0-1; i >= yylow1; i -= 1) { - /* 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; +#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; } +} - 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) +/** If yychar is empty, fetch the next token. */ +static inline yySymbol +yygetToken (int *yycharp) +{ + yySymbol yytoken; + if (*yycharp == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + *yycharp = yylex (); } - - if (yychar <= YYEOF) + if (*yycharp <= YYEOF) { - yychar = yytoken = YYEOF; + *yycharp = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { - yytoken = YYTRANSLATE (yychar); + yytoken = YYTRANSLATE (*yycharp); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } + return yytoken; +} - /* 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; +/* 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; } + return yylow1; +} - 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); +/** 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; switch (yyn) { - case 4: -#line 122 "engines/director/lingo/lingo-gr.y" - { yyerrok; ;} + case 4: +#line 123 "engines/director/lingo/lingo-gr.y" + { yyerrok; } +#line 2239 "engines/director/lingo/lingo-gr.cpp" break; case 8: -#line 130 "engines/director/lingo/lingo-gr.y" +#line 131 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_varpush); - g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str()); + g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)->c_str()); g_lingo->code1(g_lingo->c_assign); - (yyval.code) = (yyvsp[(2) - (4)].code); - delete (yyvsp[(4) - (4)].s); ;} + ((*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" break; case 9: -#line 136 "engines/director/lingo/lingo-gr.y" +#line 137 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_assign); - (yyval.code) = (yyvsp[(2) - (4)].code); ;} + ((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code); } +#line 2258 "engines/director/lingo/lingo-gr.cpp" break; case 10: -#line 139 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;} +#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" break; case 11: -#line 140 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;} +#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" break; case 12: -#line 141 "engines/director/lingo/lingo-gr.y" +#line 142 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_varpush); - g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str()); + g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.s)->c_str()); g_lingo->code1(g_lingo->c_assign); - (yyval.code) = (yyvsp[(4) - (4)].code); - delete (yyvsp[(2) - (4)].s); ;} + ((*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" break; case 13: -#line 147 "engines/director/lingo/lingo-gr.y" +#line 148 "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((yyvsp[(2) - (4)].e)[0]); - g_lingo->codeInt((yyvsp[(2) - (4)].e)[1]); - (yyval.code) = (yyvsp[(4) - (4)].code); ;} + 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" break; case 14: -#line 154 "engines/director/lingo/lingo-gr.y" +#line 155 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_varpush); - g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str()); + g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.s)->c_str()); g_lingo->code1(g_lingo->c_assign); - (yyval.code) = (yyvsp[(4) - (4)].code); - delete (yyvsp[(2) - (4)].s); ;} + ((*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" break; case 15: -#line 160 "engines/director/lingo/lingo-gr.y" +#line 161 "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((yyvsp[(2) - (4)].e)[0]); - g_lingo->codeInt((yyvsp[(2) - (4)].e)[1]); - (yyval.code) = (yyvsp[(4) - (4)].code); ;} + 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" break; case 16: -#line 167 "engines/director/lingo/lingo-gr.y" +#line 168 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_swap); g_lingo->code1(g_lingo->c_theentityassign); - g_lingo->codeInt((yyvsp[(2) - (5)].e)[0]); - g_lingo->codeInt((yyvsp[(2) - (5)].e)[1]); - (yyval.code) = (yyvsp[(5) - (5)].code); ;} + 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" break; case 17: -#line 173 "engines/director/lingo/lingo-gr.y" +#line 174 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_swap); g_lingo->code1(g_lingo->c_theentityassign); - g_lingo->codeInt((yyvsp[(2) - (5)].e)[0]); - g_lingo->codeInt((yyvsp[(2) - (5)].e)[1]); - (yyval.code) = (yyvsp[(5) - (5)].code); ;} + 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" break; case 23: -#line 192 "engines/director/lingo/lingo-gr.y" +#line 193 "engines/director/lingo/lingo-gr.y" { inst body = 0, end = 0; - 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 */ + 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 */ - checkEnd((yyvsp[(5) - (5)].s), "repeat", true); ;} + checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "repeat", true); } +#line 2351 "engines/director/lingo/lingo-gr.cpp" break; case 24: -#line 205 "engines/director/lingo/lingo-gr.y" +#line 206 "engines/director/lingo/lingo-gr.y" { inst init = 0, finish = 0, body = 0, end = 0, inc = 0; - WRITE_UINT32(&init, (yyvsp[(3) - (10)].code) - (yyvsp[(1) - (10)].code)); - 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(&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(&inc, 1); - (*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 */ + (*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 */ - checkEnd((yyvsp[(10) - (10)].s), "repeat", true); ;} + checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "repeat", true); } +#line 2370 "engines/director/lingo/lingo-gr.cpp" break; case 25: -#line 223 "engines/director/lingo/lingo-gr.y" +#line 224 "engines/director/lingo/lingo-gr.y" { inst init = 0, finish = 0, body = 0, end = 0, inc = 0; - WRITE_UINT32(&init, (yyvsp[(3) - (11)].code) - (yyvsp[(1) - (11)].code)); - 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(&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(&inc, (uint32)-1); - (*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 */ + (*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 */ - checkEnd((yyvsp[(11) - (11)].s), "repeat", true); ;} + checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "repeat", true); } +#line 2389 "engines/director/lingo/lingo-gr.cpp" break; case 26: -#line 237 "engines/director/lingo/lingo-gr.y" +#line 238 "engines/director/lingo/lingo-gr.y" { inst end = 0; - WRITE_UINT32(&end, (yyvsp[(3) - (3)].code) - (yyvsp[(1) - (3)].code)); + WRITE_UINT32(&end, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code)); g_lingo->code1(STOP); - (*g_lingo->_currentScript)[(yyvsp[(1) - (3)].code) + 1] = end; ;} + (*g_lingo->_currentScript)[(((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code) + 1] = end; } +#line 2399 "engines/director/lingo/lingo-gr.cpp" break; case 27: -#line 242 "engines/director/lingo/lingo-gr.y" +#line 243 "engines/director/lingo/lingo-gr.y" { warning("STUB: TELL is not implemented"); - checkEnd((yyvsp[(6) - (6)].s), "tell", true); ;} + checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "tell", true); } +#line 2407 "engines/director/lingo/lingo-gr.cpp" break; case 28: -#line 245 "engines/director/lingo/lingo-gr.y" +#line 246 "engines/director/lingo/lingo-gr.y" { warning("STUB: TELL is not implemented"); - ;} + } +#line 2415 "engines/director/lingo/lingo-gr.cpp" break; case 29: -#line 250 "engines/director/lingo/lingo-gr.y" +#line 251 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; - WRITE_UINT32(&then, (yyvsp[(4) - (7)].code) - (yyvsp[(1) - (7)].code)); - WRITE_UINT32(&else1, 0); - WRITE_UINT32(&end, (yyvsp[(6) - (7)].code) - (yyvsp[(1) - (7)].code)); - (*g_lingo->_currentScript)[(yyvsp[(1) - (7)].code) + 1] = then; /* thenpart */ - (*g_lingo->_currentScript)[(yyvsp[(1) - (7)].code) + 2] = else1; /* elsepart */ - (*g_lingo->_currentScript)[(yyvsp[(1) - (7)].code) + 3] = end; /* end, if cond fails */ + 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 */ - g_lingo->processIf(0, 0); ;} + 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" break; case 30: -#line 260 "engines/director/lingo/lingo-gr.y" +#line 261 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; - 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 */ + WRITE_UINT32(&then, (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code) - (((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.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 */ - g_lingo->processIf(0, (yyvsp[(10) - (10)].code) - (yyvsp[(1) - (10)].code)); ;} + g_lingo->processIf(0, 0); } +#line 2445 "engines/director/lingo/lingo-gr.cpp" break; case 31: -#line 270 "engines/director/lingo/lingo-gr.y" +#line 271 "engines/director/lingo/lingo-gr.y" { - inst then = 0, end = 0; - 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((yyvsp[(6) - (6)].s), "if", true); + 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 */ - g_lingo->processIf(0, 0); ;} + g_lingo->processIf(0, 0); } +#line 2460 "engines/director/lingo/lingo-gr.cpp" break; case 32: -#line 280 "engines/director/lingo/lingo-gr.y" +#line 281 "engines/director/lingo/lingo-gr.y" { - inst then = 0, else1 = 0, end = 0; - 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 */ + 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 */ - g_lingo->processIf(0, 0); ;} + checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "if", true); + + g_lingo->processIf(0, 0); } +#line 2475 "engines/director/lingo/lingo-gr.cpp" break; case 35: -#line 296 "engines/director/lingo/lingo-gr.y" +#line 297 "engines/director/lingo/lingo-gr.y" { inst then = 0; - WRITE_UINT32(&then, (yyvsp[(4) - (6)].code) - (yyvsp[(1) - (6)].code)); - (*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 1] = then; /* thenpart */ + 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 */ - g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;} + g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code)); } +#line 2486 "engines/director/lingo/lingo-gr.cpp" break; case 36: -#line 302 "engines/director/lingo/lingo-gr.y" - { - inst then = 0; - WRITE_UINT32(&then, (yyvsp[(5) - (6)].code) - (yyvsp[(1) - (6)].code)); - (*g_lingo->_currentScript)[(yyvsp[(1) - (6)].code) + 1] = then; /* thenpart */ - - g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;} - break; - - case 37: -#line 310 "engines/director/lingo/lingo-gr.y" +#line 303 "engines/director/lingo/lingo-gr.y" { inst then = 0; - WRITE_UINT32(&then, (yyvsp[(4) - (9)].code) - (yyvsp[(1) - (9)].code)); - (*g_lingo->_currentScript)[(yyvsp[(1) - (9)].code) + 1] = then; /* thenpart */ + 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 */ - g_lingo->codeLabel((yyvsp[(1) - (9)].code)); ;} + g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-5)].yystate.yysemantics.yysval.code)); } +#line 2497 "engines/director/lingo/lingo-gr.cpp" break; case 38: -#line 316 "engines/director/lingo/lingo-gr.y" +#line 312 "engines/director/lingo/lingo-gr.y" { - g_lingo->codeLabel((yyvsp[(2) - (5)].code)); + 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 */ - checkEnd((yyvsp[(5) - (5)].s), "if", true); ;} + g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-8)].yystate.yysemantics.yysval.code)); } +#line 2508 "engines/director/lingo/lingo-gr.cpp" break; case 39: -#line 320 "engines/director/lingo/lingo-gr.y" +#line 318 "engines/director/lingo/lingo-gr.y" { - g_lingo->codeLabel((yyvsp[(2) - (4)].code)); ;} + g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.code)); + + checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "if", true); } +#line 2517 "engines/director/lingo/lingo-gr.cpp" break; case 40: -#line 323 "engines/director/lingo/lingo-gr.y" +#line 322 "engines/director/lingo/lingo-gr.y" { - g_lingo->codeLabel((yyvsp[(2) - (5)].code)); - - checkEnd((yyvsp[(5) - (5)].s), "if", true); ;} + g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.code)); } +#line 2524 "engines/director/lingo/lingo-gr.cpp" break; case 41: -#line 327 "engines/director/lingo/lingo-gr.y" +#line 325 "engines/director/lingo/lingo-gr.y" { - g_lingo->codeLabel((yyvsp[(2) - (4)].code)); ;} + g_lingo->codeLabel((((yyGLRStackItem const *)yyvsp)[YYFILL (-3)].yystate.yysemantics.yysval.code)); + + checkEnd((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s), "if", true); } +#line 2533 "engines/director/lingo/lingo-gr.cpp" break; case 42: -#line 331 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;} +#line 329 "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" break; case 43: -#line 334 "engines/director/lingo/lingo-gr.y" - { - (yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP); - g_lingo->code3(STOP, STOP, STOP); - g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); - delete (yyvsp[(3) - (3)].s); ;} +#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" break; case 44: -#line 341 "engines/director/lingo/lingo-gr.y" +#line 336 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->code1(g_lingo->c_ifcode); + ((*yyvalp).code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP); g_lingo->code3(STOP, STOP, STOP); - g_lingo->code1(0); // Do not skip end - g_lingo->codeLabel(0); ;} + 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" break; case 45: -#line 348 "engines/director/lingo/lingo-gr.y" +#line 343 "engines/director/lingo/lingo-gr.y" { - inst skipEnd; - WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions - (yyval.code) = g_lingo->code1(g_lingo->c_ifcode); + ((*yyvalp).code) = g_lingo->code1(g_lingo->c_ifcode); g_lingo->code3(STOP, STOP, STOP); - g_lingo->code1(skipEnd); ;} + g_lingo->code1(0); // Do not skip end + g_lingo->codeLabel(0); } +#line 2566 "engines/director/lingo/lingo-gr.cpp" break; case 46: -#line 356 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = g_lingo->_currentScript->size(); ;} +#line 350 "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); + g_lingo->code3(STOP, STOP, STOP); + g_lingo->code1(skipEnd); } +#line 2577 "engines/director/lingo/lingo-gr.cpp" break; case 47: -#line 359 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;} +#line 358 "engines/director/lingo/lingo-gr.y" + { ((*yyvalp).code) = g_lingo->_currentScript->size(); } +#line 2583 "engines/director/lingo/lingo-gr.cpp" break; case 48: -#line 362 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = g_lingo->_currentScript->size(); ;} +#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" break; - case 51: -#line 367 "engines/director/lingo/lingo-gr.y" - { - (yyval.code) = g_lingo->code1(g_lingo->c_whencode); - g_lingo->code1(STOP); - g_lingo->codeString((yyvsp[(2) - (3)].s)->c_str()); - delete (yyvsp[(2) - (3)].s); ;} + case 49: +#line 364 "engines/director/lingo/lingo-gr.y" + { ((*yyvalp).code) = g_lingo->_currentScript->size(); } +#line 2595 "engines/director/lingo/lingo-gr.cpp" break; case 52: -#line 373 "engines/director/lingo/lingo-gr.y" +#line 369 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->code1(g_lingo->c_tellcode); - g_lingo->code1(STOP); ;} + ((*yyvalp).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" break; case 53: -#line 377 "engines/director/lingo/lingo-gr.y" +#line 375 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->code1(g_lingo->c_intpush); - g_lingo->codeInt((yyvsp[(1) - (1)].i)); ;} + ((*yyvalp).code) = g_lingo->code1(g_lingo->c_tellcode); + g_lingo->code1(STOP); } +#line 2613 "engines/director/lingo/lingo-gr.cpp" break; case 54: -#line 380 "engines/director/lingo/lingo-gr.y" +#line 379 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->code1(g_lingo->c_floatpush); - g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;} + ((*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" break; case 55: -#line 383 "engines/director/lingo/lingo-gr.y" - { // D3 - (yyval.code) = g_lingo->code1(g_lingo->c_symbolpush); - g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;} +#line 382 "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" break; case 56: -#line 386 "engines/director/lingo/lingo-gr.y" - { - (yyval.code) = g_lingo->code1(g_lingo->c_stringpush); - g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;} +#line 385 "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" break; case 57: -#line 389 "engines/director/lingo/lingo-gr.y" +#line 388 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->code1(g_lingo->c_eval); - g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); - delete (yyvsp[(1) - (1)].s); ;} + ((*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" break; case 58: -#line 395 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = (yyvsp[(1) - (1)].code); ;} +#line 391 "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" break; - case 60: + case 59: #line 397 "engines/director/lingo/lingo-gr.y" - { - g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0); - delete (yyvsp[(1) - (1)].s); ;} + { ((*yyvalp).code) = (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.code); } +#line 2660 "engines/director/lingo/lingo-gr.cpp" break; case 61: -#line 400 "engines/director/lingo/lingo-gr.y" +#line 399 "engines/director/lingo/lingo-gr.y" { - g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1); - delete (yyvsp[(1) - (2)].s); ;} + 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" break; case 62: -#line 403 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;} +#line 402 "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" break; case 63: -#line 404 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;} +#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" break; case 64: -#line 405 "engines/director/lingo/lingo-gr.y" +#line 406 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); - delete (yyvsp[(1) - (4)].s); ;} + ((*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" break; case 65: -#line 408 "engines/director/lingo/lingo-gr.y" +#line 409 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->code1(g_lingo->c_intpush); + ((*yyvalp).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, (yyvsp[(1) - (1)].e)[0]); - WRITE_UINT32(&f, (yyvsp[(1) - (1)].e)[1]); - g_lingo->code2(e, f); ;} + 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" break; case 66: -#line 416 "engines/director/lingo/lingo-gr.y" +#line 417 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->code1(g_lingo->c_theentitypush); + ((*yyvalp).code) = g_lingo->code1(g_lingo->c_theentitypush); inst e = 0, f = 0; - WRITE_UINT32(&e, (yyvsp[(1) - (2)].e)[0]); - WRITE_UINT32(&f, (yyvsp[(1) - (2)].e)[1]); - g_lingo->code2(e, f); ;} + 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" break; case 68: -#line 423 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_add); ;} +#line 424 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_add); } +#line 2720 "engines/director/lingo/lingo-gr.cpp" break; case 69: -#line 424 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_sub); ;} +#line 425 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_sub); } +#line 2726 "engines/director/lingo/lingo-gr.cpp" break; case 70: -#line 425 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_mul); ;} +#line 426 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_mul); } +#line 2732 "engines/director/lingo/lingo-gr.cpp" break; case 71: -#line 426 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_div); ;} +#line 427 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_div); } +#line 2738 "engines/director/lingo/lingo-gr.cpp" break; case 72: -#line 427 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_mod); ;} +#line 428 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_mod); } +#line 2744 "engines/director/lingo/lingo-gr.cpp" break; case 73: -#line 428 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_gt); ;} +#line 429 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_gt); } +#line 2750 "engines/director/lingo/lingo-gr.cpp" break; case 74: -#line 429 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_lt); ;} +#line 430 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_lt); } +#line 2756 "engines/director/lingo/lingo-gr.cpp" break; case 75: -#line 430 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_eq); ;} +#line 431 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_eq); } +#line 2762 "engines/director/lingo/lingo-gr.cpp" break; case 76: -#line 431 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_neq); ;} +#line 432 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_neq); } +#line 2768 "engines/director/lingo/lingo-gr.cpp" break; case 77: -#line 432 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_ge); ;} +#line 433 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_ge); } +#line 2774 "engines/director/lingo/lingo-gr.cpp" break; case 78: -#line 433 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_le); ;} +#line 434 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_le); } +#line 2780 "engines/director/lingo/lingo-gr.cpp" break; case 79: -#line 434 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_and); ;} +#line 435 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_and); } +#line 2786 "engines/director/lingo/lingo-gr.cpp" break; case 80: -#line 435 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_or); ;} +#line 436 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_or); } +#line 2792 "engines/director/lingo/lingo-gr.cpp" break; case 81: -#line 436 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_not); ;} +#line 437 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_not); } +#line 2798 "engines/director/lingo/lingo-gr.cpp" break; case 82: -#line 437 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_ampersand); ;} +#line 438 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_ampersand); } +#line 2804 "engines/director/lingo/lingo-gr.cpp" break; case 83: -#line 438 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_concat); ;} +#line 439 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_concat); } +#line 2810 "engines/director/lingo/lingo-gr.cpp" break; case 84: -#line 439 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_contains); ;} +#line 440 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_contains); } +#line 2816 "engines/director/lingo/lingo-gr.cpp" break; case 85: -#line 440 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_starts); ;} +#line 441 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_starts); } +#line 2822 "engines/director/lingo/lingo-gr.cpp" break; case 86: -#line 441 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = (yyvsp[(2) - (2)].code); ;} +#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" break; case 87: -#line 442 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;} +#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" break; case 88: -#line 443 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = (yyvsp[(2) - (3)].code); ;} +#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" break; case 89: -#line 444 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = g_lingo->code1(g_lingo->c_arraypush); g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;} +#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" break; case 90: -#line 445 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_intersects); ;} +#line 446 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_intersects); } +#line 2852 "engines/director/lingo/lingo-gr.cpp" break; case 91: -#line 446 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_within); ;} +#line 447 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_within); } +#line 2858 "engines/director/lingo/lingo-gr.cpp" break; case 92: -#line 447 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_charOf); ;} +#line 448 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_charOf); } +#line 2864 "engines/director/lingo/lingo-gr.cpp" break; case 93: -#line 448 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_charToOf); ;} +#line 449 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_charToOf); } +#line 2870 "engines/director/lingo/lingo-gr.cpp" break; case 94: -#line 449 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_itemOf); ;} +#line 450 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_itemOf); } +#line 2876 "engines/director/lingo/lingo-gr.cpp" break; case 95: -#line 450 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_itemToOf); ;} +#line 451 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_itemToOf); } +#line 2882 "engines/director/lingo/lingo-gr.cpp" break; case 96: -#line 451 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_lineOf); ;} +#line 452 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_lineOf); } +#line 2888 "engines/director/lingo/lingo-gr.cpp" break; case 97: -#line 452 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_lineToOf); ;} +#line 453 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_lineToOf); } +#line 2894 "engines/director/lingo/lingo-gr.cpp" break; case 98: -#line 453 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_wordOf); ;} +#line 454 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_wordOf); } +#line 2900 "engines/director/lingo/lingo-gr.cpp" break; case 99: -#line 454 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_wordToOf); ;} +#line 455 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_wordToOf); } +#line 2906 "engines/director/lingo/lingo-gr.cpp" break; case 100: -#line 455 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeMe(nullptr, 0); ;} +#line 456 "engines/director/lingo/lingo-gr.y" + { g_lingo->codeMe(nullptr, 0); } +#line 2912 "engines/director/lingo/lingo-gr.cpp" break; case 101: -#line 458 "engines/director/lingo/lingo-gr.y" +#line 459 "engines/director/lingo/lingo-gr.y" { - g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1); - delete (yyvsp[(1) - (2)].s); ;} + 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" break; case 102: -#line 463 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_printtop); ;} +#line 464 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_printtop); } +#line 2926 "engines/director/lingo/lingo-gr.cpp" break; case 105: -#line 466 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_exitRepeat); ;} +#line 467 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_exitRepeat); } +#line 2932 "engines/director/lingo/lingo-gr.cpp" break; case 106: -#line 467 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_procret); ;} +#line 468 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_procret); } +#line 2938 "engines/director/lingo/lingo-gr.cpp" break; case 110: -#line 471 "engines/director/lingo/lingo-gr.y" +#line 472 "engines/director/lingo/lingo-gr.y" { - g_lingo->codeFunc((yyvsp[(1) - (1)].s), 0); - delete (yyvsp[(1) - (1)].s); ;} + 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" break; case 111: -#line 474 "engines/director/lingo/lingo-gr.y" +#line 475 "engines/director/lingo/lingo-gr.y" { - g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1); - delete (yyvsp[(1) - (2)].s); ;} + 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" break; case 112: -#line 477 "engines/director/lingo/lingo-gr.y" +#line 478 "engines/director/lingo/lingo-gr.y" { - g_lingo->codeFunc((yyvsp[(1) - (2)].s), 1); - delete (yyvsp[(1) - (2)].s); ;} + 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" break; case 113: -#line 480 "engines/director/lingo/lingo-gr.y" +#line 481 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_voidpush); - g_lingo->codeFunc((yyvsp[(1) - (1)].s), 1); - delete (yyvsp[(1) - (1)].s); ;} + 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" break; case 114: -#line 484 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;} - break; - - case 115: #line 485 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); ;} + { 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" break; - case 116: + case 115: #line 486 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;} + { g_lingo->codeMe((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s), 0); } +#line 2983 "engines/director/lingo/lingo-gr.cpp" break; - case 117: + case 116: #line 487 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;} + { 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" break; - case 118: + case 117: #line 488 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_open); ;} + { g_lingo->code1(g_lingo->c_open); } +#line 2995 "engines/director/lingo/lingo-gr.cpp" break; - case 119: + case 118: #line 489 "engines/director/lingo/lingo-gr.y" - { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;} + { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); } +#line 3001 "engines/director/lingo/lingo-gr.cpp" break; - case 120: + case 119: #line 490 "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)); ;} + { 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" break; - case 121: + case 120: #line 493 "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); ;} + { 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" break; - case 122: + case 121: #line 494 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} + { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((((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" break; - case 123: + case 122: #line 497 "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); ;} + { 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" break; - case 124: + case 123: #line 498 "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); ;} + { 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" break; - case 125: + case 124: #line 501 "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); ;} + { 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" break; - case 126: + case 125: #line 502 "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); ;} + { 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" break; - case 127: + case 126: #line 513 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_gotoloop); ;} + { g_lingo->code1(g_lingo->c_gotoloop); } +#line 3049 "engines/director/lingo/lingo-gr.cpp" break; - case 128: + case 127: #line 514 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_gotonext); ;} + { g_lingo->code1(g_lingo->c_gotonext); } +#line 3055 "engines/director/lingo/lingo-gr.cpp" break; - case 129: + case 128: #line 515 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_gotoprevious); ;} + { g_lingo->code1(g_lingo->c_gotoprevious); } +#line 3061 "engines/director/lingo/lingo-gr.cpp" break; - case 130: + case 129: #line 516 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_intpush); g_lingo->codeInt(1); - g_lingo->code1(g_lingo->c_goto); ;} + g_lingo->code1(g_lingo->c_goto); } +#line 3070 "engines/director/lingo/lingo-gr.cpp" break; - case 131: + case 130: #line 520 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_intpush); g_lingo->codeInt(3); - g_lingo->code1(g_lingo->c_goto); ;} + g_lingo->code1(g_lingo->c_goto); } +#line 3079 "engines/director/lingo/lingo-gr.cpp" break; - case 132: + case 131: #line 524 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_intpush); g_lingo->codeInt(2); - g_lingo->code1(g_lingo->c_goto); ;} + g_lingo->code1(g_lingo->c_goto); } +#line 3088 "engines/director/lingo/lingo-gr.cpp" break; - case 137: + case 136: #line 538 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_playdone); ;} + { g_lingo->code1(g_lingo->c_playdone); } +#line 3094 "engines/director/lingo/lingo-gr.cpp" break; - case 138: + case 137: #line 539 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_intpush); g_lingo->codeInt(1); - g_lingo->code1(g_lingo->c_play); ;} + g_lingo->code1(g_lingo->c_play); } +#line 3103 "engines/director/lingo/lingo-gr.cpp" break; - case 139: + case 138: #line 543 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_intpush); g_lingo->codeInt(3); - g_lingo->code1(g_lingo->c_play); ;} + g_lingo->code1(g_lingo->c_play); } +#line 3112 "engines/director/lingo/lingo-gr.cpp" break; - case 140: + case 139: #line 547 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_intpush); g_lingo->codeInt(2); - g_lingo->code1(g_lingo->c_play); ;} + g_lingo->code1(g_lingo->c_play); } +#line 3121 "engines/director/lingo/lingo-gr.cpp" break; - case 141: + case 140: #line 551 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeSetImmediate(true); ;} + { g_lingo->codeSetImmediate(true); } +#line 3127 "engines/director/lingo/lingo-gr.cpp" break; - case 142: + case 141: #line 551 "engines/director/lingo/lingo-gr.y" { g_lingo->codeSetImmediate(false); - g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;} + 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" break; - case 143: + case 142: #line 581 "engines/director/lingo/lingo-gr.y" - { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;} + { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); } +#line 3141 "engines/director/lingo/lingo-gr.cpp" break; - case 144: + case 143: #line 582 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_procret); - g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg)); - g_lingo->_indef = false; ;} + 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" break; - case 145: + case 144: #line 586 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;} + { g_lingo->codeFactory(*(((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)); } +#line 3156 "engines/director/lingo/lingo-gr.cpp" break; - case 146: + case 145: #line 587 "engines/director/lingo/lingo-gr.y" - { g_lingo->_indef = true; ;} + { g_lingo->_indef = true; } +#line 3162 "engines/director/lingo/lingo-gr.cpp" break; - case 147: + case 146: #line 588 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_procret); - g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory); - g_lingo->_indef = false; ;} + 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" break; - case 148: + case 147: #line 592 "engines/director/lingo/lingo-gr.y" { // D3 g_lingo->code1(g_lingo->c_procret); - g_lingo->define(*(yyvsp[(1) - (8)].s), (yyvsp[(2) - (8)].code), (yyvsp[(3) - (8)].narg)); + 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->_indef = false; g_lingo->_ignoreMe = false; - checkEnd((yyvsp[(7) - (8)].s), (yyvsp[(1) - (8)].s)->c_str(), 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" break; - case 149: + case 148: #line 599 "engines/director/lingo/lingo-gr.y" { // D4. No 'end' clause g_lingo->code1(g_lingo->c_procret); - g_lingo->define(*(yyvsp[(1) - (6)].s), (yyvsp[(2) - (6)].code), (yyvsp[(3) - (6)].narg)); + 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->_indef = false; - g_lingo->_ignoreMe = false; ;} + g_lingo->_ignoreMe = false; } +#line 3193 "engines/director/lingo/lingo-gr.cpp" break; - case 150: + case 149: #line 605 "engines/director/lingo/lingo-gr.y" - { (yyval.s) = (yyvsp[(2) - (2)].s); g_lingo->_indef = true; g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; ;} + { ((*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" break; - case 151: + case 150: #line 607 "engines/director/lingo/lingo-gr.y" - { (yyval.narg) = 0; ;} + { ((*yyvalp).narg) = 0; } +#line 3205 "engines/director/lingo/lingo-gr.cpp" break; - case 152: + case 151: #line 608 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;} + { g_lingo->codeArg((((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.s)); ((*yyvalp).narg) = 1; } +#line 3211 "engines/director/lingo/lingo-gr.cpp" break; - case 153: + case 152: #line 609 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} + { 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" break; - case 154: + case 153: #line 610 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;} + { 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" break; - case 158: + case 157: #line 618 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeArgStore(); ;} + { g_lingo->codeArgStore(); } +#line 3229 "engines/director/lingo/lingo-gr.cpp" break; - case 159: + case 158: #line 622 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_call); - g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str()); + g_lingo->codeString((((yyGLRStackItem const *)yyvsp)[YYFILL (-1)].yystate.yysemantics.yysval.s)->c_str()); inst numpar = 0; - WRITE_UINT32(&numpar, (yyvsp[(2) - (2)].narg)); - g_lingo->code1(numpar); ;} + WRITE_UINT32(&numpar, (((yyGLRStackItem const *)yyvsp)[YYFILL (0)].yystate.yysemantics.yysval.narg)); + g_lingo->code1(numpar); } +#line 3240 "engines/director/lingo/lingo-gr.cpp" break; - case 160: + case 159: #line 630 "engines/director/lingo/lingo-gr.y" - { (yyval.narg) = 0; ;} + { ((*yyvalp).narg) = 0; } +#line 3246 "engines/director/lingo/lingo-gr.cpp" break; - case 161: + case 160: #line 631 "engines/director/lingo/lingo-gr.y" - { (yyval.narg) = 1; ;} + { ((*yyvalp).narg) = 1; } +#line 3252 "engines/director/lingo/lingo-gr.cpp" break; - case 162: + case 161: #line 632 "engines/director/lingo/lingo-gr.y" - { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} + { ((*yyvalp).narg) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.narg) + 1; } +#line 3258 "engines/director/lingo/lingo-gr.cpp" break; - case 163: + case 162: #line 635 "engines/director/lingo/lingo-gr.y" - { (yyval.narg) = 1; ;} + { ((*yyvalp).narg) = 1; } +#line 3264 "engines/director/lingo/lingo-gr.cpp" break; - case 164: + case 163: #line 636 "engines/director/lingo/lingo-gr.y" - { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} + { ((*yyvalp).narg) = (((yyGLRStackItem const *)yyvsp)[YYFILL (-2)].yystate.yysemantics.yysval.narg) + 1; } +#line 3270 "engines/director/lingo/lingo-gr.cpp" break; -/* Line 1267 of yacc.c. */ -#line 3051 "engines/director/lingo/lingo-gr.cpp" +#line 3274 "engines/director/lingo/lingo-gr.cpp" + default: break; } - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); + return yyok; +# undef yyerrok +# undef YYABORT +# undef YYACCEPT +# undef YYERROR +# undef YYBACKUP +# undef yyclearin +# undef YYRECOVERING +} - *++yyvsp = yyval; +static void +yyuserMerge (int yyn, YYSTYPE* yy0, YYSTYPE* yy1) +{ + YYUSE (yy0); + YYUSE (yy1); - /* 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. */ + switch (yyn) + { - yyn = yyr1[yyn]; + default: break; + } +} - yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; - if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; + /* Bison grammar-table manipulation. */ + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +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 +} + +/** 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 - yystate = yydefgoto[yyn - YYNTOKENS]; + { +#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 - goto yynewstate; + 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); + } + } +} + +/** Left-hand-side symbol for rule #YYRULE. */ +static inline yySymbol +yylhsNonterm (yyRuleNum yyrule) +{ + return yyr1[yyrule]; +} + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-290))) +/** 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]; +} -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ -yyerrlab: - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) +#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) { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); + *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; + } +} + +/** 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 !YYDEBUG +# define YY_REDUCE_PRINT(Args) #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; - } - } +# 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); + + 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; + 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; +} - if (yyerrstatus == 3) +static size_t +yysplitStack (yyGLRStack* yystackp, size_t yyk) +{ + if (yystackp->yysplitPoint == YY_NULLPTR) { - /* If just tried and failed to reuse look-ahead token after an - error, discard it. */ + 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; +} - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } +/** 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 - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } + { + 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; + } } +} - /* 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; - } - } +/** 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; + } + } - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; + 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; +} - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); +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; +} - if (yyn == YYFINAL) - YYACCEPT; +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; + } +} - *++yyvsp = yylval; +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; + } + } + } + } - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + 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_ + } - yystate = yyn; - goto yynewstate; + { + size_t yysz = yysize + strlen (yyformat); + if (yysz < yysize) + yysize_overflow = yytrue; + yysize = yysz; + } + if (!yysize_overflow) + yymsg = (char *) YYMALLOC (yysize); -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: + 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: yyresult = 0; goto yyreturn; -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: + yybuglab: + YYASSERT (yyfalse); + goto yyabortlab; + + yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: + yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ -#endif + goto yyreturn; + + yyreturn: + if (yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + YYTRANSLATE (yychar), &yylval); -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); + /* 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); } -#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); + + 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); +} -#line 639 "engines/director/lingo/lingo-gr.y" +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) + + +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"); + } + 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"); +} +#endif +#undef yylval +#undef yychar +#undef yynerrs + + + +#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 9930ecdbad..b337474b19 100644 --- a/engines/director/lingo/lingo-gr.h +++ b/engines/director/lingo/lingo-gr.h @@ -1,14 +1,13 @@ -/* A Bison parser, made by GNU Bison 2.3. */ +/* A Bison parser, made by GNU Bison 3.4.2. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* Skeleton interface for Bison GLR parsers in C - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 2002-2015, 2018-2019 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 2, or (at your option) - any later version. + the Free Software Foundation, either version 3 of the License, 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 @@ -16,9 +15,7 @@ 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, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see <http://www.gnu.org/licenses/>. */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -33,203 +30,120 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Tokens. */ +#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. */ #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 - }; + 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 -typedef union YYSTYPE -#line 79 "engines/director/lingo/lingo-gr.y" +union YYSTYPE { +#line 80 "engines/director/lingo/lingo-gr.y" + Common::String *s; int i; double f; @@ -237,14 +151,18 @@ typedef union YYSTYPE int code; int narg; /* number of arguments */ Common::Array<double> *arr; -} -/* 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 + +#line 156 "engines/director/lingo/lingo-gr.hpp" + +}; +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 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 ed537b7845..f5b52688be 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -45,6 +45,7 @@ %debug +%glr-parser %{ #define FORBIDDEN_SYMBOL_ALLOW_ALL @@ -247,7 +248,17 @@ stmt: stmtoneliner } ; -ifstmt: if expr tTHEN begin stmtoneliner end '\n' { +ifstmt: if expr tTHEN begin stmtoneliner end elseifstmtlist end endifstmt end { + inst then = 0, else1 = 0, end = 0; + WRITE_UINT32(&then, $4 - $1); + WRITE_UINT32(&else1, $6 - $1); + WRITE_UINT32(&end, $10 - $1); + (*g_lingo->_currentScript)[$1 + 1] = then; /* thenpart */ + (*g_lingo->_currentScript)[$1 + 2] = else1; /* elsepart */ + (*g_lingo->_currentScript)[$1 + 3] = end; /* end, if cond fails */ + + g_lingo->processIf(0, $10 - $1); } + | if expr tTHEN begin stmtoneliner end { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, $4 - $1); WRITE_UINT32(&else1, 0); @@ -257,16 +268,16 @@ ifstmt: if expr tTHEN begin stmtoneliner end '\n' { (*g_lingo->_currentScript)[$1 + 3] = end; /* end, if cond fails */ g_lingo->processIf(0, 0); } - | if expr tTHEN begin stmtoneliner end elseifstmtlist end endifstmt end { + | if expr tTHENNL stmtlist end elseifstmtlist end endifstmt end { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, $4 - $1); - WRITE_UINT32(&else1, $6 - $1); - WRITE_UINT32(&end, $10 - $1); + WRITE_UINT32(&else1, $7 - $1); + WRITE_UINT32(&end, $9 - $1); (*g_lingo->_currentScript)[$1 + 1] = then; /* thenpart */ (*g_lingo->_currentScript)[$1 + 2] = else1; /* elsepart */ (*g_lingo->_currentScript)[$1 + 3] = end; /* end, if cond fails */ - g_lingo->processIf(0, $10 - $1); } + g_lingo->processIf(0, 0); } | if expr tTHENNL stmtlist end ENDCLAUSE { inst then = 0, end = 0; WRITE_UINT32(&then, $4 - $1); @@ -277,16 +288,6 @@ ifstmt: if expr tTHEN begin stmtoneliner end '\n' { checkEnd($6, "if", true); g_lingo->processIf(0, 0); } - | if expr tTHENNL stmtlist end elseifstmtlist end endifstmt end { - inst then = 0, else1 = 0, end = 0; - WRITE_UINT32(&then, $4 - $1); - WRITE_UINT32(&else1, $7 - $1); - WRITE_UINT32(&end, $9 - $1); - (*g_lingo->_currentScript)[$1 + 1] = then; /* thenpart */ - (*g_lingo->_currentScript)[$1 + 2] = else1; /* elsepart */ - (*g_lingo->_currentScript)[$1 + 3] = end; /* end, if cond fails */ - - g_lingo->processIf(0, 0); } ; elseifstmtlist: /* nothing */ @@ -307,7 +308,8 @@ elseifstmt: elseif expr tTHEN begin stmtoneliner end { g_lingo->codeLabel($1); } ; -endifstmt: elseif expr tTHEN begin stmtoneliner end tELSE stmtoneliner end { +endifstmt: ENDCLAUSE + | elseif expr tTHEN begin stmtoneliner end tELSE stmtoneliner end { inst then = 0; WRITE_UINT32(&then, $4 - $1); (*g_lingo->_currentScript)[$1 + 1] = then; /* thenpart */ @@ -401,7 +403,6 @@ expr: simpleexpr { $$ = $1; } g_lingo->codeFunc($1, 1); delete $1; } | FBLTINARGLIST nonemptyarglist { g_lingo->codeFunc($1, $2); } - | FBLTINARGLIST '(' nonemptyarglist ')' { g_lingo->codeFunc($1, $3); } | ID '(' arglist ')' { $$ = g_lingo->codeFunc($1, $3); delete $1; } @@ -482,7 +483,6 @@ proc: tPUT expr { g_lingo->code1(g_lingo->c_printtop); } g_lingo->codeFunc($1, 1); delete $1; } | BLTINARGLIST nonemptyarglist { g_lingo->codeFunc($1, $2); } - | BLTINARGLIST '(' nonemptyarglist ')' { g_lingo->codeFunc($1, $3); } | tME '(' ID ')' { g_lingo->codeMe($3, 0); } | tME '(' ID ',' arglist ')' { g_lingo->codeMe($3, $5); } | tOPEN expr tWITH expr { g_lingo->code1(g_lingo->c_open); } |