[Scummvm-cvs-logs] scummvm master -> a19d39c79b75f29daeacf9257e29a49d0d11bbc0

sev- sev at scummvm.org
Fri Aug 12 17:45:29 CEST 2016


This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
5fc45bd340 DIRECTOR: Lingo: Sort test files before execution
0dd5aac5e1 DIRECTOR: Lingo: Added factory execution test
1507cdca2d DIRECTOR: Lingo: Implemented factory(mNew) method handling
c9bee72207 DIRECTOR: Lingo: Fix factory method argument count
a19d39c79b DIRECTOR: Lingo: Fix factory method code generation


Commit: 5fc45bd3401b5348bbd23257662de3d5320a3c48
    https://github.com/scummvm/scummvm/commit/5fc45bd3401b5348bbd23257662de3d5320a3c48
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-12T17:45:21+02:00

Commit Message:
DIRECTOR: Lingo: Sort test files before execution

Changed paths:
    engines/director/lingo/lingo.cpp



diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 7076ac2..f3faf97 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -20,6 +20,8 @@
  *
  */
 
+#include "common/str-array.h"
+
 #include "director/lingo/lingo.h"
 #include "director/lingo/lingo-gr.h"
 
@@ -360,14 +362,19 @@ Common::String *Lingo::toLowercaseMac(Common::String *s) {
 
 void Lingo::runTests() {
 	Common::File inFile;
-	Common::ArchiveMemberList fileList;
-	SearchMan.listMatchingMembers(fileList, "*.lingo");
+	Common::ArchiveMemberList fsList;
+	SearchMan.listMatchingMembers(fsList, "*.lingo");
+	Common::StringArray fileList;
 
 	int counter = 1;
 
-	for (Common::ArchiveMemberList::iterator it = fileList.begin(); it != fileList.end(); ++it) {
-		Common::ArchiveMember       const &m      = **it;
-		Common::SeekableReadStream *const  stream = m.createReadStream();
+	for (Common::ArchiveMemberList::iterator it = fsList.begin(); it != fsList.end(); ++it)
+		fileList.push_back((*it)->getName());
+
+	Common::sort(fileList.begin(), fileList.end());
+
+	for (int i = 0; i < fileList.size(); i++) {
+		Common::SeekableReadStream *const  stream = SearchMan.createReadStreamForMember(fileList[i]);
 		if (stream) {
 			uint size = stream->size();
 
@@ -375,7 +382,7 @@ void Lingo::runTests() {
 
 			stream->read(script, size);
 
-			warning("Compiling file %s of size %d, id: %d", m.getName().c_str(), size, counter);
+			warning("Compiling file %s of size %d, id: %d", fileList[i].c_str(), size, counter);
 
 			_hadError = false;
 			addCode(script, kMovieScript, counter);


Commit: 0dd5aac5e10c4477635c091a054d9a6a0ef04c30
    https://github.com/scummvm/scummvm/commit/0dd5aac5e10c4477635c091a054d9a6a0ef04c30
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-12T17:45:21+02:00

Commit Message:
DIRECTOR: Lingo: Added factory execution test

Changed paths:
  A engines/director/lingo/tests/factory2.lingo



diff --git a/engines/director/lingo/tests/factory2.lingo b/engines/director/lingo/tests/factory2.lingo
new file mode 100644
index 0000000..a7b2317
--- /dev/null
+++ b/engines/director/lingo/tests/factory2.lingo
@@ -0,0 +1,4 @@
+global aim1
+AimGun2
+
+aim1(mDispose)


Commit: 1507cdca2d7a7ef8504bdff0c0eb9ec2dd15a054
    https://github.com/scummvm/scummvm/commit/1507cdca2d7a7ef8504bdff0c0eb9ec2dd15a054
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-12T17:45:21+02:00

Commit Message:
DIRECTOR: Lingo: Implemented factory(mNew) method handling

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-code.cpp
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.h
    engines/director/lingo/lingo-gr.y



diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index f8125db..de82956 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -702,6 +702,16 @@ void Lingo::factoryCall(Common::String &name, int nargs) {
 	s = name + "-" + *method.u.s;
 
 	call(s, nargs);
+
+	if (method.u.s->compareToIgnoreCase("mNew")) {
+		warning("Got mNew method");
+		Datum d;
+
+		d.type = OBJECT;
+		d.u.s = new Common::String(name);
+
+		g_lingo->push(d);
+	}
 }
 
 } // End of namespace Director
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 0d4afca..646a931 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -728,6 +728,14 @@ void Lingo::call(Common::String &name, int nargs) {
 	Symbol *sym;
 
 	if (!g_lingo->_handlers.contains(name)) {
+		Symbol *s = g_lingo->lookupVar(name.c_str(), false);
+		if (s && s->type == OBJECT) {
+			debug(3, "Dereferencing object reference: %s to %s", name.c_str(), s->u.s->c_str());
+			name = *s->u.s;
+		}
+	}
+
+	if (!g_lingo->_handlers.contains(name)) {
 		warning("Call to undefined handler '%s'. Dropping %d stack items", name.c_str(), nargs);
 		drop = true;
 	} else {
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 1758d5c..09b6dc9 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -74,64 +74,65 @@
      RECT = 263,
      ARRAY = 264,
      SYMBOL = 265,
-     INT = 266,
-     THEENTITY = 267,
-     THEENTITYWITHID = 268,
-     FLOAT = 269,
-     BLTIN = 270,
-     BLTINNOARGS = 271,
-     BLTINNOARGSORONE = 272,
-     BLTINONEARG = 273,
-     BLTINARGLIST = 274,
-     ID = 275,
-     STRING = 276,
-     HANDLER = 277,
-     tDOWN = 278,
-     tELSE = 279,
-     tNLELSIF = 280,
-     tEND = 281,
-     tEXIT = 282,
-     tFRAME = 283,
-     tGLOBAL = 284,
-     tGO = 285,
-     tIF = 286,
-     tINTO = 287,
-     tLOOP = 288,
-     tMACRO = 289,
-     tMOVIE = 290,
-     tNEXT = 291,
-     tOF = 292,
-     tPREVIOUS = 293,
-     tPUT = 294,
-     tREPEAT = 295,
-     tSET = 296,
-     tTHEN = 297,
-     tTO = 298,
-     tWHEN = 299,
-     tWITH = 300,
-     tWHILE = 301,
-     tNLELSE = 302,
-     tFACTORY = 303,
-     tMETHOD = 304,
-     tOPEN = 305,
-     tPLAY = 306,
-     tDONE = 307,
-     tPLAYACCEL = 308,
-     tGE = 309,
-     tLE = 310,
-     tGT = 311,
-     tLT = 312,
-     tEQ = 313,
-     tNEQ = 314,
-     tAND = 315,
-     tOR = 316,
-     tNOT = 317,
-     tCONCAT = 318,
-     tCONTAINS = 319,
-     tSTARTS = 320,
-     tSPRITE = 321,
-     tINTERSECTS = 322,
-     tWITHIN = 323
+     OBJECT = 266,
+     INT = 267,
+     THEENTITY = 268,
+     THEENTITYWITHID = 269,
+     FLOAT = 270,
+     BLTIN = 271,
+     BLTINNOARGS = 272,
+     BLTINNOARGSORONE = 273,
+     BLTINONEARG = 274,
+     BLTINARGLIST = 275,
+     ID = 276,
+     STRING = 277,
+     HANDLER = 278,
+     tDOWN = 279,
+     tELSE = 280,
+     tNLELSIF = 281,
+     tEND = 282,
+     tEXIT = 283,
+     tFRAME = 284,
+     tGLOBAL = 285,
+     tGO = 286,
+     tIF = 287,
+     tINTO = 288,
+     tLOOP = 289,
+     tMACRO = 290,
+     tMOVIE = 291,
+     tNEXT = 292,
+     tOF = 293,
+     tPREVIOUS = 294,
+     tPUT = 295,
+     tREPEAT = 296,
+     tSET = 297,
+     tTHEN = 298,
+     tTO = 299,
+     tWHEN = 300,
+     tWITH = 301,
+     tWHILE = 302,
+     tNLELSE = 303,
+     tFACTORY = 304,
+     tMETHOD = 305,
+     tOPEN = 306,
+     tPLAY = 307,
+     tDONE = 308,
+     tPLAYACCEL = 309,
+     tGE = 310,
+     tLE = 311,
+     tGT = 312,
+     tLT = 313,
+     tEQ = 314,
+     tNEQ = 315,
+     tAND = 316,
+     tOR = 317,
+     tNOT = 318,
+     tCONCAT = 319,
+     tCONTAINS = 320,
+     tSTARTS = 321,
+     tSPRITE = 322,
+     tINTERSECTS = 323,
+     tWITHIN = 324
    };
 #endif
 /* Tokens.  */
@@ -143,64 +144,65 @@
 #define RECT 263
 #define ARRAY 264
 #define SYMBOL 265
-#define INT 266
-#define THEENTITY 267
-#define THEENTITYWITHID 268
-#define FLOAT 269
-#define BLTIN 270
-#define BLTINNOARGS 271
-#define BLTINNOARGSORONE 272
-#define BLTINONEARG 273
-#define BLTINARGLIST 274
-#define ID 275
-#define STRING 276
-#define HANDLER 277
-#define tDOWN 278
-#define tELSE 279
-#define tNLELSIF 280
-#define tEND 281
-#define tEXIT 282
-#define tFRAME 283
-#define tGLOBAL 284
-#define tGO 285
-#define tIF 286
-#define tINTO 287
-#define tLOOP 288
-#define tMACRO 289
-#define tMOVIE 290
-#define tNEXT 291
-#define tOF 292
-#define tPREVIOUS 293
-#define tPUT 294
-#define tREPEAT 295
-#define tSET 296
-#define tTHEN 297
-#define tTO 298
-#define tWHEN 299
-#define tWITH 300
-#define tWHILE 301
-#define tNLELSE 302
-#define tFACTORY 303
-#define tMETHOD 304
-#define tOPEN 305
-#define tPLAY 306
-#define tDONE 307
-#define tPLAYACCEL 308
-#define tGE 309
-#define tLE 310
-#define tGT 311
-#define tLT 312
-#define tEQ 313
-#define tNEQ 314
-#define tAND 315
-#define tOR 316
-#define tNOT 317
-#define tCONCAT 318
-#define tCONTAINS 319
-#define tSTARTS 320
-#define tSPRITE 321
-#define tINTERSECTS 322
-#define tWITHIN 323
+#define OBJECT 266
+#define INT 267
+#define THEENTITY 268
+#define THEENTITYWITHID 269
+#define FLOAT 270
+#define BLTIN 271
+#define BLTINNOARGS 272
+#define BLTINNOARGSORONE 273
+#define BLTINONEARG 274
+#define BLTINARGLIST 275
+#define ID 276
+#define STRING 277
+#define HANDLER 278
+#define tDOWN 279
+#define tELSE 280
+#define tNLELSIF 281
+#define tEND 282
+#define tEXIT 283
+#define tFRAME 284
+#define tGLOBAL 285
+#define tGO 286
+#define tIF 287
+#define tINTO 288
+#define tLOOP 289
+#define tMACRO 290
+#define tMOVIE 291
+#define tNEXT 292
+#define tOF 293
+#define tPREVIOUS 294
+#define tPUT 295
+#define tREPEAT 296
+#define tSET 297
+#define tTHEN 298
+#define tTO 299
+#define tWHEN 300
+#define tWITH 301
+#define tWHILE 302
+#define tNLELSE 303
+#define tFACTORY 304
+#define tMETHOD 305
+#define tOPEN 306
+#define tPLAY 307
+#define tDONE 308
+#define tPLAYACCEL 309
+#define tGE 310
+#define tLE 311
+#define tGT 312
+#define tLT 313
+#define tEQ 314
+#define tNEQ 315
+#define tAND 316
+#define tOR 317
+#define tNOT 318
+#define tCONCAT 319
+#define tCONTAINS 320
+#define tSTARTS 321
+#define tSPRITE 322
+#define tINTERSECTS 323
+#define tWITHIN 324
 
 
 
@@ -258,7 +260,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 193 of yacc.c.  */
-#line 262 "engines/director/lingo/lingo-gr.cpp"
+#line 264 "engines/director/lingo/lingo-gr.cpp"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -271,7 +273,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 275 "engines/director/lingo/lingo-gr.cpp"
+#line 277 "engines/director/lingo/lingo-gr.cpp"
 
 #ifdef short
 # undef short
@@ -489,7 +491,7 @@ union yyalloc
 #define YYLAST   921
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  82
+#define YYNTOKENS  83
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  35
 /* YYNRULES -- Number of rules.  */
@@ -499,7 +501,7 @@ union yyalloc
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   323
+#define YYMAXUTOK   324
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -508,12 +510,12 @@ union yyalloc
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      75,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      76,     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,    74,    80,     2,
-      76,    77,    72,    70,    81,    71,     2,    73,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    75,    81,     2,
+      77,    78,    73,    71,    82,    72,     2,    74,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      79,    69,    78,     2,     2,     2,     2,     2,     2,     2,
+      80,    70,    79,     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,
@@ -539,7 +541,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,    66,    67,    68
+      65,    66,    67,    68,    69
 };
 
 #if YYDEBUG
@@ -565,53 +567,53 @@ static const yytype_uint16 yyprhs[] =
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      83,     0,    -1,    83,    84,    85,    -1,    85,    -1,     1,
-      84,    -1,    75,    -1,    -1,   110,    -1,   104,    -1,   115,
-      -1,    86,    -1,    88,    -1,    39,   103,    32,    20,    -1,
-      41,    20,    69,   103,    -1,    41,    12,    69,   103,    -1,
-      41,    13,   103,    69,   103,    -1,    41,    20,    43,   103,
-      -1,    41,    12,    43,   103,    -1,    41,    13,   103,    43,
-     103,    -1,   103,    -1,   104,    -1,    87,    -1,    89,    -1,
-      96,    76,    95,    77,   102,   101,    26,    40,    -1,    97,
-      69,   103,   101,    43,   103,   101,   102,   101,    26,    40,
-      -1,    97,    69,   103,   101,    23,    43,   103,   101,   102,
-     101,    26,    40,    -1,    44,    20,    42,   103,    -1,    98,
-      95,    42,    84,   102,   101,    26,    31,    -1,    98,    95,
-      42,    84,   102,   101,    47,   102,   101,    26,    31,    -1,
-      98,    95,    42,    84,   102,   101,   100,    91,   101,    26,
-      31,    -1,    98,    95,    42,   100,    87,   101,    -1,    98,
-      95,    42,   100,    87,   101,    47,   100,    87,   101,    -1,
-      98,    95,    42,   100,    87,   101,    92,   101,    90,   101,
-      -1,    -1,    47,   100,    87,    -1,    91,    94,    -1,    94,
-      -1,    92,    93,    -1,    93,    -1,    99,    95,    42,   100,
-      88,   101,    -1,    92,    -1,    99,    95,    42,   102,   101,
-      -1,   103,    -1,   103,    69,   103,    -1,    76,    95,    77,
-      -1,    40,    46,    -1,    40,    45,    20,    -1,    31,    -1,
-      25,    -1,    -1,    -1,    -1,   102,    84,    -1,   102,    88,
-      -1,    11,    -1,    14,    -1,    21,    -1,    16,    -1,    20,
-      76,   116,    77,    -1,    20,    -1,    12,    -1,    13,   103,
-      -1,    86,    -1,   103,    70,   103,    -1,   103,    71,   103,
-      -1,   103,    72,   103,    -1,   103,    73,   103,    -1,   103,
-      78,   103,    -1,   103,    79,   103,    -1,   103,    59,   103,
-      -1,   103,    54,   103,    -1,   103,    55,   103,    -1,   103,
-      60,   103,    -1,   103,    61,   103,    -1,    62,   103,    -1,
-     103,    80,   103,    -1,   103,    63,   103,    -1,   103,    64,
-     103,    -1,   103,    65,   103,    -1,    70,   103,    -1,    71,
-     103,    -1,    76,   103,    77,    -1,    66,   103,    67,   103,
-      -1,    66,   103,    68,   103,    -1,    39,   103,    -1,   106,
-      -1,   109,    -1,    27,    -1,    29,   105,    -1,    18,   103,
-      -1,    17,   103,    -1,    17,    -1,    19,   116,    -1,    50,
-     103,    45,   103,    -1,    50,   103,    -1,    20,    -1,   105,
-      81,    20,    -1,    30,    33,    -1,    30,    36,    -1,    30,
-      38,    -1,    30,   107,    -1,    30,   107,   108,    -1,    30,
-     108,    -1,    28,   103,    -1,   103,    -1,    37,    35,   103,
-      -1,    35,   103,    -1,    51,    52,    -1,    51,   107,    -1,
-      51,   107,   108,    -1,    51,   108,    -1,    -1,    34,    20,
-     111,   100,   113,    84,   114,   102,    -1,    48,    20,    -1,
-      -1,    49,    20,   112,   100,   113,    84,   114,   102,    -1,
-      -1,    20,    -1,   113,    81,    20,    -1,   113,    84,    81,
-      20,    -1,    -1,    20,   100,   116,    -1,    -1,   103,    -1,
-     116,    81,   103,    -1
+      84,     0,    -1,    84,    85,    86,    -1,    86,    -1,     1,
+      85,    -1,    76,    -1,    -1,   111,    -1,   105,    -1,   116,
+      -1,    87,    -1,    89,    -1,    40,   104,    33,    21,    -1,
+      42,    21,    70,   104,    -1,    42,    13,    70,   104,    -1,
+      42,    14,   104,    70,   104,    -1,    42,    21,    44,   104,
+      -1,    42,    13,    44,   104,    -1,    42,    14,   104,    44,
+     104,    -1,   104,    -1,   105,    -1,    88,    -1,    90,    -1,
+      97,    77,    96,    78,   103,   102,    27,    41,    -1,    98,
+      70,   104,   102,    44,   104,   102,   103,   102,    27,    41,
+      -1,    98,    70,   104,   102,    24,    44,   104,   102,   103,
+     102,    27,    41,    -1,    45,    21,    43,   104,    -1,    99,
+      96,    43,    85,   103,   102,    27,    32,    -1,    99,    96,
+      43,    85,   103,   102,    48,   103,   102,    27,    32,    -1,
+      99,    96,    43,    85,   103,   102,   101,    92,   102,    27,
+      32,    -1,    99,    96,    43,   101,    88,   102,    -1,    99,
+      96,    43,   101,    88,   102,    48,   101,    88,   102,    -1,
+      99,    96,    43,   101,    88,   102,    93,   102,    91,   102,
+      -1,    -1,    48,   101,    88,    -1,    92,    95,    -1,    95,
+      -1,    93,    94,    -1,    94,    -1,   100,    96,    43,   101,
+      89,   102,    -1,    93,    -1,   100,    96,    43,   103,   102,
+      -1,   104,    -1,   104,    70,   104,    -1,    77,    96,    78,
+      -1,    41,    47,    -1,    41,    46,    21,    -1,    32,    -1,
+      26,    -1,    -1,    -1,    -1,   103,    85,    -1,   103,    89,
+      -1,    12,    -1,    15,    -1,    22,    -1,    17,    -1,    21,
+      77,   117,    78,    -1,    21,    -1,    13,    -1,    14,   104,
+      -1,    87,    -1,   104,    71,   104,    -1,   104,    72,   104,
+      -1,   104,    73,   104,    -1,   104,    74,   104,    -1,   104,
+      79,   104,    -1,   104,    80,   104,    -1,   104,    60,   104,
+      -1,   104,    55,   104,    -1,   104,    56,   104,    -1,   104,
+      61,   104,    -1,   104,    62,   104,    -1,    63,   104,    -1,
+     104,    81,   104,    -1,   104,    64,   104,    -1,   104,    65,
+     104,    -1,   104,    66,   104,    -1,    71,   104,    -1,    72,
+     104,    -1,    77,   104,    78,    -1,    67,   104,    68,   104,
+      -1,    67,   104,    69,   104,    -1,    40,   104,    -1,   107,
+      -1,   110,    -1,    28,    -1,    30,   106,    -1,    19,   104,
+      -1,    18,   104,    -1,    18,    -1,    20,   117,    -1,    51,
+     104,    46,   104,    -1,    51,   104,    -1,    21,    -1,   106,
+      82,    21,    -1,    31,    34,    -1,    31,    37,    -1,    31,
+      39,    -1,    31,   108,    -1,    31,   108,   109,    -1,    31,
+     109,    -1,    29,   104,    -1,   104,    -1,    38,    36,   104,
+      -1,    36,   104,    -1,    52,    53,    -1,    52,   108,    -1,
+      52,   108,   109,    -1,    52,   109,    -1,    -1,    35,    21,
+     112,   101,   114,    85,   115,   103,    -1,    49,    21,    -1,
+      -1,    50,    21,   113,   101,   114,    85,   115,   103,    -1,
+      -1,    21,    -1,   114,    82,    21,    -1,   114,    85,    82,
+      21,    -1,    -1,    21,   101,   117,    -1,    -1,   104,    -1,
+     117,    82,   104,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -639,7 +641,7 @@ static const yytype_uint16 yyrline[] =
 static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "UNARY", "CASTREF", "VOID", "VAR",
-  "POINT", "RECT", "ARRAY", "SYMBOL", "INT", "THEENTITY",
+  "POINT", "RECT", "ARRAY", "SYMBOL", "OBJECT", "INT", "THEENTITY",
   "THEENTITYWITHID", "FLOAT", "BLTIN", "BLTINNOARGS", "BLTINNOARGSORONE",
   "BLTINONEARG", "BLTINARGLIST", "ID", "STRING", "HANDLER", "tDOWN",
   "tELSE", "tNLELSIF", "tEND", "tEXIT", "tFRAME", "tGLOBAL", "tGO", "tIF",
@@ -670,28 +672,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,   321,   322,   323,    61,
-      43,    45,    42,    47,    37,    10,    40,    41,    62,    60,
-      38,    44
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+      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,    82,    83,    83,    83,    84,    85,    85,    85,    85,
-      85,    85,    86,    86,    86,    86,    86,    86,    86,    87,
-      87,    88,    88,    88,    88,    88,    88,    89,    89,    89,
-      89,    89,    89,    90,    90,    91,    91,    92,    92,    93,
-      94,    94,    95,    95,    95,    96,    97,    98,    99,   100,
-     101,   102,   102,   102,   103,   103,   103,   103,   103,   103,
-     103,   103,   103,   103,   103,   103,   103,   103,   103,   103,
-     103,   103,   103,   103,   103,   103,   103,   103,   103,   103,
-     103,   103,   103,   103,   104,   104,   104,   104,   104,   104,
-     104,   104,   104,   104,   104,   105,   105,   106,   106,   106,
-     106,   106,   106,   107,   107,   108,   108,   109,   109,   109,
-     109,   111,   110,   110,   112,   110,   113,   113,   113,   113,
-     114,   115,   116,   116,   116
+       0,    83,    84,    84,    84,    85,    86,    86,    86,    86,
+      86,    86,    87,    87,    87,    87,    87,    87,    87,    88,
+      88,    89,    89,    89,    89,    89,    89,    90,    90,    90,
+      90,    90,    90,    91,    91,    92,    92,    93,    93,    94,
+      95,    95,    96,    96,    96,    97,    98,    99,   100,   101,
+     102,   103,   103,   103,   104,   104,   104,   104,   104,   104,
+     104,   104,   104,   104,   104,   104,   104,   104,   104,   104,
+     104,   104,   104,   104,   104,   104,   104,   104,   104,   104,
+     104,   104,   104,   104,   105,   105,   105,   105,   105,   105,
+     105,   105,   105,   105,   105,   106,   106,   107,   107,   107,
+     107,   107,   107,   108,   108,   109,   109,   110,   110,   110,
+     110,   112,   111,   111,   113,   111,   114,   114,   114,   114,
+     115,   116,   117,   117,   117
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -759,41 +761,41 @@ static const yytype_int16 yydefgoto[] =
 #define YYPACT_NINF -198
 static const yytype_int16 yypact[] =
 {
-     244,   -52,  -198,  -198,   386,  -198,  -198,   386,   386,   386,
-     792,  -198,  -198,    19,   574,  -198,    23,   386,    11,     7,
-      27,    42,    43,   386,   614,   386,   386,   386,   386,   386,
-       5,  -198,     6,  -198,  -198,  -198,   -47,    -8,   513,   770,
-    -198,  -198,  -198,  -198,  -198,  -198,  -198,    -5,   386,  -198,
-     770,   770,   770,   770,    -6,   386,   386,  -198,     1,   386,
-    -198,   386,  -198,    37,  -198,   770,     9,  -198,  -198,   152,
-      56,  -198,   -36,   386,   -28,    36,  -198,  -198,   650,  -198,
-       9,  -198,   841,   672,   841,   841,   721,  -198,   342,   513,
-     386,   513,    44,   748,   386,   386,   386,   386,   386,   386,
-     386,   386,   386,   386,   386,   386,   386,   386,   386,   152,
-     386,   -56,    -6,    63,   770,   770,   386,  -198,  -198,    64,
-    -198,   386,   386,   628,   386,   386,   386,  -198,   386,  -198,
-     386,   386,  -198,  -198,     8,   770,    10,   694,   -52,   386,
-     770,   770,   770,   770,   770,   770,   770,   770,   819,   819,
-     841,   841,   770,   770,   770,   770,  -198,  -198,   770,    72,
-    -198,   770,   770,   386,   386,   770,   770,   770,    72,   770,
-     770,   770,  -198,   -11,  -198,  -198,   530,   770,  -198,   -57,
-     770,   770,   -57,   403,    50,   386,   403,  -198,  -198,    74,
-      14,    14,  -198,  -198,    73,   386,   770,   -10,   -16,  -198,
-      78,  -198,  -198,    61,   770,  -198,    75,  -198,    79,  -198,
-    -198,    79,  -198,   513,  -198,   403,   403,  -198,  -198,   403,
-    -198,   403,    79,    79,  -198,   513,   530,  -198,    58,    65,
-     403,    77,    82,  -198,    84,    69,  -198,  -198,  -198,  -198,
-      86,    76,    88,    89,   -15,  -198,   530,  -198,   469,    81,
-    -198,  -198,  -198,   403,  -198,  -198,  -198,  -198,  -198
+     243,   -53,  -198,  -198,   385,  -198,  -198,   385,   385,   385,
+     791,  -198,  -198,    18,   573,  -198,    22,   385,     7,     6,
+      26,    31,    36,   385,   613,   385,   385,   385,   385,   385,
+       4,  -198,     5,  -198,  -198,  -198,   -48,    -8,   512,   769,
+    -198,  -198,  -198,  -198,  -198,  -198,  -198,   -14,   385,  -198,
+     769,   769,   769,   769,   -21,   385,   385,  -198,    -4,   385,
+    -198,   385,  -198,    38,  -198,   769,     8,  -198,  -198,   151,
+      54,  -198,   -37,   385,   -29,    39,  -198,  -198,   649,  -198,
+       8,  -198,   840,   671,   840,   840,   720,  -198,   341,   512,
+     385,   512,    40,   747,   385,   385,   385,   385,   385,   385,
+     385,   385,   385,   385,   385,   385,   385,   385,   385,   151,
+     385,   -57,   -21,    63,   769,   769,   385,  -198,  -198,    64,
+    -198,   385,   385,   627,   385,   385,   385,  -198,   385,  -198,
+     385,   385,  -198,  -198,     9,   769,    14,   693,   -53,   385,
+     769,   769,   769,   769,   769,   769,   769,   769,   818,   818,
+     840,   840,   769,   769,   769,   769,  -198,  -198,   769,    65,
+    -198,   769,   769,   385,   385,   769,   769,   769,    65,   769,
+     769,   769,  -198,   -12,  -198,  -198,   529,   769,  -198,   -58,
+     769,   769,   -58,   402,    49,   385,   402,  -198,  -198,    73,
+      13,    13,  -198,  -198,    71,   385,   769,   -11,   -17,  -198,
+      78,  -198,  -198,    60,   769,  -198,    72,  -198,    77,  -198,
+    -198,    77,  -198,   512,  -198,   402,   402,  -198,  -198,   402,
+    -198,   402,    77,    77,  -198,   512,   529,  -198,    57,    67,
+     402,    79,    80,  -198,    81,    68,  -198,  -198,  -198,  -198,
+      85,    74,    84,    87,   -16,  -198,   529,  -198,   468,    76,
+    -198,  -198,  -198,   402,  -198,  -198,  -198,  -198,  -198
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -198,  -198,    12,    25,     2,  -172,     0,  -198,  -198,  -198,
-     -83,  -197,  -105,   -61,  -198,  -198,  -198,  -186,    -9,   113,
+    -198,  -198,    12,    25,     2,  -170,     0,  -198,  -198,  -198,
+     -78,  -197,  -101,   -61,  -198,  -198,  -198,  -186,    -9,   113,
     -167,    41,     3,  -198,  -198,    98,    -7,  -198,  -198,  -198,
-    -198,   -45,   -67,  -198,    -3
+    -198,   -45,   -67,  -198,    16
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -803,19 +805,19 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -60
 static const yytype_int16 yytable[] =
 {
-      34,    56,    32,    40,   187,    87,   -10,   121,   186,   209,
+      34,    56,    32,    40,    87,   -10,   187,   121,   186,   209,
      -51,   -51,   184,    46,   227,   124,   206,    81,    45,    72,
       73,   156,   225,    45,   189,   110,   227,    74,   134,    89,
      136,   210,   185,   122,   215,   216,   225,   207,   219,    57,
      221,   125,    88,    68,    61,    50,    63,    75,    51,    52,
-      53,   230,   111,   112,   236,    65,    70,    71,    69,   117,
-     -51,    90,    76,    77,    78,    65,    82,    83,    84,    85,
-      86,    55,   116,   129,   254,   110,   120,   253,   126,    93,
-      45,   -10,   113,   157,   160,   172,   138,   174,    34,   109,
-      32,    40,   178,   195,   199,   200,    53,    53,   214,   203,
-     114,   217,   115,   241,   209,   237,   220,   239,   242,   159,
-     243,   244,   249,   133,   123,   211,   250,   233,   168,   251,
-     252,   256,    80,   182,   202,     0,     0,     0,     0,   176,
+      53,   230,    76,    70,    71,    65,   236,    77,    69,   117,
+     -51,   110,    90,    55,    78,    65,    82,    83,    84,    85,
+      86,   111,   112,   129,   116,   120,   254,   253,   113,    93,
+      45,   -10,   126,   138,   157,   160,   178,   172,    34,   109,
+      32,    40,   174,   195,   199,   200,    53,    53,   203,   214,
+     114,   217,   115,   209,   220,   237,   241,   242,   243,   159,
+     239,   244,   249,   133,   123,   250,   251,   256,   168,   252,
+     211,   233,    80,   182,   202,     0,     0,     0,     0,   176,
       93,   135,   137,     0,     0,   140,   141,   142,   143,   144,
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
      175,   155,   229,     0,     0,     0,     0,   158,     0,     0,
@@ -827,7 +829,7 @@ static const yytype_int16 yytable[] =
        0,    96,    97,    98,     0,    99,   100,   101,     0,     0,
        0,     0,   102,   103,   104,   105,   196,     0,   246,     0,
      106,   107,   108,     0,     0,     0,   204,     0,     0,     0,
-       0,     0,     0,     0,    -6,     1,     0,     0,   255,     0,
+       0,     0,     0,    -6,     1,     0,     0,     0,   255,     0,
        0,     0,     0,     0,    93,     2,     3,     4,     5,     0,
        6,     7,     8,     9,    10,    11,    93,     0,     0,     0,
        0,    12,     0,    13,    14,    15,     0,     0,    16,     0,
@@ -900,131 +902,131 @@ static const yytype_int16 yytable[] =
 
 static const yytype_int16 yycheck[] =
 {
-       0,    10,     0,     0,   176,     0,     0,    43,   175,    25,
-      25,    26,    23,     1,   211,    43,    26,    24,    75,    12,
-      13,    77,   208,    75,    81,    81,   223,    20,    89,    76,
-      91,    47,    43,    69,   201,   202,   222,    47,   205,    20,
-     207,    69,    30,    20,    35,     4,    37,    20,     7,     8,
-       9,   218,    55,    56,   226,    14,    45,    46,    17,    66,
-      75,    69,    20,    20,    23,    24,    25,    26,    27,    28,
-      29,    76,    35,    80,   246,    81,    20,   244,    42,    38,
-      75,    75,    81,    20,    20,    77,    42,    77,    88,    48,
-      88,    88,    20,    43,    20,    81,    55,    56,    20,    26,
-      59,    40,    61,    26,    25,    47,    31,    42,    26,   118,
-      26,    42,    26,    88,    73,   198,    40,   222,   127,    31,
-      31,    40,    24,   168,   191,    -1,    -1,    -1,    -1,   138,
+       0,    10,     0,     0,     0,     0,   176,    44,   175,    26,
+      26,    27,    24,     1,   211,    44,    27,    24,    76,    13,
+      14,    78,   208,    76,    82,    82,   223,    21,    89,    77,
+      91,    48,    44,    70,   201,   202,   222,    48,   205,    21,
+     207,    70,    30,    21,    36,     4,    38,    21,     7,     8,
+       9,   218,    21,    46,    47,    14,   226,    21,    17,    66,
+      76,    82,    70,    77,    23,    24,    25,    26,    27,    28,
+      29,    55,    56,    80,    36,    21,   246,   244,    82,    38,
+      76,    76,    43,    43,    21,    21,    21,    78,    88,    48,
+      88,    88,    78,    44,    21,    82,    55,    56,    27,    21,
+      59,    41,    61,    26,    32,    48,    27,    27,    27,   118,
+      43,    43,    27,    88,    73,    41,    32,    41,   127,    32,
+     198,   222,    24,   168,   191,    -1,    -1,    -1,    -1,   138,
       89,    90,    91,    -1,    -1,    94,    95,    96,    97,    98,
       99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
      138,   110,   213,    -1,    -1,    -1,    -1,   116,    -1,    -1,
       -1,    -1,   121,   122,   225,   124,   125,   126,    -1,   128,
       -1,   130,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     139,    -1,    -1,    -1,    32,    -1,    -1,    -1,   197,    -1,
+     139,    -1,    -1,    -1,    33,    -1,    -1,    -1,   197,    -1,
       -1,   179,    -1,    -1,   182,    -1,    -1,    -1,    -1,    -1,
-      -1,   210,    -1,    -1,   163,   164,    54,    55,    -1,    -1,
-      -1,    59,    60,    61,    -1,    63,    64,    65,    -1,    -1,
-      -1,    -1,    70,    71,    72,    73,   185,    -1,   237,    -1,
-      78,    79,    80,    -1,    -1,    -1,   195,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,     0,     1,    -1,    -1,   248,    -1,
-      -1,    -1,    -1,    -1,   213,    11,    12,    13,    14,    -1,
-      16,    17,    18,    19,    20,    21,   225,    -1,    -1,    -1,
-      -1,    27,    -1,    29,    30,    31,    -1,    -1,    34,    -1,
-      -1,    -1,    -1,    39,    40,    41,    -1,    -1,    44,    -1,
-      -1,    -1,    48,    49,    50,    51,   183,    -1,    -1,   186,
-     187,    -1,    -1,    -1,    -1,    -1,    62,    -1,    -1,   196,
-      66,    -1,    -1,    -1,    70,    71,    -1,   204,    -1,    75,
-      76,    -1,    -1,    -1,   211,    -1,    -1,    -1,    -1,    -1,
+      -1,   210,    -1,    -1,   163,   164,    55,    56,    -1,    -1,
+      -1,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
+      -1,    -1,    71,    72,    73,    74,   185,    -1,   237,    -1,
+      79,    80,    81,    -1,    -1,    -1,   195,    -1,    -1,    -1,
+      -1,    -1,    -1,     0,     1,    -1,    -1,    -1,   248,    -1,
+      -1,    -1,    -1,    -1,   213,    12,    13,    14,    15,    -1,
+      17,    18,    19,    20,    21,    22,   225,    -1,    -1,    -1,
+      -1,    28,    -1,    30,    31,    32,    -1,    -1,    35,    -1,
+      -1,    -1,    -1,    40,    41,    42,    -1,    -1,    45,    -1,
+      -1,    -1,    49,    50,    51,    52,   183,    -1,    -1,   186,
+     187,    -1,    -1,    -1,    -1,    -1,    63,    -1,    -1,   196,
+      67,    -1,    -1,    -1,    71,    72,    -1,   204,    -1,    76,
+      77,    -1,    -1,    -1,   211,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   219,    -1,   221,   222,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,   230,    -1,    -1,    -1,    -1,    -1,   236,
-      -1,   238,    -1,    11,    12,    13,    14,    -1,    16,    17,
-      18,    19,    20,    21,    -1,    -1,   253,    -1,   255,    27,
-      -1,    29,    30,    31,    -1,    -1,    34,    -1,    -1,    -1,
-      -1,    39,    40,    41,    -1,    -1,    44,    -1,    -1,    -1,
-      48,    49,    50,    51,    -1,    -1,    -1,    11,    12,    13,
-      14,    -1,    16,    -1,    62,    -1,    20,    21,    66,    -1,
-      -1,    -1,    70,    71,    11,    12,    13,    14,    76,    16,
-      17,    18,    19,    20,    21,    39,    -1,    41,    -1,    -1,
-      27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    39,    40,    41,    -1,    -1,    44,    62,    -1,
-      -1,    -1,    66,    50,    51,    -1,    70,    71,    -1,    -1,
-      -1,    -1,    76,    -1,    -1,    62,    -1,    -1,    -1,    66,
-      -1,    -1,    -1,    70,    71,    -1,    -1,    -1,    75,    76,
-      11,    12,    13,    14,    -1,    16,    17,    18,    19,    20,
-      21,    -1,    -1,    -1,    -1,    -1,    27,    -1,    29,    30,
-      31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    40,
-      41,    -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    50,
-      51,    -1,    -1,    -1,    11,    12,    13,    14,    -1,    16,
-      -1,    62,    -1,    20,    21,    66,    -1,    -1,    -1,    70,
-      71,    11,    12,    13,    14,    76,    16,    17,    18,    19,
-      20,    21,    39,    -1,    41,    -1,    -1,    27,    -1,    29,
-      30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
-      -1,    41,    -1,    -1,    -1,    62,    -1,    -1,    -1,    66,
-      50,    51,    -1,    70,    71,    11,    12,    13,    14,    76,
-      16,    -1,    62,    -1,    20,    21,    66,    -1,    -1,    -1,
-      70,    71,    28,    -1,    -1,    -1,    76,    33,    -1,    35,
-      36,    37,    38,    39,    -1,    41,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    11,    12,    13,    14,    -1,
-      16,    -1,    -1,    -1,    20,    21,    62,    -1,    -1,    -1,
-      66,    -1,    28,    -1,    70,    71,    -1,    -1,    -1,    35,
-      76,    37,    -1,    39,    -1,    41,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,
-      -1,    43,    -1,    -1,    -1,    -1,    62,    -1,    -1,    -1,
-      66,    -1,    54,    55,    70,    71,    -1,    59,    60,    61,
-      76,    63,    64,    65,    -1,    45,    -1,    69,    70,    71,
-      72,    73,    -1,    -1,    54,    55,    78,    79,    80,    59,
-      60,    61,    -1,    63,    64,    65,    -1,    -1,    -1,    -1,
-      70,    71,    72,    73,    -1,    -1,    54,    55,    78,    79,
-      80,    59,    60,    61,    -1,    63,    64,    65,    -1,    67,
-      68,    -1,    70,    71,    72,    73,    -1,    -1,    54,    55,
-      78,    79,    80,    59,    60,    61,    -1,    63,    64,    65,
-      -1,    -1,    -1,    69,    70,    71,    72,    73,    -1,    -1,
-      -1,    77,    78,    79,    80,    54,    55,    -1,    -1,    -1,
-      59,    60,    61,    -1,    63,    64,    65,    -1,    -1,    -1,
-      -1,    70,    71,    72,    73,    -1,    -1,    -1,    77,    78,
-      79,    80,    54,    55,    -1,    -1,    -1,    59,    60,    61,
-      -1,    63,    64,    65,    -1,    -1,    -1,    69,    70,    71,
-      72,    73,    -1,    -1,    54,    55,    78,    79,    80,    59,
-      60,    61,    -1,    63,    64,    65,    -1,    -1,    -1,    -1,
-      70,    71,    72,    73,    -1,    -1,    54,    55,    78,    79,
-      80,    59,    60,    61,    -1,    63,    64,    65,    -1,    -1,
-      -1,    -1,    -1,    -1,    72,    73,    -1,    -1,    76,    -1,
-      78,    79,    80,    54,    55,    -1,    -1,    -1,    59,    60,
-      61,    -1,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,
-      -1,    72,    73,    -1,    -1,    54,    55,    78,    79,    80,
-      59,    60,    61,    -1,    63,    64,    65,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
-      79,    80
+      -1,   238,    -1,    12,    13,    14,    15,    -1,    17,    18,
+      19,    20,    21,    22,    -1,    -1,   253,    -1,   255,    28,
+      -1,    30,    31,    32,    -1,    -1,    35,    -1,    -1,    -1,
+      -1,    40,    41,    42,    -1,    -1,    45,    -1,    -1,    -1,
+      49,    50,    51,    52,    -1,    -1,    -1,    12,    13,    14,
+      15,    -1,    17,    -1,    63,    -1,    21,    22,    67,    -1,
+      -1,    -1,    71,    72,    12,    13,    14,    15,    77,    17,
+      18,    19,    20,    21,    22,    40,    -1,    42,    -1,    -1,
+      28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    40,    41,    42,    -1,    -1,    45,    63,    -1,
+      -1,    -1,    67,    51,    52,    -1,    71,    72,    -1,    -1,
+      -1,    -1,    77,    -1,    -1,    63,    -1,    -1,    -1,    67,
+      -1,    -1,    -1,    71,    72,    -1,    -1,    -1,    76,    77,
+      12,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
+      22,    -1,    -1,    -1,    -1,    -1,    28,    -1,    30,    31,
+      32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,    41,
+      42,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    51,
+      52,    -1,    -1,    -1,    12,    13,    14,    15,    -1,    17,
+      -1,    63,    -1,    21,    22,    67,    -1,    -1,    -1,    71,
+      72,    12,    13,    14,    15,    77,    17,    18,    19,    20,
+      21,    22,    40,    -1,    42,    -1,    -1,    28,    -1,    30,
+      31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,
+      -1,    42,    -1,    -1,    -1,    63,    -1,    -1,    -1,    67,
+      51,    52,    -1,    71,    72,    12,    13,    14,    15,    77,
+      17,    -1,    63,    -1,    21,    22,    67,    -1,    -1,    -1,
+      71,    72,    29,    -1,    -1,    -1,    77,    34,    -1,    36,
+      37,    38,    39,    40,    -1,    42,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    12,    13,    14,    15,    -1,
+      17,    -1,    -1,    -1,    21,    22,    63,    -1,    -1,    -1,
+      67,    -1,    29,    -1,    71,    72,    -1,    -1,    -1,    36,
+      77,    38,    -1,    40,    -1,    42,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,
+      -1,    44,    -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,
+      67,    -1,    55,    56,    71,    72,    -1,    60,    61,    62,
+      77,    64,    65,    66,    -1,    46,    -1,    70,    71,    72,
+      73,    74,    -1,    -1,    55,    56,    79,    80,    81,    60,
+      61,    62,    -1,    64,    65,    66,    -1,    -1,    -1,    -1,
+      71,    72,    73,    74,    -1,    -1,    55,    56,    79,    80,
+      81,    60,    61,    62,    -1,    64,    65,    66,    -1,    68,
+      69,    -1,    71,    72,    73,    74,    -1,    -1,    55,    56,
+      79,    80,    81,    60,    61,    62,    -1,    64,    65,    66,
+      -1,    -1,    -1,    70,    71,    72,    73,    74,    -1,    -1,
+      -1,    78,    79,    80,    81,    55,    56,    -1,    -1,    -1,
+      60,    61,    62,    -1,    64,    65,    66,    -1,    -1,    -1,
+      -1,    71,    72,    73,    74,    -1,    -1,    -1,    78,    79,
+      80,    81,    55,    56,    -1,    -1,    -1,    60,    61,    62,
+      -1,    64,    65,    66,    -1,    -1,    -1,    70,    71,    72,
+      73,    74,    -1,    -1,    55,    56,    79,    80,    81,    60,
+      61,    62,    -1,    64,    65,    66,    -1,    -1,    -1,    -1,
+      71,    72,    73,    74,    -1,    -1,    55,    56,    79,    80,
+      81,    60,    61,    62,    -1,    64,    65,    66,    -1,    -1,
+      -1,    -1,    -1,    -1,    73,    74,    -1,    -1,    77,    -1,
+      79,    80,    81,    55,    56,    -1,    -1,    -1,    60,    61,
+      62,    -1,    64,    65,    66,    -1,    -1,    -1,    -1,    -1,
+      -1,    73,    74,    -1,    -1,    55,    56,    79,    80,    81,
+      60,    61,    62,    -1,    64,    65,    66,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+      80,    81
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,     1,    11,    12,    13,    14,    16,    17,    18,    19,
-      20,    21,    27,    29,    30,    31,    34,    39,    40,    41,
-      44,    48,    49,    50,    51,    62,    66,    70,    71,    76,
-      83,    85,    86,    87,    88,    89,    96,    97,    98,   103,
-     104,   106,   109,   110,   115,    75,    84,    20,    39,    86,
-     103,   103,   103,   103,   116,    76,   100,    20,   105,    28,
-      33,    35,    36,    37,    38,   103,   107,   108,    20,   103,
-      45,    46,    12,    13,    20,    20,    20,    20,   103,    52,
-     107,   108,   103,   103,   103,   103,   103,     0,    84,    76,
-      69,    76,    95,   103,    54,    55,    59,    60,    61,    63,
-      64,    65,    70,    71,    72,    73,    78,    79,    80,   103,
-      81,   116,   116,    81,   103,   103,    35,   108,   111,    32,
-      20,    43,    69,   103,    43,    69,    42,   112,    45,   108,
-      67,    68,    77,    85,    95,   103,    95,   103,    42,    69,
-     103,   103,   103,   103,   103,   103,   103,   103,   103,   103,
-     103,   103,   103,   103,   103,   103,    77,    20,   103,   100,
-      20,   103,   103,    43,    69,   103,   103,   103,   100,   103,
-     103,   103,    77,   101,    77,    84,   100,   103,    20,   113,
-     103,   103,   113,   102,    23,    43,   102,    87,   104,    81,
-      84,    84,    84,    88,   101,    43,   103,   101,   101,    20,
-      81,   114,   114,    26,   103,   101,    26,    47,   100,    25,
-      47,    92,    93,    99,    20,   102,   102,    40,   101,   102,
-      31,   102,    91,    92,    94,    99,   100,    93,   101,    95,
-     102,   101,   101,    94,   101,    95,    87,    47,    90,    42,
-     101,    26,    26,    26,    42,   101,   100,   101,   100,    26,
-      40,    31,    31,   102,    87,    88,    40,   101,   101
+       0,     1,    12,    13,    14,    15,    17,    18,    19,    20,
+      21,    22,    28,    30,    31,    32,    35,    40,    41,    42,
+      45,    49,    50,    51,    52,    63,    67,    71,    72,    77,
+      84,    86,    87,    88,    89,    90,    97,    98,    99,   104,
+     105,   107,   110,   111,   116,    76,    85,    21,    40,    87,
+     104,   104,   104,   104,   117,    77,   101,    21,   106,    29,
+      34,    36,    37,    38,    39,   104,   108,   109,    21,   104,
+      46,    47,    13,    14,    21,    21,    21,    21,   104,    53,
+     108,   109,   104,   104,   104,   104,   104,     0,    85,    77,
+      70,    77,    96,   104,    55,    56,    60,    61,    62,    64,
+      65,    66,    71,    72,    73,    74,    79,    80,    81,   104,
+      82,   117,   117,    82,   104,   104,    36,   109,   112,    33,
+      21,    44,    70,   104,    44,    70,    43,   113,    46,   109,
+      68,    69,    78,    86,    96,   104,    96,   104,    43,    70,
+     104,   104,   104,   104,   104,   104,   104,   104,   104,   104,
+     104,   104,   104,   104,   104,   104,    78,    21,   104,   101,
+      21,   104,   104,    44,    70,   104,   104,   104,   101,   104,
+     104,   104,    78,   102,    78,    85,   101,   104,    21,   114,
+     104,   104,   114,   103,    24,    44,   103,    88,   105,    82,
+      85,    85,    85,    89,   102,    44,   104,   102,   102,    21,
+      82,   115,   115,    27,   104,   102,    27,    48,   101,    26,
+      48,    93,    94,   100,    21,   103,   103,    41,   102,   103,
+      32,   103,    92,    93,    95,   100,   101,    94,   102,    96,
+     103,   102,   102,    95,   102,    96,    88,    48,    91,    43,
+     102,    27,    27,    27,    43,   102,   101,   102,   101,    27,
+      41,    32,    32,   103,    88,    89,    41,   102,   102
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2529,7 +2531,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 2533 "engines/director/lingo/lingo-gr.cpp"
+#line 2535 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index de14709..49bd8b5 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -47,64 +47,65 @@
      RECT = 263,
      ARRAY = 264,
      SYMBOL = 265,
-     INT = 266,
-     THEENTITY = 267,
-     THEENTITYWITHID = 268,
-     FLOAT = 269,
-     BLTIN = 270,
-     BLTINNOARGS = 271,
-     BLTINNOARGSORONE = 272,
-     BLTINONEARG = 273,
-     BLTINARGLIST = 274,
-     ID = 275,
-     STRING = 276,
-     HANDLER = 277,
-     tDOWN = 278,
-     tELSE = 279,
-     tNLELSIF = 280,
-     tEND = 281,
-     tEXIT = 282,
-     tFRAME = 283,
-     tGLOBAL = 284,
-     tGO = 285,
-     tIF = 286,
-     tINTO = 287,
-     tLOOP = 288,
-     tMACRO = 289,
-     tMOVIE = 290,
-     tNEXT = 291,
-     tOF = 292,
-     tPREVIOUS = 293,
-     tPUT = 294,
-     tREPEAT = 295,
-     tSET = 296,
-     tTHEN = 297,
-     tTO = 298,
-     tWHEN = 299,
-     tWITH = 300,
-     tWHILE = 301,
-     tNLELSE = 302,
-     tFACTORY = 303,
-     tMETHOD = 304,
-     tOPEN = 305,
-     tPLAY = 306,
-     tDONE = 307,
-     tPLAYACCEL = 308,
-     tGE = 309,
-     tLE = 310,
-     tGT = 311,
-     tLT = 312,
-     tEQ = 313,
-     tNEQ = 314,
-     tAND = 315,
-     tOR = 316,
-     tNOT = 317,
-     tCONCAT = 318,
-     tCONTAINS = 319,
-     tSTARTS = 320,
-     tSPRITE = 321,
-     tINTERSECTS = 322,
-     tWITHIN = 323
+     OBJECT = 266,
+     INT = 267,
+     THEENTITY = 268,
+     THEENTITYWITHID = 269,
+     FLOAT = 270,
+     BLTIN = 271,
+     BLTINNOARGS = 272,
+     BLTINNOARGSORONE = 273,
+     BLTINONEARG = 274,
+     BLTINARGLIST = 275,
+     ID = 276,
+     STRING = 277,
+     HANDLER = 278,
+     tDOWN = 279,
+     tELSE = 280,
+     tNLELSIF = 281,
+     tEND = 282,
+     tEXIT = 283,
+     tFRAME = 284,
+     tGLOBAL = 285,
+     tGO = 286,
+     tIF = 287,
+     tINTO = 288,
+     tLOOP = 289,
+     tMACRO = 290,
+     tMOVIE = 291,
+     tNEXT = 292,
+     tOF = 293,
+     tPREVIOUS = 294,
+     tPUT = 295,
+     tREPEAT = 296,
+     tSET = 297,
+     tTHEN = 298,
+     tTO = 299,
+     tWHEN = 300,
+     tWITH = 301,
+     tWHILE = 302,
+     tNLELSE = 303,
+     tFACTORY = 304,
+     tMETHOD = 305,
+     tOPEN = 306,
+     tPLAY = 307,
+     tDONE = 308,
+     tPLAYACCEL = 309,
+     tGE = 310,
+     tLE = 311,
+     tGT = 312,
+     tLT = 313,
+     tEQ = 314,
+     tNEQ = 315,
+     tAND = 316,
+     tOR = 317,
+     tNOT = 318,
+     tCONCAT = 319,
+     tCONTAINS = 320,
+     tSTARTS = 321,
+     tSPRITE = 322,
+     tINTERSECTS = 323,
+     tWITHIN = 324
    };
 #endif
 /* Tokens.  */
@@ -116,64 +117,65 @@
 #define RECT 263
 #define ARRAY 264
 #define SYMBOL 265
-#define INT 266
-#define THEENTITY 267
-#define THEENTITYWITHID 268
-#define FLOAT 269
-#define BLTIN 270
-#define BLTINNOARGS 271
-#define BLTINNOARGSORONE 272
-#define BLTINONEARG 273
-#define BLTINARGLIST 274
-#define ID 275
-#define STRING 276
-#define HANDLER 277
-#define tDOWN 278
-#define tELSE 279
-#define tNLELSIF 280
-#define tEND 281
-#define tEXIT 282
-#define tFRAME 283
-#define tGLOBAL 284
-#define tGO 285
-#define tIF 286
-#define tINTO 287
-#define tLOOP 288
-#define tMACRO 289
-#define tMOVIE 290
-#define tNEXT 291
-#define tOF 292
-#define tPREVIOUS 293
-#define tPUT 294
-#define tREPEAT 295
-#define tSET 296
-#define tTHEN 297
-#define tTO 298
-#define tWHEN 299
-#define tWITH 300
-#define tWHILE 301
-#define tNLELSE 302
-#define tFACTORY 303
-#define tMETHOD 304
-#define tOPEN 305
-#define tPLAY 306
-#define tDONE 307
-#define tPLAYACCEL 308
-#define tGE 309
-#define tLE 310
-#define tGT 311
-#define tLT 312
-#define tEQ 313
-#define tNEQ 314
-#define tAND 315
-#define tOR 316
-#define tNOT 317
-#define tCONCAT 318
-#define tCONTAINS 319
-#define tSTARTS 320
-#define tSPRITE 321
-#define tINTERSECTS 322
-#define tWITHIN 323
+#define OBJECT 266
+#define INT 267
+#define THEENTITY 268
+#define THEENTITYWITHID 269
+#define FLOAT 270
+#define BLTIN 271
+#define BLTINNOARGS 272
+#define BLTINNOARGSORONE 273
+#define BLTINONEARG 274
+#define BLTINARGLIST 275
+#define ID 276
+#define STRING 277
+#define HANDLER 278
+#define tDOWN 279
+#define tELSE 280
+#define tNLELSIF 281
+#define tEND 282
+#define tEXIT 283
+#define tFRAME 284
+#define tGLOBAL 285
+#define tGO 286
+#define tIF 287
+#define tINTO 288
+#define tLOOP 289
+#define tMACRO 290
+#define tMOVIE 291
+#define tNEXT 292
+#define tOF 293
+#define tPREVIOUS 294
+#define tPUT 295
+#define tREPEAT 296
+#define tSET 297
+#define tTHEN 298
+#define tTO 299
+#define tWHEN 300
+#define tWITH 301
+#define tWHILE 302
+#define tNLELSE 303
+#define tFACTORY 304
+#define tMETHOD 305
+#define tOPEN 306
+#define tPLAY 307
+#define tDONE 308
+#define tPLAYACCEL 309
+#define tGE 310
+#define tLE 311
+#define tGT 312
+#define tLT 313
+#define tEQ 314
+#define tNEQ 315
+#define tAND 316
+#define tOR 317
+#define tNOT 318
+#define tCONCAT 319
+#define tCONTAINS 320
+#define tSTARTS 321
+#define tSPRITE 322
+#define tINTERSECTS 323
+#define tWITHIN 324
 
 
 
@@ -191,7 +193,7 @@ typedef union YYSTYPE
 	Common::Array<double> *arr;
 }
 /* Line 1529 of yacc.c.  */
-#line 195 "engines/director/lingo/lingo-gr.hpp"
+#line 197 "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 1315078..f8c6aa3 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -77,7 +77,7 @@ void yyerror(char *s) {
 }
 
 %token UNARY
-%token CASTREF VOID VAR POINT RECT ARRAY SYMBOL
+%token CASTREF VOID VAR POINT RECT ARRAY SYMBOL OBJECT
 %token<i> INT
 %token<e> THEENTITY THEENTITYWITHID
 %token<f> FLOAT


Commit: c9bee722075a01860fd0c55ad4e6f9076a509084
    https://github.com/scummvm/scummvm/commit/c9bee722075a01860fd0c55ad4e6f9076a509084
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-12T17:45:21+02:00

Commit Message:
DIRECTOR: Lingo: Fix factory method argument count

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y



diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 09b6dc9..b54619c 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -2475,7 +2475,7 @@ yyreduce:
     {
 			g_lingo->codeConst(0); // Push fake value on stack
 			g_lingo->code1(g_lingo->c_procret);
-			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg), &g_lingo->_currentFactory);
+			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; ;}
     break;
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index f8c6aa3..7f6a71c 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -500,7 +500,7 @@ defn: tMACRO ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); }
 		begin argdef nl argstore stmtlist 		{
 			g_lingo->codeConst(0); // Push fake value on stack
 			g_lingo->code1(g_lingo->c_procret);
-			g_lingo->define(*$2, $4, $5, &g_lingo->_currentFactory);
+			g_lingo->define(*$2, $4, $5 + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; }	;
 argdef:  /* nothing */ 		{ $$ = 0; }
 	| ID					{ g_lingo->codeArg($1); $$ = 1; }


Commit: a19d39c79b75f29daeacf9257e29a49d0d11bbc0
    https://github.com/scummvm/scummvm/commit/a19d39c79b75f29daeacf9257e29a49d0d11bbc0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2016-08-12T17:45:21+02:00

Commit Message:
DIRECTOR: Lingo: Fix factory method code generation

Changed paths:
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.y



diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index b54619c..6312805 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -630,8 +630,8 @@ static const yytype_uint16 yyrline[] =
      393,   394,   395,   396,   399,   400,   401,   402,   404,   405,
      408,   411,   414,   415,   416,   419,   420,   431,   432,   433,
      434,   437,   440,   445,   446,   449,   450,   453,   454,   457,
-     460,   490,   490,   496,   499,   499,   505,   506,   507,   508,
-     510,   514,   522,   523,   524
+     460,   490,   490,   496,   499,   499,   504,   505,   506,   507,
+     509,   513,   521,   522,   523
 };
 #endif
 
@@ -2473,39 +2473,38 @@ yyreduce:
   case 115:
 #line 500 "engines/director/lingo/lingo-gr.y"
     {
-			g_lingo->codeConst(0); // Push fake value on stack
-			g_lingo->code1(g_lingo->c_procret);
+			g_lingo->code1(STOP);
 			g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; ;}
     break;
 
   case 116:
-#line 505 "engines/director/lingo/lingo-gr.y"
+#line 504 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
   case 117:
-#line 506 "engines/director/lingo/lingo-gr.y"
+#line 505 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
     break;
 
   case 118:
-#line 507 "engines/director/lingo/lingo-gr.y"
+#line 506 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
   case 119:
-#line 508 "engines/director/lingo/lingo-gr.y"
+#line 507 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
     break;
 
   case 120:
-#line 510 "engines/director/lingo/lingo-gr.y"
+#line 509 "engines/director/lingo/lingo-gr.y"
     { g_lingo->codeArgStore(); ;}
     break;
 
   case 121:
-#line 514 "engines/director/lingo/lingo-gr.y"
+#line 513 "engines/director/lingo/lingo-gr.y"
     {
 		g_lingo->code1(g_lingo->c_call);
 		g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str());
@@ -2515,23 +2514,23 @@ yyreduce:
     break;
 
   case 122:
-#line 522 "engines/director/lingo/lingo-gr.y"
+#line 521 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 0; ;}
     break;
 
   case 123:
-#line 523 "engines/director/lingo/lingo-gr.y"
+#line 522 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = 1; ;}
     break;
 
   case 124:
-#line 524 "engines/director/lingo/lingo-gr.y"
+#line 523 "engines/director/lingo/lingo-gr.y"
     { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
     break;
 
 
 /* Line 1267 of yacc.c.  */
-#line 2535 "engines/director/lingo/lingo-gr.cpp"
+#line 2534 "engines/director/lingo/lingo-gr.cpp"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2745,6 +2744,6 @@ yyreturn:
 }
 
 
-#line 527 "engines/director/lingo/lingo-gr.y"
+#line 526 "engines/director/lingo/lingo-gr.y"
 
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 7f6a71c..ea66bc6 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -498,8 +498,7 @@ defn: tMACRO ID { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); }
 		}
 	| tMETHOD ID { g_lingo->_indef = true; }
 		begin argdef nl argstore stmtlist 		{
-			g_lingo->codeConst(0); // Push fake value on stack
-			g_lingo->code1(g_lingo->c_procret);
+			g_lingo->code1(STOP);
 			g_lingo->define(*$2, $4, $5 + 1, &g_lingo->_currentFactory);
 			g_lingo->_indef = false; }	;
 argdef:  /* nothing */ 		{ $$ = 0; }






More information about the Scummvm-git-logs mailing list