diff options
| -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 | 
