From 2c69ffc3ff4d14dd56616a5e35f5ee60dcf08e5a Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 9 Jan 2017 23:23:51 +0100 Subject: [PATCH] DIRECTOR: Lingo: Added stub for handling symbols --- engines/director/lingo/lingo-code.cpp | 11 + engines/director/lingo/lingo-gr.cpp | 984 +++++++++++++------------- engines/director/lingo/lingo-gr.y | 5 +- engines/director/lingo/lingo-lex.cpp | 686 +++++++++--------- engines/director/lingo/lingo-lex.l | 2 + engines/director/lingo/lingo.h | 1 + 6 files changed, 863 insertions(+), 826 deletions(-) diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index c9f9c14e8497..77677402031f 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -60,6 +60,7 @@ static struct FuncDescr { { Lingo::c_voidpush, "c_voidpush", "" }, { Lingo::c_fconstpush, "c_fconstpush", "f" }, { Lingo::c_stringpush, "c_stringpush", "s" }, + { Lingo::c_symbolpush, "c_symbolpush","s" }, { Lingo::c_varpush, "c_varpush", "s" }, { Lingo::c_assign, "c_assign", "" }, { Lingo::c_eval, "c_eval", "s" }, @@ -212,6 +213,16 @@ void Lingo::c_stringpush() { g_lingo->push(Datum(new Common::String(s))); } +void Lingo::c_symbolpush() { + char *s = (char *)&(*g_lingo->_currentScript)[g_lingo->_pc]; + g_lingo->_pc += g_lingo->calcStringAlignment(s); + + warning("STUB: c_symbolpush()"); + + // TODO: FIXME: Must push symbol instead of string + g_lingo->push(Datum(new Common::String(s))); +} + void Lingo::c_varpush() { char *name = (char *)&(*g_lingo->_currentScript)[g_lingo->_pc]; Datum d; diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index ab17a35691a2..97a676e68217 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -494,18 +494,18 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 96 +#define YYFINAL 97 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1029 +#define YYLAST 1030 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 87 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 39 /* YYNRULES -- Number of rules. */ -#define YYNRULES 134 +#define YYNRULES 135 /* YYNRULES -- Number of states. */ -#define YYNSTATES 282 +#define YYNSTATES 283 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -563,14 +563,14 @@ static const yytype_uint16 yyprhs[] = 141, 148, 159, 170, 171, 175, 178, 180, 183, 185, 192, 194, 200, 202, 206, 210, 213, 217, 219, 221, 222, 223, 224, 227, 230, 234, 236, 238, 240, 242, - 247, 249, 251, 254, 256, 260, 264, 268, 272, 276, - 280, 284, 288, 292, 296, 300, 304, 307, 311, 315, - 319, 323, 326, 329, 333, 338, 343, 346, 348, 350, - 353, 355, 358, 361, 364, 367, 369, 372, 377, 380, - 384, 386, 390, 392, 396, 399, 402, 405, 408, 412, - 415, 418, 420, 424, 427, 430, 433, 437, 440, 441, - 450, 453, 454, 463, 464, 465, 476, 477, 479, 483, - 488, 489, 493, 494, 496 + 244, 249, 251, 253, 256, 258, 262, 266, 270, 274, + 278, 282, 286, 290, 294, 298, 302, 306, 309, 313, + 317, 321, 325, 328, 331, 335, 340, 345, 348, 350, + 352, 355, 357, 360, 363, 366, 369, 371, 374, 379, + 382, 386, 388, 392, 394, 398, 401, 404, 407, 410, + 414, 417, 420, 422, 426, 429, 432, 435, 439, 442, + 443, 452, 455, 456, 465, 466, 467, 478, 479, 481, + 485, 490, 491, 495, 496, 498 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -599,33 +599,34 @@ static const yytype_int8 yyrhs[] = 109, -1, 109, 74, 109, -1, 82, 100, 83, -1, 41, 47, -1, 41, 46, 21, -1, 32, -1, 26, -1, -1, -1, -1, 107, 89, -1, 107, 93, -1, - 45, 21, 43, -1, 12, -1, 15, -1, 22, -1, - 17, -1, 21, 82, 125, 83, -1, 21, -1, 13, - -1, 14, 109, -1, 91, -1, 109, 76, 109, -1, - 109, 77, 109, -1, 109, 78, 109, -1, 109, 79, - 109, -1, 109, 65, 109, -1, 109, 84, 109, -1, - 109, 85, 109, -1, 109, 61, 109, -1, 109, 56, - 109, -1, 109, 57, 109, -1, 109, 62, 109, -1, - 109, 63, 109, -1, 64, 109, -1, 109, 75, 109, - -1, 109, 66, 109, -1, 109, 67, 109, -1, 109, - 68, 109, -1, 76, 109, -1, 77, 109, -1, 82, - 109, 83, -1, 69, 109, 70, 109, -1, 69, 109, - 71, 109, -1, 40, 109, -1, 113, -1, 116, -1, - 28, 41, -1, 28, -1, 30, 111, -1, 55, 112, - -1, 19, 109, -1, 18, 109, -1, 18, -1, 20, - 125, -1, 51, 109, 46, 109, -1, 51, 109, -1, - 73, 21, 125, -1, 21, -1, 111, 86, 21, -1, - 21, -1, 112, 86, 21, -1, 31, 34, -1, 31, - 37, -1, 31, 39, -1, 31, 114, -1, 31, 114, - 115, -1, 31, 115, -1, 29, 109, -1, 109, -1, - 38, 36, 109, -1, 36, 109, -1, 52, 53, -1, - 52, 114, -1, 52, 114, 115, -1, 52, 115, -1, - -1, 35, 21, 118, 105, 122, 89, 123, 107, -1, - 49, 21, -1, -1, 50, 21, 119, 105, 122, 89, - 123, 107, -1, -1, -1, 72, 21, 120, 105, 121, - 122, 89, 123, 107, 27, -1, -1, 21, -1, 122, - 86, 21, -1, 122, 89, 86, 21, -1, -1, 21, - 105, 125, -1, -1, 109, -1, 125, 86, 109, -1 + 45, 21, 43, -1, 12, -1, 15, -1, 10, -1, + 22, -1, 17, -1, 21, 82, 125, 83, -1, 21, + -1, 13, -1, 14, 109, -1, 91, -1, 109, 76, + 109, -1, 109, 77, 109, -1, 109, 78, 109, -1, + 109, 79, 109, -1, 109, 65, 109, -1, 109, 84, + 109, -1, 109, 85, 109, -1, 109, 61, 109, -1, + 109, 56, 109, -1, 109, 57, 109, -1, 109, 62, + 109, -1, 109, 63, 109, -1, 64, 109, -1, 109, + 75, 109, -1, 109, 66, 109, -1, 109, 67, 109, + -1, 109, 68, 109, -1, 76, 109, -1, 77, 109, + -1, 82, 109, 83, -1, 69, 109, 70, 109, -1, + 69, 109, 71, 109, -1, 40, 109, -1, 113, -1, + 116, -1, 28, 41, -1, 28, -1, 30, 111, -1, + 55, 112, -1, 19, 109, -1, 18, 109, -1, 18, + -1, 20, 125, -1, 51, 109, 46, 109, -1, 51, + 109, -1, 73, 21, 125, -1, 21, -1, 111, 86, + 21, -1, 21, -1, 112, 86, 21, -1, 31, 34, + -1, 31, 37, -1, 31, 39, -1, 31, 114, -1, + 31, 114, 115, -1, 31, 115, -1, 29, 109, -1, + 109, -1, 38, 36, 109, -1, 36, 109, -1, 52, + 53, -1, 52, 114, -1, 52, 114, 115, -1, 52, + 115, -1, -1, 35, 21, 118, 105, 122, 89, 123, + 107, -1, 49, 21, -1, -1, 50, 21, 119, 105, + 122, 89, 123, 107, -1, -1, -1, 72, 21, 120, + 105, 121, 122, 89, 123, 107, 27, -1, -1, 21, + -1, 122, 86, 21, -1, 122, 89, 86, 21, -1, + -1, 21, 105, 125, -1, -1, 109, -1, 125, 86, + 109, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -637,14 +638,14 @@ static const yytype_uint16 yyrline[] = 256, 266, 276, 287, 288, 291, 292, 295, 296, 299, 307, 308, 316, 317, 318, 320, 322, 328, 334, 341, 343, 345, 346, 347, 350, 356, 357, 360, 363, 366, - 369, 373, 380, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 411, 412, 413, 414, - 415, 417, 418, 419, 422, 425, 428, 429, 430, 431, - 434, 435, 438, 439, 450, 451, 452, 453, 456, 459, - 464, 465, 468, 469, 472, 473, 476, 479, 509, 509, - 515, 518, 518, 523, 524, 523, 536, 537, 538, 539, - 541, 545, 553, 554, 555 + 369, 372, 376, 383, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 414, 415, 416, + 417, 418, 420, 421, 422, 425, 428, 431, 432, 433, + 434, 437, 438, 441, 442, 453, 454, 455, 456, 459, + 462, 467, 468, 471, 472, 475, 476, 479, 482, 512, + 512, 518, 521, 521, 526, 527, 526, 539, 540, 541, + 542, 544, 548, 556, 557, 558 }; #endif @@ -703,12 +704,12 @@ static const yytype_uint8 yyr1[] = 106, 107, 107, 107, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 110, 110, 110, 110, + 109, 109, 109, 109, 109, 109, 109, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 111, 111, 112, 112, 113, 113, 113, 113, 113, 113, - 114, 114, 115, 115, 116, 116, 116, 116, 118, 117, - 117, 119, 117, 120, 121, 117, 122, 122, 122, 122, - 123, 124, 125, 125, 125 + 110, 111, 111, 112, 112, 113, 113, 113, 113, 113, + 113, 114, 114, 115, 115, 116, 116, 116, 116, 118, + 117, 117, 119, 117, 120, 121, 117, 122, 122, 122, + 122, 123, 124, 125, 125, 125 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -719,15 +720,15 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 8, 11, 12, 3, 8, 11, 11, 6, 10, 10, 0, 3, 2, 1, 2, 1, 6, 1, 5, 1, 3, 3, 2, 3, 1, 1, 0, - 0, 0, 2, 2, 3, 1, 1, 1, 1, 4, - 1, 1, 2, 1, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, - 3, 2, 2, 3, 4, 4, 2, 1, 1, 2, - 1, 2, 2, 2, 2, 1, 2, 4, 2, 3, - 1, 3, 1, 3, 2, 2, 2, 2, 3, 2, - 2, 1, 3, 2, 2, 2, 3, 2, 0, 8, - 2, 0, 8, 0, 0, 10, 0, 1, 3, 4, - 0, 3, 0, 1, 3 + 0, 0, 2, 2, 3, 1, 1, 1, 1, 1, + 4, 1, 1, 2, 1, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, + 3, 3, 2, 2, 3, 4, 4, 2, 1, 1, + 2, 1, 2, 2, 2, 2, 1, 2, 4, 2, + 3, 1, 3, 1, 3, 2, 2, 2, 2, 3, + 2, 2, 1, 3, 2, 2, 2, 3, 2, 0, + 8, 2, 0, 8, 0, 0, 10, 0, 1, 3, + 4, 0, 3, 0, 1, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -735,343 +736,345 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 55, 61, 0, 56, 58, 95, 0, 132, - 49, 57, 90, 0, 0, 47, 0, 0, 0, 0, + 0, 0, 57, 55, 62, 0, 56, 59, 96, 0, + 133, 49, 58, 91, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 63, 21, 11, 22, 0, - 0, 0, 0, 19, 8, 87, 88, 7, 9, 5, - 4, 60, 0, 63, 62, 94, 93, 133, 96, 132, - 132, 89, 100, 91, 0, 104, 0, 105, 0, 106, - 111, 107, 109, 118, 86, 0, 45, 0, 0, 0, - 0, 120, 121, 98, 114, 115, 117, 102, 92, 76, - 0, 123, 132, 81, 82, 0, 1, 6, 0, 0, - 0, 0, 42, 50, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 64, 21, 11, 22, + 0, 0, 0, 0, 19, 8, 88, 89, 7, 9, + 5, 4, 61, 0, 64, 63, 95, 94, 134, 97, + 133, 133, 90, 101, 92, 0, 105, 0, 106, 0, + 107, 112, 108, 110, 119, 87, 0, 45, 0, 0, + 0, 0, 121, 122, 99, 115, 116, 118, 103, 93, + 77, 0, 124, 133, 82, 83, 0, 1, 6, 0, + 0, 0, 0, 42, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 131, 0, 110, 113, 0, 108, 49, - 0, 46, 0, 0, 0, 0, 0, 54, 49, 0, - 116, 0, 0, 0, 49, 99, 83, 2, 0, 50, - 0, 0, 49, 0, 26, 72, 73, 71, 74, 75, - 68, 78, 79, 80, 77, 64, 65, 66, 67, 69, - 70, 134, 59, 101, 112, 126, 12, 17, 14, 0, - 0, 16, 13, 126, 97, 103, 84, 85, 124, 51, - 0, 44, 51, 0, 43, 127, 0, 18, 15, 0, - 126, 50, 0, 0, 50, 50, 20, 0, 130, 130, - 0, 52, 53, 0, 0, 50, 49, 30, 128, 0, - 51, 51, 130, 0, 50, 51, 0, 51, 0, 48, - 49, 50, 38, 0, 129, 119, 122, 51, 23, 51, - 50, 27, 50, 50, 40, 36, 0, 0, 37, 33, - 0, 0, 50, 0, 0, 35, 0, 0, 50, 49, - 50, 49, 125, 0, 0, 0, 0, 49, 31, 0, - 32, 0, 0, 24, 28, 29, 50, 34, 50, 25, - 41, 39 + 0, 0, 0, 0, 132, 0, 111, 114, 0, 109, + 49, 0, 46, 0, 0, 0, 0, 0, 54, 49, + 0, 117, 0, 0, 0, 49, 100, 84, 2, 0, + 50, 0, 0, 49, 0, 26, 73, 74, 72, 75, + 76, 69, 79, 80, 81, 78, 65, 66, 67, 68, + 70, 71, 135, 60, 102, 113, 127, 12, 17, 14, + 0, 0, 16, 13, 127, 98, 104, 85, 86, 125, + 51, 0, 44, 51, 0, 43, 128, 0, 18, 15, + 0, 127, 50, 0, 0, 50, 50, 20, 0, 131, + 131, 0, 52, 53, 0, 0, 50, 49, 30, 129, + 0, 51, 51, 131, 0, 50, 51, 0, 51, 0, + 48, 49, 50, 38, 0, 130, 120, 123, 51, 23, + 51, 50, 27, 50, 50, 40, 36, 0, 0, 37, + 33, 0, 0, 50, 0, 0, 35, 0, 0, 50, + 49, 50, 49, 126, 0, 0, 0, 0, 49, 31, + 0, 32, 0, 0, 24, 28, 29, 50, 34, 50, + 25, 41, 39 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 33, 211, 34, 53, 36, 212, 38, 260, 243, - 244, 232, 245, 101, 39, 40, 41, 233, 271, 154, - 201, 42, 43, 206, 63, 88, 45, 71, 72, 46, - 47, 129, 138, 144, 200, 196, 220, 48, 58 + -1, 34, 212, 35, 54, 37, 213, 39, 261, 244, + 245, 233, 246, 102, 40, 41, 42, 234, 272, 155, + 202, 43, 44, 207, 64, 89, 46, 72, 73, 47, + 48, 130, 139, 145, 201, 197, 221, 49, 59 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -217 +#define YYPACT_NINF -213 static const yytype_int16 yypact[] = { - 275, -30, -217, -217, 762, -217, -217, 762, 762, 762, - 173, -217, 17, 10, 686, -217, 32, 762, 13, 64, - 41, 47, 52, 762, 718, 55, 762, 762, 58, 59, - 762, 762, 762, 2, -217, 3, -217, -217, -217, 6, - 15, 776, 762, 944, -217, -217, -217, -217, -217, -217, - -217, 9, 762, -217, 944, 944, 944, 944, 8, 762, - 762, -217, -217, 19, 762, -217, 762, -217, 50, -217, - 944, -11, -217, -217, 794, 74, -217, -28, 762, -24, - 53, -217, -217, 819, -217, -11, -217, -217, 21, -10, - 844, -217, 762, -10, -10, 894, -217, 346, 776, 762, - 776, 60, 919, 944, 762, 762, 762, 762, 762, 762, - 762, 762, 762, 762, 762, 762, 762, 762, 762, 762, - 794, 762, 7, 8, 77, 944, 944, 762, -217, -217, - 89, -217, 762, 762, 602, 762, 762, -217, -217, 762, - -217, 92, 762, 762, -217, 8, -217, -217, 31, 944, - 33, 869, -30, 762, -217, 46, 46, 46, -10, -10, - -10, 944, 46, 46, 256, -44, -44, -10, -10, 944, - 944, 944, -217, -217, 944, 94, -217, 944, 944, 762, - 762, 944, 944, 94, 944, -217, 944, 944, -217, -217, - -7, -217, -217, 620, 944, -217, -57, 944, 944, -57, - 94, 483, 73, 762, 483, -217, -217, 98, 42, 42, - -57, -217, -217, 99, 762, 944, -15, -12, -217, 106, - -217, -217, 42, 93, 944, -217, 101, -217, 110, -217, - -217, 110, -217, 776, -217, 483, 483, -217, -217, -217, - 483, -217, 483, 110, 110, -217, 776, 620, -217, 112, - 119, 412, 483, 114, 115, -217, 136, 123, -217, -217, - -217, -217, -217, 141, 96, 138, 142, -20, -217, 620, - -217, 554, 139, -217, -217, -217, 483, -217, -217, -217, - -217, -217 + 275, -64, -213, -213, -213, 175, -213, -213, 175, 175, + 175, 945, -213, -14, 10, 707, -213, 29, 175, -21, + 8, 30, 34, 37, 175, 752, 38, 175, 175, 44, + 56, 175, 175, 175, 2, -213, 5, -213, -213, -213, + 6, 15, 738, 175, 920, -213, -213, -213, -213, -213, + -213, -213, 9, 175, -213, 920, 920, 920, 920, 7, + 175, 175, -213, -213, 17, 175, -213, 175, -213, 54, + -213, 920, 42, -213, -213, 770, 73, -213, -33, 175, + -28, 52, -213, -213, 795, -213, 42, -213, -213, 19, + -32, 820, -213, 175, -32, -32, 870, -213, 348, 738, + 175, 738, 53, 895, 920, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 770, 175, -7, 7, 76, 920, 920, 175, -213, + -213, 86, -213, 175, 175, 618, 175, 175, -213, -213, + 175, -213, 89, 175, 175, -213, 7, -213, -213, 31, + 920, 33, 845, -64, 175, -213, 46, 46, 46, -32, + -32, -32, 920, 46, 46, 256, 329, 329, -32, -32, + 920, 920, 920, -213, -213, 920, 92, -213, 920, 920, + 175, 175, 920, 920, 92, 920, -213, 920, 920, -213, + -213, -6, -213, -213, 636, 920, -213, -58, 920, 920, + -58, 92, 492, 75, 175, 492, -213, -213, 96, 40, + 40, -58, -213, -213, 100, 175, 920, -13, -11, -213, + 107, -213, -213, 40, 93, 920, -213, 101, -213, 110, + -213, -213, 110, -213, 738, -213, 492, 492, -213, -213, + -213, 492, -213, 492, 110, 110, -213, 738, 636, -213, + 94, 98, 419, 492, 133, 135, -213, 136, 123, -213, + -213, -213, -213, -213, 141, 128, 105, 138, -20, -213, + 636, -213, 565, 139, -213, -213, -213, 492, -213, -213, + -213, -213, -213 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -217, -217, 12, 80, 4, -182, 0, -217, -217, -217, - -36, -216, -59, -68, -217, -217, -217, -205, -9, 22, - -23, -217, 40, 5, -217, -217, -217, 161, -16, -217, - -217, -217, -217, -217, -217, -157, -170, -217, -50 + -213, -213, 11, 79, 3, -186, 0, -213, -213, -213, + -44, -212, -63, -69, -213, -213, -213, -205, -10, 21, + -153, -213, 39, 4, -213, -213, -213, 159, -12, -213, + -213, -213, -213, -213, -213, -165, -167, -213, -51 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -61 +#define YYTABLE_NINF -62 static const yytype_int16 yytable[] = { - 37, 60, 96, -10, 35, 44, -51, -51, 86, 122, - 123, 205, 226, 50, 229, 248, 132, 202, 107, 108, - 135, 109, 110, 246, 49, 66, 199, 68, 248, 207, - 148, 62, 150, 227, 116, 117, 230, 203, 246, 221, - 118, 119, 145, 210, 54, 97, 133, 55, 56, 57, - 136, 49, 237, 73, 70, 128, 110, 74, 61, 75, - 76, -51, 80, 83, 70, 258, 89, 90, 81, 140, - 93, 94, 95, 82, 118, 119, 87, 77, 78, 91, - 92, 102, 103, 49, -10, 79, 127, 277, 98, 99, - 172, 59, 120, 121, 121, 131, 137, 37, 173, 57, - 57, 35, 44, 152, 125, 124, 126, 141, 107, 108, - 176, 109, 110, 185, 189, 195, 191, 214, 134, 218, - 175, 113, 114, 115, 116, 117, 223, 234, 219, 183, - 118, 119, 57, 241, 238, 188, 229, 273, 102, 149, - 151, 264, 265, 193, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 259, 171, 261, 266, 192, 250, 267, 174, 272, 204, - 274, 190, 177, 178, 275, 181, 182, 147, 257, 184, - 279, 231, 186, 187, 255, 85, 0, 0, 0, 0, - 0, 0, 0, 194, 0, 0, 0, 235, 236, 0, - 0, 0, 240, 0, 242, 0, 0, 228, 208, 0, - 0, 209, 0, 0, 251, 0, 252, 0, 0, 197, - 198, 247, 222, 213, 0, 0, 216, 217, 0, -60, - -60, 0, 0, 0, -60, -60, -60, 225, -60, -60, - -60, -60, 0, 215, 276, 0, 239, 0, -60, 0, - 269, -60, -60, 249, 224, 59, 0, -60, -60, 0, - 0, 0, 253, 0, 254, 256, 0, 0, 0, 0, - 0, 278, 0, 102, 263, -6, 1, 0, 0, 0, - 268, 0, 270, 0, 0, 0, 102, 2, 3, 4, - 5, 0, 6, 7, 8, 9, 10, 11, 280, 0, - 281, 0, 0, 12, 0, 13, 14, 15, 0, 0, - 16, 0, 0, 0, 0, 17, 18, 19, 107, 108, - 20, 109, 110, 0, 21, 22, 23, 24, 0, 0, - 25, 0, 114, 115, 116, 117, 0, 0, 0, 26, - 118, 119, 0, 0, 27, 0, 0, 28, 29, 0, - 0, 30, 31, 0, 0, 0, -6, 32, 2, 3, - 4, 5, 0, 6, 7, 8, 9, 10, 11, 0, - 0, 0, 0, 0, 12, 0, 13, 14, 15, 0, - 0, 16, 0, 0, 0, 0, 17, 18, 19, 0, - 0, 20, 0, 0, 0, 21, 22, 23, 24, 0, - 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, - 26, 0, 0, 0, 0, 27, 0, 0, 28, 29, - 0, 0, 30, 31, 2, 3, 4, 5, 32, 6, - 7, 8, 9, 51, 11, 0, 0, 0, 0, 262, - 12, 0, 13, 14, 15, 0, 0, 0, 0, 0, - 0, 0, 17, 18, 19, 0, 0, 20, 0, 0, - 0, 0, 0, 23, 24, 0, 0, 25, 0, 0, - 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0, 27, 0, 0, 0, 29, 0, 0, 30, 31, - 0, 0, 0, 49, 32, 2, 3, 4, 5, 0, - 6, 7, 8, 9, 51, 11, 0, 0, 0, 0, - 0, 12, 0, 13, 14, 15, 0, 0, 0, 0, - 0, 0, 0, 17, 18, 19, 0, 0, 20, 0, - 0, 0, 0, 0, 23, 24, 0, 0, 25, 0, - 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, - 0, 0, 27, 0, 0, 0, 29, 0, 0, 30, - 31, 0, 0, 0, 49, 32, 2, 3, 4, 5, - 0, 6, 7, 8, 9, 51, 11, 0, 0, 0, - 0, 0, 12, 0, 13, 14, 15, 0, 0, 0, - 0, 0, 0, 0, 17, 18, 19, 0, 0, 20, - 0, 0, 0, 0, 0, 23, 24, 0, 0, 25, - 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, - 0, 0, 0, 27, 0, 0, 0, 29, 0, 0, - 30, 31, 2, 3, 4, 5, 32, 6, 7, 8, - 9, 51, 11, 0, 0, 0, 179, 0, 12, 0, - 13, 14, 0, 0, 0, 0, 0, 0, 104, 105, - 17, 0, 19, 106, 107, 108, 0, 109, 110, 111, - 112, 23, 24, 0, 0, 25, 180, 113, 114, 115, - 116, 117, 0, 0, 26, 0, 118, 119, 0, 27, - 0, 0, 0, 29, 0, 0, 30, 31, 2, 3, - 4, 5, 32, 6, 0, 0, 0, 51, 11, 0, - 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, - 65, 0, 66, 67, 68, 69, 52, 0, 19, 0, - 2, 3, 4, 5, 0, 6, 0, 0, 0, 51, - 11, 0, 0, 0, 0, 0, 0, 64, 0, 0, - 26, 0, 0, 0, 66, 27, 68, 0, 52, 0, - 19, 0, 30, 31, 0, 0, 0, 0, 32, 0, - 0, 84, 0, 0, 2, 3, 4, 5, 0, 6, - 0, 0, 26, 51, 11, 0, 0, 27, 2, 3, - 4, 5, 0, 6, 30, 31, 0, 51, 11, 0, - 32, 0, 52, 0, 19, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 0, 19, 0, - 0, 0, 0, 0, 0, 0, 26, 130, 0, 0, - 0, 27, 0, 0, 0, 0, 0, 0, 30, 31, - 26, 0, 0, 0, 32, 27, 0, 0, 0, 0, - 104, 105, 30, 31, 0, 106, 107, 108, 100, 109, - 110, 111, 112, 0, 0, 139, 0, 0, 0, 113, - 114, 115, 116, 117, 0, 104, 105, 0, 118, 119, - 106, 107, 108, 0, 109, 110, 111, 112, 0, 0, - 0, 0, 0, 0, 113, 114, 115, 116, 117, 0, - 104, 105, 0, 118, 119, 106, 107, 108, 0, 109, - 110, 111, 112, 0, 142, 143, 0, 0, 0, 113, - 114, 115, 116, 117, 0, 104, 105, 0, 118, 119, - 106, 107, 108, 0, 109, 110, 111, 112, 0, 0, - 0, 0, 0, 153, 113, 114, 115, 116, 117, 0, - 104, 105, 146, 118, 119, 106, 107, 108, 0, 109, - 110, 111, 112, 0, 0, 0, 0, 0, 0, 113, - 114, 115, 116, 117, 0, 104, 105, 146, 118, 119, - 106, 107, 108, 0, 109, 110, 111, 112, 0, 0, - 0, 0, 0, 153, 113, 114, 115, 116, 117, 0, - 104, 105, 0, 118, 119, 106, 107, 108, 0, 109, - 110, 111, 112, 0, 0, 0, 0, 0, 0, 113, - 114, 115, 116, 117, 0, 0, 0, 0, 118, 119 + 38, 61, 97, 36, 45, -10, -51, -51, 206, 123, + 124, 133, 51, 87, 227, 230, 136, 50, 203, 200, + 249, 78, 79, 50, 247, 76, 77, 62, 208, 80, + 149, 63, 151, 249, 111, 228, 211, 231, 204, 247, + 205, 134, 146, 222, 55, 98, 137, 56, 57, 58, + 74, 81, 119, 120, 71, 82, 238, 75, 83, 88, + 129, -51, 259, 84, 71, 92, 90, 91, 236, 237, + 94, 95, 96, 241, 141, 243, 173, 93, 67, 122, + 69, 103, 104, 50, 278, 252, -10, 253, 99, 100, + 128, 60, 121, 122, 132, 138, 153, 174, 38, 58, + 58, 36, 45, 125, 126, 142, 127, 177, 108, 109, + 186, 110, 111, 196, 190, 277, 192, 219, 135, 215, + 176, 114, 115, 116, 117, 118, 220, 224, 235, 184, + 119, 120, 58, 242, 239, 189, 230, 275, 103, 150, + 152, 262, 260, 194, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 265, 172, 266, 267, 193, 251, 268, 175, 273, 274, + 276, 191, 178, 179, 232, 182, 183, 148, 258, 185, + 280, 256, 187, 188, 86, 2, 0, 3, 4, 5, + 6, 0, 7, 195, 0, 0, 52, 12, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 229, 209, 0, + 0, 210, 0, 0, 0, 53, 0, 20, 0, 198, + 199, 248, 223, 214, 0, 0, 217, 218, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 226, 0, 27, + 0, 0, 0, 216, 28, 0, 240, 0, 0, 0, + 270, 31, 32, 250, 225, 0, 0, 33, 0, 0, + 0, 0, 254, 0, 255, 257, 0, 0, 0, 0, + 0, 0, 279, 103, 264, -6, 1, 0, 0, 0, + 269, 0, 271, 0, 0, 2, 103, 3, 4, 5, + 6, 0, 7, 8, 9, 10, 11, 12, 281, 0, + 282, 0, 0, 13, 0, 14, 15, 16, 0, 0, + 17, 0, 0, 0, 0, 18, 19, 20, 108, 109, + 21, 110, 111, 0, 22, 23, 24, 25, 0, 0, + 26, 0, 115, 116, 117, 118, 0, 0, 0, 27, + 119, 120, 0, 0, 28, 0, 0, 29, 30, 0, + 0, 31, 32, 0, 0, 0, -6, 33, 2, 0, + 3, 4, 5, 6, 0, 7, 8, 9, 10, 11, + 12, 0, 0, 0, 0, 0, 13, 0, 14, 15, + 16, 0, 0, 17, 0, 0, 0, 0, 18, 19, + 20, 108, 109, 21, 110, 111, 0, 22, 23, 24, + 25, 0, 0, 26, 0, 0, 0, 117, 118, 0, + 0, 0, 27, 119, 120, 0, 0, 28, 0, 0, + 29, 30, 0, 0, 31, 32, 0, 0, 0, 2, + 33, 3, 4, 5, 6, 0, 7, 8, 9, 10, + 52, 12, 0, 0, 0, 0, 263, 13, 0, 14, + 15, 16, 0, 0, 0, 0, 0, 0, 0, 18, + 19, 20, 0, 0, 21, 0, 0, 0, 0, 0, + 24, 25, 0, 0, 26, 0, 0, 0, 0, 0, + 0, 0, 0, 27, 0, 0, 0, 0, 28, 0, + 0, 0, 30, 0, 0, 31, 32, 0, 0, 0, + 50, 33, 2, 0, 3, 4, 5, 6, 0, 7, + 8, 9, 10, 52, 12, 0, 0, 0, 0, 0, + 13, 0, 14, 15, 16, 0, 0, 0, 0, 0, + 0, 0, 18, 19, 20, 0, 0, 21, 0, 0, + 0, 0, 0, 24, 25, 0, 0, 26, 0, 0, + 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, + 0, 28, 0, 0, 0, 30, 0, 0, 31, 32, + 0, 0, 0, 50, 33, 2, 0, 3, 4, 5, + 6, 0, 7, 8, 9, 10, 52, 12, 0, 0, + 0, 0, 0, 13, 0, 14, 15, 16, 0, 0, + 0, 0, 0, 0, 0, 18, 19, 20, 0, 0, + 21, 0, 0, 0, 0, 0, 24, 25, 0, 0, + 26, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 0, 0, 0, 28, 0, 0, 0, 30, 0, + 0, 31, 32, 0, 0, 0, 2, 33, 3, 4, + 5, 6, 0, 7, 8, 9, 10, 52, 12, 0, + 0, 0, 180, 0, 13, 0, 14, 15, 0, 0, + 0, 0, 0, 0, 105, 106, 18, 0, 20, 107, + 108, 109, 0, 110, 111, 112, 113, 24, 25, 0, + 0, 26, 181, 114, 115, 116, 117, 118, 0, 0, + 27, 0, 119, 120, 0, 28, 0, 0, 0, 30, + 0, 0, 31, 32, 0, 0, 0, 2, 33, 3, + 4, 5, 6, 0, 7, 0, 0, 0, 52, 12, + 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, + 0, 66, 0, 67, 68, 69, 70, 53, 2, 20, + 3, 4, 5, 6, 0, 7, 0, 0, 0, 52, + 12, 0, 2, 0, 3, 4, 5, 6, 0, 7, + 0, 27, 0, 52, 12, 0, 28, 0, 53, 0, + 20, 65, 0, 31, 32, 0, 0, 0, 67, 33, + 69, 0, 53, 0, 20, 0, 0, 0, 0, 0, + 0, 0, 27, 131, 0, 85, 0, 28, 0, 0, + 0, 0, 0, 0, 31, 32, 27, 0, 0, 0, + 101, 28, 0, 0, 0, 0, 105, 106, 31, 32, + 0, 107, 108, 109, 33, 110, 111, 112, 113, 0, + 0, 140, 0, 0, 0, 114, 115, 116, 117, 118, + 0, 105, 106, 0, 119, 120, 107, 108, 109, 0, + 110, 111, 112, 113, 0, 0, 0, 0, 0, 0, + 114, 115, 116, 117, 118, 0, 105, 106, 0, 119, + 120, 107, 108, 109, 0, 110, 111, 112, 113, 0, + 143, 144, 0, 0, 0, 114, 115, 116, 117, 118, + 0, 105, 106, 0, 119, 120, 107, 108, 109, 0, + 110, 111, 112, 113, 0, 0, 0, 0, 0, 154, + 114, 115, 116, 117, 118, 0, 105, 106, 147, 119, + 120, 107, 108, 109, 0, 110, 111, 112, 113, 0, + 0, 0, 0, 0, 0, 114, 115, 116, 117, 118, + 0, 105, 106, 147, 119, 120, 107, 108, 109, 0, + 110, 111, 112, 113, 0, 0, 0, 0, 0, 154, + 114, 115, 116, 117, 118, 0, 105, 106, 0, 119, + 120, 107, 108, 109, 0, 110, 111, 112, 113, 0, + 0, 0, 0, 0, 0, 114, 115, 116, 117, 118, + 0, -61, -61, 0, 119, 120, -61, -61, -61, 0, + -61, -61, -61, -61, 0, 0, 0, 0, 0, 0, + -61, 0, 0, -61, -61, 0, 0, 60, 0, -61, + -61 }; static const yytype_int16 yycheck[] = { - 0, 10, 0, 0, 0, 0, 26, 27, 24, 59, - 60, 193, 27, 1, 26, 231, 44, 24, 62, 63, - 44, 65, 66, 228, 81, 36, 183, 38, 244, 86, - 98, 21, 100, 48, 78, 79, 48, 44, 243, 209, - 84, 85, 92, 200, 4, 33, 74, 7, 8, 9, - 74, 81, 222, 21, 14, 71, 66, 17, 41, 46, - 47, 81, 21, 23, 24, 247, 26, 27, 21, 85, - 30, 31, 32, 21, 84, 85, 21, 13, 14, 21, - 21, 41, 42, 81, 81, 21, 36, 269, 82, 74, - 83, 82, 52, 86, 86, 21, 43, 97, 21, 59, - 60, 97, 97, 43, 64, 86, 66, 86, 62, 63, - 21, 65, 66, 21, 83, 21, 83, 44, 78, 21, - 129, 75, 76, 77, 78, 79, 27, 21, 86, 138, - 84, 85, 92, 32, 41, 144, 26, 41, 98, 99, - 100, 27, 27, 152, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 48, 121, 43, 27, 152, 233, 43, 127, 27, 192, - 32, 149, 132, 133, 32, 135, 136, 97, 246, 139, - 41, 217, 142, 143, 243, 24, -1, -1, -1, -1, - -1, -1, -1, 153, -1, -1, -1, 220, 221, -1, - -1, -1, 225, -1, 227, -1, -1, 216, 196, -1, - -1, 199, -1, -1, 237, -1, 239, -1, -1, 179, - 180, 230, 210, 201, -1, -1, 204, 205, -1, 56, - 57, -1, -1, -1, 61, 62, 63, 215, 65, 66, - 67, 68, -1, 203, 267, -1, 224, -1, 75, -1, - 259, 78, 79, 231, 214, 82, -1, 84, 85, -1, - -1, -1, 240, -1, 242, 243, -1, -1, -1, -1, - -1, 271, -1, 233, 252, 0, 1, -1, -1, -1, - 258, -1, 260, -1, -1, -1, 246, 12, 13, 14, - 15, -1, 17, 18, 19, 20, 21, 22, 276, -1, - 278, -1, -1, 28, -1, 30, 31, 32, -1, -1, + 0, 11, 0, 0, 0, 0, 26, 27, 194, 60, + 61, 44, 1, 25, 27, 26, 44, 81, 24, 184, + 232, 13, 14, 81, 229, 46, 47, 41, 86, 21, + 99, 21, 101, 245, 66, 48, 201, 48, 44, 244, + 193, 74, 93, 210, 5, 34, 74, 8, 9, 10, + 21, 21, 84, 85, 15, 21, 223, 18, 21, 21, + 72, 81, 248, 24, 25, 21, 27, 28, 221, 222, + 31, 32, 33, 226, 86, 228, 83, 21, 36, 86, + 38, 42, 43, 81, 270, 238, 81, 240, 82, 74, + 36, 82, 53, 86, 21, 43, 43, 21, 98, 60, + 61, 98, 98, 86, 65, 86, 67, 21, 62, 63, + 21, 65, 66, 21, 83, 268, 83, 21, 79, 44, + 130, 75, 76, 77, 78, 79, 86, 27, 21, 139, + 84, 85, 93, 32, 41, 145, 26, 32, 99, 100, + 101, 43, 48, 153, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 27, 122, 27, 27, 153, 234, 43, 128, 27, 41, + 32, 150, 133, 134, 218, 136, 137, 98, 247, 140, + 41, 244, 143, 144, 25, 10, -1, 12, 13, 14, + 15, -1, 17, 154, -1, -1, 21, 22, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 217, 197, -1, + -1, 200, -1, -1, -1, 40, -1, 42, -1, 180, + 181, 231, 211, 202, -1, -1, 205, 206, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 216, -1, 64, + -1, -1, -1, 204, 69, -1, 225, -1, -1, -1, + 260, 76, 77, 232, 215, -1, -1, 82, -1, -1, + -1, -1, 241, -1, 243, 244, -1, -1, -1, -1, + -1, -1, 272, 234, 253, 0, 1, -1, -1, -1, + 259, -1, 261, -1, -1, 10, 247, 12, 13, 14, + 15, -1, 17, 18, 19, 20, 21, 22, 277, -1, + 279, -1, -1, 28, -1, 30, 31, 32, -1, -1, 35, -1, -1, -1, -1, 40, 41, 42, 62, 63, 45, 65, 66, -1, 49, 50, 51, 52, -1, -1, 55, -1, 76, 77, 78, 79, -1, -1, -1, 64, 84, 85, -1, -1, 69, -1, -1, 72, 73, -1, - -1, 76, 77, -1, -1, -1, 81, 82, 12, 13, - 14, 15, -1, 17, 18, 19, 20, 21, 22, -1, - -1, -1, -1, -1, 28, -1, 30, 31, 32, -1, - -1, 35, -1, -1, -1, -1, 40, 41, 42, -1, - -1, 45, -1, -1, -1, 49, 50, 51, 52, -1, - -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, - 64, -1, -1, -1, -1, 69, -1, -1, 72, 73, - -1, -1, 76, 77, 12, 13, 14, 15, 82, 17, - 18, 19, 20, 21, 22, -1, -1, -1, -1, 27, + -1, 76, 77, -1, -1, -1, 81, 82, 10, -1, + 12, 13, 14, 15, -1, 17, 18, 19, 20, 21, + 22, -1, -1, -1, -1, -1, 28, -1, 30, 31, + 32, -1, -1, 35, -1, -1, -1, -1, 40, 41, + 42, 62, 63, 45, 65, 66, -1, 49, 50, 51, + 52, -1, -1, 55, -1, -1, -1, 78, 79, -1, + -1, -1, 64, 84, 85, -1, -1, 69, -1, -1, + 72, 73, -1, -1, 76, 77, -1, -1, -1, 10, + 82, 12, 13, 14, 15, -1, 17, 18, 19, 20, + 21, 22, -1, -1, -1, -1, 27, 28, -1, 30, + 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, + 41, 42, -1, -1, 45, -1, -1, -1, -1, -1, + 51, 52, -1, -1, 55, -1, -1, -1, -1, -1, + -1, -1, -1, 64, -1, -1, -1, -1, 69, -1, + -1, -1, 73, -1, -1, 76, 77, -1, -1, -1, + 81, 82, 10, -1, 12, 13, 14, 15, -1, 17, + 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, 40, 41, 42, -1, -1, 45, -1, -1, -1, -1, -1, 51, 52, -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, 69, -1, -1, -1, 73, -1, -1, 76, 77, - -1, -1, -1, 81, 82, 12, 13, 14, 15, -1, - 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, - -1, 28, -1, 30, 31, 32, -1, -1, -1, -1, - -1, -1, -1, 40, 41, 42, -1, -1, 45, -1, - -1, -1, -1, -1, 51, 52, -1, -1, 55, -1, - -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, - -1, -1, 69, -1, -1, -1, 73, -1, -1, 76, - 77, -1, -1, -1, 81, 82, 12, 13, 14, 15, - -1, 17, 18, 19, 20, 21, 22, -1, -1, -1, - -1, -1, 28, -1, 30, 31, 32, -1, -1, -1, - -1, -1, -1, -1, 40, 41, 42, -1, -1, 45, - -1, -1, -1, -1, -1, 51, 52, -1, -1, 55, - -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, - -1, -1, -1, 69, -1, -1, -1, 73, -1, -1, - 76, 77, 12, 13, 14, 15, 82, 17, 18, 19, - 20, 21, 22, -1, -1, -1, 44, -1, 28, -1, - 30, 31, -1, -1, -1, -1, -1, -1, 56, 57, - 40, -1, 42, 61, 62, 63, -1, 65, 66, 67, - 68, 51, 52, -1, -1, 55, 74, 75, 76, 77, - 78, 79, -1, -1, 64, -1, 84, 85, -1, 69, - -1, -1, -1, 73, -1, -1, 76, 77, 12, 13, - 14, 15, 82, 17, -1, -1, -1, 21, 22, -1, - -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, - 34, -1, 36, 37, 38, 39, 40, -1, 42, -1, + -1, -1, -1, 81, 82, 10, -1, 12, 13, 14, + 15, -1, 17, 18, 19, 20, 21, 22, -1, -1, + -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, + -1, -1, -1, -1, -1, 40, 41, 42, -1, -1, + 45, -1, -1, -1, -1, -1, 51, 52, -1, -1, + 55, -1, -1, -1, -1, -1, -1, -1, -1, 64, + -1, -1, -1, -1, 69, -1, -1, -1, 73, -1, + -1, 76, 77, -1, -1, -1, 10, 82, 12, 13, + 14, 15, -1, 17, 18, 19, 20, 21, 22, -1, + -1, -1, 44, -1, 28, -1, 30, 31, -1, -1, + -1, -1, -1, -1, 56, 57, 40, -1, 42, 61, + 62, 63, -1, 65, 66, 67, 68, 51, 52, -1, + -1, 55, 74, 75, 76, 77, 78, 79, -1, -1, + 64, -1, 84, 85, -1, 69, -1, -1, -1, 73, + -1, -1, 76, 77, -1, -1, -1, 10, 82, 12, + 13, 14, 15, -1, 17, -1, -1, -1, 21, 22, + -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, + -1, 34, -1, 36, 37, 38, 39, 40, 10, 42, 12, 13, 14, 15, -1, 17, -1, -1, -1, 21, - 22, -1, -1, -1, -1, -1, -1, 29, -1, -1, - 64, -1, -1, -1, 36, 69, 38, -1, 40, -1, - 42, -1, 76, 77, -1, -1, -1, -1, 82, -1, - -1, 53, -1, -1, 12, 13, 14, 15, -1, 17, - -1, -1, 64, 21, 22, -1, -1, 69, 12, 13, - 14, 15, -1, 17, 76, 77, -1, 21, 22, -1, - 82, -1, 40, -1, 42, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 40, -1, 42, -1, - -1, -1, -1, -1, -1, -1, 64, 33, -1, -1, - -1, 69, -1, -1, -1, -1, -1, -1, 76, 77, - 64, -1, -1, -1, 82, 69, -1, -1, -1, -1, - 56, 57, 76, 77, -1, 61, 62, 63, 82, 65, - 66, 67, 68, -1, -1, 46, -1, -1, -1, 75, - 76, 77, 78, 79, -1, 56, 57, -1, 84, 85, - 61, 62, 63, -1, 65, 66, 67, 68, -1, -1, - -1, -1, -1, -1, 75, 76, 77, 78, 79, -1, - 56, 57, -1, 84, 85, 61, 62, 63, -1, 65, - 66, 67, 68, -1, 70, 71, -1, -1, -1, 75, - 76, 77, 78, 79, -1, 56, 57, -1, 84, 85, - 61, 62, 63, -1, 65, 66, 67, 68, -1, -1, - -1, -1, -1, 74, 75, 76, 77, 78, 79, -1, - 56, 57, 83, 84, 85, 61, 62, 63, -1, 65, - 66, 67, 68, -1, -1, -1, -1, -1, -1, 75, - 76, 77, 78, 79, -1, 56, 57, 83, 84, 85, - 61, 62, 63, -1, 65, 66, 67, 68, -1, -1, - -1, -1, -1, 74, 75, 76, 77, 78, 79, -1, - 56, 57, -1, 84, 85, 61, 62, 63, -1, 65, - 66, 67, 68, -1, -1, -1, -1, -1, -1, 75, - 76, 77, 78, 79, -1, -1, -1, -1, 84, 85 + 22, -1, 10, -1, 12, 13, 14, 15, -1, 17, + -1, 64, -1, 21, 22, -1, 69, -1, 40, -1, + 42, 29, -1, 76, 77, -1, -1, -1, 36, 82, + 38, -1, 40, -1, 42, -1, -1, -1, -1, -1, + -1, -1, 64, 33, -1, 53, -1, 69, -1, -1, + -1, -1, -1, -1, 76, 77, 64, -1, -1, -1, + 82, 69, -1, -1, -1, -1, 56, 57, 76, 77, + -1, 61, 62, 63, 82, 65, 66, 67, 68, -1, + -1, 46, -1, -1, -1, 75, 76, 77, 78, 79, + -1, 56, 57, -1, 84, 85, 61, 62, 63, -1, + 65, 66, 67, 68, -1, -1, -1, -1, -1, -1, + 75, 76, 77, 78, 79, -1, 56, 57, -1, 84, + 85, 61, 62, 63, -1, 65, 66, 67, 68, -1, + 70, 71, -1, -1, -1, 75, 76, 77, 78, 79, + -1, 56, 57, -1, 84, 85, 61, 62, 63, -1, + 65, 66, 67, 68, -1, -1, -1, -1, -1, 74, + 75, 76, 77, 78, 79, -1, 56, 57, 83, 84, + 85, 61, 62, 63, -1, 65, 66, 67, 68, -1, + -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, + -1, 56, 57, 83, 84, 85, 61, 62, 63, -1, + 65, 66, 67, 68, -1, -1, -1, -1, -1, 74, + 75, 76, 77, 78, 79, -1, 56, 57, -1, 84, + 85, 61, 62, 63, -1, 65, 66, 67, 68, -1, + -1, -1, -1, -1, -1, 75, 76, 77, 78, 79, + -1, 56, 57, -1, 84, 85, 61, 62, 63, -1, + 65, 66, 67, 68, -1, -1, -1, -1, -1, -1, + 75, -1, -1, 78, 79, -1, -1, 82, -1, 84, + 85 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 1, 12, 13, 14, 15, 17, 18, 19, 20, - 21, 22, 28, 30, 31, 32, 35, 40, 41, 42, - 45, 49, 50, 51, 52, 55, 64, 69, 72, 73, - 76, 77, 82, 88, 90, 91, 92, 93, 94, 101, - 102, 103, 108, 109, 110, 113, 116, 117, 124, 81, - 89, 21, 40, 91, 109, 109, 109, 109, 125, 82, - 105, 41, 21, 111, 29, 34, 36, 37, 38, 39, - 109, 114, 115, 21, 109, 46, 47, 13, 14, 21, - 21, 21, 21, 109, 53, 114, 115, 21, 112, 109, - 109, 21, 21, 109, 109, 109, 0, 89, 82, 74, - 82, 100, 109, 109, 56, 57, 61, 62, 63, 65, - 66, 67, 68, 75, 76, 77, 78, 79, 84, 85, - 109, 86, 125, 125, 86, 109, 109, 36, 115, 118, - 33, 21, 44, 74, 109, 44, 74, 43, 119, 46, - 115, 86, 70, 71, 120, 125, 83, 90, 100, 109, - 100, 109, 43, 74, 106, 109, 109, 109, 109, 109, + 0, 1, 10, 12, 13, 14, 15, 17, 18, 19, + 20, 21, 22, 28, 30, 31, 32, 35, 40, 41, + 42, 45, 49, 50, 51, 52, 55, 64, 69, 72, + 73, 76, 77, 82, 88, 90, 91, 92, 93, 94, + 101, 102, 103, 108, 109, 110, 113, 116, 117, 124, + 81, 89, 21, 40, 91, 109, 109, 109, 109, 125, + 82, 105, 41, 21, 111, 29, 34, 36, 37, 38, + 39, 109, 114, 115, 21, 109, 46, 47, 13, 14, + 21, 21, 21, 21, 109, 53, 114, 115, 21, 112, + 109, 109, 21, 21, 109, 109, 109, 0, 89, 82, + 74, 82, 100, 109, 109, 56, 57, 61, 62, 63, + 65, 66, 67, 68, 75, 76, 77, 78, 79, 84, + 85, 109, 86, 125, 125, 86, 109, 109, 36, 115, + 118, 33, 21, 44, 74, 109, 44, 74, 43, 119, + 46, 115, 86, 70, 71, 120, 125, 83, 90, 100, + 109, 100, 109, 43, 74, 106, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 83, 21, 109, 105, 21, 109, 109, 44, - 74, 109, 109, 105, 109, 21, 109, 109, 105, 83, - 106, 83, 89, 105, 109, 21, 122, 109, 109, 122, - 121, 107, 24, 44, 107, 92, 110, 86, 89, 89, - 122, 89, 93, 106, 44, 109, 106, 106, 21, 86, - 123, 123, 89, 27, 109, 106, 27, 48, 105, 26, - 48, 97, 98, 104, 21, 107, 107, 123, 41, 106, - 107, 32, 107, 96, 97, 99, 104, 105, 98, 106, - 100, 107, 107, 106, 106, 99, 106, 100, 92, 48, - 95, 43, 27, 106, 27, 27, 27, 43, 106, 105, - 106, 105, 27, 41, 32, 32, 107, 92, 93, 41, - 106, 106 + 109, 109, 109, 83, 21, 109, 105, 21, 109, 109, + 44, 74, 109, 109, 105, 109, 21, 109, 109, 105, + 83, 106, 83, 89, 105, 109, 21, 122, 109, 109, + 122, 121, 107, 24, 44, 107, 92, 110, 86, 89, + 89, 122, 89, 93, 106, 44, 109, 106, 106, 21, + 86, 123, 123, 89, 27, 109, 106, 27, 48, 105, + 26, 48, 97, 98, 104, 21, 107, 107, 123, 41, + 106, 107, 32, 107, 96, 97, 99, 104, 105, 98, + 106, 100, 107, 107, 106, 106, 99, 106, 100, 92, + 48, 95, 43, 27, 106, 27, 27, 27, 43, 106, + 105, 106, 105, 27, 41, 32, 32, 107, 92, 93, + 41, 106, 106 }; #define yyerrok (yyerrstatus = 0) @@ -2229,34 +2232,41 @@ yyparse () case 57: #line 360 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->code1(g_lingo->c_stringpush); + (yyval.code) = g_lingo->code1(g_lingo->c_symbolpush); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;} break; case 58: #line 363 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->code1(g_lingo->_handlers[*(yyvsp[(1) - (1)].s)]->u.func); - delete (yyvsp[(1) - (1)].s); ;} + (yyval.code) = g_lingo->code1(g_lingo->c_stringpush); + g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;} break; case 59: #line 366 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); - delete (yyvsp[(1) - (4)].s); ;} + (yyval.code) = g_lingo->code1(g_lingo->_handlers[*(yyvsp[(1) - (1)].s)]->u.func); + delete (yyvsp[(1) - (1)].s); ;} break; case 60: #line 369 "engines/director/lingo/lingo-gr.y" + { + (yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); + delete (yyvsp[(1) - (4)].s); ;} + break; + + case 61: +#line 372 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_eval); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} break; - case 61: -#line 373 "engines/director/lingo/lingo-gr.y" + case 62: +#line 376 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->codeConst(0); // Put dummy id g_lingo->code1(g_lingo->c_theentitypush); @@ -2266,8 +2276,8 @@ yyparse () g_lingo->code2(e, f); ;} break; - case 62: -#line 380 "engines/director/lingo/lingo-gr.y" + case 63: +#line 383 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_theentitypush); inst e = 0, f = 0; @@ -2276,139 +2286,132 @@ yyparse () g_lingo->code2(e, f); ;} break; - case 64: -#line 387 "engines/director/lingo/lingo-gr.y" + case 65: +#line 390 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_add); ;} break; - case 65: -#line 388 "engines/director/lingo/lingo-gr.y" + case 66: +#line 391 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_sub); ;} break; - case 66: -#line 389 "engines/director/lingo/lingo-gr.y" + case 67: +#line 392 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_mul); ;} break; - case 67: -#line 390 "engines/director/lingo/lingo-gr.y" + case 68: +#line 393 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_div); ;} break; - case 68: -#line 391 "engines/director/lingo/lingo-gr.y" + case 69: +#line 394 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_mod); ;} break; - case 69: -#line 392 "engines/director/lingo/lingo-gr.y" + case 70: +#line 395 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_gt); ;} break; - case 70: -#line 393 "engines/director/lingo/lingo-gr.y" + case 71: +#line 396 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_lt); ;} break; - case 71: -#line 394 "engines/director/lingo/lingo-gr.y" + case 72: +#line 397 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_neq); ;} break; - case 72: -#line 395 "engines/director/lingo/lingo-gr.y" + case 73: +#line 398 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_ge); ;} break; - case 73: -#line 396 "engines/director/lingo/lingo-gr.y" + case 74: +#line 399 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_le); ;} break; - case 74: -#line 397 "engines/director/lingo/lingo-gr.y" + case 75: +#line 400 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_and); ;} break; - case 75: -#line 398 "engines/director/lingo/lingo-gr.y" + case 76: +#line 401 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_or); ;} break; - case 76: -#line 399 "engines/director/lingo/lingo-gr.y" + case 77: +#line 402 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_not); ;} break; - case 77: -#line 400 "engines/director/lingo/lingo-gr.y" + case 78: +#line 403 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_ampersand); ;} break; - case 78: -#line 401 "engines/director/lingo/lingo-gr.y" + case 79: +#line 404 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_concat); ;} break; - case 79: -#line 402 "engines/director/lingo/lingo-gr.y" + case 80: +#line 405 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_contains); ;} break; - case 80: -#line 403 "engines/director/lingo/lingo-gr.y" + case 81: +#line 406 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_starts); ;} break; - case 81: -#line 404 "engines/director/lingo/lingo-gr.y" + case 82: +#line 407 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[(2) - (2)].code); ;} break; - case 82: -#line 405 "engines/director/lingo/lingo-gr.y" + case 83: +#line 408 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;} break; - case 83: -#line 406 "engines/director/lingo/lingo-gr.y" + case 84: +#line 409 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[(2) - (3)].code); ;} break; - case 84: -#line 407 "engines/director/lingo/lingo-gr.y" + case 85: +#line 410 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_intersects); ;} break; - case 85: -#line 408 "engines/director/lingo/lingo-gr.y" + case 86: +#line 411 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_within); ;} break; - case 86: -#line 411 "engines/director/lingo/lingo-gr.y" + case 87: +#line 414 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_printtop); ;} break; - case 89: -#line 414 "engines/director/lingo/lingo-gr.y" + case 90: +#line 417 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_exitRepeat); ;} break; - case 90: -#line 415 "engines/director/lingo/lingo-gr.y" + case 91: +#line 418 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); ;} break; - case 93: -#line 419 "engines/director/lingo/lingo-gr.y" - { - g_lingo->code1(g_lingo->_handlers[*(yyvsp[(1) - (2)].s)]->u.func); - delete (yyvsp[(1) - (2)].s); ;} - break; - case 94: #line 422 "engines/director/lingo/lingo-gr.y" { @@ -2419,119 +2422,126 @@ yyparse () case 95: #line 425 "engines/director/lingo/lingo-gr.y" { - g_lingo->code2(g_lingo->c_voidpush, g_lingo->_handlers[*(yyvsp[(1) - (1)].s)]->u.func); - delete (yyvsp[(1) - (1)].s); ;} + g_lingo->code1(g_lingo->_handlers[*(yyvsp[(1) - (2)].s)]->u.func); + delete (yyvsp[(1) - (2)].s); ;} break; case 96: #line 428 "engines/director/lingo/lingo-gr.y" - { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;} + { + g_lingo->code2(g_lingo->c_voidpush, g_lingo->_handlers[*(yyvsp[(1) - (1)].s)]->u.func); + delete (yyvsp[(1) - (1)].s); ;} break; case 97: -#line 429 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_open); ;} +#line 431 "engines/director/lingo/lingo-gr.y" + { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;} break; case 98: -#line 430 "engines/director/lingo/lingo-gr.y" - { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;} +#line 432 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_open); ;} break; case 99: -#line 431 "engines/director/lingo/lingo-gr.y" - { Common::String s("sound-"); s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;} +#line 433 "engines/director/lingo/lingo-gr.y" + { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;} break; case 100: #line 434 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} + { Common::String s("sound-"); s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;} break; case 101: -#line 435 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} +#line 437 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} break; case 102: #line 438 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} + { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} break; case 103: -#line 439 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} +#line 441 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} break; case 104: -#line 450 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_gotoloop); ;} +#line 442 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} break; case 105: -#line 451 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_gotonext); ;} +#line 453 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_gotoloop); ;} break; case 106: -#line 452 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_gotoprevious); ;} +#line 454 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_gotonext); ;} break; case 107: -#line 453 "engines/director/lingo/lingo-gr.y" - { - g_lingo->codeConst(1); - g_lingo->code1(g_lingo->c_goto); ;} +#line 455 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_gotoprevious); ;} break; case 108: #line 456 "engines/director/lingo/lingo-gr.y" { - g_lingo->codeConst(3); + g_lingo->codeConst(1); g_lingo->code1(g_lingo->c_goto); ;} break; case 109: #line 459 "engines/director/lingo/lingo-gr.y" + { + g_lingo->codeConst(3); + g_lingo->code1(g_lingo->c_goto); ;} + break; + + case 110: +#line 462 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(2); g_lingo->code1(g_lingo->c_goto); ;} break; - case 114: -#line 472 "engines/director/lingo/lingo-gr.y" + case 115: +#line 475 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_playdone); ;} break; - case 115: -#line 473 "engines/director/lingo/lingo-gr.y" + case 116: +#line 476 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(1); g_lingo->code1(g_lingo->c_play); ;} break; - case 116: -#line 476 "engines/director/lingo/lingo-gr.y" + case 117: +#line 479 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(3); g_lingo->code1(g_lingo->c_play); ;} break; - case 117: -#line 479 "engines/director/lingo/lingo-gr.y" + case 118: +#line 482 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(2); g_lingo->code1(g_lingo->c_play); ;} break; - case 118: -#line 509 "engines/director/lingo/lingo-gr.y" + case 119: +#line 512 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;} break; - case 119: -#line 510 "engines/director/lingo/lingo-gr.y" + case 120: +#line 513 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); @@ -2539,38 +2549,38 @@ yyparse () g_lingo->_indef = false; ;} break; - case 120: -#line 515 "engines/director/lingo/lingo-gr.y" + case 121: +#line 518 "engines/director/lingo/lingo-gr.y" { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;} break; - case 121: -#line 518 "engines/director/lingo/lingo-gr.y" + case 122: +#line 521 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; ;} break; - case 122: -#line 519 "engines/director/lingo/lingo-gr.y" + case 123: +#line 522 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_procret); g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory); g_lingo->_indef = false; ;} break; - case 123: -#line 523 "engines/director/lingo/lingo-gr.y" + case 124: +#line 526 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;} break; - case 124: -#line 524 "engines/director/lingo/lingo-gr.y" + case 125: +#line 527 "engines/director/lingo/lingo-gr.y" { g_lingo->_ignoreMe = true; ;} break; - case 125: -#line 524 "engines/director/lingo/lingo-gr.y" + case 126: +#line 527 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); @@ -2584,33 +2594,33 @@ yyparse () ;} break; - case 126: -#line 536 "engines/director/lingo/lingo-gr.y" + case 127: +#line 539 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 0; ;} break; - case 127: -#line 537 "engines/director/lingo/lingo-gr.y" + case 128: +#line 540 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;} break; - case 128: -#line 538 "engines/director/lingo/lingo-gr.y" + case 129: +#line 541 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} break; - case 129: -#line 539 "engines/director/lingo/lingo-gr.y" + case 130: +#line 542 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;} break; - case 130: -#line 541 "engines/director/lingo/lingo-gr.y" + case 131: +#line 544 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArgStore(); ;} break; - case 131: -#line 545 "engines/director/lingo/lingo-gr.y" + case 132: +#line 548 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_call); g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str()); @@ -2619,24 +2629,24 @@ yyparse () g_lingo->code1(numpar); ;} break; - case 132: -#line 553 "engines/director/lingo/lingo-gr.y" + case 133: +#line 556 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 0; ;} break; - case 133: -#line 554 "engines/director/lingo/lingo-gr.y" + case 134: +#line 557 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; ;} break; - case 134: -#line 555 "engines/director/lingo/lingo-gr.y" + case 135: +#line 558 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} break; /* Line 1267 of yacc.c. */ -#line 2640 "engines/director/lingo/lingo-gr.cpp" +#line 2650 "engines/director/lingo/lingo-gr.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2850,6 +2860,6 @@ yyparse () } -#line 558 "engines/director/lingo/lingo-gr.y" +#line 561 "engines/director/lingo/lingo-gr.y" diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index 8c007800afd8..b9f15aaf310c 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -82,7 +82,7 @@ void yyerror(const char *s) { %token THEENTITY THEENTITYWITHID %token FLOAT %token BLTIN BLTINNOARGS BLTINNOARGSORONE BLTINONEARG BLTINARGLIST -%token ID STRING HANDLER +%token ID STRING HANDLER SYMBOL %token tDOWN tELSE tNLELSIF tEND tEXIT tFRAME tGLOBAL tGO tIF tINTO tLOOP tMACRO %token tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN %token tWITH tWHILE tNLELSE tFACTORY tMETHOD tOPEN tPLAY tDONE tPLAYACCEL tINSTANCE @@ -357,6 +357,9 @@ expr: INT { $$ = g_lingo->codeConst($1); } | FLOAT { $$ = g_lingo->code1(g_lingo->c_fconstpush); g_lingo->codeFloat($1); } + | SYMBOL { + $$ = g_lingo->code1(g_lingo->c_symbolpush); + g_lingo->codeString($1->c_str()); } | STRING { $$ = g_lingo->code1(g_lingo->c_stringpush); g_lingo->codeString($1->c_str()); } diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp index dea14757f4f0..840c349075ec 100644 --- a/engines/director/lingo/lingo-lex.cpp +++ b/engines/director/lingo/lingo-lex.cpp @@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[] ); *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 61 -#define YY_END_OF_BUFFER 62 +#define YY_NUM_RULES 62 +#define YY_END_OF_BUFFER 63 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -373,31 +373,32 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[211] = +static yyconst flex_int16_t yy_accept[214] = { 0, - 0, 0, 62, 60, 3, 58, 58, 60, 60, 57, - 57, 57, 56, 57, 57, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 2, 2, 3, 58, 0, 0, 0, 0, - 0, 59, 53, 1, 55, 56, 52, 50, 51, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 18, - 8, 54, 54, 54, 54, 54, 54, 54, 29, 30, - 54, 32, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 44, 54, 54, 2, 2, 0, 1, 55, 4, - 54, 54, 54, 54, 12, 54, 54, 54, 54, 0, - - 54, 54, 54, 54, 54, 25, 54, 54, 28, 54, - 54, 54, 35, 54, 37, 54, 54, 54, 54, 54, - 54, 54, 0, 54, 6, 7, 11, 14, 54, 54, - 54, 0, 54, 54, 21, 22, 54, 54, 54, 27, - 31, 33, 54, 54, 54, 54, 54, 0, 43, 48, - 54, 46, 10, 54, 54, 15, 54, 17, 54, 54, - 23, 54, 26, 54, 54, 38, 54, 54, 42, 42, - 49, 54, 0, 54, 54, 16, 54, 54, 24, 54, - 36, 45, 39, 0, 42, 47, 0, 54, 13, 54, - 54, 54, 0, 42, 9, 5, 19, 54, 34, 0, - - 42, 54, 0, 0, 20, 41, 0, 0, 40, 0 + 0, 0, 63, 61, 3, 59, 59, 61, 61, 61, + 58, 58, 58, 57, 58, 58, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 2, 2, 3, 59, 0, 0, 0, + 0, 0, 60, 4, 54, 1, 56, 57, 53, 51, + 52, 55, 55, 55, 55, 55, 55, 55, 55, 55, + 55, 19, 9, 55, 55, 55, 55, 55, 55, 55, + 30, 31, 55, 33, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 45, 55, 55, 2, 2, 0, 4, + 1, 56, 5, 55, 55, 55, 55, 13, 55, 55, + + 55, 55, 0, 55, 55, 55, 55, 55, 26, 55, + 55, 29, 55, 55, 55, 36, 55, 38, 55, 55, + 55, 55, 55, 55, 55, 0, 55, 7, 8, 12, + 15, 55, 55, 55, 0, 55, 55, 22, 23, 55, + 55, 55, 28, 32, 34, 55, 55, 55, 55, 55, + 0, 44, 49, 55, 47, 11, 55, 55, 16, 55, + 18, 55, 55, 24, 55, 27, 55, 55, 39, 55, + 55, 43, 43, 50, 55, 0, 55, 55, 17, 55, + 55, 25, 55, 37, 46, 40, 0, 43, 48, 0, + 55, 14, 55, 55, 55, 0, 43, 10, 6, 20, + + 55, 35, 0, 43, 55, 0, 0, 21, 42, 0, + 0, 41, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -405,17 +406,17 @@ static yyconst flex_int32_t 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, 5, 1, 6, 1, 1, 7, 8, 1, 7, - 7, 7, 7, 7, 9, 10, 7, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 7, 1, 12, - 13, 14, 1, 1, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 24, - 1, 1, 1, 7, 39, 1, 40, 41, 42, 43, - - 44, 45, 46, 47, 48, 24, 24, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 24, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 5, 1, 6, 7, 1, 8, 9, 1, 8, + 8, 8, 8, 8, 10, 11, 8, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 8, 1, 13, + 14, 15, 1, 1, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 25, + 1, 1, 1, 8, 40, 1, 41, 42, 43, 44, + + 45, 46, 47, 48, 49, 25, 25, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 25, 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, @@ -432,142 +433,144 @@ static yyconst flex_int32_t yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst flex_int32_t yy_meta[63] = +static yyconst flex_int32_t yy_meta[64] = { 0, 1, 2, 3, 3, 2, 1, 1, 1, 1, 1, - 4, 1, 1, 1, 5, 5, 5, 5, 5, 5, + 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, 4, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 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 yyconst flex_int16_t yy_base[216] = +static yyconst flex_int16_t yy_base[221] = { 0, - 0, 61, 205, 519, 65, 69, 73, 77, 179, 519, - 143, 137, 54, 70, 118, 58, 0, 58, 59, 69, - 74, 70, 70, 71, 88, 105, 107, 110, 81, 142, - 117, 125, 151, 174, 178, 519, 185, 191, 198, 77, - 102, 519, 519, 0, 82, 132, 519, 519, 519, 0, - 94, 123, 170, 135, 166, 175, 187, 192, 164, 99, - 0, 180, 186, 191, 182, 206, 182, 187, 0, 0, - 203, 0, 210, 207, 195, 202, 201, 206, 214, 231, - 229, 0, 234, 223, 257, 272, 231, 0, 80, 0, - 233, 235, 240, 249, 0, 237, 239, 255, 267, 283, - - 253, 270, 266, 266, 262, 0, 269, 266, 0, 273, - 263, 267, 0, 284, 0, 279, 281, 276, 310, 284, - 293, 291, 301, 312, 0, 0, 0, 0, 304, 314, - 319, 308, 324, 310, 0, 0, 315, 316, 327, 0, - 0, 0, 324, 333, 331, 318, 320, 352, 0, 0, - 336, 339, 161, 340, 335, 0, 344, 519, 343, 344, - 0, 360, 0, 353, 349, 0, 360, 351, 384, 390, - 0, 358, 394, 364, 359, 0, 381, 382, 0, 376, - 0, 0, 0, 409, 414, 0, 382, 380, 0, 394, - 401, 390, 404, 423, 519, 0, 0, 396, 0, 428, - - 430, 399, 445, 446, 0, 452, 419, 457, 458, 519, - 498, 500, 505, 509, 513 + 0, 62, 166, 531, 66, 70, 74, 78, 158, 0, + 531, 145, 128, 54, 70, 119, 58, 0, 58, 59, + 70, 73, 71, 71, 72, 110, 89, 115, 81, 82, + 128, 112, 126, 174, 185, 189, 531, 193, 197, 201, + 78, 89, 531, 0, 531, 0, 81, 141, 531, 531, + 531, 0, 140, 116, 172, 113, 164, 161, 183, 191, + 127, 101, 0, 178, 184, 196, 182, 208, 181, 189, + 0, 0, 200, 0, 209, 208, 196, 201, 200, 203, + 209, 232, 229, 0, 236, 217, 267, 274, 226, 0, + 0, 79, 0, 229, 237, 236, 241, 0, 232, 233, + + 253, 267, 287, 259, 274, 266, 266, 276, 0, 276, + 268, 0, 277, 267, 271, 0, 288, 0, 282, 287, + 281, 310, 288, 292, 291, 303, 312, 0, 0, 0, + 0, 303, 315, 325, 314, 328, 314, 0, 0, 318, + 320, 330, 0, 0, 0, 327, 336, 335, 323, 324, + 359, 0, 0, 335, 335, 213, 339, 333, 0, 346, + 531, 346, 345, 0, 349, 0, 354, 351, 0, 366, + 357, 389, 395, 0, 367, 399, 375, 366, 0, 369, + 379, 0, 371, 0, 0, 0, 408, 413, 0, 387, + 384, 0, 401, 404, 387, 407, 429, 531, 0, 0, + + 391, 0, 430, 434, 405, 438, 449, 0, 450, 421, + 454, 455, 531, 502, 504, 507, 510, 516, 521, 525 } ; -static yyconst flex_int16_t yy_def[216] = +static yyconst flex_int16_t yy_def[221] = { 0, - 210, 1, 210, 210, 210, 210, 210, 210, 211, 210, - 210, 210, 210, 210, 210, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 210, 210, 210, 210, 210, 210, 210, 210, - 211, 210, 210, 213, 210, 210, 210, 210, 210, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 210, 210, 210, 213, 210, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 210, - - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 210, 212, 212, 212, 212, 212, 212, 212, - 212, 210, 212, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 214, 212, 212, - 212, 212, 210, 212, 212, 212, 212, 210, 212, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 214, 214, - 212, 212, 210, 212, 212, 212, 212, 212, 212, 212, - 212, 212, 212, 210, 214, 212, 210, 212, 212, 212, - 212, 212, 210, 214, 210, 212, 212, 212, 212, 210, - - 214, 212, 215, 210, 212, 215, 210, 210, 215, 0, - 210, 210, 210, 210, 210 + 213, 1, 213, 213, 213, 213, 213, 213, 214, 215, + 213, 213, 213, 213, 213, 213, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 213, 213, 213, 213, 213, 213, 213, + 213, 214, 213, 217, 213, 218, 213, 213, 213, 213, + 213, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 213, 213, 213, 217, + 218, 213, 216, 216, 216, 216, 216, 216, 216, 216, + + 216, 216, 213, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 213, 216, 216, 216, 216, + 216, 216, 216, 216, 213, 216, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 219, 216, 216, 216, 216, 213, 216, 216, 216, 216, + 213, 216, 216, 216, 216, 216, 216, 216, 216, 216, + 216, 219, 219, 216, 216, 213, 216, 216, 216, 216, + 216, 216, 216, 216, 216, 216, 213, 219, 216, 213, + 216, 216, 216, 216, 216, 213, 219, 213, 216, 216, + + 216, 216, 213, 219, 216, 220, 213, 216, 220, 213, + 213, 220, 0, 213, 213, 213, 213, 213, 213, 213 } ; -static yyconst flex_int16_t yy_nxt[582] = +static yyconst flex_int16_t yy_nxt[595] = { 0, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 4, - 13, 14, 10, 15, 16, 17, 18, 19, 20, 21, - 22, 17, 23, 17, 24, 25, 26, 27, 28, 17, - 29, 30, 31, 17, 17, 32, 17, 17, 17, 16, - 17, 18, 19, 20, 21, 22, 17, 23, 24, 25, - 26, 27, 28, 17, 29, 30, 31, 17, 17, 32, - 17, 17, 33, 45, 46, 34, 35, 36, 36, 37, - 38, 39, 39, 38, 38, 39, 39, 38, 37, 36, - 36, 37, 47, 48, 51, 52, 53, 40, 57, 61, - 89, 40, 89, 54, 59, 55, 62, 60, 63, 76, - - 100, 87, 64, 100, 58, 56, 65, 42, 51, 52, - 53, 90, 40, 57, 61, 66, 40, 54, 59, 55, - 62, 60, 63, 67, 76, 87, 69, 64, 58, 56, - 49, 65, 68, 70, 73, 71, 90, 72, 81, 66, - 74, 45, 46, 75, 82, 44, 83, 84, 67, 91, - 43, 69, 85, 36, 36, 86, 68, 70, 73, 71, - 77, 72, 173, 81, 74, 173, 94, 75, 82, 78, - 79, 83, 84, 91, 80, 86, 36, 36, 86, 35, - 36, 36, 37, 95, 42, 77, 37, 36, 36, 37, - 94, 99, 38, 78, 79, 38, 92, 96, 80, 38, - - 39, 39, 38, 97, 210, 93, 98, 104, 95, 40, - 210, 101, 102, 103, 105, 99, 40, 210, 108, 109, - 92, 110, 96, 106, 111, 112, 210, 113, 97, 93, - 114, 98, 104, 115, 40, 101, 102, 103, 105, 116, - 107, 40, 108, 109, 117, 118, 110, 119, 106, 111, - 112, 113, 120, 125, 114, 122, 121, 115, 85, 36, - 36, 86, 123, 116, 107, 124, 126, 127, 117, 128, - 118, 129, 119, 86, 36, 36, 86, 120, 125, 122, - 130, 121, 131, 138, 100, 133, 123, 100, 134, 124, - 126, 139, 127, 128, 136, 129, 137, 135, 140, 141, - - 142, 143, 144, 146, 130, 145, 147, 131, 138, 133, - 150, 148, 152, 134, 148, 132, 139, 151, 136, 153, - 137, 135, 140, 141, 142, 143, 154, 144, 146, 145, - 147, 155, 156, 157, 150, 158, 149, 152, 159, 132, - 160, 151, 161, 162, 153, 163, 164, 165, 166, 210, - 167, 154, 168, 148, 171, 155, 148, 156, 157, 158, - 149, 172, 174, 159, 160, 175, 161, 162, 176, 177, - 163, 164, 165, 166, 167, 178, 168, 179, 182, 171, - 180, 181, 183, 170, 186, 184, 172, 174, 184, 175, - 188, 184, 176, 177, 184, 173, 189, 190, 173, 178, - - 191, 195, 179, 182, 180, 181, 183, 170, 186, 192, - 184, 196, 197, 184, 188, 184, 187, 198, 184, 185, - 189, 199, 190, 200, 184, 191, 195, 184, 202, 203, - 205, 204, 203, 192, 204, 196, 193, 197, 208, 210, - 210, 187, 198, 185, 194, 199, 203, 204, 200, 203, - 204, 210, 202, 210, 205, 201, 210, 210, 209, 209, - 193, 209, 209, 208, 210, 210, 210, 210, 194, 210, - 210, 210, 210, 207, 210, 210, 210, 210, 210, 201, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 207, 41, 41, - - 210, 41, 41, 50, 50, 88, 88, 210, 88, 88, - 169, 210, 210, 169, 206, 210, 210, 206, 3, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210 + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 4, 14, 15, 11, 16, 17, 18, 19, 20, 21, + 22, 23, 18, 24, 18, 25, 26, 27, 28, 29, + 18, 30, 31, 32, 18, 18, 33, 18, 18, 18, + 17, 18, 19, 20, 21, 22, 23, 18, 24, 25, + 26, 27, 28, 29, 18, 30, 31, 32, 18, 18, + 33, 18, 18, 34, 47, 48, 35, 36, 37, 37, + 38, 39, 40, 40, 39, 39, 40, 40, 39, 38, + 37, 37, 38, 49, 50, 53, 54, 55, 59, 41, + 92, 63, 92, 41, 43, 56, 61, 57, 64, 62, + + 65, 78, 103, 89, 60, 103, 75, 58, 69, 53, + 54, 55, 76, 59, 41, 77, 63, 70, 41, 56, + 61, 57, 64, 62, 65, 66, 78, 89, 60, 67, + 75, 58, 51, 69, 83, 71, 76, 46, 68, 77, + 84, 70, 72, 94, 73, 97, 74, 79, 85, 86, + 66, 47, 48, 45, 67, 102, 80, 81, 93, 83, + 71, 82, 68, 43, 84, 213, 72, 94, 73, 97, + 74, 213, 79, 85, 86, 87, 37, 37, 88, 102, + 80, 81, 98, 93, 99, 82, 88, 37, 37, 88, + 36, 37, 37, 38, 38, 37, 37, 38, 39, 95, + + 100, 39, 39, 40, 40, 39, 101, 98, 96, 99, + 104, 105, 106, 107, 176, 108, 41, 176, 111, 113, + 41, 213, 112, 95, 114, 100, 109, 115, 213, 116, + 117, 101, 96, 118, 104, 105, 106, 119, 107, 108, + 120, 41, 111, 110, 113, 41, 112, 121, 122, 114, + 125, 109, 115, 116, 117, 123, 128, 118, 126, 124, + 130, 119, 127, 129, 120, 131, 132, 110, 87, 37, + 37, 88, 121, 122, 125, 88, 37, 37, 88, 133, + 123, 128, 126, 134, 124, 130, 127, 129, 103, 131, + 132, 103, 136, 137, 213, 139, 213, 140, 141, 142, + + 213, 143, 138, 133, 144, 145, 146, 147, 134, 148, + 149, 151, 150, 155, 151, 153, 136, 154, 137, 139, + 135, 140, 156, 141, 142, 143, 138, 157, 144, 145, + 146, 158, 147, 148, 159, 149, 150, 152, 155, 153, + 160, 154, 161, 162, 135, 163, 164, 156, 165, 166, + 167, 168, 157, 169, 174, 158, 170, 171, 175, 159, + 151, 152, 177, 151, 178, 160, 161, 182, 162, 163, + 164, 179, 165, 180, 166, 167, 168, 181, 169, 174, + 170, 171, 183, 175, 184, 185, 193, 177, 178, 186, + 187, 173, 182, 187, 189, 179, 187, 180, 194, 187, + + 176, 181, 191, 176, 192, 195, 183, 198, 184, 187, + 185, 193, 187, 186, 187, 173, 199, 187, 189, 202, + 200, 201, 190, 194, 205, 188, 191, 203, 192, 195, + 187, 206, 198, 187, 206, 207, 196, 208, 207, 206, + 199, 211, 206, 202, 197, 200, 201, 190, 205, 188, + 207, 213, 203, 207, 213, 212, 212, 213, 212, 212, + 196, 208, 204, 213, 213, 213, 211, 213, 197, 213, + 213, 213, 213, 213, 213, 213, 213, 210, 213, 213, + 213, 213, 213, 213, 213, 213, 204, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + + 213, 210, 42, 42, 213, 42, 42, 42, 44, 44, + 52, 52, 52, 90, 90, 90, 91, 91, 213, 91, + 91, 91, 172, 213, 213, 172, 209, 213, 213, 209, + 3, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213 + } ; -static yyconst flex_int16_t yy_chk[582] = +static yyconst flex_int16_t yy_chk[595] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -575,64 +578,66 @@ static yyconst flex_int16_t yy_chk[582] = 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, 13, 13, 2, 5, 5, 5, 5, - 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, - 8, 8, 14, 14, 16, 18, 19, 6, 21, 23, - 89, 7, 45, 20, 22, 20, 23, 22, 24, 29, - - 60, 40, 25, 60, 21, 20, 25, 41, 16, 18, - 19, 51, 6, 21, 23, 25, 7, 20, 22, 20, - 23, 22, 24, 26, 29, 40, 27, 25, 21, 20, - 15, 25, 26, 27, 28, 27, 51, 27, 31, 25, - 28, 46, 46, 28, 31, 12, 32, 32, 26, 52, - 11, 27, 33, 33, 33, 33, 26, 27, 28, 27, - 30, 27, 153, 31, 28, 153, 54, 28, 31, 30, - 30, 32, 32, 52, 30, 34, 34, 34, 34, 35, - 35, 35, 35, 55, 9, 30, 37, 37, 37, 37, - 54, 59, 38, 30, 30, 38, 53, 56, 30, 39, - - 39, 39, 39, 57, 3, 53, 58, 64, 55, 38, - 0, 62, 62, 63, 65, 59, 39, 0, 67, 68, - 53, 71, 56, 66, 73, 74, 0, 75, 57, 53, - 76, 58, 64, 77, 38, 62, 62, 63, 65, 78, - 66, 39, 67, 68, 79, 80, 71, 81, 66, 73, - 74, 75, 83, 92, 76, 84, 83, 77, 85, 85, - 85, 85, 87, 78, 66, 91, 93, 94, 79, 96, - 80, 97, 81, 86, 86, 86, 86, 83, 92, 84, - 98, 83, 99, 105, 100, 101, 87, 100, 102, 91, - 93, 107, 94, 96, 103, 97, 104, 102, 108, 110, - - 111, 112, 114, 117, 98, 116, 118, 99, 105, 101, - 120, 119, 122, 102, 119, 100, 107, 121, 103, 123, - 104, 102, 108, 110, 111, 112, 124, 114, 117, 116, - 118, 129, 130, 131, 120, 132, 119, 122, 133, 100, - 134, 121, 137, 138, 123, 139, 143, 144, 145, 0, - 146, 124, 147, 148, 151, 129, 148, 130, 131, 132, - 119, 152, 154, 133, 134, 155, 137, 138, 157, 159, - 139, 143, 144, 145, 146, 160, 147, 162, 167, 151, - 164, 165, 168, 148, 172, 169, 152, 154, 169, 155, - 174, 170, 157, 159, 170, 173, 175, 177, 173, 160, - - 178, 187, 162, 167, 164, 165, 168, 148, 172, 180, - 184, 188, 190, 184, 174, 185, 173, 191, 185, 170, - 175, 192, 177, 193, 194, 178, 187, 194, 198, 200, - 202, 201, 200, 180, 201, 188, 184, 190, 207, 0, - 0, 173, 191, 170, 185, 192, 203, 204, 193, 203, - 204, 0, 198, 206, 202, 194, 206, 0, 208, 209, - 184, 208, 209, 207, 0, 0, 0, 0, 185, 0, - 0, 0, 0, 204, 0, 0, 0, 0, 0, 194, + 1, 1, 1, 2, 14, 14, 2, 5, 5, 5, + 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, + 8, 8, 8, 15, 15, 17, 19, 20, 22, 6, + 92, 24, 47, 7, 42, 21, 23, 21, 24, 23, + + 25, 30, 62, 41, 22, 62, 29, 21, 27, 17, + 19, 20, 29, 22, 6, 29, 24, 27, 7, 21, + 23, 21, 24, 23, 25, 26, 30, 41, 22, 26, + 29, 21, 16, 27, 32, 28, 29, 13, 26, 29, + 32, 27, 28, 54, 28, 56, 28, 31, 33, 33, + 26, 48, 48, 12, 26, 61, 31, 31, 53, 32, + 28, 31, 26, 9, 32, 3, 28, 54, 28, 56, + 28, 0, 31, 33, 33, 34, 34, 34, 34, 61, + 31, 31, 57, 53, 58, 31, 35, 35, 35, 35, + 36, 36, 36, 36, 38, 38, 38, 38, 39, 55, + + 59, 39, 40, 40, 40, 40, 60, 57, 55, 58, + 64, 64, 65, 66, 156, 67, 39, 156, 69, 73, + 40, 0, 70, 55, 75, 59, 68, 76, 0, 77, + 78, 60, 55, 79, 64, 64, 65, 80, 66, 67, + 81, 39, 69, 68, 73, 40, 70, 82, 83, 75, + 86, 68, 76, 77, 78, 85, 95, 79, 89, 85, + 97, 80, 94, 96, 81, 99, 100, 68, 87, 87, + 87, 87, 82, 83, 86, 88, 88, 88, 88, 101, + 85, 95, 89, 102, 85, 97, 94, 96, 103, 99, + 100, 103, 104, 105, 0, 106, 0, 107, 108, 110, + + 0, 111, 105, 101, 113, 114, 115, 117, 102, 119, + 120, 122, 121, 125, 122, 123, 104, 124, 105, 106, + 103, 107, 126, 108, 110, 111, 105, 127, 113, 114, + 115, 132, 117, 119, 133, 120, 121, 122, 125, 123, + 134, 124, 135, 136, 103, 137, 140, 126, 141, 142, + 146, 147, 127, 148, 154, 132, 149, 150, 155, 133, + 151, 122, 157, 151, 158, 134, 135, 165, 136, 137, + 140, 160, 141, 162, 142, 146, 147, 163, 148, 154, + 149, 150, 167, 155, 168, 170, 180, 157, 158, 171, + 172, 151, 165, 172, 175, 160, 173, 162, 181, 173, + + 176, 163, 177, 176, 178, 183, 167, 190, 168, 187, + 170, 180, 187, 171, 188, 151, 191, 188, 175, 195, + 193, 194, 176, 181, 201, 173, 177, 196, 178, 183, + 197, 203, 190, 197, 203, 204, 187, 205, 204, 206, + 191, 210, 206, 195, 188, 193, 194, 176, 201, 173, + 207, 209, 196, 207, 209, 211, 212, 0, 211, 212, + 187, 205, 197, 0, 0, 0, 210, 0, 188, 0, + 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, + 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 204, 211, 211, - - 0, 211, 211, 212, 212, 213, 213, 0, 213, 213, - 214, 0, 0, 214, 215, 0, 0, 215, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 210 + + 0, 207, 214, 214, 0, 214, 214, 214, 215, 215, + 216, 216, 216, 217, 217, 217, 218, 218, 0, 218, + 218, 218, 219, 0, 0, 219, 220, 0, 0, 220, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, + 213, 213, 213, 213 + } ; static yy_state_type yy_last_accepting_state; @@ -706,7 +711,7 @@ static void countnl() { g_lingo->_colnumber = strlen(p); } -#line 710 "engines/director/lingo/lingo-lex.cpp" +#line 715 "engines/director/lingo/lingo-lex.cpp" #define INITIAL 0 @@ -894,7 +899,7 @@ YY_DECL #line 69 "engines/director/lingo/lingo-lex.l" -#line 898 "engines/director/lingo/lingo-lex.cpp" +#line 903 "engines/director/lingo/lingo-lex.cpp" if ( !(yy_init) ) { @@ -948,13 +953,13 @@ YY_DECL 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 >= 211 ) + if ( yy_current_state >= 214 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 519 ); + while ( yy_base[yy_current_state] != 531 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -996,188 +1001,193 @@ YY_RULE_SETUP case 4: YY_RULE_SETUP #line 75 "engines/director/lingo/lingo-lex.l" -{ count(); return tAND; } +{ count(); yylval.s = new Common::String(yytext); return SYMBOL; } YY_BREAK case 5: YY_RULE_SETUP -#line 76 "engines/director/lingo/lingo-lex.l" -{ count(); return tCONTAINS; } +#line 77 "engines/director/lingo/lingo-lex.l" +{ count(); return tAND; } YY_BREAK case 6: YY_RULE_SETUP -#line 77 "engines/director/lingo/lingo-lex.l" -{ count(); return tDONE; } +#line 78 "engines/director/lingo/lingo-lex.l" +{ count(); return tCONTAINS; } YY_BREAK case 7: YY_RULE_SETUP -#line 78 "engines/director/lingo/lingo-lex.l" -{ count(); return tDOWN; } +#line 79 "engines/director/lingo/lingo-lex.l" +{ count(); return tDONE; } YY_BREAK case 8: YY_RULE_SETUP -#line 79 "engines/director/lingo/lingo-lex.l" -{ count(); return tIF; } +#line 80 "engines/director/lingo/lingo-lex.l" +{ count(); return tDOWN; } YY_BREAK case 9: -/* rule 9 can match eol */ YY_RULE_SETUP -#line 80 "engines/director/lingo/lingo-lex.l" -{ countnl(); return tNLELSIF; } +#line 81 "engines/director/lingo/lingo-lex.l" +{ count(); return tIF; } YY_BREAK case 10: /* rule 10 can match eol */ YY_RULE_SETUP -#line 81 "engines/director/lingo/lingo-lex.l" -{ countnl(); return tNLELSE; } +#line 82 "engines/director/lingo/lingo-lex.l" +{ countnl(); return tNLELSIF; } YY_BREAK case 11: +/* rule 11 can match eol */ YY_RULE_SETUP -#line 82 "engines/director/lingo/lingo-lex.l" -{ count(); return tELSE; } +#line 83 "engines/director/lingo/lingo-lex.l" +{ countnl(); return tNLELSE; } YY_BREAK case 12: YY_RULE_SETUP -#line 83 "engines/director/lingo/lingo-lex.l" -{ count(); return tEND; } +#line 84 "engines/director/lingo/lingo-lex.l" +{ count(); return tELSE; } YY_BREAK case 13: YY_RULE_SETUP -#line 84 "engines/director/lingo/lingo-lex.l" -{ count(); return tFACTORY; } +#line 85 "engines/director/lingo/lingo-lex.l" +{ count(); return tEND; } YY_BREAK case 14: YY_RULE_SETUP -#line 85 "engines/director/lingo/lingo-lex.l" -{ count(); return tEXIT; } +#line 86 "engines/director/lingo/lingo-lex.l" +{ count(); return tFACTORY; } YY_BREAK case 15: YY_RULE_SETUP -#line 86 "engines/director/lingo/lingo-lex.l" -{ count(); return tFRAME; } +#line 87 "engines/director/lingo/lingo-lex.l" +{ count(); return tEXIT; } YY_BREAK case 16: YY_RULE_SETUP -#line 87 "engines/director/lingo/lingo-lex.l" -{ count(); return tGLOBAL; } +#line 88 "engines/director/lingo/lingo-lex.l" +{ count(); return tFRAME; } YY_BREAK case 17: YY_RULE_SETUP -#line 88 "engines/director/lingo/lingo-lex.l" -{ count(); return tGO; } +#line 89 "engines/director/lingo/lingo-lex.l" +{ count(); return tGLOBAL; } YY_BREAK case 18: YY_RULE_SETUP -#line 89 "engines/director/lingo/lingo-lex.l" +#line 90 "engines/director/lingo/lingo-lex.l" { count(); return tGO; } YY_BREAK case 19: YY_RULE_SETUP -#line 90 "engines/director/lingo/lingo-lex.l" -{ count(); return tINSTANCE; } +#line 91 "engines/director/lingo/lingo-lex.l" +{ count(); return tGO; } YY_BREAK case 20: YY_RULE_SETUP -#line 91 "engines/director/lingo/lingo-lex.l" -{ count(); return tINTERSECTS; } +#line 92 "engines/director/lingo/lingo-lex.l" +{ count(); return tINSTANCE; } YY_BREAK case 21: YY_RULE_SETUP -#line 92 "engines/director/lingo/lingo-lex.l" -{ count(); return tINTO; } +#line 93 "engines/director/lingo/lingo-lex.l" +{ count(); return tINTERSECTS; } YY_BREAK case 22: YY_RULE_SETUP -#line 93 "engines/director/lingo/lingo-lex.l" -{ count(); return tLOOP; } +#line 94 "engines/director/lingo/lingo-lex.l" +{ count(); return tINTO; } YY_BREAK case 23: YY_RULE_SETUP -#line 94 "engines/director/lingo/lingo-lex.l" -{ count(); return tMACRO; } +#line 95 "engines/director/lingo/lingo-lex.l" +{ count(); return tLOOP; } YY_BREAK case 24: YY_RULE_SETUP -#line 95 "engines/director/lingo/lingo-lex.l" -{ count(); return tMETHOD; } +#line 96 "engines/director/lingo/lingo-lex.l" +{ count(); return tMACRO; } YY_BREAK case 25: YY_RULE_SETUP -#line 96 "engines/director/lingo/lingo-lex.l" -{ count(); return tMOD; } +#line 97 "engines/director/lingo/lingo-lex.l" +{ count(); return tMETHOD; } YY_BREAK case 26: YY_RULE_SETUP -#line 97 "engines/director/lingo/lingo-lex.l" -{ count(); return tMOVIE; } +#line 98 "engines/director/lingo/lingo-lex.l" +{ count(); return tMOD; } YY_BREAK case 27: YY_RULE_SETUP -#line 98 "engines/director/lingo/lingo-lex.l" -{ count(); return tNEXT; } +#line 99 "engines/director/lingo/lingo-lex.l" +{ count(); return tMOVIE; } YY_BREAK case 28: YY_RULE_SETUP -#line 99 "engines/director/lingo/lingo-lex.l" -{ count(); return tNOT; } +#line 100 "engines/director/lingo/lingo-lex.l" +{ count(); return tNEXT; } YY_BREAK case 29: YY_RULE_SETUP -#line 100 "engines/director/lingo/lingo-lex.l" -{ count(); return tOF; } +#line 101 "engines/director/lingo/lingo-lex.l" +{ count(); return tNOT; } YY_BREAK case 30: YY_RULE_SETUP -#line 101 "engines/director/lingo/lingo-lex.l" -{ count(); return tON; } +#line 102 "engines/director/lingo/lingo-lex.l" +{ count(); return tOF; } YY_BREAK case 31: YY_RULE_SETUP -#line 102 "engines/director/lingo/lingo-lex.l" -{ count(); return tOPEN; } +#line 103 "engines/director/lingo/lingo-lex.l" +{ count(); return tON; } YY_BREAK case 32: YY_RULE_SETUP -#line 103 "engines/director/lingo/lingo-lex.l" -{ count(); return tOR; } +#line 104 "engines/director/lingo/lingo-lex.l" +{ count(); return tOPEN; } YY_BREAK case 33: YY_RULE_SETUP -#line 104 "engines/director/lingo/lingo-lex.l" -{ count(); return tPLAY; } +#line 105 "engines/director/lingo/lingo-lex.l" +{ count(); return tOR; } YY_BREAK case 34: YY_RULE_SETUP -#line 105 "engines/director/lingo/lingo-lex.l" -{ count(); return tPREVIOUS; } +#line 106 "engines/director/lingo/lingo-lex.l" +{ count(); return tPLAY; } YY_BREAK case 35: YY_RULE_SETUP -#line 106 "engines/director/lingo/lingo-lex.l" -{ count(); return tPUT; } +#line 107 "engines/director/lingo/lingo-lex.l" +{ count(); return tPREVIOUS; } YY_BREAK case 36: YY_RULE_SETUP -#line 107 "engines/director/lingo/lingo-lex.l" -{ count(); return tREPEAT; } +#line 108 "engines/director/lingo/lingo-lex.l" +{ count(); return tPUT; } YY_BREAK case 37: YY_RULE_SETUP -#line 108 "engines/director/lingo/lingo-lex.l" -{ count(); return tSET; } +#line 109 "engines/director/lingo/lingo-lex.l" +{ count(); return tREPEAT; } YY_BREAK case 38: YY_RULE_SETUP -#line 109 "engines/director/lingo/lingo-lex.l" -{ count(); return tSOUND; } +#line 110 "engines/director/lingo/lingo-lex.l" +{ count(); return tSET; } YY_BREAK case 39: YY_RULE_SETUP -#line 110 "engines/director/lingo/lingo-lex.l" -{ count(); return tSTARTS; } +#line 111 "engines/director/lingo/lingo-lex.l" +{ count(); return tSOUND; } YY_BREAK case 40: YY_RULE_SETUP -#line 111 "engines/director/lingo/lingo-lex.l" +#line 112 "engines/director/lingo/lingo-lex.l" +{ count(); return tSTARTS; } + YY_BREAK +case 41: +YY_RULE_SETUP +#line 113 "engines/director/lingo/lingo-lex.l" { count(); @@ -1187,9 +1197,9 @@ YY_RULE_SETUP return THEENTITYWITHID; } YY_BREAK -case 41: +case 42: YY_RULE_SETUP -#line 119 "engines/director/lingo/lingo-lex.l" +#line 121 "engines/director/lingo/lingo-lex.l" { count(); @@ -1231,9 +1241,9 @@ YY_RULE_SETUP warning("Unhandled the entity %s", ptr); } YY_BREAK -case 42: +case 43: YY_RULE_SETUP -#line 159 "engines/director/lingo/lingo-lex.l" +#line 161 "engines/director/lingo/lingo-lex.l" { count(); @@ -1254,64 +1264,64 @@ YY_RULE_SETUP warning("Unhandled the entity %s", ptr); } YY_BREAK -case 43: -YY_RULE_SETUP -#line 178 "engines/director/lingo/lingo-lex.l" -{ count(); return tTHEN; } - YY_BREAK case 44: YY_RULE_SETUP -#line 179 "engines/director/lingo/lingo-lex.l" -{ count(); return tTO; } +#line 180 "engines/director/lingo/lingo-lex.l" +{ count(); return tTHEN; } YY_BREAK case 45: YY_RULE_SETUP -#line 180 "engines/director/lingo/lingo-lex.l" -{ count(); return tSPRITE; } +#line 181 "engines/director/lingo/lingo-lex.l" +{ count(); return tTO; } YY_BREAK case 46: YY_RULE_SETUP -#line 181 "engines/director/lingo/lingo-lex.l" -{ count(); return tWITH; } +#line 182 "engines/director/lingo/lingo-lex.l" +{ count(); return tSPRITE; } YY_BREAK case 47: YY_RULE_SETUP -#line 182 "engines/director/lingo/lingo-lex.l" -{ count(); return tWITHIN; } +#line 183 "engines/director/lingo/lingo-lex.l" +{ count(); return tWITH; } YY_BREAK case 48: YY_RULE_SETUP -#line 183 "engines/director/lingo/lingo-lex.l" -{ count(); return tWHEN; } +#line 184 "engines/director/lingo/lingo-lex.l" +{ count(); return tWITHIN; } YY_BREAK case 49: YY_RULE_SETUP -#line 184 "engines/director/lingo/lingo-lex.l" -{ count(); return tWHILE; } +#line 185 "engines/director/lingo/lingo-lex.l" +{ count(); return tWHEN; } YY_BREAK case 50: YY_RULE_SETUP #line 186 "engines/director/lingo/lingo-lex.l" -{ count(); return tNEQ; } +{ count(); return tWHILE; } YY_BREAK case 51: YY_RULE_SETUP -#line 187 "engines/director/lingo/lingo-lex.l" -{ count(); return tGE; } +#line 188 "engines/director/lingo/lingo-lex.l" +{ count(); return tNEQ; } YY_BREAK case 52: YY_RULE_SETUP -#line 188 "engines/director/lingo/lingo-lex.l" -{ count(); return tLE; } +#line 189 "engines/director/lingo/lingo-lex.l" +{ count(); return tGE; } YY_BREAK case 53: YY_RULE_SETUP -#line 189 "engines/director/lingo/lingo-lex.l" -{ count(); return tCONCAT; } +#line 190 "engines/director/lingo/lingo-lex.l" +{ count(); return tLE; } YY_BREAK case 54: YY_RULE_SETUP #line 191 "engines/director/lingo/lingo-lex.l" +{ count(); return tCONCAT; } + YY_BREAK +case 55: +YY_RULE_SETUP +#line 193 "engines/director/lingo/lingo-lex.l" { count(); yylval.s = new Common::String(yytext); @@ -1342,43 +1352,43 @@ YY_RULE_SETUP return ID; } YY_BREAK -case 55: +case 56: YY_RULE_SETUP -#line 220 "engines/director/lingo/lingo-lex.l" +#line 222 "engines/director/lingo/lingo-lex.l" { count(); yylval.f = atof(yytext); return FLOAT; } YY_BREAK -case 56: +case 57: YY_RULE_SETUP -#line 221 "engines/director/lingo/lingo-lex.l" +#line 223 "engines/director/lingo/lingo-lex.l" { count(); yylval.i = strtol(yytext, NULL, 10); return INT; } YY_BREAK -case 57: +case 58: YY_RULE_SETUP -#line 222 "engines/director/lingo/lingo-lex.l" +#line 224 "engines/director/lingo/lingo-lex.l" { count(); return *yytext; } YY_BREAK -case 58: -/* rule 58 can match eol */ +case 59: +/* rule 59 can match eol */ YY_RULE_SETUP -#line 223 "engines/director/lingo/lingo-lex.l" +#line 225 "engines/director/lingo/lingo-lex.l" { return '\n'; } YY_BREAK -case 59: +case 60: YY_RULE_SETUP -#line 224 "engines/director/lingo/lingo-lex.l" +#line 226 "engines/director/lingo/lingo-lex.l" { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; } YY_BREAK -case 60: +case 61: YY_RULE_SETUP -#line 225 "engines/director/lingo/lingo-lex.l" +#line 227 "engines/director/lingo/lingo-lex.l" YY_BREAK -case 61: +case 62: YY_RULE_SETUP -#line 227 "engines/director/lingo/lingo-lex.l" +#line 229 "engines/director/lingo/lingo-lex.l" ECHO; YY_BREAK -#line 1382 "engines/director/lingo/lingo-lex.cpp" +#line 1392 "engines/director/lingo/lingo-lex.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1671,7 +1681,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 >= 211 ) + if ( yy_current_state >= 214 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1699,11 +1709,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 >= 211 ) + if ( yy_current_state >= 214 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 210); + yy_is_jam = (yy_current_state == 213); return yy_is_jam ? 0 : yy_current_state; } @@ -2378,7 +2388,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 227 "engines/director/lingo/lingo-lex.l" +#line 229 "engines/director/lingo/lingo-lex.l" diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l index 25fde2a371d1..5d39b3f946f5 100644 --- a/engines/director/lingo/lingo-lex.l +++ b/engines/director/lingo/lingo-lex.l @@ -72,6 +72,8 @@ whitespace [\t ] ^{whitespace}+ { count(); } [\t]+ { count(); return ' '; } +[#]{identifier} { count(); yylval.s = new Common::String(yytext); return SYMBOL; } + (?i:and) { count(); return tAND; } (?i:contains) { count(); return tCONTAINS; } (?i:done) { count(); return tDONE; } diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index 0ed69de58750..cc0bff1bcb56 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -252,6 +252,7 @@ class Lingo { static void c_voidpush(); static void c_fconstpush(); static void c_stringpush(); + static void c_symbolpush(); static void c_varpush(); static void c_assign(); bool verify(Symbol *s);