[Scummvm-git-logs] scummvm master -> 729b8285c87559c948145cffc560709a75cd3a60
sev-
sev at scummvm.org
Thu May 14 19:50:30 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
729b8285c8 DIRECTOR: LINGO: Better error recovery, custom error processor
Commit: 729b8285c87559c948145cffc560709a75cd3a60
https://github.com/scummvm/scummvm/commit/729b8285c87559c948145cffc560709a75cd3a60
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-14T21:50:16+02:00
Commit Message:
DIRECTOR: LINGO: Better error recovery, custom error processor
This bumps bison requirement to 3.6
Changed paths:
engines/director/lingo/lingo-gr.cpp
engines/director/lingo/lingo-gr.h
engines/director/lingo/lingo-gr.y
engines/director/lingo/lingo-lex.cpp
engines/director/lingo/lingo-lex.l
engines/director/lingo/lingo.cpp
engines/director/lingo/lingo.h
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 44dcbe7b8a..b89389087a 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -86,15 +86,8 @@ extern void lex_unput(int c);
extern bool lex_check_parens();
using namespace Director;
-void yyerror(const char *s) {
- // Director parser till D3 was forgiving for any hanging parentheses
- if (g_director->getVersion() <= 4) {
- if (lex_check_parens()) {
- warning("# LINGO: Ignoring trailing parens");
- return;
- }
- }
+void yyerror(const char *s) {
g_lingo->_hadError = true;
warning("###################### LINGO: %s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
}
@@ -109,7 +102,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
}
-#line 113 "engines/director/lingo/lingo-gr.cpp"
+#line 106 "engines/director/lingo/lingo-gr.cpp"
# ifndef YY_CAST
# ifdef __cplusplus
@@ -247,7 +240,7 @@ extern int yydebug;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 96 "engines/director/lingo/lingo-gr.y"
+#line 89 "engines/director/lingo/lingo-gr.y"
Common::String *s;
int i;
@@ -267,7 +260,7 @@ union YYSTYPE
Common::String *field;
} objectref;
-#line 271 "engines/director/lingo/lingo-gr.cpp"
+#line 264 "engines/director/lingo/lingo-gr.cpp"
};
typedef union YYSTYPE YYSTYPE;
@@ -749,7 +742,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 129
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 1657
+#define YYLAST 2363
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 104
@@ -815,24 +808,24 @@ static const yytype_int8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 151, 151, 152, 154, 155, 156, 157, 159, 165,
- 169, 180, 181, 182, 188, 195, 201, 208, 214, 221,
- 232, 239, 240, 241, 243, 244, 245, 246, 248, 249,
- 254, 265, 282, 294, 305, 307, 312, 316, 321, 325,
- 335, 346, 347, 349, 356, 366, 377, 379, 385, 391,
- 398, 400, 402, 403, 404, 406, 412, 415, 418, 422,
- 426, 430, 438, 439, 441, 442, 443, 446, 449, 452,
- 455, 461, 466, 472, 473, 474, 475, 476, 477, 478,
- 479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
- 489, 490, 491, 492, 493, 494, 496, 497, 498, 499,
- 500, 501, 502, 503, 505, 508, 510, 511, 512, 513,
- 514, 515, 515, 516, 516, 517, 518, 521, 524, 525,
- 527, 531, 536, 540, 545, 549, 561, 562, 563, 564,
- 568, 572, 577, 578, 580, 584, 588, 592, 592, 622,
- 622, 622, 629, 630, 630, 637, 647, 655, 655, 657,
- 658, 659, 661, 662, 663, 665, 667, 675, 676, 677,
- 679, 680, 682, 684, 685, 686, 687, 689, 690, 692,
- 693, 695, 699
+ 0, 144, 144, 145, 147, 148, 149, 151, 157, 161,
+ 172, 173, 174, 180, 187, 193, 200, 206, 213, 224,
+ 231, 232, 233, 235, 236, 237, 238, 240, 241, 246,
+ 257, 274, 286, 297, 299, 304, 308, 313, 317, 327,
+ 338, 339, 341, 348, 358, 369, 371, 377, 383, 390,
+ 392, 394, 395, 396, 398, 404, 407, 410, 414, 418,
+ 422, 430, 431, 432, 443, 444, 445, 448, 451, 454,
+ 457, 463, 468, 474, 475, 476, 477, 478, 479, 480,
+ 481, 482, 483, 484, 485, 486, 487, 488, 489, 490,
+ 491, 492, 493, 494, 495, 496, 498, 499, 500, 501,
+ 502, 503, 504, 505, 507, 510, 512, 513, 514, 515,
+ 516, 517, 517, 518, 518, 519, 520, 523, 526, 527,
+ 529, 533, 538, 542, 547, 551, 563, 564, 565, 566,
+ 570, 574, 579, 580, 582, 586, 590, 594, 594, 624,
+ 624, 624, 631, 632, 632, 639, 649, 657, 657, 659,
+ 660, 661, 663, 664, 665, 667, 669, 677, 678, 679,
+ 681, 682, 684, 686, 687, 688, 689, 691, 692, 694,
+ 695, 697, 701
};
#endif
@@ -844,25 +837,26 @@ static const yytype_int16 yyrline[] =
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[] =
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
{
- "\"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", "THEFBLTIN", "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'", "'('", "')'", "','", "'['", "']'", "':'",
+ static const char *const yy_sname[] =
+ {
+ "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", "THEFBLTIN", "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",
@@ -872,12 +866,8 @@ static const char *const yytname[] =
"$@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];
+ };
+ return yy_sname[yysymbol];
}
#endif
@@ -905,7 +895,7 @@ static const yytype_int16 yytoknum[] =
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF (-5)
+#define YYTABLE_NINF (-164)
#define yytable_value_is_error(Yyn) \
0
@@ -914,44 +904,44 @@ static const yytype_int16 yytoknum[] =
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 321, -77, -275, -275, 31, -275, 941, 978, 31, -15,
- 1060, -275, -275, -275, -275, -275, -275, 4, -275, 822,
- -275, -275, 10, 204, -7, 92, -2, 44, 1097, 859,
- 55, 1097, 1097, 1097, 1097, 1097, 1097, 1097, -275, -275,
- 1097, 1097, 1097, 406, 97, 9, -275, -275, -275, -275,
- 1097, -26, 1097, 658, -275, 1549, -275, -275, -275, -275,
- -275, -275, -275, -275, -275, -275, -275, -275, 15, 204,
- 1097, 1549, 26, 1097, 26, -275, 31, 1097, 1549, 28,
- 1097, -275, -275, 77, -275, 1097, -275, 71, -275, 1136,
- -275, 104, -275, 108, 398, 126, -275, -47, 31, 31,
- -33, 100, 102, -275, 1446, 1136, -275, -275, 56, -275,
- 1169, 1202, 1235, 1268, 1516, 1433, 132, 133, -275, -275,
- 1479, 57, 59, -275, 1549, 61, 64, 65, -275, -275,
- 321, 1549, -275, -275, 1549, -275, -275, 1097, 1549, -275,
- -275, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
- 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 140, 1097,
- 398, 1479, 16, 1097, 20, -275, 22, 1097, 26, 140,
- -275, 69, 1549, 1097, -275, -275, 31, 17, 1097, 1097,
- -275, 1097, 1097, -14, 122, 1097, 1097, 1097, -275, 1097,
- -275, 148, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
- 1097, 1097, -275, -275, -275, 78, -275, -275, 31, 31,
- -275, 1097, 85, -275, -275, 1097, 1097, 124, -275, 1549,
- 7, 7, 7, 7, 1562, 1562, -275, -4, 7, 7,
- 7, 7, -4, 13, 13, -275, -275, -275, -35, -275,
- 1549, -275, -275, 1549, -28, 158, 1549, -275, 142, -275,
- -275, 1549, 1549, 1549, 7, 1097, 1097, 170, 1549, 7,
- 1549, 1549, -275, 1549, 1301, 1549, 1334, 1549, 1367, 1549,
- 1400, 1549, 1549, 740, -275, 171, -275, -275, 1549, 57,
- 59, -275, 576, 1549, 1549, -275, 145, -275, 173, -275,
- -275, 140, 1097, 1549, 7, 31, 1097, 1097, 1097, 1097,
- -275, 576, -275, -275, -275, 113, -275, -16, 576, 740,
- -275, -275, -275, -24, 1549, 147, 1549, 1549, 1549, 1549,
- -275, 114, -275, 576, 149, 1097, -275, -275, 494, 576,
- -275, 1097, -275, 117, 1097, 1549, 87, -27, 180, -275,
- 1549, -275, 1549, -275, -275, -275, -275, 1097, 121, -275,
- -275, -275, 111, 576, -275, 576, -275, 1549, -275, 740,
- 182, 576, 125, 576, 160, -275, -275, 129, -275, 131,
- -275, 134, -275, -275, 576, -275, -275
+ 783, -77, -275, -275, 31, -275, 605, 321, 31, -15,
+ 506, -275, -275, -275, -275, -275, -275, 4, -275, 1630,
+ -275, -275, 10, 1786, -7, 92, 39, 44, 1868, 1667,
+ 50, 1868, 1868, 1868, 1868, 1868, 1868, 1868, -275, -275,
+ 1868, 1868, 1868, 416, 81, 0, -275, -275, -275, -275,
+ 1868, -26, 1868, 1466, -275, 2255, -275, -275, -275, -275,
+ -275, -275, -275, -275, -275, -275, -275, -275, 19, 1786,
+ 1749, 2255, 26, 1749, 26, -275, 31, 1749, 2255, 28,
+ 694, -275, -275, 77, -275, 1868, -275, 60, -275, 408,
+ -275, 104, -275, 108, 153, 126, -275, -47, 31, 31,
+ -14, 59, 103, -275, 2152, 408, -275, -275, 58, -275,
+ 1860, 1908, 1941, 1974, 2222, 2139, 133, 134, -275, -275,
+ 2185, 61, 62, -275, 2255, 64, 63, 69, -275, -275,
+ 783, 2255, -275, -275, 2255, -275, -275, 1868, 2255, -275,
+ -275, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868,
+ 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 136, 1749,
+ 153, 2185, 20, 1868, 22, -275, 24, 1868, 26, 136,
+ -275, 70, 2255, 1868, -275, -275, 31, 17, 1868, 1868,
+ -275, 1868, 1868, 8, 129, 1868, 1868, 1868, -275, 1868,
+ -275, 148, 1868, 1868, 1868, 1868, 1868, 1868, 1868, 1868,
+ 1868, 1868, -275, -275, -275, 78, -275, -275, 31, 31,
+ -275, 1868, 87, -275, -275, 1868, 1868, 131, -275, 2255,
+ 7, 7, 7, 7, 2268, 2268, -275, -4, 7, 7,
+ 7, 7, -4, 13, 13, -275, -275, -275, -76, -275,
+ 2255, -275, -275, 2255, -28, 159, 2255, -275, 154, -275,
+ -275, 2255, 2255, 2255, 7, 1868, 1868, 172, 2255, 7,
+ 2255, 2255, -275, 2255, 2007, 2255, 2040, 2255, 2073, 2255,
+ 2106, 2255, 2255, 1548, -275, 173, -275, -275, 2255, 61,
+ 62, -275, 1210, 2255, 2255, -275, 147, -275, 175, -275,
+ -275, 136, 1868, 2255, 7, 31, 1868, 1868, 1868, 1868,
+ -275, 1295, -275, -275, -275, 115, -275, -16, 1124, 1548,
+ -275, -275, -275, 15, 2255, 149, 2255, 2255, 2255, 2255,
+ -275, 116, -275, 1210, 152, 1868, -275, -275, 869, 954,
+ -275, 1868, -275, 120, 1868, 2255, 118, -27, 182, -275,
+ 2255, -275, 2255, -275, -275, -275, -275, 1868, 125, -275,
+ -275, -275, 112, 1039, -275, 1210, -275, 2255, -275, 1548,
+ 187, 1210, 135, 1380, 176, -275, -275, 143, -275, 145,
+ -275, 146, -275, -275, 1124, -275, -275
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -959,55 +949,55 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 0, 0, 56, 61, 0, 57, 157, 157, 0, 0,
- 60, 59, 58, 137, 143, 71, 72, 110, 111, 0,
- 48, 139, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 55, 60, 0, 56, 0, 0, 0, 0,
+ 0, 58, 57, 137, 143, 71, 72, 110, 111, 0,
+ 47, 139, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 113, 147,
- 0, 0, 0, 163, 0, 2, 73, 28, 6, 29,
- 0, 0, 0, 0, 64, 22, 105, 65, 23, 107,
- 108, 5, 50, 21, 63, 7, 60, 70, 60, 0,
- 157, 158, 117, 157, 67, 104, 0, 157, 160, 156,
- 157, 50, 109, 0, 126, 0, 127, 0, 128, 129,
- 131, 0, 34, 0, 106, 0, 46, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 73, 27, 6, 28,
+ 0, 0, 0, 0, 64, 21, 105, 65, 22, 107,
+ 108, 5, 49, 20, 62, 63, 59, 70, 59, 0,
+ 0, 158, 117, 0, 67, 104, 0, 0, 160, 156,
+ 0, 49, 109, 0, 126, 0, 127, 0, 128, 129,
+ 131, 0, 33, 0, 106, 0, 45, 0, 0, 0,
0, 0, 0, 142, 119, 134, 136, 124, 115, 87,
0, 0, 0, 0, 0, 0, 0, 0, 92, 93,
- 0, 59, 58, 164, 167, 0, 165, 166, 169, 1,
- 0, 51, 50, 50, 51, 51, 27, 0, 25, 26,
- 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 149, 157,
+ 0, 58, 57, 164, 167, 0, 165, 166, 169, 1,
+ 0, 50, 49, 49, 50, 50, 26, 0, 24, 25,
+ 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 149, 0,
0, 158, 0, 0, 0, 69, 0, 0, 138, 149,
120, 112, 133, 0, 130, 140, 0, 0, 0, 0,
- 47, 0, 0, 0, 0, 0, 0, 0, 55, 0,
+ 46, 0, 0, 0, 0, 0, 0, 0, 54, 0,
135, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 38, 38, 122, 114, 148, 62, 0, 0,
- 162, 0, 0, 3, 52, 0, 0, 0, 35, 51,
+ 0, 0, 37, 37, 122, 114, 148, 61, 0, 0,
+ 162, 0, 0, 3, 51, 0, 0, 0, 34, 50,
83, 84, 81, 82, 85, 86, 78, 89, 90, 91,
80, 79, 88, 74, 75, 76, 77, 150, 0, 116,
- 159, 66, 68, 161, 0, 0, 132, 50, 0, 8,
- 9, 11, 12, 16, 14, 0, 0, 0, 15, 13,
- 20, 118, 125, 96, 0, 98, 0, 100, 0, 102,
- 0, 94, 95, 0, 52, 0, 172, 171, 168, 0,
- 0, 170, 51, 51, 51, 52, 0, 155, 0, 155,
- 121, 149, 0, 17, 18, 0, 0, 0, 0, 0,
- 51, 51, 123, 53, 54, 0, 52, 0, 51, 0,
- 52, 151, 52, 0, 10, 0, 97, 99, 101, 103,
- 37, 0, 30, 51, 0, 0, 41, 51, 146, 144,
- 155, 0, 36, 0, 0, 51, 51, 0, 152, 52,
- 19, 33, 51, 52, 50, 49, 42, 0, 0, 50,
- 45, 153, 145, 141, 52, 51, 52, 51, 39, 0,
- 0, 51, 0, 51, 0, 51, 154, 0, 31, 0,
- 52, 0, 32, 40, 51, 44, 43
+ 159, 66, 68, 161, 0, 0, 132, 49, 0, 7,
+ 8, 10, 11, 15, 13, 0, 0, 0, 14, 12,
+ 19, 118, 125, 96, 0, 98, 0, 100, 0, 102,
+ 0, 94, 95, 0, 51, 0, 172, 171, 168, 0,
+ 0, 170, 0, 50, 50, 51, 0, 155, 0, 155,
+ 121, 149, 0, 16, 17, 0, 0, 0, 0, 0,
+ 50, 0, 123, 52, 53, 0, 51, 0, 0, 0,
+ 51, 151, 51, 0, 9, 0, 97, 99, 101, 103,
+ 36, 0, 29, 0, 0, 0, 40, 50, 0, 0,
+ 155, 0, 35, 0, 0, 50, 50, 0, 152, 51,
+ 18, 32, 50, 51, 49, 48, 41, 0, 0, 49,
+ 44, 153, 145, 0, 51, 0, 51, 50, 38, 0,
+ 0, 0, 0, 0, 0, 50, 154, 0, 30, 0,
+ 51, 0, 31, 39, 0, 43, 42
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -275, 89, -275, -275, -267, -275, 3, 23, -275, -275,
- -275, -275, -275, -275, 179, -275, -79, -48, 82, -275,
- 6, -6, -275, 46, 186, -275, -275, -275, -275, -275,
+ -275, 107, -275, -275, -267, -275, 3, 30, -275, -275,
+ -275, -275, -275, -275, 185, -275, -79, -48, 630, -275,
+ 6, -6, -275, 74, 186, -275, -275, -275, -275, -275,
-275, -21, -275, -275, -275, -275, -275, -275, -275, -275,
- -164, -275, -274, 187, 5, -275, -275, -275, -275, -275,
- 29
+ -164, -275, -274, 188, 5, -275, -275, -275, -275, -275,
+ 42
};
/* YYDEFGOTO[NTERM-NUM]. */
@@ -1028,313 +1018,448 @@ static const yytype_int16 yytable[] =
{
71, 71, 169, 48, 78, 244, 300, 181, 106, 349,
67, 72, 74, 89, 75, 312, 132, 94, 182, 324,
- 65, 185, 104, 105, 102, 109, 110, 111, 112, 113,
- 114, 115, 186, 76, 118, 119, 120, 124, 325, 133,
- 255, 8, 327, 249, 131, 2, 134, 138, 3, 95,
- 96, 256, 5, 215, 216, 82, 339, 66, 11, 350,
- 12, 92, 287, 160, 161, 288, 147, 161, 174, 289,
- 103, 161, 288, 330, 71, 162, 288, 147, 164, 172,
- 148, 107, 165, 147, 190, 168, 217, 218, 154, 155,
- 156, 157, 365, 32, 33, 34, 35, 129, 153, 154,
- 155, 156, 157, 170, 183, 184, 130, 156, 157, 97,
- 98, 99, 279, 159, 280, 239, 163, 173, 100, 241,
- 163, 242, 163, 344, 345, 101, 163, 313, 167, 42,
+ 65, 287, 104, 105, 288, 109, 110, 111, 112, 113,
+ 114, 115, 1, 76, 118, 119, 120, 124, 325, 133,
+ 185, 8, 327, 249, 131, 2, 134, 138, 3, 95,
+ 96, 186, 5, 215, 216, 82, 339, 66, 11, 350,
+ 12, 92, 255, 160, 161, 102, 147, 161, 174, 289,
+ 103, 161, 288, 256, 71, 162, 107, 147, 164, 172,
+ 148, 129, 165, 147, 190, 168, 217, 218, 154, 155,
+ 156, 157, 365, 32, 33, 34, 35, 130, 153, 154,
+ 155, 156, 157, 170, 183, 184, 173, 156, 157, 97,
+ 98, 99, 330, 187, 279, 288, 280, 159, 100, 239,
+ 163, 241, 163, 242, 163, 101, 163, 313, 167, 42,
175, 219, 43, 48, 176, 220, 221, 222, 223, 224,
225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 180, 71, 187, 188, 191, 240, 204, 206,
- 208, 243, 209, 210, 211, 212, 237, 246, 291, 245,
- 257, 286, 251, 252, 262, 253, 254, 285, 275, 258,
- 259, 260, 248, 261, 290, 292, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 295, 302, 309, 311,
- 322, 331, 332, 334, 341, 278, 351, 358, 366, 283,
- 284, 360, 368, 370, 276, 277, 372, 373, 2, 213,
- 375, 3, 4, 250, 93, 5, 274, 7, 8, 9,
- 68, 11, 137, 12, 305, 306, 307, 15, 16, 139,
- 140, 281, 0, 0, 0, 0, 0, 0, 0, 293,
- 294, 0, 320, 321, 69, 0, 25, 0, 0, 0,
+ 235, 236, 180, 71, 344, 345, 188, 240, 191, 204,
+ 206, 243, 237, 211, 208, 209, 210, 246, 291, 212,
+ 245, 286, 251, 252, 262, 253, 254, 257, 275, 258,
+ 259, 260, 248, 261, 285, 290, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 177, 292, 295, 302,
+ 309, 311, 322, 331, 332, 278, 334, 341, 351, 283,
+ 284, 358, 360, 366, 276, 277, 141, 142, 143, 144,
+ 145, 146, 368, 147, 178, 179, 148, 149, 150, 370,
+ 372, 373, 375, 274, 305, 306, 307, 213, 137, 139,
+ 0, 140, 151, 152, 153, 154, 155, 156, 157, 293,
+ 294, 250, 320, 321, 281, 0, 0, 0, 0, 0,
326, 0, 0, 0, 0, 356, 0, 0, 0, 0,
- 359, 0, 0, 31, 0, 333, 0, 0, 0, 337,
- 32, 33, 34, 35, 36, 0, 314, 343, 348, 0,
- 316, 317, 318, 319, 354, 0, 40, 41, 0, 0,
- 0, 315, 42, 0, 0, 43, 0, 362, 0, 364,
+ 359, 0, 0, 0, 0, 333, 0, 0, 0, 337,
+ 0, 0, 0, 0, 0, 0, 314, 343, 348, 0,
+ 316, 317, 318, 319, 354, 0, 0, 0, 0, 0,
+ 0, 315, 0, 0, 0, 0, 0, 362, 0, 364,
0, 0, 0, 367, 0, 369, 0, 371, 0, 335,
- 0, -4, 1, 0, 0, 340, 376, 0, 342, 0,
+ 0, -157, 1, 0, 0, 340, 376, 0, 342, 0,
0, 0, 0, 0, 0, 2, 0, 0, 3, 4,
- 0, 357, 5, 6, 7, 8, 9, 10, 11, 0,
- 12, 0, 13, 14, 15, 16, 301, 0, 0, 17,
- 18, 19, 20, 0, 0, 0, 21, 308, 22, 0,
- 0, 23, 24, 25, 0, 0, 26, 0, 0, 0,
- 27, 28, 29, 30, 0, 0, 0, 0, 323, 0,
- 31, 0, 328, 0, 329, 0, 0, 32, 33, 34,
- 35, 36, 0, 0, 37, 38, 39, 0, 0, 0,
- 0, 0, 0, 40, 41, 0, 0, 0, -4, 42,
- 2, 353, 43, 3, 4, 355, 0, 5, 0, 7,
- 8, 9, 68, 121, 0, 122, 361, 0, 363, 15,
- 16, 177, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 374, 0, 0, 0, 69, 0, 25, 0,
- 0, 141, 142, 143, 144, 145, 146, 0, 147, 178,
- 179, 148, 149, 150, 0, 31, 0, 0, 0, 0,
+ 0, 357, 5, -157, 7, 8, 9, 68, 11, 0,
+ 12, -157, -157, 0, 15, 16, -157, -157, -157, -157,
+ -157, -157, -157, 0, -157, 0, 0, -157, -157, -157,
+ 0, 69, -157, 25, -157, -157, -157, -157, 0, 0,
+ 0, -157, -157, -157, -157, -157, -157, -157, -157, -157,
+ 31, -157, -157, -157, -157, -157, -157, 32, 33, 34,
+ 35, 36, -157, -157, -157, -157, 0, -157, -157, -157,
+ -157, -157, -157, 40, 41, -157, -157, 1, -157, 73,
+ -157, -157, 43, -157, 0, 0, 0, 0, 0, 0,
+ 2, 0, 0, 3, 4, 0, 0, 5, 0, 7,
+ 8, 9, 68, 121, 0, 122, 0, 0, 0, 15,
+ 16, 0, 0, 0, 85, 0, 87, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 69, 0, 25, 0,
+ 0, 141, 142, 143, 144, 145, 146, 0, 147, 0,
+ 0, 148, 149, 150, 0, 31, 0, 0, 0, 0,
0, 0, 32, 33, 34, 35, 36, 151, 152, 153,
- 154, 155, 156, 157, 0, 0, 0, 0, 40, 41,
- 0, 0, 0, 0, 42, 0, 0, 43, 2, 123,
- 0, 3, 4, 0, 0, 5, 6, 7, 8, 9,
- 10, 11, 0, 12, 338, 13, 0, 15, 16, 0,
+ 154, 155, 156, 157, 0, 0, -59, 1, 40, 41,
+ 0, 0, 0, 0, 42, 0, 0, 43, -163, 123,
+ 2, 0, 0, 3, 4, 0, 0, 5, -59, 7,
+ 8, 9, 68, 11, 0, 12, -59, -59, 0, 15,
+ 16, 0, -59, -59, -59, -59, -59, -59, 0, 0,
+ 0, 0, 0, -59, 0, 0, 69, -59, 25, 0,
+ 0, -59, 0, 0, 0, 0, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, 31, -59, 0, 0, -59,
+ -59, -59, 32, 33, 34, 35, 36, 0, 0, -59,
+ -59, 0, -59, -59, -59, -59, -59, -59, 40, 41,
+ -59, -59, 0, -59, 77, -157, 1, 43, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
+ 0, 0, 3, 4, 0, 0, 5, -157, 7, 8,
+ 9, 68, 11, 0, 12, -157, -157, 0, 15, 16,
+ 0, -157, -157, -157, -157, -157, -157, 0, 0, 0,
+ 0, 0, -157, 0, 0, 69, -157, 25, 0, 0,
+ -157, 0, 0, 0, 0, -157, -157, -157, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 32, 33, 34, 35, 36, 0, 0, -157, -157,
+ 0, -157, -157, -157, -157, 1, 0, 40, 41, 0,
+ 0, 0, -157, 70, 0, -157, 43, 0, 2, 0,
+ 0, 3, 4, 0, 0, 5, -157, 7, 8, 9,
+ 68, 11, 0, 12, -157, -157, 0, 15, 16, 0,
+ -157, -157, -157, -157, -157, -157, 0, 0, 0, 0,
+ 0, -157, 0, 0, 69, -157, 25, 0, 0, -157,
+ 0, 0, 0, 0, -157, -157, -157, 0, 0, 0,
+ 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+ 32, 33, 34, 35, 36, 0, 0, -157, -157, 0,
+ -157, -157, -157, -4, 1, 0, 40, 41, 0, 0,
+ 0, -157, 42, 0, -157, 43, 0, 2, 0, 0,
+ 3, 4, 0, 0, 5, 6, 7, 8, 9, 10,
+ 11, 0, 12, 0, 13, 14, 15, 16, 0, 0,
+ 0, 17, 18, 19, 20, 0, 0, 0, 21, 0,
+ 22, 0, 0, 23, 24, 25, 0, 0, 26, 0,
+ 0, 0, 27, 28, 29, 30, 0, 0, 0, 0,
+ 0, 0, 31, 0, 0, 0, 0, 0, 0, 32,
+ 33, 34, 35, 36, 0, 0, 37, 38, 39, -146,
+ 1, 0, 0, 0, 0, 40, 41, 0, 0, 0,
+ -4, 42, 0, 2, 43, 0, 3, 4, 0, 0,
+ 5, 6, 7, 8, 9, 10, 11, 0, 12, 338,
+ 13, 0, 15, 16, 301, 0, 0, 17, 18, 19,
+ 20, 0, 0, 0, 0, 308, 22, 0, 0, 23,
+ 24, 25, 0, 0, 26, 0, 0, 0, 0, 28,
+ 29, 30, 0, 0, 0, 0, 323, 0, 31, 0,
+ 328, 0, 329, 0, 0, 32, 33, 34, 35, 36,
+ 0, 0, 37, 38, -144, 1, 0, 0, 0, 0,
+ 0, 40, 41, 0, 0, 0, 303, 42, 2, 353,
+ 43, 3, 4, 355, 0, 5, 6, 7, 8, 9,
+ 10, 11, 0, 12, 361, 13, 363, 15, 16, 0,
0, 0, 17, 18, 19, 20, 0, 0, 0, 0,
+ 374, 22, 0, 0, 23, 24, 25, 0, 0, 26,
+ 0, 0, 0, 0, 28, 29, 30, 0, 0, 0,
+ 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+ 32, 33, 34, 35, 36, 0, 0, 37, 38, -141,
+ 1, 0, 0, 0, 0, 0, 40, 41, 0, 0,
+ 0, 303, 42, 2, 0, 43, 3, 4, 0, 0,
+ 5, 6, 7, 8, 9, 10, 11, 0, 12, 0,
+ 13, 0, 15, 16, 0, 0, 0, 17, 18, 19,
+ 20, 0, 0, 0, 0, 0, 22, 0, 0, 23,
+ 24, 25, 0, 0, 26, 0, 0, 0, 0, 28,
+ 29, 30, 0, 0, 0, 0, 0, 0, 31, 0,
+ 0, 0, 0, 0, 0, 32, 33, 34, 35, 36,
+ 0, 0, 37, 38, 0, 1, 0, 0, 0, 0,
+ 0, 40, 41, 0, 0, 0, 303, 42, 2, 0,
+ 43, 3, 4, 0, 0, 5, 6, 7, 8, 9,
+ 10, 11, 0, 12, 0, 13, 0, 15, 16, 0,
+ -50, -50, 17, 18, 19, 20, 0, 0, 0, 0,
0, 22, 0, 0, 23, 24, 25, 0, 0, 26,
0, 0, 0, 0, 28, 29, 30, 0, 0, 0,
0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
32, 33, 34, 35, 36, 0, 0, 37, 38, 0,
- 0, 0, 0, 0, 0, 0, 40, 41, 0, 0,
- 2, 303, 42, 3, 4, 43, 0, 5, 6, 7,
+ -50, 1, 0, 0, 0, 0, 40, 41, 0, 0,
+ 0, 303, 42, 0, 2, 43, 0, 3, 4, 0,
+ 0, 5, 6, 7, 8, 9, 10, 11, 0, 12,
+ 0, 13, 0, 15, 16, 0, 0, 0, 17, 18,
+ 19, 20, 0, 0, 0, 0, 0, 22, 0, 0,
+ 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
+ 28, 29, 30, 0, 0, 0, 0, 0, 0, 31,
+ 0, 0, 0, 0, 0, 0, 32, 33, 34, 35,
+ 36, 0, 0, 37, 38, 0, 1, -50, 0, 0,
+ 0, 0, 40, 41, 0, 0, 0, 303, 42, 2,
+ 0, 43, 3, 4, 0, 0, 5, 6, 7, 8,
+ 9, 10, 11, 0, 12, 0, 13, 0, 15, 16,
+ 0, 0, 0, 17, 18, 19, 20, 0, 0, 0,
+ 0, 0, 22, 0, 0, 23, 24, 25, 0, 0,
+ 26, 0, 0, 0, 0, 28, 29, 30, 0, 0,
+ 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+ 0, 32, 33, 34, 35, 36, 0, 0, 37, 38,
+ 0, 1, 0, -50, 0, 0, 0, 40, 41, 0,
+ 0, 0, 303, 42, 2, 0, 43, 3, 4, 0,
+ 0, 5, 6, 7, 8, 9, 10, 11, 0, 12,
+ 0, 13, 0, 15, 16, 0, 0, 0, 17, 18,
+ 19, 20, 0, 0, 0, 0, 0, 22, 0, 0,
+ 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
+ 28, 29, 30, 0, 0, 0, 0, 0, 0, 31,
+ 0, 0, 0, 0, 0, 0, 32, 33, 34, 35,
+ 36, 0, 0, 37, 38, 0, -50, 1, 0, 0,
+ 0, 0, 40, 41, 0, 0, 0, 303, 42, 0,
+ 2, 43, 0, 3, 4, 0, 0, 5, 6, 7,
8, 9, 10, 11, 0, 12, 0, 13, 0, 15,
16, 0, 0, 0, 17, 18, 19, 20, 0, 0,
- 0, 0, 0, 22, 0, 0, 23, 24, 25, 0,
- 0, 26, 0, 0, 0, 0, 28, 29, 30, 0,
+ 0, 0, 0, 0, 0, 0, 23, 0, 25, 0,
+ 0, 0, 0, 0, 0, 0, 28, 29, 30, 0,
0, 0, 0, 0, 0, 31, 0, 0, 0, 0,
- 0, 0, 32, 33, 34, 35, 36, 0, 0, 37,
+ 0, 0, 32, 33, 34, 35, 36, 0, 0, 1,
38, 0, 0, 0, 0, 0, 0, 0, 40, 41,
- 0, 0, 2, 303, 42, 3, 4, 43, 0, 5,
+ 0, 0, 2, 0, 42, 3, 4, 43, 0, 5,
6, 7, 8, 9, 10, 11, 0, 12, 0, 13,
- 0, 15, 16, 0, 0, 0, 17, 18, 19, 20,
+ 0, 15, 16, 0, 0, 0, 17, 18, 19, 0,
0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
25, 0, 0, 0, 0, 0, 0, 0, 28, 29,
30, 0, 0, 0, 0, 0, 0, 31, 0, 0,
0, 0, 0, 0, 32, 33, 34, 35, 36, 0,
- 0, 0, 38, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 38, 0, 0, 0, 0, 0, 0, 0,
40, 41, 0, 0, 2, 0, 42, 3, 4, 43,
- 0, 5, 6, 7, 8, 9, 10, 11, 0, 12,
- 0, 13, 0, 15, 16, 0, 0, 0, 17, 18,
- 19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 23, 0, 25, 0, 0, 0, 0, 0, 0, 0,
- 28, 29, 30, 0, 0, 0, 0, 0, 0, 31,
- 0, 0, 0, 0, 0, 0, 32, 33, 34, 35,
- 36, 0, 0, 0, 38, 0, 0, 0, 0, 0,
- 0, 0, 40, 41, 0, 0, 2, 0, 42, 3,
- 4, 43, 0, 5, 0, 7, 8, 9, 68, 11,
- 0, 12, 0, 0, 0, 15, 16, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 84, 0, 85, 86,
- 87, 88, 69, 2, 25, 0, 3, 4, 0, 0,
- 5, 0, 7, 8, 9, 68, 11, 0, 12, 0,
- 0, 31, 15, 16, 0, 0, 0, 0, 32, 33,
- 34, 35, 36, 0, 0, 85, 0, 87, 0, 69,
- 0, 25, 0, 0, 40, 41, 0, 0, 0, 0,
- 42, 0, 0, 43, 0, 0, 0, 0, 31, 0,
- 0, 0, 0, 0, 0, 32, 33, 34, 35, 36,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 40, 41, 0, 0, 2, 0, 42, 3, 4,
- 43, 0, 5, 0, 7, 8, 9, 68, 11, 0,
- 12, 0, 0, 0, 15, 16, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 69, 2, 25, 0, 3, 4, 0, 0, 5,
- 0, 7, 8, 9, 68, 11, 0, 12, 0, 0,
- 31, 15, 16, 0, 0, 0, 0, 32, 33, 34,
- 35, 36, 0, 0, 0, 0, 0, 0, 69, 0,
- 25, 0, 0, 40, 41, 0, 0, 0, 0, 70,
- 0, 0, 43, 0, 0, 0, 0, 31, 0, 0,
- 0, 0, 0, 0, 32, 33, 34, 35, 36, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 40, 41, 0, 0, 2, 0, 73, 3, 4, 43,
0, 5, 0, 7, 8, 9, 68, 11, 0, 12,
- 0, 0, 0, 15, 16, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 15, 16, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 84, 0, 85, 86, 87, 88,
69, 2, 25, 0, 3, 4, 0, 0, 5, 0,
7, 8, 9, 68, 11, 0, 12, 0, 0, 31,
15, 16, 0, 0, 0, 0, 32, 33, 34, 35,
- 36, 0, 0, 0, 0, 0, 0, 69, 0, 25,
- 0, 0, 40, 41, 0, 0, 0, 0, 77, 0,
+ 36, 0, 0, 85, 0, 87, 0, 69, 0, 25,
+ 0, 0, 40, 41, 0, 0, 0, 0, 42, 0,
0, 43, 0, 0, 0, 0, 31, 0, 0, 0,
0, 0, 0, 32, 33, 34, 35, 36, 0, 0,
- 0, 0, 85, 0, 87, 0, 0, 0, 0, 40,
- 41, 0, 0, 0, 0, 42, 0, 0, 43, 141,
- 142, 143, 144, 145, 146, 0, 147, 0, 0, 148,
- 149, 150, 0, 0, 0, 0, 0, 192, 0, 0,
- 0, 0, 0, 193, 0, 151, 152, 153, 154, 155,
- 156, 157, 141, 142, 143, 144, 145, 146, 0, 147,
- 0, 0, 148, 149, 150, 0, 0, 0, 0, 0,
- 194, 0, 0, 0, 0, 0, 195, 0, 151, 152,
- 153, 154, 155, 156, 157, 141, 142, 143, 144, 145,
- 146, 0, 147, 0, 0, 148, 149, 150, 0, 0,
- 0, 0, 0, 196, 0, 0, 0, 0, 0, 197,
- 0, 151, 152, 153, 154, 155, 156, 157, 141, 142,
- 143, 144, 145, 146, 0, 147, 0, 0, 148, 149,
- 150, 0, 0, 0, 0, 0, 198, 0, 0, 0,
- 0, 0, 199, 0, 151, 152, 153, 154, 155, 156,
- 157, 141, 142, 143, 144, 145, 146, 0, 147, 0,
- 0, 148, 149, 150, 0, 0, 0, 0, 0, 296,
- 0, 0, 0, 0, 0, 0, 0, 151, 152, 153,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 40,
+ 41, 0, 0, 2, 0, 42, 3, 4, 43, 0,
+ 5, 0, 7, 8, 9, 68, 11, 0, 12, 0,
+ 0, 0, 15, 16, 0, 0, 0, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 69,
+ 2, 25, 0, 3, 4, 0, 93, 5, 0, 7,
+ 8, 9, 68, 11, 0, 12, 0, 0, 31, 15,
+ 16, 0, 0, 0, 0, 32, 33, 34, 35, 36,
+ 0, 0, 0, 0, 0, 0, 69, 0, 25, 0,
+ 0, 40, 41, 0, 0, 0, 0, 42, -157, -157,
+ 43, 0, 0, 0, 0, 31, 0, 0, 0, 0,
+ 0, 0, 32, 33, 34, 35, 36, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 40, 41,
+ 0, 0, 2, 0, 42, 3, 4, 43, 0, 5,
+ 0, 7, 8, 9, 68, 11, 0, 12, 0, 0,
+ 0, 15, 16, 0, 0, 0, 0, 0, 192, 0,
+ 0, 0, 0, 0, 193, 0, 0, 0, 69, 0,
+ 25, 0, 0, 141, 142, 143, 144, 145, 146, 0,
+ 147, 0, 0, 148, 149, 150, 0, 31, 0, 0,
+ 0, 0, 0, 0, 32, 33, 34, 35, 36, 151,
+ 152, 153, 154, 155, 156, 157, 194, 0, 0, 0,
+ 40, 41, 195, 0, 0, 0, 42, 0, 0, 43,
+ 0, 141, 142, 143, 144, 145, 146, 0, 147, 0,
+ 0, 148, 149, 150, 0, 0, 0, 0, 0, 196,
+ 0, 0, 0, 0, 0, 197, 0, 151, 152, 153,
154, 155, 156, 157, 141, 142, 143, 144, 145, 146,
0, 147, 0, 0, 148, 149, 150, 0, 0, 0,
- 0, 0, 297, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 198, 0, 0, 0, 0, 0, 199, 0,
151, 152, 153, 154, 155, 156, 157, 141, 142, 143,
144, 145, 146, 0, 147, 0, 0, 148, 149, 150,
- 0, 0, 0, 0, 0, 298, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 296, 0, 0, 0, 0,
0, 0, 0, 151, 152, 153, 154, 155, 156, 157,
141, 142, 143, 144, 145, 146, 0, 147, 0, 0,
- 148, 149, 150, 0, 0, 0, 0, 0, 299, 0,
+ 148, 149, 150, 0, 0, 0, 0, 0, 297, 0,
0, 0, 0, 0, 0, 0, 151, 152, 153, 154,
155, 156, 157, 141, 142, 143, 144, 145, 146, 0,
147, 0, 0, 148, 149, 150, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 202, 0, 151,
+ 0, 298, 0, 0, 0, 0, 0, 0, 0, 151,
152, 153, 154, 155, 156, 157, 141, 142, 143, 144,
- 145, 146, 189, 147, 0, 0, 148, 149, 150, 141,
+ 145, 146, 0, 147, 0, 0, 148, 149, 150, 0,
+ 0, 0, 0, 0, 299, 0, 0, 0, 0, 0,
+ 0, 0, 151, 152, 153, 154, 155, 156, 157, 141,
142, 143, 144, 145, 146, 0, 147, 0, 0, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 0,
- 203, 0, 0, 0, 0, 151, 152, 153, 154, 155,
- 156, 157, 141, 142, 143, 144, 145, 146, 0, 147,
- 0, 0, 148, 149, 150, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 151, 152,
- 153, 154, 155, 156, 157, 0, 0, 0, 207, 141,
- 142, 143, 144, 145, 146, 0, 147, 0, 0, 148,
- 149, 150, 0, 0, 0, 0, 0, 200, 201, 0,
- 0, 0, 0, 0, 0, 151, 152, 153, 154, 155,
- 156, 157, 141, 142, 143, 144, 145, 146, 0, 147,
- 0, 0, 148, 149, 150, 141, 142, 143, 144, 0,
- 0, 0, 147, 0, 0, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 0, 0, 0, 0, 0,
- 0, 151, 152, 153, 154, 155, 156, 157
+ 149, 150, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 202, 0, 151, 152, 153, 154, 155,
+ 156, 157, 141, 142, 143, 144, 145, 146, 189, 147,
+ 0, 0, 148, 149, 150, 141, 142, 143, 144, 145,
+ 146, 0, 147, 0, 0, 148, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 0, 203, 0, 0, 0,
+ 0, 151, 152, 153, 154, 155, 156, 157, 141, 142,
+ 143, 144, 145, 146, 0, 147, 0, 0, 148, 149,
+ 150, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 151, 152, 153, 154, 155, 156,
+ 157, 0, 0, 0, 207, 141, 142, 143, 144, 145,
+ 146, 0, 147, 0, 0, 148, 149, 150, 0, 0,
+ 0, 0, 0, 200, 201, 0, 0, 0, 0, 0,
+ 0, 151, 152, 153, 154, 155, 156, 157, 141, 142,
+ 143, 144, 145, 146, 0, 147, 0, 0, 148, 149,
+ 150, 141, 142, 143, 144, 0, 0, 0, 147, 0,
+ 0, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 0, 0, 0, 0, 0, 0, 151, 152, 153,
+ 154, 155, 156, 157
};
static const yytype_int16 yycheck[] =
{
6, 7, 81, 0, 10, 169, 273, 54, 29, 36,
4, 6, 7, 19, 8, 289, 42, 23, 65, 35,
- 97, 54, 28, 29, 26, 31, 32, 33, 34, 35,
- 36, 37, 65, 48, 40, 41, 42, 43, 54, 65,
+ 97, 97, 28, 29, 100, 31, 32, 33, 34, 35,
+ 36, 37, 1, 48, 40, 41, 42, 43, 54, 65,
54, 24, 309, 26, 50, 14, 52, 53, 17, 56,
57, 65, 21, 132, 133, 51, 330, 26, 27, 86,
- 29, 51, 97, 69, 70, 100, 70, 73, 89, 97,
- 26, 77, 100, 97, 80, 70, 100, 70, 73, 85,
- 73, 26, 76, 70, 105, 80, 134, 135, 92, 93,
- 94, 95, 359, 76, 77, 78, 79, 0, 91, 92,
- 93, 94, 95, 26, 98, 99, 97, 94, 95, 17,
- 18, 19, 27, 98, 29, 99, 100, 46, 26, 99,
- 100, 99, 100, 36, 37, 33, 100, 291, 100, 98,
+ 29, 51, 54, 69, 70, 26, 70, 73, 89, 97,
+ 26, 77, 100, 65, 80, 70, 26, 70, 73, 85,
+ 73, 0, 76, 70, 105, 80, 134, 135, 92, 93,
+ 94, 95, 359, 76, 77, 78, 79, 97, 91, 92,
+ 93, 94, 95, 26, 98, 99, 46, 94, 95, 17,
+ 18, 19, 97, 54, 27, 100, 29, 98, 26, 99,
+ 100, 99, 100, 99, 100, 33, 100, 291, 100, 98,
26, 137, 101, 130, 26, 141, 142, 143, 144, 145,
146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 26, 159, 54, 53, 100, 163, 26, 26,
- 103, 167, 103, 102, 100, 100, 26, 173, 247, 100,
- 48, 219, 178, 179, 26, 181, 182, 53, 100, 185,
- 186, 187, 176, 189, 26, 43, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 26, 26, 53, 26,
- 87, 54, 88, 54, 87, 211, 26, 86, 26, 215,
- 216, 100, 87, 53, 208, 209, 87, 86, 14, 130,
- 86, 17, 18, 177, 20, 21, 203, 23, 24, 25,
- 26, 27, 53, 29, 282, 283, 284, 33, 34, 53,
- 53, 212, -1, -1, -1, -1, -1, -1, -1, 255,
- 256, -1, 300, 301, 50, -1, 52, -1, -1, -1,
+ 156, 157, 26, 159, 36, 37, 53, 163, 100, 26,
+ 26, 167, 26, 100, 103, 103, 102, 173, 247, 100,
+ 100, 219, 178, 179, 26, 181, 182, 48, 100, 185,
+ 186, 187, 176, 189, 53, 26, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 43, 43, 26, 26,
+ 53, 26, 87, 54, 88, 211, 54, 87, 26, 215,
+ 216, 86, 100, 26, 208, 209, 63, 64, 65, 66,
+ 67, 68, 87, 70, 71, 72, 73, 74, 75, 53,
+ 87, 86, 86, 203, 282, 283, 284, 130, 53, 53,
+ -1, 53, 89, 90, 91, 92, 93, 94, 95, 255,
+ 256, 177, 300, 301, 212, -1, -1, -1, -1, -1,
308, -1, -1, -1, -1, 344, -1, -1, -1, -1,
- 349, -1, -1, 69, -1, 323, -1, -1, -1, 327,
- 76, 77, 78, 79, 80, -1, 292, 335, 336, -1,
- 296, 297, 298, 299, 342, -1, 92, 93, -1, -1,
- -1, 295, 98, -1, -1, 101, -1, 355, -1, 357,
+ 349, -1, -1, -1, -1, 323, -1, -1, -1, 327,
+ -1, -1, -1, -1, -1, -1, 292, 335, 336, -1,
+ 296, 297, 298, 299, 342, -1, -1, -1, -1, -1,
+ -1, 295, -1, -1, -1, -1, -1, 355, -1, 357,
-1, -1, -1, 361, -1, 363, -1, 365, -1, 325,
-1, 0, 1, -1, -1, 331, 374, -1, 334, -1,
-1, -1, -1, -1, -1, 14, -1, -1, 17, 18,
-1, 347, 21, 22, 23, 24, 25, 26, 27, -1,
- 29, -1, 31, 32, 33, 34, 274, -1, -1, 38,
- 39, 40, 41, -1, -1, -1, 45, 285, 47, -1,
- -1, 50, 51, 52, -1, -1, 55, -1, -1, -1,
- 59, 60, 61, 62, -1, -1, -1, -1, 306, -1,
- 69, -1, 310, -1, 312, -1, -1, 76, 77, 78,
- 79, 80, -1, -1, 83, 84, 85, -1, -1, -1,
- -1, -1, -1, 92, 93, -1, -1, -1, 97, 98,
- 14, 339, 101, 17, 18, 343, -1, 21, -1, 23,
- 24, 25, 26, 27, -1, 29, 354, -1, 356, 33,
- 34, 43, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 370, -1, -1, -1, 50, -1, 52, -1,
- -1, 63, 64, 65, 66, 67, 68, -1, 70, 71,
- 72, 73, 74, 75, -1, 69, -1, -1, -1, -1,
+ 29, 30, 31, -1, 33, 34, 35, 36, 37, 38,
+ 39, 40, 41, -1, 43, -1, -1, 46, 47, 48,
+ -1, 50, 51, 52, 53, 54, 55, 56, -1, -1,
+ -1, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 81, 82, 83, 84, -1, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 1, 97, 98,
+ 99, 100, 101, 102, -1, -1, -1, -1, -1, -1,
+ 14, -1, -1, 17, 18, -1, -1, 21, -1, 23,
+ 24, 25, 26, 27, -1, 29, -1, -1, -1, 33,
+ 34, -1, -1, -1, 46, -1, 48, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 50, -1, 52, -1,
+ -1, 63, 64, 65, 66, 67, 68, -1, 70, -1,
+ -1, 73, 74, 75, -1, 69, -1, -1, -1, -1,
-1, -1, 76, 77, 78, 79, 80, 89, 90, 91,
- 92, 93, 94, 95, -1, -1, -1, -1, 92, 93,
- -1, -1, -1, -1, 98, -1, -1, 101, 14, 103,
+ 92, 93, 94, 95, -1, -1, 0, 1, 92, 93,
+ -1, -1, -1, -1, 98, -1, -1, 101, 102, 103,
+ 14, -1, -1, 17, 18, -1, -1, 21, 22, 23,
+ 24, 25, 26, 27, -1, 29, 30, 31, -1, 33,
+ 34, -1, 36, 37, 38, 39, 40, 41, -1, -1,
+ -1, -1, -1, 47, -1, -1, 50, 51, 52, -1,
+ -1, 55, -1, -1, -1, -1, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, -1, -1, 73,
+ 74, 75, 76, 77, 78, 79, 80, -1, -1, 83,
+ 84, -1, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, -1, 97, 98, 0, 1, 101, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 14,
+ -1, -1, 17, 18, -1, -1, 21, 22, 23, 24,
+ 25, 26, 27, -1, 29, 30, 31, -1, 33, 34,
+ -1, 36, 37, 38, 39, 40, 41, -1, -1, -1,
+ -1, -1, 47, -1, -1, 50, 51, 52, -1, -1,
+ 55, -1, -1, -1, -1, 60, 61, 62, -1, -1,
+ -1, -1, -1, -1, 69, -1, -1, -1, -1, -1,
+ -1, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ -1, 86, 87, 88, 0, 1, -1, 92, 93, -1,
+ -1, -1, 97, 98, -1, 100, 101, -1, 14, -1,
-1, 17, 18, -1, -1, 21, 22, 23, 24, 25,
26, 27, -1, 29, 30, 31, -1, 33, 34, -1,
+ 36, 37, 38, 39, 40, 41, -1, -1, -1, -1,
+ -1, 47, -1, -1, 50, 51, 52, -1, -1, 55,
+ -1, -1, -1, -1, 60, 61, 62, -1, -1, -1,
+ -1, -1, -1, 69, -1, -1, -1, -1, -1, -1,
+ 76, 77, 78, 79, 80, -1, -1, 83, 84, -1,
+ 86, 87, 88, 0, 1, -1, 92, 93, -1, -1,
+ -1, 97, 98, -1, 100, 101, -1, 14, -1, -1,
+ 17, 18, -1, -1, 21, 22, 23, 24, 25, 26,
+ 27, -1, 29, -1, 31, 32, 33, 34, -1, -1,
+ -1, 38, 39, 40, 41, -1, -1, -1, 45, -1,
+ 47, -1, -1, 50, 51, 52, -1, -1, 55, -1,
+ -1, -1, 59, 60, 61, 62, -1, -1, -1, -1,
+ -1, -1, 69, -1, -1, -1, -1, -1, -1, 76,
+ 77, 78, 79, 80, -1, -1, 83, 84, 85, 0,
+ 1, -1, -1, -1, -1, 92, 93, -1, -1, -1,
+ 97, 98, -1, 14, 101, -1, 17, 18, -1, -1,
+ 21, 22, 23, 24, 25, 26, 27, -1, 29, 30,
+ 31, -1, 33, 34, 274, -1, -1, 38, 39, 40,
+ 41, -1, -1, -1, -1, 285, 47, -1, -1, 50,
+ 51, 52, -1, -1, 55, -1, -1, -1, -1, 60,
+ 61, 62, -1, -1, -1, -1, 306, -1, 69, -1,
+ 310, -1, 312, -1, -1, 76, 77, 78, 79, 80,
+ -1, -1, 83, 84, 0, 1, -1, -1, -1, -1,
+ -1, 92, 93, -1, -1, -1, 97, 98, 14, 339,
+ 101, 17, 18, 343, -1, 21, 22, 23, 24, 25,
+ 26, 27, -1, 29, 354, 31, 356, 33, 34, -1,
-1, -1, 38, 39, 40, 41, -1, -1, -1, -1,
+ 370, 47, -1, -1, 50, 51, 52, -1, -1, 55,
+ -1, -1, -1, -1, 60, 61, 62, -1, -1, -1,
+ -1, -1, -1, 69, -1, -1, -1, -1, -1, -1,
+ 76, 77, 78, 79, 80, -1, -1, 83, 84, 0,
+ 1, -1, -1, -1, -1, -1, 92, 93, -1, -1,
+ -1, 97, 98, 14, -1, 101, 17, 18, -1, -1,
+ 21, 22, 23, 24, 25, 26, 27, -1, 29, -1,
+ 31, -1, 33, 34, -1, -1, -1, 38, 39, 40,
+ 41, -1, -1, -1, -1, -1, 47, -1, -1, 50,
+ 51, 52, -1, -1, 55, -1, -1, -1, -1, 60,
+ 61, 62, -1, -1, -1, -1, -1, -1, 69, -1,
+ -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
+ -1, -1, 83, 84, -1, 1, -1, -1, -1, -1,
+ -1, 92, 93, -1, -1, -1, 97, 98, 14, -1,
+ 101, 17, 18, -1, -1, 21, 22, 23, 24, 25,
+ 26, 27, -1, 29, -1, 31, -1, 33, 34, -1,
+ 36, 37, 38, 39, 40, 41, -1, -1, -1, -1,
-1, 47, -1, -1, 50, 51, 52, -1, -1, 55,
-1, -1, -1, -1, 60, 61, 62, -1, -1, -1,
-1, -1, -1, 69, -1, -1, -1, -1, -1, -1,
76, 77, 78, 79, 80, -1, -1, 83, 84, -1,
- -1, -1, -1, -1, -1, -1, 92, 93, -1, -1,
- 14, 97, 98, 17, 18, 101, -1, 21, 22, 23,
+ 86, 1, -1, -1, -1, -1, 92, 93, -1, -1,
+ -1, 97, 98, -1, 14, 101, -1, 17, 18, -1,
+ -1, 21, 22, 23, 24, 25, 26, 27, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, 38, 39,
+ 40, 41, -1, -1, -1, -1, -1, 47, -1, -1,
+ 50, 51, 52, -1, -1, 55, -1, -1, -1, -1,
+ 60, 61, 62, -1, -1, -1, -1, -1, -1, 69,
+ -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
+ 80, -1, -1, 83, 84, -1, 1, 87, -1, -1,
+ -1, -1, 92, 93, -1, -1, -1, 97, 98, 14,
+ -1, 101, 17, 18, -1, -1, 21, 22, 23, 24,
+ 25, 26, 27, -1, 29, -1, 31, -1, 33, 34,
+ -1, -1, -1, 38, 39, 40, 41, -1, -1, -1,
+ -1, -1, 47, -1, -1, 50, 51, 52, -1, -1,
+ 55, -1, -1, -1, -1, 60, 61, 62, -1, -1,
+ -1, -1, -1, -1, 69, -1, -1, -1, -1, -1,
+ -1, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ -1, 1, -1, 88, -1, -1, -1, 92, 93, -1,
+ -1, -1, 97, 98, 14, -1, 101, 17, 18, -1,
+ -1, 21, 22, 23, 24, 25, 26, 27, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, 38, 39,
+ 40, 41, -1, -1, -1, -1, -1, 47, -1, -1,
+ 50, 51, 52, -1, -1, 55, -1, -1, -1, -1,
+ 60, 61, 62, -1, -1, -1, -1, -1, -1, 69,
+ -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
+ 80, -1, -1, 83, 84, -1, 86, 1, -1, -1,
+ -1, -1, 92, 93, -1, -1, -1, 97, 98, -1,
+ 14, 101, -1, 17, 18, -1, -1, 21, 22, 23,
24, 25, 26, 27, -1, 29, -1, 31, -1, 33,
34, -1, -1, -1, 38, 39, 40, 41, -1, -1,
- -1, -1, -1, 47, -1, -1, 50, 51, 52, -1,
- -1, 55, -1, -1, -1, -1, 60, 61, 62, -1,
+ -1, -1, -1, -1, -1, -1, 50, -1, 52, -1,
+ -1, -1, -1, -1, -1, -1, 60, 61, 62, -1,
-1, -1, -1, -1, -1, 69, -1, -1, -1, -1,
- -1, -1, 76, 77, 78, 79, 80, -1, -1, 83,
+ -1, -1, 76, 77, 78, 79, 80, -1, -1, 1,
84, -1, -1, -1, -1, -1, -1, -1, 92, 93,
- -1, -1, 14, 97, 98, 17, 18, 101, -1, 21,
+ -1, -1, 14, -1, 98, 17, 18, 101, -1, 21,
22, 23, 24, 25, 26, 27, -1, 29, -1, 31,
- -1, 33, 34, -1, -1, -1, 38, 39, 40, 41,
+ -1, 33, 34, -1, -1, -1, 38, 39, 40, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 50, -1,
52, -1, -1, -1, -1, -1, -1, -1, 60, 61,
62, -1, -1, -1, -1, -1, -1, 69, -1, -1,
-1, -1, -1, -1, 76, 77, 78, 79, 80, -1,
- -1, -1, 84, -1, -1, -1, -1, -1, -1, -1,
- 92, 93, -1, -1, 14, -1, 98, 17, 18, 101,
- -1, 21, 22, 23, 24, 25, 26, 27, -1, 29,
- -1, 31, -1, 33, 34, -1, -1, -1, 38, 39,
- 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 50, -1, 52, -1, -1, -1, -1, -1, -1, -1,
- 60, 61, 62, -1, -1, -1, -1, -1, -1, 69,
- -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
- 80, -1, -1, -1, 84, -1, -1, -1, -1, -1,
- -1, -1, 92, 93, -1, -1, 14, -1, 98, 17,
- 18, 101, -1, 21, -1, 23, 24, 25, 26, 27,
- -1, 29, -1, -1, -1, 33, 34, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 44, -1, 46, 47,
- 48, 49, 50, 14, 52, -1, 17, 18, -1, -1,
- 21, -1, 23, 24, 25, 26, 27, -1, 29, -1,
- -1, 69, 33, 34, -1, -1, -1, -1, 76, 77,
- 78, 79, 80, -1, -1, 46, -1, 48, -1, 50,
- -1, 52, -1, -1, 92, 93, -1, -1, -1, -1,
- 98, -1, -1, 101, -1, -1, -1, -1, 69, -1,
- -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 92, 93, -1, -1, 14, -1, 98, 17, 18,
- 101, -1, 21, -1, 23, 24, 25, 26, 27, -1,
- 29, -1, -1, -1, 33, 34, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 50, 14, 52, -1, 17, 18, -1, -1, 21,
- -1, 23, 24, 25, 26, 27, -1, 29, -1, -1,
- 69, 33, 34, -1, -1, -1, -1, 76, 77, 78,
- 79, 80, -1, -1, -1, -1, -1, -1, 50, -1,
- 52, -1, -1, 92, 93, -1, -1, -1, -1, 98,
- -1, -1, 101, -1, -1, -1, -1, 69, -1, -1,
- -1, -1, -1, -1, 76, 77, 78, 79, 80, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 1, 84, -1, -1, -1, -1, -1, -1, -1,
92, 93, -1, -1, 14, -1, 98, 17, 18, 101,
-1, 21, -1, 23, 24, 25, 26, 27, -1, 29,
- -1, -1, -1, 33, 34, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 33, 34, -1, -1, -1, 1, -1,
+ -1, -1, -1, -1, 44, -1, 46, 47, 48, 49,
50, 14, 52, -1, 17, 18, -1, -1, 21, -1,
23, 24, 25, 26, 27, -1, 29, -1, -1, 69,
33, 34, -1, -1, -1, -1, 76, 77, 78, 79,
- 80, -1, -1, -1, -1, -1, -1, 50, -1, 52,
+ 80, -1, -1, 46, -1, 48, -1, 50, -1, 52,
-1, -1, 92, 93, -1, -1, -1, -1, 98, -1,
-1, 101, -1, -1, -1, -1, 69, -1, -1, -1,
-1, -1, -1, 76, 77, 78, 79, 80, -1, -1,
- -1, -1, 46, -1, 48, -1, -1, -1, -1, 92,
- 93, -1, -1, -1, -1, 98, -1, -1, 101, 63,
- 64, 65, 66, 67, 68, -1, 70, -1, -1, 73,
- 74, 75, -1, -1, -1, -1, -1, 48, -1, -1,
- -1, -1, -1, 54, -1, 89, 90, 91, 92, 93,
- 94, 95, 63, 64, 65, 66, 67, 68, -1, 70,
- -1, -1, 73, 74, 75, -1, -1, -1, -1, -1,
- 48, -1, -1, -1, -1, -1, 54, -1, 89, 90,
- 91, 92, 93, 94, 95, 63, 64, 65, 66, 67,
- 68, -1, 70, -1, -1, 73, 74, 75, -1, -1,
- -1, -1, -1, 48, -1, -1, -1, -1, -1, 54,
- -1, 89, 90, 91, 92, 93, 94, 95, 63, 64,
- 65, 66, 67, 68, -1, 70, -1, -1, 73, 74,
- 75, -1, -1, -1, -1, -1, 48, -1, -1, -1,
- -1, -1, 54, -1, 89, 90, 91, 92, 93, 94,
- 95, 63, 64, 65, 66, 67, 68, -1, 70, -1,
+ 1, -1, -1, -1, -1, -1, -1, -1, -1, 92,
+ 93, -1, -1, 14, -1, 98, 17, 18, 101, -1,
+ 21, -1, 23, 24, 25, 26, 27, -1, 29, -1,
+ -1, -1, 33, 34, -1, -1, -1, 1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 50,
+ 14, 52, -1, 17, 18, -1, 20, 21, -1, 23,
+ 24, 25, 26, 27, -1, 29, -1, -1, 69, 33,
+ 34, -1, -1, -1, -1, 76, 77, 78, 79, 80,
+ -1, -1, -1, -1, -1, -1, 50, -1, 52, -1,
+ -1, 92, 93, -1, -1, -1, -1, 98, 99, 100,
+ 101, -1, -1, -1, -1, 69, -1, -1, -1, -1,
+ -1, -1, 76, 77, 78, 79, 80, -1, -1, 1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 92, 93,
+ -1, -1, 14, -1, 98, 17, 18, 101, -1, 21,
+ -1, 23, 24, 25, 26, 27, -1, 29, -1, -1,
+ -1, 33, 34, -1, -1, -1, -1, -1, 48, -1,
+ -1, -1, -1, -1, 54, -1, -1, -1, 50, -1,
+ 52, -1, -1, 63, 64, 65, 66, 67, 68, -1,
+ 70, -1, -1, 73, 74, 75, -1, 69, -1, -1,
+ -1, -1, -1, -1, 76, 77, 78, 79, 80, 89,
+ 90, 91, 92, 93, 94, 95, 48, -1, -1, -1,
+ 92, 93, 54, -1, -1, -1, 98, -1, -1, 101,
+ -1, 63, 64, 65, 66, 67, 68, -1, 70, -1,
-1, 73, 74, 75, -1, -1, -1, -1, -1, 48,
- -1, -1, -1, -1, -1, -1, -1, 89, 90, 91,
+ -1, -1, -1, -1, -1, 54, -1, 89, 90, 91,
92, 93, 94, 95, 63, 64, 65, 66, 67, 68,
-1, 70, -1, -1, 73, 74, 75, -1, -1, -1,
- -1, -1, 48, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 48, -1, -1, -1, -1, -1, 54, -1,
89, 90, 91, 92, 93, 94, 95, 63, 64, 65,
66, 67, 68, -1, 70, -1, -1, 73, 74, 75,
-1, -1, -1, -1, -1, 48, -1, -1, -1, -1,
@@ -1344,24 +1469,31 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, -1, -1, 89, 90, 91, 92,
93, 94, 95, 63, 64, 65, 66, 67, 68, -1,
70, -1, -1, 73, 74, 75, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 54, -1, 89,
+ -1, 48, -1, -1, -1, -1, -1, -1, -1, 89,
90, 91, 92, 93, 94, 95, 63, 64, 65, 66,
- 67, 68, 56, 70, -1, -1, 73, 74, 75, 63,
- 64, 65, 66, 67, 68, -1, 70, -1, -1, 73,
- 74, 75, 89, 90, 91, 92, 93, 94, 95, -1,
- 97, -1, -1, -1, -1, 89, 90, 91, 92, 93,
- 94, 95, 63, 64, 65, 66, 67, 68, -1, 70,
- -1, -1, 73, 74, 75, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 89, 90,
- 91, 92, 93, 94, 95, -1, -1, -1, 99, 63,
+ 67, 68, -1, 70, -1, -1, 73, 74, 75, -1,
+ -1, -1, -1, -1, 48, -1, -1, -1, -1, -1,
+ -1, -1, 89, 90, 91, 92, 93, 94, 95, 63,
64, 65, 66, 67, 68, -1, 70, -1, -1, 73,
- 74, 75, -1, -1, -1, -1, -1, 81, 82, -1,
- -1, -1, -1, -1, -1, 89, 90, 91, 92, 93,
- 94, 95, 63, 64, 65, 66, 67, 68, -1, 70,
- -1, -1, 73, 74, 75, 63, 64, 65, 66, -1,
- -1, -1, 70, -1, -1, 73, 74, 75, 89, 90,
- 91, 92, 93, 94, 95, -1, -1, -1, -1, -1,
- -1, 89, 90, 91, 92, 93, 94, 95
+ 74, 75, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 54, -1, 89, 90, 91, 92, 93,
+ 94, 95, 63, 64, 65, 66, 67, 68, 56, 70,
+ -1, -1, 73, 74, 75, 63, 64, 65, 66, 67,
+ 68, -1, 70, -1, -1, 73, 74, 75, 89, 90,
+ 91, 92, 93, 94, 95, -1, 97, -1, -1, -1,
+ -1, 89, 90, 91, 92, 93, 94, 95, 63, 64,
+ 65, 66, 67, 68, -1, 70, -1, -1, 73, 74,
+ 75, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 89, 90, 91, 92, 93, 94,
+ 95, -1, -1, -1, 99, 63, 64, 65, 66, 67,
+ 68, -1, 70, -1, -1, 73, 74, 75, -1, -1,
+ -1, -1, -1, 81, 82, -1, -1, -1, -1, -1,
+ -1, 89, 90, 91, 92, 93, 94, 95, 63, 64,
+ 65, 66, 67, 68, -1, 70, -1, -1, 73, 74,
+ 75, 63, 64, 65, 66, -1, -1, -1, 70, -1,
+ -1, 73, 74, 75, 89, 90, 91, 92, 93, 94,
+ 95, -1, -1, -1, -1, -1, -1, 89, 90, 91,
+ 92, 93, 94, 95
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1411,12 +1543,12 @@ static const yytype_uint8 yystos[] =
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 104, 105, 105, 106, 106, 106, 106, 107, 107,
+ 0, 104, 105, 105, 106, 106, 106, 107, 107, 107,
107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
- 107, 108, 108, 108, 109, 109, 109, 109, 110, 110,
- 110, 110, 110, 110, 110, 110, 110, 110, 111, 112,
- 112, 113, 113, 114, 115, 115, 116, 117, 118, 119,
- 120, 121, 122, 122, 122, 123, 124, 124, 124, 124,
+ 108, 108, 108, 109, 109, 109, 109, 110, 110, 110,
+ 110, 110, 110, 110, 110, 110, 110, 111, 112, 112,
+ 113, 113, 114, 115, 115, 116, 117, 118, 119, 120,
+ 121, 122, 122, 122, 123, 124, 124, 124, 124, 124,
124, 124, 124, 124, 125, 125, 125, 125, 125, 125,
125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
@@ -1434,13 +1566,13 @@ static const yytype_uint8 yyr1[] =
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
static const yytype_int8 yyr2[] =
{
- 0, 2, 1, 3, 0, 1, 1, 2, 4, 4,
- 6, 4, 4, 4, 4, 4, 4, 5, 5, 8,
- 4, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 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, 3, 1, 1, 1, 4, 2, 4, 3,
+ 0, 2, 1, 3, 0, 1, 1, 4, 4, 6,
+ 4, 4, 4, 4, 4, 4, 5, 5, 8, 4,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 3, 1, 2, 1, 1, 4, 2, 4, 3,
2, 1, 1, 1, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 2, 3, 3,
3, 3, 2, 2, 4, 4, 4, 6, 4, 6,
@@ -1690,226 +1822,21 @@ yypcontext_expected_tokens (const yypcontext_t *yyctx,
-#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)
-{
- YYPTRDIFF_T yylen;
- for (yylen = 0; yystr[yylen]; yylen++)
- continue;
- return yylen;
-}
-# endif
-#endif
+/* The kind of the lookahead of this context. */
+static yysymbol_kind_t
+yypcontext_token (const yypcontext_t *yyctx) YY_ATTRIBUTE_UNUSED;
-#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 *
-yystpcpy (char *yydest, const char *yysrc)
+static yysymbol_kind_t
+yypcontext_token (const yypcontext_t *yyctx)
{
- char *yyd = yydest;
- const char *yys = yysrc;
-
- while ((*yyd++ = *yys++) != '\0')
- continue;
-
- return yyd - 1;
+ return yyctx->yytoken;
}
-# endif
-#endif
-
-#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
- contains an apostrophe, a comma, or backslash (other than
- backslash-backslash). YYSTR is taken from yytname. If YYRES is
- null, do not copy; instead, return the length of what the result
- would have been. */
-static YYPTRDIFF_T
-yytnamerr (char *yyres, const char *yystr)
-{
- if (*yystr == '"')
- {
- YYPTRDIFF_T yyn = 0;
- char const *yyp = yystr;
- for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- else
- goto append;
-
- append:
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
- do_not_strip_quotes: ;
- }
-
- if (yyres)
- return yystpcpy (yyres, yystr) - yyres;
- else
- return yystrlen (yystr);
-}
-#endif
-
-static int
-yy_syntax_error_arguments (const yypcontext_t *yyctx,
- yysymbol_kind_t yyarg[], int yyargn)
-{
- /* Actual size of YYARG. */
- int yycount = 0;
- /* There are many possibilities here to consider:
- - If this state is a consistent state with a default action, then
- the only way this function was invoked is if the default action
- is an error action. In that case, don't check for expected
- tokens because there are none.
- - The only way there can be no lookahead present (in yychar) is if
- this state is a consistent state with a default action. Thus,
- detecting the absence of a lookahead is sufficient to determine
- that there is no unexpected or expected token to report. In that
- case, just report a simple "syntax error".
- - Don't assume there isn't a lookahead just because this state is a
- consistent state with a default action. There might have been a
- previous inconsistent state, consistent state with a non-default
- action, or user semantic action that manipulated yychar.
- - Of course, the expected token list depends on states to have
- correct lookahead information, and it depends on the parser not
- to perform extra reductions after fetching a lookahead from the
- scanner and before detecting a syntax error. Thus, state merging
- (from LALR or IELR) and default reductions corrupt the expected
- token list. However, the list is correct for canonical LR with
- one exception: it will still contain any token that will not be
- accepted due to an error action in a later state.
- */
- if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
- {
- 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. */
+/* User defined function to report a syntax error. */
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) \
- case N: \
- yyformat = S; \
- break
- default: /* Avoid compiler warnings. */
- YYCASE_(0, YY_("syntax error"));
- YYCASE_(1, YY_("syntax error, unexpected %s"));
- YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
- YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
- YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
- YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
-#undef YYCASE_
- }
-
- /* Compute error message size. Don't count the "%s"s, but reserve
- room for the terminator. */
- yysize = yystrlen (yyformat) - 2 * yycount + 1;
- {
- 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)
- {
- *yymsg_alloc = 2 * yysize;
- if (! (yysize <= *yymsg_alloc
- && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
- *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
- return -1;
- }
-
- /* Avoid sprintf, as that infringes on the user's name space.
- Don't have undefined behavior even if the translation
- produced a string with the wrong number of "%s"s. */
- {
- char *yyp = *yymsg;
- int yyi = 0;
- while ((*yyp = *yyformat) != '\0')
- if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
- {
- yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
- yyformat += 2;
- }
- else
- {
- ++yyp;
- ++yyformat;
- }
- }
- return 0;
-}
-
+yyreport_syntax_error (const yypcontext_t *yyctx);
/*-----------------------------------------------.
| Release the memory associated to this symbol. |
@@ -1928,81 +1855,81 @@ yydestruct (const char *yymsg,
switch (yykind)
{
case 22: /* BLTIN */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1934 "engines/director/lingo/lingo-gr.cpp"
+#line 1861 "engines/director/lingo/lingo-gr.cpp"
break;
case 23: /* FBLTIN */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1940 "engines/director/lingo/lingo-gr.cpp"
+#line 1867 "engines/director/lingo/lingo-gr.cpp"
break;
case 24: /* RBLTIN */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1946 "engines/director/lingo/lingo-gr.cpp"
+#line 1873 "engines/director/lingo/lingo-gr.cpp"
break;
case 25: /* THEFBLTIN */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1952 "engines/director/lingo/lingo-gr.cpp"
+#line 1879 "engines/director/lingo/lingo-gr.cpp"
break;
case 26: /* ID */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1958 "engines/director/lingo/lingo-gr.cpp"
+#line 1885 "engines/director/lingo/lingo-gr.cpp"
break;
case 27: /* STRING */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1964 "engines/director/lingo/lingo-gr.cpp"
+#line 1891 "engines/director/lingo/lingo-gr.cpp"
break;
case 28: /* HANDLER */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1970 "engines/director/lingo/lingo-gr.cpp"
+#line 1897 "engines/director/lingo/lingo-gr.cpp"
break;
case 29: /* SYMBOL */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1976 "engines/director/lingo/lingo-gr.cpp"
+#line 1903 "engines/director/lingo/lingo-gr.cpp"
break;
case 30: /* ENDCLAUSE */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1982 "engines/director/lingo/lingo-gr.cpp"
+#line 1909 "engines/director/lingo/lingo-gr.cpp"
break;
case 31: /* tPLAYACCEL */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1988 "engines/director/lingo/lingo-gr.cpp"
+#line 1915 "engines/director/lingo/lingo-gr.cpp"
break;
case 32: /* tMETHOD */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1994 "engines/director/lingo/lingo-gr.cpp"
+#line 1921 "engines/director/lingo/lingo-gr.cpp"
break;
case 33: /* THEOBJECTFIELD */
-#line 147 "engines/director/lingo/lingo-gr.y"
+#line 140 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).objectfield).os; }
-#line 2000 "engines/director/lingo/lingo-gr.cpp"
+#line 1927 "engines/director/lingo/lingo-gr.cpp"
break;
case 142: /* on */
-#line 146 "engines/director/lingo/lingo-gr.y"
+#line 139 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 2006 "engines/director/lingo/lingo-gr.cpp"
+#line 1933 "engines/director/lingo/lingo-gr.cpp"
break;
default:
@@ -2063,10 +1990,7 @@ yyparse (void)
action routines. */
YYSTYPE yyval;
- /* Buffer for error messages, and its allocated size. */
- char yymsgbuf[128];
- char *yymsg = yymsgbuf;
- YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
+
#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
@@ -2284,32 +2208,26 @@ yyreduce:
switch (yyn)
{
case 7:
-#line 157 "engines/director/lingo/lingo-gr.y"
- { yyerrok; lex_unput('\n'); }
-#line 2290 "engines/director/lingo/lingo-gr.cpp"
- break;
-
- case 8:
-#line 159 "engines/director/lingo/lingo-gr.y"
+#line 151 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_varpush);
g_lingo->codeString((yyvsp[0].s)->c_str());
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[-2].code);
delete (yyvsp[0].s); }
-#line 2301 "engines/director/lingo/lingo-gr.cpp"
+#line 2219 "engines/director/lingo/lingo-gr.cpp"
break;
- case 9:
-#line 165 "engines/director/lingo/lingo-gr.y"
+ case 8:
+#line 157 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[-2].code); }
-#line 2309 "engines/director/lingo/lingo-gr.cpp"
+#line 2227 "engines/director/lingo/lingo-gr.cpp"
break;
- case 10:
-#line 169 "engines/director/lingo/lingo-gr.y"
+ case 9:
+#line 161 "engines/director/lingo/lingo-gr.y"
{
if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
warning("LEXER: keyword 'menu' expected");
@@ -2321,34 +2239,34 @@ yyreduce:
g_lingo->codeInt((yyvsp[-4].e)[1]);
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[0].code); }
-#line 2325 "engines/director/lingo/lingo-gr.cpp"
+#line 2243 "engines/director/lingo/lingo-gr.cpp"
break;
- case 11:
-#line 180 "engines/director/lingo/lingo-gr.y"
+ case 10:
+#line 172 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2331 "engines/director/lingo/lingo-gr.cpp"
+#line 2249 "engines/director/lingo/lingo-gr.cpp"
break;
- case 12:
-#line 181 "engines/director/lingo/lingo-gr.y"
+ case 11:
+#line 173 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2337 "engines/director/lingo/lingo-gr.cpp"
+#line 2255 "engines/director/lingo/lingo-gr.cpp"
break;
- case 13:
-#line 182 "engines/director/lingo/lingo-gr.y"
+ case 12:
+#line 174 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_varpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[0].code);
delete (yyvsp[-2].s); }
-#line 2348 "engines/director/lingo/lingo-gr.cpp"
+#line 2266 "engines/director/lingo/lingo-gr.cpp"
break;
- case 14:
-#line 188 "engines/director/lingo/lingo-gr.y"
+ case 13:
+#line 180 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(0); // Put dummy id
@@ -2356,22 +2274,22 @@ yyreduce:
g_lingo->codeInt((yyvsp[-2].e)[0]);
g_lingo->codeInt((yyvsp[-2].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2360 "engines/director/lingo/lingo-gr.cpp"
+#line 2278 "engines/director/lingo/lingo-gr.cpp"
break;
- case 15:
-#line 195 "engines/director/lingo/lingo-gr.y"
+ case 14:
+#line 187 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_varpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[0].code);
delete (yyvsp[-2].s); }
-#line 2371 "engines/director/lingo/lingo-gr.cpp"
+#line 2289 "engines/director/lingo/lingo-gr.cpp"
break;
- case 16:
-#line 201 "engines/director/lingo/lingo-gr.y"
+ case 15:
+#line 193 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(0); // Put dummy id
@@ -2379,33 +2297,33 @@ yyreduce:
g_lingo->codeInt((yyvsp[-2].e)[0]);
g_lingo->codeInt((yyvsp[-2].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2383 "engines/director/lingo/lingo-gr.cpp"
+#line 2301 "engines/director/lingo/lingo-gr.cpp"
break;
- case 17:
-#line 208 "engines/director/lingo/lingo-gr.y"
+ case 16:
+#line 200 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_swap);
g_lingo->code1(LC::c_theentityassign);
g_lingo->codeInt((yyvsp[-3].e)[0]);
g_lingo->codeInt((yyvsp[-3].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2394 "engines/director/lingo/lingo-gr.cpp"
+#line 2312 "engines/director/lingo/lingo-gr.cpp"
break;
- case 18:
-#line 214 "engines/director/lingo/lingo-gr.y"
+ case 17:
+#line 206 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_swap);
g_lingo->code1(LC::c_theentityassign);
g_lingo->codeInt((yyvsp[-3].e)[0]);
g_lingo->codeInt((yyvsp[-3].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2405 "engines/director/lingo/lingo-gr.cpp"
+#line 2323 "engines/director/lingo/lingo-gr.cpp"
break;
- case 19:
-#line 221 "engines/director/lingo/lingo-gr.y"
+ case 18:
+#line 213 "engines/director/lingo/lingo-gr.y"
{
if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
warning("LEXER: keyword 'menu' expected");
@@ -2417,33 +2335,33 @@ yyreduce:
g_lingo->codeInt((yyvsp[-6].e)[0]);
g_lingo->codeInt((yyvsp[-6].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2421 "engines/director/lingo/lingo-gr.cpp"
+#line 2339 "engines/director/lingo/lingo-gr.cpp"
break;
- case 20:
-#line 232 "engines/director/lingo/lingo-gr.y"
+ case 19:
+#line 224 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_objectfieldassign);
g_lingo->codeString((yyvsp[-2].objectfield).os->c_str());
g_lingo->codeInt((yyvsp[-2].objectfield).oe);
delete (yyvsp[-2].objectfield).os;
(yyval.code) = (yyvsp[0].code); }
-#line 2432 "engines/director/lingo/lingo-gr.cpp"
+#line 2350 "engines/director/lingo/lingo-gr.cpp"
break;
- case 30:
-#line 254 "engines/director/lingo/lingo-gr.y"
+ case 29:
+#line 246 "engines/director/lingo/lingo-gr.y"
{
inst body = 0, end = 0;
WRITE_UINT32(&body, (yyvsp[-3].code) - (yyvsp[-5].code));
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 2443 "engines/director/lingo/lingo-gr.cpp"
+#line 2361 "engines/director/lingo/lingo-gr.cpp"
break;
- case 31:
-#line 265 "engines/director/lingo/lingo-gr.y"
+ case 30:
+#line 257 "engines/director/lingo/lingo-gr.y"
{
inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
WRITE_UINT32(&init, (yyvsp[-8].code) - (yyvsp[-10].code));
@@ -2456,11 +2374,11 @@ 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 2460 "engines/director/lingo/lingo-gr.cpp"
+#line 2378 "engines/director/lingo/lingo-gr.cpp"
break;
- case 32:
-#line 282 "engines/director/lingo/lingo-gr.y"
+ case 31:
+#line 274 "engines/director/lingo/lingo-gr.y"
{
inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
WRITE_UINT32(&init, (yyvsp[-9].code) - (yyvsp[-11].code));
@@ -2473,11 +2391,11 @@ 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 2477 "engines/director/lingo/lingo-gr.cpp"
+#line 2395 "engines/director/lingo/lingo-gr.cpp"
break;
- case 33:
-#line 294 "engines/director/lingo/lingo-gr.y"
+ case 32:
+#line 286 "engines/director/lingo/lingo-gr.y"
{
inst list = 0, body = 0, end = 0;
WRITE_UINT32(&list, (yyvsp[-5].code) - (yyvsp[-7].code));
@@ -2488,54 +2406,54 @@ 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 2492 "engines/director/lingo/lingo-gr.cpp"
+#line 2410 "engines/director/lingo/lingo-gr.cpp"
break;
- case 34:
-#line 305 "engines/director/lingo/lingo-gr.y"
+ case 33:
+#line 297 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_nextRepeat); }
-#line 2499 "engines/director/lingo/lingo-gr.cpp"
+#line 2417 "engines/director/lingo/lingo-gr.cpp"
break;
- case 35:
-#line 307 "engines/director/lingo/lingo-gr.y"
+ case 34:
+#line 299 "engines/director/lingo/lingo-gr.y"
{
inst end = 0;
WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
g_lingo->code1(STOP);
(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2509 "engines/director/lingo/lingo-gr.cpp"
+#line 2427 "engines/director/lingo/lingo-gr.cpp"
break;
- case 36:
-#line 312 "engines/director/lingo/lingo-gr.y"
+ case 35:
+#line 304 "engines/director/lingo/lingo-gr.y"
{
inst end;
WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2518 "engines/director/lingo/lingo-gr.cpp"
+#line 2436 "engines/director/lingo/lingo-gr.cpp"
break;
- case 37:
-#line 316 "engines/director/lingo/lingo-gr.y"
+ case 36:
+#line 308 "engines/director/lingo/lingo-gr.y"
{
inst end;
WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2527 "engines/director/lingo/lingo-gr.cpp"
+#line 2445 "engines/director/lingo/lingo-gr.cpp"
break;
- case 38:
-#line 321 "engines/director/lingo/lingo-gr.y"
+ case 37:
+#line 313 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_tellcode);
g_lingo->code1(STOP); }
-#line 2535 "engines/director/lingo/lingo-gr.cpp"
+#line 2453 "engines/director/lingo/lingo-gr.cpp"
break;
- case 39:
-#line 325 "engines/director/lingo/lingo-gr.y"
+ case 38:
+#line 317 "engines/director/lingo/lingo-gr.y"
{
inst then = 0, else1 = 0, end = 0;
WRITE_UINT32(&then, (yyvsp[-6].code) - (yyvsp[-8].code));
@@ -2546,11 +2464,11 @@ 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 2550 "engines/director/lingo/lingo-gr.cpp"
+#line 2468 "engines/director/lingo/lingo-gr.cpp"
break;
- case 40:
-#line 335 "engines/director/lingo/lingo-gr.y"
+ case 39:
+#line 327 "engines/director/lingo/lingo-gr.y"
{
inst then = 0, else1 = 0, end = 0;
WRITE_UINT32(&then, (yyvsp[-9].code) - (yyvsp[-11].code));
@@ -2561,22 +2479,22 @@ 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 2565 "engines/director/lingo/lingo-gr.cpp"
+#line 2483 "engines/director/lingo/lingo-gr.cpp"
break;
- case 43:
-#line 349 "engines/director/lingo/lingo-gr.y"
+ case 42:
+#line 341 "engines/director/lingo/lingo-gr.y"
{
inst then = 0;
WRITE_UINT32(&then, (yyvsp[-3].code) - (yyvsp[-5].code));
(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then; /* thenpart */
g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2576 "engines/director/lingo/lingo-gr.cpp"
+#line 2494 "engines/director/lingo/lingo-gr.cpp"
break;
- case 44:
-#line 356 "engines/director/lingo/lingo-gr.y"
+ case 43:
+#line 348 "engines/director/lingo/lingo-gr.y"
{
inst then = 0, else1 = 0, end = 0;
WRITE_UINT32(&then, (yyvsp[-8].code) - (yyvsp[-10].code));
@@ -2587,11 +2505,11 @@ 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 2591 "engines/director/lingo/lingo-gr.cpp"
+#line 2509 "engines/director/lingo/lingo-gr.cpp"
break;
- case 45:
-#line 366 "engines/director/lingo/lingo-gr.y"
+ case 44:
+#line 358 "engines/director/lingo/lingo-gr.y"
{
inst then = 0, else1 = 0, end = 0;
WRITE_UINT32(&then, (yyvsp[-4].code) - (yyvsp[-6].code));
@@ -2602,119 +2520,119 @@ 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 2606 "engines/director/lingo/lingo-gr.cpp"
+#line 2524 "engines/director/lingo/lingo-gr.cpp"
break;
- case 46:
-#line 377 "engines/director/lingo/lingo-gr.y"
+ case 45:
+#line 369 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2612 "engines/director/lingo/lingo-gr.cpp"
+#line 2530 "engines/director/lingo/lingo-gr.cpp"
break;
- case 47:
-#line 379 "engines/director/lingo/lingo-gr.y"
+ case 46:
+#line 371 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
g_lingo->code3(STOP, STOP, STOP);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2622 "engines/director/lingo/lingo-gr.cpp"
+#line 2540 "engines/director/lingo/lingo-gr.cpp"
break;
- case 48:
-#line 385 "engines/director/lingo/lingo-gr.y"
+ case 47:
+#line 377 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_ifcode);
g_lingo->code3(STOP, STOP, STOP);
g_lingo->code1(0); // Do not skip end
g_lingo->codeLabel(0); }
-#line 2632 "engines/director/lingo/lingo-gr.cpp"
+#line 2550 "engines/director/lingo/lingo-gr.cpp"
break;
- case 49:
-#line 391 "engines/director/lingo/lingo-gr.y"
+ case 48:
+#line 383 "engines/director/lingo/lingo-gr.y"
{
inst skipEnd;
WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
(yyval.code) = g_lingo->code1(LC::c_ifcode);
g_lingo->code3(STOP, STOP, STOP);
g_lingo->code1(skipEnd); }
-#line 2643 "engines/director/lingo/lingo-gr.cpp"
+#line 2561 "engines/director/lingo/lingo-gr.cpp"
break;
- case 50:
-#line 398 "engines/director/lingo/lingo-gr.y"
+ case 49:
+#line 390 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2649 "engines/director/lingo/lingo-gr.cpp"
+#line 2567 "engines/director/lingo/lingo-gr.cpp"
break;
- case 51:
-#line 400 "engines/director/lingo/lingo-gr.y"
+ case 50:
+#line 392 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2655 "engines/director/lingo/lingo-gr.cpp"
+#line 2573 "engines/director/lingo/lingo-gr.cpp"
break;
- case 52:
-#line 402 "engines/director/lingo/lingo-gr.y"
+ case 51:
+#line 394 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2661 "engines/director/lingo/lingo-gr.cpp"
+#line 2579 "engines/director/lingo/lingo-gr.cpp"
break;
- case 55:
-#line 406 "engines/director/lingo/lingo-gr.y"
+ case 54:
+#line 398 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_whencode);
g_lingo->code1(STOP);
g_lingo->codeString((yyvsp[-1].s)->c_str());
delete (yyvsp[-1].s); }
-#line 2671 "engines/director/lingo/lingo-gr.cpp"
+#line 2589 "engines/director/lingo/lingo-gr.cpp"
break;
- case 56:
-#line 412 "engines/director/lingo/lingo-gr.y"
+ case 55:
+#line 404 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_intpush);
g_lingo->codeInt((yyvsp[0].i)); }
-#line 2679 "engines/director/lingo/lingo-gr.cpp"
+#line 2597 "engines/director/lingo/lingo-gr.cpp"
break;
- case 57:
-#line 415 "engines/director/lingo/lingo-gr.y"
+ case 56:
+#line 407 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_floatpush);
g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2687 "engines/director/lingo/lingo-gr.cpp"
+#line 2605 "engines/director/lingo/lingo-gr.cpp"
break;
- case 58:
-#line 418 "engines/director/lingo/lingo-gr.y"
+ case 57:
+#line 410 "engines/director/lingo/lingo-gr.y"
{ // D3
(yyval.code) = g_lingo->code1(LC::c_symbolpush);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2696 "engines/director/lingo/lingo-gr.cpp"
+#line 2614 "engines/director/lingo/lingo-gr.cpp"
break;
- case 59:
-#line 422 "engines/director/lingo/lingo-gr.y"
+ case 58:
+#line 414 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_stringpush);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2705 "engines/director/lingo/lingo-gr.cpp"
+#line 2623 "engines/director/lingo/lingo-gr.cpp"
break;
- case 60:
-#line 426 "engines/director/lingo/lingo-gr.y"
+ case 59:
+#line 418 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_eval);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2714 "engines/director/lingo/lingo-gr.cpp"
+#line 2632 "engines/director/lingo/lingo-gr.cpp"
break;
- case 61:
-#line 430 "engines/director/lingo/lingo-gr.y"
+ case 60:
+#line 422 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(0); // Put dummy id
@@ -2723,532 +2641,547 @@ yyreduce:
WRITE_UINT32(&e, (yyvsp[0].e)[0]);
WRITE_UINT32(&f, (yyvsp[0].e)[1]);
g_lingo->code2(e, f); }
-#line 2727 "engines/director/lingo/lingo-gr.cpp"
+#line 2645 "engines/director/lingo/lingo-gr.cpp"
break;
- case 62:
-#line 438 "engines/director/lingo/lingo-gr.y"
+ case 61:
+#line 430 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[-1].code); }
-#line 2733 "engines/director/lingo/lingo-gr.cpp"
+#line 2651 "engines/director/lingo/lingo-gr.cpp"
+ break;
+
+ case 63:
+#line 432 "engines/director/lingo/lingo-gr.y"
+ {
+ // Director parser till D3 was forgiving for any hanging parentheses
+ if (g_lingo->_ignoreError) {
+ warning("# LINGO: Ignoring trailing paren");
+ g_lingo->_ignoreError = false;
+ lex_unput('\n'); // We ate '\n', so put it back, otherwise lines will be joined
+ } else {
+ yyerrok;
+ }
+ }
+#line 2666 "engines/director/lingo/lingo-gr.cpp"
break;
case 64:
-#line 441 "engines/director/lingo/lingo-gr.y"
+#line 443 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[0].code); }
-#line 2739 "engines/director/lingo/lingo-gr.cpp"
+#line 2672 "engines/director/lingo/lingo-gr.cpp"
break;
case 66:
-#line 443 "engines/director/lingo/lingo-gr.y"
+#line 445 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
delete (yyvsp[-3].s); }
-#line 2747 "engines/director/lingo/lingo-gr.cpp"
+#line 2680 "engines/director/lingo/lingo-gr.cpp"
break;
case 67:
-#line 446 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
delete (yyvsp[-1].s); }
-#line 2755 "engines/director/lingo/lingo-gr.cpp"
+#line 2688 "engines/director/lingo/lingo-gr.cpp"
break;
case 68:
-#line 449 "engines/director/lingo/lingo-gr.y"
+#line 451 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
delete (yyvsp[-3].s); }
-#line 2763 "engines/director/lingo/lingo-gr.cpp"
+#line 2696 "engines/director/lingo/lingo-gr.cpp"
break;
case 69:
-#line 452 "engines/director/lingo/lingo-gr.y"
+#line 454 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
delete (yyvsp[-2].s); }
-#line 2771 "engines/director/lingo/lingo-gr.cpp"
+#line 2704 "engines/director/lingo/lingo-gr.cpp"
break;
case 70:
-#line 455 "engines/director/lingo/lingo-gr.y"
+#line 457 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_theentitypush);
inst e = 0, f = 0;
WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
g_lingo->code2(e, f); }
-#line 2782 "engines/director/lingo/lingo-gr.cpp"
+#line 2715 "engines/director/lingo/lingo-gr.cpp"
break;
case 71:
-#line 461 "engines/director/lingo/lingo-gr.y"
+#line 463 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_objectfieldpush);
g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
g_lingo->codeInt((yyvsp[0].objectfield).oe);
delete (yyvsp[0].objectfield).os; }
-#line 2792 "engines/director/lingo/lingo-gr.cpp"
+#line 2725 "engines/director/lingo/lingo-gr.cpp"
break;
case 72:
-#line 466 "engines/director/lingo/lingo-gr.y"
+#line 468 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_objectrefpush);
g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
g_lingo->codeString((yyvsp[0].objectref).field->c_str());
delete (yyvsp[0].objectref).obj;
delete (yyvsp[0].objectref).field; }
-#line 2803 "engines/director/lingo/lingo-gr.cpp"
+#line 2736 "engines/director/lingo/lingo-gr.cpp"
break;
case 74:
-#line 473 "engines/director/lingo/lingo-gr.y"
+#line 475 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_add); }
-#line 2809 "engines/director/lingo/lingo-gr.cpp"
+#line 2742 "engines/director/lingo/lingo-gr.cpp"
break;
case 75:
-#line 474 "engines/director/lingo/lingo-gr.y"
+#line 476 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_sub); }
-#line 2815 "engines/director/lingo/lingo-gr.cpp"
+#line 2748 "engines/director/lingo/lingo-gr.cpp"
break;
case 76:
-#line 475 "engines/director/lingo/lingo-gr.y"
+#line 477 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_mul); }
-#line 2821 "engines/director/lingo/lingo-gr.cpp"
+#line 2754 "engines/director/lingo/lingo-gr.cpp"
break;
case 77:
-#line 476 "engines/director/lingo/lingo-gr.y"
+#line 478 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_div); }
-#line 2827 "engines/director/lingo/lingo-gr.cpp"
+#line 2760 "engines/director/lingo/lingo-gr.cpp"
break;
case 78:
-#line 477 "engines/director/lingo/lingo-gr.y"
+#line 479 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_mod); }
-#line 2833 "engines/director/lingo/lingo-gr.cpp"
+#line 2766 "engines/director/lingo/lingo-gr.cpp"
break;
case 79:
-#line 478 "engines/director/lingo/lingo-gr.y"
+#line 480 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gt); }
-#line 2839 "engines/director/lingo/lingo-gr.cpp"
+#line 2772 "engines/director/lingo/lingo-gr.cpp"
break;
case 80:
-#line 479 "engines/director/lingo/lingo-gr.y"
+#line 481 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_lt); }
-#line 2845 "engines/director/lingo/lingo-gr.cpp"
+#line 2778 "engines/director/lingo/lingo-gr.cpp"
break;
case 81:
-#line 480 "engines/director/lingo/lingo-gr.y"
+#line 482 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_eq); }
-#line 2851 "engines/director/lingo/lingo-gr.cpp"
+#line 2784 "engines/director/lingo/lingo-gr.cpp"
break;
case 82:
-#line 481 "engines/director/lingo/lingo-gr.y"
+#line 483 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_neq); }
-#line 2857 "engines/director/lingo/lingo-gr.cpp"
+#line 2790 "engines/director/lingo/lingo-gr.cpp"
break;
case 83:
-#line 482 "engines/director/lingo/lingo-gr.y"
+#line 484 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_ge); }
-#line 2863 "engines/director/lingo/lingo-gr.cpp"
+#line 2796 "engines/director/lingo/lingo-gr.cpp"
break;
case 84:
-#line 483 "engines/director/lingo/lingo-gr.y"
+#line 485 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_le); }
-#line 2869 "engines/director/lingo/lingo-gr.cpp"
+#line 2802 "engines/director/lingo/lingo-gr.cpp"
break;
case 85:
-#line 484 "engines/director/lingo/lingo-gr.y"
+#line 486 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_and); }
-#line 2875 "engines/director/lingo/lingo-gr.cpp"
+#line 2808 "engines/director/lingo/lingo-gr.cpp"
break;
case 86:
-#line 485 "engines/director/lingo/lingo-gr.y"
+#line 487 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_or); }
-#line 2881 "engines/director/lingo/lingo-gr.cpp"
+#line 2814 "engines/director/lingo/lingo-gr.cpp"
break;
case 87:
-#line 486 "engines/director/lingo/lingo-gr.y"
+#line 488 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_not); }
-#line 2887 "engines/director/lingo/lingo-gr.cpp"
+#line 2820 "engines/director/lingo/lingo-gr.cpp"
break;
case 88:
-#line 487 "engines/director/lingo/lingo-gr.y"
+#line 489 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_ampersand); }
-#line 2893 "engines/director/lingo/lingo-gr.cpp"
+#line 2826 "engines/director/lingo/lingo-gr.cpp"
break;
case 89:
-#line 488 "engines/director/lingo/lingo-gr.y"
+#line 490 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_concat); }
-#line 2899 "engines/director/lingo/lingo-gr.cpp"
+#line 2832 "engines/director/lingo/lingo-gr.cpp"
break;
case 90:
-#line 489 "engines/director/lingo/lingo-gr.y"
+#line 491 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_contains); }
-#line 2905 "engines/director/lingo/lingo-gr.cpp"
+#line 2838 "engines/director/lingo/lingo-gr.cpp"
break;
case 91:
-#line 490 "engines/director/lingo/lingo-gr.y"
+#line 492 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_starts); }
-#line 2911 "engines/director/lingo/lingo-gr.cpp"
+#line 2844 "engines/director/lingo/lingo-gr.cpp"
break;
case 92:
-#line 491 "engines/director/lingo/lingo-gr.y"
+#line 493 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[0].code); }
-#line 2917 "engines/director/lingo/lingo-gr.cpp"
+#line 2850 "engines/director/lingo/lingo-gr.cpp"
break;
case 93:
-#line 492 "engines/director/lingo/lingo-gr.y"
+#line 494 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2923 "engines/director/lingo/lingo-gr.cpp"
+#line 2856 "engines/director/lingo/lingo-gr.cpp"
break;
case 94:
-#line 493 "engines/director/lingo/lingo-gr.y"
+#line 495 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_intersects); }
-#line 2929 "engines/director/lingo/lingo-gr.cpp"
+#line 2862 "engines/director/lingo/lingo-gr.cpp"
break;
case 95:
-#line 494 "engines/director/lingo/lingo-gr.y"
+#line 496 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_within); }
-#line 2935 "engines/director/lingo/lingo-gr.cpp"
+#line 2868 "engines/director/lingo/lingo-gr.cpp"
break;
case 96:
-#line 496 "engines/director/lingo/lingo-gr.y"
+#line 498 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_charOf); }
-#line 2941 "engines/director/lingo/lingo-gr.cpp"
+#line 2874 "engines/director/lingo/lingo-gr.cpp"
break;
case 97:
-#line 497 "engines/director/lingo/lingo-gr.y"
+#line 499 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_charToOf); }
-#line 2947 "engines/director/lingo/lingo-gr.cpp"
+#line 2880 "engines/director/lingo/lingo-gr.cpp"
break;
case 98:
-#line 498 "engines/director/lingo/lingo-gr.y"
+#line 500 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_itemOf); }
-#line 2953 "engines/director/lingo/lingo-gr.cpp"
+#line 2886 "engines/director/lingo/lingo-gr.cpp"
break;
case 99:
-#line 499 "engines/director/lingo/lingo-gr.y"
+#line 501 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_itemToOf); }
-#line 2959 "engines/director/lingo/lingo-gr.cpp"
+#line 2892 "engines/director/lingo/lingo-gr.cpp"
break;
case 100:
-#line 500 "engines/director/lingo/lingo-gr.y"
+#line 502 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_lineOf); }
-#line 2965 "engines/director/lingo/lingo-gr.cpp"
+#line 2898 "engines/director/lingo/lingo-gr.cpp"
break;
case 101:
-#line 501 "engines/director/lingo/lingo-gr.y"
+#line 503 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_lineToOf); }
-#line 2971 "engines/director/lingo/lingo-gr.cpp"
+#line 2904 "engines/director/lingo/lingo-gr.cpp"
break;
case 102:
-#line 502 "engines/director/lingo/lingo-gr.y"
+#line 504 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_wordOf); }
-#line 2977 "engines/director/lingo/lingo-gr.cpp"
+#line 2910 "engines/director/lingo/lingo-gr.cpp"
break;
case 103:
-#line 503 "engines/director/lingo/lingo-gr.y"
+#line 505 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_wordToOf); }
-#line 2983 "engines/director/lingo/lingo-gr.cpp"
+#line 2916 "engines/director/lingo/lingo-gr.cpp"
break;
case 104:
-#line 505 "engines/director/lingo/lingo-gr.y"
+#line 507 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-1].s), 1);
delete (yyvsp[-1].s); }
-#line 2991 "engines/director/lingo/lingo-gr.cpp"
+#line 2924 "engines/director/lingo/lingo-gr.cpp"
break;
case 106:
-#line 510 "engines/director/lingo/lingo-gr.y"
+#line 512 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_printtop); }
-#line 2997 "engines/director/lingo/lingo-gr.cpp"
+#line 2930 "engines/director/lingo/lingo-gr.cpp"
break;
case 109:
-#line 513 "engines/director/lingo/lingo-gr.y"
+#line 515 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_exitRepeat); }
-#line 3003 "engines/director/lingo/lingo-gr.cpp"
+#line 2936 "engines/director/lingo/lingo-gr.cpp"
break;
case 110:
-#line 514 "engines/director/lingo/lingo-gr.y"
+#line 516 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_procret); }
-#line 3009 "engines/director/lingo/lingo-gr.cpp"
+#line 2942 "engines/director/lingo/lingo-gr.cpp"
break;
case 111:
-#line 515 "engines/director/lingo/lingo-gr.y"
+#line 517 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateInArgs; }
-#line 3015 "engines/director/lingo/lingo-gr.cpp"
+#line 2948 "engines/director/lingo/lingo-gr.cpp"
break;
case 112:
-#line 515 "engines/director/lingo/lingo-gr.y"
+#line 517 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateNone; }
-#line 3021 "engines/director/lingo/lingo-gr.cpp"
+#line 2954 "engines/director/lingo/lingo-gr.cpp"
break;
case 113:
-#line 516 "engines/director/lingo/lingo-gr.y"
+#line 518 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateInArgs; }
-#line 3027 "engines/director/lingo/lingo-gr.cpp"
+#line 2960 "engines/director/lingo/lingo-gr.cpp"
break;
case 114:
-#line 516 "engines/director/lingo/lingo-gr.y"
+#line 518 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateNone; }
-#line 3033 "engines/director/lingo/lingo-gr.cpp"
+#line 2966 "engines/director/lingo/lingo-gr.cpp"
break;
case 116:
-#line 518 "engines/director/lingo/lingo-gr.y"
+#line 520 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
delete (yyvsp[-3].s); }
-#line 3041 "engines/director/lingo/lingo-gr.cpp"
+#line 2974 "engines/director/lingo/lingo-gr.cpp"
break;
case 117:
-#line 521 "engines/director/lingo/lingo-gr.y"
+#line 523 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
delete (yyvsp[-1].s); }
-#line 3049 "engines/director/lingo/lingo-gr.cpp"
+#line 2982 "engines/director/lingo/lingo-gr.cpp"
break;
case 118:
-#line 524 "engines/director/lingo/lingo-gr.y"
+#line 526 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_open); }
-#line 3055 "engines/director/lingo/lingo-gr.cpp"
+#line 2988 "engines/director/lingo/lingo-gr.cpp"
break;
case 119:
-#line 525 "engines/director/lingo/lingo-gr.y"
+#line 527 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3061 "engines/director/lingo/lingo-gr.cpp"
+#line 2994 "engines/director/lingo/lingo-gr.cpp"
break;
case 120:
-#line 527 "engines/director/lingo/lingo-gr.y"
+#line 529 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_global);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 3070 "engines/director/lingo/lingo-gr.cpp"
+#line 3003 "engines/director/lingo/lingo-gr.cpp"
break;
case 121:
-#line 531 "engines/director/lingo/lingo-gr.y"
+#line 533 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_global);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 3079 "engines/director/lingo/lingo-gr.cpp"
+#line 3012 "engines/director/lingo/lingo-gr.cpp"
break;
case 122:
-#line 536 "engines/director/lingo/lingo-gr.y"
+#line 538 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_property);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 3088 "engines/director/lingo/lingo-gr.cpp"
+#line 3021 "engines/director/lingo/lingo-gr.cpp"
break;
case 123:
-#line 540 "engines/director/lingo/lingo-gr.y"
+#line 542 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_property);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 3097 "engines/director/lingo/lingo-gr.cpp"
+#line 3030 "engines/director/lingo/lingo-gr.cpp"
break;
case 124:
-#line 545 "engines/director/lingo/lingo-gr.y"
+#line 547 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_instance);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 3106 "engines/director/lingo/lingo-gr.cpp"
+#line 3039 "engines/director/lingo/lingo-gr.cpp"
break;
case 125:
-#line 549 "engines/director/lingo/lingo-gr.y"
+#line 551 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_instance);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 3115 "engines/director/lingo/lingo-gr.cpp"
+#line 3048 "engines/director/lingo/lingo-gr.cpp"
break;
case 126:
-#line 561 "engines/director/lingo/lingo-gr.y"
+#line 563 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotoloop); }
-#line 3121 "engines/director/lingo/lingo-gr.cpp"
+#line 3054 "engines/director/lingo/lingo-gr.cpp"
break;
case 127:
-#line 562 "engines/director/lingo/lingo-gr.y"
+#line 564 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotonext); }
-#line 3127 "engines/director/lingo/lingo-gr.cpp"
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
break;
case 128:
-#line 563 "engines/director/lingo/lingo-gr.y"
+#line 565 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotoprevious); }
-#line 3133 "engines/director/lingo/lingo-gr.cpp"
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
break;
case 129:
-#line 564 "engines/director/lingo/lingo-gr.y"
+#line 566 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(1);
g_lingo->code1(LC::c_goto); }
-#line 3142 "engines/director/lingo/lingo-gr.cpp"
+#line 3075 "engines/director/lingo/lingo-gr.cpp"
break;
case 130:
-#line 568 "engines/director/lingo/lingo-gr.y"
+#line 570 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(3);
g_lingo->code1(LC::c_goto); }
-#line 3151 "engines/director/lingo/lingo-gr.cpp"
+#line 3084 "engines/director/lingo/lingo-gr.cpp"
break;
case 131:
-#line 572 "engines/director/lingo/lingo-gr.y"
+#line 574 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(2);
g_lingo->code1(LC::c_goto); }
-#line 3160 "engines/director/lingo/lingo-gr.cpp"
+#line 3093 "engines/director/lingo/lingo-gr.cpp"
break;
case 134:
-#line 580 "engines/director/lingo/lingo-gr.y"
+#line 582 "engines/director/lingo/lingo-gr.y"
{ // "play #done" is also caught by this
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(1);
g_lingo->code1(LC::c_play); }
-#line 3169 "engines/director/lingo/lingo-gr.cpp"
+#line 3102 "engines/director/lingo/lingo-gr.cpp"
break;
case 135:
-#line 584 "engines/director/lingo/lingo-gr.y"
+#line 586 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(3);
g_lingo->code1(LC::c_play); }
-#line 3178 "engines/director/lingo/lingo-gr.cpp"
+#line 3111 "engines/director/lingo/lingo-gr.cpp"
break;
case 136:
-#line 588 "engines/director/lingo/lingo-gr.y"
+#line 590 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(2);
g_lingo->code1(LC::c_play); }
-#line 3187 "engines/director/lingo/lingo-gr.cpp"
+#line 3120 "engines/director/lingo/lingo-gr.cpp"
break;
case 137:
-#line 592 "engines/director/lingo/lingo-gr.y"
+#line 594 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeSetImmediate(true); }
-#line 3193 "engines/director/lingo/lingo-gr.cpp"
+#line 3126 "engines/director/lingo/lingo-gr.cpp"
break;
case 138:
-#line 592 "engines/director/lingo/lingo-gr.y"
+#line 594 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeSetImmediate(false);
g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
delete (yyvsp[-2].s); }
-#line 3202 "engines/director/lingo/lingo-gr.cpp"
+#line 3135 "engines/director/lingo/lingo-gr.cpp"
break;
case 139:
-#line 622 "engines/director/lingo/lingo-gr.y"
+#line 624 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateInArgs; }
-#line 3208 "engines/director/lingo/lingo-gr.cpp"
+#line 3141 "engines/director/lingo/lingo-gr.cpp"
break;
case 140:
-#line 622 "engines/director/lingo/lingo-gr.y"
+#line 624 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_currentFactory.clear(); }
-#line 3214 "engines/director/lingo/lingo-gr.cpp"
+#line 3147 "engines/director/lingo/lingo-gr.cpp"
break;
case 141:
-#line 623 "engines/director/lingo/lingo-gr.y"
+#line 625 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_procret);
g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
g_lingo->clearArgStack();
g_lingo->_indef = kStateNone;
delete (yyvsp[-6].s); }
-#line 3225 "engines/director/lingo/lingo-gr.cpp"
+#line 3158 "engines/director/lingo/lingo-gr.cpp"
break;
case 142:
-#line 629 "engines/director/lingo/lingo-gr.y"
+#line 631 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3231 "engines/director/lingo/lingo-gr.cpp"
+#line 3164 "engines/director/lingo/lingo-gr.cpp"
break;
case 143:
-#line 630 "engines/director/lingo/lingo-gr.y"
+#line 632 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateInArgs; }
-#line 3237 "engines/director/lingo/lingo-gr.cpp"
+#line 3170 "engines/director/lingo/lingo-gr.cpp"
break;
case 144:
-#line 631 "engines/director/lingo/lingo-gr.y"
+#line 633 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_procret);
g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
g_lingo->clearArgStack();
g_lingo->_indef = kStateNone;
delete (yyvsp[-6].s); }
-#line 3248 "engines/director/lingo/lingo-gr.cpp"
+#line 3181 "engines/director/lingo/lingo-gr.cpp"
break;
case 145:
-#line 637 "engines/director/lingo/lingo-gr.y"
+#line 639 "engines/director/lingo/lingo-gr.y"
{ // D3
g_lingo->code1(LC::c_procret);
g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3259,11 +3192,11 @@ yyreduce:
checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
delete (yyvsp[-7].s);
delete (yyvsp[-1].s); }
-#line 3263 "engines/director/lingo/lingo-gr.cpp"
+#line 3196 "engines/director/lingo/lingo-gr.cpp"
break;
case 146:
-#line 647 "engines/director/lingo/lingo-gr.y"
+#line 649 "engines/director/lingo/lingo-gr.y"
{ // D4. No 'end' clause
g_lingo->code1(LC::c_procret);
g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -3271,59 +3204,59 @@ yyreduce:
g_lingo->clearArgStack();
g_lingo->_ignoreMe = false;
delete (yyvsp[-5].s); }
-#line 3275 "engines/director/lingo/lingo-gr.cpp"
+#line 3208 "engines/director/lingo/lingo-gr.cpp"
break;
case 147:
-#line 655 "engines/director/lingo/lingo-gr.y"
+#line 657 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = kStateInArgs; }
-#line 3281 "engines/director/lingo/lingo-gr.cpp"
+#line 3214 "engines/director/lingo/lingo-gr.cpp"
break;
case 148:
-#line 655 "engines/director/lingo/lingo-gr.y"
+#line 657 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3287 "engines/director/lingo/lingo-gr.cpp"
+#line 3220 "engines/director/lingo/lingo-gr.cpp"
break;
case 149:
-#line 657 "engines/director/lingo/lingo-gr.y"
+#line 659 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 0; }
-#line 3293 "engines/director/lingo/lingo-gr.cpp"
+#line 3226 "engines/director/lingo/lingo-gr.cpp"
break;
case 150:
-#line 658 "engines/director/lingo/lingo-gr.y"
+#line 660 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3299 "engines/director/lingo/lingo-gr.cpp"
+#line 3232 "engines/director/lingo/lingo-gr.cpp"
break;
case 151:
-#line 659 "engines/director/lingo/lingo-gr.y"
+#line 661 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3305 "engines/director/lingo/lingo-gr.cpp"
+#line 3238 "engines/director/lingo/lingo-gr.cpp"
break;
case 153:
-#line 662 "engines/director/lingo/lingo-gr.y"
+#line 664 "engines/director/lingo/lingo-gr.y"
{ delete (yyvsp[0].s); }
-#line 3311 "engines/director/lingo/lingo-gr.cpp"
+#line 3244 "engines/director/lingo/lingo-gr.cpp"
break;
case 154:
-#line 663 "engines/director/lingo/lingo-gr.y"
+#line 665 "engines/director/lingo/lingo-gr.y"
{ delete (yyvsp[0].s); }
-#line 3317 "engines/director/lingo/lingo-gr.cpp"
+#line 3250 "engines/director/lingo/lingo-gr.cpp"
break;
case 155:
-#line 665 "engines/director/lingo/lingo-gr.y"
+#line 667 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 3323 "engines/director/lingo/lingo-gr.cpp"
+#line 3256 "engines/director/lingo/lingo-gr.cpp"
break;
case 156:
-#line 667 "engines/director/lingo/lingo-gr.y"
+#line 669 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_call);
g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3331,113 +3264,113 @@ yyreduce:
WRITE_UINT32(&numpar, (yyvsp[0].narg));
g_lingo->code1(numpar);
delete (yyvsp[-1].s); }
-#line 3335 "engines/director/lingo/lingo-gr.cpp"
+#line 3268 "engines/director/lingo/lingo-gr.cpp"
break;
case 157:
-#line 675 "engines/director/lingo/lingo-gr.y"
+#line 677 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 0; }
-#line 3341 "engines/director/lingo/lingo-gr.cpp"
+#line 3274 "engines/director/lingo/lingo-gr.cpp"
break;
case 158:
-#line 676 "engines/director/lingo/lingo-gr.y"
+#line 678 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3347 "engines/director/lingo/lingo-gr.cpp"
+#line 3280 "engines/director/lingo/lingo-gr.cpp"
break;
case 159:
-#line 677 "engines/director/lingo/lingo-gr.y"
+#line 679 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3353 "engines/director/lingo/lingo-gr.cpp"
+#line 3286 "engines/director/lingo/lingo-gr.cpp"
break;
case 160:
-#line 679 "engines/director/lingo/lingo-gr.y"
+#line 681 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3359 "engines/director/lingo/lingo-gr.cpp"
+#line 3292 "engines/director/lingo/lingo-gr.cpp"
break;
case 161:
-#line 680 "engines/director/lingo/lingo-gr.y"
+#line 682 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3365 "engines/director/lingo/lingo-gr.cpp"
+#line 3298 "engines/director/lingo/lingo-gr.cpp"
break;
case 162:
-#line 682 "engines/director/lingo/lingo-gr.y"
+#line 684 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[-1].code); }
-#line 3371 "engines/director/lingo/lingo-gr.cpp"
+#line 3304 "engines/director/lingo/lingo-gr.cpp"
break;
case 163:
-#line 684 "engines/director/lingo/lingo-gr.y"
+#line 686 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3377 "engines/director/lingo/lingo-gr.cpp"
+#line 3310 "engines/director/lingo/lingo-gr.cpp"
break;
case 164:
-#line 685 "engines/director/lingo/lingo-gr.y"
+#line 687 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3383 "engines/director/lingo/lingo-gr.cpp"
+#line 3316 "engines/director/lingo/lingo-gr.cpp"
break;
case 165:
-#line 686 "engines/director/lingo/lingo-gr.y"
+#line 688 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3389 "engines/director/lingo/lingo-gr.cpp"
+#line 3322 "engines/director/lingo/lingo-gr.cpp"
break;
case 166:
-#line 687 "engines/director/lingo/lingo-gr.y"
+#line 689 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3395 "engines/director/lingo/lingo-gr.cpp"
+#line 3328 "engines/director/lingo/lingo-gr.cpp"
break;
case 167:
-#line 689 "engines/director/lingo/lingo-gr.y"
+#line 691 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3401 "engines/director/lingo/lingo-gr.cpp"
+#line 3334 "engines/director/lingo/lingo-gr.cpp"
break;
case 168:
-#line 690 "engines/director/lingo/lingo-gr.y"
+#line 692 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3407 "engines/director/lingo/lingo-gr.cpp"
+#line 3340 "engines/director/lingo/lingo-gr.cpp"
break;
case 169:
-#line 692 "engines/director/lingo/lingo-gr.y"
+#line 694 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3413 "engines/director/lingo/lingo-gr.cpp"
+#line 3346 "engines/director/lingo/lingo-gr.cpp"
break;
case 170:
-#line 693 "engines/director/lingo/lingo-gr.y"
+#line 695 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3419 "engines/director/lingo/lingo-gr.cpp"
+#line 3352 "engines/director/lingo/lingo-gr.cpp"
break;
case 171:
-#line 695 "engines/director/lingo/lingo-gr.y"
+#line 697 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_symbolpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
delete (yyvsp[-2].s); }
-#line 3428 "engines/director/lingo/lingo-gr.cpp"
+#line 3361 "engines/director/lingo/lingo-gr.cpp"
break;
case 172:
-#line 699 "engines/director/lingo/lingo-gr.y"
+#line 701 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_stringpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
delete (yyvsp[-2].s); }
-#line 3437 "engines/director/lingo/lingo-gr.cpp"
+#line 3370 "engines/director/lingo/lingo-gr.cpp"
break;
-#line 3441 "engines/director/lingo/lingo-gr.cpp"
+#line 3374 "engines/director/lingo/lingo-gr.cpp"
default: break;
}
@@ -3487,32 +3420,7 @@ yyerrlab:
{
yypcontext_t yyctx
= {yyssp, yytoken};
- char const *yymsgp = YY_("syntax error");
- int yysyntax_error_status;
- yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
- if (yysyntax_error_status == 0)
- yymsgp = yymsg;
- 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)
- {
- yysyntax_error_status
- = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
- yymsgp = yymsg;
- }
- else
- {
- yymsg = yymsgbuf;
- yymsg_alloc = sizeof yymsgbuf;
- yysyntax_error_status = YYENOMEM;
- }
- }
- yyerror (yymsgp);
- if (yysyntax_error_status == YYENOMEM)
+ if (yyreport_syntax_error (&yyctx) == 2)
goto yyexhaustedlab;
}
}
@@ -3657,10 +3565,41 @@ yyreturn:
if (yyss != yyssa)
YYSTACK_FREE (yyss);
#endif
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
+
return yyresult;
}
-#line 705 "engines/director/lingo/lingo-gr.y"
+#line 707 "engines/director/lingo/lingo-gr.y"
+
+
+int yyreport_syntax_error(const yypcontext_t *ctx) {
+ int res = 0;
+
+ if (lex_check_parens()) {
+ g_lingo->_ignoreError = true;
+ return 0;
+ }
+
+ Common::String msg = "syntax error, ";
+ // Report the unexpected token.
+ yysymbol_kind_t lookahead = yypcontext_token(ctx);
+ if (lookahead != YYSYMBOL_YYEMPTY)
+ msg += Common::String::format("unexpected %s", yysymbol_name(lookahead));
+
+ // Report the tokens expected at this point.
+ enum { TOKENMAX = 10 };
+ yysymbol_kind_t expected[TOKENMAX];
+
+ int n = yypcontext_expected_tokens(ctx, expected, TOKENMAX);
+ if (n < 0)
+ // Forward errors to yyparse.
+ res = n;
+ else
+ for (int i = 0; i < n; ++i)
+ msg += Common::String::format("%s %s", i == 0 ? ": expected" : " or", yysymbol_name(expected[i]));
+
+ yyerror(msg.c_str());
+
+ return res;
+}
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index e80fe512e9..faf65d30be 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -148,7 +148,7 @@ extern int yydebug;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 96 "engines/director/lingo/lingo-gr.y"
+#line 89 "engines/director/lingo/lingo-gr.y"
Common::String *s;
int i;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 90e79051ed..7986a128c0 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -43,10 +43,10 @@
// ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
// THIS SOFTWARE.
-%require "3.5"
+%require "3.6"
%defines "engines/director/lingo/lingo-gr.h"
%output "engines/director/lingo/lingo-gr.cpp"
-%define parse.error verbose
+%define parse.error custom
%define parse.trace
// %glr-parser
@@ -69,15 +69,8 @@ extern void lex_unput(int c);
extern bool lex_check_parens();
using namespace Director;
-void yyerror(const char *s) {
- // Director parser till D3 was forgiving for any hanging parentheses
- if (g_director->getVersion() <= 4) {
- if (lex_check_parens()) {
- warning("# LINGO: Ignoring trailing parens");
- return;
- }
- }
+void yyerror(const char *s) {
g_lingo->_hadError = true;
warning("###################### LINGO: %s at line %d col %d", s, g_lingo->_linenumber, g_lingo->_colnumber);
}
@@ -154,7 +147,6 @@ program: programline
programline: /* empty */
| defn
| stmt
- | error '\n' { yyerrok; lex_unput('\n'); }
asgn: tPUT expr tINTO ID {
g_lingo->code1(LC::c_varpush);
@@ -437,6 +429,16 @@ simpleexpr: INT {
g_lingo->code2(e, f); }
| '(' expr[arg] ')' { $$ = $arg; }
| list
+ | error '\n' {
+ // Director parser till D3 was forgiving for any hanging parentheses
+ if (g_lingo->_ignoreError) {
+ warning("# LINGO: Ignoring trailing paren");
+ g_lingo->_ignoreError = false;
+ lex_unput('\n'); // We ate '\n', so put it back, otherwise lines will be joined
+ } else {
+ yyerrok;
+ }
+ }
expr: simpleexpr { $$ = $simpleexpr; }
| reference
@@ -703,3 +705,35 @@ proppair: SYMBOL ':' simpleexpr {
%%
+
+int yyreport_syntax_error(const yypcontext_t *ctx) {
+ int res = 0;
+
+ if (lex_check_parens()) {
+ g_lingo->_ignoreError = true;
+ return 0;
+ }
+
+ Common::String msg = "syntax error, ";
+
+ // Report the unexpected token.
+ yysymbol_kind_t lookahead = yypcontext_token(ctx);
+ if (lookahead != YYSYMBOL_YYEMPTY)
+ msg += Common::String::format("unexpected %s", yysymbol_name(lookahead));
+
+ // Report the tokens expected at this point.
+ enum { TOKENMAX = 10 };
+ yysymbol_kind_t expected[TOKENMAX];
+
+ int n = yypcontext_expected_tokens(ctx, expected, TOKENMAX);
+ if (n < 0)
+ // Forward errors to yyparse.
+ res = n;
+ else
+ for (int i = 0; i < n; ++i)
+ msg += Common::String::format("%s %s", i == 0 ? ": expected" : " or", yysymbol_name(expected[i]));
+
+ yyerror(msg.c_str());
+
+ return res;
+}
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index aa39bec27b..3e228b489e 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -801,6 +801,8 @@ static void count() {
debug("LEXER: Read '%s' at %d:%d", yytext, g_lingo->_linenumber, g_lingo->_colnumber);
char *p = yytext;
+ g_lingo->_lasttoken = yytext;
+ g_lingo->_lastbytenumber = g_lingo->_bytenumber;
while (*p && *p != '\n' && *p != '\r') {
p++;
@@ -828,7 +830,7 @@ static int checkImmediate(int token) {
return token;
}
-#line 832 "engines/director/lingo/lingo-lex.cpp"
+#line 834 "engines/director/lingo/lingo-lex.cpp"
#define INITIAL 0
@@ -1013,10 +1015,10 @@ YY_DECL
register char *yy_cp, *yy_bp;
register int yy_act;
-#line 90 "engines/director/lingo/lingo-lex.l"
+#line 92 "engines/director/lingo/lingo-lex.l"
-#line 1020 "engines/director/lingo/lingo-lex.cpp"
+#line 1022 "engines/director/lingo/lingo-lex.cpp"
if ( !(yy_init) )
{
@@ -1099,77 +1101,77 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
/* rule 1 can match eol */
YY_RULE_SETUP
-#line 92 "engines/director/lingo/lingo-lex.l"
+#line 94 "engines/director/lingo/lingo-lex.l"
{ count(); }
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 93 "engines/director/lingo/lingo-lex.l"
+#line 95 "engines/director/lingo/lingo-lex.l"
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 94 "engines/director/lingo/lingo-lex.l"
+#line 96 "engines/director/lingo/lingo-lex.l"
{ count(); }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 95 "engines/director/lingo/lingo-lex.l"
+#line 97 "engines/director/lingo/lingo-lex.l"
{ count(); return ' '; }
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 97 "engines/director/lingo/lingo-lex.l"
+#line 99 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.s = new Common::String(yytext + 1); return SYMBOL; } // D3, skip '#'
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 99 "engines/director/lingo/lingo-lex.l"
+#line 101 "engines/director/lingo/lingo-lex.l"
{ count(); return tAFTER; } // D3
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 100 "engines/director/lingo/lingo-lex.l"
+#line 102 "engines/director/lingo/lingo-lex.l"
{ count(); return tAND; }
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 101 "engines/director/lingo/lingo-lex.l"
+#line 103 "engines/director/lingo/lingo-lex.l"
{ count(); return tBEFORE; } // D3
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 102 "engines/director/lingo/lingo-lex.l"
+#line 104 "engines/director/lingo/lingo-lex.l"
{ count(); return tCHAR; } // D3
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 103 "engines/director/lingo/lingo-lex.l"
+#line 105 "engines/director/lingo/lingo-lex.l"
{ count(); return tCONTAINS; }
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 104 "engines/director/lingo/lingo-lex.l"
+#line 106 "engines/director/lingo/lingo-lex.l"
{ count(); return tDOWN; }
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 105 "engines/director/lingo/lingo-lex.l"
+#line 107 "engines/director/lingo/lingo-lex.l"
{ count(); return tIF; }
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 106 "engines/director/lingo/lingo-lex.l"
+#line 108 "engines/director/lingo/lingo-lex.l"
{ count(); return tELSIF; }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 107 "engines/director/lingo/lingo-lex.l"
+#line 109 "engines/director/lingo/lingo-lex.l"
{ count(); return tELSE; }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 108 "engines/director/lingo/lingo-lex.l"
+#line 110 "engines/director/lingo/lingo-lex.l"
{
count();
@@ -1191,72 +1193,72 @@ YY_RULE_SETUP
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 126 "engines/director/lingo/lingo-lex.l"
+#line 128 "engines/director/lingo/lingo-lex.l"
{ count(); return tFACTORY; }
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 127 "engines/director/lingo/lingo-lex.l"
+#line 129 "engines/director/lingo/lingo-lex.l"
{ count(); return tEXIT; }
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 128 "engines/director/lingo/lingo-lex.l"
+#line 130 "engines/director/lingo/lingo-lex.l"
{ count(); return tGLOBAL; }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 129 "engines/director/lingo/lingo-lex.l"
+#line 131 "engines/director/lingo/lingo-lex.l"
{ count(); return tGO; }
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 130 "engines/director/lingo/lingo-lex.l"
+#line 132 "engines/director/lingo/lingo-lex.l"
{ count(); return tGO; }
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 131 "engines/director/lingo/lingo-lex.l"
+#line 133 "engines/director/lingo/lingo-lex.l"
{ count(); return tINSTANCE; }
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 132 "engines/director/lingo/lingo-lex.l"
+#line 134 "engines/director/lingo/lingo-lex.l"
{ count(); return tINTERSECTS; }
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 133 "engines/director/lingo/lingo-lex.l"
+#line 135 "engines/director/lingo/lingo-lex.l"
{ count(); return tINTO; }
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 134 "engines/director/lingo/lingo-lex.l"
+#line 136 "engines/director/lingo/lingo-lex.l"
{ count(); return tIN; }
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 135 "engines/director/lingo/lingo-lex.l"
+#line 137 "engines/director/lingo/lingo-lex.l"
{ count(); return tITEM; }
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 136 "engines/director/lingo/lingo-lex.l"
+#line 138 "engines/director/lingo/lingo-lex.l"
{ count(); return tLINE; }
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 137 "engines/director/lingo/lingo-lex.l"
+#line 139 "engines/director/lingo/lingo-lex.l"
{ count(); return checkImmediate(tLOOP); }
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 138 "engines/director/lingo/lingo-lex.l"
+#line 140 "engines/director/lingo/lingo-lex.l"
{ count(); return tMACRO; }
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 139 "engines/director/lingo/lingo-lex.l"
+#line 141 "engines/director/lingo/lingo-lex.l"
{
count();
@@ -1271,97 +1273,97 @@ YY_RULE_SETUP
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 150 "engines/director/lingo/lingo-lex.l"
+#line 152 "engines/director/lingo/lingo-lex.l"
{ count(); return tMOD; }
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 151 "engines/director/lingo/lingo-lex.l"
+#line 153 "engines/director/lingo/lingo-lex.l"
{ count(); return tMOVIE; }
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 152 "engines/director/lingo/lingo-lex.l"
+#line 154 "engines/director/lingo/lingo-lex.l"
{ count(); return tNEXT; }
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 153 "engines/director/lingo/lingo-lex.l"
+#line 155 "engines/director/lingo/lingo-lex.l"
{ count(); return tNOT; }
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 154 "engines/director/lingo/lingo-lex.l"
+#line 156 "engines/director/lingo/lingo-lex.l"
{ count(); return tOF; }
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 155 "engines/director/lingo/lingo-lex.l"
+#line 157 "engines/director/lingo/lingo-lex.l"
{ count(); return tON; } // D3
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 156 "engines/director/lingo/lingo-lex.l"
+#line 158 "engines/director/lingo/lingo-lex.l"
{ count(); return tOPEN; }
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 157 "engines/director/lingo/lingo-lex.l"
+#line 159 "engines/director/lingo/lingo-lex.l"
{ count(); return tOR; }
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 158 "engines/director/lingo/lingo-lex.l"
+#line 160 "engines/director/lingo/lingo-lex.l"
{ count(); return tPLAY; }
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 159 "engines/director/lingo/lingo-lex.l"
+#line 161 "engines/director/lingo/lingo-lex.l"
{ count(); return tPLAY; }
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 160 "engines/director/lingo/lingo-lex.l"
+#line 162 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 161 "engines/director/lingo/lingo-lex.l"
+#line 163 "engines/director/lingo/lingo-lex.l"
{ count(); return tPREVIOUS; }
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 162 "engines/director/lingo/lingo-lex.l"
+#line 164 "engines/director/lingo/lingo-lex.l"
{ count(); return tPROPERTY; } // D4
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 163 "engines/director/lingo/lingo-lex.l"
+#line 165 "engines/director/lingo/lingo-lex.l"
{ count(); return tPUT; }
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 164 "engines/director/lingo/lingo-lex.l"
+#line 166 "engines/director/lingo/lingo-lex.l"
{ count(); return checkImmediate(tREPEAT); }
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 165 "engines/director/lingo/lingo-lex.l"
+#line 167 "engines/director/lingo/lingo-lex.l"
{ count(); return tSET; }
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 166 "engines/director/lingo/lingo-lex.l"
+#line 168 "engines/director/lingo/lingo-lex.l"
{ count(); return tSTARTS; }
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 167 "engines/director/lingo/lingo-lex.l"
+#line 169 "engines/director/lingo/lingo-lex.l"
{ count(); return tTELL; }
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 168 "engines/director/lingo/lingo-lex.l"
+#line 170 "engines/director/lingo/lingo-lex.l"
{
count();
@@ -1400,7 +1402,7 @@ YY_RULE_SETUP
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 203 "engines/director/lingo/lingo-lex.l"
+#line 205 "engines/director/lingo/lingo-lex.l"
{
count();
@@ -1426,7 +1428,7 @@ YY_RULE_SETUP
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 225 "engines/director/lingo/lingo-lex.l"
+#line 227 "engines/director/lingo/lingo-lex.l"
{
count();
@@ -1493,7 +1495,7 @@ YY_RULE_SETUP
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 288 "engines/director/lingo/lingo-lex.l"
+#line 290 "engines/director/lingo/lingo-lex.l"
{
count();
@@ -1531,7 +1533,7 @@ YY_RULE_SETUP
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 322 "engines/director/lingo/lingo-lex.l"
+#line 324 "engines/director/lingo/lingo-lex.l"
{
count();
@@ -1562,72 +1564,72 @@ YY_RULE_SETUP
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 349 "engines/director/lingo/lingo-lex.l"
+#line 351 "engines/director/lingo/lingo-lex.l"
{ count(); return tTHEN; }
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 350 "engines/director/lingo/lingo-lex.l"
+#line 352 "engines/director/lingo/lingo-lex.l"
{ count(); return tTO; }
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 351 "engines/director/lingo/lingo-lex.l"
+#line 353 "engines/director/lingo/lingo-lex.l"
{ count(); return tSPRITE; }
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 352 "engines/director/lingo/lingo-lex.l"
+#line 354 "engines/director/lingo/lingo-lex.l"
{ count(); return tWITH; }
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 353 "engines/director/lingo/lingo-lex.l"
+#line 355 "engines/director/lingo/lingo-lex.l"
{ count(); return tWITHIN; }
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 354 "engines/director/lingo/lingo-lex.l"
+#line 356 "engines/director/lingo/lingo-lex.l"
{ count(); return tWHEN; }
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 355 "engines/director/lingo/lingo-lex.l"
+#line 357 "engines/director/lingo/lingo-lex.l"
{ count(); return tWHILE; }
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 356 "engines/director/lingo/lingo-lex.l"
+#line 358 "engines/director/lingo/lingo-lex.l"
{ count(); return tWORD; }
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 358 "engines/director/lingo/lingo-lex.l"
+#line 360 "engines/director/lingo/lingo-lex.l"
{ count(); return tNEQ; }
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 359 "engines/director/lingo/lingo-lex.l"
+#line 361 "engines/director/lingo/lingo-lex.l"
{ count(); return tGE; }
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 360 "engines/director/lingo/lingo-lex.l"
+#line 362 "engines/director/lingo/lingo-lex.l"
{ count(); return tLE; }
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 361 "engines/director/lingo/lingo-lex.l"
+#line 363 "engines/director/lingo/lingo-lex.l"
{ count(); return tCONCAT; }
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 362 "engines/director/lingo/lingo-lex.l"
+#line 364 "engines/director/lingo/lingo-lex.l"
{ count(); return tEQ; }
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 364 "engines/director/lingo/lingo-lex.l"
+#line 366 "engines/director/lingo/lingo-lex.l"
{
count();
yylval.s = new Common::String(yytext);
@@ -1665,41 +1667,41 @@ YY_RULE_SETUP
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 398 "engines/director/lingo/lingo-lex.l"
+#line 400 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.f = atof(yytext); return FLOAT; }
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 399 "engines/director/lingo/lingo-lex.l"
+#line 401 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 400 "engines/director/lingo/lingo-lex.l"
+#line 402 "engines/director/lingo/lingo-lex.l"
{ count(); return *yytext; }
YY_BREAK
case 70:
/* rule 70 can match eol */
YY_RULE_SETUP
-#line 401 "engines/director/lingo/lingo-lex.l"
+#line 403 "engines/director/lingo/lingo-lex.l"
{ count(); return '\n'; }
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 402 "engines/director/lingo/lingo-lex.l"
+#line 404 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 403 "engines/director/lingo/lingo-lex.l"
+#line 405 "engines/director/lingo/lingo-lex.l"
{ count(); }
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 405 "engines/director/lingo/lingo-lex.l"
+#line 407 "engines/director/lingo/lingo-lex.l"
ECHO;
YY_BREAK
-#line 1703 "engines/director/lingo/lingo-lex.cpp"
+#line 1705 "engines/director/lingo/lingo-lex.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -2696,7 +2698,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 405 "engines/director/lingo/lingo-lex.l"
+#line 407 "engines/director/lingo/lingo-lex.l"
@@ -2711,23 +2713,24 @@ void lex_unput(int c) {
static const char *inputbuffer;
bool lex_check_parens() {
- if (!g_lingo->_bytenumber)
+ // D2 and D3 were forgiving for trailing braces, so
+ // set a = 1)))())))))) -- is a valid Lingo!
+ if (g_director->getVersion() > 3)
return false;
- const char *ptr = &inputbuffer[g_lingo->_bytenumber - 1];
- bool sawparen = false;
+ if (!g_lingo->_lasttoken.equals(")"))
+ return false;
- while (*ptr && *ptr != '\n') {
- if (*ptr == ')' || *ptr == '(')
- sawparen = true;
+ const char *ptr = &inputbuffer[g_lingo->_lastbytenumber];
+ while (*ptr && *ptr != '\n') {
if (*ptr != ')' && *ptr != '(' && *ptr != ' ' && *ptr != '\xC2')
return false;
ptr++;
}
- return sawparen;
+ return true;
}
namespace Director {
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 53487a2606..5be2ad1798 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -50,6 +50,8 @@ static void count() {
debug("LEXER: Read '%s' at %d:%d", yytext, g_lingo->_linenumber, g_lingo->_colnumber);
char *p = yytext;
+ g_lingo->_lasttoken = yytext;
+ g_lingo->_lastbytenumber = g_lingo->_bytenumber;
while (*p && *p != '\n' && *p != '\r') {
p++;
@@ -415,23 +417,24 @@ void lex_unput(int c) {
static const char *inputbuffer;
bool lex_check_parens() {
- if (!g_lingo->_bytenumber)
+ // D2 and D3 were forgiving for trailing braces, so
+ // set a = 1)))())))))) -- is a valid Lingo!
+ if (g_director->getVersion() > 3)
return false;
- const char *ptr = &inputbuffer[g_lingo->_bytenumber - 1];
- bool sawparen = false;
+ if (!g_lingo->_lasttoken.equals(")"))
+ return false;
- while (*ptr && *ptr != '\n') {
- if (*ptr == ')' || *ptr == '(')
- sawparen = true;
+ const char *ptr = &inputbuffer[g_lingo->_lastbytenumber];
+ while (*ptr && *ptr != '\n') {
if (*ptr != ')' && *ptr != '(' && *ptr != ' ' && *ptr != '\xC2')
return false;
ptr++;
}
- return sawparen;
+ return true;
}
namespace Director {
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 490e404f85..385d6e4f00 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -150,7 +150,8 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) {
_ignoreMe = false;
_immediateMode = false;
- _linenumber = _colnumber = _bytenumber = 0;
+ _linenumber = _colnumber = _bytenumber = _lastbytenumber = _errorbytenumber = 0;
+ _ignoreError = false;
_hadError = false;
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 047491334f..75389695a9 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -416,6 +416,11 @@ public:
int _linenumber;
int _colnumber;
int _bytenumber;
+ Common::String _lasttoken;
+ int _lastbytenumber;
+ Common::String _errortoken;
+ int _errorbytenumber;
+ bool _ignoreError;
Common::String _floatPrecisionFormat;
More information about the Scummvm-git-logs
mailing list