diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/director/lingo/lingo-code.cpp | 15 | ||||
-rw-r--r-- | engines/director/lingo/lingo-codegen.cpp | 11 | ||||
-rw-r--r-- | engines/director/lingo/lingo-gr.cpp | 1179 | ||||
-rw-r--r-- | engines/director/lingo/lingo-gr.h | 120 | ||||
-rw-r--r-- | engines/director/lingo/lingo-gr.y | 5 | ||||
-rw-r--r-- | engines/director/lingo/lingo-lex.cpp | 554 | ||||
-rw-r--r-- | engines/director/lingo/lingo-lex.l | 15 | ||||
-rw-r--r-- | engines/director/lingo/lingo.cpp | 1 | ||||
-rw-r--r-- | engines/director/lingo/lingo.h | 3 | ||||
-rw-r--r-- | engines/director/lingo/tests/mci.lingo | 4 |
10 files changed, 994 insertions, 913 deletions
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index 9d8509a145..1b45359ac5 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -63,6 +63,7 @@ static struct FuncDescr { { Lingo::c_stringpush, "c_stringpush", "s" }, { Lingo::c_symbolpush, "c_symbolpush", "s" }, // D3 { Lingo::c_varpush, "c_varpush", "s" }, + { Lingo::c_setImmediate,"c_setImmediate","i" }, { Lingo::c_assign, "c_assign", "" }, { Lingo::c_eval, "c_eval", "s" }, { Lingo::c_theentitypush,"c_theentitypush","ii" }, // entity, field @@ -255,6 +256,14 @@ void Lingo::c_varpush() { g_lingo->_pc += g_lingo->calcStringAlignment(name.c_str()); + // In immediate mode we will push variables as strings + // This is used for playAccel + if (g_lingo->_immediateMode) { + g_lingo->push(Datum(new Common::String(name))); + + return; + } + if (g_lingo->getHandler(name) != NULL) { d.type = HANDLER; d.u.s = new Common::String(name); @@ -277,6 +286,12 @@ void Lingo::c_varpush() { g_lingo->push(d); } +void Lingo::c_setImmediate() { + inst i = (*g_lingo->_currentScript)[g_lingo->_pc++]; + + g_lingo->_immediateMode = READ_UINT32(&i); +} + void Lingo::c_assign() { Datum d1, d2; d1 = g_lingo->pop(); diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp index 166bf7094f..32d0bbbc11 100644 --- a/engines/director/lingo/lingo-codegen.cpp +++ b/engines/director/lingo/lingo-codegen.cpp @@ -312,6 +312,17 @@ void Lingo::codeArgStore() { } } +int Lingo::codeSetImmediate(bool state) { + g_lingo->_immediateMode = state; + + int res = g_lingo->code1(g_lingo->c_setImmediate); + inst i = 0; + WRITE_UINT32(&i, state); + g_lingo->code1(i); + + return res; +} + int Lingo::codeFunc(Common::String *s, int numpar) { int ret = g_lingo->code1(g_lingo->c_call); diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index 03ac16c6a8..d741fe1d17 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -89,36 +89,36 @@ HANDLER = 278, SYMBOL = 279, ENDCLAUSE = 280, - tDOWN = 281, - tELSE = 282, - tNLELSIF = 283, - tEXIT = 284, - tFRAME = 285, - tGLOBAL = 286, - tGO = 287, - tIF = 288, - tINTO = 289, - tLOOP = 290, - tMACRO = 291, - tMOVIE = 292, - tNEXT = 293, - tOF = 294, - tPREVIOUS = 295, - tPUT = 296, - tREPEAT = 297, - tSET = 298, - tTHEN = 299, - tTO = 300, - tWHEN = 301, - tWITH = 302, - tWHILE = 303, - tNLELSE = 304, - tFACTORY = 305, - tMETHOD = 306, - tOPEN = 307, - tPLAY = 308, - tDONE = 309, - tPLAYACCEL = 310, + tPLAYACCEL = 281, + tDOWN = 282, + tELSE = 283, + tNLELSIF = 284, + tEXIT = 285, + tFRAME = 286, + tGLOBAL = 287, + tGO = 288, + tIF = 289, + tINTO = 290, + tLOOP = 291, + tMACRO = 292, + tMOVIE = 293, + tNEXT = 294, + tOF = 295, + tPREVIOUS = 296, + tPUT = 297, + tREPEAT = 298, + tSET = 299, + tTHEN = 300, + tTO = 301, + tWHEN = 302, + tWITH = 303, + tWHILE = 304, + tNLELSE = 305, + tFACTORY = 306, + tMETHOD = 307, + tOPEN = 308, + tPLAY = 309, + tDONE = 310, tINSTANCE = 311, tGE = 312, tLE = 313, @@ -170,36 +170,36 @@ #define HANDLER 278 #define SYMBOL 279 #define ENDCLAUSE 280 -#define tDOWN 281 -#define tELSE 282 -#define tNLELSIF 283 -#define tEXIT 284 -#define tFRAME 285 -#define tGLOBAL 286 -#define tGO 287 -#define tIF 288 -#define tINTO 289 -#define tLOOP 290 -#define tMACRO 291 -#define tMOVIE 292 -#define tNEXT 293 -#define tOF 294 -#define tPREVIOUS 295 -#define tPUT 296 -#define tREPEAT 297 -#define tSET 298 -#define tTHEN 299 -#define tTO 300 -#define tWHEN 301 -#define tWITH 302 -#define tWHILE 303 -#define tNLELSE 304 -#define tFACTORY 305 -#define tMETHOD 306 -#define tOPEN 307 -#define tPLAY 308 -#define tDONE 309 -#define tPLAYACCEL 310 +#define tPLAYACCEL 281 +#define tDOWN 282 +#define tELSE 283 +#define tNLELSIF 284 +#define tEXIT 285 +#define tFRAME 286 +#define tGLOBAL 287 +#define tGO 288 +#define tIF 289 +#define tINTO 290 +#define tLOOP 291 +#define tMACRO 292 +#define tMOVIE 293 +#define tNEXT 294 +#define tOF 295 +#define tPREVIOUS 296 +#define tPUT 297 +#define tREPEAT 298 +#define tSET 299 +#define tTHEN 300 +#define tTO 301 +#define tWHEN 302 +#define tWITH 303 +#define tWHILE 304 +#define tNLELSE 305 +#define tFACTORY 306 +#define tMETHOD 307 +#define tOPEN 308 +#define tPLAY 309 +#define tDONE 310 #define tINSTANCE 311 #define tGE 312 #define tLE 313 @@ -518,18 +518,18 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 110 +#define YYFINAL 112 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1648 +#define YYLAST 1631 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 96 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 39 +#define YYNNTS 40 /* YYNRULES -- Number of rules. */ -#define YYNRULES 150 +#define YYNRULES 152 /* YYNRULES -- Number of states. */ -#define YYNSTATES 329 +#define YYNSTATES 332 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -595,40 +595,40 @@ static const yytype_uint16 yyprhs[] = 408, 410, 412, 415, 417, 420, 423, 426, 429, 431, 436, 439, 444, 451, 456, 459, 463, 465, 469, 471, 475, 478, 481, 484, 487, 491, 494, 497, 499, 503, - 506, 509, 512, 516, 519, 520, 529, 532, 533, 542, - 543, 544, 555, 556, 558, 562, 567, 568, 572, 573, - 575 + 506, 509, 512, 516, 519, 520, 524, 525, 534, 537, + 538, 547, 548, 549, 560, 561, 563, 567, 572, 573, + 577, 578, 580 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { 97, 0, -1, 97, 98, 99, -1, 99, -1, 1, - 98, -1, 88, -1, -1, 126, -1, 119, -1, 133, - -1, 100, -1, 102, -1, 41, 118, 34, 21, -1, - 41, 118, 67, 118, -1, 41, 118, 68, 118, -1, - 43, 21, 81, 118, -1, 43, 12, 81, 118, -1, - 43, 13, 118, 81, 118, -1, 43, 21, 45, 118, - -1, 43, 12, 45, 118, -1, 43, 13, 118, 45, + 98, -1, 88, -1, -1, 127, -1, 119, -1, 134, + -1, 100, -1, 102, -1, 42, 118, 35, 21, -1, + 42, 118, 67, 118, -1, 42, 118, 68, 118, -1, + 44, 21, 81, 118, -1, 44, 12, 81, 118, -1, + 44, 13, 118, 81, 118, -1, 44, 21, 46, 118, + -1, 44, 12, 46, 118, -1, 44, 13, 118, 46, 118, -1, 118, -1, 119, -1, 101, -1, 103, -1, 110, 89, 109, 90, 116, 115, 25, -1, 111, 81, - 118, 115, 45, 118, 115, 116, 115, 25, -1, 111, - 81, 118, 115, 26, 45, 118, 115, 116, 115, 25, - -1, 117, 118, 115, -1, 112, 109, 44, 98, 116, - 115, 25, -1, 112, 109, 44, 98, 116, 115, 49, - 116, 115, 25, -1, 112, 109, 44, 98, 116, 115, - 114, 105, 115, 25, -1, 112, 109, 44, 114, 101, - 115, -1, 112, 109, 44, 114, 101, 115, 49, 114, - 101, 115, -1, 112, 109, 44, 114, 101, 115, 106, - 115, 104, 115, -1, -1, 49, 114, 101, -1, 105, + 118, 115, 46, 118, 115, 116, 115, 25, -1, 111, + 81, 118, 115, 27, 46, 118, 115, 116, 115, 25, + -1, 117, 118, 115, -1, 112, 109, 45, 98, 116, + 115, 25, -1, 112, 109, 45, 98, 116, 115, 50, + 116, 115, 25, -1, 112, 109, 45, 98, 116, 115, + 114, 105, 115, 25, -1, 112, 109, 45, 114, 101, + 115, -1, 112, 109, 45, 114, 101, 115, 50, 114, + 101, 115, -1, 112, 109, 45, 114, 101, 115, 106, + 115, 104, 115, -1, -1, 50, 114, 101, -1, 105, 108, -1, 108, -1, 106, 107, -1, 107, -1, 113, - 109, 44, 114, 102, 115, -1, 106, -1, 113, 109, - 44, 116, 115, -1, 118, -1, 118, 81, 118, -1, - 89, 109, 90, -1, 42, 48, -1, 42, 47, 21, - -1, 33, -1, 28, -1, -1, -1, -1, 116, 98, - -1, 116, 102, -1, 46, 21, 44, -1, 11, -1, + 109, 45, 114, 102, 115, -1, 106, -1, 113, 109, + 45, 116, 115, -1, 118, -1, 118, 81, 118, -1, + 89, 109, 90, -1, 43, 49, -1, 43, 48, 21, + -1, 34, -1, 29, -1, -1, -1, -1, 116, 98, + -1, 116, 102, -1, 47, 21, 45, -1, 11, -1, 14, -1, 24, -1, 22, -1, 16, -1, 21, 89, - 134, 90, -1, 21, -1, 12, -1, 13, 118, -1, + 135, 90, -1, 21, -1, 12, -1, 13, 118, -1, 100, -1, 118, 83, 118, -1, 118, 84, 118, -1, 118, 85, 118, -1, 118, 86, 118, -1, 118, 66, 118, -1, 118, 91, 118, -1, 118, 92, 118, -1, @@ -637,30 +637,31 @@ static const yytype_int16 yyrhs[] = 65, 118, -1, 118, 82, 118, -1, 118, 67, 118, -1, 118, 69, 118, -1, 118, 70, 118, -1, 118, 71, 118, -1, 83, 118, -1, 84, 118, -1, 89, - 118, 90, -1, 93, 134, 94, -1, 76, 118, 77, - 118, -1, 76, 118, 78, 118, -1, 72, 118, 39, - 118, -1, 72, 118, 45, 118, 39, 118, -1, 73, - 118, 39, 118, -1, 73, 118, 45, 118, 39, 118, - -1, 74, 118, 39, 118, -1, 74, 118, 45, 118, - 39, 118, -1, 75, 118, 39, 118, -1, 75, 118, - 45, 118, 39, 118, -1, 41, 118, -1, 122, -1, - 125, -1, 29, 42, -1, 29, -1, 31, 120, -1, + 118, 90, -1, 93, 135, 94, -1, 76, 118, 77, + 118, -1, 76, 118, 78, 118, -1, 72, 118, 40, + 118, -1, 72, 118, 46, 118, 40, 118, -1, 73, + 118, 40, 118, -1, 73, 118, 46, 118, 40, 118, + -1, 74, 118, 40, 118, -1, 74, 118, 46, 118, + 40, 118, -1, 75, 118, 40, 118, -1, 75, 118, + 46, 118, 40, 118, -1, 42, 118, -1, 122, -1, + 125, -1, 30, 43, -1, 30, -1, 32, 120, -1, 56, 121, -1, 18, 118, -1, 17, 118, -1, 17, - -1, 19, 89, 134, 90, -1, 19, 134, -1, 80, - 89, 21, 90, -1, 80, 89, 21, 95, 134, 90, - -1, 52, 118, 47, 118, -1, 52, 118, -1, 20, - 21, 134, -1, 21, -1, 120, 95, 21, -1, 21, - -1, 121, 95, 21, -1, 32, 35, -1, 32, 38, - -1, 32, 40, -1, 32, 123, -1, 32, 123, 124, - -1, 32, 124, -1, 30, 118, -1, 118, -1, 39, - 37, 118, -1, 37, 118, -1, 53, 54, -1, 53, - 123, -1, 53, 123, 124, -1, 53, 124, -1, -1, - 36, 21, 127, 114, 131, 98, 132, 116, -1, 50, - 21, -1, -1, 51, 21, 128, 114, 131, 98, 132, - 116, -1, -1, -1, 79, 21, 129, 114, 130, 131, - 98, 132, 116, 25, -1, -1, 21, -1, 131, 95, - 21, -1, 131, 98, 95, 21, -1, -1, 21, 114, - 134, -1, -1, 118, -1, 134, 95, 118, -1 + -1, 19, 89, 135, 90, -1, 19, 135, -1, 80, + 89, 21, 90, -1, 80, 89, 21, 95, 135, 90, + -1, 53, 118, 48, 118, -1, 53, 118, -1, 20, + 21, 135, -1, 21, -1, 120, 95, 21, -1, 21, + -1, 121, 95, 21, -1, 33, 36, -1, 33, 39, + -1, 33, 41, -1, 33, 123, -1, 33, 123, 124, + -1, 33, 124, -1, 31, 118, -1, 118, -1, 40, + 38, 118, -1, 38, 118, -1, 54, 55, -1, 54, + 123, -1, 54, 123, 124, -1, 54, 124, -1, -1, + 26, 126, 135, -1, -1, 37, 21, 128, 114, 132, + 98, 133, 116, -1, 51, 21, -1, -1, 52, 21, + 129, 114, 132, 98, 133, 116, -1, -1, -1, 79, + 21, 130, 114, 131, 132, 98, 133, 116, 25, -1, + -1, 21, -1, 132, 95, 21, -1, 132, 98, 95, + 21, -1, -1, 21, 114, 135, -1, -1, 118, -1, + 135, 95, 118, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -679,9 +680,9 @@ static const yytype_uint16 yyrline[] = 453, 454, 455, 456, 458, 459, 460, 463, 466, 469, 470, 471, 472, 473, 474, 475, 478, 479, 482, 483, 494, 495, 496, 497, 500, 503, 508, 509, 512, 513, - 516, 517, 520, 523, 553, 553, 559, 562, 562, 567, - 568, 567, 578, 579, 580, 581, 583, 587, 595, 596, - 597 + 516, 517, 520, 523, 526, 526, 556, 556, 562, 565, + 565, 570, 571, 570, 581, 582, 583, 584, 586, 590, + 598, 599, 600 }; #endif @@ -694,22 +695,23 @@ static const char *const yytname[] = "POINT", "RECT", "ARRAY", "OBJECT", "INT", "THEENTITY", "THEENTITYWITHID", "FLOAT", "BLTIN", "BLTINNOARGS", "BLTINNOARGSORONE", "BLTINONEARG", "BLTINARGLIST", "TWOWORDBUILTIN", "ID", "STRING", - "HANDLER", "SYMBOL", "ENDCLAUSE", "tDOWN", "tELSE", "tNLELSIF", "tEXIT", - "tFRAME", "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP", "tMACRO", "tMOVIE", - "tNEXT", "tOF", "tPREVIOUS", "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", "tAFTER", "tBEFORE", - "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", - "tSPRITE", "tINTERSECTS", "tWITHIN", "tON", "tME", "'='", "'&'", "'+'", - "'-'", "'*'", "'/'", "'%'", "'\\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", "gotomovie", "playfunc", "defn", "@1", "@2", "@3", "@4", - "argdef", "argstore", "macro", "arglist", 0 + "HANDLER", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL", "tDOWN", "tELSE", + "tNLELSIF", "tEXIT", "tFRAME", "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP", + "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT", + "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE", + "tFACTORY", "tMETHOD", "tOPEN", "tPLAY", "tDONE", "tINSTANCE", "tGE", + "tLE", "tGT", "tLT", "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tMOD", + "tAFTER", "tBEFORE", "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", + "tLINE", "tWORD", "tSPRITE", "tINTERSECTS", "tWITHIN", "tON", "tME", + "'='", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\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", + "gotomovie", "playfunc", "@1", "defn", "@2", "@3", "@4", "@5", "argdef", + "argstore", "macro", "arglist", 0 }; #endif @@ -747,9 +749,9 @@ static const yytype_uint8 yyr1[] = 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 120, 120, 121, 121, 122, 122, 122, 122, 122, 122, 123, 123, 124, 124, - 125, 125, 125, 125, 127, 126, 126, 128, 126, 129, - 130, 126, 131, 131, 131, 131, 132, 133, 134, 134, - 134 + 125, 125, 125, 125, 126, 125, 128, 127, 127, 129, + 127, 130, 131, 127, 132, 132, 132, 132, 133, 134, + 135, 135, 135 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -768,9 +770,9 @@ static const yytype_uint8 yyr2[] = 1, 1, 2, 1, 2, 2, 2, 2, 1, 4, 2, 4, 6, 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 + 2, 2, 3, 2, 0, 3, 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 @@ -778,97 +780,99 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 57, 64, 0, 58, 61, 108, 0, 148, - 0, 51, 60, 59, 103, 0, 0, 49, 0, 0, + 0, 0, 57, 64, 0, 58, 61, 108, 0, 150, + 0, 51, 60, 59, 134, 103, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, - 0, 3, 66, 23, 11, 24, 0, 0, 0, 0, - 21, 8, 100, 101, 7, 9, 5, 4, 63, 0, - 66, 65, 107, 106, 148, 149, 110, 148, 148, 148, - 102, 116, 104, 0, 120, 0, 121, 0, 122, 127, - 123, 125, 134, 99, 0, 47, 0, 0, 0, 0, - 136, 137, 114, 130, 131, 133, 118, 105, 79, 0, - 0, 0, 0, 0, 139, 0, 85, 86, 0, 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, 149, 0, 0, 115, - 0, 147, 0, 126, 129, 0, 124, 51, 0, 0, - 0, 48, 0, 0, 0, 0, 0, 56, 51, 0, - 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 0, 87, 88, 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, 109, 150, 62, 117, 128, 142, 12, 13, 14, - 19, 16, 0, 0, 18, 15, 142, 113, 119, 91, - 0, 93, 0, 95, 0, 97, 0, 89, 90, 140, - 111, 148, 53, 0, 46, 53, 0, 45, 143, 0, - 20, 17, 0, 0, 0, 0, 0, 142, 0, 52, - 0, 0, 52, 52, 22, 0, 146, 146, 92, 94, - 96, 98, 0, 112, 54, 55, 0, 0, 52, 51, - 32, 144, 0, 53, 53, 146, 25, 52, 53, 29, - 53, 0, 50, 51, 52, 40, 0, 145, 135, 138, - 53, 53, 52, 52, 52, 42, 38, 0, 0, 39, - 35, 0, 0, 52, 0, 0, 37, 0, 0, 52, - 51, 52, 51, 141, 0, 26, 30, 31, 51, 33, - 0, 34, 0, 27, 52, 36, 52, 43, 41 + 150, 0, 3, 66, 23, 11, 24, 0, 0, 0, + 0, 21, 8, 100, 101, 7, 9, 5, 4, 63, + 0, 66, 65, 107, 106, 150, 151, 110, 150, 150, + 150, 150, 102, 116, 104, 0, 120, 0, 121, 0, + 122, 127, 123, 125, 136, 99, 0, 47, 0, 0, + 0, 0, 138, 139, 114, 130, 131, 133, 118, 105, + 79, 0, 0, 0, 0, 0, 141, 0, 85, 86, + 0, 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, 151, 0, + 0, 115, 0, 149, 135, 0, 126, 129, 0, 124, + 51, 0, 0, 0, 48, 0, 0, 0, 0, 0, + 56, 51, 0, 132, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 0, 87, 88, 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, 109, 152, 62, 117, 128, 144, + 12, 13, 14, 19, 16, 0, 0, 18, 15, 144, + 113, 119, 91, 0, 93, 0, 95, 0, 97, 0, + 89, 90, 142, 111, 150, 53, 0, 46, 53, 0, + 45, 145, 0, 20, 17, 0, 0, 0, 0, 0, + 144, 0, 52, 0, 0, 52, 52, 22, 0, 148, + 148, 92, 94, 96, 98, 0, 112, 54, 55, 0, + 0, 52, 51, 32, 146, 0, 53, 53, 148, 25, + 52, 53, 29, 53, 0, 50, 51, 52, 40, 0, + 147, 137, 140, 53, 53, 52, 52, 52, 42, 38, + 0, 0, 39, 35, 0, 0, 52, 0, 0, 37, + 0, 0, 52, 51, 52, 51, 143, 0, 26, 30, + 31, 51, 33, 0, 34, 0, 27, 52, 36, 52, + 43, 41 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 40, 264, 41, 60, 43, 265, 45, 311, 294, - 295, 285, 296, 115, 46, 47, 48, 286, 322, 183, - 249, 49, 50, 254, 72, 97, 52, 80, 81, 53, - 54, 147, 158, 172, 247, 239, 273, 55, 66 + -1, 41, 267, 42, 61, 44, 268, 46, 314, 297, + 298, 288, 299, 117, 47, 48, 49, 289, 325, 186, + 252, 50, 51, 257, 74, 99, 53, 82, 83, 54, + 71, 55, 150, 161, 175, 250, 242, 276, 56, 67 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -266 +#define YYPACT_NINF -235 static const yytype_int16 yypact[] = { - 317, -63, -266, -266, 908, -266, -266, 908, 908, 946, - 18, 1546, -266, -266, 6, 29, 806, -266, 39, 908, - 10, 43, 46, 47, 58, 908, 872, 59, 908, 908, - 908, 908, 908, 908, 61, -4, 908, 908, 908, 908, - 11, -266, 12, -266, -266, -266, -3, 7, 982, 908, - 1515, -266, -266, -266, -266, -266, -266, -266, 3, 908, - -266, 1515, 1515, 1515, 908, 1515, 13, 908, 908, 908, - -266, -266, 14, 908, -266, 908, -266, 69, -266, 1515, - -11, -266, -266, 1010, 86, -266, -29, 908, -28, 68, - -266, -266, 1360, -266, -11, -266, -266, 22, -49, 1046, - 1082, 1118, 1154, 1391, -266, 97, -49, -49, 1453, -19, - -266, 400, 982, 908, 982, 75, 1484, 1515, 908, 908, - 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, - 908, 908, 908, 908, 908, 1010, 1453, -36, 908, 13, - -24, 13, 99, 1515, 1515, 908, -266, -266, 100, 908, - 908, -266, 908, 908, 1329, 908, 908, -266, -266, 908, - -266, 101, 908, 908, 908, 908, 908, 908, 908, 908, - 908, 908, -266, -12, -266, -266, -266, 33, 1515, 35, - 1422, -63, 908, -266, 768, 768, 768, -49, -49, -49, - 1515, 1515, 768, 768, 1556, 78, 78, -49, -49, 1515, - 1515, -266, 1515, -266, -266, 1515, 105, -266, 1515, 1515, - 1515, 1515, 908, 908, 1515, 1515, 105, 1515, -266, 1515, - 1190, 1515, 1226, 1515, 1262, 1515, 1298, 1515, 1515, -266, - -266, 908, -266, -5, -266, -266, 732, 1515, -266, -64, - 1515, 1515, -64, 908, 908, 908, 908, 105, 15, 566, - 82, 908, 566, -266, -266, 107, 36, 36, 1515, 1515, - 1515, 1515, -64, -266, -266, -266, 110, 908, 1515, -2, - -15, -266, 109, -266, -266, 36, -266, 1515, -266, -266, - -266, 108, -266, -266, 108, -266, 982, -266, 566, 566, - -266, -266, 566, 566, 108, 108, -266, 982, 732, -266, - 90, 102, 483, 566, 118, 124, -266, 125, 111, -266, - -266, -266, -266, -266, 128, -266, -266, -266, -18, -266, - 732, -266, 649, -266, 566, -266, -266, -266, -266 + 326, -68, -235, -235, 916, -235, -235, 916, 916, 982, + 38, 1539, -235, -235, -235, -13, 44, 815, -235, 55, + 916, 9, 11, 57, 60, 64, 916, 881, 67, 916, + 916, 916, 916, 916, 916, 81, -62, 916, 916, 916, + 916, 3, -235, 6, -235, -235, -235, -7, 26, 1007, + 916, 1508, -235, -235, -235, -235, -235, -235, -235, -2, + 916, -235, 1508, 1508, 1508, 916, 1508, 13, 916, 916, + 916, 916, -235, -235, 14, 916, -235, 916, -235, 72, + -235, 1508, -12, -235, -235, 1035, 90, -235, -33, 916, + -32, 69, -235, -235, 1353, -235, -12, -235, -235, 17, + -48, 1067, 1099, 1131, 1163, 1384, -235, 98, -48, -48, + 1446, -26, -235, 409, 1007, 916, 1007, 75, 1477, 1508, + 916, 916, 916, 916, 916, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 916, 916, 916, 1035, 1446, -35, + 916, 13, -34, 13, 13, 100, 1508, 1508, 916, -235, + -235, 101, 916, 916, -235, 916, 916, 1322, 916, 916, + -235, -235, 916, -235, 102, 916, 916, 916, 916, 916, + 916, 916, 916, 916, 916, -235, -18, -235, -235, -235, + 39, 1508, 42, 1415, -68, 916, -235, 778, 778, 778, + -48, -48, -48, 1508, 1508, 778, 778, 61, 192, 192, + -48, -48, 1508, 1508, -235, 1508, -235, -235, 1508, 112, + -235, 1508, 1508, 1508, 1508, 916, 916, 1508, 1508, 112, + 1508, -235, 1508, 1195, 1508, 1227, 1508, 1259, 1508, 1291, + 1508, 1508, -235, -235, 916, -235, -11, -235, -235, 741, + 1508, -235, -70, 1508, 1508, -70, 916, 916, 916, 916, + 112, -6, 575, 92, 916, 575, -235, -235, 118, 47, + 47, 1508, 1508, 1508, 1508, -70, -235, -235, -235, 123, + 916, 1508, -3, -14, -235, 128, -235, -235, 47, -235, + 1508, -235, -235, -235, 121, -235, -235, 121, -235, 1007, + -235, 575, 575, -235, -235, 575, 575, 121, 121, -235, + 1007, 741, -235, 104, 111, 492, 575, 132, 133, -235, + 134, 115, -235, -235, -235, -235, -235, 136, -235, -235, + -235, -17, -235, 741, -235, 658, -235, 575, -235, -235, + -235, -235 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -266, -266, 1, 45, 4, -233, 0, -266, -266, -266, - -116, -265, -137, -85, -266, -266, -266, -259, -10, -27, - -229, -266, 65, 5, -266, -266, -266, 132, -17, -266, - -266, -266, -266, -266, -266, -201, -243, -266, -31 + -235, -235, 1, 49, 4, -222, 0, -235, -235, -235, + -110, -234, -133, -85, -235, -235, -235, -230, -10, -8, + -231, -235, 66, 5, -235, -235, -235, 139, -16, -235, + -235, -235, -235, -235, -235, -235, -209, -227, -235, -31 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -878,340 +882,338 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -64 static const yytype_int16 yytable[] = { - 44, 69, 57, 253, 42, 51, 252, -53, 109, 95, - -53, 110, -10, 282, 274, 242, 152, 155, 124, 299, - 125, 250, 297, 279, 56, 56, 75, 177, 77, 179, - 299, 255, 290, 137, 283, 297, 139, 140, 141, 67, - 251, 111, 133, 134, 288, 289, 262, 280, 70, 292, - 71, 293, 153, 156, 201, 86, 87, 84, 85, 138, - 82, 302, 303, 146, 88, 309, 203, 89, 90, 61, - -53, 138, 62, 63, 65, 175, 138, 160, 230, 91, - 96, 79, 104, 231, 83, 105, 112, 325, 113, 324, - 92, 79, 68, 98, 99, 100, 101, 102, 103, 56, - -10, 106, 107, 108, 65, 263, 145, 151, 138, 142, - 138, 44, 157, 116, 117, 42, 51, 161, 173, 181, - 204, 207, 218, 232, 135, 234, 238, 267, 271, 136, - 287, 272, 65, 65, 65, 276, 282, 206, 143, 310, - 144, 121, 122, 315, 123, 124, 312, 125, 216, 316, - 317, 233, 154, 323, 284, 318, 176, 306, 94, 0, - 0, 0, 229, 131, 132, 0, 0, 0, 0, 133, - 134, 236, 0, 0, 0, 0, 0, 116, 178, 180, - 0, 0, 235, 184, 185, 186, 187, 188, 189, 190, + 45, 70, 58, 112, 43, 52, -10, 255, -53, 111, + 245, 97, -53, 155, 158, 285, 253, 256, 57, 126, + 57, 127, 282, 88, 89, 258, 77, 107, 79, 180, + 72, 182, 90, 277, 139, 254, 286, 141, 142, 143, + 144, 265, 113, 135, 136, 291, 292, 283, 156, 159, + 295, 293, 296, 302, 300, 204, 206, 86, 87, 68, + 140, 140, 305, 306, 302, 73, 149, 300, 178, 140, + 62, -53, 233, 63, 64, 66, 84, 234, 91, 312, + 163, 92, 114, 81, 266, 93, 85, 69, 98, 140, + 327, 57, 94, 81, -10, 100, 101, 102, 103, 104, + 105, 328, 106, 108, 109, 110, 66, 115, 140, 145, + 148, 154, 164, 45, 160, 118, 119, 43, 52, 176, + 184, 207, 210, 221, 123, 124, 137, 125, 126, 235, + 127, 138, 237, 241, 66, 66, 66, 66, 270, 274, + 209, 146, 275, 147, 131, 132, 133, 134, 279, 290, + 285, 219, 135, 136, 313, 157, 315, 318, 319, 320, + 321, 326, 179, 287, 309, 232, 96, 0, 0, 0, + 0, 0, 0, 236, 239, 0, 0, 0, 0, 0, + 118, 181, 183, 0, 0, 238, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 248, 301, 0, 202, 0, 0, 0, 0, 0, 0, - 205, 0, 308, 0, 208, 209, 0, 210, 211, 0, - 214, 215, 266, 0, 217, 269, 270, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 0, 0, 0, - 256, 278, 0, 257, 0, 0, 0, 237, 0, 0, - 291, 0, 0, 0, 0, 0, 0, 300, 0, 281, - 0, 0, 0, 275, 0, 304, 305, 307, 0, 0, - 0, 0, 0, 298, 0, 0, 314, 240, 241, 0, - 0, 0, 319, 0, 321, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 65, 327, 0, 328, - 320, 0, 0, 0, 0, 0, 0, 0, 258, 259, - 260, 261, 0, 0, 0, 0, 268, -6, 1, 0, - 0, 0, 326, 0, 0, 0, 0, 0, 2, 3, - 4, 5, 277, 6, 7, 8, 9, 10, 11, 12, - 0, 13, 0, 0, 0, 0, 14, 0, 15, 16, - 17, 116, 0, 18, 0, 0, 0, 0, 19, 20, - 21, 0, 116, 22, 0, 0, 0, 23, 24, 25, - 26, 0, 0, 27, 0, 0, 0, 0, 0, 0, - 0, 0, 28, 0, 0, 0, 0, 0, 0, 29, - 30, 31, 32, 33, 0, 0, 34, 35, 0, 0, - 36, 37, 0, 0, 0, -6, 38, 0, 0, 0, - 39, 2, 3, 4, 5, 0, 6, 7, 8, 9, - 10, 11, 12, 0, 13, 0, 0, 0, 0, 14, - 0, 15, 16, 17, 0, 0, 18, 0, 0, 0, - 0, 19, 20, 21, 0, 0, 22, 0, 0, 0, - 23, 24, 25, 26, 0, 0, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, - 0, 0, 29, 30, 31, 32, 33, 0, 0, 34, - 35, 0, 0, 36, 37, 0, 0, 0, 0, 38, - 0, 0, 0, 39, 2, 3, 4, 5, 0, 6, - 7, 8, 9, 10, 58, 12, 0, 13, 313, 0, - 0, 0, 14, 0, 15, 16, 17, 0, 0, 0, - 0, 0, 0, 0, 19, 20, 21, 0, 0, 22, - 0, 0, 0, 0, 0, 25, 26, 0, 0, 27, - 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, - 0, 0, 0, 0, 0, 29, 30, 31, 32, 33, - 0, 0, 0, 35, 0, 0, 36, 37, 0, 0, - 0, 56, 38, 0, 0, 0, 39, 2, 3, 4, - 5, 0, 6, 7, 8, 9, 10, 58, 12, 0, - 13, 0, 0, 0, 0, 14, 0, 15, 16, 17, - 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, - 0, 0, 22, 0, 0, 0, 0, 0, 25, 26, - 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 29, 30, - 31, 32, 33, 0, 0, 0, 35, 0, 0, 36, - 37, 0, 0, 0, 56, 38, 0, 0, 0, 39, + 201, 202, 203, 251, 304, 0, 205, 0, 0, 0, + 0, 0, 0, 0, 208, 311, 0, 0, 211, 212, + 0, 213, 214, 0, 217, 218, 0, 0, 220, 0, + 0, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 0, 0, 259, 269, 0, 260, 272, 273, 0, + 0, 240, 0, 0, 0, 123, 124, 0, 125, 126, + 0, 127, 284, 281, 0, 0, 278, 0, 0, 0, + 0, 0, 294, 0, 0, 0, 301, 133, 134, 303, + 0, 243, 244, 135, 136, 0, 0, 307, 308, 310, + 0, 0, 0, 0, 0, 0, 0, 0, 317, 0, + 66, 0, 0, 323, 322, 0, 324, 0, 0, 0, + 0, 0, 261, 262, 263, 264, 0, 0, 0, 330, + 271, 331, 0, 0, 0, 329, -6, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 280, 2, 3, 4, + 5, 0, 6, 7, 8, 9, 10, 11, 12, 0, + 13, 0, 14, 0, 0, 118, 15, 0, 16, 17, + 18, 0, 0, 19, 0, 0, 118, 0, 20, 21, + 22, 0, 0, 23, 0, 0, 0, 24, 25, 26, + 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, + 0, 29, 0, 0, 0, 0, 0, 0, 30, 31, + 32, 33, 34, 0, 0, 35, 36, 0, 0, 37, + 38, 0, 0, 0, -6, 39, 0, 0, 0, 40, 2, 3, 4, 5, 0, 6, 7, 8, 9, 10, - 58, 12, 0, 13, 0, 0, 0, 0, 14, 0, - 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, - 19, 20, 21, 0, 0, 22, 0, 0, 0, 0, - 0, 25, 26, 0, 0, 27, 0, 0, 0, 0, - 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, - 0, 29, 30, 31, 32, 33, 0, 0, 0, 35, - 0, 0, 36, 37, 0, 0, 0, 0, 38, 0, - 0, 0, 39, 2, 3, 4, 5, 0, 6, 7, - 8, 9, 10, 58, 12, 0, 13, 0, 0, 0, - 0, 14, 0, 15, 16, 0, 0, 0, 0, 0, - 0, 0, 0, 19, 0, 21, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 26, 0, 0, 27, 0, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, - 0, 0, 0, 0, 29, 30, 31, 32, 33, 0, - 0, 0, 35, 0, 0, 36, 37, 2, 3, 4, - 5, 38, 6, 0, 0, 39, 0, 58, 12, 0, - 13, 121, 122, 0, 123, 124, 73, 125, 0, 0, - 0, 74, 0, 75, 76, 77, 78, 59, 0, 21, - 128, 129, 130, 131, 132, 0, 0, 0, 0, 133, - 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 29, 30, - 31, 32, 33, 2, 3, 4, 5, 0, 6, 36, - 37, 0, 0, 58, 12, 38, 13, 0, 0, 39, - 0, 0, 73, 0, 0, 0, 0, 0, 0, 75, - 0, 77, 0, 59, 0, 21, 0, 0, 0, 2, - 3, 4, 5, 0, 6, 0, 93, 0, 0, 58, - 12, 0, 13, 0, 0, 0, 0, 28, 0, 0, - 0, 0, 0, 0, 29, 30, 31, 32, 33, 59, - 0, 21, 0, 0, 0, 36, 37, 2, 3, 4, - 5, 38, 6, 0, 0, 39, 0, 58, 12, 0, - 13, 0, 0, 28, 0, 0, 0, 0, 0, 0, - 29, 30, 31, 32, 33, 0, 0, 59, 0, 21, - 0, 36, 37, 2, 3, 4, 5, 38, 6, 0, - 0, 39, 0, 58, 12, 0, 13, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 0, 29, 30, - 31, 32, 33, 59, 0, 21, 0, 0, 0, 36, - 37, 0, 0, 0, 0, 64, 0, 0, 0, 39, - 0, 0, 0, 0, 148, 0, 0, 28, 0, 0, - 0, 0, 0, 0, 29, 30, 31, 32, 33, 0, - 0, 0, 0, 0, 0, 36, 37, 118, 119, 0, - 0, 114, 120, 121, 122, 39, 123, 149, 150, 125, - 126, 127, 0, 0, 0, 162, 0, 0, 0, 0, - 0, 163, 128, 129, 130, 131, 132, 0, 0, 0, - 0, 133, 134, 118, 119, 0, 0, 0, 120, 121, - 122, 0, 123, 124, 0, 125, 126, 127, 0, 0, - 0, 164, 0, 0, 0, 0, 0, 165, 128, 129, - 130, 131, 132, 0, 0, 0, 0, 133, 134, 118, - 119, 0, 0, 0, 120, 121, 122, 0, 123, 124, - 0, 125, 126, 127, 0, 0, 0, 166, 0, 0, - 0, 0, 0, 167, 128, 129, 130, 131, 132, 0, - 0, 0, 0, 133, 134, 118, 119, 0, 0, 0, - 120, 121, 122, 0, 123, 124, 0, 125, 126, 127, - 0, 0, 0, 168, 0, 0, 0, 0, 0, 169, - 128, 129, 130, 131, 132, 0, 0, 0, 0, 133, - 134, 118, 119, 0, 0, 0, 120, 121, 122, 0, - 123, 124, 0, 125, 126, 127, 0, 0, 0, 243, - 0, 0, 0, 0, 0, 0, 128, 129, 130, 131, - 132, 0, 0, 0, 0, 133, 134, 118, 119, 0, - 0, 0, 120, 121, 122, 0, 123, 124, 0, 125, - 126, 127, 0, 0, 0, 244, 0, 0, 0, 0, - 0, 0, 128, 129, 130, 131, 132, 0, 0, 0, - 0, 133, 134, 118, 119, 0, 0, 0, 120, 121, - 122, 0, 123, 124, 0, 125, 126, 127, 0, 0, - 0, 245, 0, 0, 0, 0, 0, 0, 128, 129, - 130, 131, 132, 0, 0, 0, 0, 133, 134, 118, - 119, 0, 0, 0, 120, 121, 122, 0, 123, 124, - 0, 125, 126, 127, 0, 0, 0, 246, 0, 0, - 0, 0, 0, 0, 128, 129, 130, 131, 132, 0, - 0, 0, 0, 133, 134, 118, 119, 0, 0, 0, - 120, 121, 122, 0, 123, 124, 0, 125, 126, 127, - 0, 0, 0, 0, 212, 0, 0, 0, 0, 0, - 128, 129, 130, 131, 132, 0, 118, 119, 0, 133, - 134, 120, 121, 122, 0, 123, 124, 0, 125, 126, - 127, 0, 0, 0, 0, 0, 0, 159, 0, 0, - 213, 128, 129, 130, 131, 132, 0, 118, 119, 0, - 133, 134, 120, 121, 122, 0, 123, 124, 0, 125, - 126, 127, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 128, 129, 130, 131, 132, 0, 118, 119, - 0, 133, 134, 120, 121, 122, 0, 123, 124, 0, - 125, 126, 127, 0, 0, 0, 0, 0, 170, 171, - 0, 0, 0, 128, 129, 130, 131, 132, 0, 118, - 119, 0, 133, 134, 120, 121, 122, 0, 123, 124, - 0, 125, 126, 127, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 182, 128, 129, 130, 131, 132, 0, - 118, 119, 174, 133, 134, 120, 121, 122, 0, 123, - 124, 0, 125, 126, 127, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 128, 129, 130, 131, 132, - 0, 118, 119, 174, 133, 134, 120, 121, 122, 0, - 123, 124, 0, 125, 126, 127, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 182, 128, 129, 130, 131, - 132, 0, 118, 119, 0, 133, 134, 120, 121, 122, - 0, 123, 124, 0, 125, 126, 127, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 128, 129, 130, - 131, 132, 0, -63, -63, 0, 133, 134, -63, -63, - -63, 0, -63, -63, 0, -63, -63, -63, 0, 121, - 122, 0, 123, 124, 0, 125, 0, 0, -63, 0, - 0, -63, -63, 0, 0, 68, 0, -63, -63, 129, - 130, 131, 132, 0, 0, 0, 0, 133, 134 + 11, 12, 0, 13, 0, 14, 0, 0, 0, 15, + 0, 16, 17, 18, 0, 0, 19, 0, 0, 0, + 0, 20, 21, 22, 0, 0, 23, 0, 0, 0, + 24, 25, 26, 27, 0, 28, 0, 0, 0, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 30, 31, 32, 33, 34, 0, 0, 35, 36, + 0, 0, 37, 38, 0, 0, 0, 0, 39, 0, + 0, 0, 40, 2, 3, 4, 5, 0, 6, 7, + 8, 9, 10, 59, 12, 0, 13, 316, 14, 0, + 0, 0, 15, 0, 16, 17, 18, 0, 0, 0, + 0, 0, 0, 0, 20, 21, 22, 0, 0, 23, + 0, 0, 0, 0, 0, 26, 27, 0, 28, 0, + 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 30, 31, 32, 33, 34, 0, + 0, 0, 36, 0, 0, 37, 38, 0, 0, 0, + 57, 39, 0, 0, 0, 40, 2, 3, 4, 5, + 0, 6, 7, 8, 9, 10, 59, 12, 0, 13, + 0, 14, 0, 0, 0, 15, 0, 16, 17, 18, + 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, + 0, 0, 23, 0, 0, 0, 0, 0, 26, 27, + 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 30, 31, 32, + 33, 34, 0, 0, 0, 36, 0, 0, 37, 38, + 0, 0, 0, 57, 39, 0, 0, 0, 40, 2, + 3, 4, 5, 0, 6, 7, 8, 9, 10, 59, + 12, 0, 13, 0, 14, 0, 0, 0, 15, 0, + 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, + 20, 21, 22, 0, 0, 23, 0, 0, 0, 0, + 0, 26, 27, 0, 28, 0, 0, 0, 0, 0, + 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, + 30, 31, 32, 33, 34, 0, 0, 0, 36, 0, + 0, 37, 38, 0, 0, 0, 0, 39, 0, 0, + 0, 40, 2, 3, 4, 5, 0, 6, 7, 8, + 9, 10, 59, 12, 0, 13, 0, 14, 0, 0, + 0, 15, 0, 16, 17, 0, 0, 0, 0, 0, + 0, 0, 0, 20, 0, 22, 0, 0, 0, 0, + 0, 0, 0, 0, 26, 27, 0, 28, 0, 0, + 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, + 0, 0, 0, 30, 31, 32, 33, 34, 0, 0, + 0, 36, 0, 0, 37, 38, 2, 3, 4, 5, + 39, 6, 0, 0, 40, 0, 59, 12, 0, 13, + 0, 123, 124, 0, 125, 126, 75, 127, 0, 0, + 0, 76, 0, 77, 78, 79, 80, 60, 0, 22, + 130, 131, 132, 133, 134, 0, 0, 0, 0, 135, + 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 29, 0, 0, 0, 0, 0, 0, 30, 31, 32, + 33, 34, 2, 3, 4, 5, 0, 6, 37, 38, + 0, 0, 59, 12, 39, 13, 0, 0, 40, 0, + 0, 0, 75, 0, 0, 0, 0, 0, 0, 77, + 0, 79, 0, 60, 0, 22, 0, 2, 3, 4, + 5, 0, 6, 0, 0, 0, 95, 59, 12, 0, + 13, 0, 0, 0, 0, 0, 29, 0, 0, 0, + 0, 0, 0, 30, 31, 32, 33, 34, 60, 0, + 22, 0, 0, 0, 37, 38, 0, 0, 0, 0, + 39, 0, 0, 0, 40, 0, 0, 0, 0, 0, + 0, 29, 0, 0, 0, 0, 0, 0, 30, 31, + 32, 33, 34, 2, 3, 4, 5, 0, 6, 37, + 38, 0, 0, 59, 12, 39, 13, 0, 0, 40, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, + 4, 5, 0, 6, 60, 0, 22, 0, 59, 12, + 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 29, 0, 60, + 0, 22, 0, 0, 30, 31, 32, 33, 34, 0, + 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, + 151, 65, 29, 0, 0, 40, 0, 0, 0, 30, + 31, 32, 33, 34, 0, 0, 0, 0, 0, 0, + 37, 38, 120, 121, 0, 0, 116, 122, 123, 124, + 40, 125, 152, 153, 127, 128, 129, 165, 0, 0, + 0, 0, 0, 166, 0, 0, 0, 130, 131, 132, + 133, 134, 0, 0, 120, 121, 135, 136, 0, 122, + 123, 124, 0, 125, 126, 0, 127, 128, 129, 167, + 0, 0, 0, 0, 0, 168, 0, 0, 0, 130, + 131, 132, 133, 134, 0, 0, 120, 121, 135, 136, + 0, 122, 123, 124, 0, 125, 126, 0, 127, 128, + 129, 169, 0, 0, 0, 0, 0, 170, 0, 0, + 0, 130, 131, 132, 133, 134, 0, 0, 120, 121, + 135, 136, 0, 122, 123, 124, 0, 125, 126, 0, + 127, 128, 129, 171, 0, 0, 0, 0, 0, 172, + 0, 0, 0, 130, 131, 132, 133, 134, 0, 0, + 120, 121, 135, 136, 0, 122, 123, 124, 0, 125, + 126, 0, 127, 128, 129, 246, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 130, 131, 132, 133, 134, + 0, 0, 120, 121, 135, 136, 0, 122, 123, 124, + 0, 125, 126, 0, 127, 128, 129, 247, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 130, 131, 132, + 133, 134, 0, 0, 120, 121, 135, 136, 0, 122, + 123, 124, 0, 125, 126, 0, 127, 128, 129, 248, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, + 131, 132, 133, 134, 0, 0, 120, 121, 135, 136, + 0, 122, 123, 124, 0, 125, 126, 0, 127, 128, + 129, 249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 130, 131, 132, 133, 134, 0, 0, 120, 121, + 135, 136, 0, 122, 123, 124, 0, 125, 126, 0, + 127, 128, 129, 0, 0, 0, 0, 0, 215, 0, + 0, 0, 0, 130, 131, 132, 133, 134, 0, 120, + 121, 0, 135, 136, 122, 123, 124, 0, 125, 126, + 0, 127, 128, 129, 0, 0, 0, 0, 0, 0, + 0, 162, 0, 216, 130, 131, 132, 133, 134, 0, + 120, 121, 0, 135, 136, 122, 123, 124, 0, 125, + 126, 0, 127, 128, 129, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 130, 131, 132, 133, 134, + 0, 120, 121, 0, 135, 136, 122, 123, 124, 0, + 125, 126, 0, 127, 128, 129, 0, 0, 0, 0, + 0, 173, 174, 0, 0, 0, 130, 131, 132, 133, + 134, 0, 120, 121, 0, 135, 136, 122, 123, 124, + 0, 125, 126, 0, 127, 128, 129, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 185, 130, 131, 132, + 133, 134, 0, 120, 121, 177, 135, 136, 122, 123, + 124, 0, 125, 126, 0, 127, 128, 129, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 130, 131, + 132, 133, 134, 0, 120, 121, 177, 135, 136, 122, + 123, 124, 0, 125, 126, 0, 127, 128, 129, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 185, 130, + 131, 132, 133, 134, 0, 120, 121, 0, 135, 136, + 122, 123, 124, 0, 125, 126, 0, 127, 128, 129, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 130, 131, 132, 133, 134, 0, -63, -63, 0, 135, + 136, -63, -63, -63, 0, -63, -63, 0, -63, -63, + -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -63, 0, 0, -63, -63, 0, 0, 69, 0, + -63, -63 }; static const yytype_int16 yycheck[] = { - 0, 11, 1, 236, 0, 0, 235, 25, 39, 26, - 28, 0, 0, 28, 257, 216, 45, 45, 67, 284, - 69, 26, 281, 25, 88, 88, 37, 112, 39, 114, - 295, 95, 275, 64, 49, 294, 67, 68, 69, 21, - 45, 40, 91, 92, 273, 274, 247, 49, 42, 278, - 21, 280, 81, 81, 90, 12, 13, 47, 48, 95, - 21, 290, 291, 80, 21, 298, 90, 21, 21, 4, - 88, 95, 7, 8, 9, 94, 95, 94, 90, 21, - 21, 16, 21, 95, 19, 89, 89, 320, 81, 318, - 25, 26, 89, 28, 29, 30, 31, 32, 33, 88, - 88, 36, 37, 38, 39, 90, 37, 21, 95, 95, - 95, 111, 44, 48, 49, 111, 111, 95, 21, 44, - 21, 21, 21, 90, 59, 90, 21, 45, 21, 64, - 21, 95, 67, 68, 69, 25, 28, 147, 73, 49, - 75, 63, 64, 25, 66, 67, 44, 69, 158, 25, - 25, 178, 87, 25, 270, 44, 111, 294, 26, -1, - -1, -1, 172, 85, 86, -1, -1, -1, -1, 91, - 92, 181, -1, -1, -1, -1, -1, 112, 113, 114, - -1, -1, 181, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 231, 286, -1, 138, -1, -1, -1, -1, -1, -1, - 145, -1, 297, -1, 149, 150, -1, 152, 153, -1, - 155, 156, 249, -1, 159, 252, 253, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, -1, -1, -1, - 239, 268, -1, 242, -1, -1, -1, 182, -1, -1, - 277, -1, -1, -1, -1, -1, -1, 284, -1, 269, - -1, -1, -1, 262, -1, 292, 293, 294, -1, -1, - -1, -1, -1, 283, -1, -1, 303, 212, 213, -1, - -1, -1, 309, -1, 311, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 231, 324, -1, 326, - 310, -1, -1, -1, -1, -1, -1, -1, 243, 244, - 245, 246, -1, -1, -1, -1, 251, 0, 1, -1, - -1, -1, 322, -1, -1, -1, -1, -1, 11, 12, - 13, 14, 267, 16, 17, 18, 19, 20, 21, 22, - -1, 24, -1, -1, -1, -1, 29, -1, 31, 32, - 33, 286, -1, 36, -1, -1, -1, -1, 41, 42, - 43, -1, 297, 46, -1, -1, -1, 50, 51, 52, - 53, -1, -1, 56, -1, -1, -1, -1, -1, -1, - -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, - 73, 74, 75, 76, -1, -1, 79, 80, -1, -1, - 83, 84, -1, -1, -1, 88, 89, -1, -1, -1, - 93, 11, 12, 13, 14, -1, 16, 17, 18, 19, - 20, 21, 22, -1, 24, -1, -1, -1, -1, 29, - -1, 31, 32, 33, -1, -1, 36, -1, -1, -1, - -1, 41, 42, 43, -1, -1, 46, -1, -1, -1, - 50, 51, 52, 53, -1, -1, 56, -1, -1, -1, - -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, - -1, -1, 72, 73, 74, 75, 76, -1, -1, 79, - 80, -1, -1, 83, 84, -1, -1, -1, -1, 89, - -1, -1, -1, 93, 11, 12, 13, 14, -1, 16, - 17, 18, 19, 20, 21, 22, -1, 24, 25, -1, - -1, -1, 29, -1, 31, 32, 33, -1, -1, -1, - -1, -1, -1, -1, 41, 42, 43, -1, -1, 46, - -1, -1, -1, -1, -1, 52, 53, -1, -1, 56, - -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, - -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, - -1, -1, -1, 80, -1, -1, 83, 84, -1, -1, - -1, 88, 89, -1, -1, -1, 93, 11, 12, 13, + 0, 11, 1, 0, 0, 0, 0, 238, 25, 40, + 219, 27, 29, 46, 46, 29, 27, 239, 88, 67, + 88, 69, 25, 12, 13, 95, 38, 89, 40, 114, + 43, 116, 21, 260, 65, 46, 50, 68, 69, 70, + 71, 250, 41, 91, 92, 276, 277, 50, 81, 81, + 281, 278, 283, 287, 284, 90, 90, 48, 49, 21, + 95, 95, 293, 294, 298, 21, 82, 297, 94, 95, + 4, 88, 90, 7, 8, 9, 21, 95, 21, 301, + 96, 21, 89, 17, 90, 21, 20, 89, 21, 95, + 321, 88, 26, 27, 88, 29, 30, 31, 32, 33, + 34, 323, 21, 37, 38, 39, 40, 81, 95, 95, + 38, 21, 95, 113, 45, 49, 50, 113, 113, 21, + 45, 21, 21, 21, 63, 64, 60, 66, 67, 90, + 69, 65, 90, 21, 68, 69, 70, 71, 46, 21, + 150, 75, 95, 77, 83, 84, 85, 86, 25, 21, + 29, 161, 91, 92, 50, 89, 45, 25, 25, 25, + 45, 25, 113, 273, 297, 175, 27, -1, -1, -1, + -1, -1, -1, 181, 184, -1, -1, -1, -1, -1, + 114, 115, 116, -1, -1, 184, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 234, 289, -1, 140, -1, -1, -1, + -1, -1, -1, -1, 148, 300, -1, -1, 152, 153, + -1, 155, 156, -1, 158, 159, -1, -1, 162, -1, + -1, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, -1, -1, 242, 252, -1, 245, 255, 256, -1, + -1, 185, -1, -1, -1, 63, 64, -1, 66, 67, + -1, 69, 272, 271, -1, -1, 265, -1, -1, -1, + -1, -1, 280, -1, -1, -1, 286, 85, 86, 287, + -1, 215, 216, 91, 92, -1, -1, 295, 296, 297, + -1, -1, -1, -1, -1, -1, -1, -1, 306, -1, + 234, -1, -1, 313, 312, -1, 314, -1, -1, -1, + -1, -1, 246, 247, 248, 249, -1, -1, -1, 327, + 254, 329, -1, -1, -1, 325, 0, 1, -1, -1, + -1, -1, -1, -1, -1, -1, 270, 11, 12, 13, 14, -1, 16, 17, 18, 19, 20, 21, 22, -1, - 24, -1, -1, -1, -1, 29, -1, 31, 32, 33, - -1, -1, -1, -1, -1, -1, -1, 41, 42, 43, - -1, -1, 46, -1, -1, -1, -1, -1, 52, 53, - -1, -1, 56, -1, -1, -1, -1, -1, -1, -1, + 24, -1, 26, -1, -1, 289, 30, -1, 32, 33, + 34, -1, -1, 37, -1, -1, 300, -1, 42, 43, + 44, -1, -1, 47, -1, -1, -1, 51, 52, 53, + 54, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, 73, - 74, 75, 76, -1, -1, -1, 80, -1, -1, 83, + 74, 75, 76, -1, -1, 79, 80, -1, -1, 83, 84, -1, -1, -1, 88, 89, -1, -1, -1, 93, 11, 12, 13, 14, -1, 16, 17, 18, 19, 20, - 21, 22, -1, 24, -1, -1, -1, -1, 29, -1, - 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, - 41, 42, 43, -1, -1, 46, -1, -1, -1, -1, - -1, 52, 53, -1, -1, 56, -1, -1, -1, -1, + 21, 22, -1, 24, -1, 26, -1, -1, -1, 30, + -1, 32, 33, 34, -1, -1, 37, -1, -1, -1, + -1, 42, 43, 44, -1, -1, 47, -1, -1, -1, + 51, 52, 53, 54, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, - -1, 72, 73, 74, 75, 76, -1, -1, -1, 80, + -1, 72, 73, 74, 75, 76, -1, -1, 79, 80, -1, -1, 83, 84, -1, -1, -1, -1, 89, -1, -1, -1, 93, 11, 12, 13, 14, -1, 16, 17, - 18, 19, 20, 21, 22, -1, 24, -1, -1, -1, - -1, 29, -1, 31, 32, -1, -1, -1, -1, -1, - -1, -1, -1, 41, -1, 43, -1, -1, -1, -1, - -1, -1, -1, -1, 52, 53, -1, -1, 56, -1, + 18, 19, 20, 21, 22, -1, 24, 25, 26, -1, + -1, -1, 30, -1, 32, 33, 34, -1, -1, -1, + -1, -1, -1, -1, 42, 43, 44, -1, -1, 47, + -1, -1, -1, -1, -1, 53, 54, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, -1, - -1, -1, 80, -1, -1, 83, 84, 11, 12, 13, - 14, 89, 16, -1, -1, 93, -1, 21, 22, -1, - 24, 63, 64, -1, 66, 67, 30, 69, -1, -1, - -1, 35, -1, 37, 38, 39, 40, 41, -1, 43, + -1, -1, 80, -1, -1, 83, 84, -1, -1, -1, + 88, 89, -1, -1, -1, 93, 11, 12, 13, 14, + -1, 16, 17, 18, 19, 20, 21, 22, -1, 24, + -1, 26, -1, -1, -1, 30, -1, 32, 33, 34, + -1, -1, -1, -1, -1, -1, -1, 42, 43, 44, + -1, -1, 47, -1, -1, -1, -1, -1, 53, 54, + -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, + 65, -1, -1, -1, -1, -1, -1, 72, 73, 74, + 75, 76, -1, -1, -1, 80, -1, -1, 83, 84, + -1, -1, -1, 88, 89, -1, -1, -1, 93, 11, + 12, 13, 14, -1, 16, 17, 18, 19, 20, 21, + 22, -1, 24, -1, 26, -1, -1, -1, 30, -1, + 32, 33, 34, -1, -1, -1, -1, -1, -1, -1, + 42, 43, 44, -1, -1, 47, -1, -1, -1, -1, + -1, 53, 54, -1, 56, -1, -1, -1, -1, -1, + -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, + 72, 73, 74, 75, 76, -1, -1, -1, 80, -1, + -1, 83, 84, -1, -1, -1, -1, 89, -1, -1, + -1, 93, 11, 12, 13, 14, -1, 16, 17, 18, + 19, 20, 21, 22, -1, 24, -1, 26, -1, -1, + -1, 30, -1, 32, 33, -1, -1, -1, -1, -1, + -1, -1, -1, 42, -1, 44, -1, -1, -1, -1, + -1, -1, -1, -1, 53, 54, -1, 56, -1, -1, + -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, + -1, -1, -1, 72, 73, 74, 75, 76, -1, -1, + -1, 80, -1, -1, 83, 84, 11, 12, 13, 14, + 89, 16, -1, -1, 93, -1, 21, 22, -1, 24, + -1, 63, 64, -1, 66, 67, 31, 69, -1, -1, + -1, 36, -1, 38, 39, 40, 41, 42, -1, 44, 82, 83, 84, 85, 86, -1, -1, -1, -1, 91, 92, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 65, -1, -1, -1, -1, -1, -1, 72, 73, 74, + 75, 76, 11, 12, 13, 14, -1, 16, 83, 84, + -1, -1, 21, 22, 89, 24, -1, -1, 93, -1, + -1, -1, 31, -1, -1, -1, -1, -1, -1, 38, + -1, 40, -1, 42, -1, 44, -1, 11, 12, 13, + 14, -1, 16, -1, -1, -1, 55, 21, 22, -1, + 24, -1, -1, -1, -1, -1, 65, -1, -1, -1, + -1, -1, -1, 72, 73, 74, 75, 76, 42, -1, + 44, -1, -1, -1, 83, 84, -1, -1, -1, -1, + 89, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, 11, 12, 13, 14, -1, 16, 83, 84, -1, -1, 21, 22, 89, 24, -1, -1, 93, - -1, -1, 30, -1, -1, -1, -1, -1, -1, 37, - -1, 39, -1, 41, -1, 43, -1, -1, -1, 11, - 12, 13, 14, -1, 16, -1, 54, -1, -1, 21, - 22, -1, 24, -1, -1, -1, -1, 65, -1, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, 41, - -1, 43, -1, -1, -1, 83, 84, 11, 12, 13, - 14, 89, 16, -1, -1, 93, -1, 21, 22, -1, - 24, -1, -1, 65, -1, -1, -1, -1, -1, -1, - 72, 73, 74, 75, 76, -1, -1, 41, -1, 43, - -1, 83, 84, 11, 12, 13, 14, 89, 16, -1, - -1, 93, -1, 21, 22, -1, 24, -1, -1, -1, - -1, 65, -1, -1, -1, -1, -1, -1, 72, 73, - 74, 75, 76, 41, -1, 43, -1, -1, -1, 83, - 84, -1, -1, -1, -1, 89, -1, -1, -1, 93, - -1, -1, -1, -1, 34, -1, -1, 65, -1, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, -1, - -1, -1, -1, -1, -1, 83, 84, 57, 58, -1, - -1, 89, 62, 63, 64, 93, 66, 67, 68, 69, - 70, 71, -1, -1, -1, 39, -1, -1, -1, -1, - -1, 45, 82, 83, 84, 85, 86, -1, -1, -1, - -1, 91, 92, 57, 58, -1, -1, -1, 62, 63, - 64, -1, 66, 67, -1, 69, 70, 71, -1, -1, - -1, 39, -1, -1, -1, -1, -1, 45, 82, 83, - 84, 85, 86, -1, -1, -1, -1, 91, 92, 57, - 58, -1, -1, -1, 62, 63, 64, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, 39, -1, -1, - -1, -1, -1, 45, 82, 83, 84, 85, 86, -1, - -1, -1, -1, 91, 92, 57, 58, -1, -1, -1, - 62, 63, 64, -1, 66, 67, -1, 69, 70, 71, - -1, -1, -1, 39, -1, -1, -1, -1, -1, 45, - 82, 83, 84, 85, 86, -1, -1, -1, -1, 91, - 92, 57, 58, -1, -1, -1, 62, 63, 64, -1, - 66, 67, -1, 69, 70, 71, -1, -1, -1, 39, - -1, -1, -1, -1, -1, -1, 82, 83, 84, 85, - 86, -1, -1, -1, -1, 91, 92, 57, 58, -1, - -1, -1, 62, 63, 64, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, 39, -1, -1, -1, -1, - -1, -1, 82, 83, 84, 85, 86, -1, -1, -1, - -1, 91, 92, 57, 58, -1, -1, -1, 62, 63, - 64, -1, 66, 67, -1, 69, 70, 71, -1, -1, - -1, 39, -1, -1, -1, -1, -1, -1, 82, 83, - 84, 85, 86, -1, -1, -1, -1, 91, 92, 57, - 58, -1, -1, -1, 62, 63, 64, -1, 66, 67, - -1, 69, 70, 71, -1, -1, -1, 39, -1, -1, - -1, -1, -1, -1, 82, 83, 84, 85, 86, -1, - -1, -1, -1, 91, 92, 57, 58, -1, -1, -1, - 62, 63, 64, -1, 66, 67, -1, 69, 70, 71, - -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, - 82, 83, 84, 85, 86, -1, 57, 58, -1, 91, - 92, 62, 63, 64, -1, 66, 67, -1, 69, 70, - 71, -1, -1, -1, -1, -1, -1, 47, -1, -1, - 81, 82, 83, 84, 85, 86, -1, 57, 58, -1, - 91, 92, 62, 63, 64, -1, 66, 67, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 82, 83, 84, 85, 86, -1, 57, 58, - -1, 91, 92, 62, 63, 64, -1, 66, 67, -1, - 69, 70, 71, -1, -1, -1, -1, -1, 77, 78, + -1, -1, -1, -1, -1, -1, -1, -1, 11, 12, + 13, 14, -1, 16, 42, -1, 44, -1, 21, 22, + -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 65, -1, 42, + -1, 44, -1, -1, 72, 73, 74, 75, 76, -1, + -1, -1, -1, -1, -1, 83, 84, -1, -1, -1, + 35, 89, 65, -1, -1, 93, -1, -1, -1, 72, + 73, 74, 75, 76, -1, -1, -1, -1, -1, -1, + 83, 84, 57, 58, -1, -1, 89, 62, 63, 64, + 93, 66, 67, 68, 69, 70, 71, 40, -1, -1, + -1, -1, -1, 46, -1, -1, -1, 82, 83, 84, + 85, 86, -1, -1, 57, 58, 91, 92, -1, 62, + 63, 64, -1, 66, 67, -1, 69, 70, 71, 40, + -1, -1, -1, -1, -1, 46, -1, -1, -1, 82, + 83, 84, 85, 86, -1, -1, 57, 58, 91, 92, + -1, 62, 63, 64, -1, 66, 67, -1, 69, 70, + 71, 40, -1, -1, -1, -1, -1, 46, -1, -1, + -1, 82, 83, 84, 85, 86, -1, -1, 57, 58, + 91, 92, -1, 62, 63, 64, -1, 66, 67, -1, + 69, 70, 71, 40, -1, -1, -1, -1, -1, 46, + -1, -1, -1, 82, 83, 84, 85, 86, -1, -1, + 57, 58, 91, 92, -1, 62, 63, 64, -1, 66, + 67, -1, 69, 70, 71, 40, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 82, 83, 84, 85, 86, + -1, -1, 57, 58, 91, 92, -1, 62, 63, 64, + -1, 66, 67, -1, 69, 70, 71, 40, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, + 85, 86, -1, -1, 57, 58, 91, 92, -1, 62, + 63, 64, -1, 66, 67, -1, 69, 70, 71, 40, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + 83, 84, 85, 86, -1, -1, 57, 58, 91, 92, + -1, 62, 63, 64, -1, 66, 67, -1, 69, 70, + 71, 40, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, 83, 84, 85, 86, -1, -1, 57, 58, + 91, 92, -1, 62, 63, 64, -1, 66, 67, -1, + 69, 70, 71, -1, -1, -1, -1, -1, 46, -1, -1, -1, -1, 82, 83, 84, 85, 86, -1, 57, 58, -1, 91, 92, 62, 63, 64, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 81, 82, 83, 84, 85, 86, -1, - 57, 58, 90, 91, 92, 62, 63, 64, -1, 66, + -1, 48, -1, 81, 82, 83, 84, 85, 86, -1, + 57, 58, -1, 91, 92, 62, 63, 64, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, 85, 86, - -1, 57, 58, 90, 91, 92, 62, 63, 64, -1, + -1, 57, 58, -1, 91, 92, 62, 63, 64, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 81, 82, 83, 84, 85, + -1, 77, 78, -1, -1, -1, 82, 83, 84, 85, 86, -1, 57, 58, -1, 91, 92, 62, 63, 64, -1, 66, 67, -1, 69, 70, 71, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, - 85, 86, -1, 57, 58, -1, 91, 92, 62, 63, - 64, -1, 66, 67, -1, 69, 70, 71, -1, 63, - 64, -1, 66, 67, -1, 69, -1, -1, 82, -1, - -1, 85, 86, -1, -1, 89, -1, 91, 92, 83, - 84, 85, 86, -1, -1, -1, -1, 91, 92 + -1, -1, -1, -1, -1, -1, 81, 82, 83, 84, + 85, 86, -1, 57, 58, 90, 91, 92, 62, 63, + 64, -1, 66, 67, -1, 69, 70, 71, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, 83, + 84, 85, 86, -1, 57, 58, 90, 91, 92, 62, + 63, 64, -1, 66, 67, -1, 69, 70, 71, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, + 83, 84, 85, 86, -1, 57, 58, -1, 91, 92, + 62, 63, 64, -1, 66, 67, -1, 69, 70, 71, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 82, 83, 84, 85, 86, -1, 57, 58, -1, 91, + 92, 62, 63, 64, -1, 66, 67, -1, 69, 70, + 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, -1, -1, 89, -1, + 91, 92 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1219,38 +1221,39 @@ static const yytype_int16 yycheck[] = static const yytype_uint8 yystos[] = { 0, 1, 11, 12, 13, 14, 16, 17, 18, 19, - 20, 21, 22, 24, 29, 31, 32, 33, 36, 41, - 42, 43, 46, 50, 51, 52, 53, 56, 65, 72, - 73, 74, 75, 76, 79, 80, 83, 84, 89, 93, - 97, 99, 100, 101, 102, 103, 110, 111, 112, 117, - 118, 119, 122, 125, 126, 133, 88, 98, 21, 41, - 100, 118, 118, 118, 89, 118, 134, 21, 89, 114, - 42, 21, 120, 30, 35, 37, 38, 39, 40, 118, - 123, 124, 21, 118, 47, 48, 12, 13, 21, 21, - 21, 21, 118, 54, 123, 124, 21, 121, 118, 118, - 118, 118, 118, 118, 21, 89, 118, 118, 118, 134, - 0, 98, 89, 81, 89, 109, 118, 118, 57, 58, - 62, 63, 64, 66, 67, 69, 70, 71, 82, 83, - 84, 85, 86, 91, 92, 118, 118, 134, 95, 134, - 134, 134, 95, 118, 118, 37, 124, 127, 34, 67, - 68, 21, 45, 81, 118, 45, 81, 44, 128, 47, - 124, 95, 39, 45, 39, 45, 39, 45, 39, 45, - 77, 78, 129, 21, 90, 94, 99, 109, 118, 109, - 118, 44, 81, 115, 118, 118, 118, 118, 118, 118, + 20, 21, 22, 24, 26, 30, 32, 33, 34, 37, + 42, 43, 44, 47, 51, 52, 53, 54, 56, 65, + 72, 73, 74, 75, 76, 79, 80, 83, 84, 89, + 93, 97, 99, 100, 101, 102, 103, 110, 111, 112, + 117, 118, 119, 122, 125, 127, 134, 88, 98, 21, + 42, 100, 118, 118, 118, 89, 118, 135, 21, 89, + 114, 126, 43, 21, 120, 31, 36, 38, 39, 40, + 41, 118, 123, 124, 21, 118, 48, 49, 12, 13, + 21, 21, 21, 21, 118, 55, 123, 124, 21, 121, + 118, 118, 118, 118, 118, 118, 21, 89, 118, 118, + 118, 135, 0, 98, 89, 81, 89, 109, 118, 118, + 57, 58, 62, 63, 64, 66, 67, 69, 70, 71, + 82, 83, 84, 85, 86, 91, 92, 118, 118, 135, + 95, 135, 135, 135, 135, 95, 118, 118, 38, 124, + 128, 35, 67, 68, 21, 46, 81, 118, 46, 81, + 45, 129, 48, 124, 95, 40, 46, 40, 46, 40, + 46, 40, 46, 77, 78, 130, 21, 90, 94, 99, + 109, 118, 109, 118, 45, 81, 115, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 90, 118, 90, 21, 118, 114, 21, 118, 118, - 118, 118, 45, 81, 118, 118, 114, 118, 21, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 114, - 90, 95, 90, 115, 90, 98, 114, 118, 21, 131, - 118, 118, 131, 39, 39, 39, 39, 130, 134, 116, - 26, 45, 116, 101, 119, 95, 98, 98, 118, 118, - 118, 118, 131, 90, 98, 102, 115, 45, 118, 115, - 115, 21, 95, 132, 132, 98, 25, 118, 115, 25, - 49, 114, 28, 49, 106, 107, 113, 21, 116, 116, - 132, 115, 116, 116, 105, 106, 108, 113, 114, 107, - 115, 109, 116, 116, 115, 115, 108, 115, 109, 101, - 49, 104, 44, 25, 115, 25, 25, 25, 44, 115, - 114, 115, 114, 25, 116, 101, 102, 115, 115 + 118, 118, 118, 118, 90, 118, 90, 21, 118, 114, + 21, 118, 118, 118, 118, 46, 81, 118, 118, 114, + 118, 21, 118, 118, 118, 118, 118, 118, 118, 118, + 118, 118, 114, 90, 95, 90, 115, 90, 98, 114, + 118, 21, 132, 118, 118, 132, 40, 40, 40, 40, + 131, 135, 116, 27, 46, 116, 101, 119, 95, 98, + 98, 118, 118, 118, 118, 132, 90, 98, 102, 115, + 46, 118, 115, 115, 21, 95, 133, 133, 98, 25, + 118, 115, 25, 50, 114, 29, 50, 106, 107, 113, + 21, 116, 116, 133, 115, 116, 116, 105, 106, 108, + 113, 114, 107, 115, 109, 116, 116, 115, 115, 108, + 115, 109, 101, 50, 104, 45, 25, 115, 25, 25, + 25, 45, 115, 114, 115, 114, 25, 116, 101, 102, + 115, 115 }; #define yyerrok (yyerrstatus = 0) @@ -2802,12 +2805,24 @@ yyreduce: break; case 134: -#line 553 "engines/director/lingo/lingo-gr.y" - { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;} +#line 526 "engines/director/lingo/lingo-gr.y" + { g_lingo->codeSetImmediate(true); ;} break; case 135: -#line 554 "engines/director/lingo/lingo-gr.y" +#line 526 "engines/director/lingo/lingo-gr.y" + { + g_lingo->codeSetImmediate(false); + g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;} + break; + + case 136: +#line 556 "engines/director/lingo/lingo-gr.y" + { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;} + break; + + case 137: +#line 557 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); @@ -2815,38 +2830,38 @@ yyreduce: g_lingo->_indef = false; ;} break; - case 136: -#line 559 "engines/director/lingo/lingo-gr.y" + case 138: +#line 562 "engines/director/lingo/lingo-gr.y" { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;} break; - case 137: -#line 562 "engines/director/lingo/lingo-gr.y" + case 139: +#line 565 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; ;} break; - case 138: -#line 563 "engines/director/lingo/lingo-gr.y" + case 140: +#line 566 "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 139: -#line 567 "engines/director/lingo/lingo-gr.y" + case 141: +#line 570 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;} break; - case 140: -#line 568 "engines/director/lingo/lingo-gr.y" + case 142: +#line 571 "engines/director/lingo/lingo-gr.y" { g_lingo->_ignoreMe = true; ;} break; - case 141: -#line 568 "engines/director/lingo/lingo-gr.y" + case 143: +#line 571 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); @@ -2858,33 +2873,33 @@ yyreduce: ;} break; - case 142: -#line 578 "engines/director/lingo/lingo-gr.y" + case 144: +#line 581 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 0; ;} break; - case 143: -#line 579 "engines/director/lingo/lingo-gr.y" + case 145: +#line 582 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;} break; - case 144: -#line 580 "engines/director/lingo/lingo-gr.y" + case 146: +#line 583 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} break; - case 145: -#line 581 "engines/director/lingo/lingo-gr.y" + case 147: +#line 584 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;} break; - case 146: -#line 583 "engines/director/lingo/lingo-gr.y" + case 148: +#line 586 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArgStore(); ;} break; - case 147: -#line 587 "engines/director/lingo/lingo-gr.y" + case 149: +#line 590 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_call); g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str()); @@ -2893,24 +2908,24 @@ yyreduce: g_lingo->code1(numpar); ;} break; - case 148: -#line 595 "engines/director/lingo/lingo-gr.y" + case 150: +#line 598 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 0; ;} break; - case 149: -#line 596 "engines/director/lingo/lingo-gr.y" + case 151: +#line 599 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; ;} break; - case 150: -#line 597 "engines/director/lingo/lingo-gr.y" + case 152: +#line 600 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} break; /* Line 1267 of yacc.c. */ -#line 2914 "engines/director/lingo/lingo-gr.cpp" +#line 2929 "engines/director/lingo/lingo-gr.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -3124,6 +3139,6 @@ yyreturn: } -#line 600 "engines/director/lingo/lingo-gr.y" +#line 603 "engines/director/lingo/lingo-gr.y" diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h index 37451f08f5..5f9a89477e 100644 --- a/engines/director/lingo/lingo-gr.h +++ b/engines/director/lingo/lingo-gr.h @@ -62,36 +62,36 @@ HANDLER = 278, SYMBOL = 279, ENDCLAUSE = 280, - tDOWN = 281, - tELSE = 282, - tNLELSIF = 283, - tEXIT = 284, - tFRAME = 285, - tGLOBAL = 286, - tGO = 287, - tIF = 288, - tINTO = 289, - tLOOP = 290, - tMACRO = 291, - tMOVIE = 292, - tNEXT = 293, - tOF = 294, - tPREVIOUS = 295, - tPUT = 296, - tREPEAT = 297, - tSET = 298, - tTHEN = 299, - tTO = 300, - tWHEN = 301, - tWITH = 302, - tWHILE = 303, - tNLELSE = 304, - tFACTORY = 305, - tMETHOD = 306, - tOPEN = 307, - tPLAY = 308, - tDONE = 309, - tPLAYACCEL = 310, + tPLAYACCEL = 281, + tDOWN = 282, + tELSE = 283, + tNLELSIF = 284, + tEXIT = 285, + tFRAME = 286, + tGLOBAL = 287, + tGO = 288, + tIF = 289, + tINTO = 290, + tLOOP = 291, + tMACRO = 292, + tMOVIE = 293, + tNEXT = 294, + tOF = 295, + tPREVIOUS = 296, + tPUT = 297, + tREPEAT = 298, + tSET = 299, + tTHEN = 300, + tTO = 301, + tWHEN = 302, + tWITH = 303, + tWHILE = 304, + tNLELSE = 305, + tFACTORY = 306, + tMETHOD = 307, + tOPEN = 308, + tPLAY = 309, + tDONE = 310, tINSTANCE = 311, tGE = 312, tLE = 313, @@ -143,36 +143,36 @@ #define HANDLER 278 #define SYMBOL 279 #define ENDCLAUSE 280 -#define tDOWN 281 -#define tELSE 282 -#define tNLELSIF 283 -#define tEXIT 284 -#define tFRAME 285 -#define tGLOBAL 286 -#define tGO 287 -#define tIF 288 -#define tINTO 289 -#define tLOOP 290 -#define tMACRO 291 -#define tMOVIE 292 -#define tNEXT 293 -#define tOF 294 -#define tPREVIOUS 295 -#define tPUT 296 -#define tREPEAT 297 -#define tSET 298 -#define tTHEN 299 -#define tTO 300 -#define tWHEN 301 -#define tWITH 302 -#define tWHILE 303 -#define tNLELSE 304 -#define tFACTORY 305 -#define tMETHOD 306 -#define tOPEN 307 -#define tPLAY 308 -#define tDONE 309 -#define tPLAYACCEL 310 +#define tPLAYACCEL 281 +#define tDOWN 282 +#define tELSE 283 +#define tNLELSIF 284 +#define tEXIT 285 +#define tFRAME 286 +#define tGLOBAL 287 +#define tGO 288 +#define tIF 289 +#define tINTO 290 +#define tLOOP 291 +#define tMACRO 292 +#define tMOVIE 293 +#define tNEXT 294 +#define tOF 295 +#define tPREVIOUS 296 +#define tPUT 297 +#define tREPEAT 298 +#define tSET 299 +#define tTHEN 300 +#define tTO 301 +#define tWHEN 302 +#define tWITH 303 +#define tWHILE 304 +#define tNLELSE 305 +#define tFACTORY 306 +#define tMETHOD 307 +#define tOPEN 308 +#define tPLAY 309 +#define tDONE 310 #define tINSTANCE 311 #define tGE 312 #define tLE 313 diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index 778496bf94..b037bc88f0 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -93,7 +93,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) { %token<f> FLOAT %token<s> BLTIN BLTINNOARGS BLTINNOARGSORONE BLTINONEARG BLTINARGLIST TWOWORDBUILTIN %token<s> ID STRING HANDLER SYMBOL -%token<s> ENDCLAUSE +%token<s> ENDCLAUSE tPLAYACCEL %token tDOWN tELSE tNLELSIF tEXIT tFRAME tGLOBAL tGO tIF tINTO tLOOP tMACRO %token tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN %token tWITH tWHILE tNLELSE tFACTORY tMETHOD tOPEN tPLAY tDONE tPLAYACCEL tINSTANCE @@ -523,6 +523,9 @@ playfunc: tPLAY tDONE { g_lingo->code1(g_lingo->c_playdone); } | tPLAY gotomovie { g_lingo->codeConst(2); g_lingo->code1(g_lingo->c_play); } + | tPLAYACCEL { g_lingo->codeSetImmediate(true); } arglist { + g_lingo->codeSetImmediate(false); + g_lingo->codeFunc($1, $3); } ; // macro diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp index 922425048e..fb6c4a21e5 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 68 -#define YY_END_OF_BUFFER 69 +#define YY_NUM_RULES 69 +#define YY_END_OF_BUFFER 70 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -373,35 +373,36 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[248] = +static yyconst flex_int16_t yy_accept[253] = { 0, - 0, 0, 69, 67, 3, 65, 65, 67, 67, 67, - 64, 64, 64, 63, 64, 64, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 2, 2, 3, 65, 0, 0, - 0, 0, 0, 66, 4, 60, 1, 62, 63, 59, - 57, 58, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 22, 12, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 35, 36, 61, 38, - 61, 61, 61, 61, 61, 61, 61, 61, 50, 61, - 61, 61, 2, 2, 0, 4, 1, 62, 61, 6, - - 61, 61, 61, 61, 61, 61, 16, 61, 61, 61, - 61, 0, 61, 61, 61, 61, 61, 61, 61, 31, - 61, 61, 34, 61, 61, 61, 41, 61, 43, 61, - 61, 61, 61, 61, 61, 61, 0, 61, 61, 8, - 61, 10, 11, 15, 0, 16, 18, 61, 61, 61, - 0, 61, 61, 25, 26, 27, 28, 61, 61, 61, - 33, 37, 39, 61, 61, 61, 61, 0, 49, 54, - 61, 52, 56, 14, 5, 61, 61, 16, 16, 61, - 19, 61, 21, 61, 61, 29, 61, 32, 61, 61, - 61, 61, 48, 48, 55, 61, 0, 7, 61, 16, - - 61, 20, 61, 61, 30, 61, 42, 51, 44, 0, - 0, 48, 53, 0, 61, 17, 61, 61, 61, 0, - 0, 0, 0, 48, 13, 9, 23, 61, 40, 0, - 0, 0, 48, 61, 0, 0, 0, 0, 24, 47, - 46, 47, 0, 0, 0, 45, 0 + 0, 0, 70, 68, 3, 66, 66, 68, 68, 68, + 65, 65, 65, 64, 65, 65, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 2, 2, 3, 66, 0, 0, + 0, 0, 0, 67, 4, 61, 1, 63, 64, 60, + 58, 59, 62, 62, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 22, 12, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 35, 36, 62, 38, + 62, 62, 62, 62, 62, 62, 62, 62, 51, 62, + 62, 62, 2, 2, 0, 4, 1, 63, 62, 6, + + 62, 62, 62, 62, 62, 62, 16, 62, 62, 62, + 62, 0, 62, 62, 62, 62, 62, 62, 62, 31, + 62, 62, 34, 62, 62, 62, 42, 62, 44, 62, + 62, 62, 62, 62, 62, 62, 0, 62, 62, 8, + 62, 10, 11, 15, 0, 16, 18, 62, 62, 62, + 0, 62, 62, 25, 26, 27, 28, 62, 62, 62, + 33, 37, 39, 62, 62, 62, 62, 0, 50, 55, + 62, 53, 57, 14, 5, 62, 62, 16, 16, 62, + 19, 62, 21, 62, 62, 29, 62, 32, 62, 62, + 62, 62, 62, 49, 49, 56, 62, 0, 7, 62, + + 16, 62, 20, 62, 62, 30, 62, 62, 43, 52, + 45, 0, 0, 49, 54, 0, 62, 17, 62, 62, + 62, 62, 0, 0, 0, 0, 49, 13, 9, 23, + 62, 62, 41, 0, 0, 0, 49, 62, 40, 0, + 0, 0, 0, 24, 48, 47, 48, 0, 0, 0, + 46, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -447,14 +448,14 @@ static yyconst flex_int32_t yy_meta[65] = 5, 5, 5, 5 } ; -static yyconst flex_int16_t yy_base[259] = +static yyconst flex_int16_t yy_base[264] = { 0, - 0, 63, 160, 637, 67, 71, 75, 79, 140, 0, - 637, 133, 126, 54, 70, 94, 65, 67, 65, 61, + 0, 63, 160, 645, 67, 71, 75, 79, 140, 0, + 645, 133, 126, 54, 70, 94, 65, 67, 65, 61, 71, 87, 72, 0, 103, 81, 119, 109, 135, 118, - 82, 112, 146, 155, 194, 208, 212, 637, 216, 181, - 220, 121, 99, 637, 0, 637, 0, 88, 95, 637, - 637, 637, 0, 118, 96, 105, 142, 177, 197, 173, + 82, 112, 146, 155, 194, 208, 212, 645, 216, 181, + 220, 121, 99, 645, 0, 645, 0, 88, 95, 645, + 645, 645, 0, 118, 96, 105, 142, 177, 197, 173, 183, 183, 210, 215, 204, 88, 0, 202, 217, 211, 213, 225, 211, 228, 208, 216, 0, 0, 228, 0, 235, 232, 220, 225, 227, 235, 255, 255, 0, 260, @@ -466,52 +467,54 @@ static yyconst flex_int16_t yy_base[259] = 317, 364, 322, 332, 337, 345, 349, 343, 344, 0, 354, 0, 0, 0, 189, 0, 0, 348, 358, 364, 354, 365, 352, 0, 0, 0, 0, 357, 358, 368, - 0, 0, 0, 366, 377, 362, 363, 408, 0, 0, - 378, 378, 0, 237, 0, 384, 390, 0, 0, 387, - 0, 396, 637, 396, 392, 0, 398, 0, 397, 394, - 410, 399, 436, 450, 0, 405, 434, 0, 408, 0, - - 405, 0, 429, 433, 0, 426, 0, 0, 0, 463, - 443, 462, 0, 449, 436, 0, 453, 456, 443, 485, - 463, 463, 464, 502, 637, 0, 0, 457, 0, 462, - 430, 475, 518, 475, 490, 524, 492, 529, 0, 637, - 530, 637, 538, 503, 539, 540, 637, 592, 594, 597, - 600, 606, 611, 616, 619, 624, 626, 631 + 0, 0, 374, 369, 380, 364, 368, 408, 0, 0, + 384, 390, 0, 237, 0, 397, 395, 0, 0, 391, + 0, 398, 645, 397, 394, 0, 401, 0, 410, 401, + 397, 412, 401, 434, 455, 0, 408, 465, 0, 409, + + 0, 407, 0, 432, 432, 0, 444, 432, 0, 0, + 0, 475, 444, 481, 0, 447, 438, 0, 452, 455, + 454, 448, 479, 476, 475, 476, 502, 645, 0, 0, + 473, 489, 0, 482, 519, 491, 525, 489, 0, 504, + 526, 518, 540, 0, 645, 544, 645, 546, 522, 550, + 551, 645, 600, 602, 605, 608, 614, 619, 624, 627, + 632, 634, 639 } ; -static yyconst flex_int16_t yy_def[259] = +static yyconst flex_int16_t yy_def[264] = { 0, - 247, 1, 247, 247, 247, 247, 247, 247, 248, 249, - 247, 247, 247, 247, 247, 247, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 247, 247, 247, 247, 247, 247, - 247, 247, 248, 247, 251, 247, 252, 247, 247, 247, - 247, 247, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 247, 247, 247, 251, 252, 247, 250, 250, - - 250, 250, 250, 250, 250, 250, 253, 250, 250, 250, - 250, 247, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 247, 250, 250, 250, - 250, 250, 250, 250, 254, 255, 250, 250, 250, 250, - 247, 250, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 256, 250, 250, - 250, 250, 250, 247, 250, 250, 250, 257, 255, 250, - 250, 250, 247, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 256, 256, 250, 250, 247, 250, 250, 257, - - 250, 250, 250, 250, 250, 250, 250, 250, 250, 247, - 247, 256, 250, 247, 250, 250, 250, 250, 250, 247, - 247, 247, 247, 256, 247, 250, 250, 250, 250, 247, - 247, 247, 256, 250, 247, 258, 247, 247, 250, 247, - 258, 247, 247, 247, 247, 258, 0, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247 + 252, 1, 252, 252, 252, 252, 252, 252, 253, 254, + 252, 252, 252, 252, 252, 252, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 252, 252, 252, 252, 252, 252, + 252, 252, 253, 252, 256, 252, 257, 252, 252, 252, + 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 252, 252, 252, 256, 257, 252, 255, 255, + + 255, 255, 255, 255, 255, 255, 258, 255, 255, 255, + 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, + 255, 255, 255, 255, 259, 260, 255, 255, 255, 255, + 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 261, 255, 255, + 255, 255, 255, 252, 255, 255, 255, 262, 260, 255, + 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 261, 261, 255, 255, 252, 255, 255, + + 262, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 252, 252, 261, 255, 252, 255, 255, 255, 255, + 255, 255, 252, 252, 252, 252, 261, 252, 255, 255, + 255, 255, 255, 252, 252, 252, 261, 255, 255, 252, + 263, 252, 252, 255, 252, 263, 252, 252, 252, 252, + 263, 0, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252 } ; -static yyconst flex_int16_t yy_nxt[702] = +static yyconst flex_int16_t yy_nxt[710] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 11, 13, 4, 14, 15, 11, 16, 17, 18, 19, 20, @@ -529,71 +532,71 @@ static yyconst flex_int16_t yy_nxt[702] = 42, 60, 65, 61, 67, 66, 101, 84, 63, 75, 70, 68, 85, 62, 71, 72, 47, 69, 76, 73, 100, 46, 86, 64, 81, 44, 87, 95, 74, 67, - 82, 101, 99, 83, 75, 68, 77, 85, 102, 247, + 82, 101, 99, 83, 75, 68, 77, 85, 102, 252, 72, 69, 76, 78, 73, 79, 86, 80, 81, 88, - 87, 95, 74, 247, 82, 89, 99, 83, 90, 91, - 247, 77, 40, 102, 92, 40, 247, 78, 247, 79, - 145, 80, 247, 145, 88, 93, 38, 38, 94, 89, + 87, 95, 74, 252, 82, 89, 99, 83, 90, 91, + 252, 77, 40, 102, 92, 40, 252, 78, 252, 79, + 145, 80, 252, 145, 88, 93, 38, 38, 94, 89, - 247, 42, 107, 90, 91, 103, 106, 108, 92, 94, + 252, 42, 107, 90, 91, 103, 106, 108, 92, 94, 38, 38, 94, 37, 38, 38, 39, 39, 38, 38, 39, 40, 41, 41, 40, 104, 42, 107, 109, 103, - 106, 110, 108, 111, 105, 113, 114, 115, 197, 116, - 42, 197, 117, 118, 247, 119, 122, 120, 124, 104, + 106, 110, 108, 111, 105, 113, 114, 115, 198, 116, + 42, 198, 117, 118, 252, 119, 122, 120, 124, 104, 123, 125, 126, 109, 127, 128, 110, 111, 105, 113, 114, 129, 115, 116, 121, 42, 117, 130, 118, 119, 122, 131, 120, 124, 123, 132, 125, 126, 127, 128, - 133, 247, 135, 136, 134, 129, 137, 138, 121, 139, + 133, 252, 135, 136, 134, 129, 137, 138, 121, 139, 140, 130, 93, 38, 38, 94, 131, 141, 142, 144, 132, 94, 38, 38, 94, 133, 135, 136, 143, 134, 137, 147, 138, 139, 140, 145, 148, 149, 145, 150, 153, 141, 112, 142, 144, 112, 53, 152, 155, 154, - 157, 156, 143, 158, 159, 147, 160, 247, 161, 162, - 148, 149, 163, 164, 150, 153, 165, 166, 247, 167, + 157, 156, 143, 158, 159, 147, 160, 252, 161, 162, + 148, 149, 163, 164, 150, 153, 165, 166, 252, 167, 170, 152, 155, 154, 157, 151, 156, 158, 171, 159, 172, 160, 161, 162, 173, 168, 163, 164, 168, 174, 177, 165, 166, 167, 170, 175, 176, 180, 181, 151, 182, 184, 171, 183, 185, 172, 186, 187, 188, 173, - 189, 247, 169, 190, 174, 177, 191, 192, 195, 175, - - 176, 180, 196, 181, 198, 182, 184, 183, 185, 168, - 186, 187, 168, 188, 199, 189, 169, 205, 190, 201, - 191, 192, 202, 195, 203, 204, 206, 196, 207, 198, - 208, 236, 209, 213, 236, 197, 215, 210, 197, 199, - 210, 194, 205, 201, 216, 211, 202, 217, 203, 204, - 206, 210, 207, 218, 210, 208, 209, 213, 214, 211, - 215, 219, 221, 210, 220, 194, 210, 220, 216, 226, - 225, 211, 217, 227, 228, 247, 229, 223, 218, 230, - 247, 212, 221, 214, 231, 219, 220, 221, 232, 220, - 247, 234, 222, 226, 224, 225, 235, 223, 227, 228, - - 229, 223, 237, 210, 230, 212, 210, 221, 239, 231, - 240, 211, 242, 232, 222, 234, 222, 247, 224, 238, - 235, 223, 238, 247, 245, 236, 237, 211, 236, 247, - 243, 247, 239, 243, 247, 240, 233, 242, 222, 243, - 246, 246, 243, 246, 246, 247, 247, 247, 221, 245, - 247, 247, 247, 247, 247, 247, 247, 247, 244, 247, - 233, 247, 247, 223, 247, 247, 247, 244, 247, 247, - 247, 247, 247, 221, 247, 247, 247, 247, 247, 247, - 247, 247, 244, 247, 247, 247, 247, 223, 247, 247, - 247, 244, 43, 43, 247, 43, 43, 43, 45, 45, - - 53, 53, 53, 96, 96, 96, 97, 97, 247, 97, - 97, 97, 146, 247, 146, 146, 146, 178, 247, 247, - 178, 178, 179, 179, 179, 193, 247, 247, 193, 200, - 200, 200, 241, 247, 247, 241, 3, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - - 247 + 189, 252, 169, 190, 174, 177, 191, 252, 192, 175, + + 176, 180, 193, 181, 196, 182, 184, 183, 185, 168, + 186, 187, 168, 188, 197, 189, 169, 199, 190, 200, + 206, 191, 192, 202, 203, 204, 193, 205, 207, 196, + 208, 209, 210, 252, 211, 212, 215, 217, 212, 197, + 252, 195, 199, 213, 200, 206, 218, 202, 203, 204, + 219, 205, 220, 207, 208, 209, 212, 210, 211, 212, + 215, 217, 221, 224, 213, 195, 198, 222, 228, 198, + 218, 229, 230, 231, 232, 219, 223, 220, 226, 223, + 223, 233, 212, 223, 252, 212, 214, 221, 224, 216, + 213, 222, 234, 228, 224, 229, 235, 230, 231, 232, + + 236, 252, 226, 212, 225, 233, 212, 238, 225, 226, + 214, 213, 252, 227, 216, 239, 240, 234, 242, 224, + 241, 235, 244, 241, 245, 236, 243, 241, 225, 243, + 241, 238, 225, 226, 213, 252, 237, 227, 247, 239, + 240, 248, 242, 250, 248, 252, 244, 248, 252, 245, + 248, 251, 251, 252, 251, 251, 252, 252, 252, 224, + 237, 252, 252, 247, 252, 252, 252, 252, 250, 249, + 252, 252, 252, 252, 226, 249, 252, 252, 252, 252, + 252, 252, 252, 252, 224, 252, 252, 252, 252, 252, + 252, 252, 252, 249, 252, 252, 252, 252, 226, 249, + + 43, 43, 252, 43, 43, 43, 45, 45, 53, 53, + 53, 96, 96, 96, 97, 97, 252, 97, 97, 97, + 146, 252, 146, 146, 146, 178, 252, 252, 178, 178, + 179, 179, 179, 194, 252, 252, 194, 201, 201, 201, + 246, 252, 252, 246, 3, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + + 252, 252, 252, 252, 252, 252, 252, 252, 252 } ; -static yyconst flex_int16_t yy_chk[702] = +static yyconst flex_int16_t yy_chk[710] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -637,42 +640,42 @@ static yyconst flex_int16_t yy_chk[702] = 135, 121, 122, 124, 136, 132, 125, 126, 132, 137, 141, 128, 130, 131, 133, 138, 139, 148, 149, 112, 150, 152, 134, 151, 153, 135, 158, 159, 160, 136, - 164, 0, 132, 165, 137, 141, 166, 167, 171, 138, - - 139, 148, 172, 149, 176, 150, 152, 151, 153, 168, - 158, 159, 168, 160, 177, 164, 132, 187, 165, 180, - 166, 167, 182, 171, 184, 185, 189, 172, 190, 176, - 191, 231, 192, 196, 231, 197, 199, 193, 197, 177, - 193, 168, 187, 180, 201, 193, 182, 203, 184, 185, - 189, 194, 190, 204, 194, 191, 192, 196, 197, 194, - 199, 206, 211, 212, 210, 168, 212, 210, 201, 215, - 214, 212, 203, 217, 218, 0, 219, 211, 204, 221, - 0, 194, 210, 197, 222, 206, 220, 211, 223, 220, - 0, 228, 210, 215, 212, 214, 230, 210, 217, 218, - - 219, 211, 232, 224, 221, 194, 224, 210, 234, 222, - 235, 224, 237, 223, 220, 228, 210, 0, 212, 233, - 230, 210, 233, 0, 244, 236, 232, 233, 236, 0, - 238, 241, 234, 238, 241, 235, 224, 237, 220, 243, - 245, 246, 243, 245, 246, 0, 0, 0, 238, 244, - 0, 0, 0, 0, 0, 0, 0, 0, 238, 0, - 224, 0, 0, 238, 0, 0, 0, 243, 0, 0, - 0, 0, 0, 238, 0, 0, 0, 0, 0, 0, - 0, 0, 238, 0, 0, 0, 0, 238, 0, 0, - 0, 243, 248, 248, 0, 248, 248, 248, 249, 249, - - 250, 250, 250, 251, 251, 251, 252, 252, 0, 252, - 252, 252, 253, 0, 253, 253, 253, 254, 0, 0, - 254, 254, 255, 255, 255, 256, 0, 0, 256, 257, - 257, 257, 258, 0, 0, 258, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - - 247 + 163, 0, 132, 164, 137, 141, 165, 0, 166, 138, + + 139, 148, 167, 149, 171, 150, 152, 151, 153, 168, + 158, 159, 168, 160, 172, 163, 132, 176, 164, 177, + 187, 165, 166, 180, 182, 184, 167, 185, 189, 171, + 190, 191, 192, 0, 193, 194, 197, 200, 194, 172, + 0, 168, 176, 194, 177, 187, 202, 180, 182, 184, + 204, 185, 205, 189, 190, 191, 195, 192, 193, 195, + 197, 200, 207, 213, 195, 168, 198, 208, 216, 198, + 202, 217, 219, 220, 221, 204, 212, 205, 213, 212, + 223, 222, 214, 223, 0, 214, 195, 207, 213, 198, + 214, 208, 224, 216, 212, 217, 225, 219, 220, 221, + + 226, 0, 213, 227, 212, 222, 227, 231, 223, 212, + 195, 227, 0, 214, 198, 232, 234, 224, 236, 212, + 235, 225, 238, 235, 240, 226, 237, 241, 212, 237, + 241, 231, 223, 212, 237, 0, 227, 214, 242, 232, + 234, 243, 236, 249, 243, 246, 238, 248, 246, 240, + 248, 250, 251, 0, 250, 251, 0, 0, 0, 243, + 227, 0, 0, 242, 0, 0, 0, 0, 249, 243, + 0, 0, 0, 0, 243, 248, 0, 0, 0, 0, + 0, 0, 0, 0, 243, 0, 0, 0, 0, 0, + 0, 0, 0, 243, 0, 0, 0, 0, 243, 248, + + 253, 253, 0, 253, 253, 253, 254, 254, 255, 255, + 255, 256, 256, 256, 257, 257, 0, 257, 257, 257, + 258, 0, 258, 258, 258, 259, 0, 0, 259, 259, + 260, 260, 260, 261, 0, 0, 261, 262, 262, 262, + 263, 0, 0, 263, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, + + 252, 252, 252, 252, 252, 252, 252, 252, 252 } ; static yy_state_type yy_last_accepting_state; @@ -747,7 +750,17 @@ static void countnl() { g_lingo->_colnumber = strlen(p); } -#line 751 "engines/director/lingo/lingo-lex.cpp" +static int checkImmediate(int token) { + if (g_lingo->_immediateMode) { + yylval.s = new Common::String(yytext); + + return ID; + } + + return token; +} + +#line 764 "engines/director/lingo/lingo-lex.cpp" #define INITIAL 0 @@ -930,10 +943,10 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 72 "engines/director/lingo/lingo-lex.l" +#line 82 "engines/director/lingo/lingo-lex.l" -#line 937 "engines/director/lingo/lingo-lex.cpp" +#line 950 "engines/director/lingo/lingo-lex.cpp" if ( !(yy_init) ) { @@ -987,13 +1000,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 248 ) + if ( yy_current_state >= 253 ) 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] != 637 ); + while ( yy_base[yy_current_state] != 645 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1019,84 +1032,84 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 74 "engines/director/lingo/lingo-lex.l" +#line 84 "engines/director/lingo/lingo-lex.l" YY_BREAK case 2: YY_RULE_SETUP -#line 75 "engines/director/lingo/lingo-lex.l" +#line 85 "engines/director/lingo/lingo-lex.l" { count(); } YY_BREAK case 3: YY_RULE_SETUP -#line 76 "engines/director/lingo/lingo-lex.l" +#line 86 "engines/director/lingo/lingo-lex.l" { count(); return ' '; } YY_BREAK case 4: YY_RULE_SETUP -#line 78 "engines/director/lingo/lingo-lex.l" +#line 88 "engines/director/lingo/lingo-lex.l" { count(); yylval.s = new Common::String(yytext); return SYMBOL; } // D3 YY_BREAK case 5: YY_RULE_SETUP -#line 80 "engines/director/lingo/lingo-lex.l" +#line 90 "engines/director/lingo/lingo-lex.l" { count(); return tAFTER; } // D3 YY_BREAK case 6: YY_RULE_SETUP -#line 81 "engines/director/lingo/lingo-lex.l" +#line 91 "engines/director/lingo/lingo-lex.l" { count(); return tAND; } YY_BREAK case 7: YY_RULE_SETUP -#line 82 "engines/director/lingo/lingo-lex.l" +#line 92 "engines/director/lingo/lingo-lex.l" { count(); return tBEFORE; } // D3 YY_BREAK case 8: YY_RULE_SETUP -#line 83 "engines/director/lingo/lingo-lex.l" +#line 93 "engines/director/lingo/lingo-lex.l" { count(); return tCHAR; } // D3 YY_BREAK case 9: YY_RULE_SETUP -#line 84 "engines/director/lingo/lingo-lex.l" +#line 94 "engines/director/lingo/lingo-lex.l" { count(); return tCONTAINS; } YY_BREAK case 10: YY_RULE_SETUP -#line 85 "engines/director/lingo/lingo-lex.l" +#line 95 "engines/director/lingo/lingo-lex.l" { count(); return tDONE; } YY_BREAK case 11: YY_RULE_SETUP -#line 86 "engines/director/lingo/lingo-lex.l" +#line 96 "engines/director/lingo/lingo-lex.l" { count(); return tDOWN; } YY_BREAK case 12: YY_RULE_SETUP -#line 87 "engines/director/lingo/lingo-lex.l" +#line 97 "engines/director/lingo/lingo-lex.l" { count(); return tIF; } YY_BREAK case 13: /* rule 13 can match eol */ YY_RULE_SETUP -#line 88 "engines/director/lingo/lingo-lex.l" +#line 98 "engines/director/lingo/lingo-lex.l" { countnl(); return tNLELSIF; } YY_BREAK case 14: /* rule 14 can match eol */ YY_RULE_SETUP -#line 89 "engines/director/lingo/lingo-lex.l" +#line 99 "engines/director/lingo/lingo-lex.l" { countnl(); return tNLELSE; } YY_BREAK case 15: YY_RULE_SETUP -#line 90 "engines/director/lingo/lingo-lex.l" +#line 100 "engines/director/lingo/lingo-lex.l" { count(); return tELSE; } YY_BREAK case 16: YY_RULE_SETUP -#line 91 "engines/director/lingo/lingo-lex.l" +#line 101 "engines/director/lingo/lingo-lex.l" { count(); @@ -1111,147 +1124,152 @@ YY_RULE_SETUP YY_BREAK case 17: YY_RULE_SETUP -#line 102 "engines/director/lingo/lingo-lex.l" +#line 112 "engines/director/lingo/lingo-lex.l" { count(); return tFACTORY; } YY_BREAK case 18: YY_RULE_SETUP -#line 103 "engines/director/lingo/lingo-lex.l" +#line 113 "engines/director/lingo/lingo-lex.l" { count(); return tEXIT; } YY_BREAK case 19: YY_RULE_SETUP -#line 104 "engines/director/lingo/lingo-lex.l" +#line 114 "engines/director/lingo/lingo-lex.l" { count(); return tFRAME; } YY_BREAK case 20: YY_RULE_SETUP -#line 105 "engines/director/lingo/lingo-lex.l" +#line 115 "engines/director/lingo/lingo-lex.l" { count(); return tGLOBAL; } YY_BREAK case 21: YY_RULE_SETUP -#line 106 "engines/director/lingo/lingo-lex.l" +#line 116 "engines/director/lingo/lingo-lex.l" { count(); return tGO; } YY_BREAK case 22: YY_RULE_SETUP -#line 107 "engines/director/lingo/lingo-lex.l" +#line 117 "engines/director/lingo/lingo-lex.l" { count(); return tGO; } YY_BREAK case 23: YY_RULE_SETUP -#line 108 "engines/director/lingo/lingo-lex.l" +#line 118 "engines/director/lingo/lingo-lex.l" { count(); return tINSTANCE; } YY_BREAK case 24: YY_RULE_SETUP -#line 109 "engines/director/lingo/lingo-lex.l" +#line 119 "engines/director/lingo/lingo-lex.l" { count(); return tINTERSECTS; } YY_BREAK case 25: YY_RULE_SETUP -#line 110 "engines/director/lingo/lingo-lex.l" +#line 120 "engines/director/lingo/lingo-lex.l" { count(); return tINTO; } YY_BREAK case 26: YY_RULE_SETUP -#line 111 "engines/director/lingo/lingo-lex.l" +#line 121 "engines/director/lingo/lingo-lex.l" { count(); return tITEM; } YY_BREAK case 27: YY_RULE_SETUP -#line 112 "engines/director/lingo/lingo-lex.l" +#line 122 "engines/director/lingo/lingo-lex.l" { count(); return tLINE; } YY_BREAK case 28: YY_RULE_SETUP -#line 113 "engines/director/lingo/lingo-lex.l" -{ count(); return tLOOP; } +#line 123 "engines/director/lingo/lingo-lex.l" +{ count(); return checkImmediate(tLOOP); } YY_BREAK case 29: YY_RULE_SETUP -#line 114 "engines/director/lingo/lingo-lex.l" +#line 124 "engines/director/lingo/lingo-lex.l" { count(); return tMACRO; } YY_BREAK case 30: YY_RULE_SETUP -#line 115 "engines/director/lingo/lingo-lex.l" +#line 125 "engines/director/lingo/lingo-lex.l" { count(); return tMETHOD; } YY_BREAK case 31: YY_RULE_SETUP -#line 116 "engines/director/lingo/lingo-lex.l" +#line 126 "engines/director/lingo/lingo-lex.l" { count(); return tMOD; } YY_BREAK case 32: YY_RULE_SETUP -#line 117 "engines/director/lingo/lingo-lex.l" +#line 127 "engines/director/lingo/lingo-lex.l" { count(); return tMOVIE; } YY_BREAK case 33: YY_RULE_SETUP -#line 118 "engines/director/lingo/lingo-lex.l" +#line 128 "engines/director/lingo/lingo-lex.l" { count(); return tNEXT; } YY_BREAK case 34: YY_RULE_SETUP -#line 119 "engines/director/lingo/lingo-lex.l" +#line 129 "engines/director/lingo/lingo-lex.l" { count(); return tNOT; } YY_BREAK case 35: YY_RULE_SETUP -#line 120 "engines/director/lingo/lingo-lex.l" +#line 130 "engines/director/lingo/lingo-lex.l" { count(); return tOF; } YY_BREAK case 36: YY_RULE_SETUP -#line 121 "engines/director/lingo/lingo-lex.l" +#line 131 "engines/director/lingo/lingo-lex.l" { count(); return tON; } // D3 YY_BREAK case 37: YY_RULE_SETUP -#line 122 "engines/director/lingo/lingo-lex.l" +#line 132 "engines/director/lingo/lingo-lex.l" { count(); return tOPEN; } YY_BREAK case 38: YY_RULE_SETUP -#line 123 "engines/director/lingo/lingo-lex.l" +#line 133 "engines/director/lingo/lingo-lex.l" { count(); return tOR; } YY_BREAK case 39: YY_RULE_SETUP -#line 124 "engines/director/lingo/lingo-lex.l" +#line 134 "engines/director/lingo/lingo-lex.l" { count(); return tPLAY; } YY_BREAK case 40: YY_RULE_SETUP -#line 125 "engines/director/lingo/lingo-lex.l" -{ count(); return tPREVIOUS; } +#line 135 "engines/director/lingo/lingo-lex.l" +{ count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; } YY_BREAK case 41: YY_RULE_SETUP -#line 126 "engines/director/lingo/lingo-lex.l" -{ count(); return tPUT; } +#line 136 "engines/director/lingo/lingo-lex.l" +{ count(); return tPREVIOUS; } YY_BREAK case 42: YY_RULE_SETUP -#line 127 "engines/director/lingo/lingo-lex.l" -{ count(); return tREPEAT; } +#line 137 "engines/director/lingo/lingo-lex.l" +{ count(); return tPUT; } YY_BREAK case 43: YY_RULE_SETUP -#line 128 "engines/director/lingo/lingo-lex.l" -{ count(); return tSET; } +#line 138 "engines/director/lingo/lingo-lex.l" +{ count(); return checkImmediate(tREPEAT); } YY_BREAK case 44: YY_RULE_SETUP -#line 129 "engines/director/lingo/lingo-lex.l" -{ count(); return tSTARTS; } +#line 139 "engines/director/lingo/lingo-lex.l" +{ count(); return tSET; } YY_BREAK case 45: YY_RULE_SETUP -#line 130 "engines/director/lingo/lingo-lex.l" +#line 140 "engines/director/lingo/lingo-lex.l" +{ count(); return tSTARTS; } + YY_BREAK +case 46: +YY_RULE_SETUP +#line 141 "engines/director/lingo/lingo-lex.l" { count(); @@ -1261,9 +1279,9 @@ YY_RULE_SETUP return THEENTITYWITHID; } YY_BREAK -case 46: +case 47: YY_RULE_SETUP -#line 138 "engines/director/lingo/lingo-lex.l" +#line 149 "engines/director/lingo/lingo-lex.l" { count(); @@ -1305,9 +1323,9 @@ YY_RULE_SETUP warning("Unhandled the entity %s", ptr); } YY_BREAK -case 47: +case 48: YY_RULE_SETUP -#line 178 "engines/director/lingo/lingo-lex.l" +#line 189 "engines/director/lingo/lingo-lex.l" { count(); @@ -1340,9 +1358,9 @@ YY_RULE_SETUP return THEENTITY; } YY_BREAK -case 48: +case 49: YY_RULE_SETUP -#line 209 "engines/director/lingo/lingo-lex.l" +#line 220 "engines/director/lingo/lingo-lex.l" { count(); @@ -1363,69 +1381,69 @@ YY_RULE_SETUP warning("Unhandled the entity %s", ptr); } YY_BREAK -case 49: +case 50: YY_RULE_SETUP -#line 228 "engines/director/lingo/lingo-lex.l" +#line 239 "engines/director/lingo/lingo-lex.l" { count(); return tTHEN; } YY_BREAK -case 50: +case 51: YY_RULE_SETUP -#line 229 "engines/director/lingo/lingo-lex.l" +#line 240 "engines/director/lingo/lingo-lex.l" { count(); return tTO; } YY_BREAK -case 51: +case 52: YY_RULE_SETUP -#line 230 "engines/director/lingo/lingo-lex.l" +#line 241 "engines/director/lingo/lingo-lex.l" { count(); return tSPRITE; } YY_BREAK -case 52: +case 53: YY_RULE_SETUP -#line 231 "engines/director/lingo/lingo-lex.l" +#line 242 "engines/director/lingo/lingo-lex.l" { count(); return tWITH; } YY_BREAK -case 53: +case 54: YY_RULE_SETUP -#line 232 "engines/director/lingo/lingo-lex.l" +#line 243 "engines/director/lingo/lingo-lex.l" { count(); return tWITHIN; } YY_BREAK -case 54: +case 55: YY_RULE_SETUP -#line 233 "engines/director/lingo/lingo-lex.l" +#line 244 "engines/director/lingo/lingo-lex.l" { count(); return tWHEN; } YY_BREAK -case 55: +case 56: YY_RULE_SETUP -#line 234 "engines/director/lingo/lingo-lex.l" +#line 245 "engines/director/lingo/lingo-lex.l" { count(); return tWHILE; } YY_BREAK -case 56: +case 57: YY_RULE_SETUP -#line 235 "engines/director/lingo/lingo-lex.l" +#line 246 "engines/director/lingo/lingo-lex.l" { count(); return tWORD; } YY_BREAK -case 57: +case 58: YY_RULE_SETUP -#line 237 "engines/director/lingo/lingo-lex.l" +#line 248 "engines/director/lingo/lingo-lex.l" { count(); return tNEQ; } YY_BREAK -case 58: +case 59: YY_RULE_SETUP -#line 238 "engines/director/lingo/lingo-lex.l" +#line 249 "engines/director/lingo/lingo-lex.l" { count(); return tGE; } YY_BREAK -case 59: +case 60: YY_RULE_SETUP -#line 239 "engines/director/lingo/lingo-lex.l" +#line 250 "engines/director/lingo/lingo-lex.l" { count(); return tLE; } YY_BREAK -case 60: +case 61: YY_RULE_SETUP -#line 240 "engines/director/lingo/lingo-lex.l" +#line 251 "engines/director/lingo/lingo-lex.l" { count(); return tCONCAT; } YY_BREAK -case 61: +case 62: YY_RULE_SETUP -#line 242 "engines/director/lingo/lingo-lex.l" +#line 253 "engines/director/lingo/lingo-lex.l" { count(); yylval.s = new Common::String(yytext); @@ -1465,43 +1483,43 @@ YY_RULE_SETUP return ID; } YY_BREAK -case 62: +case 63: YY_RULE_SETUP -#line 280 "engines/director/lingo/lingo-lex.l" +#line 291 "engines/director/lingo/lingo-lex.l" { count(); yylval.f = atof(yytext); return FLOAT; } YY_BREAK -case 63: +case 64: YY_RULE_SETUP -#line 281 "engines/director/lingo/lingo-lex.l" +#line 292 "engines/director/lingo/lingo-lex.l" { count(); yylval.i = strtol(yytext, NULL, 10); return INT; } YY_BREAK -case 64: +case 65: YY_RULE_SETUP -#line 282 "engines/director/lingo/lingo-lex.l" +#line 293 "engines/director/lingo/lingo-lex.l" { count(); return *yytext; } YY_BREAK -case 65: -/* rule 65 can match eol */ +case 66: +/* rule 66 can match eol */ YY_RULE_SETUP -#line 283 "engines/director/lingo/lingo-lex.l" +#line 294 "engines/director/lingo/lingo-lex.l" { return '\n'; } YY_BREAK -case 66: +case 67: YY_RULE_SETUP -#line 284 "engines/director/lingo/lingo-lex.l" +#line 295 "engines/director/lingo/lingo-lex.l" { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; } YY_BREAK -case 67: +case 68: YY_RULE_SETUP -#line 285 "engines/director/lingo/lingo-lex.l" +#line 296 "engines/director/lingo/lingo-lex.l" YY_BREAK -case 68: +case 69: YY_RULE_SETUP -#line 287 "engines/director/lingo/lingo-lex.l" +#line 298 "engines/director/lingo/lingo-lex.l" ECHO; YY_BREAK -#line 1505 "engines/director/lingo/lingo-lex.cpp" +#line 1523 "engines/director/lingo/lingo-lex.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -1794,7 +1812,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 >= 248 ) + if ( yy_current_state >= 253 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1822,11 +1840,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 >= 248 ) + if ( yy_current_state >= 253 ) 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 == 247); + yy_is_jam = (yy_current_state == 252); return yy_is_jam ? 0 : yy_current_state; } @@ -2464,7 +2482,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 287 "engines/director/lingo/lingo-lex.l" +#line 298 "engines/director/lingo/lingo-lex.l" diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l index 5afe926913..00750c4523 100644 --- a/engines/director/lingo/lingo-lex.l +++ b/engines/director/lingo/lingo-lex.l @@ -59,6 +59,16 @@ static void countnl() { g_lingo->_colnumber = strlen(p); } +static int checkImmediate(int token) { + if (g_lingo->_immediateMode) { + yylval.s = new Common::String(yytext); + + return ID; + } + + return token; +} + %} identifier [_[:alpha:]][_[:alnum:]]* @@ -110,7 +120,7 @@ whitespace [\t ] (?i:into) { count(); return tINTO; } (?i:item) { count(); return tITEM; } (?i:line) { count(); return tLINE; } -(?i:loop) { count(); return tLOOP; } +(?i:loop) { count(); return checkImmediate(tLOOP); } (?i:macro) { count(); return tMACRO; } (?i:method) { count(); return tMETHOD; } (?i:mod) { count(); return tMOD; } @@ -122,9 +132,10 @@ whitespace [\t ] (?i:open) { count(); return tOPEN; } (?i:or) { count(); return tOR; } (?i:play) { count(); return tPLAY; } +(?i:playAccel) { count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; } (?i:previous) { count(); return tPREVIOUS; } (?i:put) { count(); return tPUT; } -(?i:repeat) { count(); return tREPEAT; } +(?i:repeat) { count(); return checkImmediate(tREPEAT); } (?i:set) { count(); return tSET; } (?i:starts) { count(); return tSTARTS; } (?i:the[ \t]+sqrt[\t ]+of[\t ]+) { diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp index e6b4e11d49..b75dc0bd9f 100644 --- a/engines/director/lingo/lingo.cpp +++ b/engines/director/lingo/lingo.cpp @@ -101,6 +101,7 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) { _returning = false; _indef = false; _ignoreMe = false; + _immediateMode = false; _linenumber = _colnumber = 0; diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index 5d6c29b915..552a1d6253 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -223,6 +223,7 @@ public: void codeArg(Common::String *s); void codeArgStore(); + int codeSetImmediate(bool state); int codeFunc(Common::String *s, int numpar); int codeMe(Common::String *method, int numpar); int codeFloat(double f); @@ -272,6 +273,7 @@ public: static void c_assign(); bool verify(Symbol *s); static void c_eval(); + static void c_setImmediate(); static void c_swap(); @@ -474,6 +476,7 @@ public: bool _returning; bool _indef; bool _ignoreMe; + bool _immediateMode; Common::Array<CFrame *> _callstack; Common::Array<Common::String *> _argstack; diff --git a/engines/director/lingo/tests/mci.lingo b/engines/director/lingo/tests/mci.lingo index c4d696e209..39f7721e5c 100644 --- a/engines/director/lingo/tests/mci.lingo +++ b/engines/director/lingo/tests/mci.lingo @@ -7,3 +7,7 @@ sound fadeOut 1, 20 sound fadeIn 1 sound fadeIn 1, 15 sound stop 1 + +playAccel "globe.mma", repeat, 5, noFlush, clickStop +playAccel "globe.mma", tempo, 100, repeat, 10, noFlush, clickStop +playAccel "globe.mma", tempo, 10, repeat, 4, noFlush, clickStop |