[Scummvm-git-logs] scummvm master -> 4b4b73dff92bbfe86013613006c1231d2c2da7db
sev-
sev at scummvm.org
Sat May 9 23:15:23 UTC 2020
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
9308a1ccc5 DIRECTOR: LINGO: Added support for cast references as 'the' entities
8c6952834b DIRECTOR: LINGO: Added test for 'the' entities as cast number
4b4b73dff9 DIRECTOR: LINGO: Added sanity check to b_updateStage()
Commit: 9308a1ccc54d21d9c4fe0c313d05f53f9a32a232
https://github.com/scummvm/scummvm/commit/9308a1ccc54d21d9c4fe0c313d05f53f9a32a232
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-10T01:15:07+02:00
Commit Message:
DIRECTOR: LINGO: Added support for cast references as 'the' entities
Changed paths:
engines/director/lingo/lingo-gr.cpp
engines/director/lingo/lingo-gr.h
engines/director/lingo/lingo-gr.y
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 1f6a4a20b2..7ba548f3df 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 3.5.4. */
+/* A Bison parser, made by GNU Bison 3.5.91. */
/* Bison implementation for Yacc-like parsers in C
@@ -34,6 +34,10 @@
/* C LALR(1) parser skeleton written by Richard Stallman, by
simplifying the original so-called "semantic" parser. */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
/* 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.
@@ -41,14 +45,11 @@
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 "3.5.4"
+#define YYBISON_VERSION "3.5.91"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -97,7 +98,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
}
-#line 101 "engines/director/lingo/lingo-gr.cpp"
+#line 102 "engines/director/lingo/lingo-gr.cpp"
# ifndef YY_CAST
# ifdef __cplusplus
@@ -120,14 +121,6 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
# endif
# endif
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 1
-#endif
-
/* Use api.header.include to #include this header
instead of duplicating it here. */
#ifndef YY_YY_ENGINES_DIRECTOR_LINGO_LINGO_GR_H_INCLUDED
@@ -140,97 +133,102 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
extern int yydebug;
#endif
-/* Token type. */
+/* Token kinds. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
- UNARY = 258,
- CASTREF = 259,
- VOID = 260,
- VAR = 261,
- POINT = 262,
- RECT = 263,
- ARRAY = 264,
- OBJECT = 265,
- REFERENCE = 266,
- LEXERROR = 267,
- PARRAY = 268,
- INT = 269,
- ARGC = 270,
- ARGCNORET = 271,
- THEENTITY = 272,
- THEENTITYWITHID = 273,
- THEMENUITEMENTITY = 274,
- THEMENUITEMSENTITY = 275,
- FLOAT = 276,
- BLTIN = 277,
- FBLTIN = 278,
- RBLTIN = 279,
- ID = 280,
- STRING = 281,
- HANDLER = 282,
- SYMBOL = 283,
- ENDCLAUSE = 284,
- tPLAYACCEL = 285,
- tMETHOD = 286,
- THEOBJECTFIELD = 287,
- THEOBJECTREF = 288,
- tDOWN = 289,
- tELSE = 290,
- tELSIF = 291,
- tEXIT = 292,
- tGLOBAL = 293,
- tGO = 294,
- tIF = 295,
- tIN = 296,
- tINTO = 297,
- tLOOP = 298,
- tMACRO = 299,
- tMOVIE = 300,
- tNEXT = 301,
- tOF = 302,
- tPREVIOUS = 303,
- tPUT = 304,
- tREPEAT = 305,
- tSET = 306,
- tTHEN = 307,
- tTO = 308,
- tWHEN = 309,
- tWITH = 310,
- tWHILE = 311,
- tNLELSE = 312,
- tFACTORY = 313,
- tOPEN = 314,
- tPLAY = 315,
- tINSTANCE = 316,
- tGE = 317,
- tLE = 318,
- tEQ = 319,
- tNEQ = 320,
- tAND = 321,
- tOR = 322,
- tNOT = 323,
- tMOD = 324,
- tAFTER = 325,
- tBEFORE = 326,
- tCONCAT = 327,
- tCONTAINS = 328,
- tSTARTS = 329,
- tCHAR = 330,
- tITEM = 331,
- tLINE = 332,
- tWORD = 333,
- tSPRITE = 334,
- tINTERSECTS = 335,
- tWITHIN = 336,
- tTELL = 337,
- tPROPERTY = 338,
- tON = 339,
- tENDIF = 340,
- tENDREPEAT = 341,
- tENDTELL = 342
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ UNARY = 258, /* UNARY */
+ CASTREF = 259, /* CASTREF */
+ VOID = 260, /* VOID */
+ VAR = 261, /* VAR */
+ POINT = 262, /* POINT */
+ RECT = 263, /* RECT */
+ ARRAY = 264, /* ARRAY */
+ OBJECT = 265, /* OBJECT */
+ REFERENCE = 266, /* REFERENCE */
+ LEXERROR = 267, /* LEXERROR */
+ PARRAY = 268, /* PARRAY */
+ INT = 269, /* INT */
+ ARGC = 270, /* ARGC */
+ ARGCNORET = 271, /* ARGCNORET */
+ THEENTITY = 272, /* THEENTITY */
+ THEENTITYWITHID = 273, /* THEENTITYWITHID */
+ THEMENUITEMENTITY = 274, /* THEMENUITEMENTITY */
+ THEMENUITEMSENTITY = 275, /* THEMENUITEMSENTITY */
+ FLOAT = 276, /* FLOAT */
+ BLTIN = 277, /* BLTIN */
+ FBLTIN = 278, /* FBLTIN */
+ RBLTIN = 279, /* RBLTIN */
+ ID = 280, /* ID */
+ STRING = 281, /* STRING */
+ HANDLER = 282, /* HANDLER */
+ SYMBOL = 283, /* SYMBOL */
+ ENDCLAUSE = 284, /* ENDCLAUSE */
+ tPLAYACCEL = 285, /* tPLAYACCEL */
+ tMETHOD = 286, /* tMETHOD */
+ THEOBJECTFIELD = 287, /* THEOBJECTFIELD */
+ THEOBJECTREF = 288, /* THEOBJECTREF */
+ tDOWN = 289, /* tDOWN */
+ tELSE = 290, /* tELSE */
+ tELSIF = 291, /* tELSIF */
+ tEXIT = 292, /* tEXIT */
+ tGLOBAL = 293, /* tGLOBAL */
+ tGO = 294, /* tGO */
+ tIF = 295, /* tIF */
+ tIN = 296, /* tIN */
+ tINTO = 297, /* tINTO */
+ tLOOP = 298, /* tLOOP */
+ tMACRO = 299, /* tMACRO */
+ tMOVIE = 300, /* tMOVIE */
+ tNEXT = 301, /* tNEXT */
+ tOF = 302, /* tOF */
+ tPREVIOUS = 303, /* tPREVIOUS */
+ tPUT = 304, /* tPUT */
+ tREPEAT = 305, /* tREPEAT */
+ tSET = 306, /* tSET */
+ tTHEN = 307, /* tTHEN */
+ tTO = 308, /* tTO */
+ tWHEN = 309, /* tWHEN */
+ tWITH = 310, /* tWITH */
+ tWHILE = 311, /* tWHILE */
+ tNLELSE = 312, /* tNLELSE */
+ tFACTORY = 313, /* tFACTORY */
+ tOPEN = 314, /* tOPEN */
+ tPLAY = 315, /* tPLAY */
+ tINSTANCE = 316, /* tINSTANCE */
+ tGE = 317, /* tGE */
+ tLE = 318, /* tLE */
+ tEQ = 319, /* tEQ */
+ tNEQ = 320, /* tNEQ */
+ tAND = 321, /* tAND */
+ tOR = 322, /* tOR */
+ tNOT = 323, /* tNOT */
+ tMOD = 324, /* tMOD */
+ tAFTER = 325, /* tAFTER */
+ tBEFORE = 326, /* tBEFORE */
+ tCONCAT = 327, /* tCONCAT */
+ tCONTAINS = 328, /* tCONTAINS */
+ tSTARTS = 329, /* tSTARTS */
+ tCHAR = 330, /* tCHAR */
+ tITEM = 331, /* tITEM */
+ tLINE = 332, /* tLINE */
+ tWORD = 333, /* tWORD */
+ tSPRITE = 334, /* tSPRITE */
+ tINTERSECTS = 335, /* tINTERSECTS */
+ tWITHIN = 336, /* tWITHIN */
+ tTELL = 337, /* tTELL */
+ tPROPERTY = 338, /* tPROPERTY */
+ tON = 339, /* tON */
+ tENDIF = 340, /* tENDIF */
+ tENDREPEAT = 341, /* tENDREPEAT */
+ tENDTELL = 342 /* tENDTELL */
};
+ typedef enum yytokentype yytoken_kind_t;
#endif
/* Value type. */
@@ -257,7 +255,7 @@ union YYSTYPE
Common::String *field;
} objectref;
-#line 261 "engines/director/lingo/lingo-gr.cpp"
+#line 259 "engines/director/lingo/lingo-gr.cpp"
};
typedef union YYSTYPE YYSTYPE;
@@ -271,6 +269,167 @@ extern YYSTYPE yylval;
int yyparse (void);
#endif /* !YY_YY_ENGINES_DIRECTOR_LINGO_LINGO_GR_H_INCLUDED */
+/* Symbol kind. */
+enum yysymbol_kind_t
+{
+ YYSYMBOL_YYEMPTY = -2,
+ YYSYMBOL_YYEOF = 0, /* "end of file" */
+ YYSYMBOL_YYerror = 1, /* error */
+ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
+ YYSYMBOL_UNARY = 3, /* UNARY */
+ YYSYMBOL_CASTREF = 4, /* CASTREF */
+ YYSYMBOL_VOID = 5, /* VOID */
+ YYSYMBOL_VAR = 6, /* VAR */
+ YYSYMBOL_POINT = 7, /* POINT */
+ YYSYMBOL_RECT = 8, /* RECT */
+ YYSYMBOL_ARRAY = 9, /* ARRAY */
+ YYSYMBOL_OBJECT = 10, /* OBJECT */
+ YYSYMBOL_REFERENCE = 11, /* REFERENCE */
+ YYSYMBOL_LEXERROR = 12, /* LEXERROR */
+ YYSYMBOL_PARRAY = 13, /* PARRAY */
+ YYSYMBOL_INT = 14, /* INT */
+ YYSYMBOL_ARGC = 15, /* ARGC */
+ YYSYMBOL_ARGCNORET = 16, /* ARGCNORET */
+ YYSYMBOL_THEENTITY = 17, /* THEENTITY */
+ YYSYMBOL_THEENTITYWITHID = 18, /* THEENTITYWITHID */
+ YYSYMBOL_THEMENUITEMENTITY = 19, /* THEMENUITEMENTITY */
+ YYSYMBOL_THEMENUITEMSENTITY = 20, /* THEMENUITEMSENTITY */
+ YYSYMBOL_FLOAT = 21, /* FLOAT */
+ YYSYMBOL_BLTIN = 22, /* BLTIN */
+ YYSYMBOL_FBLTIN = 23, /* FBLTIN */
+ YYSYMBOL_RBLTIN = 24, /* RBLTIN */
+ YYSYMBOL_ID = 25, /* ID */
+ YYSYMBOL_STRING = 26, /* STRING */
+ YYSYMBOL_HANDLER = 27, /* HANDLER */
+ YYSYMBOL_SYMBOL = 28, /* SYMBOL */
+ YYSYMBOL_ENDCLAUSE = 29, /* ENDCLAUSE */
+ YYSYMBOL_tPLAYACCEL = 30, /* tPLAYACCEL */
+ YYSYMBOL_tMETHOD = 31, /* tMETHOD */
+ YYSYMBOL_THEOBJECTFIELD = 32, /* THEOBJECTFIELD */
+ YYSYMBOL_THEOBJECTREF = 33, /* THEOBJECTREF */
+ YYSYMBOL_tDOWN = 34, /* tDOWN */
+ YYSYMBOL_tELSE = 35, /* tELSE */
+ YYSYMBOL_tELSIF = 36, /* tELSIF */
+ YYSYMBOL_tEXIT = 37, /* tEXIT */
+ YYSYMBOL_tGLOBAL = 38, /* tGLOBAL */
+ YYSYMBOL_tGO = 39, /* tGO */
+ YYSYMBOL_tIF = 40, /* tIF */
+ YYSYMBOL_tIN = 41, /* tIN */
+ YYSYMBOL_tINTO = 42, /* tINTO */
+ YYSYMBOL_tLOOP = 43, /* tLOOP */
+ YYSYMBOL_tMACRO = 44, /* tMACRO */
+ YYSYMBOL_tMOVIE = 45, /* tMOVIE */
+ YYSYMBOL_tNEXT = 46, /* tNEXT */
+ YYSYMBOL_tOF = 47, /* tOF */
+ YYSYMBOL_tPREVIOUS = 48, /* tPREVIOUS */
+ YYSYMBOL_tPUT = 49, /* tPUT */
+ YYSYMBOL_tREPEAT = 50, /* tREPEAT */
+ YYSYMBOL_tSET = 51, /* tSET */
+ YYSYMBOL_tTHEN = 52, /* tTHEN */
+ YYSYMBOL_tTO = 53, /* tTO */
+ YYSYMBOL_tWHEN = 54, /* tWHEN */
+ YYSYMBOL_tWITH = 55, /* tWITH */
+ YYSYMBOL_tWHILE = 56, /* tWHILE */
+ YYSYMBOL_tNLELSE = 57, /* tNLELSE */
+ YYSYMBOL_tFACTORY = 58, /* tFACTORY */
+ YYSYMBOL_tOPEN = 59, /* tOPEN */
+ YYSYMBOL_tPLAY = 60, /* tPLAY */
+ YYSYMBOL_tINSTANCE = 61, /* tINSTANCE */
+ YYSYMBOL_tGE = 62, /* tGE */
+ YYSYMBOL_tLE = 63, /* tLE */
+ YYSYMBOL_tEQ = 64, /* tEQ */
+ YYSYMBOL_tNEQ = 65, /* tNEQ */
+ YYSYMBOL_tAND = 66, /* tAND */
+ YYSYMBOL_tOR = 67, /* tOR */
+ YYSYMBOL_tNOT = 68, /* tNOT */
+ YYSYMBOL_tMOD = 69, /* tMOD */
+ YYSYMBOL_tAFTER = 70, /* tAFTER */
+ YYSYMBOL_tBEFORE = 71, /* tBEFORE */
+ YYSYMBOL_tCONCAT = 72, /* tCONCAT */
+ YYSYMBOL_tCONTAINS = 73, /* tCONTAINS */
+ YYSYMBOL_tSTARTS = 74, /* tSTARTS */
+ YYSYMBOL_tCHAR = 75, /* tCHAR */
+ YYSYMBOL_tITEM = 76, /* tITEM */
+ YYSYMBOL_tLINE = 77, /* tLINE */
+ YYSYMBOL_tWORD = 78, /* tWORD */
+ YYSYMBOL_tSPRITE = 79, /* tSPRITE */
+ YYSYMBOL_tINTERSECTS = 80, /* tINTERSECTS */
+ YYSYMBOL_tWITHIN = 81, /* tWITHIN */
+ YYSYMBOL_tTELL = 82, /* tTELL */
+ YYSYMBOL_tPROPERTY = 83, /* tPROPERTY */
+ YYSYMBOL_tON = 84, /* tON */
+ YYSYMBOL_tENDIF = 85, /* tENDIF */
+ YYSYMBOL_tENDREPEAT = 86, /* tENDREPEAT */
+ YYSYMBOL_tENDTELL = 87, /* tENDTELL */
+ YYSYMBOL_88_ = 88, /* '<' */
+ YYSYMBOL_89_ = 89, /* '>' */
+ YYSYMBOL_90_ = 90, /* '&' */
+ YYSYMBOL_91_ = 91, /* '+' */
+ YYSYMBOL_92_ = 92, /* '-' */
+ YYSYMBOL_93_ = 93, /* '*' */
+ YYSYMBOL_94_ = 94, /* '/' */
+ YYSYMBOL_95_ = 95, /* '%' */
+ YYSYMBOL_96_n_ = 96, /* '\n' */
+ YYSYMBOL_97_ = 97, /* '(' */
+ YYSYMBOL_98_ = 98, /* ')' */
+ YYSYMBOL_99_ = 99, /* ',' */
+ YYSYMBOL_100_ = 100, /* '[' */
+ YYSYMBOL_101_ = 101, /* ']' */
+ YYSYMBOL_102_ = 102, /* ':' */
+ YYSYMBOL_YYACCEPT = 103, /* $accept */
+ YYSYMBOL_program = 104, /* program */
+ YYSYMBOL_programline = 105, /* programline */
+ YYSYMBOL_asgn = 106, /* asgn */
+ YYSYMBOL_stmtoneliner = 107, /* stmtoneliner */
+ YYSYMBOL_stmtonelinerwithif = 108, /* stmtonelinerwithif */
+ YYSYMBOL_stmt = 109, /* stmt */
+ YYSYMBOL_tellstart = 110, /* tellstart */
+ YYSYMBOL_ifstmt = 111, /* ifstmt */
+ YYSYMBOL_elseifstmtlist = 112, /* elseifstmtlist */
+ YYSYMBOL_elseifstmt = 113, /* elseifstmt */
+ YYSYMBOL_ifoneliner = 114, /* ifoneliner */
+ YYSYMBOL_repeatwhile = 115, /* repeatwhile */
+ YYSYMBOL_repeatwith = 116, /* repeatwith */
+ YYSYMBOL_if = 117, /* if */
+ YYSYMBOL_elseif = 118, /* elseif */
+ YYSYMBOL_begin = 119, /* begin */
+ YYSYMBOL_end = 120, /* end */
+ YYSYMBOL_stmtlist = 121, /* stmtlist */
+ YYSYMBOL_when = 122, /* when */
+ YYSYMBOL_simpleexpr = 123, /* simpleexpr */
+ YYSYMBOL_expr = 124, /* expr */
+ YYSYMBOL_chunkexpr = 125, /* chunkexpr */
+ YYSYMBOL_reference = 126, /* reference */
+ YYSYMBOL_proc = 127, /* proc */
+ YYSYMBOL_128_1 = 128, /* $@1 */
+ YYSYMBOL_129_2 = 129, /* $@2 */
+ YYSYMBOL_globallist = 130, /* globallist */
+ YYSYMBOL_propertylist = 131, /* propertylist */
+ YYSYMBOL_instancelist = 132, /* instancelist */
+ YYSYMBOL_gotofunc = 133, /* gotofunc */
+ YYSYMBOL_gotomovie = 134, /* gotomovie */
+ YYSYMBOL_playfunc = 135, /* playfunc */
+ YYSYMBOL_136_3 = 136, /* $@3 */
+ YYSYMBOL_defn = 137, /* defn */
+ YYSYMBOL_138_4 = 138, /* $@4 */
+ YYSYMBOL_139_5 = 139, /* $@5 */
+ YYSYMBOL_140_6 = 140, /* $@6 */
+ YYSYMBOL_on = 141, /* on */
+ YYSYMBOL_142_7 = 142, /* $@7 */
+ YYSYMBOL_argdef = 143, /* argdef */
+ YYSYMBOL_endargdef = 144, /* endargdef */
+ YYSYMBOL_argstore = 145, /* argstore */
+ YYSYMBOL_macro = 146, /* macro */
+ YYSYMBOL_arglist = 147, /* arglist */
+ YYSYMBOL_nonemptyarglist = 148, /* nonemptyarglist */
+ YYSYMBOL_list = 149, /* list */
+ YYSYMBOL_valuelist = 150, /* valuelist */
+ YYSYMBOL_linearlist = 151, /* linearlist */
+ YYSYMBOL_proplist = 152, /* proplist */
+ YYSYMBOL_proppair = 153 /* proppair */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
@@ -388,6 +547,7 @@ typedef int yy_state_fast_t;
# endif
#endif
+
#ifndef YY_ATTRIBUTE_PURE
# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
@@ -445,7 +605,7 @@ typedef int yy_state_fast_t;
#define YY_ASSERT(E) ((void) (0 && (E)))
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#if 1
/* The parser invokes alloca or malloc; define the necessary symbols. */
@@ -510,8 +670,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* 1 */
#if (! defined yyoverflow \
&& (! defined __cplusplus \
@@ -587,14 +746,15 @@ union yyalloc
/* YYNSTATES -- Number of states. */
#define YYNSTATES 376
-#define YYUNDEFTOK 2
#define YYMAXUTOK 342
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
as returned by yylex, with out-of-bounds checking. */
-#define YYTRANSLATE(YYX) \
- (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+#define YYTRANSLATE(YYX) \
+ (0 <= (YYX) && (YYX) <= YYMAXUTOK \
+ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
+ : YYSYMBOL_YYUNDEF)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
as returned by yylex. */
@@ -647,7 +807,7 @@ static const yytype_int16 yyrline[] =
243, 254, 271, 283, 294, 296, 301, 305, 310, 314,
324, 335, 336, 338, 345, 355, 366, 368, 374, 380,
387, 389, 391, 392, 393, 395, 401, 404, 407, 411,
- 415, 419, 421, 422, 423, 426, 429, 432, 440, 446,
+ 415, 419, 427, 429, 430, 431, 434, 437, 440, 446,
451, 457, 458, 459, 460, 461, 462, 463, 464, 465,
466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
476, 477, 478, 479, 480, 482, 483, 484, 485, 486,
@@ -662,38 +822,52 @@ static const yytype_int16 yyrline[] =
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || 1
+/** Accessing symbol of state STATE. */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if 1
+/* The user-facing name of the symbol whose (internal) number is
+ YYSYMBOL. No bounds checking. */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "UNARY", "CASTREF", "VOID", "VAR",
- "POINT", "RECT", "ARRAY", "OBJECT", "REFERENCE", "LEXERROR", "PARRAY",
- "INT", "ARGC", "ARGCNORET", "THEENTITY", "THEENTITYWITHID",
- "THEMENUITEMENTITY", "THEMENUITEMSENTITY", "FLOAT", "BLTIN", "FBLTIN",
- "RBLTIN", "ID", "STRING", "HANDLER", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL",
- "tMETHOD", "THEOBJECTFIELD", "THEOBJECTREF", "tDOWN", "tELSE", "tELSIF",
- "tEXIT", "tGLOBAL", "tGO", "tIF", "tIN", "tINTO", "tLOOP", "tMACRO",
- "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT", "tSET",
- "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE", "tFACTORY",
- "tOPEN", "tPLAY", "tINSTANCE", "tGE", "tLE", "tEQ", "tNEQ", "tAND",
- "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT", "tCONTAINS",
- "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE", "tINTERSECTS",
- "tWITHIN", "tTELL", "tPROPERTY", "tON", "tENDIF", "tENDREPEAT",
- "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'",
- "'\\n'", "'('", "')'", "','", "'['", "']'", "':'", "$accept", "program",
- "programline", "asgn", "stmtoneliner", "stmtonelinerwithif", "stmt",
- "tellstart", "ifstmt", "elseifstmtlist", "elseifstmt", "ifoneliner",
- "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist",
- "when", "simpleexpr", "expr", "chunkexpr", "reference", "proc", "$@1",
- "$@2", "globallist", "propertylist", "instancelist", "gotofunc",
- "gotomovie", "playfunc", "$@3", "defn", "$@4", "$@5", "$@6", "on", "$@7",
- "argdef", "endargdef", "argstore", "macro", "arglist", "nonemptyarglist",
- "list", "valuelist", "linearlist", "proplist", "proppair", YY_NULLPTR
+ "\"end of file\"", "error", "\"invalid token\"", "UNARY", "CASTREF",
+ "VOID", "VAR", "POINT", "RECT", "ARRAY", "OBJECT", "REFERENCE",
+ "LEXERROR", "PARRAY", "INT", "ARGC", "ARGCNORET", "THEENTITY",
+ "THEENTITYWITHID", "THEMENUITEMENTITY", "THEMENUITEMSENTITY", "FLOAT",
+ "BLTIN", "FBLTIN", "RBLTIN", "ID", "STRING", "HANDLER", "SYMBOL",
+ "ENDCLAUSE", "tPLAYACCEL", "tMETHOD", "THEOBJECTFIELD", "THEOBJECTREF",
+ "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tIF", "tIN",
+ "tINTO", "tLOOP", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS",
+ "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE",
+ "tNLELSE", "tFACTORY", "tOPEN", "tPLAY", "tINSTANCE", "tGE", "tLE",
+ "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE",
+ "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD",
+ "tSPRITE", "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON",
+ "tENDIF", "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'",
+ "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
+ "$accept", "program", "programline", "asgn", "stmtoneliner",
+ "stmtonelinerwithif", "stmt", "tellstart", "ifstmt", "elseifstmtlist",
+ "elseifstmt", "ifoneliner", "repeatwhile", "repeatwith", "if", "elseif",
+ "begin", "end", "stmtlist", "when", "simpleexpr", "expr", "chunkexpr",
+ "reference", "proc", "$@1", "$@2", "globallist", "propertylist",
+ "instancelist", "gotofunc", "gotomovie", "playfunc", "$@3", "defn",
+ "$@4", "$@5", "$@6", "on", "$@7", "argdef", "endargdef", "argstore",
+ "macro", "arglist", "nonemptyarglist", "list", "valuelist", "linearlist",
+ "proplist", "proppair", YY_NULLPTR
};
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+ return yytname[yysymbol];
+}
#endif
-# ifdef YYPRINT
+#ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
(internal) symbol number NUM (which must be that of a token). */
static const yytype_int16 yytoknum[] =
@@ -710,9 +884,9 @@ static const yytype_int16 yytoknum[] =
38, 43, 45, 42, 47, 37, 10, 40, 41, 44,
91, 93, 58
};
-# endif
+#endif
-#define YYPACT_NINF (-274)
+#define YYPACT_NINF (-272)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
@@ -726,44 +900,44 @@ static const yytype_int16 yytoknum[] =
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 311, -85, -274, -274, 23, -274, 1041, 1122, 23, 1160,
- -274, -274, -274, -274, -274, -274, -31, -274, 884, -274,
- -274, -18, 1003, 45, 96, 22, 34, 1241, 922, 40,
- 1241, 1241, 1241, 1241, 1241, 1241, 1241, -274, -274, 1241,
- 1241, 1241, 392, 8, -274, -274, -274, -274, -274, 1241,
- -26, 1241, 722, -274, 1661, -274, -274, -274, -274, -274,
- -274, -274, -274, -274, -274, -274, -274, -27, 1003, 1241,
- 1661, -17, 1241, -17, -274, 1241, 1661, -13, 1241, -274,
- -274, 48, -274, 1241, -274, 50, -274, 1233, -274, 80,
- -274, 91, 384, 97, -274, -12, 23, 23, 7, 73,
- 98, -274, 1558, 1233, -274, -274, 54, -274, 1281, 1314,
- 1347, 1380, 1628, 1545, 127, 129, -274, -274, 1591, 55,
- 58, -274, 1661, 60, 57, 63, -274, -274, 479, 1661,
- -274, -274, 1661, -274, -274, 1241, 1661, -274, -274, 1241,
+ 311, -85, -272, -272, 23, -272, 1041, 1122, 23, 1160,
+ -272, -272, -272, -272, -272, -272, -31, -272, 884, -272,
+ -272, -27, 1003, 32, 99, 13, 22, 1241, 922, 34,
+ 1241, 1241, 1241, 1241, 1241, 1241, 1241, -272, -272, 1241,
+ 1241, 1241, 392, 8, -272, -272, -272, -272, -272, 1241,
+ 0, 1241, 722, -272, 1661, -272, -272, -272, -272, -272,
+ -272, -272, -272, -272, -272, -272, -272, -45, 1003, 1241,
+ 1661, -34, 1241, -34, -272, 1241, 1661, -26, 1241, -272,
+ -272, 70, -272, 1241, -272, 60, -272, 1233, -272, 85,
+ -272, 95, 384, 97, -272, -33, 23, 23, -14, 75,
+ 78, -272, 1558, 1233, -272, -272, 51, -272, 1281, 1314,
+ 1347, 1380, 1628, 1545, 129, 131, -272, -272, 1591, 55,
+ 58, -272, 1661, 61, 62, 64, -272, -272, 479, 1661,
+ -272, -272, 1661, -272, -272, 1241, 1661, -272, -272, 1241,
1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
- 1241, 1241, 1241, 1241, 1241, 1241, 138, 1241, 384, 1591,
- 19, 1241, 21, 26, 1241, -17, 138, -274, 66, 1661,
- 1241, -274, -274, 23, 15, 1241, 1241, -274, 1241, 1241,
- 14, 119, 1241, 1241, 1241, -274, 1241, -274, 143, 1241,
- 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, -274,
- -274, -274, 75, -274, -274, 23, 23, -274, 1241, 53,
- -274, -274, 1241, 1241, 123, -274, 1661, 16, 16, 16,
- 16, 1674, 1674, -274, 5, 16, 16, 16, 16, 5,
- 18, 18, -274, -274, -274, -76, -274, 1661, -274, -274,
- 1661, -41, 156, 1661, -274, 151, -274, -274, 1661, 1661,
- 1661, 16, 1241, 1241, 169, 1661, 16, 1661, 1661, -274,
+ 1241, 1241, 1241, 1241, 1241, 1241, 140, 1241, 384, 1591,
+ -7, 1241, 2, 27, 1241, -34, 140, -272, 67, 1661,
+ 1241, -272, -272, 23, 31, 1241, 1241, -272, 1241, 1241,
+ 7, 121, 1241, 1241, 1241, -272, 1241, -272, 149, 1241,
+ 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, -272,
+ -272, -272, 76, -272, -272, 23, 23, -272, 1241, 93,
+ -272, -272, 1241, 1241, 141, -272, 1661, 21, 21, 21,
+ 21, 1674, 1674, -272, 5, 21, 21, 21, 21, 5,
+ -8, -8, -272, -272, -272, -29, -272, 1661, -272, -272,
+ 1661, -18, 156, 1661, -272, 152, -272, -272, 1661, 1661,
+ 1661, 21, 1241, 1241, 170, 1661, 21, 1661, 1661, -272,
1661, 1413, 1661, 1446, 1661, 1479, 1661, 1512, 1661, 1661,
- 803, -274, 170, -274, -274, 1661, 55, 58, -274, 641,
- 1661, 1661, -274, 144, 99, 172, 99, -274, 138, 1241,
- 1661, 16, 23, 1241, 1241, 1241, 1241, -274, 641, -274,
- -274, -274, 113, -274, -3, 641, 803, 175, -274, -274,
- -274, -35, 1661, 148, 1661, 1661, 1661, 1661, -274, 117,
- -274, 641, 152, 1241, -274, -274, -274, 560, 641, 99,
- 1241, -274, 128, 1241, 1661, 95, -28, 184, -274, 1661,
- -274, 1661, -274, -274, -274, -274, 1241, 130, -274, -274,
- -274, 114, 641, -274, 641, -274, 1661, -274, 803, 191,
- 641, 131, 641, 166, -274, -274, 133, -274, 135, -274,
- 136, -274, -274, 641, -274, -274
+ 803, -272, 171, -272, -272, 1661, 55, 58, -272, 641,
+ 1661, 1661, -272, 145, 100, 173, 100, -272, 140, 1241,
+ 1661, 21, 23, 1241, 1241, 1241, 1241, -272, 641, -272,
+ -272, -272, 114, -272, -21, 641, 803, 176, -272, -272,
+ -272, -17, 1661, 151, 1661, 1661, 1661, 1661, -272, 118,
+ -272, 641, 160, 1241, -272, -272, -272, 560, 641, 100,
+ 1241, -272, 123, 1241, 1661, 117, -28, 189, -272, 1661,
+ -272, 1661, -272, -272, -272, -272, 1241, 130, -272, -272,
+ -272, 119, 641, -272, 641, -272, 1661, -272, 803, 191,
+ 641, 133, 641, 165, -272, -272, 134, -272, 136, -272,
+ 142, -272, -272, 641, -272, -272
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -771,14 +945,14 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 0, 0, 56, 67, 0, 57, 157, 157, 0, 60,
+ 0, 0, 56, 61, 0, 57, 157, 157, 0, 60,
59, 58, 136, 142, 69, 70, 109, 110, 0, 48,
138, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 112, 146, 0,
0, 0, 163, 0, 3, 71, 28, 7, 29, 0,
- 0, 0, 0, 62, 22, 104, 63, 23, 106, 107,
- 6, 50, 21, 61, 4, 60, 68, 60, 0, 157,
- 158, 116, 157, 65, 103, 157, 160, 156, 157, 50,
+ 0, 0, 0, 63, 22, 104, 64, 23, 106, 107,
+ 6, 50, 21, 62, 4, 60, 68, 60, 0, 157,
+ 158, 116, 157, 66, 103, 157, 160, 156, 157, 50,
108, 0, 125, 0, 126, 0, 127, 128, 130, 0,
34, 0, 105, 0, 46, 0, 0, 0, 0, 0,
0, 141, 118, 133, 135, 123, 114, 85, 0, 0,
@@ -794,7 +968,7 @@ static const yytype_uint8 yydefact[] =
38, 121, 113, 147, 92, 0, 0, 162, 0, 0,
2, 52, 0, 0, 0, 35, 51, 81, 82, 79,
80, 83, 84, 76, 87, 88, 89, 78, 77, 86,
- 72, 73, 74, 75, 149, 0, 115, 159, 64, 66,
+ 72, 73, 74, 75, 149, 0, 115, 159, 65, 67,
161, 0, 0, 131, 50, 0, 8, 9, 11, 12,
16, 14, 0, 0, 0, 15, 13, 20, 117, 124,
95, 0, 97, 0, 99, 0, 101, 0, 93, 94,
@@ -814,11 +988,11 @@ static const yytype_uint8 yydefact[] =
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -274, -274, 100, -274, -264, -274, 4, 25, -274, -274,
- -274, -274, -274, -274, 174, -274, -77, -57, -100, -274,
- 6, -6, -274, 56, 177, -274, -274, -274, -274, -274,
- -274, -19, -274, -274, -274, -274, -274, -274, -274, -274,
- -161, -274, -273, 179, 11, -274, -274, -274, -274, -274,
+ -272, -272, 98, -272, -264, -272, 4, 25, -272, -272,
+ -272, -272, -272, -272, 177, -272, -77, -57, -100, -272,
+ 6, -6, -272, 54, 178, -272, -272, -272, -272, -272,
+ -272, -19, -272, -272, -272, -272, -272, -272, -272, -272,
+ -161, -272, -271, 179, 11, -272, -272, -272, -272, -272,
24
};
@@ -839,29 +1013,29 @@ static const yytype_int16 yydefgoto[] =
static const yytype_int16 yytable[] =
{
70, 70, 166, 76, 47, 241, 297, 348, 127, 104,
- 66, 64, 87, 310, 74, 130, 92, 71, 73, 80,
- 284, 102, 103, 285, 107, 108, 109, 110, 111, 112,
- 113, 322, 90, 116, 117, 118, 122, 2, 131, 8,
- 246, 178, 325, 129, 5, 132, 136, 100, 65, 10,
- 323, 11, 179, 212, 213, 286, 338, 349, 285, 101,
- 182, 329, 158, 159, 285, 105, 159, 252, 171, 159,
- 157, 183, 70, 167, 145, 214, 215, 169, 253, 276,
- 160, 277, 161, 162, 187, 145, 164, 145, 146, 165,
- 31, 32, 33, 34, 364, 170, 152, 153, 154, 155,
- 93, 94, 180, 181, 128, 172, 151, 152, 153, 154,
- 155, 154, 155, 95, 96, 97, 173, 236, 161, 238,
- 161, 98, 177, 42, 239, 161, 184, 311, 99, 216,
- 343, 344, 47, 217, 218, 219, 220, 221, 222, 223,
+ 66, 64, 87, 322, 74, 310, 92, 71, 73, 80,
+ 178, 102, 103, 90, 107, 108, 109, 110, 111, 112,
+ 113, 179, 323, 116, 117, 118, 122, 2, 100, 182,
+ 3, 130, 325, 129, 5, 132, 136, 101, 65, 10,
+ 183, 11, 157, 212, 213, 8, 246, 349, 338, 105,
+ 252, 145, 158, 159, 131, 161, 159, 284, 171, 159,
+ 285, 253, 70, 164, 145, 214, 215, 169, 286, 329,
+ 160, 285, 285, 162, 187, 154, 155, 93, 94, 165,
+ 145, 236, 161, 146, 364, 167, 152, 153, 154, 155,
+ 238, 161, 180, 181, 128, 170, 31, 32, 33, 34,
+ 172, 151, 152, 153, 154, 155, 95, 96, 97, 276,
+ 173, 277, 177, 42, 98, 239, 161, 311, 184, 216,
+ 185, 99, 47, 217, 218, 219, 220, 221, 222, 223,
224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 185, 70, 201, 188, 203, 237, 208, 205, 240, 283,
- 206, 207, 209, 234, 243, 242, 254, 288, 259, 248,
- 249, 298, 250, 251, 272, 282, 255, 256, 257, 245,
+ 188, 70, 343, 344, 201, 237, 203, 205, 240, 283,
+ 206, 208, 207, 209, 243, 234, 242, 288, 254, 248,
+ 249, 298, 250, 251, 259, 272, 255, 256, 257, 245,
258, 287, 305, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 289, 292, 299, 306, 309, 307, 320,
- 326, 330, 275, 321, 331, 333, 280, 281, 327, 350,
- 328, 273, 274, 359, 340, 357, 365, 367, 369, 371,
- 372, 374, 302, 303, 304, 271, 135, 0, 210, 137,
- 247, 138, 0, 278, 0, 0, 0, 0, 352, 0,
+ 267, 268, 269, 282, 289, 292, 299, 306, 309, 307,
+ 320, 326, 275, 321, 330, 331, 280, 281, 327, 340,
+ 328, 273, 274, 333, 350, 357, 365, 369, 359, 367,
+ 371, 372, 302, 303, 304, 271, 210, 374, 247, 135,
+ 137, 138, 0, 278, 0, 0, 0, 0, 352, 0,
318, 319, 354, 0, 0, 0, 290, 291, 324, 0,
0, 0, 0, 360, 0, 362, 0, 0, 0, 0,
0, 0, 0, 0, 332, 0, 355, 0, 336, 373,
@@ -1020,29 +1194,29 @@ static const yytype_int16 yytable[] =
static const yytype_int16 yycheck[] =
{
6, 7, 79, 9, 0, 166, 270, 35, 0, 28,
- 4, 96, 18, 286, 8, 41, 22, 6, 7, 50,
- 96, 27, 28, 99, 30, 31, 32, 33, 34, 35,
- 36, 34, 50, 39, 40, 41, 42, 14, 64, 24,
- 25, 53, 306, 49, 21, 51, 52, 25, 25, 26,
- 53, 28, 64, 130, 131, 96, 329, 85, 99, 25,
- 53, 96, 68, 69, 99, 25, 72, 53, 87, 75,
- 97, 64, 78, 25, 69, 132, 133, 83, 64, 26,
- 69, 28, 99, 72, 103, 69, 99, 69, 72, 78,
- 75, 76, 77, 78, 358, 45, 91, 92, 93, 94,
- 55, 56, 96, 97, 96, 25, 90, 91, 92, 93,
- 94, 93, 94, 17, 18, 19, 25, 98, 99, 98,
- 99, 25, 25, 100, 98, 99, 53, 288, 32, 135,
- 35, 36, 128, 139, 140, 141, 142, 143, 144, 145,
+ 4, 96, 18, 34, 8, 286, 22, 6, 7, 50,
+ 53, 27, 28, 50, 30, 31, 32, 33, 34, 35,
+ 36, 64, 53, 39, 40, 41, 42, 14, 25, 53,
+ 17, 41, 306, 49, 21, 51, 52, 25, 25, 26,
+ 64, 28, 97, 130, 131, 24, 25, 85, 329, 25,
+ 53, 69, 68, 69, 64, 99, 72, 96, 87, 75,
+ 99, 64, 78, 99, 69, 132, 133, 83, 96, 96,
+ 69, 99, 99, 72, 103, 93, 94, 55, 56, 78,
+ 69, 98, 99, 72, 358, 25, 91, 92, 93, 94,
+ 98, 99, 96, 97, 96, 45, 75, 76, 77, 78,
+ 25, 90, 91, 92, 93, 94, 17, 18, 19, 26,
+ 25, 28, 25, 100, 25, 98, 99, 288, 53, 135,
+ 52, 32, 128, 139, 140, 141, 142, 143, 144, 145,
146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 52, 157, 25, 99, 25, 161, 99, 102, 164, 216,
- 102, 101, 99, 25, 170, 99, 47, 244, 25, 175,
- 176, 271, 178, 179, 99, 52, 182, 183, 184, 173,
+ 99, 157, 35, 36, 25, 161, 25, 102, 164, 216,
+ 102, 99, 101, 99, 170, 25, 99, 244, 47, 175,
+ 176, 271, 178, 179, 25, 99, 182, 183, 184, 173,
186, 25, 282, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 42, 25, 25, 52, 25, 99, 86,
- 25, 53, 208, 303, 87, 53, 212, 213, 308, 25,
- 310, 205, 206, 99, 86, 85, 25, 86, 52, 86,
- 85, 85, 279, 280, 281, 200, 52, -1, 128, 52,
- 174, 52, -1, 209, -1, -1, -1, -1, 338, -1,
+ 196, 197, 198, 52, 42, 25, 25, 52, 25, 99,
+ 86, 25, 208, 303, 53, 87, 212, 213, 308, 86,
+ 310, 205, 206, 53, 25, 85, 25, 52, 99, 86,
+ 86, 85, 279, 280, 281, 200, 128, 85, 174, 52,
+ 52, 52, -1, 209, -1, -1, -1, -1, 338, -1,
297, 298, 342, -1, -1, -1, 252, 253, 305, -1,
-1, -1, -1, 353, -1, 355, -1, -1, -1, -1,
-1, -1, -1, -1, 321, -1, 343, -1, 325, 369,
@@ -1251,7 +1425,7 @@ static const yytype_uint8 yyr1[] =
109, 109, 109, 109, 109, 109, 109, 109, 110, 111,
111, 112, 112, 113, 114, 114, 115, 116, 117, 118,
119, 120, 121, 121, 121, 122, 123, 123, 123, 123,
- 123, 123, 124, 124, 124, 124, 124, 124, 124, 124,
+ 123, 123, 123, 124, 124, 124, 124, 124, 124, 124,
124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
124, 124, 124, 124, 124, 125, 125, 125, 125, 125,
@@ -1274,7 +1448,7 @@ static const yytype_int8 yyr2[] =
6, 11, 12, 8, 2, 3, 7, 6, 0, 9,
12, 0, 2, 6, 11, 7, 2, 3, 1, 1,
0, 0, 0, 2, 2, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 4, 2, 4, 1, 2, 1,
+ 1, 1, 1, 1, 1, 4, 2, 4, 2, 1,
1, 1, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 2, 3, 3, 3, 3,
2, 2, 3, 4, 4, 4, 6, 4, 6, 4,
@@ -1289,10 +1463,10 @@ static const yytype_int8 yyr2[] =
};
+enum { YYENOMEM = -2 };
+
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
@@ -1318,10 +1492,9 @@ static const yytype_int8 yyr2[] =
} \
while (0)
-/* Error token number */
-#define YYTERROR 1
-#define YYERRCODE 256
-
+/* Backward compatibility with an undocumented macro.
+ Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
/* Enable debugging if requested. */
@@ -1339,18 +1512,18 @@ do { \
} while (0)
/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
+# ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
do { \
if (yydebug) \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yy_symbol_print (stderr, \
- Type, Value); \
+ Kind, Value); \
YYFPRINTF (stderr, "\n"); \
} \
} while (0)
@@ -1361,18 +1534,19 @@ do { \
`-----------------------------------*/
static void
-yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo,
+ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
{
FILE *yyoutput = yyo;
YYUSE (yyoutput);
if (!yyvaluep)
return;
# ifdef YYPRINT
- if (yytype < YYNTOKENS)
- YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
+ if (yykind < YYNTOKENS)
+ YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
# endif
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- YYUSE (yytype);
+ YYUSE (yykind);
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
@@ -1382,12 +1556,13 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
`---------------------------*/
static void
-yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo,
+ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
{
YYFPRINTF (yyo, "%s %s (",
- yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+ yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
- yy_symbol_value_print (yyo, yytype, yyvaluep);
+ yy_symbol_value_print (yyo, yykind, yyvaluep);
YYFPRINTF (yyo, ")");
}
@@ -1420,7 +1595,8 @@ do { \
`------------------------------------------------*/
static void
-yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+ int yyrule)
{
int yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
@@ -1432,7 +1608,7 @@ yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
{
YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr,
- yystos[+yyssp[yyi + 1 - yynrhs]],
+ YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
&yyvsp[(yyi + 1) - (yynrhs)]
);
YYFPRINTF (stderr, "\n");
@@ -1449,8 +1625,8 @@ do { \
multiple parsers can coexist. */
int yydebug;
#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */
@@ -1473,12 +1649,58 @@ int yydebug;
#endif
-#if YYERROR_VERBOSE
+/* Context of a parse error. */
+typedef struct
+{
+ yy_state_t *yyssp;
+ yysymbol_kind_t yytoken;
+} yypcontext_t;
+
+/* Put in YYARG at most YYARGN of the expected tokens given the
+ current YYCTX, and return the number of tokens stored in YYARG. If
+ YYARG is null, return the number of expected tokens (guaranteed to
+ be less than YYNTOKENS). Return YYENOMEM on memory exhaustion.
+ Return 0 if there are more than YYARGN expected tokens, yet fill
+ YYARG up to YYARGN. */
+static int
+yypcontext_expected_tokens (const yypcontext_t *yyctx,
+ yysymbol_kind_t yyarg[], int yyargn)
+{
+ /* Actual size of YYARG. */
+ int yycount = 0;
+ int yyn = yypact[+*yyctx->yyssp];
+ 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 != YYSYMBOL_YYerror
+ && !yytable_value_is_error (yytable[yyx + yyn]))
+ {
+ if (!yyarg)
+ ++yycount;
+ else if (yycount == yyargn)
+ return 0;
+ else
+ yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
+ }
+ }
+ return yycount;
+}
-# ifndef yystrlen
-# if defined __GLIBC__ && defined _STRING_H
-# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
-# else
+
+
+
+#ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
+# else
/* Return the length of YYSTR. */
static YYPTRDIFF_T
yystrlen (const char *yystr)
@@ -1488,13 +1710,13 @@ yystrlen (const char *yystr)
continue;
return yylen;
}
-# endif
# endif
+#endif
-# ifndef yystpcpy
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-# define yystpcpy stpcpy
-# else
+#ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
YYDEST. */
static char *
@@ -1508,10 +1730,10 @@ yystpcpy (char *yydest, const char *yysrc)
return yyd - 1;
}
-# endif
# endif
+#endif
-# ifndef yytnamerr
+#ifndef yytnamerr
/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
quotes and backslashes, so that it's suitable for yyerror. The
heuristic is that double-quoting is unnecessary unless the string
@@ -1526,7 +1748,6 @@ yytnamerr (char *yyres, const char *yystr)
{
YYPTRDIFF_T yyn = 0;
char const *yyp = yystr;
-
for (;;)
switch (*++yyp)
{
@@ -1560,31 +1781,15 @@ yytnamerr (char *yyres, const char *yystr)
else
return yystrlen (yystr);
}
-# endif
+#endif
-/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
- about the unexpected token YYTOKEN for the state stack whose top is
- YYSSP.
- Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
- not large enough to hold the message. In that case, also set
- *YYMSG_ALLOC to the required number of bytes. Return 2 if the
- required number of bytes is too large to store. */
static int
-yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
- yy_state_t *yyssp, int yytoken)
+yy_syntax_error_arguments (const yypcontext_t *yyctx,
+ yysymbol_kind_t yyarg[], int yyargn)
{
- enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
- /* Internationalized format string. */
- const char *yyformat = YY_NULLPTR;
- /* Arguments of yyformat: reported tokens (one for the "unexpected",
- one per "expected"). */
- char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
/* Actual size of YYARG. */
int yycount = 0;
- /* Cumulated lengths of YYARG. */
- YYPTRDIFF_T yysize = 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
@@ -1608,52 +1813,54 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
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)
+ if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
{
- int yyn = yypact[+*yyssp];
- YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
- yysize = yysize0;
- yyarg[yycount++] = yytname[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++] = yytname[yyx];
- {
- YYPTRDIFF_T yysize1
- = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
- if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
- yysize = yysize1;
- else
- return 2;
- }
- }
- }
+ int yyn;
+ if (yyarg)
+ yyarg[yycount] = yyctx->yytoken;
+ ++yycount;
+ yyn = yypcontext_expected_tokens (yyctx,
+ yyarg ? yyarg + 1 : yyarg, yyargn - 1);
+ if (yyn == YYENOMEM)
+ return YYENOMEM;
+ else
+ yycount += yyn;
}
+ return yycount;
+}
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+ about the unexpected token YYTOKEN for the state stack whose top is
+ YYSSP.
+
+ Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is
+ not large enough to hold the message. In that case, also set
+ *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the
+ required number of bytes is too large to store. */
+static int
+yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
+ const yypcontext_t *yyctx)
+{
+ enum { YYARGS_MAX = 5 };
+ /* Internationalized format string. */
+ const char *yyformat = YY_NULLPTR;
+ /* Arguments of yyformat: reported tokens (one for the "unexpected",
+ one per "expected"). */
+ yysymbol_kind_t yyarg[YYARGS_MAX];
+ /* Cumulated lengths of YYARG. */
+ YYPTRDIFF_T yysize = 0;
+
+ /* Actual size of YYARG. */
+ int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
+ if (yycount == YYENOMEM)
+ return YYENOMEM;
switch (yycount)
{
-# define YYCASE_(N, S) \
+#define YYCASE_(N, S) \
case N: \
yyformat = S; \
- break
+ break
default: /* Avoid compiler warnings. */
YYCASE_(0, YY_("syntax error"));
YYCASE_(1, YY_("syntax error, unexpected %s"));
@@ -1661,17 +1868,23 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
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_
+#undef YYCASE_
}
+ /* Compute error message size. Don't count the "%s"s, but reserve
+ room for the terminator. */
+ yysize = yystrlen (yyformat) - 2 * yycount + 1;
{
- /* Don't count the "%s"s in the final size, but reserve room for
- the terminator. */
- YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
- if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
- yysize = yysize1;
- else
- return 2;
+ int yyi;
+ for (yyi = 0; yyi < yycount; ++yyi)
+ {
+ YYPTRDIFF_T yysize1
+ = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
+ if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+ yysize = yysize1;
+ else
+ return YYENOMEM;
+ }
}
if (*yymsg_alloc < yysize)
@@ -1680,7 +1893,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
if (! (yysize <= *yymsg_alloc
&& *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
*yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
- return 1;
+ return -1;
}
/* Avoid sprintf, as that infringes on the user's name space.
@@ -1692,7 +1905,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
while ((*yyp = *yyformat) != '\0')
if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
{
- yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
yyformat += 2;
}
else
@@ -1703,93 +1916,94 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
}
return 0;
}
-#endif /* YYERROR_VERBOSE */
+
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
`-----------------------------------------------*/
static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+yydestruct (const char *yymsg,
+ yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
{
YYUSE (yyvaluep);
if (!yymsg)
yymsg = "Deleting";
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- switch (yytype)
+ switch (yykind)
{
case 22: /* BLTIN */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1727 "engines/director/lingo/lingo-gr.cpp"
+#line 1941 "engines/director/lingo/lingo-gr.cpp"
break;
case 23: /* FBLTIN */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1733 "engines/director/lingo/lingo-gr.cpp"
+#line 1947 "engines/director/lingo/lingo-gr.cpp"
break;
case 24: /* RBLTIN */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1739 "engines/director/lingo/lingo-gr.cpp"
+#line 1953 "engines/director/lingo/lingo-gr.cpp"
break;
case 25: /* ID */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1745 "engines/director/lingo/lingo-gr.cpp"
+#line 1959 "engines/director/lingo/lingo-gr.cpp"
break;
case 26: /* STRING */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1751 "engines/director/lingo/lingo-gr.cpp"
+#line 1965 "engines/director/lingo/lingo-gr.cpp"
break;
case 27: /* HANDLER */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1757 "engines/director/lingo/lingo-gr.cpp"
+#line 1971 "engines/director/lingo/lingo-gr.cpp"
break;
case 28: /* SYMBOL */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1763 "engines/director/lingo/lingo-gr.cpp"
+#line 1977 "engines/director/lingo/lingo-gr.cpp"
break;
case 29: /* ENDCLAUSE */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1769 "engines/director/lingo/lingo-gr.cpp"
+#line 1983 "engines/director/lingo/lingo-gr.cpp"
break;
case 30: /* tPLAYACCEL */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1775 "engines/director/lingo/lingo-gr.cpp"
+#line 1989 "engines/director/lingo/lingo-gr.cpp"
break;
case 31: /* tMETHOD */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1781 "engines/director/lingo/lingo-gr.cpp"
+#line 1995 "engines/director/lingo/lingo-gr.cpp"
break;
case 32: /* THEOBJECTFIELD */
#line 136 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).objectfield).os; }
-#line 1787 "engines/director/lingo/lingo-gr.cpp"
+#line 2001 "engines/director/lingo/lingo-gr.cpp"
break;
case 141: /* on */
#line 135 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1793 "engines/director/lingo/lingo-gr.cpp"
+#line 2007 "engines/director/lingo/lingo-gr.cpp"
break;
default:
@@ -1799,8 +2013,6 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
}
-
-
/* The lookahead symbol. */
int yychar;
@@ -1810,6 +2022,8 @@ YYSTYPE yylval;
int yynerrs;
+
+
/*----------.
| yyparse. |
`----------*/
@@ -1828,6 +2042,9 @@ yyparse (void)
Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
+ /* Their size. */
+ YYPTRDIFF_T yystacksize;
+
/* The state stack. */
yy_state_t yyssa[YYINITDEPTH];
yy_state_t *yyss;
@@ -1838,22 +2055,19 @@ yyparse (void)
YYSTYPE *yyvs;
YYSTYPE *yyvsp;
- YYPTRDIFF_T yystacksize;
-
int yyn;
+ /* The return value of yyparse. */
int yyresult;
/* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
+ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
/* The variables used to return semantic value and location from the
action routines. */
YYSTYPE yyval;
-#if YYERROR_VERBOSE
/* Buffer for error messages, and its allocated size. */
char yymsgbuf[128];
char *yymsg = yymsgbuf;
YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
-#endif
#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
@@ -1861,15 +2075,17 @@ yyparse (void)
Keep to zero when no symbol should be popped. */
int yylen = 0;
+ yynerrs = 0;
+ yystate = 0;
+ yyerrstatus = 0;
+
+ yystacksize = YYINITDEPTH;
yyssp = yyss = yyssa;
yyvsp = yyvs = yyvsa;
- yystacksize = YYINITDEPTH;
+
YYDPRINTF ((stderr, "Starting parse\n"));
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
yychar = YYEMPTY; /* Cause a token to be read. */
goto yysetstate;
@@ -1892,6 +2108,7 @@ yysetstate:
YY_IGNORE_USELESS_CAST_BEGIN
*yyssp = YY_CAST (yy_state_t, yystate);
YY_IGNORE_USELESS_CAST_END
+ YY_STACK_PRINT (yyss, yyssp);
if (yyss + yystacksize - 1 <= yyssp)
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
@@ -1937,7 +2154,7 @@ yysetstate:
goto yyexhaustedlab;
YYSTACK_RELOCATE (yyss_alloc, yyss);
YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-# undef YYSTACK_RELOCATE
+# undef YYSTACK_RELOCATE
if (yyss1 != yyssa)
YYSTACK_FREE (yyss1);
}
@@ -1976,18 +2193,29 @@ yybackup:
/* Not known => get a lookahead token if don't already have one. */
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
if (yychar == YYEMPTY)
{
- YYDPRINTF ((stderr, "Reading a token: "));
+ YYDPRINTF ((stderr, "Reading a token\n"));
yychar = yylex ();
}
if (yychar <= YYEOF)
{
- yychar = yytoken = YYEOF;
+ yychar = YYEOF;
+ yytoken = YYSYMBOL_YYEOF;
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
+ else if (yychar == YYerror)
+ {
+ /* The scanner already issued an error message, process directly
+ to error recovery. But do not keep the error token as
+ lookahead, it is too special and may lead us to an endless
+ loop in error recovery. */
+ yychar = YYUNDEF;
+ yytoken = YYSYMBOL_YYerror;
+ goto yyerrlab1;
+ }
else
{
yytoken = YYTRANSLATE (yychar);
@@ -2059,7 +2287,7 @@ yyreduce:
case 4:
#line 142 "engines/director/lingo/lingo-gr.y"
{ yyerrok; }
-#line 2063 "engines/director/lingo/lingo-gr.cpp"
+#line 2291 "engines/director/lingo/lingo-gr.cpp"
break;
case 8:
@@ -2070,7 +2298,7 @@ yyreduce:
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[-2].code);
delete (yyvsp[0].s); }
-#line 2074 "engines/director/lingo/lingo-gr.cpp"
+#line 2302 "engines/director/lingo/lingo-gr.cpp"
break;
case 9:
@@ -2078,7 +2306,7 @@ yyreduce:
{
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[-2].code); }
-#line 2082 "engines/director/lingo/lingo-gr.cpp"
+#line 2310 "engines/director/lingo/lingo-gr.cpp"
break;
case 10:
@@ -2094,19 +2322,19 @@ yyreduce:
g_lingo->codeInt((yyvsp[-4].e)[1]);
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[0].code); }
-#line 2098 "engines/director/lingo/lingo-gr.cpp"
+#line 2326 "engines/director/lingo/lingo-gr.cpp"
break;
case 11:
#line 169 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2104 "engines/director/lingo/lingo-gr.cpp"
+#line 2332 "engines/director/lingo/lingo-gr.cpp"
break;
case 12:
#line 170 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2110 "engines/director/lingo/lingo-gr.cpp"
+#line 2338 "engines/director/lingo/lingo-gr.cpp"
break;
case 13:
@@ -2117,7 +2345,7 @@ yyreduce:
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[0].code);
delete (yyvsp[-2].s); }
-#line 2121 "engines/director/lingo/lingo-gr.cpp"
+#line 2349 "engines/director/lingo/lingo-gr.cpp"
break;
case 14:
@@ -2129,7 +2357,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-2].e)[0]);
g_lingo->codeInt((yyvsp[-2].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2133 "engines/director/lingo/lingo-gr.cpp"
+#line 2361 "engines/director/lingo/lingo-gr.cpp"
break;
case 15:
@@ -2140,7 +2368,7 @@ yyreduce:
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[0].code);
delete (yyvsp[-2].s); }
-#line 2144 "engines/director/lingo/lingo-gr.cpp"
+#line 2372 "engines/director/lingo/lingo-gr.cpp"
break;
case 16:
@@ -2152,7 +2380,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-2].e)[0]);
g_lingo->codeInt((yyvsp[-2].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2156 "engines/director/lingo/lingo-gr.cpp"
+#line 2384 "engines/director/lingo/lingo-gr.cpp"
break;
case 17:
@@ -2163,7 +2391,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-3].e)[0]);
g_lingo->codeInt((yyvsp[-3].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2167 "engines/director/lingo/lingo-gr.cpp"
+#line 2395 "engines/director/lingo/lingo-gr.cpp"
break;
case 18:
@@ -2174,7 +2402,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-3].e)[0]);
g_lingo->codeInt((yyvsp[-3].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2178 "engines/director/lingo/lingo-gr.cpp"
+#line 2406 "engines/director/lingo/lingo-gr.cpp"
break;
case 19:
@@ -2190,7 +2418,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-6].e)[0]);
g_lingo->codeInt((yyvsp[-6].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2194 "engines/director/lingo/lingo-gr.cpp"
+#line 2422 "engines/director/lingo/lingo-gr.cpp"
break;
case 20:
@@ -2201,7 +2429,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-2].objectfield).oe);
delete (yyvsp[-2].objectfield).os;
(yyval.code) = (yyvsp[0].code); }
-#line 2205 "engines/director/lingo/lingo-gr.cpp"
+#line 2433 "engines/director/lingo/lingo-gr.cpp"
break;
case 30:
@@ -2212,7 +2440,7 @@ yyreduce:
WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body; /* body of loop */
(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2216 "engines/director/lingo/lingo-gr.cpp"
+#line 2444 "engines/director/lingo/lingo-gr.cpp"
break;
case 31:
@@ -2229,7 +2457,7 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body; /* body of loop */
(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc; /* increment */
(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2233 "engines/director/lingo/lingo-gr.cpp"
+#line 2461 "engines/director/lingo/lingo-gr.cpp"
break;
case 32:
@@ -2246,7 +2474,7 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = body; /* body of loop */
(*g_lingo->_currentScript)[(yyvsp[-11].code) + 4] = inc; /* increment */
(*g_lingo->_currentScript)[(yyvsp[-11].code) + 5] = end; }
-#line 2250 "engines/director/lingo/lingo-gr.cpp"
+#line 2478 "engines/director/lingo/lingo-gr.cpp"
break;
case 33:
@@ -2261,14 +2489,14 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-7].code) + 3] = body; /* body of loop */
(*g_lingo->_currentScript)[(yyvsp[-7].code) + 4] = 0; /* increment */
(*g_lingo->_currentScript)[(yyvsp[-7].code) + 5] = end; }
-#line 2265 "engines/director/lingo/lingo-gr.cpp"
+#line 2493 "engines/director/lingo/lingo-gr.cpp"
break;
case 34:
#line 294 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_nextRepeat); }
-#line 2272 "engines/director/lingo/lingo-gr.cpp"
+#line 2500 "engines/director/lingo/lingo-gr.cpp"
break;
case 35:
@@ -2278,7 +2506,7 @@ yyreduce:
WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
g_lingo->code1(STOP);
(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2282 "engines/director/lingo/lingo-gr.cpp"
+#line 2510 "engines/director/lingo/lingo-gr.cpp"
break;
case 36:
@@ -2287,7 +2515,7 @@ yyreduce:
inst end;
WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2291 "engines/director/lingo/lingo-gr.cpp"
+#line 2519 "engines/director/lingo/lingo-gr.cpp"
break;
case 37:
@@ -2296,7 +2524,7 @@ yyreduce:
inst end;
WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2300 "engines/director/lingo/lingo-gr.cpp"
+#line 2528 "engines/director/lingo/lingo-gr.cpp"
break;
case 38:
@@ -2304,7 +2532,7 @@ yyreduce:
{
(yyval.code) = g_lingo->code1(LC::c_tellcode);
g_lingo->code1(STOP); }
-#line 2308 "engines/director/lingo/lingo-gr.cpp"
+#line 2536 "engines/director/lingo/lingo-gr.cpp"
break;
case 39:
@@ -2319,7 +2547,7 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end; /* end, if cond fails */
g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2323 "engines/director/lingo/lingo-gr.cpp"
+#line 2551 "engines/director/lingo/lingo-gr.cpp"
break;
case 40:
@@ -2334,7 +2562,7 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end; /* end, if cond fails */
g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2338 "engines/director/lingo/lingo-gr.cpp"
+#line 2566 "engines/director/lingo/lingo-gr.cpp"
break;
case 43:
@@ -2345,7 +2573,7 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then; /* thenpart */
g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2349 "engines/director/lingo/lingo-gr.cpp"
+#line 2577 "engines/director/lingo/lingo-gr.cpp"
break;
case 44:
@@ -2360,7 +2588,7 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end; /* end, if cond fails */
g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2364 "engines/director/lingo/lingo-gr.cpp"
+#line 2592 "engines/director/lingo/lingo-gr.cpp"
break;
case 45:
@@ -2375,13 +2603,13 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end; /* end, if cond fails */
g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2379 "engines/director/lingo/lingo-gr.cpp"
+#line 2607 "engines/director/lingo/lingo-gr.cpp"
break;
case 46:
#line 366 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2385 "engines/director/lingo/lingo-gr.cpp"
+#line 2613 "engines/director/lingo/lingo-gr.cpp"
break;
case 47:
@@ -2391,7 +2619,7 @@ yyreduce:
g_lingo->code3(STOP, STOP, STOP);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2395 "engines/director/lingo/lingo-gr.cpp"
+#line 2623 "engines/director/lingo/lingo-gr.cpp"
break;
case 48:
@@ -2401,7 +2629,7 @@ yyreduce:
g_lingo->code3(STOP, STOP, STOP);
g_lingo->code1(0); // Do not skip end
g_lingo->codeLabel(0); }
-#line 2405 "engines/director/lingo/lingo-gr.cpp"
+#line 2633 "engines/director/lingo/lingo-gr.cpp"
break;
case 49:
@@ -2412,25 +2640,25 @@ yyreduce:
(yyval.code) = g_lingo->code1(LC::c_ifcode);
g_lingo->code3(STOP, STOP, STOP);
g_lingo->code1(skipEnd); }
-#line 2416 "engines/director/lingo/lingo-gr.cpp"
+#line 2644 "engines/director/lingo/lingo-gr.cpp"
break;
case 50:
#line 387 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2422 "engines/director/lingo/lingo-gr.cpp"
+#line 2650 "engines/director/lingo/lingo-gr.cpp"
break;
case 51:
#line 389 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2428 "engines/director/lingo/lingo-gr.cpp"
+#line 2656 "engines/director/lingo/lingo-gr.cpp"
break;
case 52:
#line 391 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2434 "engines/director/lingo/lingo-gr.cpp"
+#line 2662 "engines/director/lingo/lingo-gr.cpp"
break;
case 55:
@@ -2440,7 +2668,7 @@ yyreduce:
g_lingo->code1(STOP);
g_lingo->codeString((yyvsp[-1].s)->c_str());
delete (yyvsp[-1].s); }
-#line 2444 "engines/director/lingo/lingo-gr.cpp"
+#line 2672 "engines/director/lingo/lingo-gr.cpp"
break;
case 56:
@@ -2448,7 +2676,7 @@ yyreduce:
{
(yyval.code) = g_lingo->code1(LC::c_intpush);
g_lingo->codeInt((yyvsp[0].i)); }
-#line 2452 "engines/director/lingo/lingo-gr.cpp"
+#line 2680 "engines/director/lingo/lingo-gr.cpp"
break;
case 57:
@@ -2456,7 +2684,7 @@ yyreduce:
{
(yyval.code) = g_lingo->code1(LC::c_floatpush);
g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2460 "engines/director/lingo/lingo-gr.cpp"
+#line 2688 "engines/director/lingo/lingo-gr.cpp"
break;
case 58:
@@ -2465,7 +2693,7 @@ yyreduce:
(yyval.code) = g_lingo->code1(LC::c_symbolpush);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2469 "engines/director/lingo/lingo-gr.cpp"
+#line 2697 "engines/director/lingo/lingo-gr.cpp"
break;
case 59:
@@ -2474,7 +2702,7 @@ yyreduce:
(yyval.code) = g_lingo->code1(LC::c_stringpush);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2478 "engines/director/lingo/lingo-gr.cpp"
+#line 2706 "engines/director/lingo/lingo-gr.cpp"
break;
case 60:
@@ -2483,50 +2711,50 @@ yyreduce:
(yyval.code) = g_lingo->code1(LC::c_eval);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2487 "engines/director/lingo/lingo-gr.cpp"
+#line 2715 "engines/director/lingo/lingo-gr.cpp"
break;
- case 62:
-#line 421 "engines/director/lingo/lingo-gr.y"
+ case 61:
+#line 419 "engines/director/lingo/lingo-gr.y"
+ {
+ (yyval.code) = g_lingo->code1(LC::c_intpush);
+ g_lingo->codeInt(0); // Put dummy id
+ g_lingo->code1(LC::c_theentitypush);
+ inst e = 0, f = 0;
+ WRITE_UINT32(&e, (yyvsp[0].e)[0]);
+ WRITE_UINT32(&f, (yyvsp[0].e)[1]);
+ g_lingo->code2(e, f); }
+#line 2728 "engines/director/lingo/lingo-gr.cpp"
+ break;
+
+ case 63:
+#line 429 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[0].code); }
-#line 2493 "engines/director/lingo/lingo-gr.cpp"
+#line 2734 "engines/director/lingo/lingo-gr.cpp"
break;
- case 64:
-#line 423 "engines/director/lingo/lingo-gr.y"
+ case 65:
+#line 431 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
delete (yyvsp[-3].s); }
-#line 2501 "engines/director/lingo/lingo-gr.cpp"
+#line 2742 "engines/director/lingo/lingo-gr.cpp"
break;
- case 65:
-#line 426 "engines/director/lingo/lingo-gr.y"
+ case 66:
+#line 434 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
delete (yyvsp[-1].s); }
-#line 2509 "engines/director/lingo/lingo-gr.cpp"
+#line 2750 "engines/director/lingo/lingo-gr.cpp"
break;
- case 66:
-#line 429 "engines/director/lingo/lingo-gr.y"
+ case 67:
+#line 437 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
delete (yyvsp[-3].s); }
-#line 2517 "engines/director/lingo/lingo-gr.cpp"
- break;
-
- case 67:
-#line 432 "engines/director/lingo/lingo-gr.y"
- {
- (yyval.code) = g_lingo->code1(LC::c_intpush);
- g_lingo->codeInt(0); // Put dummy id
- g_lingo->code1(LC::c_theentitypush);
- inst e = 0, f = 0;
- WRITE_UINT32(&e, (yyvsp[0].e)[0]);
- WRITE_UINT32(&f, (yyvsp[0].e)[1]);
- g_lingo->code2(e, f); }
-#line 2530 "engines/director/lingo/lingo-gr.cpp"
+#line 2758 "engines/director/lingo/lingo-gr.cpp"
break;
case 68:
@@ -2537,7 +2765,7 @@ yyreduce:
WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
g_lingo->code2(e, f); }
-#line 2541 "engines/director/lingo/lingo-gr.cpp"
+#line 2769 "engines/director/lingo/lingo-gr.cpp"
break;
case 69:
@@ -2547,7 +2775,7 @@ yyreduce:
g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
g_lingo->codeInt((yyvsp[0].objectfield).oe);
delete (yyvsp[0].objectfield).os; }
-#line 2551 "engines/director/lingo/lingo-gr.cpp"
+#line 2779 "engines/director/lingo/lingo-gr.cpp"
break;
case 70:
@@ -2558,193 +2786,193 @@ yyreduce:
g_lingo->codeString((yyvsp[0].objectref).field->c_str());
delete (yyvsp[0].objectref).obj;
delete (yyvsp[0].objectref).field; }
-#line 2562 "engines/director/lingo/lingo-gr.cpp"
+#line 2790 "engines/director/lingo/lingo-gr.cpp"
break;
case 72:
#line 458 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_add); }
-#line 2568 "engines/director/lingo/lingo-gr.cpp"
+#line 2796 "engines/director/lingo/lingo-gr.cpp"
break;
case 73:
#line 459 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_sub); }
-#line 2574 "engines/director/lingo/lingo-gr.cpp"
+#line 2802 "engines/director/lingo/lingo-gr.cpp"
break;
case 74:
#line 460 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_mul); }
-#line 2580 "engines/director/lingo/lingo-gr.cpp"
+#line 2808 "engines/director/lingo/lingo-gr.cpp"
break;
case 75:
#line 461 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_div); }
-#line 2586 "engines/director/lingo/lingo-gr.cpp"
+#line 2814 "engines/director/lingo/lingo-gr.cpp"
break;
case 76:
#line 462 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_mod); }
-#line 2592 "engines/director/lingo/lingo-gr.cpp"
+#line 2820 "engines/director/lingo/lingo-gr.cpp"
break;
case 77:
#line 463 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gt); }
-#line 2598 "engines/director/lingo/lingo-gr.cpp"
+#line 2826 "engines/director/lingo/lingo-gr.cpp"
break;
case 78:
#line 464 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_lt); }
-#line 2604 "engines/director/lingo/lingo-gr.cpp"
+#line 2832 "engines/director/lingo/lingo-gr.cpp"
break;
case 79:
#line 465 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_eq); }
-#line 2610 "engines/director/lingo/lingo-gr.cpp"
+#line 2838 "engines/director/lingo/lingo-gr.cpp"
break;
case 80:
#line 466 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_neq); }
-#line 2616 "engines/director/lingo/lingo-gr.cpp"
+#line 2844 "engines/director/lingo/lingo-gr.cpp"
break;
case 81:
#line 467 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_ge); }
-#line 2622 "engines/director/lingo/lingo-gr.cpp"
+#line 2850 "engines/director/lingo/lingo-gr.cpp"
break;
case 82:
#line 468 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_le); }
-#line 2628 "engines/director/lingo/lingo-gr.cpp"
+#line 2856 "engines/director/lingo/lingo-gr.cpp"
break;
case 83:
#line 469 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_and); }
-#line 2634 "engines/director/lingo/lingo-gr.cpp"
+#line 2862 "engines/director/lingo/lingo-gr.cpp"
break;
case 84:
#line 470 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_or); }
-#line 2640 "engines/director/lingo/lingo-gr.cpp"
+#line 2868 "engines/director/lingo/lingo-gr.cpp"
break;
case 85:
#line 471 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_not); }
-#line 2646 "engines/director/lingo/lingo-gr.cpp"
+#line 2874 "engines/director/lingo/lingo-gr.cpp"
break;
case 86:
#line 472 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_ampersand); }
-#line 2652 "engines/director/lingo/lingo-gr.cpp"
+#line 2880 "engines/director/lingo/lingo-gr.cpp"
break;
case 87:
#line 473 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_concat); }
-#line 2658 "engines/director/lingo/lingo-gr.cpp"
+#line 2886 "engines/director/lingo/lingo-gr.cpp"
break;
case 88:
#line 474 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_contains); }
-#line 2664 "engines/director/lingo/lingo-gr.cpp"
+#line 2892 "engines/director/lingo/lingo-gr.cpp"
break;
case 89:
#line 475 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_starts); }
-#line 2670 "engines/director/lingo/lingo-gr.cpp"
+#line 2898 "engines/director/lingo/lingo-gr.cpp"
break;
case 90:
#line 476 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[0].code); }
-#line 2676 "engines/director/lingo/lingo-gr.cpp"
+#line 2904 "engines/director/lingo/lingo-gr.cpp"
break;
case 91:
#line 477 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2682 "engines/director/lingo/lingo-gr.cpp"
+#line 2910 "engines/director/lingo/lingo-gr.cpp"
break;
case 92:
#line 478 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[-1].code); }
-#line 2688 "engines/director/lingo/lingo-gr.cpp"
+#line 2916 "engines/director/lingo/lingo-gr.cpp"
break;
case 93:
#line 479 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_intersects); }
-#line 2694 "engines/director/lingo/lingo-gr.cpp"
+#line 2922 "engines/director/lingo/lingo-gr.cpp"
break;
case 94:
#line 480 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_within); }
-#line 2700 "engines/director/lingo/lingo-gr.cpp"
+#line 2928 "engines/director/lingo/lingo-gr.cpp"
break;
case 95:
#line 482 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_charOf); }
-#line 2706 "engines/director/lingo/lingo-gr.cpp"
+#line 2934 "engines/director/lingo/lingo-gr.cpp"
break;
case 96:
#line 483 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_charToOf); }
-#line 2712 "engines/director/lingo/lingo-gr.cpp"
+#line 2940 "engines/director/lingo/lingo-gr.cpp"
break;
case 97:
#line 484 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_itemOf); }
-#line 2718 "engines/director/lingo/lingo-gr.cpp"
+#line 2946 "engines/director/lingo/lingo-gr.cpp"
break;
case 98:
#line 485 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_itemToOf); }
-#line 2724 "engines/director/lingo/lingo-gr.cpp"
+#line 2952 "engines/director/lingo/lingo-gr.cpp"
break;
case 99:
#line 486 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_lineOf); }
-#line 2730 "engines/director/lingo/lingo-gr.cpp"
+#line 2958 "engines/director/lingo/lingo-gr.cpp"
break;
case 100:
#line 487 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_lineToOf); }
-#line 2736 "engines/director/lingo/lingo-gr.cpp"
+#line 2964 "engines/director/lingo/lingo-gr.cpp"
break;
case 101:
#line 488 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_wordOf); }
-#line 2742 "engines/director/lingo/lingo-gr.cpp"
+#line 2970 "engines/director/lingo/lingo-gr.cpp"
break;
case 102:
#line 489 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_wordToOf); }
-#line 2748 "engines/director/lingo/lingo-gr.cpp"
+#line 2976 "engines/director/lingo/lingo-gr.cpp"
break;
case 103:
@@ -2752,49 +2980,49 @@ yyreduce:
{
g_lingo->codeFunc((yyvsp[-1].s), 1);
delete (yyvsp[-1].s); }
-#line 2756 "engines/director/lingo/lingo-gr.cpp"
+#line 2984 "engines/director/lingo/lingo-gr.cpp"
break;
case 105:
#line 496 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_printtop); }
-#line 2762 "engines/director/lingo/lingo-gr.cpp"
+#line 2990 "engines/director/lingo/lingo-gr.cpp"
break;
case 108:
#line 499 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_exitRepeat); }
-#line 2768 "engines/director/lingo/lingo-gr.cpp"
+#line 2996 "engines/director/lingo/lingo-gr.cpp"
break;
case 109:
#line 500 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_procret); }
-#line 2774 "engines/director/lingo/lingo-gr.cpp"
+#line 3002 "engines/director/lingo/lingo-gr.cpp"
break;
case 110:
#line 501 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateInArgs; }
-#line 2780 "engines/director/lingo/lingo-gr.cpp"
+#line 3008 "engines/director/lingo/lingo-gr.cpp"
break;
case 111:
#line 501 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateNone; }
-#line 2786 "engines/director/lingo/lingo-gr.cpp"
+#line 3014 "engines/director/lingo/lingo-gr.cpp"
break;
case 112:
#line 502 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateInArgs; }
-#line 2792 "engines/director/lingo/lingo-gr.cpp"
+#line 3020 "engines/director/lingo/lingo-gr.cpp"
break;
case 113:
#line 502 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateNone; }
-#line 2798 "engines/director/lingo/lingo-gr.cpp"
+#line 3026 "engines/director/lingo/lingo-gr.cpp"
break;
case 115:
@@ -2802,7 +3030,7 @@ yyreduce:
{
g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
delete (yyvsp[-3].s); }
-#line 2806 "engines/director/lingo/lingo-gr.cpp"
+#line 3034 "engines/director/lingo/lingo-gr.cpp"
break;
case 116:
@@ -2810,19 +3038,19 @@ yyreduce:
{
g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
delete (yyvsp[-1].s); }
-#line 2814 "engines/director/lingo/lingo-gr.cpp"
+#line 3042 "engines/director/lingo/lingo-gr.cpp"
break;
case 117:
#line 510 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_open); }
-#line 2820 "engines/director/lingo/lingo-gr.cpp"
+#line 3048 "engines/director/lingo/lingo-gr.cpp"
break;
case 118:
#line 511 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 2826 "engines/director/lingo/lingo-gr.cpp"
+#line 3054 "engines/director/lingo/lingo-gr.cpp"
break;
case 119:
@@ -2831,7 +3059,7 @@ yyreduce:
g_lingo->code1(LC::c_global);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2835 "engines/director/lingo/lingo-gr.cpp"
+#line 3063 "engines/director/lingo/lingo-gr.cpp"
break;
case 120:
@@ -2840,7 +3068,7 @@ yyreduce:
g_lingo->code1(LC::c_global);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2844 "engines/director/lingo/lingo-gr.cpp"
+#line 3072 "engines/director/lingo/lingo-gr.cpp"
break;
case 121:
@@ -2849,7 +3077,7 @@ yyreduce:
g_lingo->code1(LC::c_property);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2853 "engines/director/lingo/lingo-gr.cpp"
+#line 3081 "engines/director/lingo/lingo-gr.cpp"
break;
case 122:
@@ -2858,7 +3086,7 @@ yyreduce:
g_lingo->code1(LC::c_property);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2862 "engines/director/lingo/lingo-gr.cpp"
+#line 3090 "engines/director/lingo/lingo-gr.cpp"
break;
case 123:
@@ -2867,7 +3095,7 @@ yyreduce:
g_lingo->code1(LC::c_instance);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2871 "engines/director/lingo/lingo-gr.cpp"
+#line 3099 "engines/director/lingo/lingo-gr.cpp"
break;
case 124:
@@ -2876,25 +3104,25 @@ yyreduce:
g_lingo->code1(LC::c_instance);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2880 "engines/director/lingo/lingo-gr.cpp"
+#line 3108 "engines/director/lingo/lingo-gr.cpp"
break;
case 125:
#line 547 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotoloop); }
-#line 2886 "engines/director/lingo/lingo-gr.cpp"
+#line 3114 "engines/director/lingo/lingo-gr.cpp"
break;
case 126:
#line 548 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotonext); }
-#line 2892 "engines/director/lingo/lingo-gr.cpp"
+#line 3120 "engines/director/lingo/lingo-gr.cpp"
break;
case 127:
#line 549 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotoprevious); }
-#line 2898 "engines/director/lingo/lingo-gr.cpp"
+#line 3126 "engines/director/lingo/lingo-gr.cpp"
break;
case 128:
@@ -2903,7 +3131,7 @@ yyreduce:
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(1);
g_lingo->code1(LC::c_goto); }
-#line 2907 "engines/director/lingo/lingo-gr.cpp"
+#line 3135 "engines/director/lingo/lingo-gr.cpp"
break;
case 129:
@@ -2912,7 +3140,7 @@ yyreduce:
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(3);
g_lingo->code1(LC::c_goto); }
-#line 2916 "engines/director/lingo/lingo-gr.cpp"
+#line 3144 "engines/director/lingo/lingo-gr.cpp"
break;
case 130:
@@ -2921,7 +3149,7 @@ yyreduce:
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(2);
g_lingo->code1(LC::c_goto); }
-#line 2925 "engines/director/lingo/lingo-gr.cpp"
+#line 3153 "engines/director/lingo/lingo-gr.cpp"
break;
case 133:
@@ -2930,7 +3158,7 @@ yyreduce:
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(1);
g_lingo->code1(LC::c_play); }
-#line 2934 "engines/director/lingo/lingo-gr.cpp"
+#line 3162 "engines/director/lingo/lingo-gr.cpp"
break;
case 134:
@@ -2939,7 +3167,7 @@ yyreduce:
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(3);
g_lingo->code1(LC::c_play); }
-#line 2943 "engines/director/lingo/lingo-gr.cpp"
+#line 3171 "engines/director/lingo/lingo-gr.cpp"
break;
case 135:
@@ -2948,13 +3176,13 @@ yyreduce:
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(2);
g_lingo->code1(LC::c_play); }
-#line 2952 "engines/director/lingo/lingo-gr.cpp"
+#line 3180 "engines/director/lingo/lingo-gr.cpp"
break;
case 136:
#line 578 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeSetImmediate(true); }
-#line 2958 "engines/director/lingo/lingo-gr.cpp"
+#line 3186 "engines/director/lingo/lingo-gr.cpp"
break;
case 137:
@@ -2963,19 +3191,19 @@ yyreduce:
g_lingo->codeSetImmediate(false);
g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
delete (yyvsp[-2].s); }
-#line 2967 "engines/director/lingo/lingo-gr.cpp"
+#line 3195 "engines/director/lingo/lingo-gr.cpp"
break;
case 138:
#line 608 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateInArgs; }
-#line 2973 "engines/director/lingo/lingo-gr.cpp"
+#line 3201 "engines/director/lingo/lingo-gr.cpp"
break;
case 139:
#line 608 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_currentFactory.clear(); }
-#line 2979 "engines/director/lingo/lingo-gr.cpp"
+#line 3207 "engines/director/lingo/lingo-gr.cpp"
break;
case 140:
@@ -2986,19 +3214,19 @@ yyreduce:
g_lingo->clearArgStack();
g_lingo->_indef = kStateNone;
delete (yyvsp[-6].s); }
-#line 2990 "engines/director/lingo/lingo-gr.cpp"
+#line 3218 "engines/director/lingo/lingo-gr.cpp"
break;
case 141:
#line 615 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 2996 "engines/director/lingo/lingo-gr.cpp"
+#line 3224 "engines/director/lingo/lingo-gr.cpp"
break;
case 142:
#line 616 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateInArgs; }
-#line 3002 "engines/director/lingo/lingo-gr.cpp"
+#line 3230 "engines/director/lingo/lingo-gr.cpp"
break;
case 143:
@@ -3009,7 +3237,7 @@ yyreduce:
g_lingo->clearArgStack();
g_lingo->_indef = kStateNone;
delete (yyvsp[-6].s); }
-#line 3013 "engines/director/lingo/lingo-gr.cpp"
+#line 3241 "engines/director/lingo/lingo-gr.cpp"
break;
case 144:
@@ -3024,7 +3252,7 @@ yyreduce:
checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
delete (yyvsp[-7].s);
delete (yyvsp[-1].s); }
-#line 3028 "engines/director/lingo/lingo-gr.cpp"
+#line 3256 "engines/director/lingo/lingo-gr.cpp"
break;
case 145:
@@ -3036,61 +3264,61 @@ yyreduce:
g_lingo->clearArgStack();
g_lingo->_ignoreMe = false;
delete (yyvsp[-5].s); }
-#line 3040 "engines/director/lingo/lingo-gr.cpp"
+#line 3268 "engines/director/lingo/lingo-gr.cpp"
break;
case 146:
#line 641 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateInArgs; }
-#line 3046 "engines/director/lingo/lingo-gr.cpp"
+#line 3274 "engines/director/lingo/lingo-gr.cpp"
break;
case 147:
#line 641 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3052 "engines/director/lingo/lingo-gr.cpp"
+#line 3280 "engines/director/lingo/lingo-gr.cpp"
break;
case 148:
#line 643 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 0; }
-#line 3058 "engines/director/lingo/lingo-gr.cpp"
+#line 3286 "engines/director/lingo/lingo-gr.cpp"
break;
case 149:
#line 644 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3064 "engines/director/lingo/lingo-gr.cpp"
+#line 3292 "engines/director/lingo/lingo-gr.cpp"
break;
case 150:
#line 645 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3070 "engines/director/lingo/lingo-gr.cpp"
+#line 3298 "engines/director/lingo/lingo-gr.cpp"
break;
case 151:
#line 646 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 3076 "engines/director/lingo/lingo-gr.cpp"
+#line 3304 "engines/director/lingo/lingo-gr.cpp"
break;
case 153:
#line 649 "engines/director/lingo/lingo-gr.y"
{ delete (yyvsp[0].s); }
-#line 3082 "engines/director/lingo/lingo-gr.cpp"
+#line 3310 "engines/director/lingo/lingo-gr.cpp"
break;
case 154:
#line 650 "engines/director/lingo/lingo-gr.y"
{ delete (yyvsp[0].s); }
-#line 3088 "engines/director/lingo/lingo-gr.cpp"
+#line 3316 "engines/director/lingo/lingo-gr.cpp"
break;
case 155:
#line 652 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 3094 "engines/director/lingo/lingo-gr.cpp"
+#line 3322 "engines/director/lingo/lingo-gr.cpp"
break;
case 156:
@@ -3102,91 +3330,91 @@ yyreduce:
WRITE_UINT32(&numpar, (yyvsp[0].narg));
g_lingo->code1(numpar);
delete (yyvsp[-1].s); }
-#line 3106 "engines/director/lingo/lingo-gr.cpp"
+#line 3334 "engines/director/lingo/lingo-gr.cpp"
break;
case 157:
#line 662 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 0; }
-#line 3112 "engines/director/lingo/lingo-gr.cpp"
+#line 3340 "engines/director/lingo/lingo-gr.cpp"
break;
case 158:
#line 663 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3118 "engines/director/lingo/lingo-gr.cpp"
+#line 3346 "engines/director/lingo/lingo-gr.cpp"
break;
case 159:
#line 664 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3124 "engines/director/lingo/lingo-gr.cpp"
+#line 3352 "engines/director/lingo/lingo-gr.cpp"
break;
case 160:
#line 666 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3130 "engines/director/lingo/lingo-gr.cpp"
+#line 3358 "engines/director/lingo/lingo-gr.cpp"
break;
case 161:
#line 667 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3136 "engines/director/lingo/lingo-gr.cpp"
+#line 3364 "engines/director/lingo/lingo-gr.cpp"
break;
case 162:
#line 669 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[-1].code); }
-#line 3142 "engines/director/lingo/lingo-gr.cpp"
+#line 3370 "engines/director/lingo/lingo-gr.cpp"
break;
case 163:
#line 671 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3148 "engines/director/lingo/lingo-gr.cpp"
+#line 3376 "engines/director/lingo/lingo-gr.cpp"
break;
case 164:
#line 672 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3154 "engines/director/lingo/lingo-gr.cpp"
+#line 3382 "engines/director/lingo/lingo-gr.cpp"
break;
case 165:
#line 673 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3160 "engines/director/lingo/lingo-gr.cpp"
+#line 3388 "engines/director/lingo/lingo-gr.cpp"
break;
case 166:
#line 674 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3166 "engines/director/lingo/lingo-gr.cpp"
+#line 3394 "engines/director/lingo/lingo-gr.cpp"
break;
case 167:
#line 676 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3172 "engines/director/lingo/lingo-gr.cpp"
+#line 3400 "engines/director/lingo/lingo-gr.cpp"
break;
case 168:
#line 677 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3178 "engines/director/lingo/lingo-gr.cpp"
+#line 3406 "engines/director/lingo/lingo-gr.cpp"
break;
case 169:
#line 679 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3184 "engines/director/lingo/lingo-gr.cpp"
+#line 3412 "engines/director/lingo/lingo-gr.cpp"
break;
case 170:
#line 680 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3190 "engines/director/lingo/lingo-gr.cpp"
+#line 3418 "engines/director/lingo/lingo-gr.cpp"
break;
case 171:
@@ -3195,7 +3423,7 @@ yyreduce:
g_lingo->code1(LC::c_symbolpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
delete (yyvsp[-2].s); }
-#line 3199 "engines/director/lingo/lingo-gr.cpp"
+#line 3427 "engines/director/lingo/lingo-gr.cpp"
break;
case 172:
@@ -3204,11 +3432,11 @@ yyreduce:
g_lingo->code1(LC::c_stringpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
delete (yyvsp[-2].s); }
-#line 3208 "engines/director/lingo/lingo-gr.cpp"
+#line 3436 "engines/director/lingo/lingo-gr.cpp"
break;
-#line 3212 "engines/director/lingo/lingo-gr.cpp"
+#line 3440 "engines/director/lingo/lingo-gr.cpp"
default: break;
}
@@ -3223,11 +3451,10 @@ yyreduce:
case of YYERROR or YYBACKUP, subsequent parser actions might lead
to an incorrect destructor call or verbose syntax error message
before the lookahead is translated. */
- YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
YYPOPSTACK (yylen);
yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
@@ -3251,50 +3478,44 @@ yyreduce:
yyerrlab:
/* Make sure we have latest lookahead translation. See comments at
user semantic actions for why this is necessary. */
- yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
-
+ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
++yynerrs;
-#if ! YYERROR_VERBOSE
- yyerror (YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
- yyssp, yytoken)
{
+ yypcontext_t yyctx
+ = {yyssp, yytoken};
char const *yymsgp = YY_("syntax error");
int yysyntax_error_status;
- yysyntax_error_status = YYSYNTAX_ERROR;
+ yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
if (yysyntax_error_status == 0)
yymsgp = yymsg;
- else if (yysyntax_error_status == 1)
+ else if (yysyntax_error_status == -1)
{
if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg);
- yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
- if (!yymsg)
+ yymsg = YY_CAST (char *,
+ YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
+ if (yymsg)
{
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- yysyntax_error_status = 2;
+ yysyntax_error_status
+ = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
+ yymsgp = yymsg;
}
else
{
- yysyntax_error_status = YYSYNTAX_ERROR;
- yymsgp = yymsg;
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ yysyntax_error_status = YYENOMEM;
}
}
yyerror (yymsgp);
- if (yysyntax_error_status == 2)
+ if (yysyntax_error_status == YYENOMEM)
goto yyexhaustedlab;
}
-# undef YYSYNTAX_ERROR
-#endif
}
-
-
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
@@ -3343,13 +3564,14 @@ yyerrorlab:
yyerrlab1:
yyerrstatus = 3; /* Each real token shifted decrements this. */
+ // Pop stack until we find a state that shifts the error token.
for (;;)
{
yyn = yypact[yystate];
if (!yypact_value_is_default (yyn))
{
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ yyn += YYSYMBOL_YYerror;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
{
yyn = yytable[yyn];
if (0 < yyn)
@@ -3363,7 +3585,7 @@ yyerrlab1:
yydestruct ("Error: popping",
- yystos[yystate], yyvsp);
+ YY_ACCESSING_SYMBOL (yystate), yyvsp);
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
@@ -3375,7 +3597,7 @@ yyerrlab1:
/* Shift the error token. */
- YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
yystate = yyn;
goto yynewstate;
@@ -3397,7 +3619,7 @@ yyabortlab:
goto yyreturn;
-#if !defined yyoverflow || YYERROR_VERBOSE
+#if 1
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
@@ -3427,18 +3649,17 @@ yyreturn:
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[+*yyssp], yyvsp);
+ YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
YYPOPSTACK (1);
}
#ifndef yyoverflow
if (yyss != yyssa)
YYSTACK_FREE (yyss);
#endif
-#if YYERROR_VERBOSE
if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg);
-#endif
return yyresult;
}
+
#line 692 "engines/director/lingo/lingo-gr.y"
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 6360c9835c..fbf5878c83 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 3.5.4. */
+/* A Bison parser, made by GNU Bison 3.5.91. */
/* Bison interface for Yacc-like parsers in C
@@ -31,8 +31,9 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
-/* Undocumented macros, especially those whose name start with YY_,
- are private implementation details. Do not rely on them. */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
#ifndef YY_YY_ENGINES_DIRECTOR_LINGO_LINGO_GR_H_INCLUDED
# define YY_YY_ENGINES_DIRECTOR_LINGO_LINGO_GR_H_INCLUDED
@@ -44,97 +45,102 @@
extern int yydebug;
#endif
-/* Token type. */
+/* Token kinds. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
enum yytokentype
{
- UNARY = 258,
- CASTREF = 259,
- VOID = 260,
- VAR = 261,
- POINT = 262,
- RECT = 263,
- ARRAY = 264,
- OBJECT = 265,
- REFERENCE = 266,
- LEXERROR = 267,
- PARRAY = 268,
- INT = 269,
- ARGC = 270,
- ARGCNORET = 271,
- THEENTITY = 272,
- THEENTITYWITHID = 273,
- THEMENUITEMENTITY = 274,
- THEMENUITEMSENTITY = 275,
- FLOAT = 276,
- BLTIN = 277,
- FBLTIN = 278,
- RBLTIN = 279,
- ID = 280,
- STRING = 281,
- HANDLER = 282,
- SYMBOL = 283,
- ENDCLAUSE = 284,
- tPLAYACCEL = 285,
- tMETHOD = 286,
- THEOBJECTFIELD = 287,
- THEOBJECTREF = 288,
- tDOWN = 289,
- tELSE = 290,
- tELSIF = 291,
- tEXIT = 292,
- tGLOBAL = 293,
- tGO = 294,
- tIF = 295,
- tIN = 296,
- tINTO = 297,
- tLOOP = 298,
- tMACRO = 299,
- tMOVIE = 300,
- tNEXT = 301,
- tOF = 302,
- tPREVIOUS = 303,
- tPUT = 304,
- tREPEAT = 305,
- tSET = 306,
- tTHEN = 307,
- tTO = 308,
- tWHEN = 309,
- tWITH = 310,
- tWHILE = 311,
- tNLELSE = 312,
- tFACTORY = 313,
- tOPEN = 314,
- tPLAY = 315,
- tINSTANCE = 316,
- tGE = 317,
- tLE = 318,
- tEQ = 319,
- tNEQ = 320,
- tAND = 321,
- tOR = 322,
- tNOT = 323,
- tMOD = 324,
- tAFTER = 325,
- tBEFORE = 326,
- tCONCAT = 327,
- tCONTAINS = 328,
- tSTARTS = 329,
- tCHAR = 330,
- tITEM = 331,
- tLINE = 332,
- tWORD = 333,
- tSPRITE = 334,
- tINTERSECTS = 335,
- tWITHIN = 336,
- tTELL = 337,
- tPROPERTY = 338,
- tON = 339,
- tENDIF = 340,
- tENDREPEAT = 341,
- tENDTELL = 342
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ UNARY = 258, /* UNARY */
+ CASTREF = 259, /* CASTREF */
+ VOID = 260, /* VOID */
+ VAR = 261, /* VAR */
+ POINT = 262, /* POINT */
+ RECT = 263, /* RECT */
+ ARRAY = 264, /* ARRAY */
+ OBJECT = 265, /* OBJECT */
+ REFERENCE = 266, /* REFERENCE */
+ LEXERROR = 267, /* LEXERROR */
+ PARRAY = 268, /* PARRAY */
+ INT = 269, /* INT */
+ ARGC = 270, /* ARGC */
+ ARGCNORET = 271, /* ARGCNORET */
+ THEENTITY = 272, /* THEENTITY */
+ THEENTITYWITHID = 273, /* THEENTITYWITHID */
+ THEMENUITEMENTITY = 274, /* THEMENUITEMENTITY */
+ THEMENUITEMSENTITY = 275, /* THEMENUITEMSENTITY */
+ FLOAT = 276, /* FLOAT */
+ BLTIN = 277, /* BLTIN */
+ FBLTIN = 278, /* FBLTIN */
+ RBLTIN = 279, /* RBLTIN */
+ ID = 280, /* ID */
+ STRING = 281, /* STRING */
+ HANDLER = 282, /* HANDLER */
+ SYMBOL = 283, /* SYMBOL */
+ ENDCLAUSE = 284, /* ENDCLAUSE */
+ tPLAYACCEL = 285, /* tPLAYACCEL */
+ tMETHOD = 286, /* tMETHOD */
+ THEOBJECTFIELD = 287, /* THEOBJECTFIELD */
+ THEOBJECTREF = 288, /* THEOBJECTREF */
+ tDOWN = 289, /* tDOWN */
+ tELSE = 290, /* tELSE */
+ tELSIF = 291, /* tELSIF */
+ tEXIT = 292, /* tEXIT */
+ tGLOBAL = 293, /* tGLOBAL */
+ tGO = 294, /* tGO */
+ tIF = 295, /* tIF */
+ tIN = 296, /* tIN */
+ tINTO = 297, /* tINTO */
+ tLOOP = 298, /* tLOOP */
+ tMACRO = 299, /* tMACRO */
+ tMOVIE = 300, /* tMOVIE */
+ tNEXT = 301, /* tNEXT */
+ tOF = 302, /* tOF */
+ tPREVIOUS = 303, /* tPREVIOUS */
+ tPUT = 304, /* tPUT */
+ tREPEAT = 305, /* tREPEAT */
+ tSET = 306, /* tSET */
+ tTHEN = 307, /* tTHEN */
+ tTO = 308, /* tTO */
+ tWHEN = 309, /* tWHEN */
+ tWITH = 310, /* tWITH */
+ tWHILE = 311, /* tWHILE */
+ tNLELSE = 312, /* tNLELSE */
+ tFACTORY = 313, /* tFACTORY */
+ tOPEN = 314, /* tOPEN */
+ tPLAY = 315, /* tPLAY */
+ tINSTANCE = 316, /* tINSTANCE */
+ tGE = 317, /* tGE */
+ tLE = 318, /* tLE */
+ tEQ = 319, /* tEQ */
+ tNEQ = 320, /* tNEQ */
+ tAND = 321, /* tAND */
+ tOR = 322, /* tOR */
+ tNOT = 323, /* tNOT */
+ tMOD = 324, /* tMOD */
+ tAFTER = 325, /* tAFTER */
+ tBEFORE = 326, /* tBEFORE */
+ tCONCAT = 327, /* tCONCAT */
+ tCONTAINS = 328, /* tCONTAINS */
+ tSTARTS = 329, /* tSTARTS */
+ tCHAR = 330, /* tCHAR */
+ tITEM = 331, /* tITEM */
+ tLINE = 332, /* tLINE */
+ tWORD = 333, /* tWORD */
+ tSPRITE = 334, /* tSPRITE */
+ tINTERSECTS = 335, /* tINTERSECTS */
+ tWITHIN = 336, /* tWITHIN */
+ tTELL = 337, /* tTELL */
+ tPROPERTY = 338, /* tPROPERTY */
+ tON = 339, /* tON */
+ tENDIF = 340, /* tENDIF */
+ tENDREPEAT = 341, /* tENDREPEAT */
+ tENDTELL = 342 /* tENDTELL */
};
+ typedef enum yytokentype yytoken_kind_t;
#endif
/* Value type. */
@@ -161,7 +167,7 @@ union YYSTYPE
Common::String *field;
} objectref;
-#line 165 "engines/director/lingo/lingo-gr.h"
+#line 171 "engines/director/lingo/lingo-gr.h"
};
typedef union YYSTYPE YYSTYPE;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 5569a7052c..80f9e1316d 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -416,6 +416,14 @@ simpleexpr: INT {
$$ = g_lingo->code1(LC::c_eval);
g_lingo->codeString($ID->c_str());
delete $ID; }
+ | THEENTITY {
+ $$ = g_lingo->code1(LC::c_intpush);
+ g_lingo->codeInt(0); // Put dummy id
+ g_lingo->code1(LC::c_theentitypush);
+ inst e = 0, f = 0;
+ WRITE_UINT32(&e, $THEENTITY[0]);
+ WRITE_UINT32(&f, $THEENTITY[1]);
+ g_lingo->code2(e, f); }
| list
expr: simpleexpr { $$ = $simpleexpr; }
@@ -429,14 +437,6 @@ expr: simpleexpr { $$ = $simpleexpr; }
| ID '(' arglist ')' {
$$ = g_lingo->codeFunc($ID, $arglist);
delete $ID; }
- | THEENTITY {
- $$ = g_lingo->code1(LC::c_intpush);
- g_lingo->codeInt(0); // Put dummy id
- g_lingo->code1(LC::c_theentitypush);
- inst e = 0, f = 0;
- WRITE_UINT32(&e, $THEENTITY[0]);
- WRITE_UINT32(&f, $THEENTITY[1]);
- g_lingo->code2(e, f); }
| THEENTITYWITHID simpleexpr {
$$ = g_lingo->code1(LC::c_theentitypush);
inst e = 0, f = 0;
Commit: 8c6952834ba6151d5441815507ba9a12edd3d042
https://github.com/scummvm/scummvm/commit/8c6952834ba6151d5441815507ba9a12edd3d042
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-10T01:15:07+02:00
Commit Message:
DIRECTOR: LINGO: Added test for 'the' entities as cast number
Changed paths:
engines/director/lingo/tests/the.lingo
diff --git a/engines/director/lingo/tests/the.lingo b/engines/director/lingo/tests/the.lingo
index 70d6e3e313..4ceb61deae 100644
--- a/engines/director/lingo/tests/the.lingo
+++ b/engines/director/lingo/tests/the.lingo
@@ -41,3 +41,5 @@ put the number of castMembers into field 5
put the number of menuItems of menu "sam" into field 3
put abs( the locH of sprite 2 - the mouseH) into field 4
+
+set the castNum of sprite the clickon = the number of cast "main.hi"
Commit: 4b4b73dff92bbfe86013613006c1231d2c2da7db
https://github.com/scummvm/scummvm/commit/4b4b73dff92bbfe86013613006c1231d2c2da7db
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-10T01:15:07+02:00
Commit Message:
DIRECTOR: LINGO: Added sanity check to b_updateStage()
Changed paths:
engines/director/lingo/lingo-builtins.cpp
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index cabd04f922..01d9819e5a 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -1905,6 +1905,13 @@ void LB::b_updateStage(int nargs) {
ARGNUMCHECK(0);
Score *score = g_director->getCurrentScore();
+
+ if (!score) {
+ warning("b_updateStage: no score");
+
+ return;
+ }
+
uint16 curFrame = score->getCurrentFrame();
Frame *frame = score->_frames[curFrame];
More information about the Scummvm-git-logs
mailing list