[Scummvm-git-logs] scummvm master -> de5c4092fe9f0ebdc0941281b14a1809b86dd33e

sev- sev at scummvm.org
Sun May 10 19:46:25 UTC 2020


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

Summary:
b52e09b321 DIRECTOR: LINGO: Fixed 'if' preprocessor
1a373ab241 DIRECTOR: LINGO: Added tests for new 'if' edge case
9c772b1a0c DIRECTOR: LINGO: Expanded grammar to accept expression as references
de5c4092fe DIRECTOR: LINGO: Added test for new cast reference flavor


Commit: b52e09b321c6f9fe3f8ba48f457792c050da96de
    https://github.com/scummvm/scummvm/commit/b52e09b321c6f9fe3f8ba48f457792c050da96de
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-10T21:46:06+02:00

Commit Message:
DIRECTOR: LINGO: Fixed 'if' preprocessor

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


diff --git a/engines/director/lingo/lingo-preprocessor.cpp b/engines/director/lingo/lingo-preprocessor.cpp
index 2b3b8dbb4d..8143becbda 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -255,7 +255,7 @@ Common::String Lingo::codePreprocessor(const char *s, bool simple) {
 				if (elseif == false) {
 					warning("Badly nested else");
 				}
-			} else { // check if we have tNLELSE
+			} else { // check if we have tNLELSE or \nEND
 				if (!*s) {
 					break;
 				}
@@ -263,11 +263,22 @@ Common::String Lingo::codePreprocessor(const char *s, bool simple) {
 
 				while (*s1 && *s1 == '\n')
 					s1++;
-				tok = nexttok(s1);
+				tok = nexttok(s1, &s1);
 
 				if (tok.equalsIgnoreCase("else") && elseif) {
 					// Nothing to do here, same level
 					debugC(2, kDebugLingoParse, "tNLELSE");
+				} else if (tok.equalsIgnoreCase("end") && elseif) {
+					tok = nexttok(s1);
+
+					if (tok.equalsIgnoreCase("if")) {
+						// Nothing to do here
+						debugC(2, kDebugLingoParse, "see-end-if");
+					} else {
+						debugC(2, kDebugLingoParse, "++++ end if (no tNLELSE 2)");
+						res += " end if";
+						iflevel--;
+					}
 				} else {
 					debugC(2, kDebugLingoParse, "++++ end if (no tNLELSE)");
 					res += " end if";


Commit: 1a373ab241547b06c871904e406fe3100208b61a
    https://github.com/scummvm/scummvm/commit/1a373ab241547b06c871904e406fe3100208b61a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-10T21:46:06+02:00

Commit Message:
DIRECTOR: LINGO: Added tests for new 'if' edge case

Changed paths:
    engines/director/lingo/tests/if.lingo


diff --git a/engines/director/lingo/tests/if.lingo b/engines/director/lingo/tests/if.lingo
index 05176dfa07..20dfb2c97e 100644
--- a/engines/director/lingo/tests/if.lingo
+++ b/engines/director/lingo/tests/if.lingo
@@ -124,6 +124,21 @@ if the selection = the text of cast A31 then go to frame "sEnd" else put 7 end i
 when keyDown then if the key = RETURN then checkField
 when keyDown then if the key = QUOTE then checkField else put "bar"
 
+  if the mouseH > ((the right of sprite 15) - 20) then HidePopUp
+  else if ((the mouseH > ((the left of sprite 15) + 30)) and Â
+           (the mouseH < ((the left of sprite 15) + 73)) and Â
+           (the mouseV > ((the top  of sprite 15) + 20)) and Â
+           (the mouseV < ((the top  of sprite 15) + 40))) then StoreButtonHit
+  else if ((the mouseH > ((the left of sprite 15) + 81)) and Â
+           (the mouseH < ((the left of sprite 15) +124)) and Â
+           (the mouseV > ((the top  of sprite 15) + 20)) and Â
+           (the mouseV < ((the top  of sprite 15) + 40))) then LoadButtonHit
+  else if ((the mouseH > ((the left of sprite 15) + 30)) and Â
+           (the mouseH < ((the left of sprite 15) +124)) and Â
+           (the mouseV > ((the top  of sprite 15) + 55)) and Â
+           (the mouseV < ((the top  of sprite 15) + 83))) then AudioButtonHit
+  end if
+
 macro WindowHorzP X
     set X1 = constrainH( 14, X )
     if X1 = X then return( TRUE )


Commit: 9c772b1a0c28a32d2df9cc64a29f14215c0b4dad
    https://github.com/scummvm/scummvm/commit/9c772b1a0c28a32d2df9cc64a29f14215c0b4dad
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-10T21:46:06+02:00

Commit Message:
DIRECTOR: LINGO: Expanded grammar to accept expression as references

Changed paths:
    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-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 7ba548f3df..9c7ea1a8bf 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 3.5.91.  */
+/* A Bison parser, made by GNU Bison 3.6.1.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
@@ -49,7 +49,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.5.91"
+#define YYBISON_VERSION "3.6.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -529,6 +529,7 @@ typedef int yytype_uint16;
 
 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
 
+
 /* Stored state numbers (used for stacks). */
 typedef yytype_int16 yy_state_t;
 
@@ -807,8 +808,8 @@ static const yytype_int16 yyrline[] =
      243,   254,   271,   283,   294,   296,   301,   305,   310,   314,
      324,   335,   336,   338,   345,   355,   366,   368,   374,   380,
      387,   389,   391,   392,   393,   395,   401,   404,   407,   411,
-     415,   419,   427,   429,   430,   431,   434,   437,   440,   446,
-     451,   457,   458,   459,   460,   461,   462,   463,   464,   465,
+     415,   419,   427,   428,   430,   431,   432,   435,   438,   441,
+     447,   452,   458,   459,   460,   461,   462,   463,   464,   465,
      466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
      476,   477,   478,   479,   480,   482,   483,   484,   485,   486,
      487,   488,   489,   491,   494,   496,   497,   498,   499,   500,
@@ -909,35 +910,35 @@ static const yytype_int16 yypact[] =
     -272,  -272,  -272,  -272,  -272,  -272,  -272,   -45,  1003,  1241,
     1661,   -34,  1241,   -34,  -272,  1241,  1661,   -26,  1241,  -272,
     -272,    70,  -272,  1241,  -272,    60,  -272,  1233,  -272,    85,
-    -272,    95,   384,    97,  -272,   -33,    23,    23,   -14,    75,
-      78,  -272,  1558,  1233,  -272,  -272,    51,  -272,  1281,  1314,
-    1347,  1380,  1628,  1545,   129,   131,  -272,  -272,  1591,    55,
-      58,  -272,  1661,    61,    62,    64,  -272,  -272,   479,  1661,
+    -272,    97,   384,   103,  -272,   -33,    23,    23,   -14,    77,
+      98,  -272,  1558,  1233,  -272,  -272,    55,  -272,  1281,  1314,
+    1347,  1380,  1628,  1545,   131,   132,  -272,  -272,  1591,    58,
+      59,  -272,  1661,    61,    64,    66,  -272,  -272,   479,  1661,
     -272,  -272,  1661,  -272,  -272,  1241,  1661,  -272,  -272,  1241,
     1241,  1241,  1241,  1241,  1241,  1241,  1241,  1241,  1241,  1241,
-    1241,  1241,  1241,  1241,  1241,  1241,   140,  1241,   384,  1591,
-      -7,  1241,     2,    27,  1241,   -34,   140,  -272,    67,  1661,
+    1241,  1241,  1241,  1241,  1241,  1241,   141,  1241,   384,  1591,
+      -7,  1241,     2,    27,  1241,   -34,   141,  -272,    69,  1661,
     1241,  -272,  -272,    23,    31,  1241,  1241,  -272,  1241,  1241,
-       7,   121,  1241,  1241,  1241,  -272,  1241,  -272,   149,  1241,
+       7,   127,  1241,  1241,  1241,  -272,  1241,  -272,   150,  1241,
     1241,  1241,  1241,  1241,  1241,  1241,  1241,  1241,  1241,  -272,
-    -272,  -272,    76,  -272,  -272,    23,    23,  -272,  1241,    93,
-    -272,  -272,  1241,  1241,   141,  -272,  1661,    21,    21,    21,
+    -272,  -272,    82,  -272,  -272,    23,    23,  -272,  1241,    93,
+    -272,  -272,  1241,  1241,   142,  -272,  1661,    21,    21,    21,
       21,  1674,  1674,  -272,     5,    21,    21,    21,    21,     5,
       -8,    -8,  -272,  -272,  -272,   -29,  -272,  1661,  -272,  -272,
-    1661,   -18,   156,  1661,  -272,   152,  -272,  -272,  1661,  1661,
-    1661,    21,  1241,  1241,   170,  1661,    21,  1661,  1661,  -272,
+    1661,   -18,   168,  1661,  -272,   153,  -272,  -272,  1661,  1661,
+    1661,    21,  1241,  1241,   171,  1661,    21,  1661,  1661,  -272,
     1661,  1413,  1661,  1446,  1661,  1479,  1661,  1512,  1661,  1661,
-     803,  -272,   171,  -272,  -272,  1661,    55,    58,  -272,   641,
-    1661,  1661,  -272,   145,   100,   173,   100,  -272,   140,  1241,
+     803,  -272,   172,  -272,  -272,  1661,    58,    59,  -272,   641,
+    1661,  1661,  -272,   146,   100,   175,   100,  -272,   141,  1241,
     1661,    21,    23,  1241,  1241,  1241,  1241,  -272,   641,  -272,
-    -272,  -272,   114,  -272,   -21,   641,   803,   176,  -272,  -272,
-    -272,   -17,  1661,   151,  1661,  1661,  1661,  1661,  -272,   118,
+    -272,  -272,   115,  -272,   -21,   641,   803,   179,  -272,  -272,
+    -272,   -17,  1661,   152,  1661,  1661,  1661,  1661,  -272,   122,
     -272,   641,   160,  1241,  -272,  -272,  -272,   560,   641,   100,
-    1241,  -272,   123,  1241,  1661,   117,   -28,   189,  -272,  1661,
-    -272,  1661,  -272,  -272,  -272,  -272,  1241,   130,  -272,  -272,
-    -272,   119,   641,  -272,   641,  -272,  1661,  -272,   803,   191,
-     641,   133,   641,   165,  -272,  -272,   134,  -272,   136,  -272,
-     142,  -272,  -272,   641,  -272,  -272
+    1241,  -272,   128,  1241,  1661,   117,   -28,   190,  -272,  1661,
+    -272,  1661,  -272,  -272,  -272,  -272,  1241,   133,  -272,  -272,
+    -272,   118,   641,  -272,   641,  -272,  1661,  -272,   803,   191,
+     641,   134,   641,   167,  -272,  -272,   135,  -272,   140,  -272,
+     143,  -272,  -272,   641,  -272,  -272
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -946,17 +947,17 @@ static const yytype_int16 yypact[] =
 static const yytype_uint8 yydefact[] =
 {
        0,     0,    56,    61,     0,    57,   157,   157,     0,    60,
-      59,    58,   136,   142,    69,    70,   109,   110,     0,    48,
+      59,    58,   136,   142,    70,    71,   109,   110,     0,    48,
      138,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   112,   146,     0,
-       0,     0,   163,     0,     3,    71,    28,     7,    29,     0,
-       0,     0,     0,    63,    22,   104,    64,    23,   106,   107,
-       6,    50,    21,    62,     4,    60,    68,    60,     0,   157,
-     158,   116,   157,    66,   103,   157,   160,   156,   157,    50,
+       0,     0,   163,     0,     3,    72,    28,     7,    29,     0,
+       0,     0,     0,    64,    22,   104,    65,    23,   106,   107,
+       6,    50,    21,    63,     4,    60,    69,    60,     0,   157,
+     158,   116,   157,    67,   103,   157,   160,   156,   157,    50,
      108,     0,   125,     0,   126,     0,   127,   128,   130,     0,
       34,     0,   105,     0,    46,     0,     0,     0,     0,     0,
-       0,   141,   118,   133,   135,   123,   114,    85,     0,     0,
-       0,     0,     0,     0,     0,     0,    90,    91,     0,    59,
+       0,   141,   118,   133,   135,   123,   114,    86,     0,     0,
+       0,     0,     0,     0,     0,     0,    91,    92,     0,    59,
       58,   164,   167,     0,   165,   166,   169,     1,     5,    51,
       50,    50,    51,    51,    27,     0,    25,    26,    24,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -965,10 +966,10 @@ static const yytype_uint8 yydefact[] =
        0,   129,   139,     0,     0,     0,     0,    47,     0,     0,
        0,     0,     0,     0,     0,    55,     0,   134,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    38,
-      38,   121,   113,   147,    92,     0,     0,   162,     0,     0,
-       2,    52,     0,     0,     0,    35,    51,    81,    82,    79,
-      80,    83,    84,    76,    87,    88,    89,    78,    77,    86,
-      72,    73,    74,    75,   149,     0,   115,   159,    65,    67,
+      38,   121,   113,   147,    62,     0,     0,   162,     0,     0,
+       2,    52,     0,     0,     0,    35,    51,    82,    83,    80,
+      81,    84,    85,    77,    88,    89,    90,    79,    78,    87,
+      73,    74,    75,    76,   149,     0,   115,   159,    66,    68,
      161,     0,     0,   131,    50,     0,     8,     9,    11,    12,
       16,    14,     0,     0,     0,    15,    13,    20,   117,   124,
       95,     0,    97,     0,    99,     0,   101,     0,    93,    94,
@@ -988,12 +989,12 @@ static const yytype_uint8 yydefact[] =
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -272,  -272,    98,  -272,  -264,  -272,     4,    25,  -272,  -272,
-    -272,  -272,  -272,  -272,   177,  -272,   -77,   -57,  -100,  -272,
-       6,    -6,  -272,    54,   178,  -272,  -272,  -272,  -272,  -272,
+    -272,  -272,   101,  -272,  -264,  -272,     4,    26,  -272,  -272,
+    -272,  -272,  -272,  -272,   178,  -272,   -77,   -57,  -100,  -272,
+       6,    -6,  -272,    53,   180,  -272,  -272,  -272,  -272,  -272,
     -272,   -19,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
-    -161,  -272,  -271,   179,    11,  -272,  -272,  -272,  -272,  -272,
-      24
+    -161,  -272,  -271,   181,    11,  -272,  -272,  -272,  -272,  -272,
+      25
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -1024,18 +1025,18 @@ static const yytype_int16 yytable[] =
      145,   236,   161,   146,   364,   167,   152,   153,   154,   155,
      238,   161,   180,   181,   128,   170,    31,    32,    33,    34,
      172,   151,   152,   153,   154,   155,    95,    96,    97,   276,
-     173,   277,   177,    42,    98,   239,   161,   311,   184,   216,
-     185,    99,    47,   217,   218,   219,   220,   221,   222,   223,
+      41,   277,   173,    42,    98,   239,   161,   311,   177,   216,
+     184,    99,    47,   217,   218,   219,   220,   221,   222,   223,
      224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     188,    70,   343,   344,   201,   237,   203,   205,   240,   283,
-     206,   208,   207,   209,   243,   234,   242,   288,   254,   248,
-     249,   298,   250,   251,   259,   272,   255,   256,   257,   245,
-     258,   287,   305,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   282,   289,   292,   299,   306,   309,   307,
-     320,   326,   275,   321,   330,   331,   280,   281,   327,   340,
-     328,   273,   274,   333,   350,   357,   365,   369,   359,   367,
-     371,   372,   302,   303,   304,   271,   210,   374,   247,   135,
-     137,   138,     0,   278,     0,     0,     0,     0,   352,     0,
+     185,    70,   343,   344,   188,   237,   201,   203,   240,   283,
+     205,   206,   207,   208,   243,   209,   234,   288,   242,   248,
+     249,   298,   250,   251,   254,   259,   255,   256,   257,   245,
+     258,   272,   305,   260,   261,   262,   263,   264,   265,   266,
+     267,   268,   269,   287,   282,   289,   292,   299,   306,   307,
+     309,   320,   275,   321,   326,   330,   280,   281,   327,   331,
+     328,   273,   274,   333,   340,   350,   365,   359,   357,   369,
+     367,   371,   302,   303,   304,   372,   271,   247,   374,   210,
+     135,     0,   137,   138,   278,     0,     0,     0,   352,     0,
      318,   319,   354,     0,     0,     0,   290,   291,   324,     0,
        0,     0,     0,   360,     0,   362,     0,     0,     0,     0,
        0,     0,     0,     0,   332,     0,   355,     0,   336,   373,
@@ -1205,18 +1206,18 @@ static const yytype_int16 yycheck[] =
       69,    98,    99,    72,   358,    25,    91,    92,    93,    94,
       98,    99,    96,    97,    96,    45,    75,    76,    77,    78,
       25,    90,    91,    92,    93,    94,    17,    18,    19,    26,
-      25,    28,    25,   100,    25,    98,    99,   288,    53,   135,
-      52,    32,   128,   139,   140,   141,   142,   143,   144,   145,
+      97,    28,    25,   100,    25,    98,    99,   288,    25,   135,
+      53,    32,   128,   139,   140,   141,   142,   143,   144,   145,
      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-      99,   157,    35,    36,    25,   161,    25,   102,   164,   216,
-     102,    99,   101,    99,   170,    25,    99,   244,    47,   175,
-     176,   271,   178,   179,    25,    99,   182,   183,   184,   173,
-     186,    25,   282,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,    52,    42,    25,    25,    52,    25,    99,
-      86,    25,   208,   303,    53,    87,   212,   213,   308,    86,
-     310,   205,   206,    53,    25,    85,    25,    52,    99,    86,
-      86,    85,   279,   280,   281,   200,   128,    85,   174,    52,
-      52,    52,    -1,   209,    -1,    -1,    -1,    -1,   338,    -1,
+      52,   157,    35,    36,    99,   161,    25,    25,   164,   216,
+     102,   102,   101,    99,   170,    99,    25,   244,    99,   175,
+     176,   271,   178,   179,    47,    25,   182,   183,   184,   173,
+     186,    99,   282,   189,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,    25,    52,    42,    25,    25,    52,    99,
+      25,    86,   208,   303,    25,    53,   212,   213,   308,    87,
+     310,   205,   206,    53,    86,    25,    25,    99,    85,    52,
+      86,    86,   279,   280,   281,    85,   200,   174,    85,   128,
+      52,    -1,    52,    52,   209,    -1,    -1,    -1,   338,    -1,
      297,   298,   342,    -1,    -1,    -1,   252,   253,   305,    -1,
       -1,    -1,    -1,   353,    -1,   355,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,   321,    -1,   343,    -1,   325,   369,
@@ -1425,7 +1426,7 @@ static const yytype_uint8 yyr1[] =
      109,   109,   109,   109,   109,   109,   109,   109,   110,   111,
      111,   112,   112,   113,   114,   114,   115,   116,   117,   118,
      119,   120,   121,   121,   121,   122,   123,   123,   123,   123,
-     123,   123,   123,   124,   124,   124,   124,   124,   124,   124,
+     123,   123,   123,   123,   124,   124,   124,   124,   124,   124,
      124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
      124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
      124,   124,   124,   124,   124,   125,   125,   125,   125,   125,
@@ -1448,10 +1449,10 @@ static const yytype_int8 yyr2[] =
        6,    11,    12,     8,     2,     3,     7,     6,     0,     9,
       12,     0,     2,     6,    11,     7,     2,     3,     1,     1,
        0,     0,     0,     2,     2,     3,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     4,     2,     4,     2,     1,
-       1,     1,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     2,     3,     3,     3,     3,
-       2,     2,     3,     4,     4,     4,     6,     4,     6,     4,
+       1,     1,     3,     1,     1,     1,     4,     2,     4,     2,
+       1,     1,     1,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     2,     3,     3,     3,
+       3,     2,     2,     4,     4,     4,     6,     4,     6,     4,
        6,     4,     6,     2,     1,     2,     1,     1,     2,     1,
        0,     3,     0,     3,     2,     4,     2,     4,     2,     1,
        3,     1,     3,     1,     3,     2,     2,     2,     2,     3,
@@ -1609,8 +1610,7 @@ yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr,
                        YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
-                       &yyvsp[(yyi + 1) - (yynrhs)]
-                                              );
+                       &yyvsp[(yyi + 1) - (yynrhs)]);
       YYFPRINTF (stderr, "\n");
     }
 }
