diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index 77677402031f..f950d35d59ea 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -74,6 +74,8 @@ static struct FuncDescr { { Lingo::c_mod, "c_mod", "" }, { Lingo::c_negate, "c_negate", "" }, { Lingo::c_ampersand, "c_ampersand", "" }, + { Lingo::c_after, "c_after", "" }, + { Lingo::c_before, "c_before", "" }, { Lingo::c_concat, "c_concat", "" }, { Lingo::c_contains, "c_contains", "" }, { Lingo::c_starts, "c_starts", "" }, @@ -476,6 +478,34 @@ void Lingo::c_ampersand() { g_lingo->push(d1); } +void Lingo::c_after() { + Datum d2 = g_lingo->pop(); + Datum d1 = g_lingo->pop(); + + d1.toString(); + d2.toString(); + + warning("STUB: c_after"); + + delete d2.u.s; + + g_lingo->push(d1); +} + +void Lingo::c_before() { + Datum d2 = g_lingo->pop(); + Datum d1 = g_lingo->pop(); + + d1.toString(); + d2.toString(); + + warning("STUB: c_before"); + + delete d2.u.s; + + g_lingo->push(d1); +} + void Lingo::c_concat() { Datum d2 = g_lingo->pop(); Datum d1 = g_lingo->pop(); diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index 97a676e68217..a943ced02f87 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -129,14 +129,16 @@ tOR = 318, tNOT = 319, tMOD = 320, - tCONCAT = 321, - tCONTAINS = 322, - tSTARTS = 323, - tSPRITE = 324, - tINTERSECTS = 325, - tWITHIN = 326, - tON = 327, - tSOUND = 328 + tAFTER = 321, + tBEFORE = 322, + tCONCAT = 323, + tCONTAINS = 324, + tSTARTS = 325, + tSPRITE = 326, + tINTERSECTS = 327, + tWITHIN = 328, + tON = 329, + tSOUND = 330 }; #endif /* Tokens. */ @@ -203,14 +205,16 @@ #define tOR 318 #define tNOT 319 #define tMOD 320 -#define tCONCAT 321 -#define tCONTAINS 322 -#define tSTARTS 323 -#define tSPRITE 324 -#define tINTERSECTS 325 -#define tWITHIN 326 -#define tON 327 -#define tSOUND 328 +#define tAFTER 321 +#define tBEFORE 322 +#define tCONCAT 323 +#define tCONTAINS 324 +#define tSTARTS 325 +#define tSPRITE 326 +#define tINTERSECTS 327 +#define tWITHIN 328 +#define tON 329 +#define tSOUND 330 @@ -268,7 +272,7 @@ typedef union YYSTYPE Common::Array *arr; } /* Line 193 of yacc.c. */ -#line 272 "engines/director/lingo/lingo-gr.cpp" +#line 276 "engines/director/lingo/lingo-gr.cpp" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -281,7 +285,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 285 "engines/director/lingo/lingo-gr.cpp" +#line 289 "engines/director/lingo/lingo-gr.cpp" #ifdef short # undef short @@ -496,20 +500,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 97 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1030 +#define YYLAST 1146 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 87 +#define YYNTOKENS 89 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 39 /* YYNRULES -- Number of rules. */ -#define YYNRULES 135 +#define YYNRULES 138 /* YYNRULES -- Number of states. */ -#define YYNSTATES 283 +#define YYNSTATES 289 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 328 +#define YYMAXUTOK 330 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -518,12 +522,12 @@ union yyalloc static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 81, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 83, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 80, 75, 2, - 82, 83, 78, 76, 86, 77, 2, 79, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 82, 77, 2, + 84, 85, 80, 78, 88, 79, 2, 81, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 85, 74, 84, 2, 2, 2, 2, 2, 2, 2, + 87, 76, 86, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -549,7 +553,8 @@ static const yytype_uint8 yytranslate[] = 35, 36, 37, 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, 70, 71, 72, 73 + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75 }; #if YYDEBUG @@ -558,94 +563,95 @@ static const yytype_uint8 yytranslate[] = static const yytype_uint16 yyprhs[] = { 0, 0, 3, 7, 9, 12, 14, 15, 17, 19, - 21, 23, 25, 30, 35, 40, 46, 51, 56, 62, - 64, 66, 68, 70, 79, 91, 104, 108, 117, 129, - 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, - 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 + 21, 23, 25, 30, 35, 40, 45, 50, 56, 61, + 66, 72, 74, 76, 78, 80, 89, 101, 114, 118, + 127, 139, 151, 158, 169, 180, 181, 185, 188, 190, + 193, 195, 202, 204, 210, 212, 216, 220, 223, 227, + 229, 231, 232, 233, 234, 237, 240, 244, 246, 248, + 250, 252, 254, 259, 261, 263, 266, 268, 272, 276, + 280, 284, 288, 292, 296, 300, 304, 308, 312, 316, + 319, 323, 327, 331, 335, 339, 342, 345, 349, 354, + 359, 362, 364, 366, 369, 371, 374, 377, 380, 383, + 385, 388, 393, 396, 400, 402, 406, 408, 412, 415, + 418, 421, 424, 428, 431, 434, 436, 440, 443, 446, + 449, 453, 456, 457, 466, 469, 470, 479, 480, 481, + 492, 493, 495, 499, 504, 505, 509, 510, 512 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { - 88, 0, -1, 88, 89, 90, -1, 90, -1, 1, - 89, -1, 81, -1, -1, 117, -1, 110, -1, 124, - -1, 91, -1, 93, -1, 40, 109, 33, 21, -1, - 42, 21, 74, 109, -1, 42, 13, 74, 109, -1, - 42, 14, 109, 74, 109, -1, 42, 21, 44, 109, - -1, 42, 13, 44, 109, -1, 42, 14, 109, 44, - 109, -1, 109, -1, 110, -1, 92, -1, 94, -1, - 101, 82, 100, 83, 107, 106, 27, 41, -1, 102, - 74, 109, 106, 44, 109, 106, 107, 106, 27, 41, - -1, 102, 74, 109, 106, 24, 44, 109, 106, 107, - 106, 27, 41, -1, 108, 109, 106, -1, 103, 100, - 43, 89, 107, 106, 27, 32, -1, 103, 100, 43, - 89, 107, 106, 48, 107, 106, 27, 32, -1, 103, - 100, 43, 89, 107, 106, 105, 96, 106, 27, 32, - -1, 103, 100, 43, 105, 92, 106, -1, 103, 100, - 43, 105, 92, 106, 48, 105, 92, 106, -1, 103, - 100, 43, 105, 92, 106, 97, 106, 95, 106, -1, - -1, 48, 105, 92, -1, 96, 99, -1, 99, -1, - 97, 98, -1, 98, -1, 104, 100, 43, 105, 93, - 106, -1, 97, -1, 104, 100, 43, 107, 106, -1, - 109, -1, 109, 74, 109, -1, 82, 100, 83, -1, + 90, 0, -1, 90, 91, 92, -1, 92, -1, 1, + 91, -1, 83, -1, -1, 119, -1, 112, -1, 126, + -1, 93, -1, 95, -1, 40, 111, 33, 21, -1, + 40, 111, 66, 111, -1, 40, 111, 67, 111, -1, + 42, 21, 76, 111, -1, 42, 13, 76, 111, -1, + 42, 14, 111, 76, 111, -1, 42, 21, 44, 111, + -1, 42, 13, 44, 111, -1, 42, 14, 111, 44, + 111, -1, 111, -1, 112, -1, 94, -1, 96, -1, + 103, 84, 102, 85, 109, 108, 27, 41, -1, 104, + 76, 111, 108, 44, 111, 108, 109, 108, 27, 41, + -1, 104, 76, 111, 108, 24, 44, 111, 108, 109, + 108, 27, 41, -1, 110, 111, 108, -1, 105, 102, + 43, 91, 109, 108, 27, 32, -1, 105, 102, 43, + 91, 109, 108, 48, 109, 108, 27, 32, -1, 105, + 102, 43, 91, 109, 108, 107, 98, 108, 27, 32, + -1, 105, 102, 43, 107, 94, 108, -1, 105, 102, + 43, 107, 94, 108, 48, 107, 94, 108, -1, 105, + 102, 43, 107, 94, 108, 99, 108, 97, 108, -1, + -1, 48, 107, 94, -1, 98, 101, -1, 101, -1, + 99, 100, -1, 100, -1, 106, 102, 43, 107, 95, + 108, -1, 99, -1, 106, 102, 43, 109, 108, -1, + 111, -1, 111, 76, 111, -1, 84, 102, 85, -1, 41, 47, -1, 41, 46, 21, -1, 32, -1, 26, - -1, -1, -1, -1, 107, 89, -1, 107, 93, -1, + -1, -1, -1, -1, 109, 91, -1, 109, 95, -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 + 22, -1, 17, -1, 21, 84, 127, 85, -1, 21, + -1, 13, -1, 14, 111, -1, 93, -1, 111, 78, + 111, -1, 111, 79, 111, -1, 111, 80, 111, -1, + 111, 81, 111, -1, 111, 65, 111, -1, 111, 86, + 111, -1, 111, 87, 111, -1, 111, 61, 111, -1, + 111, 56, 111, -1, 111, 57, 111, -1, 111, 62, + 111, -1, 111, 63, 111, -1, 64, 111, -1, 111, + 77, 111, -1, 111, 66, 111, -1, 111, 68, 111, + -1, 111, 69, 111, -1, 111, 70, 111, -1, 78, + 111, -1, 79, 111, -1, 84, 111, 85, -1, 71, + 111, 72, 111, -1, 71, 111, 73, 111, -1, 40, + 111, -1, 115, -1, 118, -1, 28, 41, -1, 28, + -1, 30, 113, -1, 55, 114, -1, 19, 111, -1, + 18, 111, -1, 18, -1, 20, 127, -1, 51, 111, + 46, 111, -1, 51, 111, -1, 75, 21, 127, -1, + 21, -1, 113, 88, 21, -1, 21, -1, 114, 88, + 21, -1, 31, 34, -1, 31, 37, -1, 31, 39, + -1, 31, 116, -1, 31, 116, 117, -1, 31, 117, + -1, 29, 111, -1, 111, -1, 38, 36, 111, -1, + 36, 111, -1, 52, 53, -1, 52, 116, -1, 52, + 116, 117, -1, 52, 117, -1, -1, 35, 21, 120, + 107, 124, 91, 125, 109, -1, 49, 21, -1, -1, + 50, 21, 121, 107, 124, 91, 125, 109, -1, -1, + -1, 74, 21, 122, 107, 123, 124, 91, 125, 109, + 27, -1, -1, 21, -1, 124, 88, 21, -1, 124, + 91, 88, 21, -1, -1, 21, 107, 127, -1, -1, + 111, -1, 127, 88, 111, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 106, 106, 107, 108, 111, 116, 117, 118, 119, - 120, 121, 124, 130, 136, 144, 152, 158, 166, 175, - 176, 178, 179, 184, 195, 211, 223, 231, 238, 247, - 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, 372, 376, 383, 389, 390, 391, 392, 393, 394, + 120, 121, 124, 130, 131, 132, 138, 146, 154, 160, + 168, 177, 178, 180, 181, 186, 197, 213, 225, 233, + 240, 249, 258, 268, 278, 289, 290, 293, 294, 297, + 298, 301, 309, 310, 318, 319, 320, 322, 324, 330, + 336, 343, 345, 347, 348, 349, 352, 358, 359, 362, + 365, 368, 371, 374, 378, 385, 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 + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 417, 418, 419, 420, 421, 423, 424, 425, 428, 431, + 434, 435, 436, 437, 440, 441, 444, 445, 456, 457, + 458, 459, 462, 465, 470, 471, 474, 475, 478, 479, + 482, 485, 515, 515, 521, 524, 524, 529, 530, 529, + 542, 543, 544, 545, 547, 551, 559, 560, 561 }; #endif @@ -663,11 +669,12 @@ static const char *const yytname[] = "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE", "tFACTORY", "tMETHOD", "tOPEN", "tPLAY", "tDONE", "tPLAYACCEL", "tINSTANCE", "tGE", "tLE", "tGT", "tLT", "tEQ", "tNEQ", - "tAND", "tOR", "tNOT", "tMOD", "tCONCAT", "tCONTAINS", "tSTARTS", - "tSPRITE", "tINTERSECTS", "tWITHIN", "tON", "tSOUND", "'='", "'&'", - "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", - "','", "$accept", "program", "nl", "programline", "asgn", "stmtoneliner", - "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner", + "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT", + "tCONTAINS", "tSTARTS", "tSPRITE", "tINTERSECTS", "tWITHIN", "tON", + "tSOUND", "'='", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", + "'('", "')'", "'>'", "'<'", "','", "$accept", "program", "nl", + "programline", "asgn", "stmtoneliner", "stmt", "ifstmt", + "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner", "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "expr", "func", "globallist", "instancelist", "gotofunc", "gotoframe", @@ -688,47 +695,47 @@ static const yytype_uint16 yytoknum[] = 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, 61, 38, 43, 45, 42, 47, - 37, 10, 40, 41, 62, 60, 44 + 325, 326, 327, 328, 329, 330, 61, 38, 43, 45, + 42, 47, 37, 10, 40, 41, 62, 60, 44 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 87, 88, 88, 88, 89, 90, 90, 90, 90, - 90, 90, 91, 91, 91, 91, 91, 91, 91, 92, - 92, 93, 93, 93, 93, 93, 93, 94, 94, 94, - 94, 94, 94, 95, 95, 96, 96, 97, 97, 98, - 99, 99, 100, 100, 100, 101, 102, 103, 104, 105, - 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, 109, 110, 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 + 0, 89, 90, 90, 90, 91, 92, 92, 92, 92, + 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, + 93, 94, 94, 95, 95, 95, 95, 95, 95, 96, + 96, 96, 96, 96, 96, 97, 97, 98, 98, 99, + 99, 100, 101, 101, 102, 102, 102, 103, 104, 105, + 106, 107, 108, 109, 109, 109, 110, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 113, 113, 114, 114, 115, 115, + 115, 115, 115, 115, 116, 116, 117, 117, 118, 118, + 118, 118, 120, 119, 119, 121, 119, 122, 123, 119, + 124, 124, 124, 124, 125, 126, 127, 127, 127 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 3, 1, 2, 1, 0, 1, 1, 1, - 1, 1, 4, 4, 4, 5, 4, 4, 5, 1, - 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, 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 + 1, 1, 4, 4, 4, 4, 4, 5, 4, 4, + 5, 1, 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, 1, 4, 1, 1, 2, 1, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 3, 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 @@ -736,154 +743,154 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 57, 55, 62, 0, 56, 59, 96, 0, - 133, 49, 58, 91, 0, 0, 47, 0, 0, 0, + 0, 0, 59, 57, 64, 0, 58, 61, 99, 0, + 136, 51, 60, 94, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 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, 3, 66, 23, 11, 24, + 0, 0, 0, 0, 21, 8, 91, 92, 7, 9, + 5, 4, 63, 0, 66, 65, 98, 97, 137, 100, + 136, 136, 93, 104, 95, 0, 108, 0, 109, 0, + 110, 115, 111, 113, 122, 90, 0, 47, 0, 0, + 0, 0, 124, 125, 102, 118, 119, 121, 106, 96, + 79, 0, 127, 136, 85, 86, 0, 1, 6, 0, + 0, 0, 0, 44, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 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 + 0, 0, 0, 0, 0, 135, 0, 114, 117, 0, + 112, 51, 0, 0, 0, 48, 0, 0, 0, 0, + 0, 56, 51, 0, 120, 0, 0, 0, 51, 103, + 87, 2, 0, 52, 0, 0, 51, 0, 28, 75, + 76, 74, 77, 78, 71, 81, 82, 83, 84, 80, + 67, 68, 69, 70, 72, 73, 138, 62, 105, 116, + 130, 12, 13, 14, 19, 16, 0, 0, 18, 15, + 130, 101, 107, 88, 89, 128, 53, 0, 46, 53, + 0, 45, 131, 0, 20, 17, 0, 130, 52, 0, + 0, 52, 52, 22, 0, 134, 134, 0, 54, 55, + 0, 0, 52, 51, 32, 132, 0, 53, 53, 134, + 0, 52, 53, 0, 53, 0, 50, 51, 52, 40, + 0, 133, 123, 126, 53, 25, 53, 52, 29, 52, + 52, 42, 38, 0, 0, 39, 35, 0, 0, 52, + 0, 0, 37, 0, 0, 52, 51, 52, 51, 129, + 0, 0, 0, 0, 51, 33, 0, 34, 0, 0, + 26, 30, 31, 52, 36, 52, 27, 43, 41 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -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 + -1, 34, 218, 35, 54, 37, 219, 39, 267, 250, + 251, 239, 252, 102, 40, 41, 42, 240, 278, 158, + 208, 43, 44, 213, 64, 89, 46, 72, 73, 47, + 48, 131, 142, 148, 207, 203, 227, 49, 59 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -213 +#define YYPACT_NINF -221 static const yytype_int16 yypact[] = { - 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 + 267, -34, -221, -221, -221, 790, -221, -221, 790, 790, + 790, 1059, -221, -6, 36, 711, -221, 42, 790, -22, + 52, 57, 59, 60, 790, 745, 62, 790, 790, 68, + 69, 790, 790, 790, 4, -221, 5, -221, -221, -221, + -20, 15, 823, 790, 1032, -221, -221, -221, -221, -221, + -221, -221, 8, 790, -221, 1032, 1032, 1032, 1032, 7, + 790, 790, -221, -221, 11, 790, -221, 790, -221, 58, + -221, 1032, 41, -221, -221, 843, 72, -221, -37, 790, + -30, 54, -221, -221, 897, -221, 41, -221, -221, 14, + -46, 924, -221, 790, -46, -46, 978, -221, 342, 823, + 790, 823, 63, 1005, 1032, 790, 790, 790, 790, 790, + 790, 790, 790, 790, 790, 790, 790, 790, 790, 790, + 790, 790, 843, 790, -26, 7, 84, 1032, 1032, 790, + -221, -221, 86, 790, 790, -221, 790, 790, 870, 790, + 790, -221, -221, 790, -221, 88, 790, 790, -221, 7, + -221, -221, 26, 1032, 27, 951, -34, 790, -221, 396, + 396, 396, -46, -46, -46, 1032, 1032, 396, 396, 179, + 471, 471, -46, -46, 1032, 1032, 1032, -221, -221, 1032, + 92, -221, 1032, 1032, 1032, 1032, 790, 790, 1032, 1032, + 92, 1032, -221, 1032, 1032, -221, -221, 6, -221, -221, + 638, 1032, -221, -60, 1032, 1032, -60, 92, 490, 70, + 790, 490, -221, -221, 94, 28, 28, -60, -221, -221, + 90, 790, 1032, -1, -15, -221, 97, -221, -221, 28, + 78, 1032, -221, 91, -221, 98, -221, -221, 98, -221, + 823, -221, 490, 490, -221, -221, -221, 490, -221, 490, + 98, 98, -221, 823, 638, -221, 77, 83, 415, 490, + 93, 100, -221, 101, 87, -221, -221, -221, -221, -221, + 102, 96, 99, 103, -11, -221, 638, -221, 565, 104, + -221, -221, -221, 490, -221, -221, -221, -221, -221 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -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 + -221, -221, 9, 35, 2, -194, 0, -221, -221, -221, + -90, -220, -111, -72, -221, -221, -221, -214, -10, -13, + -190, -221, 43, 3, -221, -221, -221, 116, -17, -221, + -221, -221, -221, -221, -221, -173, -197, -221, -48 }; /* 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 -62 +#define YYTABLE_NINF -64 static const yytype_int16 yytable[] = { - 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, + 38, 61, 36, 45, 97, -10, 212, 136, 87, 211, + 51, 236, 124, 125, 139, -53, -53, 206, 255, 228, + 111, 253, 112, 50, 76, 77, 233, 152, 214, 154, + 209, 255, 244, 237, 217, 62, 253, 242, 243, 137, + 120, 121, 247, 98, 249, 149, 140, 234, 55, 50, + 210, 56, 57, 58, 258, 130, 259, 63, 71, 177, + 265, 75, 123, 74, 99, 78, 79, 84, 71, 144, + 90, 91, -53, 80, 94, 95, 96, 67, 81, 69, + 82, 83, 284, 88, 283, 103, 104, 50, -10, 92, + 93, 100, 60, 135, 129, 123, 122, 141, 38, 126, + 36, 45, 145, 58, 58, 178, 156, 181, 127, 192, + 128, 196, 198, 202, 221, 225, 226, 230, 241, 245, + 271, 180, 138, 248, 236, 266, 268, 272, 273, 279, + 274, 281, 190, 151, 238, 282, 58, 280, 195, 262, + 197, 86, 103, 153, 155, 286, 200, 0, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 199, 176, 0, 257, 0, + 0, 0, 179, 0, 0, 0, 182, 183, 0, 184, + 185, 264, 188, 189, 0, 0, 191, 0, 0, 193, + 194, 0, 0, 0, 0, 220, 0, 0, 223, 224, + 201, 0, 0, 0, 0, 0, 0, 0, 0, 232, + 0, 0, 215, 235, 0, 216, 0, 0, 246, 0, + 0, 0, 0, 0, 0, 256, 229, 254, 0, 204, + 205, 0, 0, 0, 260, 0, 261, 263, 0, 0, + 0, 108, 109, 0, 110, 111, 270, 112, 0, 0, + 0, 0, 275, 222, 277, 0, 276, 116, 117, 118, + 119, 0, 0, 0, 231, 120, 121, -6, 1, 0, + 287, 0, 288, 0, 0, 0, 0, 2, 285, 3, + 4, 5, 6, 103, 7, 8, 9, 10, 11, 12, + 0, 0, 0, 0, 0, 13, 103, 14, 15, 16, + 0, 0, 17, 0, 0, 0, 0, 18, 19, 20, + 0, 0, 21, 0, 0, 0, 22, 23, 24, 25, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 0, 0, 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, 0, 0, 21, 0, 0, - 0, 0, 0, 24, 25, 0, 0, 26, 0, 0, + 0, 22, 23, 24, 25, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, + 0, 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, 269, 13, 0, 14, 15, 16, 0, 0, + 0, 0, 0, 0, 0, 18, 19, 20, 108, 109, + 21, 110, 111, 0, 112, 0, 24, 25, 0, 0, + 26, 0, 0, 115, 116, 117, 118, 119, 0, 27, + 0, 0, 120, 121, 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, 108, 109, 21, 110, 111, 0, 112, + 0, 24, 25, 0, 0, 26, 0, 0, 0, 0, + 0, 118, 119, 0, 27, 0, 0, 120, 121, 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, @@ -891,155 +898,177 @@ static const yytype_int16 yytable[] = 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 + 0, 0, 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, 0, 0, 13, 0, 14, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, + 20, 0, 0, 0, 0, 0, 0, 0, 0, 24, + 25, 0, 0, 26, 0, 0, 0, 0, 0, 0, + 0, 0, 27, 0, 0, 0, 0, 0, 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, 0, 20, 0, 2, 0, 3, 4, 5, + 6, 0, 7, 0, 0, 0, 52, 12, 0, 0, + 0, 0, 0, 0, 65, 27, 0, 0, 0, 0, + 0, 67, 28, 69, 0, 53, 0, 20, 0, 31, + 32, 0, 0, 0, 0, 33, 0, 0, 85, 0, + 2, 0, 3, 4, 5, 6, 0, 7, 0, 27, + 0, 52, 12, 0, 0, 0, 28, 0, 0, 0, + 0, 0, 0, 31, 32, 0, 0, 0, 0, 33, + 53, 0, 20, 2, 0, 3, 4, 5, 6, 0, + 7, 0, 0, 0, 52, 12, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, + 0, 28, 0, 53, 0, 20, 0, 0, 31, 32, + 0, 0, 0, 0, 33, 0, 132, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, + 0, 0, 0, 0, 28, 0, 0, 0, 0, 105, + 106, 31, 32, 0, 107, 108, 109, 101, 110, 133, + 134, 112, 113, 114, 186, 0, 0, 0, 0, 0, + 115, 116, 117, 118, 119, 0, 105, 106, 0, 120, + 121, 107, 108, 109, 0, 110, 111, 0, 112, 113, + 114, 0, 0, 143, 0, 0, 187, 115, 116, 117, + 118, 119, 0, 105, 106, 0, 120, 121, 107, 108, + 109, 0, 110, 111, 0, 112, 113, 114, 0, 0, + 0, 0, 0, 0, 115, 116, 117, 118, 119, 0, + 105, 106, 0, 120, 121, 107, 108, 109, 0, 110, + 111, 0, 112, 113, 114, 0, 146, 147, 0, 0, + 0, 115, 116, 117, 118, 119, 0, 105, 106, 0, + 120, 121, 107, 108, 109, 0, 110, 111, 0, 112, + 113, 114, 0, 0, 0, 0, 0, 157, 115, 116, + 117, 118, 119, 0, 105, 106, 150, 120, 121, 107, + 108, 109, 0, 110, 111, 0, 112, 113, 114, 0, + 0, 0, 0, 0, 0, 115, 116, 117, 118, 119, + 0, 105, 106, 150, 120, 121, 107, 108, 109, 0, + 110, 111, 0, 112, 113, 114, 0, 0, 0, 0, + 0, 157, 115, 116, 117, 118, 119, 0, 105, 106, + 0, 120, 121, 107, 108, 109, 0, 110, 111, 0, + 112, 113, 114, 0, 0, 0, 0, 0, 0, 115, + 116, 117, 118, 119, 0, -63, -63, 0, 120, 121, + -63, -63, -63, 0, -63, -63, 0, -63, -63, -63, + 0, 0, 0, 0, 0, 0, -63, 0, 0, -63, + -63, 0, 0, 60, 0, -63, -63 }; static const yytype_int16 yycheck[] = { - 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, 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, + 0, 11, 0, 0, 0, 0, 200, 44, 25, 199, + 1, 26, 60, 61, 44, 26, 27, 190, 238, 216, + 66, 235, 68, 83, 46, 47, 27, 99, 88, 101, + 24, 251, 229, 48, 207, 41, 250, 227, 228, 76, + 86, 87, 232, 34, 234, 93, 76, 48, 5, 83, + 44, 8, 9, 10, 244, 72, 246, 21, 15, 85, + 254, 18, 88, 21, 84, 13, 14, 24, 25, 86, + 27, 28, 83, 21, 31, 32, 33, 36, 21, 38, + 21, 21, 276, 21, 274, 42, 43, 83, 83, 21, + 21, 76, 84, 21, 36, 88, 53, 43, 98, 88, + 98, 98, 88, 60, 61, 21, 43, 21, 65, 21, + 67, 85, 85, 21, 44, 21, 88, 27, 21, 41, + 27, 131, 79, 32, 26, 48, 43, 27, 27, 27, + 43, 32, 142, 98, 224, 32, 93, 41, 148, 250, + 153, 25, 99, 100, 101, 41, 156, -1, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 156, 123, -1, 240, -1, + -1, -1, 129, -1, -1, -1, 133, 134, -1, 136, + 137, 253, 139, 140, -1, -1, 143, -1, -1, 146, + 147, -1, -1, -1, -1, 208, -1, -1, 211, 212, + 157, -1, -1, -1, -1, -1, -1, -1, -1, 222, + -1, -1, 203, 223, -1, 206, -1, -1, 231, -1, + -1, -1, -1, -1, -1, 238, 217, 237, -1, 186, + 187, -1, -1, -1, 247, -1, 249, 250, -1, -1, + -1, 62, 63, -1, 65, 66, 259, 68, -1, -1, + -1, -1, 265, 210, 267, -1, 266, 78, 79, 80, + 81, -1, -1, -1, 221, 86, 87, 0, 1, -1, + 283, -1, 285, -1, -1, -1, -1, 10, 278, 12, + 13, 14, 15, 240, 17, 18, 19, 20, 21, 22, + -1, -1, -1, -1, -1, 28, 253, 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, -1, -1, 71, -1, + -1, 74, 75, -1, -1, 78, 79, -1, -1, -1, + 83, 84, 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, + 28, -1, 30, 31, 32, -1, -1, 35, -1, -1, -1, -1, 40, 41, 42, -1, -1, 45, -1, -1, - -1, -1, -1, 51, 52, -1, -1, 55, -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, -1, 73, -1, -1, 76, 77, - -1, -1, -1, 81, 82, 10, -1, 12, 13, 14, + -1, -1, -1, 71, -1, -1, 74, 75, -1, -1, + 78, 79, -1, -1, -1, 10, 84, 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, 62, 63, + 45, 65, 66, -1, 68, -1, 51, 52, -1, -1, + 55, -1, -1, 77, 78, 79, 80, 81, -1, 64, + -1, -1, 86, 87, -1, -1, 71, -1, -1, -1, + 75, -1, -1, 78, 79, -1, -1, -1, 83, 84, + 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, 62, 63, 45, 65, 66, -1, 68, + -1, 51, 52, -1, -1, 55, -1, -1, -1, -1, + -1, 80, 81, -1, 64, -1, -1, 86, 87, -1, + -1, 71, -1, -1, -1, 75, -1, -1, 78, 79, + -1, -1, -1, 83, 84, 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, 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 + -1, -1, -1, -1, -1, -1, 71, -1, -1, -1, + 75, -1, -1, 78, 79, -1, -1, -1, 10, 84, + 12, 13, 14, 15, -1, 17, 18, 19, 20, 21, + 22, -1, -1, -1, -1, -1, 28, -1, 30, 31, + -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, + 42, -1, -1, -1, -1, -1, -1, -1, -1, 51, + 52, -1, -1, 55, -1, -1, -1, -1, -1, -1, + -1, -1, 64, -1, -1, -1, -1, -1, -1, 71, + -1, -1, -1, 75, -1, -1, 78, 79, -1, -1, + -1, 10, 84, 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, -1, 42, -1, 10, -1, 12, 13, 14, + 15, -1, 17, -1, -1, -1, 21, 22, -1, -1, + -1, -1, -1, -1, 29, 64, -1, -1, -1, -1, + -1, 36, 71, 38, -1, 40, -1, 42, -1, 78, + 79, -1, -1, -1, -1, 84, -1, -1, 53, -1, + 10, -1, 12, 13, 14, 15, -1, 17, -1, 64, + -1, 21, 22, -1, -1, -1, 71, -1, -1, -1, + -1, -1, -1, 78, 79, -1, -1, -1, -1, 84, + 40, -1, 42, 10, -1, 12, 13, 14, 15, -1, + 17, -1, -1, -1, 21, 22, -1, -1, -1, -1, + -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, + -1, 71, -1, 40, -1, 42, -1, -1, 78, 79, + -1, -1, -1, -1, 84, -1, 33, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, + -1, -1, -1, -1, 71, -1, -1, -1, -1, 56, + 57, 78, 79, -1, 61, 62, 63, 84, 65, 66, + 67, 68, 69, 70, 44, -1, -1, -1, -1, -1, + 77, 78, 79, 80, 81, -1, 56, 57, -1, 86, + 87, 61, 62, 63, -1, 65, 66, -1, 68, 69, + 70, -1, -1, 46, -1, -1, 76, 77, 78, 79, + 80, 81, -1, 56, 57, -1, 86, 87, 61, 62, + 63, -1, 65, 66, -1, 68, 69, 70, -1, -1, + -1, -1, -1, -1, 77, 78, 79, 80, 81, -1, + 56, 57, -1, 86, 87, 61, 62, 63, -1, 65, + 66, -1, 68, 69, 70, -1, 72, 73, -1, -1, + -1, 77, 78, 79, 80, 81, -1, 56, 57, -1, + 86, 87, 61, 62, 63, -1, 65, 66, -1, 68, + 69, 70, -1, -1, -1, -1, -1, 76, 77, 78, + 79, 80, 81, -1, 56, 57, 85, 86, 87, 61, + 62, 63, -1, 65, 66, -1, 68, 69, 70, -1, + -1, -1, -1, -1, -1, 77, 78, 79, 80, 81, + -1, 56, 57, 85, 86, 87, 61, 62, 63, -1, + 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, + -1, 76, 77, 78, 79, 80, 81, -1, 56, 57, + -1, 86, 87, 61, 62, 63, -1, 65, 66, -1, + 68, 69, 70, -1, -1, -1, -1, -1, -1, 77, + 78, 79, 80, 81, -1, 56, 57, -1, 86, 87, + 61, 62, 63, -1, 65, 66, -1, 68, 69, 70, + -1, -1, -1, -1, -1, -1, 77, -1, -1, 80, + 81, -1, -1, 84, -1, 86, 87 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1048,33 +1077,33 @@ static const yytype_uint8 yystos[] = { 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, 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 + 42, 45, 49, 50, 51, 52, 55, 64, 71, 74, + 75, 78, 79, 84, 90, 92, 93, 94, 95, 96, + 103, 104, 105, 110, 111, 112, 115, 118, 119, 126, + 83, 91, 21, 40, 93, 111, 111, 111, 111, 127, + 84, 107, 41, 21, 113, 29, 34, 36, 37, 38, + 39, 111, 116, 117, 21, 111, 46, 47, 13, 14, + 21, 21, 21, 21, 111, 53, 116, 117, 21, 114, + 111, 111, 21, 21, 111, 111, 111, 0, 91, 84, + 76, 84, 102, 111, 111, 56, 57, 61, 62, 63, + 65, 66, 68, 69, 70, 77, 78, 79, 80, 81, + 86, 87, 111, 88, 127, 127, 88, 111, 111, 36, + 117, 120, 33, 66, 67, 21, 44, 76, 111, 44, + 76, 43, 121, 46, 117, 88, 72, 73, 122, 127, + 85, 92, 102, 111, 102, 111, 43, 76, 108, 111, + 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 111, 111, 111, 111, 111, 85, 21, 111, + 107, 21, 111, 111, 111, 111, 44, 76, 111, 111, + 107, 111, 21, 111, 111, 107, 85, 108, 85, 91, + 107, 111, 21, 124, 111, 111, 124, 123, 109, 24, + 44, 109, 94, 112, 88, 91, 91, 124, 91, 95, + 108, 44, 111, 108, 108, 21, 88, 125, 125, 91, + 27, 111, 108, 27, 48, 107, 26, 48, 99, 100, + 106, 21, 109, 109, 125, 41, 108, 109, 32, 109, + 98, 99, 101, 106, 107, 100, 108, 102, 109, 109, + 108, 108, 101, 108, 102, 94, 48, 97, 43, 27, + 108, 27, 27, 27, 43, 108, 107, 108, 107, 27, + 41, 32, 32, 109, 94, 95, 41, 108, 108 }; #define yyerrok (yyerrstatus = 0) @@ -1918,6 +1947,16 @@ yyparse () case 13: #line 130 "engines/director/lingo/lingo-gr.y" + { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;} + break; + + case 14: +#line 131 "engines/director/lingo/lingo-gr.y" + { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;} + break; + + case 15: +#line 132 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_varpush); g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str()); @@ -1926,8 +1965,8 @@ yyparse () delete (yyvsp[(2) - (4)].s); ;} break; - case 14: -#line 136 "engines/director/lingo/lingo-gr.y" + case 16: +#line 138 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Put dummy id g_lingo->code1(g_lingo->c_theentityassign); @@ -1938,8 +1977,8 @@ yyparse () (yyval.code) = (yyvsp[(4) - (4)].code); ;} break; - case 15: -#line 144 "engines/director/lingo/lingo-gr.y" + case 17: +#line 146 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_swap); g_lingo->code1(g_lingo->c_theentityassign); @@ -1950,8 +1989,8 @@ yyparse () (yyval.code) = (yyvsp[(5) - (5)].code); ;} break; - case 16: -#line 152 "engines/director/lingo/lingo-gr.y" + case 18: +#line 154 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_varpush); g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str()); @@ -1960,8 +1999,8 @@ yyparse () delete (yyvsp[(2) - (4)].s); ;} break; - case 17: -#line 158 "engines/director/lingo/lingo-gr.y" + case 19: +#line 160 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Put dummy id g_lingo->code1(g_lingo->c_theentityassign); @@ -1972,8 +2011,8 @@ yyparse () (yyval.code) = (yyvsp[(4) - (4)].code); ;} break; - case 18: -#line 166 "engines/director/lingo/lingo-gr.y" + case 20: +#line 168 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_swap); g_lingo->code1(g_lingo->c_theentityassign); @@ -1984,13 +2023,13 @@ yyparse () (yyval.code) = (yyvsp[(5) - (5)].code); ;} break; - case 19: -#line 175 "engines/director/lingo/lingo-gr.y" + case 21: +#line 177 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_xpop); ;} break; - case 23: -#line 184 "engines/director/lingo/lingo-gr.y" + case 25: +#line 186 "engines/director/lingo/lingo-gr.y" { inst body = 0, end = 0; WRITE_UINT32(&body, (yyvsp[(5) - (8)].code)); @@ -1999,8 +2038,8 @@ yyparse () (*g_lingo->_currentScript)[(yyvsp[(1) - (8)].code) + 2] = end; ;} break; - case 24: -#line 195 "engines/director/lingo/lingo-gr.y" + case 26: +#line 197 "engines/director/lingo/lingo-gr.y" { inst init = 0, finish = 0, body = 0, end = 0, inc = 0; WRITE_UINT32(&init, (yyvsp[(3) - (11)].code)); @@ -2015,8 +2054,8 @@ yyparse () (*g_lingo->_currentScript)[(yyvsp[(1) - (11)].code) + 5] = end; ;} break; - case 25: -#line 211 "engines/director/lingo/lingo-gr.y" + case 27: +#line 213 "engines/director/lingo/lingo-gr.y" { inst init = 0, finish = 0, body = 0, end = 0, inc = 0; WRITE_UINT32(&init, (yyvsp[(3) - (12)].code)); @@ -2031,8 +2070,8 @@ yyparse () (*g_lingo->_currentScript)[(yyvsp[(1) - (12)].code) + 5] = end; ;} break; - case 26: -#line 223 "engines/director/lingo/lingo-gr.y" + case 28: +#line 225 "engines/director/lingo/lingo-gr.y" { inst end = 0; WRITE_UINT32(&end, (yyvsp[(3) - (3)].code)); @@ -2041,8 +2080,8 @@ yyparse () ;} break; - case 27: -#line 231 "engines/director/lingo/lingo-gr.y" + case 29: +#line 233 "engines/director/lingo/lingo-gr.y" { inst then = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(5) - (8)].code)); @@ -2052,8 +2091,8 @@ yyparse () g_lingo->processIf(0, 0); ;} break; - case 28: -#line 238 "engines/director/lingo/lingo-gr.y" + case 30: +#line 240 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(5) - (11)].code)); @@ -2065,8 +2104,8 @@ yyparse () g_lingo->processIf(0, 0); ;} break; - case 29: -#line 247 "engines/director/lingo/lingo-gr.y" + case 31: +#line 249 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(5) - (11)].code)); @@ -2078,8 +2117,8 @@ yyparse () g_lingo->processIf(0, (yyvsp[(9) - (11)].code)); ;} break; - case 30: -#line 256 "engines/director/lingo/lingo-gr.y" + case 32: +#line 258 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(4) - (6)].code)); @@ -2092,8 +2131,8 @@ yyparse () g_lingo->processIf(0, 0); ;} break; - case 31: -#line 266 "engines/director/lingo/lingo-gr.y" + case 33: +#line 268 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(4) - (10)].code)); @@ -2106,8 +2145,8 @@ yyparse () g_lingo->processIf(0, 0); ;} break; - case 32: -#line 276 "engines/director/lingo/lingo-gr.y" + case 34: +#line 278 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(4) - (10)].code)); @@ -2120,18 +2159,18 @@ yyparse () g_lingo->processIf(0, (yyvsp[(10) - (10)].code)); ;} break; - case 33: -#line 287 "engines/director/lingo/lingo-gr.y" + case 35: +#line 289 "engines/director/lingo/lingo-gr.y" { (yyval.code) = 0; ;} break; - case 34: -#line 288 "engines/director/lingo/lingo-gr.y" + case 36: +#line 290 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[(2) - (3)].code); ;} break; - case 39: -#line 299 "engines/director/lingo/lingo-gr.y" + case 41: +#line 301 "engines/director/lingo/lingo-gr.y" { inst then = 0; WRITE_UINT32(&then, (yyvsp[(4) - (6)].code)); @@ -2140,8 +2179,8 @@ yyparse () g_lingo->codeLabel((yyvsp[(1) - (6)].code)); ;} break; - case 41: -#line 308 "engines/director/lingo/lingo-gr.y" + case 43: +#line 310 "engines/director/lingo/lingo-gr.y" { inst then = 0; WRITE_UINT32(&then, (yyvsp[(4) - (5)].code)); @@ -2150,23 +2189,23 @@ yyparse () g_lingo->codeLabel((yyvsp[(1) - (5)].code)); ;} break; - case 42: -#line 316 "engines/director/lingo/lingo-gr.y" + case 44: +#line 318 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(STOP); ;} break; - case 43: -#line 317 "engines/director/lingo/lingo-gr.y" + case 45: +#line 319 "engines/director/lingo/lingo-gr.y" { g_lingo->code2(g_lingo->c_eq, STOP); ;} break; - case 45: -#line 320 "engines/director/lingo/lingo-gr.y" + case 47: +#line 322 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;} break; - case 46: -#line 322 "engines/director/lingo/lingo-gr.y" + case 48: +#line 324 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP); g_lingo->code3(STOP, STOP, STOP); @@ -2174,8 +2213,8 @@ yyparse () delete (yyvsp[(3) - (3)].s); ;} break; - case 47: -#line 328 "engines/director/lingo/lingo-gr.y" + case 49: +#line 330 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_ifcode); g_lingo->code3(STOP, STOP, STOP); @@ -2183,8 +2222,8 @@ yyparse () g_lingo->codeLabel(0); ;} break; - case 48: -#line 334 "engines/director/lingo/lingo-gr.y" + case 50: +#line 336 "engines/director/lingo/lingo-gr.y" { inst skipEnd; WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions @@ -2193,23 +2232,23 @@ yyparse () g_lingo->code1(skipEnd); ;} break; - case 49: -#line 341 "engines/director/lingo/lingo-gr.y" + case 51: +#line 343 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->_currentScript->size(); ;} break; - case 50: -#line 343 "engines/director/lingo/lingo-gr.y" + case 52: +#line 345 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;} break; - case 51: -#line 345 "engines/director/lingo/lingo-gr.y" + case 53: +#line 347 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->_currentScript->size(); ;} break; - case 54: -#line 350 "engines/director/lingo/lingo-gr.y" + case 56: +#line 352 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_whencode); g_lingo->code1(STOP); @@ -2217,56 +2256,56 @@ yyparse () delete (yyvsp[(2) - (3)].s); ;} break; - case 55: -#line 356 "engines/director/lingo/lingo-gr.y" + case 57: +#line 358 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->codeConst((yyvsp[(1) - (1)].i)); ;} break; - case 56: -#line 357 "engines/director/lingo/lingo-gr.y" + case 58: +#line 359 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_fconstpush); g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;} break; - case 57: -#line 360 "engines/director/lingo/lingo-gr.y" - { + case 59: +#line 362 "engines/director/lingo/lingo-gr.y" + { // D3 (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" + case 60: +#line 365 "engines/director/lingo/lingo-gr.y" { (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" + case 61: +#line 368 "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); ;} break; - case 60: -#line 369 "engines/director/lingo/lingo-gr.y" + case 62: +#line 371 "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" + case 63: +#line 374 "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 62: -#line 376 "engines/director/lingo/lingo-gr.y" + case 64: +#line 378 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->codeConst(0); // Put dummy id g_lingo->code1(g_lingo->c_theentitypush); @@ -2276,8 +2315,8 @@ yyparse () g_lingo->code2(e, f); ;} break; - case 63: -#line 383 "engines/director/lingo/lingo-gr.y" + case 65: +#line 385 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_theentitypush); inst e = 0, f = 0; @@ -2286,262 +2325,267 @@ yyparse () g_lingo->code2(e, f); ;} break; - case 65: -#line 390 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_add); ;} - break; - - case 66: -#line 391 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_sub); ;} - break; - case 67: #line 392 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_mul); ;} + { g_lingo->code1(g_lingo->c_add); ;} break; case 68: #line 393 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_div); ;} + { g_lingo->code1(g_lingo->c_sub); ;} break; case 69: #line 394 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_mod); ;} + { g_lingo->code1(g_lingo->c_mul); ;} break; case 70: #line 395 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_gt); ;} + { g_lingo->code1(g_lingo->c_div); ;} break; case 71: #line 396 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_lt); ;} + { g_lingo->code1(g_lingo->c_mod); ;} break; case 72: #line 397 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_neq); ;} + { g_lingo->code1(g_lingo->c_gt); ;} break; case 73: #line 398 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_ge); ;} + { g_lingo->code1(g_lingo->c_lt); ;} break; case 74: #line 399 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_le); ;} + { g_lingo->code1(g_lingo->c_neq); ;} break; case 75: #line 400 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_and); ;} + { g_lingo->code1(g_lingo->c_ge); ;} break; case 76: #line 401 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_or); ;} + { g_lingo->code1(g_lingo->c_le); ;} break; case 77: #line 402 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_not); ;} + { g_lingo->code1(g_lingo->c_and); ;} break; case 78: #line 403 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_ampersand); ;} + { g_lingo->code1(g_lingo->c_or); ;} break; case 79: #line 404 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_concat); ;} + { g_lingo->code1(g_lingo->c_not); ;} break; case 80: #line 405 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_contains); ;} + { g_lingo->code1(g_lingo->c_ampersand); ;} break; case 81: #line 406 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_starts); ;} + { g_lingo->code1(g_lingo->c_after); ;} break; case 82: #line 407 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = (yyvsp[(2) - (2)].code); ;} + { g_lingo->code1(g_lingo->c_concat); ;} break; case 83: #line 408 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;} + { g_lingo->code1(g_lingo->c_contains); ;} break; case 84: #line 409 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = (yyvsp[(2) - (3)].code); ;} + { g_lingo->code1(g_lingo->c_starts); ;} break; case 85: #line 410 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_intersects); ;} + { (yyval.code) = (yyvsp[(2) - (2)].code); ;} break; case 86: #line 411 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_within); ;} + { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;} break; case 87: +#line 412 "engines/director/lingo/lingo-gr.y" + { (yyval.code) = (yyvsp[(2) - (3)].code); ;} + break; + + case 88: +#line 413 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_intersects); ;} + break; + + case 89: #line 414 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_printtop); ;} + { g_lingo->code1(g_lingo->c_within); ;} break; case 90: #line 417 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_printtop); ;} + break; + + case 93: +#line 420 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_exitRepeat); ;} break; - case 91: -#line 418 "engines/director/lingo/lingo-gr.y" + case 94: +#line 421 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); ;} break; - case 94: -#line 422 "engines/director/lingo/lingo-gr.y" + case 97: +#line 425 "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 95: -#line 425 "engines/director/lingo/lingo-gr.y" + case 98: +#line 428 "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 96: -#line 428 "engines/director/lingo/lingo-gr.y" + case 99: +#line 431 "engines/director/lingo/lingo-gr.y" { g_lingo->code2(g_lingo->c_voidpush, g_lingo->_handlers[*(yyvsp[(1) - (1)].s)]->u.func); delete (yyvsp[(1) - (1)].s); ;} break; - case 97: -#line 431 "engines/director/lingo/lingo-gr.y" + case 100: +#line 434 "engines/director/lingo/lingo-gr.y" { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;} break; - case 98: -#line 432 "engines/director/lingo/lingo-gr.y" + case 101: +#line 435 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_open); ;} break; - case 99: -#line 433 "engines/director/lingo/lingo-gr.y" + case 102: +#line 436 "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" + case 103: +#line 437 "engines/director/lingo/lingo-gr.y" { Common::String s("sound-"); s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;} break; - case 101: -#line 437 "engines/director/lingo/lingo-gr.y" + case 104: +#line 440 "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" + case 105: +#line 441 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} break; - case 103: -#line 441 "engines/director/lingo/lingo-gr.y" + case 106: +#line 444 "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 442 "engines/director/lingo/lingo-gr.y" + case 107: +#line 445 "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 453 "engines/director/lingo/lingo-gr.y" + case 108: +#line 456 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_gotoloop); ;} break; - case 106: -#line 454 "engines/director/lingo/lingo-gr.y" + case 109: +#line 457 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_gotonext); ;} break; - case 107: -#line 455 "engines/director/lingo/lingo-gr.y" + case 110: +#line 458 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_gotoprevious); ;} break; - case 108: -#line 456 "engines/director/lingo/lingo-gr.y" + case 111: +#line 459 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(1); g_lingo->code1(g_lingo->c_goto); ;} break; - case 109: -#line 459 "engines/director/lingo/lingo-gr.y" + case 112: +#line 462 "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" + case 113: +#line 465 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(2); g_lingo->code1(g_lingo->c_goto); ;} break; - case 115: -#line 475 "engines/director/lingo/lingo-gr.y" + case 118: +#line 478 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_playdone); ;} break; - case 116: -#line 476 "engines/director/lingo/lingo-gr.y" + case 119: +#line 479 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(1); g_lingo->code1(g_lingo->c_play); ;} break; - case 117: -#line 479 "engines/director/lingo/lingo-gr.y" + case 120: +#line 482 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(3); g_lingo->code1(g_lingo->c_play); ;} break; - case 118: -#line 482 "engines/director/lingo/lingo-gr.y" + case 121: +#line 485 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(2); g_lingo->code1(g_lingo->c_play); ;} break; - case 119: -#line 512 "engines/director/lingo/lingo-gr.y" + case 122: +#line 515 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;} break; - case 120: -#line 513 "engines/director/lingo/lingo-gr.y" + case 123: +#line 516 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); @@ -2549,38 +2593,38 @@ yyparse () g_lingo->_indef = false; ;} break; - case 121: -#line 518 "engines/director/lingo/lingo-gr.y" + case 124: +#line 521 "engines/director/lingo/lingo-gr.y" { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;} break; - case 122: -#line 521 "engines/director/lingo/lingo-gr.y" + case 125: +#line 524 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; ;} break; - case 123: -#line 522 "engines/director/lingo/lingo-gr.y" + case 126: +#line 525 "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 124: -#line 526 "engines/director/lingo/lingo-gr.y" + case 127: +#line 529 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;} break; - case 125: -#line 527 "engines/director/lingo/lingo-gr.y" + case 128: +#line 530 "engines/director/lingo/lingo-gr.y" { g_lingo->_ignoreMe = true; ;} break; - case 126: -#line 527 "engines/director/lingo/lingo-gr.y" + case 129: +#line 530 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); @@ -2594,33 +2638,33 @@ yyparse () ;} break; - case 127: -#line 539 "engines/director/lingo/lingo-gr.y" + case 130: +#line 542 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 0; ;} break; - case 128: -#line 540 "engines/director/lingo/lingo-gr.y" + case 131: +#line 543 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;} break; - case 129: -#line 541 "engines/director/lingo/lingo-gr.y" + case 132: +#line 544 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} break; - case 130: -#line 542 "engines/director/lingo/lingo-gr.y" + case 133: +#line 545 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;} break; - case 131: -#line 544 "engines/director/lingo/lingo-gr.y" + case 134: +#line 547 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArgStore(); ;} break; - case 132: -#line 548 "engines/director/lingo/lingo-gr.y" + case 135: +#line 551 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_call); g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str()); @@ -2629,24 +2673,24 @@ yyparse () g_lingo->code1(numpar); ;} break; - case 133: -#line 556 "engines/director/lingo/lingo-gr.y" + case 136: +#line 559 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 0; ;} break; - case 134: -#line 557 "engines/director/lingo/lingo-gr.y" + case 137: +#line 560 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; ;} break; - case 135: -#line 558 "engines/director/lingo/lingo-gr.y" + case 138: +#line 561 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} break; /* Line 1267 of yacc.c. */ -#line 2650 "engines/director/lingo/lingo-gr.cpp" +#line 2694 "engines/director/lingo/lingo-gr.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2860,6 +2904,6 @@ yyparse () } -#line 561 "engines/director/lingo/lingo-gr.y" +#line 564 "engines/director/lingo/lingo-gr.y" diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h index 34c0598e4e74..d7482bc08e27 100644 --- a/engines/director/lingo/lingo-gr.h +++ b/engines/director/lingo/lingo-gr.h @@ -102,14 +102,16 @@ tOR = 318, tNOT = 319, tMOD = 320, - tCONCAT = 321, - tCONTAINS = 322, - tSTARTS = 323, - tSPRITE = 324, - tINTERSECTS = 325, - tWITHIN = 326, - tON = 327, - tSOUND = 328 + tAFTER = 321, + tBEFORE = 322, + tCONCAT = 323, + tCONTAINS = 324, + tSTARTS = 325, + tSPRITE = 326, + tINTERSECTS = 327, + tWITHIN = 328, + tON = 329, + tSOUND = 330 }; #endif /* Tokens. */ @@ -176,14 +178,16 @@ #define tOR 318 #define tNOT 319 #define tMOD 320 -#define tCONCAT 321 -#define tCONTAINS 322 -#define tSTARTS 323 -#define tSPRITE 324 -#define tINTERSECTS 325 -#define tWITHIN 326 -#define tON 327 -#define tSOUND 328 +#define tAFTER 321 +#define tBEFORE 322 +#define tCONCAT 323 +#define tCONTAINS 324 +#define tSTARTS 325 +#define tSPRITE 326 +#define tINTERSECTS 327 +#define tWITHIN 328 +#define tON 329 +#define tSOUND 330 @@ -201,7 +205,7 @@ typedef union YYSTYPE Common::Array *arr; } /* Line 1529 of yacc.c. */ -#line 205 "engines/director/lingo/lingo-gr.hpp" +#line 209 "engines/director/lingo/lingo-gr.hpp" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index b9f15aaf310c..17391c60f5b6 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -87,7 +87,7 @@ void yyerror(const char *s) { %token tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN %token tWITH tWHILE tNLELSE tFACTORY tMETHOD tOPEN tPLAY tDONE tPLAYACCEL tINSTANCE %token tGE tLE tGT tLT tEQ tNEQ tAND tOR tNOT tMOD -%token tCONCAT tCONTAINS tSTARTS +%token tAFTER tBEFORE tCONCAT tCONTAINS tSTARTS %token tSPRITE tINTERSECTS tWITHIN %token tON tSOUND @@ -127,6 +127,8 @@ asgn: tPUT expr tINTO ID { g_lingo->code1(g_lingo->c_assign); $$ = $2; delete $4; } + | tPUT expr tAFTER expr { $$ = g_lingo->code1(g_lingo->c_after); } // D3 + | tPUT expr tBEFORE expr { $$ = g_lingo->code1(g_lingo->c_before); } // D3 | tSET ID '=' expr { g_lingo->code1(g_lingo->c_varpush); g_lingo->codeString($2->c_str()); @@ -357,7 +359,7 @@ expr: INT { $$ = g_lingo->codeConst($1); } | FLOAT { $$ = g_lingo->code1(g_lingo->c_fconstpush); g_lingo->codeFloat($1); } - | SYMBOL { + | SYMBOL { // D3 $$ = g_lingo->code1(g_lingo->c_symbolpush); g_lingo->codeString($1->c_str()); } | STRING { @@ -401,6 +403,7 @@ expr: INT { $$ = g_lingo->codeConst($1); } | expr tOR expr { g_lingo->code1(g_lingo->c_or); } | tNOT expr %prec UNARY { g_lingo->code1(g_lingo->c_not); } | expr '&' expr { g_lingo->code1(g_lingo->c_ampersand); } + | expr tAFTER expr { g_lingo->code1(g_lingo->c_after); } | expr tCONCAT expr { g_lingo->code1(g_lingo->c_concat); } | expr tCONTAINS expr { g_lingo->code1(g_lingo->c_contains); } | expr tSTARTS expr { g_lingo->code1(g_lingo->c_starts); } @@ -523,7 +526,7 @@ defn: tMACRO ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); } g_lingo->code1(g_lingo->c_procret); g_lingo->define(*$2, $4, $5 + 1, &g_lingo->_currentFactory); g_lingo->_indef = false; } ; - | tON ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); } + | tON ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); } // D3 begin { g_lingo->_ignoreMe = true; } argdef nl argstore stmtlist tEND { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp index 840c349075ec..2e4ba95cc831 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 62 -#define YY_END_OF_BUFFER 63 +#define YY_NUM_RULES 64 +#define YY_END_OF_BUFFER 65 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -373,32 +373,33 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[214] = +static yyconst flex_int16_t yy_accept[224] = { 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 + 0, 0, 65, 63, 3, 61, 61, 63, 63, 63, + 60, 60, 60, 59, 60, 60, 57, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 2, 2, 3, 61, 0, 0, + 0, 0, 0, 62, 4, 56, 1, 58, 59, 55, + 53, 54, 57, 57, 57, 57, 57, 57, 57, 57, + 57, 57, 57, 57, 21, 11, 57, 57, 57, 57, + 57, 57, 57, 32, 33, 57, 35, 57, 57, 57, + 57, 57, 57, 57, 57, 57, 47, 57, 57, 2, + 2, 0, 4, 1, 58, 57, 6, 57, 57, 57, + + 57, 57, 15, 57, 57, 57, 57, 0, 57, 57, + 57, 57, 57, 28, 57, 57, 31, 57, 57, 57, + 38, 57, 40, 57, 57, 57, 57, 57, 57, 57, + 0, 57, 57, 57, 9, 10, 14, 17, 57, 57, + 57, 0, 57, 57, 24, 25, 57, 57, 57, 30, + 34, 36, 57, 57, 57, 57, 57, 0, 46, 51, + 57, 49, 13, 5, 57, 57, 57, 18, 57, 20, + 57, 57, 26, 57, 29, 57, 57, 41, 57, 57, + 45, 45, 52, 57, 0, 7, 57, 57, 19, 57, + 57, 27, 57, 39, 48, 42, 0, 45, 50, 0, + + 57, 16, 57, 57, 57, 0, 45, 12, 8, 22, + 57, 37, 0, 45, 57, 0, 0, 23, 44, 0, + 0, 43, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -444,133 +445,137 @@ static yyconst flex_int32_t yy_meta[64] = 5, 5, 5 } ; -static yyconst flex_int16_t yy_base[221] = +static yyconst flex_int16_t yy_base[231] = { 0, - 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 + 0, 62, 172, 556, 66, 70, 74, 78, 160, 0, + 556, 145, 143, 54, 70, 125, 65, 67, 60, 63, + 70, 86, 71, 0, 82, 70, 85, 111, 115, 109, + 84, 128, 126, 127, 185, 189, 193, 556, 197, 158, + 202, 83, 131, 556, 0, 556, 0, 113, 95, 556, + 556, 556, 0, 112, 133, 162, 157, 182, 178, 193, + 189, 196, 199, 188, 86, 0, 187, 189, 205, 191, + 210, 188, 193, 0, 0, 208, 0, 214, 211, 199, + 206, 218, 223, 227, 245, 242, 0, 243, 231, 269, + 275, 233, 0, 0, 83, 248, 0, 246, 247, 249, + + 256, 265, 0, 257, 261, 269, 280, 296, 266, 282, + 274, 275, 286, 0, 288, 280, 0, 288, 278, 282, + 0, 301, 0, 295, 301, 297, 331, 304, 313, 303, + 323, 313, 316, 333, 0, 0, 0, 0, 323, 335, + 341, 331, 345, 332, 0, 0, 336, 337, 342, 0, + 0, 0, 343, 354, 352, 339, 341, 376, 0, 0, + 357, 355, 301, 0, 365, 367, 361, 0, 368, 556, + 370, 367, 0, 382, 0, 374, 371, 0, 386, 375, + 409, 410, 0, 385, 418, 0, 391, 382, 0, 407, + 408, 0, 395, 0, 0, 0, 433, 434, 0, 413, + + 407, 0, 424, 428, 415, 428, 450, 556, 0, 0, + 417, 0, 455, 456, 423, 468, 474, 0, 476, 442, + 480, 487, 556, 527, 529, 532, 535, 541, 546, 550 } ; -static yyconst flex_int16_t yy_def[221] = +static yyconst flex_int16_t yy_def[231] = { 0, - 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 + 223, 1, 223, 223, 223, 223, 223, 223, 224, 225, + 223, 223, 223, 223, 223, 223, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 223, 223, 223, 223, 223, 223, + 223, 223, 224, 223, 227, 223, 228, 223, 223, 223, + 223, 223, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 223, + 223, 223, 227, 228, 223, 226, 226, 226, 226, 226, + + 226, 226, 226, 226, 226, 226, 226, 223, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 223, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 223, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 229, 226, 226, + 226, 226, 223, 226, 226, 226, 226, 226, 226, 223, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 229, 229, 226, 226, 223, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 223, 229, 226, 223, + + 226, 226, 226, 226, 226, 223, 229, 223, 226, 226, + 226, 226, 223, 229, 226, 230, 223, 226, 230, 223, + 223, 230, 0, 223, 223, 223, 223, 223, 223, 223 } ; -static yyconst flex_int16_t yy_nxt[595] = +static yyconst flex_int16_t yy_nxt[620] = { 0, 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 - + 22, 23, 24, 25, 24, 26, 27, 28, 29, 30, + 24, 31, 32, 33, 24, 24, 34, 24, 24, 24, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 24, 31, 32, 33, 24, 24, + 34, 24, 24, 35, 48, 49, 36, 37, 38, 38, + 39, 40, 41, 41, 40, 40, 41, 41, 40, 39, + 38, 38, 39, 50, 51, 54, 56, 108, 57, 42, + 108, 58, 55, 42, 95, 59, 64, 60, 68, 65, + + 69, 62, 66, 81, 70, 48, 49, 61, 92, 67, + 54, 56, 57, 71, 42, 58, 55, 63, 42, 59, + 64, 60, 68, 65, 95, 69, 62, 66, 81, 70, + 72, 61, 92, 67, 78, 74, 44, 71, 52, 73, + 79, 63, 75, 80, 76, 96, 77, 82, 86, 88, + 89, 97, 47, 46, 87, 72, 83, 84, 78, 40, + 74, 85, 40, 73, 79, 44, 75, 80, 76, 96, + 77, 223, 82, 86, 88, 89, 97, 42, 87, 223, + 83, 84, 98, 223, 99, 85, 90, 38, 38, 91, + 91, 38, 38, 91, 37, 38, 38, 39, 39, 38, + + 38, 39, 42, 40, 41, 41, 40, 98, 99, 100, + 102, 103, 104, 105, 106, 223, 107, 111, 101, 109, + 110, 42, 112, 223, 113, 116, 117, 118, 114, 119, + 120, 223, 121, 100, 102, 122, 103, 104, 105, 106, + 107, 111, 101, 109, 110, 115, 42, 112, 113, 116, + 117, 123, 118, 114, 119, 120, 121, 124, 125, 122, + 126, 127, 128, 223, 130, 131, 129, 132, 135, 115, + 90, 38, 38, 91, 133, 123, 91, 38, 38, 91, + 134, 124, 125, 136, 137, 126, 127, 128, 130, 131, + 138, 129, 132, 135, 139, 140, 141, 108, 133, 143, + + 108, 144, 185, 146, 134, 185, 147, 136, 148, 137, + 145, 149, 223, 150, 138, 151, 152, 153, 139, 140, + 154, 141, 155, 143, 156, 162, 144, 146, 157, 142, + 147, 160, 158, 148, 145, 158, 149, 150, 161, 151, + 152, 153, 163, 223, 164, 154, 155, 165, 166, 156, + 162, 167, 157, 142, 168, 160, 169, 223, 159, 170, + 171, 175, 161, 172, 173, 174, 176, 163, 164, 177, + 178, 165, 179, 166, 180, 167, 183, 158, 184, 168, + 158, 169, 159, 170, 186, 171, 175, 172, 173, 174, + 187, 176, 188, 189, 177, 178, 179, 190, 180, 191, + + 192, 183, 193, 184, 194, 195, 223, 196, 182, 186, + 197, 197, 199, 197, 197, 187, 188, 189, 201, 185, + 202, 190, 185, 191, 203, 192, 193, 204, 194, 205, + 195, 196, 182, 208, 197, 197, 199, 197, 197, 209, + 198, 200, 201, 210, 202, 211, 223, 212, 213, 203, + 215, 197, 204, 205, 197, 218, 216, 217, 208, 216, + 217, 206, 221, 209, 198, 207, 200, 223, 210, 216, + 211, 212, 216, 213, 215, 217, 223, 223, 217, 218, + 223, 222, 223, 214, 222, 206, 223, 221, 222, 207, + 223, 222, 223, 223, 223, 223, 223, 223, 223, 223, + + 223, 223, 220, 223, 223, 223, 223, 214, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 220, 43, 43, 223, + 43, 43, 43, 45, 45, 53, 53, 53, 93, 93, + 93, 94, 94, 223, 94, 94, 94, 181, 223, 223, + 181, 219, 223, 223, 219, 3, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223 } ; -static yyconst flex_int16_t yy_chk[595] = +static yyconst flex_int16_t yy_chk[620] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -580,64 +585,66 @@ static yyconst flex_int16_t yy_chk[595] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, + 8, 8, 8, 15, 15, 17, 18, 65, 19, 6, + 65, 20, 17, 7, 95, 21, 23, 21, 26, 23, + + 27, 22, 25, 31, 27, 49, 49, 21, 42, 25, + 17, 18, 19, 27, 6, 20, 17, 22, 7, 21, + 23, 21, 26, 23, 48, 27, 22, 25, 31, 27, + 28, 21, 42, 25, 30, 29, 43, 27, 16, 28, + 30, 22, 29, 30, 29, 54, 29, 32, 33, 34, + 34, 55, 13, 12, 33, 28, 32, 32, 30, 40, + 29, 32, 40, 28, 30, 9, 29, 30, 29, 54, + 29, 3, 32, 33, 34, 34, 55, 40, 33, 0, + 32, 32, 56, 0, 57, 32, 35, 35, 35, 35, + 36, 36, 36, 36, 37, 37, 37, 37, 39, 39, + + 39, 39, 40, 41, 41, 41, 41, 56, 57, 58, + 59, 60, 61, 62, 63, 0, 64, 68, 58, 67, + 67, 41, 69, 0, 70, 72, 73, 76, 71, 78, + 79, 0, 80, 58, 59, 81, 60, 61, 62, 63, + 64, 68, 58, 67, 67, 71, 41, 69, 70, 72, + 73, 82, 76, 71, 78, 79, 80, 83, 84, 81, + 85, 86, 88, 0, 89, 92, 88, 96, 100, 71, + 90, 90, 90, 90, 98, 82, 91, 91, 91, 91, + 99, 83, 84, 101, 102, 85, 86, 88, 89, 92, + 104, 88, 96, 100, 105, 106, 107, 108, 98, 109, + + 108, 110, 163, 111, 99, 163, 112, 101, 113, 102, + 110, 115, 0, 116, 104, 118, 119, 120, 105, 106, + 122, 107, 124, 109, 125, 130, 110, 111, 126, 108, + 112, 128, 127, 113, 110, 127, 115, 116, 129, 118, + 119, 120, 131, 0, 132, 122, 124, 133, 134, 125, + 130, 139, 126, 108, 140, 128, 141, 0, 127, 142, + 143, 149, 129, 144, 147, 148, 153, 131, 132, 154, + 155, 133, 156, 134, 157, 139, 161, 158, 162, 140, + 158, 141, 127, 142, 165, 143, 149, 144, 147, 148, + 166, 153, 167, 169, 154, 155, 156, 171, 157, 172, + + 174, 161, 176, 162, 177, 179, 0, 180, 158, 165, + 181, 182, 184, 181, 182, 166, 167, 169, 187, 185, + 188, 171, 185, 172, 190, 174, 176, 191, 177, 193, + 179, 180, 158, 200, 197, 198, 184, 197, 198, 201, + 182, 185, 187, 203, 188, 204, 0, 205, 206, 190, + 211, 207, 191, 193, 207, 215, 213, 214, 200, 213, + 214, 197, 220, 201, 182, 198, 185, 0, 203, 216, + 204, 205, 216, 206, 211, 217, 0, 219, 217, 215, + 219, 221, 0, 207, 221, 197, 0, 220, 222, 198, + 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 217, 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 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 - + 0, 0, 0, 0, 0, 0, 217, 224, 224, 0, + 224, 224, 224, 225, 225, 226, 226, 226, 227, 227, + 227, 228, 228, 0, 228, 228, 228, 229, 0, 0, + 229, 230, 0, 0, 230, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223 } ; static yy_state_type yy_last_accepting_state; @@ -711,7 +718,7 @@ static void countnl() { g_lingo->_colnumber = strlen(p); } -#line 715 "engines/director/lingo/lingo-lex.cpp" +#line 722 "engines/director/lingo/lingo-lex.cpp" #define INITIAL 0 @@ -899,7 +906,7 @@ YY_DECL #line 69 "engines/director/lingo/lingo-lex.l" -#line 903 "engines/director/lingo/lingo-lex.cpp" +#line 910 "engines/director/lingo/lingo-lex.cpp" if ( !(yy_init) ) { @@ -953,13 +960,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 >= 214 ) + if ( yy_current_state >= 224 ) 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] != 531 ); + while ( yy_base[yy_current_state] != 556 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1001,193 +1008,203 @@ YY_RULE_SETUP case 4: YY_RULE_SETUP #line 75 "engines/director/lingo/lingo-lex.l" -{ count(); yylval.s = new Common::String(yytext); return SYMBOL; } +{ count(); yylval.s = new Common::String(yytext); return SYMBOL; } // D3 YY_BREAK case 5: YY_RULE_SETUP #line 77 "engines/director/lingo/lingo-lex.l" -{ count(); return tAND; } +{ count(); return tAFTER; } // D3 YY_BREAK case 6: YY_RULE_SETUP #line 78 "engines/director/lingo/lingo-lex.l" -{ count(); return tCONTAINS; } +{ count(); return tAND; } YY_BREAK case 7: YY_RULE_SETUP #line 79 "engines/director/lingo/lingo-lex.l" -{ count(); return tDONE; } +{ count(); return tBEFORE; } // D3 YY_BREAK case 8: YY_RULE_SETUP #line 80 "engines/director/lingo/lingo-lex.l" -{ count(); return tDOWN; } +{ count(); return tCONTAINS; } YY_BREAK case 9: YY_RULE_SETUP #line 81 "engines/director/lingo/lingo-lex.l" -{ count(); return tIF; } +{ count(); return tDONE; } YY_BREAK case 10: -/* rule 10 can match eol */ YY_RULE_SETUP #line 82 "engines/director/lingo/lingo-lex.l" -{ countnl(); return tNLELSIF; } +{ count(); return tDOWN; } YY_BREAK case 11: -/* rule 11 can match eol */ YY_RULE_SETUP #line 83 "engines/director/lingo/lingo-lex.l" -{ countnl(); return tNLELSE; } +{ count(); return tIF; } YY_BREAK case 12: +/* rule 12 can match eol */ YY_RULE_SETUP #line 84 "engines/director/lingo/lingo-lex.l" -{ count(); return tELSE; } +{ countnl(); return tNLELSIF; } YY_BREAK case 13: +/* rule 13 can match eol */ YY_RULE_SETUP #line 85 "engines/director/lingo/lingo-lex.l" -{ count(); return tEND; } +{ countnl(); return tNLELSE; } YY_BREAK case 14: YY_RULE_SETUP #line 86 "engines/director/lingo/lingo-lex.l" -{ count(); return tFACTORY; } +{ count(); return tELSE; } YY_BREAK case 15: YY_RULE_SETUP #line 87 "engines/director/lingo/lingo-lex.l" -{ count(); return tEXIT; } +{ count(); return tEND; } YY_BREAK case 16: YY_RULE_SETUP #line 88 "engines/director/lingo/lingo-lex.l" -{ count(); return tFRAME; } +{ count(); return tFACTORY; } YY_BREAK case 17: YY_RULE_SETUP #line 89 "engines/director/lingo/lingo-lex.l" -{ count(); return tGLOBAL; } +{ count(); return tEXIT; } YY_BREAK case 18: YY_RULE_SETUP #line 90 "engines/director/lingo/lingo-lex.l" -{ count(); return tGO; } +{ count(); return tFRAME; } YY_BREAK case 19: YY_RULE_SETUP #line 91 "engines/director/lingo/lingo-lex.l" -{ count(); return tGO; } +{ count(); return tGLOBAL; } YY_BREAK case 20: YY_RULE_SETUP #line 92 "engines/director/lingo/lingo-lex.l" -{ count(); return tINSTANCE; } +{ count(); return tGO; } YY_BREAK case 21: YY_RULE_SETUP #line 93 "engines/director/lingo/lingo-lex.l" -{ count(); return tINTERSECTS; } +{ count(); return tGO; } YY_BREAK case 22: YY_RULE_SETUP #line 94 "engines/director/lingo/lingo-lex.l" -{ count(); return tINTO; } +{ count(); return tINSTANCE; } YY_BREAK case 23: YY_RULE_SETUP #line 95 "engines/director/lingo/lingo-lex.l" -{ count(); return tLOOP; } +{ count(); return tINTERSECTS; } YY_BREAK case 24: YY_RULE_SETUP #line 96 "engines/director/lingo/lingo-lex.l" -{ count(); return tMACRO; } +{ count(); return tINTO; } YY_BREAK case 25: YY_RULE_SETUP #line 97 "engines/director/lingo/lingo-lex.l" -{ count(); return tMETHOD; } +{ count(); return tLOOP; } YY_BREAK case 26: YY_RULE_SETUP #line 98 "engines/director/lingo/lingo-lex.l" -{ count(); return tMOD; } +{ count(); return tMACRO; } YY_BREAK case 27: YY_RULE_SETUP #line 99 "engines/director/lingo/lingo-lex.l" -{ count(); return tMOVIE; } +{ count(); return tMETHOD; } YY_BREAK case 28: YY_RULE_SETUP #line 100 "engines/director/lingo/lingo-lex.l" -{ count(); return tNEXT; } +{ count(); return tMOD; } YY_BREAK case 29: YY_RULE_SETUP #line 101 "engines/director/lingo/lingo-lex.l" -{ count(); return tNOT; } +{ count(); return tMOVIE; } YY_BREAK case 30: YY_RULE_SETUP #line 102 "engines/director/lingo/lingo-lex.l" -{ count(); return tOF; } +{ count(); return tNEXT; } YY_BREAK case 31: YY_RULE_SETUP #line 103 "engines/director/lingo/lingo-lex.l" -{ count(); return tON; } +{ count(); return tNOT; } YY_BREAK case 32: YY_RULE_SETUP #line 104 "engines/director/lingo/lingo-lex.l" -{ count(); return tOPEN; } +{ count(); return tOF; } YY_BREAK case 33: YY_RULE_SETUP #line 105 "engines/director/lingo/lingo-lex.l" -{ count(); return tOR; } +{ count(); return tON; } // D3 YY_BREAK case 34: YY_RULE_SETUP #line 106 "engines/director/lingo/lingo-lex.l" -{ count(); return tPLAY; } +{ count(); return tOPEN; } YY_BREAK case 35: YY_RULE_SETUP #line 107 "engines/director/lingo/lingo-lex.l" -{ count(); return tPREVIOUS; } +{ count(); return tOR; } YY_BREAK case 36: YY_RULE_SETUP #line 108 "engines/director/lingo/lingo-lex.l" -{ count(); return tPUT; } +{ count(); return tPLAY; } YY_BREAK case 37: YY_RULE_SETUP #line 109 "engines/director/lingo/lingo-lex.l" -{ count(); return tREPEAT; } +{ count(); return tPREVIOUS; } YY_BREAK case 38: YY_RULE_SETUP #line 110 "engines/director/lingo/lingo-lex.l" -{ count(); return tSET; } +{ count(); return tPUT; } YY_BREAK case 39: YY_RULE_SETUP #line 111 "engines/director/lingo/lingo-lex.l" -{ count(); return tSOUND; } +{ count(); return tREPEAT; } YY_BREAK case 40: YY_RULE_SETUP #line 112 "engines/director/lingo/lingo-lex.l" -{ count(); return tSTARTS; } +{ count(); return tSET; } YY_BREAK case 41: YY_RULE_SETUP #line 113 "engines/director/lingo/lingo-lex.l" +{ count(); return tSOUND; } // D3 + YY_BREAK +case 42: +YY_RULE_SETUP +#line 114 "engines/director/lingo/lingo-lex.l" +{ count(); return tSTARTS; } + YY_BREAK +case 43: +YY_RULE_SETUP +#line 115 "engines/director/lingo/lingo-lex.l" { count(); @@ -1197,9 +1214,9 @@ YY_RULE_SETUP return THEENTITYWITHID; } YY_BREAK -case 42: +case 44: YY_RULE_SETUP -#line 121 "engines/director/lingo/lingo-lex.l" +#line 123 "engines/director/lingo/lingo-lex.l" { count(); @@ -1241,9 +1258,9 @@ YY_RULE_SETUP warning("Unhandled the entity %s", ptr); } YY_BREAK -case 43: +case 45: YY_RULE_SETUP -#line 161 "engines/director/lingo/lingo-lex.l" +#line 163 "engines/director/lingo/lingo-lex.l" { count(); @@ -1264,64 +1281,64 @@ YY_RULE_SETUP warning("Unhandled the entity %s", ptr); } YY_BREAK -case 44: -YY_RULE_SETUP -#line 180 "engines/director/lingo/lingo-lex.l" -{ count(); return tTHEN; } - YY_BREAK -case 45: -YY_RULE_SETUP -#line 181 "engines/director/lingo/lingo-lex.l" -{ count(); return tTO; } - YY_BREAK case 46: YY_RULE_SETUP #line 182 "engines/director/lingo/lingo-lex.l" -{ count(); return tSPRITE; } +{ count(); return tTHEN; } YY_BREAK case 47: YY_RULE_SETUP #line 183 "engines/director/lingo/lingo-lex.l" -{ count(); return tWITH; } +{ count(); return tTO; } YY_BREAK case 48: YY_RULE_SETUP #line 184 "engines/director/lingo/lingo-lex.l" -{ count(); return tWITHIN; } +{ count(); return tSPRITE; } YY_BREAK case 49: YY_RULE_SETUP #line 185 "engines/director/lingo/lingo-lex.l" -{ count(); return tWHEN; } +{ count(); return tWITH; } YY_BREAK case 50: YY_RULE_SETUP #line 186 "engines/director/lingo/lingo-lex.l" -{ count(); return tWHILE; } +{ count(); return tWITHIN; } YY_BREAK case 51: YY_RULE_SETUP -#line 188 "engines/director/lingo/lingo-lex.l" -{ count(); return tNEQ; } +#line 187 "engines/director/lingo/lingo-lex.l" +{ count(); return tWHEN; } YY_BREAK case 52: YY_RULE_SETUP -#line 189 "engines/director/lingo/lingo-lex.l" -{ count(); return tGE; } +#line 188 "engines/director/lingo/lingo-lex.l" +{ count(); return tWHILE; } YY_BREAK case 53: YY_RULE_SETUP #line 190 "engines/director/lingo/lingo-lex.l" -{ count(); return tLE; } +{ count(); return tNEQ; } YY_BREAK case 54: YY_RULE_SETUP #line 191 "engines/director/lingo/lingo-lex.l" -{ count(); return tCONCAT; } +{ count(); return tGE; } YY_BREAK case 55: YY_RULE_SETUP +#line 192 "engines/director/lingo/lingo-lex.l" +{ count(); return tLE; } + YY_BREAK +case 56: +YY_RULE_SETUP #line 193 "engines/director/lingo/lingo-lex.l" +{ count(); return tCONCAT; } + YY_BREAK +case 57: +YY_RULE_SETUP +#line 195 "engines/director/lingo/lingo-lex.l" { count(); yylval.s = new Common::String(yytext); @@ -1352,43 +1369,43 @@ YY_RULE_SETUP return ID; } YY_BREAK -case 56: -YY_RULE_SETUP -#line 222 "engines/director/lingo/lingo-lex.l" -{ count(); yylval.f = atof(yytext); return FLOAT; } - YY_BREAK -case 57: -YY_RULE_SETUP -#line 223 "engines/director/lingo/lingo-lex.l" -{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; } - YY_BREAK case 58: YY_RULE_SETUP #line 224 "engines/director/lingo/lingo-lex.l" -{ count(); return *yytext; } +{ count(); yylval.f = atof(yytext); return FLOAT; } YY_BREAK case 59: -/* rule 59 can match eol */ YY_RULE_SETUP #line 225 "engines/director/lingo/lingo-lex.l" -{ return '\n'; } +{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; } YY_BREAK case 60: YY_RULE_SETUP #line 226 "engines/director/lingo/lingo-lex.l" -{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; } +{ count(); return *yytext; } YY_BREAK case 61: +/* rule 61 can match eol */ YY_RULE_SETUP #line 227 "engines/director/lingo/lingo-lex.l" - +{ return '\n'; } YY_BREAK case 62: YY_RULE_SETUP +#line 228 "engines/director/lingo/lingo-lex.l" +{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; } + YY_BREAK +case 63: +YY_RULE_SETUP #line 229 "engines/director/lingo/lingo-lex.l" + + YY_BREAK +case 64: +YY_RULE_SETUP +#line 231 "engines/director/lingo/lingo-lex.l" ECHO; YY_BREAK -#line 1392 "engines/director/lingo/lingo-lex.cpp" +#line 1409 "engines/director/lingo/lingo-lex.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1681,7 +1698,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 >= 214 ) + if ( yy_current_state >= 224 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1709,11 +1726,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 >= 214 ) + if ( yy_current_state >= 224 ) 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 == 213); + yy_is_jam = (yy_current_state == 223); return yy_is_jam ? 0 : yy_current_state; } @@ -2388,7 +2405,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 229 "engines/director/lingo/lingo-lex.l" +#line 231 "engines/director/lingo/lingo-lex.l" diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l index 5d39b3f946f5..56317d10a1e3 100644 --- a/engines/director/lingo/lingo-lex.l +++ b/engines/director/lingo/lingo-lex.l @@ -72,9 +72,11 @@ whitespace [\t ] ^{whitespace}+ { count(); } [\t]+ { count(); return ' '; } -[#]{identifier} { count(); yylval.s = new Common::String(yytext); return SYMBOL; } +[#]{identifier} { count(); yylval.s = new Common::String(yytext); return SYMBOL; } // D3 +(?i:after) { count(); return tAFTER; } // D3 (?i:and) { count(); return tAND; } +(?i:before) { count(); return tBEFORE; } // D3 (?i:contains) { count(); return tCONTAINS; } (?i:done) { count(); return tDONE; } (?i:down) { count(); return tDOWN; } @@ -100,7 +102,7 @@ whitespace [\t ] (?i:next) { count(); return tNEXT; } (?i:not) { count(); return tNOT; } (?i:of) { count(); return tOF; } -(?i:on) { count(); return tON; } +(?i:on) { count(); return tON; } // D3 (?i:open) { count(); return tOPEN; } (?i:or) { count(); return tOR; } (?i:play) { count(); return tPLAY; } @@ -108,7 +110,7 @@ whitespace [\t ] (?i:put) { count(); return tPUT; } (?i:repeat) { count(); return tREPEAT; } (?i:set) { count(); return tSET; } -(?i:sound) { count(); return tSOUND; } +(?i:sound) { count(); return tSOUND; } // D3 (?i:starts) { count(); return tSTARTS; } (?i:the[ \t]+sqrt[\t ]+of[\t ]+) { count(); diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index 4502eda4c989..89632eff75cf 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -241,6 +241,8 @@ class Lingo { static void c_not(); static void c_ampersand(); + static void c_after(); + static void c_before(); static void c_concat(); static void c_contains(); static void c_starts();