diff --git a/engines/director/lingo/lingo-ast.h b/engines/director/lingo/lingo-ast.h index 032dcefd63a..d3e639c80c1 100644 --- a/engines/director/lingo/lingo-ast.h +++ b/engines/director/lingo/lingo-ast.h @@ -45,6 +45,7 @@ struct NextRepeatNode; struct ExitRepeatNode; struct ExitNode; struct TellNode; +struct WhenNode; struct AssertErrorNode; struct IntNode; struct FloatNode; @@ -94,6 +95,7 @@ enum NodeType { kExitRepeatNode, kExitNode, kTellNode, + kWhenNode, kAssertErrorNode, kIntNode, kFloatNode, @@ -137,6 +139,7 @@ public: virtual void visitExitRepeatNode(ExitRepeatNode *node) = 0; virtual void visitExitNode(ExitNode *node) = 0; virtual void visitTellNode(TellNode *node) = 0; + virtual void visitWhenNode(WhenNode *node) = 0; virtual void visitAssertErrorNode(AssertErrorNode *node) = 0; virtual void visitIntNode(IntNode *node) = 0; virtual void visitFloatNode(FloatNode *node) = 0; @@ -496,6 +499,23 @@ struct TellNode : StmtNode { } }; +/* WhenNode */ + +struct WhenNode : StmtNode { + Common::String *event; + Node *code; + + WhenNode(Common::String *eventIn, Node *codeIn) + : StmtNode(kWhenNode), event(eventIn), code(codeIn) {} + virtual ~WhenNode() { + delete event; + delete code; + } + virtual void accept(NodeVisitor *visitor) { + visitor->visitWhenNode(this); + } +}; + /* AssertErrorNode */ struct AssertErrorNode : StmtNode { diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp index 2f051cc4f85..e62d058ffe8 100644 --- a/engines/director/lingo/lingo-codegen.cpp +++ b/engines/director/lingo/lingo-codegen.cpp @@ -732,6 +732,14 @@ void LingoCompiler::visitTellNode(TellNode *node) { code1(LC::c_telldone); } +/* WhenNode */ + +void LingoCompiler::visitWhenNode(WhenNode *node) { + compile(node->code); + code1(LC::c_whencode); + codeString(node->event->c_str()); +} + /* AssertErrorNode */ void LingoCompiler::visitAssertErrorNode(AssertErrorNode *node) { diff --git a/engines/director/lingo/lingo-codegen.h b/engines/director/lingo/lingo-codegen.h index 1bfe9592852..fe43dafab34 100644 --- a/engines/director/lingo/lingo-codegen.h +++ b/engines/director/lingo/lingo-codegen.h @@ -96,6 +96,7 @@ public: virtual void visitExitRepeatNode(ExitRepeatNode *node); virtual void visitExitNode(ExitNode *node); virtual void visitTellNode(TellNode *node); + virtual void visitWhenNode(WhenNode *node); virtual void visitAssertErrorNode(AssertErrorNode *node); virtual void visitIntNode(IntNode *node); virtual void visitFloatNode(FloatNode *node); diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index 34343359fd5..c28a7b5da5a 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -272,24 +272,25 @@ enum yysymbol_kind_t YYSYMBOL_ifelsestmt = 117, /* ifelsestmt */ YYSYMBOL_loop = 118, /* loop */ YYSYMBOL_tell = 119, /* tell */ - YYSYMBOL_stmtlist = 120, /* stmtlist */ - YYSYMBOL_nonemptystmtlist = 121, /* nonemptystmtlist */ - YYSYMBOL_stmtlistline = 122, /* stmtlistline */ - YYSYMBOL_simpleexpr_noparens_nounarymath = 123, /* simpleexpr_noparens_nounarymath */ - YYSYMBOL_var = 124, /* var */ - YYSYMBOL_varorchunk = 125, /* varorchunk */ - YYSYMBOL_varorthe = 126, /* varorthe */ - YYSYMBOL_list = 127, /* list */ - YYSYMBOL_proplist = 128, /* proplist */ - YYSYMBOL_proppair = 129, /* proppair */ - YYSYMBOL_parens = 130, /* parens */ - YYSYMBOL_unarymath = 131, /* unarymath */ - YYSYMBOL_simpleexpr = 132, /* simpleexpr */ - YYSYMBOL_simpleexpr_nounarymath = 133, /* simpleexpr_nounarymath */ - YYSYMBOL_expr = 134, /* expr */ - YYSYMBOL_expr_nounarymath = 135, /* expr_nounarymath */ - YYSYMBOL_exprlist = 136, /* exprlist */ - YYSYMBOL_nonemptyexprlist = 137 /* nonemptyexprlist */ + YYSYMBOL_when = 120, /* when */ + YYSYMBOL_stmtlist = 121, /* stmtlist */ + YYSYMBOL_nonemptystmtlist = 122, /* nonemptystmtlist */ + YYSYMBOL_stmtlistline = 123, /* stmtlistline */ + YYSYMBOL_simpleexpr_noparens_nounarymath = 124, /* simpleexpr_noparens_nounarymath */ + YYSYMBOL_var = 125, /* var */ + YYSYMBOL_varorchunk = 126, /* varorchunk */ + YYSYMBOL_varorthe = 127, /* varorthe */ + YYSYMBOL_list = 128, /* list */ + YYSYMBOL_proplist = 129, /* proplist */ + YYSYMBOL_proppair = 130, /* proppair */ + YYSYMBOL_parens = 131, /* parens */ + YYSYMBOL_unarymath = 132, /* unarymath */ + YYSYMBOL_simpleexpr = 133, /* simpleexpr */ + YYSYMBOL_simpleexpr_nounarymath = 134, /* simpleexpr_nounarymath */ + YYSYMBOL_expr = 135, /* expr */ + YYSYMBOL_expr_nounarymath = 136, /* expr_nounarymath */ + YYSYMBOL_exprlist = 137, /* exprlist */ + YYSYMBOL_nonemptyexprlist = 138 /* nonemptyexprlist */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -609,18 +610,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 115 +#define YYFINAL 117 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2619 +#define YYLAST 2625 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 93 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 45 +#define YYNNTS 46 /* YYNRULES -- Number of rules. */ -#define YYNRULES 186 +#define YYNRULES 187 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 349 +#define YYNSTATES 353 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 332 @@ -682,20 +683,20 @@ static const yytype_int16 yyrline[] = 279, 283, 284, 285, 290, 291, 292, 293, 294, 295, 296, 301, 302, 305, 307, 308, 309, 310, 313, 314, 315, 316, 317, 319, 320, 322, 325, 326, 327, 328, - 329, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 342, 343, 346, 350, 360, 361, 362, 363, 364, 367, - 368, 369, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 384, 387, 392, 396, 402, 407, 410, 420, - 425, 431, 437, 443, 451, 452, 453, 454, 457, 457, - 459, 460, 461, 464, 468, 472, 478, 482, 486, 490, - 492, 494, 498, 502, 506, 507, 511, 517, 524, 525, - 531, 532, 533, 534, 535, 536, 537, 538, 541, 543, - 547, 551, 552, 553, 556, 560, 565, 566, 567, 570, - 572, 573, 576, 577, 578, 585, 586, 590, 591, 592, - 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 614, 615, 616, 617, 618, - 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, - 629, 630, 631, 634, 635, 638, 642 + 329, 331, 332, 333, 335, 336, 337, 338, 339, 342, + 343, 346, 350, 360, 361, 362, 363, 364, 365, 368, + 369, 370, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 385, 388, 393, 397, 403, 408, 411, 421, + 426, 432, 438, 444, 452, 453, 454, 455, 458, 458, + 460, 461, 462, 465, 469, 473, 479, 483, 487, 491, + 493, 495, 499, 503, 507, 509, 510, 514, 520, 527, + 528, 534, 535, 536, 537, 538, 539, 540, 541, 544, + 546, 550, 554, 555, 556, 559, 563, 568, 569, 570, + 573, 575, 576, 579, 580, 581, 588, 589, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 608, 609, 610, 617, 618, 619, 620, + 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, + 631, 632, 633, 634, 637, 638, 641, 645 }; #endif @@ -730,7 +731,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) "methodlist", "nonemptymethodlist", "methodlistline", "handler", "endargdef", "ID", "idlist", "nonemptyidlist", "stmt", "stmtoneliner", "proc", "cmdargs", "frameargs", "asgn", "to", "definevars", "ifstmt", - "ifelsestmt", "loop", "tell", "stmtlist", "nonemptystmtlist", + "ifelsestmt", "loop", "tell", "when", "stmtlist", "nonemptystmtlist", "stmtlistline", "simpleexpr_noparens_nounarymath", "var", "varorchunk", "varorthe", "list", "proplist", "proppair", "parens", "unarymath", "simpleexpr", "simpleexpr_nounarymath", "expr", "expr_nounarymath", @@ -758,7 +759,7 @@ static const yytype_int16 yytoknum[] = }; #endif -#define YYPACT_NINF (-236) +#define YYPACT_NINF (-237) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -772,41 +773,42 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 1392, -236, -236, -236, -236, -236, -236, -34, -236, 2313, - 925, 1004, -236, -236, 2313, -236, 2, -236, -236, 1083, - -17, 2313, -236, -236, -236, -236, 2313, -236, 925, 2313, - -236, -236, -236, -236, -236, -236, -236, -236, -236, -236, - -236, -236, -236, -236, 1004, 2313, 2313, 2195, -236, 20, - 1392, -236, -236, -236, -236, 1083, -236, -236, -236, -236, - -236, -236, -236, -236, -236, -28, -236, -236, -236, -236, - -236, -236, -236, -13, -32, -236, -236, -236, -236, 1004, - 1004, 1004, 1004, 1004, 844, 439, -21, -9, -3, -236, - -236, -236, -236, -236, -236, 520, 1004, 155, 2313, -2, - 4, 601, 2313, 1004, -236, -236, 12, 5, 6, 7, - 8, 334, 11, 2313, -236, -236, -236, 13, 682, -236, - -236, 2313, 763, 2487, -236, -236, -236, -236, 2334, 16, - 18, 14, -69, -31, -236, 2487, 21, 17, 1004, -236, - -236, 69, 1004, 1004, 1004, 1004, 1162, 1162, 1320, 1004, - 1004, 1241, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, - -236, -236, -236, 65, 2347, 1951, 1004, 1004, 1004, 1004, - 25, -236, -236, 2313, 2313, 2313, 62, 2387, -236, -236, - 1004, -62, -236, -236, -236, 2195, 2012, -236, 37, -236, - -236, 90, 2500, 1004, -236, 1004, 1004, -236, 1004, 2254, - -236, -236, 1004, 39, 1004, -45, -45, -45, -45, 2535, - 2535, -236, -50, -45, -45, -45, -45, -50, -40, -40, - -236, -236, 17, 1004, 1004, 1004, 1004, 1004, 1004, 1004, - 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, - 1004, 2012, 105, 2012, -236, 44, 45, 47, 1004, 2012, - 2400, 2313, -236, -236, 48, -236, -236, -236, -236, -236, - 1515, -236, -236, 2012, 1004, -19, 2487, 2487, 2487, 16, - 18, 43, -236, 2487, -236, 2487, -45, -45, -45, -45, - 2535, 2535, -236, -50, -45, -45, -45, -45, -50, -40, - -40, -236, -236, 17, 1453, 2073, 2012, -236, -236, -236, - 109, 1576, -236, 2313, -62, 50, -236, 1644, 2487, -236, - 2134, 51, 2012, -236, 96, 1004, 53, 54, -236, -236, - 2313, 2012, -236, -236, 1705, 1004, 2437, -236, 2012, -24, - -236, 1767, 55, 2450, 2012, 2012, -236, 2313, 64, -236, - 2012, 1829, -236, -236, 1890, 70, 71, -236, -236 + 1398, -237, -237, -237, -237, -237, -237, -34, -237, 2319, + 931, 1010, -237, -237, 2319, -237, -12, -237, -237, 1089, + -26, 2319, -237, 2319, -237, -237, 2319, -237, 931, 2319, + -237, -237, -237, -237, -237, -237, -237, -237, -237, -237, + -237, -237, -237, -237, 1010, 2319, 2319, 2201, -237, 12, + 1398, -237, -237, -237, -237, 1089, -237, -237, -237, -237, + -237, -237, -237, -237, -237, -237, -56, -237, -237, -237, + -237, -237, -237, -237, -38, -47, -237, -237, -237, -237, + 1010, 1010, 1010, 1010, 1010, 850, 445, -35, -10, -8, + -237, -237, -237, -237, -237, -237, 526, 1010, 81, 2319, + -2, -1, 607, 2319, 1010, -237, -237, -27, 33, 11, + 19, 20, 23, 339, 24, 2319, -237, -237, -237, 26, + 688, -237, -237, 2319, 769, 2506, -237, -237, -237, -237, + 2340, 6, 21, 25, -64, -32, -237, 2506, 27, 3, + 1010, -237, -237, 80, 1010, 1010, 1010, 1010, 1168, 1168, + 1326, 1010, 1010, 1247, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, -237, -237, -237, 2393, 2353, 1957, 1010, 1010, + 1010, 1010, 43, -237, -237, 2319, 2319, 2319, 67, 2406, + -237, -237, 1010, 1010, -66, -237, -237, -237, 2201, 2018, + -237, 51, -237, -237, 96, 2541, 1010, -237, 1010, 1010, + -237, 1010, 2260, -237, -237, 1010, 50, 1010, 44, 44, + 44, 44, -18, -18, -237, 64, 44, 44, 44, 44, + 64, -46, -46, -237, -237, 3, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 2018, 116, 2018, -237, 63, 65, + 66, 1010, 2018, 2443, 2506, 2319, -237, -237, 68, -237, + -237, -237, -237, -237, 1521, -237, -237, 2018, 1010, -31, + 2506, 2506, 2506, 6, 21, 58, -237, 2506, -237, 2506, + 44, 44, 44, 44, -18, -18, -237, 64, 44, 44, + 44, 44, 64, -46, -46, -237, -237, 3, 1459, 2079, + 2018, -237, -237, -237, 130, 1582, -237, 2319, -66, 69, + -237, 1650, 2506, -237, 2140, 82, 2018, -237, 124, 1010, + 83, 84, -237, -237, 2319, 2018, -237, -237, 1711, 1010, + 2456, -237, 2018, -5, -237, 1773, 87, 2493, 2018, 2018, + -237, 2319, 88, -237, 2018, 1835, -237, -237, 1896, 92, + 93, -237, -237 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -814,61 +816,62 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 24, 28, 31, 47, 56, 30, 0, 32, 60, + 0, 24, 28, 31, 47, 55, 30, 0, 32, 59, 82, 0, 33, 35, 0, 39, 40, 42, 45, 82, - 46, 48, 51, 54, 57, 55, 0, 43, 82, 60, + 46, 48, 51, 0, 56, 54, 0, 43, 82, 59, 26, 44, 41, 38, 25, 27, 49, 29, 36, 37, - 59, 53, 34, 58, 50, 60, 0, 52, 5, 0, - 2, 3, 6, 7, 8, 82, 9, 64, 69, 70, - 71, 65, 66, 67, 68, 0, 80, 40, 46, 48, - 50, 52, 62, 0, 61, 120, 121, 123, 122, 32, - 39, 41, 0, 0, 0, 183, 128, 0, 0, 142, - 126, 127, 143, 144, 147, 83, 0, 0, 60, 0, - 0, 83, 0, 0, 128, 130, 0, 0, 0, 0, - 0, 0, 0, 60, 81, 1, 4, 0, 83, 79, - 100, 0, 89, 90, 124, 140, 141, 87, 0, 123, - 122, 0, 128, 0, 134, 185, 0, 184, 183, 74, - 75, 42, 0, 0, 0, 0, 26, 44, 38, 0, - 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, - 145, 146, 165, 85, 0, 0, 0, 0, 0, 0, - 0, 78, 73, 35, 25, 27, 0, 0, 98, 99, - 0, 13, 76, 77, 102, 0, 114, 101, 0, 72, - 63, 42, 93, 0, 139, 0, 0, 132, 0, 0, - 133, 131, 0, 0, 0, 157, 158, 155, 156, 159, - 160, 152, 162, 163, 164, 154, 153, 161, 148, 149, - 150, 151, 84, 0, 0, 0, 0, 0, 0, 0, + 58, 53, 34, 57, 50, 59, 0, 52, 5, 0, + 2, 3, 6, 7, 8, 82, 9, 63, 69, 70, + 71, 64, 65, 66, 67, 68, 0, 80, 40, 46, + 48, 50, 52, 61, 0, 60, 121, 122, 124, 123, + 32, 39, 41, 0, 0, 0, 184, 129, 0, 0, + 143, 127, 128, 144, 145, 148, 83, 0, 0, 59, + 0, 0, 83, 0, 0, 129, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 59, 81, 1, 4, 0, + 83, 79, 100, 0, 89, 90, 125, 141, 142, 87, + 0, 124, 123, 0, 129, 0, 135, 186, 0, 185, + 184, 74, 75, 42, 0, 0, 0, 0, 26, 44, + 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, + 0, 0, 146, 147, 166, 85, 0, 0, 0, 0, + 0, 0, 0, 78, 73, 35, 25, 27, 0, 0, + 98, 99, 0, 0, 13, 76, 77, 102, 0, 115, + 101, 0, 72, 62, 42, 93, 0, 140, 0, 0, + 133, 0, 0, 134, 132, 0, 0, 0, 158, 159, + 156, 157, 160, 161, 153, 163, 164, 165, 155, 154, + 162, 149, 150, 151, 152, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 114, 103, 114, 129, 0, 0, 0, 0, 114, - 0, 0, 17, 18, 11, 14, 15, 112, 118, 119, - 0, 115, 116, 114, 0, 0, 138, 136, 137, 0, - 0, 0, 135, 186, 125, 92, 175, 176, 173, 174, - 177, 178, 170, 180, 181, 182, 172, 171, 179, 166, - 167, 168, 169, 86, 0, 0, 10, 94, 95, 96, - 0, 0, 97, 60, 0, 0, 117, 20, 91, 88, - 0, 0, 114, 105, 0, 0, 0, 0, 16, 113, - 21, 114, 107, 104, 0, 0, 0, 109, 114, 0, - 22, 0, 0, 0, 114, 12, 19, 0, 0, 106, - 114, 0, 23, 108, 0, 0, 0, 110, 111 + 0, 0, 0, 0, 115, 103, 115, 130, 0, 0, + 0, 0, 115, 0, 114, 0, 17, 18, 11, 14, + 15, 112, 119, 120, 0, 116, 117, 115, 0, 0, + 139, 137, 138, 0, 0, 0, 136, 187, 126, 92, + 176, 177, 174, 175, 178, 179, 171, 181, 182, 183, + 173, 172, 180, 167, 168, 169, 170, 86, 0, 0, + 10, 94, 95, 96, 0, 0, 97, 59, 0, 0, + 118, 20, 91, 88, 0, 0, 115, 105, 0, 0, + 0, 0, 16, 113, 21, 115, 107, 104, 0, 0, + 0, 109, 115, 0, 22, 0, 0, 0, 115, 12, + 19, 0, 0, 106, 115, 0, 23, 108, 0, 0, + 0, 110, 111 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -236, -236, -236, 108, -236, -236, -236, -236, -236, -137, - -236, -236, 0, -27, -236, 3, -43, -236, -6, 144, - -236, -236, -236, -236, -236, -236, -236, -233, -236, -235, - -53, -20, -99, -236, -236, -236, -23, -44, -236, -1, - -236, 203, 56, 41, -153 + -237, -237, -237, 136, -237, -237, -237, -237, -237, -115, + -237, -237, 0, -28, -237, 4, -44, -237, -6, 166, + -237, -237, -237, -237, -237, -237, -237, -237, -236, -237, + -228, -45, -19, -108, -237, -237, -237, -7, -29, -237, + 10, -237, 205, 72, 57, -155 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 49, 50, 51, 52, 53, 253, 254, 255, 256, - 54, 329, 86, 73, 74, 259, 57, 58, 87, 88, - 59, 180, 60, 61, 62, 63, 64, 260, 261, 262, - 89, 90, 245, 106, 91, 133, 134, 92, 93, 94, - 162, 135, 163, 136, 137 + 0, 49, 50, 51, 52, 53, 257, 258, 259, 260, + 54, 333, 87, 74, 75, 263, 57, 58, 88, 89, + 59, 182, 60, 61, 62, 63, 64, 65, 264, 265, + 266, 90, 91, 248, 107, 92, 135, 136, 93, 94, + 95, 164, 137, 165, 138, 139 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -876,420 +879,453 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 55, 105, 110, 56, 114, 65, 222, 168, 294, 72, - 296, 251, 168, 100, 98, 149, 301, 168, 112, 138, - 115, 104, 108, 198, 252, 306, 107, 102, 103, 72, - 307, 155, 156, 157, 158, 154, 155, 156, 157, 158, - 265, 99, 160, 157, 158, 72, 113, 55, 160, 117, - 55, 161, 66, 56, 178, 121, 199, 161, 119, 306, - 200, 306, 336, 337, 179, 160, 306, 138, 202, 160, - 309, 170, 306, 120, 161, 246, 247, 139, 161, 324, - 124, 125, 126, 140, 171, 132, 188, 293, 331, 306, - 172, 181, 182, 183, 184, 335, 306, 187, 72, 189, - 306, 341, 176, 204, 202, 197, 306, 344, 195, 306, - 196, 243, 201, 72, 248, 223, 224, 225, 226, 227, - 228, 190, 229, 263, 264, 230, 231, 232, 274, 295, - 297, 298, 314, 299, 304, 198, 319, 323, 325, 327, - 328, 339, 257, 233, 234, 235, 236, 237, 238, 239, - 343, 315, 240, 244, 244, 244, 347, 348, 116, 142, - 143, 144, 145, 166, 167, 55, 168, 318, 242, 149, - 150, 169, 109, 104, 104, 104, 272, 0, 192, 203, - 0, 0, 0, 0, 0, 55, 55, 152, 153, 154, - 155, 156, 157, 158, 0, 0, 165, 0, 0, 271, - 0, 0, 0, 0, 0, 142, 143, 144, 145, 166, - 167, 0, 168, 95, 97, 149, 150, 169, 0, 0, - 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 152, 153, 154, 155, 156, 157, 158, - 0, 55, 0, 55, 0, 0, 0, 111, 0, 55, - 0, 303, 0, 0, 0, 0, 0, 0, 118, 0, - 55, 0, 0, 55, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 317, 0, 0, 0, - 0, 0, 122, 123, 0, 0, 0, 128, 0, 0, - 0, 0, 0, 0, 55, 55, 55, 0, 313, 164, - 0, 55, 0, 72, 0, 0, 177, 55, 0, 0, - 55, 0, 55, 322, 0, 0, 0, 0, 0, 0, - 330, 55, 0, 0, 55, 0, 0, 0, 55, 0, - 0, 55, 0, 0, 55, 55, 0, 342, 0, 0, - 55, 55, 0, 0, 55, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 0, 0, 0, 0, 0, 0, 0, 209, - 210, 211, 214, 0, 0, 0, 185, 0, 0, 0, - 0, 0, 0, 250, 142, 143, 144, 145, 166, 167, - 0, 168, 0, 0, 149, 150, 169, 0, 266, 267, - 0, 268, 0, 0, 0, 273, 0, 275, 0, 0, - 0, 0, 152, 153, 154, 155, 156, 157, 158, 0, - 186, 0, 0, 0, 0, 0, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 0, 75, 0, 0, 0, 0, 76, - 0, 300, 1, 129, 130, 0, 0, 0, 2, 3, - 4, 5, 6, 0, 0, 0, 8, 308, 0, 0, - 12, 13, 0, 15, 67, 17, 18, 0, 68, 69, - 0, 22, 23, 24, 25, 0, 27, 0, 0, 0, - 0, 0, 0, 30, 31, 81, 33, 34, 35, 0, - 0, 36, 37, 38, 39, 40, 41, 42, 43, 70, - 0, 0, 0, 0, 0, 0, 71, 0, 326, 0, - 82, 83, 0, 0, 0, 75, 0, 96, 333, 85, - 76, 131, 0, 1, 77, 78, 0, 0, 0, 2, - 3, 4, 5, 6, 0, 0, 0, 8, 0, 0, - 0, 12, 13, 0, 15, 67, 141, 18, 0, 68, - 69, 0, 22, 23, 24, 25, 0, 27, 0, 0, - 142, 143, 144, 145, 146, 147, 81, 148, 34, 35, - 149, 150, 151, 37, 38, 39, 40, 41, 42, 43, - 70, 0, 0, 0, 0, 0, 0, 71, 152, 153, - 154, 155, 156, 157, 158, 0, 75, 159, 96, 0, - 85, 76, 0, 0, 1, 77, 78, 0, 0, 0, - 2, 3, 4, 5, 6, 0, 0, 0, 8, 0, - 0, 0, 12, 173, 0, 15, 67, 17, 18, 0, - 68, 69, 0, 22, 23, 24, 25, 0, 27, 0, - 0, 142, 143, 144, 145, 146, 147, 81, 148, 174, - 175, 149, 150, 151, 37, 38, 39, 40, 41, 42, - 43, 70, 0, 0, 0, 0, 0, 0, 71, 152, - 153, 154, 155, 156, 157, 158, 0, 75, 159, 96, - 0, 85, 76, 0, 0, 1, 77, 78, 0, 0, - 0, 2, 3, 4, 5, 6, 0, 0, 0, 8, - 0, 0, 0, 12, 13, 0, 15, 67, 17, 18, - 0, 68, 69, 0, 22, 23, 24, 25, 0, 27, - 0, 0, 142, 143, 144, 145, 146, 147, 81, 148, - 34, 35, 149, 150, 151, 37, 38, 39, 40, 41, - 42, 43, 70, 0, 0, 0, 0, 0, 0, 71, - 152, 153, 154, 155, 156, 157, 158, 0, 75, 159, - 96, 0, 85, 76, 0, 0, 1, 77, 78, 0, - 0, 0, 2, 3, 4, 5, 6, 0, 0, 0, - 8, 0, 0, 0, 12, 13, 0, 15, 67, 191, - 18, 0, 68, 69, 0, 22, 23, 24, 25, 0, - 27, 0, 0, 142, 143, 144, 145, 146, 147, 81, - 148, 34, 35, 149, 150, 151, 37, 38, 39, 40, - 41, 42, 43, 70, 0, 0, 0, 0, 0, 0, - 71, 152, 153, 154, 155, 156, 157, 158, 0, 75, - 0, 96, 0, 85, 76, 0, 0, 1, 77, 78, - 0, 0, 0, 2, 3, 4, 5, 6, 0, 0, - 0, 8, 0, 0, 0, 12, 13, 0, 15, 67, - 17, 18, 0, 68, 69, 0, 22, 23, 24, 25, - 0, 27, 0, 0, 0, 0, 0, 0, 30, 31, - 81, 33, 34, 35, 0, 0, 36, 37, 38, 39, - 40, 41, 42, 43, 70, 0, 0, 0, 0, 0, - 0, 71, 0, 0, 0, 82, 83, 0, 0, 0, - 75, 0, 96, 127, 85, 76, 0, 0, 1, 77, - 78, 0, 0, 0, 2, 3, 4, 5, 6, 0, - 0, 0, 79, 0, 0, 0, 12, 13, 0, 80, - 67, 17, 18, 0, 68, 69, 0, 22, 23, 24, + 55, 112, 106, 116, 56, 66, 225, 255, 298, 73, + 300, 170, 117, 101, 99, 180, 305, 114, 103, 104, + 256, 105, 110, 108, 140, 181, 109, 100, 201, 73, + 121, 311, 144, 145, 146, 147, 310, 159, 160, 170, + 123, 269, 151, 152, 171, 73, 115, 55, 122, 119, + 55, 162, 67, 140, 56, 202, 205, 162, 313, 203, + 154, 155, 156, 157, 158, 159, 160, 163, 249, 250, + 310, 172, 310, 163, 183, 162, 141, 310, 142, 162, + 328, 340, 341, 310, 173, 174, 134, 191, 297, 335, + 205, 163, 126, 127, 128, 163, 339, 184, 198, 73, + 310, 170, 345, 178, 151, 185, 186, 310, 348, 187, + 190, 310, 192, 199, 207, 73, 200, 310, 204, 251, + 310, 170, 167, 193, 156, 157, 158, 159, 160, 246, + 268, 144, 145, 146, 147, 168, 169, 267, 170, 278, + 299, 151, 152, 171, 261, 157, 158, 159, 160, 301, + 201, 302, 303, 318, 308, 323, 247, 247, 247, 154, + 155, 156, 157, 158, 159, 160, 329, 55, 327, 331, + 332, 245, 319, 343, 347, 105, 105, 105, 351, 352, + 144, 145, 146, 147, 168, 169, 118, 170, 55, 55, + 151, 152, 171, 322, 111, 276, 195, 206, 0, 0, + 0, 0, 275, 0, 0, 0, 0, 0, 154, 155, + 156, 157, 158, 159, 160, 96, 98, 0, 0, 0, + 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, + 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 55, 0, 55, 0, 0, 113, + 0, 0, 55, 0, 0, 307, 0, 0, 0, 0, + 120, 0, 0, 0, 55, 0, 0, 55, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 0, 0, 0, 0, 0, 124, 125, 0, 0, 0, + 130, 0, 0, 0, 0, 0, 0, 0, 55, 55, + 55, 0, 166, 317, 0, 55, 0, 73, 0, 179, + 0, 55, 0, 0, 55, 0, 55, 0, 326, 0, + 0, 0, 0, 0, 334, 55, 0, 0, 55, 0, + 0, 0, 55, 0, 0, 55, 0, 0, 55, 55, + 0, 346, 0, 0, 55, 55, 0, 0, 55, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 0, 0, 0, 0, + 0, 0, 0, 212, 213, 214, 217, 0, 0, 0, + 0, 188, 0, 0, 0, 0, 0, 253, 254, 144, + 145, 146, 147, 168, 169, 0, 170, 0, 0, 151, + 152, 171, 0, 270, 271, 0, 272, 0, 0, 0, + 277, 0, 279, 0, 0, 0, 0, 154, 155, 156, + 157, 158, 159, 160, 0, 189, 0, 0, 0, 0, + 0, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 0, 0, + 76, 0, 0, 0, 0, 77, 304, 0, 1, 131, + 132, 0, 0, 0, 2, 3, 4, 5, 6, 0, + 0, 0, 8, 312, 0, 0, 12, 13, 0, 15, + 68, 17, 18, 0, 69, 70, 0, 22, 0, 24, 25, 0, 27, 0, 0, 0, 0, 0, 0, 30, - 31, 81, 33, 34, 35, 0, 0, 36, 37, 38, - 39, 40, 41, 42, 43, 70, 0, 0, 0, 0, - 0, 0, 71, 0, 0, 0, 82, 83, 0, 75, - 0, 0, 0, 84, 76, 85, 0, 1, 77, 78, - 0, 0, 0, 2, 3, 4, 5, 6, 0, 0, - 0, 8, 0, 0, 0, 12, 13, 0, 15, 67, - 17, 18, 0, 68, 69, 0, 22, 23, 24, 25, - 0, 27, 0, 0, 0, 0, 0, 0, 30, 31, - 81, 33, 34, 35, 0, 0, 36, 37, 38, 39, - 40, 41, 42, 43, 70, 0, 0, 0, 0, 0, - 0, 71, 0, 0, 0, 82, 83, 0, 75, 0, - 0, 0, 96, 76, 85, 0, 1, 77, 78, 0, - 0, 0, 2, 3, 4, 5, 6, 0, 0, 0, - 8, 0, 0, 0, 12, 13, 0, 15, 67, 17, - 18, 0, 68, 69, 0, 22, 23, 24, 25, 0, - 27, 0, 0, 0, 0, 0, 0, 30, 31, 81, - 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, - 41, 42, 43, 70, 0, 0, 0, 0, 0, 0, - 71, 0, 0, 0, 82, 83, 0, 75, 0, 0, - 0, 84, 76, 85, 0, 1, 77, 78, 0, 0, - 0, 2, 3, 4, 5, 6, 0, 0, 0, 8, - 0, 0, 0, 12, 13, 0, 15, 67, 17, 18, - 0, 68, 69, 0, 22, 23, 24, 25, 0, 27, - 0, 0, 0, 0, 0, 0, 0, 0, 81, 33, - 34, 35, 0, 0, 36, 37, 38, 39, 40, 41, - 42, 43, 70, 0, 0, 0, 0, 0, 0, 71, - 0, 0, 0, 82, 83, 0, 75, 0, 0, 0, - 96, 76, 85, 0, 1, 77, 78, 0, 0, 0, - 2, 3, 4, 5, 6, 0, 0, 0, 8, 0, - 0, 0, 12, 13, 0, 15, 67, 17, 18, 0, - 68, 69, 0, 22, 23, 24, 25, 0, 27, 0, - 0, 0, 0, 0, 0, 0, 0, 81, 33, 34, - 35, 0, 0, 0, 37, 38, 39, 40, 41, 42, - 43, 70, 0, 0, 0, 0, 0, 0, 71, 0, - 0, 0, 82, 83, 0, 75, 0, 0, 0, 96, - 76, 85, 0, 1, 77, 78, 0, 0, 0, 2, + 31, 82, 33, 34, 35, 0, 0, 36, 37, 38, + 39, 40, 41, 42, 43, 71, 0, 0, 0, 0, + 0, 0, 72, 0, 330, 0, 83, 84, 0, 0, + 0, 76, 0, 97, 337, 86, 77, 133, 0, 1, + 78, 79, 0, 0, 0, 2, 3, 4, 5, 6, + 0, 0, 0, 8, 0, 0, 0, 12, 13, 0, + 15, 68, 143, 18, 0, 69, 70, 0, 22, 0, + 24, 25, 0, 27, 0, 0, 144, 145, 146, 147, + 148, 149, 82, 150, 34, 35, 151, 152, 153, 37, + 38, 39, 40, 41, 42, 43, 71, 0, 0, 0, + 0, 0, 0, 72, 154, 155, 156, 157, 158, 159, + 160, 0, 76, 161, 97, 0, 86, 77, 0, 0, + 1, 78, 79, 0, 0, 0, 2, 3, 4, 5, + 6, 0, 0, 0, 8, 0, 0, 0, 12, 175, + 0, 15, 68, 17, 18, 0, 69, 70, 0, 22, + 0, 24, 25, 0, 27, 0, 0, 144, 145, 146, + 147, 148, 149, 82, 150, 176, 177, 151, 152, 153, + 37, 38, 39, 40, 41, 42, 43, 71, 0, 0, + 0, 0, 0, 0, 72, 154, 155, 156, 157, 158, + 159, 160, 0, 76, 161, 97, 0, 86, 77, 0, + 0, 1, 78, 79, 0, 0, 0, 2, 3, 4, + 5, 6, 0, 0, 0, 8, 0, 0, 0, 12, + 13, 0, 15, 68, 17, 18, 0, 69, 70, 0, + 22, 0, 24, 25, 0, 27, 0, 0, 144, 145, + 146, 147, 148, 149, 82, 150, 34, 35, 151, 152, + 153, 37, 38, 39, 40, 41, 42, 43, 71, 0, + 0, 0, 0, 0, 0, 72, 154, 155, 156, 157, + 158, 159, 160, 0, 76, 161, 97, 0, 86, 77, + 0, 0, 1, 78, 79, 0, 0, 0, 2, 3, + 4, 5, 6, 0, 0, 0, 8, 0, 0, 0, + 12, 13, 0, 15, 68, 194, 18, 0, 69, 70, + 0, 22, 0, 24, 25, 0, 27, 0, 0, 144, + 145, 146, 147, 148, 149, 82, 150, 34, 35, 151, + 152, 153, 37, 38, 39, 40, 41, 42, 43, 71, + 0, 0, 0, 0, 0, 0, 72, 154, 155, 156, + 157, 158, 159, 160, 0, 76, 0, 97, 0, 86, + 77, 0, 0, 1, 78, 79, 0, 0, 0, 2, 3, 4, 5, 6, 0, 0, 0, 8, 0, 0, - 0, 12, 13, 0, 15, 67, 17, 18, 0, 68, - 69, 0, 22, 23, 24, 25, 0, 27, 0, 0, - 0, 0, 0, 0, 0, 0, 81, 0, 34, 35, - 0, 0, 0, 37, 38, 39, 40, 41, 42, 43, - 70, 0, 0, 0, 0, 0, 0, 71, 0, 0, - 0, 0, 0, 0, 0, 1, 0, 0, 96, 0, - 85, 2, 3, 4, 5, 6, 0, 0, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 0, 22, 23, 24, 25, 26, 27, + 0, 12, 13, 0, 15, 68, 17, 18, 0, 69, + 70, 0, 22, 0, 24, 25, 0, 27, 0, 0, + 0, 0, 0, 0, 30, 31, 82, 33, 34, 35, + 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, + 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, + 0, 83, 84, 0, 0, 0, 76, 0, 97, 129, + 86, 77, 0, 0, 1, 78, 79, 0, 0, 0, + 2, 3, 4, 5, 6, 0, 0, 0, 80, 0, + 0, 0, 12, 13, 0, 81, 68, 17, 18, 0, + 69, 70, 0, 22, 0, 24, 25, 0, 27, 0, + 0, 0, 0, 0, 0, 30, 31, 82, 33, 34, + 35, 0, 0, 36, 37, 38, 39, 40, 41, 42, + 43, 71, 0, 0, 0, 0, 0, 0, 72, 0, + 0, 0, 83, 84, 0, 76, 0, 0, 0, 85, + 77, 86, 0, 1, 78, 79, 0, 0, 0, 2, + 3, 4, 5, 6, 0, 0, 0, 8, 0, 0, + 0, 12, 13, 0, 15, 68, 17, 18, 0, 69, + 70, 0, 22, 0, 24, 25, 0, 27, 0, 0, + 0, 0, 0, 0, 30, 31, 82, 33, 34, 35, + 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, + 71, 0, 0, 0, 0, 0, 0, 72, 0, 0, + 0, 83, 84, 0, 76, 0, 0, 0, 97, 77, + 86, 0, 1, 78, 79, 0, 0, 0, 2, 3, + 4, 5, 6, 0, 0, 0, 8, 0, 0, 0, + 12, 13, 0, 15, 68, 17, 18, 0, 69, 70, + 0, 22, 0, 24, 25, 0, 27, 0, 0, 0, + 0, 0, 0, 30, 31, 82, 33, 34, 35, 0, + 0, 36, 37, 38, 39, 40, 41, 42, 43, 71, + 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, + 83, 84, 0, 76, 0, 0, 0, 85, 77, 86, + 0, 1, 78, 79, 0, 0, 0, 2, 3, 4, + 5, 6, 0, 0, 0, 8, 0, 0, 0, 12, + 13, 0, 15, 68, 17, 18, 0, 69, 70, 0, + 22, 0, 24, 25, 0, 27, 0, 0, 0, 0, + 0, 0, 0, 0, 82, 33, 34, 35, 0, 0, + 36, 37, 38, 39, 40, 41, 42, 43, 71, 0, + 0, 0, 0, 0, 0, 72, 0, 0, 0, 83, + 84, 0, 76, 0, 0, 0, 97, 77, 86, 0, + 1, 78, 79, 0, 0, 0, 2, 3, 4, 5, + 6, 0, 0, 0, 8, 0, 0, 0, 12, 13, + 0, 15, 68, 17, 18, 0, 69, 70, 0, 22, + 0, 24, 25, 0, 27, 0, 0, 0, 0, 0, + 0, 0, 0, 82, 33, 34, 35, 0, 0, 0, + 37, 38, 39, 40, 41, 42, 43, 71, 0, 0, + 0, 0, 0, 0, 72, 0, 0, 0, 83, 84, + 0, 76, 0, 0, 0, 97, 77, 86, 0, 1, + 78, 79, 0, 0, 0, 2, 3, 4, 5, 6, + 0, 0, 0, 8, 0, 0, 0, 12, 13, 0, + 15, 68, 17, 18, 0, 69, 70, 0, 22, 0, + 24, 25, 0, 27, 0, 0, 0, 0, 0, 0, + 0, 0, 82, 0, 34, 35, 0, 0, 0, 37, + 38, 39, 40, 41, 42, 43, 71, 0, 0, 0, + 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, + 0, 1, 0, 0, 97, 0, 86, 2, 3, 4, + 5, 6, 0, 0, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 0, + 22, 23, 24, 25, 26, 27, 28, 29, 0, 0, + 0, 0, 30, 31, 32, 33, 34, 35, 0, 0, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 0, 1, 0, 0, 47, 0, 0, 2, 3, + 4, 5, 6, 314, 48, 7, 8, 9, 10, 11, + 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, + 0, 22, 23, 24, 25, 0, 27, 28, 29, 0, + 0, 0, 0, 30, 31, 32, 33, 34, 35, 0, + 0, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 0, 0, 315, 1, 0, 47, 0, 0, 0, + 2, 3, 4, 5, 6, 262, 0, 7, 8, 9, + 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, + 20, 21, 0, 22, 23, 24, 25, 0, 27, 28, + 29, 0, 0, 0, 0, 30, 31, 32, 33, 34, + 35, 0, 0, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 0, 0, 1, 0, 309, 47, 0, + 0, 2, 3, 4, 5, 6, 0, 262, 7, 8, + 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, + 19, 20, 21, 0, 22, 23, 24, 25, 0, 27, 28, 29, 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 0, 1, 0, 0, 47, - 0, 0, 2, 3, 4, 5, 6, 310, 48, 7, + 42, 43, 44, 45, 0, 0, 0, 320, 0, 47, + 0, 0, 0, 1, 0, 0, 324, 0, 262, 2, + 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, + 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, + 21, 0, 22, 23, 24, 25, 0, 27, 28, 29, + 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, + 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 0, 0, 1, 0, 0, 47, 0, 0, + 2, 3, 4, 5, 6, 0, 262, 7, 8, 9, + 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, + 20, 21, 0, 22, 23, 24, 25, 0, 27, 28, + 29, 0, 0, 0, 0, 30, 31, 32, 33, 34, + 35, 0, 0, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 0, 0, 336, 1, 0, 47, 0, + 0, 0, 2, 3, 4, 5, 6, 262, 0, 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 0, 22, 23, 24, 25, 0, 27, 28, 29, 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 0, 0, 311, 1, 0, - 47, 0, 0, 0, 2, 3, 4, 5, 6, 258, + 41, 42, 43, 44, 45, 0, 0, 342, 1, 0, + 47, 0, 0, 0, 2, 3, 4, 5, 6, 262, 0, 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 0, 22, 23, 24, 25, 0, 27, 28, 29, 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, 1, - 0, 305, 47, 0, 0, 2, 3, 4, 5, 6, - 0, 258, 7, 8, 9, 10, 11, 12, 13, 0, + 349, 0, 47, 0, 0, 2, 3, 4, 5, 6, + 0, 262, 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 0, 22, 23, 24, 25, 0, 27, 28, 29, 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, 0, - 0, 316, 0, 47, 0, 0, 0, 1, 0, 0, - 320, 0, 258, 2, 3, 4, 5, 6, 0, 0, - 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, - 17, 18, 19, 20, 21, 0, 22, 23, 24, 25, - 0, 27, 28, 29, 0, 0, 0, 0, 30, 31, - 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 0, 0, 1, 0, - 0, 47, 0, 0, 2, 3, 4, 5, 6, 0, - 258, 7, 8, 9, 10, 11, 12, 13, 0, 15, - 16, 17, 18, 19, 20, 21, 0, 22, 23, 24, - 25, 0, 27, 28, 29, 0, 0, 0, 0, 30, - 31, 32, 33, 34, 35, 0, 0, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 0, 0, 332, - 1, 0, 47, 0, 0, 0, 2, 3, 4, 5, - 6, 258, 0, 7, 8, 9, 10, 11, 12, 13, + 1, 350, 0, 47, 0, 0, 2, 3, 4, 5, + 6, 0, 262, 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 0, 22, 23, 24, 25, 0, 27, 28, 29, 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 0, - 0, 338, 1, 0, 47, 0, 0, 0, 2, 3, - 4, 5, 6, 258, 0, 7, 8, 9, 10, 11, + 0, 1, 0, 0, 47, 0, 0, 2, 3, 4, + 5, 6, 0, 244, 7, 8, 9, 10, 11, 12, + 13, 0, 15, 16, 17, 18, 19, 20, 21, 0, + 22, 23, 24, 25, 0, 27, 28, 29, 0, 0, + 0, 0, 30, 31, 32, 33, 34, 35, 0, 0, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 0, 0, 1, 0, 0, 47, 0, 0, 2, 3, + 4, 5, 6, 0, 262, 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 0, 22, 23, 24, 25, 0, 27, 28, 29, 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 0, 0, 1, 345, 0, 47, 0, 0, 2, - 3, 4, 5, 6, 0, 258, 7, 8, 9, 10, + 45, 0, 0, 1, 0, 0, 47, 0, 0, 2, + 3, 4, 5, 6, 0, 316, 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, 20, 21, 0, 22, 23, 24, 25, 0, 27, 28, 29, 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 0, 0, 1, 346, 0, 47, 0, 0, - 2, 3, 4, 5, 6, 0, 258, 7, 8, 9, - 10, 11, 12, 13, 0, 15, 16, 17, 18, 19, - 20, 21, 0, 22, 23, 24, 25, 0, 27, 28, + 44, 45, 0, 0, 1, 0, 0, 47, 0, 0, + 2, 3, 4, 5, 6, 0, 325, 7, 8, 9, + 10, 0, 12, 13, 0, 15, 16, 17, 18, 19, + 69, 21, 0, 22, 0, 24, 25, 0, 27, 28, 29, 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 0, 0, 1, 0, 0, 47, 0, - 0, 2, 3, 4, 5, 6, 0, 241, 7, 8, - 9, 10, 11, 12, 13, 0, 15, 16, 17, 18, - 19, 20, 21, 0, 22, 23, 24, 25, 0, 27, - 28, 29, 0, 0, 0, 0, 30, 31, 32, 33, - 34, 35, 0, 0, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 0, 0, 1, 0, 0, 47, - 0, 0, 2, 3, 4, 5, 6, 0, 258, 7, - 8, 9, 10, 11, 12, 13, 0, 15, 16, 17, - 18, 19, 20, 21, 0, 22, 23, 24, 25, 0, - 27, 28, 29, 0, 0, 0, 0, 30, 31, 32, - 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 0, 0, 1, 0, 0, - 47, 0, 0, 2, 3, 4, 5, 6, 0, 312, - 7, 8, 9, 10, 11, 12, 13, 0, 15, 16, - 17, 18, 19, 20, 21, 0, 22, 23, 24, 25, - 0, 27, 28, 29, 0, 0, 0, 0, 30, 31, - 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 0, 0, 1, 0, - 0, 47, 0, 0, 2, 3, 4, 5, 6, 0, - 321, 7, 8, 9, 10, 0, 12, 13, 0, 15, - 16, 17, 18, 19, 68, 21, 0, 22, 23, 24, - 25, 0, 27, 28, 29, 0, 0, 0, 0, 30, - 31, 32, 33, 34, 35, 0, 0, 36, 37, 38, - 39, 40, 41, 42, 43, 70, 45, 1, 269, 270, - 0, 0, 47, 2, 3, 4, 5, 6, 0, 0, - 0, 8, 0, 0, 0, 12, 13, 0, 15, 67, - 17, 18, 0, 68, 69, 0, 22, 23, 24, 25, - 0, 27, 0, 0, 0, 0, 0, 0, 30, 31, - 32, 33, 34, 35, 0, 0, 36, 37, 38, 39, - 40, 41, 42, 43, 70, 0, 1, 0, 0, 0, - 0, 71, 2, 3, 4, 5, 6, 0, 0, 0, - 8, 0, 0, 0, 12, 13, 0, 15, 67, 17, - 18, 0, 68, 69, 0, 22, 23, 24, 25, 0, - 27, 0, 0, 0, 0, 0, 0, 30, 31, 32, - 33, 34, 35, 0, 0, 36, 37, 38, 39, 40, - 41, 42, 43, 70, 142, 143, 144, 145, 166, 167, - 71, 168, 0, 0, 149, 150, 169, 142, 143, 144, - 145, 166, 167, 0, 168, 0, 0, 149, 150, 169, - 0, 0, 152, 153, 154, 155, 156, 157, 158, 0, - 0, 193, 0, 194, 0, 152, 153, 154, 155, 156, - 157, 158, 0, 0, 0, 0, 194, 142, 143, 144, - 145, 166, 167, 0, 168, 0, 0, 149, 150, 169, - 142, 143, 144, 145, 166, 167, 0, 168, 0, 0, - 149, 150, 169, 0, 0, 152, 153, 154, 155, 156, - 157, 158, 0, 249, 0, 0, 0, 0, 152, 153, - 154, 155, 156, 157, 158, 0, 302, 142, 143, 144, - 145, 166, 167, 0, 168, 0, 0, 149, 150, 169, - 142, 143, 144, 145, 166, 167, 0, 168, 0, 0, - 149, 150, 169, 0, 0, 152, 153, 154, 155, 156, - 157, 158, 0, 334, 0, 0, 0, 0, 152, 153, - 154, 155, 156, 157, 158, 0, 340, 142, 143, 144, - 145, 166, 167, 0, 168, 0, 0, 149, 150, 169, - 223, 224, 225, 226, 227, 228, 0, 229, 0, 0, - 230, 231, 232, 0, 0, 152, 153, 154, 155, 156, - 157, 158, 0, 0, 0, 0, 0, 0, 233, 234, - 235, 236, 237, 238, 239, 142, 143, 144, 145, 0, - 0, 0, 168, 0, 0, 149, 150, 169, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 152, 153, 154, 155, 156, 157, 158 + 43, 71, 45, 1, 273, 274, 0, 0, 47, 2, + 3, 4, 5, 6, 0, 0, 0, 8, 0, 0, + 0, 12, 13, 0, 15, 68, 17, 18, 0, 69, + 70, 0, 22, 0, 24, 25, 0, 27, 0, 0, + 0, 0, 0, 0, 30, 31, 32, 33, 34, 35, + 0, 0, 36, 37, 38, 39, 40, 41, 42, 43, + 71, 0, 1, 0, 0, 0, 0, 72, 2, 3, + 4, 5, 6, 0, 0, 0, 8, 0, 0, 0, + 12, 13, 0, 15, 68, 17, 18, 0, 69, 70, + 0, 22, 0, 24, 25, 0, 27, 0, 0, 0, + 0, 0, 0, 30, 31, 32, 33, 34, 35, 0, + 0, 36, 37, 38, 39, 40, 41, 42, 43, 71, + 144, 145, 146, 147, 168, 169, 72, 170, 0, 0, + 151, 152, 171, 144, 145, 146, 147, 168, 169, 0, + 170, 0, 0, 151, 152, 171, 0, 0, 154, 155, + 156, 157, 158, 159, 160, 0, 0, 196, 0, 197, + 0, 154, 155, 156, 157, 158, 159, 160, 0, 0, + 0, 0, 197, 226, 227, 228, 229, 230, 231, 0, + 232, 0, 0, 233, 234, 235, 144, 145, 146, 147, + 168, 169, 0, 170, 0, 0, 151, 152, 171, 0, + 0, 236, 237, 238, 239, 240, 241, 242, 0, 0, + 243, 0, 0, 0, 154, 155, 156, 157, 158, 159, + 160, 0, 252, 144, 145, 146, 147, 168, 169, 0, + 170, 0, 0, 151, 152, 171, 144, 145, 146, 147, + 168, 169, 0, 170, 0, 0, 151, 152, 171, 0, + 0, 154, 155, 156, 157, 158, 159, 160, 0, 306, + 0, 0, 0, 0, 154, 155, 156, 157, 158, 159, + 160, 0, 338, 144, 145, 146, 147, 168, 169, 0, + 170, 0, 0, 151, 152, 171, 144, 145, 146, 147, + 168, 169, 0, 170, 0, 0, 151, 152, 171, 0, + 0, 154, 155, 156, 157, 158, 159, 160, 0, 344, + 0, 0, 0, 0, 154, 155, 156, 157, 158, 159, + 160, 226, 227, 228, 229, 230, 231, 0, 232, 0, + 0, 233, 234, 235, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, + 237, 238, 239, 240, 241, 242 }; static const yytype_int16 yycheck[] = { - 0, 21, 29, 0, 47, 39, 159, 57, 241, 9, - 243, 73, 57, 19, 14, 60, 249, 57, 45, 88, - 0, 21, 28, 92, 86, 260, 26, 44, 45, 29, - 263, 81, 82, 83, 84, 80, 81, 82, 83, 84, - 193, 39, 95, 83, 84, 45, 46, 47, 101, 55, - 50, 95, 86, 50, 42, 87, 87, 101, 86, 294, - 91, 296, 86, 87, 52, 118, 301, 88, 87, 122, - 89, 98, 307, 86, 118, 174, 175, 86, 122, 312, - 81, 82, 83, 86, 86, 85, 113, 240, 321, 324, - 86, 86, 86, 86, 86, 328, 331, 86, 98, 86, - 335, 334, 102, 34, 87, 91, 341, 340, 92, 344, - 92, 86, 91, 113, 52, 50, 51, 52, 53, 54, - 55, 121, 57, 86, 34, 60, 61, 62, 89, 24, - 86, 86, 23, 86, 86, 92, 86, 86, 42, 86, - 86, 86, 185, 78, 79, 80, 81, 82, 83, 84, - 86, 42, 87, 173, 174, 175, 86, 86, 50, 50, - 51, 52, 53, 54, 55, 165, 57, 304, 165, 60, - 61, 62, 28, 173, 174, 175, 199, -1, 122, 138, - -1, -1, -1, -1, -1, 185, 186, 78, 79, 80, - 81, 82, 83, 84, -1, -1, 41, -1, -1, 199, - -1, -1, -1, -1, -1, 50, 51, 52, 53, 54, - 55, -1, 57, 10, 11, 60, 61, 62, -1, -1, - -1, -1, 19, -1, -1, -1, -1, -1, -1, -1, - -1, 28, -1, 78, 79, 80, 81, 82, 83, 84, - -1, 241, -1, 243, -1, -1, -1, 44, -1, 249, - -1, 251, -1, -1, -1, -1, -1, -1, 55, -1, - 260, -1, -1, 263, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 303, -1, -1, -1, - -1, -1, 79, 80, -1, -1, -1, 84, -1, -1, - -1, -1, -1, -1, 294, 295, 296, -1, 295, 96, - -1, 301, -1, 303, -1, -1, 103, 307, -1, -1, - 310, -1, 312, 310, -1, -1, -1, -1, -1, -1, - 320, 321, -1, -1, 324, -1, -1, -1, 328, -1, - -1, 331, -1, -1, 334, 335, -1, 337, -1, -1, - 340, 341, -1, -1, 344, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, -1, -1, -1, -1, -1, -1, -1, 166, - 167, 168, 169, -1, -1, -1, 42, -1, -1, -1, - -1, -1, -1, 180, 50, 51, 52, 53, 54, 55, - -1, 57, -1, -1, 60, 61, 62, -1, 195, 196, - -1, 198, -1, -1, -1, 202, -1, 204, -1, -1, - -1, -1, 78, 79, 80, 81, 82, 83, 84, -1, - 86, -1, -1, -1, -1, -1, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, -1, 5, -1, -1, -1, -1, 10, - -1, 248, 13, 14, 15, -1, -1, -1, 19, 20, - 21, 22, 23, -1, -1, -1, 27, 264, -1, -1, - 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, - -1, 42, 43, 44, 45, -1, 47, -1, -1, -1, - -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, - -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, - -1, -1, -1, -1, -1, -1, 77, -1, 315, -1, - 81, 82, -1, -1, -1, 5, -1, 88, 325, 90, - 10, 92, -1, 13, 14, 15, -1, -1, -1, 19, - 20, 21, 22, 23, -1, -1, -1, 27, -1, -1, - -1, 31, 32, -1, 34, 35, 36, 37, -1, 39, - 40, -1, 42, 43, 44, 45, -1, 47, -1, -1, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, -1, -1, -1, -1, -1, -1, 77, 78, 79, - 80, 81, 82, 83, 84, -1, 5, 87, 88, -1, - 90, 10, -1, -1, 13, 14, 15, -1, -1, -1, - 19, 20, 21, 22, 23, -1, -1, -1, 27, -1, - -1, -1, 31, 32, -1, 34, 35, 36, 37, -1, - 39, 40, -1, 42, 43, 44, 45, -1, 47, -1, - -1, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, -1, -1, -1, -1, -1, -1, 77, 78, - 79, 80, 81, 82, 83, 84, -1, 5, 87, 88, - -1, 90, 10, -1, -1, 13, 14, 15, -1, -1, - -1, 19, 20, 21, 22, 23, -1, -1, -1, 27, - -1, -1, -1, 31, 32, -1, 34, 35, 36, 37, - -1, 39, 40, -1, 42, 43, 44, 45, -1, 47, - -1, -1, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, -1, -1, -1, -1, -1, -1, 77, - 78, 79, 80, 81, 82, 83, 84, -1, 5, 87, - 88, -1, 90, 10, -1, -1, 13, 14, 15, -1, - -1, -1, 19, 20, 21, 22, 23, -1, -1, -1, - 27, -1, -1, -1, 31, 32, -1, 34, 35, 36, - 37, -1, 39, 40, -1, 42, 43, 44, 45, -1, - 47, -1, -1, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, -1, -1, -1, -1, -1, -1, - 77, 78, 79, 80, 81, 82, 83, 84, -1, 5, - -1, 88, -1, 90, 10, -1, -1, 13, 14, 15, - -1, -1, -1, 19, 20, 21, 22, 23, -1, -1, - -1, 27, -1, -1, -1, 31, 32, -1, 34, 35, - 36, 37, -1, 39, 40, -1, 42, 43, 44, 45, - -1, 47, -1, -1, -1, -1, -1, -1, 54, 55, - 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, - 66, 67, 68, 69, 70, -1, -1, -1, -1, -1, - -1, 77, -1, -1, -1, 81, 82, -1, -1, -1, - 5, -1, 88, 89, 90, 10, -1, -1, 13, 14, + 0, 29, 21, 47, 0, 39, 161, 73, 244, 9, + 246, 57, 0, 19, 14, 42, 252, 45, 44, 45, + 86, 21, 28, 23, 88, 52, 26, 39, 92, 29, + 86, 267, 50, 51, 52, 53, 264, 83, 84, 57, + 87, 196, 60, 61, 62, 45, 46, 47, 86, 55, + 50, 96, 86, 88, 50, 87, 87, 102, 89, 91, + 78, 79, 80, 81, 82, 83, 84, 96, 176, 177, + 298, 99, 300, 102, 41, 120, 86, 305, 86, 124, + 316, 86, 87, 311, 86, 86, 86, 115, 243, 325, + 87, 120, 82, 83, 84, 124, 332, 86, 92, 99, + 328, 57, 338, 103, 60, 86, 86, 335, 344, 86, + 86, 339, 86, 92, 34, 115, 91, 345, 91, 52, + 348, 57, 41, 123, 80, 81, 82, 83, 84, 86, + 34, 50, 51, 52, 53, 54, 55, 86, 57, 89, + 24, 60, 61, 62, 188, 81, 82, 83, 84, 86, + 92, 86, 86, 23, 86, 86, 175, 176, 177, 78, + 79, 80, 81, 82, 83, 84, 42, 167, 86, 86, + 86, 167, 42, 86, 86, 175, 176, 177, 86, 86, + 50, 51, 52, 53, 54, 55, 50, 57, 188, 189, + 60, 61, 62, 308, 28, 202, 124, 140, -1, -1, + -1, -1, 202, -1, -1, -1, -1, -1, 78, 79, + 80, 81, 82, 83, 84, 10, 11, -1, -1, -1, + -1, -1, -1, -1, 19, -1, -1, -1, -1, -1, + -1, -1, -1, 28, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 244, -1, 246, -1, -1, 44, + -1, -1, 252, -1, -1, 255, -1, -1, -1, -1, + 55, -1, -1, -1, 264, -1, -1, 267, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 307, + -1, -1, -1, -1, -1, 80, 81, -1, -1, -1, + 85, -1, -1, -1, -1, -1, -1, -1, 298, 299, + 300, -1, 97, 299, -1, 305, -1, 307, -1, 104, + -1, 311, -1, -1, 314, -1, 316, -1, 314, -1, + -1, -1, -1, -1, 324, 325, -1, -1, 328, -1, + -1, -1, 332, -1, -1, 335, -1, -1, 338, 339, + -1, 341, -1, -1, 344, 345, -1, -1, 348, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, -1, -1, -1, -1, + -1, -1, -1, 168, 169, 170, 171, -1, -1, -1, + -1, 42, -1, -1, -1, -1, -1, 182, 183, 50, + 51, 52, 53, 54, 55, -1, 57, -1, -1, 60, + 61, 62, -1, 198, 199, -1, 201, -1, -1, -1, + 205, -1, 207, -1, -1, -1, -1, 78, 79, 80, + 81, 82, 83, 84, -1, 86, -1, -1, -1, -1, + -1, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, -1, -1, + 5, -1, -1, -1, -1, 10, 251, -1, 13, 14, 15, -1, -1, -1, 19, 20, 21, 22, 23, -1, - -1, -1, 27, -1, -1, -1, 31, 32, -1, 34, - 35, 36, 37, -1, 39, 40, -1, 42, 43, 44, + -1, -1, 27, 268, -1, -1, 31, 32, -1, 34, + 35, 36, 37, -1, 39, 40, -1, 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, -1, -1, - -1, -1, 77, -1, -1, -1, 81, 82, -1, 5, - -1, -1, -1, 88, 10, 90, -1, 13, 14, 15, - -1, -1, -1, 19, 20, 21, 22, 23, -1, -1, - -1, 27, -1, -1, -1, 31, 32, -1, 34, 35, - 36, 37, -1, 39, 40, -1, 42, 43, 44, 45, - -1, 47, -1, -1, -1, -1, -1, -1, 54, 55, - 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, - 66, 67, 68, 69, 70, -1, -1, -1, -1, -1, - -1, 77, -1, -1, -1, 81, 82, -1, 5, -1, - -1, -1, 88, 10, 90, -1, 13, 14, 15, -1, - -1, -1, 19, 20, 21, 22, 23, -1, -1, -1, - 27, -1, -1, -1, 31, 32, -1, 34, 35, 36, - 37, -1, 39, 40, -1, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, 54, 55, 56, - 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, - 67, 68, 69, 70, -1, -1, -1, -1, -1, -1, - 77, -1, -1, -1, 81, 82, -1, 5, -1, -1, - -1, 88, 10, 90, -1, 13, 14, 15, -1, -1, - -1, 19, 20, 21, 22, 23, -1, -1, -1, 27, - -1, -1, -1, 31, 32, -1, 34, 35, 36, 37, - -1, 39, 40, -1, 42, 43, 44, 45, -1, 47, - -1, -1, -1, -1, -1, -1, -1, -1, 56, 57, - 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, - 68, 69, 70, -1, -1, -1, -1, -1, -1, 77, - -1, -1, -1, 81, 82, -1, 5, -1, -1, -1, - 88, 10, 90, -1, 13, 14, 15, -1, -1, -1, + -1, -1, 77, -1, 319, -1, 81, 82, -1, -1, + -1, 5, -1, 88, 329, 90, 10, 92, -1, 13, + 14, 15, -1, -1, -1, 19, 20, 21, 22, 23, + -1, -1, -1, 27, -1, -1, -1, 31, 32, -1, + 34, 35, 36, 37, -1, 39, 40, -1, 42, -1, + 44, 45, -1, 47, -1, -1, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, -1, -1, -1, + -1, -1, -1, 77, 78, 79, 80, 81, 82, 83, + 84, -1, 5, 87, 88, -1, 90, 10, -1, -1, + 13, 14, 15, -1, -1, -1, 19, 20, 21, 22, + 23, -1, -1, -1, 27, -1, -1, -1, 31, 32, + -1, 34, 35, 36, 37, -1, 39, 40, -1, 42, + -1, 44, 45, -1, 47, -1, -1, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, + -1, -1, -1, -1, 77, 78, 79, 80, 81, 82, + 83, 84, -1, 5, 87, 88, -1, 90, 10, -1, + -1, 13, 14, 15, -1, -1, -1, 19, 20, 21, + 22, 23, -1, -1, -1, 27, -1, -1, -1, 31, + 32, -1, 34, 35, 36, 37, -1, 39, 40, -1, + 42, -1, 44, 45, -1, 47, -1, -1, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, + -1, -1, -1, -1, -1, 77, 78, 79, 80, 81, + 82, 83, 84, -1, 5, 87, 88, -1, 90, 10, + -1, -1, 13, 14, 15, -1, -1, -1, 19, 20, + 21, 22, 23, -1, -1, -1, 27, -1, -1, -1, + 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, + -1, 42, -1, 44, 45, -1, 47, -1, -1, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + -1, -1, -1, -1, -1, -1, 77, 78, 79, 80, + 81, 82, 83, 84, -1, 5, -1, 88, -1, 90, + 10, -1, -1, 13, 14, 15, -1, -1, -1, 19, + 20, 21, 22, 23, -1, -1, -1, 27, -1, -1, + -1, 31, 32, -1, 34, 35, 36, 37, -1, 39, + 40, -1, 42, -1, 44, 45, -1, 47, -1, -1, + -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, + -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, + 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, + -1, 81, 82, -1, -1, -1, 5, -1, 88, 89, + 90, 10, -1, -1, 13, 14, 15, -1, -1, -1, 19, 20, 21, 22, 23, -1, -1, -1, 27, -1, -1, -1, 31, 32, -1, 34, 35, 36, 37, -1, - 39, 40, -1, 42, 43, 44, 45, -1, 47, -1, - -1, -1, -1, -1, -1, -1, -1, 56, 57, 58, - 59, -1, -1, -1, 63, 64, 65, 66, 67, 68, + 39, 40, -1, 42, -1, 44, 45, -1, 47, -1, + -1, -1, -1, -1, -1, 54, 55, 56, 57, 58, + 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, 81, 82, -1, 5, -1, -1, -1, 88, 10, 90, -1, 13, 14, 15, -1, -1, -1, 19, 20, 21, 22, 23, -1, -1, -1, 27, -1, -1, -1, 31, 32, -1, 34, 35, 36, 37, -1, 39, - 40, -1, 42, 43, 44, 45, -1, 47, -1, -1, - -1, -1, -1, -1, -1, -1, 56, -1, 58, 59, - -1, -1, -1, 63, 64, 65, 66, 67, 68, 69, + 40, -1, 42, -1, 44, 45, -1, 47, -1, -1, + -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, + -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, - -1, -1, -1, -1, -1, 13, -1, -1, 88, -1, - 90, 19, 20, 21, 22, 23, -1, -1, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, -1, 42, 43, 44, 45, 46, 47, + -1, 81, 82, -1, 5, -1, -1, -1, 88, 10, + 90, -1, 13, 14, 15, -1, -1, -1, 19, 20, + 21, 22, 23, -1, -1, -1, 27, -1, -1, -1, + 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, + -1, 42, -1, 44, 45, -1, 47, -1, -1, -1, + -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, + -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, + -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, + 81, 82, -1, 5, -1, -1, -1, 88, 10, 90, + -1, 13, 14, 15, -1, -1, -1, 19, 20, 21, + 22, 23, -1, -1, -1, 27, -1, -1, -1, 31, + 32, -1, 34, 35, 36, 37, -1, 39, 40, -1, + 42, -1, 44, 45, -1, 47, -1, -1, -1, -1, + -1, -1, -1, -1, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, 67, 68, 69, 70, -1, + -1, -1, -1, -1, -1, 77, -1, -1, -1, 81, + 82, -1, 5, -1, -1, -1, 88, 10, 90, -1, + 13, 14, 15, -1, -1, -1, 19, 20, 21, 22, + 23, -1, -1, -1, 27, -1, -1, -1, 31, 32, + -1, 34, 35, 36, 37, -1, 39, 40, -1, 42, + -1, 44, 45, -1, 47, -1, -1, -1, -1, -1, + -1, -1, -1, 56, 57, 58, 59, -1, -1, -1, + 63, 64, 65, 66, 67, 68, 69, 70, -1, -1, + -1, -1, -1, -1, 77, -1, -1, -1, 81, 82, + -1, 5, -1, -1, -1, 88, 10, 90, -1, 13, + 14, 15, -1, -1, -1, 19, 20, 21, 22, 23, + -1, -1, -1, 27, -1, -1, -1, 31, 32, -1, + 34, 35, 36, 37, -1, 39, 40, -1, 42, -1, + 44, 45, -1, 47, -1, -1, -1, -1, -1, -1, + -1, -1, 56, -1, 58, 59, -1, -1, -1, 63, + 64, 65, 66, 67, 68, 69, 70, -1, -1, -1, + -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, + -1, 13, -1, -1, 88, -1, 90, 19, 20, 21, + 22, 23, -1, -1, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, -1, + 42, 43, 44, 45, 46, 47, 48, 49, -1, -1, + -1, -1, 54, 55, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, -1, 13, -1, -1, 77, -1, -1, 19, 20, + 21, 22, 23, 24, 86, 26, 27, 28, 29, 30, + 31, 32, -1, 34, 35, 36, 37, 38, 39, 40, + -1, 42, 43, 44, 45, -1, 47, 48, 49, -1, + -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, + -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, -1, -1, 74, 13, -1, 77, -1, -1, -1, + 19, 20, 21, 22, 23, 86, -1, 26, 27, 28, + 29, 30, 31, 32, -1, 34, 35, 36, 37, 38, + 39, 40, -1, 42, 43, 44, 45, -1, 47, 48, + 49, -1, -1, -1, -1, 54, 55, 56, 57, 58, + 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, -1, -1, 13, -1, 76, 77, -1, + -1, 19, 20, 21, 22, 23, -1, 86, 26, 27, + 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, + 38, 39, 40, -1, 42, 43, 44, 45, -1, 47, 48, 49, -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, -1, 13, -1, -1, 77, - -1, -1, 19, 20, 21, 22, 23, 24, 86, 26, + 68, 69, 70, 71, -1, -1, -1, 75, -1, 77, + -1, -1, -1, 13, -1, -1, 16, -1, 86, 19, + 20, 21, 22, 23, -1, -1, 26, 27, 28, 29, + 30, 31, 32, -1, 34, 35, 36, 37, 38, 39, + 40, -1, 42, 43, 44, 45, -1, 47, 48, 49, + -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, + -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, -1, -1, 13, -1, -1, 77, -1, -1, + 19, 20, 21, 22, 23, -1, 86, 26, 27, 28, + 29, 30, 31, 32, -1, 34, 35, 36, 37, 38, + 39, 40, -1, 42, 43, 44, 45, -1, 47, 48, + 49, -1, -1, -1, -1, 54, 55, 56, 57, 58, + 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, -1, -1, 74, 13, -1, 77, -1, + -1, -1, 19, 20, 21, 22, 23, 86, -1, 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, 38, 39, 40, -1, 42, 43, 44, 45, -1, 47, 48, 49, -1, -1, -1, -1, 54, 55, 56, @@ -1301,109 +1337,78 @@ static const yytype_int16 yycheck[] = 45, -1, 47, 48, 49, -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, -1, -1, 13, - -1, 76, 77, -1, -1, 19, 20, 21, 22, 23, + 75, -1, 77, -1, -1, 19, 20, 21, 22, 23, -1, 86, 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, 38, 39, 40, -1, 42, 43, 44, 45, -1, 47, 48, 49, -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, -1, -1, - -1, 75, -1, 77, -1, -1, -1, 13, -1, -1, - 16, -1, 86, 19, 20, 21, 22, 23, -1, -1, - 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, - 36, 37, 38, 39, 40, -1, 42, 43, 44, 45, - -1, 47, 48, 49, -1, -1, -1, -1, 54, 55, - 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, -1, -1, 13, -1, - -1, 77, -1, -1, 19, 20, 21, 22, 23, -1, - 86, 26, 27, 28, 29, 30, 31, 32, -1, 34, - 35, 36, 37, 38, 39, 40, -1, 42, 43, 44, - 45, -1, 47, 48, 49, -1, -1, -1, -1, 54, - 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, -1, -1, 74, - 13, -1, 77, -1, -1, -1, 19, 20, 21, 22, - 23, 86, -1, 26, 27, 28, 29, 30, 31, 32, + 13, 75, -1, 77, -1, -1, 19, 20, 21, 22, + 23, -1, 86, 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, 38, 39, 40, -1, 42, 43, 44, 45, -1, 47, 48, 49, -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, -1, - -1, 74, 13, -1, 77, -1, -1, -1, 19, 20, - 21, 22, 23, 86, -1, 26, 27, 28, 29, 30, + -1, 13, -1, -1, 77, -1, -1, 19, 20, 21, + 22, 23, -1, 86, 26, 27, 28, 29, 30, 31, + 32, -1, 34, 35, 36, 37, 38, 39, 40, -1, + 42, 43, 44, 45, -1, 47, 48, 49, -1, -1, + -1, -1, 54, 55, 56, 57, 58, 59, -1, -1, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + -1, -1, 13, -1, -1, 77, -1, -1, 19, 20, + 21, 22, 23, -1, 86, 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, 38, 39, 40, -1, 42, 43, 44, 45, -1, 47, 48, 49, -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, -1, -1, 13, 75, -1, 77, -1, -1, 19, + 71, -1, -1, 13, -1, -1, 77, -1, -1, 19, 20, 21, 22, 23, -1, 86, 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, 38, 39, 40, -1, 42, 43, 44, 45, -1, 47, 48, 49, -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, -1, -1, 13, 75, -1, 77, -1, -1, + 70, 71, -1, -1, 13, -1, -1, 77, -1, -1, 19, 20, 21, 22, 23, -1, 86, 26, 27, 28, - 29, 30, 31, 32, -1, 34, 35, 36, 37, 38, - 39, 40, -1, 42, 43, 44, 45, -1, 47, 48, + 29, -1, 31, 32, -1, 34, 35, 36, 37, 38, + 39, 40, -1, 42, -1, 44, 45, -1, 47, 48, 49, -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, -1, -1, 13, -1, -1, 77, -1, - -1, 19, 20, 21, 22, 23, -1, 86, 26, 27, - 28, 29, 30, 31, 32, -1, 34, 35, 36, 37, - 38, 39, 40, -1, 42, 43, 44, 45, -1, 47, - 48, 49, -1, -1, -1, -1, 54, 55, 56, 57, - 58, 59, -1, -1, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, -1, -1, 13, -1, -1, 77, - -1, -1, 19, 20, 21, 22, 23, -1, 86, 26, - 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, - 37, 38, 39, 40, -1, 42, 43, 44, 45, -1, - 47, 48, 49, -1, -1, -1, -1, 54, 55, 56, - 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, -1, -1, 13, -1, -1, - 77, -1, -1, 19, 20, 21, 22, 23, -1, 86, - 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, - 36, 37, 38, 39, 40, -1, 42, 43, 44, 45, - -1, 47, 48, 49, -1, -1, -1, -1, 54, 55, - 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, -1, -1, 13, -1, - -1, 77, -1, -1, 19, 20, 21, 22, 23, -1, - 86, 26, 27, 28, 29, -1, 31, 32, -1, 34, - 35, 36, 37, 38, 39, 40, -1, 42, 43, 44, - 45, -1, 47, 48, 49, -1, -1, -1, -1, 54, - 55, 56, 57, 58, 59, -1, -1, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 13, 14, 15, - -1, -1, 77, 19, 20, 21, 22, 23, -1, -1, - -1, 27, -1, -1, -1, 31, 32, -1, 34, 35, - 36, 37, -1, 39, 40, -1, 42, 43, 44, 45, - -1, 47, -1, -1, -1, -1, -1, -1, 54, 55, - 56, 57, 58, 59, -1, -1, 62, 63, 64, 65, - 66, 67, 68, 69, 70, -1, 13, -1, -1, -1, - -1, 77, 19, 20, 21, 22, 23, -1, -1, -1, - 27, -1, -1, -1, 31, 32, -1, 34, 35, 36, - 37, -1, 39, 40, -1, 42, 43, 44, 45, -1, - 47, -1, -1, -1, -1, -1, -1, 54, 55, 56, - 57, 58, 59, -1, -1, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 50, 51, 52, 53, 54, 55, - 77, 57, -1, -1, 60, 61, 62, 50, 51, 52, - 53, 54, 55, -1, 57, -1, -1, 60, 61, 62, - -1, -1, 78, 79, 80, 81, 82, 83, 84, -1, - -1, 87, -1, 89, -1, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, -1, 89, 50, 51, 52, - 53, 54, 55, -1, 57, -1, -1, 60, 61, 62, - 50, 51, 52, 53, 54, 55, -1, 57, -1, -1, - 60, 61, 62, -1, -1, 78, 79, 80, 81, 82, - 83, 84, -1, 86, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, -1, 86, 50, 51, 52, - 53, 54, 55, -1, 57, -1, -1, 60, 61, 62, - 50, 51, 52, 53, 54, 55, -1, 57, -1, -1, - 60, 61, 62, -1, -1, 78, 79, 80, 81, 82, - 83, 84, -1, 86, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, -1, 86, 50, 51, 52, - 53, 54, 55, -1, 57, -1, -1, 60, 61, 62, - 50, 51, 52, 53, 54, 55, -1, 57, -1, -1, - 60, 61, 62, -1, -1, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, -1, -1, -1, 78, 79, - 80, 81, 82, 83, 84, 50, 51, 52, 53, -1, - -1, -1, 57, -1, -1, 60, 61, 62, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 78, 79, 80, 81, 82, 83, 84 + 69, 70, 71, 13, 14, 15, -1, -1, 77, 19, + 20, 21, 22, 23, -1, -1, -1, 27, -1, -1, + -1, 31, 32, -1, 34, 35, 36, 37, -1, 39, + 40, -1, 42, -1, 44, 45, -1, 47, -1, -1, + -1, -1, -1, -1, 54, 55, 56, 57, 58, 59, + -1, -1, 62, 63, 64, 65, 66, 67, 68, 69, + 70, -1, 13, -1, -1, -1, -1, 77, 19, 20, + 21, 22, 23, -1, -1, -1, 27, -1, -1, -1, + 31, 32, -1, 34, 35, 36, 37, -1, 39, 40, + -1, 42, -1, 44, 45, -1, 47, -1, -1, -1, + -1, -1, -1, 54, 55, 56, 57, 58, 59, -1, + -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 50, 51, 52, 53, 54, 55, 77, 57, -1, -1, + 60, 61, 62, 50, 51, 52, 53, 54, 55, -1, + 57, -1, -1, 60, 61, 62, -1, -1, 78, 79, + 80, 81, 82, 83, 84, -1, -1, 87, -1, 89, + -1, 78, 79, 80, 81, 82, 83, 84, -1, -1, + -1, -1, 89, 50, 51, 52, 53, 54, 55, -1, + 57, -1, -1, 60, 61, 62, 50, 51, 52, 53, + 54, 55, -1, 57, -1, -1, 60, 61, 62, -1, + -1, 78, 79, 80, 81, 82, 83, 84, -1, -1, + 87, -1, -1, -1, 78, 79, 80, 81, 82, 83, + 84, -1, 86, 50, 51, 52, 53, 54, 55, -1, + 57, -1, -1, 60, 61, 62, 50, 51, 52, 53, + 54, 55, -1, 57, -1, -1, 60, 61, 62, -1, + -1, 78, 79, 80, 81, 82, 83, 84, -1, 86, + -1, -1, -1, -1, 78, 79, 80, 81, 82, 83, + 84, -1, 86, 50, 51, 52, 53, 54, 55, -1, + 57, -1, -1, 60, 61, 62, 50, 51, 52, 53, + 54, 55, -1, 57, -1, -1, 60, 61, 62, -1, + -1, 78, 79, 80, 81, 82, 83, 84, -1, 86, + -1, -1, -1, -1, 78, 79, 80, 81, 82, 83, + 84, 50, 51, 52, 53, 54, 55, -1, 57, -1, + -1, 60, 61, 62, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, + 79, 80, 81, 82, 83, 84 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1416,35 +1421,36 @@ static const yytype_uint8 yystos[] = 54, 55, 56, 57, 58, 59, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 77, 86, 94, 95, 96, 97, 98, 103, 105, 108, 109, 110, 113, - 115, 116, 117, 118, 119, 39, 86, 35, 39, 40, - 70, 77, 105, 106, 107, 5, 10, 14, 15, 27, - 34, 56, 81, 82, 88, 90, 105, 111, 112, 123, - 124, 127, 130, 131, 132, 134, 88, 134, 105, 39, - 111, 134, 44, 45, 105, 124, 126, 105, 111, 112, - 106, 134, 106, 105, 109, 0, 96, 111, 134, 86, - 86, 87, 134, 134, 132, 132, 132, 89, 134, 14, - 15, 92, 105, 128, 129, 134, 136, 137, 88, 86, - 86, 36, 50, 51, 52, 53, 54, 55, 57, 60, - 61, 62, 78, 79, 80, 81, 82, 83, 84, 87, - 123, 130, 133, 135, 134, 41, 54, 55, 57, 62, - 106, 86, 86, 32, 58, 59, 105, 134, 42, 52, - 114, 86, 86, 86, 86, 42, 86, 86, 106, 86, - 105, 36, 135, 87, 89, 92, 92, 91, 92, 87, - 91, 91, 87, 136, 34, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 137, 50, 51, 52, 53, 54, 55, 57, - 60, 61, 62, 78, 79, 80, 81, 82, 83, 84, - 87, 86, 108, 86, 124, 125, 125, 125, 52, 86, - 134, 73, 86, 99, 100, 101, 102, 109, 86, 108, - 120, 121, 122, 86, 34, 137, 134, 134, 134, 14, - 15, 105, 129, 134, 89, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 137, 120, 24, 120, 86, 86, 86, - 134, 120, 86, 105, 86, 76, 122, 120, 134, 89, - 24, 74, 86, 108, 23, 42, 75, 106, 102, 86, - 16, 86, 108, 86, 120, 42, 134, 86, 86, 104, - 105, 120, 74, 134, 86, 120, 86, 87, 74, 86, - 86, 120, 105, 86, 120, 75, 75, 86, 86 + 115, 116, 117, 118, 119, 120, 39, 86, 35, 39, + 40, 70, 77, 105, 106, 107, 5, 10, 14, 15, + 27, 34, 56, 81, 82, 88, 90, 105, 111, 112, + 124, 125, 128, 131, 132, 133, 135, 88, 135, 105, + 39, 111, 135, 44, 45, 105, 125, 127, 105, 105, + 111, 112, 106, 135, 106, 105, 109, 0, 96, 111, + 135, 86, 86, 87, 135, 135, 133, 133, 133, 89, + 135, 14, 15, 92, 105, 129, 130, 135, 137, 138, + 88, 86, 86, 36, 50, 51, 52, 53, 54, 55, + 57, 60, 61, 62, 78, 79, 80, 81, 82, 83, + 84, 87, 124, 131, 134, 136, 135, 41, 54, 55, + 57, 62, 106, 86, 86, 32, 58, 59, 105, 135, + 42, 52, 114, 41, 86, 86, 86, 86, 42, 86, + 86, 106, 86, 105, 36, 136, 87, 89, 92, 92, + 91, 92, 87, 91, 91, 87, 137, 34, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 138, 50, 51, 52, 53, + 54, 55, 57, 60, 61, 62, 78, 79, 80, 81, + 82, 83, 84, 87, 86, 108, 86, 125, 126, 126, + 126, 52, 86, 135, 135, 73, 86, 99, 100, 101, + 102, 109, 86, 108, 121, 122, 123, 86, 34, 138, + 135, 135, 135, 14, 15, 105, 130, 135, 89, 135, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, + 135, 135, 135, 135, 135, 135, 135, 138, 121, 24, + 121, 86, 86, 86, 135, 121, 86, 105, 86, 76, + 123, 121, 135, 89, 24, 74, 86, 108, 23, 42, + 75, 106, 102, 86, 16, 86, 108, 86, 121, 42, + 135, 86, 86, 104, 105, 121, 74, 135, 86, 121, + 86, 87, 74, 86, 86, 121, 105, 86, 121, 75, + 75, 86, 86 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -1455,20 +1461,20 @@ static const yytype_uint8 yyr1[] = 103, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 106, 106, 107, 107, 108, 108, 108, 108, 108, 109, + 105, 105, 105, 105, 105, 105, 105, 105, 105, 106, + 106, 107, 107, 108, 108, 108, 108, 108, 108, 109, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111, 111, 111, 111, 111, 112, 112, 112, 112, 112, 113, 113, 113, 113, 114, 114, 115, 115, 115, 116, 116, 117, 117, 117, 117, 118, - 118, 118, 119, 119, 120, 120, 121, 121, 122, 122, - 123, 123, 123, 123, 123, 123, 123, 123, 124, 125, - 126, 127, 127, 127, 128, 128, 129, 129, 129, 130, - 131, 131, 132, 132, 132, 133, 133, 134, 134, 134, - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 134, 134, 134, 134, 135, 135, 135, 135, 135, + 118, 118, 119, 119, 120, 121, 121, 122, 122, 123, + 123, 124, 124, 124, 124, 124, 124, 124, 124, 125, + 126, 127, 128, 128, 128, 129, 129, 130, 130, 130, + 131, 132, 132, 133, 133, 133, 134, 134, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 136, 136, 137, 137 + 135, 135, 135, 135, 135, 135, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 137, 137, 138, 138 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1479,20 +1485,20 @@ static const yytype_int8 yyr2[] = 5, 0, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 0, 1, 3, 2, 4, 2, 5, 2, 2, 5, 4, 3, 5, 5, 5, 5, 1, 1, 3, 3, 3, 4, 7, 6, 9, 7, 10, 7, - 11, 12, 4, 6, 0, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 2, 4, 1, 1, 1, 1, - 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, - 2, 2, 1, 1, 1, 1, 1, 1, 3, 3, + 11, 12, 4, 6, 4, 0, 1, 1, 2, 1, + 1, 1, 1, 1, 1, 2, 4, 1, 1, 1, + 1, 1, 3, 3, 3, 1, 3, 3, 3, 3, + 3, 2, 2, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 0, 1, 1, 3 + 3, 3, 3, 3, 0, 1, 1, 3 }; @@ -1766,49 +1772,49 @@ yydestruct (const char *yymsg, case YYSYMBOL_tTHEFUNC: /* tTHEFUNC */ #line 190 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1770 "engines/director/lingo/lingo-gr.cpp" +#line 1776 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_tTHEFUNCINOF: /* tTHEFUNCINOF */ #line 190 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1776 "engines/director/lingo/lingo-gr.cpp" +#line 1782 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_tVARID: /* tVARID */ #line 190 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1782 "engines/director/lingo/lingo-gr.cpp" +#line 1788 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_tSTRING: /* tSTRING */ #line 190 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1788 "engines/director/lingo/lingo-gr.cpp" +#line 1794 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_tSYMBOL: /* tSYMBOL */ #line 190 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1794 "engines/director/lingo/lingo-gr.cpp" +#line 1800 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_tENDCLAUSE: /* tENDCLAUSE */ #line 190 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1800 "engines/director/lingo/lingo-gr.cpp" +#line 1806 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_tPLAYACCEL: /* tPLAYACCEL */ #line 190 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1806 "engines/director/lingo/lingo-gr.cpp" +#line 1812 "engines/director/lingo/lingo-gr.cpp" break; case YYSYMBOL_ID: /* ID */ #line 190 "engines/director/lingo/lingo-gr.y" { delete ((*yyvaluep).s); } -#line 1812 "engines/director/lingo/lingo-gr.cpp" +#line 1818 "engines/director/lingo/lingo-gr.cpp" break; default: @@ -2076,7 +2082,7 @@ yyreduce: case 2: /* script: scriptpartlist */ #line 196 "engines/director/lingo/lingo-gr.y" { g_lingo->_compiler->_assemblyAST = new ScriptNode((yyvsp[0].nodelist)); } -#line 2080 "engines/director/lingo/lingo-gr.cpp" +#line 2086 "engines/director/lingo/lingo-gr.cpp" break; case 3: /* scriptpartlist: scriptpart */ @@ -2087,7 +2093,7 @@ yyreduce: list->push_back((yyvsp[0].node)); } (yyval.nodelist) = list; } -#line 2091 "engines/director/lingo/lingo-gr.cpp" +#line 2097 "engines/director/lingo/lingo-gr.cpp" break; case 4: /* scriptpartlist: scriptpartlist scriptpart */ @@ -2097,37 +2103,37 @@ yyreduce: (yyvsp[-1].nodelist)->push_back((yyvsp[0].node)); } (yyval.nodelist) = (yyvsp[-1].nodelist); } -#line 2101 "engines/director/lingo/lingo-gr.cpp" +#line 2107 "engines/director/lingo/lingo-gr.cpp" break; case 5: /* scriptpart: '\n' */ #line 211 "engines/director/lingo/lingo-gr.y" { (yyval.node) = nullptr; } -#line 2107 "engines/director/lingo/lingo-gr.cpp" +#line 2113 "engines/director/lingo/lingo-gr.cpp" break; case 10: /* macro: tMACRO ID idlist '\n' stmtlist */ #line 244 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); } -#line 2113 "engines/director/lingo/lingo-gr.cpp" +#line 2119 "engines/director/lingo/lingo-gr.cpp" break; case 11: /* factory: tFACTORY ID '\n' methodlist */ #line 248 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new FactoryNode((yyvsp[-2].s), (yyvsp[0].nodelist)); } -#line 2119 "engines/director/lingo/lingo-gr.cpp" +#line 2125 "engines/director/lingo/lingo-gr.cpp" break; case 12: /* method: tMETHOD ID idlist '\n' stmtlist */ #line 250 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); } -#line 2125 "engines/director/lingo/lingo-gr.cpp" +#line 2131 "engines/director/lingo/lingo-gr.cpp" break; case 13: /* methodlist: %empty */ #line 252 "engines/director/lingo/lingo-gr.y" { (yyval.nodelist) = new NodeList; } -#line 2131 "engines/director/lingo/lingo-gr.cpp" +#line 2137 "engines/director/lingo/lingo-gr.cpp" break; case 15: /* nonemptymethodlist: methodlistline */ @@ -2138,7 +2144,7 @@ yyreduce: list->push_back((yyvsp[0].node)); } (yyval.nodelist) = list; } -#line 2142 "engines/director/lingo/lingo-gr.cpp" +#line 2148 "engines/director/lingo/lingo-gr.cpp" break; case 16: /* nonemptymethodlist: methodlist '\n' methodlistline */ @@ -2148,13 +2154,13 @@ yyreduce: (yyvsp[-2].nodelist)->push_back((yyvsp[0].node)); } (yyval.nodelist) = (yyvsp[-2].nodelist); } -#line 2152 "engines/director/lingo/lingo-gr.cpp" +#line 2158 "engines/director/lingo/lingo-gr.cpp" break; case 17: /* methodlistline: '\n' */ #line 269 "engines/director/lingo/lingo-gr.y" { (yyval.node) = nullptr; } -#line 2158 "engines/director/lingo/lingo-gr.cpp" +#line 2164 "engines/director/lingo/lingo-gr.cpp" break; case 19: /* handler: tON ID idlist '\n' stmtlist tENDCLAUSE endargdef '\n' */ @@ -2163,245 +2169,239 @@ yyreduce: (yyval.node) = new HandlerNode((yyvsp[-6].s), (yyvsp[-5].idlist), (yyvsp[-3].nodelist)); checkEnd((yyvsp[-2].s), (yyvsp[-6].s), false); delete (yyvsp[-2].s); } -#line 2167 "engines/director/lingo/lingo-gr.cpp" +#line 2173 "engines/director/lingo/lingo-gr.cpp" break; case 20: /* handler: tON ID idlist '\n' stmtlist */ #line 279 "engines/director/lingo/lingo-gr.y" { // D4. No 'end' clause (yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); } -#line 2174 "engines/director/lingo/lingo-gr.cpp" +#line 2180 "engines/director/lingo/lingo-gr.cpp" break; case 22: /* endargdef: ID */ #line 284 "engines/director/lingo/lingo-gr.y" { delete (yyvsp[0].s); } -#line 2180 "engines/director/lingo/lingo-gr.cpp" +#line 2186 "engines/director/lingo/lingo-gr.cpp" break; case 23: /* endargdef: endargdef ',' ID */ #line 285 "engines/director/lingo/lingo-gr.y" { delete (yyvsp[0].s); } -#line 2186 "engines/director/lingo/lingo-gr.cpp" +#line 2192 "engines/director/lingo/lingo-gr.cpp" break; case 25: /* ID: tAFTER */ #line 291 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("after"); } -#line 2192 "engines/director/lingo/lingo-gr.cpp" +#line 2198 "engines/director/lingo/lingo-gr.cpp" break; case 26: /* ID: tAND */ #line 292 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("and"); } -#line 2198 "engines/director/lingo/lingo-gr.cpp" +#line 2204 "engines/director/lingo/lingo-gr.cpp" break; case 27: /* ID: tBEFORE */ #line 293 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("before"); } -#line 2204 "engines/director/lingo/lingo-gr.cpp" +#line 2210 "engines/director/lingo/lingo-gr.cpp" break; case 28: /* ID: tCAST */ #line 294 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("cast"); } -#line 2210 "engines/director/lingo/lingo-gr.cpp" +#line 2216 "engines/director/lingo/lingo-gr.cpp" break; case 29: /* ID: tCHAR */ #line 295 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("char"); } -#line 2216 "engines/director/lingo/lingo-gr.cpp" +#line 2222 "engines/director/lingo/lingo-gr.cpp" break; case 30: /* ID: tDOWN */ #line 296 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("down"); } -#line 2222 "engines/director/lingo/lingo-gr.cpp" +#line 2228 "engines/director/lingo/lingo-gr.cpp" break; case 31: /* ID: tFIELD */ #line 301 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("field"); } -#line 2228 "engines/director/lingo/lingo-gr.cpp" +#line 2234 "engines/director/lingo/lingo-gr.cpp" break; case 32: /* ID: tFRAME */ #line 302 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("frame"); } -#line 2234 "engines/director/lingo/lingo-gr.cpp" +#line 2240 "engines/director/lingo/lingo-gr.cpp" break; case 33: /* ID: tIN */ #line 305 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("in"); } -#line 2240 "engines/director/lingo/lingo-gr.cpp" +#line 2246 "engines/director/lingo/lingo-gr.cpp" break; case 34: /* ID: tINTERSECTS */ #line 307 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("intersects"); } -#line 2246 "engines/director/lingo/lingo-gr.cpp" +#line 2252 "engines/director/lingo/lingo-gr.cpp" break; case 35: /* ID: tINTO */ #line 308 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("into"); } -#line 2252 "engines/director/lingo/lingo-gr.cpp" +#line 2258 "engines/director/lingo/lingo-gr.cpp" break; case 36: /* ID: tITEM */ #line 309 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("item"); } -#line 2258 "engines/director/lingo/lingo-gr.cpp" +#line 2264 "engines/director/lingo/lingo-gr.cpp" break; case 37: /* ID: tLINE */ #line 310 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("line"); } -#line 2264 "engines/director/lingo/lingo-gr.cpp" +#line 2270 "engines/director/lingo/lingo-gr.cpp" break; case 38: /* ID: tMOD */ #line 313 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("mod"); } -#line 2270 "engines/director/lingo/lingo-gr.cpp" +#line 2276 "engines/director/lingo/lingo-gr.cpp" break; case 39: /* ID: tMOVIE */ #line 314 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("movie"); } -#line 2276 "engines/director/lingo/lingo-gr.cpp" +#line 2282 "engines/director/lingo/lingo-gr.cpp" break; case 40: /* ID: tNEXT */ #line 315 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("next"); } -#line 2282 "engines/director/lingo/lingo-gr.cpp" +#line 2288 "engines/director/lingo/lingo-gr.cpp" break; case 41: /* ID: tNOT */ #line 316 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("not"); } -#line 2288 "engines/director/lingo/lingo-gr.cpp" +#line 2294 "engines/director/lingo/lingo-gr.cpp" break; case 42: /* ID: tOF */ #line 317 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("of"); } -#line 2294 "engines/director/lingo/lingo-gr.cpp" +#line 2300 "engines/director/lingo/lingo-gr.cpp" break; case 43: /* ID: tOPEN */ #line 319 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("open"); } -#line 2300 "engines/director/lingo/lingo-gr.cpp" +#line 2306 "engines/director/lingo/lingo-gr.cpp" break; case 44: /* ID: tOR */ #line 320 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("or"); } -#line 2306 "engines/director/lingo/lingo-gr.cpp" +#line 2312 "engines/director/lingo/lingo-gr.cpp" break; case 45: /* ID: tPREVIOUS */ #line 322 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("previous"); } -#line 2312 "engines/director/lingo/lingo-gr.cpp" +#line 2318 "engines/director/lingo/lingo-gr.cpp" break; case 46: /* ID: tREPEAT */ #line 325 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("repeat"); } -#line 2318 "engines/director/lingo/lingo-gr.cpp" +#line 2324 "engines/director/lingo/lingo-gr.cpp" break; case 47: /* ID: tSCRIPT */ #line 326 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("script"); } -#line 2324 "engines/director/lingo/lingo-gr.cpp" +#line 2330 "engines/director/lingo/lingo-gr.cpp" break; case 48: /* ID: tSET */ #line 327 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("set"); } -#line 2330 "engines/director/lingo/lingo-gr.cpp" +#line 2336 "engines/director/lingo/lingo-gr.cpp" break; case 49: /* ID: tSTARTS */ #line 328 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("starts"); } -#line 2336 "engines/director/lingo/lingo-gr.cpp" +#line 2342 "engines/director/lingo/lingo-gr.cpp" break; case 50: /* ID: tTELL */ #line 329 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("tell"); } -#line 2342 "engines/director/lingo/lingo-gr.cpp" +#line 2348 "engines/director/lingo/lingo-gr.cpp" break; case 51: /* ID: tTO */ #line 331 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("to"); } -#line 2348 "engines/director/lingo/lingo-gr.cpp" +#line 2354 "engines/director/lingo/lingo-gr.cpp" break; case 52: /* ID: tASSERTERROR */ #line 332 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("scummvmAssertError"); } -#line 2354 "engines/director/lingo/lingo-gr.cpp" +#line 2360 "engines/director/lingo/lingo-gr.cpp" break; case 53: /* ID: tSPRITE */ #line 333 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("sprite"); } -#line 2360 "engines/director/lingo/lingo-gr.cpp" - break; - - case 54: /* ID: tWHEN */ -#line 334 "engines/director/lingo/lingo-gr.y" - { (yyval.s) = new Common::String("when"); } #line 2366 "engines/director/lingo/lingo-gr.cpp" break; - case 55: /* ID: tWHILE */ + case 54: /* ID: tWHILE */ #line 335 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("while"); } #line 2372 "engines/director/lingo/lingo-gr.cpp" break; - case 56: /* ID: tWINDOW */ + case 55: /* ID: tWINDOW */ #line 336 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("window"); } #line 2378 "engines/director/lingo/lingo-gr.cpp" break; - case 57: /* ID: tWITH */ + case 56: /* ID: tWITH */ #line 337 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("with"); } #line 2384 "engines/director/lingo/lingo-gr.cpp" break; - case 58: /* ID: tWITHIN */ + case 57: /* ID: tWITHIN */ #line 338 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("within"); } #line 2390 "engines/director/lingo/lingo-gr.cpp" break; - case 59: /* ID: tWORD */ + case 58: /* ID: tWORD */ #line 339 "engines/director/lingo/lingo-gr.y" { (yyval.s) = new Common::String("word"); } #line 2396 "engines/director/lingo/lingo-gr.cpp" break; - case 60: /* idlist: %empty */ + case 59: /* idlist: %empty */ #line 342 "engines/director/lingo/lingo-gr.y" { (yyval.idlist) = new IDList; } #line 2402 "engines/director/lingo/lingo-gr.cpp" break; - case 62: /* nonemptyidlist: ID */ + case 61: /* nonemptyidlist: ID */ #line 346 "engines/director/lingo/lingo-gr.y" { Common::Array *list = new IDList; @@ -2410,7 +2410,7 @@ yyreduce: #line 2411 "engines/director/lingo/lingo-gr.cpp" break; - case 63: /* nonemptyidlist: nonemptyidlist ',' ID */ + case 62: /* nonemptyidlist: nonemptyidlist ',' ID */ #line 350 "engines/director/lingo/lingo-gr.y" { (yyvsp[-2].idlist)->push_back((yyvsp[0].s)); @@ -2419,67 +2419,67 @@ yyreduce: break; case 72: /* proc: ID cmdargs '\n' */ -#line 372 "engines/director/lingo/lingo-gr.y" +#line 373 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new CmdNode((yyvsp[-2].s), (yyvsp[-1].nodelist)); } #line 2425 "engines/director/lingo/lingo-gr.cpp" break; case 73: /* proc: tPUT cmdargs '\n' */ -#line 373 "engines/director/lingo/lingo-gr.y" +#line 374 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new CmdNode(new Common::String("put"), (yyvsp[-1].nodelist)); } #line 2431 "engines/director/lingo/lingo-gr.cpp" break; case 74: /* proc: tGO cmdargs '\n' */ -#line 374 "engines/director/lingo/lingo-gr.y" +#line 375 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new CmdNode(new Common::String("go"), (yyvsp[-1].nodelist)); } #line 2437 "engines/director/lingo/lingo-gr.cpp" break; case 75: /* proc: tGO frameargs '\n' */ -#line 375 "engines/director/lingo/lingo-gr.y" +#line 376 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new CmdNode(new Common::String("go"), (yyvsp[-1].nodelist)); } #line 2443 "engines/director/lingo/lingo-gr.cpp" break; case 76: /* proc: tPLAY cmdargs '\n' */ -#line 376 "engines/director/lingo/lingo-gr.y" +#line 377 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new CmdNode(new Common::String("play"), (yyvsp[-1].nodelist)); } #line 2449 "engines/director/lingo/lingo-gr.cpp" break; case 77: /* proc: tPLAY frameargs '\n' */ -#line 377 "engines/director/lingo/lingo-gr.y" +#line 378 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new CmdNode(new Common::String("play"), (yyvsp[-1].nodelist)); } #line 2455 "engines/director/lingo/lingo-gr.cpp" break; case 78: /* proc: tNEXT tREPEAT '\n' */ -#line 378 "engines/director/lingo/lingo-gr.y" +#line 379 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new NextRepeatNode(); } #line 2461 "engines/director/lingo/lingo-gr.cpp" break; case 79: /* proc: tEXIT tREPEAT '\n' */ -#line 379 "engines/director/lingo/lingo-gr.y" +#line 380 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new ExitRepeatNode(); } #line 2467 "engines/director/lingo/lingo-gr.cpp" break; case 80: /* proc: tEXIT '\n' */ -#line 380 "engines/director/lingo/lingo-gr.y" +#line 381 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new ExitNode(); } #line 2473 "engines/director/lingo/lingo-gr.cpp" break; case 81: /* proc: tASSERTERROR stmtoneliner */ -#line 381 "engines/director/lingo/lingo-gr.y" +#line 382 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new AssertErrorNode((yyvsp[0].node)); } #line 2479 "engines/director/lingo/lingo-gr.cpp" break; case 82: /* cmdargs: %empty */ -#line 384 "engines/director/lingo/lingo-gr.y" +#line 385 "engines/director/lingo/lingo-gr.y" { // This matches `cmd` (yyval.nodelist) = new NodeList; } @@ -2487,7 +2487,7 @@ yyreduce: break; case 83: /* cmdargs: expr */ -#line 387 "engines/director/lingo/lingo-gr.y" +#line 388 "engines/director/lingo/lingo-gr.y" { // This matches `cmd arg` and `cmd(arg)` NodeList *args = new NodeList; @@ -2497,7 +2497,7 @@ yyreduce: break; case 84: /* cmdargs: expr ',' nonemptyexprlist */ -#line 392 "engines/director/lingo/lingo-gr.y" +#line 393 "engines/director/lingo/lingo-gr.y" { // This matches `cmd args, ...) (yyvsp[0].nodelist)->insert_at(0, (yyvsp[-2].node)); @@ -2506,7 +2506,7 @@ yyreduce: break; case 85: /* cmdargs: expr expr_nounarymath */ -#line 396 "engines/director/lingo/lingo-gr.y" +#line 397 "engines/director/lingo/lingo-gr.y" { // This matches `cmd arg arg` NodeList *args = new NodeList; @@ -2517,7 +2517,7 @@ yyreduce: break; case 86: /* cmdargs: expr expr_nounarymath ',' nonemptyexprlist */ -#line 402 "engines/director/lingo/lingo-gr.y" +#line 403 "engines/director/lingo/lingo-gr.y" { // This matches `cmd arg arg, ...` (yyvsp[0].nodelist)->insert_at(0, (yyvsp[-2].node)); @@ -2527,7 +2527,7 @@ yyreduce: break; case 87: /* cmdargs: '(' ')' */ -#line 407 "engines/director/lingo/lingo-gr.y" +#line 408 "engines/director/lingo/lingo-gr.y" { // This matches `cmd()` (yyval.nodelist) = new NodeList; } @@ -2535,7 +2535,7 @@ yyreduce: break; case 88: /* cmdargs: '(' expr ',' nonemptyexprlist ')' */ -#line 410 "engines/director/lingo/lingo-gr.y" +#line 411 "engines/director/lingo/lingo-gr.y" { // This matches `cmd(args, ...)` (yyvsp[-1].nodelist)->insert_at(0, (yyvsp[-3].node)); @@ -2544,7 +2544,7 @@ yyreduce: break; case 89: /* frameargs: tFRAME expr */ -#line 420 "engines/director/lingo/lingo-gr.y" +#line 421 "engines/director/lingo/lingo-gr.y" { // This matches `play frame arg` NodeList *args = new NodeList; @@ -2554,7 +2554,7 @@ yyreduce: break; case 90: /* frameargs: tMOVIE expr */ -#line 425 "engines/director/lingo/lingo-gr.y" +#line 426 "engines/director/lingo/lingo-gr.y" { // This matches `play movie arg` NodeList *args = new NodeList; @@ -2565,7 +2565,7 @@ yyreduce: break; case 91: /* frameargs: tFRAME expr tOF tMOVIE expr */ -#line 431 "engines/director/lingo/lingo-gr.y" +#line 432 "engines/director/lingo/lingo-gr.y" { // This matches `play frame arg of movie arg` NodeList *args = new NodeList; @@ -2576,7 +2576,7 @@ yyreduce: break; case 92: /* frameargs: expr tOF tMOVIE expr */ -#line 437 "engines/director/lingo/lingo-gr.y" +#line 438 "engines/director/lingo/lingo-gr.y" { // This matches `play arg of movie arg` (weird but valid) NodeList *args = new NodeList; @@ -2587,7 +2587,7 @@ yyreduce: break; case 93: /* frameargs: tFRAME expr expr_nounarymath */ -#line 443 "engines/director/lingo/lingo-gr.y" +#line 444 "engines/director/lingo/lingo-gr.y" { // This matches `play frame arg arg` (also weird but valid) NodeList *args = new NodeList; @@ -2598,49 +2598,49 @@ yyreduce: break; case 94: /* asgn: tPUT expr tINTO varorchunk '\n' */ -#line 451 "engines/director/lingo/lingo-gr.y" +#line 452 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new PutIntoNode((yyvsp[-3].node), (yyvsp[-1].node)); } #line 2604 "engines/director/lingo/lingo-gr.cpp" break; case 95: /* asgn: tPUT expr tAFTER varorchunk '\n' */ -#line 452 "engines/director/lingo/lingo-gr.y" +#line 453 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new PutAfterNode((yyvsp[-3].node), (yyvsp[-1].node)); } #line 2610 "engines/director/lingo/lingo-gr.cpp" break; case 96: /* asgn: tPUT expr tBEFORE varorchunk '\n' */ -#line 453 "engines/director/lingo/lingo-gr.y" +#line 454 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new PutBeforeNode((yyvsp[-3].node), (yyvsp[-1].node)); } #line 2616 "engines/director/lingo/lingo-gr.cpp" break; case 97: /* asgn: tSET varorthe to expr '\n' */ -#line 454 "engines/director/lingo/lingo-gr.y" +#line 455 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new SetNode((yyvsp[-3].node), (yyvsp[-1].node)); } #line 2622 "engines/director/lingo/lingo-gr.cpp" break; case 100: /* definevars: tGLOBAL idlist '\n' */ -#line 459 "engines/director/lingo/lingo-gr.y" +#line 460 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new GlobalNode((yyvsp[-1].idlist)); } #line 2628 "engines/director/lingo/lingo-gr.cpp" break; case 101: /* definevars: tPROPERTY idlist '\n' */ -#line 460 "engines/director/lingo/lingo-gr.y" +#line 461 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new PropertyNode((yyvsp[-1].idlist)); } #line 2634 "engines/director/lingo/lingo-gr.cpp" break; case 102: /* definevars: tINSTANCE idlist '\n' */ -#line 461 "engines/director/lingo/lingo-gr.y" +#line 462 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new InstanceNode((yyvsp[-1].idlist)); } #line 2640 "engines/director/lingo/lingo-gr.cpp" break; case 103: /* ifstmt: tIF expr tTHEN stmt */ -#line 464 "engines/director/lingo/lingo-gr.y" +#line 465 "engines/director/lingo/lingo-gr.y" { NodeList *stmtlist = new NodeList; stmtlist->push_back((yyvsp[0].node)); @@ -2649,14 +2649,14 @@ yyreduce: break; case 104: /* ifstmt: tIF expr tTHEN '\n' stmtlist tENDIF '\n' */ -#line 468 "engines/director/lingo/lingo-gr.y" +#line 469 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new IfStmtNode((yyvsp[-5].node), (yyvsp[-2].nodelist)); } #line 2656 "engines/director/lingo/lingo-gr.cpp" break; case 105: /* ifelsestmt: tIF expr tTHEN stmt tELSE stmt */ -#line 472 "engines/director/lingo/lingo-gr.y" +#line 473 "engines/director/lingo/lingo-gr.y" { NodeList *stmtlist1 = new NodeList; stmtlist1->push_back((yyvsp[-2].node)); @@ -2667,7 +2667,7 @@ yyreduce: break; case 106: /* ifelsestmt: tIF expr tTHEN stmt tELSE '\n' stmtlist tENDIF '\n' */ -#line 478 "engines/director/lingo/lingo-gr.y" +#line 479 "engines/director/lingo/lingo-gr.y" { NodeList *stmtlist1 = new NodeList; stmtlist1->push_back((yyvsp[-5].node)); @@ -2676,7 +2676,7 @@ yyreduce: break; case 107: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist tELSE stmt */ -#line 482 "engines/director/lingo/lingo-gr.y" +#line 483 "engines/director/lingo/lingo-gr.y" { NodeList *stmtlist2 = new NodeList; stmtlist2->push_back((yyvsp[0].node)); @@ -2685,35 +2685,35 @@ yyreduce: break; case 108: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist tELSE '\n' stmtlist tENDIF '\n' */ -#line 486 "engines/director/lingo/lingo-gr.y" +#line 487 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new IfElseStmtNode((yyvsp[-8].node), (yyvsp[-5].nodelist), (yyvsp[-2].nodelist)); } #line 2692 "engines/director/lingo/lingo-gr.cpp" break; case 109: /* loop: tREPEAT tWHILE expr '\n' stmtlist tENDREPEAT '\n' */ -#line 490 "engines/director/lingo/lingo-gr.y" +#line 491 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new RepeatWhileNode((yyvsp[-4].node), (yyvsp[-2].nodelist)); } #line 2699 "engines/director/lingo/lingo-gr.cpp" break; case 110: /* loop: tREPEAT tWITH ID tEQ expr tTO expr '\n' stmtlist tENDREPEAT '\n' */ -#line 492 "engines/director/lingo/lingo-gr.y" +#line 493 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new RepeatWithToNode((yyvsp[-8].s), (yyvsp[-6].node), false, (yyvsp[-4].node), (yyvsp[-2].nodelist)); } #line 2706 "engines/director/lingo/lingo-gr.cpp" break; case 111: /* loop: tREPEAT tWITH ID tEQ expr tDOWN tTO expr '\n' stmtlist tENDREPEAT '\n' */ -#line 494 "engines/director/lingo/lingo-gr.y" +#line 495 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new RepeatWithToNode((yyvsp[-9].s), (yyvsp[-7].node), true, (yyvsp[-4].node), (yyvsp[-2].nodelist)); } #line 2713 "engines/director/lingo/lingo-gr.cpp" break; case 112: /* tell: tTELL expr tTO stmtoneliner */ -#line 498 "engines/director/lingo/lingo-gr.y" +#line 499 "engines/director/lingo/lingo-gr.y" { NodeList *stmtlist = new NodeList; stmtlist->push_back((yyvsp[0].node)); @@ -2722,387 +2722,393 @@ yyreduce: break; case 113: /* tell: tTELL expr '\n' stmtlist tENDTELL '\n' */ -#line 502 "engines/director/lingo/lingo-gr.y" +#line 503 "engines/director/lingo/lingo-gr.y" { (yyval.node) = new TellNode((yyvsp[-4].node), (yyvsp[-2].nodelist)); } #line 2729 "engines/director/lingo/lingo-gr.cpp" break; - case 114: /* stmtlist: %empty */ -#line 506 "engines/director/lingo/lingo-gr.y" - { (yyval.nodelist) = new NodeList; } + case 114: /* when: tWHEN ID tTHEN expr */ +#line 507 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new WhenNode((yyvsp[-2].s), (yyvsp[0].node)); } #line 2735 "engines/director/lingo/lingo-gr.cpp" break; - case 116: /* nonemptystmtlist: stmtlistline */ -#line 511 "engines/director/lingo/lingo-gr.y" + case 115: /* stmtlist: %empty */ +#line 509 "engines/director/lingo/lingo-gr.y" + { (yyval.nodelist) = new NodeList; } +#line 2741 "engines/director/lingo/lingo-gr.cpp" + break; + + case 117: /* nonemptystmtlist: stmtlistline */ +#line 514 "engines/director/lingo/lingo-gr.y" { NodeList *list = new NodeList; if ((yyvsp[0].node)) { list->push_back((yyvsp[0].node)); } (yyval.nodelist) = list; } -#line 2746 "engines/director/lingo/lingo-gr.cpp" +#line 2752 "engines/director/lingo/lingo-gr.cpp" break; - case 117: /* nonemptystmtlist: stmtlist stmtlistline */ -#line 517 "engines/director/lingo/lingo-gr.y" + case 118: /* nonemptystmtlist: stmtlist stmtlistline */ +#line 520 "engines/director/lingo/lingo-gr.y" { if ((yyvsp[0].node)) { (yyvsp[-1].nodelist)->push_back((yyvsp[0].node)); } (yyval.nodelist) = (yyvsp[-1].nodelist); } -#line 2756 "engines/director/lingo/lingo-gr.cpp" - break; - - case 118: /* stmtlistline: '\n' */ -#line 524 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = nullptr; } #line 2762 "engines/director/lingo/lingo-gr.cpp" break; - case 120: /* simpleexpr_noparens_nounarymath: tINT */ -#line 531 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new IntNode((yyvsp[0].i)); } + case 119: /* stmtlistline: '\n' */ +#line 527 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = nullptr; } #line 2768 "engines/director/lingo/lingo-gr.cpp" break; - case 121: /* simpleexpr_noparens_nounarymath: tFLOAT */ -#line 532 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new FloatNode((yyvsp[0].f)); } + case 121: /* simpleexpr_noparens_nounarymath: tINT */ +#line 534 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new IntNode((yyvsp[0].i)); } #line 2774 "engines/director/lingo/lingo-gr.cpp" break; - case 122: /* simpleexpr_noparens_nounarymath: tSYMBOL */ -#line 533 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new SymbolNode((yyvsp[0].s)); } + case 122: /* simpleexpr_noparens_nounarymath: tFLOAT */ +#line 535 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new FloatNode((yyvsp[0].f)); } #line 2780 "engines/director/lingo/lingo-gr.cpp" break; - case 123: /* simpleexpr_noparens_nounarymath: tSTRING */ -#line 534 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new StringNode((yyvsp[0].s)); } + case 123: /* simpleexpr_noparens_nounarymath: tSYMBOL */ +#line 536 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new SymbolNode((yyvsp[0].s)); } #line 2786 "engines/director/lingo/lingo-gr.cpp" break; - case 124: /* simpleexpr_noparens_nounarymath: tNOT simpleexpr */ -#line 535 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new UnaryOpNode(LC::c_not, (yyvsp[0].node)); } + case 124: /* simpleexpr_noparens_nounarymath: tSTRING */ +#line 537 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new StringNode((yyvsp[0].s)); } #line 2792 "engines/director/lingo/lingo-gr.cpp" break; - case 125: /* simpleexpr_noparens_nounarymath: ID '(' exprlist ')' */ -#line 536 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new FuncNode((yyvsp[-3].s), (yyvsp[-1].nodelist)); } + case 125: /* simpleexpr_noparens_nounarymath: tNOT simpleexpr */ +#line 538 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new UnaryOpNode(LC::c_not, (yyvsp[0].node)); } #line 2798 "engines/director/lingo/lingo-gr.cpp" break; - case 128: /* var: ID */ -#line 541 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new VarNode((yyvsp[0].s)); } + case 126: /* simpleexpr_noparens_nounarymath: ID '(' exprlist ')' */ +#line 539 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new FuncNode((yyvsp[-3].s), (yyvsp[-1].nodelist)); } #line 2804 "engines/director/lingo/lingo-gr.cpp" break; - case 131: /* list: '[' exprlist ']' */ -#line 551 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new ListNode((yyvsp[-1].nodelist)); } + case 129: /* var: ID */ +#line 544 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new VarNode((yyvsp[0].s)); } #line 2810 "engines/director/lingo/lingo-gr.cpp" break; - case 132: /* list: '[' ':' ']' */ -#line 552 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new PropListNode(new NodeList); } + case 132: /* list: '[' exprlist ']' */ +#line 554 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new ListNode((yyvsp[-1].nodelist)); } #line 2816 "engines/director/lingo/lingo-gr.cpp" break; - case 133: /* list: '[' proplist ']' */ -#line 553 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new PropListNode((yyvsp[-1].nodelist)); } + case 133: /* list: '[' ':' ']' */ +#line 555 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new PropListNode(new NodeList); } #line 2822 "engines/director/lingo/lingo-gr.cpp" break; - case 134: /* proplist: proppair */ + case 134: /* list: '[' proplist ']' */ #line 556 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new PropListNode((yyvsp[-1].nodelist)); } +#line 2828 "engines/director/lingo/lingo-gr.cpp" + break; + + case 135: /* proplist: proppair */ +#line 559 "engines/director/lingo/lingo-gr.y" { NodeList *list = new NodeList; list->push_back((yyvsp[0].node)); (yyval.nodelist) = list; } -#line 2831 "engines/director/lingo/lingo-gr.cpp" +#line 2837 "engines/director/lingo/lingo-gr.cpp" break; - case 135: /* proplist: proplist ',' proppair */ -#line 560 "engines/director/lingo/lingo-gr.y" + case 136: /* proplist: proplist ',' proppair */ +#line 563 "engines/director/lingo/lingo-gr.y" { (yyvsp[-2].nodelist)->push_back((yyvsp[0].node)); (yyval.nodelist) = (yyvsp[-2].nodelist); } -#line 2839 "engines/director/lingo/lingo-gr.cpp" - break; - - case 136: /* proppair: tSYMBOL ':' expr */ -#line 565 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); } #line 2845 "engines/director/lingo/lingo-gr.cpp" break; - case 137: /* proppair: ID ':' expr */ -#line 566 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); } + case 137: /* proppair: tSYMBOL ':' expr */ +#line 568 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); } #line 2851 "engines/director/lingo/lingo-gr.cpp" break; - case 138: /* proppair: tSTRING ':' expr */ -#line 567 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new PropPairNode(new StringNode((yyvsp[-2].s)), (yyvsp[0].node)); } + case 138: /* proppair: ID ':' expr */ +#line 569 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); } #line 2857 "engines/director/lingo/lingo-gr.cpp" break; - case 139: /* parens: '(' expr ')' */ + case 139: /* proppair: tSTRING ':' expr */ #line 570 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = (yyvsp[-1].node); } + { (yyval.node) = new PropPairNode(new StringNode((yyvsp[-2].s)), (yyvsp[0].node)); } #line 2863 "engines/director/lingo/lingo-gr.cpp" break; - case 140: /* unarymath: '+' simpleexpr */ -#line 572 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = (yyvsp[0].node); } + case 140: /* parens: '(' expr ')' */ +#line 573 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = (yyvsp[-1].node); } #line 2869 "engines/director/lingo/lingo-gr.cpp" break; - case 141: /* unarymath: '-' simpleexpr */ -#line 573 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new UnaryOpNode(LC::c_negate, (yyvsp[0].node)); } + case 141: /* unarymath: '+' simpleexpr */ +#line 575 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = (yyvsp[0].node); } #line 2875 "engines/director/lingo/lingo-gr.cpp" break; - case 148: /* expr: expr '+' expr */ -#line 591 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); } + case 142: /* unarymath: '-' simpleexpr */ +#line 576 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new UnaryOpNode(LC::c_negate, (yyvsp[0].node)); } #line 2881 "engines/director/lingo/lingo-gr.cpp" break; - case 149: /* expr: expr '-' expr */ -#line 592 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); } + case 149: /* expr: expr '+' expr */ +#line 594 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2887 "engines/director/lingo/lingo-gr.cpp" break; - case 150: /* expr: expr '*' expr */ -#line 593 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); } + case 150: /* expr: expr '-' expr */ +#line 595 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2893 "engines/director/lingo/lingo-gr.cpp" break; - case 151: /* expr: expr '/' expr */ -#line 594 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); } + case 151: /* expr: expr '*' expr */ +#line 596 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2899 "engines/director/lingo/lingo-gr.cpp" break; - case 152: /* expr: expr tMOD expr */ -#line 595 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); } + case 152: /* expr: expr '/' expr */ +#line 597 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2905 "engines/director/lingo/lingo-gr.cpp" break; - case 153: /* expr: expr '>' expr */ -#line 596 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); } + case 153: /* expr: expr tMOD expr */ +#line 598 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2911 "engines/director/lingo/lingo-gr.cpp" break; - case 154: /* expr: expr '<' expr */ -#line 597 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); } + case 154: /* expr: expr '>' expr */ +#line 599 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2917 "engines/director/lingo/lingo-gr.cpp" break; - case 155: /* expr: expr tEQ expr */ -#line 598 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); } + case 155: /* expr: expr '<' expr */ +#line 600 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2923 "engines/director/lingo/lingo-gr.cpp" break; - case 156: /* expr: expr tNEQ expr */ -#line 599 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); } + case 156: /* expr: expr tEQ expr */ +#line 601 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2929 "engines/director/lingo/lingo-gr.cpp" break; - case 157: /* expr: expr tGE expr */ -#line 600 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); } + case 157: /* expr: expr tNEQ expr */ +#line 602 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2935 "engines/director/lingo/lingo-gr.cpp" break; - case 158: /* expr: expr tLE expr */ -#line 601 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); } + case 158: /* expr: expr tGE expr */ +#line 603 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2941 "engines/director/lingo/lingo-gr.cpp" break; - case 159: /* expr: expr tAND expr */ -#line 602 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); } + case 159: /* expr: expr tLE expr */ +#line 604 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2947 "engines/director/lingo/lingo-gr.cpp" break; - case 160: /* expr: expr tOR expr */ -#line 603 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); } + case 160: /* expr: expr tAND expr */ +#line 605 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2953 "engines/director/lingo/lingo-gr.cpp" break; - case 161: /* expr: expr '&' expr */ -#line 604 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); } + case 161: /* expr: expr tOR expr */ +#line 606 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2959 "engines/director/lingo/lingo-gr.cpp" break; - case 162: /* expr: expr tCONCAT expr */ -#line 605 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); } + case 162: /* expr: expr '&' expr */ +#line 607 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2965 "engines/director/lingo/lingo-gr.cpp" break; - case 163: /* expr: expr tCONTAINS expr */ -#line 606 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); } + case 163: /* expr: expr tCONCAT expr */ +#line 608 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2971 "engines/director/lingo/lingo-gr.cpp" break; - case 164: /* expr: expr tSTARTS expr */ -#line 607 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); } + case 164: /* expr: expr tCONTAINS expr */ +#line 609 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2977 "engines/director/lingo/lingo-gr.cpp" break; - case 166: /* expr_nounarymath: expr_nounarymath '+' expr */ -#line 615 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); } + case 165: /* expr: expr tSTARTS expr */ +#line 610 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2983 "engines/director/lingo/lingo-gr.cpp" break; - case 167: /* expr_nounarymath: expr_nounarymath '-' expr */ -#line 616 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); } + case 167: /* expr_nounarymath: expr_nounarymath '+' expr */ +#line 618 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2989 "engines/director/lingo/lingo-gr.cpp" break; - case 168: /* expr_nounarymath: expr_nounarymath '*' expr */ -#line 617 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); } + case 168: /* expr_nounarymath: expr_nounarymath '-' expr */ +#line 619 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); } #line 2995 "engines/director/lingo/lingo-gr.cpp" break; - case 169: /* expr_nounarymath: expr_nounarymath '/' expr */ -#line 618 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); } + case 169: /* expr_nounarymath: expr_nounarymath '*' expr */ +#line 620 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3001 "engines/director/lingo/lingo-gr.cpp" break; - case 170: /* expr_nounarymath: expr_nounarymath tMOD expr */ -#line 619 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); } + case 170: /* expr_nounarymath: expr_nounarymath '/' expr */ +#line 621 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3007 "engines/director/lingo/lingo-gr.cpp" break; - case 171: /* expr_nounarymath: expr_nounarymath '>' expr */ -#line 620 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); } + case 171: /* expr_nounarymath: expr_nounarymath tMOD expr */ +#line 622 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3013 "engines/director/lingo/lingo-gr.cpp" break; - case 172: /* expr_nounarymath: expr_nounarymath '<' expr */ -#line 621 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); } + case 172: /* expr_nounarymath: expr_nounarymath '>' expr */ +#line 623 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3019 "engines/director/lingo/lingo-gr.cpp" break; - case 173: /* expr_nounarymath: expr_nounarymath tEQ expr */ -#line 622 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); } + case 173: /* expr_nounarymath: expr_nounarymath '<' expr */ +#line 624 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3025 "engines/director/lingo/lingo-gr.cpp" break; - case 174: /* expr_nounarymath: expr_nounarymath tNEQ expr */ -#line 623 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); } + case 174: /* expr_nounarymath: expr_nounarymath tEQ expr */ +#line 625 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3031 "engines/director/lingo/lingo-gr.cpp" break; - case 175: /* expr_nounarymath: expr_nounarymath tGE expr */ -#line 624 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); } + case 175: /* expr_nounarymath: expr_nounarymath tNEQ expr */ +#line 626 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3037 "engines/director/lingo/lingo-gr.cpp" break; - case 176: /* expr_nounarymath: expr_nounarymath tLE expr */ -#line 625 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); } + case 176: /* expr_nounarymath: expr_nounarymath tGE expr */ +#line 627 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3043 "engines/director/lingo/lingo-gr.cpp" break; - case 177: /* expr_nounarymath: expr_nounarymath tAND expr */ -#line 626 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); } + case 177: /* expr_nounarymath: expr_nounarymath tLE expr */ +#line 628 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3049 "engines/director/lingo/lingo-gr.cpp" break; - case 178: /* expr_nounarymath: expr_nounarymath tOR expr */ -#line 627 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); } + case 178: /* expr_nounarymath: expr_nounarymath tAND expr */ +#line 629 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3055 "engines/director/lingo/lingo-gr.cpp" break; - case 179: /* expr_nounarymath: expr_nounarymath '&' expr */ -#line 628 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); } + case 179: /* expr_nounarymath: expr_nounarymath tOR expr */ +#line 630 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3061 "engines/director/lingo/lingo-gr.cpp" break; - case 180: /* expr_nounarymath: expr_nounarymath tCONCAT expr */ -#line 629 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); } + case 180: /* expr_nounarymath: expr_nounarymath '&' expr */ +#line 631 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3067 "engines/director/lingo/lingo-gr.cpp" break; - case 181: /* expr_nounarymath: expr_nounarymath tCONTAINS expr */ -#line 630 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); } + case 181: /* expr_nounarymath: expr_nounarymath tCONCAT expr */ +#line 632 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3073 "engines/director/lingo/lingo-gr.cpp" break; - case 182: /* expr_nounarymath: expr_nounarymath tSTARTS expr */ -#line 631 "engines/director/lingo/lingo-gr.y" - { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); } + case 182: /* expr_nounarymath: expr_nounarymath tCONTAINS expr */ +#line 633 "engines/director/lingo/lingo-gr.y" + { (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3079 "engines/director/lingo/lingo-gr.cpp" break; - case 183: /* exprlist: %empty */ + case 183: /* expr_nounarymath: expr_nounarymath tSTARTS expr */ #line 634 "engines/director/lingo/lingo-gr.y" - { (yyval.nodelist) = new NodeList; } + { (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); } #line 3085 "engines/director/lingo/lingo-gr.cpp" break; - case 185: /* nonemptyexprlist: expr */ -#line 638 "engines/director/lingo/lingo-gr.y" + case 184: /* exprlist: %empty */ +#line 637 "engines/director/lingo/lingo-gr.y" + { (yyval.nodelist) = new NodeList; } +#line 3091 "engines/director/lingo/lingo-gr.cpp" + break; + + case 186: /* nonemptyexprlist: expr */ +#line 641 "engines/director/lingo/lingo-gr.y" { NodeList *list = new NodeList; list->push_back((yyvsp[0].node)); (yyval.nodelist) = list; } -#line 3094 "engines/director/lingo/lingo-gr.cpp" +#line 3100 "engines/director/lingo/lingo-gr.cpp" break; - case 186: /* nonemptyexprlist: nonemptyexprlist ',' expr */ -#line 642 "engines/director/lingo/lingo-gr.y" + case 187: /* nonemptyexprlist: nonemptyexprlist ',' expr */ +#line 645 "engines/director/lingo/lingo-gr.y" { (yyvsp[-2].nodelist)->push_back((yyvsp[0].node)); (yyval.nodelist) = (yyvsp[-2].nodelist); } -#line 3102 "engines/director/lingo/lingo-gr.cpp" +#line 3108 "engines/director/lingo/lingo-gr.cpp" break; -#line 3106 "engines/director/lingo/lingo-gr.cpp" +#line 3112 "engines/director/lingo/lingo-gr.cpp" default: break; } @@ -3301,7 +3307,7 @@ yyreturn: return yyresult; } -#line 647 "engines/director/lingo/lingo-gr.y" +#line 650 "engines/director/lingo/lingo-gr.y" int yyreport_syntax_error(const yypcontext_t *ctx) { diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index 640ab942bd0..d7f080a388a 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -166,7 +166,7 @@ static void checkEnd(Common::String *token, Common::String *expect, bool require // STATEMENT %type stmt stmtoneliner %type proc asgn definevars -%type ifstmt ifelsestmt loop tell +%type ifstmt ifelsestmt loop tell when %type cmdargs frameargs stmtlist nonemptystmtlist %type stmtlistline @@ -331,7 +331,7 @@ ID: tVARID | tTO { $$ = new Common::String("to"); } | tASSERTERROR { $$ = new Common::String("scummvmAssertError"); } | tSPRITE { $$ = new Common::String("sprite"); } - | tWHEN { $$ = new Common::String("when"); } + // | tWHEN { $$ = new Common::String("when"); } | tWHILE { $$ = new Common::String("while"); } | tWINDOW { $$ = new Common::String("window"); } | tWITH { $$ = new Common::String("with"); } @@ -362,6 +362,7 @@ stmt: stmtoneliner | ifelsestmt | loop | tell + | when ; stmtoneliner: proc @@ -503,6 +504,8 @@ tell: tTELL expr tTO stmtoneliner { $$ = new TellNode($expr, $stmtlist); } ; +when: tWHEN ID tTHEN expr { $$ = new WhenNode($ID, $expr); } ; + stmtlist: /* empty */ { $$ = new NodeList; } | nonemptystmtlist ;