@@ -1691,6 +1691,8 @@ yypcontext_expected_tokens (const yypcontext_t *yyctx,
               yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
           }
     }
+  if (yyarg && yycount == 0 && 0 < yyargn)
+    yyarg[0] = YYSYMBOL_YYEMPTY;
   return yycount;
 }
 
@@ -1937,73 +1939,73 @@ yydestruct (const char *yymsg,
     case 22: /* BLTIN  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1941 "engines/director/lingo/lingo-gr.cpp"
+#line 1943 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1947 "engines/director/lingo/lingo-gr.cpp"
+#line 1949 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1953 "engines/director/lingo/lingo-gr.cpp"
+#line 1955 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* ID  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1959 "engines/director/lingo/lingo-gr.cpp"
+#line 1961 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* STRING  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1965 "engines/director/lingo/lingo-gr.cpp"
+#line 1967 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* HANDLER  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1971 "engines/director/lingo/lingo-gr.cpp"
+#line 1973 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* SYMBOL  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1977 "engines/director/lingo/lingo-gr.cpp"
+#line 1979 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* ENDCLAUSE  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1983 "engines/director/lingo/lingo-gr.cpp"
+#line 1985 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 30: /* tPLAYACCEL  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1989 "engines/director/lingo/lingo-gr.cpp"
+#line 1991 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 31: /* tMETHOD  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1995 "engines/director/lingo/lingo-gr.cpp"
+#line 1997 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 32: /* THEOBJECTFIELD  */
 #line 136 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 2001 "engines/director/lingo/lingo-gr.cpp"
+#line 2003 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 141: /* on  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2007 "engines/director/lingo/lingo-gr.cpp"
+#line 2009 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2287,7 +2289,7 @@ yyreduce:
   case 4:
 #line 142 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2291 "engines/director/lingo/lingo-gr.cpp"
+#line 2293 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2298,7 +2300,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2302 "engines/director/lingo/lingo-gr.cpp"
+#line 2304 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2306,7 +2308,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2310 "engines/director/lingo/lingo-gr.cpp"
+#line 2312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
@@ -2322,19 +2324,19 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2326 "engines/director/lingo/lingo-gr.cpp"
+#line 2328 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 169 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2332 "engines/director/lingo/lingo-gr.cpp"
+#line 2334 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
 #line 170 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2338 "engines/director/lingo/lingo-gr.cpp"
+#line 2340 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2345,7 +2347,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2349 "engines/director/lingo/lingo-gr.cpp"
+#line 2351 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2357,7 +2359,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2361 "engines/director/lingo/lingo-gr.cpp"
+#line 2363 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2368,7 +2370,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2372 "engines/director/lingo/lingo-gr.cpp"
+#line 2374 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2380,7 +2382,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2384 "engines/director/lingo/lingo-gr.cpp"
+#line 2386 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2391,7 +2393,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2395 "engines/director/lingo/lingo-gr.cpp"
+#line 2397 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2402,7 +2404,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2406 "engines/director/lingo/lingo-gr.cpp"
+#line 2408 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2418,7 +2420,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2422 "engines/director/lingo/lingo-gr.cpp"
+#line 2424 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20:
@@ -2429,7 +2431,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2433 "engines/director/lingo/lingo-gr.cpp"
+#line 2435 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
@@ -2440,7 +2442,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body;	/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2444 "engines/director/lingo/lingo-gr.cpp"
+#line 2446 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
@@ -2457,7 +2459,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2461 "engines/director/lingo/lingo-gr.cpp"
+#line 2463 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
@@ -2474,7 +2476,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 5] = end; }
-#line 2478 "engines/director/lingo/lingo-gr.cpp"
+#line 2480 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2489,14 +2491,14 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 4] = 0;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 5] = end; }
-#line 2493 "engines/director/lingo/lingo-gr.cpp"
+#line 2495 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
 #line 294 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
