aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2016-08-20 11:37:17 +0200
committerEugene Sandulenko2016-08-20 11:37:17 +0200
commit1660b859a186bc57155c144756b312fd614113c6 (patch)
treed7920c9f30bc9e50ef413671aded8bea1aed7a82
parentff60ee30ada8657d61ba93f3cfa85323c22e6a64 (diff)
downloadscummvm-rg350-1660b859a186bc57155c144756b312fd614113c6.tar.gz
scummvm-rg350-1660b859a186bc57155c144756b312fd614113c6.tar.bz2
scummvm-rg350-1660b859a186bc57155c144756b312fd614113c6.zip
DIRECTOR: Lingo: Implemented 'exit repeat' keyword
-rw-r--r--engines/director/lingo/lingo-code.cpp15
-rw-r--r--engines/director/lingo/lingo-gr.cpp723
-rw-r--r--engines/director/lingo/lingo-gr.y1
-rw-r--r--engines/director/lingo/lingo.cpp2
-rw-r--r--engines/director/lingo/lingo.h3
5 files changed, 383 insertions, 361 deletions
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 8712f0990c..f9770f5ec4 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -91,6 +91,7 @@ static struct FuncDescr {
{ Lingo::c_le, "c_le", "" },
{ Lingo::c_repeatwhilecode,"c_repeatwhilecode","oo" },
{ Lingo::c_repeatwithcode,"c_repeatwithcode","ooooos" },
+ { Lingo::c_exitRepeat, "c_exitRepeat", "" },
{ Lingo::c_ifcode, "c_ifcode", "oooi" },
{ Lingo::c_whencode, "c_whencode", "os" },
{ Lingo::c_goto, "c_goto", "" },
@@ -644,6 +645,11 @@ void Lingo::c_repeatwhilecode(void) {
if (g_lingo->_returning)
break;
+ if (g_lingo->_exitRepeat) {
+ g_lingo->_exitRepeat = false;
+ break;
+ }
+
g_lingo->execute(savepc + 2); /* condition */
d = g_lingo->pop();
d.toInt();
@@ -680,6 +686,11 @@ void Lingo::c_repeatwithcode(void) {
if (g_lingo->_returning)
break;
+ if (g_lingo->_exitRepeat) {
+ g_lingo->_exitRepeat = false;
+ break;
+ }
+
counter->u.i += inc;
g_lingo->execute(finish); /* condition */
d = g_lingo->pop();
@@ -693,6 +704,10 @@ void Lingo::c_repeatwithcode(void) {
g_lingo->_pc = end; /* next stmt */
}
+void Lingo::c_exitRepeat(void) {
+ g_lingo->_exitRepeat = true;
+}
+
void Lingo::c_ifcode() {
Datum d;
int savepc = g_lingo->_pc; /* then part */
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index be5b3eb571..4b6abc2b56 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -486,18 +486,18 @@ union yyalloc
#endif
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 88
+#define YYFINAL 89
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 931
+#define YYLAST 910
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 83
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 36
/* YYNRULES -- Number of rules. */
-#define YYNRULES 125
+#define YYNRULES 126
/* YYNRULES -- Number of states. */
-#define YYNSTATES 261
+#define YYNSTATES 262
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -557,11 +557,11 @@ static const yytype_uint16 yyprhs[] =
222, 223, 224, 227, 230, 234, 236, 238, 240, 242,
247, 249, 251, 254, 256, 260, 264, 268, 272, 276,
280, 284, 288, 292, 296, 300, 303, 307, 311, 315,
- 319, 322, 325, 329, 334, 339, 342, 344, 346, 348,
- 351, 354, 357, 359, 362, 367, 370, 372, 376, 379,
- 382, 385, 388, 392, 395, 398, 400, 404, 407, 410,
- 413, 417, 420, 421, 430, 433, 434, 443, 444, 446,
- 450, 455, 456, 460, 461, 463
+ 319, 322, 325, 329, 334, 339, 342, 344, 346, 349,
+ 351, 354, 357, 360, 362, 365, 370, 373, 375, 379,
+ 382, 385, 388, 391, 395, 398, 401, 403, 407, 410,
+ 413, 416, 420, 423, 424, 433, 436, 437, 446, 447,
+ 449, 453, 458, 459, 463, 464, 466
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -601,19 +601,19 @@ static const yytype_int8 yyrhs[] =
-1, 105, 65, 105, -1, 105, 66, 105, -1, 71,
105, -1, 72, 105, -1, 77, 105, 78, -1, 67,
105, 68, 105, -1, 67, 105, 69, 105, -1, 40,
- 105, -1, 108, -1, 111, -1, 28, -1, 30, 107,
- -1, 19, 105, -1, 18, 105, -1, 18, -1, 20,
- 118, -1, 51, 105, 46, 105, -1, 51, 105, -1,
- 21, -1, 107, 82, 21, -1, 31, 34, -1, 31,
- 37, -1, 31, 39, -1, 31, 109, -1, 31, 109,
- 110, -1, 31, 110, -1, 29, 105, -1, 105, -1,
- 38, 36, 105, -1, 36, 105, -1, 52, 53, -1,
- 52, 109, -1, 52, 109, 110, -1, 52, 110, -1,
- -1, 35, 21, 113, 101, 115, 85, 116, 103, -1,
- 49, 21, -1, -1, 50, 21, 114, 101, 115, 85,
- 116, 103, -1, -1, 21, -1, 115, 82, 21, -1,
- 115, 85, 82, 21, -1, -1, 21, 101, 118, -1,
- -1, 105, -1, 118, 82, 105, -1
+ 105, -1, 108, -1, 111, -1, 28, 41, -1, 28,
+ -1, 30, 107, -1, 19, 105, -1, 18, 105, -1,
+ 18, -1, 20, 118, -1, 51, 105, 46, 105, -1,
+ 51, 105, -1, 21, -1, 107, 82, 21, -1, 31,
+ 34, -1, 31, 37, -1, 31, 39, -1, 31, 109,
+ -1, 31, 109, 110, -1, 31, 110, -1, 29, 105,
+ -1, 105, -1, 38, 36, 105, -1, 36, 105, -1,
+ 52, 53, -1, 52, 109, -1, 52, 109, 110, -1,
+ 52, 110, -1, -1, 35, 21, 113, 101, 115, 85,
+ 116, 103, -1, 49, 21, -1, -1, 50, 21, 114,
+ 101, 115, 85, 116, 103, -1, -1, 21, -1, 115,
+ 82, 21, -1, 115, 85, 82, 21, -1, -1, 21,
+ 101, 118, -1, -1, 105, -1, 118, 82, 105, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
@@ -627,11 +627,11 @@ static const yytype_uint16 yyrline[] =
340, 342, 343, 344, 347, 353, 354, 357, 360, 364,
367, 371, 378, 384, 385, 386, 387, 388, 389, 390,
391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, 402, 403, 404, 405, 408, 409, 410, 411, 413,
- 414, 417, 420, 423, 424, 425, 428, 429, 440, 441,
- 442, 443, 446, 449, 454, 455, 458, 459, 462, 463,
- 466, 469, 499, 499, 505, 508, 508, 513, 514, 515,
- 516, 518, 522, 530, 531, 532
+ 401, 402, 403, 404, 405, 408, 409, 410, 411, 412,
+ 414, 415, 418, 421, 424, 425, 426, 429, 430, 441,
+ 442, 443, 444, 447, 450, 455, 456, 459, 460, 463,
+ 464, 467, 470, 500, 500, 506, 509, 509, 514, 515,
+ 516, 517, 519, 523, 531, 532, 533
};
#endif
@@ -690,10 +690,10 @@ static const yytype_uint8 yyr1[] =
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
105, 105, 105, 105, 105, 106, 106, 106, 106, 106,
- 106, 106, 106, 106, 106, 106, 107, 107, 108, 108,
- 108, 108, 108, 108, 109, 109, 110, 110, 111, 111,
- 111, 111, 113, 112, 112, 114, 112, 115, 115, 115,
- 115, 116, 117, 118, 118, 118
+ 106, 106, 106, 106, 106, 106, 106, 107, 107, 108,
+ 108, 108, 108, 108, 108, 109, 109, 110, 110, 111,
+ 111, 111, 111, 113, 112, 112, 114, 112, 115, 115,
+ 115, 115, 116, 117, 118, 118, 118
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -707,11 +707,11 @@ static const yytype_uint8 yyr2[] =
0, 0, 2, 2, 3, 1, 1, 1, 1, 4,
1, 1, 2, 1, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 2, 3, 3, 3, 3,
- 2, 2, 3, 4, 4, 2, 1, 1, 1, 2,
- 2, 2, 1, 2, 4, 2, 1, 3, 2, 2,
- 2, 2, 3, 2, 2, 1, 3, 2, 2, 2,
- 3, 2, 0, 8, 2, 0, 8, 0, 1, 3,
- 4, 0, 3, 0, 1, 3
+ 2, 2, 3, 4, 4, 2, 1, 1, 2, 1,
+ 2, 2, 2, 1, 2, 4, 2, 1, 3, 2,
+ 2, 2, 2, 3, 2, 2, 1, 3, 2, 2,
+ 2, 3, 2, 0, 8, 2, 0, 8, 0, 1,
+ 3, 4, 0, 3, 0, 1, 3
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -719,85 +719,85 @@ static const yytype_uint8 yyr2[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 0, 0, 55, 61, 0, 56, 58, 92, 0, 123,
- 49, 57, 88, 0, 0, 47, 0, 0, 0, 0,
+ 0, 0, 55, 61, 0, 56, 58, 93, 0, 124,
+ 49, 57, 89, 0, 0, 47, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 3, 63, 21, 11, 22, 0, 0, 0, 0,
19, 8, 86, 87, 7, 9, 5, 4, 60, 0,
- 63, 62, 91, 90, 124, 93, 123, 123, 96, 89,
- 0, 98, 0, 99, 0, 100, 105, 101, 103, 112,
- 85, 0, 45, 0, 0, 0, 0, 114, 115, 95,
- 108, 109, 111, 75, 0, 80, 81, 0, 1, 6,
- 0, 0, 0, 0, 42, 50, 0, 0, 0, 0,
+ 63, 62, 92, 91, 125, 94, 124, 124, 88, 97,
+ 90, 0, 99, 0, 100, 0, 101, 106, 102, 104,
+ 113, 85, 0, 45, 0, 0, 0, 0, 115, 116,
+ 96, 109, 110, 112, 75, 0, 80, 81, 0, 1,
+ 6, 0, 0, 0, 0, 42, 50, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 122, 0, 104, 107, 0, 102,
- 49, 0, 46, 0, 0, 0, 0, 0, 54, 49,
- 0, 110, 0, 0, 82, 2, 0, 50, 0, 0,
- 49, 0, 26, 71, 72, 70, 73, 74, 77, 78,
- 79, 64, 65, 66, 67, 68, 69, 76, 125, 59,
- 97, 106, 117, 12, 17, 14, 0, 0, 16, 13,
- 117, 94, 83, 84, 51, 0, 44, 51, 0, 43,
- 118, 0, 18, 15, 0, 50, 0, 0, 50, 50,
- 20, 0, 121, 121, 52, 53, 0, 0, 50, 49,
- 30, 119, 0, 51, 51, 0, 50, 51, 0, 51,
- 0, 48, 49, 50, 38, 0, 120, 113, 116, 23,
- 51, 50, 27, 50, 50, 40, 36, 0, 0, 37,
- 33, 0, 50, 0, 0, 35, 0, 0, 50, 49,
- 50, 49, 0, 0, 0, 0, 49, 31, 0, 32,
- 0, 0, 24, 28, 29, 50, 34, 50, 25, 41,
- 39
+ 0, 0, 0, 0, 0, 123, 0, 105, 108, 0,
+ 103, 49, 0, 46, 0, 0, 0, 0, 0, 54,
+ 49, 0, 111, 0, 0, 82, 2, 0, 50, 0,
+ 0, 49, 0, 26, 71, 72, 70, 73, 74, 77,
+ 78, 79, 64, 65, 66, 67, 68, 69, 76, 126,
+ 59, 98, 107, 118, 12, 17, 14, 0, 0, 16,
+ 13, 118, 95, 83, 84, 51, 0, 44, 51, 0,
+ 43, 119, 0, 18, 15, 0, 50, 0, 0, 50,
+ 50, 20, 0, 122, 122, 52, 53, 0, 0, 50,
+ 49, 30, 120, 0, 51, 51, 0, 50, 51, 0,
+ 51, 0, 48, 49, 50, 38, 0, 121, 114, 117,
+ 23, 51, 50, 27, 50, 50, 40, 36, 0, 0,
+ 37, 33, 0, 50, 0, 0, 35, 0, 0, 50,
+ 49, 50, 49, 0, 0, 0, 0, 49, 31, 0,
+ 32, 0, 0, 24, 28, 29, 50, 34, 50, 25,
+ 41, 39
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 30, 194, 31, 50, 33, 195, 35, 240, 224,
- 225, 214, 226, 93, 36, 37, 38, 215, 250, 142,
- 185, 39, 40, 190, 59, 42, 67, 68, 43, 44,
- 120, 129, 181, 203, 45, 55
+ -1, 30, 195, 31, 50, 33, 196, 35, 241, 225,
+ 226, 215, 227, 94, 36, 37, 38, 216, 251, 143,
+ 186, 39, 40, 191, 60, 42, 68, 69, 43, 44,
+ 121, 130, 182, 204, 45, 55
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -195
+#define YYPACT_NINF -197
static const yytype_int16 yypact[] =
{
- 254, -59, -195, -195, 364, -195, -195, 364, 364, 364,
- 801, -195, -195, 14, 552, -195, 23, 364, 10, 6,
- 30, 32, 39, 364, 592, 364, 364, 364, 364, 364,
- 4, -195, 5, -195, -195, -195, -51, 1, 491, 364,
- 779, -195, -195, -195, -195, -195, -195, -195, -5, 364,
- -195, 779, 779, 779, 779, -8, 364, 364, -195, -3,
- 364, -195, 364, -195, 37, -195, 779, 12, -195, -195,
- 606, 61, -195, -31, 364, -30, 40, -195, -195, 659,
- -195, 12, -195, 850, 681, 850, 850, 730, -195, 320,
- 491, 364, 491, 41, 757, 779, 364, 364, 364, 364,
- 364, 364, 364, 364, 364, 364, 364, 364, 364, 364,
- 364, 606, 364, -57, -8, 64, 779, 779, 364, -195,
- -195, 65, -195, 364, 364, 637, 364, 364, -195, -195,
- 364, -195, 364, 364, -195, -195, 15, 779, 18, 703,
- -59, 364, -195, 779, 779, 779, 779, 779, 779, 779,
- 779, 828, 828, 850, 850, 779, 779, 779, 779, -195,
- -195, 779, 67, -195, 779, 779, 364, 364, 779, 779,
- 67, 779, 779, 779, -195, -1, -195, -195, 508, 779,
- -195, -58, 779, 779, -58, 381, 46, 364, 381, -195,
- -195, 76, 17, 17, -195, -195, 74, 364, 779, -20,
- -11, -195, 81, -195, -195, 62, 779, -195, 72, -195,
- 79, -195, -195, 79, -195, 491, -195, 381, 381, -195,
- -195, 381, -195, 381, 79, 79, -195, 491, 508, -195,
- 58, 66, 381, 80, 83, -195, 86, 71, -195, -195,
- -195, -195, 88, 75, 85, 87, -17, -195, 508, -195,
- 447, 77, -195, -195, -195, 381, -195, -195, -195, -195,
- -195
+ 255, -59, -197, -197, 365, -197, -197, 365, 365, 365,
+ 802, -197, -7, 19, 553, -197, 27, 365, 22, 84,
+ 51, 58, 61, 365, 593, 365, 365, 365, 365, 365,
+ 4, -197, 5, -197, -197, -197, -51, -27, 492, 365,
+ 780, -197, -197, -197, -197, -197, -197, -197, 9, 365,
+ -197, 780, 780, 780, 780, 6, 365, 365, -197, -197,
+ 18, 365, -197, 365, -197, 53, -197, 780, 37, -197,
+ -197, 607, 70, -197, -35, 365, -34, 59, -197, -197,
+ 660, -197, 37, -197, -42, 682, -42, -42, 731, -197,
+ 321, 492, 365, 492, 60, 758, 780, 365, 365, 365,
+ 365, 365, 365, 365, 365, 365, 365, 365, 365, 365,
+ 365, 365, 607, 365, -57, 6, 83, 780, 780, 365,
+ -197, -197, 85, -197, 365, 365, 638, 365, 365, -197,
+ -197, 365, -197, 365, 365, -197, -197, 29, 780, 30,
+ 704, -59, 365, -197, 780, 780, 780, 780, 780, 780,
+ 780, 780, 829, 829, -42, -42, 780, 780, 780, 780,
+ -197, -197, 780, 88, -197, 780, 780, 365, 365, 780,
+ 780, 88, 780, 780, 780, -197, 7, -197, -197, 509,
+ 780, -197, -32, 780, 780, -32, 382, 66, 365, 382,
+ -197, -197, 90, 32, 32, -197, -197, 89, 365, 780,
+ 1, -15, -197, 94, -197, -197, 76, 780, -197, 86,
+ -197, 93, -197, -197, 93, -197, 492, -197, 382, 382,
+ -197, -197, 382, -197, 382, 93, 93, -197, 492, 509,
+ -197, 72, 79, 382, 96, 97, -197, 98, 91, -197,
+ -197, -197, -197, 100, 87, 101, 118, -20, -197, 509,
+ -197, 448, 112, -197, -197, -197, 382, -197, -197, -197,
+ -197, -197
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -195, -195, 11, 19, 2, -170, 0, -195, -195, -195,
- -79, -191, -102, -61, -195, -195, -195, -194, -9, -12,
- -171, -195, 38, 3, -195, -195, 99, -13, -195, -195,
- -195, -195, -46, -67, -195, 13
+ -197, -197, 11, 64, 2, -171, 0, -197, -197, -197,
+ -45, -143, -67, -61, -197, -197, -197, -196, -9, -12,
+ -151, -197, 38, 3, -197, -197, 135, -8, -197, -197,
+ -197, -197, -11, -33, -197, 28
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -807,198 +807,194 @@ static const yytype_int16 yypgoto[] =
#define YYTABLE_NINF -61
static const yytype_int16 yytable[] =
{
- 34, 57, 32, 41, 88, -10, 188, 208, 189, -51,
- -51, 82, 47, 123, 126, 211, 227, 46, 46, 73,
- 74, 159, 229, 186, 191, 112, 90, 75, 209, 136,
- 227, 138, 217, 218, 229, 58, 221, 212, 223, 124,
- 127, 89, 51, 187, 69, 52, 53, 54, 62, 232,
- 64, 76, 66, 77, 119, 70, 71, 72, 238, -51,
- 78, 79, 66, 83, 84, 85, 86, 87, 131, 113,
- 114, 91, 56, 118, 112, 255, 94, 95, 256, 115,
- 46, -10, 122, 128, 140, 160, 163, 111, 180, 34,
- 197, 32, 41, 174, 54, 54, 176, 201, 116, 202,
- 117, 205, 216, 219, 222, 211, 239, 243, 135, 241,
- 244, 162, 125, 245, 246, 251, 252, 253, 258, 254,
- 170, 213, 235, 81, 184, 175, 204, 0, 94, 137,
- 139, 178, 0, 0, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 0,
- 158, 177, 0, 0, 231, 0, 161, 0, 0, 0,
- 0, 164, 165, 0, 168, 169, 237, 0, 171, 0,
- 172, 173, 0, 196, 0, 0, 199, 200, 0, 179,
- 0, 0, 0, 0, 0, 0, 207, 0, 0, 0,
- 210, 0, 192, 0, 220, 193, 0, 0, 0, 0,
- 0, 230, 0, 228, 182, 183, 0, 0, 0, 233,
- 0, 234, 236, 0, 0, 0, 0, 0, 0, 0,
- 242, 0, 0, 0, 0, 198, 247, 0, 249, 0,
- 248, 0, 0, 0, 0, 206, 0, 0, 0, 0,
- 0, 0, 0, 259, 0, 260, 0, 0, 0, 0,
- 257, 0, 0, 94, -6, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 94, 2, 3, 4, 5,
- 0, 6, 7, 8, 9, 10, 11, 0, 0, 0,
- 0, 0, 12, 0, 13, 14, 15, 0, 0, 16,
- 0, 0, 0, 0, 17, 18, 19, 0, 0, 20,
- 0, 0, 0, 21, 22, 23, 24, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 25, 0, 0,
- 0, 26, 0, 0, 0, 27, 28, 0, 0, 0,
- -6, 29, 2, 3, 4, 5, 0, 6, 7, 8,
- 9, 10, 11, 0, 0, 0, 0, 0, 12, 0,
- 13, 14, 15, 0, 0, 16, 0, 0, 0, 0,
- 17, 18, 19, 0, 0, 20, 0, 0, 0, 21,
- 22, 23, 24, 0, 0, 0, 2, 3, 4, 5,
- 0, 6, 0, 25, 0, 48, 11, 26, 0, 0,
- 0, 27, 28, 2, 3, 4, 5, 29, 6, 7,
- 8, 9, 48, 11, 49, 0, 19, 0, 0, 12,
- 0, 13, 14, 15, 0, 0, 0, 0, 0, 0,
- 0, 17, 18, 19, 0, 0, 20, 25, 0, 0,
- 0, 26, 23, 24, 0, 27, 28, 0, 0, 0,
- 0, 29, 0, 0, 25, 0, 0, 0, 26, 0,
- 0, 0, 27, 28, 0, 0, 0, 46, 29, 2,
- 3, 4, 5, 0, 6, 7, 8, 9, 48, 11,
- 0, 0, 0, 0, 0, 12, 0, 13, 14, 15,
- 0, 0, 0, 0, 0, 0, 0, 17, 18, 19,
- 0, 0, 20, 0, 0, 0, 0, 0, 23, 24,
- 0, 0, 0, 2, 3, 4, 5, 0, 6, 0,
- 25, 0, 48, 11, 26, 0, 0, 0, 27, 28,
- 2, 3, 4, 5, 29, 6, 7, 8, 9, 48,
- 11, 49, 0, 19, 0, 0, 12, 0, 13, 14,
- 0, 0, 0, 0, 0, 0, 0, 0, 17, 0,
- 19, 0, 0, 0, 25, 0, 0, 0, 26, 23,
- 24, 0, 27, 28, 2, 3, 4, 5, 92, 6,
+ 34, 57, 32, 41, 89, -10, -51, -51, 190, 124,
+ 127, 212, 47, 97, 98, 228, 83, 46, 99, 100,
+ 101, 160, 102, 103, 104, 113, 91, 189, 209, 228,
+ 137, 187, 139, 213, 58, 125, 128, 109, 110, 111,
+ 59, 90, 51, 92, 46, 52, 53, 54, 70, 210,
+ 192, 188, 67, 218, 219, 71, -51, 222, 239, 224,
+ 120, 80, 67, 84, 85, 86, 87, 88, 72, 73,
+ 233, 230, 77, 63, 132, 65, 95, 96, 257, 78,
+ 46, -10, 79, 230, 114, 115, 56, 112, 113, 119,
+ 34, 123, 32, 41, 54, 54, 256, 74, 75, 117,
+ 116, 118, 129, 141, 161, 76, 164, 175, 177, 181,
+ 198, 202, 163, 126, 203, 217, 206, 220, 223, 212,
+ 240, 171, 242, 244, 245, 246, 176, 252, 253, 95,
+ 138, 140, 179, 254, 247, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 255, 159, 178, 259, 136, 232, 214, 162, 236, 82,
+ 185, 205, 165, 166, 0, 169, 170, 238, 0, 172,
+ 0, 173, 174, 0, 197, 0, 0, 200, 201, 0,
+ 180, 0, 0, 0, 0, 0, 0, 208, 0, 0,
+ 0, 211, 0, 193, 0, 221, 194, 0, 0, 0,
+ 0, 0, 231, 0, 229, 183, 184, 0, 0, 0,
+ 234, 0, 235, 237, 0, 0, 0, 0, 0, 0,
+ 0, 243, 0, 0, 0, 0, 199, 248, 0, 250,
+ 0, 249, 0, 0, 0, 0, 207, 0, 0, 0,
+ 0, 0, 0, 0, 260, 0, 261, 0, 0, 0,
+ 0, 258, 0, 0, 95, -6, 1, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 95, 2, 3, 4,
+ 5, 0, 6, 7, 8, 9, 10, 11, 0, 0,
+ 0, 0, 0, 12, 0, 13, 14, 15, 0, 0,
+ 16, 0, 0, 0, 0, 17, 18, 19, 0, 0,
+ 20, 0, 0, 0, 21, 22, 23, 24, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 25, 0,
+ 0, 0, 26, 0, 0, 0, 27, 28, 0, 0,
+ 0, -6, 29, 2, 3, 4, 5, 0, 6, 7,
+ 8, 9, 10, 11, 0, 0, 0, 0, 0, 12,
+ 0, 13, 14, 15, 0, 0, 16, 0, 0, 0,
+ 0, 17, 18, 19, 0, 0, 20, 0, 0, 0,
+ 21, 22, 23, 24, 0, 0, 0, 2, 3, 4,
+ 5, 0, 6, 0, 25, 0, 48, 11, 26, 0,
+ 0, 0, 27, 28, 2, 3, 4, 5, 29, 6,
+ 7, 8, 9, 48, 11, 49, 0, 19, 0, 0,
+ 12, 0, 13, 14, 15, 0, 0, 0, 0, 0,
+ 0, 0, 17, 18, 19, 0, 0, 20, 25, 0,
+ 0, 0, 26, 23, 24, 0, 27, 28, 0, 0,
+ 0, 0, 29, 0, 0, 25, 0, 0, 0, 26,
+ 0, 0, 0, 27, 28, 0, 0, 0, 46, 29,
+ 2, 3, 4, 5, 0, 6, 7, 8, 9, 48,
+ 11, 0, 0, 0, 0, 0, 12, 0, 13, 14,
+ 15, 0, 0, 0, 0, 0, 0, 0, 17, 18,
+ 19, 0, 0, 20, 0, 0, 0, 0, 0, 23,
+ 24, 0, 0, 0, 2, 3, 4, 5, 0, 6,
0, 25, 0, 48, 11, 26, 0, 0, 0, 27,
- 28, 60, 0, 0, 0, 29, 61, 0, 62, 63,
- 64, 65, 49, 0, 19, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 3, 4, 5, 0, 6,
- 0, 0, 0, 48, 11, 25, 0, 0, 0, 26,
- 0, 60, 0, 27, 28, 0, 0, 0, 62, 29,
- 64, 0, 49, 0, 19, 0, 0, 0, 0, 121,
- 0, 0, 0, 0, 0, 80, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 25, 0, 0, 0, 26,
- 0, 96, 97, 27, 28, 0, 98, 99, 100, 29,
- 101, 102, 103, 0, 0, 0, 0, 104, 105, 106,
- 107, 166, 0, 0, 0, 108, 109, 110, 0, 0,
- 0, 0, 96, 97, 0, 0, 0, 98, 99, 100,
- 0, 101, 102, 103, 0, 130, 0, 167, 104, 105,
- 106, 107, 0, 0, 96, 97, 108, 109, 110, 98,
- 99, 100, 0, 101, 102, 103, 0, 0, 0, 0,
- 104, 105, 106, 107, 0, 0, 96, 97, 108, 109,
- 110, 98, 99, 100, 0, 101, 102, 103, 0, 132,
- 133, 0, 104, 105, 106, 107, 0, 0, 96, 97,
- 108, 109, 110, 98, 99, 100, 0, 101, 102, 103,
- 0, 0, 0, 141, 104, 105, 106, 107, 0, 0,
- 0, 134, 108, 109, 110, 96, 97, 0, 0, 0,
- 98, 99, 100, 0, 101, 102, 103, 0, 0, 0,
- 0, 104, 105, 106, 107, 0, 0, 0, 134, 108,
- 109, 110, 96, 97, 0, 0, 0, 98, 99, 100,
- 0, 101, 102, 103, 0, 0, 0, 141, 104, 105,
- 106, 107, 0, 0, 96, 97, 108, 109, 110, 98,
- 99, 100, 0, 101, 102, 103, 0, 0, 0, 0,
- 104, 105, 106, 107, 0, 0, -60, -60, 108, 109,
- 110, -60, -60, -60, 0, -60, -60, -60, 0, 0,
- 0, 0, 0, 0, -60, -60, 0, 0, 56, 0,
- -60, -60, -60, 96, 97, 0, 0, 0, 98, 99,
- 100, 0, 101, 102, 103, 0, 0, 0, 0, 0,
- 0, 106, 107, 0, 0, 96, 97, 108, 109, 110,
- 98, 99, 100, 0, 101, 102, 103, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 108,
- 109, 110
+ 28, 2, 3, 4, 5, 29, 6, 7, 8, 9,
+ 48, 11, 49, 0, 19, 0, 0, 12, 0, 13,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0, 17,
+ 0, 19, 0, 0, 0, 25, 0, 0, 0, 26,
+ 23, 24, 0, 27, 28, 2, 3, 4, 5, 93,
+ 6, 0, 25, 0, 48, 11, 26, 0, 0, 0,
+ 27, 28, 61, 0, 0, 0, 29, 62, 0, 63,
+ 64, 65, 66, 49, 0, 19, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2, 3, 4, 5, 0,
+ 6, 0, 0, 0, 48, 11, 25, 0, 0, 0,
+ 26, 0, 61, 0, 27, 28, 0, 0, 0, 63,
+ 29, 65, 0, 49, 0, 19, 0, 0, 0, 0,
+ 122, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
+ 26, 0, 97, 98, 27, 28, 0, 99, 100, 101,
+ 29, 102, 103, 104, 0, 0, 0, 0, 105, 106,
+ 107, 108, 167, 0, 0, 0, 109, 110, 111, 0,
+ 0, 0, 0, 97, 98, 0, 0, 0, 99, 100,
+ 101, 0, 102, 103, 104, 0, 131, 0, 168, 105,
+ 106, 107, 108, 0, 0, 97, 98, 109, 110, 111,
+ 99, 100, 101, 0, 102, 103, 104, 0, 0, 0,
+ 0, 105, 106, 107, 108, 0, 0, 97, 98, 109,
+ 110, 111, 99, 100, 101, 0, 102, 103, 104, 0,
+ 133, 134, 0, 105, 106, 107, 108, 0, 0, 97,
+ 98, 109, 110, 111, 99, 100, 101, 0, 102, 103,
+ 104, 0, 0, 0, 142, 105, 106, 107, 108, 0,
+ 0, 0, 135, 109, 110, 111, 97, 98, 0, 0,
+ 0, 99, 100, 101, 0, 102, 103, 104, 0, 0,
+ 0, 0, 105, 106, 107, 108, 0, 0, 0, 135,
+ 109, 110, 111, 97, 98, 0, 0, 0, 99, 100,
+ 101, 0, 102, 103, 104, 0, 0, 0, 142, 105,
+ 106, 107, 108, 0, 0, 97, 98, 109, 110, 111,
+ 99, 100, 101, 0, 102, 103, 104, 0, 0, 0,
+ 0, 105, 106, 107, 108, 0, 0, -60, -60, 109,
+ 110, 111, -60, -60, -60, 0, -60, -60, -60, 0,
+ 0, 0, 0, 0, 0, -60, -60, 0, 0, 56,
+ 0, -60, -60, -60, 97, 98, 0, 0, 0, 99,
+ 100, 101, 0, 102, 103, 104, 0, 0, 0, 0,
+ 0, 0, 107, 108, 0, 0, 0, 0, 109, 110,
+ 111
};
static const yytype_int16 yycheck[] =
{
- 0, 10, 0, 0, 0, 0, 177, 27, 178, 26,
- 27, 24, 1, 44, 44, 26, 210, 76, 76, 13,
- 14, 78, 213, 24, 82, 82, 77, 21, 48, 90,
- 224, 92, 203, 204, 225, 21, 207, 48, 209, 70,
- 70, 30, 4, 44, 21, 7, 8, 9, 36, 220,
- 38, 21, 14, 21, 67, 17, 46, 47, 228, 76,
- 21, 23, 24, 25, 26, 27, 28, 29, 81, 56,
- 57, 70, 77, 36, 82, 246, 38, 39, 248, 82,
- 76, 76, 21, 43, 43, 21, 21, 49, 21, 89,
- 44, 89, 89, 78, 56, 57, 78, 21, 60, 82,
- 62, 27, 21, 41, 32, 26, 48, 27, 89, 43,
- 27, 120, 74, 27, 43, 27, 41, 32, 41, 32,
- 129, 200, 224, 24, 170, 137, 193, -1, 90, 91,
- 92, 140, -1, -1, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, -1,
- 112, 140, -1, -1, 215, -1, 118, -1, -1, -1,
- -1, 123, 124, -1, 126, 127, 227, -1, 130, -1,
- 132, 133, -1, 185, -1, -1, 188, 189, -1, 141,
- -1, -1, -1, -1, -1, -1, 198, -1, -1, -1,
- 199, -1, 181, -1, 206, 184, -1, -1, -1, -1,
- -1, 213, -1, 212, 166, 167, -1, -1, -1, 221,
- -1, 223, 224, -1, -1, -1, -1, -1, -1, -1,
- 232, -1, -1, -1, -1, 187, 238, -1, 240, -1,
- 239, -1, -1, -1, -1, 197, -1, -1, -1, -1,
- -1, -1, -1, 255, -1, 257, -1, -1, -1, -1,
- 250, -1, -1, 215, 0, 1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 227, 12, 13, 14, 15,
- -1, 17, 18, 19, 20, 21, 22, -1, -1, -1,
- -1, -1, 28, -1, 30, 31, 32, -1, -1, 35,
- -1, -1, -1, -1, 40, 41, 42, -1, -1, 45,
- -1, -1, -1, 49, 50, 51, 52, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 63, -1, -1,
- -1, 67, -1, -1, -1, 71, 72, -1, -1, -1,
- 76, 77, 12, 13, 14, 15, -1, 17, 18, 19,
- 20, 21, 22, -1, -1, -1, -1, -1, 28, -1,
- 30, 31, 32, -1, -1, 35, -1, -1, -1, -1,
- 40, 41, 42, -1, -1, 45, -1, -1, -1, 49,
- 50, 51, 52, -1, -1, -1, 12, 13, 14, 15,
- -1, 17, -1, 63, -1, 21, 22, 67, -1, -1,
- -1, 71, 72, 12, 13, 14, 15, 77, 17, 18,
- 19, 20, 21, 22, 40, -1, 42, -1, -1, 28,
- -1, 30, 31, 32, -1, -1, -1, -1, -1, -1,
- -1, 40, 41, 42, -1, -1, 45, 63, -1, -1,
- -1, 67, 51, 52, -1, 71, 72, -1, -1, -1,
- -1, 77, -1, -1, 63, -1, -1, -1, 67, -1,
- -1, -1, 71, 72, -1, -1, -1, 76, 77, 12,
- 13, 14, 15, -1, 17, 18, 19, 20, 21, 22,
- -1, -1, -1, -1, -1, 28, -1, 30, 31, 32,
- -1, -1, -1, -1, -1, -1, -1, 40, 41, 42,
- -1, -1, 45, -1, -1, -1, -1, -1, 51, 52,
- -1, -1, -1, 12, 13, 14, 15, -1, 17, -1,
- 63, -1, 21, 22, 67, -1, -1, -1, 71, 72,
- 12, 13, 14, 15, 77, 17, 18, 19, 20, 21,
- 22, 40, -1, 42, -1, -1, 28, -1, 30, 31,
- -1, -1, -1, -1, -1, -1, -1, -1, 40, -1,
- 42, -1, -1, -1, 63, -1, -1, -1, 67, 51,
- 52, -1, 71, 72, 12, 13, 14, 15, 77, 17,
+ 0, 10, 0, 0, 0, 0, 26, 27, 179, 44,
+ 44, 26, 1, 55, 56, 211, 24, 76, 60, 61,
+ 62, 78, 64, 65, 66, 82, 77, 178, 27, 225,
+ 91, 24, 93, 48, 41, 70, 70, 79, 80, 81,
+ 21, 30, 4, 70, 76, 7, 8, 9, 21, 48,
+ 82, 44, 14, 204, 205, 17, 76, 208, 229, 210,
+ 68, 23, 24, 25, 26, 27, 28, 29, 46, 47,
+ 221, 214, 21, 36, 82, 38, 38, 39, 249, 21,
+ 76, 76, 21, 226, 56, 57, 77, 49, 82, 36,
+ 90, 21, 90, 90, 56, 57, 247, 13, 14, 61,
+ 82, 63, 43, 43, 21, 21, 21, 78, 78, 21,
+ 44, 21, 121, 75, 82, 21, 27, 41, 32, 26,
+ 48, 130, 43, 27, 27, 27, 138, 27, 41, 91,
+ 92, 93, 141, 32, 43, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 32, 113, 141, 41, 90, 216, 201, 119, 225, 24,
+ 171, 194, 124, 125, -1, 127, 128, 228, -1, 131,
+ -1, 133, 134, -1, 186, -1, -1, 189, 190, -1,
+ 142, -1, -1, -1, -1, -1, -1, 199, -1, -1,
+ -1, 200, -1, 182, -1, 207, 185, -1, -1, -1,
+ -1, -1, 214, -1, 213, 167, 168, -1, -1, -1,
+ 222, -1, 224, 225, -1, -1, -1, -1, -1, -1,
+ -1, 233, -1, -1, -1, -1, 188, 239, -1, 241,
+ -1, 240, -1, -1, -1, -1, 198, -1, -1, -1,
+ -1, -1, -1, -1, 256, -1, 258, -1, -1, -1,
+ -1, 251, -1, -1, 216, 0, 1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 228, 12, 13, 14,
+ 15, -1, 17, 18, 19, 20, 21, 22, -1, -1,
+ -1, -1, -1, 28, -1, 30, 31, 32, -1, -1,
+ 35, -1, -1, -1, -1, 40, 41, 42, -1, -1,
+ 45, -1, -1, -1, 49, 50, 51, 52, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 63, -1,
+ -1, -1, 67, -1, -1, -1, 71, 72, -1, -1,
+ -1, 76, 77, 12, 13, 14, 15, -1, 17, 18,
+ 19, 20, 21, 22, -1, -1, -1, -1, -1, 28,
+ -1, 30, 31, 32, -1, -1, 35, -1, -1, -1,
+ -1, 40, 41, 42, -1, -1, 45, -1, -1, -1,
+ 49, 50, 51, 52, -1, -1, -1, 12, 13, 14,
+ 15, -1, 17, -1, 63, -1, 21, 22, 67, -1,
+ -1, -1, 71, 72, 12, 13, 14, 15, 77, 17,
+ 18, 19, 20, 21, 22, 40, -1, 42, -1, -1,
+ 28, -1, 30, 31, 32, -1, -1, -1, -1, -1,
+ -1, -1, 40, 41, 42, -1, -1, 45, 63, -1,
+ -1, -1, 67, 51, 52, -1, 71, 72, -1, -1,
+ -1, -1, 77, -1, -1, 63, -1, -1, -1, 67,
+ -1, -1, -1, 71, 72, -1, -1, -1, 76, 77,
+ 12, 13, 14, 15, -1, 17, 18, 19, 20, 21,
+ 22, -1, -1, -1, -1, -1, 28, -1, 30, 31,
+ 32, -1, -1, -1, -1, -1, -1, -1, 40, 41,
+ 42, -1, -1, 45, -1, -1, -1, -1, -1, 51,
+ 52, -1, -1, -1, 12, 13, 14, 15, -1, 17,
-1, 63, -1, 21, 22, 67, -1, -1, -1, 71,
- 72, 29, -1, -1, -1, 77, 34, -1, 36, 37,
- 38, 39, 40, -1, 42, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 12, 13, 14, 15, -1, 17,
- -1, -1, -1, 21, 22, 63, -1, -1, -1, 67,
- -1, 29, -1, 71, 72, -1, -1, -1, 36, 77,
- 38, -1, 40, -1, 42, -1, -1, -1, -1, 33,
- -1, -1, -1, -1, -1, 53, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 63, -1, -1, -1, 67,
- -1, 55, 56, 71, 72, -1, 60, 61, 62, 77,
- 64, 65, 66, -1, -1, -1, -1, 71, 72, 73,
- 74, 44, -1, -1, -1, 79, 80, 81, -1, -1,
- -1, -1, 55, 56, -1, -1, -1, 60, 61, 62,
- -1, 64, 65, 66, -1, 46, -1, 70, 71, 72,
- 73, 74, -1, -1, 55, 56, 79, 80, 81, 60,
- 61, 62, -1, 64, 65, 66, -1, -1, -1, -1,
- 71, 72, 73, 74, -1, -1, 55, 56, 79, 80,
- 81, 60, 61, 62, -1, 64, 65, 66, -1, 68,
- 69, -1, 71, 72, 73, 74, -1, -1, 55, 56,
- 79, 80, 81, 60, 61, 62, -1, 64, 65, 66,
- -1, -1, -1, 70, 71, 72, 73, 74, -1, -1,
- -1, 78, 79, 80, 81, 55, 56, -1, -1, -1,
+ 72, 12, 13, 14, 15, 77, 17, 18, 19, 20,
+ 21, 22, 40, -1, 42, -1, -1, 28, -1, 30,
+ 31, -1, -1, -1, -1, -1, -1, -1, -1, 40,
+ -1, 42, -1, -1, -1, 63, -1, -1, -1, 67,
+ 51, 52, -1, 71, 72, 12, 13, 14, 15, 77,
+ 17, -1, 63, -1, 21, 22, 67, -1, -1, -1,
+ 71, 72, 29, -1, -1, -1, 77, 34, -1, 36,
+ 37, 38, 39, 40, -1, 42, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 12, 13, 14, 15, -1,
+ 17, -1, -1, -1, 21, 22, 63, -1, -1, -1,
+ 67, -1, 29, -1, 71, 72, -1, -1, -1, 36,
+ 77, 38, -1, 40, -1, 42, -1, -1, -1, -1,
+ 33, -1, -1, -1, -1, -1, 53, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 63, -1, -1, -1,
+ 67, -1, 55, 56, 71, 72, -1, 60, 61, 62,
+ 77, 64, 65, 66, -1, -1, -1, -1, 71, 72,
+ 73, 74, 44, -1, -1, -1, 79, 80, 81, -1,
+ -1, -1, -1, 55, 56, -1, -1, -1, 60, 61,
+ 62, -1, 64, 65, 66, -1, 46, -1, 70, 71,
+ 72, 73, 74, -1, -1, 55, 56, 79, 80, 81,
60, 61, 62, -1, 64, 65, 66, -1, -1, -1,
- -1, 71, 72, 73, 74, -1, -1, -1, 78, 79,
- 80, 81, 55, 56, -1, -1, -1, 60, 61, 62,
- -1, 64, 65, 66, -1, -1, -1, 70, 71, 72,
- 73, 74, -1, -1, 55, 56, 79, 80, 81, 60,
- 61, 62, -1, 64, 65, 66, -1, -1, -1, -1,
- 71, 72, 73, 74, -1, -1, 55, 56, 79, 80,
- 81, 60, 61, 62, -1, 64, 65, 66, -1, -1,
- -1, -1, -1, -1, 73, 74, -1, -1, 77, -1,
+ -1, 71, 72, 73, 74, -1, -1, 55, 56, 79,
+ 80, 81, 60, 61, 62, -1, 64, 65, 66, -1,
+ 68, 69, -1, 71, 72, 73, 74, -1, -1, 55,
+ 56, 79, 80, 81, 60, 61, 62, -1, 64, 65,
+ 66, -1, -1, -1, 70, 71, 72, 73, 74, -1,
+ -1, -1, 78, 79, 80, 81, 55, 56, -1, -1,
+ -1, 60, 61, 62, -1, 64, 65, 66, -1, -1,
+ -1, -1, 71, 72, 73, 74, -1, -1, -1, 78,
79, 80, 81, 55, 56, -1, -1, -1, 60, 61,
- 62, -1, 64, 65, 66, -1, -1, -1, -1, -1,
- -1, 73, 74, -1, -1, 55, 56, 79, 80, 81,
+ 62, -1, 64, 65, 66, -1, -1, -1, 70, 71,
+ 72, 73, 74, -1, -1, 55, 56, 79, 80, 81,
60, 61, 62, -1, 64, 65, 66, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 79,
- 80, 81
+ -1, 71, 72, 73, 74, -1, -1, 55, 56, 79,
+ 80, 81, 60, 61, 62, -1, 64, 65, 66, -1,
+ -1, -1, -1, -1, -1, 73, 74, -1, -1, 77,
+ -1, 79, 80, 81, 55, 56, -1, -1, -1, 60,
+ 61, 62, -1, 64, 65, 66, -1, -1, -1, -1,
+ -1, -1, 73, 74, -1, -1, -1, -1, 79, 80,
+ 81
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1010,28 +1006,28 @@ static const yytype_uint8 yystos[] =
45, 49, 50, 51, 52, 63, 67, 71, 72, 77,
84, 86, 87, 88, 89, 90, 97, 98, 99, 104,
105, 106, 108, 111, 112, 117, 76, 85, 21, 40,
- 87, 105, 105, 105, 105, 118, 77, 101, 21, 107,
- 29, 34, 36, 37, 38, 39, 105, 109, 110, 21,
- 105, 46, 47, 13, 14, 21, 21, 21, 21, 105,
- 53, 109, 110, 105, 105, 105, 105, 105, 0, 85,
- 77, 70, 77, 96, 105, 105, 55, 56, 60, 61,
- 62, 64, 65, 66, 71, 72, 73, 74, 79, 80,
- 81, 105, 82, 118, 118, 82, 105, 105, 36, 110,
- 113, 33, 21, 44, 70, 105, 44, 70, 43, 114,
- 46, 110, 68, 69, 78, 86, 96, 105, 96, 105,
- 43, 70, 102, 105, 105, 105, 105, 105, 105, 105,
- 105, 105, 105, 105, 105, 105, 105, 105, 105, 78,
- 21, 105, 101, 21, 105, 105, 44, 70, 105, 105,
- 101, 105, 105, 105, 78, 102, 78, 85, 101, 105,
- 21, 115, 105, 105, 115, 103, 24, 44, 103, 88,
- 106, 82, 85, 85, 85, 89, 102, 44, 105, 102,
- 102, 21, 82, 116, 116, 27, 105, 102, 27, 48,
- 101, 26, 48, 93, 94, 100, 21, 103, 103, 41,
- 102, 103, 32, 103, 92, 93, 95, 100, 101, 94,
- 102, 96, 103, 102, 102, 95, 102, 96, 88, 48,
- 91, 43, 102, 27, 27, 27, 43, 102, 101, 102,
- 101, 27, 41, 32, 32, 103, 88, 89, 41, 102,
- 102
+ 87, 105, 105, 105, 105, 118, 77, 101, 41, 21,
+ 107, 29, 34, 36, 37, 38, 39, 105, 109, 110,
+ 21, 105, 46, 47, 13, 14, 21, 21, 21, 21,
+ 105, 53, 109, 110, 105, 105, 105, 105, 105, 0,
+ 85, 77, 70, 77, 96, 105, 105, 55, 56, 60,
+ 61, 62, 64, 65, 66, 71, 72, 73, 74, 79,
+ 80, 81, 105, 82, 118, 118, 82, 105, 105, 36,
+ 110, 113, 33, 21, 44, 70, 105, 44, 70, 43,
+ 114, 46, 110, 68, 69, 78, 86, 96, 105, 96,
+ 105, 43, 70, 102, 105, 105, 105, 105, 105, 105,
+ 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
+ 78, 21, 105, 101, 21, 105, 105, 44, 70, 105,
+ 105, 101, 105, 105, 105, 78, 102, 78, 85, 101,
+ 105, 21, 115, 105, 105, 115, 103, 24, 44, 103,
+ 88, 106, 82, 85, 85, 85, 89, 102, 44, 105,
+ 102, 102, 21, 82, 116, 116, 27, 105, 102, 27,
+ 48, 101, 26, 48, 93, 94, 100, 21, 103, 103,
+ 41, 102, 103, 32, 103, 92, 93, 95, 100, 101,
+ 94, 102, 96, 103, 102, 102, 95, 102, 96, 88,
+ 48, 91, 43, 102, 27, 27, 27, 43, 102, 101,
+ 102, 101, 27, 41, 32, 32, 103, 88, 89, 41,
+ 102, 102
};
#define yyerrok (yyerrstatus = 0)
@@ -2349,125 +2345,130 @@ yyreduce:
case 88:
#line 411 "engines/director/lingo/lingo-gr.y"
+ { g_lingo->code1(g_lingo->c_exitRepeat); ;}
+ break;
+
+ case 89:
+#line 412 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeConst(0); // Push fake value on stack
g_lingo->code1(g_lingo->c_procret); ;}
break;
- case 90:
-#line 414 "engines/director/lingo/lingo-gr.y"
+ case 91:
+#line 415 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->_handlers[*(yyvsp[(1) - (2)].s)]->u.func);
delete (yyvsp[(1) - (2)].s); ;}
break;
- case 91:
-#line 417 "engines/director/lingo/lingo-gr.y"
+ case 92:
+#line 418 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->_handlers[*(yyvsp[(1) - (2)].s)]->u.func);
delete (yyvsp[(1) - (2)].s); ;}
break;
- case 92:
-#line 420 "engines/director/lingo/lingo-gr.y"
+ case 93:
+#line 421 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code2(g_lingo->c_voidpush, g_lingo->_handlers[*(yyvsp[(1) - (1)].s)]->u.func);
delete (yyvsp[(1) - (1)].s); ;}
break;
- case 93:
-#line 423 "engines/director/lingo/lingo-gr.y"
- { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
- break;
-
case 94:
#line 424 "engines/director/lingo/lingo-gr.y"
- { g_lingo->code1(g_lingo->c_open); ;}
+ { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;}
break;
case 95:
#line 425 "engines/director/lingo/lingo-gr.y"
- { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
+ { g_lingo->code1(g_lingo->c_open); ;}
break;
case 96:
-#line 428 "engines/director/lingo/lingo-gr.y"
- { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
+#line 426 "engines/director/lingo/lingo-gr.y"
+ { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;}
break;
case 97:
#line 429 "engines/director/lingo/lingo-gr.y"
- { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
+ { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
break;
case 98:
-#line 440 "engines/director/lingo/lingo-gr.y"
- { g_lingo->code1(g_lingo->c_gotoloop); ;}
+#line 430 "engines/director/lingo/lingo-gr.y"
+ { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
break;
case 99:
#line 441 "engines/director/lingo/lingo-gr.y"
- { g_lingo->code1(g_lingo->c_gotonext); ;}
+ { g_lingo->code1(g_lingo->c_gotoloop); ;}
break;
case 100:
#line 442 "engines/director/lingo/lingo-gr.y"
- { g_lingo->code1(g_lingo->c_gotoprevious); ;}
+ { g_lingo->code1(g_lingo->c_gotonext); ;}
break;
case 101:
#line 443 "engines/director/lingo/lingo-gr.y"
+ { g_lingo->code1(g_lingo->c_gotoprevious); ;}
+ break;
+
+ case 102:
+#line 444 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeConst(1);
g_lingo->code1(g_lingo->c_goto); ;}
break;
- case 102:
-#line 446 "engines/director/lingo/lingo-gr.y"
+ case 103:
+#line 447 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeConst(3);
g_lingo->code1(g_lingo->c_goto); ;}
break;
- case 103:
-#line 449 "engines/director/lingo/lingo-gr.y"
+ case 104:
+#line 450 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeConst(2);
g_lingo->code1(g_lingo->c_goto); ;}
break;
- case 108:
-#line 462 "engines/director/lingo/lingo-gr.y"
+ case 109:
+#line 463 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_playdone); ;}
break;
- case 109:
-#line 463 "engines/director/lingo/lingo-gr.y"
+ case 110:
+#line 464 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeConst(1);
g_lingo->code1(g_lingo->c_play); ;}
break;
- case 110:
-#line 466 "engines/director/lingo/lingo-gr.y"
+ case 111:
+#line 467 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeConst(3);
g_lingo->code1(g_lingo->c_play); ;}
break;
- case 111:
-#line 469 "engines/director/lingo/lingo-gr.y"
+ case 112:
+#line 470 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeConst(2);
g_lingo->code1(g_lingo->c_play); ;}
break;
- case 112:
-#line 499 "engines/director/lingo/lingo-gr.y"
+ case 113:
+#line 500 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
break;
- case 113:
-#line 500 "engines/director/lingo/lingo-gr.y"
+ case 114:
+#line 501 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeConst(0); // Push fake value on stack
g_lingo->code1(g_lingo->c_procret);
@@ -2475,53 +2476,53 @@ yyreduce:
g_lingo->_indef = false; ;}
break;
- case 114:
-#line 505 "engines/director/lingo/lingo-gr.y"
+ case 115:
+#line 506 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
;}
break;
- case 115:
-#line 508 "engines/director/lingo/lingo-gr.y"
+ case 116:
+#line 509 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = true; ;}
break;
- case 116:
-#line 509 "engines/director/lingo/lingo-gr.y"
+ case 117:
+#line 510 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_procret);
g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);
g_lingo->_indef = false; ;}
break;
- case 117:
-#line 513 "engines/director/lingo/lingo-gr.y"
- { (yyval.narg) = 0; ;}
- break;
-
case 118:
#line 514 "engines/director/lingo/lingo-gr.y"
- { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
+ { (yyval.narg) = 0; ;}
break;
case 119:
#line 515 "engines/director/lingo/lingo-gr.y"
- { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
+ { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
break;
case 120:
#line 516 "engines/director/lingo/lingo-gr.y"
- { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
+ { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
break;
case 121:
-#line 518 "engines/director/lingo/lingo-gr.y"
- { g_lingo->codeArgStore(); ;}
+#line 517 "engines/director/lingo/lingo-gr.y"
+ { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
break;
case 122:
-#line 522 "engines/director/lingo/lingo-gr.y"
+#line 519 "engines/director/lingo/lingo-gr.y"
+ { g_lingo->codeArgStore(); ;}
+ break;
+
+ case 123:
+#line 523 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_call);
g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str());
@@ -2530,24 +2531,24 @@ yyreduce:
g_lingo->code1(numpar); ;}
break;
- case 123:
-#line 530 "engines/director/lingo/lingo-gr.y"
- { (yyval.narg) = 0; ;}
- break;
-
case 124:
#line 531 "engines/director/lingo/lingo-gr.y"
- { (yyval.narg) = 1; ;}
+ { (yyval.narg) = 0; ;}
break;
case 125:
#line 532 "engines/director/lingo/lingo-gr.y"
+ { (yyval.narg) = 1; ;}
+ break;
+
+ case 126:
+#line 533 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
break;
/* Line 1267 of yacc.c. */
-#line 2551 "engines/director/lingo/lingo-gr.cpp"
+#line 2552 "engines/director/lingo/lingo-gr.cpp"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2761,6 +2762,6 @@ yyreturn:
}
-#line 535 "engines/director/lingo/lingo-gr.y"
+#line 536 "engines/director/lingo/lingo-gr.y"
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index f74244e5fd..aff4199215 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -408,6 +408,7 @@ expr: INT { $$ = g_lingo->codeConst($1); }
func: tPUT expr { g_lingo->code1(g_lingo->c_printtop); }
| gotofunc
| playfunc
+ | tEXIT tREPEAT { g_lingo->code1(g_lingo->c_exitRepeat); }
| tEXIT { g_lingo->codeConst(0); // Push fake value on stack
g_lingo->code1(g_lingo->c_procret); }
| tGLOBAL globallist
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index d37da42670..d3e84a0d7c 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -104,6 +104,8 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) {
_floatPrecision = 4;
_floatPrecisionFormat = "%.4f";
+ _exitRepeat = false;
+
warning("Lingo Inited");
}
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 71708cf910..9707afb56e 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -268,6 +268,7 @@ public:
static void c_repeatwithcode();
static void c_ifcode();
static void c_whencode();
+ static void c_exitRepeat();
static void c_eq();
static void c_neq();
static void c_gt();
@@ -425,6 +426,8 @@ public:
bool _inFactory;
Common::String _currentFactory;
+ bool _exitRepeat;
+
private:
int parse(const char *code);
void push(Datum d);