[Scummvm-git-logs] scummvm master -> 6a2697e2ded0183a37b54780b189f8de975a5a75
djsrv
dservilla at gmail.com
Thu Jul 15 20:32:08 UTC 2021
This automated email contains information about 23 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
be5a5894d9 DIRECTOR: Keep all character mappings
bb60a9ea29 DIRECTOR: Move InfoEntry::readString definition out of header
ed64ec6699 DIRECTOR: Default movie/cast platform to Mac
545d34c022 DIRECTOR: LINGO: Eliminate when preprocessor
564c4945ca DIRECTOR: LINGO: Remove parseMenu
88ea6e1645 DIRECTOR: Re-encode loaded text to UTF-8
52af0ac82e DIRECTOR: Create DirectorEngine::getPlatformEncoding
19895f877d DIRECTOR: LINGO: Make text builtins handle Unicode
860a8d663a DIRECTOR: LINGO: Make chunk refs handle Unicode
c16189094d DIRECTOR: LINGO: Make _itemDelimiter a U32 char
d0df2bd014 DIRECTOR: LINGO: Use '\r' as line delimiter
5b3bed6e57 DIRECTOR: LINGO: Re-encode Lingo constants to UTF-8
30df98e61b DIRECTOR: Create Cast::decodeString
4450cd5ced DIRECTOR: LINGO: Decode constants using Cast::decodeString
ca0b1f5de1 DIRECTOR: LINGO: Normalize strings in equality tests
163424abbb DIRECTOR: Set lingotests platform to Macintosh
b2988ce682 COMMON: Add constructor to make U32String from a character
8fcc186b08 DIRECTOR: Add charToNum and numToChar helper functions
664d2f257d DIRECTOR: LINGO: Make compareTo handle Unicode
8354140227 DIRECTOR: LINGO: Fix getting the itemDelimiter
fc25ba3af5 DIRECTOR: Keep original line endings in STXT
04f16d2a17 DIRECTOR: LINGO: Move char normalizations to lingo-utils.cpp
6a2697e2de DIRECTOR: LINGO: Restore use of strchr in isspec
Commit: be5a5894d9779d1c2f212d4c5e5ef5c3635abb75
https://github.com/scummvm/scummvm/commit/be5a5894d9779d1c2f212d4c5e5ef5c3635abb75
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: Keep all character mappings
Changed paths:
engines/director/cast.h
engines/director/fonts.cpp
diff --git a/engines/director/cast.h b/engines/director/cast.h
index f756ed08dd..5021733c7b 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -117,7 +117,8 @@ public:
Common::Platform _platform;
uint16 _castLibID;
- CharMap _charMap;
+ CharMap _macCharsToWin;
+ CharMap _winCharsToMac;
FontXPlatformMap _fontXPlatformMap;
FontMap _fontMap;
diff --git a/engines/director/fonts.cpp b/engines/director/fonts.cpp
index 083cbc6e5d..f7eddf15f5 100644
--- a/engines/director/fonts.cpp
+++ b/engines/director/fonts.cpp
@@ -340,10 +340,11 @@ bool Cast::readFXmpLine(Common::SeekableReadStreamEndian &stream) {
}
byte toChar = atoi(tok.str.c_str());
- // TODO: We should fill _charMap with mappings matching the current platform.
- // We only have Mac fonts right now, though, so we'll always use the Win => Mac mappings.
- if (fromPlatform == Common::kPlatformWindows) {
- _charMap[fromChar] = toChar;
+ if (fromPlatform == Common::kPlatformMacintosh) {
+ _macCharsToWin[fromChar] = toChar;
+ debugC(3, kDebugLoading, "Cast::readFXmpLine: Mapping Mac char %d to Win char %d", fromChar, toChar);
+ } else {
+ _winCharsToMac[fromChar] = toChar;
debugC(3, kDebugLoading, "Cast::readFXmpLine: Mapping Win char %d to Mac char %d", fromChar, toChar);
}
Commit: bb60a9ea2956c8045dff602fee303fc95ea6eaf3
https://github.com/scummvm/scummvm/commit/bb60a9ea2956c8045dff602fee303fc95ea6eaf3
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: Move InfoEntry::readString definition out of header
Changed paths:
engines/director/movie.cpp
engines/director/movie.h
diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index 85b714a7a1..df425d34e3 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -381,4 +381,21 @@ Symbol Movie::getHandler(const Common::String &name) {
return Symbol();
}
+Common::String InfoEntry::readString(bool pascal) {
+ Common::String res;
+
+ if (len == 0)
+ return res;
+
+ int start = pascal ? 1 : 0;
+
+ for (uint i = start; i < len; i++)
+ if (data[i] == '\r')
+ res += '\n';
+ else if (data[i] >= 0x20)
+ res += data[i];
+
+ return res;
+}
+
} // End of namespace Director
diff --git a/engines/director/movie.h b/engines/director/movie.h
index eb08a177b3..317ed2a8b6 100644
--- a/engines/director/movie.h
+++ b/engines/director/movie.h
@@ -68,22 +68,7 @@ struct InfoEntry {
return *this;
}
- Common::String readString(bool pascal = true) {
- Common::String res;
-
- if (len == 0)
- return res;
-
- int start = pascal ? 1 : 0;
-
- for (uint i = start; i < len; i++)
- if (data[i] == '\r')
- res += '\n';
- else if (data[i] >= 0x20)
- res += data[i];
-
- return res;
- }
+ Common::String readString(bool pascal = true);
};
struct InfoEntries {
Commit: ed64ec669903e9292af79608bc7a905ddae7771b
https://github.com/scummvm/scummvm/commit/ed64ec669903e9292af79608bc7a905ddae7771b
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: Default movie/cast platform to Mac
Changed paths:
engines/director/cast.cpp
engines/director/movie.cpp
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 770f1e4eee..951bfb5ff8 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -77,7 +77,7 @@ Cast::Cast(Movie *movie, uint16 castLibID, bool isShared) {
_castArchive = nullptr;
_version = 0;
- _platform = g_director->getPlatform();
+ _platform = Common::kPlatformMacintosh;
_stageColor = 0;
diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index df425d34e3..e4864ee0ed 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -66,6 +66,7 @@ Movie::Movie(Window *window) {
_currentHandlingChannelId = 0;
_version = 0;
+ _platform = Common::kPlatformMacintosh;
_allowOutdatedLingo = false;
_movieArchive = nullptr;
Commit: 545d34c022bcdd5b3bee7e847abbc90277a4ea8d
https://github.com/scummvm/scummvm/commit/545d34c022bcdd5b3bee7e847abbc90277a4ea8d
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Eliminate when preprocessor
Changed paths:
engines/director/lingo/lingo-ast.h
engines/director/lingo/lingo-codegen.cpp
engines/director/lingo/lingo-gr.cpp
engines/director/lingo/lingo-gr.h
engines/director/lingo/lingo-gr.y
engines/director/lingo/lingo-lex.cpp
engines/director/lingo/lingo-lex.l
engines/director/lingo/lingo-preprocessor.cpp
diff --git a/engines/director/lingo/lingo-ast.h b/engines/director/lingo/lingo-ast.h
index 696938c22c..0bcaf11f20 100644
--- a/engines/director/lingo/lingo-ast.h
+++ b/engines/director/lingo/lingo-ast.h
@@ -576,9 +576,9 @@ struct TellNode : StmtNode {
struct WhenNode : StmtNode {
Common::String *event;
- Node *code;
+ Common::String *code;
- WhenNode(Common::String *eventIn, Node *codeIn)
+ WhenNode(Common::String *eventIn, Common::String *codeIn)
: StmtNode(kWhenNode), event(eventIn), code(codeIn) {}
virtual ~WhenNode() {
delete event;
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 85f310c2ea..33e0778ced 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -1006,7 +1006,8 @@ bool LingoCompiler::visitTellNode(TellNode *node) {
/* WhenNode */
bool LingoCompiler::visitWhenNode(WhenNode *node) {
- COMPILE(node->code);
+ code1(LC::c_stringpush);
+ codeString(node->code->c_str());
code1(LC::c_whencode);
codeString(node->event->c_str());
return true;
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 20deafc912..58e7e23a06 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -643,18 +643,18 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 189
+#define YYFINAL 187
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 4539
+#define YYLAST 4569
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 106
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 65
/* YYNRULES -- Number of rules. */
-#define YYNRULES 325
+#define YYNRULES 324
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 607
+#define YYNSTATES 603
/* YYMAXUTOK -- Last valid token kind. */
#define YYMAXUTOK 345
@@ -712,39 +712,39 @@ static const yytype_int8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 196, 196, 198, 204, 211, 212, 213, 214, 215,
- 244, 248, 250, 252, 253, 256, 262, 269, 270, 275,
- 279, 283, 284, 285, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 347, 348, 349,
- 350, 351, 352, 353, 354, 355, 356, 357, 358, 359,
- 360, 361, 362, 363, 364, 365, 366, 369, 370, 371,
- 374, 378, 388, 389, 392, 393, 394, 395, 396, 397,
- 400, 401, 402, 405, 406, 407, 408, 409, 410, 411,
- 412, 417, 418, 419, 420, 421, 422, 425, 428, 433,
- 437, 443, 448, 451, 456, 462, 462, 468, 473, 479,
- 485, 491, 499, 500, 501, 502, 505, 505, 507, 508,
- 509, 512, 516, 520, 526, 530, 534, 538, 539, 541,
- 543, 545, 547, 551, 555, 559, 561, 562, 566, 572,
- 579, 580, 583, 584, 588, 594, 601, 602, 608, 609,
- 610, 611, 612, 613, 614, 615, 616, 617, 618, 619,
- 620, 623, 625, 626, 629, 630, 633, 634, 635, 637,
- 639, 641, 643, 645, 647, 649, 651, 654, 655, 656,
- 657, 660, 661, 664, 669, 672, 677, 683, 684, 685,
- 686, 687, 690, 691, 692, 693, 694, 697, 699, 700,
- 701, 702, 703, 704, 705, 706, 707, 708, 712, 713,
- 714, 715, 716, 719, 719, 721, 722, 725, 726, 727,
- 728, 729, 732, 733, 734, 737, 741, 746, 747, 748,
- 751, 752, 755, 756, 760, 761, 762, 763, 764, 765,
- 766, 767, 768, 769, 770, 771, 772, 773, 774, 775,
- 776, 777, 778, 785, 786, 787, 788, 789, 790, 791,
- 792, 793, 794, 795, 796, 797, 798, 799, 800, 801,
- 802, 803, 806, 807, 808, 809, 810, 811, 812, 813,
- 814, 815, 816, 817, 818, 819, 820, 821, 822, 823,
- 826, 827, 830, 831, 834, 838
+ 0, 202, 202, 204, 210, 217, 218, 219, 220, 221,
+ 250, 254, 256, 258, 259, 262, 268, 275, 276, 281,
+ 285, 289, 290, 291, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
+ 344, 345, 346, 347, 348, 349, 350, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 374, 375, 376, 379,
+ 383, 393, 394, 397, 398, 399, 400, 401, 402, 405,
+ 406, 407, 410, 411, 412, 413, 414, 415, 416, 417,
+ 422, 423, 424, 425, 426, 427, 430, 433, 438, 442,
+ 448, 453, 456, 461, 467, 467, 473, 478, 484, 490,
+ 496, 504, 505, 506, 507, 510, 510, 512, 513, 514,
+ 517, 521, 525, 531, 535, 539, 543, 544, 546, 548,
+ 550, 552, 556, 560, 564, 566, 567, 571, 577, 584,
+ 585, 588, 589, 593, 599, 606, 607, 613, 614, 615,
+ 616, 617, 618, 619, 620, 621, 622, 623, 624, 625,
+ 628, 630, 631, 634, 635, 638, 639, 640, 642, 644,
+ 646, 648, 650, 652, 654, 656, 659, 660, 661, 662,
+ 665, 666, 669, 674, 677, 682, 688, 689, 690, 691,
+ 692, 695, 696, 697, 698, 699, 702, 704, 705, 706,
+ 707, 708, 709, 710, 711, 712, 713, 717, 718, 719,
+ 720, 721, 724, 724, 726, 727, 730, 731, 732, 733,
+ 734, 737, 738, 739, 742, 746, 751, 752, 753, 756,
+ 757, 760, 761, 765, 766, 767, 768, 769, 770, 771,
+ 772, 773, 774, 775, 776, 777, 778, 779, 780, 781,
+ 782, 783, 790, 791, 792, 793, 794, 795, 796, 797,
+ 798, 799, 800, 801, 802, 803, 804, 805, 806, 807,
+ 808, 811, 812, 813, 814, 815, 816, 817, 818, 819,
+ 820, 821, 822, 823, 824, 825, 826, 827, 828, 831,
+ 832, 835, 836, 839, 843
};
#endif
@@ -813,7 +813,7 @@ static const yytype_int16 yytoknum[] =
};
#endif
-#define YYPACT_NINF (-518)
+#define YYPACT_NINF (-524)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
@@ -827,67 +827,67 @@ static const yytype_int16 yytoknum[] =
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 2949, -518, -518, -518, -518, -518, 26, -518, -17, -518,
- 3528, 1866, 26, 1965, -518, -518, 3528, -518, 7, -518,
- -518, 2064, 41, 3609, -518, 3528, -518, -518, 3528, 2064,
- 1866, 3528, -518, -518, -518, -518, -518, -518, -518, -518,
- -518, -518, -518, -518, -518, -518, -518, -518, -518, -518,
- -518, -518, -518, -518, -518, -518, -518, -518, -518, -518,
- -518, -518, -518, -518, -518, 1965, 3528, 3528, -50, 3851,
- -518, 51, 2949, -518, -518, -518, -518, 2064, -518, -518,
- -518, -518, -518, -518, -518, -518, -518, -518, -518, 2163,
- 2163, 1965, 1965, 1965, 1965, -7, -37, -31, -518, -518,
- -518, -518, -518, -518, -518, -518, -518, -518, -518, -518,
- -518, -518, -518, -518, -518, -518, -518, -518, -518, -518,
- -518, -518, -518, -518, -518, 23, -1, -518, -518, -518,
- -518, 2163, 2163, 2163, 2163, 1965, 1965, 2262, 1965, 1965,
- 1965, 1965, 3690, 1965, 2262, 2262, 1371, 775, 3, 25,
- 34, -518, -518, -518, -518, -518, -518, -518, -518, -518,
- -518, 876, -518, 52, 1965, 4078, 3528, 75, 77, 975,
- 3528, 1965, 3528, -518, -518, -4, -518, 61, 78, 82,
- 1074, 90, 92, 101, 4045, 108, 3528, -518, -518, -518,
- -518, 109, 1173, 1470, -518, -518, -518, 434, 555, 681,
- 3904, 160, -518, -518, -518, 3528, -518, -518, 1272, 4388,
- -518, -32, -11, -5, 17, 20, 160, 95, 180, 4359,
- -518, -518, -518, 612, 85, 111, 118, 58, -10, -518,
- 4388, 121, 126, 1569, -518, -518, 204, 1965, 1965, 1965,
- 1965, 2658, 2658, 2856, 1965, 2757, 2757, 1965, 1965, 1965,
- 1965, 1965, 1965, 1965, 1965, -518, -518, 4160, -518, -518,
- 4132, 3030, 1965, 1965, 1965, 1965, 1965, 131, -518, -518,
- 3771, 3771, 3771, 4, 4191, 206, -518, -518, 1965, 1965,
- -42, -518, 1965, -518, -518, -518, 3851, 3111, -518, 138,
- -518, -518, 4101, 2262, 1965, 2262, 1965, 2262, 1965, 2262,
- 1965, -518, -518, -518, -518, 18, -518, 214, 4413, -518,
- -518, -518, -518, -518, -518, -518, -518, -518, -518, 2361,
- 2460, 2262, 2262, 1668, -518, 1965, 1965, -518, 1965, 3447,
- -518, -518, 1965, -518, 143, 1965, 72, 72, 72, 72,
- 91, 91, -518, 35, 72, 72, 72, 72, 35, -33,
- -33, -518, -518, 143, 1965, 1965, 1965, 1965, 1965, 1965,
- 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965,
- 1965, 1965, -518, 3354, 228, 3111, -7, -518, 147, -518,
- 148, 149, 1965, 1965, 3111, 2559, 4217, 4388, 3528, -518,
- -518, -518, -42, -518, 4247, -518, -518, -518, 161, 3111,
- -518, 3111, 1767, -518, 3917, -518, 3937, -518, 3991, -518,
- 4011, -518, -518, 2262, 1965, 18, 18, 18, 18, 2262,
- 2262, 18, 2262, 2262, -518, -518, -518, -518, -518, -518,
- -518, 143, 4388, 4388, 4388, 85, 111, 150, -518, 4388,
- 1965, 152, 4388, -518, 72, 72, 72, 72, 91, 91,
- -518, 35, 72, 72, 72, 72, 35, -33, -33, -518,
- -518, 143, -518, -518, -6, 3354, -518, 3192, -518, -518,
- -518, -518, 4273, 358, 169, 1965, 1965, 1965, 1965, -518,
- -518, -518, 3528, -518, -518, 159, -518, 249, -518, 143,
- 2262, 2262, 2262, 2262, -518, 4388, 2262, 2262, 2262, 2262,
- -518, 235, 197, -518, -518, 171, -518, -518, 3273, 172,
- -518, -518, 3354, -518, 3111, 238, 1965, 183, -518, 4442,
- -518, 4024, 4442, 4442, 185, -518, 3528, 181, -518, -518,
- -518, -518, -518, -518, -518, -518, 212, 2262, -518, -518,
- 3354, -518, -518, 203, 201, 1965, 4303, -518, 1965, 1965,
- 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965, 1965,
- 1965, 1965, 1965, 1965, 220, 3111, 2, -518, -518, 2262,
- 203, -518, 195, 4329, 3111, 99, 99, 99, 184, 184,
- -518, 76, 99, 99, 99, 99, 76, -26, -26, -518,
- -518, 1965, -518, -518, 3528, -518, -518, -518, 3111, 207,
- 4442, -518, 208, 198, 199, -518, -518
+ 2942, -524, -524, -524, -524, -524, 7, -524, -19, -524,
+ 3521, 1859, 7, 1958, -524, -524, 3521, -524, 3, -524,
+ -524, 2057, 83, 3602, -524, -524, -524, -524, 3521, 2057,
+ 1859, 3521, -524, -524, -524, -524, -524, -524, -524, -524,
+ -524, -524, -524, -524, -524, -524, -524, -524, -524, -524,
+ -524, -524, -524, -524, -524, -524, -524, -524, -524, -524,
+ -524, -524, -524, -524, -524, 1958, 3521, 3521, -73, 3844,
+ -524, 46, 2942, -524, -524, -524, -524, 2057, -524, -524,
+ -524, -524, -524, -524, -524, -524, -524, -524, -524, 2156,
+ 2156, 1958, 1958, 1958, 1958, 4, -28, -17, -524, -524,
+ -524, -524, -524, -524, -524, -524, -524, -524, -524, -524,
+ -524, -524, -524, -524, -524, -524, -524, -524, -524, -524,
+ -524, -524, -524, -524, 25, -49, -524, -524, -524, -524,
+ 2156, 2156, 2156, 2156, 1958, 1958, 2255, 1958, 1958, 1958,
+ 1958, 3683, 1958, 2255, 2255, 1364, 768, -36, 27, 30,
+ -524, -524, -524, -524, -524, -524, -524, -524, -524, -524,
+ 869, -524, 33, 1958, 355, 3521, 50, 53, 968, 3521,
+ 1958, 3521, -524, -524, -14, -524, 66, 80, 1067, 81,
+ 93, 94, 4081, 99, 3521, -524, -524, -524, -524, 104,
+ 1166, 1463, -524, -524, -524, 606, 674, 3897, 3919, 101,
+ -524, -524, -524, 3521, -524, -524, 1265, 4446, -524, -21,
+ -4, 24, 26, 52, 101, 48, 55, 4392, -524, -524,
+ -524, 4113, -9, 103, 47, -76, -48, -524, 4446, 102,
+ 109, 1562, -524, -524, 182, 1958, 1958, 1958, 1958, 2651,
+ 2651, 2849, 1958, 2750, 2750, 1958, 1958, 1958, 1958, 1958,
+ 1958, 1958, 1958, -524, -524, 4209, -524, -524, 4196, 3023,
+ 1958, 1958, 1958, 1958, 1958, 113, -524, -524, 3764, 3764,
+ 3764, -1, 4222, 184, -524, -524, 1958, -59, -524, 1958,
+ -524, -524, -524, 3844, 3104, -524, 114, -524, -524, 4137,
+ 2255, 1958, 2255, 1958, 2255, 1958, 2255, 1958, -524, -524,
+ -524, -524, 17, -524, 187, 4459, -524, -524, -524, -524,
+ -524, -524, -524, -524, -524, -524, 2354, 2453, 2255, 2255,
+ 1661, -524, 1958, 1958, -524, 1958, 3440, -524, -524, 1958,
+ -524, 116, 1958, 74, 74, 74, 74, 90, 90, -524,
+ -34, 74, 74, 74, 74, -34, -42, -42, -524, -524,
+ 116, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958,
+ 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, -524,
+ 3347, 203, 3104, 4, -524, 122, -524, 123, 124, 1958,
+ 1958, 3104, 2552, 4278, 3521, -524, -524, -524, -59, -524,
+ 4291, -524, -524, -524, 135, 3104, -524, 3104, 1760, -524,
+ 3951, -524, 3973, -524, 4005, -524, 4027, -524, -524, 2255,
+ 1958, 17, 17, 17, 17, 2255, 2255, 17, 2255, 2255,
+ -524, -524, -524, -524, -524, -524, -524, 116, 4446, 4446,
+ 4446, -9, 103, 126, -524, 4446, 1958, 133, 4446, -524,
+ 74, 74, 74, 74, 90, 90, -524, -34, 74, 74,
+ 74, 74, -34, -42, -42, -524, -524, 116, -524, -524,
+ -6, 3347, -524, 3185, -524, -524, -524, -524, 4304, 429,
+ 152, 1958, 1958, 1958, 1958, -524, -524, -524, 3521, -524,
+ -524, 143, -524, 233, -524, 116, 2255, 2255, 2255, 2255,
+ -524, 4446, 2255, 2255, 2255, 2255, -524, 215, 178, -524,
+ -524, 153, -524, -524, 3266, 157, -524, -524, 3347, -524,
+ 3104, 222, 1958, 164, -524, 4472, -524, 4059, 4472, 4472,
+ 166, -524, 3521, 165, -524, -524, -524, -524, -524, -524,
+ -524, -524, 195, 2255, -524, -524, 3347, -524, -524, 185,
+ 193, 1958, 4360, -524, 1958, 1958, 1958, 1958, 1958, 1958,
+ 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958, 1958,
+ 200, 3104, 43, -524, -524, 2255, 185, -524, 186, 4373,
+ 3104, 198, 198, 198, 183, 183, -524, -7, 198, 198,
+ 198, 198, -7, -3, -3, -524, -524, 1958, -524, -524,
+ 3521, -524, -524, -524, 3104, 202, 4472, -524, 208, 188,
+ 216, -524, -524
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -896,90 +896,90 @@ static const yytype_int16 yypact[] =
static const yytype_int16 yydefact[] =
{
0, 24, 31, 38, 62, 72, 36, 37, 0, 39,
- 97, 127, 40, 0, 41, 43, 0, 54, 55, 58,
- 60, 127, 61, 0, 70, 0, 73, 71, 0, 127,
- 127, 97, 29, 59, 56, 53, 28, 30, 34, 67,
+ 96, 126, 40, 0, 41, 43, 0, 54, 55, 58,
+ 60, 126, 61, 0, 70, 164, 73, 71, 0, 126,
+ 126, 96, 29, 59, 56, 53, 28, 30, 34, 67,
32, 33, 44, 45, 47, 48, 75, 76, 25, 26,
27, 49, 64, 35, 46, 50, 51, 52, 57, 68,
- 69, 65, 66, 42, 74, 0, 97, 0, 0, 63,
- 5, 0, 2, 3, 6, 7, 8, 127, 9, 102,
- 104, 110, 111, 112, 105, 106, 107, 108, 109, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 123, 79,
+ 69, 65, 66, 42, 74, 0, 96, 0, 0, 63,
+ 5, 0, 2, 3, 6, 7, 8, 126, 9, 101,
+ 103, 109, 110, 111, 104, 105, 106, 107, 108, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 122, 79,
36, 78, 80, 82, 83, 40, 84, 86, 55, 92,
- 61, 93, 95, 96, 81, 89, 90, 85, 94, 91,
- 88, 87, 63, 77, 100, 0, 98, 178, 179, 181,
- 180, 31, 38, 62, 72, 39, 54, 56, 32, 44,
- 47, 75, 68, 66, 0, 0, 0, 322, 191, 0,
- 0, 262, 186, 187, 188, 189, 220, 221, 190, 263,
- 264, 135, 265, 0, 0, 0, 97, 0, 0, 135,
- 0, 0, 68, 191, 194, 0, 195, 0, 0, 0,
- 135, 0, 0, 0, 0, 0, 97, 103, 126, 1,
- 4, 0, 135, 0, 197, 213, 196, 0, 0, 0,
- 0, 0, 124, 122, 148, 99, 211, 212, 137, 138,
- 182, 25, 26, 27, 49, 64, 46, 57, 217, 0,
- 260, 261, 132, 0, 181, 180, 0, 191, 0, 255,
- 324, 0, 323, 0, 115, 116, 58, 0, 0, 0,
- 0, 29, 59, 53, 0, 34, 67, 0, 0, 0,
- 0, 0, 0, 0, 136, 128, 283, 135, 284, 125,
- 0, 0, 0, 0, 0, 0, 0, 0, 121, 114,
- 43, 28, 30, 0, 0, 245, 146, 147, 0, 0,
- 13, 119, 73, 117, 118, 150, 0, 166, 149, 0,
- 113, 214, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 207, 209, 210, 208, 0, 101, 58, 141, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 0,
- 0, 0, 0, 0, 185, 0, 0, 253, 0, 0,
- 254, 252, 0, 183, 135, 0, 275, 276, 273, 274,
- 277, 278, 270, 280, 281, 282, 272, 271, 279, 266,
- 267, 268, 269, 135, 0, 0, 0, 0, 0, 0,
+ 61, 93, 95, 81, 89, 90, 85, 94, 91, 88,
+ 87, 63, 77, 99, 0, 97, 177, 178, 180, 179,
+ 31, 38, 62, 72, 39, 54, 56, 32, 44, 47,
+ 75, 68, 66, 0, 0, 0, 321, 190, 0, 0,
+ 261, 185, 186, 187, 188, 219, 220, 189, 262, 263,
+ 134, 264, 0, 0, 0, 96, 0, 0, 134, 0,
+ 0, 68, 190, 193, 0, 194, 0, 0, 134, 0,
+ 0, 0, 0, 0, 96, 102, 125, 1, 4, 0,
+ 134, 0, 196, 212, 195, 0, 0, 0, 0, 0,
+ 123, 121, 147, 98, 210, 211, 136, 137, 181, 25,
+ 26, 27, 49, 64, 46, 57, 216, 0, 259, 260,
+ 131, 0, 180, 179, 0, 190, 0, 254, 323, 0,
+ 322, 0, 114, 115, 58, 0, 0, 0, 0, 29,
+ 59, 53, 0, 34, 67, 0, 0, 0, 0, 0,
+ 0, 0, 135, 127, 282, 134, 283, 124, 0, 0,
+ 0, 0, 0, 0, 0, 0, 120, 113, 43, 28,
+ 30, 0, 0, 244, 145, 146, 0, 13, 118, 73,
+ 116, 117, 149, 0, 165, 148, 0, 112, 213, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 206, 208,
+ 209, 207, 0, 100, 58, 140, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, 236, 0, 0, 0, 0,
+ 0, 184, 0, 0, 252, 0, 0, 253, 251, 0,
+ 182, 134, 0, 274, 275, 272, 273, 276, 277, 269,
+ 279, 280, 281, 271, 270, 278, 265, 266, 267, 268,
+ 134, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 135, 129,
+ 171, 150, 165, 68, 191, 0, 192, 0, 0, 0,
+ 0, 165, 0, 0, 0, 17, 18, 11, 14, 15,
+ 0, 162, 169, 170, 0, 166, 167, 165, 0, 197,
+ 0, 201, 0, 203, 0, 199, 0, 242, 243, 0,
+ 0, 33, 45, 48, 76, 50, 51, 52, 65, 66,
+ 218, 222, 221, 217, 319, 320, 132, 134, 258, 256,
+ 257, 0, 0, 0, 255, 324, 135, 0, 139, 128,
+ 293, 294, 291, 292, 295, 296, 288, 298, 299, 300,
+ 290, 289, 297, 284, 285, 286, 287, 134, 175, 176,
+ 156, 172, 173, 0, 10, 141, 142, 143, 0, 0,
+ 0, 50, 51, 65, 66, 245, 246, 144, 96, 16,
+ 119, 0, 168, 20, 214, 134, 0, 0, 0, 0,
+ 205, 138, 0, 0, 0, 0, 226, 0, 0, 224,
+ 225, 0, 183, 130, 0, 0, 151, 174, 171, 152,
+ 165, 0, 0, 0, 301, 247, 302, 0, 249, 250,
+ 0, 163, 21, 0, 198, 202, 204, 200, 237, 239,
+ 240, 238, 0, 0, 241, 133, 171, 154, 157, 156,
+ 0, 0, 0, 158, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 136, 130, 172, 151, 166, 68, 192, 0, 193,
- 0, 0, 0, 0, 166, 0, 0, 165, 0, 17,
- 18, 11, 14, 15, 0, 163, 170, 171, 0, 167,
- 168, 166, 0, 198, 0, 202, 0, 204, 0, 200,
- 0, 243, 244, 0, 0, 33, 45, 48, 76, 50,
- 51, 52, 65, 66, 219, 223, 222, 218, 320, 321,
- 133, 135, 259, 257, 258, 0, 0, 0, 256, 325,
- 136, 0, 140, 129, 294, 295, 292, 293, 296, 297,
- 289, 299, 300, 301, 291, 290, 298, 285, 286, 287,
- 288, 135, 176, 177, 157, 173, 174, 0, 10, 142,
- 143, 144, 0, 0, 0, 50, 51, 65, 66, 246,
- 247, 145, 97, 16, 120, 0, 169, 20, 215, 135,
- 0, 0, 0, 0, 206, 139, 0, 0, 0, 0,
- 227, 0, 0, 225, 226, 0, 184, 131, 0, 0,
- 152, 175, 172, 153, 166, 0, 0, 0, 302, 248,
- 303, 0, 250, 251, 0, 164, 21, 0, 199, 203,
- 205, 201, 238, 240, 241, 239, 0, 0, 242, 134,
- 172, 155, 158, 157, 0, 0, 0, 159, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 166, 0, 22, 216, 0,
- 157, 154, 0, 0, 166, 312, 313, 311, 314, 315,
- 308, 317, 318, 319, 310, 309, 316, 304, 305, 306,
- 307, 0, 12, 19, 0, 224, 156, 162, 166, 0,
- 249, 23, 0, 0, 0, 160, 161
+ 0, 165, 0, 22, 215, 0, 156, 153, 0, 0,
+ 165, 311, 312, 310, 313, 314, 307, 316, 317, 318,
+ 309, 308, 315, 303, 304, 305, 306, 0, 12, 19,
+ 0, 223, 155, 161, 165, 0, 248, 23, 0, 0,
+ 0, 159, 160
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -518, -518, -518, 227, -518, -518, -518, -518, -518, -75,
- -518, -518, 0, -8, -25, -518, 5, -360, -62, -518,
- -2, -256, 288, -518, -518, -518, -518, -518, -517, -518,
- -518, -518, -354, -518, -80, -488, -518, -145, -147, -19,
- -128, -518, -3, -518, -518, -78, -518, 10, -180, -518,
- -518, -203, -518, -518, -518, -518, 8, -518, 202, 63,
- 115, -442, 80, -518, -223
+ -524, -524, -524, 214, -524, -524, -524, -524, -524, -74,
+ -524, -524, 0, -8, -25, -524, 5, -358, -65, -524,
+ 9, -252, 286, -524, -524, -524, -524, -524, -523, -524,
+ -524, -524, -344, -524, -78, -487, -524, -142, 51, -22,
+ -169, -524, 1, -524, -524, 41, -524, 10, -178, -524,
+ -524, -223, -524, -524, -524, -524, -5, -524, 199, 62,
+ 127, -439, 76, -524, -221
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- 0, 71, 72, 73, 74, 75, 390, 391, 392, 393,
- 76, 566, 123, 148, 125, 126, 397, 79, 80, 81,
- 149, 255, 150, 82, 278, 83, 84, 85, 510, 86,
- 87, 88, 398, 399, 400, 464, 465, 466, 151, 152,
- 378, 175, 153, 305, 154, 194, 155, 424, 425, 156,
- 157, 413, 176, 479, 158, 228, 229, 159, 160, 230,
- 257, 519, 162, 231, 232
+ 0, 71, 72, 73, 74, 75, 386, 387, 388, 389,
+ 76, 562, 122, 147, 124, 125, 393, 79, 80, 81,
+ 148, 253, 149, 82, 276, 83, 84, 85, 506, 86,
+ 87, 88, 394, 395, 396, 460, 461, 462, 150, 151,
+ 375, 174, 152, 302, 153, 192, 154, 420, 421, 155,
+ 156, 409, 175, 475, 157, 226, 227, 158, 159, 228,
+ 255, 515, 161, 229, 230
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -987,336 +987,311 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 77, 372, 124, 96, 174, 78, 183, 188, 166, 163,
- 334, 508, 196, 463, 256, 173, 97, 177, 264, 168,
- 178, 468, 256, 124, 543, 553, 571, 179, 181, 382,
- 474, 353, 276, 256, 521, 522, 523, 89, 90, 309,
- 167, 185, 277, 411, 388, 256, 310, 487, 412, 187,
- 383, 189, 570, 596, 196, 206, 207, 389, 124, 186,
- 311, 256, 202, 252, 253, 201, 313, 312, 203, 77,
- 562, 563, 77, 314, 161, 191, 165, 78, 441, 170,
- 171, 509, 98, 91, 169, 92, 264, 93, 315, 94,
- 329, 317, 180, 161, 330, 316, 279, 443, 318, 205,
- 431, 593, 594, 95, 233, 463, 575, 576, 577, 578,
- 579, 580, 581, 582, 583, 584, 585, 586, 587, 588,
- 589, 590, 204, 264, 234, 319, 244, 553, 184, 250,
- 251, 252, 253, 235, 218, 237, 238, 239, 240, 227,
- 192, 267, 264, 380, 381, 244, 265, 266, 461, 600,
- 553, 259, 463, 554, 197, 198, 199, 200, 124, 233,
- 544, 289, 273, 328, 275, 249, 250, 251, 252, 253,
- 560, 561, 562, 563, 268, 505, 269, 280, 124, 489,
- 463, 281, 247, 248, 249, 250, 251, 252, 253, 283,
- 325, 284, 559, 560, 561, 562, 563, 306, 208, 209,
- 285, 197, 198, 199, 200, 507, 219, 288, 290, 223,
- 320, 592, 496, 497, 498, 499, 326, 301, 502, 302,
- 599, 303, 327, 304, 395, 331, 332, 260, 548, 549,
- 375, 550, 335, 527, 274, 553, 385, 401, 554, 555,
- 556, 258, 414, 440, 602, 467, 469, 470, 471, 258,
- 485, 377, 377, 377, 506, 328, 292, 517, 525, 526,
- 258, 77, 173, 173, 173, 536, 374, 379, 379, 379,
- 537, 542, 258, 539, 545, 557, 558, 559, 560, 561,
- 562, 563, 547, 568, 565, 569, 77, 77, 258, 572,
- 509, 195, 195, 591, 597, 603, 604, 605, 606, 190,
+ 77, 173, 123, 369, 186, 78, 181, 96, 165, 262,
+ 331, 504, 459, 162, 97, 172, 567, 262, 89, 90,
+ 176, 539, 274, 123, 379, 231, 185, 384, 464, 325,
+ 167, 350, 275, 517, 518, 519, 166, 470, 177, 179,
+ 385, 183, 407, 592, 549, 380, 187, 408, 549, 566,
+ 306, 203, 326, 483, 250, 251, 327, 307, 123, 184,
+ 248, 249, 250, 251, 91, 231, 92, 308, 93, 77,
+ 94, 200, 77, 160, 309, 164, 199, 78, 316, 437,
+ 98, 505, 201, 168, 95, 317, 189, 556, 557, 558,
+ 559, 178, 160, 558, 559, 310, 322, 312, 439, 427,
+ 377, 378, 311, 459, 313, 571, 572, 573, 574, 575,
+ 576, 577, 578, 579, 580, 581, 582, 583, 584, 585,
+ 586, 169, 170, 314, 202, 262, 232, 182, 242, 233,
+ 315, 194, 257, 216, 235, 236, 237, 238, 225, 190,
+ 265, 262, 589, 590, 242, 263, 264, 457, 596, 266,
+ 459, 324, 267, 195, 196, 197, 198, 123, 298, 286,
+ 299, 271, 300, 273, 301, 277, 540, 247, 248, 249,
+ 250, 251, 194, 204, 205, 501, 123, 485, 459, 278,
+ 280, 245, 246, 247, 248, 249, 250, 251, 492, 493,
+ 494, 495, 281, 282, 498, 303, 206, 207, 285, 195,
+ 196, 197, 198, 287, 217, 503, 328, 221, 323, 329,
+ 332, 254, 372, 397, 382, 410, 436, 588, 391, 254,
+ 463, 465, 466, 467, 481, 258, 595, 544, 545, 254,
+ 546, 325, 272, 523, 549, 502, 256, 550, 551, 552,
+ 513, 254, 521, 522, 256, 532, 374, 374, 374, 549,
+ 598, 533, 550, 289, 256, 535, 538, 254, 541, 77,
+ 172, 172, 172, 543, 371, 561, 256, 564, 565, 376,
+ 376, 376, 505, 587, 553, 554, 555, 556, 557, 558,
+ 559, 568, 256, 77, 77, 593, 188, 601, 193, 193,
+ 599, 555, 556, 557, 558, 559, 600, 333, 334, 335,
336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 483, 182, 486,
- 511, 437, 538, 308, 0, 340, 341, 342, 344, 345,
- 427, 0, 0, 195, 195, 195, 195, 438, 0, 210,
- 0, 386, 387, 0, 0, 394, 220, 221, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 404, 0, 406,
- 0, 408, 0, 410, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 77, 515, 77, 0, 0, 0, 0,
- 482, 0, 0, 0, 77, 0, 0, 0, 432, 433,
- 0, 434, 0, 0, 516, 439, 0, 0, 442, 77,
- 0, 77, 237, 238, 239, 240, 262, 263, 0, 264,
- 0, 0, 244, 265, 266, 0, 0, 444, 445, 446,
+ 346, 347, 348, 349, 479, 602, 180, 482, 433, 507,
+ 534, 434, 337, 338, 339, 341, 342, 423, 0, 193,
+ 193, 193, 193, 305, 0, 208, 0, 0, 383, 0,
+ 0, 390, 218, 219, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 400, 0, 402, 0, 404, 0, 406,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 0, 77, 0, 0, 0, 478, 0, 0, 0,
+ 0, 77, 0, 0, 428, 429, 0, 430, 0, 0,
+ 259, 435, 0, 0, 438, 77, 0, 77, 0, 235,
+ 236, 237, 238, 260, 261, 0, 262, 0, 0, 242,
+ 263, 264, 0, 440, 441, 442, 443, 444, 445, 446,
447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 472, 473, 0, 0, 247,
- 248, 249, 250, 251, 252, 253, 0, 524, 0, 0,
- 0, 0, 0, 0, 293, 77, 0, 77, 0, 0,
- 294, 0, 513, 0, 124, 0, 0, 495, 237, 238,
- 239, 240, 262, 263, 0, 264, 0, 0, 244, 265,
- 266, 0, 0, 0, 0, 403, 0, 405, 0, 407,
- 0, 409, 0, 439, 0, 0, 0, 0, 77, 0,
- 0, 0, 77, 541, 77, 0, 0, 0, 567, 0,
- 0, 426, 426, 428, 429, 247, 248, 249, 250, 251,
- 252, 253, 0, 0, 0, 0, 0, 0, 0, 0,
- 77, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 520, 520, 520, 520, 0,
- 0, 0, 0, 0, 0, 77, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 0, 0, 0, 0, 546,
- 0, 0, 0, 0, 0, 295, 601, 480, 0, 0,
- 0, 296, 0, 0, 0, 0, 0, 0, 77, 237,
- 238, 239, 240, 262, 263, 0, 264, 0, 573, 244,
- 265, 266, 0, 0, 0, 494, 0, 0, 0, 0,
- 0, 500, 501, 0, 503, 504, 0, 0, 520, 520,
- 520, 520, 520, 520, 520, 520, 520, 520, 520, 520,
- 520, 520, 520, 520, 0, 0, 247, 248, 249, 250,
- 251, 252, 253, 0, 0, 0, 237, 238, 239, 240,
- 262, 263, 0, 264, 0, 0, 244, 265, 266, 0,
- 0, 520, 0, 0, 0, 0, 0, 518, 518, 518,
- 518, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 528, 529, 530, 531, 0, 0, 532, 533,
- 534, 535, 0, 247, 248, 249, 250, 251, 252, 253,
- 0, 297, 323, 0, 324, 0, 0, 298, 0, 0,
- 0, 0, 0, 0, 0, 237, 238, 239, 240, 262,
- 263, 0, 264, 0, 0, 244, 265, 266, 0, 500,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 518, 518, 518, 518, 518, 518, 518, 518, 518, 518,
- 518, 518, 518, 518, 518, 518, 0, 0, 0, 0,
- 0, 595, 247, 248, 249, 250, 251, 252, 253, 0,
- 127, 128, 1, 224, 225, 99, 131, 132, 133, 134,
- 100, 7, 101, 518, 102, 9, 103, 104, 105, 106,
- 14, 15, 107, 17, 108, 19, 20, 109, 110, 111,
- 112, 24, 113, 26, 27, 114, 115, 116, 117, 0,
- 0, 0, 0, 32, 33, 137, 35, 36, 37, 0,
- 38, 39, 138, 41, 139, 43, 140, 45, 141, 47,
- 48, 49, 50, 51, 52, 0, 53, 54, 55, 56,
- 57, 58, 142, 60, 61, 143, 63, 64, 118, 119,
- 120, 121, 0, 0, 0, 122, 0, 0, 0, 144,
- 145, 0, 0, 0, 0, 0, 164, 0, 147, 0,
- 226, 127, 128, 1, 129, 130, 99, 131, 132, 133,
- 134, 100, 7, 101, 0, 102, 9, 103, 104, 105,
- 106, 14, 15, 107, 17, 108, 236, 20, 109, 110,
- 111, 112, 24, 113, 26, 27, 114, 115, 116, 117,
- 237, 238, 239, 240, 241, 242, 137, 243, 36, 37,
- 244, 245, 246, 138, 41, 139, 43, 140, 45, 141,
+ 0, 468, 469, 0, 0, 511, 245, 246, 247, 248,
+ 249, 250, 251, 520, 0, 0, 0, 0, 0, 0,
+ 0, 77, 0, 77, 0, 512, 0, 0, 509, 0,
+ 123, 0, 491, 235, 236, 237, 238, 260, 261, 0,
+ 262, 0, 0, 242, 263, 264, 0, 0, 0, 399,
+ 0, 401, 0, 403, 0, 405, 0, 0, 435, 0,
+ 0, 0, 0, 0, 77, 0, 0, 0, 77, 537,
+ 77, 0, 0, 0, 563, 422, 422, 424, 425, 0,
+ 245, 246, 247, 248, 249, 250, 251, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 77, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 516, 516, 516,
+ 516, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
+ 77, 0, 0, 0, 542, 0, 0, 0, 0, 0,
+ 0, 476, 597, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 77, 0, 0, 0, 0, 0,
+ 0, 0, 0, 569, 0, 0, 0, 0, 490, 0,
+ 0, 0, 0, 0, 496, 497, 0, 499, 500, 0,
+ 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
+ 516, 516, 516, 516, 516, 516, 290, 0, 0, 0,
+ 0, 0, 291, 0, 0, 0, 0, 0, 0, 0,
+ 235, 236, 237, 238, 260, 261, 0, 262, 0, 0,
+ 242, 263, 264, 516, 0, 0, 0, 0, 0, 0,
+ 514, 514, 514, 514, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 524, 525, 526, 527, 0,
+ 0, 528, 529, 530, 531, 0, 0, 245, 246, 247,
+ 248, 249, 250, 251, 292, 0, 0, 0, 0, 0,
+ 293, 0, 0, 0, 0, 0, 0, 0, 235, 236,
+ 237, 238, 260, 261, 0, 262, 0, 0, 242, 263,
+ 264, 0, 496, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 514, 514, 514, 514, 514, 514, 514,
+ 514, 514, 514, 514, 514, 514, 514, 514, 514, 0,
+ 0, 0, 0, 0, 591, 245, 246, 247, 248, 249,
+ 250, 251, 0, 126, 127, 1, 222, 223, 99, 130,
+ 131, 132, 133, 100, 7, 101, 514, 102, 9, 103,
+ 104, 105, 106, 14, 15, 107, 17, 108, 19, 20,
+ 109, 110, 111, 112, 24, 0, 26, 27, 113, 114,
+ 115, 116, 0, 0, 0, 0, 32, 33, 136, 35,
+ 36, 37, 0, 38, 39, 137, 41, 138, 43, 139,
+ 45, 140, 47, 48, 49, 50, 51, 52, 0, 53,
+ 54, 55, 56, 57, 58, 141, 60, 61, 142, 63,
+ 64, 117, 118, 119, 120, 0, 0, 0, 121, 0,
+ 0, 0, 143, 144, 0, 0, 0, 0, 0, 163,
+ 0, 146, 0, 224, 126, 127, 1, 128, 129, 99,
+ 130, 131, 132, 133, 100, 7, 101, 0, 102, 9,
+ 103, 104, 105, 106, 14, 15, 107, 17, 108, 234,
+ 20, 109, 110, 111, 112, 24, 0, 26, 27, 113,
+ 114, 115, 116, 235, 236, 237, 238, 239, 240, 136,
+ 241, 36, 37, 242, 243, 244, 137, 41, 138, 43,
+ 139, 45, 140, 47, 48, 49, 50, 51, 52, 0,
+ 53, 54, 55, 56, 57, 58, 141, 60, 61, 142,
+ 63, 64, 117, 118, 119, 120, 0, 0, 0, 121,
+ 245, 246, 247, 248, 249, 250, 251, 0, 0, 252,
+ 163, 0, 146, 126, 127, 1, 128, 129, 99, 130,
+ 131, 132, 133, 100, 7, 101, 0, 102, 9, 103,
+ 104, 105, 106, 14, 268, 107, 17, 108, 19, 20,
+ 109, 110, 111, 112, 24, 0, 26, 27, 113, 114,
+ 115, 116, 235, 236, 237, 238, 239, 240, 136, 241,
+ 269, 270, 242, 243, 244, 137, 41, 138, 43, 139,
+ 45, 140, 47, 48, 49, 50, 51, 52, 0, 53,
+ 54, 55, 56, 57, 58, 141, 60, 61, 142, 63,
+ 64, 117, 118, 119, 120, 0, 0, 0, 121, 245,
+ 246, 247, 248, 249, 250, 251, 0, 0, 252, 163,
+ 0, 146, 126, 127, 1, 128, 129, 99, 130, 131,
+ 132, 133, 100, 7, 101, 0, 102, 9, 103, 104,
+ 105, 106, 14, 15, 107, 17, 108, 19, 20, 109,
+ 110, 111, 112, 24, 0, 279, 27, 113, 114, 115,
+ 116, 235, 236, 237, 238, 239, 240, 136, 241, 36,
+ 37, 242, 243, 244, 137, 41, 138, 43, 139, 45,
+ 140, 47, 48, 49, 50, 51, 52, 0, 53, 54,
+ 55, 56, 57, 58, 141, 60, 61, 142, 63, 64,
+ 117, 118, 119, 120, 0, 0, 0, 121, 245, 246,
+ 247, 248, 249, 250, 251, 0, 0, 252, 163, 0,
+ 146, 126, 127, 1, 128, 129, 99, 130, 131, 132,
+ 133, 100, 7, 101, 0, 102, 9, 103, 104, 105,
+ 106, 14, 15, 107, 17, 108, 19, 20, 109, 110,
+ 111, 112, 24, 0, 26, 27, 113, 114, 115, 116,
+ 235, 236, 237, 238, 239, 240, 136, 241, 36, 37,
+ 242, 243, 244, 137, 41, 138, 43, 139, 45, 140,
47, 48, 49, 50, 51, 52, 0, 53, 54, 55,
- 56, 57, 58, 142, 60, 61, 143, 63, 64, 118,
- 119, 120, 121, 0, 0, 0, 122, 247, 248, 249,
- 250, 251, 252, 253, 0, 0, 254, 164, 0, 147,
- 127, 128, 1, 129, 130, 99, 131, 132, 133, 134,
+ 56, 57, 58, 141, 60, 61, 142, 63, 64, 117,
+ 118, 119, 120, 0, 0, 0, 121, 245, 246, 247,
+ 248, 249, 250, 251, 0, 0, 252, 163, 0, 146,
+ 126, 127, 1, 128, 129, 99, 130, 131, 132, 133,
100, 7, 101, 0, 102, 9, 103, 104, 105, 106,
- 14, 270, 107, 17, 108, 19, 20, 109, 110, 111,
- 112, 24, 113, 26, 27, 114, 115, 116, 117, 237,
- 238, 239, 240, 241, 242, 137, 243, 271, 272, 244,
- 245, 246, 138, 41, 139, 43, 140, 45, 141, 47,
+ 14, 15, 107, 17, 108, 304, 20, 109, 110, 111,
+ 112, 24, 0, 26, 27, 113, 114, 115, 116, 235,
+ 236, 237, 238, 239, 240, 136, 241, 36, 37, 242,
+ 243, 244, 137, 41, 138, 43, 139, 45, 140, 47,
48, 49, 50, 51, 52, 0, 53, 54, 55, 56,
- 57, 58, 142, 60, 61, 143, 63, 64, 118, 119,
- 120, 121, 0, 0, 0, 122, 247, 248, 249, 250,
- 251, 252, 253, 0, 0, 254, 164, 0, 147, 127,
- 128, 1, 129, 130, 99, 131, 132, 133, 134, 100,
+ 57, 58, 141, 60, 61, 142, 63, 64, 117, 118,
+ 119, 120, 0, 0, 0, 121, 245, 246, 247, 248,
+ 249, 250, 251, 0, 0, 0, 163, 0, 146, 126,
+ 127, 1, 128, 129, 99, 130, 131, 132, 133, 100,
7, 101, 0, 102, 9, 103, 104, 105, 106, 14,
15, 107, 17, 108, 19, 20, 109, 110, 111, 112,
- 24, 113, 282, 27, 114, 115, 116, 117, 237, 238,
- 239, 240, 241, 242, 137, 243, 36, 37, 244, 245,
- 246, 138, 41, 139, 43, 140, 45, 141, 47, 48,
+ 24, 0, 26, 27, 113, 114, 115, 116, 0, 0,
+ 0, 0, 32, 33, 136, 35, 36, 37, 0, 38,
+ 39, 137, 41, 138, 43, 139, 45, 140, 47, 48,
49, 50, 51, 52, 0, 53, 54, 55, 56, 57,
- 58, 142, 60, 61, 143, 63, 64, 118, 119, 120,
- 121, 0, 0, 0, 122, 247, 248, 249, 250, 251,
- 252, 253, 0, 0, 254, 164, 0, 147, 127, 128,
- 1, 129, 130, 99, 131, 132, 133, 134, 100, 7,
+ 58, 141, 60, 61, 142, 63, 64, 117, 118, 119,
+ 120, 0, 0, 0, 121, 0, 0, 0, 143, 144,
+ 0, 0, 0, 0, 0, 163, 220, 146, 126, 127,
+ 1, 128, 129, 99, 130, 131, 132, 133, 100, 7,
101, 0, 102, 9, 103, 104, 105, 106, 14, 15,
107, 17, 108, 19, 20, 109, 110, 111, 112, 24,
- 113, 26, 27, 114, 115, 116, 117, 237, 238, 239,
- 240, 241, 242, 137, 243, 36, 37, 244, 245, 246,
- 138, 41, 139, 43, 140, 45, 141, 47, 48, 49,
+ 0, 26, 27, 113, 114, 115, 116, 0, 0, 0,
+ 0, 32, 33, 136, 35, 36, 37, 0, 38, 39,
+ 137, 41, 138, 43, 139, 45, 140, 47, 48, 49,
50, 51, 52, 0, 53, 54, 55, 56, 57, 58,
- 142, 60, 61, 143, 63, 64, 118, 119, 120, 121,
- 0, 0, 0, 122, 247, 248, 249, 250, 251, 252,
- 253, 0, 0, 254, 164, 0, 147, 127, 128, 1,
- 129, 130, 99, 131, 132, 133, 134, 100, 7, 101,
+ 141, 60, 61, 142, 63, 64, 117, 118, 119, 120,
+ 0, 0, 0, 121, 0, 0, 0, 143, 144, 0,
+ 0, 0, 0, 0, 163, 288, 146, 126, 127, 1,
+ 128, 129, 99, 130, 131, 132, 133, 100, 7, 101,
0, 102, 9, 103, 104, 105, 106, 14, 15, 107,
- 17, 108, 307, 20, 109, 110, 111, 112, 24, 113,
- 26, 27, 114, 115, 116, 117, 237, 238, 239, 240,
- 241, 242, 137, 243, 36, 37, 244, 245, 246, 138,
- 41, 139, 43, 140, 45, 141, 47, 48, 49, 50,
- 51, 52, 0, 53, 54, 55, 56, 57, 58, 142,
- 60, 61, 143, 63, 64, 118, 119, 120, 121, 0,
- 0, 0, 122, 247, 248, 249, 250, 251, 252, 253,
- 0, 0, 0, 164, 0, 147, 127, 128, 1, 129,
- 130, 99, 131, 132, 133, 134, 100, 7, 101, 0,
+ 17, 108, 19, 20, 109, 110, 111, 112, 24, 0,
+ 26, 27, 113, 114, 115, 116, 0, 0, 0, 0,
+ 32, 33, 136, 35, 36, 37, 0, 38, 39, 137,
+ 41, 138, 43, 139, 45, 140, 47, 48, 49, 50,
+ 51, 52, 0, 53, 54, 55, 56, 57, 58, 141,
+ 60, 61, 142, 63, 64, 117, 118, 119, 120, 0,
+ 0, 0, 121, 0, 0, 0, 143, 144, 0, 0,
+ 0, 0, 0, 163, 330, 146, 126, 127, 1, 128,
+ 129, 99, 130, 131, 132, 133, 100, 7, 101, 0,
102, 9, 103, 104, 105, 106, 14, 15, 107, 17,
- 108, 19, 20, 109, 110, 111, 112, 24, 113, 26,
- 27, 114, 115, 116, 117, 0, 0, 0, 0, 32,
- 33, 137, 35, 36, 37, 0, 38, 39, 138, 41,
- 139, 43, 140, 45, 141, 47, 48, 49, 50, 51,
- 52, 0, 53, 54, 55, 56, 57, 58, 142, 60,
- 61, 143, 63, 64, 118, 119, 120, 121, 0, 0,
- 0, 122, 0, 0, 0, 144, 145, 0, 0, 0,
- 0, 0, 164, 222, 147, 127, 128, 1, 129, 130,
- 99, 131, 132, 133, 134, 100, 7, 101, 0, 102,
+ 108, 19, 20, 109, 110, 111, 112, 24, 0, 26,
+ 27, 113, 114, 115, 116, 0, 0, 0, 0, 32,
+ 33, 136, 35, 36, 37, 0, 38, 39, 137, 41,
+ 138, 43, 139, 45, 140, 47, 48, 49, 50, 51,
+ 52, 0, 53, 54, 55, 56, 57, 58, 141, 60,
+ 61, 142, 63, 64, 117, 118, 119, 120, 0, 0,
+ 0, 121, 0, 0, 0, 143, 144, 0, 0, 0,
+ 0, 0, 163, 426, 146, 126, 127, 1, 128, 129,
+ 99, 130, 131, 132, 133, 100, 7, 101, 0, 102,
9, 103, 104, 105, 106, 14, 15, 107, 17, 108,
- 19, 20, 109, 110, 111, 112, 24, 113, 26, 27,
- 114, 115, 116, 117, 0, 0, 0, 0, 32, 33,
- 137, 35, 36, 37, 0, 38, 39, 138, 41, 139,
- 43, 140, 45, 141, 47, 48, 49, 50, 51, 52,
- 0, 53, 54, 55, 56, 57, 58, 142, 60, 61,
- 143, 63, 64, 118, 119, 120, 121, 0, 0, 0,
- 122, 0, 0, 0, 144, 145, 0, 0, 0, 0,
- 0, 164, 291, 147, 127, 128, 1, 129, 130, 99,
- 131, 132, 133, 134, 100, 7, 101, 0, 102, 9,
- 103, 104, 105, 106, 14, 15, 107, 17, 108, 19,
- 20, 109, 110, 111, 112, 24, 113, 26, 27, 114,
- 115, 116, 117, 0, 0, 0, 0, 32, 33, 137,
- 35, 36, 37, 0, 38, 39, 138, 41, 139, 43,
- 140, 45, 141, 47, 48, 49, 50, 51, 52, 0,
- 53, 54, 55, 56, 57, 58, 142, 60, 61, 143,
- 63, 64, 118, 119, 120, 121, 0, 0, 0, 122,
- 0, 0, 0, 144, 145, 0, 0, 0, 0, 0,
- 164, 333, 147, 127, 128, 1, 129, 130, 99, 131,
- 132, 133, 134, 100, 7, 101, 0, 102, 9, 103,
+ 19, 20, 109, 110, 111, 112, 24, 0, 26, 27,
+ 113, 114, 115, 116, 0, 0, 0, 0, 32, 33,
+ 136, 35, 36, 37, 0, 38, 39, 137, 41, 138,
+ 43, 139, 45, 140, 47, 48, 49, 50, 51, 52,
+ 0, 53, 54, 55, 56, 57, 58, 141, 60, 61,
+ 142, 63, 64, 117, 118, 119, 120, 0, 0, 0,
+ 121, 0, 0, 0, 143, 144, 0, 0, 0, 0,
+ 0, 163, 484, 146, 126, 127, 1, 128, 129, 99,
+ 130, 131, 132, 133, 100, 7, 101, 0, 102, 134,
+ 103, 104, 105, 106, 14, 15, 107, 135, 108, 19,
+ 20, 109, 110, 111, 112, 24, 0, 26, 27, 113,
+ 114, 115, 116, 0, 0, 0, 0, 32, 33, 136,
+ 35, 36, 37, 0, 38, 39, 137, 41, 138, 43,
+ 139, 45, 140, 47, 48, 49, 50, 51, 52, 0,
+ 53, 54, 55, 56, 57, 58, 141, 60, 61, 142,
+ 63, 64, 117, 118, 119, 120, 0, 0, 0, 121,
+ 0, 0, 0, 143, 144, 0, 0, 0, 0, 0,
+ 145, 0, 146, 126, 127, 1, 128, 129, 99, 130,
+ 131, 132, 133, 100, 7, 101, 0, 102, 9, 103,
104, 105, 106, 14, 15, 107, 17, 108, 19, 20,
- 109, 110, 111, 112, 24, 113, 26, 27, 114, 115,
- 116, 117, 0, 0, 0, 0, 32, 33, 137, 35,
- 36, 37, 0, 38, 39, 138, 41, 139, 43, 140,
- 45, 141, 47, 48, 49, 50, 51, 52, 0, 53,
- 54, 55, 56, 57, 58, 142, 60, 61, 143, 63,
- 64, 118, 119, 120, 121, 0, 0, 0, 122, 0,
- 0, 0, 144, 145, 0, 0, 0, 0, 0, 164,
- 430, 147, 127, 128, 1, 129, 130, 99, 131, 132,
- 133, 134, 100, 7, 101, 0, 102, 9, 103, 104,
+ 109, 110, 111, 112, 24, 0, 26, 27, 113, 114,
+ 115, 116, 0, 0, 0, 0, 32, 33, 136, 35,
+ 36, 37, 0, 38, 39, 137, 41, 138, 43, 139,
+ 45, 140, 47, 48, 49, 50, 51, 52, 0, 53,
+ 54, 55, 56, 57, 58, 141, 60, 61, 142, 63,
+ 64, 117, 118, 119, 120, 0, 0, 0, 121, 0,
+ 0, 0, 143, 144, 0, 0, 0, 0, 0, 163,
+ 0, 146, 126, 127, 1, 128, 129, 99, 130, 131,
+ 132, 133, 100, 7, 101, 0, 102, 9, 103, 104,
105, 106, 14, 15, 107, 17, 108, 19, 20, 109,
- 110, 111, 112, 24, 113, 26, 27, 114, 115, 116,
- 117, 0, 0, 0, 0, 32, 33, 137, 35, 36,
- 37, 0, 38, 39, 138, 41, 139, 43, 140, 45,
- 141, 47, 48, 49, 50, 51, 52, 0, 53, 54,
- 55, 56, 57, 58, 142, 60, 61, 143, 63, 64,
- 118, 119, 120, 121, 0, 0, 0, 122, 0, 0,
- 0, 144, 145, 0, 0, 0, 0, 0, 164, 488,
- 147, 127, 128, 1, 129, 130, 99, 131, 132, 133,
- 134, 100, 7, 101, 0, 102, 135, 103, 104, 105,
- 106, 14, 15, 107, 136, 108, 19, 20, 109, 110,
- 111, 112, 24, 113, 26, 27, 114, 115, 116, 117,
- 0, 0, 0, 0, 32, 33, 137, 35, 36, 37,
- 0, 38, 39, 138, 41, 139, 43, 140, 45, 141,
+ 110, 111, 112, 24, 0, 26, 27, 113, 114, 115,
+ 116, 0, 0, 0, 0, 32, 33, 136, 35, 36,
+ 37, 0, 38, 39, 137, 41, 138, 43, 139, 45,
+ 140, 47, 48, 49, 50, 51, 52, 0, 53, 54,
+ 55, 56, 57, 58, 141, 60, 61, 142, 63, 64,
+ 117, 118, 119, 120, 0, 0, 0, 121, 0, 0,
+ 0, 143, 144, 0, 0, 0, 0, 0, 145, 0,
+ 146, 126, 127, 1, 128, 129, 99, 130, 131, 132,
+ 133, 100, 7, 101, 0, 102, 9, 103, 104, 105,
+ 106, 14, 15, 107, 17, 108, 19, 20, 109, 110,
+ 111, 112, 24, 0, 26, 27, 113, 114, 115, 116,
+ 0, 0, 0, 0, 32, 33, 136, 35, 36, 37,
+ 0, 38, 39, 137, 41, 138, 43, 139, 45, 140,
47, 48, 49, 50, 51, 52, 0, 53, 54, 55,
- 56, 57, 58, 142, 60, 61, 143, 63, 64, 118,
- 119, 120, 121, 0, 0, 0, 122, 0, 0, 0,
- 144, 145, 0, 0, 0, 0, 0, 146, 0, 147,
- 127, 128, 1, 129, 130, 99, 131, 132, 133, 134,
+ 56, 57, 58, 141, 60, 61, 62, 63, 64, 117,
+ 118, 119, 120, 0, 0, 0, 121, 0, 0, 0,
+ 143, 144, 0, 0, 0, 0, 0, 191, 0, 146,
+ 126, 127, 1, 128, 129, 99, 130, 131, 132, 133,
100, 7, 101, 0, 102, 9, 103, 104, 105, 106,
14, 15, 107, 17, 108, 19, 20, 109, 110, 111,
- 112, 24, 113, 26, 27, 114, 115, 116, 117, 0,
- 0, 0, 0, 32, 33, 137, 35, 36, 37, 0,
- 38, 39, 138, 41, 139, 43, 140, 45, 141, 47,
+ 112, 24, 0, 26, 27, 113, 114, 115, 116, 0,
+ 0, 0, 0, 32, 33, 136, 35, 36, 37, 0,
+ 38, 39, 137, 41, 138, 43, 139, 45, 140, 47,
48, 49, 50, 51, 52, 0, 53, 54, 55, 56,
- 57, 58, 142, 60, 61, 143, 63, 64, 118, 119,
- 120, 121, 0, 0, 0, 122, 0, 0, 0, 144,
- 145, 0, 0, 0, 0, 0, 164, 0, 147, 127,
- 128, 1, 129, 130, 99, 131, 132, 133, 134, 100,
+ 57, 58, 141, 60, 61, 62, 63, 64, 117, 118,
+ 119, 120, 0, 0, 0, 121, 0, 0, 0, 143,
+ 144, 0, 0, 0, 0, 0, 163, 0, 146, 126,
+ 127, 1, 128, 129, 99, 130, 131, 132, 133, 100,
7, 101, 0, 102, 9, 103, 104, 105, 106, 14,
15, 107, 17, 108, 19, 20, 109, 110, 111, 112,
- 24, 113, 26, 27, 114, 115, 116, 117, 0, 0,
- 0, 0, 32, 33, 137, 35, 36, 37, 0, 38,
- 39, 138, 41, 139, 43, 140, 45, 141, 47, 48,
- 49, 50, 51, 52, 0, 53, 54, 55, 56, 57,
- 58, 142, 60, 61, 143, 63, 64, 118, 119, 120,
- 121, 0, 0, 0, 122, 0, 0, 0, 144, 145,
- 0, 0, 0, 0, 0, 146, 0, 147, 127, 128,
- 1, 129, 130, 99, 131, 132, 133, 134, 100, 7,
+ 24, 0, 26, 27, 113, 114, 115, 116, 0, 0,
+ 0, 0, 32, 33, 136, 35, 36, 37, 0, 38,
+ 39, 137, 411, 138, 412, 139, 413, 140, 414, 48,
+ 49, 50, 51, 52, 0, 53, 54, 415, 416, 417,
+ 58, 141, 60, 418, 419, 63, 64, 117, 118, 119,
+ 120, 0, 0, 0, 121, 0, 0, 0, 143, 144,
+ 0, 0, 0, 0, 0, 163, 0, 146, 126, 127,
+ 1, 128, 129, 99, 130, 131, 132, 133, 100, 7,
101, 0, 102, 9, 103, 104, 105, 106, 14, 15,
107, 17, 108, 19, 20, 109, 110, 111, 112, 24,
- 113, 26, 27, 114, 115, 116, 117, 0, 0, 0,
- 0, 32, 33, 137, 35, 36, 37, 0, 38, 39,
- 138, 41, 139, 43, 140, 45, 141, 47, 48, 49,
- 50, 51, 52, 0, 53, 54, 55, 56, 57, 58,
- 142, 60, 61, 62, 63, 64, 118, 119, 120, 121,
- 0, 0, 0, 122, 0, 0, 0, 144, 145, 0,
- 0, 0, 0, 0, 193, 0, 147, 127, 128, 1,
- 129, 130, 99, 131, 132, 133, 134, 100, 7, 101,
+ 0, 26, 27, 113, 114, 115, 116, 0, 0, 0,
+ 0, 32, 33, 136, 35, 36, 37, 0, 38, 39,
+ 137, 41, 138, 43, 139, 45, 140, 47, 48, 49,
+ 50, 51, 52, 0, 53, 54, 415, 416, 57, 58,
+ 141, 60, 418, 419, 63, 64, 117, 118, 119, 120,
+ 0, 0, 0, 121, 0, 0, 0, 143, 144, 0,
+ 0, 0, 0, 0, 163, 0, 146, 126, 127, 1,
+ 128, 129, 99, 130, 131, 132, 133, 100, 7, 101,
0, 102, 9, 103, 104, 105, 106, 14, 15, 107,
- 17, 108, 19, 20, 109, 110, 111, 112, 24, 113,
- 26, 27, 114, 115, 116, 117, 0, 0, 0, 0,
- 32, 33, 137, 35, 36, 37, 0, 38, 39, 138,
- 41, 139, 43, 140, 45, 141, 47, 48, 49, 50,
- 51, 52, 0, 53, 54, 55, 56, 57, 58, 142,
- 60, 61, 62, 63, 64, 118, 119, 120, 121, 0,
- 0, 0, 122, 0, 0, 0, 144, 145, 0, 0,
- 0, 0, 0, 164, 0, 147, 127, 128, 1, 129,
- 130, 99, 131, 132, 133, 134, 100, 7, 101, 0,
+ 17, 108, 19, 20, 109, 110, 111, 112, 24, 0,
+ 26, 27, 113, 114, 115, 116, 0, 0, 0, 0,
+ 32, 33, 136, 35, 36, 37, 0, 38, 39, 137,
+ 41, 138, 43, 139, 45, 140, 47, 48, 49, 50,
+ 51, 52, 0, 53, 54, 471, 472, 57, 58, 141,
+ 60, 473, 474, 63, 64, 117, 118, 119, 120, 0,
+ 0, 0, 121, 0, 0, 0, 143, 144, 0, 0,
+ 0, 0, 0, 163, 0, 146, 126, 127, 1, 128,
+ 129, 99, 130, 131, 132, 133, 100, 7, 101, 0,
102, 9, 103, 104, 105, 106, 14, 15, 107, 17,
- 108, 19, 20, 109, 110, 111, 112, 24, 113, 26,
- 27, 114, 115, 116, 117, 0, 0, 0, 0, 32,
- 33, 137, 35, 36, 37, 0, 38, 39, 138, 415,
- 139, 416, 140, 417, 141, 418, 48, 49, 50, 51,
- 52, 0, 53, 54, 419, 420, 421, 58, 142, 60,
- 422, 423, 63, 64, 118, 119, 120, 121, 0, 0,
- 0, 122, 0, 0, 0, 144, 145, 0, 0, 0,
- 0, 0, 164, 0, 147, 127, 128, 1, 129, 130,
- 99, 131, 132, 133, 134, 100, 7, 101, 0, 102,
+ 108, 19, 20, 109, 110, 111, 112, 24, 0, 26,
+ 27, 113, 114, 115, 116, 0, 0, 0, 0, 0,
+ 0, 136, 35, 36, 37, 0, 38, 39, 137, 41,
+ 138, 43, 139, 45, 140, 47, 48, 49, 50, 51,
+ 52, 0, 53, 54, 55, 56, 57, 58, 141, 60,
+ 61, 142, 63, 64, 117, 118, 119, 120, 0, 0,
+ 0, 121, 0, 0, 0, 143, 144, 0, 0, 0,
+ 0, 0, 163, 0, 146, 126, 127, 1, 128, 129,
+ 99, 130, 131, 132, 133, 100, 7, 101, 0, 102,
9, 103, 104, 105, 106, 14, 15, 107, 17, 108,
- 19, 20, 109, 110, 111, 112, 24, 113, 26, 27,
- 114, 115, 116, 117, 0, 0, 0, 0, 32, 33,
- 137, 35, 36, 37, 0, 38, 39, 138, 41, 139,
- 43, 140, 45, 141, 47, 48, 49, 50, 51, 52,
- 0, 53, 54, 419, 420, 57, 58, 142, 60, 422,
- 423, 63, 64, 118, 119, 120, 121, 0, 0, 0,
- 122, 0, 0, 0, 144, 145, 0, 0, 0, 0,
- 0, 164, 0, 147, 127, 128, 1, 129, 130, 99,
- 131, 132, 133, 134, 100, 7, 101, 0, 102, 9,
+ 19, 20, 109, 110, 111, 112, 24, 0, 26, 27,
+ 113, 114, 115, 116, 0, 0, 0, 0, 0, 0,
+ 136, 35, 36, 37, 0, 0, 0, 137, 41, 138,
+ 43, 139, 45, 140, 47, 48, 49, 50, 51, 52,
+ 0, 53, 54, 55, 56, 57, 58, 141, 60, 61,
+ 142, 63, 64, 117, 118, 119, 120, 0, 0, 0,
+ 121, 0, 0, 0, 143, 144, 0, 0, 0, 0,
+ 0, 163, 0, 146, 126, 127, 1, 128, 129, 99,
+ 130, 131, 132, 133, 100, 7, 101, 0, 102, 9,
103, 104, 105, 106, 14, 15, 107, 17, 108, 19,
- 20, 109, 110, 111, 112, 24, 113, 26, 27, 114,
- 115, 116, 117, 0, 0, 0, 0, 32, 33, 137,
- 35, 36, 37, 0, 38, 39, 138, 41, 139, 43,
- 140, 45, 141, 47, 48, 49, 50, 51, 52, 0,
- 53, 54, 475, 476, 57, 58, 142, 60, 477, 478,
- 63, 64, 118, 119, 120, 121, 0, 0, 0, 122,
- 0, 0, 0, 144, 145, 0, 0, 0, 0, 0,
- 164, 0, 147, 127, 128, 1, 129, 130, 99, 131,
- 132, 133, 134, 100, 7, 101, 0, 102, 9, 103,
- 104, 105, 106, 14, 15, 107, 17, 108, 19, 20,
- 109, 110, 111, 112, 24, 113, 26, 27, 114, 115,
- 116, 117, 0, 0, 0, 0, 0, 0, 137, 35,
- 36, 37, 0, 38, 39, 138, 41, 139, 43, 140,
- 45, 141, 47, 48, 49, 50, 51, 52, 0, 53,
- 54, 55, 56, 57, 58, 142, 60, 61, 143, 63,
- 64, 118, 119, 120, 121, 0, 0, 0, 122, 0,
- 0, 0, 144, 145, 0, 0, 0, 0, 0, 164,
- 0, 147, 127, 128, 1, 129, 130, 99, 131, 132,
- 133, 134, 100, 7, 101, 0, 102, 9, 103, 104,
- 105, 106, 14, 15, 107, 17, 108, 19, 20, 109,
- 110, 111, 112, 24, 113, 26, 27, 114, 115, 116,
- 117, 0, 0, 0, 0, 0, 0, 137, 35, 36,
- 37, 0, 0, 0, 138, 41, 139, 43, 140, 45,
- 141, 47, 48, 49, 50, 51, 52, 0, 53, 54,
- 55, 56, 57, 58, 142, 60, 61, 143, 63, 64,
- 118, 119, 120, 121, 0, 0, 0, 122, 0, 0,
- 0, 144, 145, 0, 0, 0, 0, 0, 164, 0,
- 147, 127, 128, 1, 129, 130, 99, 131, 132, 133,
- 134, 100, 7, 101, 0, 102, 9, 103, 104, 105,
- 106, 14, 15, 107, 17, 108, 19, 20, 109, 110,
- 111, 112, 24, 113, 26, 27, 114, 115, 116, 117,
- 0, 0, 0, 0, 0, 0, 137, 0, 36, 37,
- 0, 0, 0, 138, 41, 139, 43, 140, 45, 141,
- 47, 48, 49, 50, 51, 52, 0, 53, 54, 55,
- 56, 57, 58, 142, 60, 61, 143, 63, 64, 118,
- 119, 120, 121, 0, 0, 0, 122, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1, 164, 0, 147,
- 2, 3, 4, 5, 6, 7, 0, 0, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 0, 24, 25, 26, 27, 28,
- 29, 30, 31, 0, 0, 0, 0, 32, 33, 34,
- 35, 36, 37, 0, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 0,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 0, 68, 1, 0, 69,
- 0, 2, 3, 4, 5, 6, 7, 0, 70, 8,
- 9, 10, 11, 12, 13, 14, 15, 0, 17, 18,
- 19, 20, 21, 22, 23, 0, 24, 25, 26, 27,
- 0, 29, 30, 31, 0, 0, 0, 0, 32, 33,
- 34, 35, 36, 37, 0, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 0, 53, 54, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 0, 0, 68, 1, 0,
- 69, 0, 2, 3, 4, 5, 6, 7, 0, 373,
- 8, 9, 10, 11, 12, 13, 14, 15, 0, 17,
- 18, 19, 20, 21, 22, 23, 0, 24, 25, 26,
- 27, 0, 29, 30, 31, 0, 0, 0, 0, 32,
- 33, 34, 35, 36, 37, 0, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 0, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 0, 0, 68, 1,
- 0, 69, 0, 2, 3, 4, 5, 6, 7, 0,
- 396, 8, 9, 10, 11, 12, 13, 14, 15, 0,
+ 20, 109, 110, 111, 112, 24, 0, 26, 27, 113,
+ 114, 115, 116, 0, 0, 0, 0, 0, 0, 136,
+ 0, 36, 37, 0, 0, 0, 137, 41, 138, 43,
+ 139, 45, 140, 47, 48, 49, 50, 51, 52, 0,
+ 53, 54, 55, 56, 57, 58, 141, 60, 61, 142,
+ 63, 64, 117, 118, 119, 120, 0, 0, 0, 121,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 163, 0, 146, 2, 3, 4, 5, 6, 7, 0,
+ 0, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 0, 24, 25,
- 26, 27, 0, 29, 30, 31, 0, 0, 0, 0,
+ 26, 27, 28, 29, 30, 31, 0, 0, 0, 0,
32, 33, 34, 35, 36, 37, 0, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
51, 52, 0, 53, 54, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 0, 0, 68,
+ 60, 61, 62, 63, 64, 65, 66, 67, 0, 68,
1, 0, 69, 0, 2, 3, 4, 5, 6, 7,
- 0, 512, 8, 9, 10, 11, 12, 13, 14, 15,
+ 0, 70, 8, 9, 10, 11, 12, 13, 14, 15,
0, 17, 18, 19, 20, 21, 22, 23, 0, 24,
25, 26, 27, 0, 29, 30, 31, 0, 0, 0,
0, 32, 33, 34, 35, 36, 37, 0, 38, 39,
@@ -1324,219 +1299,276 @@ static const yytype_int16 yytable[] =
50, 51, 52, 0, 53, 54, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
68, 1, 0, 69, 0, 2, 3, 4, 5, 6,
- 7, 0, 540, 8, 9, 10, 11, 12, 13, 14,
+ 7, 0, 370, 8, 9, 10, 11, 12, 13, 14,
15, 0, 17, 18, 19, 20, 21, 22, 23, 0,
24, 25, 26, 27, 0, 29, 30, 31, 0, 0,
0, 0, 32, 33, 34, 35, 36, 37, 0, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 52, 0, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
- 0, 0, 0, 0, 69, 0, 0, 0, 0, 0,
- 0, 0, 0, 462, 1, 435, 436, 99, 2, 3,
- 4, 5, 100, 7, 101, 0, 102, 9, 103, 104,
- 105, 106, 14, 15, 107, 17, 108, 19, 20, 109,
- 110, 111, 112, 24, 113, 26, 27, 114, 115, 116,
- 117, 0, 0, 0, 0, 32, 33, 34, 35, 36,
+ 0, 68, 1, 0, 69, 0, 2, 3, 4, 5,
+ 6, 7, 0, 392, 8, 9, 10, 11, 12, 13,
+ 14, 15, 0, 17, 18, 19, 20, 21, 22, 23,
+ 0, 24, 25, 26, 27, 0, 29, 30, 31, 0,
+ 0, 0, 0, 32, 33, 34, 35, 36, 37, 0,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 0, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 0, 0, 68, 1, 0, 69, 0, 2, 3, 4,
+ 5, 6, 7, 0, 508, 8, 9, 10, 11, 12,
+ 13, 14, 15, 0, 17, 18, 19, 20, 21, 22,
+ 23, 0, 24, 25, 26, 27, 0, 29, 30, 31,
+ 0, 0, 0, 0, 32, 33, 34, 35, 36, 37,
+ 0, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 0, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 0, 0, 68, 1, 0, 69, 0, 2, 3,
+ 4, 5, 6, 7, 0, 536, 8, 9, 10, 11,
+ 12, 13, 14, 15, 0, 17, 18, 19, 20, 21,
+ 22, 23, 0, 24, 25, 26, 27, 0, 29, 30,
+ 31, 0, 0, 0, 0, 32, 33, 34, 35, 36,
37, 0, 38, 39, 40, 41, 42, 43, 44, 45,
46, 47, 48, 49, 50, 51, 52, 0, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 118, 119, 120, 121, 0, 1, 0, 122, 99, 2,
- 3, 4, 5, 100, 7, 101, 0, 102, 9, 103,
- 104, 105, 106, 14, 15, 107, 17, 108, 19, 20,
- 109, 110, 111, 112, 24, 113, 26, 27, 114, 115,
- 116, 117, 0, 0, 0, 0, 32, 33, 34, 35,
- 36, 37, 0, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 0, 53,
- 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 118, 119, 120, 121, 0, 1, 0, 122, 99,
- 2, 3, 4, 5, 100, 7, 101, 0, 102, 9,
- 103, 104, 105, 106, 14, 15, 107, 17, 108, 19,
- 20, 109, 110, 111, 112, 24, 113, 26, 27, 114,
- 115, 116, 117, 0, 0, 0, 0, 32, 33, 34,
- 35, 36, 37, 0, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 0,
- 53, 54, 55, 56, 57, 58, 172, 60, 61, 62,
- 63, 64, 118, 119, 120, 121, 0, 1, 0, 122,
+ 65, 66, 0, 0, 0, 0, 0, 69, 0, 0,
+ 0, 0, 0, 0, 0, 0, 458, 1, 431, 432,
99, 2, 3, 4, 5, 100, 7, 101, 0, 102,
9, 103, 104, 105, 106, 14, 15, 107, 17, 108,
- 19, 20, 109, 110, 111, 112, 24, 113, 26, 27,
- 114, 115, 116, 117, 0, 0, 0, 0, 32, 33,
+ 19, 20, 109, 110, 111, 112, 24, 0, 26, 27,
+ 113, 114, 115, 116, 0, 0, 0, 0, 32, 33,
34, 35, 36, 37, 0, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 211, 212, 213, 214, 215,
- 0, 53, 216, 55, 56, 57, 217, 59, 60, 61,
- 62, 63, 64, 118, 119, 120, 121, 0, 1, 0,
- 122, 99, 131, 132, 4, 5, 100, 7, 101, 0,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 0, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 117, 118, 119, 120, 0, 1, 0,
+ 121, 99, 2, 3, 4, 5, 100, 7, 101, 0,
102, 9, 103, 104, 105, 106, 14, 15, 107, 17,
- 108, 19, 20, 109, 110, 111, 112, 24, 113, 26,
- 27, 114, 115, 116, 117, 0, 0, 0, 0, 32,
- 33, 34, 35, 36, 37, 0, 38, 39, 138, 41,
- 139, 43, 140, 45, 141, 47, 48, 49, 50, 51,
- 52, 0, 53, 54, 55, 56, 57, 58, 376, 60,
- 61, 62, 63, 64, 118, 119, 120, 121, 1, 0,
- 0, 122, 2, 3, 4, 5, 6, 7, 0, 0,
- 8, 9, 10, 11, 12, 0, 14, 15, 0, 17,
- 18, 19, 20, 21, 110, 23, 0, 24, 0, 26,
- 27, 0, 29, 30, 31, 0, 0, 0, 0, 32,
+ 108, 19, 20, 109, 110, 111, 112, 24, 0, 26,
+ 27, 113, 114, 115, 116, 0, 0, 0, 0, 32,
33, 34, 35, 36, 37, 0, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 0, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 299, 66, 0, 0, 0, 0,
- 300, 69, 0, 0, 0, 0, 0, 490, 237, 238,
- 239, 240, 262, 263, 0, 264, 0, 0, 244, 265,
- 266, 237, 238, 239, 240, 262, 263, 491, 264, 0,
- 0, 244, 265, 266, 0, 0, 0, 0, 0, 0,
- 0, 237, 238, 239, 240, 262, 263, 0, 264, 0,
- 0, 244, 265, 266, 0, 247, 248, 249, 250, 251,
- 252, 253, 0, 0, 0, 0, 0, 0, 247, 248,
- 249, 250, 251, 252, 253, 0, 0, 0, 0, 0,
- 0, 492, 0, 0, 0, 0, 0, 0, 247, 248,
- 249, 250, 251, 252, 253, 237, 238, 239, 240, 262,
- 263, 493, 264, 0, 0, 244, 265, 266, 0, 0,
- 0, 0, 0, 0, 564, 237, 238, 239, 240, 262,
- 263, 0, 264, 0, 0, 244, 265, 266, 548, 549,
- 0, 550, 551, 552, 0, 553, 0, 0, 554, 555,
- 556, 286, 247, 248, 249, 250, 251, 252, 253, 237,
- 238, 239, 240, 262, 263, 0, 264, 0, 0, 244,
- 265, 266, 247, 248, 249, 250, 251, 252, 253, 0,
- 0, 0, 0, 261, 0, 557, 558, 559, 560, 561,
- 562, 563, 237, 238, 239, 240, 262, 263, 0, 264,
- 0, 0, 244, 265, 266, 0, 247, 248, 249, 250,
- 251, 252, 253, 0, 287, 237, 238, 239, 240, 262,
- 263, 0, 264, 0, 0, 244, 265, 266, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 247,
- 248, 249, 250, 251, 252, 253, 237, 238, 239, 240,
- 262, 263, 0, 264, 0, 0, 244, 265, 266, 0,
- 0, 0, 247, 248, 249, 250, 251, 252, 253, 0,
- 0, 402, 0, 324, 354, 355, 356, 357, 358, 359,
- 0, 360, 0, 0, 361, 362, 363, 0, 0, 0,
- 0, 0, 0, 247, 248, 249, 250, 251, 252, 253,
- 0, 0, 0, 0, 324, 237, 238, 239, 240, 262,
- 263, 0, 264, 0, 0, 244, 265, 266, 0, 0,
- 0, 364, 365, 366, 367, 368, 369, 370, 0, 0,
- 371, 237, 238, 239, 240, 262, 263, 0, 264, 0,
- 0, 244, 265, 266, 0, 0, 0, 0, 0, 0,
- 0, 0, 247, 248, 249, 250, 251, 252, 253, 0,
- 384, 237, 238, 239, 240, 262, 263, 0, 264, 0,
- 0, 244, 265, 266, 0, 0, 0, 0, 247, 248,
- 249, 250, 251, 252, 253, 0, 481, 237, 238, 239,
- 240, 262, 263, 0, 264, 0, 0, 244, 265, 266,
- 0, 0, 0, 0, 0, 0, 0, 0, 247, 248,
- 249, 250, 251, 252, 253, 0, 484, 237, 238, 239,
- 240, 262, 263, 0, 264, 0, 0, 244, 265, 266,
- 0, 0, 0, 0, 247, 248, 249, 250, 251, 252,
- 253, 0, 514, 237, 238, 239, 240, 262, 263, 0,
- 264, 0, 0, 244, 265, 266, 0, 0, 0, 0,
- 0, 0, 0, 0, 247, 248, 249, 250, 251, 252,
- 253, 0, 574, 237, 238, 239, 240, 262, 263, 0,
- 264, 0, 0, 244, 265, 266, 0, 0, 0, 0,
- 247, 248, 249, 250, 251, 252, 253, 0, 598, 0,
- 0, 0, 237, 238, 239, 240, 262, 263, 0, 264,
- 321, 322, 244, 265, 266, 0, 0, 0, 0, 0,
- 247, 248, 249, 250, 251, 252, 253, 354, 355, 356,
- 357, 358, 359, 0, 360, 0, 0, 361, 362, 363,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 247,
- 248, 249, 250, 251, 252, 253, 548, 549, 0, 550,
- 551, 552, 0, 553, 0, 0, 554, 555, 556, 0,
- 0, 0, 0, 0, 364, 365, 366, 367, 368, 369,
- 370, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 61, 62, 63, 64, 117, 118, 119, 120, 0, 1,
+ 0, 121, 99, 2, 3, 4, 5, 100, 7, 101,
+ 0, 102, 9, 103, 104, 105, 106, 14, 15, 107,
+ 17, 108, 19, 20, 109, 110, 111, 112, 24, 0,
+ 26, 27, 113, 114, 115, 116, 0, 0, 0, 0,
+ 32, 33, 34, 35, 36, 37, 0, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 0, 53, 54, 55, 56, 57, 58, 171,
+ 60, 61, 62, 63, 64, 117, 118, 119, 120, 0,
+ 1, 0, 121, 99, 2, 3, 4, 5, 100, 7,
+ 101, 0, 102, 9, 103, 104, 105, 106, 14, 15,
+ 107, 17, 108, 19, 20, 109, 110, 111, 112, 24,
+ 0, 26, 27, 113, 114, 115, 116, 0, 0, 0,
+ 0, 32, 33, 34, 35, 36, 37, 0, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 209, 210,
+ 211, 212, 213, 0, 53, 214, 55, 56, 57, 215,
+ 59, 60, 61, 62, 63, 64, 117, 118, 119, 120,
+ 0, 1, 0, 121, 99, 130, 131, 4, 5, 100,
+ 7, 101, 0, 102, 9, 103, 104, 105, 106, 14,
+ 15, 107, 17, 108, 19, 20, 109, 110, 111, 112,
+ 24, 0, 26, 27, 113, 114, 115, 116, 0, 0,
+ 0, 0, 32, 33, 34, 35, 36, 37, 0, 38,
+ 39, 137, 41, 138, 43, 139, 45, 140, 47, 48,
+ 49, 50, 51, 52, 0, 53, 54, 55, 56, 57,
+ 58, 373, 60, 61, 62, 63, 64, 117, 118, 119,
+ 120, 1, 0, 0, 121, 2, 3, 4, 5, 6,
+ 7, 0, 0, 8, 9, 10, 11, 12, 0, 14,
+ 15, 0, 17, 18, 19, 20, 21, 110, 23, 0,
+ 24, 0, 26, 27, 0, 29, 30, 31, 0, 0,
+ 0, 0, 32, 33, 34, 35, 36, 37, 0, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, 51, 52, 0, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 294, 66, 0,
+ 0, 0, 0, 295, 69, 0, 0, 0, 0, 0,
+ 0, 235, 236, 237, 238, 260, 261, 0, 262, 296,
+ 0, 242, 263, 264, 0, 297, 0, 0, 0, 0,
+ 0, 0, 0, 235, 236, 237, 238, 260, 261, 0,
+ 262, 0, 0, 242, 263, 264, 0, 0, 0, 0,
+ 0, 486, 0, 0, 0, 0, 0, 0, 245, 246,
+ 247, 248, 249, 250, 251, 235, 236, 237, 238, 260,
+ 261, 0, 262, 487, 0, 242, 263, 264, 0, 0,
+ 245, 246, 247, 248, 249, 250, 251, 235, 236, 237,
+ 238, 260, 261, 0, 262, 0, 0, 242, 263, 264,
+ 0, 0, 0, 0, 0, 488, 0, 0, 0, 0,
+ 0, 0, 245, 246, 247, 248, 249, 250, 251, 235,
+ 236, 237, 238, 260, 261, 0, 262, 489, 0, 242,
+ 263, 264, 0, 0, 245, 246, 247, 248, 249, 250,
+ 251, 235, 236, 237, 238, 260, 261, 0, 262, 0,
+ 0, 242, 263, 264, 0, 0, 0, 0, 0, 560,
+ 0, 0, 0, 0, 0, 0, 245, 246, 247, 248,
+ 249, 250, 251, 544, 545, 0, 546, 547, 548, 0,
+ 549, 0, 0, 550, 551, 552, 0, 283, 245, 246,
+ 247, 248, 249, 250, 251, 235, 236, 237, 238, 260,
+ 261, 0, 262, 0, 0, 242, 263, 264, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 557, 558, 559, 560, 561, 562, 563
+ 553, 554, 555, 556, 557, 558, 559, 235, 236, 237,
+ 238, 260, 261, 0, 262, 0, 0, 242, 263, 264,
+ 0, 0, 245, 246, 247, 248, 249, 250, 251, 0,
+ 284, 235, 236, 237, 238, 260, 261, 0, 262, 0,
+ 0, 242, 263, 264, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 245, 246, 247, 248, 249, 250,
+ 251, 0, 0, 320, 0, 321, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 245, 246,
+ 247, 248, 249, 250, 251, 0, 0, 398, 0, 321,
+ 235, 236, 237, 238, 260, 261, 0, 262, 0, 0,
+ 242, 263, 264, 351, 352, 353, 354, 355, 356, 0,
+ 357, 0, 0, 358, 359, 360, 235, 236, 237, 238,
+ 260, 261, 0, 262, 0, 0, 242, 263, 264, 0,
+ 0, 0, 0, 0, 0, 0, 0, 245, 246, 247,
+ 248, 249, 250, 251, 0, 0, 0, 0, 321, 0,
+ 361, 362, 363, 364, 365, 366, 367, 0, 0, 368,
+ 0, 0, 0, 245, 246, 247, 248, 249, 250, 251,
+ 0, 381, 235, 236, 237, 238, 260, 261, 0, 262,
+ 0, 0, 242, 263, 264, 235, 236, 237, 238, 260,
+ 261, 0, 262, 0, 0, 242, 263, 264, 235, 236,
+ 237, 238, 260, 261, 0, 262, 0, 0, 242, 263,
+ 264, 0, 0, 0, 0, 0, 0, 0, 0, 245,
+ 246, 247, 248, 249, 250, 251, 0, 477, 0, 0,
+ 0, 0, 245, 246, 247, 248, 249, 250, 251, 0,
+ 480, 0, 0, 0, 0, 245, 246, 247, 248, 249,
+ 250, 251, 0, 510, 235, 236, 237, 238, 260, 261,
+ 0, 262, 0, 0, 242, 263, 264, 235, 236, 237,
+ 238, 260, 261, 0, 262, 0, 0, 242, 263, 264,
+ 0, 0, 0, 0, 0, 0, 235, 236, 237, 238,
+ 260, 261, 0, 262, 0, 0, 242, 263, 264, 0,
+ 0, 245, 246, 247, 248, 249, 250, 251, 0, 570,
+ 0, 0, 0, 0, 245, 246, 247, 248, 249, 250,
+ 251, 0, 594, 318, 319, 0, 0, 0, 0, 0,
+ 0, 0, 0, 245, 246, 247, 248, 249, 250, 251,
+ 235, 236, 237, 238, 260, 261, 0, 262, 0, 0,
+ 242, 263, 264, 351, 352, 353, 354, 355, 356, 0,
+ 357, 0, 0, 358, 359, 360, 544, 545, 0, 546,
+ 547, 548, 0, 549, 0, 0, 550, 551, 552, 0,
+ 0, 0, 0, 0, 0, 0, 0, 245, 246, 247,
+ 248, 249, 250, 251, 0, 0, 0, 0, 0, 0,
+ 361, 362, 363, 364, 365, 366, 367, 0, 0, 0,
+ 0, 0, 0, 553, 554, 555, 556, 557, 558, 559
};
static const yytype_int16 yycheck[] =
{
- 0, 257, 10, 6, 23, 0, 31, 69, 16, 12,
- 233, 17, 90, 373, 161, 23, 33, 25, 51, 21,
- 28, 375, 169, 31, 512, 51, 543, 29, 30, 25,
- 384, 254, 36, 180, 476, 477, 478, 11, 12, 71,
- 33, 66, 46, 25, 86, 192, 78, 401, 30, 99,
- 46, 0, 540, 570, 132, 133, 134, 99, 66, 67,
- 71, 208, 99, 96, 97, 72, 71, 78, 99, 69,
- 96, 97, 72, 78, 11, 77, 13, 72, 334, 38,
- 39, 87, 99, 57, 21, 59, 51, 61, 71, 63,
- 100, 71, 29, 30, 104, 78, 35, 353, 78, 100,
- 323, 99, 100, 77, 101, 465, 548, 549, 550, 551,
- 552, 553, 554, 555, 556, 557, 558, 559, 560, 561,
- 562, 563, 99, 51, 99, 30, 54, 51, 65, 94,
- 95, 96, 97, 99, 142, 44, 45, 46, 47, 147,
- 77, 166, 51, 271, 272, 54, 55, 56, 371, 591,
- 51, 99, 512, 54, 91, 92, 93, 94, 166, 101,
- 514, 186, 170, 105, 172, 93, 94, 95, 96, 97,
- 94, 95, 96, 97, 99, 431, 99, 99, 186, 402,
- 540, 99, 91, 92, 93, 94, 95, 96, 97, 99,
- 105, 99, 93, 94, 95, 96, 97, 205, 135, 136,
- 99, 138, 139, 140, 141, 461, 143, 99, 99, 146,
- 30, 565, 415, 416, 417, 418, 105, 57, 421, 59,
- 574, 61, 104, 63, 286, 104, 100, 164, 44, 45,
- 99, 47, 28, 489, 171, 51, 30, 99, 54, 55,
- 56, 161, 28, 100, 598, 17, 99, 99, 99, 169,
- 89, 270, 271, 272, 102, 105, 193, 88, 99, 10,
- 180, 261, 270, 271, 272, 30, 261, 270, 271, 272,
- 73, 99, 192, 102, 36, 91, 92, 93, 94, 95,
- 96, 97, 99, 102, 99, 73, 286, 287, 208, 88,
- 87, 89, 90, 73, 99, 88, 88, 99, 99, 72,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 392, 30, 399,
- 465, 329, 502, 208, -1, 262, 263, 264, 265, 266,
- 320, -1, -1, 131, 132, 133, 134, 329, -1, 137,
- -1, 278, 279, -1, -1, 282, 144, 145, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 294, -1, 296,
- -1, 298, -1, 300, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 373, 16, 375, -1, -1, -1, -1,
- 388, -1, -1, -1, 384, -1, -1, -1, 325, 326,
- -1, 328, -1, -1, 36, 332, -1, -1, 335, 399,
- -1, 401, 44, 45, 46, 47, 48, 49, -1, 51,
- -1, -1, 54, 55, 56, -1, -1, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 382, 383, -1, -1, 91,
- 92, 93, 94, 95, 96, 97, -1, 482, -1, -1,
- -1, -1, -1, -1, 30, 465, -1, 467, -1, -1,
- 36, -1, 467, -1, 482, -1, -1, 414, 44, 45,
- 46, 47, 48, 49, -1, 51, -1, -1, 54, 55,
- 56, -1, -1, -1, -1, 293, -1, 295, -1, 297,
- -1, 299, -1, 440, -1, -1, -1, -1, 508, -1,
- -1, -1, 512, 508, 514, -1, -1, -1, 526, -1,
- -1, 319, 320, 321, 322, 91, 92, 93, 94, 95,
- 96, 97, -1, -1, -1, -1, -1, -1, -1, -1,
- 540, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 475, 476, 477, 478, -1,
- -1, -1, -1, -1, -1, 565, -1, -1, -1, -1,
- -1, -1, -1, -1, 574, -1, -1, -1, -1, 516,
- -1, -1, -1, -1, -1, 30, 594, 385, -1, -1,
- -1, 36, -1, -1, -1, -1, -1, -1, 598, 44,
- 45, 46, 47, 48, 49, -1, 51, -1, 545, 54,
- 55, 56, -1, -1, -1, 413, -1, -1, -1, -1,
- -1, 419, 420, -1, 422, 423, -1, -1, 548, 549,
- 550, 551, 552, 553, 554, 555, 556, 557, 558, 559,
- 560, 561, 562, 563, -1, -1, 91, 92, 93, 94,
- 95, 96, 97, -1, -1, -1, 44, 45, 46, 47,
- 48, 49, -1, 51, -1, -1, 54, 55, 56, -1,
- -1, 591, -1, -1, -1, -1, -1, 475, 476, 477,
- 478, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 490, 491, 492, 493, -1, -1, 496, 497,
- 498, 499, -1, 91, 92, 93, 94, 95, 96, 97,
- -1, 30, 100, -1, 102, -1, -1, 36, -1, -1,
- -1, -1, -1, -1, -1, 44, 45, 46, 47, 48,
- 49, -1, 51, -1, -1, 54, 55, 56, -1, 537,
+ 0, 23, 10, 255, 69, 0, 31, 6, 16, 51,
+ 231, 17, 370, 12, 33, 23, 539, 51, 11, 12,
+ 28, 508, 36, 31, 25, 101, 99, 86, 372, 105,
+ 21, 252, 46, 472, 473, 474, 33, 381, 29, 30,
+ 99, 66, 25, 566, 51, 46, 0, 30, 51, 536,
+ 71, 100, 100, 397, 96, 97, 104, 78, 66, 67,
+ 94, 95, 96, 97, 57, 101, 59, 71, 61, 69,
+ 63, 99, 72, 11, 78, 13, 72, 72, 30, 331,
+ 99, 87, 99, 21, 77, 30, 77, 94, 95, 96,
+ 97, 29, 30, 96, 97, 71, 105, 71, 350, 320,
+ 269, 270, 78, 461, 78, 544, 545, 546, 547, 548,
+ 549, 550, 551, 552, 553, 554, 555, 556, 557, 558,
+ 559, 38, 39, 71, 99, 51, 99, 65, 54, 99,
+ 78, 90, 99, 141, 44, 45, 46, 47, 146, 77,
+ 165, 51, 99, 100, 54, 55, 56, 368, 587, 99,
+ 508, 104, 99, 91, 92, 93, 94, 165, 57, 184,
+ 59, 169, 61, 171, 63, 99, 510, 93, 94, 95,
+ 96, 97, 131, 132, 133, 427, 184, 398, 536, 99,
+ 99, 91, 92, 93, 94, 95, 96, 97, 411, 412,
+ 413, 414, 99, 99, 417, 203, 134, 135, 99, 137,
+ 138, 139, 140, 99, 142, 457, 104, 145, 105, 100,
+ 28, 160, 99, 99, 30, 28, 100, 561, 283, 168,
+ 17, 99, 99, 99, 89, 163, 570, 44, 45, 178,
+ 47, 105, 170, 485, 51, 102, 160, 54, 55, 56,
+ 88, 190, 99, 10, 168, 30, 268, 269, 270, 51,
+ 594, 73, 54, 191, 178, 102, 99, 206, 36, 259,
+ 268, 269, 270, 99, 259, 99, 190, 102, 73, 268,
+ 269, 270, 87, 73, 91, 92, 93, 94, 95, 96,
+ 97, 88, 206, 283, 284, 99, 72, 99, 89, 90,
+ 88, 93, 94, 95, 96, 97, 88, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 388, 99, 30, 395, 326, 461,
+ 498, 326, 260, 261, 262, 263, 264, 317, -1, 130,
+ 131, 132, 133, 206, -1, 136, -1, -1, 276, -1,
+ -1, 279, 143, 144, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 291, -1, 293, -1, 295, -1, 297,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 548, 549, 550, 551, 552, 553, 554, 555, 556, 557,
- 558, 559, 560, 561, 562, 563, -1, -1, -1, -1,
- -1, 569, 91, 92, 93, 94, 95, 96, 97, -1,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 591, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, -1,
- -1, -1, -1, 48, 49, 50, 51, 52, 53, -1,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, -1, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, -1, -1, -1, 90, -1, -1, -1, 94,
- 95, -1, -1, -1, -1, -1, 101, -1, 103, -1,
- 105, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 370, -1, 372, -1, -1, -1, 384, -1, -1, -1,
+ -1, 381, -1, -1, 322, 323, -1, 325, -1, -1,
+ 35, 329, -1, -1, 332, 395, -1, 397, -1, 44,
+ 45, 46, 47, 48, 49, -1, 51, -1, -1, 54,
+ 55, 56, -1, 351, 352, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 379, 380, -1, -1, 16, 91, 92, 93, 94,
+ 95, 96, 97, 478, -1, -1, -1, -1, -1, -1,
+ -1, 461, -1, 463, -1, 36, -1, -1, 463, -1,
+ 478, -1, 410, 44, 45, 46, 47, 48, 49, -1,
+ 51, -1, -1, 54, 55, 56, -1, -1, -1, 290,
+ -1, 292, -1, 294, -1, 296, -1, -1, 436, -1,
+ -1, -1, -1, -1, 504, -1, -1, -1, 508, 504,
+ 510, -1, -1, -1, 522, 316, 317, 318, 319, -1,
+ 91, 92, 93, 94, 95, 96, 97, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 536, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 471, 472, 473,
+ 474, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 561, -1, -1, -1, -1, -1, -1, -1, -1,
+ 570, -1, -1, -1, 512, -1, -1, -1, -1, -1,
+ -1, 382, 590, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 594, -1, -1, -1, -1, -1,
+ -1, -1, -1, 541, -1, -1, -1, -1, 409, -1,
+ -1, -1, -1, -1, 415, 416, -1, 418, 419, -1,
+ 544, 545, 546, 547, 548, 549, 550, 551, 552, 553,
+ 554, 555, 556, 557, 558, 559, 30, -1, -1, -1,
+ -1, -1, 36, -1, -1, -1, -1, -1, -1, -1,
+ 44, 45, 46, 47, 48, 49, -1, 51, -1, -1,
+ 54, 55, 56, 587, -1, -1, -1, -1, -1, -1,
+ 471, 472, 473, 474, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 486, 487, 488, 489, -1,
+ -1, 492, 493, 494, 495, -1, -1, 91, 92, 93,
+ 94, 95, 96, 97, 30, -1, -1, -1, -1, -1,
+ 36, -1, -1, -1, -1, -1, -1, -1, 44, 45,
+ 46, 47, 48, 49, -1, 51, -1, -1, 54, 55,
+ 56, -1, 533, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 544, 545, 546, 547, 548, 549, 550,
+ 551, 552, 553, 554, 555, 556, 557, 558, 559, -1,
+ -1, -1, -1, -1, 565, 91, 92, 93, 94, 95,
+ 96, 97, -1, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 587, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, -1, 38, 39, 40, 41,
+ 42, 43, -1, -1, -1, -1, 48, 49, 50, 51,
+ 52, 53, -1, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, -1, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, -1, -1, -1, 90, -1,
+ -1, -1, 94, 95, -1, -1, -1, -1, -1, 101,
+ -1, 103, -1, 105, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, -1, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, -1, 38, 39, 40,
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 62, 63, 64, 65, 66, 67, 68, 69, -1,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, -1, -1, -1, 90,
+ 91, 92, 93, 94, 95, 96, 97, -1, -1, 100,
+ 101, -1, 103, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, -1, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, -1, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, -1, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, -1, -1, -1, 90, 91,
+ 92, 93, 94, 95, 96, 97, -1, -1, 100, 101,
+ -1, 103, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, -1, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, -1, 38, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
+ 63, 64, 65, 66, 67, 68, 69, -1, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
+ 83, 84, 85, 86, -1, -1, -1, 90, 91, 92,
+ 93, 94, 95, 96, 97, -1, -1, 100, 101, -1,
+ 103, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, -1, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 34, 35, 36, -1, 38, 39, 40, 41, 42, 43,
44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, -1, 71, 72, 73,
@@ -1546,46 +1578,46 @@ static const yytype_int16 yycheck[] =
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, -1, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 35, 36, -1, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, -1, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
85, 86, -1, -1, -1, 90, 91, 92, 93, 94,
- 95, 96, 97, -1, -1, 100, 101, -1, 103, 5,
+ 95, 96, 97, -1, -1, -1, 101, -1, 103, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, -1, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 36, -1, 38, 39, 40, 41, 42, 43, -1, -1,
+ -1, -1, 48, 49, 50, 51, 52, 53, -1, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
66, 67, 68, 69, -1, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, -1, -1, -1, 90, 91, 92, 93, 94, 95,
- 96, 97, -1, -1, 100, 101, -1, 103, 5, 6,
+ 86, -1, -1, -1, 90, -1, -1, -1, 94, 95,
+ -1, -1, -1, -1, -1, 101, 102, 103, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, -1, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ -1, 38, 39, 40, 41, 42, 43, -1, -1, -1,
+ -1, 48, 49, 50, 51, 52, 53, -1, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
67, 68, 69, -1, 71, 72, 73, 74, 75, 76,
77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- -1, -1, -1, 90, 91, 92, 93, 94, 95, 96,
- 97, -1, -1, 100, 101, -1, 103, 5, 6, 7,
+ -1, -1, -1, 90, -1, -1, -1, 94, 95, -1,
+ -1, -1, -1, -1, 101, 102, 103, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
-1, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, -1,
+ 38, 39, 40, 41, 42, 43, -1, -1, -1, -1,
+ 48, 49, 50, 51, 52, 53, -1, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
68, 69, -1, 71, 72, 73, 74, 75, 76, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, -1,
- -1, -1, 90, 91, 92, 93, 94, 95, 96, 97,
- -1, -1, -1, 101, -1, 103, 5, 6, 7, 8,
+ -1, -1, 90, -1, -1, -1, 94, 95, -1, -1,
+ -1, -1, -1, 101, 102, 103, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, -1,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 29, 30, 31, 32, 33, 34, 35, 36, -1, 38,
39, 40, 41, 42, 43, -1, -1, -1, -1, 48,
49, 50, 51, 52, 53, -1, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
@@ -1595,7 +1627,7 @@ static const yytype_int16 yycheck[] =
-1, -1, 101, 102, 103, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, -1, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 30, 31, 32, 33, 34, 35, 36, -1, 38, 39,
40, 41, 42, 43, -1, -1, -1, -1, 48, 49,
50, 51, 52, 53, -1, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
@@ -1605,37 +1637,37 @@ static const yytype_int16 yycheck[] =
-1, 101, 102, 103, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, -1, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 31, 32, 33, 34, 35, 36, -1, 38, 39, 40,
41, 42, 43, -1, -1, -1, -1, 48, 49, 50,
51, 52, 53, -1, 55, 56, 57, 58, 59, 60,
61, 62, 63, 64, 65, 66, 67, 68, 69, -1,
71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, -1, -1, -1, 90,
-1, -1, -1, 94, 95, -1, -1, -1, -1, -1,
- 101, 102, 103, 5, 6, 7, 8, 9, 10, 11,
+ 101, -1, 103, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, -1, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 32, 33, 34, 35, 36, -1, 38, 39, 40, 41,
42, 43, -1, -1, -1, -1, 48, 49, 50, 51,
52, 53, -1, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 67, 68, 69, -1, 71,
72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
82, 83, 84, 85, 86, -1, -1, -1, 90, -1,
-1, -1, 94, 95, -1, -1, -1, -1, -1, 101,
- 102, 103, 5, 6, 7, 8, 9, 10, 11, 12,
+ -1, 103, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, -1, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 33, 34, 35, 36, -1, 38, 39, 40, 41, 42,
43, -1, -1, -1, -1, 48, 49, 50, 51, 52,
53, -1, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, 66, 67, 68, 69, -1, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, -1, -1, -1, 90, -1, -1,
- -1, 94, 95, -1, -1, -1, -1, -1, 101, 102,
+ -1, 94, 95, -1, -1, -1, -1, -1, 101, -1,
103, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, -1, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 34, 35, 36, -1, 38, 39, 40, 41, 42, 43,
-1, -1, -1, -1, 48, 49, 50, 51, 52, 53,
-1, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, -1, 71, 72, 73,
@@ -1645,7 +1677,7 @@ static const yytype_int16 yycheck[] =
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, -1, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, -1,
+ 35, 36, -1, 38, 39, 40, 41, 42, 43, -1,
-1, -1, -1, 48, 49, 50, 51, 52, 53, -1,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, -1, 71, 72, 73, 74,
@@ -1655,7 +1687,7 @@ static const yytype_int16 yycheck[] =
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, -1, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, -1, -1,
+ 36, -1, 38, 39, 40, 41, 42, 43, -1, -1,
-1, -1, 48, 49, 50, 51, 52, 53, -1, 55,
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
66, 67, 68, 69, -1, 71, 72, 73, 74, 75,
@@ -1665,7 +1697,7 @@ static const yytype_int16 yycheck[] =
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, -1, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, -1, -1, -1,
+ -1, 38, 39, 40, 41, 42, 43, -1, -1, -1,
-1, 48, 49, 50, 51, 52, 53, -1, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
67, 68, 69, -1, 71, 72, 73, 74, 75, 76,
@@ -1674,7 +1706,7 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, -1, 101, -1, 103, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
-1, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, -1,
38, 39, 40, 41, 42, 43, -1, -1, -1, -1,
48, 49, 50, 51, 52, 53, -1, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
@@ -1684,9 +1716,9 @@ static const yytype_int16 yycheck[] =
-1, -1, -1, 101, -1, 103, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, -1,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, -1, -1, -1, -1, 48,
- 49, 50, 51, 52, 53, -1, 55, 56, 57, 58,
+ 29, 30, 31, 32, 33, 34, 35, 36, -1, 38,
+ 39, 40, 41, 42, 43, -1, -1, -1, -1, -1,
+ -1, 50, 51, 52, 53, -1, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
69, -1, 71, 72, 73, 74, 75, 76, 77, 78,
79, 80, 81, 82, 83, 84, 85, 86, -1, -1,
@@ -1694,9 +1726,9 @@ static const yytype_int16 yycheck[] =
-1, -1, 101, -1, 103, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, -1, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, -1, -1, -1, -1, 48, 49,
- 50, 51, 52, 53, -1, 55, 56, 57, 58, 59,
+ 30, 31, 32, 33, 34, 35, 36, -1, 38, 39,
+ 40, 41, 42, 43, -1, -1, -1, -1, -1, -1,
+ 50, 51, 52, 53, -1, -1, -1, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
-1, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, -1, -1, -1,
@@ -1704,75 +1736,21 @@ static const yytype_int16 yycheck[] =
-1, 101, -1, 103, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, -1, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, -1, -1, -1, -1, 48, 49, 50,
- 51, 52, 53, -1, 55, 56, 57, 58, 59, 60,
+ 31, 32, 33, 34, 35, 36, -1, 38, 39, 40,
+ 41, 42, 43, -1, -1, -1, -1, -1, -1, 50,
+ -1, 52, 53, -1, -1, -1, 57, 58, 59, 60,
61, 62, 63, 64, 65, 66, 67, 68, 69, -1,
71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, -1, -1, -1, 90,
- -1, -1, -1, 94, 95, -1, -1, -1, -1, -1,
- 101, -1, 103, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, -1, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, -1, -1, -1, -1, -1, -1, 50, 51,
- 52, 53, -1, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, -1, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, -1, -1, -1, 90, -1,
- -1, -1, 94, 95, -1, -1, -1, -1, -1, 101,
- -1, 103, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, -1, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, -1, -1, -1, -1, -1, -1, 50, 51, 52,
- 53, -1, -1, -1, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, -1, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, -1, -1, -1, 90, -1, -1,
- -1, 94, 95, -1, -1, -1, -1, -1, 101, -1,
- 103, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, -1, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- -1, -1, -1, -1, -1, -1, 50, -1, 52, 53,
- -1, -1, -1, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, -1, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, -1, -1, -1, 90, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 7, 101, -1, 103,
- 11, 12, 13, 14, 15, 16, -1, -1, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, -1, 36, 37, 38, 39, 40,
- 41, 42, 43, -1, -1, -1, -1, 48, 49, 50,
- 51, 52, 53, -1, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, -1,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, -1, 87, 7, -1, 90,
- -1, 11, 12, 13, 14, 15, 16, -1, 99, 19,
- 20, 21, 22, 23, 24, 25, 26, -1, 28, 29,
- 30, 31, 32, 33, 34, -1, 36, 37, 38, 39,
- -1, 41, 42, 43, -1, -1, -1, -1, 48, 49,
- 50, 51, 52, 53, -1, 55, 56, 57, 58, 59,
- 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- -1, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, -1, -1, 87, 7, -1,
- 90, -1, 11, 12, 13, 14, 15, 16, -1, 99,
- 19, 20, 21, 22, 23, 24, 25, 26, -1, 28,
- 29, 30, 31, 32, 33, 34, -1, 36, 37, 38,
- 39, -1, 41, 42, 43, -1, -1, -1, -1, 48,
- 49, 50, 51, 52, 53, -1, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, -1, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, -1, -1, 87, 7,
- -1, 90, -1, 11, 12, 13, 14, 15, 16, -1,
- 99, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 7,
+ 101, -1, 103, 11, 12, 13, 14, 15, 16, -1,
+ -1, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, -1, 36, 37,
- 38, 39, -1, 41, 42, 43, -1, -1, -1, -1,
+ 38, 39, 40, 41, 42, 43, -1, -1, -1, -1,
48, 49, 50, 51, 52, 53, -1, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
68, 69, -1, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
+ 78, 79, 80, 81, 82, 83, 84, 85, -1, 87,
7, -1, 90, -1, 11, 12, 13, 14, 15, 16,
-1, 99, 19, 20, 21, 22, 23, 24, 25, 26,
-1, 28, 29, 30, 31, 32, 33, 34, -1, 36,
@@ -1789,35 +1767,35 @@ static const yytype_int16 yycheck[] =
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
66, 67, 68, 69, -1, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
- -1, -1, -1, -1, 90, -1, -1, -1, -1, -1,
- -1, -1, -1, 99, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, -1, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ -1, 87, 7, -1, 90, -1, 11, 12, 13, 14,
+ 15, 16, -1, 99, 19, 20, 21, 22, 23, 24,
+ 25, 26, -1, 28, 29, 30, 31, 32, 33, 34,
+ -1, 36, 37, 38, 39, -1, 41, 42, 43, -1,
+ -1, -1, -1, 48, 49, 50, 51, 52, 53, -1,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, -1, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ -1, -1, 87, 7, -1, 90, -1, 11, 12, 13,
+ 14, 15, 16, -1, 99, 19, 20, 21, 22, 23,
+ 24, 25, 26, -1, 28, 29, 30, 31, 32, 33,
+ 34, -1, 36, 37, 38, 39, -1, 41, 42, 43,
+ -1, -1, -1, -1, 48, 49, 50, 51, 52, 53,
+ -1, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, -1, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, -1, -1, 87, 7, -1, 90, -1, 11, 12,
+ 13, 14, 15, 16, -1, 99, 19, 20, 21, 22,
+ 23, 24, 25, 26, -1, 28, 29, 30, 31, 32,
+ 33, 34, -1, 36, 37, 38, 39, -1, 41, 42,
43, -1, -1, -1, -1, 48, 49, 50, 51, 52,
53, -1, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, 66, 67, 68, 69, -1, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, -1, 7, -1, 90, 10, 11,
- 12, 13, 14, 15, 16, 17, -1, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, -1, -1, -1, -1, 48, 49, 50, 51,
- 52, 53, -1, 55, 56, 57, 58, 59, 60, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, -1, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, -1, 7, -1, 90, 10,
- 11, 12, 13, 14, 15, 16, 17, -1, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, -1, -1, -1, -1, 48, 49, 50,
- 51, 52, 53, -1, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, -1,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, -1, 7, -1, 90,
+ 83, 84, -1, -1, -1, -1, -1, 90, -1, -1,
+ -1, -1, -1, -1, -1, -1, 99, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, -1, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 30, 31, 32, 33, 34, 35, 36, -1, 38, 39,
40, 41, 42, 43, -1, -1, -1, -1, 48, 49,
50, 51, 52, 53, -1, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
@@ -1825,79 +1803,107 @@ static const yytype_int16 yycheck[] =
80, 81, 82, 83, 84, 85, 86, -1, 7, -1,
90, 10, 11, 12, 13, 14, 15, 16, 17, -1,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 29, 30, 31, 32, 33, 34, 35, 36, -1, 38,
39, 40, 41, 42, 43, -1, -1, -1, -1, 48,
49, 50, 51, 52, 53, -1, 55, 56, 57, 58,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
69, -1, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 7, -1,
- -1, 90, 11, 12, 13, 14, 15, 16, -1, -1,
- 19, 20, 21, 22, 23, -1, 25, 26, -1, 28,
- 29, 30, 31, 32, 33, 34, -1, 36, -1, 38,
- 39, -1, 41, 42, 43, -1, -1, -1, -1, 48,
- 49, 50, 51, 52, 53, -1, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, -1, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 30, 84, -1, -1, -1, -1,
- 36, 90, -1, -1, -1, -1, -1, 30, 44, 45,
- 46, 47, 48, 49, -1, 51, -1, -1, 54, 55,
- 56, 44, 45, 46, 47, 48, 49, 30, 51, -1,
- -1, 54, 55, 56, -1, -1, -1, -1, -1, -1,
- -1, 44, 45, 46, 47, 48, 49, -1, 51, -1,
- -1, 54, 55, 56, -1, 91, 92, 93, 94, 95,
- 96, 97, -1, -1, -1, -1, -1, -1, 91, 92,
- 93, 94, 95, 96, 97, -1, -1, -1, -1, -1,
+ 79, 80, 81, 82, 83, 84, 85, 86, -1, 7,
+ -1, 90, 10, 11, 12, 13, 14, 15, 16, 17,
+ -1, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, -1,
+ 38, 39, 40, 41, 42, 43, -1, -1, -1, -1,
+ 48, 49, 50, 51, 52, 53, -1, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, -1, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, -1,
+ 7, -1, 90, 10, 11, 12, 13, 14, 15, 16,
+ 17, -1, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ -1, 38, 39, 40, 41, 42, 43, -1, -1, -1,
+ -1, 48, 49, 50, 51, 52, 53, -1, 55, 56,
+ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
+ 67, 68, 69, -1, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ -1, 7, -1, 90, 10, 11, 12, 13, 14, 15,
+ 16, 17, -1, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, -1, 38, 39, 40, 41, 42, 43, -1, -1,
+ -1, -1, 48, 49, 50, 51, 52, 53, -1, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, -1, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 7, -1, -1, 90, 11, 12, 13, 14, 15,
+ 16, -1, -1, 19, 20, 21, 22, 23, -1, 25,
+ 26, -1, 28, 29, 30, 31, 32, 33, 34, -1,
+ 36, -1, 38, 39, -1, 41, 42, 43, -1, -1,
+ -1, -1, 48, 49, 50, 51, 52, 53, -1, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, -1, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 30, 84, -1,
+ -1, -1, -1, 36, 90, -1, -1, -1, -1, -1,
+ -1, 44, 45, 46, 47, 48, 49, -1, 51, 30,
+ -1, 54, 55, 56, -1, 36, -1, -1, -1, -1,
+ -1, -1, -1, 44, 45, 46, 47, 48, 49, -1,
+ 51, -1, -1, 54, 55, 56, -1, -1, -1, -1,
-1, 30, -1, -1, -1, -1, -1, -1, 91, 92,
93, 94, 95, 96, 97, 44, 45, 46, 47, 48,
- 49, 30, 51, -1, -1, 54, 55, 56, -1, -1,
- -1, -1, -1, -1, 30, 44, 45, 46, 47, 48,
- 49, -1, 51, -1, -1, 54, 55, 56, 44, 45,
- -1, 47, 48, 49, -1, 51, -1, -1, 54, 55,
- 56, 36, 91, 92, 93, 94, 95, 96, 97, 44,
- 45, 46, 47, 48, 49, -1, 51, -1, -1, 54,
- 55, 56, 91, 92, 93, 94, 95, 96, 97, -1,
- -1, -1, -1, 35, -1, 91, 92, 93, 94, 95,
- 96, 97, 44, 45, 46, 47, 48, 49, -1, 51,
- -1, -1, 54, 55, 56, -1, 91, 92, 93, 94,
- 95, 96, 97, -1, 99, 44, 45, 46, 47, 48,
- 49, -1, 51, -1, -1, 54, 55, 56, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
- 92, 93, 94, 95, 96, 97, 44, 45, 46, 47,
- 48, 49, -1, 51, -1, -1, 54, 55, 56, -1,
- -1, -1, 91, 92, 93, 94, 95, 96, 97, -1,
- -1, 100, -1, 102, 44, 45, 46, 47, 48, 49,
- -1, 51, -1, -1, 54, 55, 56, -1, -1, -1,
- -1, -1, -1, 91, 92, 93, 94, 95, 96, 97,
- -1, -1, -1, -1, 102, 44, 45, 46, 47, 48,
+ 49, -1, 51, 30, -1, 54, 55, 56, -1, -1,
+ 91, 92, 93, 94, 95, 96, 97, 44, 45, 46,
+ 47, 48, 49, -1, 51, -1, -1, 54, 55, 56,
+ -1, -1, -1, -1, -1, 30, -1, -1, -1, -1,
+ -1, -1, 91, 92, 93, 94, 95, 96, 97, 44,
+ 45, 46, 47, 48, 49, -1, 51, 30, -1, 54,
+ 55, 56, -1, -1, 91, 92, 93, 94, 95, 96,
+ 97, 44, 45, 46, 47, 48, 49, -1, 51, -1,
+ -1, 54, 55, 56, -1, -1, -1, -1, -1, 30,
+ -1, -1, -1, -1, -1, -1, 91, 92, 93, 94,
+ 95, 96, 97, 44, 45, -1, 47, 48, 49, -1,
+ 51, -1, -1, 54, 55, 56, -1, 36, 91, 92,
+ 93, 94, 95, 96, 97, 44, 45, 46, 47, 48,
49, -1, 51, -1, -1, 54, 55, 56, -1, -1,
- -1, 91, 92, 93, 94, 95, 96, 97, -1, -1,
- 100, 44, 45, 46, 47, 48, 49, -1, 51, -1,
- -1, 54, 55, 56, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 91, 92, 93, 94, 95, 96, 97, 44, 45, 46,
+ 47, 48, 49, -1, 51, -1, -1, 54, 55, 56,
-1, -1, 91, 92, 93, 94, 95, 96, 97, -1,
99, 44, 45, 46, 47, 48, 49, -1, 51, -1,
- -1, 54, 55, 56, -1, -1, -1, -1, 91, 92,
- 93, 94, 95, 96, 97, -1, 99, 44, 45, 46,
- 47, 48, 49, -1, 51, -1, -1, 54, 55, 56,
- -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
- 93, 94, 95, 96, 97, -1, 99, 44, 45, 46,
- 47, 48, 49, -1, 51, -1, -1, 54, 55, 56,
- -1, -1, -1, -1, 91, 92, 93, 94, 95, 96,
- 97, -1, 99, 44, 45, 46, 47, 48, 49, -1,
- 51, -1, -1, 54, 55, 56, -1, -1, -1, -1,
+ -1, 54, 55, 56, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 91, 92, 93, 94, 95, 96,
- 97, -1, 99, 44, 45, 46, 47, 48, 49, -1,
- 51, -1, -1, 54, 55, 56, -1, -1, -1, -1,
- 91, 92, 93, 94, 95, 96, 97, -1, 99, -1,
- -1, -1, 44, 45, 46, 47, 48, 49, -1, 51,
- 81, 82, 54, 55, 56, -1, -1, -1, -1, -1,
- 91, 92, 93, 94, 95, 96, 97, 44, 45, 46,
+ 97, -1, -1, 100, -1, 102, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
+ 93, 94, 95, 96, 97, -1, -1, 100, -1, 102,
+ 44, 45, 46, 47, 48, 49, -1, 51, -1, -1,
+ 54, 55, 56, 44, 45, 46, 47, 48, 49, -1,
+ 51, -1, -1, 54, 55, 56, 44, 45, 46, 47,
+ 48, 49, -1, 51, -1, -1, 54, 55, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, 91, 92, 93,
+ 94, 95, 96, 97, -1, -1, -1, -1, 102, -1,
+ 91, 92, 93, 94, 95, 96, 97, -1, -1, 100,
+ -1, -1, -1, 91, 92, 93, 94, 95, 96, 97,
+ -1, 99, 44, 45, 46, 47, 48, 49, -1, 51,
+ -1, -1, 54, 55, 56, 44, 45, 46, 47, 48,
+ 49, -1, 51, -1, -1, 54, 55, 56, 44, 45,
+ 46, 47, 48, 49, -1, 51, -1, -1, 54, 55,
+ 56, -1, -1, -1, -1, -1, -1, -1, -1, 91,
+ 92, 93, 94, 95, 96, 97, -1, 99, -1, -1,
+ -1, -1, 91, 92, 93, 94, 95, 96, 97, -1,
+ 99, -1, -1, -1, -1, 91, 92, 93, 94, 95,
+ 96, 97, -1, 99, 44, 45, 46, 47, 48, 49,
+ -1, 51, -1, -1, 54, 55, 56, 44, 45, 46,
47, 48, 49, -1, 51, -1, -1, 54, 55, 56,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
- 92, 93, 94, 95, 96, 97, 44, 45, -1, 47,
+ -1, -1, -1, -1, -1, -1, 44, 45, 46, 47,
48, 49, -1, 51, -1, -1, 54, 55, 56, -1,
+ -1, 91, 92, 93, 94, 95, 96, 97, -1, 99,
-1, -1, -1, -1, 91, 92, 93, 94, 95, 96,
- 97, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 97, -1, 99, 81, 82, -1, -1, -1, -1, -1,
+ -1, -1, -1, 91, 92, 93, 94, 95, 96, 97,
+ 44, 45, 46, 47, 48, 49, -1, 51, -1, -1,
+ 54, 55, 56, 44, 45, 46, 47, 48, 49, -1,
+ 51, -1, -1, 54, 55, 56, 44, 45, -1, 47,
+ 48, 49, -1, 51, -1, -1, 54, 55, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, 91, 92, 93,
+ 94, 95, 96, 97, -1, -1, -1, -1, -1, -1,
+ 91, 92, 93, 94, 95, 96, 97, -1, -1, -1,
-1, -1, -1, 91, 92, 93, 94, 95, 96, 97
};
@@ -1916,56 +1922,56 @@ static const yytype_uint8 yystos[] =
124, 125, 129, 131, 132, 133, 135, 136, 137, 11,
12, 57, 59, 61, 63, 77, 148, 33, 99, 10,
15, 17, 19, 21, 22, 23, 24, 27, 29, 32,
- 33, 34, 35, 37, 40, 41, 42, 43, 83, 84,
- 85, 86, 90, 118, 119, 120, 121, 5, 6, 8,
- 9, 11, 12, 13, 14, 20, 28, 50, 57, 59,
- 61, 63, 77, 80, 94, 95, 101, 103, 119, 126,
- 128, 144, 145, 148, 150, 152, 155, 156, 160, 163,
- 164, 165, 168, 148, 101, 165, 119, 33, 126, 165,
- 38, 39, 77, 119, 145, 147, 158, 119, 119, 126,
- 165, 126, 128, 120, 165, 120, 119, 99, 124, 0,
- 109, 126, 165, 101, 151, 164, 151, 165, 165, 165,
- 165, 72, 99, 99, 99, 100, 151, 151, 165, 165,
- 164, 65, 66, 67, 68, 69, 72, 76, 119, 165,
- 164, 164, 102, 165, 8, 9, 105, 119, 161, 162,
- 165, 169, 170, 101, 99, 99, 30, 44, 45, 46,
- 47, 48, 49, 51, 54, 55, 56, 91, 92, 93,
- 94, 95, 96, 97, 100, 127, 144, 166, 168, 99,
- 165, 35, 48, 49, 51, 55, 56, 120, 99, 99,
- 26, 52, 53, 119, 165, 119, 36, 46, 130, 35,
- 99, 99, 38, 99, 99, 99, 36, 99, 99, 120,
- 99, 102, 165, 30, 36, 30, 36, 30, 36, 30,
- 36, 57, 59, 61, 63, 149, 119, 30, 166, 71,
- 78, 71, 78, 71, 78, 71, 78, 71, 78, 30,
- 30, 81, 82, 100, 102, 105, 105, 104, 105, 100,
- 104, 104, 100, 102, 170, 28, 165, 165, 165, 165,
+ 33, 34, 35, 40, 41, 42, 43, 83, 84, 85,
+ 86, 90, 118, 119, 120, 121, 5, 6, 8, 9,
+ 11, 12, 13, 14, 20, 28, 50, 57, 59, 61,
+ 63, 77, 80, 94, 95, 101, 103, 119, 126, 128,
+ 144, 145, 148, 150, 152, 155, 156, 160, 163, 164,
+ 165, 168, 148, 101, 165, 119, 33, 126, 165, 38,
+ 39, 77, 119, 145, 147, 158, 119, 126, 165, 126,
+ 128, 120, 165, 120, 119, 99, 124, 0, 109, 126,
+ 165, 101, 151, 164, 151, 165, 165, 165, 165, 72,
+ 99, 99, 99, 100, 151, 151, 165, 165, 164, 65,
+ 66, 67, 68, 69, 72, 76, 119, 165, 164, 164,
+ 102, 165, 8, 9, 105, 119, 161, 162, 165, 169,
+ 170, 101, 99, 99, 30, 44, 45, 46, 47, 48,
+ 49, 51, 54, 55, 56, 91, 92, 93, 94, 95,
+ 96, 97, 100, 127, 144, 166, 168, 99, 165, 35,
+ 48, 49, 51, 55, 56, 120, 99, 99, 26, 52,
+ 53, 119, 165, 119, 36, 46, 130, 99, 99, 38,
+ 99, 99, 99, 36, 99, 99, 120, 99, 102, 165,
+ 30, 36, 30, 36, 30, 36, 30, 36, 57, 59,
+ 61, 63, 149, 119, 30, 166, 71, 78, 71, 78,
+ 71, 78, 71, 78, 71, 78, 30, 30, 81, 82,
+ 100, 102, 105, 105, 104, 105, 100, 104, 104, 100,
+ 102, 170, 28, 165, 165, 165, 165, 165, 165, 165,
165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
- 165, 165, 165, 170, 44, 45, 46, 47, 48, 49,
- 51, 54, 55, 56, 91, 92, 93, 94, 95, 96,
- 97, 100, 127, 99, 122, 99, 77, 145, 146, 148,
- 146, 146, 25, 46, 99, 30, 165, 165, 86, 99,
- 112, 113, 114, 115, 165, 124, 99, 122, 138, 139,
- 140, 99, 100, 164, 165, 164, 165, 164, 165, 164,
- 165, 25, 30, 157, 28, 58, 60, 62, 64, 73,
- 74, 75, 79, 80, 153, 154, 164, 153, 164, 164,
- 102, 170, 165, 165, 165, 8, 9, 119, 162, 165,
- 100, 127, 165, 127, 165, 165, 165, 165, 165, 165,
+ 170, 44, 45, 46, 47, 48, 49, 51, 54, 55,
+ 56, 91, 92, 93, 94, 95, 96, 97, 100, 127,
+ 99, 122, 99, 77, 145, 146, 148, 146, 146, 25,
+ 46, 99, 30, 165, 86, 99, 112, 113, 114, 115,
+ 165, 124, 99, 122, 138, 139, 140, 99, 100, 164,
+ 165, 164, 165, 164, 165, 164, 165, 25, 30, 157,
+ 28, 58, 60, 62, 64, 73, 74, 75, 79, 80,
+ 153, 154, 164, 153, 164, 164, 102, 170, 165, 165,
+ 165, 8, 9, 119, 162, 165, 100, 127, 165, 127,
165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
- 165, 170, 99, 123, 141, 142, 143, 17, 138, 99,
- 99, 99, 165, 165, 138, 73, 74, 79, 80, 159,
- 164, 99, 119, 115, 99, 89, 140, 138, 102, 170,
- 30, 30, 30, 30, 164, 165, 157, 157, 157, 157,
- 164, 164, 157, 164, 164, 127, 102, 127, 17, 87,
- 134, 143, 99, 122, 99, 16, 36, 88, 164, 167,
- 168, 167, 167, 167, 120, 99, 10, 127, 164, 164,
- 164, 164, 164, 164, 164, 164, 30, 73, 154, 102,
- 99, 122, 99, 141, 138, 36, 165, 99, 44, 45,
- 47, 48, 49, 51, 54, 55, 56, 91, 92, 93,
- 94, 95, 96, 97, 30, 99, 117, 119, 102, 73,
- 141, 134, 88, 165, 99, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 73, 138, 99, 100, 164, 134, 99, 99, 138,
- 167, 119, 138, 88, 88, 99, 99
+ 165, 165, 165, 165, 165, 165, 165, 170, 99, 123,
+ 141, 142, 143, 17, 138, 99, 99, 99, 165, 165,
+ 138, 73, 74, 79, 80, 159, 164, 99, 119, 115,
+ 99, 89, 140, 138, 102, 170, 30, 30, 30, 30,
+ 164, 165, 157, 157, 157, 157, 164, 164, 157, 164,
+ 164, 127, 102, 127, 17, 87, 134, 143, 99, 122,
+ 99, 16, 36, 88, 164, 167, 168, 167, 167, 167,
+ 120, 99, 10, 127, 164, 164, 164, 164, 164, 164,
+ 164, 164, 30, 73, 154, 102, 99, 122, 99, 141,
+ 138, 36, 165, 99, 44, 45, 47, 48, 49, 51,
+ 54, 55, 56, 91, 92, 93, 94, 95, 96, 97,
+ 30, 99, 117, 119, 102, 73, 141, 134, 88, 165,
+ 99, 167, 167, 167, 167, 167, 167, 167, 167, 167,
+ 167, 167, 167, 167, 167, 167, 167, 73, 138, 99,
+ 100, 164, 134, 99, 99, 138, 167, 119, 138, 88,
+ 88, 99, 99
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
@@ -1980,30 +1986,30 @@ static const yytype_uint8 yyr1[] =
118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
118, 118, 118, 118, 118, 118, 118, 119, 119, 119,
119, 119, 119, 119, 119, 119, 119, 119, 119, 119,
- 119, 119, 119, 119, 119, 119, 119, 120, 120, 120,
- 121, 121, 122, 122, 123, 123, 123, 123, 123, 123,
- 124, 124, 124, 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, 129, 129, 129, 130, 130, 131, 131,
- 131, 132, 132, 133, 133, 133, 133, 134, 134, 135,
- 135, 135, 135, 136, 136, 137, 138, 138, 139, 139,
- 140, 140, 141, 141, 142, 142, 143, 143, 144, 144,
+ 119, 119, 119, 119, 119, 119, 120, 120, 120, 121,
+ 121, 122, 122, 123, 123, 123, 123, 123, 123, 124,
+ 124, 124, 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, 129, 129, 129, 130, 130, 131, 131, 131,
+ 132, 132, 133, 133, 133, 133, 134, 134, 135, 135,
+ 135, 135, 136, 136, 137, 138, 138, 139, 139, 140,
+ 140, 141, 141, 142, 142, 143, 143, 144, 144, 144,
144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
- 144, 145, 146, 146, 147, 147, 148, 148, 148, 148,
- 148, 148, 148, 148, 148, 148, 148, 149, 149, 149,
- 149, 150, 150, 151, 151, 151, 151, 152, 152, 152,
- 152, 152, 153, 153, 153, 153, 153, 154, 155, 155,
- 155, 155, 155, 155, 155, 155, 155, 155, 156, 156,
- 156, 156, 156, 157, 157, 158, 158, 159, 159, 159,
- 159, 159, 160, 160, 160, 161, 161, 162, 162, 162,
- 163, 163, 164, 164, 165, 165, 165, 165, 165, 165,
+ 145, 146, 146, 147, 147, 148, 148, 148, 148, 148,
+ 148, 148, 148, 148, 148, 148, 149, 149, 149, 149,
+ 150, 150, 151, 151, 151, 151, 152, 152, 152, 152,
+ 152, 153, 153, 153, 153, 153, 154, 155, 155, 155,
+ 155, 155, 155, 155, 155, 155, 155, 156, 156, 156,
+ 156, 156, 157, 157, 158, 158, 159, 159, 159, 159,
+ 159, 160, 160, 160, 161, 161, 162, 162, 162, 163,
+ 163, 164, 164, 165, 165, 165, 165, 165, 165, 165,
165, 165, 165, 165, 165, 165, 165, 165, 165, 165,
- 165, 165, 165, 166, 166, 166, 166, 166, 166, 166,
+ 165, 165, 166, 166, 166, 166, 166, 166, 166, 166,
166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
- 166, 166, 167, 167, 167, 167, 167, 167, 167, 167,
- 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
- 168, 168, 169, 169, 170, 170
+ 166, 167, 167, 167, 167, 167, 167, 167, 167, 167,
+ 167, 167, 167, 167, 167, 167, 167, 167, 167, 168,
+ 168, 169, 169, 170, 170
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
@@ -2018,30 +2024,30 @@ static const yytype_int8 yyr2[] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 0, 1, 2,
- 1, 3, 1, 2, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 3, 3, 3, 3, 3, 3, 3,
- 5, 3, 3, 2, 3, 3, 2, 0, 2, 4,
- 3, 5, 2, 4, 6, 0, 1, 2, 2, 5,
- 4, 3, 5, 5, 5, 5, 1, 1, 3, 3,
- 3, 4, 6, 6, 8, 7, 9, 0, 2, 7,
- 11, 12, 9, 4, 6, 4, 0, 1, 1, 2,
- 1, 1, 0, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 2, 3, 5, 3, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 2, 4, 6,
- 4, 6, 4, 6, 4, 6, 5, 1, 1, 1,
- 1, 2, 2, 1, 2, 4, 6, 2, 4, 4,
- 1, 1, 1, 1, 5, 2, 2, 2, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 6, 6,
- 6, 6, 6, 1, 1, 2, 4, 1, 2, 5,
- 2, 2, 3, 3, 3, 1, 3, 3, 3, 3,
- 2, 2, 1, 1, 1, 1, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 1, 1, 3, 3, 3, 3, 3,
+ 1, 1, 1, 1, 1, 1, 0, 1, 2, 1,
+ 3, 1, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 3, 3, 3, 3, 3, 3, 3, 5,
+ 3, 3, 2, 3, 3, 2, 0, 2, 4, 3,
+ 5, 2, 4, 6, 0, 1, 2, 2, 5, 4,
+ 3, 5, 5, 5, 5, 1, 1, 3, 3, 3,
+ 4, 6, 6, 8, 7, 9, 0, 2, 7, 11,
+ 12, 9, 4, 6, 1, 0, 1, 1, 2, 1,
+ 1, 0, 1, 1, 2, 1, 1, 1, 1, 1,
+ 1, 2, 3, 5, 3, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 2, 2, 4, 6, 4,
+ 6, 4, 6, 4, 6, 5, 1, 1, 1, 1,
+ 2, 2, 1, 2, 4, 6, 2, 4, 4, 1,
+ 1, 1, 1, 5, 2, 2, 2, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 6, 6, 6,
+ 6, 6, 1, 1, 2, 4, 1, 2, 5, 2,
+ 2, 3, 3, 3, 1, 3, 3, 3, 3, 2,
+ 2, 1, 1, 1, 1, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 1, 1, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 4, 4, 0, 1, 1, 3
+ 3, 1, 1, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
+ 4, 0, 1, 1, 3
};
@@ -2313,39 +2319,39 @@ yydestruct (const char *yymsg,
switch (yykind)
{
case YYSYMBOL_tVARID: /* tVARID */
-#line 190 "engines/director/lingo/lingo-gr.y"
+#line 196 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 2319 "engines/director/lingo/lingo-gr.cpp"
+#line 2325 "engines/director/lingo/lingo-gr.cpp"
break;
case YYSYMBOL_tSTRING: /* tSTRING */
-#line 190 "engines/director/lingo/lingo-gr.y"
+#line 196 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 2325 "engines/director/lingo/lingo-gr.cpp"
+#line 2331 "engines/director/lingo/lingo-gr.cpp"
break;
case YYSYMBOL_tSYMBOL: /* tSYMBOL */
-#line 190 "engines/director/lingo/lingo-gr.y"
+#line 196 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 2331 "engines/director/lingo/lingo-gr.cpp"
+#line 2337 "engines/director/lingo/lingo-gr.cpp"
break;
case YYSYMBOL_tENDCLAUSE: /* tENDCLAUSE */
-#line 190 "engines/director/lingo/lingo-gr.y"
+#line 196 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 2337 "engines/director/lingo/lingo-gr.cpp"
+#line 2343 "engines/director/lingo/lingo-gr.cpp"
break;
case YYSYMBOL_CMDID: /* CMDID */
-#line 190 "engines/director/lingo/lingo-gr.y"
+#line 196 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 2343 "engines/director/lingo/lingo-gr.cpp"
+#line 2349 "engines/director/lingo/lingo-gr.cpp"
break;
case YYSYMBOL_ID: /* ID */
-#line 190 "engines/director/lingo/lingo-gr.y"
+#line 196 "engines/director/lingo/lingo-gr.y"
{ delete ((*yyvaluep).s); }
-#line 2349 "engines/director/lingo/lingo-gr.cpp"
+#line 2355 "engines/director/lingo/lingo-gr.cpp"
break;
default:
@@ -2611,551 +2617,545 @@ yyreduce:
switch (yyn)
{
case 2: /* script: scriptpartlist */
-#line 196 "engines/director/lingo/lingo-gr.y"
+#line 202 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_compiler->_assemblyAST = new ScriptNode((yyvsp[0].nodelist)); }
-#line 2617 "engines/director/lingo/lingo-gr.cpp"
+#line 2623 "engines/director/lingo/lingo-gr.cpp"
break;
case 3: /* scriptpartlist: scriptpart */
-#line 198 "engines/director/lingo/lingo-gr.y"
+#line 204 "engines/director/lingo/lingo-gr.y"
{
NodeList *list = new NodeList;
if ((yyvsp[0].node)) {
list->push_back((yyvsp[0].node));
}
(yyval.nodelist) = list; }
-#line 2628 "engines/director/lingo/lingo-gr.cpp"
+#line 2634 "engines/director/lingo/lingo-gr.cpp"
break;
case 4: /* scriptpartlist: scriptpartlist scriptpart */
-#line 204 "engines/director/lingo/lingo-gr.y"
+#line 210 "engines/director/lingo/lingo-gr.y"
{
if ((yyvsp[0].node)) {
(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
}
(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 2638 "engines/director/lingo/lingo-gr.cpp"
+#line 2644 "engines/director/lingo/lingo-gr.cpp"
break;
case 5: /* scriptpart: '\n' */
-#line 211 "engines/director/lingo/lingo-gr.y"
+#line 217 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = nullptr; }
-#line 2644 "engines/director/lingo/lingo-gr.cpp"
+#line 2650 "engines/director/lingo/lingo-gr.cpp"
break;
case 10: /* macro: tMACRO ID idlist '\n' stmtlist */
-#line 244 "engines/director/lingo/lingo-gr.y"
+#line 250 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); }
-#line 2650 "engines/director/lingo/lingo-gr.cpp"
+#line 2656 "engines/director/lingo/lingo-gr.cpp"
break;
case 11: /* factory: tFACTORY ID '\n' methodlist */
-#line 248 "engines/director/lingo/lingo-gr.y"
+#line 254 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new FactoryNode((yyvsp[-2].s), (yyvsp[0].nodelist)); }
-#line 2656 "engines/director/lingo/lingo-gr.cpp"
+#line 2662 "engines/director/lingo/lingo-gr.cpp"
break;
case 12: /* method: tMETHOD ID idlist '\n' stmtlist */
-#line 250 "engines/director/lingo/lingo-gr.y"
+#line 256 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); }
-#line 2662 "engines/director/lingo/lingo-gr.cpp"
+#line 2668 "engines/director/lingo/lingo-gr.cpp"
break;
case 13: /* methodlist: %empty */
-#line 252 "engines/director/lingo/lingo-gr.y"
+#line 258 "engines/director/lingo/lingo-gr.y"
{ (yyval.nodelist) = new NodeList; }
-#line 2668 "engines/director/lingo/lingo-gr.cpp"
+#line 2674 "engines/director/lingo/lingo-gr.cpp"
break;
case 15: /* nonemptymethodlist: methodlistline */
-#line 256 "engines/director/lingo/lingo-gr.y"
+#line 262 "engines/director/lingo/lingo-gr.y"
{
NodeList *list = new NodeList;
if ((yyvsp[0].node)) {
list->push_back((yyvsp[0].node));
}
(yyval.nodelist) = list; }
-#line 2679 "engines/director/lingo/lingo-gr.cpp"
+#line 2685 "engines/director/lingo/lingo-gr.cpp"
break;
case 16: /* nonemptymethodlist: nonemptymethodlist methodlistline */
-#line 262 "engines/director/lingo/lingo-gr.y"
+#line 268 "engines/director/lingo/lingo-gr.y"
{
if ((yyvsp[0].node)) {
(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
}
(yyval.nodelist) = (yyvsp[-1].nodelist); }
-#line 2689 "engines/director/lingo/lingo-gr.cpp"
+#line 2695 "engines/director/lingo/lingo-gr.cpp"
break;
case 17: /* methodlistline: '\n' */
-#line 269 "engines/director/lingo/lingo-gr.y"
+#line 275 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = nullptr; }
-#line 2695 "engines/director/lingo/lingo-gr.cpp"
+#line 2701 "engines/director/lingo/lingo-gr.cpp"
break;
case 19: /* handler: tON ID idlist '\n' stmtlist tENDCLAUSE endargdef '\n' */
-#line 275 "engines/director/lingo/lingo-gr.y"
+#line 281 "engines/director/lingo/lingo-gr.y"
{ // D3
(yyval.node) = new HandlerNode((yyvsp[-6].s), (yyvsp[-5].idlist), (yyvsp[-3].nodelist));
checkEnd((yyvsp[-2].s), (yyvsp[-6].s), false);
delete (yyvsp[-2].s); }
-#line 2704 "engines/director/lingo/lingo-gr.cpp"
+#line 2710 "engines/director/lingo/lingo-gr.cpp"
break;
case 20: /* handler: tON ID idlist '\n' stmtlist */
-#line 279 "engines/director/lingo/lingo-gr.y"
+#line 285 "engines/director/lingo/lingo-gr.y"
{ // D4. No 'end' clause
(yyval.node) = new HandlerNode((yyvsp[-3].s), (yyvsp[-2].idlist), (yyvsp[0].nodelist)); }
-#line 2711 "engines/director/lingo/lingo-gr.cpp"
+#line 2717 "engines/director/lingo/lingo-gr.cpp"
break;
case 22: /* endargdef: ID */
-#line 284 "engines/director/lingo/lingo-gr.y"
+#line 290 "engines/director/lingo/lingo-gr.y"
{ delete (yyvsp[0].s); }
-#line 2717 "engines/director/lingo/lingo-gr.cpp"
+#line 2723 "engines/director/lingo/lingo-gr.cpp"
break;
case 23: /* endargdef: endargdef ',' ID */
-#line 285 "engines/director/lingo/lingo-gr.y"
+#line 291 "engines/director/lingo/lingo-gr.y"
{ delete (yyvsp[0].s); }
-#line 2723 "engines/director/lingo/lingo-gr.cpp"
+#line 2729 "engines/director/lingo/lingo-gr.cpp"
break;
case 25: /* CMDID: tABBREVIATED */
-#line 293 "engines/director/lingo/lingo-gr.y"
+#line 299 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("abbreviated"); }
-#line 2729 "engines/director/lingo/lingo-gr.cpp"
+#line 2735 "engines/director/lingo/lingo-gr.cpp"
break;
case 26: /* CMDID: tABBREV */
-#line 294 "engines/director/lingo/lingo-gr.y"
+#line 300 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("abbrev"); }
-#line 2735 "engines/director/lingo/lingo-gr.cpp"
+#line 2741 "engines/director/lingo/lingo-gr.cpp"
break;
case 27: /* CMDID: tABBR */
-#line 295 "engines/director/lingo/lingo-gr.y"
+#line 301 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("abbr"); }
-#line 2741 "engines/director/lingo/lingo-gr.cpp"
+#line 2747 "engines/director/lingo/lingo-gr.cpp"
break;
case 28: /* CMDID: tAFTER */
-#line 296 "engines/director/lingo/lingo-gr.y"
+#line 302 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("after"); }
-#line 2747 "engines/director/lingo/lingo-gr.cpp"
+#line 2753 "engines/director/lingo/lingo-gr.cpp"
break;
case 29: /* CMDID: tAND */
-#line 297 "engines/director/lingo/lingo-gr.y"
+#line 303 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("and"); }
-#line 2753 "engines/director/lingo/lingo-gr.cpp"
+#line 2759 "engines/director/lingo/lingo-gr.cpp"
break;
case 30: /* CMDID: tBEFORE */
-#line 298 "engines/director/lingo/lingo-gr.y"
+#line 304 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("before"); }
-#line 2759 "engines/director/lingo/lingo-gr.cpp"
+#line 2765 "engines/director/lingo/lingo-gr.cpp"
break;
case 31: /* CMDID: tCAST */
-#line 299 "engines/director/lingo/lingo-gr.y"
+#line 305 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("cast"); }
-#line 2765 "engines/director/lingo/lingo-gr.cpp"
+#line 2771 "engines/director/lingo/lingo-gr.cpp"
break;
case 32: /* CMDID: tCHAR */
-#line 300 "engines/director/lingo/lingo-gr.y"
+#line 306 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("char"); }
-#line 2771 "engines/director/lingo/lingo-gr.cpp"
+#line 2777 "engines/director/lingo/lingo-gr.cpp"
break;
case 33: /* CMDID: tCHARS */
-#line 301 "engines/director/lingo/lingo-gr.y"
+#line 307 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("chars"); }
-#line 2777 "engines/director/lingo/lingo-gr.cpp"
+#line 2783 "engines/director/lingo/lingo-gr.cpp"
break;
case 34: /* CMDID: tCONTAINS */
-#line 302 "engines/director/lingo/lingo-gr.y"
+#line 308 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("contains"); }
-#line 2783 "engines/director/lingo/lingo-gr.cpp"
+#line 2789 "engines/director/lingo/lingo-gr.cpp"
break;
case 35: /* CMDID: tDATE */
-#line 303 "engines/director/lingo/lingo-gr.y"
+#line 309 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("date"); }
-#line 2789 "engines/director/lingo/lingo-gr.cpp"
+#line 2795 "engines/director/lingo/lingo-gr.cpp"
break;
case 36: /* CMDID: tDELETE */
-#line 304 "engines/director/lingo/lingo-gr.y"
+#line 310 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("delete"); }
-#line 2795 "engines/director/lingo/lingo-gr.cpp"
+#line 2801 "engines/director/lingo/lingo-gr.cpp"
break;
case 37: /* CMDID: tDOWN */
-#line 305 "engines/director/lingo/lingo-gr.y"
+#line 311 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("down"); }
-#line 2801 "engines/director/lingo/lingo-gr.cpp"
+#line 2807 "engines/director/lingo/lingo-gr.cpp"
break;
case 38: /* CMDID: tFIELD */
-#line 306 "engines/director/lingo/lingo-gr.y"
+#line 312 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("field"); }
-#line 2807 "engines/director/lingo/lingo-gr.cpp"
+#line 2813 "engines/director/lingo/lingo-gr.cpp"
break;
case 39: /* CMDID: tFRAME */
-#line 307 "engines/director/lingo/lingo-gr.y"
+#line 313 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("frame"); }
-#line 2813 "engines/director/lingo/lingo-gr.cpp"
+#line 2819 "engines/director/lingo/lingo-gr.cpp"
break;
case 40: /* CMDID: tHILITE */
-#line 308 "engines/director/lingo/lingo-gr.y"
+#line 314 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("hilite"); }
-#line 2819 "engines/director/lingo/lingo-gr.cpp"
+#line 2825 "engines/director/lingo/lingo-gr.cpp"
break;
case 41: /* CMDID: tIN */
-#line 309 "engines/director/lingo/lingo-gr.y"
+#line 315 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("in"); }
-#line 2825 "engines/director/lingo/lingo-gr.cpp"
+#line 2831 "engines/director/lingo/lingo-gr.cpp"
break;
case 42: /* CMDID: tINTERSECTS */
-#line 310 "engines/director/lingo/lingo-gr.y"
+#line 316 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("intersects"); }
-#line 2831 "engines/director/lingo/lingo-gr.cpp"
+#line 2837 "engines/director/lingo/lingo-gr.cpp"
break;
case 43: /* CMDID: tINTO */
-#line 311 "engines/director/lingo/lingo-gr.y"
+#line 317 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("into"); }
-#line 2837 "engines/director/lingo/lingo-gr.cpp"
+#line 2843 "engines/director/lingo/lingo-gr.cpp"
break;
case 44: /* CMDID: tITEM */
-#line 312 "engines/director/lingo/lingo-gr.y"
+#line 318 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("item"); }
-#line 2843 "engines/director/lingo/lingo-gr.cpp"
+#line 2849 "engines/director/lingo/lingo-gr.cpp"
break;
case 45: /* CMDID: tITEMS */
-#line 313 "engines/director/lingo/lingo-gr.y"
+#line 319 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("items"); }
-#line 2849 "engines/director/lingo/lingo-gr.cpp"
+#line 2855 "engines/director/lingo/lingo-gr.cpp"
break;
case 46: /* CMDID: tLAST */
-#line 314 "engines/director/lingo/lingo-gr.y"
+#line 320 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("last"); }
-#line 2855 "engines/director/lingo/lingo-gr.cpp"
+#line 2861 "engines/director/lingo/lingo-gr.cpp"
break;
case 47: /* CMDID: tLINE */
-#line 315 "engines/director/lingo/lingo-gr.y"
+#line 321 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("line"); }
-#line 2861 "engines/director/lingo/lingo-gr.cpp"
+#line 2867 "engines/director/lingo/lingo-gr.cpp"
break;
case 48: /* CMDID: tLINES */
-#line 316 "engines/director/lingo/lingo-gr.y"
+#line 322 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("lines"); }
-#line 2867 "engines/director/lingo/lingo-gr.cpp"
+#line 2873 "engines/director/lingo/lingo-gr.cpp"
break;
case 49: /* CMDID: tLONG */
-#line 317 "engines/director/lingo/lingo-gr.y"
+#line 323 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("long"); }
-#line 2873 "engines/director/lingo/lingo-gr.cpp"
+#line 2879 "engines/director/lingo/lingo-gr.cpp"
break;
case 50: /* CMDID: tMENU */
-#line 318 "engines/director/lingo/lingo-gr.y"
+#line 324 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("menu"); }
-#line 2879 "engines/director/lingo/lingo-gr.cpp"
+#line 2885 "engines/director/lingo/lingo-gr.cpp"
break;
case 51: /* CMDID: tMENUITEM */
-#line 319 "engines/director/lingo/lingo-gr.y"
+#line 325 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("menuItem"); }
-#line 2885 "engines/director/lingo/lingo-gr.cpp"
+#line 2891 "engines/director/lingo/lingo-gr.cpp"
break;
case 52: /* CMDID: tMENUITEMS */
-#line 320 "engines/director/lingo/lingo-gr.y"
+#line 326 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("menuItems"); }
-#line 2891 "engines/director/lingo/lingo-gr.cpp"
+#line 2897 "engines/director/lingo/lingo-gr.cpp"
break;
case 53: /* CMDID: tMOD */
-#line 321 "engines/director/lingo/lingo-gr.y"
+#line 327 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("mod"); }
-#line 2897 "engines/director/lingo/lingo-gr.cpp"
+#line 2903 "engines/director/lingo/lingo-gr.cpp"
break;
case 54: /* CMDID: tMOVIE */
-#line 322 "engines/director/lingo/lingo-gr.y"
+#line 328 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("movie"); }
-#line 2903 "engines/director/lingo/lingo-gr.cpp"
+#line 2909 "engines/director/lingo/lingo-gr.cpp"
break;
case 55: /* CMDID: tNEXT */
-#line 323 "engines/director/lingo/lingo-gr.y"
+#line 329 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("next"); }
-#line 2909 "engines/director/lingo/lingo-gr.cpp"
+#line 2915 "engines/director/lingo/lingo-gr.cpp"
break;
case 56: /* CMDID: tNOT */
-#line 324 "engines/director/lingo/lingo-gr.y"
+#line 330 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("not"); }
-#line 2915 "engines/director/lingo/lingo-gr.cpp"
+#line 2921 "engines/director/lingo/lingo-gr.cpp"
break;
case 57: /* CMDID: tNUMBER */
-#line 325 "engines/director/lingo/lingo-gr.y"
+#line 331 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("number"); }
-#line 2921 "engines/director/lingo/lingo-gr.cpp"
+#line 2927 "engines/director/lingo/lingo-gr.cpp"
break;
case 58: /* CMDID: tOF */
-#line 326 "engines/director/lingo/lingo-gr.y"
+#line 332 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("of"); }
-#line 2927 "engines/director/lingo/lingo-gr.cpp"
+#line 2933 "engines/director/lingo/lingo-gr.cpp"
break;
case 59: /* CMDID: tOR */
-#line 327 "engines/director/lingo/lingo-gr.y"
+#line 333 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("or"); }
-#line 2933 "engines/director/lingo/lingo-gr.cpp"
+#line 2939 "engines/director/lingo/lingo-gr.cpp"
break;
case 60: /* CMDID: tPREVIOUS */
-#line 328 "engines/director/lingo/lingo-gr.y"
+#line 334 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("previous"); }
-#line 2939 "engines/director/lingo/lingo-gr.cpp"
+#line 2945 "engines/director/lingo/lingo-gr.cpp"
break;
case 61: /* CMDID: tREPEAT */
-#line 329 "engines/director/lingo/lingo-gr.y"
+#line 335 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("repeat"); }
-#line 2945 "engines/director/lingo/lingo-gr.cpp"
+#line 2951 "engines/director/lingo/lingo-gr.cpp"
break;
case 62: /* CMDID: tSCRIPT */
-#line 330 "engines/director/lingo/lingo-gr.y"
+#line 336 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("script"); }
-#line 2951 "engines/director/lingo/lingo-gr.cpp"
+#line 2957 "engines/director/lingo/lingo-gr.cpp"
break;
case 63: /* CMDID: tASSERTERROR */
-#line 331 "engines/director/lingo/lingo-gr.y"
+#line 337 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("scummvmAssertError"); }
-#line 2957 "engines/director/lingo/lingo-gr.cpp"
+#line 2963 "engines/director/lingo/lingo-gr.cpp"
break;
case 64: /* CMDID: tSHORT */
-#line 332 "engines/director/lingo/lingo-gr.y"
+#line 338 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("short"); }
-#line 2963 "engines/director/lingo/lingo-gr.cpp"
+#line 2969 "engines/director/lingo/lingo-gr.cpp"
break;
case 65: /* CMDID: tSOUND */
-#line 333 "engines/director/lingo/lingo-gr.y"
+#line 339 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("sound"); }
-#line 2969 "engines/director/lingo/lingo-gr.cpp"
+#line 2975 "engines/director/lingo/lingo-gr.cpp"
break;
case 66: /* CMDID: tSPRITE */
-#line 334 "engines/director/lingo/lingo-gr.y"
+#line 340 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("sprite"); }
-#line 2975 "engines/director/lingo/lingo-gr.cpp"
+#line 2981 "engines/director/lingo/lingo-gr.cpp"
break;
case 67: /* CMDID: tSTARTS */
-#line 335 "engines/director/lingo/lingo-gr.y"
+#line 341 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("starts"); }
-#line 2981 "engines/director/lingo/lingo-gr.cpp"
+#line 2987 "engines/director/lingo/lingo-gr.cpp"
break;
case 68: /* CMDID: tTHE */
-#line 336 "engines/director/lingo/lingo-gr.y"
+#line 342 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("the"); }
-#line 2987 "engines/director/lingo/lingo-gr.cpp"
+#line 2993 "engines/director/lingo/lingo-gr.cpp"
break;
case 69: /* CMDID: tTIME */
-#line 337 "engines/director/lingo/lingo-gr.y"
+#line 343 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("time"); }
-#line 2993 "engines/director/lingo/lingo-gr.cpp"
+#line 2999 "engines/director/lingo/lingo-gr.cpp"
break;
case 70: /* CMDID: tTO */
-#line 338 "engines/director/lingo/lingo-gr.y"
+#line 344 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("to"); }
-#line 2999 "engines/director/lingo/lingo-gr.cpp"
+#line 3005 "engines/director/lingo/lingo-gr.cpp"
break;
case 71: /* CMDID: tWHILE */
-#line 339 "engines/director/lingo/lingo-gr.y"
+#line 345 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("while"); }
-#line 3005 "engines/director/lingo/lingo-gr.cpp"
+#line 3011 "engines/director/lingo/lingo-gr.cpp"
break;
case 72: /* CMDID: tWINDOW */
-#line 340 "engines/director/lingo/lingo-gr.y"
+#line 346 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("window"); }
-#line 3011 "engines/director/lingo/lingo-gr.cpp"
+#line 3017 "engines/director/lingo/lingo-gr.cpp"
break;
case 73: /* CMDID: tWITH */
-#line 341 "engines/director/lingo/lingo-gr.y"
+#line 347 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("with"); }
-#line 3017 "engines/director/lingo/lingo-gr.cpp"
+#line 3023 "engines/director/lingo/lingo-gr.cpp"
break;
case 74: /* CMDID: tWITHIN */
-#line 342 "engines/director/lingo/lingo-gr.y"
+#line 348 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("within"); }
-#line 3023 "engines/director/lingo/lingo-gr.cpp"
+#line 3029 "engines/director/lingo/lingo-gr.cpp"
break;
case 75: /* CMDID: tWORD */
-#line 343 "engines/director/lingo/lingo-gr.y"
+#line 349 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("word"); }
-#line 3029 "engines/director/lingo/lingo-gr.cpp"
+#line 3035 "engines/director/lingo/lingo-gr.cpp"
break;
case 76: /* CMDID: tWORDS */
-#line 344 "engines/director/lingo/lingo-gr.y"
+#line 350 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("words"); }
-#line 3035 "engines/director/lingo/lingo-gr.cpp"
+#line 3041 "engines/director/lingo/lingo-gr.cpp"
break;
case 78: /* ID: tELSE */
-#line 348 "engines/director/lingo/lingo-gr.y"
+#line 354 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("else"); }
-#line 3041 "engines/director/lingo/lingo-gr.cpp"
+#line 3047 "engines/director/lingo/lingo-gr.cpp"
break;
case 79: /* ID: tENDCLAUSE */
-#line 349 "engines/director/lingo/lingo-gr.y"
+#line 355 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("end"); }
-#line 3047 "engines/director/lingo/lingo-gr.cpp"
+#line 3053 "engines/director/lingo/lingo-gr.cpp"
break;
case 80: /* ID: tEXIT */
-#line 350 "engines/director/lingo/lingo-gr.y"
+#line 356 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("exit"); }
-#line 3053 "engines/director/lingo/lingo-gr.cpp"
+#line 3059 "engines/director/lingo/lingo-gr.cpp"
break;
case 81: /* ID: tFACTORY */
-#line 351 "engines/director/lingo/lingo-gr.y"
+#line 357 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("factory"); }
-#line 3059 "engines/director/lingo/lingo-gr.cpp"
+#line 3065 "engines/director/lingo/lingo-gr.cpp"
break;
case 82: /* ID: tGLOBAL */
-#line 352 "engines/director/lingo/lingo-gr.y"
+#line 358 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("global"); }
-#line 3065 "engines/director/lingo/lingo-gr.cpp"
+#line 3071 "engines/director/lingo/lingo-gr.cpp"
break;
case 83: /* ID: tGO */
-#line 353 "engines/director/lingo/lingo-gr.y"
+#line 359 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("go"); }
-#line 3071 "engines/director/lingo/lingo-gr.cpp"
+#line 3077 "engines/director/lingo/lingo-gr.cpp"
break;
case 84: /* ID: tIF */
-#line 354 "engines/director/lingo/lingo-gr.y"
+#line 360 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("if"); }
-#line 3077 "engines/director/lingo/lingo-gr.cpp"
+#line 3083 "engines/director/lingo/lingo-gr.cpp"
break;
case 85: /* ID: tINSTANCE */
-#line 355 "engines/director/lingo/lingo-gr.y"
+#line 361 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("instance"); }
-#line 3083 "engines/director/lingo/lingo-gr.cpp"
+#line 3089 "engines/director/lingo/lingo-gr.cpp"
break;
case 86: /* ID: tMACRO */
-#line 356 "engines/director/lingo/lingo-gr.y"
+#line 362 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("macro"); }
-#line 3089 "engines/director/lingo/lingo-gr.cpp"
+#line 3095 "engines/director/lingo/lingo-gr.cpp"
break;
case 87: /* ID: tMETHOD */
-#line 357 "engines/director/lingo/lingo-gr.y"
+#line 363 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("method"); }
-#line 3095 "engines/director/lingo/lingo-gr.cpp"
+#line 3101 "engines/director/lingo/lingo-gr.cpp"
break;
case 88: /* ID: tON */
-#line 358 "engines/director/lingo/lingo-gr.y"
+#line 364 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("on"); }
-#line 3101 "engines/director/lingo/lingo-gr.cpp"
+#line 3107 "engines/director/lingo/lingo-gr.cpp"
break;
case 89: /* ID: tOPEN */
-#line 359 "engines/director/lingo/lingo-gr.y"
+#line 365 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("open"); }
-#line 3107 "engines/director/lingo/lingo-gr.cpp"
+#line 3113 "engines/director/lingo/lingo-gr.cpp"
break;
case 90: /* ID: tPLAY */
-#line 360 "engines/director/lingo/lingo-gr.y"
+#line 366 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("play"); }
-#line 3113 "engines/director/lingo/lingo-gr.cpp"
+#line 3119 "engines/director/lingo/lingo-gr.cpp"
break;
case 91: /* ID: tPROPERTY */
-#line 361 "engines/director/lingo/lingo-gr.y"
+#line 367 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("property"); }
-#line 3119 "engines/director/lingo/lingo-gr.cpp"
+#line 3125 "engines/director/lingo/lingo-gr.cpp"
break;
case 92: /* ID: tPUT */
-#line 362 "engines/director/lingo/lingo-gr.y"
+#line 368 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("put"); }
-#line 3125 "engines/director/lingo/lingo-gr.cpp"
+#line 3131 "engines/director/lingo/lingo-gr.cpp"
break;
case 93: /* ID: tSET */
-#line 363 "engines/director/lingo/lingo-gr.y"
+#line 369 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("set"); }
-#line 3131 "engines/director/lingo/lingo-gr.cpp"
+#line 3137 "engines/director/lingo/lingo-gr.cpp"
break;
case 94: /* ID: tTELL */
-#line 364 "engines/director/lingo/lingo-gr.y"
+#line 370 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("tell"); }
-#line 3137 "engines/director/lingo/lingo-gr.cpp"
+#line 3143 "engines/director/lingo/lingo-gr.cpp"
break;
case 95: /* ID: tTHEN */
-#line 365 "engines/director/lingo/lingo-gr.y"
+#line 371 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = new Common::String("then"); }
-#line 3143 "engines/director/lingo/lingo-gr.cpp"
- break;
-
- case 96: /* ID: tWHEN */
-#line 366 "engines/director/lingo/lingo-gr.y"
- { (yyval.s) = new Common::String("when"); }
#line 3149 "engines/director/lingo/lingo-gr.cpp"
break;
- case 97: /* idlist: %empty */
-#line 369 "engines/director/lingo/lingo-gr.y"
+ case 96: /* idlist: %empty */
+#line 374 "engines/director/lingo/lingo-gr.y"
{ (yyval.idlist) = new IDList; }
#line 3155 "engines/director/lingo/lingo-gr.cpp"
break;
- case 100: /* nonemptyidlist: ID */
-#line 374 "engines/director/lingo/lingo-gr.y"
+ case 99: /* nonemptyidlist: ID */
+#line 379 "engines/director/lingo/lingo-gr.y"
{
Common::Array<Common::String *> *list = new IDList;
list->push_back((yyvsp[0].s));
@@ -3163,64 +3163,64 @@ yyreduce:
#line 3164 "engines/director/lingo/lingo-gr.cpp"
break;
- case 101: /* nonemptyidlist: nonemptyidlist ',' ID */
-#line 378 "engines/director/lingo/lingo-gr.y"
+ case 100: /* nonemptyidlist: nonemptyidlist ',' ID */
+#line 383 "engines/director/lingo/lingo-gr.y"
{
(yyvsp[-2].idlist)->push_back((yyvsp[0].s));
(yyval.idlist) = (yyvsp[-2].idlist); }
#line 3172 "engines/director/lingo/lingo-gr.cpp"
break;
- case 103: /* stmt: tENDIF '\n' */
-#line 389 "engines/director/lingo/lingo-gr.y"
+ case 102: /* stmt: tENDIF '\n' */
+#line 394 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = nullptr; }
#line 3178 "engines/director/lingo/lingo-gr.cpp"
break;
- case 113: /* proc: CMDID cmdargs '\n' */
-#line 405 "engines/director/lingo/lingo-gr.y"
+ case 112: /* proc: CMDID cmdargs '\n' */
+#line 410 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new CmdNode((yyvsp[-2].s), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
#line 3184 "engines/director/lingo/lingo-gr.cpp"
break;
- case 114: /* proc: tPUT cmdargs '\n' */
-#line 406 "engines/director/lingo/lingo-gr.y"
+ case 113: /* proc: tPUT cmdargs '\n' */
+#line 411 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new CmdNode(new Common::String("put"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
#line 3190 "engines/director/lingo/lingo-gr.cpp"
break;
- case 115: /* proc: tGO cmdargs '\n' */
-#line 407 "engines/director/lingo/lingo-gr.y"
+ case 114: /* proc: tGO cmdargs '\n' */
+#line 412 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new CmdNode(new Common::String("go"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
#line 3196 "engines/director/lingo/lingo-gr.cpp"
break;
- case 116: /* proc: tGO frameargs '\n' */
-#line 408 "engines/director/lingo/lingo-gr.y"
+ case 115: /* proc: tGO frameargs '\n' */
+#line 413 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new CmdNode(new Common::String("go"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
#line 3202 "engines/director/lingo/lingo-gr.cpp"
break;
- case 117: /* proc: tPLAY cmdargs '\n' */
-#line 409 "engines/director/lingo/lingo-gr.y"
+ case 116: /* proc: tPLAY cmdargs '\n' */
+#line 414 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new CmdNode(new Common::String("play"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
#line 3208 "engines/director/lingo/lingo-gr.cpp"
break;
- case 118: /* proc: tPLAY frameargs '\n' */
-#line 410 "engines/director/lingo/lingo-gr.y"
+ case 117: /* proc: tPLAY frameargs '\n' */
+#line 415 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new CmdNode(new Common::String("play"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
#line 3214 "engines/director/lingo/lingo-gr.cpp"
break;
- case 119: /* proc: tOPEN cmdargs '\n' */
-#line 411 "engines/director/lingo/lingo-gr.y"
+ case 118: /* proc: tOPEN cmdargs '\n' */
+#line 416 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new CmdNode(new Common::String("open"), (yyvsp[-1].nodelist), g_lingo->_compiler->_linenumber - 1); }
#line 3220 "engines/director/lingo/lingo-gr.cpp"
break;
- case 120: /* proc: tOPEN expr tWITH expr '\n' */
-#line 412 "engines/director/lingo/lingo-gr.y"
+ case 119: /* proc: tOPEN expr tWITH expr '\n' */
+#line 417 "engines/director/lingo/lingo-gr.y"
{
NodeList *args = new NodeList;
args->push_back((yyvsp[-3].node));
@@ -3229,52 +3229,52 @@ yyreduce:
#line 3230 "engines/director/lingo/lingo-gr.cpp"
break;
- case 121: /* proc: tNEXT tREPEAT '\n' */
-#line 417 "engines/director/lingo/lingo-gr.y"
+ case 120: /* proc: tNEXT tREPEAT '\n' */
+#line 422 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new NextRepeatNode(); }
#line 3236 "engines/director/lingo/lingo-gr.cpp"
break;
- case 122: /* proc: tEXIT tREPEAT '\n' */
-#line 418 "engines/director/lingo/lingo-gr.y"
+ case 121: /* proc: tEXIT tREPEAT '\n' */
+#line 423 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new ExitRepeatNode(); }
#line 3242 "engines/director/lingo/lingo-gr.cpp"
break;
- case 123: /* proc: tEXIT '\n' */
-#line 419 "engines/director/lingo/lingo-gr.y"
+ case 122: /* proc: tEXIT '\n' */
+#line 424 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new ExitNode(); }
#line 3248 "engines/director/lingo/lingo-gr.cpp"
break;
- case 124: /* proc: tDELETE chunk '\n' */
-#line 420 "engines/director/lingo/lingo-gr.y"
+ case 123: /* proc: tDELETE chunk '\n' */
+#line 425 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new DeleteNode((yyvsp[-1].node)); }
#line 3254 "engines/director/lingo/lingo-gr.cpp"
break;
- case 125: /* proc: tHILITE chunk '\n' */
-#line 421 "engines/director/lingo/lingo-gr.y"
+ case 124: /* proc: tHILITE chunk '\n' */
+#line 426 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new HiliteNode((yyvsp[-1].node)); }
#line 3260 "engines/director/lingo/lingo-gr.cpp"
break;
- case 126: /* proc: tASSERTERROR stmtoneliner */
-#line 422 "engines/director/lingo/lingo-gr.y"
+ case 125: /* proc: tASSERTERROR stmtoneliner */
+#line 427 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new AssertErrorNode((yyvsp[0].node)); }
#line 3266 "engines/director/lingo/lingo-gr.cpp"
break;
- case 127: /* cmdargs: %empty */
-#line 425 "engines/director/lingo/lingo-gr.y"
+ case 126: /* cmdargs: %empty */
+#line 430 "engines/director/lingo/lingo-gr.y"
{
// This matches `cmd`
(yyval.nodelist) = new NodeList; }
#line 3274 "engines/director/lingo/lingo-gr.cpp"
break;
- case 128: /* cmdargs: expr trailingcomma */
-#line 428 "engines/director/lingo/lingo-gr.y"
+ case 127: /* cmdargs: expr trailingcomma */
+#line 433 "engines/director/lingo/lingo-gr.y"
{
// This matches `cmd arg` and `cmd(arg)`
NodeList *args = new NodeList;
@@ -3283,8 +3283,8 @@ yyreduce:
#line 3284 "engines/director/lingo/lingo-gr.cpp"
break;
- case 129: /* cmdargs: expr ',' nonemptyexprlist trailingcomma */
-#line 433 "engines/director/lingo/lingo-gr.y"
+ case 128: /* cmdargs: expr ',' nonemptyexprlist trailingcomma */
+#line 438 "engines/director/lingo/lingo-gr.y"
{
// This matches `cmd args, ...)
(yyvsp[-1].nodelist)->insert_at(0, (yyvsp[-3].node));
@@ -3292,8 +3292,8 @@ yyreduce:
#line 3293 "engines/director/lingo/lingo-gr.cpp"
break;
- case 130: /* cmdargs: expr expr_nounarymath trailingcomma */
-#line 437 "engines/director/lingo/lingo-gr.y"
+ case 129: /* cmdargs: expr expr_nounarymath trailingcomma */
+#line 442 "engines/director/lingo/lingo-gr.y"
{
// This matches `cmd arg arg`
NodeList *args = new NodeList;
@@ -3303,8 +3303,8 @@ yyreduce:
#line 3304 "engines/director/lingo/lingo-gr.cpp"
break;
- case 131: /* cmdargs: expr expr_nounarymath ',' nonemptyexprlist trailingcomma */
-#line 443 "engines/director/lingo/lingo-gr.y"
+ case 130: /* cmdargs: expr expr_nounarymath ',' nonemptyexprlist trailingcomma */
+#line 448 "engines/director/lingo/lingo-gr.y"
{
// This matches `cmd arg arg, ...`
(yyvsp[-1].nodelist)->insert_at(0, (yyvsp[-3].node));
@@ -3313,16 +3313,16 @@ yyreduce:
#line 3314 "engines/director/lingo/lingo-gr.cpp"
break;
- case 132: /* cmdargs: '(' ')' */
-#line 448 "engines/director/lingo/lingo-gr.y"
+ case 131: /* cmdargs: '(' ')' */
+#line 453 "engines/director/lingo/lingo-gr.y"
{
// This matches `cmd()`
(yyval.nodelist) = new NodeList; }
#line 3322 "engines/director/lingo/lingo-gr.cpp"
break;
- case 133: /* cmdargs: '(' expr ',' ')' */
-#line 451 "engines/director/lingo/lingo-gr.y"
+ case 132: /* cmdargs: '(' expr ',' ')' */
+#line 456 "engines/director/lingo/lingo-gr.y"
{
// This matches `cmd(args,)`
NodeList *args = new NodeList;
@@ -3331,8 +3331,8 @@ yyreduce:
#line 3332 "engines/director/lingo/lingo-gr.cpp"
break;
- case 134: /* cmdargs: '(' expr ',' nonemptyexprlist trailingcomma ')' */
-#line 456 "engines/director/lingo/lingo-gr.y"
+ case 133: /* cmdargs: '(' expr ',' nonemptyexprlist trailingcomma ')' */
+#line 461 "engines/director/lingo/lingo-gr.y"
{
// This matches `cmd(args, ...)`
(yyvsp[-2].nodelist)->insert_at(0, (yyvsp[-4].node));
@@ -3340,8 +3340,8 @@ yyreduce:
#line 3341 "engines/director/lingo/lingo-gr.cpp"
break;
- case 137: /* frameargs: tFRAME expr */
-#line 468 "engines/director/lingo/lingo-gr.y"
+ case 136: /* frameargs: tFRAME expr */
+#line 473 "engines/director/lingo/lingo-gr.y"
{
// This matches `play frame arg`
NodeList *args = new NodeList;
@@ -3350,8 +3350,8 @@ yyreduce:
#line 3351 "engines/director/lingo/lingo-gr.cpp"
break;
- case 138: /* frameargs: tMOVIE expr */
-#line 473 "engines/director/lingo/lingo-gr.y"
+ case 137: /* frameargs: tMOVIE expr */
+#line 478 "engines/director/lingo/lingo-gr.y"
{
// This matches `play movie arg`
NodeList *args = new NodeList;
@@ -3361,8 +3361,8 @@ yyreduce:
#line 3362 "engines/director/lingo/lingo-gr.cpp"
break;
- case 139: /* frameargs: tFRAME expr tOF tMOVIE expr */
-#line 479 "engines/director/lingo/lingo-gr.y"
+ case 138: /* frameargs: tFRAME expr tOF tMOVIE expr */
+#line 484 "engines/director/lingo/lingo-gr.y"
{
// This matches `play frame arg of movie arg`
NodeList *args = new NodeList;
@@ -3372,8 +3372,8 @@ yyreduce:
#line 3373 "engines/director/lingo/lingo-gr.cpp"
break;
- case 140: /* frameargs: expr tOF tMOVIE expr */
-#line 485 "engines/director/lingo/lingo-gr.y"
+ case 139: /* frameargs: expr tOF tMOVIE expr */
+#line 490 "engines/director/lingo/lingo-gr.y"
{
// This matches `play arg of movie arg` (weird but valid)
NodeList *args = new NodeList;
@@ -3383,8 +3383,8 @@ yyreduce:
#line 3384 "engines/director/lingo/lingo-gr.cpp"
break;
- case 141: /* frameargs: tFRAME expr expr_nounarymath */
-#line 491 "engines/director/lingo/lingo-gr.y"
+ case 140: /* frameargs: tFRAME expr expr_nounarymath */
+#line 496 "engines/director/lingo/lingo-gr.y"
{
// This matches `play frame arg arg` (also weird but valid)
NodeList *args = new NodeList;
@@ -3394,50 +3394,50 @@ yyreduce:
#line 3395 "engines/director/lingo/lingo-gr.cpp"
break;
- case 142: /* asgn: tPUT expr tINTO varorchunk '\n' */
-#line 499 "engines/director/lingo/lingo-gr.y"
+ case 141: /* asgn: tPUT expr tINTO varorchunk '\n' */
+#line 504 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new PutIntoNode((yyvsp[-3].node), (yyvsp[-1].node)); }
#line 3401 "engines/director/lingo/lingo-gr.cpp"
break;
- case 143: /* asgn: tPUT expr tAFTER varorchunk '\n' */
-#line 500 "engines/director/lingo/lingo-gr.y"
+ case 142: /* asgn: tPUT expr tAFTER varorchunk '\n' */
+#line 505 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new PutAfterNode((yyvsp[-3].node), (yyvsp[-1].node)); }
#line 3407 "engines/director/lingo/lingo-gr.cpp"
break;
- case 144: /* asgn: tPUT expr tBEFORE varorchunk '\n' */
-#line 501 "engines/director/lingo/lingo-gr.y"
+ case 143: /* asgn: tPUT expr tBEFORE varorchunk '\n' */
+#line 506 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new PutBeforeNode((yyvsp[-3].node), (yyvsp[-1].node)); }
#line 3413 "engines/director/lingo/lingo-gr.cpp"
break;
- case 145: /* asgn: tSET varorthe to expr '\n' */
-#line 502 "engines/director/lingo/lingo-gr.y"
+ case 144: /* asgn: tSET varorthe to expr '\n' */
+#line 507 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new SetNode((yyvsp[-3].node), (yyvsp[-1].node)); }
#line 3419 "engines/director/lingo/lingo-gr.cpp"
break;
- case 148: /* definevars: tGLOBAL idlist '\n' */
-#line 507 "engines/director/lingo/lingo-gr.y"
+ case 147: /* definevars: tGLOBAL idlist '\n' */
+#line 512 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new GlobalNode((yyvsp[-1].idlist)); }
#line 3425 "engines/director/lingo/lingo-gr.cpp"
break;
- case 149: /* definevars: tPROPERTY idlist '\n' */
-#line 508 "engines/director/lingo/lingo-gr.y"
+ case 148: /* definevars: tPROPERTY idlist '\n' */
+#line 513 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new PropertyNode((yyvsp[-1].idlist)); }
#line 3431 "engines/director/lingo/lingo-gr.cpp"
break;
- case 150: /* definevars: tINSTANCE idlist '\n' */
-#line 509 "engines/director/lingo/lingo-gr.y"
+ case 149: /* definevars: tINSTANCE idlist '\n' */
+#line 514 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new InstanceNode((yyvsp[-1].idlist)); }
#line 3437 "engines/director/lingo/lingo-gr.cpp"
break;
- case 151: /* ifstmt: tIF expr tTHEN stmt */
-#line 512 "engines/director/lingo/lingo-gr.y"
+ case 150: /* ifstmt: tIF expr tTHEN stmt */
+#line 517 "engines/director/lingo/lingo-gr.y"
{
NodeList *stmtlist = new NodeList;
stmtlist->push_back((yyvsp[0].node));
@@ -3445,15 +3445,15 @@ yyreduce:
#line 3446 "engines/director/lingo/lingo-gr.cpp"
break;
- case 152: /* ifstmt: tIF expr tTHEN '\n' stmtlist_insideif endif */
-#line 516 "engines/director/lingo/lingo-gr.y"
+ case 151: /* ifstmt: tIF expr tTHEN '\n' stmtlist_insideif endif */
+#line 521 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new IfStmtNode((yyvsp[-4].node), (yyvsp[-1].nodelist)); }
#line 3453 "engines/director/lingo/lingo-gr.cpp"
break;
- case 153: /* ifelsestmt: tIF expr tTHEN stmt tELSE stmt */
-#line 520 "engines/director/lingo/lingo-gr.y"
+ case 152: /* ifelsestmt: tIF expr tTHEN stmt tELSE stmt */
+#line 525 "engines/director/lingo/lingo-gr.y"
{
NodeList *stmtlist1 = new NodeList;
stmtlist1->push_back((yyvsp[-2].node));
@@ -3463,8 +3463,8 @@ yyreduce:
#line 3464 "engines/director/lingo/lingo-gr.cpp"
break;
- case 154: /* ifelsestmt: tIF expr tTHEN stmt tELSE '\n' stmtlist_insideif endif */
-#line 526 "engines/director/lingo/lingo-gr.y"
+ case 153: /* ifelsestmt: tIF expr tTHEN stmt tELSE '\n' stmtlist_insideif endif */
+#line 531 "engines/director/lingo/lingo-gr.y"
{
NodeList *stmtlist1 = new NodeList;
stmtlist1->push_back((yyvsp[-4].node));
@@ -3472,8 +3472,8 @@ yyreduce:
#line 3473 "engines/director/lingo/lingo-gr.cpp"
break;
- case 155: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist_insideif tELSE stmt */
-#line 530 "engines/director/lingo/lingo-gr.y"
+ case 154: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist_insideif tELSE stmt */
+#line 535 "engines/director/lingo/lingo-gr.y"
{
NodeList *stmtlist2 = new NodeList;
stmtlist2->push_back((yyvsp[0].node));
@@ -3481,49 +3481,49 @@ yyreduce:
#line 3482 "engines/director/lingo/lingo-gr.cpp"
break;
- case 156: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist_insideif tELSE '\n' stmtlist_insideif endif */
-#line 534 "engines/director/lingo/lingo-gr.y"
+ case 155: /* ifelsestmt: tIF expr tTHEN '\n' stmtlist_insideif tELSE '\n' stmtlist_insideif endif */
+#line 539 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new IfElseStmtNode((yyvsp[-7].node), (yyvsp[-4].nodelist), (yyvsp[-1].nodelist)); }
#line 3489 "engines/director/lingo/lingo-gr.cpp"
break;
- case 157: /* endif: %empty */
-#line 538 "engines/director/lingo/lingo-gr.y"
+ case 156: /* endif: %empty */
+#line 543 "engines/director/lingo/lingo-gr.y"
{ warning("LingoCompiler::parse: no end if"); }
#line 3495 "engines/director/lingo/lingo-gr.cpp"
break;
- case 159: /* loop: tREPEAT tWHILE expr '\n' stmtlist tENDREPEAT '\n' */
-#line 541 "engines/director/lingo/lingo-gr.y"
+ case 158: /* loop: tREPEAT tWHILE expr '\n' stmtlist tENDREPEAT '\n' */
+#line 546 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new RepeatWhileNode((yyvsp[-4].node), (yyvsp[-2].nodelist)); }
#line 3502 "engines/director/lingo/lingo-gr.cpp"
break;
- case 160: /* loop: tREPEAT tWITH ID tEQ expr tTO expr '\n' stmtlist tENDREPEAT '\n' */
-#line 543 "engines/director/lingo/lingo-gr.y"
+ case 159: /* loop: tREPEAT tWITH ID tEQ expr tTO expr '\n' stmtlist tENDREPEAT '\n' */
+#line 548 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new RepeatWithToNode((yyvsp[-8].s), (yyvsp[-6].node), false, (yyvsp[-4].node), (yyvsp[-2].nodelist)); }
#line 3509 "engines/director/lingo/lingo-gr.cpp"
break;
- case 161: /* loop: tREPEAT tWITH ID tEQ expr tDOWN tTO expr '\n' stmtlist tENDREPEAT '\n' */
-#line 545 "engines/director/lingo/lingo-gr.y"
+ case 160: /* loop: tREPEAT tWITH ID tEQ expr tDOWN tTO expr '\n' stmtlist tENDREPEAT '\n' */
+#line 550 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new RepeatWithToNode((yyvsp[-9].s), (yyvsp[-7].node), true, (yyvsp[-4].node), (yyvsp[-2].nodelist)); }
#line 3516 "engines/director/lingo/lingo-gr.cpp"
break;
- case 162: /* loop: tREPEAT tWITH ID tIN expr '\n' stmtlist tENDREPEAT '\n' */
-#line 547 "engines/director/lingo/lingo-gr.y"
+ case 161: /* loop: tREPEAT tWITH ID tIN expr '\n' stmtlist tENDREPEAT '\n' */
+#line 552 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new RepeatWithInNode((yyvsp[-6].s), (yyvsp[-4].node), (yyvsp[-2].nodelist)); }
#line 3523 "engines/director/lingo/lingo-gr.cpp"
break;
- case 163: /* tell: tTELL expr tTO stmtoneliner */
-#line 551 "engines/director/lingo/lingo-gr.y"
+ case 162: /* tell: tTELL expr tTO stmtoneliner */
+#line 556 "engines/director/lingo/lingo-gr.y"
{
NodeList *stmtlist = new NodeList;
stmtlist->push_back((yyvsp[0].node));
@@ -3531,27 +3531,27 @@ yyreduce:
#line 3532 "engines/director/lingo/lingo-gr.cpp"
break;
- case 164: /* tell: tTELL expr '\n' stmtlist tENDTELL '\n' */
-#line 555 "engines/director/lingo/lingo-gr.y"
+ case 163: /* tell: tTELL expr '\n' stmtlist tENDTELL '\n' */
+#line 560 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new TellNode((yyvsp[-4].node), (yyvsp[-2].nodelist)); }
#line 3539 "engines/director/lingo/lingo-gr.cpp"
break;
- case 165: /* when: tWHEN ID tTHEN expr */
-#line 559 "engines/director/lingo/lingo-gr.y"
- { (yyval.node) = new WhenNode((yyvsp[-2].s), (yyvsp[0].node)); }
+ case 164: /* when: tWHEN */
+#line 564 "engines/director/lingo/lingo-gr.y"
+ { (yyval.node) = new WhenNode((yyvsp[0].w).eventName, (yyvsp[0].w).stmt); }
#line 3545 "engines/director/lingo/lingo-gr.cpp"
break;
- case 166: /* stmtlist: %empty */
-#line 561 "engines/director/lingo/lingo-gr.y"
+ case 165: /* stmtlist: %empty */
+#line 566 "engines/director/lingo/lingo-gr.y"
{ (yyval.nodelist) = new NodeList; }
#line 3551 "engines/director/lingo/lingo-gr.cpp"
break;
- case 168: /* nonemptystmtlist: stmtlistline */
-#line 566 "engines/director/lingo/lingo-gr.y"
+ case 167: /* nonemptystmtlist: stmtlistline */
+#line 571 "engines/director/lingo/lingo-gr.y"
{
NodeList *list = new NodeList;
if ((yyvsp[0].node)) {
@@ -3561,8 +3561,8 @@ yyreduce:
#line 3562 "engines/director/lingo/lingo-gr.cpp"
break;
- case 169: /* nonemptystmtlist: nonemptystmtlist stmtlistline */
-#line 572 "engines/director/lingo/lingo-gr.y"
+ case 168: /* nonemptystmtlist: nonemptystmtlist stmtlistline */
+#line 577 "engines/director/lingo/lingo-gr.y"
{
if ((yyvsp[0].node)) {
(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
@@ -3571,20 +3571,20 @@ yyreduce:
#line 3572 "engines/director/lingo/lingo-gr.cpp"
break;
- case 170: /* stmtlistline: '\n' */
-#line 579 "engines/director/lingo/lingo-gr.y"
+ case 169: /* stmtlistline: '\n' */
+#line 584 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = nullptr; }
#line 3578 "engines/director/lingo/lingo-gr.cpp"
break;
- case 172: /* stmtlist_insideif: %empty */
-#line 583 "engines/director/lingo/lingo-gr.y"
+ case 171: /* stmtlist_insideif: %empty */
+#line 588 "engines/director/lingo/lingo-gr.y"
{ (yyval.nodelist) = new NodeList; }
#line 3584 "engines/director/lingo/lingo-gr.cpp"
break;
- case 174: /* nonemptystmtlist_insideif: stmtlistline_insideif */
-#line 588 "engines/director/lingo/lingo-gr.y"
+ case 173: /* nonemptystmtlist_insideif: stmtlistline_insideif */
+#line 593 "engines/director/lingo/lingo-gr.y"
{
NodeList *list = new NodeList;
if ((yyvsp[0].node)) {
@@ -3594,8 +3594,8 @@ yyreduce:
#line 3595 "engines/director/lingo/lingo-gr.cpp"
break;
- case 175: /* nonemptystmtlist_insideif: nonemptystmtlist_insideif stmtlistline_insideif */
-#line 594 "engines/director/lingo/lingo-gr.y"
+ case 174: /* nonemptystmtlist_insideif: nonemptystmtlist_insideif stmtlistline_insideif */
+#line 599 "engines/director/lingo/lingo-gr.y"
{
if ((yyvsp[0].node)) {
(yyvsp[-1].nodelist)->push_back((yyvsp[0].node));
@@ -3604,178 +3604,178 @@ yyreduce:
#line 3605 "engines/director/lingo/lingo-gr.cpp"
break;
- case 176: /* stmtlistline_insideif: '\n' */
-#line 601 "engines/director/lingo/lingo-gr.y"
+ case 175: /* stmtlistline_insideif: '\n' */
+#line 606 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = nullptr; }
#line 3611 "engines/director/lingo/lingo-gr.cpp"
break;
- case 178: /* simpleexpr_nounarymath: tINT */
-#line 608 "engines/director/lingo/lingo-gr.y"
+ case 177: /* simpleexpr_nounarymath: tINT */
+#line 613 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new IntNode((yyvsp[0].i)); }
#line 3617 "engines/director/lingo/lingo-gr.cpp"
break;
- case 179: /* simpleexpr_nounarymath: tFLOAT */
-#line 609 "engines/director/lingo/lingo-gr.y"
+ case 178: /* simpleexpr_nounarymath: tFLOAT */
+#line 614 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new FloatNode((yyvsp[0].f)); }
#line 3623 "engines/director/lingo/lingo-gr.cpp"
break;
- case 180: /* simpleexpr_nounarymath: tSYMBOL */
-#line 610 "engines/director/lingo/lingo-gr.y"
+ case 179: /* simpleexpr_nounarymath: tSYMBOL */
+#line 615 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new SymbolNode((yyvsp[0].s)); }
#line 3629 "engines/director/lingo/lingo-gr.cpp"
break;
- case 181: /* simpleexpr_nounarymath: tSTRING */
-#line 611 "engines/director/lingo/lingo-gr.y"
+ case 180: /* simpleexpr_nounarymath: tSTRING */
+#line 616 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new StringNode((yyvsp[0].s)); }
#line 3635 "engines/director/lingo/lingo-gr.cpp"
break;
- case 182: /* simpleexpr_nounarymath: tNOT simpleexpr */
-#line 612 "engines/director/lingo/lingo-gr.y"
+ case 181: /* simpleexpr_nounarymath: tNOT simpleexpr */
+#line 617 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new UnaryOpNode(LC::c_not, (yyvsp[0].node)); }
#line 3641 "engines/director/lingo/lingo-gr.cpp"
break;
- case 183: /* simpleexpr_nounarymath: ID '(' ')' */
-#line 613 "engines/director/lingo/lingo-gr.y"
+ case 182: /* simpleexpr_nounarymath: ID '(' ')' */
+#line 618 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new FuncNode((yyvsp[-2].s), new NodeList); }
#line 3647 "engines/director/lingo/lingo-gr.cpp"
break;
- case 184: /* simpleexpr_nounarymath: ID '(' nonemptyexprlist trailingcomma ')' */
-#line 614 "engines/director/lingo/lingo-gr.y"
+ case 183: /* simpleexpr_nounarymath: ID '(' nonemptyexprlist trailingcomma ')' */
+#line 619 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new FuncNode((yyvsp[-4].s), (yyvsp[-2].nodelist)); }
#line 3653 "engines/director/lingo/lingo-gr.cpp"
break;
- case 185: /* simpleexpr_nounarymath: '(' expr ')' */
-#line 615 "engines/director/lingo/lingo-gr.y"
+ case 184: /* simpleexpr_nounarymath: '(' expr ')' */
+#line 620 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = (yyvsp[-1].node); }
#line 3659 "engines/director/lingo/lingo-gr.cpp"
break;
- case 191: /* var: ID */
-#line 623 "engines/director/lingo/lingo-gr.y"
+ case 190: /* var: ID */
+#line 628 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new VarNode((yyvsp[0].s)); }
#line 3665 "engines/director/lingo/lingo-gr.cpp"
break;
- case 196: /* chunk: tFIELD refargs */
-#line 633 "engines/director/lingo/lingo-gr.y"
+ case 195: /* chunk: tFIELD refargs */
+#line 638 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new FuncNode(new Common::String("field"), (yyvsp[0].nodelist)); }
#line 3671 "engines/director/lingo/lingo-gr.cpp"
break;
- case 197: /* chunk: tCAST refargs */
-#line 634 "engines/director/lingo/lingo-gr.y"
+ case 196: /* chunk: tCAST refargs */
+#line 639 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new FuncNode(new Common::String("cast"), (yyvsp[0].nodelist)); }
#line 3677 "engines/director/lingo/lingo-gr.cpp"
break;
- case 198: /* chunk: tCHAR expr tOF simpleexpr */
-#line 635 "engines/director/lingo/lingo-gr.y"
+ case 197: /* chunk: tCHAR expr tOF simpleexpr */
+#line 640 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new ChunkExprNode(kChunkChar, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
#line 3684 "engines/director/lingo/lingo-gr.cpp"
break;
- case 199: /* chunk: tCHAR expr tTO expr tOF simpleexpr */
-#line 637 "engines/director/lingo/lingo-gr.y"
+ case 198: /* chunk: tCHAR expr tTO expr tOF simpleexpr */
+#line 642 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new ChunkExprNode(kChunkChar, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
#line 3691 "engines/director/lingo/lingo-gr.cpp"
break;
- case 200: /* chunk: tWORD expr tOF simpleexpr */
-#line 639 "engines/director/lingo/lingo-gr.y"
+ case 199: /* chunk: tWORD expr tOF simpleexpr */
+#line 644 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new ChunkExprNode(kChunkWord, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
#line 3698 "engines/director/lingo/lingo-gr.cpp"
break;
- case 201: /* chunk: tWORD expr tTO expr tOF simpleexpr */
-#line 641 "engines/director/lingo/lingo-gr.y"
+ case 200: /* chunk: tWORD expr tTO expr tOF simpleexpr */
+#line 646 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new ChunkExprNode(kChunkWord, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
#line 3705 "engines/director/lingo/lingo-gr.cpp"
break;
- case 202: /* chunk: tITEM expr tOF simpleexpr */
-#line 643 "engines/director/lingo/lingo-gr.y"
+ case 201: /* chunk: tITEM expr tOF simpleexpr */
+#line 648 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new ChunkExprNode(kChunkItem, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
#line 3712 "engines/director/lingo/lingo-gr.cpp"
break;
- case 203: /* chunk: tITEM expr tTO expr tOF simpleexpr */
-#line 645 "engines/director/lingo/lingo-gr.y"
+ case 202: /* chunk: tITEM expr tTO expr tOF simpleexpr */
+#line 650 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new ChunkExprNode(kChunkItem, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
#line 3719 "engines/director/lingo/lingo-gr.cpp"
break;
- case 204: /* chunk: tLINE expr tOF simpleexpr */
-#line 647 "engines/director/lingo/lingo-gr.y"
+ case 203: /* chunk: tLINE expr tOF simpleexpr */
+#line 652 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new ChunkExprNode(kChunkLine, (yyvsp[-2].node), nullptr, (yyvsp[0].node)); }
#line 3726 "engines/director/lingo/lingo-gr.cpp"
break;
- case 205: /* chunk: tLINE expr tTO expr tOF simpleexpr */
-#line 649 "engines/director/lingo/lingo-gr.y"
+ case 204: /* chunk: tLINE expr tTO expr tOF simpleexpr */
+#line 654 "engines/director/lingo/lingo-gr.y"
{
(yyval.node) = new ChunkExprNode(kChunkLine, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); }
#line 3733 "engines/director/lingo/lingo-gr.cpp"
break;
- case 206: /* chunk: tTHE tLAST chunktype inof simpleexpr */
-#line 651 "engines/director/lingo/lingo-gr.y"
+ case 205: /* chunk: tTHE tLAST chunktype inof simpleexpr */
+#line 656 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheLastNode((yyvsp[-2].chunktype), (yyvsp[0].node)); }
#line 3739 "engines/director/lingo/lingo-gr.cpp"
break;
- case 207: /* chunktype: tCHAR */
-#line 654 "engines/director/lingo/lingo-gr.y"
+ case 206: /* chunktype: tCHAR */
+#line 659 "engines/director/lingo/lingo-gr.y"
{ (yyval.chunktype) = kChunkChar; }
#line 3745 "engines/director/lingo/lingo-gr.cpp"
break;
- case 208: /* chunktype: tWORD */
-#line 655 "engines/director/lingo/lingo-gr.y"
+ case 207: /* chunktype: tWORD */
+#line 660 "engines/director/lingo/lingo-gr.y"
{ (yyval.chunktype) = kChunkWord; }
#line 3751 "engines/director/lingo/lingo-gr.cpp"
break;
- case 209: /* chunktype: tITEM */
-#line 656 "engines/director/lingo/lingo-gr.y"
+ case 208: /* chunktype: tITEM */
+#line 661 "engines/director/lingo/lingo-gr.y"
{ (yyval.chunktype) = kChunkItem; }
#line 3757 "engines/director/lingo/lingo-gr.cpp"
break;
- case 210: /* chunktype: tLINE */
-#line 657 "engines/director/lingo/lingo-gr.y"
+ case 209: /* chunktype: tLINE */
+#line 662 "engines/director/lingo/lingo-gr.y"
{ (yyval.chunktype) = kChunkLine; }
#line 3763 "engines/director/lingo/lingo-gr.cpp"
break;
- case 211: /* object: tSCRIPT refargs */
-#line 660 "engines/director/lingo/lingo-gr.y"
+ case 210: /* object: tSCRIPT refargs */
+#line 665 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new FuncNode(new Common::String("script"), (yyvsp[0].nodelist)); }
#line 3769 "engines/director/lingo/lingo-gr.cpp"
break;
- case 212: /* object: tWINDOW refargs */
-#line 661 "engines/director/lingo/lingo-gr.y"
+ case 211: /* object: tWINDOW refargs */
+#line 666 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new FuncNode(new Common::String("window"), (yyvsp[0].nodelist)); }
#line 3775 "engines/director/lingo/lingo-gr.cpp"
break;
- case 213: /* refargs: simpleexpr */
-#line 664 "engines/director/lingo/lingo-gr.y"
+ case 212: /* refargs: simpleexpr */
+#line 669 "engines/director/lingo/lingo-gr.y"
{
// This matches `ref arg` and `ref(arg)`
NodeList *args = new NodeList;
@@ -3784,16 +3784,16 @@ yyreduce:
#line 3785 "engines/director/lingo/lingo-gr.cpp"
break;
- case 214: /* refargs: '(' ')' */
-#line 669 "engines/director/lingo/lingo-gr.y"
+ case 213: /* refargs: '(' ')' */
+#line 674 "engines/director/lingo/lingo-gr.y"
{
// This matches `ref()`
(yyval.nodelist) = new NodeList; }
#line 3793 "engines/director/lingo/lingo-gr.cpp"
break;
- case 215: /* refargs: '(' expr ',' ')' */
-#line 672 "engines/director/lingo/lingo-gr.y"
+ case 214: /* refargs: '(' expr ',' ')' */
+#line 677 "engines/director/lingo/lingo-gr.y"
{
// This matches `ref(args,)`
NodeList *args = new NodeList;
@@ -3802,8 +3802,8 @@ yyreduce:
#line 3803 "engines/director/lingo/lingo-gr.cpp"
break;
- case 216: /* refargs: '(' expr ',' nonemptyexprlist trailingcomma ')' */
-#line 677 "engines/director/lingo/lingo-gr.y"
+ case 215: /* refargs: '(' expr ',' nonemptyexprlist trailingcomma ')' */
+#line 682 "engines/director/lingo/lingo-gr.y"
{
// This matches `ref(args, ...)`
(yyvsp[-2].nodelist)->insert_at(0, (yyvsp[-4].node));
@@ -3811,194 +3811,194 @@ yyreduce:
#line 3812 "engines/director/lingo/lingo-gr.cpp"
break;
- case 217: /* the: tTHE ID */
-#line 683 "engines/director/lingo/lingo-gr.y"
+ case 216: /* the: tTHE ID */
+#line 688 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheNode((yyvsp[0].s)); }
#line 3818 "engines/director/lingo/lingo-gr.cpp"
break;
- case 218: /* the: tTHE ID tOF theobj */
-#line 684 "engines/director/lingo/lingo-gr.y"
+ case 217: /* the: tTHE ID tOF theobj */
+#line 689 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheOfNode((yyvsp[-2].s), (yyvsp[0].node)); }
#line 3824 "engines/director/lingo/lingo-gr.cpp"
break;
- case 219: /* the: tTHE tNUMBER tOF theobj */
-#line 685 "engines/director/lingo/lingo-gr.y"
+ case 218: /* the: tTHE tNUMBER tOF theobj */
+#line 690 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheOfNode(new Common::String("number"), (yyvsp[0].node)); }
#line 3830 "engines/director/lingo/lingo-gr.cpp"
break;
- case 224: /* theobj: tMENUITEM simpleexpr tOF tMENU simpleexpr */
-#line 692 "engines/director/lingo/lingo-gr.y"
+ case 223: /* theobj: tMENUITEM simpleexpr tOF tMENU simpleexpr */
+#line 697 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new MenuItemNode((yyvsp[-3].node), (yyvsp[0].node)); }
#line 3836 "engines/director/lingo/lingo-gr.cpp"
break;
- case 225: /* theobj: tSOUND simpleexpr */
-#line 693 "engines/director/lingo/lingo-gr.y"
+ case 224: /* theobj: tSOUND simpleexpr */
+#line 698 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new SoundNode((yyvsp[0].node)); }
#line 3842 "engines/director/lingo/lingo-gr.cpp"
break;
- case 226: /* theobj: tSPRITE simpleexpr */
-#line 694 "engines/director/lingo/lingo-gr.y"
+ case 225: /* theobj: tSPRITE simpleexpr */
+#line 699 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new SpriteNode((yyvsp[0].node)); }
#line 3848 "engines/director/lingo/lingo-gr.cpp"
break;
- case 227: /* menu: tMENU simpleexpr */
-#line 697 "engines/director/lingo/lingo-gr.y"
+ case 226: /* menu: tMENU simpleexpr */
+#line 702 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new MenuNode((yyvsp[0].node)); }
#line 3854 "engines/director/lingo/lingo-gr.cpp"
break;
- case 228: /* thedatetime: tTHE tABBREVIATED tDATE */
-#line 699 "engines/director/lingo/lingo-gr.y"
+ case 227: /* thedatetime: tTHE tABBREVIATED tDATE */
+#line 704 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheDate); }
#line 3860 "engines/director/lingo/lingo-gr.cpp"
break;
- case 229: /* thedatetime: tTHE tABBREVIATED tTIME */
-#line 700 "engines/director/lingo/lingo-gr.y"
+ case 228: /* thedatetime: tTHE tABBREVIATED tTIME */
+#line 705 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheTime); }
#line 3866 "engines/director/lingo/lingo-gr.cpp"
break;
- case 230: /* thedatetime: tTHE tABBREV tDATE */
-#line 701 "engines/director/lingo/lingo-gr.y"
+ case 229: /* thedatetime: tTHE tABBREV tDATE */
+#line 706 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheDate); }
#line 3872 "engines/director/lingo/lingo-gr.cpp"
break;
- case 231: /* thedatetime: tTHE tABBREV tTIME */
-#line 702 "engines/director/lingo/lingo-gr.y"
+ case 230: /* thedatetime: tTHE tABBREV tTIME */
+#line 707 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheTime); }
#line 3878 "engines/director/lingo/lingo-gr.cpp"
break;
- case 232: /* thedatetime: tTHE tABBR tDATE */
-#line 703 "engines/director/lingo/lingo-gr.y"
+ case 231: /* thedatetime: tTHE tABBR tDATE */
+#line 708 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheDate); }
#line 3884 "engines/director/lingo/lingo-gr.cpp"
break;
- case 233: /* thedatetime: tTHE tABBR tTIME */
-#line 704 "engines/director/lingo/lingo-gr.y"
+ case 232: /* thedatetime: tTHE tABBR tTIME */
+#line 709 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheDateTimeNode(kTheAbbr, kTheTime); }
#line 3890 "engines/director/lingo/lingo-gr.cpp"
break;
- case 234: /* thedatetime: tTHE tLONG tDATE */
-#line 705 "engines/director/lingo/lingo-gr.y"
+ case 233: /* thedatetime: tTHE tLONG tDATE */
+#line 710 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheDateTimeNode(kTheLong, kTheDate); }
#line 3896 "engines/director/lingo/lingo-gr.cpp"
break;
- case 235: /* thedatetime: tTHE tLONG tTIME */
-#line 706 "engines/director/lingo/lingo-gr.y"
+ case 234: /* thedatetime: tTHE tLONG tTIME */
+#line 711 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheDateTimeNode(kTheLong, kTheTime); }
#line 3902 "engines/director/lingo/lingo-gr.cpp"
break;
- case 236: /* thedatetime: tTHE tSHORT tDATE */
-#line 707 "engines/director/lingo/lingo-gr.y"
+ case 235: /* thedatetime: tTHE tSHORT tDATE */
+#line 712 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheDateTimeNode(kTheShort, kTheDate); }
#line 3908 "engines/director/lingo/lingo-gr.cpp"
break;
- case 237: /* thedatetime: tTHE tSHORT tTIME */
-#line 708 "engines/director/lingo/lingo-gr.y"
+ case 236: /* thedatetime: tTHE tSHORT tTIME */
+#line 713 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheDateTimeNode(kTheShort, kTheTime); }
#line 3914 "engines/director/lingo/lingo-gr.cpp"
break;
- case 238: /* thenumberof: tTHE tNUMBER tOF tCHARS inof simpleexpr */
-#line 712 "engines/director/lingo/lingo-gr.y"
+ case 237: /* thenumberof: tTHE tNUMBER tOF tCHARS inof simpleexpr */
+#line 717 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheNumberOfNode(kNumberOfChars, (yyvsp[0].node)); }
#line 3920 "engines/director/lingo/lingo-gr.cpp"
break;
- case 239: /* thenumberof: tTHE tNUMBER tOF tWORDS inof simpleexpr */
-#line 713 "engines/director/lingo/lingo-gr.y"
+ case 238: /* thenumberof: tTHE tNUMBER tOF tWORDS inof simpleexpr */
+#line 718 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheNumberOfNode(kNumberOfWords, (yyvsp[0].node)); }
#line 3926 "engines/director/lingo/lingo-gr.cpp"
break;
- case 240: /* thenumberof: tTHE tNUMBER tOF tITEMS inof simpleexpr */
-#line 714 "engines/director/lingo/lingo-gr.y"
+ case 239: /* thenumberof: tTHE tNUMBER tOF tITEMS inof simpleexpr */
+#line 719 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheNumberOfNode(kNumberOfItems, (yyvsp[0].node)); }
#line 3932 "engines/director/lingo/lingo-gr.cpp"
break;
- case 241: /* thenumberof: tTHE tNUMBER tOF tLINES inof simpleexpr */
-#line 715 "engines/director/lingo/lingo-gr.y"
+ case 240: /* thenumberof: tTHE tNUMBER tOF tLINES inof simpleexpr */
+#line 720 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheNumberOfNode(kNumberOfLines, (yyvsp[0].node)); }
#line 3938 "engines/director/lingo/lingo-gr.cpp"
break;
- case 242: /* thenumberof: tTHE tNUMBER tOF tMENUITEMS inof menu */
-#line 716 "engines/director/lingo/lingo-gr.y"
+ case 241: /* thenumberof: tTHE tNUMBER tOF tMENUITEMS inof menu */
+#line 721 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheNumberOfNode(kNumberOfMenuItems, (yyvsp[0].node)); }
#line 3944 "engines/director/lingo/lingo-gr.cpp"
break;
- case 245: /* writablethe: tTHE ID */
-#line 721 "engines/director/lingo/lingo-gr.y"
+ case 244: /* writablethe: tTHE ID */
+#line 726 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheNode((yyvsp[0].s)); }
#line 3950 "engines/director/lingo/lingo-gr.cpp"
break;
- case 246: /* writablethe: tTHE ID tOF writabletheobj */
-#line 722 "engines/director/lingo/lingo-gr.y"
+ case 245: /* writablethe: tTHE ID tOF writabletheobj */
+#line 727 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new TheOfNode((yyvsp[-2].s), (yyvsp[0].node)); }
#line 3956 "engines/director/lingo/lingo-gr.cpp"
break;
- case 248: /* writabletheobj: tMENU expr_noeq */
-#line 726 "engines/director/lingo/lingo-gr.y"
+ case 247: /* writabletheobj: tMENU expr_noeq */
+#line 731 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new MenuNode((yyvsp[0].node)); }
#line 3962 "engines/director/lingo/lingo-gr.cpp"
break;
- case 249: /* writabletheobj: tMENUITEM expr_noeq tOF tMENU expr_noeq */
-#line 727 "engines/director/lingo/lingo-gr.y"
+ case 248: /* writabletheobj: tMENUITEM expr_noeq tOF tMENU expr_noeq */
+#line 732 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new MenuItemNode((yyvsp[-3].node), (yyvsp[0].node)); }
#line 3968 "engines/director/lingo/lingo-gr.cpp"
break;
- case 250: /* writabletheobj: tSOUND expr_noeq */
-#line 728 "engines/director/lingo/lingo-gr.y"
+ case 249: /* writabletheobj: tSOUND expr_noeq */
+#line 733 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new SoundNode((yyvsp[0].node)); }
#line 3974 "engines/director/lingo/lingo-gr.cpp"
break;
- case 251: /* writabletheobj: tSPRITE expr_noeq */
-#line 729 "engines/director/lingo/lingo-gr.y"
+ case 250: /* writabletheobj: tSPRITE expr_noeq */
+#line 734 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new SpriteNode((yyvsp[0].node)); }
#line 3980 "engines/director/lingo/lingo-gr.cpp"
break;
- case 252: /* list: '[' exprlist ']' */
-#line 732 "engines/director/lingo/lingo-gr.y"
+ case 251: /* list: '[' exprlist ']' */
+#line 737 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new ListNode((yyvsp[-1].nodelist)); }
#line 3986 "engines/director/lingo/lingo-gr.cpp"
break;
- case 253: /* list: '[' ':' ']' */
-#line 733 "engines/director/lingo/lingo-gr.y"
+ case 252: /* list: '[' ':' ']' */
+#line 738 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new PropListNode(new NodeList); }
#line 3992 "engines/director/lingo/lingo-gr.cpp"
break;
- case 254: /* list: '[' proplist ']' */
-#line 734 "engines/director/lingo/lingo-gr.y"
+ case 253: /* list: '[' proplist ']' */
+#line 739 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new PropListNode((yyvsp[-1].nodelist)); }
#line 3998 "engines/director/lingo/lingo-gr.cpp"
break;
- case 255: /* proplist: proppair */
-#line 737 "engines/director/lingo/lingo-gr.y"
+ case 254: /* proplist: proppair */
+#line 742 "engines/director/lingo/lingo-gr.y"
{
NodeList *list = new NodeList;
list->push_back((yyvsp[0].node));
@@ -4006,364 +4006,364 @@ yyreduce:
#line 4007 "engines/director/lingo/lingo-gr.cpp"
break;
- case 256: /* proplist: proplist ',' proppair */
-#line 741 "engines/director/lingo/lingo-gr.y"
+ case 255: /* proplist: proplist ',' proppair */
+#line 746 "engines/director/lingo/lingo-gr.y"
{
(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
(yyval.nodelist) = (yyvsp[-2].nodelist); }
#line 4015 "engines/director/lingo/lingo-gr.cpp"
break;
- case 257: /* proppair: tSYMBOL ':' expr */
-#line 746 "engines/director/lingo/lingo-gr.y"
+ case 256: /* proppair: tSYMBOL ':' expr */
+#line 751 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); }
#line 4021 "engines/director/lingo/lingo-gr.cpp"
break;
- case 258: /* proppair: ID ':' expr */
-#line 747 "engines/director/lingo/lingo-gr.y"
+ case 257: /* proppair: ID ':' expr */
+#line 752 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new PropPairNode(new SymbolNode((yyvsp[-2].s)), (yyvsp[0].node)); }
#line 4027 "engines/director/lingo/lingo-gr.cpp"
break;
- case 259: /* proppair: tSTRING ':' expr */
-#line 748 "engines/director/lingo/lingo-gr.y"
+ case 258: /* proppair: tSTRING ':' expr */
+#line 753 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new PropPairNode(new StringNode((yyvsp[-2].s)), (yyvsp[0].node)); }
#line 4033 "engines/director/lingo/lingo-gr.cpp"
break;
- case 260: /* unarymath: '+' simpleexpr */
-#line 751 "engines/director/lingo/lingo-gr.y"
+ case 259: /* unarymath: '+' simpleexpr */
+#line 756 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = (yyvsp[0].node); }
#line 4039 "engines/director/lingo/lingo-gr.cpp"
break;
- case 261: /* unarymath: '-' simpleexpr */
-#line 752 "engines/director/lingo/lingo-gr.y"
+ case 260: /* unarymath: '-' simpleexpr */
+#line 757 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new UnaryOpNode(LC::c_negate, (yyvsp[0].node)); }
#line 4045 "engines/director/lingo/lingo-gr.cpp"
break;
- case 266: /* expr: expr '+' expr */
-#line 762 "engines/director/lingo/lingo-gr.y"
+ case 265: /* expr: expr '+' expr */
+#line 767 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4051 "engines/director/lingo/lingo-gr.cpp"
break;
- case 267: /* expr: expr '-' expr */
-#line 763 "engines/director/lingo/lingo-gr.y"
+ case 266: /* expr: expr '-' expr */
+#line 768 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4057 "engines/director/lingo/lingo-gr.cpp"
break;
- case 268: /* expr: expr '*' expr */
-#line 764 "engines/director/lingo/lingo-gr.y"
+ case 267: /* expr: expr '*' expr */
+#line 769 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4063 "engines/director/lingo/lingo-gr.cpp"
break;
- case 269: /* expr: expr '/' expr */
-#line 765 "engines/director/lingo/lingo-gr.y"
+ case 268: /* expr: expr '/' expr */
+#line 770 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4069 "engines/director/lingo/lingo-gr.cpp"
break;
- case 270: /* expr: expr tMOD expr */
-#line 766 "engines/director/lingo/lingo-gr.y"
+ case 269: /* expr: expr tMOD expr */
+#line 771 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4075 "engines/director/lingo/lingo-gr.cpp"
break;
- case 271: /* expr: expr '>' expr */
-#line 767 "engines/director/lingo/lingo-gr.y"
+ case 270: /* expr: expr '>' expr */
+#line 772 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4081 "engines/director/lingo/lingo-gr.cpp"
break;
- case 272: /* expr: expr '<' expr */
-#line 768 "engines/director/lingo/lingo-gr.y"
+ case 271: /* expr: expr '<' expr */
+#line 773 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4087 "engines/director/lingo/lingo-gr.cpp"
break;
- case 273: /* expr: expr tEQ expr */
-#line 769 "engines/director/lingo/lingo-gr.y"
+ case 272: /* expr: expr tEQ expr */
+#line 774 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4093 "engines/director/lingo/lingo-gr.cpp"
break;
- case 274: /* expr: expr tNEQ expr */
-#line 770 "engines/director/lingo/lingo-gr.y"
+ case 273: /* expr: expr tNEQ expr */
+#line 775 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4099 "engines/director/lingo/lingo-gr.cpp"
break;
- case 275: /* expr: expr tGE expr */
-#line 771 "engines/director/lingo/lingo-gr.y"
+ case 274: /* expr: expr tGE expr */
+#line 776 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4105 "engines/director/lingo/lingo-gr.cpp"
break;
- case 276: /* expr: expr tLE expr */
-#line 772 "engines/director/lingo/lingo-gr.y"
+ case 275: /* expr: expr tLE expr */
+#line 777 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4111 "engines/director/lingo/lingo-gr.cpp"
break;
- case 277: /* expr: expr tAND expr */
-#line 773 "engines/director/lingo/lingo-gr.y"
+ case 276: /* expr: expr tAND expr */
+#line 778 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4117 "engines/director/lingo/lingo-gr.cpp"
break;
- case 278: /* expr: expr tOR expr */
-#line 774 "engines/director/lingo/lingo-gr.y"
+ case 277: /* expr: expr tOR expr */
+#line 779 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4123 "engines/director/lingo/lingo-gr.cpp"
break;
- case 279: /* expr: expr '&' expr */
-#line 775 "engines/director/lingo/lingo-gr.y"
+ case 278: /* expr: expr '&' expr */
+#line 780 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4129 "engines/director/lingo/lingo-gr.cpp"
break;
- case 280: /* expr: expr tCONCAT expr */
-#line 776 "engines/director/lingo/lingo-gr.y"
+ case 279: /* expr: expr tCONCAT expr */
+#line 781 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4135 "engines/director/lingo/lingo-gr.cpp"
break;
- case 281: /* expr: expr tCONTAINS expr */
-#line 777 "engines/director/lingo/lingo-gr.y"
+ case 280: /* expr: expr tCONTAINS expr */
+#line 782 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4141 "engines/director/lingo/lingo-gr.cpp"
break;
- case 282: /* expr: expr tSTARTS expr */
-#line 778 "engines/director/lingo/lingo-gr.y"
+ case 281: /* expr: expr tSTARTS expr */
+#line 783 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4147 "engines/director/lingo/lingo-gr.cpp"
break;
- case 285: /* expr_nounarymath: expr_nounarymath '+' expr */
-#line 787 "engines/director/lingo/lingo-gr.y"
+ case 284: /* expr_nounarymath: expr_nounarymath '+' expr */
+#line 792 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4153 "engines/director/lingo/lingo-gr.cpp"
break;
- case 286: /* expr_nounarymath: expr_nounarymath '-' expr */
-#line 788 "engines/director/lingo/lingo-gr.y"
+ case 285: /* expr_nounarymath: expr_nounarymath '-' expr */
+#line 793 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4159 "engines/director/lingo/lingo-gr.cpp"
break;
- case 287: /* expr_nounarymath: expr_nounarymath '*' expr */
-#line 789 "engines/director/lingo/lingo-gr.y"
+ case 286: /* expr_nounarymath: expr_nounarymath '*' expr */
+#line 794 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4165 "engines/director/lingo/lingo-gr.cpp"
break;
- case 288: /* expr_nounarymath: expr_nounarymath '/' expr */
-#line 790 "engines/director/lingo/lingo-gr.y"
+ case 287: /* expr_nounarymath: expr_nounarymath '/' expr */
+#line 795 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4171 "engines/director/lingo/lingo-gr.cpp"
break;
- case 289: /* expr_nounarymath: expr_nounarymath tMOD expr */
-#line 791 "engines/director/lingo/lingo-gr.y"
+ case 288: /* expr_nounarymath: expr_nounarymath tMOD expr */
+#line 796 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4177 "engines/director/lingo/lingo-gr.cpp"
break;
- case 290: /* expr_nounarymath: expr_nounarymath '>' expr */
-#line 792 "engines/director/lingo/lingo-gr.y"
+ case 289: /* expr_nounarymath: expr_nounarymath '>' expr */
+#line 797 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4183 "engines/director/lingo/lingo-gr.cpp"
break;
- case 291: /* expr_nounarymath: expr_nounarymath '<' expr */
-#line 793 "engines/director/lingo/lingo-gr.y"
+ case 290: /* expr_nounarymath: expr_nounarymath '<' expr */
+#line 798 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4189 "engines/director/lingo/lingo-gr.cpp"
break;
- case 292: /* expr_nounarymath: expr_nounarymath tEQ expr */
-#line 794 "engines/director/lingo/lingo-gr.y"
+ case 291: /* expr_nounarymath: expr_nounarymath tEQ expr */
+#line 799 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_eq, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4195 "engines/director/lingo/lingo-gr.cpp"
break;
- case 293: /* expr_nounarymath: expr_nounarymath tNEQ expr */
-#line 795 "engines/director/lingo/lingo-gr.y"
+ case 292: /* expr_nounarymath: expr_nounarymath tNEQ expr */
+#line 800 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4201 "engines/director/lingo/lingo-gr.cpp"
break;
- case 294: /* expr_nounarymath: expr_nounarymath tGE expr */
-#line 796 "engines/director/lingo/lingo-gr.y"
+ case 293: /* expr_nounarymath: expr_nounarymath tGE expr */
+#line 801 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4207 "engines/director/lingo/lingo-gr.cpp"
break;
- case 295: /* expr_nounarymath: expr_nounarymath tLE expr */
-#line 797 "engines/director/lingo/lingo-gr.y"
+ case 294: /* expr_nounarymath: expr_nounarymath tLE expr */
+#line 802 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4213 "engines/director/lingo/lingo-gr.cpp"
break;
- case 296: /* expr_nounarymath: expr_nounarymath tAND expr */
-#line 798 "engines/director/lingo/lingo-gr.y"
+ case 295: /* expr_nounarymath: expr_nounarymath tAND expr */
+#line 803 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4219 "engines/director/lingo/lingo-gr.cpp"
break;
- case 297: /* expr_nounarymath: expr_nounarymath tOR expr */
-#line 799 "engines/director/lingo/lingo-gr.y"
+ case 296: /* expr_nounarymath: expr_nounarymath tOR expr */
+#line 804 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4225 "engines/director/lingo/lingo-gr.cpp"
break;
- case 298: /* expr_nounarymath: expr_nounarymath '&' expr */
-#line 800 "engines/director/lingo/lingo-gr.y"
+ case 297: /* expr_nounarymath: expr_nounarymath '&' expr */
+#line 805 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4231 "engines/director/lingo/lingo-gr.cpp"
break;
- case 299: /* expr_nounarymath: expr_nounarymath tCONCAT expr */
-#line 801 "engines/director/lingo/lingo-gr.y"
+ case 298: /* expr_nounarymath: expr_nounarymath tCONCAT expr */
+#line 806 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4237 "engines/director/lingo/lingo-gr.cpp"
break;
- case 300: /* expr_nounarymath: expr_nounarymath tCONTAINS expr */
-#line 802 "engines/director/lingo/lingo-gr.y"
+ case 299: /* expr_nounarymath: expr_nounarymath tCONTAINS expr */
+#line 807 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4243 "engines/director/lingo/lingo-gr.cpp"
break;
- case 301: /* expr_nounarymath: expr_nounarymath tSTARTS expr */
-#line 803 "engines/director/lingo/lingo-gr.y"
+ case 300: /* expr_nounarymath: expr_nounarymath tSTARTS expr */
+#line 808 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4249 "engines/director/lingo/lingo-gr.cpp"
break;
- case 304: /* expr_noeq: expr_noeq '+' expr_noeq */
-#line 808 "engines/director/lingo/lingo-gr.y"
+ case 303: /* expr_noeq: expr_noeq '+' expr_noeq */
+#line 813 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_add, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4255 "engines/director/lingo/lingo-gr.cpp"
break;
- case 305: /* expr_noeq: expr_noeq '-' expr_noeq */
-#line 809 "engines/director/lingo/lingo-gr.y"
+ case 304: /* expr_noeq: expr_noeq '-' expr_noeq */
+#line 814 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_sub, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4261 "engines/director/lingo/lingo-gr.cpp"
break;
- case 306: /* expr_noeq: expr_noeq '*' expr_noeq */
-#line 810 "engines/director/lingo/lingo-gr.y"
+ case 305: /* expr_noeq: expr_noeq '*' expr_noeq */
+#line 815 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_mul, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4267 "engines/director/lingo/lingo-gr.cpp"
break;
- case 307: /* expr_noeq: expr_noeq '/' expr_noeq */
-#line 811 "engines/director/lingo/lingo-gr.y"
+ case 306: /* expr_noeq: expr_noeq '/' expr_noeq */
+#line 816 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_div, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4273 "engines/director/lingo/lingo-gr.cpp"
break;
- case 308: /* expr_noeq: expr_noeq tMOD expr_noeq */
-#line 812 "engines/director/lingo/lingo-gr.y"
+ case 307: /* expr_noeq: expr_noeq tMOD expr_noeq */
+#line 817 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_mod, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4279 "engines/director/lingo/lingo-gr.cpp"
break;
- case 309: /* expr_noeq: expr_noeq '>' expr_noeq */
-#line 813 "engines/director/lingo/lingo-gr.y"
+ case 308: /* expr_noeq: expr_noeq '>' expr_noeq */
+#line 818 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_gt, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4285 "engines/director/lingo/lingo-gr.cpp"
break;
- case 310: /* expr_noeq: expr_noeq '<' expr_noeq */
-#line 814 "engines/director/lingo/lingo-gr.y"
+ case 309: /* expr_noeq: expr_noeq '<' expr_noeq */
+#line 819 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_lt, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4291 "engines/director/lingo/lingo-gr.cpp"
break;
- case 311: /* expr_noeq: expr_noeq tNEQ expr_noeq */
-#line 815 "engines/director/lingo/lingo-gr.y"
+ case 310: /* expr_noeq: expr_noeq tNEQ expr_noeq */
+#line 820 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_neq, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4297 "engines/director/lingo/lingo-gr.cpp"
break;
- case 312: /* expr_noeq: expr_noeq tGE expr_noeq */
-#line 816 "engines/director/lingo/lingo-gr.y"
+ case 311: /* expr_noeq: expr_noeq tGE expr_noeq */
+#line 821 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_ge, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4303 "engines/director/lingo/lingo-gr.cpp"
break;
- case 313: /* expr_noeq: expr_noeq tLE expr_noeq */
-#line 817 "engines/director/lingo/lingo-gr.y"
+ case 312: /* expr_noeq: expr_noeq tLE expr_noeq */
+#line 822 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_le, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4309 "engines/director/lingo/lingo-gr.cpp"
break;
- case 314: /* expr_noeq: expr_noeq tAND expr_noeq */
-#line 818 "engines/director/lingo/lingo-gr.y"
+ case 313: /* expr_noeq: expr_noeq tAND expr_noeq */
+#line 823 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_and, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4315 "engines/director/lingo/lingo-gr.cpp"
break;
- case 315: /* expr_noeq: expr_noeq tOR expr_noeq */
-#line 819 "engines/director/lingo/lingo-gr.y"
+ case 314: /* expr_noeq: expr_noeq tOR expr_noeq */
+#line 824 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_or, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4321 "engines/director/lingo/lingo-gr.cpp"
break;
- case 316: /* expr_noeq: expr_noeq '&' expr_noeq */
-#line 820 "engines/director/lingo/lingo-gr.y"
+ case 315: /* expr_noeq: expr_noeq '&' expr_noeq */
+#line 825 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_ampersand, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4327 "engines/director/lingo/lingo-gr.cpp"
break;
- case 317: /* expr_noeq: expr_noeq tCONCAT expr_noeq */
-#line 821 "engines/director/lingo/lingo-gr.y"
+ case 316: /* expr_noeq: expr_noeq tCONCAT expr_noeq */
+#line 826 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_concat, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4333 "engines/director/lingo/lingo-gr.cpp"
break;
- case 318: /* expr_noeq: expr_noeq tCONTAINS expr_noeq */
-#line 822 "engines/director/lingo/lingo-gr.y"
+ case 317: /* expr_noeq: expr_noeq tCONTAINS expr_noeq */
+#line 827 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_contains, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4339 "engines/director/lingo/lingo-gr.cpp"
break;
- case 319: /* expr_noeq: expr_noeq tSTARTS expr_noeq */
-#line 823 "engines/director/lingo/lingo-gr.y"
+ case 318: /* expr_noeq: expr_noeq tSTARTS expr_noeq */
+#line 828 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new BinaryOpNode(LC::c_starts, (yyvsp[-2].node), (yyvsp[0].node)); }
#line 4345 "engines/director/lingo/lingo-gr.cpp"
break;
- case 320: /* sprite: tSPRITE expr tINTERSECTS simpleexpr */
-#line 826 "engines/director/lingo/lingo-gr.y"
+ case 319: /* sprite: tSPRITE expr tINTERSECTS simpleexpr */
+#line 831 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new IntersectsNode((yyvsp[-2].node), (yyvsp[0].node)); }
#line 4351 "engines/director/lingo/lingo-gr.cpp"
break;
- case 321: /* sprite: tSPRITE expr tWITHIN simpleexpr */
-#line 827 "engines/director/lingo/lingo-gr.y"
+ case 320: /* sprite: tSPRITE expr tWITHIN simpleexpr */
+#line 832 "engines/director/lingo/lingo-gr.y"
{ (yyval.node) = new WithinNode((yyvsp[-2].node), (yyvsp[0].node)); }
#line 4357 "engines/director/lingo/lingo-gr.cpp"
break;
- case 322: /* exprlist: %empty */
-#line 830 "engines/director/lingo/lingo-gr.y"
+ case 321: /* exprlist: %empty */
+#line 835 "engines/director/lingo/lingo-gr.y"
{ (yyval.nodelist) = new NodeList; }
#line 4363 "engines/director/lingo/lingo-gr.cpp"
break;
- case 324: /* nonemptyexprlist: expr */
-#line 834 "engines/director/lingo/lingo-gr.y"
+ case 323: /* nonemptyexprlist: expr */
+#line 839 "engines/director/lingo/lingo-gr.y"
{
NodeList *list = new NodeList;
list->push_back((yyvsp[0].node));
@@ -4371,8 +4371,8 @@ yyreduce:
#line 4372 "engines/director/lingo/lingo-gr.cpp"
break;
- case 325: /* nonemptyexprlist: nonemptyexprlist ',' expr */
-#line 838 "engines/director/lingo/lingo-gr.y"
+ case 324: /* nonemptyexprlist: nonemptyexprlist ',' expr */
+#line 843 "engines/director/lingo/lingo-gr.y"
{
(yyvsp[-2].nodelist)->push_back((yyvsp[0].node));
(yyval.nodelist) = (yyvsp[-2].nodelist); }
@@ -4579,7 +4579,7 @@ yyreturn:
return yyresult;
}
-#line 843 "engines/director/lingo/lingo-gr.y"
+#line 848 "engines/director/lingo/lingo-gr.y"
int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 993220fe4c..d979a04db3 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -156,12 +156,16 @@ union YYSTYPE
int i;
double f;
Director::ChunkType chunktype;
+ struct {
+ Common::String *eventName;
+ Common::String *stmt;
+ } w;
Director::IDList *idlist;
Director::Node *node;
Director::NodeList *nodelist;
-#line 165 "engines/director/lingo/lingo-gr.h"
+#line 169 "engines/director/lingo/lingo-gr.h"
};
typedef union YYSTYPE YYSTYPE;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 0b367ea532..e3e5998f8b 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -114,6 +114,10 @@ static void checkEnd(Common::String *token, Common::String *expect, bool require
int i;
double f;
Director::ChunkType chunktype;
+ struct {
+ Common::String *eventName;
+ Common::String *stmt;
+ } w;
Director::IDList *idlist;
Director::Node *node;
@@ -140,6 +144,8 @@ static void checkEnd(Common::String *token, Common::String *expect, bool require
%token tON tMETHOD tENDIF tENDREPEAT tENDTELL
%token tASSERTERROR
+%type<w> tWHEN
+
// TOP-LEVEL STUFF
%type<node> script scriptpart
%type<nodelist> scriptpartlist
@@ -363,7 +369,6 @@ ID: CMDID
| tSET { $$ = new Common::String("set"); }
| tTELL { $$ = new Common::String("tell"); }
| tTHEN { $$ = new Common::String("then"); }
- | tWHEN { $$ = new Common::String("when"); }
;
idlist: /* empty */ { $$ = new IDList; }
@@ -556,7 +561,7 @@ tell: tTELL expr tTO stmtoneliner {
$$ = new TellNode($expr, $stmtlist); }
;
-when: tWHEN ID tTHEN expr { $$ = new WhenNode($ID, $expr); } ;
+when: tWHEN { $$ = new WhenNode($tWHEN.eventName, $tWHEN.stmt); } ;
stmtlist: /* empty */ { $$ = new NodeList; }
| nonemptystmtlist
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 4124bcd1b2..720ab736bd 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -364,7 +364,7 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[306] =
+static const flex_int16_t yy_accept[342] =
{ 0,
0, 0, 87, 85, 1, 83, 83, 85, 85, 82,
82, 81, 82, 78, 82, 79, 79, 79, 79, 79,
@@ -388,18 +388,22 @@ static const flex_int16_t yy_accept[306] =
32, 33, 35, 79, 37, 79, 79, 43, 79, 48,
50, 79, 79, 79, 79, 79, 79, 79, 79, 79,
- 62, 64, 65, 67, 79, 79, 70, 72, 0, 79,
+ 62, 64, 65, 79, 79, 79, 70, 72, 0, 79,
79, 6, 79, 11, 79, 79, 17, 20, 21, 79,
23, 79, 79, 79, 31, 34, 36, 79, 79, 42,
79, 79, 79, 79, 79, 79, 58, 59, 79, 79,
- 68, 79, 79, 73, 0, 79, 4, 8, 79, 14,
- 17, 22, 24, 79, 79, 79, 40, 45, 79, 79,
- 54, 55, 79, 60, 61, 69, 71, 0, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 0, 19, 79,
- 12, 26, 79, 38, 51, 52, 79, 19, 79, 79,
- 39, 79, 79, 27, 79, 3, 79, 79, 79, 79,
-
- 79, 79, 79, 56, 0
+ 0, 68, 79, 79, 73, 0, 79, 4, 8, 79,
+ 14, 17, 22, 24, 79, 79, 79, 40, 45, 79,
+ 79, 54, 55, 79, 60, 61, 0, 0, 0, 69,
+ 71, 0, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 0, 0, 0, 0, 19, 79, 12, 26, 79,
+ 38, 51, 52, 79, 0, 0, 0, 19, 79, 79,
+
+ 39, 79, 0, 0, 0, 0, 79, 27, 79, 0,
+ 0, 0, 0, 3, 79, 0, 0, 0, 0, 0,
+ 79, 0, 0, 0, 0, 0, 79, 0, 0, 79,
+ 0, 0, 79, 0, 79, 67, 79, 67, 67, 56,
+ 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -411,13 +415,13 @@ static const YY_CHAR yy_ec[256] =
7, 7, 7, 7, 7, 9, 7, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 7, 1, 11,
12, 13, 1, 1, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 23, 24, 25, 26, 27, 28,
- 23, 29, 30, 31, 32, 33, 34, 35, 36, 23,
- 7, 1, 7, 7, 23, 1, 37, 38, 39, 40,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 23, 30, 31, 32, 33, 34, 35, 36, 37, 23,
+ 7, 1, 7, 7, 23, 1, 38, 39, 40, 41,
- 41, 42, 43, 44, 45, 23, 23, 46, 47, 48,
- 49, 50, 23, 51, 52, 53, 54, 55, 56, 57,
- 58, 23, 1, 1, 1, 1, 1, 1, 1, 1,
+ 42, 43, 44, 45, 46, 23, 47, 48, 49, 50,
+ 51, 52, 23, 53, 54, 55, 56, 57, 58, 59,
+ 60, 23, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -434,250 +438,274 @@ static const YY_CHAR yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static const YY_CHAR yy_meta[59] =
+static const YY_CHAR yy_meta[61] =
{ 0,
1, 2, 3, 3, 1, 1, 1, 1, 1, 4,
1, 1, 1, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
} ;
-static const flex_int16_t yy_base[312] =
+static const flex_int16_t yy_base[349] =
{ 0,
- 0, 57, 166, 630, 58, 630, 630, 156, 0, 630,
- 147, 54, 53, 630, 140, 52, 50, 58, 55, 62,
- 58, 74, 48, 86, 0, 99, 100, 97, 114, 121,
- 65, 160, 162, 171, 128, 157, 155, 630, 130, 630,
- 0, 630, 115, 65, 630, 630, 630, 0, 139, 58,
- 156, 155, 130, 181, 137, 137, 176, 171, 182, 197,
- 195, 201, 207, 196, 120, 200, 0, 195, 210, 200,
- 205, 206, 217, 210, 222, 200, 207, 218, 0, 0,
- 231, 0, 236, 241, 230, 236, 237, 236, 243, 239,
- 245, 261, 254, 258, 254, 0, 262, 271, 258, 302,
-
- 271, 278, 0, 106, 281, 277, 0, 284, 281, 284,
- 283, 297, 298, 294, 304, 82, 294, 302, 302, 308,
- 326, 307, 300, 323, 312, 309, 325, 331, 325, 323,
- 337, 0, 338, 325, 0, 346, 337, 329, 334, 340,
- 0, 351, 348, 348, 0, 346, 354, 349, 353, 362,
- 362, 373, 370, 374, 382, 379, 384, 387, 374, 388,
- 380, 382, 0, 382, 393, 0, 382, 0, 0, 79,
- 0, 398, 398, 403, 392, 390, 411, 399, 0, 402,
- 0, 406, 0, 410, 420, 417, 427, 0, 428, 0,
- 0, 425, 431, 437, 425, 430, 425, 440, 429, 430,
-
- 0, 0, 0, 0, 444, 437, 445, 441, 442, 449,
- 446, 0, 463, 0, 462, 469, 0, 0, 0, 465,
- 630, 473, 468, 466, 0, 0, 0, 466, 475, 0,
- 470, 473, 473, 472, 474, 473, 0, 0, 490, 482,
- 0, 479, 491, 0, 493, 494, 487, 0, 500, 0,
- 0, 0, 0, 513, 512, 515, 0, 0, 504, 506,
- 0, 0, 513, 0, 0, 0, 0, 511, 505, 529,
- 516, 526, 531, 524, 520, 515, 540, 521, 0, 530,
- 0, 0, 533, 535, 0, 0, 539, 630, 537, 544,
- 0, 545, 559, 0, 562, 0, 553, 553, 567, 559,
-
- 560, 563, 563, 0, 630, 614, 72, 616, 618, 622,
- 624
+ 0, 59, 388, 707, 60, 707, 707, 335, 0, 707,
+ 316, 56, 55, 707, 280, 54, 52, 58, 57, 62,
+ 54, 63, 55, 86, 0, 102, 105, 104, 115, 124,
+ 64, 165, 157, 167, 219, 197, 123, 707, 280, 707,
+ 0, 707, 242, 129, 707, 707, 707, 0, 113, 60,
+ 118, 131, 130, 149, 142, 141, 166, 166, 175, 149,
+ 154, 186, 195, 197, 196, 201, 0, 199, 197, 201,
+ 207, 209, 221, 213, 224, 208, 214, 221, 0, 0,
+ 224, 0, 237, 246, 224, 231, 243, 239, 244, 244,
+ 248, 266, 257, 266, 260, 0, 269, 266, 259, 315,
+
+ 276, 286, 0, 172, 276, 285, 0, 279, 278, 283,
+ 288, 304, 305, 298, 310, 169, 299, 307, 311, 320,
+ 336, 317, 309, 333, 316, 312, 327, 329, 323, 323,
+ 329, 0, 335, 330, 0, 351, 343, 334, 338, 348,
+ 0, 360, 358, 356, 0, 353, 359, 365, 359, 367,
+ 369, 379, 372, 376, 386, 386, 391, 394, 381, 396,
+ 386, 387, 0, 387, 406, 0, 391, 0, 0, 168,
+ 0, 408, 408, 414, 402, 401, 421, 407, 0, 411,
+ 0, 412, 0, 417, 425, 423, 430, 0, 436, 0,
+ 0, 433, 439, 444, 432, 436, 431, 447, 435, 437,
+
+ 0, 0, 0, 162, 452, 445, 453, 446, 448, 455,
+ 453, 0, 471, 0, 469, 475, 0, 0, 0, 470,
+ 707, 479, 474, 471, 0, 0, 0, 472, 481, 0,
+ 475, 479, 478, 477, 479, 478, 0, 0, 496, 485,
+ 517, 0, 488, 502, 0, 505, 506, 498, 0, 510,
+ 0, 0, 0, 0, 510, 527, 529, 0, 0, 507,
+ 510, 0, 0, 525, 0, 0, 535, 527, 535, 0,
+ 0, 531, 525, 544, 536, 550, 554, 547, 544, 539,
+ 565, 546, 553, 561, 551, 0, 557, 0, 0, 559,
+ 562, 0, 0, 564, 580, 569, 562, 707, 583, 574,
+
+ 0, 576, 580, 586, 584, 589, 602, 0, 602, 587,
+ 160, 615, 591, 0, 597, 602, 631, 606, 606, 605,
+ 607, 149, 620, 611, 129, 118, 624, 631, 624, 623,
+ 627, 115, 625, 88, 631, 81, 631, 0, 78, 0,
+ 707, 686, 69, 688, 690, 694, 696, 701
} ;
-static const flex_int16_t yy_def[312] =
+static const flex_int16_t yy_def[349] =
{ 0,
- 305, 1, 305, 305, 305, 305, 305, 306, 307, 305,
- 305, 305, 305, 305, 305, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 305, 308, 305, 305, 306, 305,
- 309, 305, 305, 305, 305, 305, 305, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 305,
-
- 305, 308, 309, 305, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 305, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 305, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 310,
- 308, 308, 308, 308, 305, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
-
- 308, 308, 308, 308, 308, 308, 308, 308, 305, 308,
- 308, 308, 308, 308, 308, 308, 311, 308, 308, 308,
- 305, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 305, 308, 308, 308, 308, 308,
- 311, 308, 308, 308, 308, 308, 308, 308, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 305, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 305, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 305, 308, 308,
- 308, 308, 308, 308, 308, 308, 308, 308, 308, 308,
-
- 308, 308, 308, 308, 0, 305, 305, 305, 305, 305,
- 305
+ 341, 1, 341, 341, 341, 341, 341, 342, 343, 341,
+ 341, 341, 341, 341, 341, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 341, 344, 341, 341, 342, 341,
+ 345, 341, 341, 341, 341, 341, 341, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 341,
+
+ 341, 344, 345, 341, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 341, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 341, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 346,
+ 344, 344, 344, 344, 341, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+
+ 344, 344, 344, 344, 344, 344, 344, 344, 341, 344,
+ 344, 344, 344, 344, 344, 344, 347, 344, 344, 344,
+ 341, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
+ 341, 344, 344, 344, 344, 341, 344, 344, 344, 344,
+ 344, 347, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 344, 344, 341, 341, 341, 344,
+ 344, 341, 344, 344, 344, 344, 344, 344, 344, 344,
+ 344, 341, 341, 341, 341, 344, 344, 344, 344, 344,
+ 344, 344, 344, 344, 341, 341, 341, 341, 344, 344,
+
+ 344, 344, 341, 341, 341, 341, 344, 344, 344, 341,
+ 341, 341, 341, 344, 344, 341, 341, 341, 341, 341,
+ 344, 341, 341, 341, 341, 341, 344, 341, 341, 344,
+ 341, 341, 344, 341, 344, 348, 344, 348, 348, 344,
+ 0, 341, 341, 341, 341, 341, 341, 341
} ;
-static const flex_int16_t yy_nxt[689] =
+static const flex_int16_t yy_nxt[768] =
{ 0,
4, 5, 6, 7, 8, 9, 10, 11, 4, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 25, 25, 34, 25, 25, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 26, 27, 28, 29, 30,
- 31, 32, 33, 25, 25, 34, 25, 25, 35, 37,
- 38, 38, 43, 44, 45, 46, 49, 52, 56, 66,
- 50, 53, 57, 43, 44, 36, 41, 51, 54, 62,
- 170, 58, 86, 170, 55, 59, 63, 60, 106, 49,
- 52, 56, 66, 50, 53, 57, 61, 64, 36, 51,
-
- 65, 54, 62, 58, 67, 86, 55, 59, 63, 60,
- 106, 68, 70, 73, 76, 104, 69, 74, 61, 64,
- 71, 121, 65, 77, 104, 72, 75, 67, 78, 100,
- 38, 38, 79, 68, 40, 70, 73, 76, 69, 80,
- 74, 81, 82, 71, 83, 77, 101, 72, 75, 84,
- 78, 47, 85, 105, 42, 79, 37, 38, 38, 109,
- 40, 80, 111, 81, 82, 305, 83, 112, 305, 101,
- 102, 84, 107, 108, 85, 87, 105, 88, 62, 93,
- 89, 109, 94, 95, 111, 63, 90, 91, 96, 112,
- 92, 97, 98, 102, 110, 107, 108, 99, 87, 113,
-
- 88, 62, 93, 89, 114, 94, 95, 63, 90, 91,
- 96, 115, 92, 116, 97, 98, 117, 110, 118, 99,
- 119, 113, 120, 122, 123, 124, 114, 125, 305, 126,
- 127, 128, 129, 115, 134, 130, 116, 135, 132, 117,
- 131, 118, 136, 119, 120, 122, 123, 124, 137, 138,
- 125, 126, 127, 128, 133, 129, 134, 130, 139, 135,
- 141, 132, 131, 142, 136, 143, 145, 140, 144, 146,
- 147, 137, 138, 148, 149, 151, 133, 150, 152, 153,
- 305, 139, 141, 154, 158, 142, 157, 143, 145, 140,
- 144, 146, 147, 159, 161, 148, 155, 149, 151, 150,
-
- 152, 156, 153, 100, 38, 38, 154, 158, 157, 160,
- 162, 163, 164, 165, 166, 167, 159, 161, 155, 168,
- 101, 169, 174, 156, 171, 172, 173, 121, 176, 305,
- 177, 160, 162, 163, 164, 165, 180, 166, 167, 181,
- 178, 168, 182, 101, 169, 174, 171, 172, 173, 179,
- 183, 176, 177, 184, 185, 188, 175, 186, 180, 187,
- 189, 181, 190, 178, 191, 182, 192, 193, 194, 195,
- 199, 179, 196, 183, 197, 184, 185, 188, 175, 198,
- 186, 200, 187, 189, 190, 201, 191, 202, 192, 193,
- 203, 194, 195, 199, 196, 204, 197, 205, 206, 207,
-
- 208, 198, 209, 200, 210, 211, 215, 201, 212, 202,
- 213, 214, 216, 203, 218, 219, 220, 204, 221, 205,
- 222, 206, 207, 208, 223, 209, 210, 224, 211, 215,
- 212, 225, 213, 214, 216, 226, 227, 218, 219, 220,
- 221, 228, 222, 229, 230, 231, 232, 223, 233, 224,
- 234, 305, 235, 225, 236, 237, 238, 226, 227, 239,
- 240, 241, 305, 242, 228, 229, 243, 230, 231, 232,
- 244, 233, 245, 234, 235, 246, 236, 237, 247, 238,
- 248, 239, 240, 249, 241, 242, 250, 305, 252, 243,
- 253, 257, 244, 254, 245, 255, 256, 246, 258, 259,
-
- 247, 260, 261, 248, 262, 263, 249, 264, 270, 250,
- 252, 265, 266, 253, 257, 254, 267, 255, 256, 268,
- 258, 259, 269, 260, 261, 271, 262, 263, 272, 273,
- 264, 270, 274, 265, 266, 275, 276, 277, 267, 278,
- 279, 268, 280, 282, 269, 281, 283, 271, 284, 285,
- 286, 272, 273, 287, 293, 274, 288, 275, 276, 277,
- 289, 278, 279, 290, 291, 280, 282, 281, 292, 283,
- 284, 285, 286, 294, 295, 296, 287, 293, 288, 297,
- 305, 298, 289, 299, 300, 290, 291, 301, 302, 303,
- 292, 304, 305, 305, 305, 294, 295, 305, 296, 305,
-
- 305, 305, 297, 298, 305, 299, 305, 300, 305, 301,
- 302, 303, 305, 304, 39, 39, 305, 39, 39, 48,
- 48, 103, 103, 217, 305, 305, 217, 251, 251, 3,
- 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305
+ 23, 24, 25, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 25, 25, 34, 25, 25, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 25, 25, 34, 25, 25,
+ 35, 37, 38, 38, 43, 44, 45, 46, 49, 52,
+ 56, 53, 50, 41, 57, 62, 66, 36, 54, 339,
+ 51, 86, 339, 63, 58, 55, 59, 64, 60, 336,
+ 65, 106, 49, 52, 56, 53, 50, 61, 57, 62,
+
+ 66, 36, 54, 51, 67, 86, 63, 58, 55, 59,
+ 64, 60, 68, 65, 106, 70, 317, 69, 73, 317,
+ 61, 76, 74, 71, 37, 38, 38, 105, 67, 72,
+ 317, 77, 75, 79, 107, 68, 78, 43, 44, 70,
+ 69, 80, 73, 81, 82, 76, 74, 71, 83, 108,
+ 317, 105, 72, 84, 77, 75, 85, 79, 107, 78,
+ 109, 317, 110, 241, 80, 116, 81, 82, 111, 170,
+ 170, 83, 112, 108, 93, 117, 84, 94, 95, 85,
+ 87, 104, 88, 109, 96, 89, 110, 97, 98, 116,
+ 113, 111, 90, 91, 99, 112, 92, 121, 93, 117,
+
+ 114, 94, 95, 118, 87, 115, 88, 96, 119, 89,
+ 102, 97, 98, 113, 125, 90, 91, 99, 62, 92,
+ 100, 38, 38, 114, 120, 122, 63, 118, 115, 123,
+ 124, 126, 119, 127, 102, 128, 129, 101, 125, 130,
+ 132, 137, 62, 134, 131, 135, 136, 120, 122, 63,
+ 138, 104, 123, 124, 126, 141, 127, 133, 128, 142,
+ 129, 101, 130, 139, 132, 137, 134, 131, 135, 136,
+ 145, 146, 143, 140, 138, 144, 147, 148, 141, 149,
+ 133, 150, 142, 151, 40, 152, 153, 139, 157, 158,
+ 154, 47, 155, 145, 146, 143, 140, 156, 144, 147,
+
+ 148, 159, 161, 149, 150, 160, 162, 151, 152, 163,
+ 153, 157, 164, 158, 154, 155, 100, 38, 38, 165,
+ 156, 166, 167, 42, 168, 159, 161, 169, 160, 162,
+ 171, 172, 163, 101, 174, 164, 173, 121, 176, 40,
+ 177, 180, 165, 181, 182, 166, 167, 168, 183, 186,
+ 178, 169, 184, 171, 172, 185, 187, 101, 174, 173,
+ 179, 188, 176, 177, 180, 189, 181, 175, 182, 190,
+ 191, 192, 183, 186, 178, 184, 193, 194, 185, 195,
+ 187, 196, 197, 179, 188, 198, 199, 341, 200, 189,
+ 175, 201, 190, 191, 192, 202, 203, 341, 204, 193,
+
+ 205, 194, 206, 195, 196, 197, 207, 208, 198, 209,
+ 199, 200, 210, 211, 201, 212, 213, 214, 202, 215,
+ 203, 204, 216, 205, 218, 219, 206, 220, 341, 221,
+ 207, 208, 222, 209, 223, 210, 224, 211, 212, 213,
+ 214, 225, 226, 215, 227, 216, 228, 230, 218, 219,
+ 229, 220, 221, 231, 232, 222, 233, 234, 223, 224,
+ 235, 236, 237, 238, 225, 226, 239, 227, 240, 242,
+ 228, 230, 243, 229, 244, 341, 245, 231, 232, 246,
+ 233, 234, 247, 235, 236, 237, 248, 238, 249, 239,
+ 250, 240, 251, 242, 253, 243, 254, 258, 244, 245,
+
+ 255, 256, 246, 257, 259, 247, 260, 261, 262, 248,
+ 263, 264, 249, 265, 250, 266, 251, 253, 241, 274,
+ 254, 258, 270, 255, 256, 276, 257, 259, 271, 260,
+ 261, 262, 272, 263, 264, 273, 275, 265, 266, 279,
+ 267, 280, 268, 274, 277, 270, 278, 341, 269, 276,
+ 281, 271, 282, 341, 283, 272, 284, 287, 273, 275,
+ 285, 286, 279, 267, 280, 268, 288, 289, 277, 290,
+ 278, 269, 291, 281, 292, 293, 282, 283, 294, 306,
+ 284, 287, 295, 285, 286, 296, 297, 298, 299, 288,
+ 300, 289, 301, 290, 302, 291, 303, 292, 293, 305,
+
+ 307, 312, 294, 306, 308, 295, 309, 310, 296, 297,
+ 298, 299, 304, 300, 311, 301, 313, 302, 314, 315,
+ 303, 316, 305, 320, 307, 312, 321, 308, 322, 309,
+ 310, 318, 317, 324, 325, 304, 326, 311, 327, 313,
+ 328, 330, 314, 315, 316, 329, 320, 319, 331, 321,
+ 332, 322, 333, 334, 335, 318, 324, 325, 337, 326,
+ 340, 327, 323, 341, 328, 330, 341, 341, 329, 341,
+ 319, 341, 331, 332, 341, 333, 334, 335, 341, 341,
+ 341, 337, 341, 340, 341, 323, 39, 39, 341, 39,
+ 39, 48, 48, 103, 103, 217, 341, 341, 217, 252,
+
+ 252, 338, 338, 341, 338, 338, 3, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341
} ;
-static const flex_int16_t yy_chk[689] =
+static const flex_int16_t yy_chk[768] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 2, 5,
- 5, 5, 12, 12, 13, 13, 16, 17, 19, 23,
- 16, 18, 19, 44, 44, 2, 307, 16, 18, 21,
- 170, 19, 31, 116, 18, 20, 21, 20, 50, 16,
- 17, 19, 23, 16, 18, 19, 20, 22, 2, 16,
-
- 22, 18, 21, 19, 24, 31, 18, 20, 21, 20,
- 50, 24, 26, 27, 28, 104, 24, 27, 20, 22,
- 26, 65, 22, 28, 43, 26, 27, 24, 28, 35,
- 35, 35, 29, 24, 39, 26, 27, 28, 24, 29,
- 27, 29, 29, 26, 30, 28, 35, 26, 27, 30,
- 28, 15, 30, 49, 11, 29, 37, 37, 37, 53,
- 8, 29, 55, 29, 29, 3, 30, 56, 0, 35,
- 36, 30, 51, 52, 30, 32, 49, 32, 36, 33,
- 32, 53, 33, 33, 55, 36, 32, 32, 33, 56,
- 32, 34, 34, 36, 54, 51, 52, 34, 32, 57,
-
- 32, 36, 33, 32, 58, 33, 33, 36, 32, 32,
- 33, 59, 32, 60, 34, 34, 61, 54, 62, 34,
- 63, 57, 64, 66, 68, 68, 58, 69, 0, 70,
- 71, 72, 73, 59, 76, 74, 60, 77, 75, 61,
- 74, 62, 78, 63, 64, 66, 68, 68, 81, 83,
- 69, 70, 71, 72, 75, 73, 76, 74, 84, 77,
- 85, 75, 74, 86, 78, 87, 88, 84, 87, 89,
- 90, 81, 83, 91, 92, 94, 75, 93, 95, 97,
- 0, 84, 85, 97, 101, 86, 99, 87, 88, 84,
- 87, 89, 90, 102, 106, 91, 98, 92, 94, 93,
-
- 95, 98, 97, 100, 100, 100, 97, 101, 99, 105,
- 108, 109, 110, 111, 112, 113, 102, 106, 98, 114,
- 100, 115, 120, 98, 117, 118, 119, 121, 122, 0,
- 123, 105, 108, 109, 110, 111, 125, 112, 113, 126,
- 124, 114, 127, 100, 115, 120, 117, 118, 119, 124,
- 128, 122, 123, 129, 130, 134, 121, 131, 125, 133,
- 136, 126, 137, 124, 138, 127, 139, 140, 142, 143,
- 148, 124, 144, 128, 146, 129, 130, 134, 121, 147,
- 131, 149, 133, 136, 137, 150, 138, 151, 139, 140,
- 152, 142, 143, 148, 144, 153, 146, 154, 155, 156,
-
- 157, 147, 158, 149, 159, 160, 165, 150, 161, 151,
- 162, 164, 167, 152, 172, 173, 174, 153, 175, 154,
- 176, 155, 156, 157, 177, 158, 159, 178, 160, 165,
- 161, 180, 162, 164, 167, 182, 184, 172, 173, 174,
- 175, 185, 176, 186, 187, 189, 192, 177, 193, 178,
- 194, 0, 195, 180, 196, 197, 198, 182, 184, 199,
- 200, 205, 0, 206, 185, 186, 207, 187, 189, 192,
- 208, 193, 209, 194, 195, 210, 196, 197, 211, 198,
- 213, 199, 200, 215, 205, 206, 216, 0, 220, 207,
- 222, 229, 208, 223, 209, 224, 228, 210, 231, 232,
-
- 211, 233, 234, 213, 235, 236, 215, 239, 247, 216,
- 220, 240, 242, 222, 229, 223, 243, 224, 228, 245,
- 231, 232, 246, 233, 234, 249, 235, 236, 254, 255,
- 239, 247, 256, 240, 242, 259, 260, 263, 243, 268,
- 269, 245, 270, 272, 246, 271, 273, 249, 274, 275,
- 276, 254, 255, 277, 289, 256, 278, 259, 260, 263,
- 280, 268, 269, 283, 284, 270, 272, 271, 287, 273,
- 274, 275, 276, 290, 292, 293, 277, 289, 278, 295,
- 0, 297, 280, 298, 299, 283, 284, 300, 301, 302,
- 287, 303, 0, 0, 0, 290, 292, 0, 293, 0,
-
- 0, 0, 295, 297, 0, 298, 0, 299, 0, 300,
- 301, 302, 0, 303, 306, 306, 0, 306, 306, 308,
- 308, 309, 309, 310, 0, 0, 310, 311, 311, 305,
- 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
- 305, 305, 305, 305, 305, 305, 305, 305
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 5, 5, 5, 12, 12, 13, 13, 16, 17,
+ 19, 18, 16, 343, 19, 21, 23, 2, 18, 339,
+ 16, 31, 336, 21, 19, 18, 20, 22, 20, 334,
+ 22, 50, 16, 17, 19, 18, 16, 20, 19, 21,
+
+ 23, 2, 18, 16, 24, 31, 21, 19, 18, 20,
+ 22, 20, 24, 22, 50, 26, 332, 24, 27, 326,
+ 20, 28, 27, 26, 37, 37, 37, 49, 24, 26,
+ 325, 28, 27, 29, 51, 24, 28, 44, 44, 26,
+ 24, 29, 27, 29, 29, 28, 27, 26, 30, 52,
+ 322, 49, 26, 30, 28, 27, 30, 29, 51, 28,
+ 53, 311, 54, 204, 29, 60, 29, 29, 55, 170,
+ 116, 30, 56, 52, 33, 61, 30, 33, 33, 30,
+ 32, 104, 32, 53, 33, 32, 54, 34, 34, 60,
+ 57, 55, 32, 32, 34, 56, 32, 65, 33, 61,
+
+ 58, 33, 33, 62, 32, 59, 32, 33, 63, 32,
+ 36, 34, 34, 57, 69, 32, 32, 34, 36, 32,
+ 35, 35, 35, 58, 64, 66, 36, 62, 59, 68,
+ 68, 70, 63, 71, 36, 72, 73, 35, 69, 74,
+ 75, 81, 36, 76, 74, 77, 78, 64, 66, 36,
+ 83, 43, 68, 68, 70, 85, 71, 75, 72, 86,
+ 73, 35, 74, 84, 75, 81, 76, 74, 77, 78,
+ 88, 89, 87, 84, 83, 87, 90, 91, 85, 92,
+ 75, 93, 86, 94, 39, 95, 97, 84, 99, 101,
+ 97, 15, 98, 88, 89, 87, 84, 98, 87, 90,
+
+ 91, 102, 106, 92, 93, 105, 108, 94, 95, 109,
+ 97, 99, 110, 101, 97, 98, 100, 100, 100, 111,
+ 98, 112, 113, 11, 114, 102, 106, 115, 105, 108,
+ 117, 118, 109, 100, 120, 110, 119, 121, 122, 8,
+ 123, 125, 111, 126, 127, 112, 113, 114, 128, 131,
+ 124, 115, 129, 117, 118, 130, 133, 100, 120, 119,
+ 124, 134, 122, 123, 125, 136, 126, 121, 127, 137,
+ 138, 139, 128, 131, 124, 129, 140, 142, 130, 143,
+ 133, 144, 146, 124, 134, 147, 148, 3, 149, 136,
+ 121, 150, 137, 138, 139, 151, 152, 0, 153, 140,
+
+ 154, 142, 155, 143, 144, 146, 156, 157, 147, 158,
+ 148, 149, 159, 160, 150, 161, 162, 164, 151, 165,
+ 152, 153, 167, 154, 172, 173, 155, 174, 0, 175,
+ 156, 157, 176, 158, 177, 159, 178, 160, 161, 162,
+ 164, 180, 182, 165, 184, 167, 185, 187, 172, 173,
+ 186, 174, 175, 189, 192, 176, 193, 194, 177, 178,
+ 195, 196, 197, 198, 180, 182, 199, 184, 200, 205,
+ 185, 187, 206, 186, 207, 0, 208, 189, 192, 209,
+ 193, 194, 210, 195, 196, 197, 211, 198, 213, 199,
+ 215, 200, 216, 205, 220, 206, 222, 229, 207, 208,
+
+ 223, 224, 209, 228, 231, 210, 232, 233, 234, 211,
+ 235, 236, 213, 239, 215, 240, 216, 220, 241, 248,
+ 222, 229, 243, 223, 224, 255, 228, 231, 244, 232,
+ 233, 234, 246, 235, 236, 247, 250, 239, 240, 260,
+ 241, 261, 241, 248, 256, 243, 257, 0, 241, 255,
+ 264, 244, 267, 0, 268, 246, 269, 274, 247, 250,
+ 272, 273, 260, 241, 261, 241, 275, 276, 256, 277,
+ 257, 241, 278, 264, 279, 280, 267, 268, 281, 297,
+ 269, 274, 282, 272, 273, 283, 284, 285, 287, 275,
+ 290, 276, 291, 277, 294, 278, 295, 279, 280, 296,
+
+ 299, 305, 281, 297, 300, 282, 302, 303, 283, 284,
+ 285, 287, 295, 290, 304, 291, 306, 294, 307, 309,
+ 295, 310, 296, 313, 299, 305, 315, 300, 316, 302,
+ 303, 312, 317, 318, 319, 295, 320, 304, 321, 306,
+ 323, 327, 307, 309, 310, 324, 313, 312, 328, 315,
+ 329, 316, 330, 331, 333, 312, 318, 319, 335, 320,
+ 337, 321, 317, 0, 323, 327, 0, 0, 324, 0,
+ 312, 0, 328, 329, 0, 330, 331, 333, 0, 0,
+ 0, 335, 0, 337, 0, 317, 342, 342, 0, 342,
+ 342, 344, 344, 345, 345, 346, 0, 0, 346, 347,
+
+ 347, 348, 348, 0, 348, 348, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
+ 341, 341, 341, 341, 341, 341, 341
} ;
static yy_state_type yy_last_accepting_state;
@@ -788,8 +816,8 @@ static Common::String *cleanupString(const char *s) {
return res;
}
-#line 791 "engines/director/lingo/lingo-lex.cpp"
-#line 792 "engines/director/lingo/lingo-lex.cpp"
+#line 819 "engines/director/lingo/lingo-lex.cpp"
+#line 820 "engines/director/lingo/lingo-lex.cpp"
#define INITIAL 0
@@ -1007,10 +1035,10 @@ YY_DECL
}
{
-#line 112 "engines/director/lingo/lingo-lex.l"
+#line 114 "engines/director/lingo/lingo-lex.l"
-#line 1013 "engines/director/lingo/lingo-lex.cpp"
+#line 1041 "engines/director/lingo/lingo-lex.cpp"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1038,13 +1066,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 306 )
+ if ( yy_current_state >= 342 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 305 );
+ while ( yy_current_state != 341 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -1066,87 +1094,87 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 114 "engines/director/lingo/lingo-lex.l"
+#line 116 "engines/director/lingo/lingo-lex.l"
{ count(); }
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 116 "engines/director/lingo/lingo-lex.l"
+#line 118 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.s = new Common::String(yytext + 1); return tSYMBOL; } // D3, skip '#'
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 118 "engines/director/lingo/lingo-lex.l"
+#line 120 "engines/director/lingo/lingo-lex.l"
{ count(); return tABBREVIATED; }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 119 "engines/director/lingo/lingo-lex.l"
+#line 121 "engines/director/lingo/lingo-lex.l"
{ count(); return tABBREV; }
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 120 "engines/director/lingo/lingo-lex.l"
+#line 122 "engines/director/lingo/lingo-lex.l"
{ count(); return tABBR; }
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 121 "engines/director/lingo/lingo-lex.l"
+#line 123 "engines/director/lingo/lingo-lex.l"
{ count(); return tAFTER; } // D3
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 122 "engines/director/lingo/lingo-lex.l"
+#line 124 "engines/director/lingo/lingo-lex.l"
{ count(); return tAND; }
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 123 "engines/director/lingo/lingo-lex.l"
+#line 125 "engines/director/lingo/lingo-lex.l"
{ count(); return tBEFORE; } // D3
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 124 "engines/director/lingo/lingo-lex.l"
+#line 126 "engines/director/lingo/lingo-lex.l"
{ count(); return tCAST; }
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 125 "engines/director/lingo/lingo-lex.l"
+#line 127 "engines/director/lingo/lingo-lex.l"
{ count(); return tCHAR; } // D3
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 126 "engines/director/lingo/lingo-lex.l"
+#line 128 "engines/director/lingo/lingo-lex.l"
{ count(); return tCHARS; }
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 127 "engines/director/lingo/lingo-lex.l"
+#line 129 "engines/director/lingo/lingo-lex.l"
{ count(); return tCONTAINS; }
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 128 "engines/director/lingo/lingo-lex.l"
+#line 130 "engines/director/lingo/lingo-lex.l"
{ count(); return tDATE; }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 129 "engines/director/lingo/lingo-lex.l"
+#line 131 "engines/director/lingo/lingo-lex.l"
{ count(); return tDELETE; }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 130 "engines/director/lingo/lingo-lex.l"
+#line 132 "engines/director/lingo/lingo-lex.l"
{ count(); return tDOWN; }
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 131 "engines/director/lingo/lingo-lex.l"
+#line 133 "engines/director/lingo/lingo-lex.l"
{ count(); return tELSE; }
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 132 "engines/director/lingo/lingo-lex.l"
+#line 134 "engines/director/lingo/lingo-lex.l"
{
count();
@@ -1168,312 +1196,333 @@ YY_RULE_SETUP
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 150 "engines/director/lingo/lingo-lex.l"
+#line 152 "engines/director/lingo/lingo-lex.l"
{ count(); return tEXIT; }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 151 "engines/director/lingo/lingo-lex.l"
+#line 153 "engines/director/lingo/lingo-lex.l"
{ count(); return tFACTORY; }
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 152 "engines/director/lingo/lingo-lex.l"
+#line 154 "engines/director/lingo/lingo-lex.l"
{ count(); return tFIELD; }
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 153 "engines/director/lingo/lingo-lex.l"
+#line 155 "engines/director/lingo/lingo-lex.l"
{ count(); return tFRAME; }
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 154 "engines/director/lingo/lingo-lex.l"
+#line 156 "engines/director/lingo/lingo-lex.l"
{ count(); return tGLOBAL; }
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 155 "engines/director/lingo/lingo-lex.l"
+#line 157 "engines/director/lingo/lingo-lex.l"
{ count(); return tGO; }
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 156 "engines/director/lingo/lingo-lex.l"
+#line 158 "engines/director/lingo/lingo-lex.l"
{ count(); return tHILITE; }
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 157 "engines/director/lingo/lingo-lex.l"
+#line 159 "engines/director/lingo/lingo-lex.l"
{ count(); return tIF; }
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 158 "engines/director/lingo/lingo-lex.l"
+#line 160 "engines/director/lingo/lingo-lex.l"
{ count(); return tINSTANCE; }
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 159 "engines/director/lingo/lingo-lex.l"
+#line 161 "engines/director/lingo/lingo-lex.l"
{ count(); return tINTERSECTS;}
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 160 "engines/director/lingo/lingo-lex.l"
+#line 162 "engines/director/lingo/lingo-lex.l"
{ count(); return tINTO; }
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 161 "engines/director/lingo/lingo-lex.l"
+#line 163 "engines/director/lingo/lingo-lex.l"
{ count(); return tIN; }
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 162 "engines/director/lingo/lingo-lex.l"
+#line 164 "engines/director/lingo/lingo-lex.l"
{ count(); return tITEM; }
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 163 "engines/director/lingo/lingo-lex.l"
+#line 165 "engines/director/lingo/lingo-lex.l"
{ count(); return tITEMS; }
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 164 "engines/director/lingo/lingo-lex.l"
+#line 166 "engines/director/lingo/lingo-lex.l"
{ count(); return tLAST; }
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 165 "engines/director/lingo/lingo-lex.l"
+#line 167 "engines/director/lingo/lingo-lex.l"
{ count(); return tLINE; }
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 166 "engines/director/lingo/lingo-lex.l"
+#line 168 "engines/director/lingo/lingo-lex.l"
{ count(); return tLINES; }
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 167 "engines/director/lingo/lingo-lex.l"
+#line 169 "engines/director/lingo/lingo-lex.l"
{ count(); return tLONG; }
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 168 "engines/director/lingo/lingo-lex.l"
+#line 170 "engines/director/lingo/lingo-lex.l"
{ count(); return tMACRO; }
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 169 "engines/director/lingo/lingo-lex.l"
+#line 171 "engines/director/lingo/lingo-lex.l"
{ count(); return tMENU; }
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 170 "engines/director/lingo/lingo-lex.l"
+#line 172 "engines/director/lingo/lingo-lex.l"
{ count(); return tMENUITEM;}
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 171 "engines/director/lingo/lingo-lex.l"
+#line 173 "engines/director/lingo/lingo-lex.l"
{ count(); return tMENUITEMS; }
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 172 "engines/director/lingo/lingo-lex.l"
+#line 174 "engines/director/lingo/lingo-lex.l"
{ count(); return tMETHOD; }
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 173 "engines/director/lingo/lingo-lex.l"
+#line 175 "engines/director/lingo/lingo-lex.l"
{ count(); return tMOD;}
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 174 "engines/director/lingo/lingo-lex.l"
+#line 176 "engines/director/lingo/lingo-lex.l"
{ count(); return tMOVIE; }
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 175 "engines/director/lingo/lingo-lex.l"
+#line 177 "engines/director/lingo/lingo-lex.l"
{ count(); return tNEXT; }
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 176 "engines/director/lingo/lingo-lex.l"
+#line 178 "engines/director/lingo/lingo-lex.l"
{ count(); return tNOT; }
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 177 "engines/director/lingo/lingo-lex.l"
+#line 179 "engines/director/lingo/lingo-lex.l"
{ count(); return tNUMBER; }
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 178 "engines/director/lingo/lingo-lex.l"
+#line 180 "engines/director/lingo/lingo-lex.l"
{ count(); return tOF; }
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 179 "engines/director/lingo/lingo-lex.l"
+#line 181 "engines/director/lingo/lingo-lex.l"
{ count(); return tON; } // D3
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 180 "engines/director/lingo/lingo-lex.l"
+#line 182 "engines/director/lingo/lingo-lex.l"
{ count(); return tOPEN; }
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 181 "engines/director/lingo/lingo-lex.l"
+#line 183 "engines/director/lingo/lingo-lex.l"
{ count(); return tOR; }
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 182 "engines/director/lingo/lingo-lex.l"
+#line 184 "engines/director/lingo/lingo-lex.l"
{ count(); return tPLAY; }
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 183 "engines/director/lingo/lingo-lex.l"
+#line 185 "engines/director/lingo/lingo-lex.l"
{ count(); return tPREVIOUS; }
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 184 "engines/director/lingo/lingo-lex.l"
+#line 186 "engines/director/lingo/lingo-lex.l"
{ count(); return tPROPERTY; } // D4
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 185 "engines/director/lingo/lingo-lex.l"
+#line 187 "engines/director/lingo/lingo-lex.l"
{ count(); return tPUT; }
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 186 "engines/director/lingo/lingo-lex.l"
+#line 188 "engines/director/lingo/lingo-lex.l"
{ count(); return tREPEAT; }
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 187 "engines/director/lingo/lingo-lex.l"
+#line 189 "engines/director/lingo/lingo-lex.l"
{ count(); return tSCRIPT; }
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 188 "engines/director/lingo/lingo-lex.l"
+#line 190 "engines/director/lingo/lingo-lex.l"
{ count(); return tASSERTERROR; }
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 189 "engines/director/lingo/lingo-lex.l"
+#line 191 "engines/director/lingo/lingo-lex.l"
{ count(); return tSET; }
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 190 "engines/director/lingo/lingo-lex.l"
+#line 192 "engines/director/lingo/lingo-lex.l"
{ count(); return tSHORT; }
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 191 "engines/director/lingo/lingo-lex.l"
+#line 193 "engines/director/lingo/lingo-lex.l"
{ count(); return tSOUND; }
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 192 "engines/director/lingo/lingo-lex.l"
+#line 194 "engines/director/lingo/lingo-lex.l"
{ count(); return tSPRITE; }
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 193 "engines/director/lingo/lingo-lex.l"
+#line 195 "engines/director/lingo/lingo-lex.l"
{ count(); return tSTARTS; }
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 194 "engines/director/lingo/lingo-lex.l"
+#line 196 "engines/director/lingo/lingo-lex.l"
{ count(); return tTELL; }
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 195 "engines/director/lingo/lingo-lex.l"
+#line 197 "engines/director/lingo/lingo-lex.l"
{ count(); return tTHE; }
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 196 "engines/director/lingo/lingo-lex.l"
+#line 198 "engines/director/lingo/lingo-lex.l"
{ count(); return tTHEN; }
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 197 "engines/director/lingo/lingo-lex.l"
+#line 199 "engines/director/lingo/lingo-lex.l"
{ count(); return tTIME; }
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 198 "engines/director/lingo/lingo-lex.l"
+#line 200 "engines/director/lingo/lingo-lex.l"
{ count(); return tTO; }
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 199 "engines/director/lingo/lingo-lex.l"
-{ count(); return tWHEN; }
+#line 201 "engines/director/lingo/lingo-lex.l"
+{
+ count();
+
+ const char *ptr = &yytext[5]; // Skip 'when '
+ while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+
+ Common::String eventName;
+ while (*ptr != ' ' && *ptr != '\t' && *ptr != '\xC2')
+ eventName += *ptr++;
+
+ while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+ ptr += 5; // Skip 'then '
+ while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+
+ Common::String stmt;
+ while (*ptr)
+ stmt += *ptr++;
+
+ yylval.w.eventName = new Common::String(eventName);
+ yylval.w.stmt = new Common::String(stmt);
+ return tWHEN;
+ }
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 200 "engines/director/lingo/lingo-lex.l"
+#line 223 "engines/director/lingo/lingo-lex.l"
{ count(); return tWHILE; }
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 201 "engines/director/lingo/lingo-lex.l"
+#line 224 "engines/director/lingo/lingo-lex.l"
{ count(); return tWINDOW; }
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 202 "engines/director/lingo/lingo-lex.l"
+#line 225 "engines/director/lingo/lingo-lex.l"
{ count(); return tWITH; }
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 203 "engines/director/lingo/lingo-lex.l"
+#line 226 "engines/director/lingo/lingo-lex.l"
{ count(); return tWITHIN; }
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 204 "engines/director/lingo/lingo-lex.l"
+#line 227 "engines/director/lingo/lingo-lex.l"
{ count(); return tWORD; }
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 205 "engines/director/lingo/lingo-lex.l"
+#line 228 "engines/director/lingo/lingo-lex.l"
{ count(); return tWORDS; }
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 207 "engines/director/lingo/lingo-lex.l"
+#line 230 "engines/director/lingo/lingo-lex.l"
{ count(); return tNEQ; }
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 208 "engines/director/lingo/lingo-lex.l"
+#line 231 "engines/director/lingo/lingo-lex.l"
{ count(); return tGE; }
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 209 "engines/director/lingo/lingo-lex.l"
+#line 232 "engines/director/lingo/lingo-lex.l"
{ count(); return tLE; }
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 210 "engines/director/lingo/lingo-lex.l"
+#line 233 "engines/director/lingo/lingo-lex.l"
{ count(); return tCONCAT; }
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 211 "engines/director/lingo/lingo-lex.l"
+#line 234 "engines/director/lingo/lingo-lex.l"
{ count(); return tEQ; }
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 213 "engines/director/lingo/lingo-lex.l"
+#line 236 "engines/director/lingo/lingo-lex.l"
{
count();
yylval.s = new Common::String(yytext);
@@ -1483,41 +1532,41 @@ YY_RULE_SETUP
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 219 "engines/director/lingo/lingo-lex.l"
+#line 242 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.f = atof(yytext); return tFLOAT; }
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 220 "engines/director/lingo/lingo-lex.l"
+#line 243 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.i = strtol(yytext, NULL, 10); return tINT; }
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 221 "engines/director/lingo/lingo-lex.l"
+#line 244 "engines/director/lingo/lingo-lex.l"
{ count(); return *yytext; }
YY_BREAK
case 83:
/* rule 83 can match eol */
YY_RULE_SETUP
-#line 222 "engines/director/lingo/lingo-lex.l"
+#line 245 "engines/director/lingo/lingo-lex.l"
{ count(); return '\n'; }
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 223 "engines/director/lingo/lingo-lex.l"
+#line 246 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.s = cleanupString(&yytext[1]); yylval.s->deleteLastChar(); return tSTRING; }
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 224 "engines/director/lingo/lingo-lex.l"
+#line 247 "engines/director/lingo/lingo-lex.l"
{ count(); }
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 226 "engines/director/lingo/lingo-lex.l"
+#line 249 "engines/director/lingo/lingo-lex.l"
ECHO;
YY_BREAK
-#line 1520 "engines/director/lingo/lingo-lex.cpp"
+#line 1569 "engines/director/lingo/lingo-lex.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -1816,7 +1865,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 306 )
+ if ( yy_current_state >= 342 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1844,11 +1893,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 306 )
+ if ( yy_current_state >= 342 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 305);
+ yy_is_jam = (yy_current_state == 341);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2489,7 +2538,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 226 "engines/director/lingo/lingo-lex.l"
+#line 249 "engines/director/lingo/lingo-lex.l"
extern int yydebug;
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index d6803765c8..b0cb1edeed 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -108,6 +108,8 @@ conststring \"[^\"\r\n]*\"
operator [-+*/%^:,()><&\[\]]
newline [ \t\xC2]*[\n\r]
spc [ \t\xC2]
+eventname (keyDown|keyUp|mouseDown|mouseUp|timeOut)
+unparsedstmt [^\r\n]*
%%
@@ -196,7 +198,28 @@ the { count(); return tTHE; }
then { count(); return tTHEN; }
time { count(); return tTIME; }
to { count(); return tTO; }
-when { count(); return tWHEN; }
+when{spc}+{eventname}{spc}+then{spc}+{unparsedstmt} {
+ count();
+
+ const char *ptr = &yytext[5]; // Skip 'when '
+ while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+
+ Common::String eventName;
+ while (*ptr != ' ' && *ptr != '\t' && *ptr != '\xC2')
+ eventName += *ptr++;
+
+ while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+ ptr += 5; // Skip 'then '
+ while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+
+ Common::String stmt;
+ while (*ptr)
+ stmt += *ptr++;
+
+ yylval.w.eventName = new Common::String(eventName);
+ yylval.w.stmt = new Common::String(stmt);
+ return tWHEN;
+ }
while { count(); return tWHILE; }
window { count(); return tWINDOW; }
with { count(); return tWITH; }
diff --git a/engines/director/lingo/lingo-preprocessor.cpp b/engines/director/lingo/lingo-preprocessor.cpp
index bdba2df9d5..60f34df296 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -26,8 +26,6 @@
namespace Director {
-Common::String preprocessWhen(Common::String in, bool *changed);
-
bool isspec(char c) {
return strchr("-+*/%%^:,()><&[]=", c) != NULL;
}
@@ -62,34 +60,6 @@ static Common::String nexttok(const char *s, const char **newP = nullptr) {
return res;
}
-static const char *findtokstart(const char *start, const char *token) {
- // First, determine, if we sit inside of a string
- //
- // Since we do not have escaping characters, simple count is enough
- int numquotes = 0;
- const char *ptr = start;
-
- while (*ptr && ptr <= token) {
- if (*ptr == '"')
- numquotes++;
- ptr++;
- }
-
- // We're inside of quote. Scan backwards
- if (numquotes % 2) {
- while (*ptr != '"')
- ptr--;
-
- return ptr;
- }
-
- // If we're in the middle of a word
- while (ptr > start && Common::isAlnum(*(ptr - 1)))
- ptr--;
-
- return ptr;
-}
-
Common::String LingoCompiler::codePreprocessor(const char *s, LingoArchive *archive, ScriptType type, CastMemberID id, bool simple) {
Common::String res;
@@ -202,9 +172,6 @@ Common::String LingoCompiler::codePreprocessor(const char *s, LingoArchive *arch
res1 = patchLingoCode(res1, archive, type, id, linenumber);
- bool changed = false;
- res1 = preprocessWhen(res1, &changed);
-
res += res1;
linenumber++; // We do it here because of 'continue' statements
@@ -221,74 +188,4 @@ Common::String LingoCompiler::codePreprocessor(const char *s, LingoArchive *arch
return res;
}
-// when ID then statement -> when ID then "statement"
-Common::String preprocessWhen(Common::String in, bool *changed) {
- Common::String res, next;
- const char *ptr = in.c_str();
- const char *beg = ptr;
- const char *nextPtr;
-
- while ((ptr = scumm_strcasestr(beg, "when")) != NULL) {
- if (ptr != findtokstart(in.c_str(), ptr)) { // If we're in the middle of a word
- res += *beg++;
- continue;
- }
-
- ptr += 4; // end of 'play'
- res += Common::String(beg, ptr);
-
- if (!*ptr) // If it is end of the line
- break;
-
- if (Common::isAlnum(*ptr)) { // If it is in the middle of the word
- beg = ptr;
- continue;
- }
-
- *changed = true;
-
- res += ' ';
- next = nexttok(ptr, &nextPtr); // ID
- res += next;
-
- res += ' ';
- next = nexttok(nextPtr, &nextPtr); // then
- res += next;
-
- res += ' ';
- res += '"';
-
- // now we need to preprocess quotes
- bool skipQuote = false;
- while (*nextPtr) {
- if (*nextPtr == '"') {
- res += "\" & QUOTE ";
-
- if (*(nextPtr + 1))
- res += "& \"";
- else
- skipQuote = true; // we do not want the last quote
- } else {
- res += *nextPtr;
- }
-
- nextPtr++;
- }
-
- if (!skipQuote)
- res += '"';
-
- beg = nextPtr;
-
- break;
- }
-
- res += Common::String(beg);
-
- if (in.size() != res.size())
- debugC(2, kDebugParse | kDebugPreprocess, "WHEN: in: %s\nout: %s", in.c_str(), res.c_str());
-
- return res;
-}
-
} // End of namespace Director
Commit: 564c4945ca00c2796c91a72fbddb015999760c87
https://github.com/scummvm/scummvm/commit/564c4945ca00c2796c91a72fbddb015999760c87
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Remove parseMenu
We parse menus in b_installMenu.
Changed paths:
engines/director/lingo/lingo-codegen.cpp
engines/director/lingo/lingo-codegen.h
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 33e0778ced..a680c0f3be 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -110,13 +110,6 @@ ScriptContext *LingoCompiler::compileLingo(const char *code, LingoArchive *archi
_linenumber = _colnumber = 1;
_hadError = false;
- if (!strncmp(code, "menu:", 5) || scumm_strcasestr(code, "\nmenu:")) {
- debugC(1, kDebugCompile, "Parsing menu");
- parseMenu(code);
-
- return nullptr;
- }
-
// Preprocess the code for ease of the parser
Common::String codeNorm = codePreprocessor(code, archive, type, id);
code = codeNorm.c_str();
@@ -383,10 +376,6 @@ void LingoCompiler::updateLoopJumps(uint nextTargetPos, uint exitTargetPos) {
}
}
-void LingoCompiler::parseMenu(const char *code) {
- warning("STUB: parseMenu");
-}
-
/* ScriptNode */
bool LingoCompiler::visitScriptNode(ScriptNode *node) {
diff --git a/engines/director/lingo/lingo-codegen.h b/engines/director/lingo/lingo-codegen.h
index 251e08951f..e63be4a538 100644
--- a/engines/director/lingo/lingo-codegen.h
+++ b/engines/director/lingo/lingo-codegen.h
@@ -126,7 +126,6 @@ public:
private:
int parse(const char *code);
- void parseMenu(const char *code);
public:
// lingo-preprocessor.cpp
Commit: 88ea6e164599d873180524848c461564bf9efea8
https://github.com/scummvm/scummvm/commit/88ea6e164599d873180524848c461564bf9efea8
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: Re-encode loaded text to UTF-8
Changed paths:
engines/director/cast.cpp
engines/director/lingo/lingo-builtins.cpp
engines/director/lingo/lingo-codegen.cpp
engines/director/lingo/lingo-codegen.h
engines/director/lingo/lingo-events.cpp
engines/director/lingo/lingo-lex.cpp
engines/director/lingo/lingo-lex.l
engines/director/lingo/lingo-object.cpp
engines/director/lingo/lingo-patcher.cpp
engines/director/lingo/lingo-preprocessor.cpp
engines/director/lingo/lingo.cpp
engines/director/lingo/lingo.h
engines/director/movie.cpp
engines/director/resource.cpp
engines/director/score.cpp
engines/director/types.h
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 951bfb5ff8..e032e7afe2 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -1065,17 +1065,7 @@ void Cast::loadScriptText(Common::SeekableReadStreamEndian &stream, uint16 id) {
/*uint32 unk1 = */ stream.readUint32();
uint32 strLen = stream.readUint32();
/*uin32 dataLen = */ stream.readUint32();
- Common::String script;
-
- for (uint32 i = 0; i < strLen; i++) {
- byte ch = stream.readByte();
-
- // Convert Mac line endings
- if (ch == 0x0d)
- ch = '\n';
-
- script += ch;
- }
+ Common::String script = stream.readString(0, strLen);
// Check if this is a script. It must start with a comment.
// See D2 Interactivity Manual pp.46-47 (Ch.2.11. Using a macro)
@@ -1088,7 +1078,7 @@ void Cast::loadScriptText(Common::SeekableReadStreamEndian &stream, uint16 id) {
if (script.contains("\nmenu:") || script.hasPrefix("menu:"))
return;
- _lingoArchive->addCode(script.c_str(), kMovieScript, id);
+ _lingoArchive->addCode(script.decode(Common::kMacRoman), kMovieScript, id);
}
void Cast::dumpScript(const char *script, ScriptType type, uint16 id) {
@@ -1191,7 +1181,7 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
if (ConfMan.getBool("dump_scripts"))
dumpScript(ci->script.c_str(), scriptType, id);
- _lingoArchive->addCode(ci->script.c_str(), scriptType, id, ci->name.c_str());
+ _lingoArchive->addCode(ci->script, scriptType, id, ci->name.c_str());
}
}
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index b1170e78a8..bb02682b5f 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -535,7 +535,7 @@ void LB::b_value(int nargs) {
}
Common::String code = "scummvm_returnNumber " + expr;
// Compile the code to an anonymous function and call it
- ScriptContext *sc = g_lingo->_compiler->compileAnonymous(code.c_str());
+ ScriptContext *sc = g_lingo->_compiler->compileAnonymous(code);
Symbol sym = sc->_eventHandlers[kEventGeneric];
LC::call(sym, 0, true);
}
@@ -1658,7 +1658,8 @@ void LB::b_installMenu(int nargs) {
}
TextCastMember *field = static_cast<TextCastMember *>(member);
- Common::String menuStxt = g_lingo->_compiler->codePreprocessor(field->getText().encode(Common::kMacRoman).c_str(), field->getCast()->_lingoArchive, kNoneScript, memberID, true); // FIXME: Properly handle encoding
+ // TODO: We should process the U32String instead of encoding it to Mac Roman first
+ Common::String menuStxt = g_lingo->_compiler->codePreprocessor(field->getText(), field->getCast()->_lingoArchive, kNoneScript, memberID, true).encode(Common::kMacRoman);
Common::String line;
int linenum = -1; // We increment it before processing
@@ -1738,7 +1739,7 @@ void LB::b_installMenu(int nargs) {
while (mainArchive->getScriptContext(kEventScript, commandId)) {
commandId++;
}
- mainArchive->addCode(command.c_str(), kEventScript, commandId);
+ mainArchive->addCode(command.decode(Common::kMacRoman), kEventScript, commandId);
submenuText += Common::String::format("[%d];", commandId);
} else {
submenuText += ';';
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index a680c0f3be..d6cf341f35 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -93,14 +93,14 @@ LingoCompiler::LingoCompiler() {
_hadError = false;
}
-ScriptContext *LingoCompiler::compileAnonymous(const char *code) {
+ScriptContext *LingoCompiler::compileAnonymous(const Common::U32String &code) {
debugC(1, kDebugCompile, "Compiling anonymous lingo\n"
- "***********\n%s\n\n***********", code);
+ "***********\n%s\n\n***********", code.encode().c_str());
return compileLingo(code, nullptr, kNoneScript, CastMemberID(0, 0), "[anonymous]", true);
}
-ScriptContext *LingoCompiler::compileLingo(const char *code, LingoArchive *archive, ScriptType type, CastMemberID id, const Common::String &scriptName, bool anonymous) {
+ScriptContext *LingoCompiler::compileLingo(const Common::U32String &code, LingoArchive *archive, ScriptType type, CastMemberID id, const Common::String &scriptName, bool anonymous) {
_assemblyArchive = archive;
_assemblyAST = nullptr;
ScriptContext *mainContext = _assemblyContext = new ScriptContext(scriptName, archive, type, id.member);
@@ -111,11 +111,11 @@ ScriptContext *LingoCompiler::compileLingo(const char *code, LingoArchive *archi
_hadError = false;
// Preprocess the code for ease of the parser
- Common::String codeNorm = codePreprocessor(code, archive, type, id);
- code = codeNorm.c_str();
+ Common::String codeNorm = codePreprocessor(code, archive, type, id).encode(Common::kUtf8);
+ const char *utf8Code = codeNorm.c_str();
// Parse the Lingo and build an AST
- parse(code);
+ parse(utf8Code);
if (!_assemblyAST) {
delete _assemblyContext;
delete _currentAssembly;
diff --git a/engines/director/lingo/lingo-codegen.h b/engines/director/lingo/lingo-codegen.h
index e63be4a538..cb76dcf22b 100644
--- a/engines/director/lingo/lingo-codegen.h
+++ b/engines/director/lingo/lingo-codegen.h
@@ -34,8 +34,8 @@ public:
LingoCompiler();
virtual ~LingoCompiler() {}
- ScriptContext *compileAnonymous(const char *code);
- ScriptContext *compileLingo(const char *code, LingoArchive *archive, ScriptType type, CastMemberID id, const Common::String &scriptName, bool anonyomous = false);
+ ScriptContext *compileAnonymous(const Common::U32String &code);
+ ScriptContext *compileLingo(const Common::U32String &code, LingoArchive *archive, ScriptType type, CastMemberID id, const Common::String &scriptName, bool anonyomous = false);
ScriptContext *compileLingoV4(Common::SeekableReadStreamEndian &stream, LingoArchive *archive, const Common::String &archName, uint16 version);
int code1(inst code) { _currentAssembly->push_back(code); return _currentAssembly->size() - 1; }
@@ -129,10 +129,10 @@ private:
public:
// lingo-preprocessor.cpp
- Common::String codePreprocessor(const char *s, LingoArchive *archive, ScriptType type, CastMemberID id, bool simple = false);
+ Common::U32String codePreprocessor(const Common::U32String &code, LingoArchive *archive, ScriptType type, CastMemberID id, bool simple = false);
// lingo-patcher.cpp
- Common::String patchLingoCode(Common::String &line, LingoArchive *archive, ScriptType type, CastMemberID id, int linenumber);
+ Common::U32String patchLingoCode(const Common::U32String &line, LingoArchive *archive, ScriptType type, CastMemberID id, int linenumber);
};
} // End of namespace Director
diff --git a/engines/director/lingo/lingo-events.cpp b/engines/director/lingo/lingo-events.cpp
index b2088a3a22..9c95044703 100644
--- a/engines/director/lingo/lingo-events.cpp
+++ b/engines/director/lingo/lingo-events.cpp
@@ -109,7 +109,7 @@ void Movie::setPrimaryEventHandler(LEvent event, const Common::String &code) {
debugC(3, kDebugLingoExec, "setting primary event handler (%s)", _lingo->_eventHandlerTypes[event]);
LingoArchive *mainArchive = getMainLingoArch();
mainArchive->primaryEventHandlers[event] = code;
- mainArchive->addCode(code.c_str(), kEventScript, event);
+ mainArchive->addCode(code, kEventScript, event);
}
void Movie::queueSpriteEvent(LEvent event, int eventId, int spriteId) {
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 720ab736bd..5fbccfd404 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -364,45 +364,46 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[342] =
+static const flex_int16_t yy_accept[352] =
{ 0,
0, 0, 87, 85, 1, 83, 83, 85, 85, 82,
82, 81, 82, 78, 82, 79, 79, 79, 79, 79,
79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 1, 79, 1, 83, 0, 84,
- 2, 77, 80, 81, 76, 74, 75, 79, 79, 79,
+ 79, 79, 79, 79, 85, 1, 79, 85, 1, 83,
+ 0, 0, 84, 2, 77, 80, 81, 76, 74, 75,
79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 79, 25, 29, 79, 79,
- 79, 79, 79, 79, 79, 79, 79, 79, 46, 47,
- 79, 49, 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 79, 79, 79, 79, 66, 79, 79, 79, 1,
-
- 0, 79, 2, 80, 79, 79, 7, 79, 79, 79,
- 79, 79, 79, 79, 79, 17, 79, 79, 79, 79,
- 23, 79, 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 41, 79, 79, 44, 79, 79, 79, 79, 79,
- 53, 79, 79, 79, 57, 79, 79, 79, 79, 79,
- 63, 79, 79, 79, 79, 79, 79, 0, 79, 5,
- 79, 79, 9, 10, 79, 13, 79, 15, 16, 0,
- 18, 79, 79, 79, 0, 79, 79, 79, 28, 30,
- 32, 33, 35, 79, 37, 79, 79, 43, 79, 48,
- 50, 79, 79, 79, 79, 79, 79, 79, 79, 79,
-
- 62, 64, 65, 79, 79, 79, 70, 72, 0, 79,
- 79, 6, 79, 11, 79, 79, 17, 20, 21, 79,
- 23, 79, 79, 79, 31, 34, 36, 79, 79, 42,
- 79, 79, 79, 79, 79, 79, 58, 59, 79, 79,
- 0, 68, 79, 79, 73, 0, 79, 4, 8, 79,
- 14, 17, 22, 24, 79, 79, 79, 40, 45, 79,
- 79, 54, 55, 79, 60, 61, 0, 0, 0, 69,
- 71, 0, 79, 79, 79, 79, 79, 79, 79, 79,
- 79, 0, 0, 0, 0, 19, 79, 12, 26, 79,
- 38, 51, 52, 79, 0, 0, 0, 19, 79, 79,
-
- 39, 79, 0, 0, 0, 0, 79, 27, 79, 0,
- 0, 0, 0, 3, 79, 0, 0, 0, 0, 0,
- 79, 0, 0, 0, 0, 0, 79, 0, 0, 79,
- 0, 0, 79, 0, 79, 67, 79, 67, 67, 56,
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 25,
+ 29, 79, 79, 79, 79, 79, 79, 79, 79, 79,
+ 79, 46, 47, 79, 49, 79, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 66, 79,
+
+ 79, 79, 1, 0, 0, 79, 2, 80, 79, 79,
+ 7, 79, 79, 79, 79, 79, 79, 79, 79, 17,
+ 79, 79, 79, 79, 23, 0, 79, 79, 79, 79,
+ 79, 79, 79, 79, 79, 79, 41, 79, 79, 44,
+ 79, 79, 79, 79, 79, 53, 79, 79, 79, 57,
+ 79, 79, 79, 79, 79, 63, 79, 79, 79, 79,
+ 79, 79, 0, 79, 5, 79, 79, 9, 10, 79,
+ 13, 79, 15, 16, 0, 0, 18, 79, 79, 79,
+ 0, 79, 79, 79, 28, 30, 32, 33, 35, 79,
+ 37, 79, 79, 43, 79, 48, 50, 79, 79, 79,
+
+ 79, 79, 79, 79, 79, 79, 62, 64, 65, 79,
+ 79, 79, 70, 72, 0, 79, 79, 6, 79, 11,
+ 79, 79, 17, 20, 21, 79, 23, 79, 79, 79,
+ 31, 34, 36, 79, 79, 42, 79, 79, 79, 79,
+ 79, 79, 58, 59, 79, 79, 0, 0, 68, 79,
+ 79, 73, 0, 79, 4, 8, 79, 14, 17, 22,
+ 24, 79, 79, 79, 40, 45, 79, 79, 54, 55,
+ 79, 60, 61, 0, 0, 0, 69, 71, 0, 79,
+ 79, 79, 79, 79, 79, 79, 79, 79, 0, 0,
+ 0, 0, 19, 79, 12, 26, 79, 38, 51, 52,
+
+ 79, 0, 0, 0, 19, 79, 79, 39, 79, 0,
+ 0, 0, 0, 79, 27, 79, 0, 0, 0, 0,
+ 3, 79, 0, 0, 0, 0, 0, 0, 79, 0,
+ 0, 0, 0, 0, 79, 0, 0, 79, 0, 0,
+ 79, 0, 79, 67, 0, 79, 67, 67, 67, 56,
0
} ;
@@ -411,24 +412,24 @@ static const YY_CHAR yy_ec[256] =
1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 1, 5, 6, 1, 7, 8, 1, 7,
- 7, 7, 7, 7, 7, 9, 7, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 7, 1, 11,
- 12, 13, 1, 1, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 23, 30, 31, 32, 33, 34, 35, 36, 37, 23,
- 7, 1, 7, 7, 23, 1, 38, 39, 40, 41,
-
- 42, 43, 44, 45, 46, 23, 47, 48, 49, 50,
- 51, 52, 23, 53, 54, 55, 56, 57, 58, 59,
- 60, 23, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 5, 1, 6, 7, 1, 8, 9, 1, 8,
+ 8, 8, 8, 8, 8, 10, 8, 11, 11, 11,
+ 11, 11, 11, 11, 11, 11, 11, 8, 1, 12,
+ 13, 14, 1, 1, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
+ 24, 31, 32, 33, 34, 35, 36, 37, 38, 24,
+ 8, 1, 8, 8, 24, 1, 39, 40, 41, 42,
+
+ 43, 44, 45, 46, 47, 24, 48, 49, 50, 51,
+ 52, 53, 24, 54, 55, 56, 57, 58, 59, 60,
+ 61, 24, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 62, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 63, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -438,189 +439,202 @@ static const YY_CHAR yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static const YY_CHAR yy_meta[61] =
+static const YY_CHAR yy_meta[64] =
{ 0,
- 1, 2, 3, 3, 1, 1, 1, 1, 1, 4,
- 1, 1, 1, 5, 5, 5, 5, 5, 5, 5,
+ 1, 2, 3, 3, 2, 1, 1, 1, 1, 1,
+ 4, 1, 1, 1, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
+ 5, 1, 2
} ;
-static const flex_int16_t yy_base[349] =
+static const flex_int16_t yy_base[359] =
{ 0,
- 0, 59, 388, 707, 60, 707, 707, 335, 0, 707,
- 316, 56, 55, 707, 280, 54, 52, 58, 57, 62,
- 54, 63, 55, 86, 0, 102, 105, 104, 115, 124,
- 64, 165, 157, 167, 219, 197, 123, 707, 280, 707,
- 0, 707, 242, 129, 707, 707, 707, 0, 113, 60,
- 118, 131, 130, 149, 142, 141, 166, 166, 175, 149,
- 154, 186, 195, 197, 196, 201, 0, 199, 197, 201,
- 207, 209, 221, 213, 224, 208, 214, 221, 0, 0,
- 224, 0, 237, 246, 224, 231, 243, 239, 244, 244,
- 248, 266, 257, 266, 260, 0, 269, 266, 259, 315,
-
- 276, 286, 0, 172, 276, 285, 0, 279, 278, 283,
- 288, 304, 305, 298, 310, 169, 299, 307, 311, 320,
- 336, 317, 309, 333, 316, 312, 327, 329, 323, 323,
- 329, 0, 335, 330, 0, 351, 343, 334, 338, 348,
- 0, 360, 358, 356, 0, 353, 359, 365, 359, 367,
- 369, 379, 372, 376, 386, 386, 391, 394, 381, 396,
- 386, 387, 0, 387, 406, 0, 391, 0, 0, 168,
- 0, 408, 408, 414, 402, 401, 421, 407, 0, 411,
- 0, 412, 0, 417, 425, 423, 430, 0, 436, 0,
- 0, 433, 439, 444, 432, 436, 431, 447, 435, 437,
-
- 0, 0, 0, 162, 452, 445, 453, 446, 448, 455,
- 453, 0, 471, 0, 469, 475, 0, 0, 0, 470,
- 707, 479, 474, 471, 0, 0, 0, 472, 481, 0,
- 475, 479, 478, 477, 479, 478, 0, 0, 496, 485,
- 517, 0, 488, 502, 0, 505, 506, 498, 0, 510,
- 0, 0, 0, 0, 510, 527, 529, 0, 0, 507,
- 510, 0, 0, 525, 0, 0, 535, 527, 535, 0,
- 0, 531, 525, 544, 536, 550, 554, 547, 544, 539,
- 565, 546, 553, 561, 551, 0, 557, 0, 0, 559,
- 562, 0, 0, 564, 580, 569, 562, 707, 583, 574,
-
- 0, 576, 580, 586, 584, 589, 602, 0, 602, 587,
- 160, 615, 591, 0, 597, 602, 631, 606, 606, 605,
- 607, 149, 620, 611, 129, 118, 624, 631, 624, 623,
- 627, 115, 625, 88, 631, 81, 631, 0, 78, 0,
- 707, 686, 69, 688, 690, 694, 696, 701
+ 0, 62, 665, 796, 66, 796, 796, 572, 0, 796,
+ 563, 55, 59, 796, 544, 58, 56, 61, 62, 59,
+ 57, 63, 56, 98, 0, 101, 108, 109, 137, 138,
+ 74, 179, 181, 133, 452, 130, 182, 362, 212, 796,
+ 349, 357, 796, 0, 796, 294, 84, 796, 796, 796,
+ 0, 81, 89, 102, 119, 104, 131, 143, 143, 157,
+ 148, 179, 140, 155, 199, 204, 194, 184, 200, 0,
+ 205, 211, 207, 212, 213, 227, 220, 232, 218, 223,
+ 230, 0, 0, 226, 0, 243, 254, 232, 236, 250,
+ 237, 243, 243, 254, 271, 265, 268, 265, 0, 275,
+
+ 268, 271, 324, 284, 241, 292, 0, 248, 281, 294,
+ 0, 287, 284, 289, 297, 302, 312, 306, 313, 336,
+ 303, 316, 319, 331, 346, 190, 326, 319, 331, 327,
+ 325, 342, 341, 335, 333, 342, 0, 347, 339, 0,
+ 360, 350, 342, 347, 354, 0, 372, 369, 369, 0,
+ 366, 370, 370, 373, 380, 380, 391, 384, 387, 396,
+ 396, 404, 406, 392, 407, 397, 399, 0, 400, 418,
+ 0, 404, 0, 0, 438, 189, 0, 421, 422, 429,
+ 420, 419, 430, 423, 0, 424, 0, 426, 0, 430,
+ 438, 435, 443, 0, 447, 0, 0, 444, 451, 456,
+
+ 443, 447, 443, 460, 447, 450, 0, 0, 0, 487,
+ 465, 459, 470, 466, 467, 475, 470, 0, 488, 0,
+ 486, 491, 0, 0, 0, 486, 796, 494, 487, 484,
+ 0, 0, 0, 485, 501, 0, 491, 495, 494, 493,
+ 496, 495, 0, 0, 501, 500, 549, 115, 0, 500,
+ 512, 0, 513, 515, 533, 0, 530, 0, 0, 0,
+ 0, 543, 542, 543, 0, 0, 530, 533, 0, 0,
+ 540, 0, 0, 549, 541, 548, 0, 0, 542, 537,
+ 562, 547, 564, 574, 561, 562, 562, 588, 568, 574,
+ 582, 572, 0, 580, 0, 0, 581, 584, 0, 0,
+
+ 586, 586, 587, 602, 796, 603, 592, 0, 593, 597,
+ 600, 615, 609, 617, 0, 621, 608, 649, 632, 618,
+ 0, 624, 628, 655, 113, 633, 633, 635, 636, 668,
+ 649, 640, 675, 679, 653, 663, 659, 659, 665, 692,
+ 667, 698, 672, 700, 111, 673, 0, 712, 79, 0,
+ 796, 775, 79, 777, 779, 783, 785, 790
} ;
-static const flex_int16_t yy_def[349] =
+static const flex_int16_t yy_def[359] =
{ 0,
- 341, 1, 341, 341, 341, 341, 341, 342, 343, 341,
- 341, 341, 341, 341, 341, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 341, 344, 341, 341, 342, 341,
- 345, 341, 341, 341, 341, 341, 341, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 341,
-
- 341, 344, 345, 341, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 341, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 341, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 346,
- 344, 344, 344, 344, 341, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
-
- 344, 344, 344, 344, 344, 344, 344, 344, 341, 344,
- 344, 344, 344, 344, 344, 344, 347, 344, 344, 344,
- 341, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 344, 344, 344, 344,
- 341, 344, 344, 344, 344, 341, 344, 344, 344, 344,
- 344, 347, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 344, 344, 341, 341, 341, 344,
- 344, 341, 344, 344, 344, 344, 344, 344, 344, 344,
- 344, 341, 341, 341, 341, 344, 344, 344, 344, 344,
- 344, 344, 344, 344, 341, 341, 341, 341, 344, 344,
-
- 344, 344, 341, 341, 341, 341, 344, 344, 344, 341,
- 341, 341, 341, 344, 344, 341, 341, 341, 341, 341,
- 344, 341, 341, 341, 341, 341, 344, 341, 341, 344,
- 341, 341, 344, 341, 344, 348, 344, 348, 348, 344,
- 0, 341, 341, 341, 341, 341, 341, 341
+ 351, 1, 351, 351, 351, 351, 351, 352, 353, 351,
+ 351, 351, 351, 351, 351, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 351, 351, 354, 351, 351, 351,
+ 351, 352, 351, 355, 351, 351, 351, 351, 351, 351,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+
+ 354, 354, 351, 351, 351, 354, 355, 351, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 351, 351, 354, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 351, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 356, 351, 354, 354, 354, 354,
+ 351, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 351, 354, 354, 354, 354, 354,
+ 354, 354, 357, 354, 354, 354, 351, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 354, 354, 354, 351, 351, 354, 354,
+ 354, 354, 351, 354, 354, 354, 354, 354, 357, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
+ 354, 354, 354, 351, 351, 351, 354, 354, 351, 354,
+ 354, 354, 354, 354, 354, 354, 354, 354, 351, 351,
+ 351, 351, 354, 354, 354, 354, 354, 354, 354, 354,
+
+ 354, 351, 351, 351, 351, 354, 354, 354, 354, 351,
+ 351, 351, 351, 354, 354, 354, 351, 351, 351, 351,
+ 354, 354, 351, 351, 351, 351, 351, 351, 354, 351,
+ 351, 351, 351, 351, 354, 351, 351, 354, 351, 351,
+ 354, 351, 354, 358, 351, 354, 358, 358, 358, 354,
+ 0, 351, 351, 351, 351, 351, 351, 351
} ;
-static const flex_int16_t yy_nxt[768] =
+static const flex_int16_t yy_nxt[860] =
{ 0,
- 4, 5, 6, 7, 8, 9, 10, 11, 4, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 25, 25, 34, 25, 25, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 25, 25, 34, 25, 25,
- 35, 37, 38, 38, 43, 44, 45, 46, 49, 52,
- 56, 53, 50, 41, 57, 62, 66, 36, 54, 339,
- 51, 86, 339, 63, 58, 55, 59, 64, 60, 336,
- 65, 106, 49, 52, 56, 53, 50, 61, 57, 62,
-
- 66, 36, 54, 51, 67, 86, 63, 58, 55, 59,
- 64, 60, 68, 65, 106, 70, 317, 69, 73, 317,
- 61, 76, 74, 71, 37, 38, 38, 105, 67, 72,
- 317, 77, 75, 79, 107, 68, 78, 43, 44, 70,
- 69, 80, 73, 81, 82, 76, 74, 71, 83, 108,
- 317, 105, 72, 84, 77, 75, 85, 79, 107, 78,
- 109, 317, 110, 241, 80, 116, 81, 82, 111, 170,
- 170, 83, 112, 108, 93, 117, 84, 94, 95, 85,
- 87, 104, 88, 109, 96, 89, 110, 97, 98, 116,
- 113, 111, 90, 91, 99, 112, 92, 121, 93, 117,
-
- 114, 94, 95, 118, 87, 115, 88, 96, 119, 89,
- 102, 97, 98, 113, 125, 90, 91, 99, 62, 92,
- 100, 38, 38, 114, 120, 122, 63, 118, 115, 123,
- 124, 126, 119, 127, 102, 128, 129, 101, 125, 130,
- 132, 137, 62, 134, 131, 135, 136, 120, 122, 63,
- 138, 104, 123, 124, 126, 141, 127, 133, 128, 142,
- 129, 101, 130, 139, 132, 137, 134, 131, 135, 136,
- 145, 146, 143, 140, 138, 144, 147, 148, 141, 149,
- 133, 150, 142, 151, 40, 152, 153, 139, 157, 158,
- 154, 47, 155, 145, 146, 143, 140, 156, 144, 147,
-
- 148, 159, 161, 149, 150, 160, 162, 151, 152, 163,
- 153, 157, 164, 158, 154, 155, 100, 38, 38, 165,
- 156, 166, 167, 42, 168, 159, 161, 169, 160, 162,
- 171, 172, 163, 101, 174, 164, 173, 121, 176, 40,
- 177, 180, 165, 181, 182, 166, 167, 168, 183, 186,
- 178, 169, 184, 171, 172, 185, 187, 101, 174, 173,
- 179, 188, 176, 177, 180, 189, 181, 175, 182, 190,
- 191, 192, 183, 186, 178, 184, 193, 194, 185, 195,
- 187, 196, 197, 179, 188, 198, 199, 341, 200, 189,
- 175, 201, 190, 191, 192, 202, 203, 341, 204, 193,
-
- 205, 194, 206, 195, 196, 197, 207, 208, 198, 209,
- 199, 200, 210, 211, 201, 212, 213, 214, 202, 215,
- 203, 204, 216, 205, 218, 219, 206, 220, 341, 221,
- 207, 208, 222, 209, 223, 210, 224, 211, 212, 213,
- 214, 225, 226, 215, 227, 216, 228, 230, 218, 219,
- 229, 220, 221, 231, 232, 222, 233, 234, 223, 224,
- 235, 236, 237, 238, 225, 226, 239, 227, 240, 242,
- 228, 230, 243, 229, 244, 341, 245, 231, 232, 246,
- 233, 234, 247, 235, 236, 237, 248, 238, 249, 239,
- 250, 240, 251, 242, 253, 243, 254, 258, 244, 245,
-
- 255, 256, 246, 257, 259, 247, 260, 261, 262, 248,
- 263, 264, 249, 265, 250, 266, 251, 253, 241, 274,
- 254, 258, 270, 255, 256, 276, 257, 259, 271, 260,
- 261, 262, 272, 263, 264, 273, 275, 265, 266, 279,
- 267, 280, 268, 274, 277, 270, 278, 341, 269, 276,
- 281, 271, 282, 341, 283, 272, 284, 287, 273, 275,
- 285, 286, 279, 267, 280, 268, 288, 289, 277, 290,
- 278, 269, 291, 281, 292, 293, 282, 283, 294, 306,
- 284, 287, 295, 285, 286, 296, 297, 298, 299, 288,
- 300, 289, 301, 290, 302, 291, 303, 292, 293, 305,
-
- 307, 312, 294, 306, 308, 295, 309, 310, 296, 297,
- 298, 299, 304, 300, 311, 301, 313, 302, 314, 315,
- 303, 316, 305, 320, 307, 312, 321, 308, 322, 309,
- 310, 318, 317, 324, 325, 304, 326, 311, 327, 313,
- 328, 330, 314, 315, 316, 329, 320, 319, 331, 321,
- 332, 322, 333, 334, 335, 318, 324, 325, 337, 326,
- 340, 327, 323, 341, 328, 330, 341, 341, 329, 341,
- 319, 341, 331, 332, 341, 333, 334, 335, 341, 341,
- 341, 337, 341, 340, 341, 323, 39, 39, 341, 39,
- 39, 48, 48, 103, 103, 217, 341, 341, 217, 252,
-
- 252, 338, 338, 341, 338, 338, 3, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341
+ 4, 5, 6, 7, 5, 8, 9, 10, 11, 4,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 25, 26, 27, 28, 29, 30,
+ 31, 32, 33, 25, 25, 34, 25, 25, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 25, 25, 34, 25,
+ 25, 4, 35, 36, 46, 47, 36, 39, 40, 40,
+ 39, 48, 49, 52, 55, 56, 59, 53, 69, 65,
+ 60, 37, 57, 44, 62, 54, 63, 66, 67, 58,
+ 61, 68, 89, 46, 47, 64, 109, 52, 55, 56,
+
+ 59, 53, 69, 65, 60, 37, 57, 62, 54, 63,
+ 66, 67, 58, 61, 68, 73, 89, 70, 64, 111,
+ 109, 110, 76, 74, 38, 71, 77, 79, 41, 75,
+ 72, 103, 40, 40, 103, 113, 78, 80, 112, 73,
+ 348, 70, 81, 111, 110, 114, 76, 74, 71, 104,
+ 77, 79, 75, 72, 100, 101, 82, 120, 113, 78,
+ 80, 102, 112, 86, 83, 81, 84, 85, 87, 114,
+ 115, 88, 344, 104, 324, 116, 247, 121, 100, 101,
+ 82, 120, 117, 118, 102, 125, 86, 83, 125, 84,
+ 85, 87, 105, 115, 88, 90, 106, 91, 116, 96,
+
+ 92, 121, 97, 98, 65, 117, 118, 93, 94, 99,
+ 119, 95, 66, 39, 40, 40, 39, 122, 123, 90,
+ 106, 91, 124, 96, 92, 127, 97, 98, 65, 130,
+ 93, 94, 99, 119, 95, 66, 128, 129, 131, 132,
+ 133, 122, 123, 134, 142, 124, 126, 135, 127, 137,
+ 175, 125, 136, 130, 139, 140, 141, 143, 108, 128,
+ 129, 131, 132, 133, 146, 147, 138, 134, 142, 150,
+ 135, 151, 144, 137, 41, 136, 152, 139, 140, 141,
+ 148, 143, 145, 149, 153, 154, 156, 146, 147, 138,
+ 155, 157, 150, 158, 151, 160, 144, 159, 163, 152,
+
+ 161, 162, 103, 148, 108, 145, 149, 153, 164, 154,
+ 156, 165, 166, 155, 157, 167, 168, 158, 160, 169,
+ 171, 159, 163, 161, 162, 103, 40, 40, 103, 170,
+ 172, 174, 164, 173, 165, 177, 166, 175, 167, 168,
+ 175, 178, 169, 104, 171, 179, 180, 125, 182, 184,
+ 125, 183, 170, 186, 172, 174, 173, 187, 177, 185,
+ 188, 189, 43, 192, 178, 190, 191, 104, 179, 193,
+ 180, 194, 182, 184, 183, 195, 186, 196, 181, 197,
+ 187, 198, 185, 199, 188, 189, 105, 192, 190, 191,
+ 200, 201, 205, 193, 194, 202, 203, 204, 176, 195,
+
+ 196, 181, 197, 206, 198, 207, 199, 208, 126, 209,
+ 39, 210, 211, 212, 200, 201, 205, 213, 202, 203,
+ 204, 214, 215, 103, 216, 217, 206, 218, 207, 219,
+ 208, 220, 221, 209, 210, 211, 222, 212, 224, 175,
+ 225, 213, 175, 226, 229, 214, 215, 216, 227, 217,
+ 218, 228, 219, 230, 220, 231, 221, 232, 233, 222,
+ 234, 236, 224, 235, 225, 237, 238, 226, 229, 239,
+ 240, 227, 241, 242, 228, 243, 230, 244, 231, 245,
+ 232, 233, 246, 249, 234, 236, 235, 250, 247, 237,
+ 238, 247, 251, 239, 240, 241, 242, 252, 243, 253,
+
+ 176, 244, 245, 254, 255, 246, 256, 249, 257, 258,
+ 250, 260, 261, 39, 262, 263, 251, 264, 265, 272,
+ 252, 266, 253, 267, 268, 269, 254, 255, 270, 271,
+ 256, 273, 257, 258, 260, 277, 261, 262, 263, 278,
+ 264, 279, 265, 272, 266, 280, 267, 268, 269, 248,
+ 247, 270, 271, 247, 273, 281, 50, 282, 277, 283,
+ 284, 285, 278, 286, 279, 287, 288, 289, 280, 290,
+ 291, 45, 292, 274, 293, 275, 294, 43, 295, 281,
+ 282, 276, 296, 283, 284, 285, 286, 298, 287, 288,
+ 297, 289, 290, 299, 291, 292, 274, 293, 275, 300,
+
+ 294, 295, 301, 310, 276, 302, 296, 303, 304, 305,
+ 298, 248, 306, 307, 297, 308, 299, 309, 312, 311,
+ 313, 314, 300, 315, 316, 317, 301, 310, 302, 318,
+ 303, 304, 305, 319, 321, 306, 307, 320, 308, 322,
+ 309, 312, 311, 323, 313, 314, 315, 316, 317, 326,
+ 324, 328, 318, 324, 329, 330, 324, 319, 321, 324,
+ 320, 332, 333, 322, 351, 327, 323, 334, 335, 324,
+ 336, 338, 324, 326, 328, 337, 324, 329, 330, 324,
+ 324, 339, 351, 324, 332, 333, 340, 331, 327, 341,
+ 334, 335, 342, 324, 336, 338, 324, 343, 337, 344,
+
+ 346, 348, 344, 350, 348, 339, 351, 351, 351, 340,
+ 331, 325, 341, 348, 351, 342, 348, 325, 351, 351,
+ 343, 351, 351, 346, 351, 351, 350, 351, 351, 351,
+ 325, 351, 351, 351, 351, 351, 351, 325, 351, 351,
+ 351, 325, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 325, 351, 351, 351, 351, 351,
+ 345, 351, 349, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 349, 42, 42, 351, 42, 42,
+ 51, 51, 107, 107, 223, 351, 351, 223, 259, 259,
+ 347, 347, 351, 347, 347, 3, 351, 351, 351, 351,
+
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351
} ;
-static const flex_int16_t yy_chk[768] =
+static const flex_int16_t yy_chk[860] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -628,84 +642,94 @@ static const flex_int16_t yy_chk[768] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 5, 5, 5, 12, 12, 13, 13, 16, 17,
- 19, 18, 16, 343, 19, 21, 23, 2, 18, 339,
- 16, 31, 336, 21, 19, 18, 20, 22, 20, 334,
- 22, 50, 16, 17, 19, 18, 16, 20, 19, 21,
-
- 23, 2, 18, 16, 24, 31, 21, 19, 18, 20,
- 22, 20, 24, 22, 50, 26, 332, 24, 27, 326,
- 20, 28, 27, 26, 37, 37, 37, 49, 24, 26,
- 325, 28, 27, 29, 51, 24, 28, 44, 44, 26,
- 24, 29, 27, 29, 29, 28, 27, 26, 30, 52,
- 322, 49, 26, 30, 28, 27, 30, 29, 51, 28,
- 53, 311, 54, 204, 29, 60, 29, 29, 55, 170,
- 116, 30, 56, 52, 33, 61, 30, 33, 33, 30,
- 32, 104, 32, 53, 33, 32, 54, 34, 34, 60,
- 57, 55, 32, 32, 34, 56, 32, 65, 33, 61,
-
- 58, 33, 33, 62, 32, 59, 32, 33, 63, 32,
- 36, 34, 34, 57, 69, 32, 32, 34, 36, 32,
- 35, 35, 35, 58, 64, 66, 36, 62, 59, 68,
- 68, 70, 63, 71, 36, 72, 73, 35, 69, 74,
- 75, 81, 36, 76, 74, 77, 78, 64, 66, 36,
- 83, 43, 68, 68, 70, 85, 71, 75, 72, 86,
- 73, 35, 74, 84, 75, 81, 76, 74, 77, 78,
- 88, 89, 87, 84, 83, 87, 90, 91, 85, 92,
- 75, 93, 86, 94, 39, 95, 97, 84, 99, 101,
- 97, 15, 98, 88, 89, 87, 84, 98, 87, 90,
-
- 91, 102, 106, 92, 93, 105, 108, 94, 95, 109,
- 97, 99, 110, 101, 97, 98, 100, 100, 100, 111,
- 98, 112, 113, 11, 114, 102, 106, 115, 105, 108,
- 117, 118, 109, 100, 120, 110, 119, 121, 122, 8,
- 123, 125, 111, 126, 127, 112, 113, 114, 128, 131,
- 124, 115, 129, 117, 118, 130, 133, 100, 120, 119,
- 124, 134, 122, 123, 125, 136, 126, 121, 127, 137,
- 138, 139, 128, 131, 124, 129, 140, 142, 130, 143,
- 133, 144, 146, 124, 134, 147, 148, 3, 149, 136,
- 121, 150, 137, 138, 139, 151, 152, 0, 153, 140,
-
- 154, 142, 155, 143, 144, 146, 156, 157, 147, 158,
- 148, 149, 159, 160, 150, 161, 162, 164, 151, 165,
- 152, 153, 167, 154, 172, 173, 155, 174, 0, 175,
- 156, 157, 176, 158, 177, 159, 178, 160, 161, 162,
- 164, 180, 182, 165, 184, 167, 185, 187, 172, 173,
- 186, 174, 175, 189, 192, 176, 193, 194, 177, 178,
- 195, 196, 197, 198, 180, 182, 199, 184, 200, 205,
- 185, 187, 206, 186, 207, 0, 208, 189, 192, 209,
- 193, 194, 210, 195, 196, 197, 211, 198, 213, 199,
- 215, 200, 216, 205, 220, 206, 222, 229, 207, 208,
-
- 223, 224, 209, 228, 231, 210, 232, 233, 234, 211,
- 235, 236, 213, 239, 215, 240, 216, 220, 241, 248,
- 222, 229, 243, 223, 224, 255, 228, 231, 244, 232,
- 233, 234, 246, 235, 236, 247, 250, 239, 240, 260,
- 241, 261, 241, 248, 256, 243, 257, 0, 241, 255,
- 264, 244, 267, 0, 268, 246, 269, 274, 247, 250,
- 272, 273, 260, 241, 261, 241, 275, 276, 256, 277,
- 257, 241, 278, 264, 279, 280, 267, 268, 281, 297,
- 269, 274, 282, 272, 273, 283, 284, 285, 287, 275,
- 290, 276, 291, 277, 294, 278, 295, 279, 280, 296,
-
- 299, 305, 281, 297, 300, 282, 302, 303, 283, 284,
- 285, 287, 295, 290, 304, 291, 306, 294, 307, 309,
- 295, 310, 296, 313, 299, 305, 315, 300, 316, 302,
- 303, 312, 317, 318, 319, 295, 320, 304, 321, 306,
- 323, 327, 307, 309, 310, 324, 313, 312, 328, 315,
- 329, 316, 330, 331, 333, 312, 318, 319, 335, 320,
- 337, 321, 317, 0, 323, 327, 0, 0, 324, 0,
- 312, 0, 328, 329, 0, 330, 331, 333, 0, 0,
- 0, 335, 0, 337, 0, 317, 342, 342, 0, 342,
- 342, 344, 344, 345, 345, 346, 0, 0, 346, 347,
-
- 347, 348, 348, 0, 348, 348, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341, 341, 341, 341,
- 341, 341, 341, 341, 341, 341, 341
+ 1, 1, 1, 2, 12, 12, 2, 5, 5, 5,
+ 5, 13, 13, 16, 17, 18, 19, 16, 23, 21,
+ 19, 2, 18, 353, 20, 16, 20, 21, 22, 18,
+ 19, 22, 31, 47, 47, 20, 52, 16, 17, 18,
+
+ 19, 16, 23, 21, 19, 2, 18, 20, 16, 20,
+ 21, 22, 18, 19, 22, 26, 31, 24, 20, 54,
+ 52, 53, 27, 26, 2, 24, 27, 28, 5, 26,
+ 24, 36, 36, 36, 36, 56, 27, 28, 55, 26,
+ 349, 24, 28, 54, 53, 57, 27, 26, 24, 36,
+ 27, 28, 26, 24, 34, 34, 29, 63, 56, 27,
+ 28, 34, 55, 30, 29, 28, 29, 29, 30, 57,
+ 58, 30, 345, 36, 325, 59, 248, 64, 34, 34,
+ 29, 63, 60, 61, 34, 68, 30, 29, 68, 29,
+ 29, 30, 36, 58, 30, 32, 37, 32, 59, 33,
+
+ 32, 64, 33, 33, 37, 60, 61, 32, 32, 33,
+ 62, 32, 37, 39, 39, 39, 39, 65, 66, 32,
+ 37, 32, 67, 33, 32, 69, 33, 33, 37, 72,
+ 32, 32, 33, 62, 32, 37, 71, 71, 73, 74,
+ 75, 65, 66, 76, 84, 67, 68, 77, 69, 78,
+ 176, 126, 77, 72, 79, 80, 81, 86, 108, 71,
+ 71, 73, 74, 75, 88, 89, 78, 76, 84, 91,
+ 77, 92, 87, 78, 39, 77, 93, 79, 80, 81,
+ 90, 86, 87, 90, 94, 95, 97, 88, 89, 78,
+ 96, 98, 91, 100, 92, 101, 87, 100, 104, 93,
+
+ 101, 102, 105, 90, 46, 87, 90, 94, 106, 95,
+ 97, 109, 110, 96, 98, 112, 113, 100, 101, 114,
+ 116, 100, 104, 101, 102, 103, 103, 103, 103, 115,
+ 117, 119, 106, 118, 109, 121, 110, 120, 112, 113,
+ 120, 122, 114, 103, 116, 123, 124, 125, 127, 129,
+ 125, 128, 115, 130, 117, 119, 118, 131, 121, 129,
+ 132, 133, 42, 136, 122, 134, 135, 103, 123, 138,
+ 124, 139, 127, 129, 128, 141, 130, 142, 125, 143,
+ 131, 144, 129, 145, 132, 133, 103, 136, 134, 135,
+ 147, 148, 153, 138, 139, 149, 151, 152, 120, 141,
+
+ 142, 125, 143, 154, 144, 155, 145, 156, 125, 157,
+ 41, 158, 159, 160, 147, 148, 153, 161, 149, 151,
+ 152, 162, 163, 38, 164, 165, 154, 166, 155, 167,
+ 156, 169, 170, 157, 158, 159, 172, 160, 178, 175,
+ 179, 161, 175, 180, 183, 162, 163, 164, 181, 165,
+ 166, 182, 167, 184, 169, 186, 170, 188, 190, 172,
+ 191, 193, 178, 192, 179, 195, 198, 180, 183, 199,
+ 200, 181, 201, 202, 182, 203, 184, 204, 186, 205,
+ 188, 190, 206, 211, 191, 193, 192, 212, 210, 195,
+ 198, 210, 213, 199, 200, 201, 202, 214, 203, 215,
+
+ 175, 204, 205, 216, 217, 206, 219, 211, 221, 222,
+ 212, 226, 228, 35, 229, 230, 213, 234, 235, 245,
+ 214, 237, 215, 238, 239, 240, 216, 217, 241, 242,
+ 219, 246, 221, 222, 226, 250, 228, 229, 230, 251,
+ 234, 253, 235, 245, 237, 254, 238, 239, 240, 210,
+ 247, 241, 242, 247, 246, 255, 15, 257, 250, 262,
+ 263, 264, 251, 267, 253, 268, 271, 274, 254, 275,
+ 276, 11, 279, 247, 280, 247, 281, 8, 282, 255,
+ 257, 247, 283, 262, 263, 264, 267, 285, 268, 271,
+ 284, 274, 275, 286, 276, 279, 247, 280, 247, 287,
+
+ 281, 282, 288, 302, 247, 289, 283, 290, 291, 292,
+ 285, 247, 294, 297, 284, 298, 286, 301, 303, 302,
+ 304, 306, 287, 307, 309, 310, 288, 302, 289, 311,
+ 290, 291, 292, 312, 314, 294, 297, 313, 298, 316,
+ 301, 303, 302, 317, 304, 306, 307, 309, 310, 319,
+ 318, 320, 311, 318, 322, 323, 324, 312, 314, 324,
+ 313, 326, 327, 316, 3, 319, 317, 328, 329, 330,
+ 331, 335, 330, 319, 320, 332, 333, 322, 323, 333,
+ 334, 336, 0, 334, 326, 327, 337, 324, 319, 338,
+ 328, 329, 339, 340, 331, 335, 340, 341, 332, 342,
+
+ 343, 344, 342, 346, 344, 336, 0, 0, 0, 337,
+ 324, 318, 338, 348, 0, 339, 348, 324, 0, 0,
+ 341, 0, 0, 343, 0, 0, 346, 0, 0, 0,
+ 330, 0, 0, 0, 0, 0, 0, 333, 0, 0,
+ 0, 334, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 340, 0, 0, 0, 0, 0,
+ 342, 0, 344, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 348, 352, 352, 0, 352, 352,
+ 354, 354, 355, 355, 356, 0, 0, 356, 357, 357,
+ 358, 358, 0, 358, 358, 351, 351, 351, 351, 351,
+
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351, 351,
+ 351, 351, 351, 351, 351, 351, 351, 351, 351
} ;
static yy_state_type yy_last_accepting_state;
@@ -786,12 +810,13 @@ static void count() {
char *p = yytext;
while (*p) {
- if (*p == '\n' || *p == '\xC2') {
+ if (*p == '\n') {
+ compiler->_linenumber++;
+ compiler->_colnumber = 0;
+ pushLine(compiler->_bytenumber + 1);
+ } else if (*p == '\xC2' && *(p + 1) == '\xAC') { // continuation
compiler->_linenumber++;
compiler->_colnumber = 0;
-
- if (*p == '\n')
- pushLine(compiler->_bytenumber + 1);
} else {
compiler->_colnumber++;
}
@@ -804,8 +829,8 @@ static Common::String *cleanupString(const char *s) {
Common::String *res = new Common::String;
while (*s) {
- if (*s == '\xC2') {
- s++;
+ if (*s == '\xC2' && *(s + 1) == '\xAC') { // continuation
+ s += 2;
*res += ' ';
continue;
}
@@ -816,8 +841,53 @@ static Common::String *cleanupString(const char *s) {
return res;
}
-#line 819 "engines/director/lingo/lingo-lex.cpp"
-#line 820 "engines/director/lingo/lingo-lex.cpp"
+static void skipWhitespace(const char **ptr) {
+ while (true) {
+ if (**ptr == ' ' || **ptr == '\t') {
+ *ptr += 1;
+ } else if (**ptr == '\xC2' && *(*ptr + 1) == '\xAC') { // continuation
+ *ptr += 2;
+ } else {
+ break;
+ }
+ }
+}
+
+static Common::String *readUntilWhitespace(const char **ptr) {
+ Common::String *res = new Common::String;
+
+ while (true) {
+ if (**ptr == ' ' || **ptr == '\t') {
+ break;
+ }
+ if (**ptr == '\xC2' && *(*ptr + 1) == '\xAC') { // continuation
+ break;
+ }
+ *res += **ptr;
+ *ptr += 1;
+ }
+
+ return res;
+}
+
+static Common::String *readUntilNull(const char **ptr) {
+ Common::String *res = new Common::String;
+
+ while (**ptr) {
+ if (**ptr == '\xC2' && *(*ptr + 1) == '\xAC') { // continuation
+ *ptr += 2;
+ *res += " "; // replace with space
+ continue;
+ }
+ *res += **ptr;
+ *ptr += 1;
+ }
+
+ return res;
+}
+
+#line 889 "engines/director/lingo/lingo-lex.cpp"
+#line 890 "engines/director/lingo/lingo-lex.cpp"
#define INITIAL 0
@@ -1035,10 +1105,10 @@ YY_DECL
}
{
-#line 114 "engines/director/lingo/lingo-lex.l"
+#line 160 "engines/director/lingo/lingo-lex.l"
-#line 1041 "engines/director/lingo/lingo-lex.cpp"
+#line 1111 "engines/director/lingo/lingo-lex.cpp"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1066,13 +1136,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 342 )
+ if ( yy_current_state >= 352 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 341 );
+ while ( yy_current_state != 351 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -1094,93 +1164,92 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 116 "engines/director/lingo/lingo-lex.l"
+#line 162 "engines/director/lingo/lingo-lex.l"
{ count(); }
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 118 "engines/director/lingo/lingo-lex.l"
+#line 164 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.s = new Common::String(yytext + 1); return tSYMBOL; } // D3, skip '#'
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 120 "engines/director/lingo/lingo-lex.l"
+#line 166 "engines/director/lingo/lingo-lex.l"
{ count(); return tABBREVIATED; }
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 121 "engines/director/lingo/lingo-lex.l"
+#line 167 "engines/director/lingo/lingo-lex.l"
{ count(); return tABBREV; }
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 122 "engines/director/lingo/lingo-lex.l"
+#line 168 "engines/director/lingo/lingo-lex.l"
{ count(); return tABBR; }
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 123 "engines/director/lingo/lingo-lex.l"
+#line 169 "engines/director/lingo/lingo-lex.l"
{ count(); return tAFTER; } // D3
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 124 "engines/director/lingo/lingo-lex.l"
+#line 170 "engines/director/lingo/lingo-lex.l"
{ count(); return tAND; }
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 125 "engines/director/lingo/lingo-lex.l"
+#line 171 "engines/director/lingo/lingo-lex.l"
{ count(); return tBEFORE; } // D3
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 126 "engines/director/lingo/lingo-lex.l"
+#line 172 "engines/director/lingo/lingo-lex.l"
{ count(); return tCAST; }
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 127 "engines/director/lingo/lingo-lex.l"
+#line 173 "engines/director/lingo/lingo-lex.l"
{ count(); return tCHAR; } // D3
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 128 "engines/director/lingo/lingo-lex.l"
+#line 174 "engines/director/lingo/lingo-lex.l"
{ count(); return tCHARS; }
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 129 "engines/director/lingo/lingo-lex.l"
+#line 175 "engines/director/lingo/lingo-lex.l"
{ count(); return tCONTAINS; }
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 130 "engines/director/lingo/lingo-lex.l"
+#line 176 "engines/director/lingo/lingo-lex.l"
{ count(); return tDATE; }
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 131 "engines/director/lingo/lingo-lex.l"
+#line 177 "engines/director/lingo/lingo-lex.l"
{ count(); return tDELETE; }
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 132 "engines/director/lingo/lingo-lex.l"
+#line 178 "engines/director/lingo/lingo-lex.l"
{ count(); return tDOWN; }
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 133 "engines/director/lingo/lingo-lex.l"
+#line 179 "engines/director/lingo/lingo-lex.l"
{ count(); return tELSE; }
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 134 "engines/director/lingo/lingo-lex.l"
+#line 180 "engines/director/lingo/lingo-lex.l"
{
count();
const char *ptr = &yytext[3]; // Skip 'end '
- while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
- ptr++;
+ skipWhitespace(&ptr);
if (!scumm_stricmp(ptr, "if"))
return tENDIF;
@@ -1196,333 +1265,329 @@ YY_RULE_SETUP
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 152 "engines/director/lingo/lingo-lex.l"
+#line 197 "engines/director/lingo/lingo-lex.l"
{ count(); return tEXIT; }
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 153 "engines/director/lingo/lingo-lex.l"
+#line 198 "engines/director/lingo/lingo-lex.l"
{ count(); return tFACTORY; }
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 154 "engines/director/lingo/lingo-lex.l"
+#line 199 "engines/director/lingo/lingo-lex.l"
{ count(); return tFIELD; }
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 155 "engines/director/lingo/lingo-lex.l"
+#line 200 "engines/director/lingo/lingo-lex.l"
{ count(); return tFRAME; }
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 156 "engines/director/lingo/lingo-lex.l"
+#line 201 "engines/director/lingo/lingo-lex.l"
{ count(); return tGLOBAL; }
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 157 "engines/director/lingo/lingo-lex.l"
+#line 202 "engines/director/lingo/lingo-lex.l"
{ count(); return tGO; }
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 158 "engines/director/lingo/lingo-lex.l"
+#line 203 "engines/director/lingo/lingo-lex.l"
{ count(); return tHILITE; }
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 159 "engines/director/lingo/lingo-lex.l"
+#line 204 "engines/director/lingo/lingo-lex.l"
{ count(); return tIF; }
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 160 "engines/director/lingo/lingo-lex.l"
+#line 205 "engines/director/lingo/lingo-lex.l"
{ count(); return tINSTANCE; }
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 161 "engines/director/lingo/lingo-lex.l"
+#line 206 "engines/director/lingo/lingo-lex.l"
{ count(); return tINTERSECTS;}
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 162 "engines/director/lingo/lingo-lex.l"
+#line 207 "engines/director/lingo/lingo-lex.l"
{ count(); return tINTO; }
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 163 "engines/director/lingo/lingo-lex.l"
+#line 208 "engines/director/lingo/lingo-lex.l"
{ count(); return tIN; }
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 164 "engines/director/lingo/lingo-lex.l"
+#line 209 "engines/director/lingo/lingo-lex.l"
{ count(); return tITEM; }
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 165 "engines/director/lingo/lingo-lex.l"
+#line 210 "engines/director/lingo/lingo-lex.l"
{ count(); return tITEMS; }
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 166 "engines/director/lingo/lingo-lex.l"
+#line 211 "engines/director/lingo/lingo-lex.l"
{ count(); return tLAST; }
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 167 "engines/director/lingo/lingo-lex.l"
+#line 212 "engines/director/lingo/lingo-lex.l"
{ count(); return tLINE; }
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 168 "engines/director/lingo/lingo-lex.l"
+#line 213 "engines/director/lingo/lingo-lex.l"
{ count(); return tLINES; }
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 169 "engines/director/lingo/lingo-lex.l"
+#line 214 "engines/director/lingo/lingo-lex.l"
{ count(); return tLONG; }
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 170 "engines/director/lingo/lingo-lex.l"
+#line 215 "engines/director/lingo/lingo-lex.l"
{ count(); return tMACRO; }
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 171 "engines/director/lingo/lingo-lex.l"
+#line 216 "engines/director/lingo/lingo-lex.l"
{ count(); return tMENU; }
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 172 "engines/director/lingo/lingo-lex.l"
+#line 217 "engines/director/lingo/lingo-lex.l"
{ count(); return tMENUITEM;}
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 173 "engines/director/lingo/lingo-lex.l"
+#line 218 "engines/director/lingo/lingo-lex.l"
{ count(); return tMENUITEMS; }
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 174 "engines/director/lingo/lingo-lex.l"
+#line 219 "engines/director/lingo/lingo-lex.l"
{ count(); return tMETHOD; }
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 175 "engines/director/lingo/lingo-lex.l"
+#line 220 "engines/director/lingo/lingo-lex.l"
{ count(); return tMOD;}
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 176 "engines/director/lingo/lingo-lex.l"
+#line 221 "engines/director/lingo/lingo-lex.l"
{ count(); return tMOVIE; }
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 177 "engines/director/lingo/lingo-lex.l"
+#line 222 "engines/director/lingo/lingo-lex.l"
{ count(); return tNEXT; }
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 178 "engines/director/lingo/lingo-lex.l"
+#line 223 "engines/director/lingo/lingo-lex.l"
{ count(); return tNOT; }
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 179 "engines/director/lingo/lingo-lex.l"
+#line 224 "engines/director/lingo/lingo-lex.l"
{ count(); return tNUMBER; }
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 180 "engines/director/lingo/lingo-lex.l"
+#line 225 "engines/director/lingo/lingo-lex.l"
{ count(); return tOF; }
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 181 "engines/director/lingo/lingo-lex.l"
+#line 226 "engines/director/lingo/lingo-lex.l"
{ count(); return tON; } // D3
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 182 "engines/director/lingo/lingo-lex.l"
+#line 227 "engines/director/lingo/lingo-lex.l"
{ count(); return tOPEN; }
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 183 "engines/director/lingo/lingo-lex.l"
+#line 228 "engines/director/lingo/lingo-lex.l"
{ count(); return tOR; }
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 184 "engines/director/lingo/lingo-lex.l"
+#line 229 "engines/director/lingo/lingo-lex.l"
{ count(); return tPLAY; }
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 185 "engines/director/lingo/lingo-lex.l"
+#line 230 "engines/director/lingo/lingo-lex.l"
{ count(); return tPREVIOUS; }
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 186 "engines/director/lingo/lingo-lex.l"
+#line 231 "engines/director/lingo/lingo-lex.l"
{ count(); return tPROPERTY; } // D4
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 187 "engines/director/lingo/lingo-lex.l"
+#line 232 "engines/director/lingo/lingo-lex.l"
{ count(); return tPUT; }
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 188 "engines/director/lingo/lingo-lex.l"
+#line 233 "engines/director/lingo/lingo-lex.l"
{ count(); return tREPEAT; }
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 189 "engines/director/lingo/lingo-lex.l"
+#line 234 "engines/director/lingo/lingo-lex.l"
{ count(); return tSCRIPT; }
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 190 "engines/director/lingo/lingo-lex.l"
+#line 235 "engines/director/lingo/lingo-lex.l"
{ count(); return tASSERTERROR; }
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 191 "engines/director/lingo/lingo-lex.l"
+#line 236 "engines/director/lingo/lingo-lex.l"
{ count(); return tSET; }
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 192 "engines/director/lingo/lingo-lex.l"
+#line 237 "engines/director/lingo/lingo-lex.l"
{ count(); return tSHORT; }
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 193 "engines/director/lingo/lingo-lex.l"
+#line 238 "engines/director/lingo/lingo-lex.l"
{ count(); return tSOUND; }
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 194 "engines/director/lingo/lingo-lex.l"
+#line 239 "engines/director/lingo/lingo-lex.l"
{ count(); return tSPRITE; }
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 195 "engines/director/lingo/lingo-lex.l"
+#line 240 "engines/director/lingo/lingo-lex.l"
{ count(); return tSTARTS; }
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 196 "engines/director/lingo/lingo-lex.l"
+#line 241 "engines/director/lingo/lingo-lex.l"
{ count(); return tTELL; }
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 197 "engines/director/lingo/lingo-lex.l"
+#line 242 "engines/director/lingo/lingo-lex.l"
{ count(); return tTHE; }
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 198 "engines/director/lingo/lingo-lex.l"
+#line 243 "engines/director/lingo/lingo-lex.l"
{ count(); return tTHEN; }
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 199 "engines/director/lingo/lingo-lex.l"
+#line 244 "engines/director/lingo/lingo-lex.l"
{ count(); return tTIME; }
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 200 "engines/director/lingo/lingo-lex.l"
+#line 245 "engines/director/lingo/lingo-lex.l"
{ count(); return tTO; }
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 201 "engines/director/lingo/lingo-lex.l"
+#line 246 "engines/director/lingo/lingo-lex.l"
{
count();
const char *ptr = &yytext[5]; // Skip 'when '
- while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+ skipWhitespace(&ptr);
- Common::String eventName;
- while (*ptr != ' ' && *ptr != '\t' && *ptr != '\xC2')
- eventName += *ptr++;
+ Common::String *eventName = readUntilWhitespace(&ptr);
- while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+ skipWhitespace(&ptr);
ptr += 5; // Skip 'then '
- while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+ skipWhitespace(&ptr);
- Common::String stmt;
- while (*ptr)
- stmt += *ptr++;
+ Common::String *stmt = readUntilNull(&ptr);
- yylval.w.eventName = new Common::String(eventName);
- yylval.w.stmt = new Common::String(stmt);
+ yylval.w.eventName = eventName;
+ yylval.w.stmt = stmt;
return tWHEN;
}
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 223 "engines/director/lingo/lingo-lex.l"
+#line 264 "engines/director/lingo/lingo-lex.l"
{ count(); return tWHILE; }
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 224 "engines/director/lingo/lingo-lex.l"
+#line 265 "engines/director/lingo/lingo-lex.l"
{ count(); return tWINDOW; }
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 225 "engines/director/lingo/lingo-lex.l"
+#line 266 "engines/director/lingo/lingo-lex.l"
{ count(); return tWITH; }
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 226 "engines/director/lingo/lingo-lex.l"
+#line 267 "engines/director/lingo/lingo-lex.l"
{ count(); return tWITHIN; }
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 227 "engines/director/lingo/lingo-lex.l"
+#line 268 "engines/director/lingo/lingo-lex.l"
{ count(); return tWORD; }
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 228 "engines/director/lingo/lingo-lex.l"
+#line 269 "engines/director/lingo/lingo-lex.l"
{ count(); return tWORDS; }
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 230 "engines/director/lingo/lingo-lex.l"
+#line 271 "engines/director/lingo/lingo-lex.l"
{ count(); return tNEQ; }
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 231 "engines/director/lingo/lingo-lex.l"
+#line 272 "engines/director/lingo/lingo-lex.l"
{ count(); return tGE; }
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 232 "engines/director/lingo/lingo-lex.l"
+#line 273 "engines/director/lingo/lingo-lex.l"
{ count(); return tLE; }
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 233 "engines/director/lingo/lingo-lex.l"
+#line 274 "engines/director/lingo/lingo-lex.l"
{ count(); return tCONCAT; }
YY_BREAK
case 78:
YY_RULE_SETUP
-#line 234 "engines/director/lingo/lingo-lex.l"
+#line 275 "engines/director/lingo/lingo-lex.l"
{ count(); return tEQ; }
YY_BREAK
case 79:
YY_RULE_SETUP
-#line 236 "engines/director/lingo/lingo-lex.l"
+#line 277 "engines/director/lingo/lingo-lex.l"
{
count();
yylval.s = new Common::String(yytext);
@@ -1532,41 +1597,41 @@ YY_RULE_SETUP
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 242 "engines/director/lingo/lingo-lex.l"
+#line 283 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.f = atof(yytext); return tFLOAT; }
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 243 "engines/director/lingo/lingo-lex.l"
+#line 284 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.i = strtol(yytext, NULL, 10); return tINT; }
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 244 "engines/director/lingo/lingo-lex.l"
+#line 285 "engines/director/lingo/lingo-lex.l"
{ count(); return *yytext; }
YY_BREAK
case 83:
/* rule 83 can match eol */
YY_RULE_SETUP
-#line 245 "engines/director/lingo/lingo-lex.l"
+#line 286 "engines/director/lingo/lingo-lex.l"
{ count(); return '\n'; }
YY_BREAK
case 84:
YY_RULE_SETUP
-#line 246 "engines/director/lingo/lingo-lex.l"
+#line 287 "engines/director/lingo/lingo-lex.l"
{ count(); yylval.s = cleanupString(&yytext[1]); yylval.s->deleteLastChar(); return tSTRING; }
YY_BREAK
case 85:
YY_RULE_SETUP
-#line 247 "engines/director/lingo/lingo-lex.l"
+#line 288 "engines/director/lingo/lingo-lex.l"
{ count(); }
YY_BREAK
case 86:
YY_RULE_SETUP
-#line 249 "engines/director/lingo/lingo-lex.l"
+#line 290 "engines/director/lingo/lingo-lex.l"
ECHO;
YY_BREAK
-#line 1569 "engines/director/lingo/lingo-lex.cpp"
+#line 1634 "engines/director/lingo/lingo-lex.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -1865,7 +1930,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 342 )
+ if ( yy_current_state >= 352 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1893,11 +1958,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 342 )
+ if ( yy_current_state >= 352 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 341);
+ yy_is_jam = (yy_current_state == 351);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2538,7 +2603,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 249 "engines/director/lingo/lingo-lex.l"
+#line 290 "engines/director/lingo/lingo-lex.l"
extern int yydebug;
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index b0cb1edeed..7511fe322b 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -69,12 +69,13 @@ static void count() {
char *p = yytext;
while (*p) {
- if (*p == '\n' || *p == '\xC2') {
+ if (*p == '\n') {
+ compiler->_linenumber++;
+ compiler->_colnumber = 0;
+ pushLine(compiler->_bytenumber + 1);
+ } else if (*p == '\xC2' && *(p + 1) == '\xAC') { // continuation
compiler->_linenumber++;
compiler->_colnumber = 0;
-
- if (*p == '\n')
- pushLine(compiler->_bytenumber + 1);
} else {
compiler->_colnumber++;
}
@@ -87,9 +88,9 @@ static Common::String *cleanupString(const char *s) {
Common::String *res = new Common::String;
while (*s) {
- if (*s == '\xC2') {
- s++;
- *res += ' ';
+ if (*s == '\xC2' && *(s + 1) == '\xAC') { // continuation
+ s += 2;
+ *res += ' '; // replace with space
continue;
}
*res += *s;
@@ -99,6 +100,51 @@ static Common::String *cleanupString(const char *s) {
return res;
}
+static void skipWhitespace(const char **ptr) {
+ while (true) {
+ if (**ptr == ' ' || **ptr == '\t') {
+ *ptr += 1;
+ } else if (**ptr == '\xC2' && *(*ptr + 1) == '\xAC') { // continuation
+ *ptr += 2;
+ } else {
+ break;
+ }
+ }
+}
+
+static Common::String *readUntilWhitespace(const char **ptr) {
+ Common::String *res = new Common::String;
+
+ while (true) {
+ if (**ptr == ' ' || **ptr == '\t') {
+ break;
+ }
+ if (**ptr == '\xC2' && *(*ptr + 1) == '\xAC') { // continuation
+ break;
+ }
+ *res += **ptr;
+ *ptr += 1;
+ }
+
+ return res;
+}
+
+static Common::String *readUntilNull(const char **ptr) {
+ Common::String *res = new Common::String;
+
+ while (**ptr) {
+ if (**ptr == '\xC2' && *(*ptr + 1) == '\xAC') { // continuation
+ *ptr += 2;
+ *res += ' '; // replace with space
+ continue;
+ }
+ *res += **ptr;
+ *ptr += 1;
+ }
+
+ return res;
+}
+
%}
identifier [_[:alpha:]][_[:alnum:]]*
@@ -106,8 +152,8 @@ constfloat [[:digit:]]+\.[[:digit:]]*
constinteger [[:digit:]]+
conststring \"[^\"\r\n]*\"
operator [-+*/%^:,()><&\[\]]
-newline [ \t\xC2]*[\n\r]
-spc [ \t\xC2]
+newline (" "|\t|\xC2\xAC)*[\n\r]
+spc (" "|\t|\xC2\xAC)
eventname (keyDown|keyUp|mouseDown|mouseUp|timeOut)
unparsedstmt [^\r\n]*
@@ -135,8 +181,7 @@ end({spc}+{identifier})? {
count();
const char *ptr = &yytext[3]; // Skip 'end '
- while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
- ptr++;
+ skipWhitespace(&ptr);
if (!scumm_stricmp(ptr, "if"))
return tENDIF;
@@ -202,22 +247,18 @@ when{spc}+{eventname}{spc}+then{spc}+{unparsedstmt} {
count();
const char *ptr = &yytext[5]; // Skip 'when '
- while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+ skipWhitespace(&ptr);
- Common::String eventName;
- while (*ptr != ' ' && *ptr != '\t' && *ptr != '\xC2')
- eventName += *ptr++;
+ Common::String *eventName = readUntilWhitespace(&ptr);
- while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+ skipWhitespace(&ptr);
ptr += 5; // Skip 'then '
- while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2') ptr++;
+ skipWhitespace(&ptr);
- Common::String stmt;
- while (*ptr)
- stmt += *ptr++;
+ Common::String *stmt = readUntilNull(&ptr);
- yylval.w.eventName = new Common::String(eventName);
- yylval.w.stmt = new Common::String(stmt);
+ yylval.w.eventName = eventName;
+ yylval.w.stmt = stmt;
return tWHEN;
}
while { count(); return tWHILE; }
diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index 99e7d57961..342c519940 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -676,7 +676,7 @@ bool CastMember::setField(int field, const Datum &d) {
warning("CastMember::setField(): CastMember info for %d not found", _castId);
return false;
}
- _cast->_lingoArchive->addCode(d.u.s->c_str(), kCastScript, _castId);
+ _cast->_lingoArchive->addCode(*d.u.s, kCastScript, _castId);
castInfo->script = d.asString();
return true;
case kTheWidth:
@@ -883,7 +883,7 @@ Datum TextCastMember::getField(int field) {
d = _hilite;
break;
case kTheText:
- d = getText().encode(Common::kMacRoman); // FIXME: Properly handle encoding
+ d = getText().encode(Common::kUtf8);
break;
case kTheTextAlign:
d.type = STRING;
@@ -944,7 +944,7 @@ bool TextCastMember::setField(int field, const Datum &d) {
}
break;
case kTheText:
- setText(Common::U32String(d.asString(), Common::kMacRoman)); // FIXME: Properly handle encoding
+ setText(d.asString());
return true;
case kTheTextAlign:
{
diff --git a/engines/director/lingo/lingo-patcher.cpp b/engines/director/lingo/lingo-patcher.cpp
index 21ab06333a..67b118a0ff 100644
--- a/engines/director/lingo/lingo-patcher.cpp
+++ b/engines/director/lingo/lingo-patcher.cpp
@@ -147,7 +147,7 @@ struct ScriptPatch {
{nullptr, nullptr, kPlatformUnknown, nullptr, kNoneScript, 0, 0, 0, nullptr, nullptr}
};
-Common::String LingoCompiler::patchLingoCode(Common::String &line, LingoArchive *archive, ScriptType type, CastMemberID id, int linenum) {
+Common::U32String LingoCompiler::patchLingoCode(const Common::U32String &line, LingoArchive *archive, ScriptType type, CastMemberID id, int linenum) {
if (!archive)
return line;
@@ -171,10 +171,10 @@ Common::String LingoCompiler::patchLingoCode(Common::String &line, LingoArchive
}
// Now do a safeguard
- if (!line.contains(patch->orig)) {
+ if (!line.contains(Common::U32String(patch->orig))) {
warning("Lingo::patchLingoCode(): Unmatched patch for '%s', '%s' %s:%s @ %d. Expecting '%s' but got '%s'",
patch->gameId, patch->movie, scriptType2str(type), id.asString().c_str(), linenum,
- patch->orig, line.c_str());
+ patch->orig, line.encode().c_str());
return line;
}
@@ -182,7 +182,7 @@ Common::String LingoCompiler::patchLingoCode(Common::String &line, LingoArchive
warning("Lingo::patchLingoCode(): Applied a patch for '%s', '%s' %s:%s @ %d. \"%s\" -> \"%s\"",
patch->gameId, patch->movie, scriptType2str(type), id.asString().c_str(), linenum,
patch->orig, patch->replace);
- return patch->replace;
+ return Common::U32String(patch->replace);
}
return line;
diff --git a/engines/director/lingo/lingo-preprocessor.cpp b/engines/director/lingo/lingo-preprocessor.cpp
index 60f34df296..9c6a172815 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -26,15 +26,36 @@
namespace Director {
-bool isspec(char c) {
- return strchr("-+*/%%^:,()><&[]=", c) != NULL;
+bool isspec(Common::u32char_type_t c) {
+ switch (c) {
+ case '-':
+ case '+':
+ case '*':
+ case '/':
+ case '%':
+ case '^':
+ case ':':
+ case ',':
+ case '(':
+ case ')':
+ case '>':
+ case '<':
+ case '&':
+ case '[':
+ case ']':
+ case '=':
+ return true;
+ default:
+ break;
+ }
+ return false;
}
-static Common::String nexttok(const char *s, const char **newP = nullptr) {
- Common::String res;
+static Common::U32String nexttok(const Common::u32char_type_t *s, const Common::u32char_type_t **newP = nullptr) {
+ Common::U32String res;
// Scan first non-whitespace
- while (*s && (*s == ' ' || *s == '\t' || *s == '\xC2')) // If we see a whitespace
+ while (*s && (*s == ' ' || *s == '\t' || *s == CONTINUATION)) // If we see a whitespace
s++;
if (*s == '"') { // If it is a string then scan till end quote
@@ -60,15 +81,17 @@ static Common::String nexttok(const char *s, const char **newP = nullptr) {
return res;
}
-Common::String LingoCompiler::codePreprocessor(const char *s, LingoArchive *archive, ScriptType type, CastMemberID id, bool simple) {
- Common::String res;
+Common::U32String LingoCompiler::codePreprocessor(const Common::U32String &code, LingoArchive *archive, ScriptType type, CastMemberID id, bool simple) {
+ const Common::u32char_type_t *s = code.c_str();
+ Common::U32String res;
- // We start from processing the continuation synbols
- // \xC2\n -> \xC2
+ // We start from processing the continuation symbols
+ // (The continuation symbol is \xC2 in Mac Roman, \xAC in Unicode.)
+ // \xAC\n -> \xAC
// This will greatly simplify newline processing, still leaving
// the line number tracking intact
while (*s) {
- if (*s == '\xC2') {
+ if (*s == CONTINUATION) {
res += *s++;
if (!*s) // Who knows, maybe it is the last symbol in the script
break;
@@ -78,7 +101,7 @@ Common::String LingoCompiler::codePreprocessor(const char *s, LingoArchive *arch
res += *s++;
}
- Common::String tmp(res);
+ Common::U32String tmp(res);
res.clear();
s = tmp.c_str();
@@ -89,7 +112,7 @@ Common::String LingoCompiler::codePreprocessor(const char *s, LingoArchive *arch
inString = !inString;
if (!inString && *s == '-' && *(s + 1) == '-') { // At the end of the line we will have \0
- while (*s && *s != '\n')
+ while (*s && *s != '\r' && *s != '\n')
s++;
}
@@ -108,10 +131,10 @@ Common::String LingoCompiler::codePreprocessor(const char *s, LingoArchive *arch
// Strip trailing whitespaces
s = tmp.c_str();
while (*s) {
- if (*s == ' ' || *s == '\t' || *s == '\xC2') { // If we see a whitespace
- const char *ps = s; // Remember where we saw it
+ if (*s == ' ' || *s == '\t' || *s == CONTINUATION) { // If we see a whitespace
+ const Common::u32char_type_t *ps = s; // Remember where we saw it
- while (*ps == ' ' || *ps == '\t' || *ps == '\xC2') // Scan until end of whitespaces
+ while (*ps == ' ' || *ps == '\t' || *ps == CONTINUATION) // Scan until end of whitespaces
ps++;
if (*ps) { // Not end of the string
@@ -139,10 +162,12 @@ Common::String LingoCompiler::codePreprocessor(const char *s, LingoArchive *arch
s = tmp.c_str();
res.clear();
- Common::String line, tok, res1;
+ Common::U32String line, tok, res1;
int linenumber = 1;
bool defFound = false;
+ const Common::U32String macro("macro"), factory("factory"), on("on");
+
while (*s) {
line.clear();
res1.clear();
@@ -152,14 +177,14 @@ Common::String LingoCompiler::codePreprocessor(const char *s, LingoArchive *arch
res1 += *s;
line += tolower(*s++);
- if (*s == '\xc2')
+ if (*s == CONTINUATION)
linenumber++;
}
- debugC(2, kDebugParse | kDebugPreprocess, "line: '%s'", line.c_str());
+ debugC(2, kDebugParse | kDebugPreprocess, "line: '%s'", line.encode().c_str());
if (!defFound && (type == kMovieScript || type == kCastScript) && (g_director->getVersion() < 400 || g_director->getCurrentMovie()->_allowOutdatedLingo)) {
tok = nexttok(line.c_str());
- if (tok.equals("macro") || tok.equals("factory") || tok.equals("on")) {
+ if (tok.equals(macro) || tok.equals(factory) || tok.equals(on)) {
defFound = true;
} else {
debugC(2, kDebugParse | kDebugPreprocess, "skipping line before first definition");
@@ -183,7 +208,7 @@ Common::String LingoCompiler::codePreprocessor(const char *s, LingoArchive *arch
// Make the parser happier when there is no newline at the end
res += '\n';
- debugC(2, kDebugParse | kDebugPreprocess, "#############\n%s\n#############", res.c_str());
+ debugC(2, kDebugParse | kDebugPreprocess, "#############\n%s\n#############", res.encode().c_str());
return res;
}
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 9385c7b84c..443d00171e 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -246,9 +246,9 @@ Symbol Lingo::getHandler(const Common::String &name) {
return Symbol();
}
-void LingoArchive::addCode(const char *code, ScriptType type, uint16 id, const char *scriptName) {
+void LingoArchive::addCode(const Common::U32String &code, ScriptType type, uint16 id, const char *scriptName) {
debugC(1, kDebugCompile, "Add code for type %s(%d) with id %d in '%s%s'\n"
- "***********\n%s\n\n***********", scriptType2str(type), type, id, g_director->getCurrentPath().c_str(), cast->getMacName().c_str(), code);
+ "***********\n%s\n\n***********", scriptType2str(type), type, id, g_director->getCurrentPath().c_str(), cast->getMacName().c_str(), code.encode().c_str());
if (getScriptContext(type, id)) {
// We can't undefine context data because it could be used in e.g. symbols.
@@ -1022,7 +1022,7 @@ void Lingo::runTests() {
debug(">> Compiling file %s of size %d, id: %d", fileList[i].c_str(), size, counter);
- mainArchive->addCode(script, kTestScript, counter);
+ mainArchive->addCode(Common::U32String(script, Common::kMacRoman), kTestScript, counter);
if (!debugChannelSet(-1, kDebugCompileOnly)) {
if (!_compiler->_hadError)
@@ -1166,7 +1166,7 @@ void Lingo::varAssign(const Datum &var, const Datum &value) {
}
switch (member->_type) {
case kCastText:
- ((TextCastMember *)member)->setText(Common::U32String(value.asString(), Common::kMacRoman)); // FIXME: Properly handle encoding
+ ((TextCastMember *)member)->setText(value.asString());
break;
default:
warning("varAssign: Unhandled cast type %d", member->_type);
@@ -1287,7 +1287,7 @@ Datum Lingo::varFetch(const Datum &var, bool silent) {
switch (member->_type) {
case kCastText:
result.type = STRING;
- result.u.s = new Common::String(((TextCastMember *)member)->getText().encode(Common::kMacRoman)); // FIXME: Properly handle encoding
+ result.u.s = new Common::String(((TextCastMember *)member)->getText().encode(Common::kUtf8));
break;
default:
warning("varFetch: Unhandled cast type %d", member->_type);
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 61194f7d63..7e1a3a6b37 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -238,7 +238,7 @@ struct LingoArchive {
ScriptContext *getScriptContext(ScriptType type, uint16 id);
Common::String getName(uint16 id);
- void addCode(const char *code, ScriptType type, uint16 id, const char *scriptName = nullptr);
+ void addCode(const Common::U32String &code, ScriptType type, uint16 id, const char *scriptName = nullptr);
void addCodeV4(Common::SeekableReadStreamEndian &stream, uint16 lctxIndex, const Common::String &archName, uint16 version);
void addNamesV4(Common::SeekableReadStreamEndian &stream);
};
diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index e4864ee0ed..3dbf962f89 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -236,7 +236,7 @@ void Movie::loadFileInfo(Common::SeekableReadStreamEndian &stream) {
_cast->dumpScript(_script.c_str(), kMovieScript, 0);
if (!_script.empty())
- _cast->_lingoArchive->addCode(_script.c_str(), kMovieScript, 0);
+ _cast->_lingoArchive->addCode(_script, kMovieScript, 0);
_changedBy = fileInfo.strings[1].readString();
_createdBy = fileInfo.strings[2].readString();
@@ -388,13 +388,45 @@ Common::String InfoEntry::readString(bool pascal) {
if (len == 0)
return res;
- int start = pascal ? 1 : 0;
+ uint start = pascal ? 1 : 0; // skip length for Pascal string
- for (uint i = start; i < len; i++)
- if (data[i] == '\r')
- res += '\n';
- else if (data[i] >= 0x20)
- res += data[i];
+ Common::String encodedStr;
+ if (g_director->getLanguage() == Common::JA_JPN) {
+ for (uint i = start; i < len; i++) {
+ if (!Common::isCntrl(data[i]) || Common::isSpace(data[i]))
+ encodedStr += data[i];
+ }
+ res = encodedStr.decode(Common::kWindows932).encode(Common::kUtf8);
+ } else {
+ // FIXME: Get the platform and FXmp from the cast which contains this, not the current movie.
+ if (g_director->getCurrentMovie()->_platform == Common::kPlatformWindows) {
+ /**
+ * Director for Windows stores these strings in a screwed up version of Mac Roman
+ * We need to map this screwed up Mac Roman back to Windows-1252 before using it.
+ * Comment from FXmp:
+ * Note: Some characters are not available in both character sets.
+ * However, the bi-directional mapping table below preserves these
+ * characters even if they are mapped to a different platform and
+ * later re-mapped back to the original platform.
+ */
+ CharMap &charMap = g_director->getCurrentMovie()->getCast()->_macCharsToWin;
+ for (uint i = start; i < len; i++) {
+ if (!Common::isCntrl(data[i]) || Common::isSpace(data[i])) {
+ if (charMap.contains(data[i]))
+ encodedStr += charMap[data[i]];
+ else
+ encodedStr += data[i];
+ }
+ }
+ res = encodedStr.decode(Common::kWindows1252).encode(Common::kUtf8);
+ } else {
+ for (uint i = start; i < len; i++) {
+ if (!Common::isCntrl(data[i]) || Common::isSpace(data[i]))
+ encodedStr += data[i];
+ }
+ res = encodedStr.decode(Common::kMacRoman).encode(Common::kUtf8);
+ }
+ }
return res;
}
diff --git a/engines/director/resource.cpp b/engines/director/resource.cpp
index 02396c2094..635b8882e0 100644
--- a/engines/director/resource.cpp
+++ b/engines/director/resource.cpp
@@ -175,7 +175,7 @@ void Window::loadEXE(const Common::String movie) {
iniStream->read(script, iniStream->size());
_currentMovie = new Movie(this);
- _currentMovie->getMainLingoArch()->addCode(script, kMovieScript, 0);
+ _currentMovie->getMainLingoArch()->addCode(Common::U32String(script, Common::kWindows1252), kMovieScript, 0);
_currentMovie->processEvent(kEventStartUp);
delete _currentMovie;
_currentMovie = nullptr;
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 89b914e79d..09f409b87f 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -936,15 +936,8 @@ void Score::loadActions(Common::SeekableReadStreamEndian &stream) {
stream.seek(stringPos);
- Common::String script;
- for (uint16 j = stringPos; j < nextStringPos; j++) {
- byte ch = stream.readByte();
- if (ch == 0x0d) {
- ch = '\n';
- }
- script += ch;
- }
- _actions[i] = script;
+ Common::String script = stream.readString(0, nextStringPos - stringPos);
+ _actions[i] = script.decode(Common::kMacRoman).encode(Common::kUtf8);
debugC(3, kDebugLoading, "Action index: %d id: %d nextId: %d subId: %d, code: %s", i, id, nextId, subId, _actions[i].c_str());
@@ -983,8 +976,9 @@ void Score::loadActions(Common::SeekableReadStreamEndian &stream) {
if (!scriptRefs[j->_key]) {
// Check if it is empty
bool empty = true;
- for (const char *ptr = j->_value.c_str(); *ptr; ptr++)
- if (!(*ptr == ' ' || *ptr == '-' || *ptr == '\n' || *ptr == '\r' || *ptr == '\t' || *ptr == '\xc2')) {
+ Common::U32String u32Script(j->_value);
+ for (const Common::u32char_type_t *ptr = u32Script.c_str(); *ptr; ptr++)
+ if (!(*ptr == ' ' || *ptr == '-' || *ptr == '\n' || *ptr == '\r' || *ptr == '\t' || *ptr == CONTINUATION)) {
empty = false;
break;
}
@@ -995,7 +989,7 @@ void Score::loadActions(Common::SeekableReadStreamEndian &stream) {
continue;
}
if (!j->_value.empty()) {
- _movie->getMainLingoArch()->addCode(j->_value.c_str(), kScoreScript, j->_key);
+ _movie->getMainLingoArch()->addCode(j->_value, kScoreScript, j->_key);
processImmediateFrameScript(j->_value, j->_key);
}
diff --git a/engines/director/types.h b/engines/director/types.h
index 78c9e702d7..4cfb475051 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -25,6 +25,8 @@
namespace Director {
+#define CONTINUATION (0xAC)
+
enum MovieFlag {
kMovieFlagAllowOutdatedLingo = (1 << 8)
};
Commit: 52af0ac82e3f1dfd4a2eb9420a14c35634681c2c
https://github.com/scummvm/scummvm/commit/52af0ac82e3f1dfd4a2eb9420a14c35634681c2c
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: Create DirectorEngine::getPlatformEncoding
Changed paths:
engines/director/director.h
engines/director/stxt.cpp
engines/director/util.cpp
engines/director/util.h
diff --git a/engines/director/director.h b/engines/director/director.h
index 3a807599e6..542439ffd8 100644
--- a/engines/director/director.h
+++ b/engines/director/director.h
@@ -226,6 +226,7 @@ public:
Graphics::MacDrawPixPtr getInkDrawPixel();
void loadKeyCodes();
+ Common::CodePage getPlatformEncoding();
Archive *createArchive();
diff --git a/engines/director/stxt.cpp b/engines/director/stxt.cpp
index 0daef8f36e..ba4a824297 100644
--- a/engines/director/stxt.cpp
+++ b/engines/director/stxt.cpp
@@ -84,7 +84,7 @@ Stxt::Stxt(Cast *cast, Common::SeekableReadStreamEndian &textStream) : _cast(cas
prevPos++;
}
- Common::CodePage encoding = detectEncoding(cast->_platform, currentFont);
+ Common::CodePage encoding = detectFontEncoding(cast->_platform, currentFont);
Common::U32String u32TextPart(textPart, encoding);
_ptext += u32TextPart;
_ftext += u32TextPart;
@@ -97,7 +97,7 @@ Stxt::Stxt(Cast *cast, Common::SeekableReadStreamEndian &textStream) : _cast(cas
formattingCount--;
}
- Common::CodePage encoding = detectEncoding(cast->_platform, _style.fontId);
+ Common::CodePage encoding = detectFontEncoding(cast->_platform, _style.fontId);
Common::U32String u32Text(text, encoding);
_ptext += u32Text;
_ftext += u32Text;
diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index c722163fd5..133809832b 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -768,9 +768,8 @@ Common::Platform platformFromID(uint16 id) {
return Common::kPlatformUnknown;
}
-Common::CodePage detectEncoding(Common::Platform platform, uint16 fontId) {
- Common::Language lang = g_director->_wm->_fontMan->getFontLanguage(fontId);
- switch (lang) {
+Common::CodePage getEncoding(Common::Platform platform, Common::Language language) {
+ switch (language) {
case Common::JA_JPN:
return Common::kWindows932; // Shift JIS
default:
@@ -781,4 +780,12 @@ Common::CodePage detectEncoding(Common::Platform platform, uint16 fontId) {
: Common::kMacRoman;
}
+Common::CodePage detectFontEncoding(Common::Platform platform, uint16 fontId) {
+ return getEncoding(platform, g_director->_wm->_fontMan->getFontLanguage(fontId));
+}
+
+Common::CodePage DirectorEngine::getPlatformEncoding() {
+ return getEncoding(getPlatform(), getLanguage());
+}
+
} // End of namespace Director
diff --git a/engines/director/util.h b/engines/director/util.h
index 509de8a3bc..fe71aeb863 100644
--- a/engines/director/util.h
+++ b/engines/director/util.h
@@ -84,7 +84,8 @@ uint16 humanVersion(uint16 ver);
Common::Platform platformFromID(uint16 id);
-Common::CodePage detectEncoding(Common::Platform platform, uint16 fontId);
+Common::CodePage getEncoding(Common::Platform platform, Common::Language language);
+Common::CodePage detectFontEncoding(Common::Platform platform, uint16 fontId);
} // End of namespace Director
Commit: 19895f877df2bf2e165a3031dda0f636796d3ef6
https://github.com/scummvm/scummvm/commit/19895f877df2bf2e165a3031dda0f636796d3ef6
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Make text builtins handle Unicode
Changed paths:
engines/director/lingo/lingo-builtins.cpp
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index bb02682b5f..24ffc39b3c 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -459,20 +459,19 @@ void LB::b_chars(int nargs) {
int to = d3.asInt();
int from = d2.asInt();
- Common::String src = s.asString();
+ Common::U32String src = s.asString().decode(Common::kUtf8);
- int len = strlen(src.c_str());
+ int len = src.size();
int f = MAX(0, MIN(len, from - 1));
int t = MAX(0, MIN(len, to));
- Common::String result;
+ Common::String res;
if (f > t) {
- result = Common::String("");
+ res = Common::String("");
} else {
- result = Common::String(&(src.c_str()[f]), &(src.c_str()[t]));
+ res = src.substr(f, t - f).encode(Common::kUtf8);
}
- Datum res(result);
g_lingo->push(res);
}
@@ -481,9 +480,19 @@ void LB::b_charToNum(int nargs) {
TYPECHECK(d, STRING);
- int chr = (uint8)d.u.s->c_str()[0];
+ Common::U32String src = d.asString().decode(Common::kUtf8);
+ if (src.size() == 0) {
+ g_lingo->push(0);
+ return;
+ }
- Datum res(chr);
+ Common::U32String ch = src.substr(0, 1);
+ Common::String encodedCh = ch.encode(g_director->getPlatformEncoding());
+ int res = 0;
+ while (encodedCh.size()) {
+ res = (res << 8) | (byte)encodedCh.firstChar();
+ encodedCh.deleteChar(0);
+ }
g_lingo->push(res);
}
@@ -491,20 +500,28 @@ void LB::b_length(int nargs) {
Datum d = g_lingo->pop();
TYPECHECK(d, STRING);
- int len = strlen(d.asString().c_str());
-
- Datum res(len);
+ Common::U32String src = d.asString().decode(Common::kUtf8);
+ int res = src.size();
g_lingo->push(res);
}
void LB::b_numToChar(int nargs) {
- Datum d = g_lingo->pop();
+ int num = g_lingo->pop().asInt();
+ if (num == 0) {
+ g_lingo->push(Common::String());
+ return;
+ }
- char result[2];
- result[0] = (char)d.asInt();
- result[1] = 0;
+ Common::String encodedCh;
+ while (num) {
+ encodedCh.insertChar((char)(num & 0xFF), 0);
+ num >>= 8;
+ }
+ Common::U32String ch = encodedCh.decode(g_director->getPlatformEncoding());
+ while (ch.size() > 1) // we only want one character
+ ch.deleteChar(0);
- g_lingo->push(Datum(Common::String(result)));
+ g_lingo->push(ch.encode(Common::kUtf8));
}
void LB::b_offset(int nargs) {
Commit: 860a8d663a35ae9e6ac7efb097ef3a68f1010c33
https://github.com/scummvm/scummvm/commit/860a8d663a35ae9e6ac7efb097ef3a68f1010c33
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Make chunk refs handle Unicode
Changed paths:
engines/director/lingo/lingo-code.cpp
engines/director/lingo/lingo.cpp
engines/director/lingo/lingo.h
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 6ae505bfb8..21a7509745 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -884,7 +884,7 @@ Datum LC::chunkRef(ChunkType type, int startChunk, int endChunk, const Datum &sr
if (endChunk < 1 || startChunk == -30000)
endChunk = startChunk;
- Common::String str = src.eval().asString();
+ Common::U32String str = g_lingo->evalChunkRef(src);
// these hold the bounds of the last chunk in the expression
int chunkNum = 0;
@@ -944,7 +944,7 @@ Datum LC::chunkRef(ChunkType type, int startChunk, int endChunk, const Datum &sr
case kChunkItem:
case kChunkLine:
{
- char delimiter = (type == kChunkItem) ? g_lingo->_itemDelimiter : '\n';
+ Common::u32char_type_t delimiter = (type == kChunkItem) ? g_lingo->_itemDelimiter : '\n';
int idx = 0;
while (true) {
@@ -1605,7 +1605,7 @@ void LC::c_delete() {
if (start < 0)
return;
- Common::String text = g_lingo->varFetch(field).asString();
+ Common::U32String text = g_lingo->evalChunkRef(field);
if (d.type == CHUNKREF) {
switch (d.u.cref->type) {
case kChunkChar:
@@ -1623,12 +1623,12 @@ void LC::c_delete() {
}
}
- Common::String res = text.substr(0, start);
+ Common::U32String res = text.substr(0, start);
if (end >= 0) {
res += text.substr(end);
}
Datum s;
- s.u.s = new Common::String(res);
+ s.u.s = new Common::String(res, Common::kUtf8);
s.type = STRING;
g_lingo->varAssign(field, s);
}
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 443d00171e..398f805275 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -1176,10 +1176,10 @@ void Lingo::varAssign(const Datum &var, const Datum &value) {
break;
case CHUNKREF:
{
- Common::String src = var.u.cref->source.eval().asString();
- Common::String res;
+ Common::U32String src = evalChunkRef(var.u.cref->source);
+ Common::U32String res;
if (var.u.cref->start >= 0) {
- res = src.substr(0, var.u.cref->start) + value.asString() + src.substr(var.u.cref->end);
+ res = src.substr(0, var.u.cref->start) + value.asString().decode(Common::kUtf8) + src.substr(var.u.cref->end);
} else {
// non-existent chunk - insert more chars, items, or lines
res = src;
@@ -1208,7 +1208,7 @@ void Lingo::varAssign(const Datum &var, const Datum &value) {
}
res += value.asString();
}
- varAssign(var.u.cref->source, res);
+ varAssign(var.u.cref->source, res.encode(Common::kUtf8));
}
break;
default:
@@ -1272,42 +1272,64 @@ Datum Lingo::varFetch(const Datum &var, bool silent) {
}
break;
case FIELDREF:
+ case CASTREF:
+ case CHUNKREF:
+ {
+ result.type = STRING;
+ result.u.s = new Common::String(evalChunkRef(var), Common::kUtf8);
+ }
+ break;
+ default:
+ warning("varFetch: fetch from non-variable");
+ break;
+ }
+
+ return result;
+}
+
+Common::U32String Lingo::evalChunkRef(const Datum &var) {
+ Common::U32String result;
+
+ switch (var.type) {
+ case VARREF:
+ case GLOBALREF:
+ case LOCALREF:
+ case PROPREF:
+ result = varFetch(var).asString().decode(Common::kUtf8);
+ break;
+ case FIELDREF:
case CASTREF:
{
Movie *movie = g_director->getCurrentMovie();
if (!movie) {
- warning("varFetch: Assigning to a reference to an empty movie");
+ warning("evalChunkRef: Assigning to a reference to an empty movie");
return result;
}
CastMember *member = movie->getCastMember(*var.u.cast);
if (!member) {
- warning("varFetch: Unknown %s", var.u.cast->asString().c_str());
+ warning("evalChunkRef: Unknown %s", var.u.cast->asString().c_str());
return result;
}
switch (member->_type) {
case kCastText:
- result.type = STRING;
- result.u.s = new Common::String(((TextCastMember *)member)->getText().encode(Common::kUtf8));
+ result = ((TextCastMember *)member)->getText();
break;
default:
- warning("varFetch: Unhandled cast type %d", member->_type);
+ warning("evalChunkRef: Unhandled cast type %d", member->_type);
break;
}
}
break;
case CHUNKREF:
{
- Common::String src = var.u.cref->source.eval().asString();
- result.type = STRING;
- if (var.u.cref->start < 0) {
- result.u.s = new Common::String("");
- } else {
- result.u.s = new Common::String(src.substr(var.u.cref->start, var.u.cref->end - var.u.cref->start));
+ Common::U32String src = evalChunkRef(var.u.cref->source);
+ if (var.u.cref->start >= 0) {
+ result = src.substr(var.u.cref->start, var.u.cref->end - var.u.cref->start);
}
}
break;
default:
- warning("varFetch: fetch from non-variable");
+ result = var.asString().decode(Common::kUtf8);
break;
}
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 7e1a3a6b37..a5cffe641f 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -290,6 +290,7 @@ public:
void cleanLocalVars();
void varAssign(const Datum &var, const Datum &value);
Datum varFetch(const Datum &var, bool silent = false);
+ Common::U32String evalChunkRef(const Datum &var);
Datum findVarV4(int varType, const Datum &id);
CastMemberID resolveCastMember(const Datum &memberID, const Datum &castLib);
Commit: c16189094df1844e3416bb44db08d123b71e96d7
https://github.com/scummvm/scummvm/commit/c16189094df1844e3416bb44db08d123b71e96d7
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Make _itemDelimiter a U32 char
Changed paths:
engines/director/lingo/lingo-the.cpp
engines/director/lingo/lingo.h
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 11f62f4c12..23a0e2a7f0 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -482,8 +482,12 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
d.u.i = 1; // We always allow it in ScummVM
break;
case kTheItemDelimiter:
- d.type = STRING;
- d.u.s = new Common::String(g_lingo->_itemDelimiter);
+ {
+ Common::U32String ch;
+ ch.setChar(0, g_lingo->_itemDelimiter);
+ d.type = STRING;
+ d.u.s = new Common::String(ch, Common::kUtf8);
+ }
break;
case kTheKey:
d.type = STRING;
@@ -942,9 +946,9 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
break;
case kTheItemDelimiter:
if (d.asString().size() == 0)
- g_lingo->_itemDelimiter = *"";
+ g_lingo->_itemDelimiter = 0;
else
- g_lingo->_itemDelimiter = d.asString()[0];
+ g_lingo->_itemDelimiter = d.asString().decode(Common::kUtf8)[0];
break;
case kTheKeyDownScript:
movie->setPrimaryEventHandler(kEventKeyDown, d.asString());
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index a5cffe641f..5a4e3531df 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -338,7 +338,7 @@ public:
const char *field2str(int id);
// global kTheEntity
- char _itemDelimiter;
+ Common::u32char_type_t _itemDelimiter;
Datum getTheEntity(int entity, Datum &id, int field);
void setTheEntity(int entity, Datum &id, int field, Datum &d);
Commit: d0df2bd01437becfdd8ecf4e3c177cdff920e18f
https://github.com/scummvm/scummvm/commit/d0df2bd01437becfdd8ecf4e3c177cdff920e18f
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Use '\r' as line delimiter
Changed paths:
engines/director/lingo/lingo-code.cpp
engines/director/lingo/lingo.cpp
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 21a7509745..883b36becc 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -944,7 +944,7 @@ Datum LC::chunkRef(ChunkType type, int startChunk, int endChunk, const Datum &sr
case kChunkItem:
case kChunkLine:
{
- Common::u32char_type_t delimiter = (type == kChunkItem) ? g_lingo->_itemDelimiter : '\n';
+ Common::u32char_type_t delimiter = (type == kChunkItem) ? g_lingo->_itemDelimiter : '\r';
int idx = 0;
while (true) {
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 398f805275..9562c2f6f6 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -1201,7 +1201,7 @@ void Lingo::varAssign(const Datum &var, const Datum &value) {
break;
case kChunkLine:
while (numberOfChunks < var.u.cref->startChunk ) {
- res += '\n';
+ res += '\r';
numberOfChunks++;
}
break;
Commit: 5b3bed6e57560311b7f1acb029d1a09bae5d1c2a
https://github.com/scummvm/scummvm/commit/5b3bed6e57560311b7f1acb029d1a09bae5d1c2a
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Re-encode Lingo constants to UTF-8
Changed paths:
engines/director/lingo/lingo-bytecode.cpp
diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index b58278c0a2..97a5126373 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -1079,8 +1079,7 @@ ScriptContext *LingoCompiler::compileLingoV4(Common::SeekableReadStreamEndian &s
switch (constType) {
case 1: // String type
{
- constant.type = STRING;
- constant.u.s = new Common::String();
+ Common::String str;
uint32 pointer = value;
if (pointer + 4 > constsStoreSize) {
error("Constant string is too small");
@@ -1094,12 +1093,10 @@ ScriptContext *LingoCompiler::compileLingoV4(Common::SeekableReadStreamEndian &s
break;
}
while (pointer < end) {
- if (constsStore[pointer] == '\r') {
- *constant.u.s += '\n';
- } else if (constsStore[pointer] == '\0') {
+ if (constsStore[pointer] == '\0') {
break;
} else {
- *constant.u.s += constsStore[pointer];
+ str += constsStore[pointer];
}
pointer += 1;
}
@@ -1107,6 +1104,9 @@ ScriptContext *LingoCompiler::compileLingoV4(Common::SeekableReadStreamEndian &s
warning("Constant string has no null terminator");
break;
}
+ Common::CodePage encoding = g_director->getPlatformEncoding();
+ constant.type = STRING;
+ constant.u.s = new Common::String(str.decode(encoding), Common::kUtf8);
}
break;
case 4: // Integer type
Commit: 30df98e61b3edbbe41cfc0a5d86600882fcfc381
https://github.com/scummvm/scummvm/commit/30df98e61b3edbbe41cfc0a5d86600882fcfc381
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: Create Cast::decodeString
Changed paths:
engines/director/cast.cpp
engines/director/cast.h
engines/director/director.cpp
engines/director/movie.cpp
engines/director/util.cpp
diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index e032e7afe2..0e1b4fc167 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -1198,4 +1198,37 @@ void Cast::loadCastInfo(Common::SeekableReadStreamEndian &stream, uint16 id) {
_castsInfo[id] = ci;
}
+Common::CodePage Cast::getPlatformEncoding() {
+ return getEncoding(_platform, _vm->getLanguage());
+}
+
+Common::U32String Cast::decodeString(const Common::String &str) {
+ Common::CodePage encoding = getPlatformEncoding();
+
+ Common::String fixedStr;
+ if (encoding == Common::kWindows1252) {
+ /**
+ * Director for Windows stores strings in a screwed up version of Mac Roman
+ * where characters map directly to Windows-1252 characters.
+ * We need to map this screwed up Mac Roman back to Windows-1252 before using it.
+ * Comment from FXmp:
+ * Note: Some characters are not available in both character sets.
+ * However, the bi-directional mapping table below preserves these
+ * characters even if they are mapped to a different platform and
+ * later re-mapped back to the original platform.
+ */
+
+ for (uint i = 0; i < str.size(); i++) {
+ if (_macCharsToWin.contains(str[i]))
+ fixedStr += _macCharsToWin[str[i]];
+ else
+ fixedStr += str[i];
+ }
+ } else {
+ fixedStr = str;
+ }
+
+ return fixedStr.decode(encoding);
+}
+
} // End of namespace Director
diff --git a/engines/director/cast.h b/engines/director/cast.h
index 5021733c7b..8b55496342 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -50,7 +50,7 @@ typedef Common::HashMap<byte, byte> CharMap;
typedef Common::HashMap<uint16, uint16> FontSizeMap;
struct FontXPlatformInfo {
Common::String toFont;
- bool remapChars;
+ bool remapChars;
FontSizeMap sizeMap;
FontXPlatformInfo() : remapChars(false) {}
@@ -104,6 +104,9 @@ public:
void dumpScript(const char *script, ScriptType type, uint16 id);
PaletteV4 loadPalette(Common::SeekableReadStreamEndian &stream);
+ Common::CodePage getPlatformEncoding();
+ Common::U32String decodeString(const Common::String &str);
+
private:
void loadScriptText(Common::SeekableReadStreamEndian &stream, uint16 id);
void loadFontMap(Common::SeekableReadStreamEndian &stream);
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 829378415d..08d8fe1226 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -231,4 +231,8 @@ Common::Error DirectorEngine::run() {
return Common::kNoError;
}
+Common::CodePage DirectorEngine::getPlatformEncoding() {
+ return getEncoding(getPlatform(), getLanguage());
+}
+
} // End of namespace Director
diff --git a/engines/director/movie.cpp b/engines/director/movie.cpp
index 3dbf962f89..8a83bc55ab 100644
--- a/engines/director/movie.cpp
+++ b/engines/director/movie.cpp
@@ -391,44 +391,13 @@ Common::String InfoEntry::readString(bool pascal) {
uint start = pascal ? 1 : 0; // skip length for Pascal string
Common::String encodedStr;
- if (g_director->getLanguage() == Common::JA_JPN) {
- for (uint i = start; i < len; i++) {
- if (!Common::isCntrl(data[i]) || Common::isSpace(data[i]))
- encodedStr += data[i];
- }
- res = encodedStr.decode(Common::kWindows932).encode(Common::kUtf8);
- } else {
- // FIXME: Get the platform and FXmp from the cast which contains this, not the current movie.
- if (g_director->getCurrentMovie()->_platform == Common::kPlatformWindows) {
- /**
- * Director for Windows stores these strings in a screwed up version of Mac Roman
- * We need to map this screwed up Mac Roman back to Windows-1252 before using it.
- * Comment from FXmp:
- * Note: Some characters are not available in both character sets.
- * However, the bi-directional mapping table below preserves these
- * characters even if they are mapped to a different platform and
- * later re-mapped back to the original platform.
- */
- CharMap &charMap = g_director->getCurrentMovie()->getCast()->_macCharsToWin;
- for (uint i = start; i < len; i++) {
- if (!Common::isCntrl(data[i]) || Common::isSpace(data[i])) {
- if (charMap.contains(data[i]))
- encodedStr += charMap[data[i]];
- else
- encodedStr += data[i];
- }
- }
- res = encodedStr.decode(Common::kWindows1252).encode(Common::kUtf8);
- } else {
- for (uint i = start; i < len; i++) {
- if (!Common::isCntrl(data[i]) || Common::isSpace(data[i]))
- encodedStr += data[i];
- }
- res = encodedStr.decode(Common::kMacRoman).encode(Common::kUtf8);
- }
+ for (uint i = start; i < len; i++) {
+ if (!Common::isCntrl(data[i]) || Common::isSpace(data[i]))
+ encodedStr += data[i];
}
- return res;
+ // FIXME: Use the case which contains this string, not the main cast.
+ return g_director->getCurrentMovie()->getCast()->decodeString(encodedStr).encode(Common::kUtf8);
}
} // End of namespace Director
diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index 133809832b..22dc93314c 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -784,8 +784,4 @@ Common::CodePage detectFontEncoding(Common::Platform platform, uint16 fontId) {
return getEncoding(platform, g_director->_wm->_fontMan->getFontLanguage(fontId));
}
-Common::CodePage DirectorEngine::getPlatformEncoding() {
- return getEncoding(getPlatform(), getLanguage());
-}
-
} // End of namespace Director
Commit: 4450cd5ced115d2bd472c7794250e589cd12d798
https://github.com/scummvm/scummvm/commit/4450cd5ced115d2bd472c7794250e589cd12d798
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Decode constants using Cast::decodeString
Changed paths:
engines/director/lingo/lingo-bytecode.cpp
diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index 97a5126373..293489f2f8 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -1104,9 +1104,8 @@ ScriptContext *LingoCompiler::compileLingoV4(Common::SeekableReadStreamEndian &s
warning("Constant string has no null terminator");
break;
}
- Common::CodePage encoding = g_director->getPlatformEncoding();
constant.type = STRING;
- constant.u.s = new Common::String(str.decode(encoding), Common::kUtf8);
+ constant.u.s = new Common::String(archive->cast->decodeString(str), Common::kUtf8);
}
break;
case 4: // Integer type
Commit: ca0b1f5de1f8d9176c12fe39eac247255705186c
https://github.com/scummvm/scummvm/commit/ca0b1f5de1f8d9176c12fe39eac247255705186c
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Normalize strings in equality tests
Changed paths:
engines/director/lingo/lingo-code.cpp
engines/director/lingo/lingo.cpp
engines/director/lingo/lingo.h
engines/director/util.cpp
engines/director/util.h
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 883b36becc..82c0af95a1 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -807,8 +807,8 @@ void LC::c_contains() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- Common::String s1 = toLowercaseMac(d1.asString());
- Common::String s2 = toLowercaseMac(d2.asString());
+ Common::String s1 = g_lingo->normalizeString(d1.asString());
+ Common::String s2 = g_lingo->normalizeString(d2.asString());
int res = s1.contains(s2) ? 1 : 0;
@@ -819,8 +819,8 @@ void LC::c_starts() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- Common::String s1 = toLowercaseMac(d1.asString());
- Common::String s2 = toLowercaseMac(d2.asString());
+ Common::String s1 = g_lingo->normalizeString(d1.asString());
+ Common::String s2 = g_lingo->normalizeString(d2.asString());
int res = s1.hasPrefix(s2) ? 1 : 0;
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 9562c2f6f6..e14356ff21 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -46,6 +46,93 @@ namespace Director {
Lingo *g_lingo;
+static struct CharNormProto {
+ Common::u32char_type_t from;
+ const char *to;
+} charNormProtos[] = {
+ { 0x00C0, "a" }, // Ã - \xCB in Mac Roman, \xC0 in Windows-1252
+ { 0x00C1, "a" }, // Ã - \xE7 in Mac Roman, \xC1 in Windows-1252
+ { 0x00C2, "a" }, // Ã - \xE5 in Mac Roman, \xC2 in Windows-1252
+ { 0x00C3, "a" }, // Ã - \xCC in Mac Roman, \xC3 in Windows-1252
+ { 0x00C4, "a" }, // Ã - \x80 in Mac Roman, \xC4 in Windows-1252
+ { 0x00C5, "a" }, // Ã
- \x81 in Mac Roman, \xC5 in Windows-1252
+ { 0x00C6, "ae" }, // Ã - \xAE in Mac Roman, \xC6 in Windows-1252
+ { 0x00C7, "c" }, // Ã - \x82 in Mac Roman, \xC7 in Windows-1252
+ { 0x00C8, "e" }, // Ã - \xE9 in Mac Roman, \xC8 in Windows-1252
+ { 0x00C9, "e" }, // Ã - \x83 in Mac Roman, \xC9 in Windows-1252
+ { 0x00CA, "e" }, // Ã - \xE6 in Mac Roman, \xCA in Windows-1252
+ { 0x00CB, "e" }, // Ã - \xE8 in Mac Roman, \xCB in Windows-1252
+ { 0x00CC, "i" }, // Ã - \xED in Mac Roman, \xCC in Windows-1252
+ { 0x00CD, "i" }, // Ã - \xEA in Mac Roman, \xCD in Windows-1252
+ { 0x00CE, "i" }, // Ã - \xEB in Mac Roman, \xCE in Windows-1252
+ { 0x00CF, "i" }, // Ã - \xEC in Mac Roman, \xCF in Windows-1252
+ { 0x00D0, "d" }, // Ã - \xD0 in Windows-1252
+ { 0x00D1, "n" }, // Ã - \x84 in Mac Roman, \xD1 in Windows-1252
+ { 0x00D2, "o" }, // Ã - \xF1 in Mac Roman, \xD2 in Windows-1252
+ { 0x00D3, "o" }, // Ã - \xEE in Mac Roman, \xD3 in Windows-1252
+ { 0x00D4, "o" }, // Ã - \xEF in Mac Roman, \xD4 in Windows-1252
+ { 0x00D5, "o" }, // Ã - \xCD in Mac Roman, \xD5 in Windows-1252
+ { 0x00D6, "o" }, // Ã - \x85 in Mac Roman, \xD6 in Windows-1252
+ { 0x00D8, "o" }, // Ã - \xAF in Mac Roman, \xD8 in Windows-1252
+ { 0x00D9, "u" }, // Ã - \xF4 in Mac Roman, \xD9 in Windows-1252
+ { 0x00DA, "u" }, // Ã - \xF2 in Mac Roman, \xDA in Windows-1252
+ { 0x00DB, "u" }, // Ã - \xF3 in Mac Roman, \xDB in Windows-1252
+ { 0x00DC, "u" }, // Ã - \x86 in Mac Roman, \xDC in Windows-1252
+ { 0x00DD, "y" }, // Ã - \xDD in Windows-1252
+ { 0x00DE, "\xC3\xBE" }, // Ã - \xDE in Windows-1252
+ { 0x00DF, "s" }, // Ã - \xDF in Windows-1252
+ { 0x00E0, "a" }, // Ã - \x88 in Mac Roman, \xE0 in Windows-1252
+ { 0x00E1, "a" }, // á - \x87 in Mac Roman, \xE1 in Windows-1252
+ { 0x00E2, "a" }, // â - \x89 in Mac Roman, \xE2 in Windows-1252
+ { 0x00E3, "a" }, // ã - \x8B in Mac Roman, \xE3 in Windows-1252
+ { 0x00E4, "a" }, // ä - \x8A in Mac Roman, \xE4 in Windows-1252
+ { 0x00E5, "a" }, // å - \x8C in Mac Roman, \xE5 in Windows-1252
+ { 0x00E6, "ae" }, // æ - \xBE in Mac Roman, \xE6 in Windows-1252
+ { 0x00E7, "c" }, // ç - \x8D in Mac Roman, \xE7 in Windows-1252
+ { 0x00E8, "e" }, // è - \x8F in Mac Roman, \xE8 in Windows-1252
+ { 0x00E9, "e" }, // é - \x8E in Mac Roman, \xE9 in Windows-1252
+ { 0x00EA, "e" }, // ê - \x90 in Mac Roman, \xEA in Windows-1252
+ { 0x00EB, "e" }, // ë - \x91 in Mac Roman, \xEB in Windows-1252
+ { 0x00EC, "i" }, // ì - \x93 in Mac Roman, \xEC in Windows-1252
+ { 0x00ED, "i" }, // Ã - \x92 in Mac Roman, \xED in Windows-1252
+ { 0x00EE, "i" }, // î - \x94 in Mac Roman, \xEE in Windows-1252
+ { 0x00EF, "i" }, // ï - \x95 in Mac Roman, \xEF in Windows-1252
+ { 0x00F0, "d" }, // ð - \xF0 in Windows-1252
+ { 0x00F1, "n" }, // ñ - \x96 in Mac Roman, \xF1 in Windows-1252
+ { 0x00F2, "o" }, // ò - \x98 in Mac Roman, \xF2 in Windows-1252
+ { 0x00F3, "o" }, // ó - \x97 in Mac Roman, \xF3 in Windows-1252
+ { 0x00F4, "o" }, // ô - \x99 in Mac Roman, \xF4 in Windows-1252
+ { 0x00F5, "o" }, // õ - \x9B in Mac Roman, \xF5 in Windows-1252
+ { 0x00F6, "o" }, // ö - \x9A in Mac Roman, \xF6 in Windows-1252
+ { 0x00F8, "o" }, // ø - \xBF in Mac Roman, \xF8 in Windows-1252
+ { 0x00F9, "u" }, // ù - \x9D in Mac Roman, \xF9 in Windows-1252
+ { 0x00FA, "u" }, // ú - \x9C in Mac Roman, \xFA in Windows-1252
+ { 0x00FB, "u" }, // û - \x9E in Mac Roman, \xFB in Windows-1252
+ { 0x00FC, "u" }, // ü - \x9F in Mac Roman, \xFC in Windows-1252
+ { 0x00FD, "y" }, // ý - \xFD in Windows-1252
+ { 0x00FF, "y" }, // ÿ - \xD8 in Mac Roman
+ { 0x0131, "i" }, // ı - \xF5 in Mac Roman
+ { 0x0152, "oe" }, // Å - \xCE in Mac Roman, \x8C in Windows-1252
+ { 0x0153, "oe" }, // Å - \xCF in Mac Roman, \x9C in Windows-1252
+ { 0x0160, "s" }, // Å - \x8A in Windows-1252
+ { 0x0161, "s" }, // Å¡ - \x9A in Windows-1252
+ { 0x0178, "y" }, // Ÿ - \xD9 in Mac Roman, \x9F in Windows-1252
+ { 0x017D, "z" }, // Ž - \x8E in Windows-1252
+ { 0x017E, "z" }, // ž - \x9E in Windows-1252
+ { 0xFB01, "fi" }, // ï¬ - \xDE in Mac Roman
+ { 0xFB02, "fl" }, // ï¬ - \xDF in Mac Roman
+ { 0, NULL }
+};
+
+void Lingo::initCharNormalizations() {
+ for (char ch = 'A'; ch <= 'Z'; ch++) {
+ _charNormalizations[ch] = Common::U32String(Common::String(tolower(ch)), Common::kUtf8);
+ }
+ for (CharNormProto *norm = charNormProtos; norm->to; norm++) {
+ _charNormalizations[norm->from] = Common::U32String(norm->to, Common::kUtf8);
+ }
+}
+
int calcStringAlignment(const char *s) {
return calcCodeAlignment(strlen(s) + 1);
}
@@ -178,6 +265,7 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) {
_compiler = new LingoCompiler;
initEventHandlerTypes();
+ initCharNormalizations();
initBuiltIns();
initFuncs();
@@ -942,7 +1030,7 @@ int Datum::equalTo(Datum &d, bool ignoreCase) const {
case STRING:
case SYMBOL:
if (ignoreCase) {
- return toLowercaseMac(asString()).equals(toLowercaseMac(d.asString()));
+ return g_lingo->normalizeString(asString()).equals(g_lingo->normalizeString(d.asString()));
} else {
return asString().equals(d.asString());
}
@@ -956,7 +1044,7 @@ int Datum::equalTo(Datum &d, bool ignoreCase) const {
return 0;
}
-int Datum::compareTo(Datum &d, bool ignoreCase) const {
+int Datum::compareTo(Datum &d) const {
int alignType = g_lingo->getAlignedType(*this, d, false);
if (alignType == FLOAT) {
@@ -980,11 +1068,7 @@ int Datum::compareTo(Datum &d, bool ignoreCase) const {
return 1;
}
} else if (alignType == STRING) {
- if (ignoreCase) {
- return toLowercaseMac(asString()).compareTo(toLowercaseMac(d.asString()));
- } else {
- return asString().compareTo(d.asString());
- }
+ return asString().compareTo(d.asString());
} else {
warning("Invalid comparison between types %s and %s", type2str(), d.type2str());
return 0;
@@ -1368,4 +1452,16 @@ CastMemberID Lingo::resolveCastMember(const Datum &memberID, const Datum &castLi
return CastMemberID(-1, castLib.asInt());
}
+Common::String Lingo::normalizeString(const Common::String &str) {
+ Common::U32String u32Str = str.decode(Common::kUtf8);
+ Common::U32String res;
+ for (const Common::u32char_type_t *ch = u32Str.c_str(); *ch; ch++) {
+ if (_charNormalizations.contains(*ch))
+ res += _charNormalizations[*ch];
+ else
+ res += *ch;
+ }
+ return res.encode(Common::kUtf8);
+}
+
} // End of namespace Director
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 5a4e3531df..d017358212 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -152,7 +152,7 @@ struct Datum { /* interpreter stack type */
const char *type2str(bool isk = false) const;
int equalTo(Datum &d, bool ignoreCase = false) const;
- int compareTo(Datum &d, bool ignoreCase = false) const;
+ int compareTo(Datum &d) const;
};
struct ChunkReference {
@@ -294,6 +294,8 @@ public:
Datum findVarV4(int varType, const Datum &id);
CastMemberID resolveCastMember(const Datum &memberID, const Datum &castLib);
+ Common::String normalizeString(const Common::String &str);
+
int getAlignedType(const Datum &d1, const Datum &d2, bool numsOnly);
void printAllVars();
@@ -426,6 +428,10 @@ public:
public:
void executeImmediateScripts(Frame *frame);
void executePerFrameHook(int frame, int subframe);
+
+private:
+ Common::HashMap<uint32, Common::U32String> _charNormalizations;
+ void initCharNormalizations();
};
extern Lingo *g_lingo;
diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index 22dc93314c..152a8c3054 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -216,48 +216,6 @@ Common::String CastMemberID::asString() const {
return res;
}
-// This is table for built-in Macintosh font lowercasing.
-// '.' means that the symbol should be not changed, rest
-// of the symbols are stripping the diacritics
-// The table starts from 0x80
-//
-// TODO: Check it for correctness.
-static char lowerCaseConvert[] =
-"aacenoua" // 80
-"aaaaacee" // 88
-"eeiiiino" // 90
-"oooouuuu" // 98
-"........" // a0
-".......o" // a8
-"........" // b0
-".......o" // b8
-"........" // c0
-".. aao.." // c8
-"--.....y";// d0-d8
-
-Common::String toLowercaseMac(const Common::String &s) {
- Common::String res;
- const unsigned char *p = (const unsigned char *)s.c_str();
-
- while (*p) {
- if (*p >= 0x80 && *p <= 0xd8) {
- if (lowerCaseConvert[*p - 0x80] != '.')
- res += lowerCaseConvert[*p - 0x80];
- else
- res += *p;
- } else if (*p < 0x80) {
- res += tolower(*p);
- } else {
- warning("Unacceptable symbol in toLowercaseMac: %c", *p);
-
- res += *p;
- }
- p++;
- }
-
- return res;
-}
-
Common::String convertPath(Common::String &path) {
if (path.empty())
return path;
diff --git a/engines/director/util.h b/engines/director/util.h
index fe71aeb863..0e0b12e735 100644
--- a/engines/director/util.h
+++ b/engines/director/util.h
@@ -32,8 +32,6 @@ namespace Director {
int castNumToNum(const char *str);
char *numToCastNum(int num);
-Common::String toLowercaseMac(const Common::String &s);
-
Common::String convertPath(Common::String &path);
Common::String unixToMacPath(const Common::String &path);
Commit: 163424abbbe0ddd5ebecd62d36858c4669701562
https://github.com/scummvm/scummvm/commit/163424abbbe0ddd5ebecd62d36858c4669701562
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: Set lingotests platform to Macintosh
We use Mac Roman encoding for these tests, so it makes sense to keep
this consistent.
Changed paths:
engines/director/detection_tables.h
diff --git a/engines/director/detection_tables.h b/engines/director/detection_tables.h
index be792bc8ac..e1488d3995 100644
--- a/engines/director/detection_tables.h
+++ b/engines/director/detection_tables.h
@@ -982,7 +982,7 @@ static const DirectorGameDescription gameDescriptions[] = {
"",
AD_ENTRY1("lingotests", 0),
Common::EN_ANY,
- Common::kPlatformWindows,
+ Common::kPlatformMacintosh,
ADGF_NO_FLAGS,
GUIO1(GUIO_NOASPECT)
},
Commit: b2988ce682ccfdda9c890feeb1a6021d296e5b8c
https://github.com/scummvm/scummvm/commit/b2988ce682ccfdda9c890feeb1a6021d296e5b8c
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
COMMON: Add constructor to make U32String from a character
Changed paths:
common/ustr.cpp
common/ustr.h
diff --git a/common/ustr.cpp b/common/ustr.cpp
index 15368c565f..19471cd2b5 100644
--- a/common/ustr.cpp
+++ b/common/ustr.cpp
@@ -49,6 +49,13 @@ U32String::U32String(const String &str, Common::CodePage page) : BaseString<u32c
decodeInternal(str.c_str(), str.size(), page);
}
+U32String::U32String(u32char_type_t c) : BaseString<u32char_type_t>() {
+ _storage[0] = c;
+ _storage[1] = 0;
+
+ _size = (c == 0) ? 0 : 1;
+}
+
U32String &U32String::operator=(const U32String &str) {
assign(str);
return *this;
diff --git a/common/ustr.h b/common/ustr.h
index ad7745f6cb..50a8073516 100644
--- a/common/ustr.h
+++ b/common/ustr.h
@@ -95,6 +95,9 @@ public:
/** Construct a copy of the given string. */
U32String(const String &str, CodePage page = kUtf8);
+ /** Construct a string consisting of the given character. */
+ explicit U32String(value_type c);
+
/** Assign a given string to this string. */
U32String &operator=(const U32String &str);
Commit: 8fcc186b089c6624c4a2fb3d9cc21dbc9d39cdee
https://github.com/scummvm/scummvm/commit/8fcc186b089c6624c4a2fb3d9cc21dbc9d39cdee
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: Add charToNum and numToChar helper functions
Changed paths:
engines/director/lingo/lingo-builtins.cpp
engines/director/util.cpp
engines/director/util.h
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 24ffc39b3c..dae8f301a3 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -480,20 +480,13 @@ void LB::b_charToNum(int nargs) {
TYPECHECK(d, STRING);
- Common::U32String src = d.asString().decode(Common::kUtf8);
- if (src.size() == 0) {
+ Common::U32String str = d.asString().decode(Common::kUtf8);
+ if (str.size() == 0) {
g_lingo->push(0);
return;
}
- Common::U32String ch = src.substr(0, 1);
- Common::String encodedCh = ch.encode(g_director->getPlatformEncoding());
- int res = 0;
- while (encodedCh.size()) {
- res = (res << 8) | (byte)encodedCh.firstChar();
- encodedCh.deleteChar(0);
- }
- g_lingo->push(res);
+ g_lingo->push(charToNum(str[0]));
}
void LB::b_length(int nargs) {
@@ -507,21 +500,7 @@ void LB::b_length(int nargs) {
void LB::b_numToChar(int nargs) {
int num = g_lingo->pop().asInt();
- if (num == 0) {
- g_lingo->push(Common::String());
- return;
- }
-
- Common::String encodedCh;
- while (num) {
- encodedCh.insertChar((char)(num & 0xFF), 0);
- num >>= 8;
- }
- Common::U32String ch = encodedCh.decode(g_director->getPlatformEncoding());
- while (ch.size() > 1) // we only want one character
- ch.deleteChar(0);
-
- g_lingo->push(ch.encode(Common::kUtf8));
+ g_lingo->push(Common::U32String(numToChar(num)).encode(Common::kUtf8));
}
void LB::b_offset(int nargs) {
diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index 152a8c3054..f8c45c9adb 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -742,4 +742,24 @@ Common::CodePage detectFontEncoding(Common::Platform platform, uint16 fontId) {
return getEncoding(platform, g_director->_wm->_fontMan->getFontLanguage(fontId));
}
+int charToNum(Common::u32char_type_t ch) {
+ Common::String encodedCh = Common::U32String(ch).encode(g_director->getPlatformEncoding());
+ int res = 0;
+ while (encodedCh.size()) {
+ res = (res << 8) | (byte)encodedCh.firstChar();
+ encodedCh.deleteChar(0);
+ }
+ return res;
+}
+
+Common::u32char_type_t numToChar(int num) {
+ Common::String encodedCh;
+ while (num) {
+ encodedCh.insertChar((char)(num & 0xFF), 0);
+ num >>= 8;
+ }
+ Common::U32String str = encodedCh.decode(g_director->getPlatformEncoding());
+ return str.lastChar();
+}
+
} // End of namespace Director
diff --git a/engines/director/util.h b/engines/director/util.h
index 0e0b12e735..84b59a339e 100644
--- a/engines/director/util.h
+++ b/engines/director/util.h
@@ -85,6 +85,9 @@ Common::Platform platformFromID(uint16 id);
Common::CodePage getEncoding(Common::Platform platform, Common::Language language);
Common::CodePage detectFontEncoding(Common::Platform platform, uint16 fontId);
+int charToNum(Common::u32char_type_t ch);
+Common::u32char_type_t numToChar(int num);
+
} // End of namespace Director
#endif
Commit: 664d2f257d7edc647a5803be2ca74df8eb2b95c2
https://github.com/scummvm/scummvm/commit/664d2f257d7edc647a5803be2ca74df8eb2b95c2
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Make compareTo handle Unicode
Changed paths:
engines/director/lingo/lingo.cpp
engines/director/util.cpp
engines/director/util.h
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index e14356ff21..69a02c8cbd 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -1068,7 +1068,7 @@ int Datum::compareTo(Datum &d) const {
return 1;
}
} else if (alignType == STRING) {
- return asString().compareTo(d.asString());
+ return compareStrings(asString(), d.asString());
} else {
warning("Invalid comparison between types %s and %s", type2str(), d.type2str());
return 0;
diff --git a/engines/director/util.cpp b/engines/director/util.cpp
index f8c45c9adb..a09f8a0250 100644
--- a/engines/director/util.cpp
+++ b/engines/director/util.cpp
@@ -762,4 +762,17 @@ Common::u32char_type_t numToChar(int num) {
return str.lastChar();
}
+int compareStrings(const Common::String &s1, const Common::String &s2) {
+ Common::U32String u32S1 = s1.decode(Common::kUtf8);
+ Common::U32String u32S2 = s2.decode(Common::kUtf8);
+ const Common::u32char_type_t *p1 = u32S1.c_str();
+ const Common::u32char_type_t *p2 = u32S2.c_str();
+ uint32 c1, c2;
+ while ((c1 = charToNum(*p1)) && (c2 = charToNum(*p2)) && c1 == c2) {
+ p1++;
+ p2++;
+ }
+ return c1 - c2;
+}
+
} // End of namespace Director
diff --git a/engines/director/util.h b/engines/director/util.h
index 84b59a339e..41055d2f98 100644
--- a/engines/director/util.h
+++ b/engines/director/util.h
@@ -87,6 +87,7 @@ Common::CodePage detectFontEncoding(Common::Platform platform, uint16 fontId);
int charToNum(Common::u32char_type_t ch);
Common::u32char_type_t numToChar(int num);
+int compareStrings(const Common::String &s1, const Common::String &s2);
} // End of namespace Director
Commit: 835414022766e1ddc3d5ebe3103d95e12a2ff24a
https://github.com/scummvm/scummvm/commit/835414022766e1ddc3d5ebe3103d95e12a2ff24a
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Fix getting the itemDelimiter
Changed paths:
engines/director/lingo/lingo-the.cpp
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 23a0e2a7f0..6a15b2b8ee 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -483,8 +483,7 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
break;
case kTheItemDelimiter:
{
- Common::U32String ch;
- ch.setChar(0, g_lingo->_itemDelimiter);
+ Common::U32String ch(g_lingo->_itemDelimiter);
d.type = STRING;
d.u.s = new Common::String(ch, Common::kUtf8);
}
Commit: fc25ba3af5a272b841c95ecb3ea166a56c9985ae
https://github.com/scummvm/scummvm/commit/fc25ba3af5a272b841c95ecb3ea166a56c9985ae
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: Keep original line endings in STXT
Changed paths:
engines/director/stxt.cpp
diff --git a/engines/director/stxt.cpp b/engines/director/stxt.cpp
index ba4a824297..1d39cfaa69 100644
--- a/engines/director/stxt.cpp
+++ b/engines/director/stxt.cpp
@@ -49,15 +49,7 @@ Stxt::Stxt(Cast *cast, Common::SeekableReadStreamEndian &textStream) : _cast(cas
}
uint32 strLen = textStream.readUint32();
uint32 dataLen = textStream.readUint32();
- Common::String text;
-
- for (uint32 i = 0; i < strLen; i++) {
- byte ch = textStream.readByte();
- if (ch == 0x0d) {
- ch = '\n';
- }
- text += ch;
- }
+ Common::String text = textStream.readString(0, strLen);
debugC(3, kDebugText, "Stxt init: offset: %d strLen: %d dataLen: %d textlen: %u", offset, strLen, dataLen, text.size());
uint16 formattingCount = textStream.readUint16();
Commit: 04f16d2a1757471672d9eb1e490c8edef6cb7a26
https://github.com/scummvm/scummvm/commit/04f16d2a1757471672d9eb1e490c8edef6cb7a26
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Move char normalizations to lingo-utils.cpp
Changed paths:
A engines/director/lingo/lingo-utils.cpp
engines/director/lingo/lingo.cpp
engines/director/lingo/lingo.h
engines/director/module.mk
diff --git a/engines/director/lingo/lingo-utils.cpp b/engines/director/lingo/lingo-utils.cpp
new file mode 100644
index 0000000000..0b06cd2ba6
--- /dev/null
+++ b/engines/director/lingo/lingo-utils.cpp
@@ -0,0 +1,126 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "director/lingo/lingo.h"
+
+namespace Director {
+
+static struct CharNormProto {
+ Common::u32char_type_t from;
+ const char *to;
+} charNormProtos[] = {
+ { 0x00C0, "a" }, // Ã - \xCB in Mac Roman, \xC0 in Windows-1252
+ { 0x00C1, "a" }, // Ã - \xE7 in Mac Roman, \xC1 in Windows-1252
+ { 0x00C2, "a" }, // Ã - \xE5 in Mac Roman, \xC2 in Windows-1252
+ { 0x00C3, "a" }, // Ã - \xCC in Mac Roman, \xC3 in Windows-1252
+ { 0x00C4, "a" }, // Ã - \x80 in Mac Roman, \xC4 in Windows-1252
+ { 0x00C5, "a" }, // Ã
- \x81 in Mac Roman, \xC5 in Windows-1252
+ { 0x00C6, "ae" }, // Ã - \xAE in Mac Roman, \xC6 in Windows-1252
+ { 0x00C7, "c" }, // Ã - \x82 in Mac Roman, \xC7 in Windows-1252
+ { 0x00C8, "e" }, // Ã - \xE9 in Mac Roman, \xC8 in Windows-1252
+ { 0x00C9, "e" }, // Ã - \x83 in Mac Roman, \xC9 in Windows-1252
+ { 0x00CA, "e" }, // Ã - \xE6 in Mac Roman, \xCA in Windows-1252
+ { 0x00CB, "e" }, // Ã - \xE8 in Mac Roman, \xCB in Windows-1252
+ { 0x00CC, "i" }, // Ã - \xED in Mac Roman, \xCC in Windows-1252
+ { 0x00CD, "i" }, // Ã - \xEA in Mac Roman, \xCD in Windows-1252
+ { 0x00CE, "i" }, // Ã - \xEB in Mac Roman, \xCE in Windows-1252
+ { 0x00CF, "i" }, // Ã - \xEC in Mac Roman, \xCF in Windows-1252
+ { 0x00D0, "d" }, // Ã - \xD0 in Windows-1252
+ { 0x00D1, "n" }, // Ã - \x84 in Mac Roman, \xD1 in Windows-1252
+ { 0x00D2, "o" }, // Ã - \xF1 in Mac Roman, \xD2 in Windows-1252
+ { 0x00D3, "o" }, // Ã - \xEE in Mac Roman, \xD3 in Windows-1252
+ { 0x00D4, "o" }, // Ã - \xEF in Mac Roman, \xD4 in Windows-1252
+ { 0x00D5, "o" }, // Ã - \xCD in Mac Roman, \xD5 in Windows-1252
+ { 0x00D6, "o" }, // Ã - \x85 in Mac Roman, \xD6 in Windows-1252
+ { 0x00D8, "o" }, // Ã - \xAF in Mac Roman, \xD8 in Windows-1252
+ { 0x00D9, "u" }, // Ã - \xF4 in Mac Roman, \xD9 in Windows-1252
+ { 0x00DA, "u" }, // Ã - \xF2 in Mac Roman, \xDA in Windows-1252
+ { 0x00DB, "u" }, // Ã - \xF3 in Mac Roman, \xDB in Windows-1252
+ { 0x00DC, "u" }, // Ã - \x86 in Mac Roman, \xDC in Windows-1252
+ { 0x00DD, "y" }, // Ã - \xDD in Windows-1252
+ { 0x00DE, "\xC3\xBE" }, // Ã - \xDE in Windows-1252
+ { 0x00DF, "s" }, // Ã - \xDF in Windows-1252
+ { 0x00E0, "a" }, // Ã - \x88 in Mac Roman, \xE0 in Windows-1252
+ { 0x00E1, "a" }, // á - \x87 in Mac Roman, \xE1 in Windows-1252
+ { 0x00E2, "a" }, // â - \x89 in Mac Roman, \xE2 in Windows-1252
+ { 0x00E3, "a" }, // ã - \x8B in Mac Roman, \xE3 in Windows-1252
+ { 0x00E4, "a" }, // ä - \x8A in Mac Roman, \xE4 in Windows-1252
+ { 0x00E5, "a" }, // å - \x8C in Mac Roman, \xE5 in Windows-1252
+ { 0x00E6, "ae" }, // æ - \xBE in Mac Roman, \xE6 in Windows-1252
+ { 0x00E7, "c" }, // ç - \x8D in Mac Roman, \xE7 in Windows-1252
+ { 0x00E8, "e" }, // è - \x8F in Mac Roman, \xE8 in Windows-1252
+ { 0x00E9, "e" }, // é - \x8E in Mac Roman, \xE9 in Windows-1252
+ { 0x00EA, "e" }, // ê - \x90 in Mac Roman, \xEA in Windows-1252
+ { 0x00EB, "e" }, // ë - \x91 in Mac Roman, \xEB in Windows-1252
+ { 0x00EC, "i" }, // ì - \x93 in Mac Roman, \xEC in Windows-1252
+ { 0x00ED, "i" }, // Ã - \x92 in Mac Roman, \xED in Windows-1252
+ { 0x00EE, "i" }, // î - \x94 in Mac Roman, \xEE in Windows-1252
+ { 0x00EF, "i" }, // ï - \x95 in Mac Roman, \xEF in Windows-1252
+ { 0x00F0, "d" }, // ð - \xF0 in Windows-1252
+ { 0x00F1, "n" }, // ñ - \x96 in Mac Roman, \xF1 in Windows-1252
+ { 0x00F2, "o" }, // ò - \x98 in Mac Roman, \xF2 in Windows-1252
+ { 0x00F3, "o" }, // ó - \x97 in Mac Roman, \xF3 in Windows-1252
+ { 0x00F4, "o" }, // ô - \x99 in Mac Roman, \xF4 in Windows-1252
+ { 0x00F5, "o" }, // õ - \x9B in Mac Roman, \xF5 in Windows-1252
+ { 0x00F6, "o" }, // ö - \x9A in Mac Roman, \xF6 in Windows-1252
+ { 0x00F8, "o" }, // ø - \xBF in Mac Roman, \xF8 in Windows-1252
+ { 0x00F9, "u" }, // ù - \x9D in Mac Roman, \xF9 in Windows-1252
+ { 0x00FA, "u" }, // ú - \x9C in Mac Roman, \xFA in Windows-1252
+ { 0x00FB, "u" }, // û - \x9E in Mac Roman, \xFB in Windows-1252
+ { 0x00FC, "u" }, // ü - \x9F in Mac Roman, \xFC in Windows-1252
+ { 0x00FD, "y" }, // ý - \xFD in Windows-1252
+ { 0x00FF, "y" }, // ÿ - \xD8 in Mac Roman
+ { 0x0131, "i" }, // ı - \xF5 in Mac Roman
+ { 0x0152, "oe" }, // Å - \xCE in Mac Roman, \x8C in Windows-1252
+ { 0x0153, "oe" }, // Å - \xCF in Mac Roman, \x9C in Windows-1252
+ { 0x0160, "s" }, // Å - \x8A in Windows-1252
+ { 0x0161, "s" }, // Å¡ - \x9A in Windows-1252
+ { 0x0178, "y" }, // Ÿ - \xD9 in Mac Roman, \x9F in Windows-1252
+ { 0x017D, "z" }, // Ž - \x8E in Windows-1252
+ { 0x017E, "z" }, // ž - \x9E in Windows-1252
+ { 0xFB01, "fi" }, // ï¬ - \xDE in Mac Roman
+ { 0xFB02, "fl" }, // ï¬ - \xDF in Mac Roman
+ { 0, NULL }
+};
+
+void Lingo::initCharNormalizations() {
+ for (char ch = 'A'; ch <= 'Z'; ch++) {
+ _charNormalizations[ch] = Common::U32String(Common::String(tolower(ch)), Common::kUtf8);
+ }
+ for (CharNormProto *norm = charNormProtos; norm->to; norm++) {
+ _charNormalizations[norm->from] = Common::U32String(norm->to, Common::kUtf8);
+ }
+}
+
+Common::String Lingo::normalizeString(const Common::String &str) {
+ Common::U32String u32Str = str.decode(Common::kUtf8);
+ Common::U32String res;
+ for (const Common::u32char_type_t *ch = u32Str.c_str(); *ch; ch++) {
+ if (_charNormalizations.contains(*ch))
+ res += _charNormalizations[*ch];
+ else
+ res += *ch;
+ }
+ return res.encode(Common::kUtf8);
+}
+
+} // End of namespace Director
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 69a02c8cbd..91328bdc26 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -46,93 +46,6 @@ namespace Director {
Lingo *g_lingo;
-static struct CharNormProto {
- Common::u32char_type_t from;
- const char *to;
-} charNormProtos[] = {
- { 0x00C0, "a" }, // Ã - \xCB in Mac Roman, \xC0 in Windows-1252
- { 0x00C1, "a" }, // Ã - \xE7 in Mac Roman, \xC1 in Windows-1252
- { 0x00C2, "a" }, // Ã - \xE5 in Mac Roman, \xC2 in Windows-1252
- { 0x00C3, "a" }, // Ã - \xCC in Mac Roman, \xC3 in Windows-1252
- { 0x00C4, "a" }, // Ã - \x80 in Mac Roman, \xC4 in Windows-1252
- { 0x00C5, "a" }, // Ã
- \x81 in Mac Roman, \xC5 in Windows-1252
- { 0x00C6, "ae" }, // Ã - \xAE in Mac Roman, \xC6 in Windows-1252
- { 0x00C7, "c" }, // Ã - \x82 in Mac Roman, \xC7 in Windows-1252
- { 0x00C8, "e" }, // Ã - \xE9 in Mac Roman, \xC8 in Windows-1252
- { 0x00C9, "e" }, // Ã - \x83 in Mac Roman, \xC9 in Windows-1252
- { 0x00CA, "e" }, // Ã - \xE6 in Mac Roman, \xCA in Windows-1252
- { 0x00CB, "e" }, // Ã - \xE8 in Mac Roman, \xCB in Windows-1252
- { 0x00CC, "i" }, // Ã - \xED in Mac Roman, \xCC in Windows-1252
- { 0x00CD, "i" }, // Ã - \xEA in Mac Roman, \xCD in Windows-1252
- { 0x00CE, "i" }, // Ã - \xEB in Mac Roman, \xCE in Windows-1252
- { 0x00CF, "i" }, // Ã - \xEC in Mac Roman, \xCF in Windows-1252
- { 0x00D0, "d" }, // Ã - \xD0 in Windows-1252
- { 0x00D1, "n" }, // Ã - \x84 in Mac Roman, \xD1 in Windows-1252
- { 0x00D2, "o" }, // Ã - \xF1 in Mac Roman, \xD2 in Windows-1252
- { 0x00D3, "o" }, // Ã - \xEE in Mac Roman, \xD3 in Windows-1252
- { 0x00D4, "o" }, // Ã - \xEF in Mac Roman, \xD4 in Windows-1252
- { 0x00D5, "o" }, // Ã - \xCD in Mac Roman, \xD5 in Windows-1252
- { 0x00D6, "o" }, // Ã - \x85 in Mac Roman, \xD6 in Windows-1252
- { 0x00D8, "o" }, // Ã - \xAF in Mac Roman, \xD8 in Windows-1252
- { 0x00D9, "u" }, // Ã - \xF4 in Mac Roman, \xD9 in Windows-1252
- { 0x00DA, "u" }, // Ã - \xF2 in Mac Roman, \xDA in Windows-1252
- { 0x00DB, "u" }, // Ã - \xF3 in Mac Roman, \xDB in Windows-1252
- { 0x00DC, "u" }, // Ã - \x86 in Mac Roman, \xDC in Windows-1252
- { 0x00DD, "y" }, // Ã - \xDD in Windows-1252
- { 0x00DE, "\xC3\xBE" }, // Ã - \xDE in Windows-1252
- { 0x00DF, "s" }, // Ã - \xDF in Windows-1252
- { 0x00E0, "a" }, // Ã - \x88 in Mac Roman, \xE0 in Windows-1252
- { 0x00E1, "a" }, // á - \x87 in Mac Roman, \xE1 in Windows-1252
- { 0x00E2, "a" }, // â - \x89 in Mac Roman, \xE2 in Windows-1252
- { 0x00E3, "a" }, // ã - \x8B in Mac Roman, \xE3 in Windows-1252
- { 0x00E4, "a" }, // ä - \x8A in Mac Roman, \xE4 in Windows-1252
- { 0x00E5, "a" }, // å - \x8C in Mac Roman, \xE5 in Windows-1252
- { 0x00E6, "ae" }, // æ - \xBE in Mac Roman, \xE6 in Windows-1252
- { 0x00E7, "c" }, // ç - \x8D in Mac Roman, \xE7 in Windows-1252
- { 0x00E8, "e" }, // è - \x8F in Mac Roman, \xE8 in Windows-1252
- { 0x00E9, "e" }, // é - \x8E in Mac Roman, \xE9 in Windows-1252
- { 0x00EA, "e" }, // ê - \x90 in Mac Roman, \xEA in Windows-1252
- { 0x00EB, "e" }, // ë - \x91 in Mac Roman, \xEB in Windows-1252
- { 0x00EC, "i" }, // ì - \x93 in Mac Roman, \xEC in Windows-1252
- { 0x00ED, "i" }, // Ã - \x92 in Mac Roman, \xED in Windows-1252
- { 0x00EE, "i" }, // î - \x94 in Mac Roman, \xEE in Windows-1252
- { 0x00EF, "i" }, // ï - \x95 in Mac Roman, \xEF in Windows-1252
- { 0x00F0, "d" }, // ð - \xF0 in Windows-1252
- { 0x00F1, "n" }, // ñ - \x96 in Mac Roman, \xF1 in Windows-1252
- { 0x00F2, "o" }, // ò - \x98 in Mac Roman, \xF2 in Windows-1252
- { 0x00F3, "o" }, // ó - \x97 in Mac Roman, \xF3 in Windows-1252
- { 0x00F4, "o" }, // ô - \x99 in Mac Roman, \xF4 in Windows-1252
- { 0x00F5, "o" }, // õ - \x9B in Mac Roman, \xF5 in Windows-1252
- { 0x00F6, "o" }, // ö - \x9A in Mac Roman, \xF6 in Windows-1252
- { 0x00F8, "o" }, // ø - \xBF in Mac Roman, \xF8 in Windows-1252
- { 0x00F9, "u" }, // ù - \x9D in Mac Roman, \xF9 in Windows-1252
- { 0x00FA, "u" }, // ú - \x9C in Mac Roman, \xFA in Windows-1252
- { 0x00FB, "u" }, // û - \x9E in Mac Roman, \xFB in Windows-1252
- { 0x00FC, "u" }, // ü - \x9F in Mac Roman, \xFC in Windows-1252
- { 0x00FD, "y" }, // ý - \xFD in Windows-1252
- { 0x00FF, "y" }, // ÿ - \xD8 in Mac Roman
- { 0x0131, "i" }, // ı - \xF5 in Mac Roman
- { 0x0152, "oe" }, // Å - \xCE in Mac Roman, \x8C in Windows-1252
- { 0x0153, "oe" }, // Å - \xCF in Mac Roman, \x9C in Windows-1252
- { 0x0160, "s" }, // Å - \x8A in Windows-1252
- { 0x0161, "s" }, // Å¡ - \x9A in Windows-1252
- { 0x0178, "y" }, // Ÿ - \xD9 in Mac Roman, \x9F in Windows-1252
- { 0x017D, "z" }, // Ž - \x8E in Windows-1252
- { 0x017E, "z" }, // ž - \x9E in Windows-1252
- { 0xFB01, "fi" }, // ï¬ - \xDE in Mac Roman
- { 0xFB02, "fl" }, // ï¬ - \xDF in Mac Roman
- { 0, NULL }
-};
-
-void Lingo::initCharNormalizations() {
- for (char ch = 'A'; ch <= 'Z'; ch++) {
- _charNormalizations[ch] = Common::U32String(Common::String(tolower(ch)), Common::kUtf8);
- }
- for (CharNormProto *norm = charNormProtos; norm->to; norm++) {
- _charNormalizations[norm->from] = Common::U32String(norm->to, Common::kUtf8);
- }
-}
-
int calcStringAlignment(const char *s) {
return calcCodeAlignment(strlen(s) + 1);
}
@@ -1452,16 +1365,4 @@ CastMemberID Lingo::resolveCastMember(const Datum &memberID, const Datum &castLi
return CastMemberID(-1, castLib.asInt());
}
-Common::String Lingo::normalizeString(const Common::String &str) {
- Common::U32String u32Str = str.decode(Common::kUtf8);
- Common::U32String res;
- for (const Common::u32char_type_t *ch = u32Str.c_str(); *ch; ch++) {
- if (_charNormalizations.contains(*ch))
- res += _charNormalizations[*ch];
- else
- res += *ch;
- }
- return res.encode(Common::kUtf8);
-}
-
} // End of namespace Director
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index d017358212..7779bed1f4 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -294,8 +294,6 @@ public:
Datum findVarV4(int varType, const Datum &id);
CastMemberID resolveCastMember(const Datum &memberID, const Datum &castLib);
- Common::String normalizeString(const Common::String &str);
-
int getAlignedType(const Datum &d1, const Datum &d2, bool numsOnly);
void printAllVars();
@@ -429,9 +427,13 @@ public:
void executeImmediateScripts(Frame *frame);
void executePerFrameHook(int frame, int subframe);
+ // lingo-utils.cpp
private:
Common::HashMap<uint32, Common::U32String> _charNormalizations;
void initCharNormalizations();
+
+public:
+ Common::String normalizeString(const Common::String &str);
};
extern Lingo *g_lingo;
diff --git a/engines/director/module.mk b/engines/director/module.mk
index e220ea98c3..c15ae002b7 100644
--- a/engines/director/module.mk
+++ b/engines/director/module.mk
@@ -36,6 +36,7 @@ MODULE_OBJS = \
lingo/lingo-patcher.o \
lingo/lingo-preprocessor.o \
lingo/lingo-the.o \
+ lingo/lingo-utils.o \
lingo/xlibs/fileio.o \
lingo/xlibs/flushxobj.o \
lingo/xlibs/fplayxobj.o \
Commit: 6a2697e2ded0183a37b54780b189f8de975a5a75
https://github.com/scummvm/scummvm/commit/6a2697e2ded0183a37b54780b189f8de975a5a75
Author: djsrv (dservilla at gmail.com)
Date: 2021-07-15T16:31:47-04:00
Commit Message:
DIRECTOR: LINGO: Restore use of strchr in isspec
Changed paths:
engines/director/lingo/lingo-preprocessor.cpp
diff --git a/engines/director/lingo/lingo-preprocessor.cpp b/engines/director/lingo/lingo-preprocessor.cpp
index 9c6a172815..f485e9b741 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -27,28 +27,10 @@
namespace Director {
bool isspec(Common::u32char_type_t c) {
- switch (c) {
- case '-':
- case '+':
- case '*':
- case '/':
- case '%':
- case '^':
- case ':':
- case ',':
- case '(':
- case ')':
- case '>':
- case '<':
- case '&':
- case '[':
- case ']':
- case '=':
- return true;
- default:
- break;
- }
- return false;
+ if (c > 127)
+ return false;
+
+ return strchr("-+*/%^:,()><&[]=", (char)c) != NULL;
}
static Common::U32String nexttok(const Common::u32char_type_t *s, const Common::u32char_type_t **newP = nullptr) {
More information about the Scummvm-git-logs
mailing list