-#line 2500 "engines/director/lingo/lingo-gr.cpp"
+#line 2502 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
@@ -2506,7 +2508,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2510 "engines/director/lingo/lingo-gr.cpp"
+#line 2512 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
@@ -2515,7 +2517,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2519 "engines/director/lingo/lingo-gr.cpp"
+#line 2521 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2524,7 +2526,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2528 "engines/director/lingo/lingo-gr.cpp"
+#line 2530 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
@@ -2532,7 +2534,7 @@ yyreduce:
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2536 "engines/director/lingo/lingo-gr.cpp"
+#line 2538 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
@@ -2547,7 +2549,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2551 "engines/director/lingo/lingo-gr.cpp"
+#line 2553 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
@@ -2562,7 +2564,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2566 "engines/director/lingo/lingo-gr.cpp"
+#line 2568 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
@@ -2573,7 +2575,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2577 "engines/director/lingo/lingo-gr.cpp"
+#line 2579 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
@@ -2588,7 +2590,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2592 "engines/director/lingo/lingo-gr.cpp"
+#line 2594 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2603,13 +2605,13 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2607 "engines/director/lingo/lingo-gr.cpp"
+#line 2609 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
 #line 366 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2613 "engines/director/lingo/lingo-gr.cpp"
+#line 2615 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
@@ -2619,7 +2621,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2623 "engines/director/lingo/lingo-gr.cpp"
+#line 2625 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
@@ -2629,7 +2631,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); }
-#line 2633 "engines/director/lingo/lingo-gr.cpp"
+#line 2635 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
@@ -2640,25 +2642,25 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
-#line 2644 "engines/director/lingo/lingo-gr.cpp"
+#line 2646 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
 #line 387 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2650 "engines/director/lingo/lingo-gr.cpp"
