diff options
| author | Eugene Sandulenko | 2016-08-04 22:48:30 +0200 | 
|---|---|---|
| committer | Eugene Sandulenko | 2016-08-04 23:00:55 +0200 | 
| commit | 415cefd702bbc36538ed8faeab609253fdbc0540 (patch) | |
| tree | 80709354e6b703d44f38f919be135078b1fef6dc | |
| parent | 7ec2e7bc31bbc6a916586c5aa0eecae98559eee4 (diff) | |
| download | scummvm-rg350-415cefd702bbc36538ed8faeab609253fdbc0540.tar.gz scummvm-rg350-415cefd702bbc36538ed8faeab609253fdbc0540.tar.bz2 scummvm-rg350-415cefd702bbc36538ed8faeab609253fdbc0540.zip | |
DIRECTOR: Lingo: Added stubs for 'closeDA', 'closeResFile' and 'closeXlib'
| -rw-r--r-- | engines/director/lingo/lingo-builtins.cpp | 11 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-code.cpp | 20 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-gr.cpp | 883 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-gr.h | 66 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-gr.y | 16 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-lex.cpp | 519 | ||||
| -rw-r--r-- | engines/director/lingo/lingo-lex.l | 2 | ||||
| -rw-r--r-- | engines/director/lingo/lingo.h | 3 | 
8 files changed, 816 insertions, 704 deletions
| diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp index d4acc1a182..15716bf67e 100644 --- a/engines/director/lingo/lingo-builtins.cpp +++ b/engines/director/lingo/lingo-builtins.cpp @@ -48,9 +48,10 @@ static struct BuiltinProto {  	{ "length",	Lingo::b_length, 1 },  	{ "string",	Lingo::b_string, 1 },  	// Misc -	{ "dontpassevent", Lingo::b_dontpassevent, -1 }, -	{ "updatestage", Lingo::b_updatestage, -1 }, -	{ "ilk",	 Lingo::b_ilk, 1 }, +	{ "closeDA",	 	Lingo::b_closeDA, -1 }, +	{ "dontpassevent",	Lingo::b_dontpassevent, -1 }, +	{ "updatestage",	Lingo::b_updatestage, -1 }, +	{ "ilk",	 		Lingo::b_ilk, 1 },  	// point  	{ "point",	Lingo::b_point, 2 },  	{ 0, 0, 0 } @@ -239,6 +240,10 @@ void Lingo::b_ilk() {  	g_lingo->push(d);  } +void Lingo::b_closeDA() { +	warning("STUB: b_closeDA"); +} +  ///////////////////  // Point  /////////////////// diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index d529290b93..db5b013c00 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -698,6 +698,26 @@ void Lingo::c_alert() {  	delete d.u.s;  } +void Lingo::c_closeResFile() { +	Datum d = g_lingo->pop(); + +	d.toString(); + +	warning("STUB: c_closeResFile(%s)", d.u.s->c_str()); + +	delete d.u.s; +} + +void Lingo::c_closeXlib() { +	Datum d = g_lingo->pop(); + +	d.toString(); + +	warning("STUB: c_closeXlib(%s)", d.u.s->c_str()); + +	delete d.u.s; +} +  void Lingo::c_beep() {  	Datum d = g_lingo->pop();  	g_lingo->func_beep(d.u.i); diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index d776d4a32d..64dd7089df 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -114,21 +114,23 @@       tMETHOD = 303,       tALERT = 304,       tBEEP = 305, -     tGE = 306, -     tLE = 307, -     tGT = 308, -     tLT = 309, -     tEQ = 310, -     tNEQ = 311, -     tAND = 312, -     tOR = 313, -     tNOT = 314, -     tCONCAT = 315, -     tCONTAINS = 316, -     tSTARTS = 317, -     tSPRITE = 318, -     tINTERSECTS = 319, -     tWITHIN = 320 +     tCLOSERESFILE = 306, +     tCLOSEXLIB = 307, +     tGE = 308, +     tLE = 309, +     tGT = 310, +     tLT = 311, +     tEQ = 312, +     tNEQ = 313, +     tAND = 314, +     tOR = 315, +     tNOT = 316, +     tCONCAT = 317, +     tCONTAINS = 318, +     tSTARTS = 319, +     tSPRITE = 320, +     tINTERSECTS = 321, +     tWITHIN = 322     };  #endif  /* Tokens.  */ @@ -180,21 +182,23 @@  #define tMETHOD 303  #define tALERT 304  #define tBEEP 305 -#define tGE 306 -#define tLE 307 -#define tGT 308 -#define tLT 309 -#define tEQ 310 -#define tNEQ 311 -#define tAND 312 -#define tOR 313 -#define tNOT 314 -#define tCONCAT 315 -#define tCONTAINS 316 -#define tSTARTS 317 -#define tSPRITE 318 -#define tINTERSECTS 319 -#define tWITHIN 320 +#define tCLOSERESFILE 306 +#define tCLOSEXLIB 307 +#define tGE 308 +#define tLE 309 +#define tGT 310 +#define tLT 311 +#define tEQ 312 +#define tNEQ 313 +#define tAND 314 +#define tOR 315 +#define tNOT 316 +#define tCONCAT 317 +#define tCONTAINS 318 +#define tSTARTS 319 +#define tSPRITE 320 +#define tINTERSECTS 321 +#define tWITHIN 322 @@ -252,7 +256,7 @@ typedef union YYSTYPE  	Common::Array<double> *arr;  }  /* Line 193 of yacc.c.  */ -#line 256 "engines/director/lingo/lingo-gr.cpp" +#line 260 "engines/director/lingo/lingo-gr.cpp"  	YYSTYPE;  # define yystype YYSTYPE /* obsolescent; will be withdrawn */  # define YYSTYPE_IS_DECLARED 1 @@ -265,7 +269,7 @@ typedef union YYSTYPE  /* Line 216 of yacc.c.  */ -#line 269 "engines/director/lingo/lingo-gr.cpp" +#line 273 "engines/director/lingo/lingo-gr.cpp"  #ifdef short  # undef short @@ -478,22 +482,22 @@ union yyalloc  #endif  /* YYFINAL -- State number of the termination state.  */ -#define YYFINAL  81 +#define YYFINAL  85  /* YYLAST -- Last index in YYTABLE.  */ -#define YYLAST   785 +#define YYLAST   801  /* YYNTOKENS -- Number of terminals.  */ -#define YYNTOKENS  79 +#define YYNTOKENS  81  /* YYNNTS -- Number of nonterminals.  */  #define YYNNTS  34  /* YYNRULES -- Number of rules.  */ -#define YYNRULES  121 +#define YYNRULES  125  /* YYNRULES -- Number of states.  */ -#define YYNSTATES  258 +#define YYNSTATES  262  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */  #define YYUNDEFTOK  2 -#define YYMAXUTOK   320 +#define YYMAXUTOK   322  #define YYTRANSLATE(YYX)						\    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -502,12 +506,12 @@ union yyalloc  static const yytype_uint8 yytranslate[] =  {         0,     2,     2,     2,     2,     2,     2,     2,     2,     2, -      72,     2,     2,     2,     2,     2,     2,     2,     2,     2, +      74,     2,     2,     2,     2,     2,     2,     2,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2, -       2,     2,     2,     2,     2,     2,     2,    71,    77,     2, -      73,    74,    69,    67,    78,    68,     2,    70,     2,     2, +       2,     2,     2,     2,     2,     2,     2,    73,    79,     2, +      75,    76,    71,    69,    80,    70,     2,    72,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2, -      76,    66,    75,     2,     2,     2,     2,     2,     2,     2, +      78,    68,    77,     2,     2,     2,     2,     2,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2,         2,     2,     2,     2,     2,     2,     2,     2,     2,     2, @@ -533,7 +537,7 @@ static const yytype_uint8 yytranslate[] =        35,    36,    37,    38,    39,    40,    41,    42,    43,    44,        45,    46,    47,    48,    49,    50,    51,    52,    53,    54,        55,    56,    57,    58,    59,    60,    61,    62,    63,    64, -      65 +      65,    66,    67  };  #if YYDEBUG @@ -550,61 +554,62 @@ static const yytype_uint16 yyprhs[] =       246,   248,   251,   253,   257,   261,   265,   269,   273,   277,       281,   285,   289,   293,   297,   300,   304,   308,   312,   316,       319,   322,   326,   331,   336,   339,   342,   345,   347,   349, -     352,   355,   358,   360,   362,   366,   369,   372,   375,   378, -     382,   385,   389,   392,   395,   397,   401,   404,   408,   409, -     418,   421,   422,   431,   432,   434,   438,   443,   444,   448, -     449,   451 +     352,   355,   358,   360,   363,   365,   368,   370,   372,   376, +     379,   382,   385,   388,   392,   395,   399,   402,   405,   407, +     411,   414,   418,   419,   428,   431,   432,   441,   442,   444, +     448,   453,   454,   458,   459,   461  };  /* YYRHS -- A `-1'-separated list of the rules' RHS.  */  static const yytype_int8 yyrhs[] =  { -      80,     0,    -1,    80,    81,    82,    -1,    82,    -1,     1, -      72,    -1,    72,    -1,    -1,   106,    -1,   101,    -1,   111, -      -1,    83,    -1,    85,    -1,    38,   100,    29,    19,    -1, -      40,    19,    66,   100,    -1,    40,    12,    66,   100,    -1, -      40,    13,   100,    66,   100,    -1,    40,    19,    42,   100, -      -1,    40,    12,    42,   100,    -1,    40,    13,   100,    42, -     100,    -1,   100,    -1,   101,    -1,    84,    -1,    86,    -1, -      93,    73,    92,    74,    99,    98,    23,    39,    -1,    94, -      66,   100,    98,    42,   100,    98,    99,    98,    23,    39, -      -1,    94,    66,   100,    98,    20,    42,   100,    98,    99, -      98,    23,    39,    -1,    43,    19,    41,   100,    -1,    95, -      92,    41,    81,    99,    98,    23,    28,    -1,    95,    92, -      41,    81,    99,    98,    46,    99,    98,    23,    28,    -1, -      95,    92,    41,    81,    99,    98,    97,    88,    98,    23, -      28,    -1,    95,    92,    41,    97,    84,    98,    -1,    95, -      92,    41,    97,    84,    98,    46,    97,    84,    98,    -1, -      95,    92,    41,    97,    84,    98,    89,    98,    87,    98, -      -1,    -1,    46,    97,    84,    -1,    88,    91,    -1,    91, -      -1,    89,    90,    -1,    90,    -1,    96,    92,    41,    97, -      85,    98,    -1,    89,    -1,    96,    92,    41,    99,    98, -      -1,   100,    -1,   100,    66,   100,    -1,    73,    92,    74, +      82,     0,    -1,    82,    83,    84,    -1,    84,    -1,     1, +      74,    -1,    74,    -1,    -1,   108,    -1,   103,    -1,   113, +      -1,    85,    -1,    87,    -1,    38,   102,    29,    19,    -1, +      40,    19,    68,   102,    -1,    40,    12,    68,   102,    -1, +      40,    13,   102,    68,   102,    -1,    40,    19,    42,   102, +      -1,    40,    12,    42,   102,    -1,    40,    13,   102,    42, +     102,    -1,   102,    -1,   103,    -1,    86,    -1,    88,    -1, +      95,    75,    94,    76,   101,   100,    23,    39,    -1,    96, +      68,   102,   100,    42,   102,   100,   101,   100,    23,    39, +      -1,    96,    68,   102,   100,    20,    42,   102,   100,   101, +     100,    23,    39,    -1,    43,    19,    41,   102,    -1,    97, +      94,    41,    83,   101,   100,    23,    28,    -1,    97,    94, +      41,    83,   101,   100,    46,   101,   100,    23,    28,    -1, +      97,    94,    41,    83,   101,   100,    99,    90,   100,    23, +      28,    -1,    97,    94,    41,    99,    86,   100,    -1,    97, +      94,    41,    99,    86,   100,    46,    99,    86,   100,    -1, +      97,    94,    41,    99,    86,   100,    91,   100,    89,   100, +      -1,    -1,    46,    99,    86,    -1,    90,    93,    -1,    93, +      -1,    91,    92,    -1,    92,    -1,    98,    94,    41,    99, +      87,   100,    -1,    91,    -1,    98,    94,    41,   101,   100, +      -1,   102,    -1,   102,    68,   102,    -1,    75,    94,    76,        -1,    39,    45,    -1,    39,    44,    19,    -1,    28,    -1, -      22,    -1,    -1,    -1,    -1,    99,    81,    -1,    99,    85, +      22,    -1,    -1,    -1,    -1,   101,    83,    -1,   101,    87,        -1,    11,    -1,    14,    -1,    17,    -1,    16,    -1,    19, -      73,   112,    74,    -1,    19,    -1,    12,    -1,    13,   100, -      -1,    83,    -1,   100,    67,   100,    -1,   100,    68,   100, -      -1,   100,    69,   100,    -1,   100,    70,   100,    -1,   100, -      75,   100,    -1,   100,    76,   100,    -1,   100,    56,   100, -      -1,   100,    51,   100,    -1,   100,    52,   100,    -1,   100, -      57,   100,    -1,   100,    58,   100,    -1,    59,   100,    -1, -     100,    77,   100,    -1,   100,    60,   100,    -1,   100,    61, -     100,    -1,   100,    62,   100,    -1,    67,   100,    -1,    68, -     100,    -1,    73,   100,    74,    -1,    63,   100,    64,   100, -      -1,    63,   100,    65,   100,    -1,    32,    17,    -1,    33, -      19,    -1,    38,   100,    -1,   103,    -1,    24,    -1,    26, -     102,    -1,    49,   100,    -1,    50,    11,    -1,    50,    -1, -      19,    -1,   102,    78,    19,    -1,    27,    30,    -1,    27, -      35,    -1,    27,    37,    -1,    27,   104,    -1,    27,   104, -     105,    -1,    27,   105,    -1,    42,    25,    17,    -1,    25, +      75,   114,    76,    -1,    19,    -1,    12,    -1,    13,   102, +      -1,    85,    -1,   102,    69,   102,    -1,   102,    70,   102, +      -1,   102,    71,   102,    -1,   102,    72,   102,    -1,   102, +      77,   102,    -1,   102,    78,   102,    -1,   102,    58,   102, +      -1,   102,    53,   102,    -1,   102,    54,   102,    -1,   102, +      59,   102,    -1,   102,    60,   102,    -1,    61,   102,    -1, +     102,    79,   102,    -1,   102,    62,   102,    -1,   102,    63, +     102,    -1,   102,    64,   102,    -1,    69,   102,    -1,    70, +     102,    -1,    75,   102,    76,    -1,    65,   102,    66,   102, +      -1,    65,   102,    67,   102,    -1,    32,    17,    -1,    33, +      19,    -1,    38,   102,    -1,   105,    -1,    24,    -1,    26, +     104,    -1,    49,   102,    -1,    50,    11,    -1,    50,    -1, +      51,   102,    -1,    51,    -1,    52,   102,    -1,    52,    -1, +      19,    -1,   104,    80,    19,    -1,    27,    30,    -1,    27, +      35,    -1,    27,    37,    -1,    27,   106,    -1,    27,   106, +     107,    -1,    27,   107,    -1,    42,    25,    17,    -1,    25,        17,    -1,    42,    17,    -1,    17,    -1,    36,    34,    17,        -1,    34,    17,    -1,    42,    34,    17,    -1,    -1,    31, -      19,   107,    97,   109,    81,   110,    99,    -1,    47,    19, -      -1,    -1,    48,    19,   108,    97,   109,    81,   110,    99, -      -1,    -1,    19,    -1,   109,    78,    19,    -1,   109,    81, -      78,    19,    -1,    -1,    19,    97,   112,    -1,    -1,   100, -      -1,   112,    78,   100,    -1 +      19,   109,    99,   111,    83,   112,   101,    -1,    47,    19, +      -1,    -1,    48,    19,   110,    99,   111,    83,   112,   101, +      -1,    -1,    19,    -1,   111,    80,    19,    -1,   111,    83, +      80,    19,    -1,    -1,    19,    99,   114,    -1,    -1,   102, +      -1,   114,    80,   102,    -1  };  /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */ @@ -619,10 +624,10 @@ static const yytype_uint16 yyrline[] =       367,   374,   380,   381,   382,   383,   384,   385,   386,   387,       388,   389,   390,   391,   392,   393,   394,   395,   396,   397,       398,   399,   400,   401,   404,   405,   406,   407,   408,   410, -     411,   412,   418,   426,   427,   438,   439,   440,   441,   446, -     452,   459,   460,   461,   462,   465,   466,   467,   495,   495, -     501,   504,   504,   510,   511,   512,   513,   515,   519,   527, -     528,   529 +     411,   412,   418,   424,   425,   431,   432,   440,   441,   452, +     453,   454,   455,   460,   466,   473,   474,   475,   476,   479, +     480,   481,   509,   509,   515,   518,   518,   524,   525,   526, +     527,   529,   533,   541,   542,   543  };  #endif @@ -638,16 +643,16 @@ static const char *const yytname[] =    "tFRAME", "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP", "tMACRO", "tMCI",    "tMCIWAIT", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT",    "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE", -  "tFACTORY", "tMETHOD", "tALERT", "tBEEP", "tGE", "tLE", "tGT", "tLT", -  "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tCONCAT", "tCONTAINS", "tSTARTS", -  "tSPRITE", "tINTERSECTS", "tWITHIN", "'='", "'+'", "'-'", "'*'", "'/'", -  "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", "'&'", "','", "$accept", -  "program", "nl", "programline", "asgn", "stmtoneliner", "stmt", "ifstmt", -  "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner", -  "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile", -  "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "expr", "func", -  "globallist", "gotofunc", "gotoframe", "gotomovie", "defn", "@1", "@2", -  "argdef", "argstore", "macro", "arglist", 0 +  "tFACTORY", "tMETHOD", "tALERT", "tBEEP", "tCLOSERESFILE", "tCLOSEXLIB", +  "tGE", "tLE", "tGT", "tLT", "tEQ", "tNEQ", "tAND", "tOR", "tNOT", +  "tCONCAT", "tCONTAINS", "tSTARTS", "tSPRITE", "tINTERSECTS", "tWITHIN", +  "'='", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", +  "'<'", "'&'", "','", "$accept", "program", "nl", "programline", "asgn", +  "stmtoneliner", "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", +  "elseifstmtoneliner", "elseifstmtoneliner1", "elseifstmt1", "cond", +  "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist", +  "expr", "func", "globallist", "gotofunc", "gotoframe", "gotomovie", +  "defn", "@1", "@2", "argdef", "argstore", "macro", "arglist", 0  };  #endif @@ -662,27 +667,28 @@ static const yytype_uint16 yytoknum[] =       285,   286,   287,   288,   289,   290,   291,   292,   293,   294,       295,   296,   297,   298,   299,   300,   301,   302,   303,   304,       305,   306,   307,   308,   309,   310,   311,   312,   313,   314, -     315,   316,   317,   318,   319,   320,    61,    43,    45,    42, -      47,    37,    10,    40,    41,    62,    60,    38,    44 +     315,   316,   317,   318,   319,   320,   321,   322,    61,    43, +      45,    42,    47,    37,    10,    40,    41,    62,    60,    38, +      44  };  # endif  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */  static const yytype_uint8 yyr1[] =  { -       0,    79,    80,    80,    80,    81,    82,    82,    82,    82, -      82,    82,    83,    83,    83,    83,    83,    83,    83,    84, -      84,    85,    85,    85,    85,    85,    85,    86,    86,    86, -      86,    86,    86,    87,    87,    88,    88,    89,    89,    90, -      91,    91,    92,    92,    92,    93,    94,    95,    96,    97, -      98,    99,    99,    99,   100,   100,   100,   100,   100,   100, -     100,   100,   100,   100,   100,   100,   100,   100,   100,   100, -     100,   100,   100,   100,   100,   100,   100,   100,   100,   100, -     100,   100,   100,   100,   101,   101,   101,   101,   101,   101, -     101,   101,   101,   102,   102,   103,   103,   103,   103,   103, -     103,   104,   104,   104,   104,   105,   105,   105,   107,   106, -     106,   108,   106,   109,   109,   109,   109,   110,   111,   112, -     112,   112 +       0,    81,    82,    82,    82,    83,    84,    84,    84,    84, +      84,    84,    85,    85,    85,    85,    85,    85,    85,    86, +      86,    87,    87,    87,    87,    87,    87,    88,    88,    88, +      88,    88,    88,    89,    89,    90,    90,    91,    91,    92, +      93,    93,    94,    94,    94,    95,    96,    97,    98,    99, +     100,   101,   101,   101,   102,   102,   102,   102,   102,   102, +     102,   102,   102,   102,   102,   102,   102,   102,   102,   102, +     102,   102,   102,   102,   102,   102,   102,   102,   102,   102, +     102,   102,   102,   102,   103,   103,   103,   103,   103,   103, +     103,   103,   103,   103,   103,   103,   103,   104,   104,   105, +     105,   105,   105,   105,   105,   106,   106,   106,   106,   107, +     107,   107,   109,   108,   108,   110,   108,   111,   111,   111, +     111,   112,   113,   114,   114,   114  };  /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */ @@ -697,10 +703,10 @@ static const yytype_uint8 yyr2[] =         1,     2,     1,     3,     3,     3,     3,     3,     3,     3,         3,     3,     3,     3,     2,     3,     3,     3,     3,     2,         2,     3,     4,     4,     2,     2,     2,     1,     1,     2, -       2,     2,     1,     1,     3,     2,     2,     2,     2,     3, -       2,     3,     2,     2,     1,     3,     2,     3,     0,     8, -       2,     0,     8,     0,     1,     3,     4,     0,     3,     0, -       1,     3 +       2,     2,     1,     2,     1,     2,     1,     1,     3,     2, +       2,     2,     2,     3,     2,     3,     2,     2,     1,     3, +       2,     3,     0,     8,     2,     0,     8,     0,     1,     3, +       4,     0,     3,     0,     1,     3  };  /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -710,81 +716,83 @@ static const yytype_uint8 yydefact[] =  {         0,     0,    54,    60,     0,    55,    57,    56,    49,    88,         0,     0,    47,     0,     0,     0,     0,     0,     0,     0, -       0,     0,     0,    92,     0,     0,     0,     0,     0,     0, -       3,    62,    21,    11,    22,     0,     0,     0,    19,     8, -      87,     7,     9,     4,    59,     0,    62,    61,   119,   119, -      93,    89,   104,     0,    95,     0,    96,     0,    97,     0, -      98,   100,   108,    84,    85,    86,     0,    45,     0,     0, -       0,     0,   110,   111,    90,    91,    74,     0,    79,    80, -       0,     1,     5,     6,     0,     0,     0,     0,    42,     0, -       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, -       0,     0,     0,     0,     0,   120,     0,   118,     0,   102, -     106,     0,   103,     0,     0,     0,    99,    49,     0,    46, -       0,     0,     0,     0,     0,     0,    49,     0,     0,    81, -       2,     0,    50,     0,     0,    49,     0,    70,    71,    69, -      72,    73,    76,    77,    78,    63,    64,    65,    66,    67, -      68,    75,    58,     0,    94,   105,   101,   107,   113,    12, -      17,    14,     0,     0,    16,    13,    26,   113,    82,    83, -      51,     0,    44,    51,     0,    43,   121,   114,     0,    18, -      15,     0,    50,     0,     0,    50,    50,    20,     0,   117, -     117,    52,    53,     0,     0,    50,    49,    30,   115,     0, -      51,    51,     0,    50,    51,     0,    51,     0,    48,    49, -      50,    38,     0,   116,   109,   112,    23,    51,    50,    27, -      50,    50,    40,    36,     0,     0,    37,    33,     0,    50, -       0,     0,    35,     0,     0,    50,    49,    50,    49,     0, -       0,     0,     0,    49,    31,     0,    32,     0,     0,    24, -      28,    29,    50,    34,    50,    25,    41,    39 +       0,     0,     0,    92,    94,    96,     0,     0,     0,     0, +       0,     0,     3,    62,    21,    11,    22,     0,     0,     0, +      19,     8,    87,     7,     9,     4,    59,     0,    62,    61, +     123,   123,    97,    89,   108,     0,    99,     0,   100,     0, +     101,     0,   102,   104,   112,    84,    85,    86,     0,    45, +       0,     0,     0,     0,   114,   115,    90,    91,    93,    95, +      74,     0,    79,    80,     0,     1,     5,     6,     0,     0, +       0,     0,    42,     0,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,   124, +       0,   122,     0,   106,   110,     0,   107,     0,     0,     0, +     103,    49,     0,    46,     0,     0,     0,     0,     0,     0, +      49,     0,     0,    81,     2,     0,    50,     0,     0,    49, +       0,    70,    71,    69,    72,    73,    76,    77,    78,    63, +      64,    65,    66,    67,    68,    75,    58,     0,    98,   109, +     105,   111,   117,    12,    17,    14,     0,     0,    16,    13, +      26,   117,    82,    83,    51,     0,    44,    51,     0,    43, +     125,   118,     0,    18,    15,     0,    50,     0,     0,    50, +      50,    20,     0,   121,   121,    52,    53,     0,     0,    50, +      49,    30,   119,     0,    51,    51,     0,    50,    51,     0, +      51,     0,    48,    49,    50,    38,     0,   120,   113,   116, +      23,    51,    50,    27,    50,    50,    40,    36,     0,     0, +      37,    33,     0,    50,     0,     0,    35,     0,     0,    50, +      49,    50,    49,     0,     0,     0,     0,    49,    31,     0, +      32,     0,     0,    24,    28,    29,    50,    34,    50,    25, +      41,    39  };  /* YYDEFGOTO[NTERM-NUM].  */  static const yytype_int16 yydefgoto[] =  { -      -1,    29,   191,    30,    46,    32,   192,    34,   237,   221, -     222,   211,   223,    87,    35,    36,    37,   212,   247,   171, -     182,    38,   187,    51,    40,    60,    61,    41,   117,   126, -     178,   200,    42,   106 +      -1,    31,   195,    32,    48,    34,   196,    36,   241,   225, +     226,   215,   227,    91,    37,    38,    39,   216,   251,   175, +     186,    40,   191,    53,    42,    62,    63,    43,   121,   130, +     182,   204,    44,   110  };  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing     STATE-NUM.  */ -#define YYPACT_NINF -188 +#define YYPACT_NINF -192  static const yytype_int16 yypact[] =  { -     192,   -51,  -188,  -188,   500,  -188,  -188,  -188,   668,  -188, -      36,   743,  -188,    39,    47,    46,   500,   -13,    44,    48, -      49,    50,   500,    55,   500,   500,   500,   500,   500,     4, -    -188,     8,  -188,  -188,  -188,    -3,     6,   517,   646,  -188, -    -188,  -188,  -188,  -188,     1,   500,  -188,   646,   500,   500, -    -188,    -5,  -188,    58,  -188,    60,  -188,    45,  -188,    19, -      18,  -188,  -188,  -188,  -188,   531,    59,  -188,   -33,   500, -     -31,    41,  -188,  -188,   646,  -188,   284,   575,   284,   284, -     597,  -188,  -188,   280,   517,   500,   517,    43,   624,   500, -     500,   500,   500,   500,   500,   500,   500,   500,   500,   500, -     500,   500,   500,   500,   531,   646,   -29,    11,    88,  -188, -    -188,    92,  -188,    94,    95,    79,  -188,  -188,    96,  -188, -     500,   500,   553,   500,   500,   500,  -188,   500,   500,  -188, -    -188,    40,   646,    42,   101,    52,   500,   646,   646,   646, -     646,   646,   646,   646,   646,   695,   695,   284,   284,   646, -     646,   646,  -188,   500,  -188,  -188,  -188,  -188,    98,  -188, -     646,   646,   500,   500,   646,   646,   646,    98,   646,   646, -    -188,    -1,  -188,  -188,   459,   646,   646,  -188,   -56,   646, -     646,   -56,   338,    76,   500,   338,  -188,  -188,   102,    54, -      54,  -188,  -188,    97,   500,   646,    -6,    -8,  -188,   114, -    -188,  -188,   100,   646,  -188,   106,  -188,   113,  -188,  -188, -     113,  -188,   517,  -188,   338,   338,  -188,  -188,   338,  -188, -     338,   113,   113,  -188,   517,   459,  -188,    90,    99,   338, -     118,   119,  -188,   121,   104,  -188,  -188,  -188,  -188,   123, -     108,   109,   120,   -10,  -188,   459,  -188,   401,   110,  -188, -    -188,  -188,   338,  -188,  -188,  -188,  -188,  -188 +     196,   -57,  -192,  -192,   105,  -192,  -192,  -192,   695,  -192, +      26,   147,  -192,    28,     5,    31,   105,    14,    70,    49, +      56,    60,   105,     9,   105,   105,   105,   105,   105,   105, +     105,     3,  -192,     4,  -192,  -192,  -192,    13,    43,   530, +     226,  -192,  -192,  -192,  -192,  -192,    18,   105,  -192,   226, +     105,   105,  -192,    35,  -192,    77,  -192,    96,  -192,    91, +    -192,    29,    38,  -192,  -192,  -192,  -192,   544,   109,  -192, +     -34,   105,   -32,    95,  -192,  -192,   226,  -192,   226,   226, +       7,   597,     7,     7,   646,  -192,  -192,   302,   530,   105, +     530,    97,   673,   105,   105,   105,   105,   105,   105,   105, +     105,   105,   105,   105,   105,   105,   105,   105,   544,   226, +     -61,    57,   120,  -192,  -192,   123,  -192,   124,   127,   112, +    -192,  -192,   129,  -192,   105,   105,   575,   105,   105,   105, +    -192,   105,   105,  -192,  -192,    73,   226,    74,   619,    78, +     105,   226,   226,   226,   226,   226,   226,   226,   226,   722, +     722,     7,     7,   226,   226,   226,  -192,   105,  -192,  -192, +    -192,  -192,   132,  -192,   226,   226,   105,   105,   226,   226, +     226,   132,   226,   226,  -192,     1,  -192,  -192,   487,   226, +     226,  -192,   -23,   226,   226,   -23,   362,   113,   105,   362, +    -192,  -192,   135,    80,    80,  -192,  -192,   134,   105,   226, +      -9,    -6,  -192,   139,  -192,  -192,   122,   226,  -192,   137, +    -192,   140,  -192,  -192,   140,  -192,   530,  -192,   362,   362, +    -192,  -192,   362,  -192,   362,   140,   140,  -192,   530,   487, +    -192,   117,   126,   362,   148,   150,  -192,   153,   138,  -192, +    -192,  -192,  -192,   155,   146,   158,   159,   -10,  -192,   487, +    -192,   427,   149,  -192,  -192,  -192,   362,  -192,  -192,  -192, +    -192,  -192  };  /* YYPGOTO[NTERM-NUM].  */  static const yytype_int16 yypgoto[] =  { -    -188,  -188,   -27,    67,     7,  -164,     0,  -188,  -188,  -188, -     -41,  -185,   -61,   -81,  -188,  -188,  -188,  -187,    -7,    51, -    -158,     2,    23,  -188,  -188,  -188,   112,  -188,  -188,  -188, -      12,   -24,  -188,   124 +    -192,  -192,   -29,   104,    25,  -173,     0,  -192,  -192,  -192, +      -3,  -191,   -33,   -81,  -192,  -192,  -192,  -163,    -7,    69, +    -166,     2,    33,  -192,  -192,  -192,   133,  -192,  -192,  -192, +      23,     8,  -192,   152  };  /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If @@ -794,168 +802,172 @@ static const yytype_int16 yypgoto[] =  #define YYTABLE_NINF -60  static const yytype_int16 yytable[] =  { -      33,    49,    83,   131,    81,   133,    47,    31,   -10,   120, -     186,   123,   -51,   -51,   208,   185,    82,   205,    65,   183, -     224,    43,   188,    39,    74,   226,    76,    77,    78,    79, -      80,    66,    67,   121,   224,   124,   112,   226,   209,    88, -     206,   184,   214,   215,   113,   152,   218,   104,   220,   153, -     105,   105,    55,   114,    57,    50,    68,    69,    62,   229, -     115,   235,   -51,    70,    63,    64,    75,    71,    72,    73, -      84,   122,    85,   108,    48,   109,    82,   110,   119,   111, -     -10,   253,   125,    33,   135,   252,    88,   132,   134,   153, -      31,   137,   138,   139,   140,   141,   142,   143,   144,   145, -     146,   147,   148,   149,   150,   151,    39,   154,   173,   155, -     158,   156,   157,   114,   170,   159,   172,   177,   194,   167, -     202,   198,   160,   161,    82,   164,   165,   166,   174,   168, -     169,   228,   199,   213,   219,   208,   236,   250,   175,   216, -     238,   240,   241,   234,   242,   243,   248,   249,   251,   255, -     130,   189,    89,    90,   190,   176,   210,    91,    92,    93, -     232,    94,    95,    96,   179,   180,   201,   136,    97,    98, -      99,   100,   116,   107,     0,   129,   101,   102,   103,   181, -       0,     0,     0,     0,     0,     0,   195,     0,     0,   207, -       0,     0,    -6,     1,     0,     0,   203,     0,     0,     0, -       0,     0,   225,     2,     3,     4,     5,     0,     6,     7, -       0,     8,     0,     0,    88,     0,     9,     0,    10,    11, -      12,     0,     0,    13,    14,    15,    88,     0,     0,   245, -      16,    17,    18,   193,     0,    19,   196,   197,     0,    20, -      21,    22,    23,     0,     0,     0,   204,   254,     0,     0, -       0,    24,     0,     0,   217,    25,     0,     0,     0,    26, -      27,   227,     0,     0,    -6,    28,     0,     0,     0,   230, -       0,   231,   233,     0,     0,     0,     0,     0,     0,     0, -     239,     0,     0,     0,     0,     0,   244,     0,   246,     0, -       0,     2,     3,     4,     5,     0,     6,     7,     0,     8, -       0,     0,     0,   256,     9,   257,    10,    11,    12,     0, -       0,    13,    14,    15,     0,     0,     0,     0,    16,    17, -      18,     0,     0,    19,     0,     0,     0,    20,    21,    22, -      23,     0,     0,     0,     0,    89,    90,     0,     0,    24, -      91,    92,    93,    25,    94,    95,    96,    26,    27,     2, -       3,     4,     5,    28,     6,     7,     0,    44,     0,   101, -     102,   103,     9,     0,    10,    11,    12,     0,     0,     0, -      14,    15,     0,     0,     0,     0,    16,    17,    18,     0, -       0,    19,     0,     0,     0,     0,     0,    22,    23,     0, -       0,     0,     0,     0,     0,     0,     0,    24,     0,     0, -       0,    25,     0,     0,     0,    26,    27,     0,     0,     0, -      82,    28,     2,     3,     4,     5,     0,     6,     7,     0, -      44,     0,     0,     0,     0,     9,     0,    10,    11,    12, -       0,     0,     0,    14,    15,     0,     0,     0,     0,    16, -      17,    18,     0,     0,    19,     0,     0,     0,     0,     0, -      22,    23,     0,     0,     0,     0,     0,     0,     0,     0, -      24,     0,     0,     0,    25,     0,     0,     0,    26,    27, -       2,     3,     4,     5,    28,     6,     7,     0,    44,     0, -       0,     0,     0,     9,     0,    10,    11,     0,     0,     0, -       0,    14,    15,     0,     0,     0,     0,    16,     0,    18, -       0,     0,     0,     0,     0,     0,     0,     0,    22,    23, -       0,     2,     3,     4,     5,     0,     6,     7,    24,    44, -       0,     0,    25,     0,     0,     0,    26,    27,     2,     3, -       4,     5,    28,     6,     7,     0,    44,     0,    45,     0, -      18,     0,     0,     0,     0,     0,     0,     0,     0,     0, -       0,     0,     0,     0,     0,    45,     0,    18,     0,    24, -     118,     0,     0,    25,     0,     0,     0,    26,    27,     0, -       0,     0,     0,    28,     0,     0,    24,     0,     0,     0, -      25,     0,    89,    90,    26,    27,     0,    91,    92,    93, -      86,    94,    95,    96,     0,   162,     0,     0,    97,    98, -      99,   100,     0,     0,    89,    90,   101,   102,   103,    91, -      92,    93,     0,    94,    95,    96,     0,     0,     0,   163, -      97,    98,    99,   100,     0,     0,    89,    90,   101,   102, -     103,    91,    92,    93,     0,    94,    95,    96,     0,   127, -     128,     0,    97,    98,    99,   100,     0,     0,    89,    90, -     101,   102,   103,    91,    92,    93,     0,    94,    95,    96, -       0,     0,     0,     0,    97,    98,    99,   100,     0,     0, -       0,   129,   101,   102,   103,    89,    90,     0,     0,     0, -      91,    92,    93,     0,    94,    95,    96,     0,     0,     0, -     136,    97,    98,    99,   100,     0,     0,    89,    90,   101, -     102,   103,    91,    92,    93,     0,    94,    95,    96,     0, -       0,     0,     0,    97,    98,    99,   100,     0,     0,   -59, -     -59,   101,   102,   103,   -59,   -59,   -59,     0,   -59,   -59, -     -59,     0,     0,     0,     0,     0,     0,   -59,   -59,     0, -       0,    48,     0,   -59,   -59,   -59,    89,    90,     0,     0, -       0,    91,    92,    93,     0,    94,    95,    96,     0,     0, -      52,     0,     0,     0,    99,   100,     0,     0,    53,     0, -     101,   102,   103,    54,     0,     0,     0,    55,    56,    57, -      58,     0,     0,     0,     0,    59 +      35,    51,    87,    85,   -10,   190,    49,   135,   124,   137, +     127,   189,   -51,   -51,   209,   156,   212,    45,    67,   157, +      77,   187,    65,   230,    76,    33,    78,    79,    80,    81, +      82,    83,    84,    41,   125,   230,   128,   210,   218,   219, +     213,    92,   222,   188,   224,    52,   116,    64,   228,   108, +      66,    86,   109,   109,   117,   233,   239,   192,    68,    69, +      93,    94,   228,   118,   -51,    95,    96,    97,    73,    98, +      99,   100,    57,   126,    59,    74,   257,    86,   -10,    75, +     119,   256,    70,    71,   105,   106,   107,    35,    88,    72, +      92,   136,   138,    50,   113,   141,   142,   143,   144,   145, +     146,   147,   148,   149,   150,   151,   152,   153,   154,   155, +     177,    89,    33,   114,   162,   112,     2,     3,     4,     5, +      41,     6,     7,   171,    46,   115,   164,   165,   123,   168, +     169,   170,   178,   172,   173,   232,   129,   157,   139,   158, +     159,   160,   179,    47,   161,    18,   118,   238,   163,   174, +     176,   181,    86,   193,   202,   198,   194,   206,   217,   180, +     203,   220,   212,   240,    54,   223,    26,   242,   183,   184, +      27,   244,    55,   245,    28,    29,   246,    56,   252,   247, +      30,    57,    58,    59,    60,   253,   254,   255,   259,    61, +     199,   134,   236,   211,   185,   120,    -6,     1,   214,     0, +     207,     0,   205,   111,     0,     0,   229,     2,     3,     4, +       5,     0,     6,     7,     0,     8,     0,     0,    92,     0, +       9,     0,    10,    11,    12,     0,     0,    13,    14,    15, +      92,     0,     0,   249,    16,    17,    18,     0,     0,    19, +       0,     0,     0,    20,    21,    22,    23,    24,    25,     0, +       0,   258,     0,     0,     0,   197,     0,    26,   200,   201, +       0,    27,     0,     0,     0,    28,    29,     0,   208,     0, +      -6,    30,     0,     0,     0,     0,   221,     0,     0,    93, +      94,     0,     0,   231,    95,    96,    97,     0,    98,    99, +     100,   234,     0,   235,   237,   101,   102,   103,   104,     0, +       0,     0,   243,   105,   106,   107,     0,     0,   248,     0, +     250,     0,     0,     2,     3,     4,     5,     0,     6,     7, +       0,     8,     0,     0,     0,   260,     9,   261,    10,    11, +      12,     0,     0,    13,    14,    15,     0,     0,     0,     0, +      16,    17,    18,     0,     0,    19,     0,     0,     0,    20, +      21,    22,    23,    24,    25,     0,     0,     0,     0,     0, +       0,     0,     0,    26,     0,     0,     0,    27,     0,     0, +       0,    28,    29,     2,     3,     4,     5,    30,     6,     7, +       0,    46,     0,     0,     0,     0,     9,     0,    10,    11, +      12,     0,     0,     0,    14,    15,     0,     0,     0,     0, +      16,    17,    18,     0,     0,    19,     0,     0,     0,     0, +       0,    22,    23,    24,    25,     0,     0,     0,     0,     0, +       0,     0,     0,    26,     0,     0,     0,    27,     0,     0, +       0,    28,    29,     0,     0,     0,    86,    30,     2,     3, +       4,     5,     0,     6,     7,     0,    46,     0,     0,     0, +       0,     9,     0,    10,    11,    12,     0,     0,     0,    14, +      15,     0,     0,     0,     0,    16,    17,    18,     0,     0, +      19,     0,     0,     0,     0,     0,    22,    23,    24,    25, +       0,     0,     0,     0,     0,     0,     0,     0,    26,     0, +       0,     0,    27,     0,     0,     0,    28,    29,     2,     3, +       4,     5,    30,     6,     7,     0,    46,     0,     0,     0, +       0,     9,     0,    10,    11,     0,     0,     0,     0,    14, +      15,     0,     0,     0,     0,    16,     0,    18,     0,     0, +       0,     0,     0,     0,     0,     0,    22,    23,    24,    25, +       0,     2,     3,     4,     5,     0,     6,     7,    26,    46, +       0,     0,    27,     0,     0,     0,    28,    29,     0,     0, +       0,     0,    30,     0,     0,     0,     0,     0,    47,     0, +      18,     0,     0,   122,     0,     0,     0,     0,     0,     0, +       0,     0,     0,     0,     0,     0,     0,     0,     0,     0, +       0,    26,     0,     0,     0,    27,     0,    93,    94,    28, +      29,     0,    95,    96,    97,    90,    98,    99,   100,     0, +       0,     0,     0,   101,   102,   103,   104,   166,     0,     0, +       0,   105,   106,   107,     0,     0,     0,     0,    93,    94, +       0,     0,     0,    95,    96,    97,     0,    98,    99,   100, +       0,     0,     0,   167,   101,   102,   103,   104,     0,     0, +      93,    94,   105,   106,   107,    95,    96,    97,     0,    98, +      99,   100,     0,   131,   132,     0,   101,   102,   103,   104, +       0,     0,    93,    94,   105,   106,   107,    95,    96,    97, +       0,    98,    99,   100,     0,     0,     0,   140,   101,   102, +     103,   104,     0,     0,     0,   133,   105,   106,   107,    93, +      94,     0,     0,     0,    95,    96,    97,     0,    98,    99, +     100,     0,     0,     0,     0,   101,   102,   103,   104,     0, +       0,     0,   133,   105,   106,   107,    93,    94,     0,     0, +       0,    95,    96,    97,     0,    98,    99,   100,     0,     0, +       0,   140,   101,   102,   103,   104,     0,     0,   -59,   -59, +     105,   106,   107,   -59,   -59,   -59,     0,   -59,   -59,   -59, +       0,     0,     0,     0,     0,     0,   -59,   -59,     0,     0, +      50,     0,   -59,   -59,   -59,    93,    94,     0,     0,     0, +      95,    96,    97,     0,    98,    99,   100,     0,     0,     0, +       0,     0,     0,   103,   104,     0,     0,     0,     0,   105, +     106,   107  };  static const yytype_int16 yycheck[] =  { -       0,     8,    29,    84,     0,    86,     4,     0,     0,    42, -     174,    42,    22,    23,    22,   173,    72,    23,    16,    20, -     207,    72,    78,     0,    22,   210,    24,    25,    26,    27, -      28,    44,    45,    66,   221,    66,    17,   222,    46,    37, -      46,    42,   200,   201,    25,    74,   204,    45,   206,    78, -      48,    49,    34,    34,    36,    19,    12,    13,    19,   217, -      42,   225,    72,    19,    17,    19,    11,    19,    19,    19, -      73,    69,    66,    78,    73,    17,    72,    17,    19,    34, -      72,   245,    41,    83,    41,   243,    84,    85,    86,    78, -      83,    89,    90,    91,    92,    93,    94,    95,    96,    97, -      98,    99,   100,   101,   102,   103,    83,    19,   135,    17, -     117,    17,    17,    34,    74,    19,    74,    19,    42,   126, -      23,    19,   120,   121,    72,   123,   124,   125,   135,   127, -     128,   212,    78,    19,    28,    22,    46,    28,   136,    39, -      41,    23,    23,   224,    23,    41,    23,    39,    28,    39, -      83,   178,    51,    52,   181,   153,   197,    56,    57,    58, -     221,    60,    61,    62,   162,   163,   190,    66,    67,    68, -      69,    70,    60,    49,    -1,    74,    75,    76,    77,   167, -      -1,    -1,    -1,    -1,    -1,    -1,   184,    -1,    -1,   196, -      -1,    -1,     0,     1,    -1,    -1,   194,    -1,    -1,    -1, -      -1,    -1,   209,    11,    12,    13,    14,    -1,    16,    17, -      -1,    19,    -1,    -1,   212,    -1,    24,    -1,    26,    27, -      28,    -1,    -1,    31,    32,    33,   224,    -1,    -1,   236, -      38,    39,    40,   182,    -1,    43,   185,   186,    -1,    47, -      48,    49,    50,    -1,    -1,    -1,   195,   247,    -1,    -1, -      -1,    59,    -1,    -1,   203,    63,    -1,    -1,    -1,    67, -      68,   210,    -1,    -1,    72,    73,    -1,    -1,    -1,   218, -      -1,   220,   221,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -     229,    -1,    -1,    -1,    -1,    -1,   235,    -1,   237,    -1, -      -1,    11,    12,    13,    14,    -1,    16,    17,    -1,    19, -      -1,    -1,    -1,   252,    24,   254,    26,    27,    28,    -1, -      -1,    31,    32,    33,    -1,    -1,    -1,    -1,    38,    39, -      40,    -1,    -1,    43,    -1,    -1,    -1,    47,    48,    49, -      50,    -1,    -1,    -1,    -1,    51,    52,    -1,    -1,    59, -      56,    57,    58,    63,    60,    61,    62,    67,    68,    11, -      12,    13,    14,    73,    16,    17,    -1,    19,    -1,    75, -      76,    77,    24,    -1,    26,    27,    28,    -1,    -1,    -1, -      32,    33,    -1,    -1,    -1,    -1,    38,    39,    40,    -1, -      -1,    43,    -1,    -1,    -1,    -1,    -1,    49,    50,    -1, -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    -1, -      -1,    63,    -1,    -1,    -1,    67,    68,    -1,    -1,    -1, -      72,    73,    11,    12,    13,    14,    -1,    16,    17,    -1, -      19,    -1,    -1,    -1,    -1,    24,    -1,    26,    27,    28, -      -1,    -1,    -1,    32,    33,    -1,    -1,    -1,    -1,    38, -      39,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1,    -1, -      49,    50,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -      59,    -1,    -1,    -1,    63,    -1,    -1,    -1,    67,    68, -      11,    12,    13,    14,    73,    16,    17,    -1,    19,    -1, -      -1,    -1,    -1,    24,    -1,    26,    27,    -1,    -1,    -1, -      -1,    32,    33,    -1,    -1,    -1,    -1,    38,    -1,    40, -      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,    50, -      -1,    11,    12,    13,    14,    -1,    16,    17,    59,    19, -      -1,    -1,    63,    -1,    -1,    -1,    67,    68,    11,    12, -      13,    14,    73,    16,    17,    -1,    19,    -1,    38,    -1, -      40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, -      -1,    -1,    -1,    -1,    -1,    38,    -1,    40,    -1,    59, -      29,    -1,    -1,    63,    -1,    -1,    -1,    67,    68,    -1, -      -1,    -1,    -1,    73,    -1,    -1,    59,    -1,    -1,    -1, -      63,    -1,    51,    52,    67,    68,    -1,    56,    57,    58, -      73,    60,    61,    62,    -1,    42,    -1,    -1,    67,    68, -      69,    70,    -1,    -1,    51,    52,    75,    76,    77,    56, -      57,    58,    -1,    60,    61,    62,    -1,    -1,    -1,    66, -      67,    68,    69,    70,    -1,    -1,    51,    52,    75,    76, -      77,    56,    57,    58,    -1,    60,    61,    62,    -1,    64, -      65,    -1,    67,    68,    69,    70,    -1,    -1,    51,    52, -      75,    76,    77,    56,    57,    58,    -1,    60,    61,    62, -      -1,    -1,    -1,    -1,    67,    68,    69,    70,    -1,    -1, -      -1,    74,    75,    76,    77,    51,    52,    -1,    -1,    -1, -      56,    57,    58,    -1,    60,    61,    62,    -1,    -1,    -1, -      66,    67,    68,    69,    70,    -1,    -1,    51,    52,    75, -      76,    77,    56,    57,    58,    -1,    60,    61,    62,    -1, -      -1,    -1,    -1,    67,    68,    69,    70,    -1,    -1,    51, -      52,    75,    76,    77,    56,    57,    58,    -1,    60,    61, -      62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1, -      -1,    73,    -1,    75,    76,    77,    51,    52,    -1,    -1, -      -1,    56,    57,    58,    -1,    60,    61,    62,    -1,    -1, -      17,    -1,    -1,    -1,    69,    70,    -1,    -1,    25,    -1, -      75,    76,    77,    30,    -1,    -1,    -1,    34,    35,    36, -      37,    -1,    -1,    -1,    -1,    42 +       0,     8,    31,     0,     0,   178,     4,    88,    42,    90, +      42,   177,    22,    23,    23,    76,    22,    74,    16,    80, +      11,    20,    17,   214,    22,     0,    24,    25,    26,    27, +      28,    29,    30,     0,    68,   226,    68,    46,   204,   205, +      46,    39,   208,    42,   210,    19,    17,    19,   211,    47, +      19,    74,    50,    51,    25,   221,   229,    80,    44,    45, +      53,    54,   225,    34,    74,    58,    59,    60,    19,    62, +      63,    64,    34,    71,    36,    19,   249,    74,    74,    19, +      42,   247,    12,    13,    77,    78,    79,    87,    75,    19, +      88,    89,    90,    75,    17,    93,    94,    95,    96,    97, +      98,    99,   100,   101,   102,   103,   104,   105,   106,   107, +     139,    68,    87,    17,   121,    80,    11,    12,    13,    14, +      87,    16,    17,   130,    19,    34,   124,   125,    19,   127, +     128,   129,   139,   131,   132,   216,    41,    80,    41,    19, +      17,    17,   140,    38,    17,    40,    34,   228,    19,    76, +      76,    19,    74,   182,    19,    42,   185,    23,    19,   157, +      80,    39,    22,    46,    17,    28,    61,    41,   166,   167, +      65,    23,    25,    23,    69,    70,    23,    30,    23,    41, +      75,    34,    35,    36,    37,    39,    28,    28,    39,    42, +     188,    87,   225,   200,   171,    62,     0,     1,   201,    -1, +     198,    -1,   194,    51,    -1,    -1,   213,    11,    12,    13, +      14,    -1,    16,    17,    -1,    19,    -1,    -1,   216,    -1, +      24,    -1,    26,    27,    28,    -1,    -1,    31,    32,    33, +     228,    -1,    -1,   240,    38,    39,    40,    -1,    -1,    43, +      -1,    -1,    -1,    47,    48,    49,    50,    51,    52,    -1, +      -1,   251,    -1,    -1,    -1,   186,    -1,    61,   189,   190, +      -1,    65,    -1,    -1,    -1,    69,    70,    -1,   199,    -1, +      74,    75,    -1,    -1,    -1,    -1,   207,    -1,    -1,    53, +      54,    -1,    -1,   214,    58,    59,    60,    -1,    62,    63, +      64,   222,    -1,   224,   225,    69,    70,    71,    72,    -1, +      -1,    -1,   233,    77,    78,    79,    -1,    -1,   239,    -1, +     241,    -1,    -1,    11,    12,    13,    14,    -1,    16,    17, +      -1,    19,    -1,    -1,    -1,   256,    24,   258,    26,    27, +      28,    -1,    -1,    31,    32,    33,    -1,    -1,    -1,    -1, +      38,    39,    40,    -1,    -1,    43,    -1,    -1,    -1,    47, +      48,    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    61,    -1,    -1,    -1,    65,    -1,    -1, +      -1,    69,    70,    11,    12,    13,    14,    75,    16,    17, +      -1,    19,    -1,    -1,    -1,    -1,    24,    -1,    26,    27, +      28,    -1,    -1,    -1,    32,    33,    -1,    -1,    -1,    -1, +      38,    39,    40,    -1,    -1,    43,    -1,    -1,    -1,    -1, +      -1,    49,    50,    51,    52,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    61,    -1,    -1,    -1,    65,    -1,    -1, +      -1,    69,    70,    -1,    -1,    -1,    74,    75,    11,    12, +      13,    14,    -1,    16,    17,    -1,    19,    -1,    -1,    -1, +      -1,    24,    -1,    26,    27,    28,    -1,    -1,    -1,    32, +      33,    -1,    -1,    -1,    -1,    38,    39,    40,    -1,    -1, +      43,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,    52, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,    -1, +      -1,    -1,    65,    -1,    -1,    -1,    69,    70,    11,    12, +      13,    14,    75,    16,    17,    -1,    19,    -1,    -1,    -1, +      -1,    24,    -1,    26,    27,    -1,    -1,    -1,    -1,    32, +      33,    -1,    -1,    -1,    -1,    38,    -1,    40,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    49,    50,    51,    52, +      -1,    11,    12,    13,    14,    -1,    16,    17,    61,    19, +      -1,    -1,    65,    -1,    -1,    -1,    69,    70,    -1,    -1, +      -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    38,    -1, +      40,    -1,    -1,    29,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1, +      -1,    61,    -1,    -1,    -1,    65,    -1,    53,    54,    69, +      70,    -1,    58,    59,    60,    75,    62,    63,    64,    -1, +      -1,    -1,    -1,    69,    70,    71,    72,    42,    -1,    -1, +      -1,    77,    78,    79,    -1,    -1,    -1,    -1,    53,    54, +      -1,    -1,    -1,    58,    59,    60,    -1,    62,    63,    64, +      -1,    -1,    -1,    68,    69,    70,    71,    72,    -1,    -1, +      53,    54,    77,    78,    79,    58,    59,    60,    -1,    62, +      63,    64,    -1,    66,    67,    -1,    69,    70,    71,    72, +      -1,    -1,    53,    54,    77,    78,    79,    58,    59,    60, +      -1,    62,    63,    64,    -1,    -1,    -1,    68,    69,    70, +      71,    72,    -1,    -1,    -1,    76,    77,    78,    79,    53, +      54,    -1,    -1,    -1,    58,    59,    60,    -1,    62,    63, +      64,    -1,    -1,    -1,    -1,    69,    70,    71,    72,    -1, +      -1,    -1,    76,    77,    78,    79,    53,    54,    -1,    -1, +      -1,    58,    59,    60,    -1,    62,    63,    64,    -1,    -1, +      -1,    68,    69,    70,    71,    72,    -1,    -1,    53,    54, +      77,    78,    79,    58,    59,    60,    -1,    62,    63,    64, +      -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    -1,    -1, +      75,    -1,    77,    78,    79,    53,    54,    -1,    -1,    -1, +      58,    59,    60,    -1,    62,    63,    64,    -1,    -1,    -1, +      -1,    -1,    -1,    71,    72,    -1,    -1,    -1,    -1,    77, +      78,    79  };  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -964,30 +976,31 @@ static const yytype_uint8 yystos[] =  {         0,     1,    11,    12,    13,    14,    16,    17,    19,    24,        26,    27,    28,    31,    32,    33,    38,    39,    40,    43, -      47,    48,    49,    50,    59,    63,    67,    68,    73,    80, -      82,    83,    84,    85,    86,    93,    94,    95,   100,   101, -     103,   106,   111,    72,    19,    38,    83,   100,    73,    97, -      19,   102,    17,    25,    30,    34,    35,    36,    37,    42, -     104,   105,    19,    17,    19,   100,    44,    45,    12,    13, -      19,    19,    19,    19,   100,    11,   100,   100,   100,   100, -     100,     0,    72,    81,    73,    66,    73,    92,   100,    51, -      52,    56,    57,    58,    60,    61,    62,    67,    68,    69, -      70,    75,    76,    77,   100,   100,   112,   112,    78,    17, -      17,    34,    17,    25,    34,    42,   105,   107,    29,    19, -      42,    66,   100,    42,    66,    41,   108,    64,    65,    74, -      82,    92,   100,    92,   100,    41,    66,   100,   100,   100, -     100,   100,   100,   100,   100,   100,   100,   100,   100,   100, -     100,   100,    74,    78,    19,    17,    17,    17,    97,    19, -     100,   100,    42,    66,   100,   100,   100,    97,   100,   100, -      74,    98,    74,    81,    97,   100,   100,    19,   109,   100, -     100,   109,    99,    20,    42,    99,    84,   101,    78,    81, -      81,    81,    85,    98,    42,   100,    98,    98,    19,    78, -     110,   110,    23,   100,    98,    23,    46,    97,    22,    46, -      89,    90,    96,    19,    99,    99,    39,    98,    99,    28, -      99,    88,    89,    91,    96,    97,    90,    98,    92,    99, -      98,    98,    91,    98,    92,    84,    46,    87,    41,    98, -      23,    23,    23,    41,    98,    97,    98,    97,    23,    39, -      28,    28,    99,    84,    85,    39,    98,    98 +      47,    48,    49,    50,    51,    52,    61,    65,    69,    70, +      75,    82,    84,    85,    86,    87,    88,    95,    96,    97, +     102,   103,   105,   108,   113,    74,    19,    38,    85,   102, +      75,    99,    19,   104,    17,    25,    30,    34,    35,    36, +      37,    42,   106,   107,    19,    17,    19,   102,    44,    45, +      12,    13,    19,    19,    19,    19,   102,    11,   102,   102, +     102,   102,   102,   102,   102,     0,    74,    83,    75,    68, +      75,    94,   102,    53,    54,    58,    59,    60,    62,    63, +      64,    69,    70,    71,    72,    77,    78,    79,   102,   102, +     114,   114,    80,    17,    17,    34,    17,    25,    34,    42, +     107,   109,    29,    19,    42,    68,   102,    42,    68,    41, +     110,    66,    67,    76,    84,    94,   102,    94,   102,    41, +      68,   102,   102,   102,   102,   102,   102,   102,   102,   102, +     102,   102,   102,   102,   102,   102,    76,    80,    19,    17, +      17,    17,    99,    19,   102,   102,    42,    68,   102,   102, +     102,    99,   102,   102,    76,   100,    76,    83,    99,   102, +     102,    19,   111,   102,   102,   111,   101,    20,    42,   101, +      86,   103,    80,    83,    83,    83,    87,   100,    42,   102, +     100,   100,    19,    80,   112,   112,    23,   102,   100,    23, +      46,    99,    22,    46,    91,    92,    98,    19,   101,   101, +      39,   100,   101,    28,   101,    90,    91,    93,    98,    99, +      92,   100,    94,   101,   100,   100,    93,   100,    94,    86, +      46,    89,    41,   100,    23,    23,    23,    41,   100,    99, +     100,    99,    23,    39,    28,    28,   101,    86,    87,    39, +     100,   100  };  #define yyerrok		(yyerrstatus = 0) @@ -2337,32 +2350,62 @@ yyreduce:      break;    case 93: -#line 426 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} +#line 424 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_closeResFile); ;}      break;    case 94: -#line 427 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} +#line 425 "engines/director/lingo/lingo-gr.y" +    { +		g_lingo->code1(g_lingo->c_constpush); +		inst i = 0; +		WRITE_UINT32(&i, 0); +		g_lingo->code1(i); +		g_lingo->code1(g_lingo->c_closeResFile); ;}      break;    case 95: -#line 438 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_gotoloop); ;} +#line 431 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_closeXlib); ;}      break;    case 96: -#line 439 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_gotonext); ;} +#line 432 "engines/director/lingo/lingo-gr.y" +    { +		g_lingo->code1(g_lingo->c_constpush); +		inst i = 0; +		WRITE_UINT32(&i, 0); +		g_lingo->code1(i); +		g_lingo->code1(g_lingo->c_closeXlib); ;}      break;    case 97:  #line 440 "engines/director/lingo/lingo-gr.y" -    { g_lingo->code1(g_lingo->c_gotoprevious); ;} +    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}      break;    case 98:  #line 441 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} +    break; + +  case 99: +#line 452 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_gotoloop); ;} +    break; + +  case 100: +#line 453 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_gotonext); ;} +    break; + +  case 101: +#line 454 "engines/director/lingo/lingo-gr.y" +    { g_lingo->code1(g_lingo->c_gotoprevious); ;} +    break; + +  case 102: +#line 455 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->c_goto);  		g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str()); @@ -2370,8 +2413,8 @@ yyreduce:  		delete (yyvsp[(2) - (2)].s); ;}      break; -  case 99: -#line 446 "engines/director/lingo/lingo-gr.y" +  case 103: +#line 460 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->c_goto);  		g_lingo->codeString((yyvsp[(2) - (3)].s)->c_str()); @@ -2380,8 +2423,8 @@ yyreduce:  		delete (yyvsp[(3) - (3)].s); ;}      break; -  case 100: -#line 452 "engines/director/lingo/lingo-gr.y" +  case 104: +#line 466 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->c_goto);  		g_lingo->codeString(""); @@ -2389,48 +2432,48 @@ yyreduce:  		delete (yyvsp[(2) - (2)].s); ;}      break; -  case 101: -#line 459 "engines/director/lingo/lingo-gr.y" +  case 105: +#line 473 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(3) - (3)].s); ;}      break; -  case 102: -#line 460 "engines/director/lingo/lingo-gr.y" +  case 106: +#line 474 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(2) - (2)].s); ;}      break; -  case 103: -#line 461 "engines/director/lingo/lingo-gr.y" +  case 107: +#line 475 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(2) - (2)].s); ;}      break; -  case 104: -#line 462 "engines/director/lingo/lingo-gr.y" +  case 108: +#line 476 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(1) - (1)].s); ;}      break; -  case 105: -#line 465 "engines/director/lingo/lingo-gr.y" +  case 109: +#line 479 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(3) - (3)].s); ;}      break; -  case 106: -#line 466 "engines/director/lingo/lingo-gr.y" +  case 110: +#line 480 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(2) - (2)].s); ;}      break; -  case 107: -#line 467 "engines/director/lingo/lingo-gr.y" +  case 111: +#line 481 "engines/director/lingo/lingo-gr.y"      { (yyval.s) = (yyvsp[(3) - (3)].s); ;}      break; -  case 108: -#line 495 "engines/director/lingo/lingo-gr.y" +  case 112: +#line 509 "engines/director/lingo/lingo-gr.y"      { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}      break; -  case 109: -#line 496 "engines/director/lingo/lingo-gr.y" +  case 113: +#line 510 "engines/director/lingo/lingo-gr.y"      {  			g_lingo->code2(g_lingo->c_constpush, (inst)0); // Push fake value on stack  			g_lingo->code1(g_lingo->c_procret); @@ -2438,20 +2481,20 @@ yyreduce:  			g_lingo->_indef = false; ;}      break; -  case 110: -#line 501 "engines/director/lingo/lingo-gr.y" +  case 114: +#line 515 "engines/director/lingo/lingo-gr.y"      {  			g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));  		;}      break; -  case 111: -#line 504 "engines/director/lingo/lingo-gr.y" +  case 115: +#line 518 "engines/director/lingo/lingo-gr.y"      { g_lingo->_indef = true; ;}      break; -  case 112: -#line 505 "engines/director/lingo/lingo-gr.y" +  case 116: +#line 519 "engines/director/lingo/lingo-gr.y"      {  			g_lingo->code2(g_lingo->c_constpush, (inst)0); // Push fake value on stack  			g_lingo->code1(g_lingo->c_procret); @@ -2459,33 +2502,33 @@ yyreduce:  			g_lingo->_indef = false; ;}      break; -  case 113: -#line 510 "engines/director/lingo/lingo-gr.y" +  case 117: +#line 524 "engines/director/lingo/lingo-gr.y"      { (yyval.narg) = 0; ;}      break; -  case 114: -#line 511 "engines/director/lingo/lingo-gr.y" +  case 118: +#line 525 "engines/director/lingo/lingo-gr.y"      { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}      break; -  case 115: -#line 512 "engines/director/lingo/lingo-gr.y" +  case 119: +#line 526 "engines/director/lingo/lingo-gr.y"      { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}      break; -  case 116: -#line 513 "engines/director/lingo/lingo-gr.y" +  case 120: +#line 527 "engines/director/lingo/lingo-gr.y"      { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}      break; -  case 117: -#line 515 "engines/director/lingo/lingo-gr.y" +  case 121: +#line 529 "engines/director/lingo/lingo-gr.y"      { g_lingo->codeArgStore(); ;}      break; -  case 118: -#line 519 "engines/director/lingo/lingo-gr.y" +  case 122: +#line 533 "engines/director/lingo/lingo-gr.y"      {  		g_lingo->code1(g_lingo->c_call);  		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str()); @@ -2494,24 +2537,24 @@ yyreduce:  		g_lingo->code1(numpar); ;}      break; -  case 119: -#line 527 "engines/director/lingo/lingo-gr.y" +  case 123: +#line 541 "engines/director/lingo/lingo-gr.y"      { (yyval.narg) = 0; ;}      break; -  case 120: -#line 528 "engines/director/lingo/lingo-gr.y" +  case 124: +#line 542 "engines/director/lingo/lingo-gr.y"      { (yyval.narg) = 1; ;}      break; -  case 121: -#line 529 "engines/director/lingo/lingo-gr.y" +  case 125: +#line 543 "engines/director/lingo/lingo-gr.y"      { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}      break;  /* Line 1267 of yacc.c.  */ -#line 2515 "engines/director/lingo/lingo-gr.cpp" +#line 2558 "engines/director/lingo/lingo-gr.cpp"        default: break;      }    YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2725,6 +2768,6 @@ yyreturn:  } -#line 532 "engines/director/lingo/lingo-gr.y" +#line 546 "engines/director/lingo/lingo-gr.y" diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h index bca98cb552..539db6389e 100644 --- a/engines/director/lingo/lingo-gr.h +++ b/engines/director/lingo/lingo-gr.h @@ -87,21 +87,23 @@       tMETHOD = 303,       tALERT = 304,       tBEEP = 305, -     tGE = 306, -     tLE = 307, -     tGT = 308, -     tLT = 309, -     tEQ = 310, -     tNEQ = 311, -     tAND = 312, -     tOR = 313, -     tNOT = 314, -     tCONCAT = 315, -     tCONTAINS = 316, -     tSTARTS = 317, -     tSPRITE = 318, -     tINTERSECTS = 319, -     tWITHIN = 320 +     tCLOSERESFILE = 306, +     tCLOSEXLIB = 307, +     tGE = 308, +     tLE = 309, +     tGT = 310, +     tLT = 311, +     tEQ = 312, +     tNEQ = 313, +     tAND = 314, +     tOR = 315, +     tNOT = 316, +     tCONCAT = 317, +     tCONTAINS = 318, +     tSTARTS = 319, +     tSPRITE = 320, +     tINTERSECTS = 321, +     tWITHIN = 322     };  #endif  /* Tokens.  */ @@ -153,21 +155,23 @@  #define tMETHOD 303  #define tALERT 304  #define tBEEP 305 -#define tGE 306 -#define tLE 307 -#define tGT 308 -#define tLT 309 -#define tEQ 310 -#define tNEQ 311 -#define tAND 312 -#define tOR 313 -#define tNOT 314 -#define tCONCAT 315 -#define tCONTAINS 316 -#define tSTARTS 317 -#define tSPRITE 318 -#define tINTERSECTS 319 -#define tWITHIN 320 +#define tCLOSERESFILE 306 +#define tCLOSEXLIB 307 +#define tGE 308 +#define tLE 309 +#define tGT 310 +#define tLT 311 +#define tEQ 312 +#define tNEQ 313 +#define tAND 314 +#define tOR 315 +#define tNOT 316 +#define tCONCAT 317 +#define tCONTAINS 318 +#define tSTARTS 319 +#define tSPRITE 320 +#define tINTERSECTS 321 +#define tWITHIN 322 @@ -185,7 +189,7 @@ typedef union YYSTYPE  	Common::Array<double> *arr;  }  /* Line 1529 of yacc.c.  */ -#line 189 "engines/director/lingo/lingo-gr.hpp" +#line 193 "engines/director/lingo/lingo-gr.hpp"  	YYSTYPE;  # define yystype YYSTYPE /* obsolescent; will be withdrawn */  # define YYSTYPE_IS_DECLARED 1 diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index d8b7519eaa..a85644f38a 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -85,7 +85,7 @@ void yyerror(char *s) {  %token<s> ID  %token tDOWN tELSE tNLELSIF tEND tEXIT tFRAME tGLOBAL tGO tIF tINTO tLOOP tMACRO  %token tMCI tMCIWAIT tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN -%token tWITH tWHILE tNLELSE tFACTORY tMETHOD tALERT tBEEP +%token tWITH tWHILE tNLELSE tFACTORY tMETHOD tALERT tBEEP tCLOSERESFILE tCLOSEXLIB  %token tGE tLE tGT tLT tEQ tNEQ tAND tOR tNOT  %token tCONCAT tCONTAINS tSTARTS  %token tSPRITE tINTERSECTS tWITHIN @@ -421,6 +421,20 @@ func: tMCI vSTRING			{ g_lingo->code1(g_lingo->c_mci); g_lingo->codeString($2->c  		WRITE_UINT32(&i, 0);  		g_lingo->code1(i);  		g_lingo->code1(g_lingo->c_beep); } +	| tCLOSERESFILE expr	{ g_lingo->code1(g_lingo->c_closeResFile); } +	| tCLOSERESFILE 		{ +		g_lingo->code1(g_lingo->c_constpush); +		inst i = 0; +		WRITE_UINT32(&i, 0); +		g_lingo->code1(i); +		g_lingo->code1(g_lingo->c_closeResFile); } +	| tCLOSEXLIB expr	{ g_lingo->code1(g_lingo->c_closeXlib); } +	| tCLOSEXLIB 		{ +		g_lingo->code1(g_lingo->c_constpush); +		inst i = 0; +		WRITE_UINT32(&i, 0); +		g_lingo->code1(i); +		g_lingo->code1(g_lingo->c_closeXlib); }  	;  globallist: ID				{ g_lingo->code1(g_lingo->c_global); g_lingo->codeString($1->c_str()); delete $1; } diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp index d4f2a01ea2..23bd7d03f4 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 56 -#define YY_END_OF_BUFFER 57 +#define YY_NUM_RULES 58 +#define YY_END_OF_BUFFER 59  /* This struct is not used in this scanner,     but its presence is necessary. */  struct yy_trans_info @@ -373,30 +373,31 @@ struct yy_trans_info  	flex_int32_t yy_verify;  	flex_int32_t yy_nxt;  	}; -static yyconst flex_int16_t yy_accept[194] = +static yyconst flex_int16_t yy_accept[209] =      {   0, -        0,    0,   57,   55,    3,   53,   53,   55,   55,   52, -       52,   52,   51,   52,   52,   49,   49,   49,   49,   49, -       49,   49,   49,   49,   49,   49,   49,   49,   49,   49, -       49,   49,   49,    2,    2,    3,   53,    0,    0,   53, -        0,    0,   54,   48,    1,   50,   51,   47,   45,   46, -       49,   49,   49,   49,   49,   49,   49,   49,   49,   49, -       49,   49,   18,    9,   49,   49,   49,   49,   49,   49, -       49,   49,   29,   30,   49,   49,   49,   49,   49,   49, -       49,   39,   49,   49,    2,    2,    0,    1,   50,   49, -        5,   49,   49,   49,   49,   13,   49,   49,   49,   49, - -       49,   49,   49,   23,   49,   49,   49,   28,   49,   32, -       49,   34,   49,   49,   49,   49,   49,   49,    0,   49, -        6,   49,    8,   12,   15,   49,   49,   49,   49,   20, -       21,   49,   49,   49,   49,   27,   49,   49,   49,   49, -        0,   38,   43,   49,   41,   11,    4,   49,   49,   16, -       49,   49,   22,   49,   49,   26,   49,   49,   49,   49, -       37,   44,   49,    0,   49,   49,   17,   49,   49,   25, -       49,   33,   40,   35,    0,   42,    0,   49,   14,   49, -       24,   49,    0,   10,    7,   49,   31,    0,   49,    0, -       19,   36,    0 - +        0,    0,   59,   57,    3,   55,   55,   57,   57,   54, +       54,   54,   53,   54,   54,   51,   51,   51,   51,   51, +       51,   51,   51,   51,   51,   51,   51,   51,   51,   51, +       51,   51,   51,    2,    2,    3,   55,    0,    0,   55, +        0,    0,   56,   50,    1,   52,   53,   49,   47,   48, +       51,   51,   51,   51,   51,   51,   51,   51,   51,   51, +       51,   51,   51,   20,   11,   51,   51,   51,   51,   51, +       51,   51,   51,   31,   32,   51,   51,   51,   51,   51, +       51,   51,   41,   51,   51,    2,    2,    0,    1,   52, +       51,    5,   51,   51,   51,   51,   51,   15,   51,   51, + +       51,   51,   51,   51,   51,   25,   51,   51,   51,   30, +       51,   34,   51,   36,   51,   51,   51,   51,   51,   51, +        0,   51,    6,   51,   51,   10,   14,   17,   51,   51, +       51,   51,   22,   23,   51,   51,   51,   51,   29,   51, +       51,   51,   51,    0,   40,   45,   51,   43,   13,    4, +       51,   51,   51,   18,   51,   51,   24,   51,   51,   28, +       51,   51,   51,   51,   39,   46,   51,    0,   51,   51, +       51,   51,   19,   51,   51,   27,   51,   35,   42,   37, +        0,   44,    0,   51,   51,   51,   16,   51,   26,   51, +        0,   12,   51,   51,    9,   51,   33,    0,   51,    8, + +       51,    0,   51,   21,   38,   51,    7,    0      } ;  static yyconst flex_int32_t yy_ec[256] = @@ -441,59 +442,63 @@ static yyconst flex_int32_t yy_meta[61] =          6,    6,    6,    6,    6,    6,    6,    6,    6,    6      } ; -static yyconst flex_int16_t yy_base[199] = +static yyconst flex_int16_t yy_base[214] =      {   0, -        0,   59,  205,  459,   63,   67,   71,   75,  167,  459, -      164,  149,   52,   68,  134,   58,   68,   56,   61,   67, -       83,   68,    0,   77,   67,  113,  106,  109,   90,   81, -      116,  109,  128,  174,  178,  182,   98,  186,  190,  194, -      113,  136,  459,  459,    0,   94,  155,  459,  459,  459, -        0,   90,  151,  151,  113,  109,  169,  183,  179,  186, -      189,  178,    0,    0,  175,  180,  193,  188,  183,  182, -      181,  186,    0,    0,  193,  187,  191,  189,  192,  209, -      213,    0,  227,  217,  249,  255,  224,    0,   88,  231, -        0,  233,  231,  237,  228,    0,  233,  234,  241,  252, - -      254,  246,  246,  242,  247,  256,  249,    0,  249,    0, -      272,    0,  271,  266,  305,  274,  277,  287,  292,  276, -        0,  297,    0,    0,    0,  286,  297,  302,  290,    0, -        0,  293,  307,  298,  304,    0,  304,  313,  298,  302, -       86,    0,    0,  319,  316,  340,    0,  325,  320,    0, -      329,  325,    0,  335,  341,    0,  333,  332,  346,  336, -      364,    0,  341,  369,  343,  338,    0,  357,  346,    0, -      347,    0,    0,    0,  383,    0,  361,  355,    0,  377, -        0,  365,  377,  459,    0,  367,    0,  402,  371,  408, -        0,  410,  459,  434,  436,  442,  447,  452 - +        0,   59,  252,  486,   63,   67,   71,   75,  167,  486, +      164,  157,   52,   68,  152,   58,   68,   64,   56,   68, +       83,   69,    0,   82,   68,  106,  105,  108,  107,   86, +      112,  131,  128,  166,  176,  181,   96,  185,  189,  193, +      110,  140,  486,  486,    0,   92,  132,  486,  486,  486, +        0,  111,  158,  173,  111,  172,  166,  171,  175,  180, +      187,  190,  179,    0,    0,  178,  183,  196,  191,  186, +      185,  184,  189,    0,    0,  196,  191,  197,  199,  205, +      225,  226,    0,  228,  218,  257,  263,  222,    0,   90, +      225,    0,  227,  226,  231,  243,  229,    0,  242,  245, + +      255,  266,  264,  256,  257,  253,  267,  267,  262,    0, +      261,    0,  277,    0,  275,  271,  300,  276,  284,  277, +      293,  284,    0,  300,  306,    0,    0,    0,  297,  309, +      314,  301,    0,    0,  305,  319,  309,  316,    0,  315, +      325,  310,  312,   86,    0,    0,  327,  324,  204,    0, +      319,  328,  327,    0,  336,  332,    0,  343,  350,    0, +      345,  342,  350,  345,  377,    0,  350,  383,  362,  362, +      362,  354,    0,  364,  362,    0,  362,    0,    0,    0, +      396,    0,  382,  373,  385,  380,    0,  392,    0,  382, +      395,  486,  396,  403,    0,  389,    0,  418,  399,    0, + +      394,  426,  404,    0,  433,  418,    0,  486,  461,  463, +      469,  474,  479      } ; -static yyconst flex_int16_t yy_def[199] = +static yyconst flex_int16_t yy_def[214] =      {   0, -      193,    1,  193,  193,  193,  193,  193,  193,  194,  193, -      193,  193,  193,  193,  193,  195,  195,  195,  195,  195, -      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, -      195,  195,  195,  193,  193,  193,  193,  193,  193,  193, -      193,  194,  193,  193,  196,  193,  193,  193,  193,  193, -      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, -      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, -      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, -      195,  195,  195,  195,  193,  193,  193,  196,  193,  195, -      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, - -      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, -      195,  195,  195,  195,  195,  195,  195,  195,  193,  195, -      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, -      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, -      197,  195,  195,  195,  195,  193,  195,  195,  195,  195, -      195,  195,  195,  195,  195,  195,  195,  195,  195,  195, -      197,  195,  195,  193,  195,  195,  195,  195,  195,  195, -      195,  195,  195,  195,  193,  195,  193,  195,  195,  195, -      195,  195,  193,  193,  195,  195,  195,  193,  195,  198, -      195,  198,    0,  193,  193,  193,  193,  193 - +      208,    1,  208,  208,  208,  208,  208,  208,  209,  208, +      208,  208,  208,  208,  208,  210,  210,  210,  210,  210, +      210,  210,  210,  210,  210,  210,  210,  210,  210,  210, +      210,  210,  210,  208,  208,  208,  208,  208,  208,  208, +      208,  209,  208,  208,  211,  208,  208,  208,  208,  208, +      210,  210,  210,  210,  210,  210,  210,  210,  210,  210, +      210,  210,  210,  210,  210,  210,  210,  210,  210,  210, +      210,  210,  210,  210,  210,  210,  210,  210,  210,  210, +      210,  210,  210,  210,  210,  208,  208,  208,  211,  208, +      210,  210,  210,  210,  210,  210,  210,  210,  210,  210, + +      210,  210,  210,  210,  210,  210,  210,  210,  210,  210, +      210,  210,  210,  210,  210,  210,  210,  210,  210,  210, +      208,  210,  210,  210,  210,  210,  210,  210,  210,  210, +      210,  210,  210,  210,  210,  210,  210,  210,  210,  210, +      210,  210,  210,  212,  210,  210,  210,  210,  208,  210, +      210,  210,  210,  210,  210,  210,  210,  210,  210,  210, +      210,  210,  210,  210,  212,  210,  210,  208,  210,  210, +      210,  210,  210,  210,  210,  210,  210,  210,  210,  210, +      208,  210,  208,  210,  210,  210,  210,  210,  210,  210, +      208,  208,  210,  210,  210,  210,  210,  208,  210,  210, + +      210,  213,  210,  210,  213,  210,  210,    0,  208,  208, +      208,  208,  208      } ; -static yyconst flex_int16_t yy_nxt[520] = +static yyconst flex_int16_t yy_nxt[547] =      {   0,          4,    5,    6,    7,    8,    9,   10,   11,   12,    4,         13,   14,   10,   15,   16,   17,   18,   19,   20,   21, @@ -503,58 +508,61 @@ static yyconst flex_int16_t yy_nxt[520] =         28,   29,   30,   31,   32,   23,   23,   33,   23,   23,         34,   46,   47,   35,   36,   37,   37,   38,   39,   40,         40,   39,   39,   40,   40,   39,   38,   37,   37,   38, -       48,   49,   52,   55,   53,   41,   54,  141,   56,   41, -      141,   57,   62,   58,   66,   63,   64,   60,   89,   77, - -       37,   37,   59,   65,   89,   52,   55,   53,   90,   41, -       54,   56,   61,   41,   57,   62,   58,   66,   63,   75, -       64,   60,   76,   77,   71,   59,   65,   67,   73,   68, -       81,   69,   90,   72,   78,   61,   82,   87,   74,   93, -       70,   43,   75,   94,   79,   76,   50,   80,   71,   83, -       84,   67,   73,   68,   81,   69,   72,   45,   78,   82, -       87,   74,   93,   70,   46,   47,   94,   79,   91,   92, -       80,   44,   43,   83,   84,   85,   37,   37,   86,   86, -       37,   37,   86,   36,   37,   37,   38,   38,   37,   37, -       38,   39,   91,   92,   39,   39,   40,   40,   39,   95, - -       96,   97,   98,   99,  193,  100,  101,  102,   41,  103, -      104,  109,   41,  193,  105,  106,  107,  108,  110,  111, -      112,  113,   95,  114,   96,   97,   98,   99,  100,  101, -      102,  115,   41,  103,  104,  109,   41,  105,  106,  107, -      108,  110,  111,  112,  113,  116,  124,  114,  118,  117, -       85,   37,   37,   86,  119,  115,   86,   37,   37,   86, -      120,  121,  122,  123,  125,  126,  127,  128,  134,  116, -      124,  118,  129,  117,  131,  132,  133,  119,  135,  193, -      136,  130,  137,  120,  121,  122,  123,  125,  126,  127, -      138,  128,  134,  139,  193,  140,  129,  131,  132,  133, - -      143,  144,  135,  136,  130,  137,  141,  147,  145,  141, -      146,  148,  193,  149,  138,  150,  151,  139,  140,  152, -      153,  154,  156,  143,  144,  155,  157,  158,  193,  159, -      147,  142,  145,  160,  146,  148,  149,  162,  163,  150, -      151,  164,  152,  153,  164,  154,  156,  165,  155,  166, -      157,  158,  159,  167,  142,  168,  160,  169,  170,  193, -      171,  162,  163,  172,  173,  175,  174,  176,  175,  178, -      164,  165,  166,  164,  179,  180,  167,  181,  168,  182, -      184,  169,  170,  171,  175,  185,  172,  175,  173,  174, -      176,  177,  178,  186,  193,  187,  188,  179,  189,  180, - -      181,  191,  182,  190,  184,  193,  190,  193,  185,  190, -      183,  193,  190,  193,  193,  177,  193,  186,  187,  193, -      188,  189,  193,  193,  191,  193,  193,  193,  193,  193, -      193,  193,  193,  183,   42,   42,  193,   42,   42,   42, -       51,   51,   88,   88,  193,  193,   88,   88,  161,  193, -      193,  193,  161,  192,  193,  193,  193,  192,    3,  193, -      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, -      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, -      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, -      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, - -      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, -      193,  193,  193,  193,  193,  193,  193,  193,  193 +       48,   49,   52,   57,   53,   41,   54,  144,   55,   41, +      144,   56,   58,   63,   59,   67,   64,   61,   37,   37, + +       90,   65,   90,   60,   78,   52,   57,   53,   66,   41, +       54,   55,   62,   41,   56,   58,   63,   59,   67,   64, +       68,   61,   69,   72,   70,   65,   60,   74,   78,   91, +       79,   66,   73,   71,   88,   62,   76,   75,   94,   77, +       80,   46,   47,   81,   68,   43,   69,   72,   70,   84, +       85,   74,   82,   91,   79,   73,   71,   88,   83,   76, +       75,   94,   77,   80,   50,   45,   81,   86,   37,   37, +       87,   44,   43,   84,   85,   92,   82,   87,   37,   37, +       87,   83,   36,   37,   37,   38,   38,   37,   37,   38, +       39,   93,   98,   39,   39,   40,   40,   39,   95,   92, + +       96,   97,   99,  100,  101,  168,  102,   41,  168,  103, +      104,   41,  105,  106,  111,   93,   98,  107,  108,  109, +      110,   95,  112,   96,   97,  113,   99,  100,  101,  102, +      114,   41,  103,  104,  115,   41,  105,  106,  111,  116, +      107,  108,  109,  110,  117,  112,  118,  127,  113,  120, +      119,  208,  121,  114,  122,  123,  124,  115,   86,   37, +       37,   87,  125,  116,   87,   37,   37,   87,  117,  126, +      118,  127,  120,  128,  119,  121,  129,  122,  123,  124, +      130,  131,  132,  208,  134,  125,  135,  136,  137,  138, +      208,  133,  126,  139,  140,  141,  128,  142,  148,  129, + +      143,  144,  146,  130,  144,  131,  132,  134,  147,  135, +      136,  149,  137,  138,  133,  150,  139,  140,  151,  141, +      152,  142,  148,  143,  153,  146,  145,  154,  155,  208, +      156,  147,  157,  158,  160,  149,  159,  161,  150,  162, +      208,  163,  151,  164,  152,  166,  167,  153,  169,  145, +      171,  154,  155,  156,  170,  157,  172,  158,  160,  159, +      173,  161,  174,  162,  163,  175,  164,  176,  179,  166, +      167,  169,  177,  178,  171,  180,  182,  170,  181,  172, +      184,  181,  188,  173,  168,  174,  185,  168,  186,  175, +      187,  176,  179,  189,  190,  177,  178,  181,  180,  182, + +      181,  192,  208,  193,  184,  183,  188,  194,  196,  185, +      195,  186,  197,  187,  198,  199,  189,  190,  200,  202, +      201,  203,  202,  191,  204,  192,  193,  202,  206,  183, +      202,  194,  196,  195,  208,  197,  207,  208,  198,  199, +      208,  208,  200,  201,  208,  203,  191,  204,  208,  208, +      208,  206,  208,  208,  208,  208,  208,  208,  208,  208, +      207,   42,   42,  208,   42,   42,   42,   51,   51,   89, +       89,  208,  208,   89,   89,  165,  208,  208,  208,  165, +      205,  208,  208,  208,  205,    3,  208,  208,  208,  208, +      208,  208,  208,  208,  208,  208,  208,  208,  208,  208, + +      208,  208,  208,  208,  208,  208,  208,  208,  208,  208, +      208,  208,  208,  208,  208,  208,  208,  208,  208,  208, +      208,  208,  208,  208,  208,  208,  208,  208,  208,  208, +      208,  208,  208,  208,  208,  208,  208,  208,  208,  208, +      208,  208,  208,  208,  208,  208      } ; -static yyconst flex_int16_t yy_chk[520] = +static yyconst flex_int16_t yy_chk[547] =      {   0,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1, @@ -564,55 +572,58 @@ static yyconst flex_int16_t yy_chk[520] =          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          2,   13,   13,    2,    5,    5,    5,    5,    6,    6,          6,    6,    7,    7,    7,    7,    8,    8,    8,    8, -       14,   14,   16,   18,   16,    6,   17,  141,   19,    7, -      141,   20,   22,   20,   25,   22,   24,   21,   89,   30, - -       37,   37,   20,   24,   46,   16,   18,   16,   52,    6, -       17,   19,   21,    7,   20,   22,   20,   25,   22,   29, -       24,   21,   29,   30,   27,   20,   24,   26,   28,   26, -       32,   26,   52,   27,   31,   21,   32,   41,   28,   55, -       26,   42,   29,   56,   31,   29,   15,   31,   27,   33, -       33,   26,   28,   26,   32,   26,   27,   12,   31,   32, -       41,   28,   55,   26,   47,   47,   56,   31,   53,   54, -       31,   11,    9,   33,   33,   34,   34,   34,   34,   35, -       35,   35,   35,   36,   36,   36,   36,   38,   38,   38, -       38,   39,   53,   54,   39,   40,   40,   40,   40,   57, - -       58,   59,   60,   61,    3,   62,   65,   66,   39,   67, -       68,   75,   40,    0,   69,   70,   71,   72,   76,   77, -       78,   79,   57,   80,   58,   59,   60,   61,   62,   65, -       66,   81,   39,   67,   68,   75,   40,   69,   70,   71, -       72,   76,   77,   78,   79,   83,   95,   80,   84,   83, -       85,   85,   85,   85,   87,   81,   86,   86,   86,   86, -       90,   92,   93,   94,   97,   98,   99,  100,  105,   83, -       95,   84,  101,   83,  102,  103,  104,   87,  106,    0, -      107,  101,  109,   90,   92,   93,   94,   97,   98,   99, -      111,  100,  105,  113,    0,  114,  101,  102,  103,  104, - -      116,  117,  106,  107,  101,  109,  115,  120,  118,  115, -      119,  122,    0,  126,  111,  127,  128,  113,  114,  129, -      132,  133,  135,  116,  117,  134,  137,  138,    0,  139, -      120,  115,  118,  140,  119,  122,  126,  144,  145,  127, -      128,  146,  129,  132,  146,  133,  135,  148,  134,  149, -      137,  138,  139,  151,  115,  152,  140,  154,  155,    0, -      157,  144,  145,  158,  159,  161,  160,  163,  161,  165, -      164,  148,  149,  164,  166,  168,  151,  169,  152,  171, -      177,  154,  155,  157,  175,  178,  158,  175,  159,  160, -      163,  164,  165,  180,    0,  182,  183,  166,  186,  168, - -      169,  189,  171,  188,  177,    0,  188,    0,  178,  190, -      175,  192,  190,    0,  192,  164,    0,  180,  182,    0, -      183,  186,    0,    0,  189,    0,    0,    0,    0,    0, -        0,    0,    0,  175,  194,  194,    0,  194,  194,  194, -      195,  195,  196,  196,    0,    0,  196,  196,  197,    0, -        0,    0,  197,  198,    0,    0,    0,  198,  193,  193, -      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, -      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, -      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, -      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, - -      193,  193,  193,  193,  193,  193,  193,  193,  193,  193, -      193,  193,  193,  193,  193,  193,  193,  193,  193 +       14,   14,   16,   19,   16,    6,   17,  144,   18,    7, +      144,   18,   20,   22,   20,   25,   22,   21,   37,   37, + +       90,   24,   46,   20,   30,   16,   19,   16,   24,    6, +       17,   18,   21,    7,   18,   20,   22,   20,   25,   22, +       26,   21,   26,   27,   26,   24,   20,   28,   30,   52, +       31,   24,   27,   26,   41,   21,   29,   28,   55,   29, +       31,   47,   47,   31,   26,   42,   26,   27,   26,   33, +       33,   28,   32,   52,   31,   27,   26,   41,   32,   29, +       28,   55,   29,   31,   15,   12,   31,   34,   34,   34, +       34,   11,    9,   33,   33,   53,   32,   35,   35,   35, +       35,   32,   36,   36,   36,   36,   38,   38,   38,   38, +       39,   54,   59,   39,   40,   40,   40,   40,   56,   53, + +       57,   58,   60,   61,   62,  149,   63,   39,  149,   66, +       67,   40,   68,   69,   76,   54,   59,   70,   71,   72, +       73,   56,   77,   57,   58,   78,   60,   61,   62,   63, +       79,   39,   66,   67,   80,   40,   68,   69,   76,   81, +       70,   71,   72,   73,   82,   77,   84,   97,   78,   85, +       84,    3,   88,   79,   91,   93,   94,   80,   86,   86, +       86,   86,   95,   81,   87,   87,   87,   87,   82,   96, +       84,   97,   85,   99,   84,   88,  100,   91,   93,   94, +      101,  102,  103,    0,  104,   95,  105,  106,  107,  108, +        0,  103,   96,  109,  111,  113,   99,  115,  120,  100, + +      116,  117,  118,  101,  117,  102,  103,  104,  119,  105, +      106,  121,  107,  108,  103,  122,  109,  111,  124,  113, +      125,  115,  120,  116,  129,  118,  117,  130,  131,    0, +      132,  119,  135,  136,  138,  121,  137,  140,  122,  141, +        0,  142,  124,  143,  125,  147,  148,  129,  151,  117, +      152,  130,  131,  132,  151,  135,  153,  136,  138,  137, +      155,  140,  156,  141,  142,  158,  143,  159,  163,  147, +      148,  151,  161,  162,  152,  164,  167,  151,  165,  153, +      169,  165,  174,  155,  168,  156,  170,  168,  171,  158, +      172,  159,  163,  175,  177,  161,  162,  181,  164,  167, + +      181,  183,    0,  184,  169,  168,  174,  185,  188,  170, +      186,  171,  190,  172,  191,  193,  175,  177,  194,  198, +      196,  199,  198,  181,  201,  183,  184,  202,  203,  168, +      202,  185,  188,  186,  205,  190,  206,  205,  191,  193, +        0,    0,  194,  196,    0,  199,  181,  201,    0,    0, +        0,  203,    0,    0,    0,    0,    0,    0,    0,    0, +      206,  209,  209,    0,  209,  209,  209,  210,  210,  211, +      211,    0,    0,  211,  211,  212,    0,    0,    0,  212, +      213,    0,    0,    0,  213,  208,  208,  208,  208,  208, +      208,  208,  208,  208,  208,  208,  208,  208,  208,  208, + +      208,  208,  208,  208,  208,  208,  208,  208,  208,  208, +      208,  208,  208,  208,  208,  208,  208,  208,  208,  208, +      208,  208,  208,  208,  208,  208,  208,  208,  208,  208, +      208,  208,  208,  208,  208,  208,  208,  208,  208,  208, +      208,  208,  208,  208,  208,  208      } ;  static yy_state_type yy_last_accepting_state; @@ -682,7 +693,7 @@ static void countnl() {  	g_lingo->_colnumber = strlen(p);  } -#line 686 "engines/director/lingo/lingo-lex.cpp" +#line 697 "engines/director/lingo/lingo-lex.cpp"  #define INITIAL 0 @@ -870,7 +881,7 @@ YY_DECL  #line 65 "engines/director/lingo/lingo-lex.l" -#line 874 "engines/director/lingo/lingo-lex.cpp" +#line 885 "engines/director/lingo/lingo-lex.cpp"  	if ( !(yy_init) )  		{ @@ -924,13 +935,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 >= 194 ) +				if ( yy_current_state >= 209 )  					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] != 459 ); +		while ( yy_base[yy_current_state] != 486 );  yy_find_action:  		yy_act = yy_accept[yy_current_state]; @@ -987,153 +998,163 @@ YY_RULE_SETUP  case 7:  YY_RULE_SETUP  #line 74 "engines/director/lingo/lingo-lex.l" -{ count(); return tCONTAINS; } +{ count(); return tCLOSERESFILE; }  	YY_BREAK  case 8:  YY_RULE_SETUP  #line 75 "engines/director/lingo/lingo-lex.l" -{ count(); return tDOWN; } +{ count(); return tCLOSEXLIB; }  	YY_BREAK  case 9:  YY_RULE_SETUP  #line 76 "engines/director/lingo/lingo-lex.l" -{ count(); return tIF; } +{ count(); return tCONTAINS; }  	YY_BREAK  case 10: -/* rule 10 can match eol */  YY_RULE_SETUP  #line 77 "engines/director/lingo/lingo-lex.l" -{ countnl(); return tNLELSIF; } +{ count(); return tDOWN; }  	YY_BREAK  case 11: -/* rule 11 can match eol */  YY_RULE_SETUP  #line 78 "engines/director/lingo/lingo-lex.l" -{ countnl(); return tNLELSE; } +{ count(); return tIF; }  	YY_BREAK  case 12: +/* rule 12 can match eol */  YY_RULE_SETUP  #line 79 "engines/director/lingo/lingo-lex.l" -{ count(); return tELSE; } +{ countnl(); return tNLELSIF; }  	YY_BREAK  case 13: +/* rule 13 can match eol */  YY_RULE_SETUP  #line 80 "engines/director/lingo/lingo-lex.l" -{ count(); return tEND; } +{ countnl(); return tNLELSE; }  	YY_BREAK  case 14:  YY_RULE_SETUP  #line 81 "engines/director/lingo/lingo-lex.l" -{ count(); return tFACTORY; } +{ count(); return tELSE; }  	YY_BREAK  case 15:  YY_RULE_SETUP  #line 82 "engines/director/lingo/lingo-lex.l" -{ count(); return tEXIT; } +{ count(); return tEND; }  	YY_BREAK  case 16:  YY_RULE_SETUP  #line 83 "engines/director/lingo/lingo-lex.l" -{ count(); return tFRAME; } +{ count(); return tFACTORY; }  	YY_BREAK  case 17:  YY_RULE_SETUP  #line 84 "engines/director/lingo/lingo-lex.l" -{ count(); return tGLOBAL; } +{ count(); return tEXIT; }  	YY_BREAK  case 18:  YY_RULE_SETUP  #line 85 "engines/director/lingo/lingo-lex.l" -{ count(); return tGO; } +{ count(); return tFRAME; }  	YY_BREAK  case 19:  YY_RULE_SETUP  #line 86 "engines/director/lingo/lingo-lex.l" -{ count(); return tINTERSECTS; } +{ count(); return tGLOBAL; }  	YY_BREAK  case 20:  YY_RULE_SETUP  #line 87 "engines/director/lingo/lingo-lex.l" -{ count(); return tINTO; } +{ count(); return tGO; }  	YY_BREAK  case 21:  YY_RULE_SETUP  #line 88 "engines/director/lingo/lingo-lex.l" -{ count(); return tLOOP; } +{ count(); return tINTERSECTS; }  	YY_BREAK  case 22:  YY_RULE_SETUP  #line 89 "engines/director/lingo/lingo-lex.l" -{ count(); return tMACRO; } +{ count(); return tINTO; }  	YY_BREAK  case 23:  YY_RULE_SETUP  #line 90 "engines/director/lingo/lingo-lex.l" -{ count(); return tMCI; } +{ count(); return tLOOP; }  	YY_BREAK  case 24:  YY_RULE_SETUP  #line 91 "engines/director/lingo/lingo-lex.l" -{ count(); return tMCIWAIT; } +{ count(); return tMACRO; }  	YY_BREAK  case 25:  YY_RULE_SETUP  #line 92 "engines/director/lingo/lingo-lex.l" -{ count(); return tMETHOD; } +{ count(); return tMCI; }  	YY_BREAK  case 26:  YY_RULE_SETUP  #line 93 "engines/director/lingo/lingo-lex.l" -{ count(); return tMOVIE; } +{ count(); return tMCIWAIT; }  	YY_BREAK  case 27:  YY_RULE_SETUP  #line 94 "engines/director/lingo/lingo-lex.l" -{ count(); return tNEXT; } +{ count(); return tMETHOD; }  	YY_BREAK  case 28:  YY_RULE_SETUP  #line 95 "engines/director/lingo/lingo-lex.l" -{ count(); return tNOT; } +{ count(); return tMOVIE; }  	YY_BREAK  case 29:  YY_RULE_SETUP  #line 96 "engines/director/lingo/lingo-lex.l" -{ count(); return tOF; } +{ count(); return tNEXT; }  	YY_BREAK  case 30:  YY_RULE_SETUP  #line 97 "engines/director/lingo/lingo-lex.l" -{ count(); return tOR; } +{ count(); return tNOT; }  	YY_BREAK  case 31:  YY_RULE_SETUP  #line 98 "engines/director/lingo/lingo-lex.l" -{ count(); return tPREVIOUS; } +{ count(); return tOF; }  	YY_BREAK  case 32:  YY_RULE_SETUP  #line 99 "engines/director/lingo/lingo-lex.l" -{ count(); return tPUT; } +{ count(); return tOR; }  	YY_BREAK  case 33:  YY_RULE_SETUP  #line 100 "engines/director/lingo/lingo-lex.l" -{ count(); return tREPEAT; } +{ count(); return tPREVIOUS; }  	YY_BREAK  case 34:  YY_RULE_SETUP  #line 101 "engines/director/lingo/lingo-lex.l" -{ count(); return tSET; } +{ count(); return tPUT; }  	YY_BREAK  case 35:  YY_RULE_SETUP  #line 102 "engines/director/lingo/lingo-lex.l" -{ count(); return tSTARTS; } +{ count(); return tREPEAT; }  	YY_BREAK  case 36:  YY_RULE_SETUP  #line 103 "engines/director/lingo/lingo-lex.l" +{ count(); return tSET; } +	YY_BREAK +case 37: +YY_RULE_SETUP +#line 104 "engines/director/lingo/lingo-lex.l" +{ count(); return tSTARTS; } +	YY_BREAK +case 38: +YY_RULE_SETUP +#line 105 "engines/director/lingo/lingo-lex.l"  {  		count(); @@ -1175,9 +1196,9 @@ YY_RULE_SETUP  		warning("Unhandled the entity %s", ptr);  	}  	YY_BREAK -case 37: +case 39:  YY_RULE_SETUP -#line 143 "engines/director/lingo/lingo-lex.l" +#line 145 "engines/director/lingo/lingo-lex.l"  {  		count(); @@ -1198,64 +1219,64 @@ YY_RULE_SETUP  		warning("Unhandled the entity %s", ptr);  	}  	YY_BREAK -case 38: -YY_RULE_SETUP -#line 162 "engines/director/lingo/lingo-lex.l" -{ count(); return tTHEN; } -	YY_BREAK -case 39: -YY_RULE_SETUP -#line 163 "engines/director/lingo/lingo-lex.l" -{ count(); return tTO; } -	YY_BREAK  case 40:  YY_RULE_SETUP  #line 164 "engines/director/lingo/lingo-lex.l" -{ count(); return tSPRITE; } +{ count(); return tTHEN; }  	YY_BREAK  case 41:  YY_RULE_SETUP  #line 165 "engines/director/lingo/lingo-lex.l" -{ count(); return tWITH; } +{ count(); return tTO; }  	YY_BREAK  case 42:  YY_RULE_SETUP  #line 166 "engines/director/lingo/lingo-lex.l" -{ count(); return tWITHIN; } +{ count(); return tSPRITE; }  	YY_BREAK  case 43:  YY_RULE_SETUP  #line 167 "engines/director/lingo/lingo-lex.l" -{ count(); return tWHEN; } +{ count(); return tWITH; }  	YY_BREAK  case 44:  YY_RULE_SETUP  #line 168 "engines/director/lingo/lingo-lex.l" -{ count(); return tWHILE; } +{ count(); return tWITHIN; }  	YY_BREAK  case 45:  YY_RULE_SETUP -#line 170 "engines/director/lingo/lingo-lex.l" -{ count(); return tNEQ; } +#line 169 "engines/director/lingo/lingo-lex.l" +{ count(); return tWHEN; }  	YY_BREAK  case 46:  YY_RULE_SETUP -#line 171 "engines/director/lingo/lingo-lex.l" -{ count(); return tGE; } +#line 170 "engines/director/lingo/lingo-lex.l" +{ count(); return tWHILE; }  	YY_BREAK  case 47:  YY_RULE_SETUP  #line 172 "engines/director/lingo/lingo-lex.l" -{ count(); return tLE; } +{ count(); return tNEQ; }  	YY_BREAK  case 48:  YY_RULE_SETUP  #line 173 "engines/director/lingo/lingo-lex.l" -{ count(); return tCONCAT; } +{ count(); return tGE; }  	YY_BREAK  case 49:  YY_RULE_SETUP +#line 174 "engines/director/lingo/lingo-lex.l" +{ count(); return tLE; } +	YY_BREAK +case 50: +YY_RULE_SETUP  #line 175 "engines/director/lingo/lingo-lex.l" +{ count(); return tCONCAT; } +	YY_BREAK +case 51: +YY_RULE_SETUP +#line 177 "engines/director/lingo/lingo-lex.l"  {  		count();  		yylval.s = new Common::String(yytext); @@ -1268,43 +1289,43 @@ YY_RULE_SETUP  		return ID;  	}  	YY_BREAK -case 50: -YY_RULE_SETUP -#line 186 "engines/director/lingo/lingo-lex.l" -{ count(); yylval.f = atof(yytext); return vFLOAT; } -	YY_BREAK -case 51: -YY_RULE_SETUP -#line 187 "engines/director/lingo/lingo-lex.l" -{ count(); yylval.i = strtol(yytext, NULL, 10); return vINT; } -	YY_BREAK  case 52:  YY_RULE_SETUP  #line 188 "engines/director/lingo/lingo-lex.l" -{ count(); return *yytext; } +{ count(); yylval.f = atof(yytext); return vFLOAT; }  	YY_BREAK  case 53: -/* rule 53 can match eol */  YY_RULE_SETUP  #line 189 "engines/director/lingo/lingo-lex.l" -{ return '\n'; } +{ count(); yylval.i = strtol(yytext, NULL, 10); return vINT; }  	YY_BREAK  case 54:  YY_RULE_SETUP  #line 190 "engines/director/lingo/lingo-lex.l" -{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return vSTRING; } +{ count(); return *yytext; }  	YY_BREAK  case 55: +/* rule 55 can match eol */  YY_RULE_SETUP  #line 191 "engines/director/lingo/lingo-lex.l" - +{ return '\n'; }  	YY_BREAK  case 56:  YY_RULE_SETUP +#line 192 "engines/director/lingo/lingo-lex.l" +{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return vSTRING; } +	YY_BREAK +case 57: +YY_RULE_SETUP  #line 193 "engines/director/lingo/lingo-lex.l" + +	YY_BREAK +case 58: +YY_RULE_SETUP +#line 195 "engines/director/lingo/lingo-lex.l"  ECHO;  	YY_BREAK -#line 1308 "engines/director/lingo/lingo-lex.cpp" +#line 1329 "engines/director/lingo/lingo-lex.cpp"  case YY_STATE_EOF(INITIAL):  	yyterminate(); @@ -1597,7 +1618,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 >= 194 ) +			if ( yy_current_state >= 209 )  				yy_c = yy_meta[(unsigned int) yy_c];  			}  		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -1625,11 +1646,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 >= 194 ) +		if ( yy_current_state >= 209 )  			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 == 193); +	yy_is_jam = (yy_current_state == 208);  	return yy_is_jam ? 0 : yy_current_state;  } @@ -2304,7 +2325,7 @@ void yyfree (void * ptr )  #define YYTABLES_NAME "yytables" -#line 193 "engines/director/lingo/lingo-lex.l" +#line 195 "engines/director/lingo/lingo-lex.l" diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l index b9ecfc3a9d..6c317ef063 100644 --- a/engines/director/lingo/lingo-lex.l +++ b/engines/director/lingo/lingo-lex.l @@ -71,6 +71,8 @@ whitespace [\t ]  (?i:alert)			{ count(); return tALERT; }  (?i:and)			{ count(); return tAND; }  (?i:beep)			{ count(); return tBEEP; } +(?i:closeResFile)	{ count(); return tCLOSERESFILE; } +(?i:closeXlib)		{ count(); return tCLOSEXLIB; }  (?i:contains)		{ count(); return tCONTAINS; }  (?i:down)			{ count(); return tDOWN; }  (?i:if)				{ count(); return tIF; } diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h index 023a1947e5..4b25a57c49 100644 --- a/engines/director/lingo/lingo.h +++ b/engines/director/lingo/lingo.h @@ -246,6 +246,8 @@ public:  	static void c_alert();  	static void c_beep(); +	static void c_closeResFile(); +	static void c_closeXlib();  	static void b_abs();  	static void b_atan(); @@ -267,6 +269,7 @@ public:  	static void b_dontpassevent();  	static void b_updatestage();  	static void b_ilk(); +	static void b_closeDA();  	static void b_point(); | 
