[Scummvm-git-logs] scummvm master -> 78f616e6f8139d52fb51752c4f508bcce71dda48
sev-
sev at scummvm.org
Tue May 26 23:38:59 UTC 2020
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
892c9caae3 DIRECTOR: LINGO: Made 'if' Lingo non-recursive
78f616e6f8 DIRECTOR: LINGO: Made compiled 'if' statement relocatable
Commit: 892c9caae3dd9ae0bccdc735f375090086516aba
https://github.com/scummvm/scummvm/commit/892c9caae3dd9ae0bccdc735f375090086516aba
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-27T01:14:41+02:00
Commit Message:
DIRECTOR: LINGO: Made 'if' Lingo non-recursive
Changed paths:
engines/director/lingo/lingo-codegen.cpp
engines/director/lingo/lingo-gr.cpp
engines/director/lingo/lingo-gr.y
engines/director/lingo/lingo.h
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 7e39ac9896..abc98887c8 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -467,20 +467,16 @@ void Lingo::codeLabel(int label) {
debugC(4, kDebugLingoCompile, "codeLabel: Added label %d", label);
}
-void Lingo::processIf(int startlabel, int endlabel, int finalElse) {
- inst ielse1, iend;
- int else1 = 0;
+void Lingo::processIf(int toplabel, int endlabel) {
+ inst iend;
- debugC(4, kDebugLingoCompile, "processIf(%d, %d, %d)", startlabel, endlabel, finalElse);
+ debugC(4, kDebugLingoCompile, "processIf(%d, %d)", toplabel, endlabel);
WRITE_UINT32(&iend, endlabel);
- int finalElsePos = -1;
- bool multiIf = _labelstack.size() > 1;
-
while (true) {
if (_labelstack.empty()) {
- warning("Label stack underflow");
+ warning("Lingo::processIf(): Label stack underflow");
break;
}
@@ -491,28 +487,9 @@ void Lingo::processIf(int startlabel, int endlabel, int finalElse) {
if (!label)
break;
- if (else1)
- else1 = else1 - label;
-
- // Store position of the last 'if', so we could set reference to the
- // 'finalElse' part
- if (finalElse && finalElsePos == -1) {
- finalElsePos = label;
- }
-
- debugC(4, kDebugLingoCompile, "processIf: %d: %d %d", label, else1 + label, endlabel + label);
-
- WRITE_UINT32(&ielse1, else1);
- (*_currentScript)[label + 2] = ielse1; /* elsepart */
- (*_currentScript)[label + 3] = iend; /* end, if cond fails */
-
- else1 = label;
- }
+ debugC(4, kDebugLingoCompile, "processIf: label at %d", label);
- if (multiIf && finalElsePos != -1) {
- debugC(4, kDebugLingoCompile, "processIf: storing %d to %d", finalElse - finalElsePos + startlabel, finalElsePos);
- WRITE_UINT32(&ielse1, finalElse - finalElsePos + startlabel);
- (*_currentScript)[finalElsePos + 2] = ielse1;
+ (*_currentScript)[label] = iend; /* end, if cond fails */
}
}
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index da8e7d7cb9..6ab25af009 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -417,44 +417,45 @@ enum yysymbol_kind_t
YYSYMBOL_ifoneliner = 115, /* ifoneliner */
YYSYMBOL_repeatwhile = 116, /* repeatwhile */
YYSYMBOL_repeatwith = 117, /* repeatwith */
- YYSYMBOL_if = 118, /* if */
- YYSYMBOL_elseif = 119, /* elseif */
- YYSYMBOL_begin = 120, /* begin */
- YYSYMBOL_end = 121, /* end */
- YYSYMBOL_stmtlist = 122, /* stmtlist */
- YYSYMBOL_when = 123, /* when */
- YYSYMBOL_simpleexpr = 124, /* simpleexpr */
- YYSYMBOL_expr = 125, /* expr */
- YYSYMBOL_chunkexpr = 126, /* chunkexpr */
- YYSYMBOL_reference = 127, /* reference */
- YYSYMBOL_proc = 128, /* proc */
- YYSYMBOL_129_1 = 129, /* $@1 */
- YYSYMBOL_130_2 = 130, /* $@2 */
- YYSYMBOL_131_3 = 131, /* $@3 */
- YYSYMBOL_globallist = 132, /* globallist */
- YYSYMBOL_propertylist = 133, /* propertylist */
- YYSYMBOL_instancelist = 134, /* instancelist */
- YYSYMBOL_gotofunc = 135, /* gotofunc */
- YYSYMBOL_gotomovie = 136, /* gotomovie */
- YYSYMBOL_playfunc = 137, /* playfunc */
- YYSYMBOL_138_4 = 138, /* $@4 */
- YYSYMBOL_defn = 139, /* defn */
- YYSYMBOL_140_5 = 140, /* $@5 */
- YYSYMBOL_141_6 = 141, /* $@6 */
- YYSYMBOL_142_7 = 142, /* $@7 */
- YYSYMBOL_on = 143, /* on */
- YYSYMBOL_144_8 = 144, /* $@8 */
- YYSYMBOL_argdef = 145, /* argdef */
- YYSYMBOL_endargdef = 146, /* endargdef */
- YYSYMBOL_argstore = 147, /* argstore */
- YYSYMBOL_macro = 148, /* macro */
- YYSYMBOL_arglist = 149, /* arglist */
- YYSYMBOL_nonemptyarglist = 150, /* nonemptyarglist */
- YYSYMBOL_list = 151, /* list */
- YYSYMBOL_valuelist = 152, /* valuelist */
- YYSYMBOL_linearlist = 153, /* linearlist */
- YYSYMBOL_proplist = 154, /* proplist */
- YYSYMBOL_proppair = 155 /* proppair */
+ YYSYMBOL_jumpifz = 118, /* jumpifz */
+ YYSYMBOL_jump = 119, /* jump */
+ YYSYMBOL_if = 120, /* if */
+ YYSYMBOL_begin = 121, /* begin */
+ YYSYMBOL_end = 122, /* end */
+ YYSYMBOL_stmtlist = 123, /* stmtlist */
+ YYSYMBOL_when = 124, /* when */
+ YYSYMBOL_simpleexpr = 125, /* simpleexpr */
+ YYSYMBOL_expr = 126, /* expr */
+ YYSYMBOL_chunkexpr = 127, /* chunkexpr */
+ YYSYMBOL_reference = 128, /* reference */
+ YYSYMBOL_proc = 129, /* proc */
+ YYSYMBOL_130_1 = 130, /* $@1 */
+ YYSYMBOL_131_2 = 131, /* $@2 */
+ YYSYMBOL_132_3 = 132, /* $@3 */
+ YYSYMBOL_globallist = 133, /* globallist */
+ YYSYMBOL_propertylist = 134, /* propertylist */
+ YYSYMBOL_instancelist = 135, /* instancelist */
+ YYSYMBOL_gotofunc = 136, /* gotofunc */
+ YYSYMBOL_gotomovie = 137, /* gotomovie */
+ YYSYMBOL_playfunc = 138, /* playfunc */
+ YYSYMBOL_139_4 = 139, /* $@4 */
+ YYSYMBOL_defn = 140, /* defn */
+ YYSYMBOL_141_5 = 141, /* $@5 */
+ YYSYMBOL_142_6 = 142, /* $@6 */
+ YYSYMBOL_143_7 = 143, /* $@7 */
+ YYSYMBOL_on = 144, /* on */
+ YYSYMBOL_145_8 = 145, /* $@8 */
+ YYSYMBOL_argdef = 146, /* argdef */
+ YYSYMBOL_endargdef = 147, /* endargdef */
+ YYSYMBOL_argstore = 148, /* argstore */
+ YYSYMBOL_macro = 149, /* macro */
+ YYSYMBOL_arglist = 150, /* arglist */
+ YYSYMBOL_nonemptyarglist = 151, /* nonemptyarglist */
+ YYSYMBOL_list = 152, /* list */
+ YYSYMBOL_valuelist = 153, /* valuelist */
+ YYSYMBOL_linearlist = 154, /* linearlist */
+ YYSYMBOL_proplist = 155, /* proplist */
+ YYSYMBOL_proppair = 156 /* proppair */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -764,14 +765,14 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 128
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 2389
+#define YYLAST 2388
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 104
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 52
+#define YYNNTS 53
/* YYNRULES -- Number of rules. */
-#define YYNRULES 173
+#define YYNRULES 174
/* YYNSTATES -- Number of states. */
#define YYNSTATES 378
@@ -833,21 +834,21 @@ static const yytype_int16 yyrline[] =
0, 165, 165, 166, 168, 169, 170, 172, 178, 182,
193, 194, 195, 201, 208, 214, 221, 227, 234, 245,
252, 253, 254, 256, 257, 258, 259, 261, 262, 267,
- 278, 295, 307, 318, 320, 325, 329, 334, 338, 348,
- 359, 360, 362, 369, 379, 390, 392, 398, 404, 411,
- 413, 415, 416, 417, 419, 425, 428, 431, 435, 439,
- 443, 451, 452, 453, 464, 465, 466, 469, 472, 475,
- 478, 484, 489, 495, 496, 497, 498, 499, 500, 501,
- 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 519, 520, 521, 522,
- 523, 524, 525, 526, 528, 531, 533, 534, 535, 536,
- 537, 538, 538, 539, 539, 540, 540, 541, 544, 547,
- 548, 550, 555, 561, 566, 572, 577, 590, 591, 592,
- 593, 597, 601, 606, 607, 609, 613, 617, 621, 621,
- 651, 651, 651, 657, 658, 658, 664, 672, 678, 678,
- 681, 682, 683, 685, 686, 687, 689, 691, 699, 700,
- 701, 703, 704, 706, 708, 709, 710, 711, 713, 714,
- 716, 717, 719, 723
+ 278, 295, 307, 318, 320, 325, 329, 334, 338, 345,
+ 353, 354, 356, 362, 368, 374, 376, 382, 386, 390,
+ 393, 395, 397, 398, 399, 401, 407, 410, 413, 417,
+ 421, 425, 433, 434, 435, 446, 447, 448, 451, 454,
+ 457, 460, 466, 471, 477, 478, 479, 480, 481, 482,
+ 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
+ 493, 494, 495, 496, 497, 498, 499, 501, 502, 503,
+ 504, 505, 506, 507, 508, 510, 513, 515, 516, 517,
+ 518, 519, 520, 520, 521, 521, 522, 522, 523, 526,
+ 529, 530, 532, 537, 543, 548, 554, 559, 572, 573,
+ 574, 575, 579, 583, 588, 589, 591, 595, 599, 603,
+ 603, 633, 633, 633, 639, 640, 640, 646, 654, 660,
+ 660, 663, 664, 665, 667, 668, 669, 671, 673, 681,
+ 682, 683, 685, 686, 688, 690, 691, 692, 693, 695,
+ 696, 698, 699, 701, 705
};
#endif
@@ -881,13 +882,13 @@ yysymbol_name (yysymbol_kind_t yysymbol)
"'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
"$accept", "program", "programline", "asgn", "stmtoneliner",
"stmtonelinerwithif", "stmt", "tellstart", "ifstmt", "elseifstmtlist",
- "elseifstmt", "ifoneliner", "repeatwhile", "repeatwith", "if", "elseif",
- "begin", "end", "stmtlist", "when", "simpleexpr", "expr", "chunkexpr",
- "reference", "proc", "$@1", "$@2", "$@3", "globallist", "propertylist",
- "instancelist", "gotofunc", "gotomovie", "playfunc", "$@4", "defn",
- "$@5", "$@6", "$@7", "on", "$@8", "argdef", "endargdef", "argstore",
- "macro", "arglist", "nonemptyarglist", "list", "valuelist", "linearlist",
- "proplist", "proppair", YY_NULLPTR
+ "elseifstmt", "ifoneliner", "repeatwhile", "repeatwith", "jumpifz",
+ "jump", "if", "begin", "end", "stmtlist", "when", "simpleexpr", "expr",
+ "chunkexpr", "reference", "proc", "$@1", "$@2", "$@3", "globallist",
+ "propertylist", "instancelist", "gotofunc", "gotomovie", "playfunc",
+ "$@4", "defn", "$@5", "$@6", "$@7", "on", "$@8", "argdef", "endargdef",
+ "argstore", "macro", "arglist", "nonemptyarglist", "list", "valuelist",
+ "linearlist", "proplist", "proppair", YY_NULLPTR
};
return yy_sname[yysymbol];
}
@@ -912,12 +913,12 @@ static const yytype_int16 yytoknum[] =
};
#endif
-#define YYPACT_NINF (-279)
+#define YYPACT_NINF (-318)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF (-165)
+#define YYTABLE_NINF (-166)
#define yytable_value_is_error(Yyn) \
0
@@ -926,44 +927,44 @@ static const yytype_int16 yytoknum[] =
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 776, -82, -279, -279, 72, -279, 598, 314, 72, -27,
- 499, -279, -279, -279, -279, -279, -279, -9, -279, 1623,
- -279, -279, -279, -2, 1779, 46, 43, 33, 37, 1861,
- 1660, -279, 1861, 1861, 1861, 1861, 1861, 1861, 1861, -279,
- -279, 1861, 1861, 1861, 409, 74, -17, -279, -279, -279,
- -279, 1861, -24, 1861, 1459, -279, 2281, -279, -279, -279,
- -279, -279, -279, -279, -279, -279, -279, -279, -279, -16,
- 1779, 1742, 2281, -10, 1742, -10, -279, 72, 1742, 2281,
- -3, 687, -279, -279, 86, 1861, -279, 54, -279, 1853,
- -279, 103, -279, 105, 381, 107, -279, -15, 72, 72,
- -8, 97, 100, -279, 2178, 1853, -279, 128, -279, 1901,
- 1934, 1967, 2000, 2248, 2165, 129, 131, -279, -279, 2211,
- 55, 56, -279, 2281, 59, 62, 64, -279, -279, 776,
- 2281, -279, -279, 2281, -279, -279, 1861, 2281, -279, -279,
- 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
- 1861, 1861, 1861, 1861, 1861, 1861, 1861, 139, 1742, 381,
- 2211, 11, 1861, 23, -279, 25, 1861, -10, 139, -279,
- 68, 2281, 1861, -279, -279, 72, 30, 1861, 1861, -279,
- 1861, 1861, 1, 121, 1861, 1861, 1861, -279, 1861, -279,
- -279, 76, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861,
- 1861, 1861, -279, -279, -279, 77, -279, -279, 72, 72,
- -279, 1861, -7, -279, -279, 1861, 1861, 130, -279, 2281,
- 22, 22, 22, 22, 2294, 2294, -279, 26, 22, 22,
- 22, 22, 26, -61, -61, -279, -279, -279, -57, -279,
- 2281, -279, -279, 2281, -30, 158, 2281, -279, 141, -279,
- -279, 2281, 2281, 2281, 22, 1861, 1861, 170, 2281, 22,
- 2281, 2281, 171, 2281, 2033, 2281, 2066, 2281, 2099, 2281,
- 2132, 2281, 2281, 1541, -279, 172, -279, -279, 2281, 55,
- 56, -279, 1203, 2281, 2281, -279, 146, -279, 174, -279,
- -279, 139, 1861, 2281, 22, 72, -279, 1861, 1861, 1861,
- 1861, -279, 1288, -279, -279, -279, 115, -279, -29, 1117,
- 1541, -279, -279, -279, -12, 2281, 149, 2281, 2281, 2281,
- 2281, -279, 116, -279, 1203, 152, 1861, -279, -279, 862,
- 947, -279, 1861, -279, 120, 1861, 2281, 90, -28, 182,
- -279, 2281, -279, 2281, -279, -279, -279, -279, 1861, 125,
- -279, -279, -279, 113, 1032, -279, 1203, -279, 2281, -279,
- 1541, 190, 1203, 132, 1373, 164, -279, -279, 133, -279,
- 135, -279, 136, -279, -279, 1117, -279, -279
+ 775, -63, -318, -318, 199, -318, 597, 313, 199, 25,
+ 498, -318, -318, -318, -318, -318, -318, 41, -318, 1622,
+ -318, -318, -318, 52, 1778, -36, 43, 80, 83, 1860,
+ 1659, -318, 1860, 1860, 1860, 1860, 1860, 1860, 1860, -318,
+ -318, 1860, 1860, 1860, 408, 114, 19, -318, -318, -318,
+ -318, 1860, -24, 1860, 1458, -318, 2280, -318, -318, -318,
+ -318, -318, -318, -318, -318, -318, -318, -318, -318, 17,
+ 1778, 1741, 2280, 20, 1741, 20, -318, 199, 1741, 2280,
+ 21, 686, -318, -318, 91, 1860, -318, 72, -318, 1852,
+ -318, 93, -318, 96, 380, 97, -318, -8, 199, 199,
+ 5, 70, 74, -318, 2177, 1852, -318, 99, -318, 1900,
+ 1933, 1966, 1999, 2247, 2164, 102, 103, -318, -318, 2210,
+ 29, 30, -318, 2280, 51, 54, 55, -318, -318, 775,
+ 2280, -318, -318, 2280, -318, -318, 1860, 2280, -318, -318,
+ 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+ 1860, 1860, 1860, 1860, 1860, 1860, 1860, 135, 1741, 380,
+ 2210, -10, 1860, 8, -318, 11, 1860, 20, 135, -318,
+ 62, 2280, 1860, -318, -318, 199, 18, 1860, 1860, -318,
+ 1860, 1860, 13, 115, 1860, 1860, 1860, -318, 1860, -318,
+ -318, 64, 1860, 1860, 1860, 1860, 1860, 1860, 1860, 1860,
+ 1860, 1860, -318, -318, -318, 65, -318, -318, 199, 199,
+ -318, 1860, 22, -318, -318, 1860, 1860, 116, -318, 2280,
+ 7, 7, 7, 7, 2293, 2293, -318, -7, 7, 7,
+ 7, 7, -7, -55, -55, -318, -318, -318, -75, -318,
+ 2280, -318, -318, 2280, -44, 141, 2280, -318, 124, -318,
+ -318, 2280, 2280, 2280, 7, 1860, 1860, 147, 2280, 7,
+ 2280, 2280, 157, 2280, 2032, 2280, 2065, 2280, 2098, 2280,
+ 2131, 2280, 2280, 1540, -318, 158, -318, -318, 2280, 29,
+ 30, -318, 1202, 2280, 2280, -318, 144, -318, 172, -318,
+ -318, 135, 1860, 2280, 7, 199, -318, 1860, 1860, 1860,
+ 1860, -318, 1287, -318, -318, -318, 117, -318, -2, 1116,
+ 1540, -318, -318, -318, -26, 2280, 148, 2280, 2280, 2280,
+ 2280, -318, 113, -318, 1202, 149, 1860, -318, 120, 861,
+ 946, -318, 1860, -318, 121, 1860, 2280, 76, 171, 126,
+ 191, -318, 2280, -318, 2280, -318, -318, 1860, -318, 137,
+ -318, -318, -318, 127, 1031, -318, 1202, -318, 2280, -318,
+ 1540, 195, 1202, 142, 1372, 177, -318, -318, 145, -318,
+ 150, -318, 152, -318, -318, 1116, -318, -318
};
/* YYDEFACTSTATE-NUM -- Default reduction number in state STATE-NUM.
@@ -971,66 +972,66 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 0, 0, 55, 60, 0, 56, 0, 0, 0, 0,
- 0, 58, 57, 138, 144, 71, 72, 110, 111, 0,
- 127, 47, 140, 0, 0, 0, 0, 0, 0, 0,
- 0, 115, 0, 0, 0, 0, 0, 0, 0, 113,
- 148, 0, 0, 0, 0, 0, 2, 73, 27, 6,
- 28, 0, 0, 0, 0, 64, 21, 105, 65, 22,
- 107, 108, 5, 49, 20, 62, 63, 59, 70, 59,
- 0, 0, 159, 118, 0, 67, 104, 0, 0, 161,
- 157, 0, 49, 109, 0, 0, 128, 0, 129, 130,
- 132, 0, 33, 0, 106, 0, 45, 0, 0, 0,
- 0, 0, 0, 143, 120, 135, 137, 0, 87, 0,
- 0, 0, 0, 0, 0, 0, 0, 92, 93, 0,
- 58, 57, 165, 168, 0, 166, 167, 170, 1, 0,
- 50, 49, 49, 50, 50, 26, 0, 24, 25, 23,
+ 0, 0, 56, 61, 0, 57, 0, 0, 0, 0,
+ 0, 59, 58, 139, 145, 72, 73, 111, 112, 0,
+ 128, 49, 141, 0, 0, 0, 0, 0, 0, 0,
+ 0, 116, 0, 0, 0, 0, 0, 0, 0, 114,
+ 149, 0, 0, 0, 0, 0, 2, 74, 27, 6,
+ 28, 0, 0, 0, 0, 65, 21, 106, 66, 22,
+ 108, 109, 5, 50, 20, 63, 64, 60, 71, 60,
+ 0, 0, 160, 119, 0, 68, 105, 0, 0, 162,
+ 158, 0, 50, 110, 0, 0, 129, 0, 130, 131,
+ 133, 0, 33, 0, 107, 0, 45, 0, 0, 0,
+ 0, 0, 0, 144, 121, 136, 138, 0, 88, 0,
+ 0, 0, 0, 0, 0, 0, 0, 93, 94, 0,
+ 59, 58, 166, 169, 0, 167, 168, 171, 1, 0,
+ 51, 50, 50, 47, 51, 26, 0, 24, 25, 23,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 150, 0, 0,
- 159, 0, 0, 0, 69, 0, 0, 139, 150, 121,
- 112, 134, 0, 131, 141, 0, 0, 0, 0, 46,
- 0, 0, 0, 0, 0, 0, 0, 54, 0, 136,
- 125, 116, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 37, 37, 123, 114, 149, 61, 0, 0,
- 163, 0, 0, 3, 51, 0, 0, 0, 34, 50,
- 83, 84, 81, 82, 85, 86, 78, 89, 90, 91,
- 80, 79, 88, 74, 75, 76, 77, 151, 0, 117,
- 160, 66, 68, 162, 0, 0, 133, 49, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0, 151, 0, 0,
+ 160, 0, 0, 0, 70, 0, 0, 140, 151, 122,
+ 113, 135, 0, 132, 142, 0, 0, 0, 0, 46,
+ 0, 0, 0, 0, 0, 0, 0, 55, 0, 137,
+ 126, 117, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 37, 37, 124, 115, 150, 62, 0, 0,
+ 164, 0, 0, 3, 52, 0, 0, 0, 34, 47,
+ 84, 85, 82, 83, 86, 87, 79, 90, 91, 92,
+ 81, 80, 89, 75, 76, 77, 78, 152, 0, 118,
+ 161, 67, 69, 163, 0, 0, 134, 50, 0, 7,
8, 10, 11, 15, 13, 0, 0, 0, 14, 12,
- 19, 119, 0, 96, 0, 98, 0, 100, 0, 102,
- 0, 94, 95, 0, 51, 0, 173, 172, 169, 0,
- 0, 171, 0, 50, 50, 51, 0, 156, 0, 156,
- 122, 150, 0, 16, 17, 0, 126, 0, 0, 0,
- 0, 50, 0, 124, 52, 53, 0, 51, 0, 0,
- 0, 51, 152, 51, 0, 9, 0, 97, 99, 101,
- 103, 36, 0, 29, 0, 0, 0, 40, 50, 0,
- 0, 156, 0, 35, 0, 0, 50, 50, 0, 153,
- 51, 18, 32, 50, 51, 49, 48, 41, 0, 0,
- 49, 44, 154, 146, 0, 51, 0, 51, 50, 38,
- 0, 0, 0, 0, 0, 0, 50, 155, 0, 30,
- 0, 51, 0, 31, 39, 0, 43, 42
+ 19, 120, 0, 97, 0, 99, 0, 101, 0, 103,
+ 0, 95, 96, 0, 52, 0, 174, 173, 170, 0,
+ 0, 172, 0, 51, 51, 52, 0, 157, 0, 157,
+ 123, 151, 0, 16, 17, 0, 127, 0, 0, 0,
+ 0, 51, 0, 125, 53, 54, 0, 52, 0, 0,
+ 0, 52, 153, 52, 0, 9, 0, 98, 100, 102,
+ 104, 36, 0, 29, 0, 0, 0, 40, 48, 0,
+ 0, 157, 0, 35, 0, 0, 51, 50, 0, 0,
+ 154, 52, 18, 32, 51, 52, 50, 0, 41, 0,
+ 50, 44, 155, 147, 0, 52, 0, 52, 47, 38,
+ 0, 0, 0, 0, 0, 0, 50, 156, 0, 30,
+ 0, 52, 0, 31, 39, 0, 43, 42
};
/* YYPGOTONTERM-NUM. */
static const yytype_int16 yypgoto[] =
{
- -279, 89, -279, -279, -266, -279, 3, 20, -279, -279,
- -279, -279, -279, -279, 175, -279, -80, -56, -73, -279,
- 6, -6, -279, 48, 176, -279, -279, -279, -279, -279,
- -279, -279, -18, -279, -279, -279, -279, -279, -279, -279,
- -279, -163, -279, -278, 177, 10, -279, -279, -279, -279,
- -279, 13
+ -318, 104, -318, -318, -267, -318, 2, 31, -318, -318,
+ -318, -318, -318, -318, -207, -317, 181, -77, -125, -89,
+ -318, 6, -6, -318, 63, 186, -318, -318, -318, -318,
+ -318, -318, -318, -23, -318, -318, -318, -318, -318, -318,
+ -318, -318, -165, -318, -281, 187, 10, -318, -318, -318,
+ -318, -318, 32
};
/* YYDEFGOTONTERM-NUM. */
static const yytype_int16 yydefgoto[] =
{
-1, 45, 46, 47, 48, 134, 305, 273, 50, 337,
- 347, 135, 51, 52, 53, 348, 157, 214, 282, 54,
- 55, 56, 57, 58, 59, 84, 115, 107, 170, 205,
- 191, 60, 90, 61, 81, 62, 91, 247, 82, 63,
- 116, 238, 353, 311, 64, 165, 80, 65, 124, 125,
- 126, 127
+ 348, 135, 51, 52, 217, 327, 53, 157, 214, 282,
+ 54, 55, 56, 57, 58, 59, 84, 115, 107, 170,
+ 205, 191, 60, 90, 61, 81, 62, 91, 247, 82,
+ 63, 116, 238, 353, 311, 64, 165, 80, 65, 124,
+ 125, 126, 127
};
/* YYTABLEYYPACT[STATE-NUM] -- What to do in state STATE-NUM. If
@@ -1038,101 +1039,135 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 72, 72, 168, 49, 79, 244, 325, 301, 350, 146,
- 68, 313, 106, 89, 76, 66, 73, 75, 94, 131,
- 279, 77, 280, 104, 105, 326, 108, 109, 110, 111,
- 112, 113, 114, 155, 156, 117, 118, 119, 123, 180,
- 287, 132, 83, 288, 328, 130, 184, 133, 137, 92,
- 181, 215, 216, 340, 8, 255, 249, 185, 351, 102,
- 97, 98, 99, 103, 159, 160, 256, 289, 160, 100,
- 288, 173, 160, 1, 128, 72, 101, 217, 218, 171,
- 129, 161, 158, 164, 163, 331, 2, 189, 288, 3,
- 162, 167, 146, 5, 366, 147, 146, 166, 67, 11,
- 172, 12, 95, 96, 182, 183, 33, 34, 35, 36,
- 239, 162, 169, 152, 153, 154, 155, 156, 153, 154,
- 155, 156, 241, 162, 242, 162, 345, 346, 314, 174,
- 219, 175, 49, 179, 220, 221, 222, 223, 224, 225,
+ 72, 72, 49, 244, 79, 168, 301, 106, 313, 218,
+ 68, 338, 286, 89, 76, 146, 73, 75, 94, 131,
+ 95, 96, 287, 104, 105, 288, 108, 109, 110, 111,
+ 112, 113, 114, 325, 66, 117, 118, 119, 123, 155,
+ 156, 132, 8, 328, 249, 130, 180, 133, 137, 279,
+ 341, 280, 326, 289, 215, 216, 288, 181, 377, 184,
+ 97, 98, 99, 146, 159, 160, 173, 255, 160, 100,
+ 185, 331, 160, 77, 288, 72, 101, 146, 256, 171,
+ 147, 161, 189, 164, 163, 153, 154, 155, 156, 239,
+ 162, 167, 83, 366, 33, 34, 35, 36, 152, 153,
+ 154, 155, 156, 92, 182, 183, 102, 241, 162, 103,
+ 242, 162, 346, 347, 128, 158, 129, 169, 172, 174,
+ 162, 166, 175, 179, 186, 190, 314, 187, 204, 206,
+ 219, 49, 208, 209, 220, 221, 222, 223, 224, 225,
226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 186, 72, 187, 190, 204, 240, 206, 208, 209,
- 243, 210, 211, 286, 212, 237, 246, 291, 245, 257,
- 43, 251, 252, 44, 253, 254, 262, 275, 258, 259,
- 260, 248, 261, 285, 290, 292, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 295, 296, 303, 310,
- 312, 302, 323, 332, 333, 278, 335, 342, 352, 283,
- 284, 359, 309, 361, 276, 277, 367, 371, 213, 369,
- 373, 374, 376, 274, 250, 281, 306, 307, 308, 136,
- 138, 139, 0, 0, 324, 0, 0, 0, 329, 0,
- 330, 0, 0, 0, 0, 321, 322, 0, 0, 293,
- 294, 0, 0, 327, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 357, 0, 354, 334, 0,
- 360, 356, 338, 0, 0, 0, 0, 0, 0, 0,
- 344, 349, 362, 0, 364, 0, 315, 355, 0, 0,
- 0, 317, 318, 319, 320, 0, 0, 0, 375, 0,
- 363, 316, 365, 0, 0, 0, 368, 0, 370, 0,
- 372, 0, 0, 0, -158, 1, 0, 0, 0, 377,
- 336, 0, 0, 0, 0, 0, 341, 0, 2, 343,
- 0, 3, 4, 0, 0, 5, -158, 7, 8, 9,
- 69, 11, 358, 12, -158, -158, 0, 15, 16, -158,
- -158, -158, -158, -158, -158, -158, -158, 0, -158, 0,
- -158, -158, -158, 0, 70, -158, 26, -158, -158, -158,
- -158, 0, 0, 0, -158, -158, -158, -158, -158, -158,
- -158, -158, -158, 32, -158, -158, -158, -158, -158, -158,
- 33, 34, 35, 36, 37, -158, -158, -158, -158, 0,
- -158, -158, -158, -158, -158, -158, 41, 42, -158, -158,
- 1, -158, 74, -158, -158, 44, -158, 0, 0, 0,
- 0, 0, 0, 2, 0, 176, 3, 4, 0, 0,
- 5, 0, 7, 8, 9, 69, 120, 0, 121, 0,
- 0, 0, 15, 16, 140, 141, 142, 143, 144, 145,
- 0, 146, 177, 178, 147, 148, 149, 0, 0, 70,
- 0, 26, 0, 0, 0, 0, 0, 0, 0, 0,
- 150, 151, 152, 153, 154, 155, 156, 0, 32, 0,
- 0, 0, 0, 0, 0, 33, 34, 35, 36, 37,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, -59,
- 1, 41, 42, 0, 0, 0, 0, 43, 0, 0,
- 44, -164, 122, 2, 0, 0, 3, 4, 0, 0,
- 5, -59, 7, 8, 9, 69, 11, 0, 12, -59,
- -59, 0, 15, 16, 0, -59, -59, -59, -59, -59,
- -59, -59, 0, 0, 0, 0, -59, 0, 0, 70,
- -59, 26, 0, 0, -59, 0, 0, 0, 0, -59,
- -59, -59, -59, -59, -59, -59, -59, -59, 32, -59,
- 0, 0, -59, -59, -59, 33, 34, 35, 36, 37,
- 0, 0, -59, -59, 0, -59, -59, -59, -59, -59,
- -59, 41, 42, -59, -59, 0, -59, 78, -158, 1,
- 44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 3, 4, 0, 0, 5,
- -158, 7, 8, 9, 69, 11, 0, 12, -158, -158,
- 0, 15, 16, 0, -158, -158, -158, -158, -158, -158,
- -158, 0, 0, 0, 0, -158, 0, 0, 70, -158,
- 26, 0, 0, -158, 0, 0, 0, 0, -158, -158,
- -158, 0, 0, 0, 0, 0, 0, 32, 0, 0,
+ 236, 365, 72, 210, 211, 212, 240, 306, 307, 308,
+ 243, 237, 245, 257, 262, 275, 246, 290, 292, 285,
+ 291, 251, 252, 295, 253, 254, 321, 322, 258, 259,
+ 260, 248, 261, 296, 303, 302, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 309, 310, 312, 334,
+ 1, 333, 332, 335, 323, 278, -50, 350, 343, 283,
+ 284, 345, 351, 2, 276, 277, 3, 352, 324, 355,
+ 5, 367, 329, 359, 330, 67, 11, 361, 12, 369,
+ 371, 363, 373, 213, 274, 136, 374, 368, 376, 250,
+ 138, 139, 0, 0, 281, 0, 0, 0, 0, 293,
+ 294, 339, 354, 0, 0, 0, 356, 0, 0, 0,
+ 349, 0, 0, 0, 0, 0, 362, 0, 364, 357,
+ 0, 0, 0, 360, 0, 0, 0, 0, 0, 0,
+ 0, 0, 375, 0, 0, 0, 315, 370, 0, 372,
+ 0, 317, 318, 319, 320, 0, 0, 43, 0, 0,
+ 44, 316, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -159, 1, 0, 0, 0, 0, 0,
+ 336, 0, 0, 0, 0, 0, 342, 2, 0, 344,
+ 3, 4, 0, 0, 5, -159, 7, 8, 9, 69,
+ 11, 358, 12, -159, -159, 0, 15, 16, -159, -159,
+ -159, -159, -159, -159, -159, -159, 0, -159, 0, -159,
+ -159, -159, 0, 70, -159, 26, -159, -159, -159, -159,
+ 0, 0, 0, -159, -159, -159, -159, -159, -159, -159,
+ -159, -159, 32, -159, -159, -159, -159, -159, -159, 33,
+ 34, 35, 36, 37, -159, -159, -159, -159, 0, -159,
+ -159, -159, -159, -159, -159, 41, 42, -159, -159, 1,
+ -159, 74, -159, -159, 44, -159, 0, 0, 0, 0,
+ 0, 0, 2, 0, 176, 3, 4, 0, 0, 5,
+ 0, 7, 8, 9, 69, 120, 0, 121, 0, 0,
+ 0, 15, 16, 140, 141, 142, 143, 144, 145, 0,
+ 146, 177, 178, 147, 148, 149, 0, 0, 70, 0,
+ 26, 0, 0, 0, 0, 0, 0, 0, 0, 150,
+ 151, 152, 153, 154, 155, 156, 0, 32, 0, 0,
0, 0, 0, 0, 33, 34, 35, 36, 37, 0,
- 0, -158, -158, 0, -158, -158, -158, -158, 1, 0,
- 41, 42, 0, 0, 0, -158, 71, 0, -158, 44,
- 0, 2, 0, 0, 3, 4, 0, 0, 5, -158,
- 7, 8, 9, 69, 11, 0, 12, -158, -158, 0,
- 15, 16, 0, -158, -158, -158, -158, -158, -158, -158,
- 0, 0, 0, 0, -158, 0, 0, 70, -158, 26,
- 0, 0, -158, 0, 0, 0, 0, -158, -158, -158,
+ 0, 0, 0, 0, 0, 0, 0, 0, -60, 1,
+ 41, 42, 0, 0, 0, 0, 43, 0, 0, 44,
+ -165, 122, 2, 0, 0, 3, 4, 0, 0, 5,
+ -60, 7, 8, 9, 69, 11, 0, 12, -60, -60,
+ 0, 15, 16, 0, -60, -60, -60, -60, -60, -60,
+ -60, 0, 0, 0, 0, -60, 0, 0, 70, -60,
+ 26, 0, 0, -60, 0, 0, 0, 0, -60, -60,
+ -60, -60, -60, -60, -60, -60, -60, 32, -60, 0,
+ 0, -60, -60, -60, 33, 34, 35, 36, 37, 0,
+ 0, -60, -60, 0, -60, -60, -60, -60, -60, -60,
+ 41, 42, -60, -60, 0, -60, 78, -159, 1, 44,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2, 0, 0, 3, 4, 0, 0, 5, -159,
+ 7, 8, 9, 69, 11, 0, 12, -159, -159, 0,
+ 15, 16, 0, -159, -159, -159, -159, -159, -159, -159,
+ 0, 0, 0, 0, -159, 0, 0, 70, -159, 26,
+ 0, 0, -159, 0, 0, 0, 0, -159, -159, -159,
0, 0, 0, 0, 0, 0, 32, 0, 0, 0,
0, 0, 0, 33, 34, 35, 36, 37, 0, 0,
- -158, -158, 0, -158, -158, -158, -4, 1, 0, 41,
- 42, 0, 0, 0, -158, 43, 0, -158, 44, 0,
- 2, 0, 0, 3, 4, 0, 0, 5, 6, 7,
- 8, 9, 10, 11, 0, 12, 0, 13, 14, 15,
+ -159, -159, 0, -159, -159, -159, -159, 1, 0, 41,
+ 42, 0, 0, 0, -159, 71, 0, -159, 44, 0,
+ 2, 0, 0, 3, 4, 0, 0, 5, -159, 7,
+ 8, 9, 69, 11, 0, 12, -159, -159, 0, 15,
+ 16, 0, -159, -159, -159, -159, -159, -159, -159, 0,
+ 0, 0, 0, -159, 0, 0, 70, -159, 26, 0,
+ 0, -159, 0, 0, 0, 0, -159, -159, -159, 0,
+ 0, 0, 0, 0, 0, 32, 0, 0, 0, 0,
+ 0, 0, 33, 34, 35, 36, 37, 0, 0, -159,
+ -159, 0, -159, -159, -159, -4, 1, 0, 41, 42,
+ 0, 0, 0, -159, 43, 0, -159, 44, 0, 2,
+ 0, 0, 3, 4, 0, 0, 5, 6, 7, 8,
+ 9, 10, 11, 0, 12, 0, 13, 14, 15, 16,
+ 0, 0, 0, 17, 18, 19, 20, 21, 0, 0,
+ 22, 0, 23, 0, 0, 24, 25, 26, 0, 0,
+ 27, 0, 0, 0, 28, 29, 30, 31, 0, 0,
+ 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
+ 0, 33, 34, 35, 36, 37, 0, 0, 38, 39,
+ 40, -148, 1, 0, 0, 0, 0, 41, 42, 0,
+ 0, 0, -4, 43, 0, 2, 44, 0, 3, 4,
+ 0, 0, 5, 6, 7, 8, 9, 10, 11, 0,
+ 12, 340, 13, 0, 15, 16, 0, 0, 0, 17,
+ 18, 19, 20, 21, 0, 0, 0, 0, 23, 0,
+ 0, 24, 25, 26, 0, 0, 27, 0, 0, 0,
+ 0, 29, 30, 31, 0, 0, 0, 0, 0, 0,
+ 32, 0, 0, 0, 0, 0, 0, 33, 34, 35,
+ 36, 37, 0, 0, 38, 39, -146, 1, 0, 0,
+ 0, 0, 0, 41, 42, 0, 0, 0, 304, 43,
+ 2, 0, 44, 3, 4, 0, 0, 5, 6, 7,
+ 8, 9, 10, 11, 0, 12, 0, 13, 0, 15,
16, 0, 0, 0, 17, 18, 19, 20, 21, 0,
- 0, 22, 0, 23, 0, 0, 24, 25, 26, 0,
- 0, 27, 0, 0, 0, 28, 29, 30, 31, 0,
+ 0, 0, 0, 23, 0, 0, 24, 25, 26, 0,
+ 0, 27, 0, 0, 0, 0, 29, 30, 31, 0,
+ 0, 0, 0, 0, 0, 32, 0, 0, 0, 0,
+ 0, 0, 33, 34, 35, 36, 37, 0, 0, 38,
+ 39, -143, 1, 0, 0, 0, 0, 0, 41, 42,
+ 0, 0, 0, 304, 43, 2, 0, 44, 3, 4,
+ 0, 0, 5, 6, 7, 8, 9, 10, 11, 0,
+ 12, 0, 13, 0, 15, 16, 0, 0, 0, 17,
+ 18, 19, 20, 21, 0, 0, 0, 0, 23, 0,
+ 0, 24, 25, 26, 0, 0, 27, 0, 0, 0,
+ 0, 29, 30, 31, 0, 0, 0, 0, 0, 0,
+ 32, 0, 0, 0, 0, 0, 0, 33, 34, 35,
+ 36, 37, 0, 0, 38, 39, 0, 1, 0, 0,
+ 0, 0, 0, 41, 42, 0, 0, 0, 304, 43,
+ 2, 0, 44, 3, 4, 0, 0, 5, 6, 7,
+ 8, 9, 10, 11, 0, 12, 0, 13, 0, 15,
+ 16, 0, -48, -48, 17, 18, 19, 20, 21, 0,
+ 0, 0, 0, 23, 0, 0, 24, 25, 26, 0,
+ 0, 27, 0, 0, 0, 0, 29, 30, 31, 0,
0, 0, 0, 0, 0, 32, 0, 0, 0, 0,
0, 0, 33, 34, 35, 36, 37, 0, 0, 38,
- 39, 40, -147, 1, 0, 0, 0, 0, 41, 42,
- 0, 0, 0, -4, 43, 0, 2, 44, 0, 3,
+ 39, 0, -48, 1, 0, 0, 0, 0, 41, 42,
+ 0, 0, 0, 304, 43, 0, 2, 44, 0, 3,
4, 0, 0, 5, 6, 7, 8, 9, 10, 11,
- 0, 12, 339, 13, 0, 15, 16, 0, 0, 0,
+ 0, 12, 0, 13, 0, 15, 16, 0, 0, 0,
17, 18, 19, 20, 21, 0, 0, 0, 0, 23,
0, 0, 24, 25, 26, 0, 0, 27, 0, 0,
0, 0, 29, 30, 31, 0, 0, 0, 0, 0,
0, 32, 0, 0, 0, 0, 0, 0, 33, 34,
- 35, 36, 37, 0, 0, 38, 39, -145, 1, 0,
+ 35, 36, 37, 0, 0, 38, 39, 0, 1, -51,
0, 0, 0, 0, 41, 42, 0, 0, 0, 304,
43, 2, 0, 44, 3, 4, 0, 0, 5, 6,
7, 8, 9, 10, 11, 0, 12, 0, 13, 0,
@@ -1141,7 +1176,7 @@ static const yytype_int16 yytable[] =
0, 0, 27, 0, 0, 0, 0, 29, 30, 31,
0, 0, 0, 0, 0, 0, 32, 0, 0, 0,
0, 0, 0, 33, 34, 35, 36, 37, 0, 0,
- 38, 39, -142, 1, 0, 0, 0, 0, 0, 41,
+ 38, 39, 0, 1, 0, -51, 0, 0, 0, 41,
42, 0, 0, 0, 304, 43, 2, 0, 44, 3,
4, 0, 0, 5, 6, 7, 8, 9, 10, 11,
0, 12, 0, 13, 0, 15, 16, 0, 0, 0,
@@ -1149,208 +1184,165 @@ static const yytype_int16 yytable[] =
0, 0, 24, 25, 26, 0, 0, 27, 0, 0,
0, 0, 29, 30, 31, 0, 0, 0, 0, 0,
0, 32, 0, 0, 0, 0, 0, 0, 33, 34,
- 35, 36, 37, 0, 0, 38, 39, 0, 1, 0,
+ 35, 36, 37, 0, 0, 38, 39, 0, -50, 1,
0, 0, 0, 0, 41, 42, 0, 0, 0, 304,
- 43, 2, 0, 44, 3, 4, 0, 0, 5, 6,
- 7, 8, 9, 10, 11, 0, 12, 0, 13, 0,
- 15, 16, 0, -50, -50, 17, 18, 19, 20, 21,
- 0, 0, 0, 0, 23, 0, 0, 24, 25, 26,
- 0, 0, 27, 0, 0, 0, 0, 29, 30, 31,
- 0, 0, 0, 0, 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 33, 34, 35, 36, 37, 0, 0,
- 38, 39, 0, -50, 1, 0, 0, 0, 0, 41,
- 42, 0, 0, 0, 304, 43, 0, 2, 44, 0,
- 3, 4, 0, 0, 5, 6, 7, 8, 9, 10,
- 11, 0, 12, 0, 13, 0, 15, 16, 0, 0,
- 0, 17, 18, 19, 20, 21, 0, 0, 0, 0,
- 23, 0, 0, 24, 25, 26, 0, 0, 27, 0,
- 0, 0, 0, 29, 30, 31, 0, 0, 0, 0,
- 0, 0, 32, 0, 0, 0, 0, 0, 0, 33,
- 34, 35, 36, 37, 0, 0, 38, 39, 0, 1,
- -50, 0, 0, 0, 0, 41, 42, 0, 0, 0,
- 304, 43, 2, 0, 44, 3, 4, 0, 0, 5,
+ 43, 0, 2, 44, 0, 3, 4, 0, 0, 5,
6, 7, 8, 9, 10, 11, 0, 12, 0, 13,
0, 15, 16, 0, 0, 0, 17, 18, 19, 20,
- 21, 0, 0, 0, 0, 23, 0, 0, 24, 25,
- 26, 0, 0, 27, 0, 0, 0, 0, 29, 30,
+ 21, 0, 0, 0, 0, 0, 0, 0, 24, 0,
+ 26, 0, 0, 0, 0, 0, 0, 0, 29, 30,
31, 0, 0, 0, 0, 0, 0, 32, 0, 0,
0, 0, 0, 0, 33, 34, 35, 36, 37, 0,
- 0, 38, 39, 0, 1, 0, -50, 0, 0, 0,
- 41, 42, 0, 0, 0, 304, 43, 2, 0, 44,
- 3, 4, 0, 0, 5, 6, 7, 8, 9, 10,
- 11, 0, 12, 0, 13, 0, 15, 16, 0, 0,
- 0, 17, 18, 19, 20, 21, 0, 0, 0, 0,
- 23, 0, 0, 24, 25, 26, 0, 0, 27, 0,
- 0, 0, 0, 29, 30, 31, 0, 0, 0, 0,
- 0, 0, 32, 0, 0, 0, 0, 0, 0, 33,
- 34, 35, 36, 37, 0, 0, 38, 39, 0, -50,
- 1, 0, 0, 0, 0, 41, 42, 0, 0, 0,
- 304, 43, 0, 2, 44, 0, 3, 4, 0, 0,
- 5, 6, 7, 8, 9, 10, 11, 0, 12, 0,
- 13, 0, 15, 16, 0, 0, 0, 17, 18, 19,
- 20, 21, 0, 0, 0, 0, 0, 0, 0, 24,
- 0, 26, 0, 0, 0, 0, 0, 0, 0, 29,
- 30, 31, 0, 0, 0, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 33, 34, 35, 36, 37,
- 0, 0, 1, 39, 0, 0, 0, 0, 0, 0,
- 0, 41, 42, 0, 0, 2, 0, 43, 3, 4,
- 44, 0, 5, 6, 7, 8, 9, 10, 11, 0,
- 12, 0, 13, 0, 15, 16, 0, 0, 0, 17,
- 18, 19, 20, 0, 0, 0, 0, 0, 0, 0,
- 0, 24, 0, 26, 0, 0, 0, 0, 0, 0,
- 0, 29, 30, 31, 0, 0, 0, 0, 0, 0,
- 32, 0, 0, 0, 0, 0, 0, 33, 34, 35,
- 36, 37, 0, 0, 1, 39, 0, 0, 0, 0,
- 0, 0, 0, 41, 42, 0, 0, 2, 0, 43,
- 3, 4, 44, 0, 5, 0, 7, 8, 9, 69,
- 11, 0, 12, 0, 0, 0, 15, 16, 0, 0,
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 85,
- 86, 87, 88, 70, 2, 26, 0, 3, 4, 0,
- 0, 5, 0, 7, 8, 9, 69, 11, 0, 12,
- 0, 0, 32, 15, 16, 0, 0, 0, 0, 33,
- 34, 35, 36, 37, 0, 0, 85, 0, 87, 0,
- 70, 0, 26, 0, 0, 41, 42, 0, 0, 0,
- 0, 43, 0, 0, 44, 0, 0, 0, 0, 32,
+ 0, 1, 39, 0, 0, 0, 0, 0, 0, 0,
+ 41, 42, 0, 0, 2, 0, 43, 3, 4, 44,
+ 0, 5, 6, 7, 8, 9, 10, 11, 0, 12,
+ 0, 13, 0, 15, 16, 0, 0, 0, 17, 18,
+ 19, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 24, 0, 26, 0, 0, 0, 0, 0, 0, 0,
+ 29, 30, 31, 0, 0, 0, 0, 0, 0, 32,
0, 0, 0, 0, 0, 0, 33, 34, 35, 36,
- 37, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+ 37, 0, 0, 1, 39, 0, 0, 0, 0, 0,
0, 0, 41, 42, 0, 0, 2, 0, 43, 3,
4, 44, 0, 5, 0, 7, 8, 9, 69, 11,
0, 12, 0, 0, 0, 15, 16, 0, 0, 0,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 70, 2, 26, 0, 3, 4, 0, 93,
+ 1, 0, 0, 0, 0, 0, 0, 0, 85, 86,
+ 87, 88, 70, 2, 26, 0, 3, 4, 0, 0,
5, 0, 7, 8, 9, 69, 11, 0, 12, 0,
0, 32, 15, 16, 0, 0, 0, 0, 33, 34,
- 35, 36, 37, 0, 0, 0, 0, 0, 0, 70,
+ 35, 36, 37, 0, 0, 85, 0, 87, 0, 70,
0, 26, 0, 0, 41, 42, 0, 0, 0, 0,
- 43, -158, -158, 44, 0, 0, 0, 0, 32, 0,
+ 43, 0, 0, 44, 0, 0, 0, 0, 32, 0,
0, 0, 0, 0, 0, 33, 34, 35, 36, 37,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 41, 42, 0, 0, 2, 0, 43, 3, 4,
44, 0, 5, 0, 7, 8, 9, 69, 11, 0,
- 12, 0, 0, 0, 15, 16, 0, 0, 0, 85,
- 0, 87, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 70, 0, 26, 0, 0, 140, 141, 142, 143,
- 144, 145, 0, 146, 0, 0, 147, 148, 149, 0,
- 32, 0, 0, 0, 0, 0, 0, 33, 34, 35,
- 36, 37, 150, 151, 152, 153, 154, 155, 156, 192,
- 0, 0, 0, 41, 42, 193, 0, 0, 0, 43,
- 0, 0, 44, 0, 140, 141, 142, 143, 144, 145,
- 0, 146, 0, 0, 147, 148, 149, 0, 0, 0,
- 0, 0, 194, 0, 0, 0, 0, 0, 195, 0,
- 150, 151, 152, 153, 154, 155, 156, 140, 141, 142,
- 143, 144, 145, 0, 146, 0, 0, 147, 148, 149,
- 0, 0, 0, 0, 0, 196, 0, 0, 0, 0,
- 0, 197, 0, 150, 151, 152, 153, 154, 155, 156,
- 140, 141, 142, 143, 144, 145, 0, 146, 0, 0,
- 147, 148, 149, 0, 0, 0, 0, 0, 198, 0,
- 0, 0, 0, 0, 199, 0, 150, 151, 152, 153,
- 154, 155, 156, 140, 141, 142, 143, 144, 145, 0,
+ 12, 0, 0, 0, 15, 16, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 70, 2, 26, 0, 3, 4, 0, 93, 5,
+ 0, 7, 8, 9, 69, 11, 0, 12, 0, 0,
+ 32, 15, 16, 0, 0, 0, 0, 33, 34, 35,
+ 36, 37, 0, 0, 0, 0, 0, 0, 70, 0,
+ 26, 0, 0, 41, 42, 0, 0, 0, 0, 43,
+ -159, -159, 44, 0, 0, 0, 0, 32, 0, 0,
+ 0, 0, 0, 0, 33, 34, 35, 36, 37, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+ 41, 42, 0, 0, 2, 0, 43, 3, 4, 44,
+ 0, 5, 0, 7, 8, 9, 69, 11, 0, 12,
+ 0, 0, 0, 15, 16, 0, 0, 0, 85, 0,
+ 87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 70, 0, 26, 0, 0, 140, 141, 142, 143, 144,
+ 145, 0, 146, 0, 0, 147, 148, 149, 0, 32,
+ 0, 0, 0, 0, 0, 0, 33, 34, 35, 36,
+ 37, 150, 151, 152, 153, 154, 155, 156, 192, 0,
+ 0, 0, 41, 42, 193, 0, 0, 0, 43, 0,
+ 0, 44, 0, 140, 141, 142, 143, 144, 145, 0,
146, 0, 0, 147, 148, 149, 0, 0, 0, 0,
- 0, 297, 0, 0, 0, 0, 0, 0, 0, 150,
+ 0, 194, 0, 0, 0, 0, 0, 195, 0, 150,
151, 152, 153, 154, 155, 156, 140, 141, 142, 143,
144, 145, 0, 146, 0, 0, 147, 148, 149, 0,
- 0, 0, 0, 0, 298, 0, 0, 0, 0, 0,
- 0, 0, 150, 151, 152, 153, 154, 155, 156, 140,
+ 0, 0, 0, 0, 196, 0, 0, 0, 0, 0,
+ 197, 0, 150, 151, 152, 153, 154, 155, 156, 140,
141, 142, 143, 144, 145, 0, 146, 0, 0, 147,
- 148, 149, 0, 0, 0, 0, 0, 299, 0, 0,
- 0, 0, 0, 0, 0, 150, 151, 152, 153, 154,
+ 148, 149, 0, 0, 0, 0, 0, 198, 0, 0,
+ 0, 0, 0, 199, 0, 150, 151, 152, 153, 154,
155, 156, 140, 141, 142, 143, 144, 145, 0, 146,
0, 0, 147, 148, 149, 0, 0, 0, 0, 0,
- 300, 0, 0, 0, 0, 0, 0, 0, 150, 151,
+ 297, 0, 0, 0, 0, 0, 0, 0, 150, 151,
152, 153, 154, 155, 156, 140, 141, 142, 143, 144,
145, 0, 146, 0, 0, 147, 148, 149, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 202,
+ 0, 0, 0, 298, 0, 0, 0, 0, 0, 0,
0, 150, 151, 152, 153, 154, 155, 156, 140, 141,
- 142, 143, 144, 145, 188, 146, 0, 0, 147, 148,
- 149, 140, 141, 142, 143, 144, 145, 0, 146, 0,
- 0, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 0, 203, 0, 0, 0, 0, 150, 151, 152,
+ 142, 143, 144, 145, 0, 146, 0, 0, 147, 148,
+ 149, 0, 0, 0, 0, 0, 299, 0, 0, 0,
+ 0, 0, 0, 0, 150, 151, 152, 153, 154, 155,
+ 156, 140, 141, 142, 143, 144, 145, 0, 146, 0,
+ 0, 147, 148, 149, 0, 0, 0, 0, 0, 300,
+ 0, 0, 0, 0, 0, 0, 0, 150, 151, 152,
153, 154, 155, 156, 140, 141, 142, 143, 144, 145,
0, 146, 0, 0, 147, 148, 149, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 150, 151, 152, 153, 154, 155, 156, 0, 0, 0,
- 207, 140, 141, 142, 143, 144, 145, 0, 146, 0,
- 0, 147, 148, 149, 0, 0, 0, 0, 0, 200,
- 201, 0, 0, 0, 0, 0, 0, 150, 151, 152,
- 153, 154, 155, 156, 140, 141, 142, 143, 144, 145,
- 0, 146, 0, 0, 147, 148, 149, 140, 141, 142,
- 143, 0, 0, 0, 146, 0, 0, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 0, 0, 0,
- 0, 0, 0, 150, 151, 152, 153, 154, 155, 156
+ 0, 0, 0, 0, 0, 0, 0, 0, 202, 0,
+ 150, 151, 152, 153, 154, 155, 156, 140, 141, 142,
+ 143, 144, 145, 188, 146, 0, 0, 147, 148, 149,
+ 140, 141, 142, 143, 144, 145, 0, 146, 0, 0,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 0, 203, 0, 0, 0, 0, 150, 151, 152, 153,
+ 154, 155, 156, 140, 141, 142, 143, 144, 145, 0,
+ 146, 0, 0, 147, 148, 149, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 150,
+ 151, 152, 153, 154, 155, 156, 0, 0, 0, 207,
+ 140, 141, 142, 143, 144, 145, 0, 146, 0, 0,
+ 147, 148, 149, 0, 0, 0, 0, 0, 200, 201,
+ 0, 0, 0, 0, 0, 0, 150, 151, 152, 153,
+ 154, 155, 156, 140, 141, 142, 143, 144, 145, 0,
+ 146, 0, 0, 147, 148, 149, 140, 141, 142, 143,
+ 0, 0, 0, 146, 0, 0, 147, 148, 149, 150,
+ 151, 152, 153, 154, 155, 156, 0, 0, 0, 0,
+ 0, 0, 150, 151, 152, 153, 154, 155, 156
};
static const yytype_int16 yycheck[] =
{
- 6, 7, 82, 0, 10, 168, 35, 273, 36, 70,
- 4, 289, 30, 19, 8, 97, 6, 7, 24, 43,
- 27, 48, 29, 29, 30, 54, 32, 33, 34, 35,
- 36, 37, 38, 94, 95, 41, 42, 43, 44, 54,
- 97, 65, 51, 100, 310, 51, 54, 53, 54, 51,
- 65, 131, 132, 331, 24, 54, 26, 65, 86, 26,
- 17, 18, 19, 26, 70, 71, 65, 97, 74, 26,
- 100, 89, 78, 1, 0, 81, 33, 133, 134, 85,
- 97, 71, 98, 77, 74, 97, 14, 105, 100, 17,
- 100, 81, 70, 21, 360, 73, 70, 100, 26, 27,
- 46, 29, 56, 57, 98, 99, 76, 77, 78, 79,
- 99, 100, 26, 91, 92, 93, 94, 95, 92, 93,
- 94, 95, 99, 100, 99, 100, 36, 37, 291, 26,
- 136, 26, 129, 26, 140, 141, 142, 143, 144, 145,
+ 6, 7, 0, 168, 10, 82, 273, 30, 289, 134,
+ 4, 328, 219, 19, 8, 70, 6, 7, 24, 43,
+ 56, 57, 97, 29, 30, 100, 32, 33, 34, 35,
+ 36, 37, 38, 35, 97, 41, 42, 43, 44, 94,
+ 95, 65, 24, 310, 26, 51, 54, 53, 54, 27,
+ 331, 29, 54, 97, 131, 132, 100, 65, 375, 54,
+ 17, 18, 19, 70, 70, 71, 89, 54, 74, 26,
+ 65, 97, 78, 48, 100, 81, 33, 70, 65, 85,
+ 73, 71, 105, 77, 74, 92, 93, 94, 95, 99,
+ 100, 81, 51, 360, 76, 77, 78, 79, 91, 92,
+ 93, 94, 95, 51, 98, 99, 26, 99, 100, 26,
+ 99, 100, 36, 37, 0, 98, 97, 26, 46, 26,
+ 100, 100, 26, 26, 54, 26, 291, 53, 26, 26,
+ 136, 129, 103, 103, 140, 141, 142, 143, 144, 145,
146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 54, 158, 53, 26, 26, 162, 26, 103, 103,
- 166, 102, 100, 219, 100, 26, 172, 247, 100, 48,
- 98, 177, 178, 101, 180, 181, 100, 100, 184, 185,
- 186, 175, 188, 53, 26, 44, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 26, 26, 26, 53,
- 26, 274, 87, 54, 88, 211, 54, 87, 26, 215,
- 216, 86, 285, 100, 208, 209, 26, 53, 129, 87,
- 87, 86, 86, 203, 176, 212, 282, 283, 284, 54,
- 54, 54, -1, -1, 307, -1, -1, -1, 311, -1,
- 313, -1, -1, -1, -1, 301, 302, -1, -1, 255,
- 256, -1, -1, 309, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 345, -1, 340, 324, -1,
- 350, 344, 328, -1, -1, -1, -1, -1, -1, -1,
- 336, 337, 355, -1, 357, -1, 292, 343, -1, -1,
- -1, 297, 298, 299, 300, -1, -1, -1, 371, -1,
- 356, 295, 358, -1, -1, -1, 362, -1, 364, -1,
- 366, -1, -1, -1, 0, 1, -1, -1, -1, 375,
- 326, -1, -1, -1, -1, -1, 332, -1, 14, 335,
- -1, 17, 18, -1, -1, 21, 22, 23, 24, 25,
- 26, 27, 348, 29, 30, 31, -1, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, -1, 44, -1,
- 46, 47, 48, -1, 50, 51, 52, 53, 54, 55,
- 56, -1, -1, -1, 60, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 1, 97, 98, 99, 100, 101, 102, -1, -1, -1,
- -1, -1, -1, 14, -1, 44, 17, 18, -1, -1,
- 21, -1, 23, 24, 25, 26, 27, -1, 29, -1,
- -1, -1, 33, 34, 63, 64, 65, 66, 67, 68,
- -1, 70, 71, 72, 73, 74, 75, -1, -1, 50,
- -1, 52, -1, -1, -1, -1, -1, -1, -1, -1,
- 89, 90, 91, 92, 93, 94, 95, -1, 69, -1,
- -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
- 1, 92, 93, -1, -1, -1, -1, 98, -1, -1,
- 101, 102, 103, 14, -1, -1, 17, 18, -1, -1,
- 21, 22, 23, 24, 25, 26, 27, -1, 29, 30,
- 31, -1, 33, 34, -1, 36, 37, 38, 39, 40,
- 41, 42, -1, -1, -1, -1, 47, -1, -1, 50,
- 51, 52, -1, -1, 55, -1, -1, -1, -1, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- -1, -1, 73, 74, 75, 76, 77, 78, 79, 80,
- -1, -1, 83, 84, -1, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, -1, 97, 98, 0, 1,
- 101, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 14, -1, -1, 17, 18, -1, -1, 21,
+ 156, 358, 158, 102, 100, 100, 162, 282, 283, 284,
+ 166, 26, 100, 48, 100, 100, 172, 26, 44, 53,
+ 247, 177, 178, 26, 180, 181, 301, 302, 184, 185,
+ 186, 175, 188, 26, 26, 274, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 285, 53, 26, 324,
+ 1, 88, 54, 54, 87, 211, 86, 36, 87, 215,
+ 216, 336, 86, 14, 208, 209, 17, 26, 307, 344,
+ 21, 26, 311, 86, 313, 26, 27, 100, 29, 87,
+ 53, 356, 87, 129, 203, 54, 86, 362, 86, 176,
+ 54, 54, -1, -1, 212, -1, -1, -1, -1, 255,
+ 256, 328, 341, -1, -1, -1, 345, -1, -1, -1,
+ 337, -1, -1, -1, -1, -1, 355, -1, 357, 346,
+ -1, -1, -1, 350, -1, -1, -1, -1, -1, -1,
+ -1, -1, 371, -1, -1, -1, 292, 364, -1, 366,
+ -1, 297, 298, 299, 300, -1, -1, 98, -1, -1,
+ 101, 295, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 0, 1, -1, -1, -1, -1, -1,
+ 326, -1, -1, -1, -1, -1, 332, 14, -1, 335,
+ 17, 18, -1, -1, 21, 22, 23, 24, 25, 26,
+ 27, 347, 29, 30, 31, -1, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, -1, 44, -1, 46,
+ 47, 48, -1, 50, 51, 52, 53, 54, 55, 56,
+ -1, -1, -1, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, -1, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 1,
+ 97, 98, 99, 100, 101, 102, -1, -1, -1, -1,
+ -1, -1, 14, -1, 44, 17, 18, -1, -1, 21,
+ -1, 23, 24, 25, 26, 27, -1, 29, -1, -1,
+ -1, 33, 34, 63, 64, 65, 66, 67, 68, -1,
+ 70, 71, 72, 73, 74, 75, -1, -1, 50, -1,
+ 52, -1, -1, -1, -1, -1, -1, -1, -1, 89,
+ 90, 91, 92, 93, 94, 95, -1, 69, -1, -1,
+ -1, -1, -1, -1, 76, 77, 78, 79, 80, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 0, 1,
+ 92, 93, -1, -1, -1, -1, 98, -1, -1, 101,
+ 102, 103, 14, -1, -1, 17, 18, -1, -1, 21,
22, 23, 24, 25, 26, 27, -1, 29, 30, 31,
-1, 33, 34, -1, 36, 37, 38, 39, 40, 41,
42, -1, -1, -1, -1, 47, -1, -1, 50, 51,
52, -1, -1, 55, -1, -1, -1, -1, 60, 61,
- 62, -1, -1, -1, -1, -1, -1, 69, -1, -1,
- -1, -1, -1, -1, 76, 77, 78, 79, 80, -1,
- -1, 83, 84, -1, 86, 87, 88, 0, 1, -1,
- 92, 93, -1, -1, -1, 97, 98, -1, 100, 101,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, -1,
+ -1, 73, 74, 75, 76, 77, 78, 79, 80, -1,
+ -1, 83, 84, -1, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, -1, 97, 98, 0, 1, 101,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 14, -1, -1, 17, 18, -1, -1, 21, 22,
23, 24, 25, 26, 27, -1, 29, 30, 31, -1,
33, 34, -1, 36, 37, 38, 39, 40, 41, 42,
@@ -1361,21 +1353,64 @@ static const yytype_int16 yycheck[] =
83, 84, -1, 86, 87, 88, 0, 1, -1, 92,
93, -1, -1, -1, 97, 98, -1, 100, 101, -1,
14, -1, -1, 17, 18, -1, -1, 21, 22, 23,
- 24, 25, 26, 27, -1, 29, -1, 31, 32, 33,
+ 24, 25, 26, 27, -1, 29, 30, 31, -1, 33,
+ 34, -1, 36, 37, 38, 39, 40, 41, 42, -1,
+ -1, -1, -1, 47, -1, -1, 50, 51, 52, -1,
+ -1, 55, -1, -1, -1, -1, 60, 61, 62, -1,
+ -1, -1, -1, -1, -1, 69, -1, -1, -1, -1,
+ -1, -1, 76, 77, 78, 79, 80, -1, -1, 83,
+ 84, -1, 86, 87, 88, 0, 1, -1, 92, 93,
+ -1, -1, -1, 97, 98, -1, 100, 101, -1, 14,
+ -1, -1, 17, 18, -1, -1, 21, 22, 23, 24,
+ 25, 26, 27, -1, 29, -1, 31, 32, 33, 34,
+ -1, -1, -1, 38, 39, 40, 41, 42, -1, -1,
+ 45, -1, 47, -1, -1, 50, 51, 52, -1, -1,
+ 55, -1, -1, -1, 59, 60, 61, 62, -1, -1,
+ -1, -1, -1, -1, 69, -1, -1, -1, -1, -1,
+ -1, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ 85, 0, 1, -1, -1, -1, -1, 92, 93, -1,
+ -1, -1, 97, 98, -1, 14, 101, -1, 17, 18,
+ -1, -1, 21, 22, 23, 24, 25, 26, 27, -1,
+ 29, 30, 31, -1, 33, 34, -1, -1, -1, 38,
+ 39, 40, 41, 42, -1, -1, -1, -1, 47, -1,
+ -1, 50, 51, 52, -1, -1, 55, -1, -1, -1,
+ -1, 60, 61, 62, -1, -1, -1, -1, -1, -1,
+ 69, -1, -1, -1, -1, -1, -1, 76, 77, 78,
+ 79, 80, -1, -1, 83, 84, 0, 1, -1, -1,
+ -1, -1, -1, 92, 93, -1, -1, -1, 97, 98,
+ 14, -1, 101, 17, 18, -1, -1, 21, 22, 23,
+ 24, 25, 26, 27, -1, 29, -1, 31, -1, 33,
34, -1, -1, -1, 38, 39, 40, 41, 42, -1,
- -1, 45, -1, 47, -1, -1, 50, 51, 52, -1,
- -1, 55, -1, -1, -1, 59, 60, 61, 62, -1,
+ -1, -1, -1, 47, -1, -1, 50, 51, 52, -1,
+ -1, 55, -1, -1, -1, -1, 60, 61, 62, -1,
+ -1, -1, -1, -1, -1, 69, -1, -1, -1, -1,
+ -1, -1, 76, 77, 78, 79, 80, -1, -1, 83,
+ 84, 0, 1, -1, -1, -1, -1, -1, 92, 93,
+ -1, -1, -1, 97, 98, 14, -1, 101, 17, 18,
+ -1, -1, 21, 22, 23, 24, 25, 26, 27, -1,
+ 29, -1, 31, -1, 33, 34, -1, -1, -1, 38,
+ 39, 40, 41, 42, -1, -1, -1, -1, 47, -1,
+ -1, 50, 51, 52, -1, -1, 55, -1, -1, -1,
+ -1, 60, 61, 62, -1, -1, -1, -1, -1, -1,
+ 69, -1, -1, -1, -1, -1, -1, 76, 77, 78,
+ 79, 80, -1, -1, 83, 84, -1, 1, -1, -1,
+ -1, -1, -1, 92, 93, -1, -1, -1, 97, 98,
+ 14, -1, 101, 17, 18, -1, -1, 21, 22, 23,
+ 24, 25, 26, 27, -1, 29, -1, 31, -1, 33,
+ 34, -1, 36, 37, 38, 39, 40, 41, 42, -1,
+ -1, -1, -1, 47, -1, -1, 50, 51, 52, -1,
+ -1, 55, -1, -1, -1, -1, 60, 61, 62, -1,
-1, -1, -1, -1, -1, 69, -1, -1, -1, -1,
-1, -1, 76, 77, 78, 79, 80, -1, -1, 83,
- 84, 85, 0, 1, -1, -1, -1, -1, 92, 93,
+ 84, -1, 86, 1, -1, -1, -1, -1, 92, 93,
-1, -1, -1, 97, 98, -1, 14, 101, -1, 17,
18, -1, -1, 21, 22, 23, 24, 25, 26, 27,
- -1, 29, 30, 31, -1, 33, 34, -1, -1, -1,
+ -1, 29, -1, 31, -1, 33, 34, -1, -1, -1,
38, 39, 40, 41, 42, -1, -1, -1, -1, 47,
-1, -1, 50, 51, 52, -1, -1, 55, -1, -1,
-1, -1, 60, 61, 62, -1, -1, -1, -1, -1,
-1, 69, -1, -1, -1, -1, -1, -1, 76, 77,
- 78, 79, 80, -1, -1, 83, 84, 0, 1, -1,
+ 78, 79, 80, -1, -1, 83, 84, -1, 1, 87,
-1, -1, -1, -1, 92, 93, -1, -1, -1, 97,
98, 14, -1, 101, 17, 18, -1, -1, 21, 22,
23, 24, 25, 26, 27, -1, 29, -1, 31, -1,
@@ -1384,7 +1419,7 @@ static const yytype_int16 yycheck[] =
-1, -1, 55, -1, -1, -1, -1, 60, 61, 62,
-1, -1, -1, -1, -1, -1, 69, -1, -1, -1,
-1, -1, -1, 76, 77, 78, 79, 80, -1, -1,
- 83, 84, 0, 1, -1, -1, -1, -1, -1, 92,
+ 83, 84, -1, 1, -1, 88, -1, -1, -1, 92,
93, -1, -1, -1, 97, 98, 14, -1, 101, 17,
18, -1, -1, 21, 22, 23, 24, 25, 26, 27,
-1, 29, -1, 31, -1, 33, 34, -1, -1, -1,
@@ -1392,134 +1427,100 @@ static const yytype_int16 yycheck[] =
-1, -1, 50, 51, 52, -1, -1, 55, -1, -1,
-1, -1, 60, 61, 62, -1, -1, -1, -1, -1,
-1, 69, -1, -1, -1, -1, -1, -1, 76, 77,
- 78, 79, 80, -1, -1, 83, 84, -1, 1, -1,
+ 78, 79, 80, -1, -1, 83, 84, -1, 86, 1,
-1, -1, -1, -1, 92, 93, -1, -1, -1, 97,
- 98, 14, -1, 101, 17, 18, -1, -1, 21, 22,
- 23, 24, 25, 26, 27, -1, 29, -1, 31, -1,
- 33, 34, -1, 36, 37, 38, 39, 40, 41, 42,
- -1, -1, -1, -1, 47, -1, -1, 50, 51, 52,
- -1, -1, 55, -1, -1, -1, -1, 60, 61, 62,
- -1, -1, -1, -1, -1, -1, 69, -1, -1, -1,
- -1, -1, -1, 76, 77, 78, 79, 80, -1, -1,
- 83, 84, -1, 86, 1, -1, -1, -1, -1, 92,
- 93, -1, -1, -1, 97, 98, -1, 14, 101, -1,
- 17, 18, -1, -1, 21, 22, 23, 24, 25, 26,
- 27, -1, 29, -1, 31, -1, 33, 34, -1, -1,
- -1, 38, 39, 40, 41, 42, -1, -1, -1, -1,
- 47, -1, -1, 50, 51, 52, -1, -1, 55, -1,
- -1, -1, -1, 60, 61, 62, -1, -1, -1, -1,
- -1, -1, 69, -1, -1, -1, -1, -1, -1, 76,
- 77, 78, 79, 80, -1, -1, 83, 84, -1, 1,
- 87, -1, -1, -1, -1, 92, 93, -1, -1, -1,
- 97, 98, 14, -1, 101, 17, 18, -1, -1, 21,
+ 98, -1, 14, 101, -1, 17, 18, -1, -1, 21,
22, 23, 24, 25, 26, 27, -1, 29, -1, 31,
-1, 33, 34, -1, -1, -1, 38, 39, 40, 41,
- 42, -1, -1, -1, -1, 47, -1, -1, 50, 51,
- 52, -1, -1, 55, -1, -1, -1, -1, 60, 61,
+ 42, -1, -1, -1, -1, -1, -1, -1, 50, -1,
+ 52, -1, -1, -1, -1, -1, -1, -1, 60, 61,
62, -1, -1, -1, -1, -1, -1, 69, -1, -1,
-1, -1, -1, -1, 76, 77, 78, 79, 80, -1,
- -1, 83, 84, -1, 1, -1, 88, -1, -1, -1,
- 92, 93, -1, -1, -1, 97, 98, 14, -1, 101,
- 17, 18, -1, -1, 21, 22, 23, 24, 25, 26,
- 27, -1, 29, -1, 31, -1, 33, 34, -1, -1,
- -1, 38, 39, 40, 41, 42, -1, -1, -1, -1,
- 47, -1, -1, 50, 51, 52, -1, -1, 55, -1,
- -1, -1, -1, 60, 61, 62, -1, -1, -1, -1,
- -1, -1, 69, -1, -1, -1, -1, -1, -1, 76,
- 77, 78, 79, 80, -1, -1, 83, 84, -1, 86,
- 1, -1, -1, -1, -1, 92, 93, -1, -1, -1,
- 97, 98, -1, 14, 101, -1, 17, 18, -1, -1,
- 21, 22, 23, 24, 25, 26, 27, -1, 29, -1,
- 31, -1, 33, 34, -1, -1, -1, 38, 39, 40,
- 41, 42, -1, -1, -1, -1, -1, -1, -1, 50,
- -1, 52, -1, -1, -1, -1, -1, -1, -1, 60,
- 61, 62, -1, -1, -1, -1, -1, -1, 69, -1,
- -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
- -1, -1, 1, 84, -1, -1, -1, -1, -1, -1,
- -1, 92, 93, -1, -1, 14, -1, 98, 17, 18,
- 101, -1, 21, 22, 23, 24, 25, 26, 27, -1,
- 29, -1, 31, -1, 33, 34, -1, -1, -1, 38,
- 39, 40, 41, -1, -1, -1, -1, -1, -1, -1,
- -1, 50, -1, 52, -1, -1, -1, -1, -1, -1,
- -1, 60, 61, 62, -1, -1, -1, -1, -1, -1,
- 69, -1, -1, -1, -1, -1, -1, 76, 77, 78,
- 79, 80, -1, -1, 1, 84, -1, -1, -1, -1,
- -1, -1, -1, 92, 93, -1, -1, 14, -1, 98,
- 17, 18, 101, -1, 21, -1, 23, 24, 25, 26,
- 27, -1, 29, -1, -1, -1, 33, 34, -1, -1,
- -1, 1, -1, -1, -1, -1, -1, -1, -1, 46,
- 47, 48, 49, 50, 14, 52, -1, 17, 18, -1,
- -1, 21, -1, 23, 24, 25, 26, 27, -1, 29,
- -1, -1, 69, 33, 34, -1, -1, -1, -1, 76,
- 77, 78, 79, 80, -1, -1, 46, -1, 48, -1,
- 50, -1, 52, -1, -1, 92, 93, -1, -1, -1,
- -1, 98, -1, -1, 101, -1, -1, -1, -1, 69,
+ -1, 1, 84, -1, -1, -1, -1, -1, -1, -1,
+ 92, 93, -1, -1, 14, -1, 98, 17, 18, 101,
+ -1, 21, 22, 23, 24, 25, 26, 27, -1, 29,
+ -1, 31, -1, 33, 34, -1, -1, -1, 38, 39,
+ 40, 41, -1, -1, -1, -1, -1, -1, -1, -1,
+ 50, -1, 52, -1, -1, -1, -1, -1, -1, -1,
+ 60, 61, 62, -1, -1, -1, -1, -1, -1, 69,
-1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
- 80, -1, -1, 1, -1, -1, -1, -1, -1, -1,
+ 80, -1, -1, 1, 84, -1, -1, -1, -1, -1,
-1, -1, 92, 93, -1, -1, 14, -1, 98, 17,
18, 101, -1, 21, -1, 23, 24, 25, 26, 27,
-1, 29, -1, -1, -1, 33, 34, -1, -1, -1,
- 1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 50, 14, 52, -1, 17, 18, -1, 20,
+ 1, -1, -1, -1, -1, -1, -1, -1, 46, 47,
+ 48, 49, 50, 14, 52, -1, 17, 18, -1, -1,
21, -1, 23, 24, 25, 26, 27, -1, 29, -1,
-1, 69, 33, 34, -1, -1, -1, -1, 76, 77,
- 78, 79, 80, -1, -1, -1, -1, -1, -1, 50,
+ 78, 79, 80, -1, -1, 46, -1, 48, -1, 50,
-1, 52, -1, -1, 92, 93, -1, -1, -1, -1,
- 98, 99, 100, 101, -1, -1, -1, -1, 69, -1,
+ 98, -1, -1, 101, -1, -1, -1, -1, 69, -1,
-1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
-1, -1, 1, -1, -1, -1, -1, -1, -1, -1,
-1, 92, 93, -1, -1, 14, -1, 98, 17, 18,
101, -1, 21, -1, 23, 24, 25, 26, 27, -1,
- 29, -1, -1, -1, 33, 34, -1, -1, -1, 46,
- -1, 48, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 50, -1, 52, -1, -1, 63, 64, 65, 66,
- 67, 68, -1, 70, -1, -1, 73, 74, 75, -1,
- 69, -1, -1, -1, -1, -1, -1, 76, 77, 78,
- 79, 80, 89, 90, 91, 92, 93, 94, 95, 48,
- -1, -1, -1, 92, 93, 54, -1, -1, -1, 98,
- -1, -1, 101, -1, 63, 64, 65, 66, 67, 68,
- -1, 70, -1, -1, 73, 74, 75, -1, -1, -1,
- -1, -1, 48, -1, -1, -1, -1, -1, 54, -1,
- 89, 90, 91, 92, 93, 94, 95, 63, 64, 65,
- 66, 67, 68, -1, 70, -1, -1, 73, 74, 75,
- -1, -1, -1, -1, -1, 48, -1, -1, -1, -1,
- -1, 54, -1, 89, 90, 91, 92, 93, 94, 95,
- 63, 64, 65, 66, 67, 68, -1, 70, -1, -1,
- 73, 74, 75, -1, -1, -1, -1, -1, 48, -1,
- -1, -1, -1, -1, 54, -1, 89, 90, 91, 92,
- 93, 94, 95, 63, 64, 65, 66, 67, 68, -1,
+ 29, -1, -1, -1, 33, 34, -1, -1, -1, 1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 50, 14, 52, -1, 17, 18, -1, 20, 21,
+ -1, 23, 24, 25, 26, 27, -1, 29, -1, -1,
+ 69, 33, 34, -1, -1, -1, -1, 76, 77, 78,
+ 79, 80, -1, -1, -1, -1, -1, -1, 50, -1,
+ 52, -1, -1, 92, 93, -1, -1, -1, -1, 98,
+ 99, 100, 101, -1, -1, -1, -1, 69, -1, -1,
+ -1, -1, -1, -1, 76, 77, 78, 79, 80, -1,
+ -1, 1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 92, 93, -1, -1, 14, -1, 98, 17, 18, 101,
+ -1, 21, -1, 23, 24, 25, 26, 27, -1, 29,
+ -1, -1, -1, 33, 34, -1, -1, -1, 46, -1,
+ 48, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 50, -1, 52, -1, -1, 63, 64, 65, 66, 67,
+ 68, -1, 70, -1, -1, 73, 74, 75, -1, 69,
+ -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
+ 80, 89, 90, 91, 92, 93, 94, 95, 48, -1,
+ -1, -1, 92, 93, 54, -1, -1, -1, 98, -1,
+ -1, 101, -1, 63, 64, 65, 66, 67, 68, -1,
70, -1, -1, 73, 74, 75, -1, -1, -1, -1,
- -1, 48, -1, -1, -1, -1, -1, -1, -1, 89,
+ -1, 48, -1, -1, -1, -1, -1, 54, -1, 89,
90, 91, 92, 93, 94, 95, 63, 64, 65, 66,
67, 68, -1, 70, -1, -1, 73, 74, 75, -1,
-1, -1, -1, -1, 48, -1, -1, -1, -1, -1,
- -1, -1, 89, 90, 91, 92, 93, 94, 95, 63,
+ 54, -1, 89, 90, 91, 92, 93, 94, 95, 63,
64, 65, 66, 67, 68, -1, 70, -1, -1, 73,
74, 75, -1, -1, -1, -1, -1, 48, -1, -1,
- -1, -1, -1, -1, -1, 89, 90, 91, 92, 93,
+ -1, -1, -1, 54, -1, 89, 90, 91, 92, 93,
94, 95, 63, 64, 65, 66, 67, 68, -1, 70,
-1, -1, 73, 74, 75, -1, -1, -1, -1, -1,
48, -1, -1, -1, -1, -1, -1, -1, 89, 90,
91, 92, 93, 94, 95, 63, 64, 65, 66, 67,
68, -1, 70, -1, -1, 73, 74, 75, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 54,
+ -1, -1, -1, 48, -1, -1, -1, -1, -1, -1,
-1, 89, 90, 91, 92, 93, 94, 95, 63, 64,
- 65, 66, 67, 68, 56, 70, -1, -1, 73, 74,
- 75, 63, 64, 65, 66, 67, 68, -1, 70, -1,
- -1, 73, 74, 75, 89, 90, 91, 92, 93, 94,
- 95, -1, 97, -1, -1, -1, -1, 89, 90, 91,
+ 65, 66, 67, 68, -1, 70, -1, -1, 73, 74,
+ 75, -1, -1, -1, -1, -1, 48, -1, -1, -1,
+ -1, -1, -1, -1, 89, 90, 91, 92, 93, 94,
+ 95, 63, 64, 65, 66, 67, 68, -1, 70, -1,
+ -1, 73, 74, 75, -1, -1, -1, -1, -1, 48,
+ -1, -1, -1, -1, -1, -1, -1, 89, 90, 91,
92, 93, 94, 95, 63, 64, 65, 66, 67, 68,
-1, 70, -1, -1, 73, 74, 75, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 89, 90, 91, 92, 93, 94, 95, -1, -1, -1,
- 99, 63, 64, 65, 66, 67, 68, -1, 70, -1,
- -1, 73, 74, 75, -1, -1, -1, -1, -1, 81,
- 82, -1, -1, -1, -1, -1, -1, 89, 90, 91,
- 92, 93, 94, 95, 63, 64, 65, 66, 67, 68,
- -1, 70, -1, -1, 73, 74, 75, 63, 64, 65,
- 66, -1, -1, -1, 70, -1, -1, 73, 74, 75,
- 89, 90, 91, 92, 93, 94, 95, -1, -1, -1,
- -1, -1, -1, 89, 90, 91, 92, 93, 94, 95
+ -1, -1, -1, -1, -1, -1, -1, -1, 54, -1,
+ 89, 90, 91, 92, 93, 94, 95, 63, 64, 65,
+ 66, 67, 68, 56, 70, -1, -1, 73, 74, 75,
+ 63, 64, 65, 66, 67, 68, -1, 70, -1, -1,
+ 73, 74, 75, 89, 90, 91, 92, 93, 94, 95,
+ -1, 97, -1, -1, -1, -1, 89, 90, 91, 92,
+ 93, 94, 95, 63, 64, 65, 66, 67, 68, -1,
+ 70, -1, -1, 73, 74, 75, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 89,
+ 90, 91, 92, 93, 94, 95, -1, -1, -1, 99,
+ 63, 64, 65, 66, 67, 68, -1, 70, -1, -1,
+ 73, 74, 75, -1, -1, -1, -1, -1, 81, 82,
+ -1, -1, -1, -1, -1, -1, 89, 90, 91, 92,
+ 93, 94, 95, 63, 64, 65, 66, 67, 68, -1,
+ 70, -1, -1, 73, 74, 75, 63, 64, 65, 66,
+ -1, -1, -1, 70, -1, -1, 73, 74, 75, 89,
+ 90, 91, 92, 93, 94, 95, -1, -1, -1, -1,
+ -1, -1, 89, 90, 91, 92, 93, 94, 95
};
/* YYSTOSSTATE-NUM -- The (internal number of the) accessing
@@ -1531,39 +1532,39 @@ static const yytype_uint8 yystos[] =
41, 42, 45, 47, 50, 51, 52, 55, 59, 60,
61, 62, 69, 76, 77, 78, 79, 80, 83, 84,
85, 92, 93, 98, 101, 105, 106, 107, 108, 110,
- 112, 116, 117, 118, 123, 124, 125, 126, 127, 128,
- 135, 137, 139, 143, 148, 151, 97, 26, 124, 26,
- 50, 98, 125, 149, 98, 149, 124, 48, 98, 125,
- 150, 138, 142, 51, 129, 46, 47, 48, 49, 125,
- 136, 140, 51, 20, 125, 56, 57, 17, 18, 19,
- 26, 33, 26, 26, 125, 125, 136, 131, 125, 125,
- 125, 125, 125, 125, 125, 130, 144, 125, 125, 125,
- 27, 29, 103, 125, 152, 153, 154, 155, 0, 97,
- 125, 43, 65, 125, 109, 115, 118, 125, 128, 148,
+ 112, 116, 117, 120, 124, 125, 126, 127, 128, 129,
+ 136, 138, 140, 144, 149, 152, 97, 26, 125, 26,
+ 50, 98, 126, 150, 98, 150, 125, 48, 98, 126,
+ 151, 139, 143, 51, 130, 46, 47, 48, 49, 126,
+ 137, 141, 51, 20, 126, 56, 57, 17, 18, 19,
+ 26, 33, 26, 26, 126, 126, 137, 132, 126, 126,
+ 126, 126, 126, 126, 126, 131, 145, 126, 126, 126,
+ 27, 29, 103, 126, 153, 154, 155, 156, 0, 97,
+ 126, 43, 65, 126, 109, 115, 120, 126, 129, 149,
63, 64, 65, 66, 67, 68, 70, 73, 74, 75,
- 89, 90, 91, 92, 93, 94, 95, 120, 98, 125,
- 125, 149, 100, 149, 124, 149, 100, 149, 120, 26,
- 132, 125, 46, 136, 26, 26, 44, 71, 72, 26,
- 54, 65, 124, 124, 54, 65, 54, 53, 56, 136,
- 26, 134, 48, 54, 48, 54, 48, 54, 48, 54,
- 81, 82, 54, 97, 26, 133, 26, 99, 103, 103,
- 102, 100, 100, 105, 121, 120, 120, 121, 121, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 26, 145, 99,
- 125, 99, 99, 125, 145, 100, 125, 141, 124, 26,
- 127, 125, 125, 125, 125, 54, 65, 48, 125, 125,
- 125, 125, 100, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 111, 111, 100, 124, 124, 125, 27,
- 29, 155, 122, 125, 125, 53, 121, 97, 100, 97,
- 26, 120, 44, 125, 125, 26, 26, 48, 48, 48,
- 48, 108, 122, 26, 97, 110, 121, 121, 121, 122,
- 53, 147, 26, 147, 145, 125, 124, 125, 125, 125,
- 125, 121, 121, 87, 122, 35, 54, 121, 108, 122,
- 122, 97, 54, 88, 121, 54, 125, 113, 121, 30,
- 147, 125, 87, 125, 121, 36, 37, 114, 119, 121,
- 36, 86, 26, 146, 122, 121, 122, 120, 125, 86,
- 120, 100, 122, 121, 122, 121, 108, 26, 121, 87,
- 121, 53, 121, 87, 86, 122, 86, 121
+ 89, 90, 91, 92, 93, 94, 95, 121, 98, 126,
+ 126, 150, 100, 150, 125, 150, 100, 150, 121, 26,
+ 133, 126, 46, 137, 26, 26, 44, 71, 72, 26,
+ 54, 65, 125, 125, 54, 65, 54, 53, 56, 137,
+ 26, 135, 48, 54, 48, 54, 48, 54, 48, 54,
+ 81, 82, 54, 97, 26, 134, 26, 99, 103, 103,
+ 102, 100, 100, 105, 122, 121, 121, 118, 122, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 26, 146, 99,
+ 126, 99, 99, 126, 146, 100, 126, 142, 125, 26,
+ 128, 126, 126, 126, 126, 54, 65, 48, 126, 126,
+ 126, 126, 100, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 111, 111, 100, 125, 125, 126, 27,
+ 29, 156, 123, 126, 126, 53, 118, 97, 100, 97,
+ 26, 121, 44, 126, 126, 26, 26, 48, 48, 48,
+ 48, 108, 123, 26, 97, 110, 122, 122, 122, 123,
+ 53, 148, 26, 148, 146, 126, 125, 126, 126, 126,
+ 126, 122, 122, 87, 123, 35, 54, 119, 108, 123,
+ 123, 97, 54, 88, 122, 54, 126, 113, 119, 121,
+ 30, 148, 126, 87, 126, 122, 36, 37, 114, 121,
+ 36, 86, 26, 147, 123, 122, 123, 121, 126, 86,
+ 121, 100, 123, 122, 123, 118, 108, 26, 122, 87,
+ 121, 53, 121, 87, 86, 123, 86, 119
};
/* YYR1YYN -- Symbol number of symbol that rule YYN derives. */
@@ -1574,19 +1575,19 @@ static const yytype_uint8 yyr1[] =
108, 108, 108, 109, 109, 109, 109, 110, 110, 110,
110, 110, 110, 110, 110, 110, 110, 111, 112, 112,
113, 113, 114, 115, 115, 116, 117, 118, 119, 120,
- 121, 122, 122, 122, 123, 124, 124, 124, 124, 124,
- 124, 124, 124, 124, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 126, 126, 126, 126,
- 126, 126, 126, 126, 127, 127, 128, 128, 128, 128,
- 128, 129, 128, 130, 128, 131, 128, 128, 128, 128,
- 128, 132, 132, 133, 133, 134, 134, 135, 135, 135,
- 135, 135, 135, 136, 136, 137, 137, 137, 138, 137,
- 140, 141, 139, 139, 142, 139, 139, 139, 144, 143,
- 145, 145, 145, 146, 146, 146, 147, 148, 149, 149,
- 149, 150, 150, 151, 152, 152, 152, 152, 153, 153,
- 154, 154, 155, 155
+ 121, 122, 123, 123, 123, 124, 125, 125, 125, 125,
+ 125, 125, 125, 125, 125, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 126, 126, 126, 126, 126, 127, 127, 127,
+ 127, 127, 127, 127, 127, 128, 128, 129, 129, 129,
+ 129, 129, 130, 129, 131, 129, 132, 129, 129, 129,
+ 129, 129, 133, 133, 134, 134, 135, 135, 136, 136,
+ 136, 136, 136, 136, 137, 137, 138, 138, 138, 139,
+ 138, 141, 142, 140, 140, 143, 140, 140, 140, 145,
+ 144, 146, 146, 146, 147, 147, 147, 148, 149, 150,
+ 150, 150, 151, 151, 152, 153, 153, 153, 153, 154,
+ 154, 155, 155, 156, 156
};
/* YYR2YYN -- Number of symbols on the right hand side of rule YYN. */
@@ -1596,20 +1597,20 @@ static const yytype_int8 yyr2[] =
4, 4, 4, 4, 4, 4, 5, 5, 8, 4,
1, 1, 1, 1, 1, 1, 1, 1, 1, 6,
11, 12, 8, 2, 3, 7, 6, 0, 9, 12,
- 0, 2, 6, 11, 7, 2, 3, 1, 1, 0,
- 0, 0, 2, 2, 3, 1, 1, 1, 1, 1,
- 1, 3, 1, 2, 1, 1, 4, 2, 4, 3,
- 2, 1, 1, 1, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 2, 3, 3,
- 3, 3, 2, 2, 4, 4, 4, 6, 4, 6,
- 4, 6, 4, 6, 2, 1, 2, 1, 1, 2,
- 1, 0, 3, 0, 3, 0, 3, 4, 2, 4,
- 2, 1, 3, 1, 3, 1, 3, 1, 2, 2,
- 2, 3, 2, 3, 2, 2, 3, 2, 0, 3,
- 0, 0, 9, 2, 0, 7, 8, 6, 0, 3,
- 0, 1, 3, 0, 1, 3, 0, 2, 0, 1,
- 3, 1, 3, 3, 0, 1, 1, 1, 1, 3,
- 1, 3, 3, 3
+ 0, 2, 6, 11, 7, 2, 3, 0, 0, 1,
+ 0, 0, 0, 2, 2, 3, 1, 1, 1, 1,
+ 1, 1, 3, 1, 2, 1, 1, 4, 2, 4,
+ 3, 2, 1, 1, 1, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 2, 3,
+ 3, 3, 3, 2, 2, 4, 4, 4, 6, 4,
+ 6, 4, 6, 4, 6, 2, 1, 2, 1, 1,
+ 2, 1, 0, 3, 0, 3, 0, 3, 4, 2,
+ 4, 2, 1, 3, 1, 3, 1, 3, 1, 2,
+ 2, 2, 3, 2, 3, 2, 2, 3, 2, 0,
+ 3, 0, 0, 9, 2, 0, 7, 8, 6, 0,
+ 3, 0, 1, 3, 0, 1, 3, 0, 2, 0,
+ 1, 3, 1, 3, 3, 0, 1, 1, 1, 1,
+ 3, 1, 3, 3, 3
};
@@ -1883,79 +1884,79 @@ yydestruct (const char *yymsg,
case 22: /* BLTIN */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1887 "engines/director/lingo/lingo-gr.cpp"
+#line 1888 "engines/director/lingo/lingo-gr.cpp"
break;
case 23: /* FBLTIN */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1893 "engines/director/lingo/lingo-gr.cpp"
+#line 1894 "engines/director/lingo/lingo-gr.cpp"
break;
case 24: /* RBLTIN */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1899 "engines/director/lingo/lingo-gr.cpp"
+#line 1900 "engines/director/lingo/lingo-gr.cpp"
break;
case 25: /* THEFBLTIN */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1905 "engines/director/lingo/lingo-gr.cpp"
+#line 1906 "engines/director/lingo/lingo-gr.cpp"
break;
case 26: /* ID */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1911 "engines/director/lingo/lingo-gr.cpp"
+#line 1912 "engines/director/lingo/lingo-gr.cpp"
break;
case 27: /* STRING */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1917 "engines/director/lingo/lingo-gr.cpp"
+#line 1918 "engines/director/lingo/lingo-gr.cpp"
break;
case 28: /* HANDLER */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1923 "engines/director/lingo/lingo-gr.cpp"
+#line 1924 "engines/director/lingo/lingo-gr.cpp"
break;
case 29: /* SYMBOL */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1929 "engines/director/lingo/lingo-gr.cpp"
+#line 1930 "engines/director/lingo/lingo-gr.cpp"
break;
case 30: /* ENDCLAUSE */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1935 "engines/director/lingo/lingo-gr.cpp"
+#line 1936 "engines/director/lingo/lingo-gr.cpp"
break;
case 31: /* tPLAYACCEL */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1941 "engines/director/lingo/lingo-gr.cpp"
+#line 1942 "engines/director/lingo/lingo-gr.cpp"
break;
case 32: /* tMETHOD */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1947 "engines/director/lingo/lingo-gr.cpp"
+#line 1948 "engines/director/lingo/lingo-gr.cpp"
break;
case 33: /* THEOBJECTFIELD */
#line 161 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).objectfield).os; }
-#line 1953 "engines/director/lingo/lingo-gr.cpp"
+#line 1954 "engines/director/lingo/lingo-gr.cpp"
break;
- case 143: /* on */
+ case 144: /* on */
#line 160 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 1959 "engines/director/lingo/lingo-gr.cpp"
+#line 1960 "engines/director/lingo/lingo-gr.cpp"
break;
default:
@@ -2241,7 +2242,7 @@ yyreduce:
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[-2].code);
delete (yyvsp[0].s); }
-#line 2245 "engines/director/lingo/lingo-gr.cpp"
+#line 2246 "engines/director/lingo/lingo-gr.cpp"
break;
case 8:
@@ -2249,7 +2250,7 @@ yyreduce:
{
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[-2].code); }
-#line 2253 "engines/director/lingo/lingo-gr.cpp"
+#line 2254 "engines/director/lingo/lingo-gr.cpp"
break;
case 9:
@@ -2265,19 +2266,19 @@ yyreduce:
g_lingo->codeInt((yyvsp[-4].e)[1]);
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[0].code); }
-#line 2269 "engines/director/lingo/lingo-gr.cpp"
+#line 2270 "engines/director/lingo/lingo-gr.cpp"
break;
case 10:
#line 193 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2275 "engines/director/lingo/lingo-gr.cpp"
+#line 2276 "engines/director/lingo/lingo-gr.cpp"
break;
case 11:
#line 194 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2281 "engines/director/lingo/lingo-gr.cpp"
+#line 2282 "engines/director/lingo/lingo-gr.cpp"
break;
case 12:
@@ -2288,7 +2289,7 @@ yyreduce:
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[0].code);
delete (yyvsp[-2].s); }
-#line 2292 "engines/director/lingo/lingo-gr.cpp"
+#line 2293 "engines/director/lingo/lingo-gr.cpp"
break;
case 13:
@@ -2300,7 +2301,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-2].e)[0]);
g_lingo->codeInt((yyvsp[-2].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2304 "engines/director/lingo/lingo-gr.cpp"
+#line 2305 "engines/director/lingo/lingo-gr.cpp"
break;
case 14:
@@ -2311,7 +2312,7 @@ yyreduce:
g_lingo->code1(LC::c_assign);
(yyval.code) = (yyvsp[0].code);
delete (yyvsp[-2].s); }
-#line 2315 "engines/director/lingo/lingo-gr.cpp"
+#line 2316 "engines/director/lingo/lingo-gr.cpp"
break;
case 15:
@@ -2323,7 +2324,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-2].e)[0]);
g_lingo->codeInt((yyvsp[-2].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2327 "engines/director/lingo/lingo-gr.cpp"
+#line 2328 "engines/director/lingo/lingo-gr.cpp"
break;
case 16:
@@ -2334,7 +2335,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-3].e)[0]);
g_lingo->codeInt((yyvsp[-3].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2338 "engines/director/lingo/lingo-gr.cpp"
+#line 2339 "engines/director/lingo/lingo-gr.cpp"
break;
case 17:
@@ -2345,7 +2346,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-3].e)[0]);
g_lingo->codeInt((yyvsp[-3].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2349 "engines/director/lingo/lingo-gr.cpp"
+#line 2350 "engines/director/lingo/lingo-gr.cpp"
break;
case 18:
@@ -2361,7 +2362,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-6].e)[0]);
g_lingo->codeInt((yyvsp[-6].e)[1]);
(yyval.code) = (yyvsp[0].code); }
-#line 2365 "engines/director/lingo/lingo-gr.cpp"
+#line 2366 "engines/director/lingo/lingo-gr.cpp"
break;
case 19:
@@ -2372,7 +2373,7 @@ yyreduce:
g_lingo->codeInt((yyvsp[-2].objectfield).oe);
delete (yyvsp[-2].objectfield).os;
(yyval.code) = (yyvsp[0].code); }
-#line 2376 "engines/director/lingo/lingo-gr.cpp"
+#line 2377 "engines/director/lingo/lingo-gr.cpp"
break;
case 29:
@@ -2383,7 +2384,7 @@ yyreduce:
WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body; /* body of loop */
(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2387 "engines/director/lingo/lingo-gr.cpp"
+#line 2388 "engines/director/lingo/lingo-gr.cpp"
break;
case 30:
@@ -2400,7 +2401,7 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body; /* body of loop */
(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc; /* increment */
(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2404 "engines/director/lingo/lingo-gr.cpp"
+#line 2405 "engines/director/lingo/lingo-gr.cpp"
break;
case 31:
@@ -2417,7 +2418,7 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = body; /* body of loop */
(*g_lingo->_currentScript)[(yyvsp[-11].code) + 4] = inc; /* increment */
(*g_lingo->_currentScript)[(yyvsp[-11].code) + 5] = end; }
-#line 2421 "engines/director/lingo/lingo-gr.cpp"
+#line 2422 "engines/director/lingo/lingo-gr.cpp"
break;
case 32:
@@ -2432,14 +2433,14 @@ yyreduce:
(*g_lingo->_currentScript)[(yyvsp[-7].code) + 3] = body; /* body of loop */
(*g_lingo->_currentScript)[(yyvsp[-7].code) + 4] = 0; /* increment */
(*g_lingo->_currentScript)[(yyvsp[-7].code) + 5] = end; }
-#line 2436 "engines/director/lingo/lingo-gr.cpp"
+#line 2437 "engines/director/lingo/lingo-gr.cpp"
break;
case 33:
#line 318 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_nextRepeat); }
-#line 2443 "engines/director/lingo/lingo-gr.cpp"
+#line 2444 "engines/director/lingo/lingo-gr.cpp"
break;
case 34:
@@ -2449,7 +2450,7 @@ yyreduce:
WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
g_lingo->code1(STOP);
(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2453 "engines/director/lingo/lingo-gr.cpp"
+#line 2454 "engines/director/lingo/lingo-gr.cpp"
break;
case 35:
@@ -2458,7 +2459,7 @@ yyreduce:
inst end;
WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2462 "engines/director/lingo/lingo-gr.cpp"
+#line 2463 "engines/director/lingo/lingo-gr.cpp"
break;
case 36:
@@ -2467,7 +2468,7 @@ yyreduce:
inst end;
WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2471 "engines/director/lingo/lingo-gr.cpp"
+#line 2472 "engines/director/lingo/lingo-gr.cpp"
break;
case 37:
@@ -2475,190 +2476,176 @@ yyreduce:
{
(yyval.code) = g_lingo->code1(LC::c_tellcode);
g_lingo->code1(STOP); }
-#line 2479 "engines/director/lingo/lingo-gr.cpp"
+#line 2480 "engines/director/lingo/lingo-gr.cpp"
break;
case 38:
#line 338 "engines/director/lingo/lingo-gr.y"
- {
- inst then = 0, else1 = 0, end = 0;
- WRITE_UINT32(&then, (yyvsp[-6].code) - (yyvsp[-8].code));
- WRITE_UINT32(&else1, (yyvsp[-3].code) - (yyvsp[-8].code));
- WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-8].code));
- (*g_lingo->_currentScript)[(yyvsp[-8].code) + 1] = then; /* thenpart */
- (*g_lingo->_currentScript)[(yyvsp[-8].code) + 2] = else1;/* elsepart */
- (*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end; /* end, if cond fails */
-
- g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2494 "engines/director/lingo/lingo-gr.cpp"
+ {
+ inst else1 = 0, end3 = 0;
+ WRITE_UINT32(&else1, (yyvsp[-3].narg) + 1);
+ WRITE_UINT32(&end3, (yyvsp[-1].code));
+ (*g_lingo->_currentScript)[(yyvsp[-6].narg)] = else1; /* elsepart */
+ (*g_lingo->_currentScript)[(yyvsp[-3].narg)] = end3; /* end, if cond fails */
+ g_lingo->processIf((yyvsp[-3].narg), (yyvsp[-1].code)); }
+#line 2492 "engines/director/lingo/lingo-gr.cpp"
break;
case 39:
-#line 348 "engines/director/lingo/lingo-gr.y"
- {
- inst then = 0, else1 = 0, end = 0;
- WRITE_UINT32(&then, (yyvsp[-9].code) - (yyvsp[-11].code));
- WRITE_UINT32(&else1, (yyvsp[-6].code) - (yyvsp[-11].code));
- WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-11].code));
- (*g_lingo->_currentScript)[(yyvsp[-11].code) + 1] = then; /* thenpart */
- (*g_lingo->_currentScript)[(yyvsp[-11].code) + 2] = else1;/* elsepart */
- (*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end; /* end, if cond fails */
-
- g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2509 "engines/director/lingo/lingo-gr.cpp"
+#line 345 "engines/director/lingo/lingo-gr.y"
+ {
+ inst else1 = 0, end = 0;
+ WRITE_UINT32(&else1, (yyvsp[-6].narg) +1);
+ WRITE_UINT32(&end, (yyvsp[-1].code));
+ (*g_lingo->_currentScript)[(yyvsp[-9].narg)] = else1; /* elsepart */
+ (*g_lingo->_currentScript)[(yyvsp[-6].narg)] = end; /* end, if cond fails */
+ g_lingo->processIf((yyvsp[-6].narg), (yyvsp[-1].code)); }
+#line 2504 "engines/director/lingo/lingo-gr.cpp"
break;
case 42:
-#line 362 "engines/director/lingo/lingo-gr.y"
- {
- inst then = 0;
- WRITE_UINT32(&then, (yyvsp[-3].code) - (yyvsp[-5].code));
- (*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then; /* thenpart */
-
- g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2520 "engines/director/lingo/lingo-gr.cpp"
+#line 356 "engines/director/lingo/lingo-gr.y"
+ {
+ inst else1 = 0;
+ WRITE_UINT32(&else1, (yyvsp[0].narg) + 1);
+ (*g_lingo->_currentScript)[(yyvsp[-3].narg)] = else1; /* end, if cond fails */
+ g_lingo->codeLabel((yyvsp[0].narg)); }
+#line 2514 "engines/director/lingo/lingo-gr.cpp"
break;
case 43:
-#line 369 "engines/director/lingo/lingo-gr.y"
- {
- inst then = 0, else1 = 0, end = 0;
- WRITE_UINT32(&then, (yyvsp[-8].code) - (yyvsp[-10].code));
- WRITE_UINT32(&else1, (yyvsp[-5].code) - (yyvsp[-10].code));
- WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-10].code));
- (*g_lingo->_currentScript)[(yyvsp[-10].code) + 1] = then; /* thenpart */
- (*g_lingo->_currentScript)[(yyvsp[-10].code) + 2] = else1;/* elsepart */
- (*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end; /* end, if cond fails */
-
- g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2535 "engines/director/lingo/lingo-gr.cpp"
+#line 362 "engines/director/lingo/lingo-gr.y"
+ {
+ inst else1 = 0, end = 0;
+ WRITE_UINT32(&else1, (yyvsp[-5].narg) + 1);
+ WRITE_UINT32(&end, (yyvsp[-1].code));
+ (*g_lingo->_currentScript)[(yyvsp[-8].narg)] = else1; /* elsepart */
+ (*g_lingo->_currentScript)[(yyvsp[-5].narg)] = end; }
+#line 2525 "engines/director/lingo/lingo-gr.cpp"
break;
case 44:
-#line 379 "engines/director/lingo/lingo-gr.y"
- {
- inst then = 0, else1 = 0, end = 0;
- WRITE_UINT32(&then, (yyvsp[-4].code) - (yyvsp[-6].code));
- WRITE_UINT32(&else1, 0);
- WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-6].code));
- (*g_lingo->_currentScript)[(yyvsp[-6].code) + 1] = then; /* thenpart */
- (*g_lingo->_currentScript)[(yyvsp[-6].code) + 2] = else1;/* elsepart */
- (*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end; /* end, if cond fails */
+#line 368 "engines/director/lingo/lingo-gr.y"
+ {
+ inst end = 0;
+ WRITE_UINT32(&end, (yyvsp[-1].code));
- g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2550 "engines/director/lingo/lingo-gr.cpp"
+ (*g_lingo->_currentScript)[(yyvsp[-4].narg)] = end; }
+#line 2535 "engines/director/lingo/lingo-gr.cpp"
break;
case 45:
-#line 390 "engines/director/lingo/lingo-gr.y"
+#line 374 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2556 "engines/director/lingo/lingo-gr.cpp"
+#line 2541 "engines/director/lingo/lingo-gr.cpp"
break;
case 46:
-#line 392 "engines/director/lingo/lingo-gr.y"
+#line 376 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code3(LC::c_repeatwithcode, STOP, STOP);
g_lingo->code3(STOP, STOP, STOP);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2566 "engines/director/lingo/lingo-gr.cpp"
+#line 2551 "engines/director/lingo/lingo-gr.cpp"
break;
case 47:
-#line 398 "engines/director/lingo/lingo-gr.y"
- {
- (yyval.code) = g_lingo->code1(LC::c_ifcode);
- g_lingo->code3(STOP, STOP, STOP);
- g_lingo->code1(0); // Do not skip end
- g_lingo->codeLabel(0); }
-#line 2576 "engines/director/lingo/lingo-gr.cpp"
+#line 382 "engines/director/lingo/lingo-gr.y"
+ {
+ g_lingo->code2(LC::c_jumpifz, STOP);
+ (yyval.narg) = g_lingo->_currentScript->size() - 1; }
+#line 2559 "engines/director/lingo/lingo-gr.cpp"
break;
case 48:
-#line 404 "engines/director/lingo/lingo-gr.y"
- {
- inst skipEnd;
- WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
- (yyval.code) = g_lingo->code1(LC::c_ifcode);
- g_lingo->code3(STOP, STOP, STOP);
- g_lingo->code1(skipEnd); }
-#line 2587 "engines/director/lingo/lingo-gr.cpp"
+#line 386 "engines/director/lingo/lingo-gr.y"
+ {
+ g_lingo->code2(LC::c_jump, STOP);
+ (yyval.narg) = g_lingo->_currentScript->size() - 1; }
+#line 2567 "engines/director/lingo/lingo-gr.cpp"
break;
case 49:
-#line 411 "engines/director/lingo/lingo-gr.y"
- { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2593 "engines/director/lingo/lingo-gr.cpp"
+#line 390 "engines/director/lingo/lingo-gr.y"
+ {
+ g_lingo->codeLabel(0); }
+#line 2574 "engines/director/lingo/lingo-gr.cpp"
break;
case 50:
-#line 413 "engines/director/lingo/lingo-gr.y"
- { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2599 "engines/director/lingo/lingo-gr.cpp"
+#line 393 "engines/director/lingo/lingo-gr.y"
+ { (yyval.code) = g_lingo->_currentScript->size(); }
+#line 2580 "engines/director/lingo/lingo-gr.cpp"
break;
case 51:
-#line 415 "engines/director/lingo/lingo-gr.y"
+#line 395 "engines/director/lingo/lingo-gr.y"
+ { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
+#line 2586 "engines/director/lingo/lingo-gr.cpp"
+ break;
+
+ case 52:
+#line 397 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2605 "engines/director/lingo/lingo-gr.cpp"
+#line 2592 "engines/director/lingo/lingo-gr.cpp"
break;
- case 54:
-#line 419 "engines/director/lingo/lingo-gr.y"
+ case 55:
+#line 401 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_whencode);
g_lingo->code1(STOP);
g_lingo->codeString((yyvsp[-1].s)->c_str());
delete (yyvsp[-1].s); }
-#line 2615 "engines/director/lingo/lingo-gr.cpp"
+#line 2602 "engines/director/lingo/lingo-gr.cpp"
break;
- case 55:
-#line 425 "engines/director/lingo/lingo-gr.y"
+ case 56:
+#line 407 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_intpush);
g_lingo->codeInt((yyvsp[0].i)); }
-#line 2623 "engines/director/lingo/lingo-gr.cpp"
+#line 2610 "engines/director/lingo/lingo-gr.cpp"
break;
- case 56:
-#line 428 "engines/director/lingo/lingo-gr.y"
+ case 57:
+#line 410 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_floatpush);
g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2631 "engines/director/lingo/lingo-gr.cpp"
+#line 2618 "engines/director/lingo/lingo-gr.cpp"
break;
- case 57:
-#line 431 "engines/director/lingo/lingo-gr.y"
+ case 58:
+#line 413 "engines/director/lingo/lingo-gr.y"
{ // D3
(yyval.code) = g_lingo->code1(LC::c_symbolpush);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2640 "engines/director/lingo/lingo-gr.cpp"
+#line 2627 "engines/director/lingo/lingo-gr.cpp"
break;
- case 58:
-#line 435 "engines/director/lingo/lingo-gr.y"
+ case 59:
+#line 417 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_stringpush);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2649 "engines/director/lingo/lingo-gr.cpp"
+#line 2636 "engines/director/lingo/lingo-gr.cpp"
break;
- case 59:
-#line 439 "engines/director/lingo/lingo-gr.y"
+ case 60:
+#line 421 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_eval);
g_lingo->codeString((yyvsp[0].s)->c_str());
delete (yyvsp[0].s); }
-#line 2658 "engines/director/lingo/lingo-gr.cpp"
+#line 2645 "engines/director/lingo/lingo-gr.cpp"
break;
- case 60:
-#line 443 "engines/director/lingo/lingo-gr.y"
+ case 61:
+#line 425 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(0); // Put dummy id
@@ -2667,17 +2654,17 @@ yyreduce:
WRITE_UINT32(&e, (yyvsp[0].e)[0]);
WRITE_UINT32(&f, (yyvsp[0].e)[1]);
g_lingo->code2(e, f); }
-#line 2671 "engines/director/lingo/lingo-gr.cpp"
+#line 2658 "engines/director/lingo/lingo-gr.cpp"
break;
- case 61:
-#line 451 "engines/director/lingo/lingo-gr.y"
+ case 62:
+#line 433 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[-1].code); }
-#line 2677 "engines/director/lingo/lingo-gr.cpp"
+#line 2664 "engines/director/lingo/lingo-gr.cpp"
break;
- case 63:
-#line 453 "engines/director/lingo/lingo-gr.y"
+ case 64:
+#line 435 "engines/director/lingo/lingo-gr.y"
{
// Director parser till D3 was forgiving for any hanging parentheses
if (g_lingo->_ignoreError) {
@@ -2688,542 +2675,542 @@ yyreduce:
yyerrok;
}
}
-#line 2692 "engines/director/lingo/lingo-gr.cpp"
+#line 2679 "engines/director/lingo/lingo-gr.cpp"
break;
- case 64:
-#line 464 "engines/director/lingo/lingo-gr.y"
+ case 65:
+#line 446 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[0].code); }
-#line 2698 "engines/director/lingo/lingo-gr.cpp"
+#line 2685 "engines/director/lingo/lingo-gr.cpp"
break;
- case 66:
-#line 466 "engines/director/lingo/lingo-gr.y"
+ case 67:
+#line 448 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
delete (yyvsp[-3].s); }
-#line 2706 "engines/director/lingo/lingo-gr.cpp"
+#line 2693 "engines/director/lingo/lingo-gr.cpp"
break;
- case 67:
-#line 469 "engines/director/lingo/lingo-gr.y"
+ case 68:
+#line 451 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
delete (yyvsp[-1].s); }
-#line 2714 "engines/director/lingo/lingo-gr.cpp"
+#line 2701 "engines/director/lingo/lingo-gr.cpp"
break;
- case 68:
-#line 472 "engines/director/lingo/lingo-gr.y"
+ case 69:
+#line 454 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
delete (yyvsp[-3].s); }
-#line 2722 "engines/director/lingo/lingo-gr.cpp"
+#line 2709 "engines/director/lingo/lingo-gr.cpp"
break;
- case 69:
-#line 475 "engines/director/lingo/lingo-gr.y"
+ case 70:
+#line 457 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
delete (yyvsp[-2].s); }
-#line 2730 "engines/director/lingo/lingo-gr.cpp"
+#line 2717 "engines/director/lingo/lingo-gr.cpp"
break;
- case 70:
-#line 478 "engines/director/lingo/lingo-gr.y"
+ case 71:
+#line 460 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(LC::c_theentitypush);
inst e = 0, f = 0;
WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
g_lingo->code2(e, f); }
-#line 2741 "engines/director/lingo/lingo-gr.cpp"
+#line 2728 "engines/director/lingo/lingo-gr.cpp"
break;
- case 71:
-#line 484 "engines/director/lingo/lingo-gr.y"
+ case 72:
+#line 466 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_objectfieldpush);
g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
g_lingo->codeInt((yyvsp[0].objectfield).oe);
delete (yyvsp[0].objectfield).os; }
-#line 2751 "engines/director/lingo/lingo-gr.cpp"
+#line 2738 "engines/director/lingo/lingo-gr.cpp"
break;
- case 72:
-#line 489 "engines/director/lingo/lingo-gr.y"
+ case 73:
+#line 471 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_objectrefpush);
g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
g_lingo->codeString((yyvsp[0].objectref).field->c_str());
delete (yyvsp[0].objectref).obj;
delete (yyvsp[0].objectref).field; }
-#line 2762 "engines/director/lingo/lingo-gr.cpp"
+#line 2749 "engines/director/lingo/lingo-gr.cpp"
break;
- case 74:
-#line 496 "engines/director/lingo/lingo-gr.y"
+ case 75:
+#line 478 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_add); }
-#line 2768 "engines/director/lingo/lingo-gr.cpp"
+#line 2755 "engines/director/lingo/lingo-gr.cpp"
break;
- case 75:
-#line 497 "engines/director/lingo/lingo-gr.y"
+ case 76:
+#line 479 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_sub); }
-#line 2774 "engines/director/lingo/lingo-gr.cpp"
+#line 2761 "engines/director/lingo/lingo-gr.cpp"
break;
- case 76:
-#line 498 "engines/director/lingo/lingo-gr.y"
+ case 77:
+#line 480 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_mul); }
-#line 2780 "engines/director/lingo/lingo-gr.cpp"
+#line 2767 "engines/director/lingo/lingo-gr.cpp"
break;
- case 77:
-#line 499 "engines/director/lingo/lingo-gr.y"
+ case 78:
+#line 481 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_div); }
-#line 2786 "engines/director/lingo/lingo-gr.cpp"
+#line 2773 "engines/director/lingo/lingo-gr.cpp"
break;
- case 78:
-#line 500 "engines/director/lingo/lingo-gr.y"
+ case 79:
+#line 482 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_mod); }
-#line 2792 "engines/director/lingo/lingo-gr.cpp"
+#line 2779 "engines/director/lingo/lingo-gr.cpp"
break;
- case 79:
-#line 501 "engines/director/lingo/lingo-gr.y"
+ case 80:
+#line 483 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gt); }
-#line 2798 "engines/director/lingo/lingo-gr.cpp"
+#line 2785 "engines/director/lingo/lingo-gr.cpp"
break;
- case 80:
-#line 502 "engines/director/lingo/lingo-gr.y"
+ case 81:
+#line 484 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_lt); }
-#line 2804 "engines/director/lingo/lingo-gr.cpp"
+#line 2791 "engines/director/lingo/lingo-gr.cpp"
break;
- case 81:
-#line 503 "engines/director/lingo/lingo-gr.y"
+ case 82:
+#line 485 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_eq); }
-#line 2810 "engines/director/lingo/lingo-gr.cpp"
+#line 2797 "engines/director/lingo/lingo-gr.cpp"
break;
- case 82:
-#line 504 "engines/director/lingo/lingo-gr.y"
+ case 83:
+#line 486 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_neq); }
-#line 2816 "engines/director/lingo/lingo-gr.cpp"
+#line 2803 "engines/director/lingo/lingo-gr.cpp"
break;
- case 83:
-#line 505 "engines/director/lingo/lingo-gr.y"
+ case 84:
+#line 487 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_ge); }
-#line 2822 "engines/director/lingo/lingo-gr.cpp"
+#line 2809 "engines/director/lingo/lingo-gr.cpp"
break;
- case 84:
-#line 506 "engines/director/lingo/lingo-gr.y"
+ case 85:
+#line 488 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_le); }
-#line 2828 "engines/director/lingo/lingo-gr.cpp"
+#line 2815 "engines/director/lingo/lingo-gr.cpp"
break;
- case 85:
-#line 507 "engines/director/lingo/lingo-gr.y"
+ case 86:
+#line 489 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_and); }
-#line 2834 "engines/director/lingo/lingo-gr.cpp"
+#line 2821 "engines/director/lingo/lingo-gr.cpp"
break;
- case 86:
-#line 508 "engines/director/lingo/lingo-gr.y"
+ case 87:
+#line 490 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_or); }
-#line 2840 "engines/director/lingo/lingo-gr.cpp"
+#line 2827 "engines/director/lingo/lingo-gr.cpp"
break;
- case 87:
-#line 509 "engines/director/lingo/lingo-gr.y"
+ case 88:
+#line 491 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_not); }
-#line 2846 "engines/director/lingo/lingo-gr.cpp"
+#line 2833 "engines/director/lingo/lingo-gr.cpp"
break;
- case 88:
-#line 510 "engines/director/lingo/lingo-gr.y"
+ case 89:
+#line 492 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_ampersand); }
-#line 2852 "engines/director/lingo/lingo-gr.cpp"
+#line 2839 "engines/director/lingo/lingo-gr.cpp"
break;
- case 89:
-#line 511 "engines/director/lingo/lingo-gr.y"
+ case 90:
+#line 493 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_concat); }
-#line 2858 "engines/director/lingo/lingo-gr.cpp"
+#line 2845 "engines/director/lingo/lingo-gr.cpp"
break;
- case 90:
-#line 512 "engines/director/lingo/lingo-gr.y"
+ case 91:
+#line 494 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_contains); }
-#line 2864 "engines/director/lingo/lingo-gr.cpp"
+#line 2851 "engines/director/lingo/lingo-gr.cpp"
break;
- case 91:
-#line 513 "engines/director/lingo/lingo-gr.y"
+ case 92:
+#line 495 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_starts); }
-#line 2870 "engines/director/lingo/lingo-gr.cpp"
+#line 2857 "engines/director/lingo/lingo-gr.cpp"
break;
- case 92:
-#line 514 "engines/director/lingo/lingo-gr.y"
+ case 93:
+#line 496 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[0].code); }
-#line 2876 "engines/director/lingo/lingo-gr.cpp"
+#line 2863 "engines/director/lingo/lingo-gr.cpp"
break;
- case 93:
-#line 515 "engines/director/lingo/lingo-gr.y"
+ case 94:
+#line 497 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2882 "engines/director/lingo/lingo-gr.cpp"
+#line 2869 "engines/director/lingo/lingo-gr.cpp"
break;
- case 94:
-#line 516 "engines/director/lingo/lingo-gr.y"
+ case 95:
+#line 498 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_intersects); }
-#line 2888 "engines/director/lingo/lingo-gr.cpp"
+#line 2875 "engines/director/lingo/lingo-gr.cpp"
break;
- case 95:
-#line 517 "engines/director/lingo/lingo-gr.y"
+ case 96:
+#line 499 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_within); }
-#line 2894 "engines/director/lingo/lingo-gr.cpp"
+#line 2881 "engines/director/lingo/lingo-gr.cpp"
break;
- case 96:
-#line 519 "engines/director/lingo/lingo-gr.y"
+ case 97:
+#line 501 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_charOf); }
-#line 2900 "engines/director/lingo/lingo-gr.cpp"
+#line 2887 "engines/director/lingo/lingo-gr.cpp"
break;
- case 97:
-#line 520 "engines/director/lingo/lingo-gr.y"
+ case 98:
+#line 502 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_charToOf); }
-#line 2906 "engines/director/lingo/lingo-gr.cpp"
+#line 2893 "engines/director/lingo/lingo-gr.cpp"
break;
- case 98:
-#line 521 "engines/director/lingo/lingo-gr.y"
+ case 99:
+#line 503 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_itemOf); }
-#line 2912 "engines/director/lingo/lingo-gr.cpp"
+#line 2899 "engines/director/lingo/lingo-gr.cpp"
break;
- case 99:
-#line 522 "engines/director/lingo/lingo-gr.y"
+ case 100:
+#line 504 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_itemToOf); }
-#line 2918 "engines/director/lingo/lingo-gr.cpp"
+#line 2905 "engines/director/lingo/lingo-gr.cpp"
break;
- case 100:
-#line 523 "engines/director/lingo/lingo-gr.y"
+ case 101:
+#line 505 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_lineOf); }
-#line 2924 "engines/director/lingo/lingo-gr.cpp"
+#line 2911 "engines/director/lingo/lingo-gr.cpp"
break;
- case 101:
-#line 524 "engines/director/lingo/lingo-gr.y"
+ case 102:
+#line 506 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_lineToOf); }
-#line 2930 "engines/director/lingo/lingo-gr.cpp"
+#line 2917 "engines/director/lingo/lingo-gr.cpp"
break;
- case 102:
-#line 525 "engines/director/lingo/lingo-gr.y"
+ case 103:
+#line 507 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_wordOf); }
-#line 2936 "engines/director/lingo/lingo-gr.cpp"
+#line 2923 "engines/director/lingo/lingo-gr.cpp"
break;
- case 103:
-#line 526 "engines/director/lingo/lingo-gr.y"
+ case 104:
+#line 508 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_wordToOf); }
-#line 2942 "engines/director/lingo/lingo-gr.cpp"
+#line 2929 "engines/director/lingo/lingo-gr.cpp"
break;
- case 104:
-#line 528 "engines/director/lingo/lingo-gr.y"
+ case 105:
+#line 510 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-1].s), 1);
delete (yyvsp[-1].s); }
-#line 2950 "engines/director/lingo/lingo-gr.cpp"
+#line 2937 "engines/director/lingo/lingo-gr.cpp"
break;
- case 106:
-#line 533 "engines/director/lingo/lingo-gr.y"
+ case 107:
+#line 515 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_printtop); }
-#line 2956 "engines/director/lingo/lingo-gr.cpp"
+#line 2943 "engines/director/lingo/lingo-gr.cpp"
break;
- case 109:
-#line 536 "engines/director/lingo/lingo-gr.y"
+ case 110:
+#line 518 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_exitRepeat); }
-#line 2962 "engines/director/lingo/lingo-gr.cpp"
+#line 2949 "engines/director/lingo/lingo-gr.cpp"
break;
- case 110:
-#line 537 "engines/director/lingo/lingo-gr.y"
+ case 111:
+#line 519 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_procret); }
-#line 2968 "engines/director/lingo/lingo-gr.cpp"
+#line 2955 "engines/director/lingo/lingo-gr.cpp"
break;
- case 111:
-#line 538 "engines/director/lingo/lingo-gr.y"
+ case 112:
+#line 520 "engines/director/lingo/lingo-gr.y"
{ inArgs(); }
-#line 2974 "engines/director/lingo/lingo-gr.cpp"
+#line 2961 "engines/director/lingo/lingo-gr.cpp"
break;
- case 112:
-#line 538 "engines/director/lingo/lingo-gr.y"
+ case 113:
+#line 520 "engines/director/lingo/lingo-gr.y"
{ inNone(); }
-#line 2980 "engines/director/lingo/lingo-gr.cpp"
+#line 2967 "engines/director/lingo/lingo-gr.cpp"
break;
- case 113:
-#line 539 "engines/director/lingo/lingo-gr.y"
+ case 114:
+#line 521 "engines/director/lingo/lingo-gr.y"
{ inArgs(); }
-#line 2986 "engines/director/lingo/lingo-gr.cpp"
+#line 2973 "engines/director/lingo/lingo-gr.cpp"
break;
- case 114:
-#line 539 "engines/director/lingo/lingo-gr.y"
+ case 115:
+#line 521 "engines/director/lingo/lingo-gr.y"
{ inNone(); }
-#line 2992 "engines/director/lingo/lingo-gr.cpp"
+#line 2979 "engines/director/lingo/lingo-gr.cpp"
break;
- case 115:
-#line 540 "engines/director/lingo/lingo-gr.y"
+ case 116:
+#line 522 "engines/director/lingo/lingo-gr.y"
{ inArgs(); }
-#line 2998 "engines/director/lingo/lingo-gr.cpp"
+#line 2985 "engines/director/lingo/lingo-gr.cpp"
break;
- case 116:
-#line 540 "engines/director/lingo/lingo-gr.y"
+ case 117:
+#line 522 "engines/director/lingo/lingo-gr.y"
{ inNone(); }
-#line 3004 "engines/director/lingo/lingo-gr.cpp"
+#line 2991 "engines/director/lingo/lingo-gr.cpp"
break;
- case 117:
-#line 541 "engines/director/lingo/lingo-gr.y"
+ case 118:
+#line 523 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
delete (yyvsp[-3].s); }
-#line 3012 "engines/director/lingo/lingo-gr.cpp"
+#line 2999 "engines/director/lingo/lingo-gr.cpp"
break;
- case 118:
-#line 544 "engines/director/lingo/lingo-gr.y"
+ case 119:
+#line 526 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
delete (yyvsp[-1].s); }
-#line 3020 "engines/director/lingo/lingo-gr.cpp"
+#line 3007 "engines/director/lingo/lingo-gr.cpp"
break;
- case 119:
-#line 547 "engines/director/lingo/lingo-gr.y"
+ case 120:
+#line 529 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_open); }
-#line 3026 "engines/director/lingo/lingo-gr.cpp"
+#line 3013 "engines/director/lingo/lingo-gr.cpp"
break;
- case 120:
-#line 548 "engines/director/lingo/lingo-gr.y"
+ case 121:
+#line 530 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3032 "engines/director/lingo/lingo-gr.cpp"
+#line 3019 "engines/director/lingo/lingo-gr.cpp"
break;
- case 121:
-#line 550 "engines/director/lingo/lingo-gr.y"
+ case 122:
+#line 532 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_global);
g_lingo->codeString((yyvsp[0].s)->c_str());
mArg((yyvsp[0].s));
delete (yyvsp[0].s); }
-#line 3042 "engines/director/lingo/lingo-gr.cpp"
+#line 3029 "engines/director/lingo/lingo-gr.cpp"
break;
- case 122:
-#line 555 "engines/director/lingo/lingo-gr.y"
+ case 123:
+#line 537 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_global);
g_lingo->codeString((yyvsp[0].s)->c_str());
mArg((yyvsp[0].s));
delete (yyvsp[0].s); }
-#line 3052 "engines/director/lingo/lingo-gr.cpp"
+#line 3039 "engines/director/lingo/lingo-gr.cpp"
break;
- case 123:
-#line 561 "engines/director/lingo/lingo-gr.y"
+ case 124:
+#line 543 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_property);
g_lingo->codeString((yyvsp[0].s)->c_str());
mArg((yyvsp[0].s));
delete (yyvsp[0].s); }
-#line 3062 "engines/director/lingo/lingo-gr.cpp"
+#line 3049 "engines/director/lingo/lingo-gr.cpp"
break;
- case 124:
-#line 566 "engines/director/lingo/lingo-gr.y"
+ case 125:
+#line 548 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_property);
g_lingo->codeString((yyvsp[0].s)->c_str());
mArg((yyvsp[0].s));
delete (yyvsp[0].s); }
-#line 3072 "engines/director/lingo/lingo-gr.cpp"
+#line 3059 "engines/director/lingo/lingo-gr.cpp"
break;
- case 125:
-#line 572 "engines/director/lingo/lingo-gr.y"
+ case 126:
+#line 554 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_instance);
g_lingo->codeString((yyvsp[0].s)->c_str());
mArg((yyvsp[0].s));
delete (yyvsp[0].s); }
-#line 3082 "engines/director/lingo/lingo-gr.cpp"
+#line 3069 "engines/director/lingo/lingo-gr.cpp"
break;
- case 126:
-#line 577 "engines/director/lingo/lingo-gr.y"
+ case 127:
+#line 559 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_instance);
g_lingo->codeString((yyvsp[0].s)->c_str());
mArg((yyvsp[0].s));
delete (yyvsp[0].s); }
-#line 3092 "engines/director/lingo/lingo-gr.cpp"
+#line 3079 "engines/director/lingo/lingo-gr.cpp"
break;
- case 127:
-#line 590 "engines/director/lingo/lingo-gr.y"
+ case 128:
+#line 572 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotoloop); }
-#line 3098 "engines/director/lingo/lingo-gr.cpp"
+#line 3085 "engines/director/lingo/lingo-gr.cpp"
break;
- case 128:
-#line 591 "engines/director/lingo/lingo-gr.y"
+ case 129:
+#line 573 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotonext); }
-#line 3104 "engines/director/lingo/lingo-gr.cpp"
+#line 3091 "engines/director/lingo/lingo-gr.cpp"
break;
- case 129:
-#line 592 "engines/director/lingo/lingo-gr.y"
+ case 130:
+#line 574 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(LC::c_gotoprevious); }
-#line 3110 "engines/director/lingo/lingo-gr.cpp"
+#line 3097 "engines/director/lingo/lingo-gr.cpp"
break;
- case 130:
-#line 593 "engines/director/lingo/lingo-gr.y"
+ case 131:
+#line 575 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(1);
g_lingo->code1(LC::c_goto); }
-#line 3119 "engines/director/lingo/lingo-gr.cpp"
+#line 3106 "engines/director/lingo/lingo-gr.cpp"
break;
- case 131:
-#line 597 "engines/director/lingo/lingo-gr.y"
+ case 132:
+#line 579 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(3);
g_lingo->code1(LC::c_goto); }
-#line 3128 "engines/director/lingo/lingo-gr.cpp"
+#line 3115 "engines/director/lingo/lingo-gr.cpp"
break;
- case 132:
-#line 601 "engines/director/lingo/lingo-gr.y"
+ case 133:
+#line 583 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(2);
g_lingo->code1(LC::c_goto); }
-#line 3137 "engines/director/lingo/lingo-gr.cpp"
+#line 3124 "engines/director/lingo/lingo-gr.cpp"
break;
- case 135:
-#line 609 "engines/director/lingo/lingo-gr.y"
+ case 136:
+#line 591 "engines/director/lingo/lingo-gr.y"
{ // "play #done" is also caught by this
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(1);
g_lingo->code1(LC::c_play); }
-#line 3146 "engines/director/lingo/lingo-gr.cpp"
+#line 3133 "engines/director/lingo/lingo-gr.cpp"
break;
- case 136:
-#line 613 "engines/director/lingo/lingo-gr.y"
+ case 137:
+#line 595 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(3);
g_lingo->code1(LC::c_play); }
-#line 3155 "engines/director/lingo/lingo-gr.cpp"
+#line 3142 "engines/director/lingo/lingo-gr.cpp"
break;
- case 137:
-#line 617 "engines/director/lingo/lingo-gr.y"
+ case 138:
+#line 599 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_intpush);
g_lingo->codeInt(2);
g_lingo->code1(LC::c_play); }
-#line 3164 "engines/director/lingo/lingo-gr.cpp"
+#line 3151 "engines/director/lingo/lingo-gr.cpp"
break;
- case 138:
-#line 621 "engines/director/lingo/lingo-gr.y"
+ case 139:
+#line 603 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeSetImmediate(true); }
-#line 3170 "engines/director/lingo/lingo-gr.cpp"
+#line 3157 "engines/director/lingo/lingo-gr.cpp"
break;
- case 139:
-#line 621 "engines/director/lingo/lingo-gr.y"
+ case 140:
+#line 603 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeSetImmediate(false);
g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
delete (yyvsp[-2].s); }
-#line 3179 "engines/director/lingo/lingo-gr.cpp"
+#line 3166 "engines/director/lingo/lingo-gr.cpp"
break;
- case 140:
-#line 651 "engines/director/lingo/lingo-gr.y"
+ case 141:
+#line 633 "engines/director/lingo/lingo-gr.y"
{ startDef(); }
-#line 3185 "engines/director/lingo/lingo-gr.cpp"
+#line 3172 "engines/director/lingo/lingo-gr.cpp"
break;
- case 141:
-#line 651 "engines/director/lingo/lingo-gr.y"
+ case 142:
+#line 633 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_currentFactory.clear(); }
-#line 3191 "engines/director/lingo/lingo-gr.cpp"
+#line 3178 "engines/director/lingo/lingo-gr.cpp"
break;
- case 142:
-#line 652 "engines/director/lingo/lingo-gr.y"
+ case 143:
+#line 634 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_procret);
g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
endDef();
delete (yyvsp[-6].s); }
-#line 3201 "engines/director/lingo/lingo-gr.cpp"
+#line 3188 "engines/director/lingo/lingo-gr.cpp"
break;
- case 143:
-#line 657 "engines/director/lingo/lingo-gr.y"
+ case 144:
+#line 639 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3207 "engines/director/lingo/lingo-gr.cpp"
+#line 3194 "engines/director/lingo/lingo-gr.cpp"
break;
- case 144:
-#line 658 "engines/director/lingo/lingo-gr.y"
+ case 145:
+#line 640 "engines/director/lingo/lingo-gr.y"
{ startDef(); }
-#line 3213 "engines/director/lingo/lingo-gr.cpp"
+#line 3200 "engines/director/lingo/lingo-gr.cpp"
break;
- case 145:
-#line 659 "engines/director/lingo/lingo-gr.y"
+ case 146:
+#line 641 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_procret);
g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
endDef();
delete (yyvsp[-6].s); }
-#line 3223 "engines/director/lingo/lingo-gr.cpp"
+#line 3210 "engines/director/lingo/lingo-gr.cpp"
break;
- case 146:
-#line 664 "engines/director/lingo/lingo-gr.y"
+ case 147:
+#line 646 "engines/director/lingo/lingo-gr.y"
{ // D3
g_lingo->code1(LC::c_procret);
g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3232,70 +3219,70 @@ yyreduce:
checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
delete (yyvsp[-7].s);
delete (yyvsp[-1].s); }
-#line 3236 "engines/director/lingo/lingo-gr.cpp"
+#line 3223 "engines/director/lingo/lingo-gr.cpp"
break;
- case 147:
-#line 672 "engines/director/lingo/lingo-gr.y"
+ case 148:
+#line 654 "engines/director/lingo/lingo-gr.y"
{ // D4. No 'end' clause
g_lingo->code1(LC::c_procret);
g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
endDef();
delete (yyvsp[-5].s); }
-#line 3246 "engines/director/lingo/lingo-gr.cpp"
+#line 3233 "engines/director/lingo/lingo-gr.cpp"
break;
- case 148:
-#line 678 "engines/director/lingo/lingo-gr.y"
+ case 149:
+#line 660 "engines/director/lingo/lingo-gr.y"
{ startDef(); }
-#line 3252 "engines/director/lingo/lingo-gr.cpp"
+#line 3239 "engines/director/lingo/lingo-gr.cpp"
break;
- case 149:
-#line 678 "engines/director/lingo/lingo-gr.y"
+ case 150:
+#line 660 "engines/director/lingo/lingo-gr.y"
{
(yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3259 "engines/director/lingo/lingo-gr.cpp"
+#line 3246 "engines/director/lingo/lingo-gr.cpp"
break;
- case 150:
-#line 681 "engines/director/lingo/lingo-gr.y"
+ case 151:
+#line 663 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 0; }
-#line 3265 "engines/director/lingo/lingo-gr.cpp"
+#line 3252 "engines/director/lingo/lingo-gr.cpp"
break;
- case 151:
-#line 682 "engines/director/lingo/lingo-gr.y"
+ case 152:
+#line 664 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3271 "engines/director/lingo/lingo-gr.cpp"
+#line 3258 "engines/director/lingo/lingo-gr.cpp"
break;
- case 152:
-#line 683 "engines/director/lingo/lingo-gr.y"
+ case 153:
+#line 665 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[0].s)); mArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3277 "engines/director/lingo/lingo-gr.cpp"
+#line 3264 "engines/director/lingo/lingo-gr.cpp"
break;
- case 154:
-#line 686 "engines/director/lingo/lingo-gr.y"
+ case 155:
+#line 668 "engines/director/lingo/lingo-gr.y"
{ delete (yyvsp[0].s); }
-#line 3283 "engines/director/lingo/lingo-gr.cpp"
+#line 3270 "engines/director/lingo/lingo-gr.cpp"
break;
- case 155:
-#line 687 "engines/director/lingo/lingo-gr.y"
+ case 156:
+#line 669 "engines/director/lingo/lingo-gr.y"
{ delete (yyvsp[0].s); }
-#line 3289 "engines/director/lingo/lingo-gr.cpp"
+#line 3276 "engines/director/lingo/lingo-gr.cpp"
break;
- case 156:
-#line 689 "engines/director/lingo/lingo-gr.y"
+ case 157:
+#line 671 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArgStore(); inDef(); }
-#line 3295 "engines/director/lingo/lingo-gr.cpp"
+#line 3282 "engines/director/lingo/lingo-gr.cpp"
break;
- case 157:
-#line 691 "engines/director/lingo/lingo-gr.y"
+ case 158:
+#line 673 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_call);
g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3303,113 +3290,113 @@ yyreduce:
WRITE_UINT32(&numpar, (yyvsp[0].narg));
g_lingo->code1(numpar);
delete (yyvsp[-1].s); }
-#line 3307 "engines/director/lingo/lingo-gr.cpp"
+#line 3294 "engines/director/lingo/lingo-gr.cpp"
break;
- case 158:
-#line 699 "engines/director/lingo/lingo-gr.y"
+ case 159:
+#line 681 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 0; }
-#line 3313 "engines/director/lingo/lingo-gr.cpp"
+#line 3300 "engines/director/lingo/lingo-gr.cpp"
break;
- case 159:
-#line 700 "engines/director/lingo/lingo-gr.y"
+ case 160:
+#line 682 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3319 "engines/director/lingo/lingo-gr.cpp"
+#line 3306 "engines/director/lingo/lingo-gr.cpp"
break;
- case 160:
-#line 701 "engines/director/lingo/lingo-gr.y"
+ case 161:
+#line 683 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3325 "engines/director/lingo/lingo-gr.cpp"
+#line 3312 "engines/director/lingo/lingo-gr.cpp"
break;
- case 161:
-#line 703 "engines/director/lingo/lingo-gr.y"
+ case 162:
+#line 685 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3331 "engines/director/lingo/lingo-gr.cpp"
+#line 3318 "engines/director/lingo/lingo-gr.cpp"
break;
- case 162:
-#line 704 "engines/director/lingo/lingo-gr.y"
+ case 163:
+#line 686 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3337 "engines/director/lingo/lingo-gr.cpp"
+#line 3324 "engines/director/lingo/lingo-gr.cpp"
break;
- case 163:
-#line 706 "engines/director/lingo/lingo-gr.y"
+ case 164:
+#line 688 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[-1].code); }
-#line 3343 "engines/director/lingo/lingo-gr.cpp"
+#line 3330 "engines/director/lingo/lingo-gr.cpp"
break;
- case 164:
-#line 708 "engines/director/lingo/lingo-gr.y"
+ case 165:
+#line 690 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3349 "engines/director/lingo/lingo-gr.cpp"
+#line 3336 "engines/director/lingo/lingo-gr.cpp"
break;
- case 165:
-#line 709 "engines/director/lingo/lingo-gr.y"
+ case 166:
+#line 691 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3355 "engines/director/lingo/lingo-gr.cpp"
+#line 3342 "engines/director/lingo/lingo-gr.cpp"
break;
- case 166:
-#line 710 "engines/director/lingo/lingo-gr.y"
+ case 167:
+#line 692 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3361 "engines/director/lingo/lingo-gr.cpp"
+#line 3348 "engines/director/lingo/lingo-gr.cpp"
break;
- case 167:
-#line 711 "engines/director/lingo/lingo-gr.y"
+ case 168:
+#line 693 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3367 "engines/director/lingo/lingo-gr.cpp"
+#line 3354 "engines/director/lingo/lingo-gr.cpp"
break;
- case 168:
-#line 713 "engines/director/lingo/lingo-gr.y"
+ case 169:
+#line 695 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3373 "engines/director/lingo/lingo-gr.cpp"
+#line 3360 "engines/director/lingo/lingo-gr.cpp"
break;
- case 169:
-#line 714 "engines/director/lingo/lingo-gr.y"
+ case 170:
+#line 696 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3379 "engines/director/lingo/lingo-gr.cpp"
+#line 3366 "engines/director/lingo/lingo-gr.cpp"
break;
- case 170:
-#line 716 "engines/director/lingo/lingo-gr.y"
+ case 171:
+#line 698 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; }
-#line 3385 "engines/director/lingo/lingo-gr.cpp"
+#line 3372 "engines/director/lingo/lingo-gr.cpp"
break;
- case 171:
-#line 717 "engines/director/lingo/lingo-gr.y"
+ case 172:
+#line 699 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3391 "engines/director/lingo/lingo-gr.cpp"
+#line 3378 "engines/director/lingo/lingo-gr.cpp"
break;
- case 172:
-#line 719 "engines/director/lingo/lingo-gr.y"
+ case 173:
+#line 701 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_symbolpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
delete (yyvsp[-2].s); }
-#line 3400 "engines/director/lingo/lingo-gr.cpp"
+#line 3387 "engines/director/lingo/lingo-gr.cpp"
break;
- case 173:
-#line 723 "engines/director/lingo/lingo-gr.y"
+ case 174:
+#line 705 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(LC::c_stringpush);
g_lingo->codeString((yyvsp[-2].s)->c_str());
delete (yyvsp[-2].s); }
-#line 3409 "engines/director/lingo/lingo-gr.cpp"
+#line 3396 "engines/director/lingo/lingo-gr.cpp"
break;
-#line 3413 "engines/director/lingo/lingo-gr.cpp"
+#line 3400 "engines/director/lingo/lingo-gr.cpp"
default: break;
}
@@ -3608,7 +3595,7 @@ yyreturn:
return yyresult;
}
-#line 729 "engines/director/lingo/lingo-gr.y"
+#line 711 "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 81cfd237c7..da87822ede 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -145,9 +145,9 @@ static void mArg(Common::String *s) {
%token tSPRITE tINTERSECTS tWITHIN tTELL tPROPERTY
%token tON tENDIF tENDREPEAT tENDTELL
-%type<code> asgn begin elseif end expr if when repeatwhile chunkexpr
+%type<code> asgn begin end expr if when repeatwhile chunkexpr
%type<code> repeatwith stmtlist tellstart reference simpleexpr list valuelist
-%type<narg> argdef arglist nonemptyarglist linearlist proplist
+%type<narg> argdef arglist nonemptyarglist linearlist proplist jump jumpifz
%type<s> on
%left tAND tOR
@@ -335,57 +335,41 @@ tellstart: /* empty */ {
$$ = g_lingo->code1(LC::c_tellcode);
g_lingo->code1(STOP); }
-ifstmt: if expr end[endexpr] tTHEN stmtlist end[else1] elseifstmtlist end[end3] tENDIF {
- inst then = 0, else1 = 0, end = 0;
- WRITE_UINT32(&then, $endexpr - $if);
- WRITE_UINT32(&else1, $else1 - $if);
- WRITE_UINT32(&end, $end3 - $if);
- (*g_lingo->_currentScript)[$if + 1] = then; /* thenpart */
- (*g_lingo->_currentScript)[$if + 2] = else1;/* elsepart */
- (*g_lingo->_currentScript)[$if + 3] = end; /* end, if cond fails */
-
- g_lingo->processIf($if, $end3 - $if, 0); }
- | if expr end[endexpr] tTHEN stmtlist end[else1] elseifstmtlist tELSE begin stmtlist end[end3] tENDIF {
- inst then = 0, else1 = 0, end = 0;
- WRITE_UINT32(&then, $endexpr - $if);
- WRITE_UINT32(&else1, $else1 - $if);
- WRITE_UINT32(&end, $end3 - $if);
- (*g_lingo->_currentScript)[$if + 1] = then; /* thenpart */
- (*g_lingo->_currentScript)[$if + 2] = else1;/* elsepart */
- (*g_lingo->_currentScript)[$if + 3] = end; /* end, if cond fails */
-
- g_lingo->processIf($if, $end3 - $if, $begin - $if); }
+ifstmt: if expr jumpifz[then] tTHEN stmtlist jump[else1] elseifstmtlist begin[end3] tENDIF {
+ inst else1 = 0, end3 = 0;
+ WRITE_UINT32(&else1, $else1 + 1);
+ WRITE_UINT32(&end3, $end3);
+ (*g_lingo->_currentScript)[$then] = else1; /* elsepart */
+ (*g_lingo->_currentScript)[$else1] = end3; /* end, if cond fails */
+ g_lingo->processIf($else1, $end3); }
+ | if expr jumpifz[then] tTHEN stmtlist jump[else1] elseifstmtlist tELSE begin stmtlist begin[end3] tENDIF {
+ inst else1 = 0, end = 0;
+ WRITE_UINT32(&else1, $else1 +1);
+ WRITE_UINT32(&end, $end3);
+ (*g_lingo->_currentScript)[$then] = else1; /* elsepart */
+ (*g_lingo->_currentScript)[$else1] = end; /* end, if cond fails */
+ g_lingo->processIf($else1, $end3); }
elseifstmtlist: /* nothing */
| elseifstmtlist elseifstmt
-elseifstmt: elseif expr end[endexpr] tTHEN stmtlist end {
- inst then = 0;
- WRITE_UINT32(&then, $endexpr - $elseif);
- (*g_lingo->_currentScript)[$elseif + 1] = then; /* thenpart */
-
- g_lingo->codeLabel($elseif); }
-
-ifoneliner: if expr end[endexpr] tTHEN stmtoneliner end[else1] tELSE begin stmtoneliner end[end3] tENDIF {
- inst then = 0, else1 = 0, end = 0;
- WRITE_UINT32(&then, $endexpr - $if);
- WRITE_UINT32(&else1, $else1 - $if);
- WRITE_UINT32(&end, $end3 - $if);
- (*g_lingo->_currentScript)[$if + 1] = then; /* thenpart */
- (*g_lingo->_currentScript)[$if + 2] = else1;/* elsepart */
- (*g_lingo->_currentScript)[$if + 3] = end; /* end, if cond fails */
-
- g_lingo->processIf($if, $end3 - $if, $begin - $if); }
- | if expr end[endexpr] tTHEN stmtoneliner end[end3] tENDIF {
- inst then = 0, else1 = 0, end = 0;
- WRITE_UINT32(&then, $endexpr - $if);
- WRITE_UINT32(&else1, 0);
- WRITE_UINT32(&end, $end3 - $if);
- (*g_lingo->_currentScript)[$if + 1] = then; /* thenpart */
- (*g_lingo->_currentScript)[$if + 2] = else1;/* elsepart */
- (*g_lingo->_currentScript)[$if + 3] = end; /* end, if cond fails */
-
- g_lingo->processIf($if, $end3 - $if, $end3 - $if); }
+elseifstmt: tELSIF expr jumpifz[then] tTHEN stmtlist jump[end3] {
+ inst else1 = 0;
+ WRITE_UINT32(&else1, $end3 + 1);
+ (*g_lingo->_currentScript)[$then] = else1; /* end, if cond fails */
+ g_lingo->codeLabel($end3); }
+
+ifoneliner: if expr jumpifz[then] tTHEN stmtoneliner jump[else1] tELSE begin stmtoneliner begin[end3] tENDIF {
+ inst else1 = 0, end = 0;
+ WRITE_UINT32(&else1, $else1 + 1);
+ WRITE_UINT32(&end, $end3);
+ (*g_lingo->_currentScript)[$then] = else1; /* elsepart */
+ (*g_lingo->_currentScript)[$else1] = end; } /* end, if cond fails */
+ | if expr jumpifz[then] tTHEN stmtoneliner begin[end3] tENDIF {
+ inst end = 0;
+ WRITE_UINT32(&end, $end3);
+
+ (*g_lingo->_currentScript)[$then] = end; } /* end, if cond fails */
repeatwhile: tREPEAT tWHILE { $$ = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
@@ -395,19 +379,17 @@ repeatwith: tREPEAT tWITH ID {
g_lingo->codeString($ID->c_str());
delete $ID; }
+jumpifz: /* nothing */ {
+ g_lingo->code2(LC::c_jumpifz, STOP);
+ $$ = g_lingo->_currentScript->size() - 1; }
+
+jump: /* nothing */ {
+ g_lingo->code2(LC::c_jump, STOP);
+ $$ = g_lingo->_currentScript->size() - 1; }
+
if: tIF {
- $$ = g_lingo->code1(LC::c_ifcode);
- g_lingo->code3(STOP, STOP, STOP);
- g_lingo->code1(0); // Do not skip end
g_lingo->codeLabel(0); } // Mark beginning of the if() statement
-elseif: tELSIF {
- inst skipEnd;
- WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
- $$ = g_lingo->code1(LC::c_ifcode);
- g_lingo->code3(STOP, STOP, STOP);
- g_lingo->code1(skipEnd); }
-
begin: /* nothing */ { $$ = g_lingo->_currentScript->size(); }
end: /* nothing */ { g_lingo->code1(STOP); $$ = g_lingo->_currentScript->size(); }
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index d5c0087161..00cb1fd26e 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -324,7 +324,7 @@ public:
void cleanLocalVars();
Symbol *define(Common::String &s, int nargs, ScriptData *code);
Symbol *define(Common::String &s, int start, int nargs, Common::String *prefix = NULL, int end = -1, bool removeCode = true);
- void processIf(int elselabel, int endlabel, int finalElse);
+ void processIf(int toplabel, int endlabel);
int castIdFetch(Datum &var);
void varAssign(Datum &var, Datum &value);
Datum varFetch(Datum &var);
Commit: 78f616e6f8139d52fb51752c4f508bcce71dda48
https://github.com/scummvm/scummvm/commit/78f616e6f8139d52fb51752c4f508bcce71dda48
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-27T01:38:24+02:00
Commit Message:
DIRECTOR: LINGO: Made compiled 'if' statement relocatable
Changed paths:
engines/director/lingo/lingo-bytecode.cpp
engines/director/lingo/lingo-code.cpp
engines/director/lingo/lingo-code.h
engines/director/lingo/lingo-codegen.cpp
engines/director/lingo/lingo-gr.cpp
engines/director/lingo/lingo-gr.y
diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index d883f24e23..e0ad531967 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -80,9 +80,9 @@ static LingoV4Bytecode lingoV4[] = {
{ 0x50, LC::cb_theassign, "b" },
{ 0x51, LC::cb_varassign, "bpa" },
{ 0x52, LC::cb_varassign, "bpv" },
- { 0x53, LC::c_jump, "jb" },
- { 0x54, LC::c_jump, "jbn" },
- { 0x55, LC::c_jumpifz, "jb" },
+ { 0x53, LC::cb_jump, "jb" },
+ { 0x54, LC::cb_jump, "jbn" },
+ { 0x55, LC::cb_jumpifz, "jb" },
{ 0x56, LC::cb_localcall, "b" },
{ 0x57, LC::cb_call, "b" },
{ 0x58, LC::cb_methodcall, "b" },
@@ -112,9 +112,9 @@ static LingoV4Bytecode lingoV4[] = {
{ 0x90, LC::cb_theassign, "w" },
{ 0x91, LC::cb_varassign, "wpa" },
{ 0x92, LC::cb_varassign, "wpv" },
- { 0x93, LC::c_jump, "jw" },
- { 0x94, LC::c_jump, "jwn" },
- { 0x95, LC::c_jumpifz, "jw" },
+ { 0x93, LC::cb_jump, "jw" },
+ { 0x94, LC::cb_jump, "jwn" },
+ { 0x95, LC::cb_jumpifz, "jw" },
{ 0x96, LC::cb_localcall, "w" },
{ 0x97, LC::cb_call, "w" },
{ 0x98, LC::cb_methodcall, "w" },
@@ -323,6 +323,19 @@ void LC::cb_methodcall() {
}
+void LC::cb_jump() {
+ uint jump = g_lingo->readInt();
+ g_lingo->_pc = jump;
+}
+
+void LC::cb_jumpifz() {
+ uint jump = g_lingo->readInt();
+ int test = g_lingo->pop().asInt();
+ if (test == 0) {
+ g_lingo->_pc = jump;
+ }
+}
+
void LC::cb_v4assign() {
int op = g_lingo->readInt();
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index e9e3acacff..895862d5bd 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -93,8 +93,8 @@ static struct FuncDescr {
{ LC::c_intpush, "c_intpush", "i" },
{ LC::c_itemOf, "c_itemOf", "" }, // D3
{ LC::c_itemToOf, "c_itemToOf", "" }, // D3
- { LC::c_jump, "c_jump", "i" },
- { LC::c_jumpifz, "c_jumpifz", "i" },
+ { LC::c_jump, "c_jump", "o" },
+ { LC::c_jumpifz, "c_jumpifz", "o" },
{ LC::c_le, "c_le", "" },
{ LC::c_lineOf, "c_lineOf", "" }, // D3
{ LC::c_lineToOf, "c_lineToOf", "" }, // D3
@@ -144,6 +144,8 @@ static struct FuncDescr {
{ LC::cb_field, "cb_field", "" },
{ LC::cb_globalassign, "cb_globalassign", "N" },
{ LC::cb_globalpush, "cb_globalpush", "N" },
+ { LC::cb_jump, "cb_jump", "i" },
+ { LC::cb_jumpifz, "cb_jumpifz", "i" },
{ LC::cb_list, "cb_list", "" },
{ LC::cb_proplist, "cb_proplist", "" },
{ LC::cb_localcall, "cb_localcall", "i" },
@@ -1151,15 +1153,15 @@ void LC::c_le() {
}
void LC::c_jump() {
- uint jump = g_lingo->readInt();
- g_lingo->_pc = jump;
+ int jump = g_lingo->readInt();
+ g_lingo->_pc = g_lingo->_pc + jump - 2;
}
void LC::c_jumpifz() {
- uint jump = g_lingo->readInt();
+ int jump = g_lingo->readInt();
int test = g_lingo->pop().asInt();
if (test == 0) {
- g_lingo->_pc = jump;
+ g_lingo->_pc = g_lingo->_pc + jump - 2;
}
}
diff --git a/engines/director/lingo/lingo-code.h b/engines/director/lingo/lingo-code.h
index 1ee29385b9..926e937065 100644
--- a/engines/director/lingo/lingo-code.h
+++ b/engines/director/lingo/lingo-code.h
@@ -171,6 +171,8 @@ namespace LC {
void cb_v4theentitynamepush();
void cb_v4theentityassign();
void cb_zeropush();
+ void cb_jump();
+ void cb_jumpifz();
} // End of namespace LC
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index abc98887c8..1809322ca0 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -472,8 +472,6 @@ void Lingo::processIf(int toplabel, int endlabel) {
debugC(4, kDebugLingoCompile, "processIf(%d, %d)", toplabel, endlabel);
- WRITE_UINT32(&iend, endlabel);
-
while (true) {
if (_labelstack.empty()) {
warning("Lingo::processIf(): Label stack underflow");
@@ -489,6 +487,8 @@ void Lingo::processIf(int toplabel, int endlabel) {
debugC(4, kDebugLingoCompile, "processIf: label at %d", label);
+ WRITE_UINT32(&iend, endlabel - label + 1);
+
(*_currentScript)[label] = iend; /* end, if cond fails */
}
}
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 6ab25af009..f6da07363b 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -2483,8 +2483,8 @@ yyreduce:
#line 338 "engines/director/lingo/lingo-gr.y"
{
inst else1 = 0, end3 = 0;
- WRITE_UINT32(&else1, (yyvsp[-3].narg) + 1);
- WRITE_UINT32(&end3, (yyvsp[-1].code));
+ WRITE_UINT32(&else1, (yyvsp[-3].narg) + 1 - (yyvsp[-6].narg) + 1);
+ WRITE_UINT32(&end3, (yyvsp[-1].code) - (yyvsp[-3].narg) + 1);
(*g_lingo->_currentScript)[(yyvsp[-6].narg)] = else1; /* elsepart */
(*g_lingo->_currentScript)[(yyvsp[-3].narg)] = end3; /* end, if cond fails */
g_lingo->processIf((yyvsp[-3].narg), (yyvsp[-1].code)); }
@@ -2495,8 +2495,8 @@ yyreduce:
#line 345 "engines/director/lingo/lingo-gr.y"
{
inst else1 = 0, end = 0;
- WRITE_UINT32(&else1, (yyvsp[-6].narg) +1);
- WRITE_UINT32(&end, (yyvsp[-1].code));
+ WRITE_UINT32(&else1, (yyvsp[-6].narg) + 1 - (yyvsp[-9].narg) + 1);
+ WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-6].narg) + 1);
(*g_lingo->_currentScript)[(yyvsp[-9].narg)] = else1; /* elsepart */
(*g_lingo->_currentScript)[(yyvsp[-6].narg)] = end; /* end, if cond fails */
g_lingo->processIf((yyvsp[-6].narg), (yyvsp[-1].code)); }
@@ -2507,7 +2507,7 @@ yyreduce:
#line 356 "engines/director/lingo/lingo-gr.y"
{
inst else1 = 0;
- WRITE_UINT32(&else1, (yyvsp[0].narg) + 1);
+ WRITE_UINT32(&else1, (yyvsp[0].narg) + 1 - (yyvsp[-3].narg) + 1);
(*g_lingo->_currentScript)[(yyvsp[-3].narg)] = else1; /* end, if cond fails */
g_lingo->codeLabel((yyvsp[0].narg)); }
#line 2514 "engines/director/lingo/lingo-gr.cpp"
@@ -2517,8 +2517,8 @@ yyreduce:
#line 362 "engines/director/lingo/lingo-gr.y"
{
inst else1 = 0, end = 0;
- WRITE_UINT32(&else1, (yyvsp[-5].narg) + 1);
- WRITE_UINT32(&end, (yyvsp[-1].code));
+ WRITE_UINT32(&else1, (yyvsp[-5].narg) + 1 - (yyvsp[-8].narg) + 1);
+ WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].narg) + 1);
(*g_lingo->_currentScript)[(yyvsp[-8].narg)] = else1; /* elsepart */
(*g_lingo->_currentScript)[(yyvsp[-5].narg)] = end; }
#line 2525 "engines/director/lingo/lingo-gr.cpp"
@@ -2528,7 +2528,7 @@ yyreduce:
#line 368 "engines/director/lingo/lingo-gr.y"
{
inst end = 0;
- WRITE_UINT32(&end, (yyvsp[-1].code));
+ WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-4].narg) + 1);
(*g_lingo->_currentScript)[(yyvsp[-4].narg)] = end; }
#line 2535 "engines/director/lingo/lingo-gr.cpp"
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index da87822ede..f501badf3c 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -337,15 +337,15 @@ tellstart: /* empty */ {
ifstmt: if expr jumpifz[then] tTHEN stmtlist jump[else1] elseifstmtlist begin[end3] tENDIF {
inst else1 = 0, end3 = 0;
- WRITE_UINT32(&else1, $else1 + 1);
- WRITE_UINT32(&end3, $end3);
+ WRITE_UINT32(&else1, $else1 + 1 - $then + 1);
+ WRITE_UINT32(&end3, $end3 - $else1 + 1);
(*g_lingo->_currentScript)[$then] = else1; /* elsepart */
(*g_lingo->_currentScript)[$else1] = end3; /* end, if cond fails */
g_lingo->processIf($else1, $end3); }
| if expr jumpifz[then] tTHEN stmtlist jump[else1] elseifstmtlist tELSE begin stmtlist begin[end3] tENDIF {
inst else1 = 0, end = 0;
- WRITE_UINT32(&else1, $else1 +1);
- WRITE_UINT32(&end, $end3);
+ WRITE_UINT32(&else1, $else1 + 1 - $then + 1);
+ WRITE_UINT32(&end, $end3 - $else1 + 1);
(*g_lingo->_currentScript)[$then] = else1; /* elsepart */
(*g_lingo->_currentScript)[$else1] = end; /* end, if cond fails */
g_lingo->processIf($else1, $end3); }
@@ -355,19 +355,19 @@ elseifstmtlist: /* nothing */
elseifstmt: tELSIF expr jumpifz[then] tTHEN stmtlist jump[end3] {
inst else1 = 0;
- WRITE_UINT32(&else1, $end3 + 1);
+ WRITE_UINT32(&else1, $end3 + 1 - $then + 1);
(*g_lingo->_currentScript)[$then] = else1; /* end, if cond fails */
g_lingo->codeLabel($end3); }
ifoneliner: if expr jumpifz[then] tTHEN stmtoneliner jump[else1] tELSE begin stmtoneliner begin[end3] tENDIF {
inst else1 = 0, end = 0;
- WRITE_UINT32(&else1, $else1 + 1);
- WRITE_UINT32(&end, $end3);
+ WRITE_UINT32(&else1, $else1 + 1 - $then + 1);
+ WRITE_UINT32(&end, $end3 - $else1 + 1);
(*g_lingo->_currentScript)[$then] = else1; /* elsepart */
(*g_lingo->_currentScript)[$else1] = end; } /* end, if cond fails */
| if expr jumpifz[then] tTHEN stmtoneliner begin[end3] tENDIF {
inst end = 0;
- WRITE_UINT32(&end, $end3);
+ WRITE_UINT32(&end, $end3 - $then + 1);
(*g_lingo->_currentScript)[$then] = end; } /* end, if cond fails */
More information about the Scummvm-git-logs
mailing list