+#line 2652 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
 #line 389 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2656 "engines/director/lingo/lingo-gr.cpp"
+#line 2658 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
 #line 391 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2662 "engines/director/lingo/lingo-gr.cpp"
+#line 2664 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
@@ -2668,7 +2670,7 @@ yyreduce:
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2672 "engines/director/lingo/lingo-gr.cpp"
+#line 2674 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
@@ -2676,7 +2678,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2680 "engines/director/lingo/lingo-gr.cpp"
+#line 2682 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
@@ -2684,7 +2686,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2688 "engines/director/lingo/lingo-gr.cpp"
+#line 2690 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
@@ -2693,7 +2695,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2697 "engines/director/lingo/lingo-gr.cpp"
+#line 2699 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
@@ -2702,7 +2704,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2706 "engines/director/lingo/lingo-gr.cpp"
+#line 2708 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
@@ -2711,7 +2713,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2715 "engines/director/lingo/lingo-gr.cpp"
+#line 2717 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
@@ -2724,255 +2726,255 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2728 "engines/director/lingo/lingo-gr.cpp"
+#line 2730 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 62:
+#line 427 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.code) = (yyvsp[-1].code); }
+#line 2736 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 429 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 430 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2734 "engines/director/lingo/lingo-gr.cpp"
+#line 2742 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 431 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 432 "engines/director/lingo/lingo-gr.y"
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2742 "engines/director/lingo/lingo-gr.cpp"
+#line 2750 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 434 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 435 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2750 "engines/director/lingo/lingo-gr.cpp"
+#line 2758 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 437 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 438 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2758 "engines/director/lingo/lingo-gr.cpp"
+#line 2766 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 440 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 441 "engines/director/lingo/lingo-gr.y"
                                      {
 		(yyval.code) = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2769 "engines/director/lingo/lingo-gr.cpp"
+#line 2777 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 446 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 447 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2779 "engines/director/lingo/lingo-gr.cpp"
+#line 2787 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 451 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 452 "engines/director/lingo/lingo-gr.y"
                        {
 		g_lingo->code1(LC::c_objectrefpush);
 		g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectref).field->c_str());
 		delete (yyvsp[0].objectref).obj;
 		delete (yyvsp[0].objectref).field; }
-#line 2790 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 72:
-#line 458 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_add); }
-#line 2796 "engines/director/lingo/lingo-gr.cpp"
+#line 2798 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73:
 #line 459 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_sub); }
-#line 2802 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_add); }
+#line 2804 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
 #line 460 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_mul); }
-#line 2808 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_sub); }
+#line 2810 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
 #line 461 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_div); }
-#line 2814 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_mul); }
+#line 2816 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
 #line 462 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_mod); }
-#line 2820 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_div); }
+#line 2822 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
 #line 463 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_gt); }
-#line 2826 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_mod); }
+#line 2828 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
 #line 464 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_lt); }
-#line 2832 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_gt); }
+#line 2834 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
 #line 465 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_eq); }
-#line 2838 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_lt); }
+#line 2840 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
 #line 466 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_neq); }
-#line 2844 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_eq); }
+#line 2846 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
 #line 467 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_ge); }
-#line 2850 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_neq); }
+#line 2852 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
 #line 468 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_le); }
-#line 2856 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_ge); }
+#line 2858 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
 #line 469 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_and); }
-#line 2862 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_le); }
+#line 2864 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
 #line 470 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_or); }
-#line 2868 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_and); }
+#line 2870 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
 #line 471 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_not); }
-#line 2874 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_or); }
+#line 2876 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
 #line 472 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_ampersand); }
-#line 2880 "engines/director/lingo/lingo-gr.cpp"
+                                        { g_lingo->code1(LC::c_not); }
+#line 2882 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
 #line 473 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_concat); }
-#line 2886 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_ampersand); }
+#line 2888 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
 #line 474 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_contains); }
-#line 2892 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_concat); }
+#line 2894 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
 #line 475 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_starts); }
-#line 2898 "engines/director/lingo/lingo-gr.cpp"
+                                        { g_lingo->code1(LC::c_contains); }
+#line 2900 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
 #line 476 "engines/director/lingo/lingo-gr.y"
-                                    { (yyval.code) = (yyvsp[0].code); }
-#line 2904 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_starts); }
+#line 2906 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
 #line 477 "engines/director/lingo/lingo-gr.y"
-                                    { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2910 "engines/director/lingo/lingo-gr.cpp"
+                                    { (yyval.code) = (yyvsp[0].code); }
+#line 2912 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
 #line 478 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.code) = (yyvsp[-1].code); }
-#line 2916 "engines/director/lingo/lingo-gr.cpp"
+                                    { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
+#line 2918 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
 #line 479 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2922 "engines/director/lingo/lingo-gr.cpp"
+#line 2924 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
 #line 480 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_within); }
-#line 2928 "engines/director/lingo/lingo-gr.cpp"
+#line 2930 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
 #line 482 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_charOf); }
-#line 2934 "engines/director/lingo/lingo-gr.cpp"
+#line 2936 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
 #line 483 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 2940 "engines/director/lingo/lingo-gr.cpp"
+#line 2942 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
 #line 484 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_itemOf); }
-#line 2946 "engines/director/lingo/lingo-gr.cpp"
+#line 2948 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
 #line 485 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 2952 "engines/director/lingo/lingo-gr.cpp"
+#line 2954 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
 #line 486 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_lineOf); }
-#line 2958 "engines/director/lingo/lingo-gr.cpp"
+#line 2960 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
 #line 487 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 2964 "engines/director/lingo/lingo-gr.cpp"
+#line 2966 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
 #line 488 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_wordOf); }
-#line 2970 "engines/director/lingo/lingo-gr.cpp"
+#line 2972 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
 #line 489 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 2976 "engines/director/lingo/lingo-gr.cpp"
+#line 2978 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
@@ -2980,49 +2982,49 @@ yyreduce:
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2984 "engines/director/lingo/lingo-gr.cpp"
+#line 2986 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
 #line 496 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2990 "engines/director/lingo/lingo-gr.cpp"
+#line 2992 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
 #line 499 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2996 "engines/director/lingo/lingo-gr.cpp"
+#line 2998 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
 #line 500 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 3002 "engines/director/lingo/lingo-gr.cpp"
+#line 3004 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
 #line 501 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 3008 "engines/director/lingo/lingo-gr.cpp"
+#line 3010 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111:
 #line 501 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 3014 "engines/director/lingo/lingo-gr.cpp"
+#line 3016 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
 #line 502 "engines/director/lingo/lingo-gr.y"
                     { g_lingo->_indef = kStateInArgs; }
-#line 3020 "engines/director/lingo/lingo-gr.cpp"
+#line 3022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
 #line 502 "engines/director/lingo/lingo-gr.y"
                                                                      { g_lingo->_indef = kStateNone; }
-#line 3026 "engines/director/lingo/lingo-gr.cpp"
+#line 3028 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
@@ -3030,7 +3032,7 @@ yyreduce:
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3034 "engines/director/lingo/lingo-gr.cpp"
+#line 3036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
@@ -3038,19 +3040,19 @@ yyreduce:
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3042 "engines/director/lingo/lingo-gr.cpp"
+#line 3044 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 117:
 #line 510 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 3048 "engines/director/lingo/lingo-gr.cpp"
+#line 3050 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
 #line 511 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3054 "engines/director/lingo/lingo-gr.cpp"
+#line 3056 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
@@ -3059,7 +3061,7 @@ yyreduce:
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3063 "engines/director/lingo/lingo-gr.cpp"
+#line 3065 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
@@ -3068,7 +3070,7 @@ yyreduce:
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3072 "engines/director/lingo/lingo-gr.cpp"
+#line 3074 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
@@ -3077,7 +3079,7 @@ yyreduce:
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3081 "engines/director/lingo/lingo-gr.cpp"
+#line 3083 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 122:
@@ -3086,7 +3088,7 @@ yyreduce:
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3090 "engines/director/lingo/lingo-gr.cpp"
+#line 3092 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 123:
@@ -3095,7 +3097,7 @@ yyreduce:
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3099 "engines/director/lingo/lingo-gr.cpp"
+#line 3101 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
@@ -3104,25 +3106,25 @@ yyreduce:
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3108 "engines/director/lingo/lingo-gr.cpp"
+#line 3110 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
 #line 547 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3114 "engines/director/lingo/lingo-gr.cpp"
+#line 3116 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
 #line 548 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3120 "engines/director/lingo/lingo-gr.cpp"
+#line 3122 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
 #line 549 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3126 "engines/director/lingo/lingo-gr.cpp"
+#line 3128 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128:
@@ -3131,7 +3133,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3135 "engines/director/lingo/lingo-gr.cpp"
+#line 3137 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129:
@@ -3140,7 +3142,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3144 "engines/director/lingo/lingo-gr.cpp"
+#line 3146 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
@@ -3149,7 +3151,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3153 "engines/director/lingo/lingo-gr.cpp"
+#line 3155 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133:
@@ -3158,7 +3160,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3162 "engines/director/lingo/lingo-gr.cpp"
+#line 3164 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
@@ -3167,7 +3169,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3171 "engines/director/lingo/lingo-gr.cpp"
+#line 3173 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
@@ -3176,13 +3178,13 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3180 "engines/director/lingo/lingo-gr.cpp"
+#line 3182 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
 #line 578 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3186 "engines/director/lingo/lingo-gr.cpp"
+#line 3188 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
@@ -3191,19 +3193,19 @@ yyreduce:
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3195 "engines/director/lingo/lingo-gr.cpp"
+#line 3197 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
 #line 608 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 3201 "engines/director/lingo/lingo-gr.cpp"
+#line 3203 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
 #line 608 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 3207 "engines/director/lingo/lingo-gr.cpp"
+#line 3209 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140:
@@ -3214,19 +3216,19 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 3218 "engines/director/lingo/lingo-gr.cpp"
+#line 3220 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
 #line 615 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3224 "engines/director/lingo/lingo-gr.cpp"
+#line 3226 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
 #line 616 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 3230 "engines/director/lingo/lingo-gr.cpp"
+#line 3232 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
@@ -3237,7 +3239,7 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 3241 "engines/director/lingo/lingo-gr.cpp"
+#line 3243 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
@@ -3252,7 +3254,7 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3256 "engines/director/lingo/lingo-gr.cpp"
+#line 3258 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
@@ -3264,61 +3266,61 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 3268 "engines/director/lingo/lingo-gr.cpp"
+#line 3270 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
 #line 641 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 3274 "engines/director/lingo/lingo-gr.cpp"
+#line 3276 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
 #line 641 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3280 "engines/director/lingo/lingo-gr.cpp"
+#line 3282 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
 #line 643 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3286 "engines/director/lingo/lingo-gr.cpp"
+#line 3288 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
 #line 644 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3292 "engines/director/lingo/lingo-gr.cpp"
+#line 3294 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
 #line 645 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3298 "engines/director/lingo/lingo-gr.cpp"
+#line 3300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 151:
 #line 646 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 3304 "engines/director/lingo/lingo-gr.cpp"
+#line 3306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
 #line 649 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3310 "engines/director/lingo/lingo-gr.cpp"
+#line 3312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
 #line 650 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 3316 "engines/director/lingo/lingo-gr.cpp"
+#line 3318 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
 #line 652 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 3322 "engines/director/lingo/lingo-gr.cpp"
+#line 3324 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
@@ -3330,91 +3332,91 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3334 "engines/director/lingo/lingo-gr.cpp"
+#line 3336 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
 #line 662 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3340 "engines/director/lingo/lingo-gr.cpp"
+#line 3342 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
 #line 663 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3346 "engines/director/lingo/lingo-gr.cpp"
+#line 3348 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
 #line 664 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3352 "engines/director/lingo/lingo-gr.cpp"
+#line 3354 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
 #line 666 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3358 "engines/director/lingo/lingo-gr.cpp"
+#line 3360 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
 #line 667 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3364 "engines/director/lingo/lingo-gr.cpp"
+#line 3366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
 #line 669 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 3370 "engines/director/lingo/lingo-gr.cpp"
+#line 3372 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
 #line 671 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3376 "engines/director/lingo/lingo-gr.cpp"
+#line 3378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
 #line 672 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3382 "engines/director/lingo/lingo-gr.cpp"
+#line 3384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
 #line 673 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3388 "engines/director/lingo/lingo-gr.cpp"
+#line 3390 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
 #line 674 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3394 "engines/director/lingo/lingo-gr.cpp"
+#line 3396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
 #line 676 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3400 "engines/director/lingo/lingo-gr.cpp"
+#line 3402 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
 #line 677 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3406 "engines/director/lingo/lingo-gr.cpp"
+#line 3408 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
 #line 679 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3412 "engines/director/lingo/lingo-gr.cpp"
+#line 3414 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 170:
 #line 680 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3418 "engines/director/lingo/lingo-gr.cpp"
+#line 3420 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
@@ -3423,7 +3425,7 @@ yyreduce:
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3427 "engines/director/lingo/lingo-gr.cpp"
+#line 3429 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172:
@@ -3432,11 +3434,11 @@ yyreduce:
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3436 "engines/director/lingo/lingo-gr.cpp"
+#line 3438 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3440 "engines/director/lingo/lingo-gr.cpp"
+#line 3442 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3564,7 +3566,7 @@ yyerrorlab:
 yyerrlab1:
   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
-  // Pop stack until we find a state that shifts the error token.
+  /* Pop stack until we find a state that shifts the error token.  */
   for (;;)
     {
       yyn = yypact[yystate];
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index fbf5878c83..4dfbc0e389 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 3.5.91.  */
+/* A Bison parser, made by GNU Bison 3.6.1.  */
 
 /* Bison interface for Yacc-like parsers in C
 
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 80f9e1316d..f8666e3e67 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -424,6 +424,7 @@ simpleexpr: INT		{
 		WRITE_UINT32(&e, $THEENTITY[0]);
 		WRITE_UINT32(&f, $THEENTITY[1]);
 		g_lingo->code2(e, f); }
+	| '(' expr[arg] ')'			{ $$ = $arg; }
 	| list
 
 expr: simpleexpr { $$ = $simpleexpr; }
@@ -475,7 +476,6 @@ expr: simpleexpr { $$ = $simpleexpr; }
 	| expr tSTARTS expr			{ g_lingo->code1(LC::c_starts); }
 	| '+' expr[arg]  %prec UNARY{ $$ = $arg; }
 	| '-' expr[arg]  %prec UNARY{ $$ = $arg; g_lingo->code1(LC::c_negate); }
-	| '(' expr[arg] ')'			{ $$ = $arg; }
 	| tSPRITE expr tINTERSECTS expr 	{ g_lingo->code1(LC::c_intersects); }
 	| tSPRITE expr tWITHIN expr		 	{ g_lingo->code1(LC::c_within); }
 


Commit: de5c4092fe9f0ebdc0941281b14a1809b86dd33e
    https://github.com/scummvm/scummvm/commit/de5c4092fe9f0ebdc0941281b14a1809b86dd33e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-10T21:46:06+02:00

Commit Message:
DIRECTOR: LINGO: Added test for new cast reference flavor

Changed paths:
    engines/director/lingo/tests/the.lingo


diff --git a/engines/director/lingo/tests/the.lingo b/engines/director/lingo/tests/the.lingo
index 4ceb61deae..0a05e237c9 100644
--- a/engines/director/lingo/tests/the.lingo
+++ b/engines/director/lingo/tests/the.lingo
@@ -43,3 +43,5 @@ put the number of menuItems of menu "sam" into field 3
 put abs( the locH of sprite 2 - the mouseH) into field 4
 
 set the castNum of sprite the clickon = the number of cast "main.hi"
+
+set castname = the name of cast(the castnum of sprite 15)




More information about the Scummvm-git-logs mailing list