[Scummvm-git-logs] scummvm master -> 085bc555b7ee3f42810c469b7c5954b6c6cce3d8

djsrv dservilla at gmail.com
Sun Jul 19 18:49:58 UTC 2020


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

Summary:
7943926317 DIRECTOR: LINGO: Get rid of return preprocessor
e95b7979b7 DIRECTOR: LINGO: Replace BLTIN/FBLTIN
2277a92d8e DIRECTOR: LINGO: Handle ARGC/ARGCNORET
fb8c0e53df DIRECTOR: LINGO: Improve references grammar
c1a087e33e DIRECTOR: LINGO: Improve stmtlist
dac9f31b88 DIRECTOR: LINGO: Fix chunk/sprite expressions
81dc7aaae3 DIRECTOR: LINGO: Move tNOT
7c11fbb89e DIRECTOR: LINGO: Get rid of right recursion
06d5e823e0 DIRECTOR: LINGO: Fix token declaration
085bc555b7 DIRECTOR: LINGO: Add tests


Commit: 7943926317a1b856aa32881a1fe207bf67e5d9d0
    https://github.com/scummvm/scummvm/commit/7943926317a1b856aa32881a1fe207bf67e5d9d0
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-19T13:33:35-04:00

Commit Message:
DIRECTOR: LINGO: Get rid of return 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 c9bf5fd01d..050d2a6555 100644
--- a/engines/director/lingo/lingo-preprocessor.cpp
+++ b/engines/director/lingo/lingo-preprocessor.cpp
@@ -27,7 +27,6 @@
 namespace Director {
 
 Common::String preprocessWhen(Common::String in, bool *changed);
-Common::String preprocessReturn(Common::String in);
 Common::String preprocessPlay(Common::String in);
 Common::String preprocessSound(Common::String in);
 
@@ -244,7 +243,6 @@ Common::String Lingo::codePreprocessor(const char *s, ScriptType type, uint16 id
 		res1 = preprocessWhen(res1, &changed);
 
 		if (!changed) {
-			res1 = preprocessReturn(res1);
 			res1 = preprocessPlay(res1);
 			res1 = preprocessSound(res1);
 		}
@@ -492,50 +490,6 @@ Common::String preprocessWhen(Common::String in, bool *changed) {
 	return res;
 }
 
-// "hello" & return && "world" -> "hello" & scummvm_return && "world"
-//
-// This is to let the grammar not confuse RETURN constant with
-// return command
-Common::String preprocessReturn(Common::String in) {
-	Common::String res, prev, next;
-	const char *ptr = in.c_str();
-	const char *beg = ptr;
-
-	while ((ptr = scumm_strcasestr(beg, "return")) != NULL) {
-		if (ptr != findtokstart(in.c_str(), ptr)) { // If we're in the middle of a word
-			res += *beg++;
-			continue;
-		}
-
-		res += Common::String(beg, ptr);
-
-		if (ptr == beg)
-			prev = "";
-		else
-			prev = prevtok(ptr - 1, beg);
-
-		next = nexttok(ptr + 6); // end of 'return'
-
-		debugC(2, kDebugParse | kDebugPreprocess, "RETURN: prevtok: %s nexttok: %s", prev.c_str(), next.c_str());
-
-		if (prev.hasSuffix("&") || prev.hasSuffix("&&") || prev.hasSuffix("=") ||
-				next.hasPrefix("&") || next.hasPrefix("&&") || prev.hasSuffix(",") ||
-				next.hasPrefix(")") || prev.equalsIgnoreCase("put")) {
-			res += "scummvm_"; // Turn it into scummvm_return
-		}
-
-		res += *ptr++; // We advance one character, so 'eturn' is left
-		beg = ptr;
-	}
-
-	res += Common::String(beg);
-
-	if (in.size() != res.size())
-		debugC(2, kDebugParse | kDebugPreprocess, "RETURN: in: %s\nout: %s", in.c_str(), res.c_str());
-
-	return res;
-}
-
 // play done -> play #done
 Common::String preprocessPlay(Common::String in) {
 	Common::String res, next;


Commit: e95b7979b70de43359926471f50eee4e64b4b6b9
    https://github.com/scummvm/scummvm/commit/e95b7979b70de43359926471f50eee4e64b4b6b9
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-19T13:33:35-04:00

Commit Message:
DIRECTOR: LINGO: Replace BLTIN/FBLTIN

They should only be treated differently during execution, not during
parse.

Changed paths:
    engines/director/lingo/lingo-builtins.cpp
    engines/director/lingo/lingo-bytecode.cpp
    engines/director/lingo/lingo-code.cpp
    engines/director/lingo/lingo-code.h
    engines/director/lingo/lingo-codegen.cpp
    engines/director/lingo/lingo-gr.cpp
    engines/director/lingo/lingo-gr.h
    engines/director/lingo/lingo-gr.y
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l
    engines/director/lingo/lingo-object.cpp
    engines/director/lingo/lingo-object.h
    engines/director/lingo/lingo.cpp
    engines/director/lingo/lingo.h
    engines/director/types.h


diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index 88643d972b..ecc20f9ac9 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -78,7 +78,7 @@ static struct BuiltinProto {
 	int maxArgs;
 	bool parens;
 	int version;
-	int type;
+	SymbolType type;
 } builtins[] = {
 	// Math
 	{ "abs",			LB::b_abs,			1, 1, true, 2, FBLTIN },	// D2 function
@@ -97,21 +97,21 @@ static struct BuiltinProto {
 	// String
 	{ "chars",			LB::b_chars,		3, 3, true, 2, FBLTIN },	// D2 f
 	{ "charToNum",		LB::b_charToNum,	1, 1, true, 2, FBLTIN },	// D2 f
-	{ "delete",			LB::b_delete,		1, 1, true, 3, BLTIN },		//		D3 command
-	{ "hilite",			LB::b_hilite,		1, 1, true, 3, BLTIN },		//		D3 c
+	{ "delete",			LB::b_delete,		1, 1, true, 3, CBLTIN },	//		D3 command
+	{ "hilite",			LB::b_hilite,		1, 1, true, 3, CBLTIN },	//		D3 c
 	{ "length",			LB::b_length,		1, 1, true, 2, FBLTIN },	// D2 f
 	{ "numToChar",		LB::b_numToChar,	1, 1, true, 2, FBLTIN },	// D2 f
 	{ "offset",			LB::b_offset,		2, 3, true, 2, FBLTIN },	// D2 f
 	{ "string",			LB::b_string,		1, 1, true, 2, FBLTIN },	// D2 f
 	{ "value",		 	LB::b_value,		1, 1, true, 2, FBLTIN },	// D2 f
 	// Lists
-	{ "add",			LB::b_add,			2, 2, false, 4, BLTIN },	//			D4 c
-	{ "addAt",			LB::b_addAt,		3, 3, false, 4, BLTIN },	//			D4 c
-	{ "addProp",		LB::b_addProp,		3, 3, false, 4, BLTIN },	//			D4 c
-	{ "append",			LB::b_append,		2, 2, false, 4, BLTIN },	//			D4 c
+	{ "add",			LB::b_add,			2, 2, false, 4, HBLTIN },	//			D4 handler
+	{ "addAt",			LB::b_addAt,		3, 3, false, 4, HBLTIN },	//			D4 h
+	{ "addProp",		LB::b_addProp,		3, 3, false, 4, HBLTIN },	//			D4 h
+	{ "append",			LB::b_append,		2, 2, false, 4, HBLTIN },	//			D4 h
 	{ "count",			LB::b_count,		1, 1, true,  4, FBLTIN },	//			D4 f
-	{ "deleteAt",		LB::b_deleteAt,		2, 2, false, 4, BLTIN },	//			D4 c
-	{ "deleteProp",		LB::b_deleteProp,	2, 2, false, 4, BLTIN },	//			D4 c
+	{ "deleteAt",		LB::b_deleteAt,		2, 2, false, 4, HBLTIN },	//			D4 h
+	{ "deleteProp",		LB::b_deleteProp,	2, 2, false, 4, HBLTIN },	//			D4 h
 	{ "findPos",		LB::b_findPos,		2, 2, true,  4, FBLTIN },	//			D4 f
 	{ "findPosNear",	LB::b_findPosNear,	2, 2, true,  4, FBLTIN },	//			D4 f
 	{ "getaProp",		LB::b_getaProp,		2, 2, true,  4, FBLTIN },	//			D4 f
@@ -125,46 +125,46 @@ static struct BuiltinProto {
 	{ "listP",			LB::b_listP,		1, 1, true,  4, FBLTIN },	//			D4 f
 	{ "max",			LB::b_max,			-1,0, true,  4, FBLTIN },	//			D4 f
 	{ "min",			LB::b_min,			-1,0, true,  4, FBLTIN },	//			D4 f
-	{ "setaProp",		LB::b_setaProp,		3, 3, false, 4, BLTIN },	//			D4 c
-	{ "setAt",			LB::b_setAt,		3, 3, false, 4, BLTIN },	//			D4 c
-	{ "setProp",		LB::b_setProp,		3, 3, false, 4, BLTIN },	//			D4 c
-	{ "sort",			LB::b_sort,			1, 1, false, 4, BLTIN },	//			D4 c
+	{ "setaProp",		LB::b_setaProp,		3, 3, false, 4, HBLTIN },	//			D4 h
+	{ "setAt",			LB::b_setAt,		3, 3, false, 4, HBLTIN },	//			D4 h
+	{ "setProp",		LB::b_setProp,		3, 3, false, 4, HBLTIN },	//			D4 h
+	{ "sort",			LB::b_sort,			1, 1, false, 4, HBLTIN },	//			D4 h
 	// Files
-	{ "closeDA",	 	LB::b_closeDA, 		0, 0, false, 2, BLTIN },	// D2 c
-	{ "closeResFile",	LB::b_closeResFile,	0, 1, false, 2, BLTIN },	// D2 c
-	{ "closeXlib",		LB::b_closeXlib,	0, 1, false, 2, BLTIN },	// D2 c
+	{ "closeDA",	 	LB::b_closeDA, 		0, 0, false, 2, CBLTIN },	// D2 c
+	{ "closeResFile",	LB::b_closeResFile,	0, 1, false, 2, CBLTIN },	// D2 c
+	{ "closeXlib",		LB::b_closeXlib,	0, 1, false, 2, CBLTIN },	// D2 c
 	{ "getNthFileNameInFolder",LB::b_getNthFileNameInFolder,2,2,true,4,FBLTIN },//	D4 f
-	{ "open",			LB::b_open,			1, 2, false, 2, BLTIN },	// D2 c
-	{ "openDA",	 		LB::b_openDA, 		1, 1, false, 2, BLTIN },	// D2 c
-	{ "openResFile",	LB::b_openResFile,	1, 1, false, 2, BLTIN },	// D2 c
-	{ "openXlib",		LB::b_openXlib,		1, 1, false, 2, BLTIN },	// D2 c
-	{ "saveMovie",		LB::b_saveMovie,	1, 1, false, 4, BLTIN },	//			D4 c
-	{ "setCallBack",	LB::b_setCallBack,	2, 2, false, 3, BLTIN },	//		D3 c
-	{ "showResFile",	LB::b_showResFile,	0, 1, false, 2, BLTIN },	// D2 c
-	{ "showXlib",		LB::b_showXlib,		0, 1, false, 2, BLTIN },	// D2 c
+	{ "open",			LB::b_open,			1, 2, false, 2, CBLTIN },	// D2 c
+	{ "openDA",	 		LB::b_openDA, 		1, 1, false, 2, CBLTIN },	// D2 c
+	{ "openResFile",	LB::b_openResFile,	1, 1, false, 2, CBLTIN },	// D2 c
+	{ "openXlib",		LB::b_openXlib,		1, 1, false, 2, CBLTIN },	// D2 c
+	{ "saveMovie",		LB::b_saveMovie,	1, 1, false, 4, CBLTIN },	//			D4 c
+	{ "setCallBack",	LB::b_setCallBack,	2, 2, false, 3, CBLTIN },	//		D3 c
+	{ "showResFile",	LB::b_showResFile,	0, 1, false, 2, CBLTIN },	// D2 c
+	{ "showXlib",		LB::b_showXlib,		0, 1, false, 2, CBLTIN },	// D2 c
 	{ "xFactoryList",	LB::b_xFactoryList,	1, 1, true,  3, FBLTIN },	//		D3 f
 	// Control
-	{ "abort",			LB::b_abort,		0, 0, false, 4, BLTIN },	//			D4 c
-	{ "continue",		LB::b_continue,		0, 0, false, 2, BLTIN },	// D2 c
-	{ "dontPassEvent",	LB::b_dontPassEvent,0, 0, false, 2, BLTIN },	// D2 c
-	{ "delay",	 		LB::b_delay,		1, 1, false, 2, BLTIN },	// D2 c
-	{ "do",		 		LB::b_do,			1, 1, false, 2, BLTIN },	// D2 c
-	{ "go",		 		LB::b_go,			1, 2, false, 4, BLTIN },	// 			D4 c
-	{ "halt",	 		LB::b_halt,			0, 0, false, 4, BLTIN },	//			D4 c
-	{ "nothing",		LB::b_nothing,		0, 0, false, 2, BLTIN },	// D2 c
-	{ "pass",			LB::b_pass,			0, 0, false, 4, BLTIN },	//			D4 c
-	{ "pause",			LB::b_pause,		0, 0, false, 2, BLTIN },	// D2 c
-	{ "play",			LB::b_play,			1, 2, false, 2, BLTIN },	// D2 c
-	{ "playAccel",		LB::b_playAccel,	-1,0, false, 2, BLTIN },	// D2
+	{ "abort",			LB::b_abort,		0, 0, false, 4, CBLTIN },	//			D4 c
+	{ "continue",		LB::b_continue,		0, 0, false, 2, CBLTIN },	// D2 c
+	{ "dontPassEvent",	LB::b_dontPassEvent,0, 0, false, 2, CBLTIN },	// D2 c
+	{ "delay",	 		LB::b_delay,		1, 1, false, 2, CBLTIN },	// D2 c
+	{ "do",		 		LB::b_do,			1, 1, false, 2, CBLTIN },	// D2 c
+	{ "go",		 		LB::b_go,			1, 2, false, 4, CBLTIN },	// 			D4 c
+	{ "halt",	 		LB::b_halt,			0, 0, false, 4, CBLTIN },	//			D4 c
+	{ "nothing",		LB::b_nothing,		0, 0, false, 2, CBLTIN },	// D2 c
+	{ "pass",			LB::b_pass,			0, 0, false, 4, CBLTIN },	//			D4 c
+	{ "pause",			LB::b_pause,		0, 0, false, 2, CBLTIN },	// D2 c
+	{ "play",			LB::b_play,			1, 2, false, 2, CBLTIN },	// D2 c
+	{ "playAccel",		LB::b_playAccel,	-1,0, false, 2, CBLTIN },	// D2
 		// play done													// D2
-	{ "preLoad",		LB::b_preLoad,		-1,0, false, 3, BLTIN },	//		D3.1 c
-	{ "preLoadCast",	LB::b_preLoadCast,	-1,0, false, 3, BLTIN },	//		D3.1 c
-	{ "quit",			LB::b_quit,			0, 0, false, 2, BLTIN },	// D2 c
-	{ "restart",		LB::b_restart,		0, 0, false, 2, BLTIN },	// D2 c
-	{ "return",			LB::b_return,		0, 1, false, 2, BLTIN },	// D2 f
-	{ "scummvm_returnNumber", LB::b_returnNumber, 1, 1, false, 2, BLTIN },	// D2 f
-	{ "shutDown",		LB::b_shutDown,		0, 0, false, 2, BLTIN },	// D2 c
-	{ "startTimer",		LB::b_startTimer,	0, 0, false, 2, BLTIN },	// D2 c
+	{ "preLoad",		LB::b_preLoad,		-1,0, false, 3, CBLTIN },	//		D3.1 c
+	{ "preLoadCast",	LB::b_preLoadCast,	-1,0, false, 3, CBLTIN },	//		D3.1 c
+	{ "quit",			LB::b_quit,			0, 0, false, 2, CBLTIN },	// D2 c
+	{ "restart",		LB::b_restart,		0, 0, false, 2, CBLTIN },	// D2 c
+	{ "return",			LB::b_return,		0, 1, false, 2, CBLTIN },	// D2 f
+	{ "scummvm_returnNumber", LB::b_returnNumber, 1, 1, false, 2, CBLTIN }, // D2 f
+	{ "shutDown",		LB::b_shutDown,		0, 0, false, 2, CBLTIN },	// D2 c
+	{ "startTimer",		LB::b_startTimer,	0, 0, false, 2, CBLTIN },	// D2 c
 		// when keyDown													// D2
 		// when mouseDown												// D2
 		// when mouseUp													// D2
@@ -180,45 +180,45 @@ static struct BuiltinProto {
 	{ "symbolp",		LB::b_symbolp,		1, 1, true,  2, FBLTIN },	// D2 f
 	{ "voidP",			LB::b_voidP,		1, 1, true,  4, FBLTIN },	//			D4 f
 	// Misc
-	{ "alert",	 		LB::b_alert,		1, 1, false, 2, BLTIN },	// D2 c
-	{ "clearGlobals",	LB::b_clearGlobals,	0, 0, false, 3, BLTIN },	//		D3.1 c
-	{ "cursor",	 		LB::b_cursor,		1, 1, false, 2, BLTIN },	// D2 c
+	{ "alert",	 		LB::b_alert,		1, 1, false, 2, CBLTIN },	// D2 c
+	{ "clearGlobals",	LB::b_clearGlobals,	0, 0, false, 3, CBLTIN },	//		D3.1 c
+	{ "cursor",	 		LB::b_cursor,		1, 1, false, 2, CBLTIN },	// D2 c
 	{ "framesToHMS",	LB::b_framesToHMS,	4, 4, false, 3, FBLTIN },	//		D3 f
 	{ "HMStoFrames",	LB::b_HMStoFrames,	4, 4, false, 3, FBLTIN },	//		D3 f
 	{ "param",	 		LB::b_param,		1, 1, true,  4, FBLTIN },	//			D4 f
-	{ "printFrom",	 	LB::b_printFrom,	-1,0, false, 2, BLTIN },	// D2 c
-	{ "put",			LB::b_put,			-1,0, false, 2, BLTIN },	// D2
+	{ "printFrom",	 	LB::b_printFrom,	-1,0, false, 2, CBLTIN },	// D2 c
+	{ "put",			LB::b_put,			-1,0, false, 2, CBLTIN },	// D2
 		// set															// D2
-	{ "showGlobals",	LB::b_showGlobals,	0, 0, false, 2, BLTIN },	// D2 c
-	{ "showLocals",		LB::b_showLocals,	0, 0, false, 2, BLTIN },	// D2 c
+	{ "showGlobals",	LB::b_showGlobals,	0, 0, false, 2, CBLTIN },	// D2 c
+	{ "showLocals",		LB::b_showLocals,	0, 0, false, 2, CBLTIN },	// D2 c
 	// Score
 	{ "constrainH",		LB::b_constrainH,	2, 2, true,  2, FBLTIN },	// D2 f
 	{ "constrainV",		LB::b_constrainV,	2, 2, true,  2, FBLTIN },	// D2 f
-	{ "copyToClipBoard",LB::b_copyToClipBoard,1,1, false, 4, BLTIN },	//			D4 c
-	{ "duplicate",		LB::b_duplicate,	1, 2, false, 4, BLTIN },	//			D4 c
-	{ "editableText",	LB::b_editableText,	0, 0, false, 2, BLTIN },	// D2, FIXME: the field in D4+
-	{ "erase",			LB::b_erase,		1, 1, false, 4, BLTIN },	//			D4 c
+	{ "copyToClipBoard",LB::b_copyToClipBoard,1,1, false, 4, CBLTIN }, //			D4 c
+	{ "duplicate",		LB::b_duplicate,	1, 2, false, 4, CBLTIN },	//			D4 c
+	{ "editableText",	LB::b_editableText,	0, 0, false, 2, CBLTIN },	// D2, FIXME: the field in D4+
+	{ "erase",			LB::b_erase,		1, 1, false, 4, CBLTIN },	//			D4 c
 	{ "findEmpty",		LB::b_findEmpty,	1, 1, true,  4, FBLTIN },	//			D4 f
 		// go															// D2
-	{ "importFileInto",	LB::b_importFileInto,2, 2, false, 4, BLTIN },	//			D4 c
-	{ "installMenu",	LB::b_installMenu,	1, 1, false, 2, BLTIN },	// D2 c
+	{ "importFileInto",	LB::b_importFileInto,2, 2, false, 4, CBLTIN }, //			D4 c
+	{ "installMenu",	LB::b_installMenu,	1, 1, false, 2, CBLTIN },	// D2 c
 	{ "label",			LB::b_label,		1, 1, true,  2, FBLTIN },	// D2 f
 	{ "marker",			LB::b_marker,		1, 1, true,  2, FBLTIN },	// D2 f
-	{ "move",			LB::b_move,			1, 2, false, 4, BLTIN },	//			D4 c
-	{ "moveableSprite",	LB::b_moveableSprite,0, 0, false, 2, BLTIN },	// D2, FIXME: the field in D4+
-	{ "pasteClipBoardInto",LB::b_pasteClipBoardInto,1,1,false,4,BLTIN },//			D4 c
-	{ "puppetPalette",	LB::b_puppetPalette, -1,0, false, 2, BLTIN },	// D2 c
-	{ "puppetSound",	LB::b_puppetSound,	-1,0, false, 2, BLTIN },	// D2 c
-	{ "puppetSprite",	LB::b_puppetSprite,	-1,0, false, 2, BLTIN },	// D2 c
-	{ "puppetTempo",	LB::b_puppetTempo,	1, 1, false, 2, BLTIN },	// D2 c
-	{ "puppetTransition",LB::b_puppetTransition,-1,0,false,2, BLTIN },	// D2 c
+	{ "move",			LB::b_move,			1, 2, false, 4, CBLTIN },	//			D4 c
+	{ "moveableSprite",	LB::b_moveableSprite,0, 0, false, 2, CBLTIN },	// D2, FIXME: the field in D4+
+	{ "pasteClipBoardInto",LB::b_pasteClipBoardInto,1,1,false,4,CBLTIN },//		D4 c
+	{ "puppetPalette",	LB::b_puppetPalette, -1,0, false, 2, CBLTIN },	// D2 c
+	{ "puppetSound",	LB::b_puppetSound,	-1,0, false, 2, CBLTIN },	// D2 c
+	{ "puppetSprite",	LB::b_puppetSprite,	-1,0, false, 2, CBLTIN },	// D2 c
+	{ "puppetTempo",	LB::b_puppetTempo,	1, 1, false, 2, CBLTIN },	// D2 c
+	{ "puppetTransition",LB::b_puppetTransition,-1,0,false,2, CBLTIN },// D2 c
 	{ "ramNeeded",		LB::b_ramNeeded,	2, 2, true,  3, FBLTIN },	//		D3.1 f
 	{ "rollOver",		LB::b_rollOver,		1, 1, true,  2, FBLTIN },	// D2 f
-	{ "spriteBox",		LB::b_spriteBox,	-1,0, false, 2, BLTIN },	// D2 c
-	{ "unLoad",			LB::b_unLoad,		0, 2, false, 3, BLTIN },	//		D3.1 c
-	{ "unLoadCast",		LB::b_unLoadCast,	0, 2, false, 3, BLTIN },	//		D3.1 c
-	{ "updateStage",	LB::b_updateStage,	0, 0, false, 2, BLTIN },	// D2 c
-	{ "zoomBox",		LB::b_zoomBox,		-1,0, false, 2, BLTIN },	// D2 c
+	{ "spriteBox",		LB::b_spriteBox,	-1,0, false, 2, CBLTIN },	// D2 c
+	{ "unLoad",			LB::b_unLoad,		0, 2, false, 3, CBLTIN },	//		D3.1 c
+	{ "unLoadCast",		LB::b_unLoadCast,	0, 2, false, 3, CBLTIN },	//		D3.1 c
+	{ "updateStage",	LB::b_updateStage,	0, 0, false, 2, CBLTIN },	// D2 c
+	{ "zoomBox",		LB::b_zoomBox,		-1,0, false, 2, CBLTIN },	// D2 c
 	// Point
 	{ "point",			LB::b_point,		2, 2, true,  4, FBLTIN },	//			D4 f
 	{ "inside",			LB::b_inside,		2, 2, true,  4, FBLTIN },	//			D4 f
@@ -227,26 +227,26 @@ static struct BuiltinProto {
 	{ "rect",			LB::b_rect,			4, 4, true,  4, FBLTIN },	//			D4 f
 	{ "union",			LB::b_union,		2, 2, true,  4, FBLTIN },	//			D4 f
 	// Sound
-	{ "beep",	 		LB::b_beep,			0, 1, false, 2, BLTIN },	// D2
-	{ "mci",	 		LB::b_mci,			1, 1, false, 3, BLTIN },	//		D3.1 c
-	{ "mciwait",		LB::b_mciwait,		1, 1, false, 4, BLTIN },	//			D4 c
-	{ "sound",			LB::b_sound,		2, 3, false, 3, BLTIN },	//		D3 c
+	{ "beep",	 		LB::b_beep,			0, 1, false, 2, CBLTIN },	// D2
+	{ "mci",	 		LB::b_mci,			1, 1, false, 3, CBLTIN },	//		D3.1 c
+	{ "mciwait",		LB::b_mciwait,		1, 1, false, 4, CBLTIN },	//			D4 c
+	{ "sound",			LB::b_sound,		2, 3, false, 3, CBLTIN },	//		D3 c
 	{ "soundBusy",		LB::b_soundBusy,	1, 1, true,  3, FBLTIN },	//		D3 f
 	// Constants
-	{ "backspace",		LB::b_backspace,	0, 0, false, 2, FBLTIN },	// D2
-	{ "empty",			LB::b_empty,		0, 0, false, 2, FBLTIN },	// D2
-	{ "enter",			LB::b_enter,		0, 0, false, 2, FBLTIN },	// D2
-	{ "false",			LB::b_false,		0, 0, false, 2, FBLTIN },	// D2
-	{ "quote",			LB::b_quote,		0, 0, false, 2, FBLTIN },	// D2
-	{ "scummvm_return",	LB::b_returnconst,	0, 0, false, 2, FBLTIN },	// D2
-	{ "tab",			LB::b_tab,			0, 0, false, 2, FBLTIN },	// D2
-	{ "true",			LB::b_true,			0, 0, false, 2, FBLTIN },	// D2
-	{ "version",		LB::b_version,		0, 0, false, 3, FBLTIN },	//		D3
+	{ "backspace",		LB::b_backspace,	0, 0, false, 2, KBLTIN },	// D2 konstant
+	{ "empty",			LB::b_empty,		0, 0, false, 2, KBLTIN },	// D2 k
+	{ "enter",			LB::b_enter,		0, 0, false, 2, KBLTIN },	// D2 k
+	{ "false",			LB::b_false,		0, 0, false, 2, KBLTIN },	// D2 k
+	{ "quote",			LB::b_quote,		0, 0, false, 2, KBLTIN },	// D2 k
+	{ "return",			LB::b_returnconst,	0, 0, false, 2, KBLTIN },	// D2 k
+	{ "tab",			LB::b_tab,			0, 0, false, 2, KBLTIN },	// D2 k
+	{ "true",			LB::b_true,			0, 0, false, 2, KBLTIN },	// D2 k
+	{ "version",		LB::b_version,		0, 0, false, 3, KBLTIN },	//		D3 k
 	// References
-	{ "cast",			LB::b_cast,			1, 1, false, 4, RBLTIN },	//			D4 f
-	{ "field",			LB::b_field,		1, 1, false, 3, RBLTIN },	//		D3 f
-	{ "script",			LB::b_script,		1, 1, false, 4, RBLTIN },	//			D4 f
-	{ "window",			LB::b_window,		1, 1, false, 4, RBLTIN },	//			D4 f
+	{ "cast",			LB::b_cast,			1, 1, false, 4, FBLTIN },	//			D4 f
+	{ "field",			LB::b_field,		1, 1, false, 3, FBLTIN },	//		D3 f
+	{ "script",			LB::b_script,		1, 1, false, 4, FBLTIN },	//			D4 f
+	{ "window",			LB::b_window,		1, 1, false, 4, FBLTIN },	//			D4 f
 	// Chunk operations
 	{ "numberOfChars",	LB::b_numberofchars,1, 1, false, 3, FBLTIN },	//			D3 f
 	{ "numberOfItems",	LB::b_numberofitems,1, 1, false, 3, FBLTIN },	//			D3 f
@@ -258,11 +258,11 @@ static struct BuiltinProto {
 	{ "lastWordOf",		LB::b_lastwordof,	1, 1, false, 4, FBLTIN },	//			D4 f
 
 	// ScummVM Asserts: Used for testing ScummVM's Lingo implementation
-	{ "scummvmAssert",	LB::b_scummvmassert,1, 1, true,  2, FBLTIN },
-	{ "scummvmAssertEqual",	LB::b_scummvmassertequal,2,2,true,2,FBLTIN },
+	{ "scummvmAssert",	LB::b_scummvmassert,1, 1, true,  2, HBLTIN },
+	{ "scummvmAssertEqual",	LB::b_scummvmassertequal,2,2,true,2,HBLTIN },
 
 
-	{ 0, 0, 0, 0, false, 0, 0 }
+	{ 0, 0, 0, 0, false, 0, VOIDSYM }
 };
 
 void Lingo::initBuiltIns() {
@@ -279,7 +279,22 @@ void Lingo::initBuiltIns() {
 		sym.parens = blt->parens;
 		sym.u.bltin = blt->func;
 
-		_builtins[blt->name] = sym;
+		switch (blt->type) {
+		case CBLTIN:
+			_builtinCmds[blt->name] = sym;
+			break;
+		case FBLTIN:
+			_builtinFuncs[blt->name] = sym;
+			break;
+		case HBLTIN:
+			_builtinCmds[blt->name] = sym;
+			_builtinFuncs[blt->name] = sym;
+			break;
+		case KBLTIN:
+			_builtinConsts[blt->name] = sym;
+		default:
+			break;
+		}
 
 		_functions[(void *)sym.u.s] = new FuncDesc(blt->name, "");
 	}
@@ -310,7 +325,7 @@ void Lingo::printSTUBWithArglist(const char *funcname, int nargs, const char *pr
 }
 
 void Lingo::convertVOIDtoString(int arg, int nargs) {
-	if (_stack[_stack.size() - nargs + arg].type == VOID) {
+	if (_stack[_stack.size() - nargs + arg].type == VOIDSYM) {
 		if (_stack[_stack.size() - nargs + arg].u.s != NULL)
 			g_lingo->_stack[_stack.size() - nargs + arg].type = STRING;
 		else
@@ -1645,7 +1660,7 @@ Common::String Lingo::genMenuHandler(int *commandId, Common::String &command) {
 		(*commandId)++;
 
 		name = Common::String::format("scummvmMenu%d", *commandId);
-	} while (getHandler(name).type != VOID);
+	} while (getHandler(name).type != VOIDSYM);
 
 	return Common::String::format("on %s\n  %s\nend %s\n\n", name.c_str(), command.c_str(), name.c_str());
 }
diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index 3c5dc8cb70..422242b115 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -371,7 +371,7 @@ void LC::cb_objectcall() {
 			Datum varTest(arg);
 			varTest.type = VAR;
 			varTest = g_lingo->varFetch(varTest);
-			if (varTest.type != VOID)
+			if (varTest.type != VOIDSYM)
 				arg = varTest;
 		}
 		args.push_back(arg);
@@ -384,7 +384,7 @@ void LC::cb_objectcall() {
 			target = target->clone();
 		}
 		Symbol method = target->getMethod(methodName.asString());
-		if (method.type != VOID) {
+		if (method.type != VOIDSYM) {
 			if (target->getObjType() == kFactoryObj && method.type == HANDLER) {
 				// For kFactoryObj handlers the target is the first argument
 				g_lingo->push(method.target);
@@ -403,7 +403,7 @@ void LC::cb_objectcall() {
 
 	// if there's nothing, try calling a function with that name
 	Symbol func = g_lingo->getHandler(*d.u.s);
-	if (func.type != VOID) {
+	if (func.type != VOIDSYM) {
 		if (target) {
 			g_lingo->push(methodName);
 		}
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index 13720aed1a..2a8fbc0e63 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -72,10 +72,12 @@ static struct FuncDescr {
 	{ LC::c_arraypush,		"c_arraypush",		"i" },
 	{ LC::c_assign,			"c_assign",			""  },
 	{ LC::c_before,			"c_before",			"" },	// D3
-	{ LC::c_call,			"c_call",			"si" },
+	{ LC::c_callcmd,		"c_callcmd",		"si" },
+	{ LC::c_callfunc,		"c_callfunc",		"si" },
 	{ LC::c_charOf,			"c_charOf",			"" },	// D3
 	{ LC::c_charToOf,		"c_charToOf",		"" },	// D3
 	{ LC::c_concat,			"c_concat",			"" },
+	{ LC::c_constpush,		"c_constpush",		"s" },
 	{ LC::c_contains,		"c_contains",		"" },
 	{ LC::c_div,			"c_div",			"" },
 	{ LC::c_eq,				"c_eq",				"" },
@@ -318,6 +320,17 @@ void LC::c_printtop(void) {
 	}
 }
 
+void LC::c_constpush() {
+	Common::String name(g_lingo->readString());
+
+	Symbol funcSym;
+	if (g_lingo->_builtinConsts.contains(name)) {
+		funcSym = g_lingo->_builtinConsts[name];
+	}
+
+	LC::call(funcSym, 0);
+}
+
 void LC::c_intpush() {
 	int value = g_lingo->readInt();
 	g_lingo->push(Datum(value));
@@ -1314,15 +1327,23 @@ void LC::c_play() {
 	g_lingo->func_play(frame, movie);
 }
 
-void LC::c_call() {
+void LC::c_callcmd() {
 	Common::String name(g_lingo->readString());
 
 	int nargs = g_lingo->readInt();
 
-	LC::call(name, nargs);
+	LC::call(name, nargs, CBLTIN);
 }
 
-void LC::call(const Common::String &name, int nargs) {
+void LC::c_callfunc() {
+	Common::String name(g_lingo->readString());
+
+	int nargs = g_lingo->readInt();
+
+	LC::call(name, nargs, FBLTIN);
+}
+
+void LC::call(const Common::String &name, int nargs, SymbolType bltinType) {
 	if (debugChannelSet(3, kDebugLingoExec))
 		g_lingo->printSTUBWithArglist(name.c_str(), nargs, "call:");
 
@@ -1338,7 +1359,7 @@ void LC::call(const Common::String &name, int nargs) {
 				target = target->clone();
 			}
 			funcSym = target->getMethod(name);
-			if (funcSym.type != VOID) {
+			if (funcSym.type != VOIDSYM) {
 				if (target->getObjType() == kScriptObj && funcSym.type == HANDLER) {
 					// For kScriptObj handlers the target is the first argument
 					g_lingo->_stack[g_lingo->_stack.size() - nargs] = funcSym.target;
@@ -1357,7 +1378,7 @@ void LC::call(const Common::String &name, int nargs) {
 	funcSym = g_lingo->getHandler(name);
 
 	// Factory/XObject method call
-	if (funcSym.type == VOID) {
+	if (funcSym.type == VOIDSYM) {
 		Datum objName(name);
 		objName.type = VAR;
 		Datum d = g_lingo->varFetch(objName);
@@ -1380,18 +1401,35 @@ void LC::call(const Common::String &name, int nargs) {
 		}
 	}
 
+	// Builtin
+	if (funcSym.type == VOIDSYM) {
+		switch (bltinType) {
+		case CBLTIN:
+			if (g_lingo->_builtinCmds.contains(name)) {
+				funcSym = g_lingo->_builtinCmds[name];
+			}
+			break;
+		case FBLTIN:
+			if (g_lingo->_builtinFuncs.contains(name)) {
+				funcSym = g_lingo->_builtinFuncs[name];
+			}
+			break;
+		default:
+			break;
+		}
+	}
+
 	call(funcSym, nargs);
 }
 
 void LC::call(const Symbol &funcSym, int nargs) {
 	bool dropArgs = false;
 
-	if (funcSym.type == VOID) {
+	if (funcSym.type == VOIDSYM) {
 		warning("Call to undefined handler. Dropping %d stack items", nargs);
 		dropArgs = true;
 	} else {
-		if ((funcSym.type == BLTIN || funcSym.type == FBLTIN || funcSym.type == RBLTIN)
-				&& funcSym.nargs != -1 && funcSym.nargs != nargs && funcSym.maxArgs != nargs) {
+		if (funcSym.type != HANDLER && funcSym.nargs != -1 && funcSym.nargs != nargs && funcSym.maxArgs != nargs) {
 			if (funcSym.nargs == funcSym.maxArgs)
 				warning("Incorrect number of arguments to handler '%s', expecting %d. Dropping %d stack items", funcSym.name->c_str(), funcSym.nargs, nargs);
 			else
@@ -1418,7 +1456,7 @@ void LC::call(const Symbol &funcSym, int nargs) {
 			g_lingo->pop();
 	}
 
-	if (funcSym.type == BLTIN || funcSym.type == FBLTIN || funcSym.type == RBLTIN) {
+	if (funcSym.type != HANDLER) {
 		int stackSize = g_lingo->_stack.size() - nargs;
 
 		if (funcSym.target) {
@@ -1434,10 +1472,10 @@ void LC::call(const Symbol &funcSym, int nargs) {
 
 		int stackNewSize = g_lingo->_stack.size();
 
-		if (funcSym.type == FBLTIN || funcSym.type == RBLTIN) {
+		if (funcSym.type != HANDLER && funcSym.type != CBLTIN) {
 			if (stackNewSize - stackSize != 1)
 				warning("built-in function %s did not return value", funcSym.name->c_str());
-		} else {
+		} else if (funcSym.type == CBLTIN) {
 			if (stackNewSize - stackSize != 0)
 				warning("built-in procedure %s returned extra %d values", funcSym.name->c_str(), stackNewSize - stackSize);
 		}
diff --git a/engines/director/lingo/lingo-code.h b/engines/director/lingo/lingo-code.h
index 8eb6ea2a10..de4dbb00f8 100644
--- a/engines/director/lingo/lingo-code.h
+++ b/engines/director/lingo/lingo-code.h
@@ -66,6 +66,7 @@ namespace LC {
 	void c_wordOf();
 	void c_wordToOf();
 
+	void c_constpush();
 	void c_intpush();
 	void c_voidpush();
 	void c_floatpush();
@@ -112,10 +113,11 @@ namespace LC {
 	void c_le();
 	void c_jump();
 	void c_jumpifz();
-	void c_call();
+	void c_callcmd();
+	void c_callfunc();
 
 	void call(const Symbol &targetSym, int nargs);
-	void call(const Common::String &name, int nargs);
+	void call(const Common::String &name, int nargs, SymbolType bltinType = VOIDSYM);
 
 	void c_procret();
 
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 9680bedc4b..cd551282e2 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -213,8 +213,20 @@ int Lingo::codeSetImmediate(bool state) {
 	return res;
 }
 
+int Lingo::codeCmd(Common::String *s, int numpar) {
+	int ret = g_lingo->code1(LC::c_callcmd);
+
+	g_lingo->codeString(s->c_str());
+
+	inst num = 0;
+	WRITE_UINT32(&num, numpar);
+	g_lingo->code1(num);
+
+	return ret;
+}
+
 int Lingo::codeFunc(Common::String *s, int numpar) {
-	int ret = g_lingo->code1(LC::c_call);
+	int ret = g_lingo->code1(LC::c_callfunc);
 
 	g_lingo->codeString(s->c_str());
 
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 237114d72f..238d325558 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -236,71 +236,72 @@ extern int yydebug;
     THEMENUITEMENTITY = 274,       /* THEMENUITEMENTITY  */
     THEMENUITEMSENTITY = 275,      /* THEMENUITEMSENTITY  */
     FLOAT = 276,                   /* FLOAT  */
-    BLTIN = 277,                   /* BLTIN  */
-    FBLTIN = 278,                  /* FBLTIN  */
-    RBLTIN = 279,                  /* RBLTIN  */
-    THEFBLTIN = 280,               /* THEFBLTIN  */
-    ID = 281,                      /* ID  */
-    STRING = 282,                  /* STRING  */
-    HANDLER = 283,                 /* HANDLER  */
-    SYMBOL = 284,                  /* SYMBOL  */
-    ENDCLAUSE = 285,               /* ENDCLAUSE  */
-    tPLAYACCEL = 286,              /* tPLAYACCEL  */
-    tMETHOD = 287,                 /* tMETHOD  */
-    THEOBJECTPROP = 288,           /* THEOBJECTPROP  */
-    tDOWN = 289,                   /* tDOWN  */
-    tELSE = 290,                   /* tELSE  */
-    tELSIF = 291,                  /* tELSIF  */
-    tEXIT = 292,                   /* tEXIT  */
-    tGLOBAL = 293,                 /* tGLOBAL  */
-    tGO = 294,                     /* tGO  */
-    tGOLOOP = 295,                 /* tGOLOOP  */
-    tIF = 296,                     /* tIF  */
-    tIN = 297,                     /* tIN  */
-    tINTO = 298,                   /* tINTO  */
-    tMACRO = 299,                  /* tMACRO  */
-    tMOVIE = 300,                  /* tMOVIE  */
-    tNEXT = 301,                   /* tNEXT  */
-    tOF = 302,                     /* tOF  */
-    tPREVIOUS = 303,               /* tPREVIOUS  */
-    tPUT = 304,                    /* tPUT  */
-    tREPEAT = 305,                 /* tREPEAT  */
-    tSET = 306,                    /* tSET  */
-    tTHEN = 307,                   /* tTHEN  */
-    tTO = 308,                     /* tTO  */
-    tWHEN = 309,                   /* tWHEN  */
-    tWITH = 310,                   /* tWITH  */
-    tWHILE = 311,                  /* tWHILE  */
-    tFACTORY = 312,                /* tFACTORY  */
-    tOPEN = 313,                   /* tOPEN  */
-    tPLAY = 314,                   /* tPLAY  */
-    tINSTANCE = 315,               /* tINSTANCE  */
-    tGE = 316,                     /* tGE  */
-    tLE = 317,                     /* tLE  */
-    tEQ = 318,                     /* tEQ  */
-    tNEQ = 319,                    /* tNEQ  */
-    tAND = 320,                    /* tAND  */
-    tOR = 321,                     /* tOR  */
-    tNOT = 322,                    /* tNOT  */
-    tMOD = 323,                    /* tMOD  */
-    tAFTER = 324,                  /* tAFTER  */
-    tBEFORE = 325,                 /* tBEFORE  */
-    tCONCAT = 326,                 /* tCONCAT  */
-    tCONTAINS = 327,               /* tCONTAINS  */
-    tSTARTS = 328,                 /* tSTARTS  */
-    tCHAR = 329,                   /* tCHAR  */
-    tITEM = 330,                   /* tITEM  */
-    tLINE = 331,                   /* tLINE  */
-    tWORD = 332,                   /* tWORD  */
-    tSPRITE = 333,                 /* tSPRITE  */
-    tINTERSECTS = 334,             /* tINTERSECTS  */
-    tWITHIN = 335,                 /* tWITHIN  */
-    tTELL = 336,                   /* tTELL  */
-    tPROPERTY = 337,               /* tPROPERTY  */
-    tON = 338,                     /* tON  */
-    tENDIF = 339,                  /* tENDIF  */
-    tENDREPEAT = 340,              /* tENDREPEAT  */
-    tENDTELL = 341                 /* tENDTELL  */
+    THEFUNC = 277,                 /* THEFUNC  */
+    THEFUNCINOF = 278,             /* THEFUNCINOF  */
+    ID = 279,                      /* ID  */
+    STRING = 280,                  /* STRING  */
+    SYMBOL = 281,                  /* SYMBOL  */
+    ENDCLAUSE = 282,               /* ENDCLAUSE  */
+    tPLAYACCEL = 283,              /* tPLAYACCEL  */
+    tMETHOD = 284,                 /* tMETHOD  */
+    THEOBJECTPROP = 285,           /* THEOBJECTPROP  */
+    CAST = 286,                    /* CAST  */
+    FIELD = 287,                   /* FIELD  */
+    SCRIPT = 288,                  /* SCRIPT  */
+    WINDOW = 289,                  /* WINDOW  */
+    tDOWN = 290,                   /* tDOWN  */
+    tELSE = 291,                   /* tELSE  */
+    tELSIF = 292,                  /* tELSIF  */
+    tEXIT = 293,                   /* tEXIT  */
+    tGLOBAL = 294,                 /* tGLOBAL  */
+    tGO = 295,                     /* tGO  */
+    tGOLOOP = 296,                 /* tGOLOOP  */
+    tIF = 297,                     /* tIF  */
+    tIN = 298,                     /* tIN  */
+    tINTO = 299,                   /* tINTO  */
+    tMACRO = 300,                  /* tMACRO  */
+    tMOVIE = 301,                  /* tMOVIE  */
+    tNEXT = 302,                   /* tNEXT  */
+    tOF = 303,                     /* tOF  */
+    tPREVIOUS = 304,               /* tPREVIOUS  */
+    tPUT = 305,                    /* tPUT  */
+    tREPEAT = 306,                 /* tREPEAT  */
+    tSET = 307,                    /* tSET  */
+    tTHEN = 308,                   /* tTHEN  */
+    tTO = 309,                     /* tTO  */
+    tWHEN = 310,                   /* tWHEN  */
+    tWITH = 311,                   /* tWITH  */
+    tWHILE = 312,                  /* tWHILE  */
+    tFACTORY = 313,                /* tFACTORY  */
+    tOPEN = 314,                   /* tOPEN  */
+    tPLAY = 315,                   /* tPLAY  */
+    tINSTANCE = 316,               /* tINSTANCE  */
+    tGE = 317,                     /* tGE  */
+    tLE = 318,                     /* tLE  */
+    tEQ = 319,                     /* tEQ  */
+    tNEQ = 320,                    /* tNEQ  */
+    tAND = 321,                    /* tAND  */
+    tOR = 322,                     /* tOR  */
+    tNOT = 323,                    /* tNOT  */
+    tMOD = 324,                    /* tMOD  */
+    tAFTER = 325,                  /* tAFTER  */
+    tBEFORE = 326,                 /* tBEFORE  */
+    tCONCAT = 327,                 /* tCONCAT  */
+    tCONTAINS = 328,               /* tCONTAINS  */
+    tSTARTS = 329,                 /* tSTARTS  */
+    tCHAR = 330,                   /* tCHAR  */
+    tITEM = 331,                   /* tITEM  */
+    tLINE = 332,                   /* tLINE  */
+    tWORD = 333,                   /* tWORD  */
+    tSPRITE = 334,                 /* tSPRITE  */
+    tINTERSECTS = 335,             /* tINTERSECTS  */
+    tWITHIN = 336,                 /* tWITHIN  */
+    tTELL = 337,                   /* tTELL  */
+    tPROPERTY = 338,               /* tPROPERTY  */
+    tON = 339,                     /* tON  */
+    tENDIF = 340,                  /* tENDIF  */
+    tENDREPEAT = 341,              /* tENDREPEAT  */
+    tENDTELL = 342                 /* tENDTELL  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -324,7 +325,12 @@ union YYSTYPE
 		Common::String *prop;
 	} objectprop;
 
-#line 328 "engines/director/lingo/lingo-gr.cpp"
+	struct {
+		Common::String *s;
+		int i;
+	} ref;
+
+#line 334 "engines/director/lingo/lingo-gr.cpp"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -364,138 +370,138 @@ enum yysymbol_kind_t
   YYSYMBOL_THEMENUITEMENTITY = 19,         /* THEMENUITEMENTITY  */
   YYSYMBOL_THEMENUITEMSENTITY = 20,        /* THEMENUITEMSENTITY  */
   YYSYMBOL_FLOAT = 21,                     /* FLOAT  */
-  YYSYMBOL_BLTIN = 22,                     /* BLTIN  */
-  YYSYMBOL_FBLTIN = 23,                    /* FBLTIN  */
-  YYSYMBOL_RBLTIN = 24,                    /* RBLTIN  */
-  YYSYMBOL_THEFBLTIN = 25,                 /* THEFBLTIN  */
-  YYSYMBOL_ID = 26,                        /* ID  */
-  YYSYMBOL_STRING = 27,                    /* STRING  */
-  YYSYMBOL_HANDLER = 28,                   /* HANDLER  */
-  YYSYMBOL_SYMBOL = 29,                    /* SYMBOL  */
-  YYSYMBOL_ENDCLAUSE = 30,                 /* ENDCLAUSE  */
-  YYSYMBOL_tPLAYACCEL = 31,                /* tPLAYACCEL  */
-  YYSYMBOL_tMETHOD = 32,                   /* tMETHOD  */
-  YYSYMBOL_THEOBJECTPROP = 33,             /* THEOBJECTPROP  */
-  YYSYMBOL_tDOWN = 34,                     /* tDOWN  */
-  YYSYMBOL_tELSE = 35,                     /* tELSE  */
-  YYSYMBOL_tELSIF = 36,                    /* tELSIF  */
-  YYSYMBOL_tEXIT = 37,                     /* tEXIT  */
-  YYSYMBOL_tGLOBAL = 38,                   /* tGLOBAL  */
-  YYSYMBOL_tGO = 39,                       /* tGO  */
-  YYSYMBOL_tGOLOOP = 40,                   /* tGOLOOP  */
-  YYSYMBOL_tIF = 41,                       /* tIF  */
-  YYSYMBOL_tIN = 42,                       /* tIN  */
-  YYSYMBOL_tINTO = 43,                     /* tINTO  */
-  YYSYMBOL_tMACRO = 44,                    /* tMACRO  */
-  YYSYMBOL_tMOVIE = 45,                    /* tMOVIE  */
-  YYSYMBOL_tNEXT = 46,                     /* tNEXT  */
-  YYSYMBOL_tOF = 47,                       /* tOF  */
-  YYSYMBOL_tPREVIOUS = 48,                 /* tPREVIOUS  */
-  YYSYMBOL_tPUT = 49,                      /* tPUT  */
-  YYSYMBOL_tREPEAT = 50,                   /* tREPEAT  */
-  YYSYMBOL_tSET = 51,                      /* tSET  */
-  YYSYMBOL_tTHEN = 52,                     /* tTHEN  */
-  YYSYMBOL_tTO = 53,                       /* tTO  */
-  YYSYMBOL_tWHEN = 54,                     /* tWHEN  */
-  YYSYMBOL_tWITH = 55,                     /* tWITH  */
-  YYSYMBOL_tWHILE = 56,                    /* tWHILE  */
-  YYSYMBOL_tFACTORY = 57,                  /* tFACTORY  */
-  YYSYMBOL_tOPEN = 58,                     /* tOPEN  */
-  YYSYMBOL_tPLAY = 59,                     /* tPLAY  */
-  YYSYMBOL_tINSTANCE = 60,                 /* tINSTANCE  */
-  YYSYMBOL_tGE = 61,                       /* tGE  */
-  YYSYMBOL_tLE = 62,                       /* tLE  */
-  YYSYMBOL_tEQ = 63,                       /* tEQ  */
-  YYSYMBOL_tNEQ = 64,                      /* tNEQ  */
-  YYSYMBOL_tAND = 65,                      /* tAND  */
-  YYSYMBOL_tOR = 66,                       /* tOR  */
-  YYSYMBOL_tNOT = 67,                      /* tNOT  */
-  YYSYMBOL_tMOD = 68,                      /* tMOD  */
-  YYSYMBOL_tAFTER = 69,                    /* tAFTER  */
-  YYSYMBOL_tBEFORE = 70,                   /* tBEFORE  */
-  YYSYMBOL_tCONCAT = 71,                   /* tCONCAT  */
-  YYSYMBOL_tCONTAINS = 72,                 /* tCONTAINS  */
-  YYSYMBOL_tSTARTS = 73,                   /* tSTARTS  */
-  YYSYMBOL_tCHAR = 74,                     /* tCHAR  */
-  YYSYMBOL_tITEM = 75,                     /* tITEM  */
-  YYSYMBOL_tLINE = 76,                     /* tLINE  */
-  YYSYMBOL_tWORD = 77,                     /* tWORD  */
-  YYSYMBOL_tSPRITE = 78,                   /* tSPRITE  */
-  YYSYMBOL_tINTERSECTS = 79,               /* tINTERSECTS  */
-  YYSYMBOL_tWITHIN = 80,                   /* tWITHIN  */
-  YYSYMBOL_tTELL = 81,                     /* tTELL  */
-  YYSYMBOL_tPROPERTY = 82,                 /* tPROPERTY  */
-  YYSYMBOL_tON = 83,                       /* tON  */
-  YYSYMBOL_tENDIF = 84,                    /* tENDIF  */
-  YYSYMBOL_tENDREPEAT = 85,                /* tENDREPEAT  */
-  YYSYMBOL_tENDTELL = 86,                  /* tENDTELL  */
-  YYSYMBOL_87_ = 87,                       /* '<'  */
-  YYSYMBOL_88_ = 88,                       /* '>'  */
-  YYSYMBOL_89_ = 89,                       /* '&'  */
-  YYSYMBOL_90_ = 90,                       /* '+'  */
-  YYSYMBOL_91_ = 91,                       /* '-'  */
-  YYSYMBOL_92_ = 92,                       /* '*'  */
-  YYSYMBOL_93_ = 93,                       /* '/'  */
-  YYSYMBOL_94_ = 94,                       /* '%'  */
-  YYSYMBOL_95_n_ = 95,                     /* '\n'  */
-  YYSYMBOL_96_ = 96,                       /* '('  */
-  YYSYMBOL_97_ = 97,                       /* ')'  */
-  YYSYMBOL_98_ = 98,                       /* ','  */
-  YYSYMBOL_99_ = 99,                       /* '['  */
-  YYSYMBOL_100_ = 100,                     /* ']'  */
-  YYSYMBOL_101_ = 101,                     /* ':'  */
-  YYSYMBOL_YYACCEPT = 102,                 /* $accept  */
-  YYSYMBOL_program = 103,                  /* program  */
-  YYSYMBOL_programline = 104,              /* programline  */
-  YYSYMBOL_asgn = 105,                     /* asgn  */
-  YYSYMBOL_stmtoneliner = 106,             /* stmtoneliner  */
-  YYSYMBOL_stmt = 107,                     /* stmt  */
-  YYSYMBOL_108_1 = 108,                    /* $@1  */
-  YYSYMBOL_109_2 = 109,                    /* $@2  */
-  YYSYMBOL_110_3 = 110,                    /* $@3  */
-  YYSYMBOL_111_4 = 111,                    /* $@4  */
-  YYSYMBOL_112_5 = 112,                    /* $@5  */
-  YYSYMBOL_113_6 = 113,                    /* $@6  */
-  YYSYMBOL_114_7 = 114,                    /* $@7  */
-  YYSYMBOL_115_8 = 115,                    /* $@8  */
-  YYSYMBOL_116_9 = 116,                    /* $@9  */
-  YYSYMBOL_startrepeat = 117,              /* startrepeat  */
-  YYSYMBOL_tellstart = 118,                /* tellstart  */
-  YYSYMBOL_ifstmt = 119,                   /* ifstmt  */
-  YYSYMBOL_elseifstmtlist = 120,           /* elseifstmtlist  */
-  YYSYMBOL_elseifstmt = 121,               /* elseifstmt  */
-  YYSYMBOL_jumpifz = 122,                  /* jumpifz  */
-  YYSYMBOL_jump = 123,                     /* jump  */
-  YYSYMBOL_varassign = 124,                /* varassign  */
-  YYSYMBOL_if = 125,                       /* if  */
-  YYSYMBOL_lbl = 126,                      /* lbl  */
-  YYSYMBOL_stmtlist = 127,                 /* stmtlist  */
-  YYSYMBOL_simpleexpr = 128,               /* simpleexpr  */
-  YYSYMBOL_funccall = 129,                 /* funccall  */
-  YYSYMBOL_130_10 = 130,                   /* $@10  */
-  YYSYMBOL_expr = 131,                     /* expr  */
+  YYSYMBOL_THEFUNC = 22,                   /* THEFUNC  */
+  YYSYMBOL_THEFUNCINOF = 23,               /* THEFUNCINOF  */
+  YYSYMBOL_ID = 24,                        /* ID  */
+  YYSYMBOL_STRING = 25,                    /* STRING  */
+  YYSYMBOL_SYMBOL = 26,                    /* SYMBOL  */
+  YYSYMBOL_ENDCLAUSE = 27,                 /* ENDCLAUSE  */
+  YYSYMBOL_tPLAYACCEL = 28,                /* tPLAYACCEL  */
+  YYSYMBOL_tMETHOD = 29,                   /* tMETHOD  */
+  YYSYMBOL_THEOBJECTPROP = 30,             /* THEOBJECTPROP  */
+  YYSYMBOL_CAST = 31,                      /* CAST  */
+  YYSYMBOL_FIELD = 32,                     /* FIELD  */
+  YYSYMBOL_SCRIPT = 33,                    /* SCRIPT  */
+  YYSYMBOL_WINDOW = 34,                    /* WINDOW  */
+  YYSYMBOL_tDOWN = 35,                     /* tDOWN  */
+  YYSYMBOL_tELSE = 36,                     /* tELSE  */
+  YYSYMBOL_tELSIF = 37,                    /* tELSIF  */
+  YYSYMBOL_tEXIT = 38,                     /* tEXIT  */
+  YYSYMBOL_tGLOBAL = 39,                   /* tGLOBAL  */
+  YYSYMBOL_tGO = 40,                       /* tGO  */
+  YYSYMBOL_tGOLOOP = 41,                   /* tGOLOOP  */
+  YYSYMBOL_tIF = 42,                       /* tIF  */
+  YYSYMBOL_tIN = 43,                       /* tIN  */
+  YYSYMBOL_tINTO = 44,                     /* tINTO  */
+  YYSYMBOL_tMACRO = 45,                    /* tMACRO  */
+  YYSYMBOL_tMOVIE = 46,                    /* tMOVIE  */
+  YYSYMBOL_tNEXT = 47,                     /* tNEXT  */
+  YYSYMBOL_tOF = 48,                       /* tOF  */
+  YYSYMBOL_tPREVIOUS = 49,                 /* tPREVIOUS  */
+  YYSYMBOL_tPUT = 50,                      /* tPUT  */
+  YYSYMBOL_tREPEAT = 51,                   /* tREPEAT  */
+  YYSYMBOL_tSET = 52,                      /* tSET  */
+  YYSYMBOL_tTHEN = 53,                     /* tTHEN  */
+  YYSYMBOL_tTO = 54,                       /* tTO  */
+  YYSYMBOL_tWHEN = 55,                     /* tWHEN  */
+  YYSYMBOL_tWITH = 56,                     /* tWITH  */
+  YYSYMBOL_tWHILE = 57,                    /* tWHILE  */
+  YYSYMBOL_tFACTORY = 58,                  /* tFACTORY  */
+  YYSYMBOL_tOPEN = 59,                     /* tOPEN  */
+  YYSYMBOL_tPLAY = 60,                     /* tPLAY  */
+  YYSYMBOL_tINSTANCE = 61,                 /* tINSTANCE  */
+  YYSYMBOL_tGE = 62,                       /* tGE  */
+  YYSYMBOL_tLE = 63,                       /* tLE  */
+  YYSYMBOL_tEQ = 64,                       /* tEQ  */
+  YYSYMBOL_tNEQ = 65,                      /* tNEQ  */
+  YYSYMBOL_tAND = 66,                      /* tAND  */
+  YYSYMBOL_tOR = 67,                       /* tOR  */
+  YYSYMBOL_tNOT = 68,                      /* tNOT  */
+  YYSYMBOL_tMOD = 69,                      /* tMOD  */
+  YYSYMBOL_tAFTER = 70,                    /* tAFTER  */
+  YYSYMBOL_tBEFORE = 71,                   /* tBEFORE  */
+  YYSYMBOL_tCONCAT = 72,                   /* tCONCAT  */
+  YYSYMBOL_tCONTAINS = 73,                 /* tCONTAINS  */
+  YYSYMBOL_tSTARTS = 74,                   /* tSTARTS  */
+  YYSYMBOL_tCHAR = 75,                     /* tCHAR  */
+  YYSYMBOL_tITEM = 76,                     /* tITEM  */
+  YYSYMBOL_tLINE = 77,                     /* tLINE  */
+  YYSYMBOL_tWORD = 78,                     /* tWORD  */
+  YYSYMBOL_tSPRITE = 79,                   /* tSPRITE  */
+  YYSYMBOL_tINTERSECTS = 80,               /* tINTERSECTS  */
+  YYSYMBOL_tWITHIN = 81,                   /* tWITHIN  */
+  YYSYMBOL_tTELL = 82,                     /* tTELL  */
+  YYSYMBOL_tPROPERTY = 83,                 /* tPROPERTY  */
+  YYSYMBOL_tON = 84,                       /* tON  */
+  YYSYMBOL_tENDIF = 85,                    /* tENDIF  */
+  YYSYMBOL_tENDREPEAT = 86,                /* tENDREPEAT  */
+  YYSYMBOL_tENDTELL = 87,                  /* tENDTELL  */
+  YYSYMBOL_88_ = 88,                       /* '<'  */
+  YYSYMBOL_89_ = 89,                       /* '>'  */
+  YYSYMBOL_90_ = 90,                       /* '&'  */
+  YYSYMBOL_91_ = 91,                       /* '+'  */
+  YYSYMBOL_92_ = 92,                       /* '-'  */
+  YYSYMBOL_93_ = 93,                       /* '*'  */
+  YYSYMBOL_94_ = 94,                       /* '/'  */
+  YYSYMBOL_95_ = 95,                       /* '%'  */
+  YYSYMBOL_96_n_ = 96,                     /* '\n'  */
+  YYSYMBOL_97_ = 97,                       /* '('  */
+  YYSYMBOL_98_ = 98,                       /* ')'  */
+  YYSYMBOL_99_ = 99,                       /* ','  */
+  YYSYMBOL_100_ = 100,                     /* '['  */
+  YYSYMBOL_101_ = 101,                     /* ']'  */
+  YYSYMBOL_102_ = 102,                     /* ':'  */
+  YYSYMBOL_YYACCEPT = 103,                 /* $accept  */
+  YYSYMBOL_program = 104,                  /* program  */
+  YYSYMBOL_programline = 105,              /* programline  */
+  YYSYMBOL_asgn = 106,                     /* asgn  */
+  YYSYMBOL_stmtoneliner = 107,             /* stmtoneliner  */
+  YYSYMBOL_stmt = 108,                     /* stmt  */
+  YYSYMBOL_109_1 = 109,                    /* $@1  */
+  YYSYMBOL_110_2 = 110,                    /* $@2  */
+  YYSYMBOL_111_3 = 111,                    /* $@3  */
+  YYSYMBOL_112_4 = 112,                    /* $@4  */
+  YYSYMBOL_113_5 = 113,                    /* $@5  */
+  YYSYMBOL_114_6 = 114,                    /* $@6  */
+  YYSYMBOL_115_7 = 115,                    /* $@7  */
+  YYSYMBOL_116_8 = 116,                    /* $@8  */
+  YYSYMBOL_117_9 = 117,                    /* $@9  */
+  YYSYMBOL_startrepeat = 118,              /* startrepeat  */
+  YYSYMBOL_tellstart = 119,                /* tellstart  */
+  YYSYMBOL_ifstmt = 120,                   /* ifstmt  */
+  YYSYMBOL_elseifstmtlist = 121,           /* elseifstmtlist  */
+  YYSYMBOL_elseifstmt = 122,               /* elseifstmt  */
+  YYSYMBOL_jumpifz = 123,                  /* jumpifz  */
+  YYSYMBOL_jump = 124,                     /* jump  */
+  YYSYMBOL_varassign = 125,                /* varassign  */
+  YYSYMBOL_if = 126,                       /* if  */
+  YYSYMBOL_lbl = 127,                      /* lbl  */
+  YYSYMBOL_stmtlist = 128,                 /* stmtlist  */
+  YYSYMBOL_simpleexpr = 129,               /* simpleexpr  */
+  YYSYMBOL_expr = 130,                     /* expr  */
+  YYSYMBOL_131_10 = 131,                   /* $@10  */
   YYSYMBOL_chunkexpr = 132,                /* chunkexpr  */
   YYSYMBOL_reference = 133,                /* reference  */
   YYSYMBOL_proc = 134,                     /* proc  */
   YYSYMBOL_135_11 = 135,                   /* $@11  */
   YYSYMBOL_136_12 = 136,                   /* $@12  */
   YYSYMBOL_137_13 = 137,                   /* $@13  */
-  YYSYMBOL_globallist = 138,               /* globallist  */
-  YYSYMBOL_propertylist = 139,             /* propertylist  */
-  YYSYMBOL_instancelist = 140,             /* instancelist  */
-  YYSYMBOL_gotofunc = 141,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 142,                /* gotomovie  */
-  YYSYMBOL_playfunc = 143,                 /* playfunc  */
-  YYSYMBOL_144_14 = 144,                   /* $@14  */
-  YYSYMBOL_defn = 145,                     /* defn  */
-  YYSYMBOL_146_15 = 146,                   /* $@15  */
+  YYSYMBOL_138_14 = 138,                   /* $@14  */
+  YYSYMBOL_globallist = 139,               /* globallist  */
+  YYSYMBOL_propertylist = 140,             /* propertylist  */
+  YYSYMBOL_instancelist = 141,             /* instancelist  */
+  YYSYMBOL_gotofunc = 142,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 143,                /* gotomovie  */
+  YYSYMBOL_playfunc = 144,                 /* playfunc  */
+  YYSYMBOL_145_15 = 145,                   /* $@15  */
+  YYSYMBOL_defn = 146,                     /* defn  */
   YYSYMBOL_147_16 = 147,                   /* $@16  */
-  YYSYMBOL_on = 148,                       /* on  */
-  YYSYMBOL_149_17 = 149,                   /* $@17  */
-  YYSYMBOL_argdef = 150,                   /* argdef  */
-  YYSYMBOL_endargdef = 151,                /* endargdef  */
-  YYSYMBOL_argstore = 152,                 /* argstore  */
-  YYSYMBOL_macro = 153,                    /* macro  */
+  YYSYMBOL_148_17 = 148,                   /* $@17  */
+  YYSYMBOL_on = 149,                       /* on  */
+  YYSYMBOL_150_18 = 150,                   /* $@18  */
+  YYSYMBOL_argdef = 151,                   /* argdef  */
+  YYSYMBOL_endargdef = 152,                /* endargdef  */
+  YYSYMBOL_argstore = 153,                 /* argstore  */
   YYSYMBOL_arglist = 154,                  /* arglist  */
   YYSYMBOL_nonemptyarglist = 155,          /* nonemptyarglist  */
   YYSYMBOL_list = 156,                     /* list  */
@@ -810,20 +816,20 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  103
+#define YYFINAL  96
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2022
+#define YYLAST   1629
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  102
+#define YYNTOKENS  103
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  59
+#define YYNNTS  58
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  185
+#define YYNRULES  183
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  385
+#define YYNSTATES  379
 
-#define YYMAXUTOK   341
+#define YYMAXUTOK   342
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -838,15 +844,15 @@ union yyalloc
 static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      95,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      96,     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,    94,    89,     2,
-      96,    97,    92,    90,    98,    91,     2,    93,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   101,     2,
-      87,     2,    88,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    95,    90,     2,
+      97,    98,    93,    91,    99,    92,     2,    94,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   102,     2,
+      88,     2,    89,     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,    99,     2,   100,     2,     2,     2,     2,     2,     2,
+       2,   100,     2,   101,     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,
@@ -871,32 +877,32 @@ static const yytype_int8 yytranslate[] =
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86
+      85,    86,    87
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,   212,   212,   213,   215,   216,   217,   219,   226,   230,
-     241,   248,   251,   258,   261,   268,   275,   282,   289,   295,
-     302,   313,   324,   331,   339,   340,   341,   342,   344,   345,
-     350,   363,   367,   370,   362,   397,   401,   404,   396,   431,
-     438,   444,   430,   474,   482,   485,   486,   488,   490,   492,
-     499,   507,   508,   510,   516,   520,   524,   528,   531,   533,
-     534,   535,   537,   540,   543,   547,   551,   555,   563,   569,
-     570,   571,   573,   576,   579,   582,   585,   591,   591,   596,
-     600,   601,   602,   603,   606,   612,   613,   614,   615,   616,
-     617,   618,   619,   620,   621,   622,   623,   624,   625,   626,
-     627,   628,   629,   630,   631,   632,   633,   635,   636,   637,
-     638,   639,   640,   641,   642,   644,   647,   649,   650,   651,
-     652,   660,   661,   661,   662,   662,   663,   663,   664,   667,
-     670,   673,   676,   680,   683,   687,   690,   694,   697,   708,
-     709,   710,   711,   715,   719,   724,   725,   727,   731,   735,
-     739,   739,   769,   769,   775,   776,   776,   782,   790,   796,
-     796,   798,   799,   800,   802,   803,   804,   806,   808,   816,
-     817,   818,   820,   821,   823,   825,   826,   827,   828,   830,
-     831,   833,   834,   836,   840,   844
+       0,   218,   218,   219,   221,   222,   223,   225,   232,   236,
+     247,   254,   257,   264,   267,   274,   281,   288,   295,   301,
+     308,   319,   330,   337,   345,   346,   348,   349,   354,   367,
+     371,   374,   366,   401,   405,   408,   400,   435,   442,   448,
+     434,   478,   486,   489,   490,   492,   494,   496,   503,   511,
+     512,   514,   520,   524,   528,   532,   535,   537,   538,   539,
+     541,   544,   547,   551,   555,   563,   571,   577,   578,   579,
+     581,   582,   583,   589,   589,   594,   597,   600,   603,   609,
+     610,   611,   612,   613,   614,   615,   616,   617,   618,   619,
+     620,   621,   622,   623,   624,   625,   626,   627,   628,   629,
+     630,   632,   643,   644,   645,   646,   647,   648,   649,   650,
+     652,   653,   664,   675,   688,   689,   690,   691,   699,   700,
+     700,   701,   701,   702,   702,   703,   706,   709,   715,   715,
+     720,   723,   727,   730,   734,   737,   741,   744,   755,   756,
+     757,   758,   762,   766,   771,   772,   774,   778,   782,   786,
+     786,   816,   816,   822,   823,   823,   829,   837,   843,   843,
+     845,   846,   847,   849,   850,   851,   853,   855,   856,   857,
+     859,   860,   862,   864,   865,   866,   867,   869,   870,   872,
+     873,   875,   879,   883
 };
 #endif
 
@@ -916,27 +922,27 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "end of file", "error", "invalid token", "UNARY", "CASTREF", "VOID",
   "VAR", "POINT", "RECT", "ARRAY", "OBJECT", "FIELDREF", "LEXERROR",
   "PARRAY", "INT", "ARGC", "ARGCNORET", "THEENTITY", "THEENTITYWITHID",
-  "THEMENUITEMENTITY", "THEMENUITEMSENTITY", "FLOAT", "BLTIN", "FBLTIN",
-  "RBLTIN", "THEFBLTIN", "ID", "STRING", "HANDLER", "SYMBOL", "ENDCLAUSE",
-  "tPLAYACCEL", "tMETHOD", "THEOBJECTPROP", "tDOWN", "tELSE", "tELSIF",
-  "tEXIT", "tGLOBAL", "tGO", "tGOLOOP", "tIF", "tIN", "tINTO", "tMACRO",
-  "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT", "tSET",
-  "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tFACTORY", "tOPEN", "tPLAY",
-  "tINSTANCE", "tGE", "tLE", "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tMOD",
-  "tAFTER", "tBEFORE", "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tITEM",
-  "tLINE", "tWORD", "tSPRITE", "tINTERSECTS", "tWITHIN", "tTELL",
-  "tPROPERTY", "tON", "tENDIF", "tENDREPEAT", "tENDTELL", "'<'", "'>'",
-  "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "','",
-  "'['", "']'", "':'", "$accept", "program", "programline", "asgn",
-  "stmtoneliner", "stmt", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7",
-  "$@8", "$@9", "startrepeat", "tellstart", "ifstmt", "elseifstmtlist",
-  "elseifstmt", "jumpifz", "jump", "varassign", "if", "lbl", "stmtlist",
-  "simpleexpr", "funccall", "$@10", "expr", "chunkexpr", "reference",
-  "proc", "$@11", "$@12", "$@13", "globallist", "propertylist",
-  "instancelist", "gotofunc", "gotomovie", "playfunc", "$@14", "defn",
-  "$@15", "$@16", "on", "$@17", "argdef", "endargdef", "argstore", "macro",
-  "arglist", "nonemptyarglist", "list", "valuelist", "linearlist",
-  "proplist", "proppair", YY_NULLPTR
+  "THEMENUITEMENTITY", "THEMENUITEMSENTITY", "FLOAT", "THEFUNC",
+  "THEFUNCINOF", "ID", "STRING", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL",
+  "tMETHOD", "THEOBJECTPROP", "CAST", "FIELD", "SCRIPT", "WINDOW", "tDOWN",
+  "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tGOLOOP", "tIF", "tIN",
+  "tINTO", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT",
+  "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE",
+  "tFACTORY", "tOPEN", "tPLAY", "tINSTANCE", "tGE", "tLE", "tEQ", "tNEQ",
+  "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT",
+  "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE",
+  "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tENDIF",
+  "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'",
+  "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
+  "$accept", "program", "programline", "asgn", "stmtoneliner", "stmt",
+  "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9",
+  "startrepeat", "tellstart", "ifstmt", "elseifstmtlist", "elseifstmt",
+  "jumpifz", "jump", "varassign", "if", "lbl", "stmtlist", "simpleexpr",
+  "expr", "$@10", "chunkexpr", "reference", "proc", "$@11", "$@12", "$@13",
+  "$@14", "globallist", "propertylist", "instancelist", "gotofunc",
+  "gotomovie", "playfunc", "$@15", "defn", "$@16", "$@17", "on", "$@18",
+  "argdef", "endargdef", "argstore", "arglist", "nonemptyarglist", "list",
+  "valuelist", "linearlist", "proplist", "proppair", YY_NULLPTR
   };
   return yy_sname[yysymbol];
 }
@@ -955,18 +961,18 @@ static const yytype_int16 yytoknum[] =
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,    60,    62,    38,
-      43,    45,    42,    47,    37,    10,    40,    41,    44,    91,
-      93,    58
+     335,   336,   337,   338,   339,   340,   341,   342,    60,    62,
+      38,    43,    45,    42,    47,    37,    10,    40,    41,    44,
+      91,    93,    58
 };
 #endif
 
-#define YYPACT_NINF (-349)
+#define YYPACT_NINF (-337)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-176)
+#define YYTABLE_NINF (-174)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -975,45 +981,44 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    1422,   649,   367,   468,   823,  -349,  -349,   -43,  -349,   909,
-    -349,  -349,  -349,   -36,  1137,    37,   133,     9,    23,  1164,
-     944,  -349,  1164,  -349,  -349,    18,   -69,  -349,  -349,  -349,
-    -349,  1164,  -349,  -349,  -349,  -349,  -349,  -349,  -349,   -35,
-    -349,  -349,    10,  -349,    28,     7,  -349,  -349,  -349,  1164,
-    1164,  1164,  1164,  1164,  1164,  1164,  1164,  1024,   561,  -349,
-    -349,  1916,  -349,    14,  -349,  1024,    14,  1024,    14,  1051,
-    1916,    64,   736,  -349,  -349,    73,  1164,  -349,    81,  -349,
-    1164,  1497,  -349,    79,  -349,   138,  1463,   164,  -349,   -41,
-      10,    10,   -34,   -15,   139,  -349,  1833,  1497,  -349,   166,
-    1794,   178,   182,  -349,  1422,  1916,   189,  -349,  -349,  -349,
-      10,  1051,  -349,  1530,  1563,  1596,  1629,  1883,  -349,  -349,
-    1846,    21,   -25,   118,   119,  -349,  1916,   121,   124,   125,
-    -349,  1164,  1164,  1164,  1164,  1164,  1164,  1164,  1164,  1164,
-    1164,  1164,  1164,  1164,  1164,  1164,  1164,  1164,  1164,    60,
-      70,    84,    75,  1164,    14,   189,  -349,   126,  1916,  1164,
-    1846,  -349,  -349,    10,    48,    54,   137,    25,  1164,  1164,
-    1164,    26,   179,  1164,  1164,  1164,  1164,  1164,  1164,  -349,
-    -349,   127,  -349,  -349,  -349,   131,  -349,  -349,   180,  -349,
-     -11,  -349,  1164,  1164,  1164,  1164,  1164,  1164,  1164,  1164,
-    1164,  1164,  -349,  -349,  1164,  1164,  1164,  -349,  1164,    87,
-     -28,   -28,   -28,   -28,  1929,  1929,  -349,     5,   -28,   -28,
-     -28,   -28,     5,   -51,   -51,  -349,  -349,  1916,  -349,  -349,
-    -349,  -349,  -349,  1916,    22,   207,  1916,   189,   191,    10,
-    -349,  -349,  -349,  -349,  -349,  -349,  -349,  1164,  1164,  1916,
-    1916,  1916,  1164,  1164,   209,  1916,  1916,  1916,  1916,  1916,
-    1916,   210,  1461,  -349,   211,  -349,  -349,   212,  1916,  1662,
-    1916,  1695,  1916,  1728,  1916,  1761,  1916,  1916,  1916,  1916,
-    1916,  1916,   141,   118,   119,  -349,  1164,  -349,  -349,    58,
-    1164,  -349,  1916,   254,  -349,  1916,  1916,    10,  -349,  -349,
-    1383,  -349,  1383,  -349,  -349,  1164,  1164,  1164,  1164,    89,
-    -349,  -349,  1916,  -349,  -349,  -349,  -349,    38,  -349,  -349,
-    -349,   154,  -349,   573,  1916,  1916,  1916,  1916,  -349,  1383,
-    -349,  -349,  -349,  -349,  1383,  1164,  1164,  -349,   153,   213,
-    1383,  -349,   190,   216,   159,  1916,  1916,  -349,  1164,  -349,
-     161,  -349,   148,  -349,  1164,   198,  -349,  1383,  1916,  -349,
-     226,  -349,  1916,  1164,   171,   204,  -349,  -349,  -349,  1916,
-    -349,  -349,  1227,  -349,  -349,  1383,  -349,  -349,  -349,  -349,
-    1279,  -349,  -349,  1331,  -349
+    1036,   367,  -337,  -337,   -21,  -337,   542,  -337,  -337,  -337,
+      15,   775,   152,   171,    13,    44,   801,   581,  -337,   801,
+    -337,  -337,    41,    -5,  -337,  -337,  -337,  -337,   801,  -337,
+    -337,  -337,  -337,  -337,    22,  -337,  -337,     3,  -337,    50,
+       3,    -1,  -337,  -337,  -337,  -337,  -337,  -337,  -337,   801,
+     801,   801,   801,   801,   801,   801,   801,   662,   278,  -337,
+    1522,  -337,  -337,    43,  -337,   455,  -337,  -337,   116,   801,
+    -337,   103,  -337,   801,  1103,  -337,   122,  -337,   127,  1070,
+     140,  -337,   -46,     3,     3,   -22,    17,   124,  -337,  1439,
+    1103,  -337,   176,  1400,   186,   190,  -337,  1036,  1522,   196,
+    -337,  -337,  -337,     3,  -337,   688,  -337,  1136,  1169,  1202,
+    1235,  1489,  -337,  -337,    77,  1452,   -39,     0,   129,   132,
+    -337,  1522,   123,   136,   137,  -337,   801,   801,   801,   801,
+     801,   801,   801,   801,   801,   801,   801,   801,   801,   801,
+     801,   801,   801,   801,    43,   196,  -337,   138,  1522,   801,
+    1452,  -337,  -337,     3,     1,    29,    33,    -8,   801,   801,
+     801,    28,   191,   801,   801,   801,   801,   801,   801,  -337,
+    -337,   141,  -337,  -337,  -337,   142,  -337,  -337,   173,  -337,
+     -11,  -337,   100,   114,   801,   801,   801,   801,   801,   801,
+     801,   801,   801,   801,  -337,  -337,  -337,  -337,   801,   801,
+     801,  -337,   801,   178,    76,    76,    76,    76,  1535,  1535,
+    -337,    21,    76,    76,    76,    76,    21,   -54,   -54,  -337,
+    -337,  1522,    20,   218,  1522,   196,   199,  -337,  -337,  -337,
+    -337,  -337,  -337,   801,   801,  1522,  1522,  1522,   801,   801,
+     220,  1522,  1522,  1522,  1522,  1522,  1522,   221,    34,  -337,
+     222,  -337,  -337,   223,  -337,  -337,  -337,  1522,  1268,  1522,
+    1301,  1522,  1334,  1522,  1367,  1522,  1522,   801,  1522,  1522,
+    1522,  1522,   146,   129,   132,  -337,  -337,  -337,    48,   801,
+    1522,  1037,  -337,  1522,  1522,     3,  -337,  -337,   997,  -337,
+     997,  -337,  -337,   801,   801,   801,   801,   801,  1522,   118,
+    -337,  -337,  1522,  -337,  -337,  -337,  -337,   109,  -337,  -337,
+    -337,   162,  -337,   867,   120,  1522,  1522,  1522,  1522,  -337,
+     801,   997,  -337,  -337,  -337,  -337,   997,   801,   801,  -337,
+     193,   226,  -337,  1522,   997,  -337,   197,   217,   167,  1522,
+    1522,  -337,   801,  -337,   169,  -337,   156,  -337,   801,   202,
+    -337,   997,  1522,  -337,   233,  -337,  1522,   801,   174,   205,
+    -337,  -337,  -337,  1522,  -337,  -337,   892,  -337,  -337,   997,
+    -337,  -337,  -337,  -337,   930,  -337,  -337,   959,  -337
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1021,67 +1026,66 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       4,     0,     0,     0,     0,   150,   155,   121,   122,     0,
-     139,    57,   152,     0,     0,     0,     0,     0,     0,     0,
-       0,   126,     0,   124,   159,     0,     2,    26,    28,     6,
-      29,     0,    25,    27,   118,   119,     5,    58,    24,     0,
-      62,    67,     0,    63,     0,    66,    65,    64,    84,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    80,
-      82,   170,    81,   129,    70,     0,    73,     0,    75,     0,
-     172,   168,     0,    58,   120,     0,     0,   140,     0,   141,
-       0,   142,   144,     0,    43,     0,   117,     0,    58,     0,
-       0,     0,     0,     0,     0,   154,   131,   147,   149,     0,
-       0,     0,     0,     1,     4,    54,   161,    71,    66,    68,
-       0,     0,    98,     0,     0,     0,     0,     0,   103,   104,
-     170,     0,    66,    65,    64,   176,   179,     0,   178,   177,
-     181,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       4,     0,   149,   154,   118,   119,     0,   138,    55,   151,
+       0,     0,     0,     0,     0,     0,     0,     0,   123,     0,
+     121,   158,     0,     2,    24,    26,     6,    27,     0,    25,
+     115,   116,     5,    56,     0,    60,    65,     0,    61,     0,
+       0,    64,    63,    62,    78,   111,   101,   112,   113,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    70,
+     168,   110,    71,   131,    68,     0,    56,   117,     0,     0,
+     139,     0,   140,     0,   141,   143,     0,    41,     0,   114,
+       0,    56,     0,     0,     0,     0,     0,     0,   153,   126,
+     146,   148,     0,     0,     0,     0,     1,     4,    52,   160,
+      69,    64,    66,     0,    76,     0,    92,     0,     0,     0,
+       0,     0,    97,    98,    64,   168,     0,    64,    63,    62,
+     174,   177,     0,   176,   175,   179,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    66,     0,     0,   151,   161,   133,   123,   146,     0,
-       0,   143,    58,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   148,
-     137,   127,    48,    48,   135,   125,   160,     3,     0,   162,
-       0,    83,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    69,   128,     0,     0,     0,   174,     0,     0,
-      94,    95,    92,    93,    96,    97,    89,   100,   101,   102,
-      91,    90,    99,    85,    86,    87,    88,   171,    72,    74,
-      76,    77,    79,   173,     0,     0,   145,   161,     0,     0,
-       7,   116,     8,    10,    11,    12,    13,     0,     0,    54,
-      17,    15,     0,     0,     0,    16,    14,    22,    23,    44,
-     130,     0,     0,    59,     0,    59,   167,     0,   107,     0,
-     109,     0,   111,     0,   113,     0,   105,   106,   185,   184,
-     183,   180,     0,     0,     0,   182,     0,   167,   134,     0,
-       0,   115,    39,    31,    47,    18,    19,     0,   138,    58,
-      58,   136,    55,    59,   163,     0,     0,     0,     0,     0,
-      59,   167,     9,    58,    56,    56,    59,     0,    46,    60,
-      61,     0,    51,   158,   108,   110,   112,   114,    78,   156,
-      59,    40,    32,    36,    55,     0,     0,    45,    58,   164,
-     153,    54,     0,     0,     0,    20,    21,    59,     0,    52,
-       0,   165,   157,    41,     0,     0,    30,    58,    54,    49,
-       0,    47,    33,     0,     0,     0,   166,    59,    54,    37,
-      50,    59,     0,    47,    54,    55,    42,    59,    47,    53,
-       0,    59,    34,     0,    38
+       0,     0,     0,     0,   150,   160,   132,   120,   145,     0,
+       0,   142,    56,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   147,
+     136,   124,    46,    46,   134,   122,   159,     3,     0,   161,
+       0,    77,    64,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   127,   128,    67,   130,     0,     0,
+       0,   172,     0,     0,    88,    89,    86,    87,    90,    91,
+      83,    94,    95,    96,    85,    84,    93,    79,    80,    81,
+      82,   169,     0,     0,   144,   160,     0,     7,     8,    10,
+      11,    12,    13,     0,     0,    52,    17,    15,     0,     0,
+       0,    16,    14,    22,    23,    42,   125,     0,     0,    57,
+       0,    57,   166,     0,    72,    73,    75,   102,     0,   104,
+       0,   106,     0,   108,     0,    99,   100,     0,   183,   182,
+     181,   178,     0,     0,     0,   180,   166,   133,     0,     0,
+      37,    29,    45,    18,    19,     0,   137,    56,    56,   135,
+      53,    57,   162,     0,     0,     0,     0,     0,   170,     0,
+      57,   166,     9,    56,    54,    54,    57,     0,    44,    58,
+      59,     0,    49,   157,     0,   103,   105,   107,   109,   129,
+       0,   155,    57,    38,    30,    34,    53,     0,     0,    43,
+      56,   163,    74,   171,   152,    52,     0,     0,     0,    20,
+      21,    57,     0,    50,     0,   164,   156,    39,     0,     0,
+      28,    56,    52,    47,     0,    45,    31,     0,     0,     0,
+     165,    57,    52,    35,    48,    57,     0,    45,    52,    53,
+      40,    57,    45,    51,     0,    57,    32,     0,    36
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -349,   155,  -349,  -349,    -5,     3,  -349,  -349,  -349,  -349,
-    -349,  -349,  -349,  -349,  -349,  -348,    77,  -349,  -349,  -349,
-    -247,  -328,   -57,  -349,   -72,  -100,    -8,     0,  -349,     1,
-      19,    52,  -349,  -349,  -349,  -349,  -349,  -349,  -349,  -349,
-     -12,  -349,  -349,  -349,  -349,  -349,  -349,  -349,  -151,  -349,
-    -278,  -349,    43,   -23,  -349,  -349,  -349,  -349,    55
+    -337,   163,  -337,  -337,    14,     2,  -337,  -337,  -337,  -337,
+    -337,  -337,  -337,  -337,  -337,  -336,    90,  -337,  -337,  -337,
+    -197,  -314,   -41,  -337,   -65,  -150,   -14,    -6,  -337,    51,
+    -337,  -337,  -337,  -337,  -337,  -337,  -337,  -337,  -337,  -337,
+     -10,  -337,  -337,  -337,  -337,  -337,  -337,  -337,  -142,  -337,
+    -267,   -51,   -27,  -337,  -337,  -337,  -337,    64
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    25,    26,    27,    28,   320,   314,   342,   368,   315,
-     343,   374,   313,   341,   361,   316,   262,    30,   338,   349,
-     188,   322,   332,    31,   106,   300,    59,    60,   286,    61,
-      62,   242,    33,    75,   101,    99,   157,   185,   181,    34,
-      82,    35,    72,    36,    83,    73,    37,   102,   190,   352,
-     303,    38,   152,    71,    64,   127,   128,   129,   130
+      -1,    22,    23,    24,    25,   310,   304,   336,   362,   305,
+     337,   368,   303,   335,   355,   306,   248,    27,   330,   343,
+     178,   312,   324,    28,    99,   288,    59,    60,   293,    61,
+      62,    29,    68,    94,    92,   267,   147,   175,   171,    30,
+      75,    31,    65,    32,    76,    66,    33,    95,   180,   346,
+     291,    63,   299,    64,   122,   123,   124,   125
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1089,485 +1093,404 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      32,   155,   294,    29,   234,    70,   344,    74,    98,   310,
-      81,    39,   169,   367,    84,    86,   168,   137,   103,   173,
-      96,    97,   170,   100,    40,   377,   104,    41,    42,   174,
-     381,    43,   105,   330,   109,    94,   108,    46,   175,    47,
-     137,   146,   147,   138,    63,    66,    68,   379,   176,    95,
-     112,   113,   114,   115,   116,   117,   118,   119,   120,   126,
-     107,   143,   144,   145,   146,   147,   120,   247,   120,   161,
-     120,   111,   239,   137,   240,   110,   204,   158,   239,   252,
-     243,   160,   171,   172,   266,   179,   289,   267,   248,   253,
-     237,   335,    87,    88,   353,   144,   145,   146,   147,   156,
-     121,   336,   191,   111,    32,   162,    80,    29,   149,    58,
-     150,   365,   148,   282,   283,   154,   284,   287,   203,   148,
-     267,   373,    50,    51,    52,    53,   159,   378,    50,    51,
-      52,    53,   210,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
-      89,    90,    91,   311,   233,   238,   267,   228,   148,    92,
-     236,   239,   153,   245,   163,   302,    93,   229,   148,   249,
-     250,   251,   232,   148,   255,   256,   257,   258,   259,   260,
-     111,   230,   231,   241,   241,   241,   328,   153,   347,   348,
-     167,   177,   180,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   323,   184,   278,   279,   280,   186,   281,
-     329,    50,    51,    52,    53,   189,   334,   244,   246,   205,
-     206,   207,   208,   209,   235,   261,   254,   318,   321,   264,
-     340,   291,   265,   288,   290,   297,   298,   301,   304,   351,
-     337,   331,   204,   354,   356,   359,   360,   357,   292,   293,
-     355,   363,   366,   295,   296,   370,   371,   299,   333,   187,
-     263,     0,    32,   309,   285,     0,   350,   372,     0,     0,
-       0,   375,     0,     0,     0,     0,     0,   380,     0,     0,
-       0,   383,     0,     0,     0,   364,     0,    70,   -35,   317,
-       0,   312,     0,     0,     0,     0,     0,     0,     0,     0,
-      32,     0,    32,     0,     0,     0,   324,   325,   326,   327,
-       0,     0,     0,     0,     0,   131,   132,   133,   134,   135,
-     136,     0,   137,    32,     0,   138,   139,   140,     0,    32,
-       0,     0,     0,     0,    32,     0,   345,   346,     0,     0,
-      32,   141,   142,   143,   144,   145,   146,   147,     0,   358,
-       0,     0,     0,     0,     0,   362,     0,    32,     0,     0,
-       0,     0,     0,     0,   369,     0,     0,  -169,    39,     0,
-       0,     0,    32,     0,     0,    32,     0,     0,     0,     0,
-      32,    40,     0,    32,    41,    42,     0,     0,    43,  -169,
-       2,     3,    44,    45,    46,     0,    47,  -169,  -169,     0,
-      48,  -169,  -169,  -169,  -169,  -169,  -169,  -169,  -169,     0,
-    -169,     0,  -169,  -169,  -169,     0,  -169,  -169,  -169,  -169,
-    -169,  -169,  -169,     0,     0,  -169,  -169,  -169,  -169,  -169,
-    -169,  -169,  -169,  -169,    49,  -169,  -169,  -169,  -169,  -169,
-    -169,    50,    51,    52,    53,    54,  -169,  -169,  -169,  -169,
-       0,  -169,  -169,  -169,  -169,  -169,  -169,    55,    56,  -169,
-    -169,     0,  -169,    65,  -169,  -169,    58,  -169,  -169,    39,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    40,     0,     0,    41,    42,     0,     0,    43,
-    -169,     2,     3,    44,    45,    46,     0,    47,  -169,  -169,
-       0,    48,  -169,  -169,  -169,  -169,  -169,  -169,  -169,  -169,
-       0,  -169,     0,  -169,  -169,  -169,     0,  -169,  -169,  -169,
-    -169,  -169,  -169,  -169,     0,     0,  -169,  -169,  -169,  -169,
-    -169,  -169,  -169,  -169,  -169,    49,  -169,  -169,  -169,  -169,
-    -169,  -169,    50,    51,    52,    53,    54,  -169,  -169,  -169,
-    -169,     0,  -169,  -169,  -169,  -169,  -169,  -169,    55,    56,
-    -169,  -169,    39,  -169,    67,  -169,  -169,    58,  -169,     0,
-       0,     0,     0,     0,     0,    40,     0,     0,    41,    42,
-       0,     0,    43,     0,     2,     3,    44,   122,   123,     0,
-     124,     0,     0,     0,    48,     1,     2,     3,     0,     4,
-       0,     0,     0,   339,     5,     0,     0,     0,     0,     0,
-       7,     8,     9,    10,    11,     0,     0,     0,     0,    13,
-       0,     0,    14,    15,    16,     0,     0,    17,    49,     0,
-       0,    19,    20,    21,     0,    50,    51,    52,    53,    54,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,  -169,
-      39,    55,    56,     0,    22,    23,     0,    80,     0,     0,
-      58,  -175,   125,    40,     0,     0,    41,    42,   319,     0,
-      43,  -169,     2,     3,    44,    45,    46,     0,    47,  -169,
-    -169,     0,    48,     0,  -169,  -169,  -169,  -169,  -169,  -169,
-    -169,     0,     0,     0,     0,  -169,     0,     0,  -169,  -169,
-    -169,     0,     0,  -169,     0,     0,     0,  -169,  -169,  -169,
-       0,     0,     0,     0,     0,     0,    49,     0,     0,     0,
-       0,     0,     0,    50,    51,    52,    53,    54,     0,     0,
-    -169,  -169,     0,  -169,  -169,  -169,  -169,    39,     0,    55,
-      56,     0,     0,     0,  -169,    57,     0,  -169,    58,     0,
-      40,     0,     0,    41,    42,     0,     0,    43,  -169,     2,
-       3,    44,    45,    46,     0,    47,  -169,  -169,     0,    48,
-       0,  -169,  -169,  -169,  -169,  -169,  -169,  -169,     0,     0,
-       0,     0,  -169,     0,     0,  -169,  -169,  -169,     0,     0,
-    -169,     0,     0,     0,  -169,  -169,  -169,     0,     0,     0,
+      74,   145,    26,   222,    34,    79,   116,    91,   159,   300,
+      89,    90,   338,    93,   144,   132,   158,    35,   160,   361,
+      36,    37,    98,   102,    38,   227,   104,   101,    42,    43,
+      67,   371,   163,    46,   322,   233,   375,    87,   282,   141,
+     142,    96,   164,   106,   107,   108,   109,   110,   111,   112,
+     113,   115,   121,   229,   183,   373,   234,   231,     1,   197,
+     143,    46,     2,   148,   151,    46,    77,   150,    88,   161,
+     162,   165,     4,     5,     6,     7,    50,    51,    52,    53,
+     169,   166,   238,   278,    11,   252,    13,   225,   253,   181,
+     132,    97,   239,    16,    17,    18,   105,   105,   103,    26,
+      73,   290,   198,    58,    50,    51,    52,    53,    50,    51,
+      52,    53,   139,   140,   141,   142,   276,    20,   100,   253,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   347,   226,
+     146,   313,   143,   224,   301,   132,   152,   253,   133,   149,
+     321,   153,   235,   236,   237,   359,   326,   241,   242,   243,
+     244,   245,   246,   327,   157,   367,   138,   139,   140,   141,
+     142,   372,   334,   328,   105,   194,   195,   167,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,    82,    83,
+      84,   351,   268,   269,   270,    85,   271,   105,   254,   255,
+     170,    86,   272,   273,   274,   228,   230,   232,    80,    81,
+     174,   366,   256,   143,   176,   369,   319,   320,   332,   320,
+     179,   374,   308,   311,   201,   377,   251,   280,   281,   341,
+     342,   199,   283,   284,   200,   202,   203,   223,   323,   240,
+     247,   250,   277,   279,   285,   286,   289,   292,   198,   329,
+     345,   348,   349,   350,   353,   354,   357,   360,   365,   364,
+     177,   298,   287,   249,   325,   344,   314,   275,     0,     0,
+       0,   307,     0,   302,     0,     0,     0,     0,     0,    34,
+       0,     0,     0,     0,     0,     0,   358,   298,   315,   316,
+     317,   318,    35,     0,     0,    36,    37,     0,     0,    38,
+      39,    40,   117,   118,   119,     0,     0,     0,    44,    45,
+      46,    47,    48,     0,   333,     0,     0,     0,     0,     0,
+       0,   339,   340,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   352,     0,     0,     0,
+       0,     0,   356,     0,     0,     0,    49,     0,     0,     0,
+       0,   363,     0,    50,    51,    52,    53,    54,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  -167,    34,    55,
+      56,     0,     0,     0,     0,    73,     0,     0,    58,  -173,
+     120,    35,     0,     0,    36,    37,     0,     0,    38,    39,
+      40,    41,    42,    43,  -167,  -167,     0,    44,    45,    46,
+      47,    48,     0,  -167,  -167,  -167,  -167,  -167,  -167,  -167,
+       0,     0,     0,     0,  -167,     0,     0,  -167,  -167,  -167,
+       0,     0,  -167,     0,     0,     0,  -167,  -167,  -167,     0,
+       0,     0,     0,     0,     0,    49,     0,     0,     0,     0,
+       0,     0,    50,    51,    52,    53,    54,     0,     0,  -167,
+    -167,     0,  -167,  -167,  -167,  -167,    34,     0,    55,    56,
+       0,     0,     0,  -167,    57,     0,  -167,    58,     0,    35,
+       0,     0,    36,    37,     0,     0,    38,    39,    40,    41,
+      42,    43,  -167,  -167,     0,    44,    45,    46,    47,    48,
+       0,  -167,  -167,  -167,  -167,  -167,  -167,  -167,     0,     0,
+       0,     0,  -167,     0,     0,  -167,  -167,  -167,     0,     0,
+    -167,     0,     0,     0,  -167,  -167,  -167,     0,     0,     0,
        0,     0,     0,    49,     0,     0,     0,     0,     0,     0,
-      50,    51,    52,    53,    54,     0,     0,  -169,  -169,     0,
-    -169,  -169,  -169,  -132,    39,     0,    55,    56,     0,     0,
-       0,  -169,    80,     0,  -169,    58,     0,    40,     0,     0,
-      41,    42,     0,     0,    43,  -132,     2,     3,    44,    45,
-      46,     0,    47,  -132,  -132,     0,    48,     0,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,     0,     0,     0,     0,  -132,
-       0,     0,  -132,  -132,  -132,     0,     0,  -132,     0,     0,
-       0,  -132,  -132,  -132,     0,     0,     0,     0,     0,     0,
+      50,    51,    52,    53,    54,     0,     0,  -167,  -167,     0,
+    -167,  -167,  -167,    34,     0,     0,    55,    56,     0,     0,
+       0,  -167,    73,     0,  -167,    58,    35,     0,     0,    36,
+      37,     0,     0,    38,    39,    40,    41,    42,    43,     0,
+       0,     0,    44,    45,    46,    47,    48,     0,     0,     0,
+       0,     0,    34,     0,     0,     0,     0,     0,    69,    70,
+      71,    72,     0,     0,     0,    35,     0,     0,    36,    37,
+       0,     0,    38,    39,    40,    41,    42,    43,     0,     0,
+      49,    44,    45,    46,    47,    48,     0,    50,    51,    52,
+      53,    54,     0,     0,     0,     0,     0,    69,     0,    71,
+       0,     0,     0,    55,    56,     0,     0,     0,     0,    73,
+       0,     0,    58,     0,     0,     0,     0,     0,     0,    49,
+       0,     0,     0,     0,     0,     0,    50,    51,    52,    53,
+      54,     0,     0,    34,     0,     0,     0,     0,     0,     0,
+       0,     0,    55,    56,     0,     0,    35,     0,    73,    36,
+      37,    58,     0,    38,    39,    40,   114,    42,    43,    34,
+       0,     0,    44,    45,    46,    47,    48,     0,     0,     0,
+       0,     0,    35,     0,     0,    36,    37,     0,     0,    38,
+      39,    40,   182,    42,    43,     0,     0,     0,    44,    45,
+      46,    47,    48,     0,     0,     0,     0,     0,     0,     0,
       49,     0,     0,     0,     0,     0,     0,    50,    51,    52,
-      53,    54,     0,     0,  -132,  -132,     0,  -132,  -132,  -132,
-      39,     0,     0,    55,    56,     0,     0,     0,  -132,    69,
-       0,     0,    58,    40,     0,     0,    41,    42,     0,     0,
-      43,     0,     2,     3,    44,    45,    46,     0,    47,     0,
-       0,     0,    48,     0,     0,    39,     0,     0,     0,     0,
-       0,     0,     0,     0,    76,    77,    78,    79,    40,     0,
-       0,    41,    42,     0,     0,    43,     0,     2,     3,    44,
-      45,    46,     0,    47,     0,     0,    49,    48,     0,     0,
-       0,     0,     0,    50,    51,    52,    53,    54,     0,    76,
-       0,    78,     0,     0,     0,     0,     0,     0,     0,    55,
-      56,     0,     0,     0,     0,    80,     0,     0,    58,     0,
-       0,    49,     0,     0,     0,     0,     0,     0,    50,    51,
-      52,    53,    54,     0,     0,    39,     0,     0,     0,     0,
-       0,     0,     0,     0,    55,    56,     0,     0,    40,     0,
-      80,    41,    42,    58,     0,    43,     0,     2,     3,    44,
-      45,    46,    39,    47,     0,     0,     0,    48,     0,     0,
-       0,     0,     0,     0,     0,    40,     0,     0,    41,    42,
-       0,     0,    43,     0,     2,     3,    44,   151,    46,     0,
-      47,     0,     0,     0,    48,     0,     0,     0,     0,     0,
-       0,    49,     0,     0,     0,     0,     0,     0,    50,    51,
-      52,    53,    54,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    55,    56,     0,     0,    49,     0,
-      80,  -169,  -169,    58,     0,    50,    51,    52,    53,    54,
-       0,     0,     0,     0,     0,     0,     0,     0,    39,     0,
-       0,    55,    56,     0,     0,     0,     0,    80,  -169,  -169,
-      58,    40,     0,     0,    41,    42,     0,    85,    43,     0,
-       2,     3,    44,    45,    46,    39,    47,     0,     0,     0,
-      48,     0,     0,     0,     0,     0,     0,     0,    40,     0,
-       0,    41,    42,     0,     0,    43,     0,     2,     3,    44,
-      45,    46,     0,    47,     0,     0,     0,    48,     0,     0,
-       0,     0,     0,     0,    49,     0,     0,     0,     0,     0,
-       0,    50,    51,    52,    53,    54,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    55,    56,     0,
-       0,    49,     0,    80,     0,     0,    58,     0,    50,    51,
-      52,    53,    54,     0,     0,     0,     0,     0,     0,     1,
-       2,     3,     0,     4,    55,    56,     0,     0,     5,     0,
-      80,     0,     0,    58,     7,     8,     9,    10,    11,     0,
-       0,     0,     0,    13,     0,     0,    14,    15,    16,     0,
-       0,    17,     0,     0,     0,    19,    20,    21,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     1,     2,     3,     0,     4,     0,     0,    22,    23,
-       5,     0,   376,     0,     0,     0,     7,     8,     9,    10,
-      11,     0,   319,     0,     0,    13,     0,     0,    14,    15,
-      16,     0,     0,    17,     0,     0,     0,    19,    20,    21,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     1,     2,     3,     0,     4,     0,     0,
-      22,    23,     5,     0,   382,     0,     0,     0,     7,     8,
-       9,    10,    11,     0,   319,     0,     0,    13,     0,     0,
-      14,    15,    16,     0,     0,    17,     0,     0,     0,    19,
-      20,    21,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     1,     2,     3,     0,     4,
-       0,     0,    22,    23,     5,     0,   384,     0,     0,     0,
-       7,     8,     9,    10,    11,     0,   319,     0,     0,    13,
-       0,     0,    14,    15,    16,     0,     0,    17,     0,     0,
-       0,    19,    20,    21,     1,     2,     3,     0,     4,     0,
-       0,     0,     0,     5,     6,     0,     0,     0,     0,     7,
-       8,     9,    10,    11,    22,    23,    12,     0,    13,     0,
-       0,    14,    15,    16,     0,     0,    17,     0,   319,    18,
-      19,    20,    21,     1,     2,     3,     0,     4,     0,     0,
-       0,     0,     5,     0,     0,     0,     0,     0,     7,     8,
-       9,    10,     0,    22,    23,    24,   164,     0,     0,     0,
-      14,     0,    16,     0,     0,     0,     0,     0,     0,    19,
-      20,    21,     0,     0,   131,   132,   133,   134,   135,   136,
-       0,   137,   165,   166,   138,   139,   140,     0,     0,     0,
-       0,     0,    76,    23,    78,     0,     0,     0,     0,     0,
-     141,   142,   143,   144,   145,   146,   147,     0,   131,   132,
-     133,   134,   135,   136,     0,   137,     0,     0,   138,   139,
-     140,     0,     0,     0,     0,     0,     0,   192,     0,     0,
-       0,     0,     0,   193,   141,   142,   143,   144,   145,   146,
-     147,   131,   132,   133,   134,   135,   136,     0,   137,     0,
-       0,   138,   139,   140,     0,     0,     0,     0,     0,     0,
-     194,     0,     0,     0,     0,     0,   195,   141,   142,   143,
-     144,   145,   146,   147,   131,   132,   133,   134,   135,   136,
-       0,   137,     0,     0,   138,   139,   140,     0,     0,     0,
-       0,     0,     0,   196,     0,     0,     0,     0,     0,   197,
-     141,   142,   143,   144,   145,   146,   147,   131,   132,   133,
-     134,   135,   136,     0,   137,     0,     0,   138,   139,   140,
-       0,     0,     0,     0,     0,     0,   198,     0,     0,     0,
-       0,     0,   199,   141,   142,   143,   144,   145,   146,   147,
-     131,   132,   133,   134,   135,   136,     0,   137,     0,     0,
-     138,   139,   140,     0,     0,     0,     0,     0,     0,   305,
-       0,     0,     0,     0,     0,     0,   141,   142,   143,   144,
-     145,   146,   147,   131,   132,   133,   134,   135,   136,     0,
-     137,     0,     0,   138,   139,   140,     0,     0,     0,     0,
-       0,     0,   306,     0,     0,     0,     0,     0,     0,   141,
-     142,   143,   144,   145,   146,   147,   131,   132,   133,   134,
-     135,   136,     0,   137,     0,     0,   138,   139,   140,     0,
-       0,     0,     0,     0,     0,   307,     0,     0,     0,     0,
-       0,     0,   141,   142,   143,   144,   145,   146,   147,   131,
-     132,   133,   134,   135,   136,     0,   137,     0,     0,   138,
-     139,   140,     0,     0,     0,     0,     0,     0,   308,     0,
-       0,     0,     0,     0,     0,   141,   142,   143,   144,   145,
-     146,   147,   131,   132,   133,   134,   135,   136,     0,   137,
-       0,     0,   138,   139,   140,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   182,   141,   142,
-     143,   144,   145,   146,   147,   131,   132,   133,   134,   135,
-     136,     0,   137,     0,     0,   138,   139,   140,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   141,   142,   143,   144,   145,   146,   147,   178,   183,
-       0,     0,     0,     0,   131,   132,   133,   134,   135,   136,
-       0,   137,     0,     0,   138,   139,   140,   131,   132,   133,
-     134,   135,   136,     0,   137,     0,     0,   138,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,     0,     0,     0,
-       0,     0,     0,   141,   142,   143,   144,   145,   146,   147,
-       0,     0,     0,   202,   131,   132,   133,   134,   135,   136,
-       0,   137,     0,     0,   138,   139,   140,     0,     0,     0,
-       0,     0,   200,   201,     0,     0,     0,     0,     0,     0,
-     141,   142,   143,   144,   145,   146,   147,   131,   132,   133,
-     134,   135,   136,     0,   137,     0,     0,   138,   139,   140,
-     131,   132,   133,   134,     0,     0,     0,   137,     0,     0,
-     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-       0,     0,     0,     0,     0,     0,   141,   142,   143,   144,
-     145,   146,   147
+      53,    54,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    55,    56,     0,    49,     0,     0,    73,
+    -167,  -167,    58,    50,    51,    52,    53,    54,     0,     0,
+       0,     0,     0,     0,     0,     0,    34,     0,     0,    55,
+      56,     0,     0,     0,     0,    73,  -167,  -167,    58,    35,
+       0,     0,    36,    37,     0,    78,    38,    39,    40,    41,
+      42,    43,    34,     0,     0,    44,    45,    46,    47,    48,
+       0,     0,     0,     0,     0,    35,     0,     0,    36,    37,
+       0,     0,    38,    39,    40,    41,    42,    43,     0,     0,
+       0,    44,    45,    46,    47,    48,     0,     0,     0,     0,
+       0,     0,     0,    49,     0,     0,     0,     0,     0,     0,
+      50,    51,    52,    53,    54,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    55,    56,     0,    49,
+       0,     0,    73,     0,     0,    58,    50,    51,    52,    53,
+      54,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     1,    55,    56,   331,     2,     0,     0,    73,     0,
+       0,    58,     0,     0,     0,     4,     5,     6,     7,     8,
+       0,     0,     0,     0,    10,     0,     1,    11,    12,    13,
+       2,     0,    14,     0,     0,     0,    16,    17,    18,     0,
+       4,     5,     6,     7,     8,     0,     0,     0,     0,    10,
+       0,     0,    11,    12,    13,     0,     0,    14,     0,    19,
+      20,    16,    17,    18,     1,     0,     0,     0,     2,     0,
+       0,     0,     0,   309,     0,     0,     0,     0,     4,     5,
+       6,     7,     8,     0,    19,    20,     0,    10,   370,     0,
+      11,    12,    13,     1,     0,    14,     0,     2,   309,    16,
+      17,    18,     0,     0,     0,     0,     0,     4,     5,     6,
+       7,     8,     0,     0,     0,     0,    10,     0,     0,    11,
+      12,    13,    19,    20,    14,     0,   376,     0,    16,    17,
+      18,     1,     0,     0,     0,     2,   309,     0,     0,     0,
+       0,     0,     0,     0,     0,     4,     5,     6,     7,     8,
+       0,    19,    20,     0,    10,   378,     0,    11,    12,    13,
+       0,     0,    14,     0,     0,   309,    16,    17,    18,     0,
+       1,     0,     0,     0,     2,     3,     0,     0,     0,     0,
+       0,     0,   -33,     0,     4,     5,     6,     7,     8,    19,
+      20,     9,     0,    10,     0,     0,    11,    12,    13,     0,
+       0,    14,     0,   309,    15,    16,    17,    18,     0,   126,
+     127,   128,   129,   130,   131,     0,   132,     0,     0,   133,
+     134,   135,     0,     0,   154,     0,     0,     0,    19,    20,
+      21,     0,     0,     0,     0,   136,   137,   138,   139,   140,
+     141,   142,   126,   127,   128,   129,   130,   131,     0,   132,
+     155,   156,   133,   134,   135,     0,     0,     0,     0,    69,
+       0,    71,     0,     0,     0,     0,     0,     0,   136,   137,
+     138,   139,   140,   141,   142,   126,   127,   128,   129,   130,
+     131,     0,   132,     0,     0,   133,   134,   135,     0,     0,
+       0,     0,     0,     0,   184,     0,     0,     0,     0,     0,
+     185,   136,   137,   138,   139,   140,   141,   142,   126,   127,
+     128,   129,   130,   131,     0,   132,     0,     0,   133,   134,
+     135,     0,     0,     0,     0,     0,     0,   186,     0,     0,
+       0,     0,     0,   187,   136,   137,   138,   139,   140,   141,
+     142,   126,   127,   128,   129,   130,   131,     0,   132,     0,
+       0,   133,   134,   135,     0,     0,     0,     0,     0,     0,
+     188,     0,     0,     0,     0,     0,   189,   136,   137,   138,
+     139,   140,   141,   142,   126,   127,   128,   129,   130,   131,
+       0,   132,     0,     0,   133,   134,   135,     0,     0,     0,
+       0,     0,     0,   190,     0,     0,     0,     0,     0,   191,
+     136,   137,   138,   139,   140,   141,   142,   126,   127,   128,
+     129,   130,   131,     0,   132,     0,     0,   133,   134,   135,
+       0,     0,     0,     0,     0,     0,   294,     0,     0,     0,
+       0,     0,     0,   136,   137,   138,   139,   140,   141,   142,
+     126,   127,   128,   129,   130,   131,     0,   132,     0,     0,
+     133,   134,   135,     0,     0,     0,     0,     0,     0,   295,
+       0,     0,     0,     0,     0,     0,   136,   137,   138,   139,
+     140,   141,   142,   126,   127,   128,   129,   130,   131,     0,
+     132,     0,     0,   133,   134,   135,     0,     0,     0,     0,
+       0,     0,   296,     0,     0,     0,     0,     0,     0,   136,
+     137,   138,   139,   140,   141,   142,   126,   127,   128,   129,
+     130,   131,     0,   132,     0,     0,   133,   134,   135,     0,
+       0,     0,     0,     0,     0,   297,     0,     0,     0,     0,
+       0,     0,   136,   137,   138,   139,   140,   141,   142,   126,
+     127,   128,   129,   130,   131,     0,   132,     0,     0,   133,
+     134,   135,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   172,   136,   137,   138,   139,   140,
+     141,   142,   126,   127,   128,   129,   130,   131,     0,   132,
+       0,     0,   133,   134,   135,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   136,   137,
+     138,   139,   140,   141,   142,   168,   173,     0,     0,     0,
+       0,   126,   127,   128,   129,   130,   131,     0,   132,     0,
+       0,   133,   134,   135,   126,   127,   128,   129,   130,   131,
+       0,   132,     0,     0,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,     0,     0,     0,     0,     0,     0,
+     136,   137,   138,   139,   140,   141,   142,     0,     0,     0,
+     196,   126,   127,   128,   129,   130,   131,     0,   132,     0,
+       0,   133,   134,   135,     0,     0,     0,     0,     0,   192,
+     193,     0,     0,     0,     0,     0,     0,   136,   137,   138,
+     139,   140,   141,   142,   126,   127,   128,   129,   130,   131,
+       0,   132,     0,     0,   133,   134,   135,   126,   127,   128,
+     129,     0,     0,     0,   132,     0,     0,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,     0,     0,     0,
+       0,     0,     0,   136,   137,   138,   139,   140,   141,   142
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    73,   249,     0,   155,     4,   334,    50,    20,   287,
-       9,     1,    53,   361,    50,    14,    88,    68,     0,    53,
-      19,    20,    63,    22,    14,   373,    95,    17,    18,    63,
-     378,    21,    31,   311,    42,    26,    26,    27,    53,    29,
-      68,    92,    93,    71,     1,     2,     3,   375,    63,    26,
-      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
-      95,    89,    90,    91,    92,    93,    65,    42,    67,    81,
-      69,    96,    24,    68,    26,    47,   101,    76,    24,    53,
-      26,    80,    90,    91,    95,    97,   237,    98,    63,    63,
-     162,    53,    55,    56,   341,    90,    91,    92,    93,    26,
-      57,    63,   110,    96,   104,    26,    96,   104,    65,    99,
-      67,   358,    98,    26,    27,    72,    29,    95,    97,    98,
-      98,   368,    74,    75,    76,    77,    45,   374,    74,    75,
-      76,    77,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
-      17,    18,    19,    95,   153,   163,    98,    97,    98,    26,
-     159,    24,    98,    26,    26,   265,    33,    97,    98,   168,
-     169,   170,    97,    98,   173,   174,   175,   176,   177,   178,
-      96,    97,    98,   164,   165,   166,    97,    98,    35,    36,
-      26,    52,    26,   192,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   303,    26,   204,   205,   206,    26,   208,
-     310,    74,    75,    76,    77,    26,   316,   165,   166,   101,
-     101,   100,    98,    98,    98,    98,    47,   299,   300,    98,
-     330,   239,    52,    26,    43,    26,    26,    26,    26,    26,
-      86,   313,   101,    53,    85,    84,    98,   347,   247,   248,
-      34,    53,    26,   252,   253,    84,    52,   262,   315,   104,
-     183,    -1,   262,   286,   209,    -1,   338,   367,    -1,    -1,
-      -1,   371,    -1,    -1,    -1,    -1,    -1,   377,    -1,    -1,
-      -1,   381,    -1,    -1,    -1,   357,    -1,   286,    34,   297,
-      -1,   290,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     300,    -1,   302,    -1,    -1,    -1,   305,   306,   307,   308,
-      -1,    -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,
-      66,    -1,    68,   323,    -1,    71,    72,    73,    -1,   329,
-      -1,    -1,    -1,    -1,   334,    -1,   335,   336,    -1,    -1,
-     340,    87,    88,    89,    90,    91,    92,    93,    -1,   348,
-      -1,    -1,    -1,    -1,    -1,   354,    -1,   357,    -1,    -1,
-      -1,    -1,    -1,    -1,   363,    -1,    -1,     0,     1,    -1,
-      -1,    -1,   372,    -1,    -1,   375,    -1,    -1,    -1,    -1,
-     380,    14,    -1,   383,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    -1,
-      43,    -1,    45,    46,    47,    -1,    49,    50,    51,    52,
-      53,    54,    55,    -1,    -1,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      -1,    84,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    -1,    95,    96,    97,    98,    99,   100,     0,     1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       6,    66,     0,   145,     1,    11,    57,    17,    54,   276,
+      16,    17,   326,    19,    65,    69,    81,    14,    64,   355,
+      17,    18,    28,    37,    21,    24,    40,    24,    25,    26,
+      51,   367,    54,    32,   301,    43,   372,    24,   235,    93,
+      94,     0,    64,    49,    50,    51,    52,    53,    54,    55,
+      56,    57,    58,    24,   105,   369,    64,    24,    24,    98,
+      99,    32,    28,    69,    74,    32,    51,    73,    24,    83,
+      84,    54,    38,    39,    40,    41,    75,    76,    77,    78,
+      90,    64,    54,   225,    50,    96,    52,   152,    99,   103,
+      69,    96,    64,    59,    60,    61,    97,    97,    48,    97,
+      97,   251,   102,   100,    75,    76,    77,    78,    75,    76,
+      77,    78,    91,    92,    93,    94,    96,    83,    96,    99,
+     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   335,   153,
+      24,   291,    99,   149,    96,    69,    24,    99,    72,    46,
+     300,    24,   158,   159,   160,   352,   306,   163,   164,   165,
+     166,   167,   168,    54,    24,   362,    90,    91,    92,    93,
+      94,   368,   322,    64,    97,    98,    99,    53,   184,   185,
+     186,   187,   188,   189,   190,   191,   192,   193,    17,    18,
+      19,   341,   198,   199,   200,    24,   202,    97,    98,    99,
+      24,    30,    24,    25,    26,   154,   155,   156,    56,    57,
+      24,   361,    98,    99,    24,   365,    98,    99,    98,    99,
+      24,   371,   287,   288,   101,   375,    53,   233,   234,    36,
+      37,   102,   238,   239,   102,    99,    99,    99,   303,    48,
+      99,    99,    24,    44,    24,    24,    24,    24,   102,    87,
+      24,    54,    35,    86,    85,    99,    54,    24,    53,    85,
+      97,   267,   248,   173,   305,   330,   293,   203,    -1,    -1,
+      -1,   285,    -1,   279,    -1,    -1,    -1,    -1,    -1,     1,
+      -1,    -1,    -1,    -1,    -1,    -1,   351,   293,   294,   295,
+     296,   297,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    -1,    30,    31,
+      32,    33,    34,    -1,   320,    -1,    -1,    -1,    -1,    -1,
+      -1,   327,   328,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   342,    -1,    -1,    -1,
+      -1,    -1,   348,    -1,    -1,    -1,    68,    -1,    -1,    -1,
+      -1,   357,    -1,    75,    76,    77,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,     1,    91,
+      92,    -1,    -1,    -1,    -1,    97,    -1,    -1,   100,   101,
+     102,    14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
+      33,    34,    -1,    36,    37,    38,    39,    40,    41,    42,
+      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,
+      -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,    -1,
+      -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    82,
+      83,    -1,    85,    86,    87,     0,     1,    -1,    91,    92,
+      -1,    -1,    -1,    96,    97,    -1,    99,   100,    -1,    14,
+      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,    26,    27,    28,    -1,    30,    31,    32,    33,    34,
+      -1,    36,    37,    38,    39,    40,    41,    42,    -1,    -1,
+      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    -1,    -1,    -1,    59,    60,    61,    -1,    -1,    -1,
+      -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,    76,    77,    78,    79,    -1,    -1,    82,    83,    -1,
+      85,    86,    87,     1,    -1,    -1,    91,    92,    -1,    -1,
+      -1,    96,    97,    -1,    99,   100,    14,    -1,    -1,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    -1,    30,    31,    32,    33,    34,    -1,    -1,    -1,
+      -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    -1,    -1,
+      68,    30,    31,    32,    33,    34,    -1,    75,    76,    77,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,
+      -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,    97,
+      -1,    -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,
+      79,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    91,    92,    -1,    -1,    14,    -1,    97,    17,
+      18,   100,    -1,    21,    22,    23,    24,    25,    26,     1,
+      -1,    -1,    30,    31,    32,    33,    34,    -1,    -1,    -1,
       -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    -1,    29,    30,    31,
-      -1,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      -1,    43,    -1,    45,    46,    47,    -1,    49,    50,    51,
-      52,    53,    54,    55,    -1,    -1,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    -1,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,     1,    95,    96,    97,    98,    99,   100,    -1,
-      -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
-      -1,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    -1,    -1,    33,    22,    23,    24,    -1,    26,
-      -1,    -1,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,
-      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
-      -1,    -1,    49,    50,    51,    -1,    -1,    54,    67,    -1,
-      -1,    58,    59,    60,    -1,    74,    75,    76,    77,    78,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,
-       1,    90,    91,    -1,    81,    82,    -1,    96,    -1,    -1,
-      99,   100,   101,    14,    -1,    -1,    17,    18,    95,    -1,
-      21,    22,    23,    24,    25,    26,    27,    -1,    29,    30,
-      31,    -1,    33,    -1,    35,    36,    37,    38,    39,    40,
-      41,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,    50,
-      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
-      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,
-      -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,    -1,
-      81,    82,    -1,    84,    85,    86,     0,     1,    -1,    90,
-      91,    -1,    -1,    -1,    95,    96,    -1,    98,    99,    -1,
-      14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,
-      24,    25,    26,    27,    -1,    29,    30,    31,    -1,    33,
-      -1,    35,    36,    37,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,    -1,
-      54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,    -1,
-      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      74,    75,    76,    77,    78,    -1,    -1,    81,    82,    -1,
-      84,    85,    86,     0,     1,    -1,    90,    91,    -1,    -1,
-      -1,    95,    96,    -1,    98,    99,    -1,    14,    -1,    -1,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
-      37,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    46,
-      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
-      -1,    58,    59,    60,    -1,    -1,    -1,    -1,    -1,    -1,
-      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    76,
-      77,    78,    -1,    -1,    81,    82,    -1,    84,    85,    86,
-       1,    -1,    -1,    90,    91,    -1,    -1,    -1,    95,    96,
-      -1,    -1,    99,    14,    -1,    -1,    17,    18,    -1,    -1,
-      21,    -1,    23,    24,    25,    26,    27,    -1,    29,    -1,
-      -1,    -1,    33,    -1,    -1,     1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    45,    46,    47,    48,    14,    -1,
-      -1,    17,    18,    -1,    -1,    21,    -1,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    -1,    67,    33,    -1,    -1,
-      -1,    -1,    -1,    74,    75,    76,    77,    78,    -1,    45,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,
-      91,    -1,    -1,    -1,    -1,    96,    -1,    -1,    99,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
-      76,    77,    78,    -1,    -1,     1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    14,    -1,
-      96,    17,    18,    99,    -1,    21,    -1,    23,    24,    25,
-      26,    27,     1,    29,    -1,    -1,    -1,    33,    -1,    -1,
+      22,    23,    24,    25,    26,    -1,    -1,    -1,    30,    31,
+      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    91,    92,    -1,    68,    -1,    -1,    97,
+      98,    99,   100,    75,    76,    77,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    91,
+      92,    -1,    -1,    -1,    -1,    97,    98,    99,   100,    14,
+      -1,    -1,    17,    18,    -1,    20,    21,    22,    23,    24,
+      25,    26,     1,    -1,    -1,    30,    31,    32,    33,    34,
       -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
-      -1,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
-      29,    -1,    -1,    -1,    33,    -1,    -1,    -1,    -1,    -1,
-      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
-      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    90,    91,    -1,    -1,    67,    -1,
-      96,    97,    98,    99,    -1,    74,    75,    76,    77,    78,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
-      -1,    90,    91,    -1,    -1,    -1,    -1,    96,    97,    98,
-      99,    14,    -1,    -1,    17,    18,    -1,    20,    21,    -1,
-      23,    24,    25,    26,    27,     1,    29,    -1,    -1,    -1,
-      33,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,
-      -1,    17,    18,    -1,    -1,    21,    -1,    23,    24,    25,
-      26,    27,    -1,    29,    -1,    -1,    -1,    33,    -1,    -1,
-      -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    -1,
-      -1,    74,    75,    76,    77,    78,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    91,    -1,
-      -1,    67,    -1,    96,    -1,    -1,    99,    -1,    74,    75,
-      76,    77,    78,    -1,    -1,    -1,    -1,    -1,    -1,    22,
-      23,    24,    -1,    26,    90,    91,    -1,    -1,    31,    -1,
-      96,    -1,    -1,    99,    37,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    46,    -1,    -1,    49,    50,    51,    -1,
-      -1,    54,    -1,    -1,    -1,    58,    59,    60,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    22,    23,    24,    -1,    26,    -1,    -1,    81,    82,
-      31,    -1,    85,    -1,    -1,    -1,    37,    38,    39,    40,
-      41,    -1,    95,    -1,    -1,    46,    -1,    -1,    49,    50,
-      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    59,    60,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    22,    23,    24,    -1,    26,    -1,    -1,
-      81,    82,    31,    -1,    85,    -1,    -1,    -1,    37,    38,
-      39,    40,    41,    -1,    95,    -1,    -1,    46,    -1,    -1,
-      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
-      59,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    22,    23,    24,    -1,    26,
-      -1,    -1,    81,    82,    31,    -1,    85,    -1,    -1,    -1,
-      37,    38,    39,    40,    41,    -1,    95,    -1,    -1,    46,
-      -1,    -1,    49,    50,    51,    -1,    -1,    54,    -1,    -1,
-      -1,    58,    59,    60,    22,    23,    24,    -1,    26,    -1,
-      -1,    -1,    -1,    31,    32,    -1,    -1,    -1,    -1,    37,
-      38,    39,    40,    41,    81,    82,    44,    -1,    46,    -1,
-      -1,    49,    50,    51,    -1,    -1,    54,    -1,    95,    57,
-      58,    59,    60,    22,    23,    24,    -1,    26,    -1,    -1,
-      -1,    -1,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,
-      39,    40,    -1,    81,    82,    83,    43,    -1,    -1,    -1,
-      49,    -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,    58,
-      59,    60,    -1,    -1,    61,    62,    63,    64,    65,    66,
-      -1,    68,    69,    70,    71,    72,    73,    -1,    -1,    -1,
-      -1,    -1,    45,    82,    47,    -1,    -1,    -1,    -1,    -1,
-      87,    88,    89,    90,    91,    92,    93,    -1,    61,    62,
-      63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    72,
-      73,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,
-      -1,    -1,    -1,    53,    87,    88,    89,    90,    91,    92,
-      93,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
-      -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,
-      47,    -1,    -1,    -1,    -1,    -1,    53,    87,    88,    89,
-      90,    91,    92,    93,    61,    62,    63,    64,    65,    66,
-      -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,
-      -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    53,
-      87,    88,    89,    90,    91,    92,    93,    61,    62,    63,
-      64,    65,    66,    -1,    68,    -1,    -1,    71,    72,    73,
-      -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,
-      -1,    -1,    53,    87,    88,    89,    90,    91,    92,    93,
-      61,    62,    63,    64,    65,    66,    -1,    68,    -1,    -1,
-      71,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,    47,
-      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,
-      91,    92,    93,    61,    62,    63,    64,    65,    66,    -1,
-      68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,
-      -1,    -1,    47,    -1,    -1,    -1,    -1,    -1,    -1,    87,
-      88,    89,    90,    91,    92,    93,    61,    62,    63,    64,
-      65,    66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    47,    -1,    -1,    -1,    -1,
-      -1,    -1,    87,    88,    89,    90,    91,    92,    93,    61,
-      62,    63,    64,    65,    66,    -1,    68,    -1,    -1,    71,
-      72,    73,    -1,    -1,    -1,    -1,    -1,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,
-      92,    93,    61,    62,    63,    64,    65,    66,    -1,    68,
-      -1,    -1,    71,    72,    73,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    53,    87,    88,
-      89,    90,    91,    92,    93,    61,    62,    63,    64,    65,
-      66,    -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    87,    88,    89,    90,    91,    92,    93,    55,    95,
-      -1,    -1,    -1,    -1,    61,    62,    63,    64,    65,    66,
-      -1,    68,    -1,    -1,    71,    72,    73,    61,    62,    63,
-      64,    65,    66,    -1,    68,    -1,    -1,    71,    72,    73,
-      87,    88,    89,    90,    91,    92,    93,    -1,    -1,    -1,
-      -1,    -1,    -1,    87,    88,    89,    90,    91,    92,    93,
-      -1,    -1,    -1,    97,    61,    62,    63,    64,    65,    66,
-      -1,    68,    -1,    -1,    71,    72,    73,    -1,    -1,    -1,
-      -1,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
-      87,    88,    89,    90,    91,    92,    93,    61,    62,    63,
-      64,    65,    66,    -1,    68,    -1,    -1,    71,    72,    73,
-      61,    62,    63,    64,    -1,    -1,    -1,    68,    -1,    -1,
-      71,    72,    73,    87,    88,    89,    90,    91,    92,    93,
-      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,
-      91,    92,    93
+      -1,    -1,    21,    22,    23,    24,    25,    26,    -1,    -1,
+      -1,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    -1,    68,
+      -1,    -1,    97,    -1,    -1,   100,    75,    76,    77,    78,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    24,    91,    92,    27,    28,    -1,    -1,    97,    -1,
+      -1,   100,    -1,    -1,    -1,    38,    39,    40,    41,    42,
+      -1,    -1,    -1,    -1,    47,    -1,    24,    50,    51,    52,
+      28,    -1,    55,    -1,    -1,    -1,    59,    60,    61,    -1,
+      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,
+      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    82,
+      83,    59,    60,    61,    24,    -1,    -1,    -1,    28,    -1,
+      -1,    -1,    -1,    96,    -1,    -1,    -1,    -1,    38,    39,
+      40,    41,    42,    -1,    82,    83,    -1,    47,    86,    -1,
+      50,    51,    52,    24,    -1,    55,    -1,    28,    96,    59,
+      60,    61,    -1,    -1,    -1,    -1,    -1,    38,    39,    40,
+      41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
+      51,    52,    82,    83,    55,    -1,    86,    -1,    59,    60,
+      61,    24,    -1,    -1,    -1,    28,    96,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    38,    39,    40,    41,    42,
+      -1,    82,    83,    -1,    47,    86,    -1,    50,    51,    52,
+      -1,    -1,    55,    -1,    -1,    96,    59,    60,    61,    -1,
+      24,    -1,    -1,    -1,    28,    29,    -1,    -1,    -1,    -1,
+      -1,    -1,    35,    -1,    38,    39,    40,    41,    42,    82,
+      83,    45,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
+      -1,    55,    -1,    96,    58,    59,    60,    61,    -1,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    -1,    -1,    44,    -1,    -1,    -1,    82,    83,
+      84,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
+      93,    94,    62,    63,    64,    65,    66,    67,    -1,    69,
+      70,    71,    72,    73,    74,    -1,    -1,    -1,    -1,    46,
+      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
+      90,    91,    92,    93,    94,    62,    63,    64,    65,    66,
+      67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
+      -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
+      54,    88,    89,    90,    91,    92,    93,    94,    62,    63,
+      64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
+      -1,    -1,    -1,    54,    88,    89,    90,    91,    92,    93,
+      94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
+      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
+      48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,
+      91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
+      -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
+      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,
+      88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
+      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
+      -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
+      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
+      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
+      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
+      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,
+      89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
+      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    54,    88,    89,    90,    91,    92,
+      93,    94,    62,    63,    64,    65,    66,    67,    -1,    69,
+      -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
+      90,    91,    92,    93,    94,    56,    96,    -1,    -1,    -1,
+      -1,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
+      -1,    72,    73,    74,    62,    63,    64,    65,    66,    67,
+      -1,    69,    -1,    -1,    72,    73,    74,    88,    89,    90,
+      91,    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    90,    91,    92,    93,    94,    -1,    -1,    -1,
+      98,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
+      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    80,
+      81,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
+      91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
+      -1,    69,    -1,    -1,    72,    73,    74,    62,    63,    64,
+      65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
+      88,    89,    90,    91,    92,    93,    94,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    22,    23,    24,    26,    31,    32,    37,    38,    39,
-      40,    41,    44,    46,    49,    50,    51,    54,    57,    58,
-      59,    60,    81,    82,    83,   103,   104,   105,   106,   107,
-     119,   125,   129,   134,   141,   143,   145,   148,   153,     1,
-      14,    17,    18,    21,    25,    26,    27,    29,    33,    67,
-      74,    75,    76,    77,    78,    90,    91,    96,    99,   128,
-     129,   131,   132,   154,   156,    96,   154,    96,   154,    96,
-     131,   155,   144,   147,    50,   135,    45,    46,    47,    48,
-      96,   131,   142,   146,    50,    20,   131,    55,    56,    17,
-      18,    19,    26,    33,    26,    26,   131,   131,   142,   137,
-     131,   136,   149,     0,    95,   131,   126,    95,    26,   128,
-      47,    96,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   154,    26,    27,    29,   101,   131,   157,   158,   159,
-     160,    61,    62,    63,    64,    65,    66,    68,    71,    72,
-      73,    87,    88,    89,    90,    91,    92,    93,    98,   154,
-     154,    26,   154,    98,   154,   126,    26,   138,   131,    45,
-     131,   142,    26,    26,    43,    69,    70,    26,   126,    53,
-      63,   128,   128,    53,    63,    53,    63,    52,    55,   142,
-      26,   140,    53,    95,    26,   139,    26,   103,   122,    26,
-     150,   128,    47,    53,    47,    53,    47,    53,    47,    53,
-      79,    80,    97,    97,   101,   101,   101,   100,    98,    98,
-     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   131,   131,   131,   131,   131,   131,   131,    97,    97,
-      97,    98,    97,   131,   150,    98,   131,   126,   128,    24,
-      26,   132,   133,    26,   133,    26,   133,    42,    63,   131,
-     131,   131,    53,    63,    47,   131,   131,   131,   131,   131,
-     131,    98,   118,   118,    98,    52,    95,    98,   131,   131,
-     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   131,    26,    27,    29,   160,   130,    95,    26,   150,
-      43,   128,   131,   131,   122,   131,   131,    26,    26,   106,
-     127,    26,   127,   152,    26,    47,    47,    47,    47,   155,
-     152,    95,   131,   114,   108,   111,   117,   128,   126,    95,
-     107,   126,   123,   127,   131,   131,   131,   131,    97,   127,
-     152,   126,   124,   124,   127,    53,    63,    86,   120,    30,
-     127,   115,   109,   112,   123,   131,   131,    35,    36,   121,
-     126,    26,   151,   122,    53,    34,    85,   127,   131,    84,
-      98,   116,   131,    53,   126,   122,    26,   117,   110,   131,
-      84,    52,   127,   122,   113,   127,    85,   117,   122,   123,
-     127,   117,    85,   127,    85
+       0,    24,    28,    29,    38,    39,    40,    41,    42,    45,
+      47,    50,    51,    52,    55,    58,    59,    60,    61,    82,
+      83,    84,   104,   105,   106,   107,   108,   120,   126,   134,
+     142,   144,   146,   149,     1,    14,    17,    18,    21,    22,
+      23,    24,    25,    26,    30,    31,    32,    33,    34,    68,
+      75,    76,    77,    78,    79,    91,    92,    97,   100,   129,
+     130,   132,   133,   154,   156,   145,   148,    51,   135,    46,
+      47,    48,    49,    97,   130,   143,   147,    51,    20,   130,
+      56,    57,    17,    18,    19,    24,    30,    24,    24,   130,
+     130,   143,   137,   130,   136,   150,     0,    96,   130,   127,
+      96,    24,   129,    48,   129,    97,   130,   130,   130,   130,
+     130,   130,   130,   130,    24,   130,   154,    24,    25,    26,
+     102,   130,   157,   158,   159,   160,    62,    63,    64,    65,
+      66,    67,    69,    72,    73,    74,    88,    89,    90,    91,
+      92,    93,    94,    99,   154,   127,    24,   139,   130,    46,
+     130,   143,    24,    24,    44,    70,    71,    24,   127,    54,
+      64,   129,   129,    54,    64,    54,    64,    53,    56,   143,
+      24,   141,    54,    96,    24,   140,    24,   104,   123,    24,
+     151,   129,    24,   154,    48,    54,    48,    54,    48,    54,
+      48,    54,    80,    81,    98,    99,    98,    98,   102,   102,
+     102,   101,    99,    99,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   151,    99,   130,   127,   129,    24,   132,    24,
+     132,    24,   132,    43,    64,   130,   130,   130,    54,    64,
+      48,   130,   130,   130,   130,   130,   130,    99,   119,   119,
+      99,    53,    96,    99,    98,    99,    98,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   138,   130,   130,
+     130,   130,    24,    25,    26,   160,    96,    24,   151,    44,
+     130,   130,   123,   130,   130,    24,    24,   107,   128,    24,
+     128,   153,    24,   131,    48,    48,    48,    48,   130,   155,
+     153,    96,   130,   115,   109,   112,   118,   129,   127,    96,
+     108,   127,   124,   128,   155,   130,   130,   130,   130,    98,
+      99,   128,   153,   127,   125,   125,   128,    54,    64,    87,
+     121,    27,    98,   130,   128,   116,   110,   113,   124,   130,
+     130,    36,    37,   122,   127,    24,   152,   123,    54,    35,
+      86,   128,   130,    85,    99,   117,   130,    54,   127,   123,
+      24,   118,   111,   130,    85,    53,   128,   123,   114,   128,
+      86,   118,   123,   124,   128,   118,    86,   128,    86
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   102,   103,   103,   104,   104,   104,   105,   105,   105,
-     105,   105,   105,   105,   105,   105,   105,   105,   105,   105,
-     105,   105,   105,   105,   106,   106,   106,   106,   107,   107,
-     107,   108,   109,   110,   107,   111,   112,   113,   107,   114,
-     115,   116,   107,   107,   107,   107,   107,   117,   118,   119,
-     119,   120,   120,   121,   122,   123,   124,   125,   126,   127,
-     127,   127,   128,   128,   128,   128,   128,   128,   128,   128,
-     128,   128,   129,   129,   129,   129,   129,   130,   129,   129,
-     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
-     131,   131,   131,   131,   131,   131,   131,   132,   132,   132,
-     132,   132,   132,   132,   132,   133,   133,   134,   134,   134,
-     134,   134,   135,   134,   136,   134,   137,   134,   134,   134,
-     134,   134,   134,   138,   138,   139,   139,   140,   140,   141,
-     141,   141,   141,   141,   141,   142,   142,   143,   143,   143,
-     144,   143,   146,   145,   145,   147,   145,   145,   145,   149,
-     148,   150,   150,   150,   151,   151,   151,   152,   153,   154,
-     154,   154,   155,   155,   156,   157,   157,   157,   157,   158,
-     158,   159,   159,   160,   160,   160
+       0,   103,   104,   104,   105,   105,   105,   106,   106,   106,
+     106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
+     106,   106,   106,   106,   107,   107,   108,   108,   108,   109,
+     110,   111,   108,   112,   113,   114,   108,   115,   116,   117,
+     108,   108,   108,   108,   108,   118,   119,   120,   120,   121,
+     121,   122,   123,   124,   125,   126,   127,   128,   128,   128,
+     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
+     130,   130,   130,   131,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+     130,   132,   132,   132,   132,   132,   132,   132,   132,   132,
+     133,   133,   133,   133,   134,   134,   134,   134,   134,   135,
+     134,   136,   134,   137,   134,   134,   134,   134,   138,   134,
+     134,   134,   139,   139,   140,   140,   141,   141,   142,   142,
+     142,   142,   142,   142,   143,   143,   144,   144,   144,   145,
+     144,   147,   146,   146,   148,   146,   146,   146,   150,   149,
+     151,   151,   151,   152,   152,   152,   153,   154,   154,   154,
+     155,   155,   156,   157,   157,   157,   157,   158,   158,   159,
+     159,   160,   160,   160
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1575,23 +1498,23 @@ static const yytype_int8 yyr2[] =
 {
        0,     2,     1,     3,     0,     1,     1,     4,     4,     6,
        4,     4,     4,     4,     4,     4,     4,     4,     5,     5,
-       8,     8,     4,     4,     1,     1,     1,     1,     1,     1,
-       9,     0,     0,     0,    15,     0,     0,     0,    16,     0,
-       0,     0,    13,     2,     4,     7,     6,     0,     0,     9,
-      11,     0,     2,     6,     0,     0,     0,     1,     0,     0,
-       2,     2,     1,     1,     1,     1,     1,     1,     2,     3,
-       1,     2,     4,     2,     4,     2,     4,     0,     7,     4,
-       1,     1,     1,     3,     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,     0,     3,     4,     2,
-       4,     2,     1,     1,     3,     1,     3,     1,     3,     1,
-       2,     2,     2,     3,     2,     3,     2,     2,     3,     2,
-       0,     3,     0,     8,     2,     0,     7,     8,     6,     0,
-       3,     0,     1,     3,     0,     1,     3,     0,     2,     0,
-       1,     3,     1,     3,     3,     0,     1,     1,     1,     1,
-       3,     1,     3,     3,     3,     3
+       8,     8,     4,     4,     1,     1,     1,     1,     9,     0,
+       0,     0,    15,     0,     0,     0,    16,     0,     0,     0,
+      13,     2,     4,     7,     6,     0,     0,     9,    11,     0,
+       2,     6,     0,     0,     0,     1,     0,     0,     2,     2,
+       1,     1,     1,     1,     1,     1,     2,     3,     1,     2,
+       1,     1,     4,     0,     7,     4,     2,     3,     1,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     2,     3,     3,     3,     3,     2,     2,     4,
+       4,     1,     4,     6,     4,     6,     4,     6,     4,     6,
+       1,     1,     1,     1,     2,     1,     1,     2,     1,     0,
+       3,     0,     3,     0,     3,     4,     2,     4,     0,     7,
+       4,     2,     1,     3,     1,     3,     1,     3,     1,     2,
+       2,     2,     3,     2,     3,     2,     2,     3,     2,     0,
+       3,     0,     8,     2,     0,     7,     8,     6,     0,     3,
+       0,     1,     3,     0,     1,     3,     0,     0,     1,     3,
+       1,     3,     3,     0,     1,     1,     1,     1,     3,     1,
+       3,     3,     3,     3
 };
 
 
@@ -1862,76 +1785,58 @@ yydestruct (const char *yymsg,
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   switch (yykind)
     {
-    case 22: /* BLTIN  */
-#line 208 "engines/director/lingo/lingo-gr.y"
-            { delete ((*yyvaluep).s); }
-#line 1869 "engines/director/lingo/lingo-gr.cpp"
-        break;
-
-    case 23: /* FBLTIN  */
-#line 208 "engines/director/lingo/lingo-gr.y"
-            { delete ((*yyvaluep).s); }
-#line 1875 "engines/director/lingo/lingo-gr.cpp"
-        break;
-
-    case 24: /* RBLTIN  */
-#line 208 "engines/director/lingo/lingo-gr.y"
-            { delete ((*yyvaluep).s); }
-#line 1881 "engines/director/lingo/lingo-gr.cpp"
-        break;
-
-    case 25: /* THEFBLTIN  */
-#line 208 "engines/director/lingo/lingo-gr.y"
+    case 22: /* THEFUNC  */
+#line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1887 "engines/director/lingo/lingo-gr.cpp"
+#line 1792 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 26: /* ID  */
-#line 208 "engines/director/lingo/lingo-gr.y"
+    case 23: /* THEFUNCINOF  */
+#line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1893 "engines/director/lingo/lingo-gr.cpp"
+#line 1798 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 27: /* STRING  */
-#line 208 "engines/director/lingo/lingo-gr.y"
+    case 24: /* ID  */
+#line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1899 "engines/director/lingo/lingo-gr.cpp"
+#line 1804 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 28: /* HANDLER  */
-#line 208 "engines/director/lingo/lingo-gr.y"
+    case 25: /* STRING  */
+#line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1905 "engines/director/lingo/lingo-gr.cpp"
+#line 1810 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 29: /* SYMBOL  */
-#line 208 "engines/director/lingo/lingo-gr.y"
+    case 26: /* SYMBOL  */
+#line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1911 "engines/director/lingo/lingo-gr.cpp"
+#line 1816 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 30: /* ENDCLAUSE  */
-#line 208 "engines/director/lingo/lingo-gr.y"
+    case 27: /* ENDCLAUSE  */
+#line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1917 "engines/director/lingo/lingo-gr.cpp"
+#line 1822 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 31: /* tPLAYACCEL  */
-#line 208 "engines/director/lingo/lingo-gr.y"
+    case 28: /* tPLAYACCEL  */
+#line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1923 "engines/director/lingo/lingo-gr.cpp"
+#line 1828 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 32: /* tMETHOD  */
-#line 208 "engines/director/lingo/lingo-gr.y"
+    case 29: /* tMETHOD  */
+#line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1929 "engines/director/lingo/lingo-gr.cpp"
+#line 1834 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 148: /* on  */
-#line 208 "engines/director/lingo/lingo-gr.y"
+    case 149: /* on  */
+#line 214 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1935 "engines/director/lingo/lingo-gr.cpp"
+#line 1840 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2210,7 +2115,7 @@ yyreduce:
   switch (yyn)
     {
   case 7:
-#line 219 "engines/director/lingo/lingo-gr.y"
+#line 225 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2218,19 +2123,19 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2222 "engines/director/lingo/lingo-gr.cpp"
+#line 2127 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
-#line 226 "engines/director/lingo/lingo-gr.y"
+#line 232 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2230 "engines/director/lingo/lingo-gr.cpp"
+#line 2135 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
-#line 230 "engines/director/lingo/lingo-gr.y"
+#line 236 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2242,11 +2147,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2246 "engines/director/lingo/lingo-gr.cpp"
+#line 2151 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
-#line 241 "engines/director/lingo/lingo-gr.y"
+#line 247 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2254,19 +2159,19 @@ yyreduce:
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2258 "engines/director/lingo/lingo-gr.cpp"
+#line 2163 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
-#line 248 "engines/director/lingo/lingo-gr.y"
+#line 254 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2266 "engines/director/lingo/lingo-gr.cpp"
+#line 2171 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
-#line 251 "engines/director/lingo/lingo-gr.y"
+#line 257 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2274,19 +2179,19 @@ yyreduce:
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2278 "engines/director/lingo/lingo-gr.cpp"
+#line 2183 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
-#line 258 "engines/director/lingo/lingo-gr.y"
+#line 264 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2286 "engines/director/lingo/lingo-gr.cpp"
+#line 2191 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
-#line 261 "engines/director/lingo/lingo-gr.y"
+#line 267 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -2294,11 +2199,11 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2298 "engines/director/lingo/lingo-gr.cpp"
+#line 2203 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
-#line 268 "engines/director/lingo/lingo-gr.y"
+#line 274 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2306,11 +2211,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2310 "engines/director/lingo/lingo-gr.cpp"
+#line 2215 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
-#line 275 "engines/director/lingo/lingo-gr.y"
+#line 281 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -2318,11 +2223,11 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2322 "engines/director/lingo/lingo-gr.cpp"
+#line 2227 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
-#line 282 "engines/director/lingo/lingo-gr.y"
+#line 288 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2330,33 +2235,33 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2334 "engines/director/lingo/lingo-gr.cpp"
+#line 2239 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
-#line 289 "engines/director/lingo/lingo-gr.y"
+#line 295 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2345 "engines/director/lingo/lingo-gr.cpp"
+#line 2250 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
-#line 295 "engines/director/lingo/lingo-gr.y"
+#line 301 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2356 "engines/director/lingo/lingo-gr.cpp"
+#line 2261 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20:
-#line 302 "engines/director/lingo/lingo-gr.y"
+#line 308 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2368,11 +2273,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2372 "engines/director/lingo/lingo-gr.cpp"
+#line 2277 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 21:
-#line 313 "engines/director/lingo/lingo-gr.y"
+#line 319 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2384,11 +2289,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2388 "engines/director/lingo/lingo-gr.cpp"
+#line 2293 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 22:
-#line 324 "engines/director/lingo/lingo-gr.y"
+#line 330 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectpropassign);
 		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
@@ -2396,11 +2301,11 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2400 "engines/director/lingo/lingo-gr.cpp"
+#line 2305 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 23:
-#line 331 "engines/director/lingo/lingo-gr.y"
+#line 337 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectpropassign);
 		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
@@ -2408,11 +2313,11 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2412 "engines/director/lingo/lingo-gr.cpp"
+#line 2317 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 30:
-#line 350 "engines/director/lingo/lingo-gr.y"
+  case 28:
+#line 354 "engines/director/lingo/lingo-gr.y"
                                                                                                 {
 		inst start = 0, end = 0;
 		WRITE_UINT32(&start, (yyvsp[-6].code) - (yyvsp[-1].code) + 1);
@@ -2420,32 +2325,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2424 "engines/director/lingo/lingo-gr.cpp"
+#line 2329 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 31:
-#line 363 "engines/director/lingo/lingo-gr.y"
+  case 29:
+#line 367 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2432 "engines/director/lingo/lingo-gr.cpp"
+#line 2337 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 32:
-#line 367 "engines/director/lingo/lingo-gr.y"
+  case 30:
+#line 371 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2439 "engines/director/lingo/lingo-gr.cpp"
+#line 2344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 33:
-#line 370 "engines/director/lingo/lingo-gr.y"
+  case 31:
+#line 374 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2445 "engines/director/lingo/lingo-gr.cpp"
+#line 2350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 34:
-#line 370 "engines/director/lingo/lingo-gr.y"
+  case 32:
+#line 374 "engines/director/lingo/lingo-gr.y"
                                                                                                       {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2466,32 +2371,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2470 "engines/director/lingo/lingo-gr.cpp"
+#line 2375 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 35:
-#line 397 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 401 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2478 "engines/director/lingo/lingo-gr.cpp"
+#line 2383 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 36:
-#line 401 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 405 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2485 "engines/director/lingo/lingo-gr.cpp"
+#line 2390 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 37:
-#line 404 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 408 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2491 "engines/director/lingo/lingo-gr.cpp"
+#line 2396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 38:
-#line 405 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 409 "engines/director/lingo/lingo-gr.y"
                                                                 {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2512,32 +2417,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2516 "engines/director/lingo/lingo-gr.cpp"
+#line 2421 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 39:
-#line 431 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 435 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);
 				  g_lingo->codeInt(0);
 				  Common::String count("count");
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2527 "engines/director/lingo/lingo-gr.cpp"
+#line 2432 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 40:
-#line 438 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 442 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get counter
 				  g_lingo->codeInt(0);
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2537 "engines/director/lingo/lingo-gr.cpp"
+#line 2442 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 41:
-#line 444 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 448 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get list
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_stackpeek);	// get counter
@@ -2548,11 +2453,11 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2552 "engines/director/lingo/lingo-gr.cpp"
+#line 2457 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 42:
-#line 454 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 458 "engines/director/lingo/lingo-gr.y"
                                                         {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2572,11 +2477,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2576 "engines/director/lingo/lingo-gr.cpp"
+#line 2481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 43:
-#line 474 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 478 "engines/director/lingo/lingo-gr.y"
                         {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -2585,43 +2490,43 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2589 "engines/director/lingo/lingo-gr.cpp"
+#line 2494 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 44:
-#line 482 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 486 "engines/director/lingo/lingo-gr.y"
                               {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2597 "engines/director/lingo/lingo-gr.cpp"
+#line 2502 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 45:
-#line 485 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 489 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2603 "engines/director/lingo/lingo-gr.cpp"
+#line 2508 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 46:
-#line 486 "engines/director/lingo/lingo-gr.y"
+  case 44:
+#line 490 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2609 "engines/director/lingo/lingo-gr.cpp"
+#line 2514 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 47:
-#line 488 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 492 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2615 "engines/director/lingo/lingo-gr.cpp"
+#line 2520 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 48:
-#line 490 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 494 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2621 "engines/director/lingo/lingo-gr.cpp"
+#line 2526 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 49:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 496 "engines/director/lingo/lingo-gr.y"
                                                                                          {
 		inst else1 = 0, end3 = 0;
 		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
@@ -2629,11 +2534,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2633 "engines/director/lingo/lingo-gr.cpp"
+#line 2538 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 50:
-#line 499 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 503 "engines/director/lingo/lingo-gr.y"
                                                                                                           {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-5].code) + 1 - (yyvsp[-8].code) + 1);
@@ -2641,107 +2546,111 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2645 "engines/director/lingo/lingo-gr.cpp"
+#line 2550 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 53:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 514 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2655 "engines/director/lingo/lingo-gr.cpp"
+#line 2560 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 54:
-#line 516 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 520 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2663 "engines/director/lingo/lingo-gr.cpp"
+#line 2568 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 55:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 524 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2671 "engines/director/lingo/lingo-gr.cpp"
+#line 2576 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 56:
-#line 524 "engines/director/lingo/lingo-gr.y"
+  case 54:
+#line 528 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2679 "engines/director/lingo/lingo-gr.cpp"
+#line 2584 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 57:
-#line 528 "engines/director/lingo/lingo-gr.y"
+  case 55:
+#line 532 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2686 "engines/director/lingo/lingo-gr.cpp"
+#line 2591 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 58:
-#line 531 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 535 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2692 "engines/director/lingo/lingo-gr.cpp"
+#line 2597 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 59:
-#line 533 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 537 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2698 "engines/director/lingo/lingo-gr.cpp"
+#line 2603 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 537 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 541 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2706 "engines/director/lingo/lingo-gr.cpp"
+#line 2611 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
-#line 540 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 544 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2714 "engines/director/lingo/lingo-gr.cpp"
+#line 2619 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 547 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2723 "engines/director/lingo/lingo-gr.cpp"
+#line 2628 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 547 "engines/director/lingo/lingo-gr.y"
+  case 63:
+#line 551 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2732 "engines/director/lingo/lingo-gr.cpp"
+#line 2637 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 551 "engines/director/lingo/lingo-gr.y"
+  case 64:
+#line 555 "engines/director/lingo/lingo-gr.y"
                         {
-		(yyval.code) = g_lingo->code1(LC::c_eval);
+		if (g_lingo->_builtinConsts.contains(*(yyvsp[0].s))) {
+			(yyval.code) = g_lingo->code1(LC::c_constpush);
+		} else {
+			(yyval.code) = g_lingo->code1(LC::c_eval);
+		}
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2741 "engines/director/lingo/lingo-gr.cpp"
+#line 2650 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 555 "engines/director/lingo/lingo-gr.y"
+  case 65:
+#line 563 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2750,319 +2659,351 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2754 "engines/director/lingo/lingo-gr.cpp"
+#line 2663 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 563 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 571 "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 2765 "engines/director/lingo/lingo-gr.cpp"
+#line 2674 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 569 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 577 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2771 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 71:
-#line 571 "engines/director/lingo/lingo-gr.y"
-                                { yyerrok; }
-#line 2777 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 72:
-#line 573 "engines/director/lingo/lingo-gr.y"
-                                 {
-		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
-		delete (yyvsp[-3].s); }
-#line 2785 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 73:
-#line 576 "engines/director/lingo/lingo-gr.y"
-                                {
-		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
-		delete (yyvsp[-1].s); }
-#line 2793 "engines/director/lingo/lingo-gr.cpp"
+#line 2680 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
+  case 69:
 #line 579 "engines/director/lingo/lingo-gr.y"
-                                 {
-		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
-		delete (yyvsp[-3].s); }
-#line 2801 "engines/director/lingo/lingo-gr.cpp"
+                                { yyerrok; }
+#line 2686 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 582 "engines/director/lingo/lingo-gr.y"
-                                {
-		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
-		delete (yyvsp[-1].s); }
-#line 2809 "engines/director/lingo/lingo-gr.cpp"
+  case 70:
+#line 581 "engines/director/lingo/lingo-gr.y"
+                 { (yyval.code) = (yyvsp[0].code); }
+#line 2692 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 585 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 583 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2820 "engines/director/lingo/lingo-gr.cpp"
+#line 2703 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 591 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 589 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2826 "engines/director/lingo/lingo-gr.cpp"
+#line 2709 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 592 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 590 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2835 "engines/director/lingo/lingo-gr.cpp"
+#line 2718 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 594 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2843 "engines/director/lingo/lingo-gr.cpp"
+#line 2726 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 600 "engines/director/lingo/lingo-gr.y"
-                 { (yyval.code) = (yyvsp[0].code); }
-#line 2849 "engines/director/lingo/lingo-gr.cpp"
+  case 76:
+#line 597 "engines/director/lingo/lingo-gr.y"
+                                        {
+		(yyval.code) = g_lingo->codeFunc((yyvsp[-1].s), 1);
+		delete (yyvsp[-1].s); }
+#line 2734 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 603 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 600 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2857 "engines/director/lingo/lingo-gr.cpp"
+#line 2742 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 606 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 603 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_objectproppush);
 		g_lingo->codeString((yyvsp[0].objectprop).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2868 "engines/director/lingo/lingo-gr.cpp"
+#line 2753 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 612 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 609 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2874 "engines/director/lingo/lingo-gr.cpp"
+#line 2759 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 613 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 610 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2880 "engines/director/lingo/lingo-gr.cpp"
+#line 2765 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 614 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 611 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2886 "engines/director/lingo/lingo-gr.cpp"
+#line 2771 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 615 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 612 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2892 "engines/director/lingo/lingo-gr.cpp"
+#line 2777 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 616 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 613 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2898 "engines/director/lingo/lingo-gr.cpp"
+#line 2783 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 617 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 614 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2904 "engines/director/lingo/lingo-gr.cpp"
+#line 2789 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 615 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2910 "engines/director/lingo/lingo-gr.cpp"
+#line 2795 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 619 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 616 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2916 "engines/director/lingo/lingo-gr.cpp"
+#line 2801 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 620 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 617 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2922 "engines/director/lingo/lingo-gr.cpp"
+#line 2807 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 621 "engines/director/lingo/lingo-gr.y"
+  case 88:
+#line 618 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2928 "engines/director/lingo/lingo-gr.cpp"
+#line 2813 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 622 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 619 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2934 "engines/director/lingo/lingo-gr.cpp"
+#line 2819 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 623 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 620 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2940 "engines/director/lingo/lingo-gr.cpp"
+#line 2825 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 624 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 621 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2946 "engines/director/lingo/lingo-gr.cpp"
+#line 2831 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
-#line 625 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 622 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2952 "engines/director/lingo/lingo-gr.cpp"
+#line 2837 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
-#line 626 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 623 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2958 "engines/director/lingo/lingo-gr.cpp"
+#line 2843 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 627 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 624 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2964 "engines/director/lingo/lingo-gr.cpp"
+#line 2849 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 101:
-#line 628 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 625 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2970 "engines/director/lingo/lingo-gr.cpp"
+#line 2855 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 629 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 626 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2976 "engines/director/lingo/lingo-gr.cpp"
+#line 2861 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 630 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 627 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); }
-#line 2982 "engines/director/lingo/lingo-gr.cpp"
+#line 2867 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 631 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 628 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2988 "engines/director/lingo/lingo-gr.cpp"
+#line 2873 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 632 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 629 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 2994 "engines/director/lingo/lingo-gr.cpp"
+#line 2879 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 633 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 630 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 3000 "engines/director/lingo/lingo-gr.cpp"
+#line 2885 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 635 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_charOf); }
-#line 3006 "engines/director/lingo/lingo-gr.cpp"
+  case 101:
+#line 632 "engines/director/lingo/lingo-gr.y"
+                                                {
+		if ((yyvsp[0].ref).s) {
+			(yyval.code) = g_lingo->code1(LC::c_stringpush);
+			g_lingo->codeString((yyvsp[0].ref).s->c_str());
+			delete (yyvsp[0].ref).s;
+		} else {
+			(yyval.code) = g_lingo->code1(LC::c_intpush);
+			g_lingo->codeInt((yyvsp[0].ref).i);
+		}
+		Common::String field("field");
+		g_lingo->codeFunc(&field, 1); }
+#line 2901 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 636 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 643 "engines/director/lingo/lingo-gr.y"
+                                        { g_lingo->code1(LC::c_charOf); }
+#line 2907 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 103:
+#line 644 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 3012 "engines/director/lingo/lingo-gr.cpp"
+#line 2913 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 637 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 645 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3018 "engines/director/lingo/lingo-gr.cpp"
+#line 2919 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 638 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 646 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 3024 "engines/director/lingo/lingo-gr.cpp"
+#line 2925 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 639 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 647 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3030 "engines/director/lingo/lingo-gr.cpp"
+#line 2931 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 640 "engines/director/lingo/lingo-gr.y"
+  case 107:
+#line 648 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 3036 "engines/director/lingo/lingo-gr.cpp"
+#line 2937 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 641 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 649 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3042 "engines/director/lingo/lingo-gr.cpp"
+#line 2943 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 642 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 650 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 3048 "engines/director/lingo/lingo-gr.cpp"
+#line 2949 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 644 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 653 "engines/director/lingo/lingo-gr.y"
                                         {
-		g_lingo->codeFunc((yyvsp[-1].s), 1);
-		delete (yyvsp[-1].s); }
-#line 3056 "engines/director/lingo/lingo-gr.cpp"
+		if ((yyvsp[0].ref).s) {
+			(yyval.code) = g_lingo->code1(LC::c_stringpush);
+			g_lingo->codeString((yyvsp[0].ref).s->c_str());
+			delete (yyvsp[0].ref).s;
+		} else {
+			(yyval.code) = g_lingo->code1(LC::c_intpush);
+			g_lingo->codeInt((yyvsp[0].ref).i);
+		}
+		Common::String cast("cast");
+		g_lingo->codeFunc(&cast, 1); }
+#line 2965 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 649 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 664 "engines/director/lingo/lingo-gr.y"
+                                        {
+		if ((yyvsp[0].ref).s) {
+			(yyval.code) = g_lingo->code1(LC::c_stringpush);
+			g_lingo->codeString((yyvsp[0].ref).s->c_str());
+			delete (yyvsp[0].ref).s;
+		} else {
+			(yyval.code) = g_lingo->code1(LC::c_intpush);
+			g_lingo->codeInt((yyvsp[0].ref).i);
+		}
+		Common::String script("script");
+		g_lingo->codeFunc(&script, 1); }
+#line 2981 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 113:
+#line 675 "engines/director/lingo/lingo-gr.y"
+                                        {
+		if ((yyvsp[0].ref).s) {
+			(yyval.code) = g_lingo->code1(LC::c_stringpush);
+			g_lingo->codeString((yyvsp[0].ref).s->c_str());
+			delete (yyvsp[0].ref).s;
+		} else {
+			(yyval.code) = g_lingo->code1(LC::c_intpush);
+			g_lingo->codeInt((yyvsp[0].ref).i);
+		}
+		Common::String window("window");
+		g_lingo->codeFunc(&window, 1); }
+#line 2997 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 114:
+#line 688 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3062 "engines/director/lingo/lingo-gr.cpp"
+#line 3003 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 652 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 691 "engines/director/lingo/lingo-gr.y"
                                                 {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -3071,266 +3012,284 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 3075 "engines/director/lingo/lingo-gr.cpp"
+#line 3016 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 660 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 699 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3081 "engines/director/lingo/lingo-gr.cpp"
+#line 3022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 661 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 700 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3087 "engines/director/lingo/lingo-gr.cpp"
+#line 3028 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 661 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 700 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 3093 "engines/director/lingo/lingo-gr.cpp"
+#line 3034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 701 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3099 "engines/director/lingo/lingo-gr.cpp"
+#line 3040 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 701 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3105 "engines/director/lingo/lingo-gr.cpp"
+#line 3046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 702 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3111 "engines/director/lingo/lingo-gr.cpp"
+#line 3052 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 702 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3117 "engines/director/lingo/lingo-gr.cpp"
+#line 3058 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 664 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 703 "engines/director/lingo/lingo-gr.y"
                                         {
-		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
-		delete (yyvsp[-3].s); }
-#line 3125 "engines/director/lingo/lingo-gr.cpp"
+		Common::String open("open");
+		g_lingo->codeFunc(&open, 2); }
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 667 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 706 "engines/director/lingo/lingo-gr.y"
                                                 {
-		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
-		delete (yyvsp[-1].s); }
-#line 3133 "engines/director/lingo/lingo-gr.cpp"
+		Common::String open("open");
+		g_lingo->codeFunc(&open, 1); }
+#line 3074 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 127:
+#line 709 "engines/director/lingo/lingo-gr.y"
+                                      {
+			g_lingo->code1(LC::c_lazyeval);
+			g_lingo->codeString((yyvsp[-1].s)->c_str());
+			g_lingo->codeCmd((yyvsp[-3].s), 1);
+			delete (yyvsp[-3].s);
+			delete (yyvsp[-1].s); }
+#line 3085 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 128:
+#line 715 "engines/director/lingo/lingo-gr.y"
+                                      { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
+#line 3091 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 129:
+#line 716 "engines/director/lingo/lingo-gr.y"
+                                                    {
+			g_lingo->codeCmd((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
+			delete (yyvsp[-6].s);
+			delete (yyvsp[-4].s); }
+#line 3100 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
-#line 670 "engines/director/lingo/lingo-gr.y"
+#line 720 "engines/director/lingo/lingo-gr.y"
                                         {
-		Common::String open("open");
-		g_lingo->codeFunc(&open, 2); }
-#line 3141 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeCmd((yyvsp[-3].s), (yyvsp[-1].narg));
+		delete (yyvsp[-3].s); }
+#line 3108 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
-#line 673 "engines/director/lingo/lingo-gr.y"
+#line 723 "engines/director/lingo/lingo-gr.y"
                                                 {
-		Common::String open("open");
-		g_lingo->codeFunc(&open, 1); }
-#line 3149 "engines/director/lingo/lingo-gr.cpp"
+		g_lingo->codeCmd((yyvsp[-1].s), (yyvsp[0].narg));
+		delete (yyvsp[-1].s); }
+#line 3116 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
-#line 676 "engines/director/lingo/lingo-gr.y"
-                                                        {
-		g_lingo->codeFunc((yyvsp[0].s), 0);
-		delete (yyvsp[0].s); }
-#line 3157 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 133:
-#line 680 "engines/director/lingo/lingo-gr.y"
+#line 727 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3165 "engines/director/lingo/lingo-gr.cpp"
+#line 3124 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 683 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 730 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3173 "engines/director/lingo/lingo-gr.cpp"
+#line 3132 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 687 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 734 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3181 "engines/director/lingo/lingo-gr.cpp"
+#line 3140 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 690 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 737 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3189 "engines/director/lingo/lingo-gr.cpp"
+#line 3148 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 694 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 741 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3197 "engines/director/lingo/lingo-gr.cpp"
+#line 3156 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 697 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 744 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3205 "engines/director/lingo/lingo-gr.cpp"
+#line 3164 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 708 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 755 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3211 "engines/director/lingo/lingo-gr.cpp"
+#line 3170 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 709 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 756 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3217 "engines/director/lingo/lingo-gr.cpp"
+#line 3176 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 710 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 757 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3223 "engines/director/lingo/lingo-gr.cpp"
+#line 3182 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 711 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 758 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3232 "engines/director/lingo/lingo-gr.cpp"
+#line 3191 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 715 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 762 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3241 "engines/director/lingo/lingo-gr.cpp"
+#line 3200 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 719 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 766 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3250 "engines/director/lingo/lingo-gr.cpp"
+#line 3209 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 727 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 774 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3259 "engines/director/lingo/lingo-gr.cpp"
+#line 3218 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 731 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 778 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3268 "engines/director/lingo/lingo-gr.cpp"
+#line 3227 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 735 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 782 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3277 "engines/director/lingo/lingo-gr.cpp"
+#line 3236 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 739 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 786 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3283 "engines/director/lingo/lingo-gr.cpp"
+#line 3242 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 739 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 786 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3292 "engines/director/lingo/lingo-gr.cpp"
+#line 3251 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 769 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 816 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3298 "engines/director/lingo/lingo-gr.cpp"
+#line 3257 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 770 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 817 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3308 "engines/director/lingo/lingo-gr.cpp"
+#line 3267 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 775 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 822 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3314 "engines/director/lingo/lingo-gr.cpp"
+#line 3273 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 776 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 823 "engines/director/lingo/lingo-gr.y"
                   { startDef(); (*g_lingo->_methodVars)["me"] = kVarArgument; }
-#line 3320 "engines/director/lingo/lingo-gr.cpp"
+#line 3279 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 777 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 824 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3330 "engines/director/lingo/lingo-gr.cpp"
+#line 3289 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 782 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 829 "engines/director/lingo/lingo-gr.y"
                                                                    {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3339,192 +3298,180 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3343 "engines/director/lingo/lingo-gr.cpp"
+#line 3302 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 790 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 837 "engines/director/lingo/lingo-gr.y"
                                                {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3353 "engines/director/lingo/lingo-gr.cpp"
+#line 3312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 796 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 843 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3359 "engines/director/lingo/lingo-gr.cpp"
+#line 3318 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 796 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 843 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = (yyvsp[0].s); }
-#line 3365 "engines/director/lingo/lingo-gr.cpp"
+#line 3324 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 798 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 845 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3371 "engines/director/lingo/lingo-gr.cpp"
+#line 3330 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 799 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 846 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3377 "engines/director/lingo/lingo-gr.cpp"
+#line 3336 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 800 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 847 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3383 "engines/director/lingo/lingo-gr.cpp"
+#line 3342 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 803 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 850 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3389 "engines/director/lingo/lingo-gr.cpp"
+#line 3348 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 804 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 851 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3395 "engines/director/lingo/lingo-gr.cpp"
+#line 3354 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 806 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 853 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3401 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 168:
-#line 808 "engines/director/lingo/lingo-gr.y"
-                                        {
-		g_lingo->code1(LC::c_call);
-		g_lingo->codeString((yyvsp[-1].s)->c_str());
-		inst numpar = 0;
-		WRITE_UINT32(&numpar, (yyvsp[0].narg));
-		g_lingo->code1(numpar);
-		delete (yyvsp[-1].s); }
-#line 3413 "engines/director/lingo/lingo-gr.cpp"
+#line 3360 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 816 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 855 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3419 "engines/director/lingo/lingo-gr.cpp"
+#line 3366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 817 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 856 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3425 "engines/director/lingo/lingo-gr.cpp"
+#line 3372 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171:
-#line 818 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 857 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3431 "engines/director/lingo/lingo-gr.cpp"
+#line 3378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172:
-#line 820 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 859 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3437 "engines/director/lingo/lingo-gr.cpp"
+#line 3384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173:
-#line 821 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 860 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3443 "engines/director/lingo/lingo-gr.cpp"
+#line 3390 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 174:
-#line 823 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 862 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3449 "engines/director/lingo/lingo-gr.cpp"
+#line 3396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 175:
-#line 825 "engines/director/lingo/lingo-gr.y"
+  case 173:
+#line 864 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3455 "engines/director/lingo/lingo-gr.cpp"
+#line 3402 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 176:
-#line 826 "engines/director/lingo/lingo-gr.y"
+  case 174:
+#line 865 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3461 "engines/director/lingo/lingo-gr.cpp"
+#line 3408 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 177:
-#line 827 "engines/director/lingo/lingo-gr.y"
+  case 175:
+#line 866 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3467 "engines/director/lingo/lingo-gr.cpp"
+#line 3414 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 178:
-#line 828 "engines/director/lingo/lingo-gr.y"
+  case 176:
+#line 867 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3473 "engines/director/lingo/lingo-gr.cpp"
+#line 3420 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 179:
-#line 830 "engines/director/lingo/lingo-gr.y"
+  case 177:
+#line 869 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3479 "engines/director/lingo/lingo-gr.cpp"
+#line 3426 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 180:
-#line 831 "engines/director/lingo/lingo-gr.y"
+  case 178:
+#line 870 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3485 "engines/director/lingo/lingo-gr.cpp"
+#line 3432 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 181:
-#line 833 "engines/director/lingo/lingo-gr.y"
+  case 179:
+#line 872 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3491 "engines/director/lingo/lingo-gr.cpp"
+#line 3438 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 182:
-#line 834 "engines/director/lingo/lingo-gr.y"
+  case 180:
+#line 873 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3497 "engines/director/lingo/lingo-gr.cpp"
+#line 3444 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 183:
-#line 836 "engines/director/lingo/lingo-gr.y"
+  case 181:
+#line 875 "engines/director/lingo/lingo-gr.y"
                           {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3506 "engines/director/lingo/lingo-gr.cpp"
+#line 3453 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 184:
-#line 840 "engines/director/lingo/lingo-gr.y"
+  case 182:
+#line 879 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3515 "engines/director/lingo/lingo-gr.cpp"
+#line 3462 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 185:
-#line 844 "engines/director/lingo/lingo-gr.y"
+  case 183:
+#line 883 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3524 "engines/director/lingo/lingo-gr.cpp"
+#line 3471 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3528 "engines/director/lingo/lingo-gr.cpp"
+#line 3475 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3723,7 +3670,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 850 "engines/director/lingo/lingo-gr.y"
+#line 889 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 370cb9e1fd..5c671bd702 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -73,71 +73,72 @@ extern int yydebug;
     THEMENUITEMENTITY = 274,       /* THEMENUITEMENTITY  */
     THEMENUITEMSENTITY = 275,      /* THEMENUITEMSENTITY  */
     FLOAT = 276,                   /* FLOAT  */
-    BLTIN = 277,                   /* BLTIN  */
-    FBLTIN = 278,                  /* FBLTIN  */
-    RBLTIN = 279,                  /* RBLTIN  */
-    THEFBLTIN = 280,               /* THEFBLTIN  */
-    ID = 281,                      /* ID  */
-    STRING = 282,                  /* STRING  */
-    HANDLER = 283,                 /* HANDLER  */
-    SYMBOL = 284,                  /* SYMBOL  */
-    ENDCLAUSE = 285,               /* ENDCLAUSE  */
-    tPLAYACCEL = 286,              /* tPLAYACCEL  */
-    tMETHOD = 287,                 /* tMETHOD  */
-    THEOBJECTPROP = 288,           /* THEOBJECTPROP  */
-    tDOWN = 289,                   /* tDOWN  */
-    tELSE = 290,                   /* tELSE  */
-    tELSIF = 291,                  /* tELSIF  */
-    tEXIT = 292,                   /* tEXIT  */
-    tGLOBAL = 293,                 /* tGLOBAL  */
-    tGO = 294,                     /* tGO  */
-    tGOLOOP = 295,                 /* tGOLOOP  */
-    tIF = 296,                     /* tIF  */
-    tIN = 297,                     /* tIN  */
-    tINTO = 298,                   /* tINTO  */
-    tMACRO = 299,                  /* tMACRO  */
-    tMOVIE = 300,                  /* tMOVIE  */
-    tNEXT = 301,                   /* tNEXT  */
-    tOF = 302,                     /* tOF  */
-    tPREVIOUS = 303,               /* tPREVIOUS  */
-    tPUT = 304,                    /* tPUT  */
-    tREPEAT = 305,                 /* tREPEAT  */
-    tSET = 306,                    /* tSET  */
-    tTHEN = 307,                   /* tTHEN  */
-    tTO = 308,                     /* tTO  */
-    tWHEN = 309,                   /* tWHEN  */
-    tWITH = 310,                   /* tWITH  */
-    tWHILE = 311,                  /* tWHILE  */
-    tFACTORY = 312,                /* tFACTORY  */
-    tOPEN = 313,                   /* tOPEN  */
-    tPLAY = 314,                   /* tPLAY  */
-    tINSTANCE = 315,               /* tINSTANCE  */
-    tGE = 316,                     /* tGE  */
-    tLE = 317,                     /* tLE  */
-    tEQ = 318,                     /* tEQ  */
-    tNEQ = 319,                    /* tNEQ  */
-    tAND = 320,                    /* tAND  */
-    tOR = 321,                     /* tOR  */
-    tNOT = 322,                    /* tNOT  */
-    tMOD = 323,                    /* tMOD  */
-    tAFTER = 324,                  /* tAFTER  */
-    tBEFORE = 325,                 /* tBEFORE  */
-    tCONCAT = 326,                 /* tCONCAT  */
-    tCONTAINS = 327,               /* tCONTAINS  */
-    tSTARTS = 328,                 /* tSTARTS  */
-    tCHAR = 329,                   /* tCHAR  */
-    tITEM = 330,                   /* tITEM  */
-    tLINE = 331,                   /* tLINE  */
-    tWORD = 332,                   /* tWORD  */
-    tSPRITE = 333,                 /* tSPRITE  */
-    tINTERSECTS = 334,             /* tINTERSECTS  */
-    tWITHIN = 335,                 /* tWITHIN  */
-    tTELL = 336,                   /* tTELL  */
-    tPROPERTY = 337,               /* tPROPERTY  */
-    tON = 338,                     /* tON  */
-    tENDIF = 339,                  /* tENDIF  */
-    tENDREPEAT = 340,              /* tENDREPEAT  */
-    tENDTELL = 341                 /* tENDTELL  */
+    THEFUNC = 277,                 /* THEFUNC  */
+    THEFUNCINOF = 278,             /* THEFUNCINOF  */
+    ID = 279,                      /* ID  */
+    STRING = 280,                  /* STRING  */
+    SYMBOL = 281,                  /* SYMBOL  */
+    ENDCLAUSE = 282,               /* ENDCLAUSE  */
+    tPLAYACCEL = 283,              /* tPLAYACCEL  */
+    tMETHOD = 284,                 /* tMETHOD  */
+    THEOBJECTPROP = 285,           /* THEOBJECTPROP  */
+    CAST = 286,                    /* CAST  */
+    FIELD = 287,                   /* FIELD  */
+    SCRIPT = 288,                  /* SCRIPT  */
+    WINDOW = 289,                  /* WINDOW  */
+    tDOWN = 290,                   /* tDOWN  */
+    tELSE = 291,                   /* tELSE  */
+    tELSIF = 292,                  /* tELSIF  */
+    tEXIT = 293,                   /* tEXIT  */
+    tGLOBAL = 294,                 /* tGLOBAL  */
+    tGO = 295,                     /* tGO  */
+    tGOLOOP = 296,                 /* tGOLOOP  */
+    tIF = 297,                     /* tIF  */
+    tIN = 298,                     /* tIN  */
+    tINTO = 299,                   /* tINTO  */
+    tMACRO = 300,                  /* tMACRO  */
+    tMOVIE = 301,                  /* tMOVIE  */
+    tNEXT = 302,                   /* tNEXT  */
+    tOF = 303,                     /* tOF  */
+    tPREVIOUS = 304,               /* tPREVIOUS  */
+    tPUT = 305,                    /* tPUT  */
+    tREPEAT = 306,                 /* tREPEAT  */
+    tSET = 307,                    /* tSET  */
+    tTHEN = 308,                   /* tTHEN  */
+    tTO = 309,                     /* tTO  */
+    tWHEN = 310,                   /* tWHEN  */
+    tWITH = 311,                   /* tWITH  */
+    tWHILE = 312,                  /* tWHILE  */
+    tFACTORY = 313,                /* tFACTORY  */
+    tOPEN = 314,                   /* tOPEN  */
+    tPLAY = 315,                   /* tPLAY  */
+    tINSTANCE = 316,               /* tINSTANCE  */
+    tGE = 317,                     /* tGE  */
+    tLE = 318,                     /* tLE  */
+    tEQ = 319,                     /* tEQ  */
+    tNEQ = 320,                    /* tNEQ  */
+    tAND = 321,                    /* tAND  */
+    tOR = 322,                     /* tOR  */
+    tNOT = 323,                    /* tNOT  */
+    tMOD = 324,                    /* tMOD  */
+    tAFTER = 325,                  /* tAFTER  */
+    tBEFORE = 326,                 /* tBEFORE  */
+    tCONCAT = 327,                 /* tCONCAT  */
+    tCONTAINS = 328,               /* tCONTAINS  */
+    tSTARTS = 329,                 /* tSTARTS  */
+    tCHAR = 330,                   /* tCHAR  */
+    tITEM = 331,                   /* tITEM  */
+    tLINE = 332,                   /* tLINE  */
+    tWORD = 333,                   /* tWORD  */
+    tSPRITE = 334,                 /* tSPRITE  */
+    tINTERSECTS = 335,             /* tINTERSECTS  */
+    tWITHIN = 336,                 /* tWITHIN  */
+    tTELL = 337,                   /* tTELL  */
+    tPROPERTY = 338,               /* tPROPERTY  */
+    tON = 339,                     /* tON  */
+    tENDIF = 340,                  /* tENDIF  */
+    tENDREPEAT = 341,              /* tENDREPEAT  */
+    tENDTELL = 342                 /* tENDTELL  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -161,7 +162,12 @@ union YYSTYPE
 		Common::String *prop;
 	} objectprop;
 
-#line 165 "engines/director/lingo/lingo-gr.h"
+	struct {
+		Common::String *s;
+		int i;
+	} ref;
+
+#line 171 "engines/director/lingo/lingo-gr.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 0cedad7d65..d23f1ad07f 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -170,6 +170,11 @@ static void mVar(Common::String *s, VarType type) {
 		Common::String *obj;
 		Common::String *prop;
 	} objectprop;
+
+	struct {
+		Common::String *s;
+		int i;
+	} ref;
 }
 
 %token UNARY
@@ -180,10 +185,11 @@ static void mVar(Common::String *s, VarType type) {
 
 %token<e> THEENTITY THEENTITYWITHID THEMENUITEMENTITY THEMENUITEMSENTITY
 %token<f> FLOAT
-%token<s> BLTIN FBLTIN RBLTIN THEFBLTIN
-%token<s> ID STRING HANDLER SYMBOL
+%token<s> THEFUNC THEFUNCINOF
+%token<s> ID STRING SYMBOL
 %token<s> ENDCLAUSE tPLAYACCEL tMETHOD
 %token<objectprop> THEOBJECTPROP
+%token<ref> CAST FIELD SCRIPT WINDOW
 %token tDOWN tELSE tELSIF tEXIT tGLOBAL tGO tGOLOOP tIF tIN tINTO tMACRO
 %token tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN
 %token tWITH tWHILE tFACTORY tOPEN tPLAY tINSTANCE
@@ -192,7 +198,7 @@ static void mVar(Common::String *s, VarType type) {
 %token tSPRITE tINTERSECTS tWITHIN tTELL tPROPERTY
 %token tON tENDIF tENDREPEAT tENDTELL
 
-%type<code> asgn lbl expr if chunkexpr funccall
+%type<code> asgn lbl expr if chunkexpr
 %type<code> stmtlist tellstart reference simpleexpr list valuelist
 %type<code> jump jumpifz varassign
 %type<narg> argdef arglist nonemptyarglist linearlist proplist
@@ -223,7 +229,7 @@ asgn: tPUT expr tINTO ID 		{
 		g_lingo->code1(LC::c_assign);
 		$$ = $expr;
 		delete $ID; }
-	| tPUT expr tINTO reference 		{
+	| tPUT expr tINTO chunkexpr 		{
 		g_lingo->code1(LC::c_assign);
 		$$ = $expr; }
 	// {put the number of menuItems of} menu into <expr>
@@ -245,7 +251,7 @@ asgn: tPUT expr tINTO ID 		{
 		g_lingo->code1(LC::c_after);
 		$$ = $expr;
 		delete $ID; }		// D3
-	| tPUT expr tAFTER reference 		{
+	| tPUT expr tAFTER chunkexpr 		{
 		g_lingo->code1(LC::c_after);
 		$$ = $expr; }
 	| tPUT expr tBEFORE ID 		{
@@ -255,7 +261,7 @@ asgn: tPUT expr tINTO ID 		{
 		g_lingo->code1(LC::c_before);
 		$$ = $expr;
 		delete $ID; }		// D3
-	| tPUT expr tBEFORE reference 		{
+	| tPUT expr tBEFORE chunkexpr 		{
 		g_lingo->code1(LC::c_before);
 		$$ = $expr; }
 	| tSET ID tEQ expr			{
@@ -336,9 +342,7 @@ asgn: tPUT expr tINTO ID 		{
 		delete $THEOBJECTPROP.prop;
 		$$ = $expr; }
 
-stmtoneliner: macro
-	| funccall
-	| asgn
+stmtoneliner: asgn
 	| proc
 
 stmt: stmtoneliner
@@ -549,7 +553,11 @@ simpleexpr: INT		{
 		g_lingo->codeString($STRING->c_str());
 		delete $STRING; }
 	| ID		{
-		$$ = g_lingo->code1(LC::c_eval);
+		if (g_lingo->_builtinConsts.contains(*$ID)) {
+			$$ = g_lingo->code1(LC::c_constpush);
+		} else {
+			$$ = g_lingo->code1(LC::c_eval);
+		}
 		g_lingo->codeString($ID->c_str());
 		delete $ID; }
 	| THEENTITY	{
@@ -570,18 +578,8 @@ simpleexpr: INT		{
 	| list
 	| error	'\n'		{ yyerrok; }
 
-funccall: FBLTIN '(' arglist ')' {
-		g_lingo->codeFunc($FBLTIN, $arglist);
-		delete $FBLTIN; }
-	| FBLTIN arglist	{
-		g_lingo->codeFunc($FBLTIN, $arglist);
-		delete $FBLTIN; }
-	| RBLTIN '(' arglist ')' {
-		g_lingo->codeFunc($RBLTIN, $arglist);
-		delete $RBLTIN; }
-	| RBLTIN arglist	{
-		g_lingo->codeFunc($RBLTIN, $arglist);
-		delete $RBLTIN; }
+expr: simpleexpr { $$ = $simpleexpr; }
+	| reference
 	| ID[func] '(' ID[method] ')' {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString($method->c_str());
@@ -596,13 +594,12 @@ funccall: FBLTIN '(' arglist ')' {
 	| ID '(' arglist ')'	{
 		$$ = g_lingo->codeFunc($ID, $arglist);
 		delete $ID; }
-
-expr: simpleexpr { $$ = $simpleexpr; }
-	| chunkexpr
-	| funccall
-	| THEFBLTIN tOF simpleexpr	{
-		$$ = g_lingo->codeFunc($THEFBLTIN, 1);
-		delete $THEFBLTIN; }
+	| THEFUNCINOF simpleexpr	{
+		$$ = g_lingo->codeFunc($THEFUNCINOF, 1);
+		delete $THEFUNCINOF; }
+	| THEFUNC tOF simpleexpr	{
+		$$ = g_lingo->codeFunc($THEFUNC, 1);
+		delete $THEFUNC; }
 	| THEOBJECTPROP {
 		g_lingo->code1(LC::c_objectproppush);
 		g_lingo->codeString($THEOBJECTPROP.obj->c_str());
@@ -632,7 +629,18 @@ expr: simpleexpr { $$ = $simpleexpr; }
 	| tSPRITE expr tINTERSECTS expr { g_lingo->code1(LC::c_intersects); }
 	| tSPRITE expr tWITHIN expr		{ g_lingo->code1(LC::c_within); }
 
-chunkexpr: 	tCHAR expr tOF expr		{ g_lingo->code1(LC::c_charOf); }
+chunkexpr: 	FIELD				{
+		if ($FIELD.s) {
+			$$ = g_lingo->code1(LC::c_stringpush);
+			g_lingo->codeString($FIELD.s->c_str());
+			delete $FIELD.s;
+		} else {
+			$$ = g_lingo->code1(LC::c_intpush);
+			g_lingo->codeInt($FIELD.i);
+		}
+		Common::String field("field");
+		g_lingo->codeFunc(&field, 1); }
+	|  tCHAR expr tOF expr		{ g_lingo->code1(LC::c_charOf); }
 	| tCHAR expr tTO expr tOF expr	{ g_lingo->code1(LC::c_charToOf); }
 	| tITEM expr tOF expr			{ g_lingo->code1(LC::c_itemOf); }
 	| tITEM expr tTO expr tOF expr	{ g_lingo->code1(LC::c_itemToOf); }
@@ -641,10 +649,41 @@ chunkexpr: 	tCHAR expr tOF expr		{ g_lingo->code1(LC::c_charOf); }
 	| tWORD expr tOF expr			{ g_lingo->code1(LC::c_wordOf); }
 	| tWORD expr tTO expr tOF expr	{ g_lingo->code1(LC::c_wordToOf); }
 
-reference: 	RBLTIN simpleexpr	{
-		g_lingo->codeFunc($RBLTIN, 1);
-		delete $RBLTIN; }
-	| chunkexpr
+reference: 	chunkexpr
+	| CAST				{
+		if ($CAST.s) {
+			$$ = g_lingo->code1(LC::c_stringpush);
+			g_lingo->codeString($CAST.s->c_str());
+			delete $CAST.s;
+		} else {
+			$$ = g_lingo->code1(LC::c_intpush);
+			g_lingo->codeInt($CAST.i);
+		}
+		Common::String cast("cast");
+		g_lingo->codeFunc(&cast, 1); }
+	| SCRIPT			{
+		if ($SCRIPT.s) {
+			$$ = g_lingo->code1(LC::c_stringpush);
+			g_lingo->codeString($SCRIPT.s->c_str());
+			delete $SCRIPT.s;
+		} else {
+			$$ = g_lingo->code1(LC::c_intpush);
+			g_lingo->codeInt($SCRIPT.i);
+		}
+		Common::String script("script");
+		g_lingo->codeFunc(&script, 1); }
+	| WINDOW			{
+		if ($WINDOW.s) {
+			$$ = g_lingo->code1(LC::c_stringpush);
+			g_lingo->codeString($WINDOW.s->c_str());
+			delete $WINDOW.s;
+		} else {
+			$$ = g_lingo->code1(LC::c_intpush);
+			g_lingo->codeInt($WINDOW.i);
+		}
+		Common::String window("window");
+		g_lingo->codeFunc(&window, 1); }
+
 
 proc: tPUT expr					{ g_lingo->code1(LC::c_printtop); }
 	| gotofunc
@@ -661,20 +700,28 @@ proc: tPUT expr					{ g_lingo->code1(LC::c_printtop); }
 	| tGLOBAL					{ inArgs(); } globallist { inLast(); }
 	| tPROPERTY					{ inArgs(); } propertylist { inLast(); }
 	| tINSTANCE					{ inArgs(); } instancelist { inLast(); }
-	| BLTIN '(' arglist ')'		{
-		g_lingo->codeFunc($BLTIN, $arglist);
-		delete $BLTIN; }
-	| BLTIN arglist				{
-		g_lingo->codeFunc($BLTIN, $arglist);
-		delete $BLTIN; }
 	| tOPEN expr tWITH expr		{
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 2); }
 	| tOPEN expr 				{
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 1); }
-	| ID						{
-		g_lingo->codeFunc($ID, 0);
+	| ID[func] '(' ID[method] ')' {
+			g_lingo->code1(LC::c_lazyeval);
+			g_lingo->codeString($method->c_str());
+			g_lingo->codeCmd($func, 1);
+			delete $func;
+			delete $method; }
+	| ID[func] '(' ID[method] ',' { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString($method->c_str()); }
+				nonemptyarglist ')' {
+			g_lingo->codeCmd($func, $nonemptyarglist + 1);
+			delete $func;
+			delete $method; }
+	| ID '(' arglist ')'		{
+		g_lingo->codeCmd($ID, $arglist);
+		delete $ID; }
+	| ID arglist				{
+		g_lingo->codeCmd($ID, $arglist);
 		delete $ID; }
 
 globallist: ID					{
@@ -805,14 +852,6 @@ endargdef:	/* nothing */
 
 argstore:	  /* nothing */		{ inDef(); }
 
-macro: ID nonemptyarglist		{
-		g_lingo->code1(LC::c_call);
-		g_lingo->codeString($ID->c_str());
-		inst numpar = 0;
-		WRITE_UINT32(&numpar, $nonemptyarglist);
-		g_lingo->code1(numpar);
-		delete $ID; }
-
 arglist:  /* nothing */ 		{ $$ = 0; }
 	| expr						{ $$ = 1; }
 	| arglist ',' expr			{ $$ = $1 + 1; }
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 5f29c7ade2..b1089a3523 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -163,8 +163,27 @@ extern FILE *yyin, *yyout;
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
     
-    #define YY_LESS_LINENO(n)
-    #define YY_LINENO_REWIND_TO(ptr)
+    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
+     *       access to the local variable yy_act. Since yyless() is a macro, it would break
+     *       existing scanners that call yyless() from OUTSIDE yylex.
+     *       One obvious solution it to make yy_act a global. I tried that, and saw
+     *       a 5% performance hit in a non-yylineno scanner, because yy_act is
+     *       normally declared as a register variable-- so it is not worth it.
+     */
+    #define  YY_LESS_LINENO(n) \
+            do { \
+                int yyl;\
+                for ( yyl = n; yyl < yyleng; ++yyl )\
+                    if ( yytext[yyl] == '\n' )\
+                        --yylineno;\
+            }while(0)
+    #define YY_LINENO_REWIND_TO(dst) \
+            do {\
+                const char *p;\
+                for ( p = yy_cp-1; p >= (dst); --p)\
+                    if ( *p == '\n' )\
+                        --yylineno;\
+            }while(0)
     
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
@@ -332,14 +351,11 @@ FILE *yyin = NULL, *yyout = NULL;
 
 typedef int yy_state_type;
 
+#define YY_FLEX_LEX_COMPAT
 extern int yylineno;
 int yylineno = 1;
 
-extern char *yytext;
-#ifdef yytext_ptr
-#undef yytext_ptr
-#endif
-#define yytext_ptr yytext
+extern char yytext[];
 
 static yy_state_type yy_get_previous_state ( void );
 static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
@@ -354,9 +370,12 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 	yyleng = (int) (yy_cp - yy_bp); \
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
+	if ( yyleng >= YYLMAX ) \
+		YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \
+	yy_flex_strncpy( yytext, (yytext_ptr), yyleng + 1 ); \
 	(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 70
-#define YY_END_OF_BUFFER 71
+#define YY_NUM_RULES 78
+#define YY_END_OF_BUFFER 79
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -364,41 +383,45 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static const flex_int16_t yy_accept[300] =
+static const flex_int16_t yy_accept[337] =
     {   0,
-        0,    0,   71,   69,    1,   67,   67,   69,   69,   66,
-       66,   65,   66,   62,   66,   63,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
-       63,   63,    1,   63,    1,   67,    0,   68,    2,   61,
-       64,   65,   60,   58,   59,   63,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   63,   63,    9,   22,   63,
-       63,   63,   63,   63,   63,   63,   31,   32,   63,   34,
-       63,   63,   63,   63,   63,   63,   63,   63,   63,   51,
-       63,   63,   63,    1,    0,   63,    2,   64,   63,    4,
-       63,   63,   63,   63,   63,   12,   63,   63,   17,   63,
-
-       63,   63,   63,   63,   63,   27,   63,   63,   30,   63,
-       63,   63,   63,   40,   63,   42,   63,   63,   63,   63,
-       63,   63,   63,   63,    0,   63,   63,   63,    6,   63,
-        8,   11,    0,   14,   63,    0,    0,    0,   63,   63,
-       21,   23,   24,   63,   63,   63,   29,   33,   36,   63,
-       63,   63,   63,   63,   44,    0,   50,   55,   63,   53,
-       57,    0,   63,    3,   63,   63,    0,   12,   63,    0,
-        0,   17,   63,   63,   25,   63,   28,    0,   63,   63,
-       63,   63,   63,   63,   49,   49,   49,   56,   63,    0,
-       63,    5,   63,    0,   12,   15,    0,    0,    0,   63,
-
-       63,   63,    0,   63,   63,   63,   41,   52,   43,    0,
-       49,   49,   54,    0,   63,   63,   10,    0,   18,   63,
-       63,    0,    0,   63,   63,   63,    0,    0,    0,   49,
-       49,    0,   13,    7,   16,   19,   63,   26,    0,   63,
-       38,   39,    0,    0,    0,   49,   49,   13,   63,   26,
-        0,   37,    0,    0,    0,    0,   49,   20,   35,   48,
-       47,   48,    0,    0,    0,    0,   49,   47,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   48,   47,   47,   48,    0,   46,   47,   47,    0,
-       47,    0,   47,    0,    0,    0,    0,   45,    0
-
+        0,    0,   79,   77,    1,   75,   75,   77,   77,   74,
+       74,   73,   74,   70,   74,   71,   71,   71,   71,   71,
+       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
+       71,   71,   71,    1,   71,    1,   75,    0,   76,    2,
+       69,   72,   73,   68,   66,   67,   71,   71,   71,   71,
+       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
+       11,   26,   71,   71,   71,   71,   71,   71,   71,   35,
+       36,   71,   38,   71,   71,   71,   71,   71,   71,   71,
+       71,   71,   71,   57,   71,   71,   71,    1,    0,   71,
+        2,   72,   71,    4,   71,   71,   71,   71,   71,   71,
+
+       14,   71,   71,   71,   21,   71,   71,   71,   71,   71,
+       71,   31,   71,   71,   34,   71,   71,   71,   71,   44,
+       71,   71,   48,   71,   71,   71,   71,   71,   71,   71,
+       71,   71,    0,   71,   71,   71,   71,    8,   71,   10,
+       13,    0,   16,   71,   71,    0,    0,    0,   71,   71,
+       25,   27,   28,   71,   71,   71,   33,   37,   40,   71,
+       71,   71,   71,   71,   71,   50,    0,   56,   61,   71,
+       71,   59,   65,    0,   71,    3,   71,    0,   71,    0,
+       14,   71,   71,    0,    0,   21,   71,   71,   29,   71,
+       32,    0,   71,   71,   71,   71,   71,   71,   71,   55,
+
+       55,   55,   62,   71,   71,    0,   71,    5,    0,    7,
+       71,    0,   14,    0,   19,    0,    0,    0,   71,   71,
+       71,    0,   71,   71,   71,   45,   71,   58,   49,    0,
+       55,   55,   71,   60,    0,   71,    0,    6,   71,   12,
+        0,   18,    0,   22,   71,   71,    0,    0,   71,   71,
+       71,    0,    0,    0,    0,   55,   55,    0,    0,   15,
+        9,    0,   17,   20,   23,   71,   30,    0,   71,   42,
+       43,    0,   47,    0,    0,    0,   55,   55,    0,   64,
+       15,   71,   30,    0,   41,    0,   46,    0,    0,    0,
+        0,   55,    0,   63,   24,   39,   54,   53,   54,    0,
+
+        0,    0,    0,   55,   53,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   54,   53,
+       53,   54,    0,   52,   53,   53,    0,   53,    0,   53,
+        0,    0,    0,    0,   51,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -427,7 +450,7 @@ static const YY_CHAR yy_ec[256] =
 
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    2,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1
@@ -443,169 +466,186 @@ static const YY_CHAR yy_meta[60] =
         5,    5,    5,    5,    5,    5,    5,    5,    5
     } ;
 
-static const flex_int16_t yy_base[314] =
+static const flex_int16_t yy_base[355] =
     {   0,
-        0,   58,  595,  664,   59,  664,  664,  588,    0,  664,
-      584,   55,   54,  664,  579,   49,   51,   49,   45,   55,
-        0,   56,   65,   51,   91,   89,  106,   91,   68,  109,
-      103,  140,  162,   73,  166,  664,  583,  664,    0,  664,
-      577,   79,  664,  664,  664,    0,  105,  109,  109,  133,
-      128,  122,  142,  156,  152,  149,  584,    0,  153,  160,
-      154,  171,  158,  175,  156,  163,    0,    0,  178,    0,
-      186,  183,  173,  181,  182,  186,  204,  197,  201,    0,
-      204,  197,  200,  237,  209,  214,    0,  573,  216,    0,
-      210,  216,  217,  223,  217,  580,  222,  240,  259,  231,
-
-      239,  238,  246,  240,  246,    0,  248,  242,    0,  248,
-      239,  244,  254,    0,  266,    0,  265,  264,  271,  297,
-      275,  279,  283,  290,  293,  281,  285,  286,    0,  296,
-        0,  578,  575,    0,  303,  290,  293,  294,  311,  293,
-        0,    0,    0,  300,  302,  312,    0,    0,  334,  310,
-      321,  326,  316,  320,    0,  351,    0,    0,  337,  335,
-        0,  328,  333,    0,  343,  340,  356,    0,  341,  352,
-      341,  574,  343,  341,    0,  356,    0,  365,  364,  349,
-      358,  358,  375,  365,  546,  399,  394,    0,  379,  379,
-      378,    0,  383,  384,    0,    0,  386,  387,  412,  400,
-
-      401,  526,  392,  406,  392,  394,    0,    0,    0,  433,
-      431,  434,    0,  410,  406,  415,  664,  433,  664,  434,
-      437,  455,  440,  438,  428,  427,  452,  448,  447,  468,
-      470,  435,    0,    0,  664,    0,  442,    0,  454,  464,
-        0,    0,  458,  439,  467,  421,  495,  664,  465,    0,
-      482,    0,  483,  418,  485,  502,  503,    0,  664,  664,
-        0,  664,  263,  496,  504,  514,  191,    0,  518,  515,
-      186,  505,  540,  482,  495,  533,  539,  556,  507,  180,
-      173,  142,  495,  520,  140,  120,  110,   98,   83,   80,
-      560,  557,  563,  523,  535,   76,   72,   69,  664,  607,
-
-      609,  612,  615,  620,  625,  627,  632,  635,  640,  645,
-      647,  652,  657
+        0,   58,  661,  743,   59,  743,  743,  655,    0,  743,
+      651,   55,   54,  743,  645,   49,   51,   57,   46,   50,
+       48,   56,    0,   85,   59,   95,   73,   98,  106,   68,
+      124,  138,   98,  165,  148,   85,  743,  651,  743,    0,
+      743,  645,  122,  743,  743,  743,    0,  120,   73,   93,
+      124,  143,  146,  139,  146,  146,  157,  164,  162,  652,
+        0,  160,  167,  166,  177,  166,  183,  163,  171,    0,
+        0,  186,    0,  191,  192,  176,  190,  193,  192,  197,
+      197,  203,  213,    0,  214,  212,  211,  249,  219,  231,
+        0,  643,  230,    0,  217,  223,  229,  228,  236,  246,
+
+      650,  239,  249,  250,  267,  243,  257,  253,  258,  250,
+      259,    0,  265,  252,    0,  264,  258,  262,  275,    0,
+      287,  286,    0,  287,  283,  291,  314,  293,  296,  305,
+      302,  307,  309,  296,  299,  301,  648,    0,  317,    0,
+      647,  646,    0,  317,  322,  310,  314,  317,  323,  316,
+        0,    0,    0,  325,  327,  338,    0,    0,  355,  337,
+      347,  352,  343,  341,  342,    0,  374,    0,    0,  360,
+      347,  357,    0,  350,  355,    0,  366,  404,  364,  385,
+        0,  645,  364,  377,  372,  644,  375,  382,    0,  375,
+        0,  411,  401,  392,  391,  394,  395,  409,  399,  643,
+
+      426,  430,    0,  399,  408,  409,  408,    0,  639,  633,
+      412,  420,    0,  445,    0,  419,  417,  451,  442,  447,
+      640,  417,  450,  440,  442,    0,  639,    0,    0,  474,
+      469,  472,  635,    0,  446,  441,  631,  743,  449,  743,
+      630,  623,  462,  743,  465,  468,  630,  472,  469,  463,
+      467,  504,  474,  494,  495,  490,  516,  525,  483,    0,
+        0,  624,  743,  743,    0,  492,    0,  500,  505,    0,
+        0,  623,  611,  502,  617,  509,  598,  536,  568,  559,
+      743,  506,    0,  521,    0,  527,  743,  522,  479,  525,
+      543,  547,  473,  743,    0,  743,  743,    0,  743,  416,
+
+      548,  549,  559,  383,    0,  563,  556,  368,  564,  577,
+      546,  528,  573,  580,  578,  534,  235,  199,  169,  557,
+      579,  158,  144,  127,  119,  116,  586,  601,  612,  614,
+      591,  582,   80,   77,   70,  743,  662,  664,  667,  670,
+      675,  680,  682,  688,  694,  699,  702,  708,  714,  719,
+      724,  726,  731,  736
     } ;
 
-static const flex_int16_t yy_def[314] =
+static const flex_int16_t yy_def[355] =
     {   0,
-      299,    1,  299,  299,  299,  299,  299,  300,  301,  299,
-      299,  299,  299,  299,  299,  302,  302,  302,  302,  302,
-      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
-      302,  302,  299,  302,  299,  299,  300,  299,  303,  299,
-      299,  299,  299,  299,  299,  302,  302,  302,  302,  302,
-      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
-      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
-      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
-      302,  302,  302,  299,  299,  302,  303,  299,  302,  302,
-      302,  302,  302,  302,  302,  302,  302,  302,  299,  302,
-
-      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
-      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
-      302,  302,  302,  302,  299,  302,  302,  302,  302,  302,
-      302,  302,  304,  302,  302,  299,  299,  299,  302,  302,
-      302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
-      302,  302,  302,  302,  302,  305,  302,  302,  302,  302,
-      302,  299,  302,  302,  302,  302,  299,  306,  302,  299,
-      299,  299,  302,  302,  302,  302,  302,  299,  302,  302,
-      302,  302,  302,  302,  305,  305,  305,  302,  302,  299,
-      302,  302,  302,  299,  306,  302,  299,  299,  299,  302,
-
-      302,  302,  299,  302,  302,  302,  302,  302,  302,  299,
-      305,  305,  302,  299,  302,  302,  299,  299,  299,  302,
-      302,  307,  299,  302,  302,  302,  299,  299,  299,  305,
-      305,  299,  302,  302,  299,  302,  302,  308,  299,  302,
-      302,  302,  299,  299,  299,  305,  305,  299,  302,  308,
-      299,  302,  299,  309,  299,  310,  305,  302,  299,  299,
-      311,  299,  310,  310,  310,  310,  305,  311,  299,  310,
-      310,  310,  299,  299,  299,  310,  309,  310,  299,  299,
-      299,  310,  311,  311,  310,  299,  299,  311,  311,  312,
-      313,  299,  313,  299,  299,  299,  299,  299,    0,  299,
-
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299
+      336,    1,  336,  336,  336,  336,  336,  337,  338,  336,
+      336,  336,  336,  336,  336,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  336,  339,  336,  336,  337,  336,  340,
+      336,  336,  336,  336,  336,  336,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  336,  336,  339,
+      340,  336,  339,  339,  339,  339,  339,  339,  339,  339,
+
+      339,  339,  339,  339,  336,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  336,  339,  339,  339,  339,  339,  339,  339,
+      339,  341,  339,  339,  339,  336,  336,  336,  339,  339,
+      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
+      339,  339,  339,  339,  339,  339,  342,  339,  339,  339,
+      339,  339,  339,  336,  339,  339,  339,  336,  339,  336,
+      343,  339,  339,  336,  336,  336,  339,  339,  339,  339,
+      339,  336,  339,  339,  339,  339,  339,  339,  339,  342,
+
+      342,  342,  339,  339,  339,  336,  339,  339,  344,  336,
+      339,  336,  343,  336,  339,  336,  336,  336,  339,  339,
+      339,  336,  339,  339,  339,  339,  339,  339,  339,  336,
+      342,  342,  339,  339,  336,  339,  344,  336,  339,  336,
+      345,  336,  336,  336,  339,  339,  346,  336,  339,  339,
+      339,  336,  336,  336,  336,  342,  342,  336,  336,  339,
+      339,  345,  336,  336,  339,  339,  347,  336,  339,  339,
+      339,  348,  336,  336,  336,  336,  342,  342,  349,  336,
+      336,  339,  347,  336,  339,  348,  336,  336,  350,  336,
+      351,  342,  349,  336,  339,  336,  336,  352,  336,  351,
+
+      351,  351,  351,  342,  352,  336,  351,  351,  351,  336,
+      336,  336,  351,  350,  351,  336,  336,  336,  351,  352,
+      352,  351,  336,  336,  352,  352,  353,  354,  336,  354,
+      336,  336,  336,  336,  336,    0,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336
     } ;
 
-static const flex_int16_t yy_nxt[724] =
+static const flex_int16_t yy_nxt[803] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,    4,   12,
        13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
-       21,   23,   21,   24,   25,   26,   27,   28,   29,   30,
-       31,   21,   21,   32,   21,   21,   21,   16,   17,   18,
-       19,   20,   21,   22,   21,   23,   24,   25,   26,   27,
-       28,   29,   30,   31,   21,   21,   32,   21,   21,   33,
-       35,   36,   36,   41,   42,   43,   44,   47,   49,   50,
-      298,   52,   61,  298,   48,   51,   34,  298,   53,   56,
-       54,  290,   57,   58,  287,   74,   86,   41,   42,   55,
-       59,   47,   49,   50,   52,   60,   61,   48,   51,  287,
-
-       34,   53,   56,   54,   62,   57,   65,   58,   63,   74,
-       86,  287,   55,   59,   71,   66,  261,   64,   60,   72,
-       78,  290,   73,   79,   67,   90,   75,   91,   62,   80,
-       65,   68,   63,   69,   70,   89,   76,   71,   66,   77,
-       64,  269,   72,  269,   78,   73,   92,   79,   67,   90,
-       75,   91,   80,   93,   68,   94,   69,   70,   89,   76,
-       81,   82,   77,   84,   36,   36,   83,   35,   36,   36,
-       92,   95,   96,   97,  287,   98,   93,  102,   94,  103,
-       85,  287,  100,  101,   81,   82,  104,  277,  105,   83,
-      108,  106,  273,  109,   95,  110,   96,   97,   98,  111,
-
-      112,  102,  103,  114,   85,  100,  101,  107,  115,  113,
-      104,  105,  116,  108,  117,  106,  109,  118,  120,  110,
-      119,  121,  125,  111,  112,  122,  114,  123,  124,  126,
-      107,  115,  113,  127,  132,  116,  128,  117,   84,   36,
-       36,  118,  120,  119,  129,  121,  125,  130,  131,  122,
-      123,  124,  134,  126,  135,   85,  140,  127,  132,  128,
-       99,  139,  142,  143,  269,  141,  145,  129,  144,  146,
-      130,  131,  147,  148,  149,  134,  150,  136,  135,   85,
-      140,  151,  137,  152,  139,  142,  153,  143,  141,  138,
-      145,  144,  154,  146,  155,  147,  148,  149,  156,  150,
-
-      158,  136,  159,  160,  151,  137,  161,  152,  162,  166,
-      153,  163,  138,  164,  165,  154,  169,  155,  170,  171,
-      172,  174,  157,  158,  173,  159,  175,  160,  176,  177,
-      161,  180,  162,  166,  163,  178,  164,  165,  181,  182,
-      169,  170,  171,  172,  174,  157,  183,  179,  173,  175,
-      184,  176,  156,  177,  188,  180,  189,  167,  190,  191,
-      192,  193,  181,  182,  196,  197,  178,  198,  200,  183,
-      201,  179,  202,  184,  186,  205,  187,  194,  188,  204,
-      189,  190,  191,  203,  192,  193,  206,  196,  207,  197,
-      198,  200,  208,  201,  209,  210,  202,  186,  205,  187,
-
-      210,  194,  217,  204,  213,  214,  215,  203,  216,  206,
-      218,  207,  211,  199,  219,  220,  208,  209,  221,  254,
-      223,  224,  256,  225,  226,  212,  217,  213,  214,  215,
-      136,  216,  210,  218,  210,  210,  211,  219,  232,  220,
-      254,  233,  221,  223,  234,  224,  225,  226,  212,  227,
-      235,  236,  237,  239,  136,  240,  222,  241,  231,  228,
-      230,  232,  242,  229,  233,  243,  244,  234,  245,  210,
-      248,  210,  249,  227,  235,  236,  237,  239,  251,  240,
-      241,  231,  228,  230,  247,  242,  229,  252,  253,  243,
-      244,  255,  245,  248,  258,  249,  210,  269,  246,  259,
-
-      260,  251,  262,  256,  210,  269,  269,  280,  247,  270,
-      252,  253,  257,  281,  255,  269,  269,  258,  264,  269,
-      288,  246,  271,  259,  260,  286,  262,  222,  265,  278,
-      280,  267,  266,  270,  269,  272,  257,  281,  289,  274,
-      277,  273,  264,  288,  275,  276,  271,  210,  296,  286,
-      282,  265,  278,  297,  267,  266,  227,  269,  292,  272,
-      283,  292,  289,  274,  292,  284,  279,  275,  276,  268,
-      229,  296,  268,  285,  282,  199,  133,  297,  294,  167,
-      227,  133,   88,  295,  283,   99,   88,   38,  284,  279,
-       45,   40,   38,  229,  299,  299,  268,  285,  299,  268,
-
-      299,  299,  294,  299,  299,  299,  295,   37,   37,  299,
-       37,   37,   37,   39,   39,   46,   46,   46,   87,   87,
-       87,  168,  299,  299,  168,  168,  185,  299,  299,  185,
-      195,  195,  195,  238,  299,  299,  238,  238,  250,  250,
-      250,  261,  299,  299,  261,  261,  263,  299,  299,  263,
-      268,  268,  268,  291,  299,  299,  291,  291,  293,  299,
-      293,  293,  293,    3,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299
+       23,   24,   23,   25,   26,   27,   28,   29,   30,   31,
+       32,   23,   23,   33,   23,   23,   23,   16,   17,   18,
+       19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
+       29,   30,   31,   32,   23,   23,   33,   23,   23,   34,
+       36,   37,   37,   42,   43,   44,   45,   48,   50,   58,
+       51,  335,   54,   55,   49,   56,   35,   52,  335,   59,
+       64,  335,   60,   53,   57,   77,   36,   37,   37,   94,
+       68,   48,   50,   58,   51,   54,   55,   49,   56,   69,
+
+       35,   52,   59,   61,   64,   60,   53,   57,   65,   77,
+       62,   95,   66,   94,   68,   63,   70,  324,   85,   86,
+      324,   67,   69,   71,   87,   72,   73,   61,  324,   74,
+       42,   43,   65,   62,   75,   95,   66,   76,   63,   78,
+       70,   79,   85,   86,   67,  327,   71,   87,   72,   73,
+       93,   80,   74,   96,   81,   82,   97,   75,   83,  306,
+       76,   90,  101,   78,   84,   79,   88,   37,   37,   58,
+      306,   98,   99,   93,   80,  100,   96,   81,  102,   82,
+       97,  103,   83,   89,  108,   90,  101,   84,  104,  106,
+      107,  109,  110,   58,   98,   99,  111,  114,  100,  112,
+
+      324,  115,  102,  116,  117,  103,  120,   89,  108,  118,
+      125,  104,  106,  107,  109,  113,  110,  121,  119,  111,
+      114,  122,  123,  112,  115,  124,  126,  116,  117,  120,
+      127,  128,  133,  118,  125,  129,  324,  130,  113,  132,
+      121,  119,  131,  136,  122,  123,  134,  135,  124,  126,
+       88,   37,   37,  137,  127,  128,  133,  138,  139,  129,
+      130,  140,  132,  141,  145,  131,  136,   89,  105,  143,
+      134,  135,  144,  149,  150,  153,  137,  152,  154,  155,
+      138,  139,  157,  151,  140,  146,  156,  141,  145,  158,
+      147,   89,  143,  159,  160,  144,  149,  148,  150,  153,
+
+      152,  154,  161,  155,  162,  157,  151,  163,  164,  146,
+      156,  165,  158,  147,  166,  167,  159,  160,  169,  170,
+      148,  171,  172,  173,  174,  161,  175,  176,  162,  177,
+      179,  163,  164,  182,  165,  183,  187,  166,  184,  168,
+      185,  169,  170,  186,  188,  171,  172,  173,  174,  175,
+      176,  189,  177,  190,  179,  191,  192,  182,  194,  183,
+      187,  184,  168,  185,  195,  196,  186,  188,  193,  314,
+      197,  198,  199,  204,  189,  167,  190,  203,  205,  191,
+      206,  207,  194,  208,  310,  211,  180,  215,  195,  196,
+      216,  221,  193,  197,  198,  199,  204,  201,  217,  202,
+
+      219,  203,  205,  206,  207,  178,  212,  208,  209,  211,
+      215,  220,  192,  210,  216,  221,  223,  306,  224,  225,
+      201,  217,  202,  219,  226,  227,  228,  230,  229,  222,
+      212,  230,  233,  234,  220,  235,  236,  239,  240,  231,
+      223,  224,  225,  243,  244,  248,  214,  226,  227,  241,
+      228,  229,  218,  222,  242,  233,  234,  245,  235,  236,
+      239,  232,  240,  231,  246,  249,  243,  244,  248,  146,
+      230,  250,  251,  230,  259,  230,  260,  294,  261,  264,
+      289,  245,  265,  266,  232,  268,  269,  274,  246,  249,
+      253,  230,  270,  146,  250,  251,  257,  259,  256,  260,
+
+      254,  261,  271,  264,  255,  252,  265,  266,  272,  268,
+      269,  274,  275,  273,  253,  270,  276,  230,  281,  257,
+      277,  256,  282,  254,  284,  271,  258,  255,  285,  279,
+      278,  287,  288,  290,  280,  295,  275,  230,  296,  297,
+      276,  281,  299,  277,  291,  282,  318,  284,  230,  306,
+      306,  285,  323,  292,  278,  288,  290,  306,  295,  301,
+      306,  307,  296,  297,  306,  306,  299,  308,  280,  302,
+      318,  317,  294,  303,  306,  304,  323,  292,  310,  306,
+      309,  314,  325,  301,  311,  307,  313,  327,  315,  312,
+      319,  308,  302,  253,  317,  322,  303,  326,  304,  291,
+
+      334,  320,  329,  316,  309,  325,  321,  255,  311,  313,
+      305,  315,  312,  329,  319,  329,  333,  253,  289,  322,
+      273,  326,  298,  305,  334,  320,  316,  287,  263,  321,
+      255,  247,  242,  331,  263,  238,  258,  305,  332,  333,
+      252,  247,  210,  238,  230,  218,  214,  142,  180,  178,
+      305,  142,   92,  105,   92,   39,   46,  331,   41,   39,
+      336,  332,   38,   38,  336,   38,   38,   38,   40,   40,
+       47,   47,   47,   91,   91,   91,  181,  336,  336,  181,
+      181,  200,  336,  336,  200,  213,  213,  213,  237,  237,
+      336,  237,  237,  237,  262,  262,  336,  262,  262,  262,
+
+      267,  336,  336,  267,  267,  283,  283,  283,  286,  286,
+      336,  286,  286,  286,  293,  293,  336,  293,  293,  293,
+      298,  336,  336,  298,  298,  300,  336,  336,  300,  305,
+      305,  305,  328,  336,  336,  328,  328,  330,  336,  330,
+      330,  330,    3,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+
+      336,  336
     } ;
 
-static const flex_int16_t yy_chk[724] =
+static const flex_int16_t yy_chk[803] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -613,82 +653,99 @@ static const flex_int16_t yy_chk[724] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
-        5,    5,    5,   12,   12,   13,   13,   16,   17,   18,
-      298,   19,   24,  297,   16,   18,    2,  296,   20,   22,
-       20,  290,   22,   23,  289,   29,   34,   42,   42,   20,
-       23,   16,   17,   18,   19,   23,   24,   16,   18,  288,
-
-        2,   20,   22,   20,   25,   22,   26,   23,   25,   29,
-       34,  287,   20,   23,   28,   26,  290,   25,   23,   28,
-       31,  286,   28,   31,   27,   48,   30,   49,   25,   31,
-       26,   27,   25,   27,   27,   47,   30,   28,   26,   30,
-       25,  285,   28,  282,   31,   28,   50,   31,   27,   48,
-       30,   49,   31,   51,   27,   52,   27,   27,   47,   30,
-       32,   32,   30,   33,   33,   33,   32,   35,   35,   35,
-       50,   53,   54,   55,  281,   56,   51,   60,   52,   61,
-       33,  280,   59,   59,   32,   32,   62,  271,   63,   32,
-       65,   64,  267,   66,   53,   69,   54,   55,   56,   71,
-
-       72,   60,   61,   73,   33,   59,   59,   64,   74,   72,
-       62,   63,   75,   65,   76,   64,   66,   77,   79,   69,
-       78,   81,   85,   71,   72,   81,   73,   82,   83,   86,
-       64,   74,   72,   89,   95,   75,   91,   76,   84,   84,
-       84,   77,   79,   78,   92,   81,   85,   93,   94,   81,
-       82,   83,   97,   86,   98,   84,  101,   89,   95,   91,
-       99,  100,  102,  103,  263,  101,  105,   92,  104,  107,
-       93,   94,  108,  110,  111,   97,  112,   99,   98,   84,
-      101,  113,   99,  115,  100,  102,  117,  103,  101,   99,
-      105,  104,  118,  107,  119,  108,  110,  111,  120,  112,
-
-      121,   99,  122,  123,  113,   99,  124,  115,  125,  130,
-      117,  126,   99,  127,  128,  118,  135,  119,  136,  137,
-      138,  140,  120,  121,  139,  122,  144,  123,  145,  146,
-      124,  150,  125,  130,  126,  149,  127,  128,  151,  152,
-      135,  136,  137,  138,  140,  120,  153,  149,  139,  144,
-      154,  145,  156,  146,  159,  150,  160,  167,  162,  163,
-      165,  166,  151,  152,  169,  170,  178,  171,  173,  153,
-      174,  149,  176,  154,  156,  180,  156,  167,  159,  179,
-      160,  162,  163,  178,  165,  166,  181,  169,  182,  170,
-      171,  173,  183,  174,  184,  187,  176,  156,  180,  156,
-
-      186,  167,  194,  179,  189,  190,  191,  178,  193,  181,
-      197,  182,  186,  199,  198,  200,  183,  184,  201,  254,
-      203,  204,  246,  205,  206,  187,  194,  189,  190,  191,
-      199,  193,  211,  197,  210,  212,  186,  198,  214,  200,
-      244,  215,  201,  203,  216,  204,  205,  206,  187,  210,
-      218,  220,  221,  223,  199,  224,  222,  225,  212,  210,
-      211,  214,  226,  210,  215,  227,  228,  216,  229,  230,
-      232,  231,  237,  210,  218,  220,  221,  223,  239,  224,
-      225,  212,  210,  211,  231,  226,  210,  240,  243,  227,
-      228,  245,  229,  232,  249,  237,  247,  264,  230,  251,
-
-      253,  239,  255,  256,  257,  265,  272,  274,  231,  264,
-      240,  243,  247,  275,  245,  266,  270,  249,  256,  269,
-      283,  230,  265,  251,  253,  279,  255,  202,  256,  272,
-      274,  257,  256,  264,  276,  266,  247,  275,  284,  269,
-      277,  273,  256,  283,  269,  270,  265,  185,  294,  279,
-      276,  256,  272,  295,  257,  256,  273,  278,  292,  266,
-      277,  291,  284,  269,  293,  277,  273,  269,  270,  291,
-      273,  294,  293,  278,  276,  172,  133,  295,  292,  132,
-      273,   96,   88,  292,  277,   57,   41,   37,  277,  273,
-       15,   11,    8,  273,    3,    0,  291,  278,    0,  293,
-
-        0,    0,  292,    0,    0,    0,  292,  300,  300,    0,
-      300,  300,  300,  301,  301,  302,  302,  302,  303,  303,
-      303,  304,    0,    0,  304,  304,  305,    0,    0,  305,
-      306,  306,  306,  307,    0,    0,  307,  307,  308,  308,
-      308,  309,    0,    0,  309,  309,  310,    0,    0,  310,
-      311,  311,  311,  312,    0,    0,  312,  312,  313,    0,
-      313,  313,  313,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299,  299,  299,  299,  299,  299,  299,  299,
-      299,  299,  299
+        5,    5,    5,   12,   12,   13,   13,   16,   17,   21,
+       18,  335,   19,   20,   16,   20,    2,   18,  334,   22,
+       25,  333,   22,   18,   20,   30,   36,   36,   36,   49,
+       27,   16,   17,   21,   18,   19,   20,   16,   20,   27,
+
+        2,   18,   22,   24,   25,   22,   18,   20,   26,   30,
+       24,   50,   26,   49,   27,   24,   28,  326,   33,   33,
+      325,   26,   27,   28,   33,   28,   28,   24,  324,   29,
+       43,   43,   26,   24,   29,   50,   26,   29,   24,   31,
+       28,   31,   33,   33,   26,  323,   28,   33,   28,   28,
+       48,   31,   29,   51,   31,   32,   52,   29,   32,  322,
+       29,   35,   56,   31,   32,   31,   34,   34,   34,   35,
+      319,   53,   54,   48,   31,   55,   51,   31,   57,   32,
+       52,   58,   32,   34,   63,   35,   56,   32,   59,   62,
+       62,   64,   65,   35,   53,   54,   66,   68,   55,   67,
+
+      318,   69,   57,   72,   74,   58,   76,   34,   63,   75,
+       81,   59,   62,   62,   64,   67,   65,   77,   75,   66,
+       68,   78,   79,   67,   69,   80,   82,   72,   74,   76,
+       83,   85,   89,   75,   81,   85,  317,   86,   67,   87,
+       77,   75,   86,   95,   78,   79,   90,   93,   80,   82,
+       88,   88,   88,   96,   83,   85,   89,   97,   98,   85,
+       86,   99,   87,  100,  104,   86,   95,   88,  105,  102,
+       90,   93,  103,  106,  107,  109,   96,  108,  110,  111,
+       97,   98,  114,  107,   99,  105,  113,  100,  104,  116,
+      105,   88,  102,  117,  118,  103,  106,  105,  107,  109,
+
+      108,  110,  119,  111,  121,  114,  107,  122,  124,  105,
+      113,  125,  116,  105,  126,  127,  117,  118,  128,  129,
+      105,  130,  131,  132,  133,  119,  134,  135,  121,  136,
+      139,  122,  124,  144,  125,  145,  149,  126,  146,  127,
+      147,  128,  129,  148,  150,  130,  131,  132,  133,  134,
+      135,  154,  136,  155,  139,  156,  159,  144,  160,  145,
+      149,  146,  127,  147,  161,  162,  148,  150,  159,  308,
+      163,  164,  165,  171,  154,  167,  155,  170,  172,  156,
+      174,  175,  160,  177,  304,  179,  180,  183,  161,  162,
+      184,  190,  159,  163,  164,  165,  171,  167,  185,  167,
+
+      187,  170,  172,  174,  175,  178,  180,  177,  178,  179,
+      183,  188,  192,  178,  184,  190,  193,  300,  194,  195,
+      167,  185,  167,  187,  196,  197,  198,  201,  199,  192,
+      180,  202,  204,  205,  188,  206,  207,  211,  212,  201,
+      193,  194,  195,  216,  217,  222,  214,  196,  197,  214,
+      198,  199,  218,  192,  214,  204,  205,  219,  206,  207,
+      211,  202,  212,  201,  220,  223,  216,  217,  222,  218,
+      231,  224,  225,  232,  235,  230,  236,  293,  239,  243,
+      289,  219,  245,  246,  202,  248,  249,  253,  220,  223,
+      230,  256,  250,  218,  224,  225,  232,  235,  231,  236,
+
+      230,  239,  251,  243,  230,  252,  245,  246,  252,  248,
+      249,  253,  254,  252,  230,  250,  255,  257,  259,  232,
+      256,  231,  266,  230,  268,  251,  258,  230,  269,  258,
+      257,  286,  274,  276,  258,  282,  254,  278,  284,  288,
+      255,  259,  290,  256,  291,  266,  312,  268,  292,  301,
+      302,  269,  316,  278,  257,  274,  276,  307,  282,  291,
+      303,  301,  284,  288,  306,  309,  290,  302,  280,  291,
+      312,  311,  279,  291,  313,  292,  316,  278,  310,  315,
+      303,  314,  320,  291,  306,  301,  307,  327,  309,  306,
+      313,  302,  291,  310,  311,  315,  291,  321,  292,  277,
+
+      332,  314,  328,  310,  303,  320,  314,  310,  306,  307,
+      328,  309,  306,  329,  313,  330,  331,  310,  275,  315,
+      273,  321,  327,  330,  332,  314,  310,  272,  262,  314,
+      310,  247,  242,  329,  241,  237,  233,  328,  329,  331,
+      227,  221,  210,  209,  200,  186,  182,  142,  141,  137,
+      330,  101,   92,   60,   42,   38,   15,  329,   11,    8,
+        3,  329,  337,  337,    0,  337,  337,  337,  338,  338,
+      339,  339,  339,  340,  340,  340,  341,    0,    0,  341,
+      341,  342,    0,    0,  342,  343,  343,  343,  344,  344,
+        0,  344,  344,  344,  345,  345,    0,  345,  345,  345,
+
+      346,    0,    0,  346,  346,  347,  347,  347,  348,  348,
+        0,  348,  348,  348,  349,  349,    0,  349,  349,  349,
+      350,    0,    0,  350,  350,  351,    0,    0,  351,  352,
+      352,  352,  353,    0,    0,  353,  353,  354,    0,  354,
+      354,  354,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
+
+      336,  336
     } ;
 
+/* Table of booleans, true if rule could match eol. */
+static const flex_int32_t yy_rule_can_match_eol[79] =
+    {   0,
+0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,     };
+
 static yy_state_type yy_last_accepting_state;
 static char *yy_last_accepting_cpos;
 
@@ -702,7 +759,12 @@ int yy_flex_debug = 0;
 #define yymore() yymore_used_but_not_detected
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
+#ifndef YYLMAX
+#define YYLMAX 8192
+#endif
+
+char yytext[YYLMAX];
+char *yytext_ptr;
 #line 1 "engines/director/lingo/lingo-lex.l"
 /* ScummVM - Graphic Adventure Engine
  *
@@ -796,8 +858,8 @@ static int varCheck(int token, const char *name) {
 	return token;
 }
 
-#line 799 "engines/director/lingo/lingo-lex.cpp"
-#line 800 "engines/director/lingo/lingo-lex.cpp"
+#line 861 "engines/director/lingo/lingo-lex.cpp"
+#line 862 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -1020,7 +1082,7 @@ YY_DECL
 #line 110 "engines/director/lingo/lingo-lex.l"
 
 
-#line 1023 "engines/director/lingo/lingo-lex.cpp"
+#line 1085 "engines/director/lingo/lingo-lex.cpp"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -1048,13 +1110,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 300 )
+				if ( yy_current_state >= 337 )
 					yy_c = yy_meta[yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 299 );
+		while ( yy_current_state != 336 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1063,6 +1125,16 @@ yy_find_action:
 
 		YY_DO_BEFORE_ACTION;
 
+		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
+			{
+			int yyl;
+			for ( yyl = 0; yyl < yyleng; ++yyl )
+				if ( yytext[yyl] == '\n' )
+					
+    yylineno++;
+;
+			}
+
 do_action:	/* This label is used only to access EOF actions. */
 
 		switch ( yy_act )
@@ -1102,36 +1174,66 @@ YY_RULE_SETUP
 case 6:
 YY_RULE_SETUP
 #line 119 "engines/director/lingo/lingo-lex.l"
-{ count(); return varCheck(tCHAR, "char"); }		// D3
+{
+		count();
+
+		const char *ptr = &yytext[5]; // Skip 'cast '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = cleanupString(ptr + 1);
+		yylval.s->deleteLastChar();
+		return CAST;
+	}
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 120 "engines/director/lingo/lingo-lex.l"
-{ count(); return varCheck(tCONTAINS, "contains"); }
+#line 130 "engines/director/lingo/lingo-lex.l"
+{
+		count();
+
+		const char *ptr = &yytext[5]; // Skip 'cast '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = NULL;
+		yylval.i = strtol(yytext, NULL, 10);
+		return CAST;
+	}
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 121 "engines/director/lingo/lingo-lex.l"
-{ count(); return varCheck(tDOWN, "down"); }
+#line 141 "engines/director/lingo/lingo-lex.l"
+{ count(); return varCheck(tCHAR, "char"); }		// D3
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 122 "engines/director/lingo/lingo-lex.l"
-{ count(); return tIF; }
+#line 142 "engines/director/lingo/lingo-lex.l"
+{ count(); return varCheck(tCONTAINS, "contains"); }
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 123 "engines/director/lingo/lingo-lex.l"
-{ count(); return tELSIF; }
+#line 143 "engines/director/lingo/lingo-lex.l"
+{ count(); return varCheck(tDOWN, "down"); }
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 124 "engines/director/lingo/lingo-lex.l"
-{ count(); return tELSE; }
+#line 144 "engines/director/lingo/lingo-lex.l"
+{ count(); return tIF; }
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 125 "engines/director/lingo/lingo-lex.l"
+#line 145 "engines/director/lingo/lingo-lex.l"
+{ count(); return tELSIF; }
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 146 "engines/director/lingo/lingo-lex.l"
+{ count(); return tELSE; }
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 147 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1156,74 +1258,104 @@ YY_RULE_SETUP
 		return ENDCLAUSE;
 	}
 	YY_BREAK
-case 13:
+case 15:
 YY_RULE_SETUP
-#line 148 "engines/director/lingo/lingo-lex.l"
+#line 170 "engines/director/lingo/lingo-lex.l"
 { count(); return tFACTORY; }
 	YY_BREAK
-case 14:
+case 16:
 YY_RULE_SETUP
-#line 149 "engines/director/lingo/lingo-lex.l"
+#line 171 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tEXIT, "exit"); }
 	YY_BREAK
-case 15:
+case 17:
 YY_RULE_SETUP
-#line 150 "engines/director/lingo/lingo-lex.l"
+#line 172 "engines/director/lingo/lingo-lex.l"
+{
+		count();
+
+		const char *ptr = &yytext[6]; // Skip 'field '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = cleanupString(ptr + 1);
+		yylval.s->deleteLastChar();
+		return FIELD;
+	}
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 183 "engines/director/lingo/lingo-lex.l"
+{
+		count();
+
+		const char *ptr = &yytext[6]; // Skip 'field '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = NULL;
+		yylval.i = strtol(yytext, NULL, 10);
+		return FIELD;
+	}
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 194 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tGLOBAL, "global"); }
 	YY_BREAK
-case 16:
+case 20:
 YY_RULE_SETUP
-#line 151 "engines/director/lingo/lingo-lex.l"
+#line 195 "engines/director/lingo/lingo-lex.l"
 { count(); return tGO; }
 	YY_BREAK
-case 17:
+case 21:
 YY_RULE_SETUP
-#line 152 "engines/director/lingo/lingo-lex.l"
+#line 196 "engines/director/lingo/lingo-lex.l"
 { count(); return tGO; }
 	YY_BREAK
-case 18:
+case 22:
 YY_RULE_SETUP
-#line 153 "engines/director/lingo/lingo-lex.l"
+#line 197 "engines/director/lingo/lingo-lex.l"
 { count(); return tGOLOOP; }
 	YY_BREAK
-case 19:
+case 23:
 YY_RULE_SETUP
-#line 154 "engines/director/lingo/lingo-lex.l"
+#line 198 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tINSTANCE, "instance"); }
 	YY_BREAK
-case 20:
+case 24:
 YY_RULE_SETUP
-#line 155 "engines/director/lingo/lingo-lex.l"
+#line 199 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tINTERSECTS, "intersects"); }
 	YY_BREAK
-case 21:
+case 25:
 YY_RULE_SETUP
-#line 156 "engines/director/lingo/lingo-lex.l"
+#line 200 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tINTO, "into"); }
 	YY_BREAK
-case 22:
+case 26:
 YY_RULE_SETUP
-#line 157 "engines/director/lingo/lingo-lex.l"
+#line 201 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tIN, "in"); }
 	YY_BREAK
-case 23:
+case 27:
 YY_RULE_SETUP
-#line 158 "engines/director/lingo/lingo-lex.l"
+#line 202 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tITEM, "item"); }
 	YY_BREAK
-case 24:
+case 28:
 YY_RULE_SETUP
-#line 159 "engines/director/lingo/lingo-lex.l"
+#line 203 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tLINE, "line"); }
 	YY_BREAK
-case 25:
+case 29:
 YY_RULE_SETUP
-#line 160 "engines/director/lingo/lingo-lex.l"
+#line 204 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tMACRO, "macro"); }
 	YY_BREAK
-case 26:
+case 30:
 YY_RULE_SETUP
-#line 161 "engines/director/lingo/lingo-lex.l"
+#line 205 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1236,99 +1368,129 @@ YY_RULE_SETUP
 		return tMETHOD;
 	}
 	YY_BREAK
-case 27:
+case 31:
 YY_RULE_SETUP
-#line 172 "engines/director/lingo/lingo-lex.l"
+#line 216 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tMOD, "mod"); }
 	YY_BREAK
-case 28:
+case 32:
 YY_RULE_SETUP
-#line 173 "engines/director/lingo/lingo-lex.l"
+#line 217 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tMOVIE, "movie"); }
 	YY_BREAK
-case 29:
+case 33:
 YY_RULE_SETUP
-#line 174 "engines/director/lingo/lingo-lex.l"
+#line 218 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tNEXT, "next"); }
 	YY_BREAK
-case 30:
+case 34:
 YY_RULE_SETUP
-#line 175 "engines/director/lingo/lingo-lex.l"
+#line 219 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tNOT, "not"); }
 	YY_BREAK
-case 31:
+case 35:
 YY_RULE_SETUP
-#line 176 "engines/director/lingo/lingo-lex.l"
+#line 220 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tOF, "of"); }
 	YY_BREAK
-case 32:
+case 36:
 YY_RULE_SETUP
-#line 177 "engines/director/lingo/lingo-lex.l"
+#line 221 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tON, "on"); }		// D3
 	YY_BREAK
-case 33:
+case 37:
 YY_RULE_SETUP
-#line 178 "engines/director/lingo/lingo-lex.l"
+#line 222 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tOPEN, "open"); }
 	YY_BREAK
-case 34:
+case 38:
 YY_RULE_SETUP
-#line 179 "engines/director/lingo/lingo-lex.l"
+#line 223 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tOR, "or"); }
 	YY_BREAK
-case 35:
+case 39:
 YY_RULE_SETUP
-#line 180 "engines/director/lingo/lingo-lex.l"
+#line 224 "engines/director/lingo/lingo-lex.l"
 { count(); return tPLAY; }
 	YY_BREAK
-case 36:
+case 40:
 YY_RULE_SETUP
-#line 181 "engines/director/lingo/lingo-lex.l"
+#line 225 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tPLAY, "play"); }
 	YY_BREAK
-case 37:
+case 41:
 YY_RULE_SETUP
-#line 182 "engines/director/lingo/lingo-lex.l"
+#line 226 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
 	YY_BREAK
-case 38:
+case 42:
 YY_RULE_SETUP
-#line 183 "engines/director/lingo/lingo-lex.l"
+#line 227 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tPREVIOUS, "previous"); }
 	YY_BREAK
-case 39:
+case 43:
 YY_RULE_SETUP
-#line 184 "engines/director/lingo/lingo-lex.l"
+#line 228 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tPROPERTY, "property"); }	// D4
 	YY_BREAK
-case 40:
+case 44:
 YY_RULE_SETUP
-#line 185 "engines/director/lingo/lingo-lex.l"
+#line 229 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tPUT, "put"); }
 	YY_BREAK
-case 41:
+case 45:
 YY_RULE_SETUP
-#line 186 "engines/director/lingo/lingo-lex.l"
+#line 230 "engines/director/lingo/lingo-lex.l"
 { count(); return checkImmediate(tREPEAT); }
 	YY_BREAK
-case 42:
+case 46:
+YY_RULE_SETUP
+#line 231 "engines/director/lingo/lingo-lex.l"
+{
+		count();
+
+		const char *ptr = &yytext[7]; // Skip 'script '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = cleanupString(ptr + 1);
+		yylval.s->deleteLastChar();
+		return SCRIPT;
+	}
+	YY_BREAK
+case 47:
 YY_RULE_SETUP
-#line 187 "engines/director/lingo/lingo-lex.l"
+#line 242 "engines/director/lingo/lingo-lex.l"
+{
+		count();
+
+		const char *ptr = &yytext[7]; // Skip 'script '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = NULL;
+		yylval.i = strtol(yytext, NULL, 10);
+		return SCRIPT;
+	}
+	YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 253 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tSET, "set"); }
 	YY_BREAK
-case 43:
+case 49:
 YY_RULE_SETUP
-#line 188 "engines/director/lingo/lingo-lex.l"
+#line 254 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tSTARTS, "starts"); }
 	YY_BREAK
-case 44:
+case 50:
 YY_RULE_SETUP
-#line 189 "engines/director/lingo/lingo-lex.l"
+#line 255 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tTELL, "tell"); }
 	YY_BREAK
-case 45:
+case 51:
 YY_RULE_SETUP
-#line 190 "engines/director/lingo/lingo-lex.l"
+#line 256 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1357,17 +1519,17 @@ YY_RULE_SETUP
 
 		yylval.s = new Common::String(Common::String::format("numberOf%s", field.c_str()));
 
-		if (g_lingo->_builtins.contains(*yylval.s)) {
-			return FBLTIN;
+		if (g_lingo->_builtinFuncs.contains(*yylval.s)) {
+			return THEFUNCINOF;
 		} else {
 			warning("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
 			return LEXERROR;
 		}
 	}
 	YY_BREAK
-case 46:
+case 52:
 YY_RULE_SETUP
-#line 225 "engines/director/lingo/lingo-lex.l"
+#line 291 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1383,17 +1545,17 @@ YY_RULE_SETUP
 
 		yylval.s = new Common::String(Common::String::format("last%sOf", field.c_str()));
 
-		if (g_lingo->_builtins.contains(*yylval.s)) {
-			return FBLTIN;
+		if (g_lingo->_builtinFuncs.contains(*yylval.s)) {
+			return THEFUNCINOF;
 		} else {
 			warning("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
 			return LEXERROR;
 		}
 	}
 	YY_BREAK
-case 47:
+case 53:
 YY_RULE_SETUP
-#line 247 "engines/director/lingo/lingo-lex.l"
+#line 313 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1445,9 +1607,8 @@ YY_RULE_SETUP
 				yylval.objectprop.prop = new Common::String(field);
 
 				return THEOBJECTPROP;
-			} else if (g_lingo->_builtins.contains(field)) { // Let's hope they don't do it in D4+
-				if (g_lingo->_builtins[field].type == FBLTIN &&
-						g_lingo->_builtins[field].nargs == 1 && g_lingo->_builtins[field].maxArgs == 1) {
+			} else if (g_lingo->_builtinFuncs.contains(field)) { // Let's hope they don't do it in D4+
+				if (g_lingo->_builtinFuncs[field].nargs == 1 && g_lingo->_builtinFuncs[field].maxArgs == 1) {
 					yylval.s = new Common::String(field);
 					Common::String rest(ptr);
 
@@ -1461,7 +1622,7 @@ YY_RULE_SETUP
 
 					unput(' '); unput('f'); unput('o');
 
-					return THEFBLTIN;
+					return THEFUNC;
 				}
 			}
 		}
@@ -1469,9 +1630,9 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s', field '%s'", ptr, field.c_str());
 	}
 	YY_BREAK
-case 48:
+case 54:
 YY_RULE_SETUP
-#line 321 "engines/director/lingo/lingo-lex.l"
+#line 386 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1507,9 +1668,9 @@ YY_RULE_SETUP
 			return THEENTITY;
 	}
 	YY_BREAK
-case 49:
+case 55:
 YY_RULE_SETUP
-#line 355 "engines/director/lingo/lingo-lex.l"
+#line 420 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1527,159 +1688,158 @@ YY_RULE_SETUP
 				return THEENTITY;
 		}
 
-		if (g_lingo->_builtins.contains(ptr)) {
-			if (g_lingo->_builtins[ptr].type == FBLTIN &&
-					g_lingo->_builtins[ptr].nargs == 1 && g_lingo->_builtins[ptr].maxArgs == 1) {
+		if (g_lingo->_builtinFuncs.contains(ptr)) {
+			if (g_lingo->_builtinFuncs[ptr].nargs == 1 && g_lingo->_builtinFuncs[ptr].maxArgs == 1) {
 				yylval.s = new Common::String(ptr);
-				return THEFBLTIN;
+				return THEFUNC;
 			}
 		}
 
 		warning("LEXER: Unhandled the entity '%s'", ptr);
 	}
 	YY_BREAK
-case 50:
+case 56:
 YY_RULE_SETUP
-#line 382 "engines/director/lingo/lingo-lex.l"
+#line 446 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
-case 51:
+case 57:
 YY_RULE_SETUP
-#line 383 "engines/director/lingo/lingo-lex.l"
+#line 447 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tTO, "to"); }
 	YY_BREAK
-case 52:
+case 58:
 YY_RULE_SETUP
-#line 384 "engines/director/lingo/lingo-lex.l"
+#line 448 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tSPRITE, "sprite"); }
 	YY_BREAK
-case 53:
+case 59:
 YY_RULE_SETUP
-#line 385 "engines/director/lingo/lingo-lex.l"
+#line 449 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tWITH, "with"); }
 	YY_BREAK
-case 54:
+case 60:
 YY_RULE_SETUP
-#line 386 "engines/director/lingo/lingo-lex.l"
+#line 450 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tWITHIN, "within"); }
 	YY_BREAK
-case 55:
+case 61:
 YY_RULE_SETUP
-#line 387 "engines/director/lingo/lingo-lex.l"
+#line 451 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tWHEN, "when"); }
 	YY_BREAK
-case 56:
+case 62:
 YY_RULE_SETUP
-#line 388 "engines/director/lingo/lingo-lex.l"
+#line 452 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tWHILE, "while"); }
 	YY_BREAK
-case 57:
+case 63:
+YY_RULE_SETUP
+#line 453 "engines/director/lingo/lingo-lex.l"
+{
+		count();
+
+		const char *ptr = &yytext[7]; // Skip 'window '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = cleanupString(ptr + 1);
+		yylval.s->deleteLastChar();
+		return WINDOW;
+	}
+	YY_BREAK
+case 64:
 YY_RULE_SETUP
-#line 389 "engines/director/lingo/lingo-lex.l"
+#line 464 "engines/director/lingo/lingo-lex.l"
+{
+		count();
+
+		const char *ptr = &yytext[7]; // Skip 'window '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = NULL;
+		yylval.i = strtol(yytext, NULL, 10);
+		return WINDOW;
+	}
+	YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 475 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tWORD, "word"); }
 	YY_BREAK
-case 58:
+case 66:
 YY_RULE_SETUP
-#line 391 "engines/director/lingo/lingo-lex.l"
+#line 477 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
-case 59:
+case 67:
 YY_RULE_SETUP
-#line 392 "engines/director/lingo/lingo-lex.l"
+#line 478 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
-case 60:
+case 68:
 YY_RULE_SETUP
-#line 393 "engines/director/lingo/lingo-lex.l"
+#line 479 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
-case 61:
+case 69:
 YY_RULE_SETUP
-#line 394 "engines/director/lingo/lingo-lex.l"
+#line 480 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
-case 62:
+case 70:
 YY_RULE_SETUP
-#line 395 "engines/director/lingo/lingo-lex.l"
+#line 481 "engines/director/lingo/lingo-lex.l"
 { count(); return tEQ; }
 	YY_BREAK
-case 63:
+case 71:
 YY_RULE_SETUP
-#line 397 "engines/director/lingo/lingo-lex.l"
+#line 483 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
 
-		// When we are defining arguments, allow any string
-		if (g_lingo->_indef == kStateInArgs)
-			return ID;
-
-		// Check that this is one of locally used names:
-		// argument, property, instance or global
-		if (g_lingo->_methodVars->contains(yytext))
-			return ID;
-
-		// First of all, match against argument list
-		if (g_lingo->_indef == kStateInDef)
-			if (g_lingo->isInArgStack(yylval.s))
-				return ID;
-
-		if (g_lingo->_builtins.contains(yytext)) {
-			int type = g_lingo->_builtins[yytext].type;
-			if ((type == BLTIN || type == FBLTIN || type == RBLTIN) && g_lingo->_builtins[yytext].parens == false) {
-				if (type == RBLTIN) {
-					if (g_lingo->_builtins[yytext].nargs != 1 || g_lingo->_builtins[yytext].maxArgs != 1) {
-						warning("Incorrectly set RBLTIN %s", yytext);
-						return LEXERROR;
-					}
-
-					return RBLTIN;
-				}
-
-				return type;
-			}
-		}
-
 		return ID;
 	}
 	YY_BREAK
-case 64:
+case 72:
 YY_RULE_SETUP
-#line 433 "engines/director/lingo/lingo-lex.l"
+#line 489 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
-case 65:
+case 73:
 YY_RULE_SETUP
-#line 434 "engines/director/lingo/lingo-lex.l"
+#line 490 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
-case 66:
+case 74:
 YY_RULE_SETUP
-#line 435 "engines/director/lingo/lingo-lex.l"
+#line 491 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
-case 67:
-/* rule 67 can match eol */
+case 75:
+/* rule 75 can match eol */
 YY_RULE_SETUP
-#line 436 "engines/director/lingo/lingo-lex.l"
+#line 492 "engines/director/lingo/lingo-lex.l"
 { count(); return '\n'; }
 	YY_BREAK
-case 68:
+case 76:
 YY_RULE_SETUP
-#line 437 "engines/director/lingo/lingo-lex.l"
+#line 493 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = cleanupString(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
-case 69:
+case 77:
 YY_RULE_SETUP
-#line 438 "engines/director/lingo/lingo-lex.l"
+#line 494 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
-case 70:
+case 78:
 YY_RULE_SETUP
-#line 440 "engines/director/lingo/lingo-lex.l"
+#line 496 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1682 "engines/director/lingo/lingo-lex.cpp"
+#line 1842 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -1978,7 +2138,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 300 )
+			if ( yy_current_state >= 337 )
 				yy_c = yy_meta[yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2006,11 +2166,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 300 )
+		if ( yy_current_state >= 337 )
 			yy_c = yy_meta[yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-	yy_is_jam = (yy_current_state == 299);
+	yy_is_jam = (yy_current_state == 336);
 
 		return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2049,6 +2209,10 @@ static int yy_get_next_buffer (void)
 
 	*--yy_cp = (char) c;
 
+    if ( c == '\n' ){
+        --yylineno;
+    }
+
 	(yytext_ptr) = yy_bp;
 	(yy_hold_char) = *yy_cp;
 	(yy_c_buf_p) = yy_cp;
@@ -2127,6 +2291,10 @@ static int yy_get_next_buffer (void)
 	(yy_hold_char) = *++(yy_c_buf_p);
 
 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_at_bol )
+		
+    yylineno++;
+;
 
 	return c;
 }
@@ -2594,6 +2762,9 @@ static int yy_init_globals (void)
      * This function is called from yylex_destroy(), so don't allocate here.
      */
 
+    /* We do not touch yylineno unless the option is enabled. */
+    yylineno =  1;
+    
     (yy_buffer_stack) = NULL;
     (yy_buffer_stack_top) = 0;
     (yy_buffer_stack_max) = 0;
@@ -2688,7 +2859,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 440 "engines/director/lingo/lingo-lex.l"
+#line 496 "engines/director/lingo/lingo-lex.l"
 
 
 extern int yydebug;
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index fc5239d9b3..65925d1ea9 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -116,6 +116,28 @@ spc [ \t\xC2]
 after		{ count(); return varCheck(tAFTER, "after"); }		// D3
 and			{ count(); return varCheck(tAND, "and"); }
 before		{ count(); return varCheck(tBEFORE, "before"); }	// D3
+cast{spc}+{conststring}	{
+		count();
+
+		const char *ptr = &yytext[5]; // Skip 'cast '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = cleanupString(ptr + 1);
+		yylval.s->deleteLastChar();
+		return CAST;
+	}
+cast{spc}+{constinteger}	{
+		count();
+
+		const char *ptr = &yytext[5]; // Skip 'cast '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = NULL;
+		yylval.i = strtol(yytext, NULL, 10);
+		return CAST;
+	}
 char		{ count(); return varCheck(tCHAR, "char"); }		// D3
 contains	{ count(); return varCheck(tCONTAINS, "contains"); }
 down		{ count(); return varCheck(tDOWN, "down"); }
@@ -147,6 +169,28 @@ end({spc}+{identifier})?	{
 	}
 ^{spc}*factory { count(); return tFACTORY; }
 exit		{ count(); return varCheck(tEXIT, "exit"); }
+field{spc}+{conststring}	{
+		count();
+
+		const char *ptr = &yytext[6]; // Skip 'field '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = cleanupString(ptr + 1);
+		yylval.s->deleteLastChar();
+		return FIELD;
+	}
+field{spc}+{constinteger}	{
+		count();
+
+		const char *ptr = &yytext[6]; // Skip 'field '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = NULL;
+		yylval.i = strtol(yytext, NULL, 10);
+		return FIELD;
+	}
 global		{ count(); return varCheck(tGLOBAL, "global"); }
 go{spc}+(to{spc}+)?frame	{ count(); return tGO; }
 go{spc}+(to)?	{ count(); return tGO; }
@@ -184,6 +228,28 @@ previous	{ count(); return varCheck(tPREVIOUS, "previous"); }
 property	{ count(); return varCheck(tPROPERTY, "property"); }	// D4
 put			{ count(); return varCheck(tPUT, "put"); }
 repeat		{ count(); return checkImmediate(tREPEAT); }
+script{spc}+{conststring}	{
+		count();
+
+		const char *ptr = &yytext[7]; // Skip 'script '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = cleanupString(ptr + 1);
+		yylval.s->deleteLastChar();
+		return SCRIPT;
+	}
+script{spc}+{constinteger}	{
+		count();
+
+		const char *ptr = &yytext[7]; // Skip 'script '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = NULL;
+		yylval.i = strtol(yytext, NULL, 10);
+		return SCRIPT;
+	}
 set			{ count(); return varCheck(tSET, "set"); }
 starts		{ count(); return varCheck(tSTARTS, "starts"); }
 tell		{ count(); return varCheck(tTELL, "tell"); }
@@ -215,8 +281,8 @@ the{spc}+number{spc}+of{spc}+[[:alpha:]]+{spc}+(in|of){spc}+ {
 
 		yylval.s = new Common::String(Common::String::format("numberOf%s", field.c_str()));
 
-		if (g_lingo->_builtins.contains(*yylval.s)) {
-			return FBLTIN;
+		if (g_lingo->_builtinFuncs.contains(*yylval.s)) {
+			return THEFUNCINOF;
 		} else {
 			warning("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
 			return LEXERROR;
@@ -237,8 +303,8 @@ the{spc}+last{spc}+[[:alpha:]]+{spc}+(in|of){spc}+	{
 
 		yylval.s = new Common::String(Common::String::format("last%sOf", field.c_str()));
 
-		if (g_lingo->_builtins.contains(*yylval.s)) {
-			return FBLTIN;
+		if (g_lingo->_builtinFuncs.contains(*yylval.s)) {
+			return THEFUNCINOF;
 		} else {
 			warning("LEXER: Unhandled chunk expression '%s'", yylval.s->c_str());
 			return LEXERROR;
@@ -295,9 +361,8 @@ the{spc}+[[:alpha:]]+{spc}+of{spc}+{identifier}	{
 				yylval.objectprop.prop = new Common::String(field);
 
 				return THEOBJECTPROP;
-			} else if (g_lingo->_builtins.contains(field)) { // Let's hope they don't do it in D4+
-				if (g_lingo->_builtins[field].type == FBLTIN &&
-						g_lingo->_builtins[field].nargs == 1 && g_lingo->_builtins[field].maxArgs == 1) {
+			} else if (g_lingo->_builtinFuncs.contains(field)) { // Let's hope they don't do it in D4+
+				if (g_lingo->_builtinFuncs[field].nargs == 1 && g_lingo->_builtinFuncs[field].maxArgs == 1) {
 					yylval.s = new Common::String(field);
 					Common::String rest(ptr);
 
@@ -311,7 +376,7 @@ the{spc}+[[:alpha:]]+{spc}+of{spc}+{identifier}	{
 
 					unput(' '); unput('f'); unput('o');
 
-					return THEFBLTIN;
+					return THEFUNC;
 				}
 			}
 		}
@@ -369,11 +434,10 @@ the{spc}+[[:alpha:]]+		{
 				return THEENTITY;
 		}
 
-		if (g_lingo->_builtins.contains(ptr)) {
-			if (g_lingo->_builtins[ptr].type == FBLTIN &&
-					g_lingo->_builtins[ptr].nargs == 1 && g_lingo->_builtins[ptr].maxArgs == 1) {
+		if (g_lingo->_builtinFuncs.contains(ptr)) {
+			if (g_lingo->_builtinFuncs[ptr].nargs == 1 && g_lingo->_builtinFuncs[ptr].maxArgs == 1) {
 				yylval.s = new Common::String(ptr);
-				return THEFBLTIN;
+				return THEFUNC;
 			}
 		}
 
@@ -386,6 +450,28 @@ with			{ count(); return varCheck(tWITH, "with"); }
 within			{ count(); return varCheck(tWITHIN, "within"); }
 when			{ count(); return varCheck(tWHEN, "when"); }
 while			{ count(); return varCheck(tWHILE, "while"); }
+window{spc}+{conststring}	{
+		count();
+
+		const char *ptr = &yytext[7]; // Skip 'window '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = cleanupString(ptr + 1);
+		yylval.s->deleteLastChar();
+		return WINDOW;
+	}
+window{spc}+{constinteger}	{
+		count();
+
+		const char *ptr = &yytext[7]; // Skip 'window '
+		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
+			ptr++;
+
+		yylval.s = NULL;
+		yylval.i = strtol(yytext, NULL, 10);
+		return WINDOW;
+	}
 word			{ count(); return varCheck(tWORD, "word"); }
 
 [<][>]			{ count(); return tNEQ; }
@@ -398,36 +484,6 @@ word			{ count(); return varCheck(tWORD, "word"); }
 		count();
 		yylval.s = new Common::String(yytext);
 
-		// When we are defining arguments, allow any string
-		if (g_lingo->_indef == kStateInArgs)
-			return ID;
-
-		// Check that this is one of locally used names:
-		// argument, property, instance or global
-		if (g_lingo->_methodVars->contains(yytext))
-			return ID;
-
-		// First of all, match against argument list
-		if (g_lingo->_indef == kStateInDef)
-			if (g_lingo->isInArgStack(yylval.s))
-				return ID;
-
-		if (g_lingo->_builtins.contains(yytext)) {
-			int type = g_lingo->_builtins[yytext].type;
-			if ((type == BLTIN || type == FBLTIN || type == RBLTIN) && g_lingo->_builtins[yytext].parens == false) {
-				if (type == RBLTIN) {
-					if (g_lingo->_builtins[yytext].nargs != 1 || g_lingo->_builtins[yytext].maxArgs != 1) {
-						warning("Incorrectly set RBLTIN %s", yytext);
-						return LEXERROR;
-					}
-
-					return RBLTIN;
-				}
-
-				return type;
-			}
-		}
-
 		return ID;
 	}
 {constfloat}	{ count(); yylval.f = atof(yytext); return FLOAT; }
diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index aa908032c5..a81591948f 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -79,7 +79,7 @@ void Lingo::initMethods() {
 
 		Symbol sym;
 		sym.name = new Common::String(mtd->name);
-		sym.type = FBLTIN;
+		sym.type = HBLTIN;
 		sym.nargs = mtd->minArgs;
 		sym.maxArgs = mtd->maxArgs;
 		sym.targetType = mtd->type;
@@ -106,7 +106,7 @@ void Lingo::initXLibs() {
 
 		Symbol sym;
 		sym.name = new Common::String(lib->name);
-		sym.type = FBLTIN;
+		sym.type = HBLTIN;
 		sym.nargs = 0;
 		sym.maxArgs = 0;
 		sym.targetType = lib->type;
@@ -177,7 +177,7 @@ Symbol ScriptContext::getMethod(const Common::String &methodName) {
 	}
 
 	sym = Object::getMethod(methodName);
-	if (sym.type != VOID)
+	if (sym.type != VOIDSYM)
 		return sym;
 
 	if (_objType == kScriptObj) {
@@ -287,7 +287,7 @@ void LM::m_instanceRespondsTo(int nargs) {
 	Datum d = g_lingo->pop();
 	Common::String methodName = d.asString();
 
-	if (me->getMethod(methodName).type != VOID) {
+	if (me->getMethod(methodName).type != VOIDSYM) {
 		g_lingo->push(Datum(1));
 	} else {
 		g_lingo->push(Datum(0));
@@ -310,7 +310,7 @@ void LM::m_respondsTo(int nargs) {
 	Common::String methodName = d.asString();
 
 	// TODO: Check inheritance level
-	if (me->getMethod(methodName).type != VOID) {
+	if (me->getMethod(methodName).type != VOIDSYM) {
 		g_lingo->push(Datum(1));
 	} else {
 		g_lingo->push(Datum(0));
diff --git a/engines/director/lingo/lingo-object.h b/engines/director/lingo/lingo-object.h
index 0c4f177d8b..3bf725fc03 100644
--- a/engines/director/lingo/lingo-object.h
+++ b/engines/director/lingo/lingo-object.h
@@ -93,7 +93,7 @@ public:
 
 			Symbol sym;
 			sym.name = new Common::String(mtd->name);
-			sym.type = FBLTIN;
+			sym.type = HBLTIN;
 			sym.nargs = mtd->minArgs;
 			sym.maxArgs = mtd->maxArgs;
 			sym.u.bltin = mtd->func;
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index 9418bc4ac4..263a621cbc 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -46,7 +46,7 @@ Lingo *g_lingo;
 
 Symbol::Symbol() {
 	name = nullptr;
-	type = VOID;
+	type = VOIDSYM;
 	u.s = nullptr;
 	refCount = new int;
 	*refCount = 1;
@@ -116,8 +116,6 @@ void Symbol::reset() {
 
 		if (type == HANDLER)
 			delete u.defn;
-		else if (type == STRING)
-			delete u.s;
 
 		if (argNames)
 			delete argNames;
@@ -227,11 +225,8 @@ Symbol Lingo::getHandler(const Common::String &name) {
 			return _currentScriptContext->_functionHandlers[name];
 
 		Symbol sym = g_director->getCurrentMovie()->getHandler(name);
-		if (sym.type != VOID)
+		if (sym.type != VOIDSYM)
 			return sym;
-
-		if (_builtins.contains(name))
-			return _builtins[name];
 	}
 	return Symbol();
 }
@@ -461,7 +456,7 @@ void Lingo::printCallStack(uint pc) {
 		if (i < (int)g_lingo->_callstack.size() - 1)
 			framePc = g_lingo->_callstack[i + 1]->retpc;
 
-		if (frame->sp.type != VOID) {
+		if (frame->sp.type != VOIDSYM) {
 			debugC(5, kDebugLingoExec, "#%d %s:%d", i + 1,
 				g_lingo->_callstack[i]->sp.name->c_str(),
 				framePc
@@ -1147,7 +1142,7 @@ void Lingo::executeImmediateScripts(Frame *frame) {
 void Lingo::executePerFrameHook(int frame, int subframe) {
 	if (_perFrameHook.type == OBJECT) {
 		Symbol method = _perFrameHook.u.obj->getMethod("mAtFrame");
-		if (method.type != VOID) {
+		if (method.type != VOIDSYM) {
 			debugC(1, kDebugLingoExec, "Executing perFrameHook : <%s>(mAtFrame, %d, %d)", _perFrameHook.asString(true).c_str(), frame, subframe);
 			push(Datum(frame));
 			push(Datum(subframe));
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 1a9cb8f410..bfb2e237e3 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -78,7 +78,7 @@ typedef Common::HashMap<void *, FuncDesc *> FuncHash;
 
 struct Symbol {	/* symbol table entry */
 	Common::String *name;
-	int type;
+	SymbolType type;
 	union {
 		ScriptData	*defn;	/* HANDLER */
 		void (*func)();		/* OPCODE */
@@ -370,6 +370,7 @@ public:
 	int code3(inst code_1, inst code_2, inst code_3) { int o = code1(code_1); code1(code_2); code1(code_3); return o; }
 	int code4(inst code_1, inst code_2, inst code_3, inst code_4) { int o = code1(code_1); code1(code_2); code1(code_3); code1(code_4); return o; }
 	void codeArg(Common::String *s);
+	int codeCmd(Common::String *s, int numpar);
 	Symbol codeDefine(Common::String &s, int start, int nargs, int end = -1, bool removeCode = true);
 	void codeFactory(Common::String &s);
 	int codeFloat(double f);
@@ -412,7 +413,9 @@ public:
 
 	Common::Array<int> _labelstack;
 
-	SymbolHash _builtins;
+	SymbolHash _builtinCmds;
+	SymbolHash _builtinFuncs;
+	SymbolHash _builtinConsts;
 	SymbolHash _methods;
 	SymbolHash _xlibInitializers;
 
diff --git a/engines/director/types.h b/engines/director/types.h
index aa49f48052..390edfbadb 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -294,6 +294,16 @@ enum PlayState {
 	kPlayStopped
 };
 
+enum SymbolType {
+	VOIDSYM,
+	OPCODE,
+	CBLTIN,	// builtin command
+	FBLTIN,	// builtin function
+	HBLTIN,	// builtin handler (can be called as either command or func)
+	KBLTIN,	// builtin constant
+	HANDLER	// user-defined handler
+};
+
 struct Datum;
 struct PCell;
 typedef Common::Array<Datum> DatumArray;


Commit: 2277a92d8ee02142a2a04c56bc118601a4786a5f
    https://github.com/scummvm/scummvm/commit/2277a92d8ee02142a2a04c56bc118601a4786a5f
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-19T13:33:35-04:00

Commit Message:
DIRECTOR: LINGO: Handle ARGC/ARGCNORET

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


diff --git a/engines/director/lingo/lingo-bytecode.cpp b/engines/director/lingo/lingo-bytecode.cpp
index 422242b115..c8ae8b979a 100644
--- a/engines/director/lingo/lingo-bytecode.cpp
+++ b/engines/director/lingo/lingo-bytecode.cpp
@@ -507,7 +507,7 @@ void LC::cb_call() {
 
 	Datum nargs = g_lingo->pop();
 	if ((nargs.type == ARGC) || (nargs.type == ARGCNORET)) {
-		LC::call(name, nargs.u.i);
+		LC::call(name, nargs.u.i, nargs.type == ARGC ? FBLTIN : CBLTIN);
 
 	} else {
 		warning("cb_call: first arg should be of type ARGC or ARGCNORET, not %s", nargs.type2str());


Commit: fb8c0e53dfb67c349eff74a6f3bed3aee2f936b8
    https://github.com/scummvm/scummvm/commit/fb8c0e53dfb67c349eff74a6f3bed3aee2f936b8
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-19T13:33:35-04:00

Commit Message:
DIRECTOR: LINGO: Improve references grammar

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


diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 238d325558..7452433e2b 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -238,7 +238,7 @@ extern int yydebug;
     FLOAT = 276,                   /* FLOAT  */
     THEFUNC = 277,                 /* THEFUNC  */
     THEFUNCINOF = 278,             /* THEFUNCINOF  */
-    ID = 279,                      /* ID  */
+    VARID = 279,                   /* VARID  */
     STRING = 280,                  /* STRING  */
     SYMBOL = 281,                  /* SYMBOL  */
     ENDCLAUSE = 282,               /* ENDCLAUSE  */
@@ -301,7 +301,11 @@ extern int yydebug;
     tON = 339,                     /* tON  */
     tENDIF = 340,                  /* tENDIF  */
     tENDREPEAT = 341,              /* tENDREPEAT  */
-    tENDTELL = 342                 /* tENDTELL  */
+    tENDTELL = 342,                /* tENDTELL  */
+    tCAST = 343,                   /* tCAST  */
+    tFIELD = 344,                  /* tFIELD  */
+    tSCRIPT = 345,                 /* tSCRIPT  */
+    tWINDOW = 346                  /* tWINDOW  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -325,12 +329,7 @@ union YYSTYPE
 		Common::String *prop;
 	} objectprop;
 
-	struct {
-		Common::String *s;
-		int i;
-	} ref;
-
-#line 334 "engines/director/lingo/lingo-gr.cpp"
+#line 333 "engines/director/lingo/lingo-gr.cpp"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -372,7 +371,7 @@ enum yysymbol_kind_t
   YYSYMBOL_FLOAT = 21,                     /* FLOAT  */
   YYSYMBOL_THEFUNC = 22,                   /* THEFUNC  */
   YYSYMBOL_THEFUNCINOF = 23,               /* THEFUNCINOF  */
-  YYSYMBOL_ID = 24,                        /* ID  */
+  YYSYMBOL_VARID = 24,                     /* VARID  */
   YYSYMBOL_STRING = 25,                    /* STRING  */
   YYSYMBOL_SYMBOL = 26,                    /* SYMBOL  */
   YYSYMBOL_ENDCLAUSE = 27,                 /* ENDCLAUSE  */
@@ -444,71 +443,77 @@ enum yysymbol_kind_t
   YYSYMBOL_93_ = 93,                       /* '*'  */
   YYSYMBOL_94_ = 94,                       /* '/'  */
   YYSYMBOL_95_ = 95,                       /* '%'  */
-  YYSYMBOL_96_n_ = 96,                     /* '\n'  */
-  YYSYMBOL_97_ = 97,                       /* '('  */
-  YYSYMBOL_98_ = 98,                       /* ')'  */
-  YYSYMBOL_99_ = 99,                       /* ','  */
-  YYSYMBOL_100_ = 100,                     /* '['  */
-  YYSYMBOL_101_ = 101,                     /* ']'  */
-  YYSYMBOL_102_ = 102,                     /* ':'  */
-  YYSYMBOL_YYACCEPT = 103,                 /* $accept  */
-  YYSYMBOL_program = 104,                  /* program  */
-  YYSYMBOL_programline = 105,              /* programline  */
-  YYSYMBOL_asgn = 106,                     /* asgn  */
-  YYSYMBOL_stmtoneliner = 107,             /* stmtoneliner  */
-  YYSYMBOL_stmt = 108,                     /* stmt  */
-  YYSYMBOL_109_1 = 109,                    /* $@1  */
-  YYSYMBOL_110_2 = 110,                    /* $@2  */
-  YYSYMBOL_111_3 = 111,                    /* $@3  */
-  YYSYMBOL_112_4 = 112,                    /* $@4  */
-  YYSYMBOL_113_5 = 113,                    /* $@5  */
-  YYSYMBOL_114_6 = 114,                    /* $@6  */
-  YYSYMBOL_115_7 = 115,                    /* $@7  */
-  YYSYMBOL_116_8 = 116,                    /* $@8  */
-  YYSYMBOL_117_9 = 117,                    /* $@9  */
-  YYSYMBOL_startrepeat = 118,              /* startrepeat  */
-  YYSYMBOL_tellstart = 119,                /* tellstart  */
-  YYSYMBOL_ifstmt = 120,                   /* ifstmt  */
-  YYSYMBOL_elseifstmtlist = 121,           /* elseifstmtlist  */
-  YYSYMBOL_elseifstmt = 122,               /* elseifstmt  */
-  YYSYMBOL_jumpifz = 123,                  /* jumpifz  */
-  YYSYMBOL_jump = 124,                     /* jump  */
-  YYSYMBOL_varassign = 125,                /* varassign  */
-  YYSYMBOL_if = 126,                       /* if  */
-  YYSYMBOL_lbl = 127,                      /* lbl  */
-  YYSYMBOL_stmtlist = 128,                 /* stmtlist  */
-  YYSYMBOL_simpleexpr = 129,               /* simpleexpr  */
-  YYSYMBOL_expr = 130,                     /* expr  */
-  YYSYMBOL_131_10 = 131,                   /* $@10  */
-  YYSYMBOL_chunkexpr = 132,                /* chunkexpr  */
-  YYSYMBOL_reference = 133,                /* reference  */
-  YYSYMBOL_proc = 134,                     /* proc  */
-  YYSYMBOL_135_11 = 135,                   /* $@11  */
-  YYSYMBOL_136_12 = 136,                   /* $@12  */
-  YYSYMBOL_137_13 = 137,                   /* $@13  */
-  YYSYMBOL_138_14 = 138,                   /* $@14  */
-  YYSYMBOL_globallist = 139,               /* globallist  */
-  YYSYMBOL_propertylist = 140,             /* propertylist  */
-  YYSYMBOL_instancelist = 141,             /* instancelist  */
-  YYSYMBOL_gotofunc = 142,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 143,                /* gotomovie  */
-  YYSYMBOL_playfunc = 144,                 /* playfunc  */
-  YYSYMBOL_145_15 = 145,                   /* $@15  */
-  YYSYMBOL_defn = 146,                     /* defn  */
-  YYSYMBOL_147_16 = 147,                   /* $@16  */
-  YYSYMBOL_148_17 = 148,                   /* $@17  */
-  YYSYMBOL_on = 149,                       /* on  */
-  YYSYMBOL_150_18 = 150,                   /* $@18  */
-  YYSYMBOL_argdef = 151,                   /* argdef  */
-  YYSYMBOL_endargdef = 152,                /* endargdef  */
-  YYSYMBOL_argstore = 153,                 /* argstore  */
-  YYSYMBOL_arglist = 154,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 155,          /* nonemptyarglist  */
-  YYSYMBOL_list = 156,                     /* list  */
-  YYSYMBOL_valuelist = 157,                /* valuelist  */
-  YYSYMBOL_linearlist = 158,               /* linearlist  */
-  YYSYMBOL_proplist = 159,                 /* proplist  */
-  YYSYMBOL_proppair = 160                  /* proppair  */
+  YYSYMBOL_tCAST = 96,                     /* tCAST  */
+  YYSYMBOL_tFIELD = 97,                    /* tFIELD  */
+  YYSYMBOL_tSCRIPT = 98,                   /* tSCRIPT  */
+  YYSYMBOL_tWINDOW = 99,                   /* tWINDOW  */
+  YYSYMBOL_100_n_ = 100,                   /* '\n'  */
+  YYSYMBOL_101_ = 101,                     /* '('  */
+  YYSYMBOL_102_ = 102,                     /* ')'  */
+  YYSYMBOL_103_ = 103,                     /* ','  */
+  YYSYMBOL_104_ = 104,                     /* '['  */
+  YYSYMBOL_105_ = 105,                     /* ']'  */
+  YYSYMBOL_106_ = 106,                     /* ':'  */
+  YYSYMBOL_YYACCEPT = 107,                 /* $accept  */
+  YYSYMBOL_program = 108,                  /* program  */
+  YYSYMBOL_programline = 109,              /* programline  */
+  YYSYMBOL_ID = 110,                       /* ID  */
+  YYSYMBOL_asgn = 111,                     /* asgn  */
+  YYSYMBOL_stmtoneliner = 112,             /* stmtoneliner  */
+  YYSYMBOL_stmt = 113,                     /* stmt  */
+  YYSYMBOL_114_1 = 114,                    /* $@1  */
+  YYSYMBOL_115_2 = 115,                    /* $@2  */
+  YYSYMBOL_116_3 = 116,                    /* $@3  */
+  YYSYMBOL_117_4 = 117,                    /* $@4  */
+  YYSYMBOL_118_5 = 118,                    /* $@5  */
+  YYSYMBOL_119_6 = 119,                    /* $@6  */
+  YYSYMBOL_120_7 = 120,                    /* $@7  */
+  YYSYMBOL_121_8 = 121,                    /* $@8  */
+  YYSYMBOL_122_9 = 122,                    /* $@9  */
+  YYSYMBOL_startrepeat = 123,              /* startrepeat  */
+  YYSYMBOL_tellstart = 124,                /* tellstart  */
+  YYSYMBOL_ifstmt = 125,                   /* ifstmt  */
+  YYSYMBOL_elseifstmtlist = 126,           /* elseifstmtlist  */
+  YYSYMBOL_elseifstmt = 127,               /* elseifstmt  */
+  YYSYMBOL_jumpifz = 128,                  /* jumpifz  */
+  YYSYMBOL_jump = 129,                     /* jump  */
+  YYSYMBOL_varassign = 130,                /* varassign  */
+  YYSYMBOL_if = 131,                       /* if  */
+  YYSYMBOL_lbl = 132,                      /* lbl  */
+  YYSYMBOL_stmtlist = 133,                 /* stmtlist  */
+  YYSYMBOL_simpleexprnoparens = 134,       /* simpleexprnoparens  */
+  YYSYMBOL_135_10 = 135,                   /* $@10  */
+  YYSYMBOL_simpleexpr = 136,               /* simpleexpr  */
+  YYSYMBOL_expr = 137,                     /* expr  */
+  YYSYMBOL_chunkexpr = 138,                /* chunkexpr  */
+  YYSYMBOL_reference = 139,                /* reference  */
+  YYSYMBOL_proc = 140,                     /* proc  */
+  YYSYMBOL_141_11 = 141,                   /* $@11  */
+  YYSYMBOL_142_12 = 142,                   /* $@12  */
+  YYSYMBOL_143_13 = 143,                   /* $@13  */
+  YYSYMBOL_144_14 = 144,                   /* $@14  */
+  YYSYMBOL_globallist = 145,               /* globallist  */
+  YYSYMBOL_propertylist = 146,             /* propertylist  */
+  YYSYMBOL_instancelist = 147,             /* instancelist  */
+  YYSYMBOL_gotofunc = 148,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 149,                /* gotomovie  */
+  YYSYMBOL_playfunc = 150,                 /* playfunc  */
+  YYSYMBOL_151_15 = 151,                   /* $@15  */
+  YYSYMBOL_defn = 152,                     /* defn  */
+  YYSYMBOL_153_16 = 153,                   /* $@16  */
+  YYSYMBOL_154_17 = 154,                   /* $@17  */
+  YYSYMBOL_on = 155,                       /* on  */
+  YYSYMBOL_156_18 = 156,                   /* $@18  */
+  YYSYMBOL_argdef = 157,                   /* argdef  */
+  YYSYMBOL_endargdef = 158,                /* endargdef  */
+  YYSYMBOL_argstore = 159,                 /* argstore  */
+  YYSYMBOL_arglist = 160,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 161,          /* nonemptyarglist  */
+  YYSYMBOL_list = 162,                     /* list  */
+  YYSYMBOL_valuelist = 163,                /* valuelist  */
+  YYSYMBOL_linearlist = 164,               /* linearlist  */
+  YYSYMBOL_proplist = 165,                 /* proplist  */
+  YYSYMBOL_proppair = 166                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -816,20 +821,20 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  96
+#define YYFINAL  99
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1629
+#define YYLAST   2302
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  103
+#define YYNTOKENS  107
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  58
+#define YYNNTS  60
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  183
+#define YYNRULES  189
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  379
+#define YYNSTATES  388
 
-#define YYMAXUTOK   342
+#define YYMAXUTOK   346
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -844,15 +849,15 @@ union yyalloc
 static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-      96,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     100,     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,    95,    90,     2,
-      97,    98,    93,    91,    99,    92,     2,    94,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   102,     2,
+     101,   102,    93,    91,   103,    92,     2,    94,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   106,     2,
       88,     2,    89,     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,   100,     2,   101,     2,     2,     2,     2,     2,     2,
+       2,   104,     2,   105,     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,
@@ -877,32 +882,32 @@ static const yytype_int8 yytranslate[] =
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87
+      85,    86,    87,    96,    97,    98,    99
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,   218,   218,   219,   221,   222,   223,   225,   232,   236,
-     247,   254,   257,   264,   267,   274,   281,   288,   295,   301,
-     308,   319,   330,   337,   345,   346,   348,   349,   354,   367,
-     371,   374,   366,   401,   405,   408,   400,   435,   442,   448,
-     434,   478,   486,   489,   490,   492,   494,   496,   503,   511,
-     512,   514,   520,   524,   528,   532,   535,   537,   538,   539,
-     541,   544,   547,   551,   555,   563,   571,   577,   578,   579,
-     581,   582,   583,   589,   589,   594,   597,   600,   603,   609,
-     610,   611,   612,   613,   614,   615,   616,   617,   618,   619,
-     620,   621,   622,   623,   624,   625,   626,   627,   628,   629,
-     630,   632,   643,   644,   645,   646,   647,   648,   649,   650,
-     652,   653,   664,   675,   688,   689,   690,   691,   699,   700,
-     700,   701,   701,   702,   702,   703,   706,   709,   715,   715,
-     720,   723,   727,   730,   734,   737,   741,   744,   755,   756,
-     757,   758,   762,   766,   771,   772,   774,   778,   782,   786,
-     786,   816,   816,   822,   823,   823,   829,   837,   843,   843,
-     845,   846,   847,   849,   850,   851,   853,   855,   856,   857,
-     859,   860,   862,   864,   865,   866,   867,   869,   870,   872,
-     873,   875,   879,   883
+       0,   214,   214,   215,   217,   218,   219,   221,   222,   223,
+     224,   225,   227,   234,   238,   249,   256,   259,   266,   269,
+     276,   283,   290,   297,   303,   310,   321,   332,   339,   347,
+     348,   350,   351,   356,   369,   373,   376,   368,   403,   407,
+     410,   402,   437,   444,   450,   436,   480,   488,   491,   492,
+     494,   496,   498,   505,   513,   514,   516,   522,   526,   530,
+     534,   537,   539,   540,   541,   543,   546,   549,   550,   551,
+     555,   559,   560,   568,   574,   577,   580,   586,   587,   588,
+     589,   595,   595,   600,   603,   611,   613,   614,   616,   617,
+     618,   619,   620,   621,   622,   623,   624,   625,   626,   627,
+     628,   629,   630,   631,   632,   633,   634,   636,   639,   640,
+     641,   642,   643,   644,   645,   646,   648,   649,   652,   655,
+     659,   660,   661,   662,   670,   671,   671,   672,   672,   673,
+     673,   674,   677,   680,   686,   686,   691,   694,   698,   701,
+     705,   708,   712,   715,   726,   727,   728,   729,   733,   737,
+     742,   743,   745,   749,   753,   757,   757,   787,   787,   793,
+     794,   794,   800,   808,   814,   814,   816,   817,   818,   820,
+     821,   822,   824,   826,   827,   828,   830,   831,   833,   835,
+     836,   837,   838,   840,   841,   843,   844,   846,   850,   854
 };
 #endif
 
@@ -923,7 +928,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "VAR", "POINT", "RECT", "ARRAY", "OBJECT", "FIELDREF", "LEXERROR",
   "PARRAY", "INT", "ARGC", "ARGCNORET", "THEENTITY", "THEENTITYWITHID",
   "THEMENUITEMENTITY", "THEMENUITEMSENTITY", "FLOAT", "THEFUNC",
-  "THEFUNCINOF", "ID", "STRING", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL",
+  "THEFUNCINOF", "VARID", "STRING", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL",
   "tMETHOD", "THEOBJECTPROP", "CAST", "FIELD", "SCRIPT", "WINDOW", "tDOWN",
   "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tGOLOOP", "tIF", "tIN",
   "tINTO", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT",
@@ -933,15 +938,16 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE",
   "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tENDIF",
   "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'",
-  "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
-  "$accept", "program", "programline", "asgn", "stmtoneliner", "stmt",
-  "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9",
-  "startrepeat", "tellstart", "ifstmt", "elseifstmtlist", "elseifstmt",
-  "jumpifz", "jump", "varassign", "if", "lbl", "stmtlist", "simpleexpr",
-  "expr", "$@10", "chunkexpr", "reference", "proc", "$@11", "$@12", "$@13",
-  "$@14", "globallist", "propertylist", "instancelist", "gotofunc",
-  "gotomovie", "playfunc", "$@15", "defn", "$@16", "$@17", "on", "$@18",
-  "argdef", "endargdef", "argstore", "arglist", "nonemptyarglist", "list",
+  "'/'", "'%'", "tCAST", "tFIELD", "tSCRIPT", "tWINDOW", "'\\n'", "'('",
+  "')'", "','", "'['", "']'", "':'", "$accept", "program", "programline",
+  "ID", "asgn", "stmtoneliner", "stmt", "$@1", "$@2", "$@3", "$@4", "$@5",
+  "$@6", "$@7", "$@8", "$@9", "startrepeat", "tellstart", "ifstmt",
+  "elseifstmtlist", "elseifstmt", "jumpifz", "jump", "varassign", "if",
+  "lbl", "stmtlist", "simpleexprnoparens", "$@10", "simpleexpr", "expr",
+  "chunkexpr", "reference", "proc", "$@11", "$@12", "$@13", "$@14",
+  "globallist", "propertylist", "instancelist", "gotofunc", "gotomovie",
+  "playfunc", "$@15", "defn", "$@16", "$@17", "on", "$@18", "argdef",
+  "endargdef", "argstore", "arglist", "nonemptyarglist", "list",
   "valuelist", "linearlist", "proplist", "proppair", YY_NULLPTR
   };
   return yy_sname[yysymbol];
@@ -962,17 +968,17 @@ static const yytype_int16 yytoknum[] =
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,    60,    62,
-      38,    43,    45,    42,    47,    37,    10,    40,    41,    44,
-      91,    93,    58
+      38,    43,    45,    42,    47,    37,   343,   344,   345,   346,
+      10,    40,    41,    44,    91,    93,    58
 };
 #endif
 
-#define YYPACT_NINF (-337)
+#define YYPACT_NINF (-327)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-174)
+#define YYTABLE_NINF (-180)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -981,44 +987,45 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    1036,   367,  -337,  -337,   -21,  -337,   542,  -337,  -337,  -337,
-      15,   775,   152,   171,    13,    44,   801,   581,  -337,   801,
-    -337,  -337,    41,    -5,  -337,  -337,  -337,  -337,   801,  -337,
-    -337,  -337,  -337,  -337,    22,  -337,  -337,     3,  -337,    50,
-       3,    -1,  -337,  -337,  -337,  -337,  -337,  -337,  -337,   801,
-     801,   801,   801,   801,   801,   801,   801,   662,   278,  -337,
-    1522,  -337,  -337,    43,  -337,   455,  -337,  -337,   116,   801,
-    -337,   103,  -337,   801,  1103,  -337,   122,  -337,   127,  1070,
-     140,  -337,   -46,     3,     3,   -22,    17,   124,  -337,  1439,
-    1103,  -337,   176,  1400,   186,   190,  -337,  1036,  1522,   196,
-    -337,  -337,  -337,     3,  -337,   688,  -337,  1136,  1169,  1202,
-    1235,  1489,  -337,  -337,    77,  1452,   -39,     0,   129,   132,
-    -337,  1522,   123,   136,   137,  -337,   801,   801,   801,   801,
-     801,   801,   801,   801,   801,   801,   801,   801,   801,   801,
-     801,   801,   801,   801,    43,   196,  -337,   138,  1522,   801,
-    1452,  -337,  -337,     3,     1,    29,    33,    -8,   801,   801,
-     801,    28,   191,   801,   801,   801,   801,   801,   801,  -337,
-    -337,   141,  -337,  -337,  -337,   142,  -337,  -337,   173,  -337,
-     -11,  -337,   100,   114,   801,   801,   801,   801,   801,   801,
-     801,   801,   801,   801,  -337,  -337,  -337,  -337,   801,   801,
-     801,  -337,   801,   178,    76,    76,    76,    76,  1535,  1535,
-    -337,    21,    76,    76,    76,    76,    21,   -54,   -54,  -337,
-    -337,  1522,    20,   218,  1522,   196,   199,  -337,  -337,  -337,
-    -337,  -337,  -337,   801,   801,  1522,  1522,  1522,   801,   801,
-     220,  1522,  1522,  1522,  1522,  1522,  1522,   221,    34,  -337,
-     222,  -337,  -337,   223,  -337,  -337,  -337,  1522,  1268,  1522,
-    1301,  1522,  1334,  1522,  1367,  1522,  1522,   801,  1522,  1522,
-    1522,  1522,   146,   129,   132,  -337,  -337,  -337,    48,   801,
-    1522,  1037,  -337,  1522,  1522,     3,  -337,  -337,   997,  -337,
-     997,  -337,  -337,   801,   801,   801,   801,   801,  1522,   118,
-    -337,  -337,  1522,  -337,  -337,  -337,  -337,   109,  -337,  -337,
-    -337,   162,  -337,   867,   120,  1522,  1522,  1522,  1522,  -337,
-     801,   997,  -337,  -337,  -337,  -337,   997,   801,   801,  -337,
-     193,   226,  -337,  1522,   997,  -337,   197,   217,   167,  1522,
-    1522,  -337,   801,  -337,   169,  -337,   156,  -337,   801,   202,
-    -337,   997,  1522,  -337,   233,  -337,  1522,   801,   174,   205,
-    -337,  -337,  -337,  1522,  -337,  -337,   892,  -337,  -337,   997,
-    -337,  -337,  -337,  -337,   930,  -337,  -337,   959,  -337
+    1697,  -327,  -327,  -327,   -42,  -327,   150,  -327,  -327,  -327,
+     -27,  1407,     6,    21,    89,    89,  1439,  1280,  -327,  1439,
+    -327,  -327,  -327,  -327,  -327,  -327,    58,   -71,  1104,  -327,
+    -327,  -327,  -327,  1439,  -327,  -327,  -327,  -327,  -327,  1192,
+    -327,  -327,    89,   -12,  -327,  -327,  1527,  -327,    20,  1527,
+    -327,  -327,  -327,  1439,  -327,    30,  -327,  1439,  1439,  1439,
+    1439,  1439,  1439,  1527,  1527,   596,   703,   810,   917,  1439,
+    1011,   -21,  -327,  -327,  1764,  -327,  -327,  -327,  -327,    89,
+    -327,    89,   980,    89,  -327,   -23,  1527,  1527,     2,     3,
+      50,  -327,  2129,  1764,  -327,    89,  1797,    89,    89,  -327,
+    1697,  1315,  2195,   -18,  2195,    89,   -18,    89,  -327,    11,
+    -327,  -327,  1527,  -327,  2195,  1439,  -327,  1844,  1877,  1910,
+    1943,  2162,  -327,  -327,  -327,  -327,  -327,  -327,  2088,    31,
+      40,  -327,   -79,  2195,     1,    13,    22,  -327,  1315,  1439,
+    1439,  1439,  1439,  1439,  1439,  1439,  1439,  1439,  1439,  1439,
+    1439,  1439,  1439,  1439,  1439,  1439,  -327,  -327,  1527,   106,
+     106,   106,   -32,  1439,  1439,  1439,     7,   100,  1439,  1439,
+    1439,  1439,  1439,  1439,  -327,  -327,    46,  -327,  -327,  -327,
+      47,  -327,  -327,     9,  2088,    -9,  1439,    99,  -327,   -77,
+     -16,    89,  -327,  2195,  1439,  1439,  1439,  1439,  1439,  1439,
+    1439,  1439,  1439,  1439,  -327,  1439,  1439,  1439,  -327,  1439,
+      -7,    26,    19,   -44,   -44,   -44,   -44,  2208,  2208,  -327,
+     -57,   -44,   -44,   -44,   -44,   -57,   -39,   -39,  -327,  -327,
+      89,   110,  -327,  -327,  -327,  -327,  -327,  -327,  1439,  1439,
+    2195,  2195,  2195,  1439,  1439,    89,  2195,  2195,  2195,  2195,
+    2195,  2195,    89,  1726,  -327,    89,  -327,  -327,  -327,  2195,
+    -327,  -327,    89,  -327,  -327,  2195,  1976,  2195,  2009,  2195,
+    2042,  2195,  2075,  2195,  2195,  2195,  2195,  2195,  2195,    31,
+      40,    49,  -327,  -327,  -327,  -327,    -4,  1439,  2195,   265,
+    -327,  2195,  2195,  1527,  -327,  -327,  1538,  -327,  1439,  1538,
+    -327,  -327,  -327,  1439,  1439,  1439,  1439,  1439,  -327,  2195,
+    -327,  -327,  -327,  -327,    10,  -327,  -327,  -327,    69,  2195,
+      29,  -327,   445,  1538,  2195,  2195,  2195,  2195,    32,  -327,
+    -327,  -327,  -327,  1538,  1439,  1439,  -327,  -327,  1439,   108,
+      89,  -327,  1538,  -327,   104,   128,    76,  2195,  2195,  2195,
+    -327,  1439,  -327,    80,  -327,    63,  -327,  1439,   115,  -327,
+    1538,  2195,  -327,    89,  -327,  2195,  1439,    85,   124,  -327,
+    -327,  -327,  2195,  -327,  -327,   479,  -327,  -327,  1538,  -327,
+    -327,  -327,  -327,  1605,  -327,  -327,  1634,  -327
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1026,66 +1033,67 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       4,     0,   149,   154,   118,   119,     0,   138,    55,   151,
-       0,     0,     0,     0,     0,     0,     0,     0,   123,     0,
-     121,   158,     0,     2,    24,    26,     6,    27,     0,    25,
-     115,   116,     5,    56,     0,    60,    65,     0,    61,     0,
-       0,    64,    63,    62,    78,   111,   101,   112,   113,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    70,
-     168,   110,    71,   131,    68,     0,    56,   117,     0,     0,
-     139,     0,   140,     0,   141,   143,     0,    41,     0,   114,
-       0,    56,     0,     0,     0,     0,     0,     0,   153,   126,
-     146,   148,     0,     0,     0,     0,     1,     4,    52,   160,
-      69,    64,    66,     0,    76,     0,    92,     0,     0,     0,
-       0,     0,    97,    98,    64,   168,     0,    64,    63,    62,
-     174,   177,     0,   176,   175,   179,     0,     0,     0,     0,
+       4,     7,   155,   160,   124,   125,     0,   144,    60,   157,
+       0,     0,     0,     0,     0,     0,     0,     0,   129,     0,
+     127,   164,     8,     9,    10,    11,     0,     2,     0,    29,
+      31,     6,    32,     0,    30,   121,   122,     5,    61,     0,
+      61,   123,     0,     0,    65,    72,     0,    66,     0,     0,
+      70,    69,    76,     0,   145,     0,   146,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    84,    86,    88,   147,   116,    71,   149,    79,     0,
+      46,     0,   120,     0,    61,     0,     0,     0,     0,     0,
+       0,   159,   132,   152,   154,     0,     0,     0,     0,     1,
+       4,     0,   174,   137,    57,   166,   156,   166,   138,   126,
+      85,    73,     0,    74,   151,     0,   102,     0,     0,     0,
+       0,     0,    67,    68,   117,   107,   118,   119,     0,    70,
+      69,   180,    84,   183,     0,   182,   181,   185,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   148,    61,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   150,   160,   132,   120,   145,     0,
-       0,   142,    56,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   147,
-     136,   124,    46,    46,   134,   122,   159,     3,     0,   161,
-       0,    77,    64,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   127,   128,    67,   130,     0,     0,
-       0,   172,     0,     0,    88,    89,    86,    87,    90,    91,
-      83,    94,    95,    96,    85,    84,    93,    79,    80,    81,
-      82,   169,     0,     0,   144,   160,     0,     7,     8,    10,
-      11,    12,    13,     0,     0,    52,    17,    15,     0,     0,
-       0,    16,    14,    22,    23,    42,   125,     0,     0,    57,
-       0,    57,   166,     0,    72,    73,    75,   102,     0,   104,
-       0,   106,     0,   108,     0,    99,   100,     0,   183,   182,
-     181,   178,     0,     0,     0,   180,   166,   133,     0,     0,
-      37,    29,    45,    18,    19,     0,   137,    56,    56,   135,
-      53,    57,   162,     0,     0,     0,     0,     0,   170,     0,
-      57,   166,     9,    56,    54,    54,    57,     0,    44,    58,
-      59,     0,    49,   157,     0,   103,   105,   107,   109,   129,
-       0,   155,    57,    38,    30,    34,    53,     0,     0,    43,
-      56,   163,    74,   171,   152,    52,     0,     0,     0,    20,
-      21,    57,     0,    50,     0,   164,   156,    39,     0,     0,
-      28,    56,    52,    47,     0,    45,    31,     0,     0,     0,
-     165,    57,    52,    35,    48,    57,     0,    45,    52,    53,
-      40,    57,    45,    51,     0,    57,    32,     0,    36
+       0,     0,     0,     0,   153,   142,   130,    51,    51,   140,
+     128,   165,     3,    84,   174,     0,     0,     0,   167,     0,
+       0,     0,    75,   150,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    87,     0,     0,     0,   178,     0,
+       0,    84,     0,    98,    99,    96,    97,   100,   101,    93,
+     104,   105,   106,    95,    94,   103,    89,    90,    91,    92,
+     166,     0,    12,    13,    15,    16,    17,    18,     0,     0,
+      57,    22,    20,     0,     0,     0,    27,    28,    21,    19,
+      47,   131,     0,     0,    62,     0,   133,   134,   136,   175,
+      62,   172,     0,   172,   139,   108,     0,   110,     0,   112,
+       0,   114,     0,    77,    78,   188,   187,   189,   184,     0,
+       0,     0,   186,    80,    81,    83,     0,     0,    42,    34,
+      50,    23,    24,     0,   143,    61,    61,   141,     0,    58,
+      62,   168,    62,     0,     0,     0,     0,     0,   172,    14,
+      61,    59,    59,    62,     0,    49,    63,    64,     0,   176,
+       0,    54,   163,   161,   109,   111,   113,   115,     0,    62,
+      43,    35,    39,    58,     0,     0,    48,   135,     0,    61,
+     169,    82,   158,    57,     0,     0,     0,    25,    26,   177,
+      62,     0,    55,     0,   170,   162,    44,     0,     0,    33,
+      61,    57,    52,     0,    50,    36,     0,     0,     0,   171,
+      62,    57,    40,    53,    62,     0,    50,    57,    58,    45,
+      62,    50,    56,     0,    62,    37,     0,    41
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -337,   163,  -337,  -337,    14,     2,  -337,  -337,  -337,  -337,
-    -337,  -337,  -337,  -337,  -337,  -336,    90,  -337,  -337,  -337,
-    -197,  -314,   -41,  -337,   -65,  -150,   -14,    -6,  -337,    51,
-    -337,  -337,  -337,  -337,  -337,  -337,  -337,  -337,  -337,  -337,
-     -10,  -337,  -337,  -337,  -337,  -337,  -337,  -337,  -142,  -337,
-    -267,   -51,   -27,  -337,  -337,  -337,  -337,    64
+    -327,    78,  -327,     0,  -327,   -74,     4,  -327,  -327,  -327,
+    -327,  -327,  -327,  -327,  -327,  -327,  -299,    12,  -327,  -327,
+    -327,  -235,  -326,  -123,  -327,   -24,  -227,   127,  -327,   -43,
+     250,   -20,  -327,  -327,  -327,  -327,  -327,  -327,  -327,  -327,
+    -327,  -327,   -15,  -327,  -327,  -327,  -327,  -327,  -327,  -327,
+    -106,  -327,  -255,   -29,  -107,  -327,  -327,  -327,  -327,    -3
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    22,    23,    24,    25,   310,   304,   336,   362,   305,
-     337,   368,   303,   335,   355,   306,   248,    27,   330,   343,
-     178,   312,   324,    28,    99,   288,    59,    60,   293,    61,
-      62,    29,    68,    94,    92,   267,   147,   175,   171,    30,
-      75,    31,    65,    32,    76,    66,    33,    95,   180,   346,
-     291,    63,   299,    64,   122,   123,   124,   125
+      -1,    26,    27,    71,    29,    30,   317,   311,   344,   371,
+     312,   345,   377,   310,   343,   364,   313,   253,    32,   339,
+     352,   187,   321,   331,    33,   105,   296,    72,   307,    73,
+     102,    75,    76,    34,    42,    97,    95,   298,   109,   180,
+     176,    35,    77,    36,    39,    37,    79,    40,    38,    98,
+     189,   355,   300,   103,   320,    78,   134,   135,   136,   137
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1093,336 +1101,472 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      74,   145,    26,   222,    34,    79,   116,    91,   159,   300,
-      89,    90,   338,    93,   144,   132,   158,    35,   160,   361,
-      36,    37,    98,   102,    38,   227,   104,   101,    42,    43,
-      67,   371,   163,    46,   322,   233,   375,    87,   282,   141,
-     142,    96,   164,   106,   107,   108,   109,   110,   111,   112,
-     113,   115,   121,   229,   183,   373,   234,   231,     1,   197,
-     143,    46,     2,   148,   151,    46,    77,   150,    88,   161,
-     162,   165,     4,     5,     6,     7,    50,    51,    52,    53,
-     169,   166,   238,   278,    11,   252,    13,   225,   253,   181,
-     132,    97,   239,    16,    17,    18,   105,   105,   103,    26,
-      73,   290,   198,    58,    50,    51,    52,    53,    50,    51,
-      52,    53,   139,   140,   141,   142,   276,    20,   100,   253,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   347,   226,
-     146,   313,   143,   224,   301,   132,   152,   253,   133,   149,
-     321,   153,   235,   236,   237,   359,   326,   241,   242,   243,
-     244,   245,   246,   327,   157,   367,   138,   139,   140,   141,
-     142,   372,   334,   328,   105,   194,   195,   167,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,    82,    83,
-      84,   351,   268,   269,   270,    85,   271,   105,   254,   255,
-     170,    86,   272,   273,   274,   228,   230,   232,    80,    81,
-     174,   366,   256,   143,   176,   369,   319,   320,   332,   320,
-     179,   374,   308,   311,   201,   377,   251,   280,   281,   341,
-     342,   199,   283,   284,   200,   202,   203,   223,   323,   240,
-     247,   250,   277,   279,   285,   286,   289,   292,   198,   329,
-     345,   348,   349,   350,   353,   354,   357,   360,   365,   364,
-     177,   298,   287,   249,   325,   344,   314,   275,     0,     0,
-       0,   307,     0,   302,     0,     0,     0,     0,     0,    34,
-       0,     0,     0,     0,     0,     0,   358,   298,   315,   316,
-     317,   318,    35,     0,     0,    36,    37,     0,     0,    38,
-      39,    40,   117,   118,   119,     0,     0,     0,    44,    45,
-      46,    47,    48,     0,   333,     0,     0,     0,     0,     0,
-       0,   339,   340,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   352,     0,     0,     0,
-       0,     0,   356,     0,     0,     0,    49,     0,     0,     0,
-       0,   363,     0,    50,    51,    52,    53,    54,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,  -167,    34,    55,
-      56,     0,     0,     0,     0,    73,     0,     0,    58,  -173,
-     120,    35,     0,     0,    36,    37,     0,     0,    38,    39,
-      40,    41,    42,    43,  -167,  -167,     0,    44,    45,    46,
-      47,    48,     0,  -167,  -167,  -167,  -167,  -167,  -167,  -167,
-       0,     0,     0,     0,  -167,     0,     0,  -167,  -167,  -167,
-       0,     0,  -167,     0,     0,     0,  -167,  -167,  -167,     0,
-       0,     0,     0,     0,     0,    49,     0,     0,     0,     0,
-       0,     0,    50,    51,    52,    53,    54,     0,     0,  -167,
-    -167,     0,  -167,  -167,  -167,  -167,    34,     0,    55,    56,
-       0,     0,     0,  -167,    57,     0,  -167,    58,     0,    35,
-       0,     0,    36,    37,     0,     0,    38,    39,    40,    41,
-      42,    43,  -167,  -167,     0,    44,    45,    46,    47,    48,
-       0,  -167,  -167,  -167,  -167,  -167,  -167,  -167,     0,     0,
-       0,     0,  -167,     0,     0,  -167,  -167,  -167,     0,     0,
-    -167,     0,     0,     0,  -167,  -167,  -167,     0,     0,     0,
-       0,     0,     0,    49,     0,     0,     0,     0,     0,     0,
-      50,    51,    52,    53,    54,     0,     0,  -167,  -167,     0,
-    -167,  -167,  -167,    34,     0,     0,    55,    56,     0,     0,
-       0,  -167,    73,     0,  -167,    58,    35,     0,     0,    36,
-      37,     0,     0,    38,    39,    40,    41,    42,    43,     0,
-       0,     0,    44,    45,    46,    47,    48,     0,     0,     0,
-       0,     0,    34,     0,     0,     0,     0,     0,    69,    70,
-      71,    72,     0,     0,     0,    35,     0,     0,    36,    37,
-       0,     0,    38,    39,    40,    41,    42,    43,     0,     0,
-      49,    44,    45,    46,    47,    48,     0,    50,    51,    52,
-      53,    54,     0,     0,     0,     0,     0,    69,     0,    71,
-       0,     0,     0,    55,    56,     0,     0,     0,     0,    73,
-       0,     0,    58,     0,     0,     0,     0,     0,     0,    49,
-       0,     0,     0,     0,     0,     0,    50,    51,    52,    53,
-      54,     0,     0,    34,     0,     0,     0,     0,     0,     0,
-       0,     0,    55,    56,     0,     0,    35,     0,    73,    36,
-      37,    58,     0,    38,    39,    40,   114,    42,    43,    34,
-       0,     0,    44,    45,    46,    47,    48,     0,     0,     0,
-       0,     0,    35,     0,     0,    36,    37,     0,     0,    38,
-      39,    40,   182,    42,    43,     0,     0,     0,    44,    45,
-      46,    47,    48,     0,     0,     0,     0,     0,     0,     0,
-      49,     0,     0,     0,     0,     0,     0,    50,    51,    52,
-      53,    54,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    55,    56,     0,    49,     0,     0,    73,
-    -167,  -167,    58,    50,    51,    52,    53,    54,     0,     0,
-       0,     0,     0,     0,     0,     0,    34,     0,     0,    55,
-      56,     0,     0,     0,     0,    73,  -167,  -167,    58,    35,
-       0,     0,    36,    37,     0,    78,    38,    39,    40,    41,
-      42,    43,    34,     0,     0,    44,    45,    46,    47,    48,
-       0,     0,     0,     0,     0,    35,     0,     0,    36,    37,
-       0,     0,    38,    39,    40,    41,    42,    43,     0,     0,
-       0,    44,    45,    46,    47,    48,     0,     0,     0,     0,
-       0,     0,     0,    49,     0,     0,     0,     0,     0,     0,
-      50,    51,    52,    53,    54,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    55,    56,     0,    49,
-       0,     0,    73,     0,     0,    58,    50,    51,    52,    53,
-      54,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     1,    55,    56,   331,     2,     0,     0,    73,     0,
-       0,    58,     0,     0,     0,     4,     5,     6,     7,     8,
-       0,     0,     0,     0,    10,     0,     1,    11,    12,    13,
-       2,     0,    14,     0,     0,     0,    16,    17,    18,     0,
-       4,     5,     6,     7,     8,     0,     0,     0,     0,    10,
-       0,     0,    11,    12,    13,     0,     0,    14,     0,    19,
-      20,    16,    17,    18,     1,     0,     0,     0,     2,     0,
-       0,     0,     0,   309,     0,     0,     0,     0,     4,     5,
-       6,     7,     8,     0,    19,    20,     0,    10,   370,     0,
-      11,    12,    13,     1,     0,    14,     0,     2,   309,    16,
-      17,    18,     0,     0,     0,     0,     0,     4,     5,     6,
-       7,     8,     0,     0,     0,     0,    10,     0,     0,    11,
-      12,    13,    19,    20,    14,     0,   376,     0,    16,    17,
-      18,     1,     0,     0,     0,     2,   309,     0,     0,     0,
-       0,     0,     0,     0,     0,     4,     5,     6,     7,     8,
-       0,    19,    20,     0,    10,   378,     0,    11,    12,    13,
-       0,     0,    14,     0,     0,   309,    16,    17,    18,     0,
-       1,     0,     0,     0,     2,     3,     0,     0,     0,     0,
-       0,     0,   -33,     0,     4,     5,     6,     7,     8,    19,
-      20,     9,     0,    10,     0,     0,    11,    12,    13,     0,
-       0,    14,     0,   309,    15,    16,    17,    18,     0,   126,
-     127,   128,   129,   130,   131,     0,   132,     0,     0,   133,
-     134,   135,     0,     0,   154,     0,     0,     0,    19,    20,
-      21,     0,     0,     0,     0,   136,   137,   138,   139,   140,
-     141,   142,   126,   127,   128,   129,   130,   131,     0,   132,
-     155,   156,   133,   134,   135,     0,     0,     0,     0,    69,
-       0,    71,     0,     0,     0,     0,     0,     0,   136,   137,
-     138,   139,   140,   141,   142,   126,   127,   128,   129,   130,
-     131,     0,   132,     0,     0,   133,   134,   135,     0,     0,
-       0,     0,     0,     0,   184,     0,     0,     0,     0,     0,
-     185,   136,   137,   138,   139,   140,   141,   142,   126,   127,
-     128,   129,   130,   131,     0,   132,     0,     0,   133,   134,
-     135,     0,     0,     0,     0,     0,     0,   186,     0,     0,
-       0,     0,     0,   187,   136,   137,   138,   139,   140,   141,
-     142,   126,   127,   128,   129,   130,   131,     0,   132,     0,
-       0,   133,   134,   135,     0,     0,     0,     0,     0,     0,
-     188,     0,     0,     0,     0,     0,   189,   136,   137,   138,
-     139,   140,   141,   142,   126,   127,   128,   129,   130,   131,
-       0,   132,     0,     0,   133,   134,   135,     0,     0,     0,
-       0,     0,     0,   190,     0,     0,     0,     0,     0,   191,
-     136,   137,   138,   139,   140,   141,   142,   126,   127,   128,
-     129,   130,   131,     0,   132,     0,     0,   133,   134,   135,
-       0,     0,     0,     0,     0,     0,   294,     0,     0,     0,
-       0,     0,     0,   136,   137,   138,   139,   140,   141,   142,
-     126,   127,   128,   129,   130,   131,     0,   132,     0,     0,
-     133,   134,   135,     0,     0,     0,     0,     0,     0,   295,
-       0,     0,     0,     0,     0,     0,   136,   137,   138,   139,
-     140,   141,   142,   126,   127,   128,   129,   130,   131,     0,
-     132,     0,     0,   133,   134,   135,     0,     0,     0,     0,
-       0,     0,   296,     0,     0,     0,     0,     0,     0,   136,
-     137,   138,   139,   140,   141,   142,   126,   127,   128,   129,
-     130,   131,     0,   132,     0,     0,   133,   134,   135,     0,
-       0,     0,     0,     0,     0,   297,     0,     0,     0,     0,
-       0,     0,   136,   137,   138,   139,   140,   141,   142,   126,
-     127,   128,   129,   130,   131,     0,   132,     0,     0,   133,
-     134,   135,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   172,   136,   137,   138,   139,   140,
-     141,   142,   126,   127,   128,   129,   130,   131,     0,   132,
-       0,     0,   133,   134,   135,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   136,   137,
-     138,   139,   140,   141,   142,   168,   173,     0,     0,     0,
-       0,   126,   127,   128,   129,   130,   131,     0,   132,     0,
-       0,   133,   134,   135,   126,   127,   128,   129,   130,   131,
-       0,   132,     0,     0,   133,   134,   135,   136,   137,   138,
-     139,   140,   141,   142,     0,     0,     0,     0,     0,     0,
-     136,   137,   138,   139,   140,   141,   142,     0,     0,     0,
-     196,   126,   127,   128,   129,   130,   131,     0,   132,     0,
-       0,   133,   134,   135,     0,     0,     0,     0,     0,   192,
-     193,     0,     0,     0,     0,     0,     0,   136,   137,   138,
-     139,   140,   141,   142,   126,   127,   128,   129,   130,   131,
-       0,   132,     0,     0,   133,   134,   135,   126,   127,   128,
-     129,     0,     0,     0,   132,     0,     0,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,     0,     0,     0,
-       0,     0,     0,   136,   137,   138,   139,   140,   141,   142
+      28,   190,    94,   111,    31,   290,   113,   346,   302,    41,
+     106,   238,   145,    89,    90,    91,   107,     1,   279,   280,
+     122,   123,   138,   261,    80,   145,   262,   207,   146,   100,
+     145,   164,   239,   299,   152,   153,   154,   155,    85,    86,
+      87,   165,   108,   166,   167,     1,   151,   152,   153,   154,
+     155,    88,   382,   329,   154,   155,   168,   170,    99,   156,
+     163,   243,    83,    84,   334,   370,   169,   171,   112,   192,
+     132,   244,   185,   322,   335,   323,   115,   380,   174,   157,
+     138,   158,   384,   162,   263,   186,   333,   262,   110,    22,
+      23,    24,    25,   258,   186,   175,   308,   179,   181,   262,
+      28,   183,   342,   172,    31,   188,   208,   188,   356,   212,
+     138,   256,   257,     1,   191,   231,   209,    22,    23,    24,
+      25,   285,   186,   360,   286,   210,   368,   138,   283,   284,
+       1,   337,   338,   230,   341,   338,   376,   205,   211,   233,
+     235,   237,   381,   375,   350,   351,   206,   378,   245,   252,
+     255,    43,   260,   383,   287,   207,   336,   386,   357,   232,
+     234,   236,   359,   358,    44,   362,   363,    45,    46,   366,
+     373,    47,    48,    49,     1,    50,    51,   374,   182,   295,
+      52,    58,    59,    60,    61,    22,    23,    24,    25,   332,
+     254,   264,   124,   125,   126,   127,    53,    54,    55,    56,
+     328,     0,    22,    66,    24,    25,     0,   282,     0,     0,
+     281,     0,     0,     0,     0,     0,     0,     0,    57,     0,
+       0,     0,     0,     0,     0,    58,    59,    60,    61,    62,
+     188,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    63,    64,     0,     0,   293,    65,    66,    67,    68,
+     314,    69,   294,    28,    70,   297,    74,     0,     0,     0,
+       0,    82,   301,     0,     0,     0,    92,    93,     0,    96,
+       0,   315,   318,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   104,     0,     0,   330,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    28,     0,     0,    28,
+     -38,     0,     0,   114,     0,     0,     0,   116,   117,   118,
+     119,   120,   121,     0,     0,   353,     0,     0,     0,   128,
+     133,     0,    28,    28,     0,     0,     0,   139,   140,   141,
+     142,   143,   144,    28,   145,     0,   367,   146,   147,   148,
+     354,     0,    28,     0,     0,     0,     0,     0,     0,     0,
+       0,   184,     0,   149,   150,   151,   152,   153,   154,   155,
+      28,     0,     0,   369,     0,   193,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    28,     0,     0,    28,     0,
+       0,     0,     0,    28,     0,     0,    28,     0,     0,   213,
+     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   229,     0,     0,     0,     0,
+       0,     0,     0,   240,   241,   242,     0,     0,   246,   247,
+     248,   249,   250,   251,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   259,     0,     0,     0,
+       0,     0,     0,     0,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   274,     0,   275,   276,   277,     0,   278,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     1,
+       0,     0,   340,     2,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     4,     5,     6,     7,     8,   288,   289,
+       0,     0,    10,   291,   292,    11,    12,    13,     0,     0,
+      14,     0,     0,     1,    16,    17,    18,     2,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     4,     5,     6,
+       7,     8,     0,     0,     0,     0,    10,    19,    20,    11,
+      12,    13,     0,     0,    14,     0,     0,   309,    16,    17,
+      18,    22,    23,    24,    25,   316,     0,     0,   319,     0,
+       0,     0,     0,   324,   325,   326,   327,   319,     0,     0,
+       0,    19,    20,     0,     0,   379,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    22,    23,    24,    25,   316,
+       0,     0,     0,     0,   347,   348,     0,     0,   349,     0,
+       0,     0,     0,     0,     0,     0,    -8,    43,     0,     0,
+       0,   361,     0,     0,     0,     0,     0,   365,     0,     0,
+      44,     0,     0,    45,    46,     0,   372,    47,    48,    49,
+       1,    50,    51,    -8,    -8,     0,    52,     0,     0,     0,
+       0,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,     0,
+      -8,     0,    -8,    -8,    -8,     0,    -8,    -8,    -8,    -8,
+      -8,    -8,    -8,     0,     0,    -8,    -8,    -8,    -8,    -8,
+      -8,    -8,    -8,    -8,     0,    -8,    -8,    -8,    -8,    -8,
+      -8,    58,    59,    60,    61,    62,    -8,    -8,    -8,    -8,
+       0,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,
+      -8,     0,    65,    66,    67,    68,    -8,    -8,    -8,    -8,
+      70,    -8,    -8,    -9,    43,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    44,     0,     0,
+      45,    46,     0,     0,    47,    48,    49,     1,    50,    51,
+      -9,    -9,     0,    52,     0,     0,     0,     0,    -9,    -9,
+      -9,    -9,    -9,    -9,    -9,    -9,     0,    -9,     0,    -9,
+      -9,    -9,     0,    -9,    -9,    -9,    -9,    -9,    -9,    -9,
+       0,     0,    -9,    -9,    -9,    -9,    -9,    -9,    -9,    -9,
+      -9,     0,    -9,    -9,    -9,    -9,    -9,    -9,    58,    59,
+      60,    61,    62,    -9,    -9,    -9,    -9,     0,    -9,    -9,
+      -9,    -9,    -9,    -9,    -9,    -9,    -9,    -9,     0,    65,
+      66,    67,    68,    -9,    -9,    -9,    -9,    70,    -9,    -9,
+     -10,    43,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    44,     0,     0,    45,    46,     0,
+       0,    47,    48,    49,     1,    50,    51,   -10,   -10,     0,
+      52,     0,     0,     0,     0,   -10,   -10,   -10,   -10,   -10,
+     -10,   -10,   -10,     0,   -10,     0,   -10,   -10,   -10,     0,
+     -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,     0,   -10,
+     -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,   -10,
+     -10,   -10,   -10,   -10,   -10,    58,    59,    60,    61,    62,
+     -10,   -10,   -10,   -10,     0,   -10,   -10,   -10,   -10,   -10,
+     -10,   -10,   -10,   -10,   -10,     0,    65,    66,    67,    68,
+     -10,   -10,   -10,   -10,    70,   -10,   -10,   -11,    43,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    44,     0,     0,    45,    46,     0,     0,    47,    48,
+      49,     1,    50,    51,   -11,   -11,     0,    52,     0,     0,
+       0,     0,   -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,
+       0,   -11,     0,   -11,   -11,   -11,     0,   -11,   -11,   -11,
+     -11,   -11,   -11,   -11,     0,     0,   -11,   -11,   -11,   -11,
+     -11,   -11,   -11,   -11,   -11,     0,   -11,   -11,   -11,   -11,
+     -11,   -11,    58,    59,    60,    61,    62,   -11,   -11,   -11,
+     -11,     0,   -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,
+     -11,   -11,    43,    65,    66,    67,    68,   -11,   -11,   -11,
+     -11,    70,   -11,   -11,   159,    44,     0,     0,    45,    46,
+       0,     0,    47,    48,    49,     1,   129,   130,     0,     0,
+       0,    52,   139,   140,   141,   142,   143,   144,     0,   145,
+     160,   161,   146,   147,   148,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   149,   150,
+     151,   152,   153,   154,   155,     0,     0,     0,     0,    57,
+       0,     0,     0,     0,     0,     0,    58,    59,    60,    61,
+      62,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    63,    64,  -173,    43,     0,    65,    66,    67,
+      68,     0,    69,     0,     0,    70,  -179,   131,    44,     0,
+       0,    45,    46,     0,     0,    47,    48,    49,     1,    50,
+      51,  -173,  -173,     0,    52,     0,     0,     0,     0,     0,
+    -173,  -173,  -173,  -173,  -173,  -173,  -173,     0,     0,     0,
+       0,  -173,     0,     0,  -173,  -173,  -173,     0,     0,  -173,
+       0,     0,     0,  -173,  -173,  -173,     0,     0,     0,     0,
+       0,     0,    57,     0,     0,     0,     0,     0,     0,    58,
+      59,    60,    61,    62,     0,     0,  -173,  -173,     0,  -173,
+    -173,  -173,  -173,    43,     0,    63,    64,     0,     0,     0,
+      65,    66,    67,    68,  -173,   101,    44,  -173,    70,    45,
+      46,     0,     0,    47,    48,    49,     1,    50,    51,  -173,
+    -173,     0,    52,     0,     0,     0,     0,     0,  -173,  -173,
+    -173,  -173,  -173,  -173,  -173,     0,     0,     0,     0,  -173,
+       0,     0,  -173,  -173,  -173,     0,     0,  -173,     0,     0,
+       0,  -173,  -173,  -173,     0,     0,     0,     0,     0,     0,
+      57,     0,     0,     0,     0,     0,     0,    58,    59,    60,
+      61,    62,     0,     0,  -173,  -173,     0,  -173,  -173,  -173,
+       0,    43,     0,    63,    64,     0,     0,     0,    65,    66,
+      67,    68,  -173,    69,    44,  -173,    70,    45,    46,     0,
+       0,    47,    48,    49,     1,    50,    51,     0,     0,     0,
+      52,     0,     0,     0,     0,     0,    43,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    53,     0,    55,    44,
+       0,     0,    45,    46,     0,     0,    47,    48,    49,     1,
+      50,    51,     0,     0,     0,    52,     0,     0,    57,     0,
+       0,     0,     0,     0,     0,    58,    59,    60,    61,    62,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    63,    64,     0,     0,     0,    65,    66,    67,    68,
+       0,    69,     0,    57,    70,     0,     0,     0,     0,     0,
+      58,    59,    60,    61,    62,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    63,    64,    43,     0,
+       0,    65,    66,    67,    68,     0,    69,  -173,  -173,    70,
+       0,    44,     0,     0,    45,    46,     0,    81,    47,    48,
+      49,     1,    50,    51,     0,     0,     0,    52,     0,     0,
+      43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    44,     0,     0,    45,    46,     0,     0,
+      47,    48,    49,     1,    50,    51,     0,     0,     0,    52,
+       0,     0,     0,     0,     0,    57,     0,     0,     0,     0,
+       0,     0,    58,    59,    60,    61,    62,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    63,    64,
+       0,     0,     0,    65,    66,    67,    68,    57,    69,     0,
+       0,    70,     0,     0,    58,    59,    60,    61,    62,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
+      63,    64,     0,     0,     0,    65,    66,    67,    68,     0,
+      69,    44,     0,    70,    45,    46,     0,     0,    47,    48,
+      49,     1,    50,    51,     0,     0,     0,    52,     0,     0,
+       0,     0,     1,     0,     0,     0,     2,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     4,     5,     6,     7,
+       8,     0,     0,     0,     0,    10,     0,     0,    11,    12,
+      13,     0,     0,    14,     0,     0,     0,    16,    17,    18,
+       0,     0,    58,    59,    60,    61,    62,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    63,    64,
+      19,    20,     0,    65,    66,    67,    68,     0,    69,     1,
+       0,    70,     0,     2,    22,    23,    24,    25,   316,     0,
+       0,     0,     0,     4,     5,     6,     7,     8,     0,     0,
+       0,     0,    10,     0,     0,    11,    12,    13,     1,     0,
+      14,     0,     2,     0,    16,    17,    18,     0,     0,     0,
+       0,     0,     4,     5,     6,     7,     8,     0,     0,     0,
+       0,    10,     0,     0,    11,    12,    13,    19,    20,    14,
+       0,   385,     0,    16,    17,    18,     0,     0,     0,     0,
+       0,    22,    23,    24,    25,   316,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    19,    20,     0,     0,
+     387,     1,     0,     0,     0,     2,     3,     0,     0,     0,
+      22,    23,    24,    25,   316,     4,     5,     6,     7,     8,
+       0,     0,     9,     0,    10,     0,     0,    11,    12,    13,
+       1,     0,    14,     0,     2,    15,    16,    17,    18,     0,
+       0,     0,     0,     0,     4,     5,     6,     7,     0,     0,
+       0,     0,     0,     0,     0,     0,    11,     0,    13,    19,
+      20,    21,     0,     0,     0,    16,    17,    18,     0,     0,
+       0,     0,     0,    22,    23,    24,    25,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    20,
+      53,     0,    55,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    22,    23,    24,    25,   139,   140,   141,   142,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   177,   149,   150,   151,   152,   153,   154,   155,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
+     154,   155,   194,     0,     0,     0,     0,   178,   195,     0,
+       0,     0,     0,     0,     0,     0,   139,   140,   141,   142,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
+       0,     0,     0,     0,     0,   196,     0,     0,     0,     0,
+       0,   197,   149,   150,   151,   152,   153,   154,   155,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,     0,     0,     0,     0,     0,     0,   198,     0,
+       0,     0,     0,     0,   199,   149,   150,   151,   152,   153,
+     154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
+       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
+       0,   200,     0,     0,     0,     0,     0,   201,   149,   150,
+     151,   152,   153,   154,   155,   139,   140,   141,   142,   143,
+     144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
+       0,     0,     0,     0,   303,     0,     0,     0,     0,     0,
+       0,   149,   150,   151,   152,   153,   154,   155,   139,   140,
+     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
+     148,     0,     0,     0,     0,     0,     0,   304,     0,     0,
+       0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
+     155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
+       0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
+     305,     0,     0,     0,     0,     0,     0,   149,   150,   151,
+     152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
+       0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
+       0,     0,     0,   306,     0,     0,     0,     0,     0,     0,
+     149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
+     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
+     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
+     153,   154,   155,     0,     0,   173,     0,     0,     0,     0,
+     204,   139,   140,   141,   142,   143,   144,     0,   145,     0,
+       0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   149,   150,   151,
+     152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
+       0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
+       0,     0,   202,   203,     0,     0,     0,     0,     0,     0,
+     149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
+     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
+     139,   140,   141,   142,     0,     0,     0,   145,     0,     0,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
+     153,   154,   155
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,    66,     0,   145,     1,    11,    57,    17,    54,   276,
-      16,    17,   326,    19,    65,    69,    81,    14,    64,   355,
-      17,    18,    28,    37,    21,    24,    40,    24,    25,    26,
-      51,   367,    54,    32,   301,    43,   372,    24,   235,    93,
-      94,     0,    64,    49,    50,    51,    52,    53,    54,    55,
-      56,    57,    58,    24,   105,   369,    64,    24,    24,    98,
-      99,    32,    28,    69,    74,    32,    51,    73,    24,    83,
-      84,    54,    38,    39,    40,    41,    75,    76,    77,    78,
-      90,    64,    54,   225,    50,    96,    52,   152,    99,   103,
-      69,    96,    64,    59,    60,    61,    97,    97,    48,    97,
-      97,   251,   102,   100,    75,    76,    77,    78,    75,    76,
-      77,    78,    91,    92,    93,    94,    96,    83,    96,    99,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,   141,   142,   143,   335,   153,
-      24,   291,    99,   149,    96,    69,    24,    99,    72,    46,
-     300,    24,   158,   159,   160,   352,   306,   163,   164,   165,
-     166,   167,   168,    54,    24,   362,    90,    91,    92,    93,
-      94,   368,   322,    64,    97,    98,    99,    53,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,    17,    18,
-      19,   341,   198,   199,   200,    24,   202,    97,    98,    99,
-      24,    30,    24,    25,    26,   154,   155,   156,    56,    57,
-      24,   361,    98,    99,    24,   365,    98,    99,    98,    99,
-      24,   371,   287,   288,   101,   375,    53,   233,   234,    36,
-      37,   102,   238,   239,   102,    99,    99,    99,   303,    48,
-      99,    99,    24,    44,    24,    24,    24,    24,   102,    87,
-      24,    54,    35,    86,    85,    99,    54,    24,    53,    85,
-      97,   267,   248,   173,   305,   330,   293,   203,    -1,    -1,
-      -1,   285,    -1,   279,    -1,    -1,    -1,    -1,    -1,     1,
-      -1,    -1,    -1,    -1,    -1,    -1,   351,   293,   294,   295,
-     296,   297,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    -1,    -1,    -1,    30,    31,
-      32,    33,    34,    -1,   320,    -1,    -1,    -1,    -1,    -1,
-      -1,   327,   328,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   342,    -1,    -1,    -1,
-      -1,    -1,   348,    -1,    -1,    -1,    68,    -1,    -1,    -1,
-      -1,   357,    -1,    75,    76,    77,    78,    79,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,     1,    91,
-      92,    -1,    -1,    -1,    -1,    97,    -1,    -1,   100,   101,
-     102,    14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
-      33,    34,    -1,    36,    37,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,    52,
-      -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,    -1,
-      -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    82,
-      83,    -1,    85,    86,    87,     0,     1,    -1,    91,    92,
-      -1,    -1,    -1,    96,    97,    -1,    99,   100,    -1,    14,
-      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    27,    28,    -1,    30,    31,    32,    33,    34,
-      -1,    36,    37,    38,    39,    40,    41,    42,    -1,    -1,
-      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    -1,    59,    60,    61,    -1,    -1,    -1,
-      -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
-      75,    76,    77,    78,    79,    -1,    -1,    82,    83,    -1,
-      85,    86,    87,     1,    -1,    -1,    91,    92,    -1,    -1,
-      -1,    96,    97,    -1,    99,   100,    14,    -1,    -1,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    -1,
-      -1,    -1,    30,    31,    32,    33,    34,    -1,    -1,    -1,
-      -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
+       0,   107,    17,    46,     0,   240,    49,   333,   263,    51,
+      39,    43,    69,    13,    14,    15,    40,    24,    25,    26,
+      63,    64,   101,   100,    51,    69,   103,   106,    72,   100,
+      69,    54,    64,   260,    91,    92,    93,    94,    17,    18,
+      19,    64,    42,    86,    87,    24,    90,    91,    92,    93,
+      94,    30,   378,   308,    93,    94,    54,    54,     0,    74,
+      84,    54,    56,    57,    54,   364,    64,    64,    48,   112,
+      70,    64,   101,   300,    64,   302,    46,   376,    93,    79,
+     101,    81,   381,    83,   100,   103,   313,   103,   100,    96,
+      97,    98,    99,   102,   103,    95,   100,    97,    98,   103,
+     100,   101,   329,    53,   100,   105,   105,   107,   343,   138,
+     101,   102,   103,    24,   103,   158,   103,    96,    97,    98,
+      99,   102,   103,   350,   230,   103,   361,   101,   102,   103,
+      24,   102,   103,   157,   102,   103,   371,   106,   138,   159,
+     160,   161,   377,   370,    36,    37,   106,   374,    48,   103,
+     103,     1,    53,   380,    44,   106,    87,   384,    54,   159,
+     160,   161,    86,    35,    14,    85,   103,    17,    18,    54,
+      85,    21,    22,    23,    24,    25,    26,    53,   100,   253,
+      30,    75,    76,    77,    78,    96,    97,    98,    99,   312,
+     178,   191,    65,    66,    67,    68,    46,    47,    48,    49,
+     307,    -1,    96,    97,    98,    99,    -1,   210,    -1,    -1,
+     210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+      -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,
+     230,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    91,    92,    -1,    -1,   245,    96,    97,    98,    99,
+     293,   101,   252,   253,   104,   255,     6,    -1,    -1,    -1,
+      -1,    11,   262,    -1,    -1,    -1,    16,    17,    -1,    19,
+      -1,   295,   296,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    33,    -1,    -1,   310,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   296,    -1,    -1,   299,
+      35,    -1,    -1,    53,    -1,    -1,    -1,    57,    58,    59,
+      60,    61,    62,    -1,    -1,   339,    -1,    -1,    -1,    69,
+      70,    -1,   322,   323,    -1,    -1,    -1,    62,    63,    64,
+      65,    66,    67,   333,    69,    -1,   360,    72,    73,    74,
+     340,    -1,   342,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   101,    -1,    88,    89,    90,    91,    92,    93,    94,
+     360,    -1,    -1,   363,    -1,   115,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   375,    -1,    -1,   378,    -1,
+      -1,    -1,    -1,   383,    -1,    -1,   386,    -1,    -1,   139,
+     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   163,   164,   165,    -1,    -1,   168,   169,
+     170,   171,   172,   173,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   194,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,    -1,   205,   206,   207,    -1,   209,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,
+      -1,    -1,    27,    28,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    38,    39,    40,    41,    42,   238,   239,
+      -1,    -1,    47,   243,   244,    50,    51,    52,    -1,    -1,
+      55,    -1,    -1,    24,    59,    60,    61,    28,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39,    40,
+      41,    42,    -1,    -1,    -1,    -1,    47,    82,    83,    50,
+      51,    52,    -1,    -1,    55,    -1,    -1,   287,    59,    60,
+      61,    96,    97,    98,    99,   100,    -1,    -1,   298,    -1,
+      -1,    -1,    -1,   303,   304,   305,   306,   307,    -1,    -1,
+      -1,    82,    83,    -1,    -1,    86,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    96,    97,    98,    99,   100,
+      -1,    -1,    -1,    -1,   334,   335,    -1,    -1,   338,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     0,     1,    -1,    -1,
+      -1,   351,    -1,    -1,    -1,    -1,    -1,   357,    -1,    -1,
+      14,    -1,    -1,    17,    18,    -1,   366,    21,    22,    23,
+      24,    25,    26,    27,    28,    -1,    30,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
+      44,    -1,    46,    47,    48,    -1,    50,    51,    52,    53,
+      54,    55,    56,    -1,    -1,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    -1,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      -1,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    -1,    96,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,     0,     1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      27,    28,    -1,    30,    -1,    -1,    -1,    -1,    35,    36,
+      37,    38,    39,    40,    41,    42,    -1,    44,    -1,    46,
+      47,    48,    -1,    50,    51,    52,    53,    54,    55,    56,
+      -1,    -1,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    -1,    69,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    -1,    85,    86,
+      87,    88,    89,    90,    91,    92,    93,    94,    -1,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
+      30,    -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,
+      40,    41,    42,    -1,    44,    -1,    46,    47,    48,    -1,
+      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    -1,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+      80,    81,    82,    83,    -1,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    -1,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,     0,     1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    27,    28,    -1,    30,    -1,    -1,
+      -1,    -1,    35,    36,    37,    38,    39,    40,    41,    42,
+      -1,    44,    -1,    46,    47,    48,    -1,    50,    51,    52,
+      53,    54,    55,    56,    -1,    -1,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    -1,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    -1,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,     1,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,    44,    14,    -1,    -1,    17,    18,
       -1,    -1,    21,    22,    23,    24,    25,    26,    -1,    -1,
-      68,    30,    31,    32,    33,    34,    -1,    75,    76,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,
-      -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,    97,
-      -1,    -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+      -1,    30,    62,    63,    64,    65,    66,    67,    -1,    69,
+      70,    71,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
+      90,    91,    92,    93,    94,    -1,    -1,    -1,    -1,    68,
       -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,
-      79,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    91,    92,    -1,    -1,    14,    -1,    97,    17,
-      18,   100,    -1,    21,    22,    23,    24,    25,    26,     1,
-      -1,    -1,    30,    31,    32,    33,    34,    -1,    -1,    -1,
-      -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    -1,    -1,    -1,    30,    31,
-      32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    91,    92,    -1,    68,    -1,    -1,    97,
-      98,    99,   100,    75,    76,    77,    78,    79,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    91,
-      92,    -1,    -1,    -1,    -1,    97,    98,    99,   100,    14,
-      -1,    -1,    17,    18,    -1,    20,    21,    22,    23,    24,
-      25,    26,     1,    -1,    -1,    30,    31,    32,    33,    34,
-      -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    -1,    -1,
-      -1,    30,    31,    32,    33,    34,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
-      75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    -1,    68,
-      -1,    -1,    97,    -1,    -1,   100,    75,    76,    77,    78,
       79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    24,    91,    92,    27,    28,    -1,    -1,    97,    -1,
-      -1,   100,    -1,    -1,    -1,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    -1,    47,    -1,    24,    50,    51,    52,
-      28,    -1,    55,    -1,    -1,    -1,    59,    60,    61,    -1,
+      -1,    -1,    91,    92,     0,     1,    -1,    96,    97,    98,
+      99,    -1,   101,    -1,    -1,   104,   105,   106,    14,    -1,
+      -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
+      26,    27,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,
+      36,    37,    38,    39,    40,    41,    42,    -1,    -1,    -1,
+      -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
+      -1,    -1,    -1,    59,    60,    61,    -1,    -1,    -1,    -1,
+      -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,
+      76,    77,    78,    79,    -1,    -1,    82,    83,    -1,    85,
+      86,    87,     0,     1,    -1,    91,    92,    -1,    -1,    -1,
+      96,    97,    98,    99,   100,   101,    14,   103,   104,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
+      28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    36,    37,
       38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,
-      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    82,
-      83,    59,    60,    61,    24,    -1,    -1,    -1,    28,    -1,
-      -1,    -1,    -1,    96,    -1,    -1,    -1,    -1,    38,    39,
-      40,    41,    42,    -1,    82,    83,    -1,    47,    86,    -1,
-      50,    51,    52,    24,    -1,    55,    -1,    28,    96,    59,
-      60,    61,    -1,    -1,    -1,    -1,    -1,    38,    39,    40,
-      41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
-      51,    52,    82,    83,    55,    -1,    86,    -1,    59,    60,
-      61,    24,    -1,    -1,    -1,    28,    96,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    38,    39,    40,    41,    42,
-      -1,    82,    83,    -1,    47,    86,    -1,    50,    51,    52,
-      -1,    -1,    55,    -1,    -1,    96,    59,    60,    61,    -1,
-      24,    -1,    -1,    -1,    28,    29,    -1,    -1,    -1,    -1,
-      -1,    -1,    35,    -1,    38,    39,    40,    41,    42,    82,
-      83,    45,    -1,    47,    -1,    -1,    50,    51,    52,    -1,
-      -1,    55,    -1,    96,    58,    59,    60,    61,    -1,    62,
+      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
+      -1,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,    -1,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
+      78,    79,    -1,    -1,    82,    83,    -1,    85,    86,    87,
+      -1,     1,    -1,    91,    92,    -1,    -1,    -1,    96,    97,
+      98,    99,   100,   101,    14,   103,   104,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
+      30,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,    14,
+      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,    26,    -1,    -1,    -1,    30,    -1,    -1,    68,    -1,
+      -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    91,    92,    -1,    -1,    -1,    96,    97,    98,    99,
+      -1,   101,    -1,    68,   104,    -1,    -1,    -1,    -1,    -1,
+      75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,     1,    -1,
+      -1,    96,    97,    98,    99,    -1,   101,   102,   103,   104,
+      -1,    14,    -1,    -1,    17,    18,    -1,    20,    21,    22,
+      23,    24,    25,    26,    -1,    -1,    -1,    30,    -1,    -1,
+       1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    30,
+      -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
+      -1,    -1,    -1,    96,    97,    98,    99,    68,   101,    -1,
+      -1,   104,    -1,    -1,    75,    76,    77,    78,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
+      91,    92,    -1,    -1,    -1,    96,    97,    98,    99,    -1,
+     101,    14,    -1,   104,    17,    18,    -1,    -1,    21,    22,
+      23,    24,    25,    26,    -1,    -1,    -1,    30,    -1,    -1,
+      -1,    -1,    24,    -1,    -1,    -1,    28,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
+      52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,
+      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
+      82,    83,    -1,    96,    97,    98,    99,    -1,   101,    24,
+      -1,   104,    -1,    28,    96,    97,    98,    99,   100,    -1,
+      -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,
+      -1,    -1,    47,    -1,    -1,    50,    51,    52,    24,    -1,
+      55,    -1,    28,    -1,    59,    60,    61,    -1,    -1,    -1,
+      -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,
+      -1,    47,    -1,    -1,    50,    51,    52,    82,    83,    55,
+      -1,    86,    -1,    59,    60,    61,    -1,    -1,    -1,    -1,
+      -1,    96,    97,    98,    99,   100,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    -1,    -1,
+      86,    24,    -1,    -1,    -1,    28,    29,    -1,    -1,    -1,
+      96,    97,    98,    99,   100,    38,    39,    40,    41,    42,
+      -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,    52,
+      24,    -1,    55,    -1,    28,    58,    59,    60,    61,    -1,
+      -1,    -1,    -1,    -1,    38,    39,    40,    41,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    82,
+      83,    84,    -1,    -1,    -1,    59,    60,    61,    -1,    -1,
+      -1,    -1,    -1,    96,    97,    98,    99,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,
+      46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    96,    97,    98,    99,    62,    63,    64,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    54,    88,    89,    90,    91,    92,    93,    94,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
+      93,    94,    48,    -1,    -1,    -1,    -1,   100,    54,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
+      -1,    54,    88,    89,    90,    91,    92,    93,    94,    62,
       63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    -1,    -1,    44,    -1,    -1,    -1,    82,    83,
-      84,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
+      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
+      -1,    -1,    -1,    -1,    54,    88,    89,    90,    91,    92,
       93,    94,    62,    63,    64,    65,    66,    67,    -1,    69,
-      70,    71,    72,    73,    74,    -1,    -1,    -1,    -1,    46,
-      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
+      -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
+      -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,
       90,    91,    92,    93,    94,    62,    63,    64,    65,    66,
       67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
       -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
-      54,    88,    89,    90,    91,    92,    93,    94,    62,    63,
+      -1,    88,    89,    90,    91,    92,    93,    94,    62,    63,
       64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
       74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    -1,    54,    88,    89,    90,    91,    92,    93,
+      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
       94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
       -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,
+      48,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
       91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
       -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
-      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,
+      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
       88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
       65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
-      -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
       62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,
+      72,    73,    74,    88,    89,    90,    91,    92,    93,    94,
       -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,
-      89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    62,
-      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    54,    88,    89,    90,    91,    92,
-      93,    94,    62,    63,    64,    65,    66,    67,    -1,    69,
-      -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    91,    92,    93,    94,    56,    96,    -1,    -1,    -1,
-      -1,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    62,    63,    64,    65,    66,    67,
-      -1,    69,    -1,    -1,    72,    73,    74,    88,    89,    90,
-      91,    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    91,    92,    93,    94,    -1,    -1,    -1,
-      98,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    80,
-      81,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
+      92,    93,    94,    -1,    -1,    56,    -1,    -1,    -1,    -1,
+     102,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
+      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
       91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
-      -1,    69,    -1,    -1,    72,    73,    74,    62,    63,    64,
-      65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
-      88,    89,    90,    91,    92,    93,    94,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94
+      -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
+      -1,    -1,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
+      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
+      62,    63,    64,    65,    -1,    -1,    -1,    69,    -1,    -1,
+      72,    73,    74,    88,    89,    90,    91,    92,    93,    94,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
+      92,    93,    94
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1431,90 +1575,91 @@ static const yytype_uint8 yystos[] =
 {
        0,    24,    28,    29,    38,    39,    40,    41,    42,    45,
       47,    50,    51,    52,    55,    58,    59,    60,    61,    82,
-      83,    84,   104,   105,   106,   107,   108,   120,   126,   134,
-     142,   144,   146,   149,     1,    14,    17,    18,    21,    22,
-      23,    24,    25,    26,    30,    31,    32,    33,    34,    68,
-      75,    76,    77,    78,    79,    91,    92,    97,   100,   129,
-     130,   132,   133,   154,   156,   145,   148,    51,   135,    46,
-      47,    48,    49,    97,   130,   143,   147,    51,    20,   130,
-      56,    57,    17,    18,    19,    24,    30,    24,    24,   130,
-     130,   143,   137,   130,   136,   150,     0,    96,   130,   127,
-      96,    24,   129,    48,   129,    97,   130,   130,   130,   130,
-     130,   130,   130,   130,    24,   130,   154,    24,    25,    26,
-     102,   130,   157,   158,   159,   160,    62,    63,    64,    65,
-      66,    67,    69,    72,    73,    74,    88,    89,    90,    91,
-      92,    93,    94,    99,   154,   127,    24,   139,   130,    46,
-     130,   143,    24,    24,    44,    70,    71,    24,   127,    54,
-      64,   129,   129,    54,    64,    54,    64,    53,    56,   143,
-      24,   141,    54,    96,    24,   140,    24,   104,   123,    24,
-     151,   129,    24,   154,    48,    54,    48,    54,    48,    54,
-      48,    54,    80,    81,    98,    99,    98,    98,   102,   102,
-     102,   101,    99,    99,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   151,    99,   130,   127,   129,    24,   132,    24,
-     132,    24,   132,    43,    64,   130,   130,   130,    54,    64,
-      48,   130,   130,   130,   130,   130,   130,    99,   119,   119,
-      99,    53,    96,    99,    98,    99,    98,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   138,   130,   130,
-     130,   130,    24,    25,    26,   160,    96,    24,   151,    44,
-     130,   130,   123,   130,   130,    24,    24,   107,   128,    24,
-     128,   153,    24,   131,    48,    48,    48,    48,   130,   155,
-     153,    96,   130,   115,   109,   112,   118,   129,   127,    96,
-     108,   127,   124,   128,   155,   130,   130,   130,   130,    98,
-      99,   128,   153,   127,   125,   125,   128,    54,    64,    87,
-     121,    27,    98,   130,   128,   116,   110,   113,   124,   130,
-     130,    36,    37,   122,   127,    24,   152,   123,    54,    35,
-      86,   128,   130,    85,    99,   117,   130,    54,   127,   123,
-      24,   118,   111,   130,    85,    53,   128,   123,   114,   128,
-      86,   118,   123,   124,   128,   118,    86,   128,    86
+      83,    84,    96,    97,    98,    99,   108,   109,   110,   111,
+     112,   113,   125,   131,   140,   148,   150,   152,   155,   151,
+     154,    51,   141,     1,    14,    17,    18,    21,    22,    23,
+      25,    26,    30,    46,    47,    48,    49,    68,    75,    76,
+      77,    78,    79,    91,    92,    96,    97,    98,    99,   101,
+     104,   110,   134,   136,   137,   138,   139,   149,   162,   153,
+      51,    20,   137,    56,    57,    17,    18,    19,    30,   110,
+     110,   110,   137,   137,   149,   143,   137,   142,   156,     0,
+     100,   101,   137,   160,   137,   132,   160,   132,   110,   145,
+     100,   136,    48,   136,   137,    46,   137,   137,   137,   137,
+     137,   137,   136,   136,   134,   134,   134,   134,   137,    25,
+      26,   106,   110,   137,   163,   164,   165,   166,   101,    62,
+      63,    64,    65,    66,    67,    69,    72,    73,    74,    88,
+      89,    90,    91,    92,    93,    94,   149,   110,   110,    44,
+      70,    71,   110,   132,    54,    64,   136,   136,    54,    64,
+      54,    64,    53,    56,   149,   110,   147,    54,   100,   110,
+     146,   110,   108,   110,   137,   160,   103,   128,   110,   157,
+     157,   103,   136,   137,    48,    54,    48,    54,    48,    54,
+      48,    54,    80,    81,   102,   106,   106,   106,   105,   103,
+     103,   110,   160,   137,   137,   137,   137,   137,   137,   137,
+     137,   137,   137,   137,   137,   137,   137,   137,   137,   137,
+     132,   136,   110,   138,   110,   138,   110,   138,    43,    64,
+     137,   137,   137,    54,    64,    48,   137,   137,   137,   137,
+     137,   137,   103,   124,   124,   103,   102,   103,   102,   137,
+      53,   100,   103,   100,   110,   137,   137,   137,   137,   137,
+     137,   137,   137,   137,   137,   137,   137,   137,   137,    25,
+      26,   110,   166,   102,   103,   102,   157,    44,   137,   137,
+     128,   137,   137,   110,   110,   112,   133,   110,   144,   133,
+     159,   110,   159,    48,    48,    48,    48,   135,   100,   137,
+     120,   114,   117,   123,   136,   132,   100,   113,   132,   137,
+     161,   129,   133,   133,   137,   137,   137,   137,   161,   159,
+     132,   130,   130,   133,    54,    64,    87,   102,   103,   126,
+      27,   102,   133,   121,   115,   118,   129,   137,   137,   137,
+      36,    37,   127,   132,   110,   158,   128,    54,    35,    86,
+     133,   137,    85,   103,   122,   137,    54,   132,   128,   110,
+     123,   116,   137,    85,    53,   133,   128,   119,   133,    86,
+     123,   128,   129,   133,   123,    86,   133,    86
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   103,   104,   104,   105,   105,   105,   106,   106,   106,
-     106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
-     106,   106,   106,   106,   107,   107,   108,   108,   108,   109,
-     110,   111,   108,   112,   113,   114,   108,   115,   116,   117,
-     108,   108,   108,   108,   108,   118,   119,   120,   120,   121,
-     121,   122,   123,   124,   125,   126,   127,   128,   128,   128,
-     129,   129,   129,   129,   129,   129,   129,   129,   129,   129,
-     130,   130,   130,   131,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
-     130,   132,   132,   132,   132,   132,   132,   132,   132,   132,
-     133,   133,   133,   133,   134,   134,   134,   134,   134,   135,
-     134,   136,   134,   137,   134,   134,   134,   134,   138,   134,
-     134,   134,   139,   139,   140,   140,   141,   141,   142,   142,
-     142,   142,   142,   142,   143,   143,   144,   144,   144,   145,
-     144,   147,   146,   146,   148,   146,   146,   146,   150,   149,
-     151,   151,   151,   152,   152,   152,   153,   154,   154,   154,
-     155,   155,   156,   157,   157,   157,   157,   158,   158,   159,
-     159,   160,   160,   160
+       0,   107,   108,   108,   109,   109,   109,   110,   110,   110,
+     110,   110,   111,   111,   111,   111,   111,   111,   111,   111,
+     111,   111,   111,   111,   111,   111,   111,   111,   111,   112,
+     112,   113,   113,   113,   114,   115,   116,   113,   117,   118,
+     119,   113,   120,   121,   122,   113,   113,   113,   113,   113,
+     123,   124,   125,   125,   126,   126,   127,   128,   129,   130,
+     131,   132,   133,   133,   133,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     134,   135,   134,   134,   134,   134,   136,   136,   137,   137,
+     137,   137,   137,   137,   137,   137,   137,   137,   137,   137,
+     137,   137,   137,   137,   137,   137,   137,   138,   138,   138,
+     138,   138,   138,   138,   138,   138,   139,   139,   139,   139,
+     140,   140,   140,   140,   140,   141,   140,   142,   140,   143,
+     140,   140,   140,   140,   144,   140,   140,   140,   145,   145,
+     146,   146,   147,   147,   148,   148,   148,   148,   148,   148,
+     149,   149,   150,   150,   150,   151,   150,   153,   152,   152,
+     154,   152,   152,   152,   156,   155,   157,   157,   157,   158,
+     158,   158,   159,   160,   160,   160,   161,   161,   162,   163,
+     163,   163,   163,   164,   164,   165,   165,   166,   166,   166
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_int8 yyr2[] =
 {
-       0,     2,     1,     3,     0,     1,     1,     4,     4,     6,
-       4,     4,     4,     4,     4,     4,     4,     4,     5,     5,
-       8,     8,     4,     4,     1,     1,     1,     1,     9,     0,
-       0,     0,    15,     0,     0,     0,    16,     0,     0,     0,
-      13,     2,     4,     7,     6,     0,     0,     9,    11,     0,
-       2,     6,     0,     0,     0,     1,     0,     0,     2,     2,
-       1,     1,     1,     1,     1,     1,     2,     3,     1,     2,
-       1,     1,     4,     0,     7,     4,     2,     3,     1,     3,
+       0,     2,     1,     3,     0,     1,     1,     1,     1,     1,
+       1,     1,     4,     4,     6,     4,     4,     4,     4,     4,
+       4,     4,     4,     5,     5,     8,     8,     4,     4,     1,
+       1,     1,     1,     9,     0,     0,     0,    15,     0,     0,
+       0,    16,     0,     0,     0,    13,     2,     4,     7,     6,
+       0,     0,     9,    11,     0,     2,     6,     0,     0,     0,
+       1,     0,     0,     2,     2,     1,     1,     2,     2,     1,
+       1,     1,     1,     2,     2,     3,     1,     4,     4,     1,
+       4,     0,     7,     4,     1,     2,     1,     3,     1,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     2,     3,     3,     3,     3,     2,     2,     4,
-       4,     1,     4,     6,     4,     6,     4,     6,     4,     6,
-       1,     1,     1,     1,     2,     1,     1,     2,     1,     0,
-       3,     0,     3,     0,     3,     4,     2,     4,     0,     7,
-       4,     2,     1,     3,     1,     3,     1,     3,     1,     2,
-       2,     2,     3,     2,     3,     2,     2,     3,     2,     0,
-       3,     0,     8,     2,     0,     7,     8,     6,     0,     3,
-       0,     1,     3,     0,     1,     3,     0,     0,     1,     3,
-       1,     3,     3,     0,     1,     1,     1,     1,     3,     1,
-       3,     3,     3,     3
+       3,     3,     2,     3,     3,     3,     3,     2,     4,     6,
+       4,     6,     4,     6,     4,     6,     1,     2,     2,     2,
+       2,     1,     1,     2,     1,     0,     3,     0,     3,     0,
+       3,     4,     2,     4,     0,     7,     4,     2,     1,     3,
+       1,     3,     1,     3,     1,     2,     2,     2,     3,     2,
+       3,     2,     2,     3,     2,     0,     3,     0,     8,     2,
+       0,     7,     8,     6,     0,     3,     0,     1,     3,     0,
+       1,     3,     0,     0,     1,     3,     1,     3,     3,     0,
+       1,     1,     1,     1,     3,     1,     3,     3,     3,     3
 };
 
 
@@ -1786,57 +1931,63 @@ yydestruct (const char *yymsg,
   switch (yykind)
     {
     case 22: /* THEFUNC  */
-#line 214 "engines/director/lingo/lingo-gr.y"
+#line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1792 "engines/director/lingo/lingo-gr.cpp"
+#line 1937 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* THEFUNCINOF  */
-#line 214 "engines/director/lingo/lingo-gr.y"
+#line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1798 "engines/director/lingo/lingo-gr.cpp"
+#line 1943 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 24: /* ID  */
-#line 214 "engines/director/lingo/lingo-gr.y"
+    case 24: /* VARID  */
+#line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1804 "engines/director/lingo/lingo-gr.cpp"
+#line 1949 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* STRING  */
-#line 214 "engines/director/lingo/lingo-gr.y"
+#line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1810 "engines/director/lingo/lingo-gr.cpp"
+#line 1955 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* SYMBOL  */
-#line 214 "engines/director/lingo/lingo-gr.y"
+#line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1816 "engines/director/lingo/lingo-gr.cpp"
+#line 1961 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* ENDCLAUSE  */
-#line 214 "engines/director/lingo/lingo-gr.y"
+#line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1822 "engines/director/lingo/lingo-gr.cpp"
+#line 1967 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* tPLAYACCEL  */
-#line 214 "engines/director/lingo/lingo-gr.y"
+#line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1828 "engines/director/lingo/lingo-gr.cpp"
+#line 1973 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* tMETHOD  */
-#line 214 "engines/director/lingo/lingo-gr.y"
+#line 210 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).s); }
+#line 1979 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case 110: /* ID  */
+#line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1834 "engines/director/lingo/lingo-gr.cpp"
+#line 1985 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 149: /* on  */
-#line 214 "engines/director/lingo/lingo-gr.y"
+    case 155: /* on  */
+#line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1840 "engines/director/lingo/lingo-gr.cpp"
+#line 1991 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2114,8 +2265,32 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-  case 7:
+  case 8:
+#line 222 "engines/director/lingo/lingo-gr.y"
+                                { (yyval.s) = new Common::String("cast"); }
+#line 2272 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 9:
+#line 223 "engines/director/lingo/lingo-gr.y"
+                                { (yyval.s) = new Common::String("field"); }
+#line 2278 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 10:
+#line 224 "engines/director/lingo/lingo-gr.y"
+                                { (yyval.s) = new Common::String("script"); }
+#line 2284 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 11:
 #line 225 "engines/director/lingo/lingo-gr.y"
+                                { (yyval.s) = new Common::String("window"); }
+#line 2290 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 12:
+#line 227 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2123,19 +2298,19 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2127 "engines/director/lingo/lingo-gr.cpp"
+#line 2302 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 8:
-#line 232 "engines/director/lingo/lingo-gr.y"
+  case 13:
+#line 234 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2135 "engines/director/lingo/lingo-gr.cpp"
+#line 2310 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 9:
-#line 236 "engines/director/lingo/lingo-gr.y"
+  case 14:
+#line 238 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2147,11 +2322,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2151 "engines/director/lingo/lingo-gr.cpp"
+#line 2326 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 10:
-#line 247 "engines/director/lingo/lingo-gr.y"
+  case 15:
+#line 249 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2159,19 +2334,19 @@ yyreduce:
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2163 "engines/director/lingo/lingo-gr.cpp"
+#line 2338 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 11:
-#line 254 "engines/director/lingo/lingo-gr.y"
+  case 16:
+#line 256 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2171 "engines/director/lingo/lingo-gr.cpp"
+#line 2346 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 12:
-#line 257 "engines/director/lingo/lingo-gr.y"
+  case 17:
+#line 259 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
@@ -2179,19 +2354,19 @@ yyreduce:
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2183 "engines/director/lingo/lingo-gr.cpp"
+#line 2358 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 13:
-#line 264 "engines/director/lingo/lingo-gr.y"
+  case 18:
+#line 266 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2191 "engines/director/lingo/lingo-gr.cpp"
+#line 2366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 14:
-#line 267 "engines/director/lingo/lingo-gr.y"
+  case 19:
+#line 269 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -2199,11 +2374,11 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2203 "engines/director/lingo/lingo-gr.cpp"
+#line 2378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 15:
-#line 274 "engines/director/lingo/lingo-gr.y"
+  case 20:
+#line 276 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2211,11 +2386,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2215 "engines/director/lingo/lingo-gr.cpp"
+#line 2390 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 16:
-#line 281 "engines/director/lingo/lingo-gr.y"
+  case 21:
+#line 283 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
@@ -2223,11 +2398,11 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2227 "engines/director/lingo/lingo-gr.cpp"
+#line 2402 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 17:
-#line 288 "engines/director/lingo/lingo-gr.y"
+  case 22:
+#line 290 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2235,33 +2410,33 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2239 "engines/director/lingo/lingo-gr.cpp"
+#line 2414 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 18:
-#line 295 "engines/director/lingo/lingo-gr.y"
+  case 23:
+#line 297 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2250 "engines/director/lingo/lingo-gr.cpp"
+#line 2425 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 19:
-#line 301 "engines/director/lingo/lingo-gr.y"
+  case 24:
+#line 303 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_swap);
 		g_lingo->code1(LC::c_theentityassign);
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2261 "engines/director/lingo/lingo-gr.cpp"
+#line 2436 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 20:
-#line 308 "engines/director/lingo/lingo-gr.y"
+  case 25:
+#line 310 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2273,11 +2448,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2277 "engines/director/lingo/lingo-gr.cpp"
+#line 2452 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 21:
-#line 319 "engines/director/lingo/lingo-gr.y"
+  case 26:
+#line 321 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		if (!(yyvsp[-3].s)->equalsIgnoreCase("menu")) {
 			warning("LEXER: keyword 'menu' expected");
@@ -2289,11 +2464,11 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2293 "engines/director/lingo/lingo-gr.cpp"
+#line 2468 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 22:
-#line 330 "engines/director/lingo/lingo-gr.y"
+  case 27:
+#line 332 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectpropassign);
 		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
@@ -2301,11 +2476,11 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2305 "engines/director/lingo/lingo-gr.cpp"
+#line 2480 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 23:
-#line 337 "engines/director/lingo/lingo-gr.y"
+  case 28:
+#line 339 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_objectpropassign);
 		g_lingo->codeString((yyvsp[-2].objectprop).obj->c_str());
@@ -2313,11 +2488,11 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2317 "engines/director/lingo/lingo-gr.cpp"
+#line 2492 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 28:
-#line 354 "engines/director/lingo/lingo-gr.y"
+  case 33:
+#line 356 "engines/director/lingo/lingo-gr.y"
                                                                                                 {
 		inst start = 0, end = 0;
 		WRITE_UINT32(&start, (yyvsp[-6].code) - (yyvsp[-1].code) + 1);
@@ -2325,32 +2500,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2329 "engines/director/lingo/lingo-gr.cpp"
+#line 2504 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 29:
-#line 367 "engines/director/lingo/lingo-gr.y"
+  case 34:
+#line 369 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2337 "engines/director/lingo/lingo-gr.cpp"
+#line 2512 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 30:
-#line 371 "engines/director/lingo/lingo-gr.y"
+  case 35:
+#line 373 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2344 "engines/director/lingo/lingo-gr.cpp"
+#line 2519 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 31:
-#line 374 "engines/director/lingo/lingo-gr.y"
+  case 36:
+#line 376 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2350 "engines/director/lingo/lingo-gr.cpp"
+#line 2525 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 32:
-#line 374 "engines/director/lingo/lingo-gr.y"
+  case 37:
+#line 376 "engines/director/lingo/lingo-gr.y"
                                                                                                       {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2371,32 +2546,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2375 "engines/director/lingo/lingo-gr.cpp"
+#line 2550 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 33:
-#line 401 "engines/director/lingo/lingo-gr.y"
+  case 38:
+#line 403 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2383 "engines/director/lingo/lingo-gr.cpp"
+#line 2558 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 34:
-#line 405 "engines/director/lingo/lingo-gr.y"
+  case 39:
+#line 407 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2390 "engines/director/lingo/lingo-gr.cpp"
+#line 2565 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 35:
-#line 408 "engines/director/lingo/lingo-gr.y"
+  case 40:
+#line 410 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2396 "engines/director/lingo/lingo-gr.cpp"
+#line 2571 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 36:
-#line 409 "engines/director/lingo/lingo-gr.y"
+  case 41:
+#line 411 "engines/director/lingo/lingo-gr.y"
                                                                 {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2417,32 +2592,32 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2421 "engines/director/lingo/lingo-gr.cpp"
+#line 2596 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 37:
-#line 435 "engines/director/lingo/lingo-gr.y"
+  case 42:
+#line 437 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);
 				  g_lingo->codeInt(0);
 				  Common::String count("count");
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2432 "engines/director/lingo/lingo-gr.cpp"
+#line 2607 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 38:
-#line 442 "engines/director/lingo/lingo-gr.y"
+  case 43:
+#line 444 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get counter
 				  g_lingo->codeInt(0);
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2442 "engines/director/lingo/lingo-gr.cpp"
+#line 2617 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 39:
-#line 448 "engines/director/lingo/lingo-gr.y"
+  case 44:
+#line 450 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_stackpeek);	// get list
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_stackpeek);	// get counter
@@ -2453,11 +2628,11 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2457 "engines/director/lingo/lingo-gr.cpp"
+#line 2632 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 40:
-#line 458 "engines/director/lingo/lingo-gr.y"
+  case 45:
+#line 460 "engines/director/lingo/lingo-gr.y"
                                                         {
 
 		int nextPos = g_lingo->_currentAssembly->size();
@@ -2477,11 +2652,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2481 "engines/director/lingo/lingo-gr.cpp"
+#line 2656 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 41:
-#line 478 "engines/director/lingo/lingo-gr.y"
+  case 46:
+#line 480 "engines/director/lingo/lingo-gr.y"
                         {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -2490,43 +2665,43 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2494 "engines/director/lingo/lingo-gr.cpp"
+#line 2669 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 42:
-#line 486 "engines/director/lingo/lingo-gr.y"
+  case 47:
+#line 488 "engines/director/lingo/lingo-gr.y"
                               {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2502 "engines/director/lingo/lingo-gr.cpp"
+#line 2677 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 43:
-#line 489 "engines/director/lingo/lingo-gr.y"
+  case 48:
+#line 491 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2508 "engines/director/lingo/lingo-gr.cpp"
+#line 2683 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 44:
-#line 490 "engines/director/lingo/lingo-gr.y"
+  case 49:
+#line 492 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2514 "engines/director/lingo/lingo-gr.cpp"
+#line 2689 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 45:
-#line 492 "engines/director/lingo/lingo-gr.y"
+  case 50:
+#line 494 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2520 "engines/director/lingo/lingo-gr.cpp"
+#line 2695 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 46:
-#line 494 "engines/director/lingo/lingo-gr.y"
+  case 51:
+#line 496 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2526 "engines/director/lingo/lingo-gr.cpp"
+#line 2701 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 47:
-#line 496 "engines/director/lingo/lingo-gr.y"
+  case 52:
+#line 498 "engines/director/lingo/lingo-gr.y"
                                                                                          {
 		inst else1 = 0, end3 = 0;
 		WRITE_UINT32(&else1, (yyvsp[-3].code) + 1 - (yyvsp[-6].code) + 1);
@@ -2534,11 +2709,11 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2538 "engines/director/lingo/lingo-gr.cpp"
+#line 2713 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 48:
-#line 503 "engines/director/lingo/lingo-gr.y"
+  case 53:
+#line 505 "engines/director/lingo/lingo-gr.y"
                                                                                                           {
 		inst else1 = 0, end = 0;
 		WRITE_UINT32(&else1, (yyvsp[-5].code) + 1 - (yyvsp[-8].code) + 1);
@@ -2546,111 +2721,110 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2550 "engines/director/lingo/lingo-gr.cpp"
+#line 2725 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 51:
-#line 514 "engines/director/lingo/lingo-gr.y"
+  case 56:
+#line 516 "engines/director/lingo/lingo-gr.y"
                                                                 {
 		inst else1 = 0;
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2560 "engines/director/lingo/lingo-gr.cpp"
+#line 2735 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 52:
-#line 520 "engines/director/lingo/lingo-gr.y"
+  case 57:
+#line 522 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2568 "engines/director/lingo/lingo-gr.cpp"
+#line 2743 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 53:
-#line 524 "engines/director/lingo/lingo-gr.y"
+  case 58:
+#line 526 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2576 "engines/director/lingo/lingo-gr.cpp"
+#line 2751 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 54:
-#line 528 "engines/director/lingo/lingo-gr.y"
+  case 59:
+#line 530 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2584 "engines/director/lingo/lingo-gr.cpp"
+#line 2759 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 55:
-#line 532 "engines/director/lingo/lingo-gr.y"
+  case 60:
+#line 534 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2591 "engines/director/lingo/lingo-gr.cpp"
+#line 2766 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 56:
-#line 535 "engines/director/lingo/lingo-gr.y"
+  case 61:
+#line 537 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2597 "engines/director/lingo/lingo-gr.cpp"
+#line 2772 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 57:
-#line 537 "engines/director/lingo/lingo-gr.y"
+  case 62:
+#line 539 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2603 "engines/director/lingo/lingo-gr.cpp"
+#line 2778 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 60:
-#line 541 "engines/director/lingo/lingo-gr.y"
-                        {
+  case 65:
+#line 543 "engines/director/lingo/lingo-gr.y"
+                                {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2611 "engines/director/lingo/lingo-gr.cpp"
+#line 2786 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 61:
-#line 544 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 546 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2619 "engines/director/lingo/lingo-gr.cpp"
+#line 2794 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 62:
-#line 547 "engines/director/lingo/lingo-gr.y"
-                        {											// D3
-		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
-		g_lingo->codeString((yyvsp[0].s)->c_str());
-		delete (yyvsp[0].s); }
-#line 2628 "engines/director/lingo/lingo-gr.cpp"
+  case 67:
+#line 549 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.code) = (yyvsp[0].code); }
+#line 2800 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 63:
+  case 68:
+#line 550 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
+#line 2806 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 69:
 #line 551 "engines/director/lingo/lingo-gr.y"
-                                {
-		(yyval.code) = g_lingo->code1(LC::c_stringpush);
+                        {											// D3
+		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2637 "engines/director/lingo/lingo-gr.cpp"
+#line 2815 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 64:
+  case 70:
 #line 555 "engines/director/lingo/lingo-gr.y"
-                        {
-		if (g_lingo->_builtinConsts.contains(*(yyvsp[0].s))) {
-			(yyval.code) = g_lingo->code1(LC::c_constpush);
-		} else {
-			(yyval.code) = g_lingo->code1(LC::c_eval);
-		}
+                                {
+		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2650 "engines/director/lingo/lingo-gr.cpp"
+#line 2824 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 563 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 560 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2659,351 +2833,320 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2663 "engines/director/lingo/lingo-gr.cpp"
+#line 2837 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 571 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 568 "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 2674 "engines/director/lingo/lingo-gr.cpp"
+#line 2848 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
+  case 74:
+#line 574 "engines/director/lingo/lingo-gr.y"
+                                        {
+		(yyval.code) = g_lingo->codeFunc((yyvsp[-1].s), 1);
+		delete (yyvsp[-1].s); }
+#line 2856 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 75:
 #line 577 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.code) = (yyvsp[-1].code); }
-#line 2680 "engines/director/lingo/lingo-gr.cpp"
+                                        {
+		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
+		delete (yyvsp[-2].s); }
+#line 2864 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 579 "engines/director/lingo/lingo-gr.y"
-                                { yyerrok; }
-#line 2686 "engines/director/lingo/lingo-gr.cpp"
+  case 76:
+#line 580 "engines/director/lingo/lingo-gr.y"
+                        {
+		g_lingo->code1(LC::c_objectproppush);
+		g_lingo->codeString((yyvsp[0].objectprop).obj->c_str());
+		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
+		delete (yyvsp[0].objectprop).obj;
+		delete (yyvsp[0].objectprop).prop; }
+#line 2875 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 581 "engines/director/lingo/lingo-gr.y"
-                 { (yyval.code) = (yyvsp[0].code); }
-#line 2692 "engines/director/lingo/lingo-gr.cpp"
+  case 77:
+#line 586 "engines/director/lingo/lingo-gr.y"
+                                        { g_lingo->code1(LC::c_intersects); }
+#line 2881 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 583 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 587 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_within); }
+#line 2887 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 80:
+#line 589 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2703 "engines/director/lingo/lingo-gr.cpp"
+#line 2898 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 595 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2709 "engines/director/lingo/lingo-gr.cpp"
+#line 2904 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 590 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 596 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2718 "engines/director/lingo/lingo-gr.cpp"
+#line 2913 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 594 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 600 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2726 "engines/director/lingo/lingo-gr.cpp"
+#line 2921 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 597 "engines/director/lingo/lingo-gr.y"
-                                        {
-		(yyval.code) = g_lingo->codeFunc((yyvsp[-1].s), 1);
-		delete (yyvsp[-1].s); }
-#line 2734 "engines/director/lingo/lingo-gr.cpp"
+  case 84:
+#line 603 "engines/director/lingo/lingo-gr.y"
+                        {
+		if (g_lingo->_builtinConsts.contains(*(yyvsp[0].s))) {
+			(yyval.code) = g_lingo->code1(LC::c_constpush);
+		} else {
+			(yyval.code) = g_lingo->code1(LC::c_eval);
+		}
+		g_lingo->codeString((yyvsp[0].s)->c_str());
+		delete (yyvsp[0].s); }
+#line 2934 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 600 "engines/director/lingo/lingo-gr.y"
-                                        {
-		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
-		delete (yyvsp[-2].s); }
-#line 2742 "engines/director/lingo/lingo-gr.cpp"
+  case 85:
+#line 611 "engines/director/lingo/lingo-gr.y"
+                                { yyerrok; }
+#line 2940 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 603 "engines/director/lingo/lingo-gr.y"
-                        {
-		g_lingo->code1(LC::c_objectproppush);
-		g_lingo->codeString((yyvsp[0].objectprop).obj->c_str());
-		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
-		delete (yyvsp[0].objectprop).obj;
-		delete (yyvsp[0].objectprop).prop; }
-#line 2753 "engines/director/lingo/lingo-gr.cpp"
+  case 87:
+#line 614 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.code) = (yyvsp[-1].code); }
+#line 2946 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 88:
+#line 616 "engines/director/lingo/lingo-gr.y"
+                 { (yyval.code) = (yyvsp[0].code); }
+#line 2952 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 609 "engines/director/lingo/lingo-gr.y"
+  case 89:
+#line 617 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2759 "engines/director/lingo/lingo-gr.cpp"
+#line 2958 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 610 "engines/director/lingo/lingo-gr.y"
+  case 90:
+#line 618 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2765 "engines/director/lingo/lingo-gr.cpp"
+#line 2964 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 611 "engines/director/lingo/lingo-gr.y"
+  case 91:
+#line 619 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2771 "engines/director/lingo/lingo-gr.cpp"
+#line 2970 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 612 "engines/director/lingo/lingo-gr.y"
+  case 92:
+#line 620 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2777 "engines/director/lingo/lingo-gr.cpp"
+#line 2976 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 613 "engines/director/lingo/lingo-gr.y"
+  case 93:
+#line 621 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2783 "engines/director/lingo/lingo-gr.cpp"
+#line 2982 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 614 "engines/director/lingo/lingo-gr.y"
+  case 94:
+#line 622 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2789 "engines/director/lingo/lingo-gr.cpp"
+#line 2988 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 615 "engines/director/lingo/lingo-gr.y"
+  case 95:
+#line 623 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2795 "engines/director/lingo/lingo-gr.cpp"
+#line 2994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 616 "engines/director/lingo/lingo-gr.y"
+  case 96:
+#line 624 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2801 "engines/director/lingo/lingo-gr.cpp"
+#line 3000 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
-#line 617 "engines/director/lingo/lingo-gr.y"
+  case 97:
+#line 625 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2807 "engines/director/lingo/lingo-gr.cpp"
+#line 3006 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
-#line 618 "engines/director/lingo/lingo-gr.y"
+  case 98:
+#line 626 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2813 "engines/director/lingo/lingo-gr.cpp"
+#line 3012 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
-#line 619 "engines/director/lingo/lingo-gr.y"
+  case 99:
+#line 627 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2819 "engines/director/lingo/lingo-gr.cpp"
+#line 3018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
-#line 620 "engines/director/lingo/lingo-gr.y"
+  case 100:
+#line 628 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2825 "engines/director/lingo/lingo-gr.cpp"
+#line 3024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
-#line 621 "engines/director/lingo/lingo-gr.y"
+  case 101:
+#line 629 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2831 "engines/director/lingo/lingo-gr.cpp"
+#line 3030 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
-#line 622 "engines/director/lingo/lingo-gr.y"
+  case 102:
+#line 630 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2837 "engines/director/lingo/lingo-gr.cpp"
+#line 3036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
-#line 623 "engines/director/lingo/lingo-gr.y"
+  case 103:
+#line 631 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2843 "engines/director/lingo/lingo-gr.cpp"
+#line 3042 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
-#line 624 "engines/director/lingo/lingo-gr.y"
+  case 104:
+#line 632 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2849 "engines/director/lingo/lingo-gr.cpp"
+#line 3048 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 625 "engines/director/lingo/lingo-gr.y"
+  case 105:
+#line 633 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2855 "engines/director/lingo/lingo-gr.cpp"
+#line 3054 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 626 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 634 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2861 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 97:
-#line 627 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.code) = (yyvsp[0].code); }
-#line 2867 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 98:
-#line 628 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2873 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 99:
-#line 629 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_intersects); }
-#line 2879 "engines/director/lingo/lingo-gr.cpp"
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
-#line 630 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_within); }
-#line 2885 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 101:
-#line 632 "engines/director/lingo/lingo-gr.y"
-                                                {
-		if ((yyvsp[0].ref).s) {
-			(yyval.code) = g_lingo->code1(LC::c_stringpush);
-			g_lingo->codeString((yyvsp[0].ref).s->c_str());
-			delete (yyvsp[0].ref).s;
-		} else {
-			(yyval.code) = g_lingo->code1(LC::c_intpush);
-			g_lingo->codeInt((yyvsp[0].ref).i);
-		}
+  case 107:
+#line 636 "engines/director/lingo/lingo-gr.y"
+                                        {
 		Common::String field("field");
 		g_lingo->codeFunc(&field, 1); }
-#line 2901 "engines/director/lingo/lingo-gr.cpp"
+#line 3068 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
-#line 643 "engines/director/lingo/lingo-gr.y"
+  case 108:
+#line 639 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charOf); }
-#line 2907 "engines/director/lingo/lingo-gr.cpp"
+#line 3074 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
-#line 644 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 640 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 2913 "engines/director/lingo/lingo-gr.cpp"
+#line 3080 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 104:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 641 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 2919 "engines/director/lingo/lingo-gr.cpp"
+#line 3086 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 646 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 642 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 2925 "engines/director/lingo/lingo-gr.cpp"
+#line 3092 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 106:
-#line 647 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 643 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 2931 "engines/director/lingo/lingo-gr.cpp"
+#line 3098 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 107:
-#line 648 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 644 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 2937 "engines/director/lingo/lingo-gr.cpp"
+#line 3104 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 649 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 645 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 2943 "engines/director/lingo/lingo-gr.cpp"
+#line 3110 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 650 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 646 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 2949 "engines/director/lingo/lingo-gr.cpp"
+#line 3116 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 653 "engines/director/lingo/lingo-gr.y"
-                                        {
-		if ((yyvsp[0].ref).s) {
-			(yyval.code) = g_lingo->code1(LC::c_stringpush);
-			g_lingo->codeString((yyvsp[0].ref).s->c_str());
-			delete (yyvsp[0].ref).s;
-		} else {
-			(yyval.code) = g_lingo->code1(LC::c_intpush);
-			g_lingo->codeInt((yyvsp[0].ref).i);
-		}
+  case 117:
+#line 649 "engines/director/lingo/lingo-gr.y"
+                                                {
 		Common::String cast("cast");
 		g_lingo->codeFunc(&cast, 1); }
-#line 2965 "engines/director/lingo/lingo-gr.cpp"
+#line 3124 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 664 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 652 "engines/director/lingo/lingo-gr.y"
                                         {
-		if ((yyvsp[0].ref).s) {
-			(yyval.code) = g_lingo->code1(LC::c_stringpush);
-			g_lingo->codeString((yyvsp[0].ref).s->c_str());
-			delete (yyvsp[0].ref).s;
-		} else {
-			(yyval.code) = g_lingo->code1(LC::c_intpush);
-			g_lingo->codeInt((yyvsp[0].ref).i);
-		}
 		Common::String script("script");
 		g_lingo->codeFunc(&script, 1); }
-#line 2981 "engines/director/lingo/lingo-gr.cpp"
+#line 3132 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 675 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 655 "engines/director/lingo/lingo-gr.y"
                                         {
-		if ((yyvsp[0].ref).s) {
-			(yyval.code) = g_lingo->code1(LC::c_stringpush);
-			g_lingo->codeString((yyvsp[0].ref).s->c_str());
-			delete (yyvsp[0].ref).s;
-		} else {
-			(yyval.code) = g_lingo->code1(LC::c_intpush);
-			g_lingo->codeInt((yyvsp[0].ref).i);
-		}
 		Common::String window("window");
 		g_lingo->codeFunc(&window, 1); }
-#line 2997 "engines/director/lingo/lingo-gr.cpp"
+#line 3140 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 688 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 659 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3003 "engines/director/lingo/lingo-gr.cpp"
+#line 3146 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 691 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 662 "engines/director/lingo/lingo-gr.y"
                                                 {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -3012,284 +3155,284 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 3016 "engines/director/lingo/lingo-gr.cpp"
+#line 3159 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 699 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 670 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3022 "engines/director/lingo/lingo-gr.cpp"
+#line 3165 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 700 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 671 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3028 "engines/director/lingo/lingo-gr.cpp"
+#line 3171 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 700 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 671 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 3034 "engines/director/lingo/lingo-gr.cpp"
+#line 3177 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 701 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 672 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3040 "engines/director/lingo/lingo-gr.cpp"
+#line 3183 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 701 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 672 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3046 "engines/director/lingo/lingo-gr.cpp"
+#line 3189 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 702 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 673 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3052 "engines/director/lingo/lingo-gr.cpp"
+#line 3195 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 702 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 673 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3058 "engines/director/lingo/lingo-gr.cpp"
+#line 3201 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 703 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 674 "engines/director/lingo/lingo-gr.y"
                                         {
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 2); }
-#line 3066 "engines/director/lingo/lingo-gr.cpp"
+#line 3209 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 706 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 677 "engines/director/lingo/lingo-gr.y"
                                                 {
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 1); }
-#line 3074 "engines/director/lingo/lingo-gr.cpp"
+#line 3217 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 709 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 680 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeCmd((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 3085 "engines/director/lingo/lingo-gr.cpp"
+#line 3228 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 715 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 686 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 3091 "engines/director/lingo/lingo-gr.cpp"
+#line 3234 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 716 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 687 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeCmd((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 3100 "engines/director/lingo/lingo-gr.cpp"
+#line 3243 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 720 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 691 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeCmd((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3108 "engines/director/lingo/lingo-gr.cpp"
+#line 3251 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 723 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 694 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeCmd((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3116 "engines/director/lingo/lingo-gr.cpp"
+#line 3259 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 727 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 698 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3124 "engines/director/lingo/lingo-gr.cpp"
+#line 3267 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 730 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 701 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3132 "engines/director/lingo/lingo-gr.cpp"
+#line 3275 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 734 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 705 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3140 "engines/director/lingo/lingo-gr.cpp"
+#line 3283 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 737 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 708 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3148 "engines/director/lingo/lingo-gr.cpp"
+#line 3291 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 741 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 712 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3156 "engines/director/lingo/lingo-gr.cpp"
+#line 3299 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 744 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 715 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3164 "engines/director/lingo/lingo-gr.cpp"
+#line 3307 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 755 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 726 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3170 "engines/director/lingo/lingo-gr.cpp"
+#line 3313 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 756 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 727 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3176 "engines/director/lingo/lingo-gr.cpp"
+#line 3319 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 757 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 728 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3182 "engines/director/lingo/lingo-gr.cpp"
+#line 3325 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 758 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 729 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3191 "engines/director/lingo/lingo-gr.cpp"
+#line 3334 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 762 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 733 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3200 "engines/director/lingo/lingo-gr.cpp"
+#line 3343 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 766 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 737 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3209 "engines/director/lingo/lingo-gr.cpp"
+#line 3352 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 774 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 745 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3218 "engines/director/lingo/lingo-gr.cpp"
+#line 3361 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 778 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 749 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3227 "engines/director/lingo/lingo-gr.cpp"
+#line 3370 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 782 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 753 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3236 "engines/director/lingo/lingo-gr.cpp"
+#line 3379 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 786 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 757 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3242 "engines/director/lingo/lingo-gr.cpp"
+#line 3385 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 786 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 757 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3251 "engines/director/lingo/lingo-gr.cpp"
+#line 3394 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 816 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 787 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3257 "engines/director/lingo/lingo-gr.cpp"
+#line 3400 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 817 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 788 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3267 "engines/director/lingo/lingo-gr.cpp"
+#line 3410 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 822 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 793 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3273 "engines/director/lingo/lingo-gr.cpp"
+#line 3416 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 823 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 794 "engines/director/lingo/lingo-gr.y"
                   { startDef(); (*g_lingo->_methodVars)["me"] = kVarArgument; }
-#line 3279 "engines/director/lingo/lingo-gr.cpp"
+#line 3422 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 824 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 795 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3289 "engines/director/lingo/lingo-gr.cpp"
+#line 3432 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 829 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 800 "engines/director/lingo/lingo-gr.y"
                                                                    {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3298,180 +3441,180 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3302 "engines/director/lingo/lingo-gr.cpp"
+#line 3445 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 837 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 808 "engines/director/lingo/lingo-gr.y"
                                                {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3312 "engines/director/lingo/lingo-gr.cpp"
+#line 3455 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 843 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 814 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3318 "engines/director/lingo/lingo-gr.cpp"
+#line 3461 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 843 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 814 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = (yyvsp[0].s); }
-#line 3324 "engines/director/lingo/lingo-gr.cpp"
+#line 3467 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 845 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 816 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3330 "engines/director/lingo/lingo-gr.cpp"
+#line 3473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 846 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 817 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3336 "engines/director/lingo/lingo-gr.cpp"
+#line 3479 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 847 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 818 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3342 "engines/director/lingo/lingo-gr.cpp"
+#line 3485 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 850 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 821 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3348 "engines/director/lingo/lingo-gr.cpp"
+#line 3491 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 851 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 822 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3354 "engines/director/lingo/lingo-gr.cpp"
+#line 3497 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 853 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 824 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3360 "engines/director/lingo/lingo-gr.cpp"
+#line 3503 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 855 "engines/director/lingo/lingo-gr.y"
+  case 173:
+#line 826 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3366 "engines/director/lingo/lingo-gr.cpp"
+#line 3509 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
-#line 856 "engines/director/lingo/lingo-gr.y"
+  case 174:
+#line 827 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3372 "engines/director/lingo/lingo-gr.cpp"
+#line 3515 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 857 "engines/director/lingo/lingo-gr.y"
+  case 175:
+#line 828 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3378 "engines/director/lingo/lingo-gr.cpp"
+#line 3521 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 859 "engines/director/lingo/lingo-gr.y"
+  case 176:
+#line 830 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3384 "engines/director/lingo/lingo-gr.cpp"
+#line 3527 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171:
-#line 860 "engines/director/lingo/lingo-gr.y"
+  case 177:
+#line 831 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3390 "engines/director/lingo/lingo-gr.cpp"
+#line 3533 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172:
-#line 862 "engines/director/lingo/lingo-gr.y"
+  case 178:
+#line 833 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3396 "engines/director/lingo/lingo-gr.cpp"
+#line 3539 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 173:
-#line 864 "engines/director/lingo/lingo-gr.y"
+  case 179:
+#line 835 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3402 "engines/director/lingo/lingo-gr.cpp"
+#line 3545 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 174:
-#line 865 "engines/director/lingo/lingo-gr.y"
+  case 180:
+#line 836 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3408 "engines/director/lingo/lingo-gr.cpp"
+#line 3551 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 175:
-#line 866 "engines/director/lingo/lingo-gr.y"
+  case 181:
+#line 837 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3414 "engines/director/lingo/lingo-gr.cpp"
+#line 3557 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 176:
-#line 867 "engines/director/lingo/lingo-gr.y"
+  case 182:
+#line 838 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3420 "engines/director/lingo/lingo-gr.cpp"
+#line 3563 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 177:
-#line 869 "engines/director/lingo/lingo-gr.y"
+  case 183:
+#line 840 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3426 "engines/director/lingo/lingo-gr.cpp"
+#line 3569 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 178:
-#line 870 "engines/director/lingo/lingo-gr.y"
+  case 184:
+#line 841 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3432 "engines/director/lingo/lingo-gr.cpp"
+#line 3575 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 179:
-#line 872 "engines/director/lingo/lingo-gr.y"
+  case 185:
+#line 843 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3438 "engines/director/lingo/lingo-gr.cpp"
+#line 3581 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 180:
-#line 873 "engines/director/lingo/lingo-gr.y"
+  case 186:
+#line 844 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3444 "engines/director/lingo/lingo-gr.cpp"
+#line 3587 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 181:
-#line 875 "engines/director/lingo/lingo-gr.y"
+  case 187:
+#line 846 "engines/director/lingo/lingo-gr.y"
                           {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3453 "engines/director/lingo/lingo-gr.cpp"
+#line 3596 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 182:
-#line 879 "engines/director/lingo/lingo-gr.y"
+  case 188:
+#line 850 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3462 "engines/director/lingo/lingo-gr.cpp"
+#line 3605 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 183:
-#line 883 "engines/director/lingo/lingo-gr.y"
+  case 189:
+#line 854 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3471 "engines/director/lingo/lingo-gr.cpp"
+#line 3614 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3475 "engines/director/lingo/lingo-gr.cpp"
+#line 3618 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3670,7 +3813,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 889 "engines/director/lingo/lingo-gr.y"
+#line 860 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 5c671bd702..be9df7f0ef 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -75,7 +75,7 @@ extern int yydebug;
     FLOAT = 276,                   /* FLOAT  */
     THEFUNC = 277,                 /* THEFUNC  */
     THEFUNCINOF = 278,             /* THEFUNCINOF  */
-    ID = 279,                      /* ID  */
+    VARID = 279,                   /* VARID  */
     STRING = 280,                  /* STRING  */
     SYMBOL = 281,                  /* SYMBOL  */
     ENDCLAUSE = 282,               /* ENDCLAUSE  */
@@ -138,7 +138,11 @@ extern int yydebug;
     tON = 339,                     /* tON  */
     tENDIF = 340,                  /* tENDIF  */
     tENDREPEAT = 341,              /* tENDREPEAT  */
-    tENDTELL = 342                 /* tENDTELL  */
+    tENDTELL = 342,                /* tENDTELL  */
+    tCAST = 343,                   /* tCAST  */
+    tFIELD = 344,                  /* tFIELD  */
+    tSCRIPT = 345,                 /* tSCRIPT  */
+    tWINDOW = 346                  /* tWINDOW  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -162,12 +166,7 @@ union YYSTYPE
 		Common::String *prop;
 	} objectprop;
 
-	struct {
-		Common::String *s;
-		int i;
-	} ref;
-
-#line 171 "engines/director/lingo/lingo-gr.h"
+#line 170 "engines/director/lingo/lingo-gr.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index d23f1ad07f..43213ae6c5 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -170,11 +170,6 @@ static void mVar(Common::String *s, VarType type) {
 		Common::String *obj;
 		Common::String *prop;
 	} objectprop;
-
-	struct {
-		Common::String *s;
-		int i;
-	} ref;
 }
 
 %token UNARY
@@ -186,7 +181,7 @@ static void mVar(Common::String *s, VarType type) {
 %token<e> THEENTITY THEENTITYWITHID THEMENUITEMENTITY THEMENUITEMSENTITY
 %token<f> FLOAT
 %token<s> THEFUNC THEFUNCINOF
-%token<s> ID STRING SYMBOL
+%token<s> VARID STRING SYMBOL
 %token<s> ENDCLAUSE tPLAYACCEL tMETHOD
 %token<objectprop> THEOBJECTPROP
 %token<ref> CAST FIELD SCRIPT WINDOW
@@ -198,18 +193,19 @@ static void mVar(Common::String *s, VarType type) {
 %token tSPRITE tINTERSECTS tWITHIN tTELL tPROPERTY
 %token tON tENDIF tENDREPEAT tENDTELL
 
-%type<code> asgn lbl expr if chunkexpr
+%type<code> asgn lbl expr if chunkexpr simpleexprnoparens
 %type<code> stmtlist tellstart reference simpleexpr list valuelist
 %type<code> jump jumpifz varassign
 %type<narg> argdef arglist nonemptyarglist linearlist proplist
-%type<s> on
+%type<s> ID on
 
 %left tAND tOR
 %left '<' tLE '>' tGE tEQ tNEQ tCONTAINS tSTARTS
 %left '&' tCONCAT
 %left '+' '-'
 %left '*' '/' '%' tMOD
-%right UNARY
+%right UNARY tCAST tFIELD tSCRIPT tWINDOW
+%nonassoc VARID
 
 %destructor { delete $$; } <s>
 
@@ -222,6 +218,12 @@ programline: /* empty */
 	| defn
 	| stmt
 
+ID: VARID
+	| tCAST			{ $$ = new Common::String("cast"); }
+	| tFIELD		{ $$ = new Common::String("field"); }
+	| tSCRIPT		{ $$ = new Common::String("script"); }
+	| tWINDOW		{ $$ = new Common::String("window"); }
+
 asgn: tPUT expr tINTO ID 		{
 		g_lingo->code1(LC::c_varpush);
 		g_lingo->codeString($ID->c_str());
@@ -538,12 +540,14 @@ stmtlist: 					{ $$ = g_lingo->_currentAssembly->size(); }
 	| stmtlist '\n'
 	| stmtlist stmt
 
-simpleexpr: INT		{
+simpleexprnoparens: INT		{
 		$$ = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt($INT); }
 	| FLOAT		{
 		$$ = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat($FLOAT); }
+	| '+' simpleexpr[arg]  %prec UNARY	{ $$ = $arg; }
+	| '-' simpleexpr[arg]  %prec UNARY	{ $$ = $arg; g_lingo->code1(LC::c_negate); }
 	| SYMBOL	{											// D3
 		$$ = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString($SYMBOL->c_str());
@@ -552,14 +556,7 @@ simpleexpr: INT		{
 		$$ = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString($STRING->c_str());
 		delete $STRING; }
-	| ID		{
-		if (g_lingo->_builtinConsts.contains(*$ID)) {
-			$$ = g_lingo->code1(LC::c_constpush);
-		} else {
-			$$ = g_lingo->code1(LC::c_eval);
-		}
-		g_lingo->codeString($ID->c_str());
-		delete $ID; }
+	| reference
 	| THEENTITY	{
 		$$ = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -574,12 +571,21 @@ simpleexpr: INT		{
 		WRITE_UINT32(&e, $THEENTITYWITHID[0]);
 		WRITE_UINT32(&f, $THEENTITYWITHID[1]);
 		g_lingo->code2(e, f); }
-	| '(' expr[arg] ')'			{ $$ = $arg; }
+	| THEFUNCINOF simpleexpr	{
+		$$ = g_lingo->codeFunc($THEFUNCINOF, 1);
+		delete $THEFUNCINOF; }
+	| THEFUNC tOF simpleexpr	{
+		$$ = g_lingo->codeFunc($THEFUNC, 1);
+		delete $THEFUNC; }
+	| THEOBJECTPROP {
+		g_lingo->code1(LC::c_objectproppush);
+		g_lingo->codeString($THEOBJECTPROP.obj->c_str());
+		g_lingo->codeString($THEOBJECTPROP.prop->c_str());
+		delete $THEOBJECTPROP.obj;
+		delete $THEOBJECTPROP.prop; }
+	| tSPRITE expr tINTERSECTS expr	{ g_lingo->code1(LC::c_intersects); }
+	| tSPRITE expr tWITHIN expr		{ g_lingo->code1(LC::c_within); }
 	| list
-	| error	'\n'		{ yyerrok; }
-
-expr: simpleexpr { $$ = $simpleexpr; }
-	| reference
 	| ID[func] '(' ID[method] ')' {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString($method->c_str());
@@ -594,18 +600,20 @@ expr: simpleexpr { $$ = $simpleexpr; }
 	| ID '(' arglist ')'	{
 		$$ = g_lingo->codeFunc($ID, $arglist);
 		delete $ID; }
-	| THEFUNCINOF simpleexpr	{
-		$$ = g_lingo->codeFunc($THEFUNCINOF, 1);
-		delete $THEFUNCINOF; }
-	| THEFUNC tOF simpleexpr	{
-		$$ = g_lingo->codeFunc($THEFUNC, 1);
-		delete $THEFUNC; }
-	| THEOBJECTPROP {
-		g_lingo->code1(LC::c_objectproppush);
-		g_lingo->codeString($THEOBJECTPROP.obj->c_str());
-		g_lingo->codeString($THEOBJECTPROP.prop->c_str());
-		delete $THEOBJECTPROP.obj;
-		delete $THEOBJECTPROP.prop; }
+	| ID		{
+		if (g_lingo->_builtinConsts.contains(*$ID)) {
+			$$ = g_lingo->code1(LC::c_constpush);
+		} else {
+			$$ = g_lingo->code1(LC::c_eval);
+		}
+		g_lingo->codeString($ID->c_str());
+		delete $ID; }
+	| error	'\n'		{ yyerrok; }
+
+simpleexpr: simpleexprnoparens
+	| '(' expr[arg] ')'			{ $$ = $arg; }
+
+expr: simpleexpr { $$ = $simpleexpr; }
 	| expr '+' expr				{ g_lingo->code1(LC::c_add); }
 	| expr '-' expr				{ g_lingo->code1(LC::c_sub); }
 	| expr '*' expr				{ g_lingo->code1(LC::c_mul); }
@@ -624,20 +632,8 @@ expr: simpleexpr { $$ = $simpleexpr; }
 	| expr tCONCAT expr			{ g_lingo->code1(LC::c_concat); }
 	| expr tCONTAINS expr		{ g_lingo->code1(LC::c_contains); }
 	| 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); }
-	| tSPRITE expr tINTERSECTS expr { g_lingo->code1(LC::c_intersects); }
-	| tSPRITE expr tWITHIN expr		{ g_lingo->code1(LC::c_within); }
 
-chunkexpr: 	FIELD				{
-		if ($FIELD.s) {
-			$$ = g_lingo->code1(LC::c_stringpush);
-			g_lingo->codeString($FIELD.s->c_str());
-			delete $FIELD.s;
-		} else {
-			$$ = g_lingo->code1(LC::c_intpush);
-			g_lingo->codeInt($FIELD.i);
-		}
+chunkexpr:  tFIELD simpleexprnoparens	{
 		Common::String field("field");
 		g_lingo->codeFunc(&field, 1); }
 	|  tCHAR expr tOF expr		{ g_lingo->code1(LC::c_charOf); }
@@ -650,41 +646,16 @@ chunkexpr: 	FIELD				{
 	| tWORD expr tTO expr tOF expr	{ g_lingo->code1(LC::c_wordToOf); }
 
 reference: 	chunkexpr
-	| CAST				{
-		if ($CAST.s) {
-			$$ = g_lingo->code1(LC::c_stringpush);
-			g_lingo->codeString($CAST.s->c_str());
-			delete $CAST.s;
-		} else {
-			$$ = g_lingo->code1(LC::c_intpush);
-			g_lingo->codeInt($CAST.i);
-		}
+	| tCAST simpleexprnoparens		{
 		Common::String cast("cast");
 		g_lingo->codeFunc(&cast, 1); }
-	| SCRIPT			{
-		if ($SCRIPT.s) {
-			$$ = g_lingo->code1(LC::c_stringpush);
-			g_lingo->codeString($SCRIPT.s->c_str());
-			delete $SCRIPT.s;
-		} else {
-			$$ = g_lingo->code1(LC::c_intpush);
-			g_lingo->codeInt($SCRIPT.i);
-		}
+	| tSCRIPT simpleexprnoparens	{
 		Common::String script("script");
 		g_lingo->codeFunc(&script, 1); }
-	| WINDOW			{
-		if ($WINDOW.s) {
-			$$ = g_lingo->code1(LC::c_stringpush);
-			g_lingo->codeString($WINDOW.s->c_str());
-			delete $WINDOW.s;
-		} else {
-			$$ = g_lingo->code1(LC::c_intpush);
-			g_lingo->codeInt($WINDOW.i);
-		}
+	| tWINDOW simpleexprnoparens	{
 		Common::String window("window");
 		g_lingo->codeFunc(&window, 1); }
 
-
 proc: tPUT expr					{ g_lingo->code1(LC::c_printtop); }
 	| gotofunc
 	| playfunc
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index b1089a3523..b694d5d508 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -374,8 +374,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 		YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \
 	yy_flex_strncpy( yytext, (yytext_ptr), yyleng + 1 ); \
 	(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 78
-#define YY_END_OF_BUFFER 79
+#define YY_NUM_RULES 74
+#define YY_END_OF_BUFFER 75
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -383,45 +383,43 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static const flex_int16_t yy_accept[337] =
+static const flex_int16_t yy_accept[317] =
     {   0,
-        0,    0,   79,   77,    1,   75,   75,   77,   77,   74,
-       74,   73,   74,   70,   74,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,    1,   71,    1,   75,    0,   76,    2,
-       69,   72,   73,   68,   66,   67,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       11,   26,   71,   71,   71,   71,   71,   71,   71,   35,
-       36,   71,   38,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   57,   71,   71,   71,    1,    0,   71,
-        2,   72,   71,    4,   71,   71,   71,   71,   71,   71,
-
-       14,   71,   71,   71,   21,   71,   71,   71,   71,   71,
-       71,   31,   71,   71,   34,   71,   71,   71,   71,   44,
-       71,   71,   48,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,    0,   71,   71,   71,   71,    8,   71,   10,
-       13,    0,   16,   71,   71,    0,    0,    0,   71,   71,
-       25,   27,   28,   71,   71,   71,   33,   37,   40,   71,
-       71,   71,   71,   71,   71,   50,    0,   56,   61,   71,
-       71,   59,   65,    0,   71,    3,   71,    0,   71,    0,
-       14,   71,   71,    0,    0,   21,   71,   71,   29,   71,
-       32,    0,   71,   71,   71,   71,   71,   71,   71,   55,
-
-       55,   55,   62,   71,   71,    0,   71,    5,    0,    7,
-       71,    0,   14,    0,   19,    0,    0,    0,   71,   71,
-       71,    0,   71,   71,   71,   45,   71,   58,   49,    0,
-       55,   55,   71,   60,    0,   71,    0,    6,   71,   12,
-        0,   18,    0,   22,   71,   71,    0,    0,   71,   71,
-       71,    0,    0,    0,    0,   55,   55,    0,    0,   15,
-        9,    0,   17,   20,   23,   71,   30,    0,   71,   42,
-       43,    0,   47,    0,    0,    0,   55,   55,    0,   64,
-       15,   71,   30,    0,   41,    0,   46,    0,    0,    0,
-        0,   55,    0,   63,   24,   39,   54,   53,   54,    0,
-
-        0,    0,    0,   55,   53,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   54,   53,
-       53,   54,    0,   52,   53,   53,    0,   53,    0,   53,
-        0,    0,    0,    0,   51,    0
+        0,    0,   75,   73,    1,   71,   71,   73,   73,   70,
+       70,   69,   70,   66,   70,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,    1,   67,    1,   71,    0,   72,    2,
+       65,   68,   69,   64,   62,   63,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       10,   24,   67,   67,   67,   67,   67,   67,   67,   33,
+       34,   67,   36,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   54,   67,   67,   67,    1,    0,   67,
+        2,   68,   67,    4,   67,   67,   67,   67,   67,   67,
+
+       13,   67,   67,   67,   19,   67,   67,   67,   67,   67,
+       67,   29,   67,   67,   32,   67,   67,   67,   67,   42,
+       67,   67,   45,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,    0,   67,   67,   67,    6,    7,   67,    9,
+       12,    0,   15,   67,   67,    0,    0,    0,   67,   67,
+       23,   25,   26,   67,   67,   67,   31,   35,   38,   67,
+       67,   67,   67,   67,   67,   47,    0,   53,   58,   67,
+       67,   56,   61,    0,   67,    3,   67,   67,    0,   13,
+       16,   67,    0,    0,   19,   67,   67,   27,   67,   30,
+        0,   67,   67,   67,   67,   67,   67,   67,   52,   52,
+
+       52,   59,   67,   67,    0,   67,    5,   67,    0,   13,
+       17,    0,    0,    0,   67,   67,   67,    0,   67,   67,
+       67,   43,   44,   55,   46,    0,   52,   52,   60,   57,
+        0,   67,   67,   11,    0,   20,   67,   67,    0,    0,
+       67,   67,   67,    0,    0,    0,   52,   52,    0,   14,
+        8,   18,   21,   67,   28,    0,   67,   40,   41,    0,
+        0,    0,   52,   52,   14,   67,   28,    0,   39,    0,
+        0,    0,    0,   52,   22,   37,   51,   50,   51,    0,
+        0,    0,    0,   52,   50,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   51,   50,
+
+       50,   51,    0,   49,   50,   50,    0,   50,    0,   50,
+        0,    0,    0,    0,   48,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -466,93 +464,87 @@ static const YY_CHAR yy_meta[60] =
         5,    5,    5,    5,    5,    5,    5,    5,    5
     } ;
 
-static const flex_int16_t yy_base[355] =
+static const flex_int16_t yy_base[331] =
     {   0,
-        0,   58,  661,  743,   59,  743,  743,  655,    0,  743,
-      651,   55,   54,  743,  645,   49,   51,   57,   46,   50,
+        0,   58,  630,  704,   59,  704,  704,  624,    0,  704,
+      620,   55,   54,  704,  615,   49,   51,   57,   46,   50,
        48,   56,    0,   85,   59,   95,   73,   98,  106,   68,
-      124,  138,   98,  165,  148,   85,  743,  651,  743,    0,
-      743,  645,  122,  743,  743,  743,    0,  120,   73,   93,
-      124,  143,  146,  139,  146,  146,  157,  164,  162,  652,
+      124,  138,   98,  165,  148,   85,  704,  621,  704,    0,
+      704,  615,  122,  704,  704,  704,    0,  120,   73,   93,
+      124,  143,  146,  139,  146,  146,  157,  164,  162,  621,
         0,  160,  167,  166,  177,  166,  183,  163,  171,    0,
         0,  186,    0,  191,  192,  176,  190,  193,  192,  197,
       197,  203,  213,    0,  214,  212,  211,  249,  219,  231,
-        0,  643,  230,    0,  217,  223,  229,  228,  236,  246,
+        0,  612,  230,    0,  217,  223,  229,  228,  236,  246,
 
-      650,  239,  249,  250,  267,  243,  257,  253,  258,  250,
+      618,  239,  249,  250,  267,  243,  257,  253,  258,  250,
       259,    0,  265,  252,    0,  264,  258,  262,  275,    0,
       287,  286,    0,  287,  283,  291,  314,  293,  296,  305,
-      302,  307,  309,  296,  299,  301,  648,    0,  317,    0,
-      647,  646,    0,  317,  322,  310,  314,  317,  323,  316,
+      302,  307,  309,  296,  299,  301,    0,    0,  317,    0,
+      614,  613,    0,  317,  322,  310,  314,  317,  323,  316,
         0,    0,    0,  325,  327,  338,    0,    0,  355,  337,
       347,  352,  343,  341,  342,    0,  374,    0,    0,  360,
-      347,  357,    0,  350,  355,    0,  366,  404,  364,  385,
-        0,  645,  364,  377,  372,  644,  375,  382,    0,  375,
-        0,  411,  401,  392,  391,  394,  395,  409,  399,  643,
-
-      426,  430,    0,  399,  408,  409,  408,    0,  639,  633,
-      412,  420,    0,  445,    0,  419,  417,  451,  442,  447,
-      640,  417,  450,  440,  442,    0,  639,    0,    0,  474,
-      469,  472,  635,    0,  446,  441,  631,  743,  449,  743,
-      630,  623,  462,  743,  465,  468,  630,  472,  469,  463,
-      467,  504,  474,  494,  495,  490,  516,  525,  483,    0,
-        0,  624,  743,  743,    0,  492,    0,  500,  505,    0,
-        0,  623,  611,  502,  617,  509,  598,  536,  568,  559,
-      743,  506,    0,  521,    0,  527,  743,  522,  479,  525,
-      543,  547,  473,  743,    0,  743,  743,    0,  743,  416,
-
-      548,  549,  559,  383,    0,  563,  556,  368,  564,  577,
-      546,  528,  573,  580,  578,  534,  235,  199,  169,  557,
-      579,  158,  144,  127,  119,  116,  586,  601,  612,  614,
-      591,  582,   80,   77,   70,  743,  662,  664,  667,  670,
-      675,  680,  682,  688,  694,  699,  702,  708,  714,  719,
-      724,  726,  731,  736
+      347,  357,    0,  350,  355,    0,  366,  363,  384,    0,
+        0,  363,  374,  364,  611,  366,  369,    0,  384,    0,
+      405,  395,  386,  387,  386,  387,  401,  396,  610,  418,
+
+      425,    0,  394,  403,  404,  408,    0,  412,  415,    0,
+        0,  417,  416,  431,  429,  428,  609,  424,  431,  423,
+      428,    0,    0,    0,    0,  460,  462,  461,    0,    0,
+      437,  436,  443,  704,  457,  704,  461,  465,  605,  469,
+      466,  458,  454,  479,  475,  475,  496,  504,  464,    0,
+        0,  704,    0,  471,    0,  487,  492,    0,    0,  491,
+      604,  499,  556,  502,  704,  496,    0,  510,    0,  511,
+      531,  512,  529,  530,    0,  704,  704,    0,  704,  483,
+      534,  532,  535,  466,    0,  539,  536,  368,  538,  560,
+      516,  545,  553,  571,  566,  557,  235,  199,  169,  543,
+
+      559,  158,  144,  127,  119,  116,  572,  594,  597,  595,
+      554,  575,   80,   77,   70,  704,  647,  649,  652,  655,
+      660,  665,  667,  672,  675,  680,  685,  687,  692,  697
     } ;
 
-static const flex_int16_t yy_def[355] =
+static const flex_int16_t yy_def[331] =
     {   0,
-      336,    1,  336,  336,  336,  336,  336,  337,  338,  336,
-      336,  336,  336,  336,  336,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  336,  339,  336,  336,  337,  336,  340,
-      336,  336,  336,  336,  336,  336,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  336,  336,  339,
-      340,  336,  339,  339,  339,  339,  339,  339,  339,  339,
-
-      339,  339,  339,  339,  336,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  336,  339,  339,  339,  339,  339,  339,  339,
-      339,  341,  339,  339,  339,  336,  336,  336,  339,  339,
-      339,  339,  339,  339,  339,  339,  339,  339,  339,  339,
-      339,  339,  339,  339,  339,  339,  342,  339,  339,  339,
-      339,  339,  339,  336,  339,  339,  339,  336,  339,  336,
-      343,  339,  339,  336,  336,  336,  339,  339,  339,  339,
-      339,  336,  339,  339,  339,  339,  339,  339,  339,  342,
-
-      342,  342,  339,  339,  339,  336,  339,  339,  344,  336,
-      339,  336,  343,  336,  339,  336,  336,  336,  339,  339,
-      339,  336,  339,  339,  339,  339,  339,  339,  339,  336,
-      342,  342,  339,  339,  336,  339,  344,  336,  339,  336,
-      345,  336,  336,  336,  339,  339,  346,  336,  339,  339,
-      339,  336,  336,  336,  336,  342,  342,  336,  336,  339,
-      339,  345,  336,  336,  339,  339,  347,  336,  339,  339,
-      339,  348,  336,  336,  336,  336,  342,  342,  349,  336,
-      336,  339,  347,  336,  339,  348,  336,  336,  350,  336,
-      351,  342,  349,  336,  339,  336,  336,  352,  336,  351,
-
-      351,  351,  351,  342,  352,  336,  351,  351,  351,  336,
-      336,  336,  351,  350,  351,  336,  336,  336,  351,  352,
-      352,  351,  336,  336,  352,  352,  353,  354,  336,  354,
-      336,  336,  336,  336,  336,    0,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336
+      316,    1,  316,  316,  316,  316,  316,  317,  318,  316,
+      316,  316,  316,  316,  316,  319,  319,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  319,  316,  319,  316,  316,  317,  316,  320,
+      316,  316,  316,  316,  316,  316,  319,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  316,  316,  319,
+      320,  316,  319,  319,  319,  319,  319,  319,  319,  319,
+
+      319,  319,  319,  319,  316,  319,  319,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  316,  319,  319,  319,  319,  319,  319,  319,
+      319,  321,  319,  319,  319,  316,  316,  316,  319,  319,
+      319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
+      319,  319,  319,  319,  319,  319,  322,  319,  319,  319,
+      319,  319,  319,  316,  319,  319,  319,  319,  316,  323,
+      319,  319,  316,  316,  316,  319,  319,  319,  319,  319,
+      316,  319,  319,  319,  319,  319,  319,  319,  322,  322,
+
+      322,  319,  319,  319,  316,  319,  319,  319,  316,  323,
+      319,  316,  316,  316,  319,  319,  319,  316,  319,  319,
+      319,  319,  319,  319,  319,  316,  322,  322,  319,  319,
+      316,  319,  319,  316,  316,  316,  319,  319,  324,  316,
+      319,  319,  319,  316,  316,  316,  322,  322,  316,  319,
+      319,  316,  319,  319,  325,  316,  319,  319,  319,  316,
+      316,  316,  322,  322,  316,  319,  325,  316,  319,  316,
+      326,  316,  327,  322,  319,  316,  316,  328,  316,  327,
+      327,  327,  327,  322,  328,  316,  327,  327,  327,  316,
+      316,  316,  327,  326,  327,  316,  316,  316,  327,  328,
+
+      328,  327,  316,  316,  328,  328,  329,  330,  316,  330,
+      316,  316,  316,  316,  316,    0,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316
     } ;
 
-static const flex_int16_t yy_nxt[803] =
+static const flex_int16_t yy_nxt[764] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,    4,   12,
        13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
@@ -561,25 +553,25 @@ static const flex_int16_t yy_nxt[803] =
        19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
        29,   30,   31,   32,   23,   23,   33,   23,   23,   34,
        36,   37,   37,   42,   43,   44,   45,   48,   50,   58,
-       51,  335,   54,   55,   49,   56,   35,   52,  335,   59,
-       64,  335,   60,   53,   57,   77,   36,   37,   37,   94,
+       51,  315,   54,   55,   49,   56,   35,   52,  315,   59,
+       64,  315,   60,   53,   57,   77,   36,   37,   37,   94,
        68,   48,   50,   58,   51,   54,   55,   49,   56,   69,
 
        35,   52,   59,   61,   64,   60,   53,   57,   65,   77,
-       62,   95,   66,   94,   68,   63,   70,  324,   85,   86,
-      324,   67,   69,   71,   87,   72,   73,   61,  324,   74,
+       62,   95,   66,   94,   68,   63,   70,  304,   85,   86,
+      304,   67,   69,   71,   87,   72,   73,   61,  304,   74,
        42,   43,   65,   62,   75,   95,   66,   76,   63,   78,
-       70,   79,   85,   86,   67,  327,   71,   87,   72,   73,
-       93,   80,   74,   96,   81,   82,   97,   75,   83,  306,
+       70,   79,   85,   86,   67,  307,   71,   87,   72,   73,
+       93,   80,   74,   96,   81,   82,   97,   75,   83,  286,
        76,   90,  101,   78,   84,   79,   88,   37,   37,   58,
-      306,   98,   99,   93,   80,  100,   96,   81,  102,   82,
+      286,   98,   99,   93,   80,  100,   96,   81,  102,   82,
        97,  103,   83,   89,  108,   90,  101,   84,  104,  106,
       107,  109,  110,   58,   98,   99,  111,  114,  100,  112,
 
-      324,  115,  102,  116,  117,  103,  120,   89,  108,  118,
+      304,  115,  102,  116,  117,  103,  120,   89,  108,  118,
       125,  104,  106,  107,  109,  113,  110,  121,  119,  111,
       114,  122,  123,  112,  115,  124,  126,  116,  117,  120,
-      127,  128,  133,  118,  125,  129,  324,  130,  113,  132,
+      127,  128,  133,  118,  125,  129,  304,  130,  113,  132,
       121,  119,  131,  136,  122,  123,  134,  135,  124,  126,
        88,   37,   37,  137,  127,  128,  133,  138,  139,  129,
       130,  140,  132,  141,  145,  131,  136,   89,  105,  143,
@@ -590,62 +582,57 @@ static const flex_int16_t yy_nxt[803] =
       152,  154,  161,  155,  162,  157,  151,  163,  164,  146,
       156,  165,  158,  147,  166,  167,  159,  160,  169,  170,
       148,  171,  172,  173,  174,  161,  175,  176,  162,  177,
-      179,  163,  164,  182,  165,  183,  187,  166,  184,  168,
-      185,  169,  170,  186,  188,  171,  172,  173,  174,  175,
-      176,  189,  177,  190,  179,  191,  192,  182,  194,  183,
-      187,  184,  168,  185,  195,  196,  186,  188,  193,  314,
-      197,  198,  199,  204,  189,  167,  190,  203,  205,  191,
-      206,  207,  194,  208,  310,  211,  180,  215,  195,  196,
-      216,  221,  193,  197,  198,  199,  204,  201,  217,  202,
-
-      219,  203,  205,  206,  207,  178,  212,  208,  209,  211,
-      215,  220,  192,  210,  216,  221,  223,  306,  224,  225,
-      201,  217,  202,  219,  226,  227,  228,  230,  229,  222,
-      212,  230,  233,  234,  220,  235,  236,  239,  240,  231,
-      223,  224,  225,  243,  244,  248,  214,  226,  227,  241,
-      228,  229,  218,  222,  242,  233,  234,  245,  235,  236,
-      239,  232,  240,  231,  246,  249,  243,  244,  248,  146,
-      230,  250,  251,  230,  259,  230,  260,  294,  261,  264,
-      289,  245,  265,  266,  232,  268,  269,  274,  246,  249,
-      253,  230,  270,  146,  250,  251,  257,  259,  256,  260,
-
-      254,  261,  271,  264,  255,  252,  265,  266,  272,  268,
-      269,  274,  275,  273,  253,  270,  276,  230,  281,  257,
-      277,  256,  282,  254,  284,  271,  258,  255,  285,  279,
-      278,  287,  288,  290,  280,  295,  275,  230,  296,  297,
-      276,  281,  299,  277,  291,  282,  318,  284,  230,  306,
-      306,  285,  323,  292,  278,  288,  290,  306,  295,  301,
-      306,  307,  296,  297,  306,  306,  299,  308,  280,  302,
-      318,  317,  294,  303,  306,  304,  323,  292,  310,  306,
-      309,  314,  325,  301,  311,  307,  313,  327,  315,  312,
-      319,  308,  302,  253,  317,  322,  303,  326,  304,  291,
-
-      334,  320,  329,  316,  309,  325,  321,  255,  311,  313,
-      305,  315,  312,  329,  319,  329,  333,  253,  289,  322,
-      273,  326,  298,  305,  334,  320,  316,  287,  263,  321,
-      255,  247,  242,  331,  263,  238,  258,  305,  332,  333,
-      252,  247,  210,  238,  230,  218,  214,  142,  180,  178,
-      305,  142,   92,  105,   92,   39,   46,  331,   41,   39,
-      336,  332,   38,   38,  336,   38,   38,   38,   40,   40,
-       47,   47,   47,   91,   91,   91,  181,  336,  336,  181,
-      181,  200,  336,  336,  200,  213,  213,  213,  237,  237,
-      336,  237,  237,  237,  262,  262,  336,  262,  262,  262,
-
-      267,  336,  336,  267,  267,  283,  283,  283,  286,  286,
-      336,  286,  286,  286,  293,  293,  336,  293,  293,  293,
-      298,  336,  336,  298,  298,  300,  336,  336,  300,  305,
-      305,  305,  328,  336,  336,  328,  328,  330,  336,  330,
-      330,  330,    3,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-
-      336,  336
+      178,  163,  164,  181,  165,  182,  186,  166,  183,  168,
+      184,  169,  170,  185,  187,  171,  172,  173,  174,  175,
+      176,  188,  177,  189,  178,  190,  191,  181,  193,  182,
+      186,  183,  168,  184,  194,  195,  185,  187,  192,  294,
+      196,  197,  198,  203,  188,  167,  189,  202,  204,  190,
+      205,  206,  193,  207,  208,  179,  211,  212,  194,  195,
+      213,  215,  192,  196,  197,  198,  203,  200,  216,  201,
+
+      217,  202,  204,  205,  206,  209,  191,  207,  208,  211,
+      219,  212,  220,  213,  215,  221,  222,  223,  224,  226,
+      200,  216,  201,  218,  217,  225,  226,  229,  230,  209,
+      231,  227,  214,  234,  219,  220,  232,  233,  221,  222,
+      223,  235,  224,  236,  237,  238,  241,  218,  225,  146,
+      229,  230,  240,  231,  242,  227,  228,  234,  243,  232,
+      233,  226,  226,  226,  235,  249,  236,  290,  237,  238,
+      241,  250,  251,  146,  252,  240,  244,  242,  253,  228,
+      254,  243,  256,  257,  286,  248,  245,  258,  249,  259,
+      246,  247,  260,  261,  250,  251,  262,  226,  252,  265,
+
+      244,  266,  253,  226,  254,  226,  256,  257,  248,  245,
+      258,  268,  259,  246,  247,  269,  260,  261,  264,  274,
+      262,  270,  265,  272,  266,  275,  263,  276,  277,  279,
+      273,  226,  271,  286,  268,  286,  286,  286,  269,  286,
+      286,  297,  264,  274,  270,  281,  272,  287,  275,  263,
+      288,  276,  277,  279,  286,  282,  289,  273,  284,  283,
+      291,  290,  295,  298,  297,  292,  293,  286,  305,  281,
+      299,  287,  294,  307,  288,  303,  244,  306,  282,  313,
+      289,  284,  283,  302,  291,  295,  296,  298,  292,  293,
+      246,  305,  300,  314,  299,  309,  309,  301,  309,  303,
+
+      244,  306,  313,  285,  285,  271,  239,  302,  278,  296,
+      239,  226,  214,  246,  142,  179,  300,  314,  311,  142,
+      301,   92,  105,  312,   92,   39,   46,   41,   39,  316,
+      285,  285,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  311,  316,  316,  316,  312,   38,   38,  316,
+       38,   38,   38,   40,   40,   47,   47,   47,   91,   91,
+       91,  180,  316,  316,  180,  180,  199,  316,  316,  199,
+      210,  210,  210,  255,  316,  316,  255,  255,  267,  267,
+      267,  278,  316,  316,  278,  278,  280,  316,  316,  280,
+      285,  285,  285,  308,  316,  316,  308,  308,  310,  316,
+
+      310,  310,  310,    3,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316
     } ;
 
-static const flex_int16_t yy_chk[803] =
+static const flex_int16_t yy_chk[764] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -654,25 +641,25 @@ static const flex_int16_t yy_chk[803] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
         5,    5,    5,   12,   12,   13,   13,   16,   17,   21,
-       18,  335,   19,   20,   16,   20,    2,   18,  334,   22,
-       25,  333,   22,   18,   20,   30,   36,   36,   36,   49,
+       18,  315,   19,   20,   16,   20,    2,   18,  314,   22,
+       25,  313,   22,   18,   20,   30,   36,   36,   36,   49,
        27,   16,   17,   21,   18,   19,   20,   16,   20,   27,
 
         2,   18,   22,   24,   25,   22,   18,   20,   26,   30,
-       24,   50,   26,   49,   27,   24,   28,  326,   33,   33,
-      325,   26,   27,   28,   33,   28,   28,   24,  324,   29,
+       24,   50,   26,   49,   27,   24,   28,  306,   33,   33,
+      305,   26,   27,   28,   33,   28,   28,   24,  304,   29,
        43,   43,   26,   24,   29,   50,   26,   29,   24,   31,
-       28,   31,   33,   33,   26,  323,   28,   33,   28,   28,
-       48,   31,   29,   51,   31,   32,   52,   29,   32,  322,
+       28,   31,   33,   33,   26,  303,   28,   33,   28,   28,
+       48,   31,   29,   51,   31,   32,   52,   29,   32,  302,
        29,   35,   56,   31,   32,   31,   34,   34,   34,   35,
-      319,   53,   54,   48,   31,   55,   51,   31,   57,   32,
+      299,   53,   54,   48,   31,   55,   51,   31,   57,   32,
        52,   58,   32,   34,   63,   35,   56,   32,   59,   62,
        62,   64,   65,   35,   53,   54,   66,   68,   55,   67,
 
-      318,   69,   57,   72,   74,   58,   76,   34,   63,   75,
+      298,   69,   57,   72,   74,   58,   76,   34,   63,   75,
        81,   59,   62,   62,   64,   67,   65,   77,   75,   66,
        68,   78,   79,   67,   69,   80,   82,   72,   74,   76,
-       83,   85,   89,   75,   81,   85,  317,   86,   67,   87,
+       83,   85,   89,   75,   81,   85,  297,   86,   67,   87,
        77,   75,   86,   95,   78,   79,   90,   93,   80,   82,
        88,   88,   88,   96,   83,   85,   89,   97,   98,   85,
        86,   99,   87,  100,  104,   86,   95,   88,  105,  102,
@@ -686,65 +673,60 @@ static const flex_int16_t yy_chk[803] =
       139,  122,  124,  144,  125,  145,  149,  126,  146,  127,
       147,  128,  129,  148,  150,  130,  131,  132,  133,  134,
       135,  154,  136,  155,  139,  156,  159,  144,  160,  145,
-      149,  146,  127,  147,  161,  162,  148,  150,  159,  308,
+      149,  146,  127,  147,  161,  162,  148,  150,  159,  288,
       163,  164,  165,  171,  154,  167,  155,  170,  172,  156,
-      174,  175,  160,  177,  304,  179,  180,  183,  161,  162,
-      184,  190,  159,  163,  164,  165,  171,  167,  185,  167,
-
-      187,  170,  172,  174,  175,  178,  180,  177,  178,  179,
-      183,  188,  192,  178,  184,  190,  193,  300,  194,  195,
-      167,  185,  167,  187,  196,  197,  198,  201,  199,  192,
-      180,  202,  204,  205,  188,  206,  207,  211,  212,  201,
-      193,  194,  195,  216,  217,  222,  214,  196,  197,  214,
-      198,  199,  218,  192,  214,  204,  205,  219,  206,  207,
-      211,  202,  212,  201,  220,  223,  216,  217,  222,  218,
-      231,  224,  225,  232,  235,  230,  236,  293,  239,  243,
-      289,  219,  245,  246,  202,  248,  249,  253,  220,  223,
-      230,  256,  250,  218,  224,  225,  232,  235,  231,  236,
-
-      230,  239,  251,  243,  230,  252,  245,  246,  252,  248,
-      249,  253,  254,  252,  230,  250,  255,  257,  259,  232,
-      256,  231,  266,  230,  268,  251,  258,  230,  269,  258,
-      257,  286,  274,  276,  258,  282,  254,  278,  284,  288,
-      255,  259,  290,  256,  291,  266,  312,  268,  292,  301,
-      302,  269,  316,  278,  257,  274,  276,  307,  282,  291,
-      303,  301,  284,  288,  306,  309,  290,  302,  280,  291,
-      312,  311,  279,  291,  313,  292,  316,  278,  310,  315,
-      303,  314,  320,  291,  306,  301,  307,  327,  309,  306,
-      313,  302,  291,  310,  311,  315,  291,  321,  292,  277,
-
-      332,  314,  328,  310,  303,  320,  314,  310,  306,  307,
-      328,  309,  306,  329,  313,  330,  331,  310,  275,  315,
-      273,  321,  327,  330,  332,  314,  310,  272,  262,  314,
-      310,  247,  242,  329,  241,  237,  233,  328,  329,  331,
-      227,  221,  210,  209,  200,  186,  182,  142,  141,  137,
-      330,  101,   92,   60,   42,   38,   15,  329,   11,    8,
-        3,  329,  337,  337,    0,  337,  337,  337,  338,  338,
-      339,  339,  339,  340,  340,  340,  341,    0,    0,  341,
-      341,  342,    0,    0,  342,  343,  343,  343,  344,  344,
-        0,  344,  344,  344,  345,  345,    0,  345,  345,  345,
-
-      346,    0,    0,  346,  346,  347,  347,  347,  348,  348,
-        0,  348,  348,  348,  349,  349,    0,  349,  349,  349,
-      350,    0,    0,  350,  350,  351,    0,    0,  351,  352,
-      352,  352,  353,    0,    0,  353,  353,  354,    0,  354,
-      354,  354,  336,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-      336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
-
-      336,  336
+      174,  175,  160,  177,  178,  179,  182,  183,  161,  162,
+      184,  186,  159,  163,  164,  165,  171,  167,  187,  167,
+
+      189,  170,  172,  174,  175,  179,  191,  177,  178,  182,
+      192,  183,  193,  184,  186,  194,  195,  196,  197,  200,
+      167,  187,  167,  191,  189,  198,  201,  203,  204,  179,
+      205,  200,  214,  209,  192,  193,  206,  208,  194,  195,
+      196,  212,  197,  213,  215,  216,  219,  191,  198,  214,
+      203,  204,  218,  205,  220,  200,  201,  209,  221,  206,
+      208,  226,  228,  227,  212,  231,  213,  284,  215,  216,
+      219,  232,  233,  214,  235,  218,  226,  220,  237,  201,
+      238,  221,  240,  241,  280,  228,  226,  242,  231,  243,
+      226,  227,  244,  245,  232,  233,  246,  247,  235,  249,
+
+      226,  254,  237,  264,  238,  248,  240,  241,  228,  226,
+      242,  256,  243,  226,  227,  257,  244,  245,  248,  264,
+      246,  260,  249,  262,  254,  266,  247,  268,  270,  272,
+      273,  274,  271,  282,  256,  281,  283,  287,  257,  289,
+      286,  291,  248,  264,  260,  273,  262,  281,  266,  247,
+      282,  268,  270,  272,  293,  273,  283,  263,  274,  273,
+      286,  290,  289,  292,  291,  286,  287,  295,  300,  273,
+      293,  281,  294,  307,  282,  296,  290,  301,  273,  311,
+      283,  274,  273,  295,  286,  289,  290,  292,  286,  287,
+      290,  300,  294,  312,  293,  308,  310,  294,  309,  296,
+
+      290,  301,  311,  308,  310,  261,  239,  295,  307,  290,
+      217,  199,  185,  290,  142,  141,  294,  312,  309,  101,
+      294,   92,   60,  309,   42,   38,   15,   11,    8,    3,
+      308,  310,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  309,    0,    0,    0,  309,  317,  317,    0,
+      317,  317,  317,  318,  318,  319,  319,  319,  320,  320,
+      320,  321,    0,    0,  321,  321,  322,    0,    0,  322,
+      323,  323,  323,  324,    0,    0,  324,  324,  325,  325,
+      325,  326,    0,    0,  326,  326,  327,    0,    0,  327,
+      328,  328,  328,  329,    0,    0,  329,  329,  330,    0,
+
+      330,  330,  330,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static const flex_int32_t yy_rule_can_match_eol[79] =
+static const flex_int32_t yy_rule_can_match_eol[75] =
     {   0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,     };
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,     };
 
 static yy_state_type yy_last_accepting_state;
 static char *yy_last_accepting_cpos;
@@ -826,7 +808,7 @@ static int checkImmediate(int token) {
 			g_lingo->_methodVars->contains(yytext)) {
 		yylval.s = new Common::String(yytext);
 
-		return ID;
+		return VARID;
 	}
 
 	return token;
@@ -852,14 +834,14 @@ static int varCheck(int token, const char *name) {
 	if (g_lingo->_indef == kStateInArgs || g_lingo->_methodVars->contains(name)) {
 		yylval.s = new Common::String(name);
 
-		return ID;
+		return VARID;
 	}
 
 	return token;
 }
 
-#line 861 "engines/director/lingo/lingo-lex.cpp"
-#line 862 "engines/director/lingo/lingo-lex.cpp"
+#line 843 "engines/director/lingo/lingo-lex.cpp"
+#line 844 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -1082,7 +1064,7 @@ YY_DECL
 #line 110 "engines/director/lingo/lingo-lex.l"
 
 
-#line 1085 "engines/director/lingo/lingo-lex.cpp"
+#line 1067 "engines/director/lingo/lingo-lex.cpp"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -1110,13 +1092,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 337 )
+				if ( yy_current_state >= 317 )
 					yy_c = yy_meta[yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 336 );
+		while ( yy_current_state != 316 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1174,66 +1156,41 @@ YY_RULE_SETUP
 case 6:
 YY_RULE_SETUP
 #line 119 "engines/director/lingo/lingo-lex.l"
-{
-		count();
-
-		const char *ptr = &yytext[5]; // Skip 'cast '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = cleanupString(ptr + 1);
-		yylval.s->deleteLastChar();
-		return CAST;
-	}
+{ count(); return tCAST; }
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 130 "engines/director/lingo/lingo-lex.l"
-{
-		count();
-
-		const char *ptr = &yytext[5]; // Skip 'cast '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = NULL;
-		yylval.i = strtol(yytext, NULL, 10);
-		return CAST;
-	}
-	YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 141 "engines/director/lingo/lingo-lex.l"
+#line 120 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tCHAR, "char"); }		// D3
 	YY_BREAK
-case 9:
+case 8:
 YY_RULE_SETUP
-#line 142 "engines/director/lingo/lingo-lex.l"
+#line 121 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tCONTAINS, "contains"); }
 	YY_BREAK
-case 10:
+case 9:
 YY_RULE_SETUP
-#line 143 "engines/director/lingo/lingo-lex.l"
+#line 122 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tDOWN, "down"); }
 	YY_BREAK
-case 11:
+case 10:
 YY_RULE_SETUP
-#line 144 "engines/director/lingo/lingo-lex.l"
+#line 123 "engines/director/lingo/lingo-lex.l"
 { count(); return tIF; }
 	YY_BREAK
-case 12:
+case 11:
 YY_RULE_SETUP
-#line 145 "engines/director/lingo/lingo-lex.l"
+#line 124 "engines/director/lingo/lingo-lex.l"
 { count(); return tELSIF; }
 	YY_BREAK
-case 13:
+case 12:
 YY_RULE_SETUP
-#line 146 "engines/director/lingo/lingo-lex.l"
+#line 125 "engines/director/lingo/lingo-lex.l"
 { count(); return tELSE; }
 	YY_BREAK
-case 14:
+case 13:
 YY_RULE_SETUP
-#line 147 "engines/director/lingo/lingo-lex.l"
+#line 126 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1249,8 +1206,8 @@ YY_RULE_SETUP
 			return tENDTELL;
 
 		if (!*ptr) {	// If it is stale "end", check it
-			if (varCheck(ENDCLAUSE, "end") == ID)
-				return ID;
+			if (varCheck(ENDCLAUSE, "end") == VARID)
+				return VARID;
 		}
 
 		yylval.s = new Common::String(ptr);
@@ -1258,104 +1215,79 @@ YY_RULE_SETUP
 		return ENDCLAUSE;
 	}
 	YY_BREAK
-case 15:
+case 14:
 YY_RULE_SETUP
-#line 170 "engines/director/lingo/lingo-lex.l"
+#line 149 "engines/director/lingo/lingo-lex.l"
 { count(); return tFACTORY; }
 	YY_BREAK
-case 16:
+case 15:
 YY_RULE_SETUP
-#line 171 "engines/director/lingo/lingo-lex.l"
+#line 150 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tEXIT, "exit"); }
 	YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 172 "engines/director/lingo/lingo-lex.l"
-{
-		count();
-
-		const char *ptr = &yytext[6]; // Skip 'field '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = cleanupString(ptr + 1);
-		yylval.s->deleteLastChar();
-		return FIELD;
-	}
-	YY_BREAK
-case 18:
+case 16:
 YY_RULE_SETUP
-#line 183 "engines/director/lingo/lingo-lex.l"
-{
-		count();
-
-		const char *ptr = &yytext[6]; // Skip 'field '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = NULL;
-		yylval.i = strtol(yytext, NULL, 10);
-		return FIELD;
-	}
+#line 151 "engines/director/lingo/lingo-lex.l"
+{ count(); return tFIELD; }
 	YY_BREAK
-case 19:
+case 17:
 YY_RULE_SETUP
-#line 194 "engines/director/lingo/lingo-lex.l"
+#line 152 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tGLOBAL, "global"); }
 	YY_BREAK
-case 20:
+case 18:
 YY_RULE_SETUP
-#line 195 "engines/director/lingo/lingo-lex.l"
+#line 153 "engines/director/lingo/lingo-lex.l"
 { count(); return tGO; }
 	YY_BREAK
-case 21:
+case 19:
 YY_RULE_SETUP
-#line 196 "engines/director/lingo/lingo-lex.l"
+#line 154 "engines/director/lingo/lingo-lex.l"
 { count(); return tGO; }
 	YY_BREAK
-case 22:
+case 20:
 YY_RULE_SETUP
-#line 197 "engines/director/lingo/lingo-lex.l"
+#line 155 "engines/director/lingo/lingo-lex.l"
 { count(); return tGOLOOP; }
 	YY_BREAK
-case 23:
+case 21:
 YY_RULE_SETUP
-#line 198 "engines/director/lingo/lingo-lex.l"
+#line 156 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tINSTANCE, "instance"); }
 	YY_BREAK
-case 24:
+case 22:
 YY_RULE_SETUP
-#line 199 "engines/director/lingo/lingo-lex.l"
+#line 157 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tINTERSECTS, "intersects"); }
 	YY_BREAK
-case 25:
+case 23:
 YY_RULE_SETUP
-#line 200 "engines/director/lingo/lingo-lex.l"
+#line 158 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tINTO, "into"); }
 	YY_BREAK
-case 26:
+case 24:
 YY_RULE_SETUP
-#line 201 "engines/director/lingo/lingo-lex.l"
+#line 159 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tIN, "in"); }
 	YY_BREAK
-case 27:
+case 25:
 YY_RULE_SETUP
-#line 202 "engines/director/lingo/lingo-lex.l"
+#line 160 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tITEM, "item"); }
 	YY_BREAK
-case 28:
+case 26:
 YY_RULE_SETUP
-#line 203 "engines/director/lingo/lingo-lex.l"
+#line 161 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tLINE, "line"); }
 	YY_BREAK
-case 29:
+case 27:
 YY_RULE_SETUP
-#line 204 "engines/director/lingo/lingo-lex.l"
+#line 162 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tMACRO, "macro"); }
 	YY_BREAK
-case 30:
+case 28:
 YY_RULE_SETUP
-#line 205 "engines/director/lingo/lingo-lex.l"
+#line 163 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1368,129 +1300,104 @@ YY_RULE_SETUP
 		return tMETHOD;
 	}
 	YY_BREAK
-case 31:
+case 29:
 YY_RULE_SETUP
-#line 216 "engines/director/lingo/lingo-lex.l"
+#line 174 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tMOD, "mod"); }
 	YY_BREAK
-case 32:
+case 30:
 YY_RULE_SETUP
-#line 217 "engines/director/lingo/lingo-lex.l"
+#line 175 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tMOVIE, "movie"); }
 	YY_BREAK
-case 33:
+case 31:
 YY_RULE_SETUP
-#line 218 "engines/director/lingo/lingo-lex.l"
+#line 176 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tNEXT, "next"); }
 	YY_BREAK
-case 34:
+case 32:
 YY_RULE_SETUP
-#line 219 "engines/director/lingo/lingo-lex.l"
+#line 177 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tNOT, "not"); }
 	YY_BREAK
-case 35:
+case 33:
 YY_RULE_SETUP
-#line 220 "engines/director/lingo/lingo-lex.l"
+#line 178 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tOF, "of"); }
 	YY_BREAK
-case 36:
+case 34:
 YY_RULE_SETUP
-#line 221 "engines/director/lingo/lingo-lex.l"
+#line 179 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tON, "on"); }		// D3
 	YY_BREAK
-case 37:
+case 35:
 YY_RULE_SETUP
-#line 222 "engines/director/lingo/lingo-lex.l"
+#line 180 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tOPEN, "open"); }
 	YY_BREAK
-case 38:
+case 36:
 YY_RULE_SETUP
-#line 223 "engines/director/lingo/lingo-lex.l"
+#line 181 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tOR, "or"); }
 	YY_BREAK
-case 39:
+case 37:
 YY_RULE_SETUP
-#line 224 "engines/director/lingo/lingo-lex.l"
+#line 182 "engines/director/lingo/lingo-lex.l"
 { count(); return tPLAY; }
 	YY_BREAK
-case 40:
+case 38:
 YY_RULE_SETUP
-#line 225 "engines/director/lingo/lingo-lex.l"
+#line 183 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tPLAY, "play"); }
 	YY_BREAK
-case 41:
+case 39:
 YY_RULE_SETUP
-#line 226 "engines/director/lingo/lingo-lex.l"
+#line 184 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(yytext); return tPLAYACCEL; }
 	YY_BREAK
-case 42:
+case 40:
 YY_RULE_SETUP
-#line 227 "engines/director/lingo/lingo-lex.l"
+#line 185 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tPREVIOUS, "previous"); }
 	YY_BREAK
-case 43:
+case 41:
 YY_RULE_SETUP
-#line 228 "engines/director/lingo/lingo-lex.l"
+#line 186 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tPROPERTY, "property"); }	// D4
 	YY_BREAK
-case 44:
+case 42:
 YY_RULE_SETUP
-#line 229 "engines/director/lingo/lingo-lex.l"
+#line 187 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tPUT, "put"); }
 	YY_BREAK
-case 45:
+case 43:
 YY_RULE_SETUP
-#line 230 "engines/director/lingo/lingo-lex.l"
+#line 188 "engines/director/lingo/lingo-lex.l"
 { count(); return checkImmediate(tREPEAT); }
 	YY_BREAK
-case 46:
-YY_RULE_SETUP
-#line 231 "engines/director/lingo/lingo-lex.l"
-{
-		count();
-
-		const char *ptr = &yytext[7]; // Skip 'script '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = cleanupString(ptr + 1);
-		yylval.s->deleteLastChar();
-		return SCRIPT;
-	}
-	YY_BREAK
-case 47:
+case 44:
 YY_RULE_SETUP
-#line 242 "engines/director/lingo/lingo-lex.l"
-{
-		count();
-
-		const char *ptr = &yytext[7]; // Skip 'script '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = NULL;
-		yylval.i = strtol(yytext, NULL, 10);
-		return SCRIPT;
-	}
+#line 189 "engines/director/lingo/lingo-lex.l"
+{ count(); return tSCRIPT; }
 	YY_BREAK
-case 48:
+case 45:
 YY_RULE_SETUP
-#line 253 "engines/director/lingo/lingo-lex.l"
+#line 190 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tSET, "set"); }
 	YY_BREAK
-case 49:
+case 46:
 YY_RULE_SETUP
-#line 254 "engines/director/lingo/lingo-lex.l"
+#line 191 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tSTARTS, "starts"); }
 	YY_BREAK
-case 50:
+case 47:
 YY_RULE_SETUP
-#line 255 "engines/director/lingo/lingo-lex.l"
+#line 192 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tTELL, "tell"); }
 	YY_BREAK
-case 51:
+case 48:
 YY_RULE_SETUP
-#line 256 "engines/director/lingo/lingo-lex.l"
+#line 193 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1527,9 +1434,9 @@ YY_RULE_SETUP
 		}
 	}
 	YY_BREAK
-case 52:
+case 49:
 YY_RULE_SETUP
-#line 291 "engines/director/lingo/lingo-lex.l"
+#line 228 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1553,9 +1460,9 @@ YY_RULE_SETUP
 		}
 	}
 	YY_BREAK
-case 53:
+case 50:
 YY_RULE_SETUP
-#line 313 "engines/director/lingo/lingo-lex.l"
+#line 250 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1613,9 +1520,9 @@ YY_RULE_SETUP
 					Common::String rest(ptr);
 
 					// It is the dreaded 'the <builtin> of <expr>'
-					// with 'expr' starting with ID, which leads to clash
+					// with 'expr' starting with VARID, which leads to clash
 					//
-					// put 'of ID' back.
+					// put 'of VARID' back.
 
 					for (int i = rest.size() - 1; i >= 0; i--)
 						unput(rest[i]);
@@ -1630,9 +1537,9 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s', field '%s'", ptr, field.c_str());
 	}
 	YY_BREAK
-case 54:
+case 51:
 YY_RULE_SETUP
-#line 386 "engines/director/lingo/lingo-lex.l"
+#line 323 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1668,9 +1575,9 @@ YY_RULE_SETUP
 			return THEENTITY;
 	}
 	YY_BREAK
-case 55:
+case 52:
 YY_RULE_SETUP
-#line 420 "engines/director/lingo/lingo-lex.l"
+#line 357 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1698,148 +1605,123 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s'", ptr);
 	}
 	YY_BREAK
-case 56:
+case 53:
 YY_RULE_SETUP
-#line 446 "engines/director/lingo/lingo-lex.l"
+#line 383 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
-case 57:
+case 54:
 YY_RULE_SETUP
-#line 447 "engines/director/lingo/lingo-lex.l"
+#line 384 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tTO, "to"); }
 	YY_BREAK
-case 58:
+case 55:
 YY_RULE_SETUP
-#line 448 "engines/director/lingo/lingo-lex.l"
+#line 385 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tSPRITE, "sprite"); }
 	YY_BREAK
-case 59:
+case 56:
 YY_RULE_SETUP
-#line 449 "engines/director/lingo/lingo-lex.l"
+#line 386 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tWITH, "with"); }
 	YY_BREAK
-case 60:
+case 57:
 YY_RULE_SETUP
-#line 450 "engines/director/lingo/lingo-lex.l"
+#line 387 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tWITHIN, "within"); }
 	YY_BREAK
-case 61:
+case 58:
 YY_RULE_SETUP
-#line 451 "engines/director/lingo/lingo-lex.l"
+#line 388 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tWHEN, "when"); }
 	YY_BREAK
-case 62:
+case 59:
 YY_RULE_SETUP
-#line 452 "engines/director/lingo/lingo-lex.l"
+#line 389 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tWHILE, "while"); }
 	YY_BREAK
-case 63:
+case 60:
 YY_RULE_SETUP
-#line 453 "engines/director/lingo/lingo-lex.l"
-{
-		count();
-
-		const char *ptr = &yytext[7]; // Skip 'window '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = cleanupString(ptr + 1);
-		yylval.s->deleteLastChar();
-		return WINDOW;
-	}
+#line 390 "engines/director/lingo/lingo-lex.l"
+{ count(); return tWINDOW; }
 	YY_BREAK
-case 64:
-YY_RULE_SETUP
-#line 464 "engines/director/lingo/lingo-lex.l"
-{
-		count();
-
-		const char *ptr = &yytext[7]; // Skip 'window '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = NULL;
-		yylval.i = strtol(yytext, NULL, 10);
-		return WINDOW;
-	}
-	YY_BREAK
-case 65:
+case 61:
 YY_RULE_SETUP
-#line 475 "engines/director/lingo/lingo-lex.l"
+#line 391 "engines/director/lingo/lingo-lex.l"
 { count(); return varCheck(tWORD, "word"); }
 	YY_BREAK
-case 66:
+case 62:
 YY_RULE_SETUP
-#line 477 "engines/director/lingo/lingo-lex.l"
+#line 393 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
-case 67:
+case 63:
 YY_RULE_SETUP
-#line 478 "engines/director/lingo/lingo-lex.l"
+#line 394 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
-case 68:
+case 64:
 YY_RULE_SETUP
-#line 479 "engines/director/lingo/lingo-lex.l"
+#line 395 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
-case 69:
+case 65:
 YY_RULE_SETUP
-#line 480 "engines/director/lingo/lingo-lex.l"
+#line 396 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
-case 70:
+case 66:
 YY_RULE_SETUP
-#line 481 "engines/director/lingo/lingo-lex.l"
+#line 397 "engines/director/lingo/lingo-lex.l"
 { count(); return tEQ; }
 	YY_BREAK
-case 71:
+case 67:
 YY_RULE_SETUP
-#line 483 "engines/director/lingo/lingo-lex.l"
+#line 399 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
 
-		return ID;
+		return VARID;
 	}
 	YY_BREAK
-case 72:
+case 68:
 YY_RULE_SETUP
-#line 489 "engines/director/lingo/lingo-lex.l"
+#line 405 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
-case 73:
+case 69:
 YY_RULE_SETUP
-#line 490 "engines/director/lingo/lingo-lex.l"
+#line 406 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
-case 74:
+case 70:
 YY_RULE_SETUP
-#line 491 "engines/director/lingo/lingo-lex.l"
+#line 407 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
-case 75:
-/* rule 75 can match eol */
+case 71:
+/* rule 71 can match eol */
 YY_RULE_SETUP
-#line 492 "engines/director/lingo/lingo-lex.l"
+#line 408 "engines/director/lingo/lingo-lex.l"
 { count(); return '\n'; }
 	YY_BREAK
-case 76:
+case 72:
 YY_RULE_SETUP
-#line 493 "engines/director/lingo/lingo-lex.l"
+#line 409 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = cleanupString(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
-case 77:
+case 73:
 YY_RULE_SETUP
-#line 494 "engines/director/lingo/lingo-lex.l"
+#line 410 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
-case 78:
+case 74:
 YY_RULE_SETUP
-#line 496 "engines/director/lingo/lingo-lex.l"
+#line 412 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1842 "engines/director/lingo/lingo-lex.cpp"
+#line 1724 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2138,7 +2020,7 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 337 )
+			if ( yy_current_state >= 317 )
 				yy_c = yy_meta[yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2166,11 +2048,11 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 337 )
+		if ( yy_current_state >= 317 )
 			yy_c = yy_meta[yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-	yy_is_jam = (yy_current_state == 336);
+	yy_is_jam = (yy_current_state == 316);
 
 		return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2859,7 +2741,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 496 "engines/director/lingo/lingo-lex.l"
+#line 412 "engines/director/lingo/lingo-lex.l"
 
 
 extern int yydebug;
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 65925d1ea9..282a9449c4 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -65,7 +65,7 @@ static int checkImmediate(int token) {
 			g_lingo->_methodVars->contains(yytext)) {
 		yylval.s = new Common::String(yytext);
 
-		return ID;
+		return VARID;
 	}
 
 	return token;
@@ -91,7 +91,7 @@ static int varCheck(int token, const char *name) {
 	if (g_lingo->_indef == kStateInArgs || g_lingo->_methodVars->contains(name)) {
 		yylval.s = new Common::String(name);
 
-		return ID;
+		return VARID;
 	}
 
 	return token;
@@ -116,28 +116,7 @@ spc [ \t\xC2]
 after		{ count(); return varCheck(tAFTER, "after"); }		// D3
 and			{ count(); return varCheck(tAND, "and"); }
 before		{ count(); return varCheck(tBEFORE, "before"); }	// D3
-cast{spc}+{conststring}	{
-		count();
-
-		const char *ptr = &yytext[5]; // Skip 'cast '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = cleanupString(ptr + 1);
-		yylval.s->deleteLastChar();
-		return CAST;
-	}
-cast{spc}+{constinteger}	{
-		count();
-
-		const char *ptr = &yytext[5]; // Skip 'cast '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = NULL;
-		yylval.i = strtol(yytext, NULL, 10);
-		return CAST;
-	}
+cast		{ count(); return tCAST; }
 char		{ count(); return varCheck(tCHAR, "char"); }		// D3
 contains	{ count(); return varCheck(tCONTAINS, "contains"); }
 down		{ count(); return varCheck(tDOWN, "down"); }
@@ -159,8 +138,8 @@ end({spc}+{identifier})?	{
 			return tENDTELL;
 
 		if (!*ptr) {	// If it is stale "end", check it
-			if (varCheck(ENDCLAUSE, "end") == ID)
-				return ID;
+			if (varCheck(ENDCLAUSE, "end") == VARID)
+				return VARID;
 		}
 
 		yylval.s = new Common::String(ptr);
@@ -169,28 +148,7 @@ end({spc}+{identifier})?	{
 	}
 ^{spc}*factory { count(); return tFACTORY; }
 exit		{ count(); return varCheck(tEXIT, "exit"); }
-field{spc}+{conststring}	{
-		count();
-
-		const char *ptr = &yytext[6]; // Skip 'field '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = cleanupString(ptr + 1);
-		yylval.s->deleteLastChar();
-		return FIELD;
-	}
-field{spc}+{constinteger}	{
-		count();
-
-		const char *ptr = &yytext[6]; // Skip 'field '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = NULL;
-		yylval.i = strtol(yytext, NULL, 10);
-		return FIELD;
-	}
+field		{ count(); return tFIELD; }
 global		{ count(); return varCheck(tGLOBAL, "global"); }
 go{spc}+(to{spc}+)?frame	{ count(); return tGO; }
 go{spc}+(to)?	{ count(); return tGO; }
@@ -228,28 +186,7 @@ previous	{ count(); return varCheck(tPREVIOUS, "previous"); }
 property	{ count(); return varCheck(tPROPERTY, "property"); }	// D4
 put			{ count(); return varCheck(tPUT, "put"); }
 repeat		{ count(); return checkImmediate(tREPEAT); }
-script{spc}+{conststring}	{
-		count();
-
-		const char *ptr = &yytext[7]; // Skip 'script '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = cleanupString(ptr + 1);
-		yylval.s->deleteLastChar();
-		return SCRIPT;
-	}
-script{spc}+{constinteger}	{
-		count();
-
-		const char *ptr = &yytext[7]; // Skip 'script '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = NULL;
-		yylval.i = strtol(yytext, NULL, 10);
-		return SCRIPT;
-	}
+script		{ count(); return tSCRIPT; }
 set			{ count(); return varCheck(tSET, "set"); }
 starts		{ count(); return varCheck(tSTARTS, "starts"); }
 tell		{ count(); return varCheck(tTELL, "tell"); }
@@ -367,9 +304,9 @@ the{spc}+[[:alpha:]]+{spc}+of{spc}+{identifier}	{
 					Common::String rest(ptr);
 
 					// It is the dreaded 'the <builtin> of <expr>'
-					// with 'expr' starting with ID, which leads to clash
+					// with 'expr' starting with VARID, which leads to clash
 					//
-					// put 'of ID' back.
+					// put 'of VARID' back.
 
 					for (int i = rest.size() - 1; i >= 0; i--)
 						unput(rest[i]);
@@ -450,28 +387,7 @@ with			{ count(); return varCheck(tWITH, "with"); }
 within			{ count(); return varCheck(tWITHIN, "within"); }
 when			{ count(); return varCheck(tWHEN, "when"); }
 while			{ count(); return varCheck(tWHILE, "while"); }
-window{spc}+{conststring}	{
-		count();
-
-		const char *ptr = &yytext[7]; // Skip 'window '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = cleanupString(ptr + 1);
-		yylval.s->deleteLastChar();
-		return WINDOW;
-	}
-window{spc}+{constinteger}	{
-		count();
-
-		const char *ptr = &yytext[7]; // Skip 'window '
-		while (*ptr == ' ' || *ptr == '\t' || *ptr == '\xC2')
-			ptr++;
-
-		yylval.s = NULL;
-		yylval.i = strtol(yytext, NULL, 10);
-		return WINDOW;
-	}
+window			{ count(); return tWINDOW; }
 word			{ count(); return varCheck(tWORD, "word"); }
 
 [<][>]			{ count(); return tNEQ; }
@@ -484,7 +400,7 @@ word			{ count(); return varCheck(tWORD, "word"); }
 		count();
 		yylval.s = new Common::String(yytext);
 
-		return ID;
+		return VARID;
 	}
 {constfloat}	{ count(); yylval.f = atof(yytext); return FLOAT; }
 {constinteger}	{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }


Commit: c1a087e33e3a7eb7d50edf49bdd584187112e76d
    https://github.com/scummvm/scummvm/commit/c1a087e33e3a7eb7d50edf49bdd584187112e76d
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-19T13:33:35-04:00

Commit Message:
DIRECTOR: LINGO: Improve stmtlist

Copied the grammar from program.
Eliminates shift/reduce conflicts.

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 7452433e2b..54f981cf70 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -481,39 +481,40 @@ enum yysymbol_kind_t
   YYSYMBOL_if = 131,                       /* if  */
   YYSYMBOL_lbl = 132,                      /* lbl  */
   YYSYMBOL_stmtlist = 133,                 /* stmtlist  */
-  YYSYMBOL_simpleexprnoparens = 134,       /* simpleexprnoparens  */
-  YYSYMBOL_135_10 = 135,                   /* $@10  */
-  YYSYMBOL_simpleexpr = 136,               /* simpleexpr  */
-  YYSYMBOL_expr = 137,                     /* expr  */
-  YYSYMBOL_chunkexpr = 138,                /* chunkexpr  */
-  YYSYMBOL_reference = 139,                /* reference  */
-  YYSYMBOL_proc = 140,                     /* proc  */
-  YYSYMBOL_141_11 = 141,                   /* $@11  */
-  YYSYMBOL_142_12 = 142,                   /* $@12  */
-  YYSYMBOL_143_13 = 143,                   /* $@13  */
-  YYSYMBOL_144_14 = 144,                   /* $@14  */
-  YYSYMBOL_globallist = 145,               /* globallist  */
-  YYSYMBOL_propertylist = 146,             /* propertylist  */
-  YYSYMBOL_instancelist = 147,             /* instancelist  */
-  YYSYMBOL_gotofunc = 148,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 149,                /* gotomovie  */
-  YYSYMBOL_playfunc = 150,                 /* playfunc  */
-  YYSYMBOL_151_15 = 151,                   /* $@15  */
-  YYSYMBOL_defn = 152,                     /* defn  */
-  YYSYMBOL_153_16 = 153,                   /* $@16  */
-  YYSYMBOL_154_17 = 154,                   /* $@17  */
-  YYSYMBOL_on = 155,                       /* on  */
-  YYSYMBOL_156_18 = 156,                   /* $@18  */
-  YYSYMBOL_argdef = 157,                   /* argdef  */
-  YYSYMBOL_endargdef = 158,                /* endargdef  */
-  YYSYMBOL_argstore = 159,                 /* argstore  */
-  YYSYMBOL_arglist = 160,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 161,          /* nonemptyarglist  */
-  YYSYMBOL_list = 162,                     /* list  */
-  YYSYMBOL_valuelist = 163,                /* valuelist  */
-  YYSYMBOL_linearlist = 164,               /* linearlist  */
-  YYSYMBOL_proplist = 165,                 /* proplist  */
-  YYSYMBOL_proppair = 166                  /* proppair  */
+  YYSYMBOL_stmtlistline = 134,             /* stmtlistline  */
+  YYSYMBOL_simpleexprnoparens = 135,       /* simpleexprnoparens  */
+  YYSYMBOL_136_10 = 136,                   /* $@10  */
+  YYSYMBOL_simpleexpr = 137,               /* simpleexpr  */
+  YYSYMBOL_expr = 138,                     /* expr  */
+  YYSYMBOL_chunkexpr = 139,                /* chunkexpr  */
+  YYSYMBOL_reference = 140,                /* reference  */
+  YYSYMBOL_proc = 141,                     /* proc  */
+  YYSYMBOL_142_11 = 142,                   /* $@11  */
+  YYSYMBOL_143_12 = 143,                   /* $@12  */
+  YYSYMBOL_144_13 = 144,                   /* $@13  */
+  YYSYMBOL_145_14 = 145,                   /* $@14  */
+  YYSYMBOL_globallist = 146,               /* globallist  */
+  YYSYMBOL_propertylist = 147,             /* propertylist  */
+  YYSYMBOL_instancelist = 148,             /* instancelist  */
+  YYSYMBOL_gotofunc = 149,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 150,                /* gotomovie  */
+  YYSYMBOL_playfunc = 151,                 /* playfunc  */
+  YYSYMBOL_152_15 = 152,                   /* $@15  */
+  YYSYMBOL_defn = 153,                     /* defn  */
+  YYSYMBOL_154_16 = 154,                   /* $@16  */
+  YYSYMBOL_155_17 = 155,                   /* $@17  */
+  YYSYMBOL_on = 156,                       /* on  */
+  YYSYMBOL_157_18 = 157,                   /* $@18  */
+  YYSYMBOL_argdef = 158,                   /* argdef  */
+  YYSYMBOL_endargdef = 159,                /* endargdef  */
+  YYSYMBOL_argstore = 160,                 /* argstore  */
+  YYSYMBOL_arglist = 161,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 162,          /* nonemptyarglist  */
+  YYSYMBOL_list = 163,                     /* list  */
+  YYSYMBOL_valuelist = 164,                /* valuelist  */
+  YYSYMBOL_linearlist = 165,               /* linearlist  */
+  YYSYMBOL_proplist = 166,                 /* proplist  */
+  YYSYMBOL_proppair = 167                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -823,16 +824,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  99
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2302
+#define YYLAST   1984
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  107
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  60
+#define YYNNTS  61
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  189
+#define YYNRULES  190
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  388
+#define YYNSTATES  390
 
 #define YYMAXUTOK   346
 
@@ -895,19 +896,20 @@ static const yytype_int16 yyrline[] =
      348,   350,   351,   356,   369,   373,   376,   368,   403,   407,
      410,   402,   437,   444,   450,   436,   480,   488,   491,   492,
      494,   496,   498,   505,   513,   514,   516,   522,   526,   530,
-     534,   537,   539,   540,   541,   543,   546,   549,   550,   551,
-     555,   559,   560,   568,   574,   577,   580,   586,   587,   588,
-     589,   595,   595,   600,   603,   611,   613,   614,   616,   617,
-     618,   619,   620,   621,   622,   623,   624,   625,   626,   627,
-     628,   629,   630,   631,   632,   633,   634,   636,   639,   640,
-     641,   642,   643,   644,   645,   646,   648,   649,   652,   655,
-     659,   660,   661,   662,   670,   671,   671,   672,   672,   673,
-     673,   674,   677,   680,   686,   686,   691,   694,   698,   701,
-     705,   708,   712,   715,   726,   727,   728,   729,   733,   737,
-     742,   743,   745,   749,   753,   757,   757,   787,   787,   793,
-     794,   794,   800,   808,   814,   814,   816,   817,   818,   820,
-     821,   822,   824,   826,   827,   828,   830,   831,   833,   835,
-     836,   837,   838,   840,   841,   843,   844,   846,   850,   854
+     534,   537,   539,   540,   542,   543,   545,   548,   551,   552,
+     553,   557,   561,   562,   570,   576,   579,   582,   588,   589,
+     590,   591,   597,   597,   602,   605,   613,   615,   616,   618,
+     619,   620,   621,   622,   623,   624,   625,   626,   627,   628,
+     629,   630,   631,   632,   633,   634,   635,   636,   638,   641,
+     642,   643,   644,   645,   646,   647,   648,   650,   651,   654,
+     657,   661,   662,   663,   664,   672,   673,   673,   674,   674,
+     675,   675,   676,   679,   682,   688,   688,   693,   696,   700,
+     703,   707,   710,   714,   717,   728,   729,   730,   731,   735,
+     739,   744,   745,   747,   751,   755,   759,   759,   789,   789,
+     795,   796,   796,   802,   810,   816,   816,   818,   819,   820,
+     822,   823,   824,   826,   828,   829,   830,   832,   833,   835,
+     837,   838,   839,   840,   842,   843,   845,   846,   848,   852,
+     856
 };
 #endif
 
@@ -943,11 +945,11 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "ID", "asgn", "stmtoneliner", "stmt", "$@1", "$@2", "$@3", "$@4", "$@5",
   "$@6", "$@7", "$@8", "$@9", "startrepeat", "tellstart", "ifstmt",
   "elseifstmtlist", "elseifstmt", "jumpifz", "jump", "varassign", "if",
-  "lbl", "stmtlist", "simpleexprnoparens", "$@10", "simpleexpr", "expr",
-  "chunkexpr", "reference", "proc", "$@11", "$@12", "$@13", "$@14",
-  "globallist", "propertylist", "instancelist", "gotofunc", "gotomovie",
-  "playfunc", "$@15", "defn", "$@16", "$@17", "on", "$@18", "argdef",
-  "endargdef", "argstore", "arglist", "nonemptyarglist", "list",
+  "lbl", "stmtlist", "stmtlistline", "simpleexprnoparens", "$@10",
+  "simpleexpr", "expr", "chunkexpr", "reference", "proc", "$@11", "$@12",
+  "$@13", "$@14", "globallist", "propertylist", "instancelist", "gotofunc",
+  "gotomovie", "playfunc", "$@15", "defn", "$@16", "$@17", "on", "$@18",
+  "argdef", "endargdef", "argstore", "arglist", "nonemptyarglist", "list",
   "valuelist", "linearlist", "proplist", "proppair", YY_NULLPTR
   };
   return yy_sname[yysymbol];
@@ -973,12 +975,12 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-327)
+#define YYPACT_NINF (-323)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-180)
+#define YYTABLE_NINF (-181)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -987,45 +989,45 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    1697,  -327,  -327,  -327,   -42,  -327,   150,  -327,  -327,  -327,
-     -27,  1407,     6,    21,    89,    89,  1439,  1280,  -327,  1439,
-    -327,  -327,  -327,  -327,  -327,  -327,    58,   -71,  1104,  -327,
-    -327,  -327,  -327,  1439,  -327,  -327,  -327,  -327,  -327,  1192,
-    -327,  -327,    89,   -12,  -327,  -327,  1527,  -327,    20,  1527,
-    -327,  -327,  -327,  1439,  -327,    30,  -327,  1439,  1439,  1439,
-    1439,  1439,  1439,  1527,  1527,   596,   703,   810,   917,  1439,
-    1011,   -21,  -327,  -327,  1764,  -327,  -327,  -327,  -327,    89,
-    -327,    89,   980,    89,  -327,   -23,  1527,  1527,     2,     3,
-      50,  -327,  2129,  1764,  -327,    89,  1797,    89,    89,  -327,
-    1697,  1315,  2195,   -18,  2195,    89,   -18,    89,  -327,    11,
-    -327,  -327,  1527,  -327,  2195,  1439,  -327,  1844,  1877,  1910,
-    1943,  2162,  -327,  -327,  -327,  -327,  -327,  -327,  2088,    31,
-      40,  -327,   -79,  2195,     1,    13,    22,  -327,  1315,  1439,
-    1439,  1439,  1439,  1439,  1439,  1439,  1439,  1439,  1439,  1439,
-    1439,  1439,  1439,  1439,  1439,  1439,  -327,  -327,  1527,   106,
-     106,   106,   -32,  1439,  1439,  1439,     7,   100,  1439,  1439,
-    1439,  1439,  1439,  1439,  -327,  -327,    46,  -327,  -327,  -327,
-      47,  -327,  -327,     9,  2088,    -9,  1439,    99,  -327,   -77,
-     -16,    89,  -327,  2195,  1439,  1439,  1439,  1439,  1439,  1439,
-    1439,  1439,  1439,  1439,  -327,  1439,  1439,  1439,  -327,  1439,
-      -7,    26,    19,   -44,   -44,   -44,   -44,  2208,  2208,  -327,
-     -57,   -44,   -44,   -44,   -44,   -57,   -39,   -39,  -327,  -327,
-      89,   110,  -327,  -327,  -327,  -327,  -327,  -327,  1439,  1439,
-    2195,  2195,  2195,  1439,  1439,    89,  2195,  2195,  2195,  2195,
-    2195,  2195,    89,  1726,  -327,    89,  -327,  -327,  -327,  2195,
-    -327,  -327,    89,  -327,  -327,  2195,  1976,  2195,  2009,  2195,
-    2042,  2195,  2075,  2195,  2195,  2195,  2195,  2195,  2195,    31,
-      40,    49,  -327,  -327,  -327,  -327,    -4,  1439,  2195,   265,
-    -327,  2195,  2195,  1527,  -327,  -327,  1538,  -327,  1439,  1538,
-    -327,  -327,  -327,  1439,  1439,  1439,  1439,  1439,  -327,  2195,
-    -327,  -327,  -327,  -327,    10,  -327,  -327,  -327,    69,  2195,
-      29,  -327,   445,  1538,  2195,  2195,  2195,  2195,    32,  -327,
-    -327,  -327,  -327,  1538,  1439,  1439,  -327,  -327,  1439,   108,
-      89,  -327,  1538,  -327,   104,   128,    76,  2195,  2195,  2195,
-    -327,  1439,  -327,    80,  -327,    63,  -327,  1439,   115,  -327,
-    1538,  2195,  -327,    89,  -327,  2195,  1439,    85,   124,  -327,
-    -327,  -327,  2195,  -327,  -327,   479,  -327,  -327,  1538,  -327,
-    -327,  -327,  -327,  1605,  -327,  -327,  1634,  -327
+     138,  -323,  -323,  -323,   -28,  -323,   498,  -323,  -323,  -323,
+      27,  1277,    69,    -8,    24,    24,  1309,  1150,  -323,  1309,
+    -323,  -323,  -323,  -323,  -323,  -323,    47,   -16,  1028,  -323,
+    -323,  -323,  -323,  1309,  -323,  -323,  -323,  -323,  -323,  1062,
+    -323,  -323,    24,    -1,  -323,  -323,  1397,  -323,    66,  1397,
+    -323,  -323,  -323,  1309,  -323,    91,  -323,  1309,  1309,  1309,
+    1309,  1309,  1309,  1397,  1397,   600,   707,   814,   921,  1309,
+     127,    41,  -323,  -323,   414,  -323,  -323,  -323,  -323,    24,
+    -323,    24,   -37,    24,  -323,   -23,  1397,  1397,    -4,    32,
+      94,  -323,  1811,   414,  -323,    24,  1479,    24,    24,  -323,
+     138,  1185,  1877,    51,  1877,    24,    51,    24,  -323,    53,
+    -323,  -323,  1397,  -323,  1877,  1309,  -323,  1526,  1559,  1592,
+    1625,  1844,  -323,  -323,  -323,  -323,  -323,  -323,  1770,    59,
+      76,  -323,   -21,  1877,    87,   106,   108,  -323,  1185,  1309,
+    1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,
+    1309,  1309,  1309,  1309,  1309,  1309,  -323,  -323,  1397,   262,
+     262,   262,   -19,  1309,  1309,  1309,    38,   146,  1309,  1309,
+    1309,  1309,  1309,  1309,  -323,  -323,   109,  -323,  -323,  -323,
+     110,  -323,  -323,   -39,  1770,    33,  1309,   161,  -323,   -32,
+      55,    24,  -323,  1877,  1309,  1309,  1309,  1309,  1309,  1309,
+    1309,  1309,  1309,  1309,  -323,  1309,  1309,  1309,  -323,  1309,
+      14,    15,    61,   201,   201,   201,   201,  1890,  1890,  -323,
+      77,   201,   201,   201,   201,    77,   -20,   -20,  -323,  -323,
+      24,   172,  -323,  -323,  -323,  -323,  -323,  -323,  1309,  1309,
+    1877,  1877,  1877,  1309,  1309,    24,  1877,  1877,  1877,  1877,
+    1877,  1877,    24,   237,  1408,    24,  -323,  -323,  -323,  1877,
+    1408,  -323,    24,  -323,  -323,  1877,  1658,  1877,  1691,  1877,
+    1724,  1877,  1757,  1877,  1877,  1877,  1877,  1877,  1877,    59,
+      76,   111,  -323,  -323,  -323,  -323,    81,  1309,  1877,  1446,
+    -323,  1877,  1877,  1397,  -323,  -323,  -323,  -323,   115,  -323,
+    1309,  -323,  1408,  -323,  1408,  1309,  1309,  1309,  1309,  1309,
+    -323,  1877,  -323,  -323,  -323,  1408,    39,  -323,   140,  1408,
+    1877,    84,  -323,   202,  -323,  1877,  1877,  1877,  1877,    98,
+    1408,  -323,  -323,  -323,  -323,  1309,  1309,  -323,  -323,  -323,
+    1309,   171,    24,  -323,  -323,  -323,   184,   204,   154,  1877,
+    1877,  1877,  1408,  1309,  -323,   156,  -323,   139,  -323,  1309,
+     189,  -323,  -323,  1877,  -323,    24,  -323,  1877,  1309,   159,
+     193,  -323,  1408,  -323,  1877,  -323,  1408,   162,  -323,  -323,
+    -323,  -323,  1408,  -323,  -323,   163,  1408,  -323,   165,  -323
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1033,67 +1035,69 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       4,     7,   155,   160,   124,   125,     0,   144,    60,   157,
-       0,     0,     0,     0,     0,     0,     0,     0,   129,     0,
-     127,   164,     8,     9,    10,    11,     0,     2,     0,    29,
-      31,     6,    32,     0,    30,   121,   122,     5,    61,     0,
-      61,   123,     0,     0,    65,    72,     0,    66,     0,     0,
-      70,    69,    76,     0,   145,     0,   146,     0,     0,     0,
+       4,     7,   156,   161,   125,   126,     0,   145,    60,   158,
+       0,     0,     0,     0,     0,     0,     0,     0,   130,     0,
+     128,   165,     8,     9,    10,    11,     0,     2,     0,    29,
+      31,     6,    32,     0,    30,   122,   123,     5,    61,     0,
+      61,   124,     0,     0,    66,    73,     0,    67,     0,     0,
+      71,    70,    77,     0,   146,     0,   147,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    84,    86,    88,   147,   116,    71,   149,    79,     0,
-      46,     0,   120,     0,    61,     0,     0,     0,     0,     0,
-       0,   159,   132,   152,   154,     0,     0,     0,     0,     1,
-       4,     0,   174,   137,    57,   166,   156,   166,   138,   126,
-      85,    73,     0,    74,   151,     0,   102,     0,     0,     0,
-       0,     0,    67,    68,   117,   107,   118,   119,     0,    70,
-      69,   180,    84,   183,     0,   182,   181,   185,     0,     0,
+       0,    85,    87,    89,   148,   117,    72,   150,    80,     0,
+      46,     0,   121,     0,    61,     0,     0,     0,     0,     0,
+       0,   160,   133,   153,   155,     0,     0,     0,     0,     1,
+       4,     0,   175,   138,    57,   167,   157,   167,   139,   127,
+      86,    74,     0,    75,   152,     0,   103,     0,     0,     0,
+       0,     0,    68,    69,   118,   108,   119,   120,     0,    71,
+      70,   181,    85,   184,     0,   183,   182,   186,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   148,    61,     0,     0,
+       0,     0,     0,     0,     0,     0,   149,    61,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   153,   142,   130,    51,    51,   140,
-     128,   165,     3,    84,   174,     0,     0,     0,   167,     0,
-       0,     0,    75,   150,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    87,     0,     0,     0,   178,     0,
-       0,    84,     0,    98,    99,    96,    97,   100,   101,    93,
-     104,   105,   106,    95,    94,   103,    89,    90,    91,    92,
-     166,     0,    12,    13,    15,    16,    17,    18,     0,     0,
+       0,     0,     0,     0,   154,   143,   131,    51,    51,   141,
+     129,   166,     3,    85,   175,     0,     0,     0,   168,     0,
+       0,     0,    76,   151,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    88,     0,     0,     0,   179,     0,
+       0,    85,     0,    99,   100,    97,    98,   101,   102,    94,
+     105,   106,   107,    96,    95,   104,    90,    91,    92,    93,
+     167,     0,    12,    13,    15,    16,    17,    18,     0,     0,
       57,    22,    20,     0,     0,     0,    27,    28,    21,    19,
-      47,   131,     0,     0,    62,     0,   133,   134,   136,   175,
-      62,   172,     0,   172,   139,   108,     0,   110,     0,   112,
-       0,   114,     0,    77,    78,   188,   187,   189,   184,     0,
-       0,     0,   186,    80,    81,    83,     0,     0,    42,    34,
-      50,    23,    24,     0,   143,    61,    61,   141,     0,    58,
-      62,   168,    62,     0,     0,     0,     0,     0,   172,    14,
-      61,    59,    59,    62,     0,    49,    63,    64,     0,   176,
-       0,    54,   163,   161,   109,   111,   113,   115,     0,    62,
-      43,    35,    39,    58,     0,     0,    48,   135,     0,    61,
-     169,    82,   158,    57,     0,     0,     0,    25,    26,   177,
-      62,     0,    55,     0,   170,   162,    44,     0,     0,    33,
-      61,    57,    52,     0,    50,    36,     0,     0,     0,   171,
-      62,    57,    40,    53,    62,     0,    50,    57,    58,    45,
-      62,    50,    56,     0,    62,    37,     0,    41
+      47,   132,     0,     0,    64,     0,   134,   135,   137,   176,
+      64,   173,     0,   173,   140,   109,     0,   111,     0,   113,
+       0,   115,     0,    78,    79,   189,   188,   190,   185,     0,
+       0,     0,   187,    81,    82,    84,     0,     0,    42,    34,
+      50,    23,    24,     0,   144,    61,    65,    61,    62,   142,
+       0,    58,    64,   169,    64,     0,     0,     0,     0,     0,
+     173,    14,    61,    59,    59,    64,     0,    49,     0,    64,
+     177,     0,    54,   164,   162,   110,   112,   114,   116,     0,
+      64,    43,    35,    39,    58,     0,     0,    48,    63,   136,
+       0,    61,   170,    83,   159,    57,     0,     0,     0,    25,
+      26,   178,    64,     0,    55,     0,   171,   163,    44,     0,
+       0,    33,    61,    57,    52,     0,    50,    36,     0,     0,
+       0,   172,    64,    57,    40,    53,    64,     0,    50,    57,
+      58,    45,    64,    50,    56,     0,    64,    37,     0,    41
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -327,    78,  -327,     0,  -327,   -74,     4,  -327,  -327,  -327,
-    -327,  -327,  -327,  -327,  -327,  -327,  -299,    12,  -327,  -327,
-    -327,  -235,  -326,  -123,  -327,   -24,  -227,   127,  -327,   -43,
-     250,   -20,  -327,  -327,  -327,  -327,  -327,  -327,  -327,  -327,
-    -327,  -327,   -15,  -327,  -327,  -327,  -327,  -327,  -327,  -327,
-    -106,  -327,  -255,   -29,  -107,  -327,  -327,  -327,  -327,    -3
+    -323,   147,  -323,     0,  -323,     3,     8,  -323,  -323,  -323,
+    -323,  -323,  -323,  -323,  -323,  -323,  -301,    86,  -323,  -323,
+    -323,  -239,  -322,   -48,  -323,   -38,  -243,  -323,   107,  -323,
+     -43,   252,   -29,  -323,  -323,  -323,  -323,  -323,  -323,  -323,
+    -323,  -323,  -323,     1,  -323,  -323,  -323,  -323,  -323,  -323,
+    -323,  -103,  -323,  -244,   -34,   -42,  -323,  -323,  -323,  -323,
+      62
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    26,    27,    71,    29,    30,   317,   311,   344,   371,
-     312,   345,   377,   310,   343,   364,   313,   253,    32,   339,
-     352,   187,   321,   331,    33,   105,   296,    72,   307,    73,
-     102,    75,    76,    34,    42,    97,    95,   298,   109,   180,
-     176,    35,    77,    36,    39,    37,    79,    40,    38,    98,
-     189,   355,   300,   103,   320,    78,   134,   135,   136,   137
+      -1,    26,    27,    71,    29,    30,   296,   313,   346,   373,
+     314,   347,   379,   312,   345,   366,   315,   253,    32,   341,
+     354,   187,   322,   332,    33,   105,   297,   298,    72,   309,
+      73,   102,    75,    76,    34,    42,    97,    95,   300,   109,
+     180,   176,    35,    77,    36,    39,    37,    79,    40,    38,
+      98,   189,   357,   302,   103,   321,    78,   134,   135,   136,
+     137
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1101,136 +1105,123 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      28,   190,    94,   111,    31,   290,   113,   346,   302,    41,
-     106,   238,   145,    89,    90,    91,   107,     1,   279,   280,
-     122,   123,   138,   261,    80,   145,   262,   207,   146,   100,
-     145,   164,   239,   299,   152,   153,   154,   155,    85,    86,
-      87,   165,   108,   166,   167,     1,   151,   152,   153,   154,
-     155,    88,   382,   329,   154,   155,   168,   170,    99,   156,
-     163,   243,    83,    84,   334,   370,   169,   171,   112,   192,
-     132,   244,   185,   322,   335,   323,   115,   380,   174,   157,
-     138,   158,   384,   162,   263,   186,   333,   262,   110,    22,
-      23,    24,    25,   258,   186,   175,   308,   179,   181,   262,
-      28,   183,   342,   172,    31,   188,   208,   188,   356,   212,
-     138,   256,   257,     1,   191,   231,   209,    22,    23,    24,
-      25,   285,   186,   360,   286,   210,   368,   138,   283,   284,
-       1,   337,   338,   230,   341,   338,   376,   205,   211,   233,
-     235,   237,   381,   375,   350,   351,   206,   378,   245,   252,
-     255,    43,   260,   383,   287,   207,   336,   386,   357,   232,
-     234,   236,   359,   358,    44,   362,   363,    45,    46,   366,
-     373,    47,    48,    49,     1,    50,    51,   374,   182,   295,
-      52,    58,    59,    60,    61,    22,    23,    24,    25,   332,
-     254,   264,   124,   125,   126,   127,    53,    54,    55,    56,
-     328,     0,    22,    66,    24,    25,     0,   282,     0,     0,
-     281,     0,     0,     0,     0,     0,     0,     0,    57,     0,
-       0,     0,     0,     0,     0,    58,    59,    60,    61,    62,
-     188,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    63,    64,     0,     0,   293,    65,    66,    67,    68,
-     314,    69,   294,    28,    70,   297,    74,     0,     0,     0,
-       0,    82,   301,     0,     0,     0,    92,    93,     0,    96,
-       0,   315,   318,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   104,     0,     0,   330,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    28,     0,     0,    28,
-     -38,     0,     0,   114,     0,     0,     0,   116,   117,   118,
-     119,   120,   121,     0,     0,   353,     0,     0,     0,   128,
-     133,     0,    28,    28,     0,     0,     0,   139,   140,   141,
-     142,   143,   144,    28,   145,     0,   367,   146,   147,   148,
-     354,     0,    28,     0,     0,     0,     0,     0,     0,     0,
-       0,   184,     0,   149,   150,   151,   152,   153,   154,   155,
-      28,     0,     0,   369,     0,   193,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    28,     0,     0,    28,     0,
-       0,     0,     0,    28,     0,     0,    28,     0,     0,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,     0,     0,     0,     0,
-       0,     0,     0,   240,   241,   242,     0,     0,   246,   247,
-     248,   249,   250,   251,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   259,     0,     0,     0,
-       0,     0,     0,     0,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,     0,   275,   276,   277,     0,   278,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     1,
-       0,     0,   340,     2,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     4,     5,     6,     7,     8,   288,   289,
-       0,     0,    10,   291,   292,    11,    12,    13,     0,     0,
-      14,     0,     0,     1,    16,    17,    18,     2,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     4,     5,     6,
-       7,     8,     0,     0,     0,     0,    10,    19,    20,    11,
-      12,    13,     0,     0,    14,     0,     0,   309,    16,    17,
-      18,    22,    23,    24,    25,   316,     0,     0,   319,     0,
-       0,     0,     0,   324,   325,   326,   327,   319,     0,     0,
-       0,    19,    20,     0,     0,   379,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    22,    23,    24,    25,   316,
-       0,     0,     0,     0,   347,   348,     0,     0,   349,     0,
-       0,     0,     0,     0,     0,     0,    -8,    43,     0,     0,
-       0,   361,     0,     0,     0,     0,     0,   365,     0,     0,
-      44,     0,     0,    45,    46,     0,   372,    47,    48,    49,
-       1,    50,    51,    -8,    -8,     0,    52,     0,     0,     0,
-       0,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,     0,
-      -8,     0,    -8,    -8,    -8,     0,    -8,    -8,    -8,    -8,
-      -8,    -8,    -8,     0,     0,    -8,    -8,    -8,    -8,    -8,
+      28,   290,   107,   111,   190,   106,   113,   159,    31,    85,
+      86,    87,   348,    89,    90,    91,     1,   301,    94,   304,
+     122,   123,    88,    41,   238,   139,   140,   141,   142,   143,
+     144,   164,   145,   160,   161,   146,   147,   148,     1,   279,
+     280,   165,   108,   166,   167,   239,   163,    99,     1,   145,
+     168,   149,   150,   151,   152,   153,   154,   155,   384,   323,
+     169,   324,   138,   256,   257,   372,   330,   185,   261,   192,
+     132,   262,   334,   154,   155,   156,   338,   382,    80,   157,
+     138,   158,   386,   162,   100,   207,   170,   344,    22,    23,
+      24,    25,   243,   335,   174,   175,   171,   179,   181,   110,
+      28,   183,   244,   336,   212,   188,   358,   188,    31,   362,
+      22,    23,    24,    25,   112,   231,   138,   283,   284,   230,
+      22,    23,    24,    25,   370,    83,    84,   286,    43,   377,
+     233,   235,   237,   380,   378,   258,   186,   115,   211,   385,
+     383,    44,   138,   388,    45,    46,   145,   172,    47,    48,
+      49,     1,   129,   130,   186,   263,   191,    52,   262,   232,
+     234,   236,     1,   285,   186,   205,     2,     3,   152,   153,
+     154,   155,   124,   125,   126,   127,     4,     5,     6,     7,
+       8,   310,   206,     9,   262,    10,   339,   340,    11,    12,
+      13,   264,   208,    14,   245,    57,    15,    16,    17,    18,
+     343,   340,    58,    59,    60,    61,    62,   352,   353,   209,
+     281,   210,   252,   255,   260,   319,   287,   207,    63,    64,
+      19,    20,    21,    65,    66,    67,    68,   337,    69,   342,
+     188,    70,  -180,   131,    22,    23,    24,    25,   359,   360,
+     361,   364,   365,   368,   375,   293,   376,   182,   381,   387,
+     316,   389,   294,    28,    28,   299,   295,   317,    74,   318,
+      28,     1,   303,    82,   254,     2,   333,   329,    92,    93,
+     145,    96,   282,   146,   331,     4,     5,     6,     7,     0,
+       0,     0,     0,     0,     0,   104,     1,    11,     0,    13,
+       0,   151,   152,   153,   154,   155,    16,    17,    18,     0,
+       0,     0,    28,   355,    28,   114,     0,     0,     0,   116,
+     117,   118,   119,   120,   121,    28,     0,     0,     0,    28,
+      20,   128,   133,     0,   369,     0,     0,     0,     0,     0,
+      28,     0,     0,    22,    23,    24,    25,    58,    59,    60,
+      61,     0,   356,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    28,   184,     0,     0,     0,     0,    22,    66,
+      24,    25,     0,     0,     0,   371,     0,   193,     0,     0,
+       0,     0,    28,     0,     0,     0,    28,     0,     0,     0,
+       0,     0,    28,     0,     0,     0,    28,     0,     0,     0,
+       0,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,     0,     0,
+       0,     0,     0,     0,     0,   240,   241,   242,     0,     0,
+     246,   247,   248,   249,   250,   251,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   259,     0,
+       0,     0,     0,     0,     0,     0,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,     0,   275,   276,   277,
+      53,   278,    55,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   139,   140,   141,   142,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
+     288,   289,     0,     0,     0,   291,   292,     0,     0,    43,
+       0,     0,   149,   150,   151,   152,   153,   154,   155,     0,
+       0,     0,    44,     0,     0,    45,    46,     0,     0,    47,
+      48,    49,     1,    50,    51,     0,     0,     0,    52,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   311,
+       0,     0,     0,     0,    53,    54,    55,    56,     0,     0,
+       0,     0,   320,     0,     0,     0,     0,   325,   326,   327,
+     328,   320,     0,     0,     0,     0,    57,     0,     0,     0,
+       0,     0,     0,    58,    59,    60,    61,    62,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   349,   350,    63,
+      64,     0,   351,     0,    65,    66,    67,    68,     0,    69,
+      -8,    43,    70,     0,     0,   363,     0,     0,     0,     0,
+       0,   367,     0,     0,    44,     0,     0,    45,    46,     0,
+     374,    47,    48,    49,     1,    50,    51,    -8,    -8,     0,
+      52,     0,     0,     0,     0,    -8,    -8,    -8,    -8,    -8,
+      -8,    -8,    -8,     0,    -8,     0,    -8,    -8,    -8,     0,
+      -8,    -8,    -8,    -8,    -8,    -8,    -8,     0,     0,    -8,
+      -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,     0,    -8,
+      -8,    -8,    -8,    -8,    -8,    58,    59,    60,    61,    62,
       -8,    -8,    -8,    -8,     0,    -8,    -8,    -8,    -8,    -8,
-      -8,    58,    59,    60,    61,    62,    -8,    -8,    -8,    -8,
-       0,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,
-      -8,     0,    65,    66,    67,    68,    -8,    -8,    -8,    -8,
-      70,    -8,    -8,    -9,    43,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    44,     0,     0,
-      45,    46,     0,     0,    47,    48,    49,     1,    50,    51,
-      -9,    -9,     0,    52,     0,     0,     0,     0,    -9,    -9,
-      -9,    -9,    -9,    -9,    -9,    -9,     0,    -9,     0,    -9,
-      -9,    -9,     0,    -9,    -9,    -9,    -9,    -9,    -9,    -9,
-       0,     0,    -9,    -9,    -9,    -9,    -9,    -9,    -9,    -9,
-      -9,     0,    -9,    -9,    -9,    -9,    -9,    -9,    58,    59,
-      60,    61,    62,    -9,    -9,    -9,    -9,     0,    -9,    -9,
-      -9,    -9,    -9,    -9,    -9,    -9,    -9,    -9,     0,    65,
-      66,    67,    68,    -9,    -9,    -9,    -9,    70,    -9,    -9,
-     -10,    43,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    44,     0,     0,    45,    46,     0,
-       0,    47,    48,    49,     1,    50,    51,   -10,   -10,     0,
-      52,     0,     0,     0,     0,   -10,   -10,   -10,   -10,   -10,
-     -10,   -10,   -10,     0,   -10,     0,   -10,   -10,   -10,     0,
-     -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,     0,   -10,
-     -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,   -10,
-     -10,   -10,   -10,   -10,   -10,    58,    59,    60,    61,    62,
-     -10,   -10,   -10,   -10,     0,   -10,   -10,   -10,   -10,   -10,
-     -10,   -10,   -10,   -10,   -10,     0,    65,    66,    67,    68,
-     -10,   -10,   -10,   -10,    70,   -10,   -10,   -11,    43,     0,
+      -8,    -8,    -8,    -8,    -8,     0,    65,    66,    67,    68,
+      -8,    -8,    -8,    -8,    70,    -8,    -8,    -9,    43,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    44,     0,     0,    45,    46,     0,     0,    47,    48,
-      49,     1,    50,    51,   -11,   -11,     0,    52,     0,     0,
-       0,     0,   -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,
-       0,   -11,     0,   -11,   -11,   -11,     0,   -11,   -11,   -11,
-     -11,   -11,   -11,   -11,     0,     0,   -11,   -11,   -11,   -11,
-     -11,   -11,   -11,   -11,   -11,     0,   -11,   -11,   -11,   -11,
-     -11,   -11,    58,    59,    60,    61,    62,   -11,   -11,   -11,
-     -11,     0,   -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,
-     -11,   -11,    43,    65,    66,    67,    68,   -11,   -11,   -11,
-     -11,    70,   -11,   -11,   159,    44,     0,     0,    45,    46,
-       0,     0,    47,    48,    49,     1,   129,   130,     0,     0,
-       0,    52,   139,   140,   141,   142,   143,   144,     0,   145,
-     160,   161,   146,   147,   148,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   149,   150,
-     151,   152,   153,   154,   155,     0,     0,     0,     0,    57,
-       0,     0,     0,     0,     0,     0,    58,    59,    60,    61,
-      62,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    63,    64,  -173,    43,     0,    65,    66,    67,
-      68,     0,    69,     0,     0,    70,  -179,   131,    44,     0,
+      49,     1,    50,    51,    -9,    -9,     0,    52,     0,     0,
+       0,     0,    -9,    -9,    -9,    -9,    -9,    -9,    -9,    -9,
+       0,    -9,     0,    -9,    -9,    -9,     0,    -9,    -9,    -9,
+      -9,    -9,    -9,    -9,     0,     0,    -9,    -9,    -9,    -9,
+      -9,    -9,    -9,    -9,    -9,     0,    -9,    -9,    -9,    -9,
+      -9,    -9,    58,    59,    60,    61,    62,    -9,    -9,    -9,
+      -9,     0,    -9,    -9,    -9,    -9,    -9,    -9,    -9,    -9,
+      -9,    -9,     0,    65,    66,    67,    68,    -9,    -9,    -9,
+      -9,    70,    -9,    -9,   -10,    43,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    44,     0,
        0,    45,    46,     0,     0,    47,    48,    49,     1,    50,
-      51,  -173,  -173,     0,    52,     0,     0,     0,     0,     0,
-    -173,  -173,  -173,  -173,  -173,  -173,  -173,     0,     0,     0,
-       0,  -173,     0,     0,  -173,  -173,  -173,     0,     0,  -173,
-       0,     0,     0,  -173,  -173,  -173,     0,     0,     0,     0,
-       0,     0,    57,     0,     0,     0,     0,     0,     0,    58,
-      59,    60,    61,    62,     0,     0,  -173,  -173,     0,  -173,
-    -173,  -173,  -173,    43,     0,    63,    64,     0,     0,     0,
-      65,    66,    67,    68,  -173,   101,    44,  -173,    70,    45,
-      46,     0,     0,    47,    48,    49,     1,    50,    51,  -173,
-    -173,     0,    52,     0,     0,     0,     0,     0,  -173,  -173,
-    -173,  -173,  -173,  -173,  -173,     0,     0,     0,     0,  -173,
-       0,     0,  -173,  -173,  -173,     0,     0,  -173,     0,     0,
-       0,  -173,  -173,  -173,     0,     0,     0,     0,     0,     0,
-      57,     0,     0,     0,     0,     0,     0,    58,    59,    60,
-      61,    62,     0,     0,  -173,  -173,     0,  -173,  -173,  -173,
+      51,   -10,   -10,     0,    52,     0,     0,     0,     0,   -10,
+     -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,   -10,     0,
+     -10,   -10,   -10,     0,   -10,   -10,   -10,   -10,   -10,   -10,
+     -10,     0,     0,   -10,   -10,   -10,   -10,   -10,   -10,   -10,
+     -10,   -10,     0,   -10,   -10,   -10,   -10,   -10,   -10,    58,
+      59,    60,    61,    62,   -10,   -10,   -10,   -10,     0,   -10,
+     -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,
+      65,    66,    67,    68,   -10,   -10,   -10,   -10,    70,   -10,
+     -10,   -11,    43,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    44,     0,     0,    45,    46,
+       0,     0,    47,    48,    49,     1,    50,    51,   -11,   -11,
+       0,    52,     0,     0,     0,     0,   -11,   -11,   -11,   -11,
+     -11,   -11,   -11,   -11,     0,   -11,     0,   -11,   -11,   -11,
+       0,   -11,   -11,   -11,   -11,   -11,   -11,   -11,     0,     0,
+     -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,     0,
+     -11,   -11,   -11,   -11,   -11,   -11,    58,    59,    60,    61,
+      62,   -11,   -11,   -11,   -11,     0,   -11,   -11,   -11,   -11,
+     -11,   -11,   -11,   -11,   -11,   -11,     0,    65,    66,    67,
+      68,   -11,   -11,   -11,   -11,    70,   -11,   -11,  -174,    43,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    44,     0,     0,    45,    46,     0,     0,    47,
+      48,    49,     1,    50,    51,  -174,     0,     0,    52,     0,
+       0,     0,  -174,    43,  -174,  -174,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    44,     0,     0,    45,
+      46,     0,     0,    47,    48,    49,     1,    50,    51,  -174,
+       0,     0,    52,     0,     0,     0,    57,     0,  -174,  -174,
+       0,     0,     0,    58,    59,    60,    61,    62,     0,     0,
+       0,     0,     0,  -174,  -174,  -174,     0,     0,     0,    63,
+      64,     0,     0,     0,    65,    66,    67,    68,  -174,   101,
+      57,  -174,    70,     0,     0,     0,     0,    58,    59,    60,
+      61,    62,     0,     0,     0,     0,     0,  -174,  -174,  -174,
        0,    43,     0,    63,    64,     0,     0,     0,    65,    66,
-      67,    68,  -173,    69,    44,  -173,    70,    45,    46,     0,
+      67,    68,  -174,    69,    44,  -174,    70,    45,    46,     0,
        0,    47,    48,    49,     1,    50,    51,     0,     0,     0,
       52,     0,     0,     0,     0,     0,    43,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    53,     0,    55,    44,
@@ -1242,7 +1233,7 @@ static const yytype_int16 yytable[] =
        0,    69,     0,    57,    70,     0,     0,     0,     0,     0,
       58,    59,    60,    61,    62,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    63,    64,    43,     0,
-       0,    65,    66,    67,    68,     0,    69,  -173,  -173,    70,
+       0,    65,    66,    67,    68,     0,    69,  -174,  -174,    70,
        0,    44,     0,     0,    45,    46,     0,    81,    47,    48,
       49,     1,    50,    51,     0,     0,     0,    52,     0,     0,
       43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1262,164 +1253,124 @@ static const yytype_int16 yytable[] =
        8,     0,     0,     0,     0,    10,     0,     0,    11,    12,
       13,     0,     0,    14,     0,     0,     0,    16,    17,    18,
        0,     0,    58,    59,    60,    61,    62,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    63,    64,
-      19,    20,     0,    65,    66,    67,    68,     0,    69,     1,
-       0,    70,     0,     2,    22,    23,    24,    25,   316,     0,
-       0,     0,     0,     4,     5,     6,     7,     8,     0,     0,
-       0,     0,    10,     0,     0,    11,    12,    13,     1,     0,
-      14,     0,     2,     0,    16,    17,    18,     0,     0,     0,
-       0,     0,     4,     5,     6,     7,     8,     0,     0,     0,
-       0,    10,     0,     0,    11,    12,    13,    19,    20,    14,
-       0,   385,     0,    16,    17,    18,     0,     0,     0,     0,
-       0,    22,    23,    24,    25,   316,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    19,    20,     0,     0,
-     387,     1,     0,     0,     0,     2,     3,     0,     0,     0,
-      22,    23,    24,    25,   316,     4,     5,     6,     7,     8,
-       0,     0,     9,     0,    10,     0,     0,    11,    12,    13,
-       1,     0,    14,     0,     2,    15,    16,    17,    18,     0,
-       0,     0,     0,     0,     4,     5,     6,     7,     0,     0,
-       0,     0,     0,     0,     0,     0,    11,     0,    13,    19,
-      20,    21,     0,     0,     0,    16,    17,    18,     0,     0,
-       0,     0,     0,    22,    23,    24,    25,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    20,
-      53,     0,    55,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    22,    23,    24,    25,   139,   140,   141,   142,
-     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   177,   149,   150,   151,   152,   153,   154,   155,   139,
-     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
-     147,   148,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
-     154,   155,   194,     0,     0,     0,     0,   178,   195,     0,
-       0,     0,     0,     0,     0,     0,   139,   140,   141,   142,
-     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
-       0,     0,     0,     0,     0,   196,     0,     0,     0,     0,
-       0,   197,   149,   150,   151,   152,   153,   154,   155,   139,
-     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
-     147,   148,     0,     0,     0,     0,     0,     0,   198,     0,
-       0,     0,     0,     0,   199,   149,   150,   151,   152,   153,
-     154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
-       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
-       0,   200,     0,     0,     0,     0,     0,   201,   149,   150,
-     151,   152,   153,   154,   155,   139,   140,   141,   142,   143,
-     144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
-       0,     0,     0,     0,   303,     0,     0,     0,     0,     0,
-       0,   149,   150,   151,   152,   153,   154,   155,   139,   140,
+       0,   -38,     0,     0,     0,     0,     0,     0,    63,    64,
+      19,    20,     0,    65,    66,    67,    68,     0,    69,     0,
+       0,    70,     0,     0,    22,    23,    24,    25,   139,   140,
      141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,     0,   304,     0,     0,
-       0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
+     148,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   177,   149,   150,   151,   152,   153,   154,
      155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
        0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
-     305,     0,     0,     0,     0,     0,     0,   149,   150,   151,
-     152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
-       0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
-       0,     0,     0,   306,     0,     0,     0,     0,     0,     0,
-     149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
-     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
-     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
-     153,   154,   155,     0,     0,   173,     0,     0,     0,     0,
-     204,   139,   140,   141,   142,   143,   144,     0,   145,     0,
-       0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,   149,   150,   151,
+     152,   153,   154,   155,   194,     0,     0,     0,     0,   178,
+     195,     0,     0,     0,     0,     0,     0,     0,   139,   140,
+     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
+     148,     0,     0,     0,     0,     0,     0,   196,     0,     0,
+       0,     0,     0,   197,   149,   150,   151,   152,   153,   154,
+     155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
+       0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
+     198,     0,     0,     0,     0,     0,   199,   149,   150,   151,
      152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
        0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
-       0,     0,   202,   203,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   200,     0,     0,     0,     0,     0,   201,
      149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
      142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
-     139,   140,   141,   142,     0,     0,     0,   145,     0,     0,
-     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+       0,     0,     0,     0,     0,     0,   305,     0,     0,     0,
+       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
+     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
+     146,   147,   148,     0,     0,     0,     0,     0,     0,   306,
        0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
-     153,   154,   155
+     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
+     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
+       0,     0,   307,     0,     0,     0,     0,     0,     0,   149,
+     150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
+       0,     0,     0,     0,     0,   308,     0,     0,     0,     0,
+       0,     0,   149,   150,   151,   152,   153,   154,   155,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,   139,   140,   141,   142,   143,   144,     0,   145,
+       0,     0,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,     0,     0,     0,     0,     0,     0,   149,   150,
+     151,   152,   153,   154,   155,     0,     0,   173,     0,     0,
+       0,     0,   204,   139,   140,   141,   142,   143,   144,     0,
+     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   149,
+     150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
+       0,     0,     0,     0,   202,   203,     0,     0,     0,     0,
+       0,     0,   149,   150,   151,   152,   153,   154,   155,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,   139,   140,   141,   142,     0,     0,     0,   145,
+       0,     0,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,     0,     0,     0,     0,     0,     0,   149,   150,
+     151,   152,   153,   154,   155
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   107,    17,    46,     0,   240,    49,   333,   263,    51,
-      39,    43,    69,    13,    14,    15,    40,    24,    25,    26,
-      63,    64,   101,   100,    51,    69,   103,   106,    72,   100,
-      69,    54,    64,   260,    91,    92,    93,    94,    17,    18,
-      19,    64,    42,    86,    87,    24,    90,    91,    92,    93,
-      94,    30,   378,   308,    93,    94,    54,    54,     0,    74,
-      84,    54,    56,    57,    54,   364,    64,    64,    48,   112,
-      70,    64,   101,   300,    64,   302,    46,   376,    93,    79,
-     101,    81,   381,    83,   100,   103,   313,   103,   100,    96,
-      97,    98,    99,   102,   103,    95,   100,    97,    98,   103,
-     100,   101,   329,    53,   100,   105,   105,   107,   343,   138,
-     101,   102,   103,    24,   103,   158,   103,    96,    97,    98,
-      99,   102,   103,   350,   230,   103,   361,   101,   102,   103,
-      24,   102,   103,   157,   102,   103,   371,   106,   138,   159,
-     160,   161,   377,   370,    36,    37,   106,   374,    48,   103,
-     103,     1,    53,   380,    44,   106,    87,   384,    54,   159,
-     160,   161,    86,    35,    14,    85,   103,    17,    18,    54,
-      85,    21,    22,    23,    24,    25,    26,    53,   100,   253,
-      30,    75,    76,    77,    78,    96,    97,    98,    99,   312,
-     178,   191,    65,    66,    67,    68,    46,    47,    48,    49,
-     307,    -1,    96,    97,    98,    99,    -1,   210,    -1,    -1,
-     210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-      -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,
-     230,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    91,    92,    -1,    -1,   245,    96,    97,    98,    99,
-     293,   101,   252,   253,   104,   255,     6,    -1,    -1,    -1,
-      -1,    11,   262,    -1,    -1,    -1,    16,    17,    -1,    19,
-      -1,   295,   296,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    33,    -1,    -1,   310,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   296,    -1,    -1,   299,
-      35,    -1,    -1,    53,    -1,    -1,    -1,    57,    58,    59,
-      60,    61,    62,    -1,    -1,   339,    -1,    -1,    -1,    69,
-      70,    -1,   322,   323,    -1,    -1,    -1,    62,    63,    64,
-      65,    66,    67,   333,    69,    -1,   360,    72,    73,    74,
-     340,    -1,   342,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   101,    -1,    88,    89,    90,    91,    92,    93,    94,
-     360,    -1,    -1,   363,    -1,   115,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   375,    -1,    -1,   378,    -1,
-      -1,    -1,    -1,   383,    -1,    -1,   386,    -1,    -1,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   163,   164,   165,    -1,    -1,   168,   169,
-     170,   171,   172,   173,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   194,   195,   196,   197,   198,   199,
-     200,   201,   202,   203,    -1,   205,   206,   207,    -1,   209,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,
-      -1,    -1,    27,    28,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    38,    39,    40,    41,    42,   238,   239,
-      -1,    -1,    47,   243,   244,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    24,    59,    60,    61,    28,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39,    40,
-      41,    42,    -1,    -1,    -1,    -1,    47,    82,    83,    50,
-      51,    52,    -1,    -1,    55,    -1,    -1,   287,    59,    60,
-      61,    96,    97,    98,    99,   100,    -1,    -1,   298,    -1,
-      -1,    -1,    -1,   303,   304,   305,   306,   307,    -1,    -1,
-      -1,    82,    83,    -1,    -1,    86,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    96,    97,    98,    99,   100,
-      -1,    -1,    -1,    -1,   334,   335,    -1,    -1,   338,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,     0,     1,    -1,    -1,
-      -1,   351,    -1,    -1,    -1,    -1,    -1,   357,    -1,    -1,
-      14,    -1,    -1,    17,    18,    -1,   366,    21,    22,    23,
-      24,    25,    26,    27,    28,    -1,    30,    -1,    -1,    -1,
-      -1,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
-      44,    -1,    46,    47,    48,    -1,    50,    51,    52,    53,
-      54,    55,    56,    -1,    -1,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    -1,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      -1,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    -1,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,     0,     1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,
-      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
-      27,    28,    -1,    30,    -1,    -1,    -1,    -1,    35,    36,
-      37,    38,    39,    40,    41,    42,    -1,    44,    -1,    46,
-      47,    48,    -1,    50,    51,    52,    53,    54,    55,    56,
-      -1,    -1,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    -1,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,    78,    79,    80,    81,    82,    83,    -1,    85,    86,
-      87,    88,    89,    90,    91,    92,    93,    94,    -1,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
+       0,   240,    40,    46,   107,    39,    49,    44,     0,    17,
+      18,    19,   334,    13,    14,    15,    24,   260,    17,   263,
+      63,    64,    30,    51,    43,    62,    63,    64,    65,    66,
+      67,    54,    69,    70,    71,    72,    73,    74,    24,    25,
+      26,    64,    42,    86,    87,    64,    84,     0,    24,    69,
+      54,    88,    89,    90,    91,    92,    93,    94,   380,   302,
+      64,   304,   101,   102,   103,   366,   310,   101,   100,   112,
+      70,   103,   315,    93,    94,    74,   319,   378,    51,    79,
+     101,    81,   383,    83,   100,   106,    54,   330,    96,    97,
+      98,    99,    54,    54,    93,    95,    64,    97,    98,   100,
+     100,   101,    64,    64,   138,   105,   345,   107,   100,   352,
+      96,    97,    98,    99,    48,   158,   101,   102,   103,   157,
+      96,    97,    98,    99,   363,    56,    57,   230,     1,   372,
+     159,   160,   161,   376,   373,   102,   103,    46,   138,   382,
+     379,    14,   101,   386,    17,    18,    69,    53,    21,    22,
+      23,    24,    25,    26,   103,   100,   103,    30,   103,   159,
+     160,   161,    24,   102,   103,   106,    28,    29,    91,    92,
+      93,    94,    65,    66,    67,    68,    38,    39,    40,    41,
+      42,   100,   106,    45,   103,    47,   102,   103,    50,    51,
+      52,   191,   105,    55,    48,    68,    58,    59,    60,    61,
+     102,   103,    75,    76,    77,    78,    79,    36,    37,   103,
+     210,   103,   103,   103,    53,   100,    44,   106,    91,    92,
+      82,    83,    84,    96,    97,    98,    99,    87,   101,    27,
+     230,   104,   105,   106,    96,    97,    98,    99,    54,    35,
+      86,    85,   103,    54,    85,   245,    53,   100,    86,    86,
+     293,    86,   252,   253,   254,   255,   253,   295,     6,   297,
+     260,    24,   262,    11,   178,    28,   314,   309,    16,    17,
+      69,    19,   210,    72,   312,    38,    39,    40,    41,    -1,
+      -1,    -1,    -1,    -1,    -1,    33,    24,    50,    -1,    52,
+      -1,    90,    91,    92,    93,    94,    59,    60,    61,    -1,
+      -1,    -1,   302,   341,   304,    53,    -1,    -1,    -1,    57,
+      58,    59,    60,    61,    62,   315,    -1,    -1,    -1,   319,
+      83,    69,    70,    -1,   362,    -1,    -1,    -1,    -1,    -1,
+     330,    -1,    -1,    96,    97,    98,    99,    75,    76,    77,
+      78,    -1,   342,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   352,   101,    -1,    -1,    -1,    -1,    96,    97,
+      98,    99,    -1,    -1,    -1,   365,    -1,   115,    -1,    -1,
+      -1,    -1,   372,    -1,    -1,    -1,   376,    -1,    -1,    -1,
+      -1,    -1,   382,    -1,    -1,    -1,   386,    -1,    -1,    -1,
+      -1,   139,   140,   141,   142,   143,   144,   145,   146,   147,
+     148,   149,   150,   151,   152,   153,   154,   155,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   163,   164,   165,    -1,    -1,
+     168,   169,   170,   171,   172,   173,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   186,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   194,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,    -1,   205,   206,   207,
+      46,   209,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
+     238,   239,    -1,    -1,    -1,   243,   244,    -1,    -1,     1,
+      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    -1,
+      -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    -1,    -1,    -1,    30,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   287,
+      -1,    -1,    -1,    -1,    46,    47,    48,    49,    -1,    -1,
+      -1,    -1,   300,    -1,    -1,    -1,    -1,   305,   306,   307,
+     308,   309,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,
+      -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,   336,    91,
+      92,    -1,   340,    -1,    96,    97,    98,    99,    -1,   101,
+       0,     1,   104,    -1,    -1,   353,    -1,    -1,    -1,    -1,
+      -1,   359,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,
+     368,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
       30,    -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,
       40,    41,    42,    -1,    44,    -1,    46,    47,    48,    -1,
       50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
@@ -1437,33 +1388,41 @@ static const yytype_int16 yycheck[] =
       63,    64,    65,    66,    67,    -1,    69,    70,    71,    72,
       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
       83,    -1,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,     1,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,    44,    14,    -1,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    -1,    -1,
-      -1,    30,    62,    63,    64,    65,    66,    67,    -1,    69,
-      70,    71,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    91,    92,    93,    94,    -1,    -1,    -1,    -1,    68,
-      -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,
-      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    91,    92,     0,     1,    -1,    96,    97,    98,
-      99,    -1,   101,    -1,    -1,   104,   105,   106,    14,    -1,
+      93,    94,    -1,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,     0,     1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,
       -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,
-      36,    37,    38,    39,    40,    41,    42,    -1,    -1,    -1,
-      -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,
-      -1,    -1,    -1,    59,    60,    61,    -1,    -1,    -1,    -1,
-      -1,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,
-      76,    77,    78,    79,    -1,    -1,    82,    83,    -1,    85,
-      86,    87,     0,     1,    -1,    91,    92,    -1,    -1,    -1,
-      96,    97,    98,    99,   100,   101,    14,   103,   104,    17,
+      26,    27,    28,    -1,    30,    -1,    -1,    -1,    -1,    35,
+      36,    37,    38,    39,    40,    41,    42,    -1,    44,    -1,
+      46,    47,    48,    -1,    50,    51,    52,    53,    54,    55,
+      56,    -1,    -1,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    -1,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    78,    79,    80,    81,    82,    83,    -1,    85,
+      86,    87,    88,    89,    90,    91,    92,    93,    94,    -1,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
+      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    28,
+      -1,    30,    -1,    -1,    -1,    -1,    35,    36,    37,    38,
+      39,    40,    41,    42,    -1,    44,    -1,    46,    47,    48,
+      -1,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    -1,
+      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    -1,    85,    86,    87,    88,
+      89,    90,    91,    92,    93,    94,    -1,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,     0,     1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    -1,
+      -1,    -1,     0,     1,    36,    37,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
       18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
-      28,    -1,    30,    -1,    -1,    -1,    -1,    -1,    36,    37,
-      38,    39,    40,    41,    42,    -1,    -1,    -1,    -1,    47,
-      -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,
-      -1,    59,    60,    61,    -1,    -1,    -1,    -1,    -1,    -1,
-      68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
-      78,    79,    -1,    -1,    82,    83,    -1,    85,    86,    87,
+      -1,    -1,    30,    -1,    -1,    -1,    68,    -1,    36,    37,
+      -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    85,    86,    87,    -1,    -1,    -1,    91,
+      92,    -1,    -1,    -1,    96,    97,    98,    99,   100,   101,
+      68,   103,   104,    -1,    -1,    -1,    -1,    75,    76,    77,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,
       -1,     1,    -1,    91,    92,    -1,    -1,    -1,    96,    97,
       98,    99,   100,   101,    14,   103,   104,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
@@ -1497,76 +1456,57 @@ static const yytype_int16 yycheck[] =
       42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
       52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,
       -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
-      82,    83,    -1,    96,    97,    98,    99,    -1,   101,    24,
-      -1,   104,    -1,    28,    96,    97,    98,    99,   100,    -1,
-      -1,    -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,
-      -1,    -1,    47,    -1,    -1,    50,    51,    52,    24,    -1,
-      55,    -1,    28,    -1,    59,    60,    61,    -1,    -1,    -1,
-      -1,    -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,
-      -1,    47,    -1,    -1,    50,    51,    52,    82,    83,    55,
-      -1,    86,    -1,    59,    60,    61,    -1,    -1,    -1,    -1,
-      -1,    96,    97,    98,    99,   100,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    -1,    -1,
-      86,    24,    -1,    -1,    -1,    28,    29,    -1,    -1,    -1,
-      96,    97,    98,    99,   100,    38,    39,    40,    41,    42,
-      -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,    52,
-      24,    -1,    55,    -1,    28,    58,    59,    60,    61,    -1,
-      -1,    -1,    -1,    -1,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    82,
-      83,    84,    -1,    -1,    -1,    59,    60,    61,    -1,    -1,
-      -1,    -1,    -1,    96,    97,    98,    99,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    83,
-      46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    96,    97,    98,    99,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    54,    88,    89,    90,    91,    92,    93,    94,    62,
-      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
-      93,    94,    48,    -1,    -1,    -1,    -1,   100,    54,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
-      -1,    54,    88,    89,    90,    91,    92,    93,    94,    62,
-      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
-      -1,    -1,    -1,    -1,    54,    88,    89,    90,    91,    92,
-      93,    94,    62,    63,    64,    65,    66,    67,    -1,    69,
-      -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
-      -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,
-      90,    91,    92,    93,    94,    62,    63,    64,    65,    66,
-      67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
-      -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    90,    91,    92,    93,    94,    62,    63,
+      -1,    35,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
+      82,    83,    -1,    96,    97,    98,    99,    -1,   101,    -1,
+      -1,   104,    -1,    -1,    96,    97,    98,    99,    62,    63,
+      64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    54,    88,    89,    90,    91,    92,    93,
+      94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
+      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
+      91,    92,    93,    94,    48,    -1,    -1,    -1,    -1,   100,
+      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    63,
       64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
       74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
+      -1,    -1,    -1,    54,    88,    89,    90,    91,    92,    93,
       94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
       -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
+      48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,
       91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
       -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
-      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,
       88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
       65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
+      -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
       62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    88,    89,    90,    91,    92,    93,    94,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94,    -1,    -1,    56,    -1,    -1,    -1,    -1,
-     102,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
-      91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
-      -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
-      -1,    -1,    80,    81,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
-      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
-      62,    63,    64,    65,    -1,    -1,    -1,    69,    -1,    -1,
-      72,    73,    74,    88,    89,    90,    91,    92,    93,    94,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,
       -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94
+      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
+      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
+      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,
+      89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
+      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    62,    63,    64,    65,    66,    67,    -1,    69,
+      -1,    -1,    72,    73,    74,    88,    89,    90,    91,    92,
+      93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
+      90,    91,    92,    93,    94,    -1,    -1,    56,    -1,    -1,
+      -1,    -1,   102,    62,    63,    64,    65,    66,    67,    -1,
+      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
+      89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    -1,    -1,    -1,    -1,
+      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    62,    63,    64,    65,    -1,    -1,    -1,    69,
+      -1,    -1,    72,    73,    74,    88,    89,    90,    91,    92,
+      93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
+      90,    91,    92,    93,    94
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1576,42 +1516,42 @@ static const yytype_uint8 yystos[] =
        0,    24,    28,    29,    38,    39,    40,    41,    42,    45,
       47,    50,    51,    52,    55,    58,    59,    60,    61,    82,
       83,    84,    96,    97,    98,    99,   108,   109,   110,   111,
-     112,   113,   125,   131,   140,   148,   150,   152,   155,   151,
-     154,    51,   141,     1,    14,    17,    18,    21,    22,    23,
+     112,   113,   125,   131,   141,   149,   151,   153,   156,   152,
+     155,    51,   142,     1,    14,    17,    18,    21,    22,    23,
       25,    26,    30,    46,    47,    48,    49,    68,    75,    76,
       77,    78,    79,    91,    92,    96,    97,    98,    99,   101,
-     104,   110,   134,   136,   137,   138,   139,   149,   162,   153,
-      51,    20,   137,    56,    57,    17,    18,    19,    30,   110,
-     110,   110,   137,   137,   149,   143,   137,   142,   156,     0,
-     100,   101,   137,   160,   137,   132,   160,   132,   110,   145,
-     100,   136,    48,   136,   137,    46,   137,   137,   137,   137,
-     137,   137,   136,   136,   134,   134,   134,   134,   137,    25,
-      26,   106,   110,   137,   163,   164,   165,   166,   101,    62,
+     104,   110,   135,   137,   138,   139,   140,   150,   163,   154,
+      51,    20,   138,    56,    57,    17,    18,    19,    30,   110,
+     110,   110,   138,   138,   150,   144,   138,   143,   157,     0,
+     100,   101,   138,   161,   138,   132,   161,   132,   110,   146,
+     100,   137,    48,   137,   138,    46,   138,   138,   138,   138,
+     138,   138,   137,   137,   135,   135,   135,   135,   138,    25,
+      26,   106,   110,   138,   164,   165,   166,   167,   101,    62,
       63,    64,    65,    66,    67,    69,    72,    73,    74,    88,
-      89,    90,    91,    92,    93,    94,   149,   110,   110,    44,
-      70,    71,   110,   132,    54,    64,   136,   136,    54,    64,
-      54,    64,    53,    56,   149,   110,   147,    54,   100,   110,
-     146,   110,   108,   110,   137,   160,   103,   128,   110,   157,
-     157,   103,   136,   137,    48,    54,    48,    54,    48,    54,
+      89,    90,    91,    92,    93,    94,   150,   110,   110,    44,
+      70,    71,   110,   132,    54,    64,   137,   137,    54,    64,
+      54,    64,    53,    56,   150,   110,   148,    54,   100,   110,
+     147,   110,   108,   110,   138,   161,   103,   128,   110,   158,
+     158,   103,   137,   138,    48,    54,    48,    54,    48,    54,
       48,    54,    80,    81,   102,   106,   106,   106,   105,   103,
-     103,   110,   160,   137,   137,   137,   137,   137,   137,   137,
-     137,   137,   137,   137,   137,   137,   137,   137,   137,   137,
-     132,   136,   110,   138,   110,   138,   110,   138,    43,    64,
-     137,   137,   137,    54,    64,    48,   137,   137,   137,   137,
-     137,   137,   103,   124,   124,   103,   102,   103,   102,   137,
-      53,   100,   103,   100,   110,   137,   137,   137,   137,   137,
-     137,   137,   137,   137,   137,   137,   137,   137,   137,    25,
-      26,   110,   166,   102,   103,   102,   157,    44,   137,   137,
-     128,   137,   137,   110,   110,   112,   133,   110,   144,   133,
-     159,   110,   159,    48,    48,    48,    48,   135,   100,   137,
-     120,   114,   117,   123,   136,   132,   100,   113,   132,   137,
-     161,   129,   133,   133,   137,   137,   137,   137,   161,   159,
-     132,   130,   130,   133,    54,    64,    87,   102,   103,   126,
-      27,   102,   133,   121,   115,   118,   129,   137,   137,   137,
-      36,    37,   127,   132,   110,   158,   128,    54,    35,    86,
-     133,   137,    85,   103,   122,   137,    54,   132,   128,   110,
-     123,   116,   137,    85,    53,   133,   128,   119,   133,    86,
-     123,   128,   129,   133,   123,    86,   133,    86
+     103,   110,   161,   138,   138,   138,   138,   138,   138,   138,
+     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
+     132,   137,   110,   139,   110,   139,   110,   139,    43,    64,
+     138,   138,   138,    54,    64,    48,   138,   138,   138,   138,
+     138,   138,   103,   124,   124,   103,   102,   103,   102,   138,
+      53,   100,   103,   100,   110,   138,   138,   138,   138,   138,
+     138,   138,   138,   138,   138,   138,   138,   138,   138,    25,
+      26,   110,   167,   102,   103,   102,   158,    44,   138,   138,
+     128,   138,   138,   110,   110,   112,   113,   133,   134,   110,
+     145,   133,   160,   110,   160,    48,    48,    48,    48,   136,
+     100,   138,   120,   114,   117,   123,   137,   132,   132,   100,
+     138,   162,   129,   133,   133,   138,   138,   138,   138,   162,
+     160,   132,   130,   130,   133,    54,    64,    87,   133,   102,
+     103,   126,    27,   102,   133,   121,   115,   118,   129,   138,
+     138,   138,    36,    37,   127,   132,   110,   159,   128,    54,
+      35,    86,   133,   138,    85,   103,   122,   138,    54,   132,
+     128,   110,   123,   116,   138,    85,    53,   133,   128,   119,
+     133,    86,   123,   128,   129,   133,   123,    86,   133,    86
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1623,19 +1563,20 @@ static const yytype_uint8 yyr1[] =
      112,   113,   113,   113,   114,   115,   116,   113,   117,   118,
      119,   113,   120,   121,   122,   113,   113,   113,   113,   113,
      123,   124,   125,   125,   126,   126,   127,   128,   129,   130,
-     131,   132,   133,   133,   133,   134,   134,   134,   134,   134,
-     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
-     134,   135,   134,   134,   134,   134,   136,   136,   137,   137,
-     137,   137,   137,   137,   137,   137,   137,   137,   137,   137,
-     137,   137,   137,   137,   137,   137,   137,   138,   138,   138,
-     138,   138,   138,   138,   138,   138,   139,   139,   139,   139,
-     140,   140,   140,   140,   140,   141,   140,   142,   140,   143,
-     140,   140,   140,   140,   144,   140,   140,   140,   145,   145,
-     146,   146,   147,   147,   148,   148,   148,   148,   148,   148,
-     149,   149,   150,   150,   150,   151,   150,   153,   152,   152,
-     154,   152,   152,   152,   156,   155,   157,   157,   157,   158,
-     158,   158,   159,   160,   160,   160,   161,   161,   162,   163,
-     163,   163,   163,   164,   164,   165,   165,   166,   166,   166
+     131,   132,   133,   133,   134,   134,   135,   135,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   136,   135,   135,   135,   135,   137,   137,   138,
+     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
+     138,   138,   138,   138,   138,   138,   138,   138,   139,   139,
+     139,   139,   139,   139,   139,   139,   139,   140,   140,   140,
+     140,   141,   141,   141,   141,   141,   142,   141,   143,   141,
+     144,   141,   141,   141,   141,   145,   141,   141,   141,   146,
+     146,   147,   147,   148,   148,   149,   149,   149,   149,   149,
+     149,   150,   150,   151,   151,   151,   152,   151,   154,   153,
+     153,   155,   153,   153,   153,   157,   156,   158,   158,   158,
+     159,   159,   159,   160,   161,   161,   161,   162,   162,   163,
+     164,   164,   164,   164,   165,   165,   166,   166,   167,   167,
+     167
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1647,19 +1588,20 @@ static const yytype_int8 yyr2[] =
        1,     1,     1,     9,     0,     0,     0,    15,     0,     0,
        0,    16,     0,     0,     0,    13,     2,     4,     7,     6,
        0,     0,     9,    11,     0,     2,     6,     0,     0,     0,
-       1,     0,     0,     2,     2,     1,     1,     2,     2,     1,
-       1,     1,     1,     2,     2,     3,     1,     4,     4,     1,
-       4,     0,     7,     4,     1,     2,     1,     3,     1,     3,
+       1,     0,     1,     3,     0,     1,     1,     1,     2,     2,
+       1,     1,     1,     1,     2,     2,     3,     1,     4,     4,
+       1,     4,     0,     7,     4,     1,     2,     1,     3,     1,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     2,     3,     3,     3,     3,     2,     4,     6,
-       4,     6,     4,     6,     4,     6,     1,     2,     2,     2,
-       2,     1,     1,     2,     1,     0,     3,     0,     3,     0,
-       3,     4,     2,     4,     0,     7,     4,     2,     1,     3,
-       1,     3,     1,     3,     1,     2,     2,     2,     3,     2,
-       3,     2,     2,     3,     2,     0,     3,     0,     8,     2,
-       0,     7,     8,     6,     0,     3,     0,     1,     3,     0,
-       1,     3,     0,     0,     1,     3,     1,     3,     3,     0,
-       1,     1,     1,     1,     3,     1,     3,     3,     3,     3
+       3,     3,     3,     2,     3,     3,     3,     3,     2,     4,
+       6,     4,     6,     4,     6,     4,     6,     1,     2,     2,
+       2,     2,     1,     1,     2,     1,     0,     3,     0,     3,
+       0,     3,     4,     2,     4,     0,     7,     4,     2,     1,
+       3,     1,     3,     1,     3,     1,     2,     2,     2,     3,
+       2,     3,     2,     2,     3,     2,     0,     3,     0,     8,
+       2,     0,     7,     8,     6,     0,     3,     0,     1,     3,
+       0,     1,     3,     0,     0,     1,     3,     1,     3,     3,
+       0,     1,     1,     1,     1,     3,     1,     3,     3,     3,
+       3
 };
 
 
@@ -1933,61 +1875,61 @@ yydestruct (const char *yymsg,
     case 22: /* THEFUNC  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1937 "engines/director/lingo/lingo-gr.cpp"
+#line 1879 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* THEFUNCINOF  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1943 "engines/director/lingo/lingo-gr.cpp"
+#line 1885 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* VARID  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1949 "engines/director/lingo/lingo-gr.cpp"
+#line 1891 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* STRING  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1955 "engines/director/lingo/lingo-gr.cpp"
+#line 1897 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* SYMBOL  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1961 "engines/director/lingo/lingo-gr.cpp"
+#line 1903 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* ENDCLAUSE  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1967 "engines/director/lingo/lingo-gr.cpp"
+#line 1909 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* tPLAYACCEL  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1973 "engines/director/lingo/lingo-gr.cpp"
+#line 1915 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* tMETHOD  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1979 "engines/director/lingo/lingo-gr.cpp"
+#line 1921 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 110: /* ID  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1985 "engines/director/lingo/lingo-gr.cpp"
+#line 1927 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 155: /* on  */
+    case 156: /* on  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1991 "engines/director/lingo/lingo-gr.cpp"
+#line 1933 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2268,25 +2210,25 @@ yyreduce:
   case 8:
 #line 222 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("cast"); }
-#line 2272 "engines/director/lingo/lingo-gr.cpp"
+#line 2214 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
 #line 223 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("field"); }
-#line 2278 "engines/director/lingo/lingo-gr.cpp"
+#line 2220 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 224 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("script"); }
-#line 2284 "engines/director/lingo/lingo-gr.cpp"
+#line 2226 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 225 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("window"); }
-#line 2290 "engines/director/lingo/lingo-gr.cpp"
+#line 2232 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2298,7 +2240,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 2244 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2306,7 +2248,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2310 "engines/director/lingo/lingo-gr.cpp"
+#line 2252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2322,7 +2264,7 @@ 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 2268 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2334,7 +2276,7 @@ yyreduce:
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2338 "engines/director/lingo/lingo-gr.cpp"
+#line 2280 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2342,7 +2284,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2346 "engines/director/lingo/lingo-gr.cpp"
+#line 2288 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2354,7 +2296,7 @@ yyreduce:
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2358 "engines/director/lingo/lingo-gr.cpp"
+#line 2300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2362,7 +2304,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2366 "engines/director/lingo/lingo-gr.cpp"
+#line 2308 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2374,7 +2316,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2378 "engines/director/lingo/lingo-gr.cpp"
+#line 2320 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20:
@@ -2386,7 +2328,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2390 "engines/director/lingo/lingo-gr.cpp"
+#line 2332 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 21:
@@ -2398,7 +2340,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2402 "engines/director/lingo/lingo-gr.cpp"
+#line 2344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 22:
@@ -2410,7 +2352,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2414 "engines/director/lingo/lingo-gr.cpp"
+#line 2356 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 23:
@@ -2421,7 +2363,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2425 "engines/director/lingo/lingo-gr.cpp"
+#line 2367 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 24:
@@ -2432,7 +2374,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2436 "engines/director/lingo/lingo-gr.cpp"
+#line 2378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 25:
@@ -2448,7 +2390,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2452 "engines/director/lingo/lingo-gr.cpp"
+#line 2394 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 26:
@@ -2464,7 +2406,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2468 "engines/director/lingo/lingo-gr.cpp"
+#line 2410 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 27:
@@ -2476,7 +2418,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2480 "engines/director/lingo/lingo-gr.cpp"
+#line 2422 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28:
@@ -2488,7 +2430,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2492 "engines/director/lingo/lingo-gr.cpp"
+#line 2434 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2500,7 +2442,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2504 "engines/director/lingo/lingo-gr.cpp"
+#line 2446 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
@@ -2508,20 +2450,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2512 "engines/director/lingo/lingo-gr.cpp"
+#line 2454 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
 #line 373 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2519 "engines/director/lingo/lingo-gr.cpp"
+#line 2461 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
 #line 376 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2525 "engines/director/lingo/lingo-gr.cpp"
+#line 2467 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2546,7 +2488,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2550 "engines/director/lingo/lingo-gr.cpp"
+#line 2492 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
@@ -2554,20 +2496,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2558 "engines/director/lingo/lingo-gr.cpp"
+#line 2500 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
 #line 407 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2565 "engines/director/lingo/lingo-gr.cpp"
+#line 2507 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
 #line 410 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2571 "engines/director/lingo/lingo-gr.cpp"
+#line 2513 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
@@ -2592,7 +2534,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2596 "engines/director/lingo/lingo-gr.cpp"
+#line 2538 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
@@ -2603,7 +2545,7 @@ yyreduce:
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2607 "engines/director/lingo/lingo-gr.cpp"
+#line 2549 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
@@ -2613,7 +2555,7 @@ yyreduce:
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2617 "engines/director/lingo/lingo-gr.cpp"
+#line 2559 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
@@ -2628,7 +2570,7 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2632 "engines/director/lingo/lingo-gr.cpp"
+#line 2574 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2652,7 +2594,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2656 "engines/director/lingo/lingo-gr.cpp"
+#line 2598 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
@@ -2665,7 +2607,7 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2669 "engines/director/lingo/lingo-gr.cpp"
+#line 2611 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
@@ -2673,31 +2615,31 @@ yyreduce:
                               {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2677 "engines/director/lingo/lingo-gr.cpp"
+#line 2619 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
 #line 491 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2683 "engines/director/lingo/lingo-gr.cpp"
+#line 2625 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
 #line 492 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2689 "engines/director/lingo/lingo-gr.cpp"
+#line 2631 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
 #line 494 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2695 "engines/director/lingo/lingo-gr.cpp"
+#line 2637 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
 #line 496 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2701 "engines/director/lingo/lingo-gr.cpp"
+#line 2643 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
@@ -2709,7 +2651,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2713 "engines/director/lingo/lingo-gr.cpp"
+#line 2655 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
@@ -2721,7 +2663,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2725 "engines/director/lingo/lingo-gr.cpp"
+#line 2667 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
@@ -2731,7 +2673,7 @@ yyreduce:
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2735 "engines/director/lingo/lingo-gr.cpp"
+#line 2677 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
@@ -2739,7 +2681,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2743 "engines/director/lingo/lingo-gr.cpp"
+#line 2685 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
@@ -2747,7 +2689,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2751 "engines/director/lingo/lingo-gr.cpp"
+#line 2693 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
@@ -2755,76 +2697,70 @@ yyreduce:
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2759 "engines/director/lingo/lingo-gr.cpp"
+#line 2701 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
 #line 534 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2766 "engines/director/lingo/lingo-gr.cpp"
+#line 2708 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
 #line 537 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2772 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 62:
-#line 539 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2778 "engines/director/lingo/lingo-gr.cpp"
+#line 2714 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 65:
-#line 543 "engines/director/lingo/lingo-gr.y"
+  case 66:
+#line 545 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2786 "engines/director/lingo/lingo-gr.cpp"
+#line 2722 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 66:
-#line 546 "engines/director/lingo/lingo-gr.y"
+  case 67:
+#line 548 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2794 "engines/director/lingo/lingo-gr.cpp"
+#line 2730 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 67:
-#line 549 "engines/director/lingo/lingo-gr.y"
+  case 68:
+#line 551 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[0].code); }
-#line 2800 "engines/director/lingo/lingo-gr.cpp"
+#line 2736 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 68:
-#line 550 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 552 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2806 "engines/director/lingo/lingo-gr.cpp"
+#line 2742 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 69:
-#line 551 "engines/director/lingo/lingo-gr.y"
+  case 70:
+#line 553 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2815 "engines/director/lingo/lingo-gr.cpp"
+#line 2751 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 555 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 557 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2824 "engines/director/lingo/lingo-gr.cpp"
+#line 2760 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 72:
-#line 560 "engines/director/lingo/lingo-gr.y"
+  case 73:
+#line 562 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2833,95 +2769,95 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2837 "engines/director/lingo/lingo-gr.cpp"
+#line 2773 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 568 "engines/director/lingo/lingo-gr.y"
+  case 74:
+#line 570 "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 2848 "engines/director/lingo/lingo-gr.cpp"
+#line 2784 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 574 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 576 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2856 "engines/director/lingo/lingo-gr.cpp"
+#line 2792 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 577 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 579 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2864 "engines/director/lingo/lingo-gr.cpp"
+#line 2800 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 580 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 582 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_objectproppush);
 		g_lingo->codeString((yyvsp[0].objectprop).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2875 "engines/director/lingo/lingo-gr.cpp"
+#line 2811 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 586 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 588 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_intersects); }
-#line 2881 "engines/director/lingo/lingo-gr.cpp"
+#line 2817 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 587 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 589 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 2887 "engines/director/lingo/lingo-gr.cpp"
+#line 2823 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 81:
+#line 591 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2898 "engines/director/lingo/lingo-gr.cpp"
+#line 2834 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 595 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 597 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2904 "engines/director/lingo/lingo-gr.cpp"
+#line 2840 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 596 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 598 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2913 "engines/director/lingo/lingo-gr.cpp"
+#line 2849 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 600 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 602 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2921 "engines/director/lingo/lingo-gr.cpp"
+#line 2857 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 603 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 605 "engines/director/lingo/lingo-gr.y"
                         {
 		if (g_lingo->_builtinConsts.contains(*(yyvsp[0].s))) {
 			(yyval.code) = g_lingo->code1(LC::c_constpush);
@@ -2930,223 +2866,223 @@ yyreduce:
 		}
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2934 "engines/director/lingo/lingo-gr.cpp"
+#line 2870 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 611 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 613 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2940 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 87:
-#line 614 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.code) = (yyvsp[-1].code); }
-#line 2946 "engines/director/lingo/lingo-gr.cpp"
+#line 2876 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
 #line 616 "engines/director/lingo/lingo-gr.y"
-                 { (yyval.code) = (yyvsp[0].code); }
-#line 2952 "engines/director/lingo/lingo-gr.cpp"
+                                                { (yyval.code) = (yyvsp[-1].code); }
+#line 2882 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
-#line 617 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_add); }
-#line 2958 "engines/director/lingo/lingo-gr.cpp"
+#line 618 "engines/director/lingo/lingo-gr.y"
+                 { (yyval.code) = (yyvsp[0].code); }
+#line 2888 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
-#line 618 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_sub); }
-#line 2964 "engines/director/lingo/lingo-gr.cpp"
+#line 619 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_add); }
+#line 2894 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
-#line 619 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_mul); }
-#line 2970 "engines/director/lingo/lingo-gr.cpp"
+#line 620 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_sub); }
+#line 2900 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
-#line 620 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_div); }
-#line 2976 "engines/director/lingo/lingo-gr.cpp"
+#line 621 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_mul); }
+#line 2906 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
-#line 621 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_mod); }
-#line 2982 "engines/director/lingo/lingo-gr.cpp"
+#line 622 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_div); }
+#line 2912 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
-#line 622 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_gt); }
-#line 2988 "engines/director/lingo/lingo-gr.cpp"
+#line 623 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_mod); }
+#line 2918 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
-#line 623 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_lt); }
-#line 2994 "engines/director/lingo/lingo-gr.cpp"
+#line 624 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_gt); }
+#line 2924 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
-#line 624 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_eq); }
-#line 3000 "engines/director/lingo/lingo-gr.cpp"
+#line 625 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_lt); }
+#line 2930 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
-#line 625 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_neq); }
-#line 3006 "engines/director/lingo/lingo-gr.cpp"
+#line 626 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_eq); }
+#line 2936 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
-#line 626 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_ge); }
-#line 3012 "engines/director/lingo/lingo-gr.cpp"
+#line 627 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_neq); }
+#line 2942 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
-#line 627 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_le); }
-#line 3018 "engines/director/lingo/lingo-gr.cpp"
+#line 628 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_ge); }
+#line 2948 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
-#line 628 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_and); }
-#line 3024 "engines/director/lingo/lingo-gr.cpp"
+#line 629 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_le); }
+#line 2954 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
-#line 629 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_or); }
-#line 3030 "engines/director/lingo/lingo-gr.cpp"
+#line 630 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_and); }
+#line 2960 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
-#line 630 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_not); }
-#line 3036 "engines/director/lingo/lingo-gr.cpp"
+#line 631 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_or); }
+#line 2966 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
-#line 631 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_ampersand); }
-#line 3042 "engines/director/lingo/lingo-gr.cpp"
+#line 632 "engines/director/lingo/lingo-gr.y"
+                                        { g_lingo->code1(LC::c_not); }
+#line 2972 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104:
-#line 632 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_concat); }
-#line 3048 "engines/director/lingo/lingo-gr.cpp"
+#line 633 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_ampersand); }
+#line 2978 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
-#line 633 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_contains); }
-#line 3054 "engines/director/lingo/lingo-gr.cpp"
+#line 634 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_concat); }
+#line 2984 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
-#line 634 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_starts); }
-#line 3060 "engines/director/lingo/lingo-gr.cpp"
+#line 635 "engines/director/lingo/lingo-gr.y"
+                                        { g_lingo->code1(LC::c_contains); }
+#line 2990 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
 #line 636 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_starts); }
+#line 2996 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 108:
+#line 638 "engines/director/lingo/lingo-gr.y"
                                         {
 		Common::String field("field");
 		g_lingo->codeFunc(&field, 1); }
-#line 3068 "engines/director/lingo/lingo-gr.cpp"
+#line 3004 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 639 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 641 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charOf); }
-#line 3074 "engines/director/lingo/lingo-gr.cpp"
+#line 3010 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 640 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 642 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_charToOf); }
-#line 3080 "engines/director/lingo/lingo-gr.cpp"
+#line 3016 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 641 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 643 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3086 "engines/director/lingo/lingo-gr.cpp"
+#line 3022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 642 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 644 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_itemToOf); }
-#line 3092 "engines/director/lingo/lingo-gr.cpp"
+#line 3028 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 643 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 645 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3098 "engines/director/lingo/lingo-gr.cpp"
+#line 3034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 644 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 646 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_lineToOf); }
-#line 3104 "engines/director/lingo/lingo-gr.cpp"
+#line 3040 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 114:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 115:
+#line 647 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3110 "engines/director/lingo/lingo-gr.cpp"
+#line 3046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 646 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 648 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_wordToOf); }
-#line 3116 "engines/director/lingo/lingo-gr.cpp"
+#line 3052 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 649 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 651 "engines/director/lingo/lingo-gr.y"
                                                 {
 		Common::String cast("cast");
 		g_lingo->codeFunc(&cast, 1); }
-#line 3124 "engines/director/lingo/lingo-gr.cpp"
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 652 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 654 "engines/director/lingo/lingo-gr.y"
                                         {
 		Common::String script("script");
 		g_lingo->codeFunc(&script, 1); }
-#line 3132 "engines/director/lingo/lingo-gr.cpp"
+#line 3068 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 655 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 657 "engines/director/lingo/lingo-gr.y"
                                         {
 		Common::String window("window");
 		g_lingo->codeFunc(&window, 1); }
-#line 3140 "engines/director/lingo/lingo-gr.cpp"
+#line 3076 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 659 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 661 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3146 "engines/director/lingo/lingo-gr.cpp"
+#line 3082 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 664 "engines/director/lingo/lingo-gr.y"
                                                 {
 		if (g_lingo->_repeatStack.size()) {
 			g_lingo->code2(LC::c_jump, 0);
@@ -3155,284 +3091,284 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 3159 "engines/director/lingo/lingo-gr.cpp"
+#line 3095 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 670 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 672 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3165 "engines/director/lingo/lingo-gr.cpp"
+#line 3101 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 671 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 673 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3171 "engines/director/lingo/lingo-gr.cpp"
+#line 3107 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 671 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 673 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 3177 "engines/director/lingo/lingo-gr.cpp"
+#line 3113 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 672 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 674 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3183 "engines/director/lingo/lingo-gr.cpp"
+#line 3119 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 672 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 674 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3189 "engines/director/lingo/lingo-gr.cpp"
+#line 3125 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 673 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 675 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3195 "engines/director/lingo/lingo-gr.cpp"
+#line 3131 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 673 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 675 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3201 "engines/director/lingo/lingo-gr.cpp"
+#line 3137 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 131:
-#line 674 "engines/director/lingo/lingo-gr.y"
+  case 132:
+#line 676 "engines/director/lingo/lingo-gr.y"
                                         {
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 2); }
-#line 3209 "engines/director/lingo/lingo-gr.cpp"
+#line 3145 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 132:
-#line 677 "engines/director/lingo/lingo-gr.y"
+  case 133:
+#line 679 "engines/director/lingo/lingo-gr.y"
                                                 {
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 1); }
-#line 3217 "engines/director/lingo/lingo-gr.cpp"
+#line 3153 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 680 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 682 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeCmd((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 3228 "engines/director/lingo/lingo-gr.cpp"
+#line 3164 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 686 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 688 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 3234 "engines/director/lingo/lingo-gr.cpp"
+#line 3170 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 687 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 689 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeCmd((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 3243 "engines/director/lingo/lingo-gr.cpp"
+#line 3179 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 691 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 693 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeCmd((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3251 "engines/director/lingo/lingo-gr.cpp"
+#line 3187 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 694 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 696 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeCmd((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3259 "engines/director/lingo/lingo-gr.cpp"
+#line 3195 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 698 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 700 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3267 "engines/director/lingo/lingo-gr.cpp"
+#line 3203 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 701 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 703 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3275 "engines/director/lingo/lingo-gr.cpp"
+#line 3211 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 705 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 707 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3283 "engines/director/lingo/lingo-gr.cpp"
+#line 3219 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 708 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 710 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3291 "engines/director/lingo/lingo-gr.cpp"
+#line 3227 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 712 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 714 "engines/director/lingo/lingo-gr.y"
                                                 {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3299 "engines/director/lingo/lingo-gr.cpp"
+#line 3235 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 715 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 717 "engines/director/lingo/lingo-gr.y"
                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3307 "engines/director/lingo/lingo-gr.cpp"
+#line 3243 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 726 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 728 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3313 "engines/director/lingo/lingo-gr.cpp"
+#line 3249 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 727 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 729 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3319 "engines/director/lingo/lingo-gr.cpp"
+#line 3255 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 728 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 730 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3325 "engines/director/lingo/lingo-gr.cpp"
+#line 3261 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 729 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 731 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3334 "engines/director/lingo/lingo-gr.cpp"
+#line 3270 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 733 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 735 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3343 "engines/director/lingo/lingo-gr.cpp"
+#line 3279 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 737 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 739 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3352 "engines/director/lingo/lingo-gr.cpp"
+#line 3288 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 152:
-#line 745 "engines/director/lingo/lingo-gr.y"
+  case 153:
+#line 747 "engines/director/lingo/lingo-gr.y"
                                         { // "play #done" is also caught by this
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3361 "engines/director/lingo/lingo-gr.cpp"
+#line 3297 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 749 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 751 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3370 "engines/director/lingo/lingo-gr.cpp"
+#line 3306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 753 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 755 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3379 "engines/director/lingo/lingo-gr.cpp"
+#line 3315 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 757 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 759 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3385 "engines/director/lingo/lingo-gr.cpp"
+#line 3321 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 757 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 759 "engines/director/lingo/lingo-gr.y"
                                                                   {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3394 "engines/director/lingo/lingo-gr.cpp"
+#line 3330 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 787 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 789 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3400 "engines/director/lingo/lingo-gr.cpp"
+#line 3336 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 788 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 790 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3410 "engines/director/lingo/lingo-gr.cpp"
+#line 3346 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 793 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 795 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3416 "engines/director/lingo/lingo-gr.cpp"
+#line 3352 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 794 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 796 "engines/director/lingo/lingo-gr.y"
                   { startDef(); (*g_lingo->_methodVars)["me"] = kVarArgument; }
-#line 3422 "engines/director/lingo/lingo-gr.cpp"
+#line 3358 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 795 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 797 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3432 "engines/director/lingo/lingo-gr.cpp"
+#line 3368 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 800 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 802 "engines/director/lingo/lingo-gr.y"
                                                                    {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3441,180 +3377,180 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3445 "engines/director/lingo/lingo-gr.cpp"
+#line 3381 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 808 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 810 "engines/director/lingo/lingo-gr.y"
                                                {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3455 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 164:
-#line 814 "engines/director/lingo/lingo-gr.y"
-         { startDef(); }
-#line 3461 "engines/director/lingo/lingo-gr.cpp"
+#line 3391 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
-#line 814 "engines/director/lingo/lingo-gr.y"
-                                { (yyval.s) = (yyvsp[0].s); }
-#line 3467 "engines/director/lingo/lingo-gr.cpp"
+#line 816 "engines/director/lingo/lingo-gr.y"
+         { startDef(); }
+#line 3397 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
 #line 816 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = 0; }
-#line 3473 "engines/director/lingo/lingo-gr.cpp"
+                                { (yyval.s) = (yyvsp[0].s); }
+#line 3403 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
-#line 817 "engines/director/lingo/lingo-gr.y"
-                                                        { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3479 "engines/director/lingo/lingo-gr.cpp"
+#line 818 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = 0; }
+#line 3409 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
-#line 818 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3485 "engines/director/lingo/lingo-gr.cpp"
+#line 819 "engines/director/lingo/lingo-gr.y"
+                                                        { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
+#line 3415 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 821 "engines/director/lingo/lingo-gr.y"
-                                                        { delete (yyvsp[0].s); }
-#line 3491 "engines/director/lingo/lingo-gr.cpp"
+  case 169:
+#line 820 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
+#line 3421 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
-#line 822 "engines/director/lingo/lingo-gr.y"
-                                                { delete (yyvsp[0].s); }
-#line 3497 "engines/director/lingo/lingo-gr.cpp"
+#line 823 "engines/director/lingo/lingo-gr.y"
+                                                        { delete (yyvsp[0].s); }
+#line 3427 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172:
 #line 824 "engines/director/lingo/lingo-gr.y"
-                                        { inDef(); }
-#line 3503 "engines/director/lingo/lingo-gr.cpp"
+                                                { delete (yyvsp[0].s); }
+#line 3433 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 173:
 #line 826 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = 0; }
-#line 3509 "engines/director/lingo/lingo-gr.cpp"
+                                        { inDef(); }
+#line 3439 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 174:
-#line 827 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.narg) = 1; }
-#line 3515 "engines/director/lingo/lingo-gr.cpp"
+#line 828 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = 0; }
+#line 3445 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 175:
-#line 828 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3521 "engines/director/lingo/lingo-gr.cpp"
+#line 829 "engines/director/lingo/lingo-gr.y"
+                                                        { (yyval.narg) = 1; }
+#line 3451 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 176:
 #line 830 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = 1; }
-#line 3527 "engines/director/lingo/lingo-gr.cpp"
+                                                { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3457 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 177:
-#line 831 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3533 "engines/director/lingo/lingo-gr.cpp"
+#line 832 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = 1; }
+#line 3463 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 178:
 #line 833 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.code) = (yyvsp[-1].code); }
-#line 3539 "engines/director/lingo/lingo-gr.cpp"
+                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3469 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 179:
 #line 835 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3545 "engines/director/lingo/lingo-gr.cpp"
+                                        { (yyval.code) = (yyvsp[-1].code); }
+#line 3475 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 180:
-#line 836 "engines/director/lingo/lingo-gr.y"
-                                                        { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3551 "engines/director/lingo/lingo-gr.cpp"
+#line 837 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
+#line 3481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 181:
-#line 837 "engines/director/lingo/lingo-gr.y"
-                         { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3557 "engines/director/lingo/lingo-gr.cpp"
+#line 838 "engines/director/lingo/lingo-gr.y"
+                                                        { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
+#line 3487 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 182:
-#line 838 "engines/director/lingo/lingo-gr.y"
-                     { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3563 "engines/director/lingo/lingo-gr.cpp"
+#line 839 "engines/director/lingo/lingo-gr.y"
+                         { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
+#line 3493 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 183:
 #line 840 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.narg) = 1; }
-#line 3569 "engines/director/lingo/lingo-gr.cpp"
+                     { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
+#line 3499 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 184:
-#line 841 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3575 "engines/director/lingo/lingo-gr.cpp"
+#line 842 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.narg) = 1; }
+#line 3505 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 185:
 #line 843 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.narg) = 1; }
-#line 3581 "engines/director/lingo/lingo-gr.cpp"
+                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3511 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 186:
-#line 844 "engines/director/lingo/lingo-gr.y"
-                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3587 "engines/director/lingo/lingo-gr.cpp"
+#line 845 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.narg) = 1; }
+#line 3517 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 187:
 #line 846 "engines/director/lingo/lingo-gr.y"
+                                        { (yyval.narg) = (yyvsp[-2].narg) + 1; }
+#line 3523 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 188:
+#line 848 "engines/director/lingo/lingo-gr.y"
                           {
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3596 "engines/director/lingo/lingo-gr.cpp"
+#line 3532 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 188:
-#line 850 "engines/director/lingo/lingo-gr.y"
+  case 189:
+#line 852 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3605 "engines/director/lingo/lingo-gr.cpp"
+#line 3541 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 189:
-#line 854 "engines/director/lingo/lingo-gr.y"
+  case 190:
+#line 856 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3614 "engines/director/lingo/lingo-gr.cpp"
+#line 3550 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3618 "engines/director/lingo/lingo-gr.cpp"
+#line 3554 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3813,7 +3749,7 @@ yyreturn:
   return yyresult;
 }
 
-#line 860 "engines/director/lingo/lingo-gr.y"
+#line 862 "engines/director/lingo/lingo-gr.y"
 
 
 int yyreport_syntax_error(const yypcontext_t *ctx) {
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 43213ae6c5..2d1579d86e 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -194,7 +194,7 @@ static void mVar(Common::String *s, VarType type) {
 %token tON tENDIF tENDREPEAT tENDTELL
 
 %type<code> asgn lbl expr if chunkexpr simpleexprnoparens
-%type<code> stmtlist tellstart reference simpleexpr list valuelist
+%type<code> tellstart reference simpleexpr list valuelist
 %type<code> jump jumpifz varassign
 %type<narg> argdef arglist nonemptyarglist linearlist proplist
 %type<s> ID on
@@ -536,9 +536,11 @@ if:	  tIF					{
 
 lbl:	  /* nothing */		{ $$ = g_lingo->_currentAssembly->size(); }
 
-stmtlist: 					{ $$ = g_lingo->_currentAssembly->size(); }
-	| stmtlist '\n'
-	| stmtlist stmt
+stmtlist: stmtlistline
+	| stmtlistline '\n' stmtlist
+
+stmtlistline: /* empty */
+	| stmt
 
 simpleexprnoparens: INT		{
 		$$ = g_lingo->code1(LC::c_intpush);


Commit: dac9f31b888cd4ba2b1f9ccdc6298e80ed03c766
    https://github.com/scummvm/scummvm/commit/dac9f31b888cd4ba2b1f9ccdc6298e80ed03c766
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-19T13:33:35-04:00

Commit Message:
DIRECTOR: LINGO: Fix chunk/sprite expressions

The second expr should only be a simpleexpr. Eliminates most of the
remaning conflicts.

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 54f981cf70..6bbd7c5a9b 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -824,7 +824,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  99
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1984
+#define YYLAST   2086
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  107
@@ -975,7 +975,7 @@ static const yytype_int16 yytoknum[] =
 };
 #endif
 
-#define YYPACT_NINF (-323)
+#define YYPACT_NINF (-356)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -989,45 +989,45 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     138,  -323,  -323,  -323,   -28,  -323,   498,  -323,  -323,  -323,
-      27,  1277,    69,    -8,    24,    24,  1309,  1150,  -323,  1309,
-    -323,  -323,  -323,  -323,  -323,  -323,    47,   -16,  1028,  -323,
-    -323,  -323,  -323,  1309,  -323,  -323,  -323,  -323,  -323,  1062,
-    -323,  -323,    24,    -1,  -323,  -323,  1397,  -323,    66,  1397,
-    -323,  -323,  -323,  1309,  -323,    91,  -323,  1309,  1309,  1309,
+    1408,  -356,  -356,  -356,   -35,  -356,  1062,  -356,  -356,  -356,
+     -31,  1277,   -17,    13,    17,    17,  1309,  1150,  -356,  1309,
+    -356,  -356,  -356,  -356,  -356,  -356,    25,   -73,   480,  -356,
+    -356,  -356,  -356,  1309,  -356,  -356,  -356,  -356,  -356,  1028,
+    -356,  -356,    17,   -40,  -356,  -356,  1397,  -356,    37,  1397,
+    -356,  -356,  -356,  1309,  -356,    11,  -356,  1309,  1309,  1309,
     1309,  1309,  1309,  1397,  1397,   600,   707,   814,   921,  1309,
-     127,    41,  -323,  -323,   414,  -323,  -323,  -323,  -323,    24,
-    -323,    24,   -37,    24,  -323,   -23,  1397,  1397,    -4,    32,
-      94,  -323,  1811,   414,  -323,    24,  1479,    24,    24,  -323,
-     138,  1185,  1877,    51,  1877,    24,    51,    24,  -323,    53,
-    -323,  -323,  1397,  -323,  1877,  1309,  -323,  1526,  1559,  1592,
-    1625,  1844,  -323,  -323,  -323,  -323,  -323,  -323,  1770,    59,
-      76,  -323,   -21,  1877,    87,   106,   108,  -323,  1185,  1309,
+     127,    -2,  -356,  -356,  1548,  -356,  -356,  -356,  -356,    17,
+    -356,    17,  1515,    17,  -356,   -42,  1397,  1397,     2,     7,
+      41,  -356,  1913,  1548,  -356,    17,  1581,    17,    17,  -356,
+    1408,  1185,  1979,   -30,  1979,    17,   -30,    17,  -356,     5,
+    -356,  -356,  1397,  -356,  1979,  1309,  -356,  1628,  1661,  1694,
+    1727,  1946,  -356,  -356,  -356,  -356,  -356,  -356,  1872,    23,
+      27,  -356,   -82,  1979,    12,    28,    32,  -356,  1185,  1309,
     1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,
-    1309,  1309,  1309,  1309,  1309,  1309,  -323,  -323,  1397,   262,
-     262,   262,   -19,  1309,  1309,  1309,    38,   146,  1309,  1309,
-    1309,  1309,  1309,  1309,  -323,  -323,   109,  -323,  -323,  -323,
-     110,  -323,  -323,   -39,  1770,    33,  1309,   161,  -323,   -32,
-      55,    24,  -323,  1877,  1309,  1309,  1309,  1309,  1309,  1309,
-    1309,  1309,  1309,  1309,  -323,  1309,  1309,  1309,  -323,  1309,
-      14,    15,    61,   201,   201,   201,   201,  1890,  1890,  -323,
-      77,   201,   201,   201,   201,    77,   -20,   -20,  -323,  -323,
-      24,   172,  -323,  -323,  -323,  -323,  -323,  -323,  1309,  1309,
-    1877,  1877,  1877,  1309,  1309,    24,  1877,  1877,  1877,  1877,
-    1877,  1877,    24,   237,  1408,    24,  -323,  -323,  -323,  1877,
-    1408,  -323,    24,  -323,  -323,  1877,  1658,  1877,  1691,  1877,
-    1724,  1877,  1757,  1877,  1877,  1877,  1877,  1877,  1877,    59,
-      76,   111,  -323,  -323,  -323,  -323,    81,  1309,  1877,  1446,
-    -323,  1877,  1877,  1397,  -323,  -323,  -323,  -323,   115,  -323,
-    1309,  -323,  1408,  -323,  1408,  1309,  1309,  1309,  1309,  1309,
-    -323,  1877,  -323,  -323,  -323,  1408,    39,  -323,   140,  1408,
-    1877,    84,  -323,   202,  -323,  1877,  1877,  1877,  1877,    98,
-    1408,  -323,  -323,  -323,  -323,  1309,  1309,  -323,  -323,  -323,
-    1309,   171,    24,  -323,  -323,  -323,   184,   204,   154,  1877,
-    1877,  1877,  1408,  1309,  -323,   156,  -323,   139,  -323,  1309,
-     189,  -323,  -323,  1877,  -323,    24,  -323,  1877,  1309,   159,
-     193,  -323,  1408,  -323,  1877,  -323,  1408,   162,  -323,  -323,
-    -323,  -323,  1408,  -323,  -323,   163,  1408,  -323,   165,  -323
+    1309,  1309,  1309,  1309,  1309,  1309,  -356,  -356,  1397,   101,
+     101,   101,   -26,  1309,  1309,  1309,     8,    89,  1309,  1309,
+    1309,  1309,  1309,  1309,  -356,  -356,    36,  -356,  -356,  -356,
+      55,  -356,  -356,    53,  1872,   -58,  1309,   114,  -356,    -7,
+      18,    17,  -356,  1979,  1397,  1309,  1397,  1309,  1397,  1309,
+    1397,  1309,  1397,  1397,  -356,  1309,  1309,  1309,  -356,  1309,
+      66,    79,    40,   -43,   -43,   -43,   -43,  1992,  1992,  -356,
+      -5,   -43,   -43,   -43,   -43,    -5,   -60,   -60,  -356,  -356,
+      17,   125,  -356,  -356,  -356,  -356,  -356,  -356,  1309,  1309,
+    1979,  1979,  1979,  1309,  1309,    17,  1979,  1979,  1979,  1979,
+    1979,  1979,    17,   426,  1475,    17,  -356,  -356,  -356,  1979,
+    1475,  -356,    17,  -356,  -356,  -356,  1760,  -356,  1793,  -356,
+    1826,  -356,  1859,  -356,  -356,  1979,  1979,  1979,  1979,    23,
+      27,    65,  -356,  -356,  -356,  -356,    20,  1309,  1979,  1476,
+    -356,  1979,  1979,  1397,  -356,  -356,  -356,  -356,    73,  -356,
+    1309,  -356,  1475,  -356,  1475,  1397,  1397,  1397,  1397,  1309,
+    -356,  1979,  -356,  -356,  -356,  1475,    14,  -356,   103,  1475,
+    1979,    44,  -356,   165,  -356,  -356,  -356,  -356,  -356,    84,
+    1475,  -356,  -356,  -356,  -356,  1309,  1309,  -356,  -356,  -356,
+    1309,   152,    17,  -356,  -356,  -356,   139,   159,   110,  1979,
+    1979,  1979,  1475,  1309,  -356,   116,  -356,   104,  -356,  1309,
+     154,  -356,  -356,  1979,  -356,    17,  -356,  1979,  1309,   124,
+     158,  -356,  1475,  -356,  1979,  -356,  1475,   126,  -356,  -356,
+    -356,  -356,  1475,  -356,  -356,   128,  1475,  -356,   129,  -356
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1079,13 +1079,13 @@ static const yytype_uint8 yydefact[] =
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -323,   147,  -323,     0,  -323,     3,     8,  -323,  -323,  -323,
-    -323,  -323,  -323,  -323,  -323,  -323,  -301,    86,  -323,  -323,
-    -323,  -239,  -322,   -48,  -323,   -38,  -243,  -323,   107,  -323,
-     -43,   252,   -29,  -323,  -323,  -323,  -323,  -323,  -323,  -323,
-    -323,  -323,  -323,     1,  -323,  -323,  -323,  -323,  -323,  -323,
-    -323,  -103,  -323,  -244,   -34,   -42,  -323,  -323,  -323,  -323,
-      62
+    -356,   113,  -356,     0,  -356,   -37,     3,  -356,  -356,  -356,
+    -356,  -356,  -356,  -356,  -356,  -356,  -355,    39,  -356,  -356,
+    -356,  -239,  -327,   -94,  -356,   -38,  -250,  -356,     9,  -356,
+     -28,   252,    24,  -356,  -356,  -356,  -356,  -356,  -356,  -356,
+    -356,  -356,  -356,   -11,  -356,  -356,  -356,  -356,  -356,  -356,
+    -356,  -103,  -356,  -255,   -34,   -88,  -356,  -356,  -356,  -356,
+      19
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -1105,43 +1105,43 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      28,   290,   107,   111,   190,   106,   113,   159,    31,    85,
-      86,    87,   348,    89,    90,    91,     1,   301,    94,   304,
-     122,   123,    88,    41,   238,   139,   140,   141,   142,   143,
-     144,   164,   145,   160,   161,   146,   147,   148,     1,   279,
-     280,   165,   108,   166,   167,   239,   163,    99,     1,   145,
-     168,   149,   150,   151,   152,   153,   154,   155,   384,   323,
-     169,   324,   138,   256,   257,   372,   330,   185,   261,   192,
-     132,   262,   334,   154,   155,   156,   338,   382,    80,   157,
-     138,   158,   386,   162,   100,   207,   170,   344,    22,    23,
-      24,    25,   243,   335,   174,   175,   171,   179,   181,   110,
-      28,   183,   244,   336,   212,   188,   358,   188,    31,   362,
-      22,    23,    24,    25,   112,   231,   138,   283,   284,   230,
-      22,    23,    24,    25,   370,    83,    84,   286,    43,   377,
-     233,   235,   237,   380,   378,   258,   186,   115,   211,   385,
-     383,    44,   138,   388,    45,    46,   145,   172,    47,    48,
-      49,     1,   129,   130,   186,   263,   191,    52,   262,   232,
-     234,   236,     1,   285,   186,   205,     2,     3,   152,   153,
-     154,   155,   124,   125,   126,   127,     4,     5,     6,     7,
-       8,   310,   206,     9,   262,    10,   339,   340,    11,    12,
-      13,   264,   208,    14,   245,    57,    15,    16,    17,    18,
-     343,   340,    58,    59,    60,    61,    62,   352,   353,   209,
-     281,   210,   252,   255,   260,   319,   287,   207,    63,    64,
-      19,    20,    21,    65,    66,    67,    68,   337,    69,   342,
-     188,    70,  -180,   131,    22,    23,    24,    25,   359,   360,
-     361,   364,   365,   368,   375,   293,   376,   182,   381,   387,
-     316,   389,   294,    28,    28,   299,   295,   317,    74,   318,
-      28,     1,   303,    82,   254,     2,   333,   329,    92,    93,
-     145,    96,   282,   146,   331,     4,     5,     6,     7,     0,
-       0,     0,     0,     0,     0,   104,     1,    11,     0,    13,
-       0,   151,   152,   153,   154,   155,    16,    17,    18,     0,
+      28,   290,   107,    31,   190,   106,    94,   348,   304,   145,
+     301,   372,   164,    89,    90,    91,    41,   238,   111,   138,
+      80,   113,   165,   382,   207,    99,   145,   100,   386,   146,
+      85,    86,    87,   154,   155,   122,   123,     1,   239,    83,
+      84,     1,   108,    88,   258,   186,   163,   151,   152,   153,
+     154,   155,   323,   384,   324,   330,   168,   115,   166,   167,
+     110,   170,   243,   156,   145,   334,   169,   185,   335,   338,
+     132,   171,   244,   186,   124,   125,   126,   127,   336,   157,
+     344,   158,   174,   162,   192,   112,   152,   153,   154,   155,
+       1,   279,   280,   261,   172,   175,   262,   179,   181,   138,
+      28,   183,   362,    31,   212,   188,   358,   188,   191,    22,
+      23,    24,    25,    22,    23,    24,    25,   208,   263,   230,
+     310,   262,   377,   262,   370,     1,   380,   286,    43,   205,
+     231,   209,   385,   206,   378,   210,   388,   245,   211,   252,
+     383,    44,   285,   186,    45,    46,   339,   340,    47,    48,
+      49,     1,   129,   130,   138,   256,   257,    52,   255,   232,
+     234,   236,    22,    23,    24,    25,   265,   260,   267,   287,
+     269,   207,   271,   319,   273,   274,    58,    59,    60,    61,
+     138,   283,   284,   233,   235,   237,   343,   340,   352,   353,
+     337,   264,   342,   359,   360,    57,   361,    22,    66,    24,
+      25,   364,    58,    59,    60,    61,    62,   365,   368,   375,
+     281,   376,   381,   182,   387,   389,   295,   254,    63,    64,
+     333,   329,     0,    65,    66,    67,    68,     0,    69,   282,
+     188,    70,  -180,   131,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   293,     0,     0,     0,     0,
+       0,     0,   294,    28,    28,   299,     0,   317,    74,   318,
+      28,     0,   303,    82,     0,   316,     0,     0,    92,    93,
+       0,    96,     0,     0,   331,     0,     0,   325,   326,   327,
+     328,     0,     0,     0,     0,   104,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    28,   355,    28,   114,     0,     0,     0,   116,
      117,   118,   119,   120,   121,    28,     0,     0,     0,    28,
-      20,   128,   133,     0,   369,     0,     0,     0,     0,     0,
-      28,     0,     0,    22,    23,    24,    25,    58,    59,    60,
-      61,     0,   356,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    28,   184,     0,     0,     0,     0,    22,    66,
-      24,    25,     0,     0,     0,   371,     0,   193,     0,     0,
+       0,   128,   133,     0,   369,     0,     0,     0,     0,     0,
+      28,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   356,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    28,   184,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   371,     0,   193,     0,     0,
        0,     0,    28,     0,     0,     0,    28,     0,     0,     0,
        0,     0,    28,     0,     0,     0,    28,     0,     0,     0,
        0,   213,   214,   215,   216,   217,   218,   219,   220,   221,
@@ -1149,23 +1149,23 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,     0,   240,   241,   242,     0,     0,
      246,   247,   248,   249,   250,   251,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,   259,     0,
-       0,     0,     0,     0,     0,     0,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,     0,   275,   276,   277,
-      53,   278,    55,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   139,   140,   141,   142,
-     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
-     288,   289,     0,     0,     0,   291,   292,     0,     0,    43,
-       0,     0,   149,   150,   151,   152,   153,   154,   155,     0,
-       0,     0,    44,     0,     0,    45,    46,     0,     0,    47,
-      48,    49,     1,    50,    51,     0,     0,     0,    52,     0,
+       0,     0,     0,     0,     0,     0,     0,   266,     0,   268,
+       1,   270,     0,   272,     2,     0,     0,   275,   276,   277,
+       0,   278,     0,     0,     4,     5,     6,     7,     0,     0,
+       0,     0,     0,     0,     0,     0,    11,     0,    13,     0,
+    -174,    43,     0,     0,     0,    16,    17,    18,     0,     0,
+     288,   289,     0,     0,    44,   291,   292,    45,    46,     0,
+       0,    47,    48,    49,     1,    50,    51,  -174,     0,    20,
+      52,     0,     0,     0,     0,     0,  -174,  -174,     0,     0,
+       0,     0,    22,    23,    24,    25,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,   311,
-       0,     0,     0,     0,    53,    54,    55,    56,     0,     0,
-       0,     0,   320,     0,     0,     0,     0,   325,   326,   327,
-     328,   320,     0,     0,     0,     0,    57,     0,     0,     0,
-       0,     0,     0,    58,    59,    60,    61,    62,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   349,   350,    63,
-      64,     0,   351,     0,    65,    66,    67,    68,     0,    69,
-      -8,    43,    70,     0,     0,   363,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    57,     0,
+       0,     0,   320,     0,     0,    58,    59,    60,    61,    62,
+       0,   320,     0,     0,     0,  -174,  -174,  -174,     0,     0,
+       0,    63,    64,     0,     0,     0,    65,    66,    67,    68,
+    -174,   101,     0,  -174,    70,     0,     0,   349,   350,     0,
+       0,     0,   351,     0,     0,     0,     0,     0,     0,     0,
+      -8,    43,     0,     0,     0,   363,     0,     0,     0,     0,
        0,   367,     0,     0,    44,     0,     0,    45,    46,     0,
      374,    47,    48,    49,     1,    50,    51,    -8,    -8,     0,
       52,     0,     0,     0,     0,    -8,    -8,    -8,    -8,    -8,
@@ -1211,17 +1211,17 @@ static const yytype_int16 yytable[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    44,     0,     0,    45,    46,     0,     0,    47,
       48,    49,     1,    50,    51,  -174,     0,     0,    52,     0,
-       0,     0,  -174,    43,  -174,  -174,     0,     0,     0,     0,
+       0,     0,     0,    43,  -174,  -174,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    44,     0,     0,    45,
-      46,     0,     0,    47,    48,    49,     1,    50,    51,  -174,
-       0,     0,    52,     0,     0,     0,    57,     0,  -174,  -174,
-       0,     0,     0,    58,    59,    60,    61,    62,     0,     0,
-       0,     0,     0,  -174,  -174,  -174,     0,     0,     0,    63,
-      64,     0,     0,     0,    65,    66,    67,    68,  -174,   101,
+      46,     0,     0,    47,    48,    49,     1,    50,    51,     0,
+       0,     0,    52,     0,     0,     0,    57,     0,     0,     0,
+       0,     0,     0,    58,    59,    60,    61,    62,    53,    54,
+      55,    56,     0,  -174,  -174,  -174,     0,     0,     0,    63,
+      64,     0,     0,     0,    65,    66,    67,    68,  -174,    69,
       57,  -174,    70,     0,     0,     0,     0,    58,    59,    60,
-      61,    62,     0,     0,     0,     0,     0,  -174,  -174,  -174,
+      61,    62,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    43,     0,    63,    64,     0,     0,     0,    65,    66,
-      67,    68,  -174,    69,    44,  -174,    70,    45,    46,     0,
+      67,    68,     0,    69,    44,     0,    70,    45,    46,     0,
        0,    47,    48,    49,     1,    50,    51,     0,     0,     0,
       52,     0,     0,     0,     0,     0,    43,     0,     0,     0,
        0,     0,     0,     0,     0,     0,    53,     0,    55,    44,
@@ -1248,103 +1248,113 @@ static const yytype_int16 yytable[] =
       63,    64,     0,     0,     0,    65,    66,    67,    68,     0,
       69,    44,     0,    70,    45,    46,     0,     0,    47,    48,
       49,     1,    50,    51,     0,     0,     0,    52,     0,     0,
-       0,     0,     1,     0,     0,     0,     2,     0,     0,     0,
+       0,     0,     1,     0,     0,     0,     2,     3,     0,     0,
        0,     0,     0,     0,     0,     0,     4,     5,     6,     7,
-       8,     0,     0,     0,     0,    10,     0,     0,    11,    12,
-      13,     0,     0,    14,     0,     0,     0,    16,    17,    18,
+       8,     0,     0,     9,     0,    10,     0,     0,    11,    12,
+      13,     0,     0,    14,     0,     0,    15,    16,    17,    18,
        0,     0,    58,    59,    60,    61,    62,     0,     0,     0,
-       0,   -38,     0,     0,     0,     0,     0,     0,    63,    64,
-      19,    20,     0,    65,    66,    67,    68,     0,    69,     0,
-       0,    70,     0,     0,    22,    23,    24,    25,   139,   140,
-     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   177,   149,   150,   151,   152,   153,   154,
-     155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
-       0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   149,   150,   151,
-     152,   153,   154,   155,   194,     0,     0,     0,     0,   178,
-     195,     0,     0,     0,     0,     0,     0,     0,   139,   140,
+       0,     0,     0,     0,     0,     0,     0,     0,    63,    64,
+      19,    20,    21,    65,    66,    67,    68,     0,    69,     1,
+       0,    70,     0,     2,    22,    23,    24,    25,     0,     0,
+       0,   -38,     0,     4,     5,     6,     7,     8,     0,     0,
+       0,     0,    10,     0,     0,    11,    12,    13,     0,     0,
+      14,     0,     0,     0,    16,    17,    18,     0,   139,   140,
      141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,     0,   196,     0,     0,
-       0,     0,     0,   197,   149,   150,   151,   152,   153,   154,
-     155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
-       0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
-     198,     0,     0,     0,     0,     0,   199,   149,   150,   151,
-     152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
-       0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
-       0,     0,     0,   200,     0,     0,     0,     0,     0,   201,
-     149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
-     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
-       0,     0,     0,     0,     0,     0,   305,     0,     0,     0,
+     148,     0,     0,     0,     0,     0,     0,    19,    20,   159,
+       0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
+     155,    22,    23,    24,    25,     0,     0,   139,   140,   141,
+     142,   143,   144,     0,   145,   160,   161,   146,   147,   148,
+       0,     0,     0,     0,    53,     0,    55,     0,     0,     0,
        0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
      139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
-     146,   147,   148,     0,     0,     0,     0,     0,     0,   306,
-       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
+     146,   147,   148,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   177,   149,   150,   151,   152,
      153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
-     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
-       0,     0,   307,     0,     0,     0,     0,     0,     0,   149,
-     150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
-     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
-       0,     0,     0,     0,     0,   308,     0,     0,     0,     0,
-       0,     0,   149,   150,   151,   152,   153,   154,   155,   139,
-     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
-     147,   148,   139,   140,   141,   142,   143,   144,     0,   145,
-       0,     0,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,     0,     0,     0,     0,     0,     0,   149,   150,
-     151,   152,   153,   154,   155,     0,     0,   173,     0,     0,
-       0,     0,   204,   139,   140,   141,   142,   143,   144,     0,
      145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,   149,
+     150,   151,   152,   153,   154,   155,   194,     0,     0,     0,
+       0,   178,   195,     0,     0,     0,     0,     0,     0,     0,
+     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
+     146,   147,   148,     0,     0,     0,     0,     0,     0,   196,
+       0,     0,     0,     0,     0,   197,   149,   150,   151,   152,
+     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
+     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
+       0,     0,   198,     0,     0,     0,     0,     0,   199,   149,
      150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
      143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
-       0,     0,     0,     0,   202,   203,     0,     0,     0,     0,
-       0,     0,   149,   150,   151,   152,   153,   154,   155,   139,
+       0,     0,     0,     0,     0,   200,     0,     0,     0,     0,
+       0,   201,   149,   150,   151,   152,   153,   154,   155,   139,
      140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
-     147,   148,   139,   140,   141,   142,     0,     0,     0,   145,
-       0,     0,   146,   147,   148,   149,   150,   151,   152,   153,
-     154,   155,     0,     0,     0,     0,     0,     0,   149,   150,
-     151,   152,   153,   154,   155
+     147,   148,     0,     0,     0,     0,     0,     0,   305,     0,
+       0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
+     154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
+       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
+       0,   306,     0,     0,     0,     0,     0,     0,   149,   150,
+     151,   152,   153,   154,   155,   139,   140,   141,   142,   143,
+     144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
+       0,     0,     0,     0,   307,     0,     0,     0,     0,     0,
+       0,   149,   150,   151,   152,   153,   154,   155,   139,   140,
+     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
+     148,     0,     0,     0,     0,     0,     0,   308,     0,     0,
+       0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
+     155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
+       0,   146,   147,   148,   139,   140,   141,   142,   143,   144,
+       0,   145,     0,     0,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+     149,   150,   151,   152,   153,   154,   155,     0,     0,   173,
+       0,     0,     0,     0,   204,   139,   140,   141,   142,   143,
+     144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   149,   150,   151,   152,   153,   154,   155,   139,   140,
+     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
+     148,     0,     0,     0,     0,     0,   202,   203,     0,     0,
+       0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
+     155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
+       0,   146,   147,   148,   139,   140,   141,   142,     0,     0,
+       0,   145,     0,     0,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
+     149,   150,   151,   152,   153,   154,   155
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   240,    40,    46,   107,    39,    49,    44,     0,    17,
-      18,    19,   334,    13,    14,    15,    24,   260,    17,   263,
-      63,    64,    30,    51,    43,    62,    63,    64,    65,    66,
-      67,    54,    69,    70,    71,    72,    73,    74,    24,    25,
-      26,    64,    42,    86,    87,    64,    84,     0,    24,    69,
-      54,    88,    89,    90,    91,    92,    93,    94,   380,   302,
-      64,   304,   101,   102,   103,   366,   310,   101,   100,   112,
-      70,   103,   315,    93,    94,    74,   319,   378,    51,    79,
-     101,    81,   383,    83,   100,   106,    54,   330,    96,    97,
-      98,    99,    54,    54,    93,    95,    64,    97,    98,   100,
-     100,   101,    64,    64,   138,   105,   345,   107,   100,   352,
-      96,    97,    98,    99,    48,   158,   101,   102,   103,   157,
-      96,    97,    98,    99,   363,    56,    57,   230,     1,   372,
-     159,   160,   161,   376,   373,   102,   103,    46,   138,   382,
-     379,    14,   101,   386,    17,    18,    69,    53,    21,    22,
-      23,    24,    25,    26,   103,   100,   103,    30,   103,   159,
-     160,   161,    24,   102,   103,   106,    28,    29,    91,    92,
-      93,    94,    65,    66,    67,    68,    38,    39,    40,    41,
-      42,   100,   106,    45,   103,    47,   102,   103,    50,    51,
-      52,   191,   105,    55,    48,    68,    58,    59,    60,    61,
-     102,   103,    75,    76,    77,    78,    79,    36,    37,   103,
-     210,   103,   103,   103,    53,   100,    44,   106,    91,    92,
-      82,    83,    84,    96,    97,    98,    99,    87,   101,    27,
-     230,   104,   105,   106,    96,    97,    98,    99,    54,    35,
-      86,    85,   103,    54,    85,   245,    53,   100,    86,    86,
-     293,    86,   252,   253,   254,   255,   253,   295,     6,   297,
-     260,    24,   262,    11,   178,    28,   314,   309,    16,    17,
-      69,    19,   210,    72,   312,    38,    39,    40,    41,    -1,
-      -1,    -1,    -1,    -1,    -1,    33,    24,    50,    -1,    52,
-      -1,    90,    91,    92,    93,    94,    59,    60,    61,    -1,
+       0,   240,    40,     0,   107,    39,    17,   334,   263,    69,
+     260,   366,    54,    13,    14,    15,    51,    43,    46,   101,
+      51,    49,    64,   378,   106,     0,    69,   100,   383,    72,
+      17,    18,    19,    93,    94,    63,    64,    24,    64,    56,
+      57,    24,    42,    30,   102,   103,    84,    90,    91,    92,
+      93,    94,   302,   380,   304,   310,    54,    46,    86,    87,
+     100,    54,    54,    74,    69,   315,    64,   101,    54,   319,
+      70,    64,    64,   103,    65,    66,    67,    68,    64,    79,
+     330,    81,    93,    83,   112,    48,    91,    92,    93,    94,
+      24,    25,    26,   100,    53,    95,   103,    97,    98,   101,
+     100,   101,   352,   100,   138,   105,   345,   107,   103,    96,
+      97,    98,    99,    96,    97,    98,    99,   105,   100,   157,
+     100,   103,   372,   103,   363,    24,   376,   230,     1,   106,
+     158,   103,   382,   106,   373,   103,   386,    48,   138,   103,
+     379,    14,   102,   103,    17,    18,   102,   103,    21,    22,
+      23,    24,    25,    26,   101,   102,   103,    30,   103,   159,
+     160,   161,    96,    97,    98,    99,   194,    53,   196,    44,
+     198,   106,   200,   100,   202,   203,    75,    76,    77,    78,
+     101,   102,   103,   159,   160,   161,   102,   103,    36,    37,
+      87,   191,    27,    54,    35,    68,    86,    96,    97,    98,
+      99,    85,    75,    76,    77,    78,    79,   103,    54,    85,
+     210,    53,    86,   100,    86,    86,   253,   178,    91,    92,
+     314,   309,    -1,    96,    97,    98,    99,    -1,   101,   210,
+     230,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   245,    -1,    -1,    -1,    -1,
+      -1,    -1,   252,   253,   254,   255,    -1,   295,     6,   297,
+     260,    -1,   262,    11,    -1,   293,    -1,    -1,    16,    17,
+      -1,    19,    -1,    -1,   312,    -1,    -1,   305,   306,   307,
+     308,    -1,    -1,    -1,    -1,    33,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,   302,   341,   304,    53,    -1,    -1,    -1,    57,
       58,    59,    60,    61,    62,   315,    -1,    -1,    -1,   319,
-      83,    69,    70,    -1,   362,    -1,    -1,    -1,    -1,    -1,
-     330,    -1,    -1,    96,    97,    98,    99,    75,    76,    77,
-      78,    -1,   342,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   352,   101,    -1,    -1,    -1,    -1,    96,    97,
-      98,    99,    -1,    -1,    -1,   365,    -1,   115,    -1,    -1,
+      -1,    69,    70,    -1,   362,    -1,    -1,    -1,    -1,    -1,
+     330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   342,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   352,   101,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   365,    -1,   115,    -1,    -1,
       -1,    -1,   372,    -1,    -1,    -1,   376,    -1,    -1,    -1,
       -1,    -1,   382,    -1,    -1,    -1,   386,    -1,    -1,    -1,
       -1,   139,   140,   141,   142,   143,   144,   145,   146,   147,
@@ -1352,23 +1362,23 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,   163,   164,   165,    -1,    -1,
      168,   169,   170,   171,   172,   173,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   186,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   194,   195,   196,   197,
-     198,   199,   200,   201,   202,   203,    -1,   205,   206,   207,
-      46,   209,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-     238,   239,    -1,    -1,    -1,   243,   244,    -1,    -1,     1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    -1,
-      -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    -1,    -1,    -1,    30,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,    -1,   197,
+      24,   199,    -1,   201,    28,    -1,    -1,   205,   206,   207,
+      -1,   209,    -1,    -1,    38,    39,    40,    41,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,
+       0,     1,    -1,    -1,    -1,    59,    60,    61,    -1,    -1,
+     238,   239,    -1,    -1,    14,   243,   244,    17,    18,    -1,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    83,
+      30,    -1,    -1,    -1,    -1,    -1,    36,    37,    -1,    -1,
+      -1,    -1,    96,    97,    98,    99,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   287,
-      -1,    -1,    -1,    -1,    46,    47,    48,    49,    -1,    -1,
-      -1,    -1,   300,    -1,    -1,    -1,    -1,   305,   306,   307,
-     308,   309,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,
-      -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   335,   336,    91,
-      92,    -1,   340,    -1,    96,    97,    98,    99,    -1,   101,
-       0,     1,   104,    -1,    -1,   353,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+      -1,    -1,   300,    -1,    -1,    75,    76,    77,    78,    79,
+      -1,   309,    -1,    -1,    -1,    85,    86,    87,    -1,    -1,
+      -1,    91,    92,    -1,    -1,    -1,    96,    97,    98,    99,
+     100,   101,    -1,   103,   104,    -1,    -1,   335,   336,    -1,
+      -1,    -1,   340,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       0,     1,    -1,    -1,    -1,   353,    -1,    -1,    -1,    -1,
       -1,   359,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,
      368,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
       30,    -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,
@@ -1414,17 +1424,17 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
       22,    23,    24,    25,    26,    27,    -1,    -1,    30,    -1,
-      -1,    -1,     0,     1,    36,    37,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     1,    36,    37,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
-      -1,    -1,    30,    -1,    -1,    -1,    68,    -1,    36,    37,
-      -1,    -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,
-      -1,    -1,    -1,    85,    86,    87,    -1,    -1,    -1,    91,
+      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    -1,    30,    -1,    -1,    -1,    68,    -1,    -1,    -1,
+      -1,    -1,    -1,    75,    76,    77,    78,    79,    46,    47,
+      48,    49,    -1,    85,    86,    87,    -1,    -1,    -1,    91,
       92,    -1,    -1,    -1,    96,    97,    98,    99,   100,   101,
       68,   103,   104,    -1,    -1,    -1,    -1,    75,    76,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    85,    86,    87,
+      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,     1,    -1,    91,    92,    -1,    -1,    -1,    96,    97,
-      98,    99,   100,   101,    14,   103,   104,    17,    18,    -1,
+      98,    99,    -1,   101,    14,    -1,   104,    17,    18,    -1,
       -1,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
       30,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,    14,
@@ -1451,62 +1461,72 @@ static const yytype_int16 yycheck[] =
       91,    92,    -1,    -1,    -1,    96,    97,    98,    99,    -1,
      101,    14,    -1,   104,    17,    18,    -1,    -1,    21,    22,
       23,    24,    25,    26,    -1,    -1,    -1,    30,    -1,    -1,
-      -1,    -1,    24,    -1,    -1,    -1,    28,    -1,    -1,    -1,
+      -1,    -1,    24,    -1,    -1,    -1,    28,    29,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    38,    39,    40,    41,
-      42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,    51,
-      52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,    61,
+      42,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,
+      52,    -1,    -1,    55,    -1,    -1,    58,    59,    60,    61,
       -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
-      -1,    35,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
-      82,    83,    -1,    96,    97,    98,    99,    -1,   101,    -1,
-      -1,   104,    -1,    -1,    96,    97,    98,    99,    62,    63,
-      64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    54,    88,    89,    90,    91,    92,    93,
-      94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
-      91,    92,    93,    94,    48,    -1,    -1,    -1,    -1,   100,
-      54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,    63,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
+      82,    83,    84,    96,    97,    98,    99,    -1,   101,    24,
+      -1,   104,    -1,    28,    96,    97,    98,    99,    -1,    -1,
+      -1,    35,    -1,    38,    39,    40,    41,    42,    -1,    -1,
+      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
+      55,    -1,    -1,    -1,    59,    60,    61,    -1,    62,    63,
       64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    -1,    54,    88,    89,    90,    91,    92,    93,
-      94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,
-      91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
-      -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
-      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,
-      88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
-      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
-      -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    44,
+      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
+      94,    96,    97,    98,    99,    -1,    -1,    62,    63,    64,
+      65,    66,    67,    -1,    69,    70,    71,    72,    73,    74,
+      -1,    -1,    -1,    -1,    46,    -1,    48,    -1,    -1,    -1,
       -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
       62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,    91,
+      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
+      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
+      89,    90,    91,    92,    93,    94,    48,    -1,    -1,    -1,
+      -1,   100,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
       72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
+      -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,    91,
       92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
       69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,
+      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    88,
       89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
       66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
       -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    62,
-      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    62,    63,    64,    65,    66,    67,    -1,    69,
-      -1,    -1,    72,    73,    74,    88,    89,    90,    91,    92,
-      93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    91,    92,    93,    94,    -1,    -1,    56,    -1,    -1,
-      -1,    -1,   102,    62,    63,    64,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
-      89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    80,    81,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    62,
+      -1,    54,    88,    89,    90,    91,    92,    93,    94,    62,
       63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    62,    63,    64,    65,    -1,    -1,    -1,    69,
-      -1,    -1,    72,    73,    74,    88,    89,    90,    91,    92,
-      93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    91,    92,    93,    94
+      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
+      93,    94,    62,    63,    64,    65,    66,    67,    -1,    69,
+      -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
+      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
+      90,    91,    92,    93,    94,    62,    63,    64,    65,    66,
+      67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
+      -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
+      -1,    88,    89,    90,    91,    92,    93,    94,    62,    63,
+      64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
+      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
+      94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
+      -1,    72,    73,    74,    62,    63,    64,    65,    66,    67,
+      -1,    69,    -1,    -1,    72,    73,    74,    88,    89,    90,
+      91,    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    90,    91,    92,    93,    94,    -1,    -1,    56,
+      -1,    -1,    -1,    -1,   102,    62,    63,    64,    65,    66,
+      67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    88,    89,    90,    91,    92,    93,    94,    62,    63,
+      64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
+      74,    -1,    -1,    -1,    -1,    -1,    80,    81,    -1,    -1,
+      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
+      94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
+      -1,    72,    73,    74,    62,    63,    64,    65,    -1,    -1,
+      -1,    69,    -1,    -1,    72,    73,    74,    88,    89,    90,
+      91,    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    90,    91,    92,    93,    94
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1539,13 +1559,13 @@ static const yytype_uint8 yystos[] =
      132,   137,   110,   139,   110,   139,   110,   139,    43,    64,
      138,   138,   138,    54,    64,    48,   138,   138,   138,   138,
      138,   138,   103,   124,   124,   103,   102,   103,   102,   138,
-      53,   100,   103,   100,   110,   138,   138,   138,   138,   138,
-     138,   138,   138,   138,   138,   138,   138,   138,   138,    25,
+      53,   100,   103,   100,   110,   137,   138,   137,   138,   137,
+     138,   137,   138,   137,   137,   138,   138,   138,   138,    25,
       26,   110,   167,   102,   103,   102,   158,    44,   138,   138,
      128,   138,   138,   110,   110,   112,   113,   133,   134,   110,
      145,   133,   160,   110,   160,    48,    48,    48,    48,   136,
      100,   138,   120,   114,   117,   123,   137,   132,   132,   100,
-     138,   162,   129,   133,   133,   138,   138,   138,   138,   162,
+     138,   162,   129,   133,   133,   137,   137,   137,   137,   162,
      160,   132,   130,   130,   133,    54,    64,    87,   133,   102,
      103,   126,    27,   102,   133,   121,   115,   118,   129,   138,
      138,   138,    36,    37,   127,   132,   110,   159,   128,    54,
@@ -1875,61 +1895,61 @@ yydestruct (const char *yymsg,
     case 22: /* THEFUNC  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1879 "engines/director/lingo/lingo-gr.cpp"
+#line 1899 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* THEFUNCINOF  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1885 "engines/director/lingo/lingo-gr.cpp"
+#line 1905 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* VARID  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1891 "engines/director/lingo/lingo-gr.cpp"
+#line 1911 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* STRING  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1897 "engines/director/lingo/lingo-gr.cpp"
+#line 1917 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* SYMBOL  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1903 "engines/director/lingo/lingo-gr.cpp"
+#line 1923 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* ENDCLAUSE  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1909 "engines/director/lingo/lingo-gr.cpp"
+#line 1929 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* tPLAYACCEL  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1915 "engines/director/lingo/lingo-gr.cpp"
+#line 1935 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* tMETHOD  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1921 "engines/director/lingo/lingo-gr.cpp"
+#line 1941 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 110: /* ID  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1927 "engines/director/lingo/lingo-gr.cpp"
+#line 1947 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 156: /* on  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1933 "engines/director/lingo/lingo-gr.cpp"
+#line 1953 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2210,25 +2230,25 @@ yyreduce:
   case 8:
 #line 222 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("cast"); }
-#line 2214 "engines/director/lingo/lingo-gr.cpp"
+#line 2234 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
 #line 223 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("field"); }
-#line 2220 "engines/director/lingo/lingo-gr.cpp"
+#line 2240 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 224 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("script"); }
-#line 2226 "engines/director/lingo/lingo-gr.cpp"
+#line 2246 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 225 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("window"); }
-#line 2232 "engines/director/lingo/lingo-gr.cpp"
+#line 2252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2240,7 +2260,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2244 "engines/director/lingo/lingo-gr.cpp"
+#line 2264 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2248,7 +2268,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2252 "engines/director/lingo/lingo-gr.cpp"
+#line 2272 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2264,7 +2284,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2268 "engines/director/lingo/lingo-gr.cpp"
+#line 2288 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2276,7 +2296,7 @@ yyreduce:
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2280 "engines/director/lingo/lingo-gr.cpp"
+#line 2300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2284,7 +2304,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2288 "engines/director/lingo/lingo-gr.cpp"
+#line 2308 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2296,7 +2316,7 @@ yyreduce:
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2300 "engines/director/lingo/lingo-gr.cpp"
+#line 2320 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2304,7 +2324,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2308 "engines/director/lingo/lingo-gr.cpp"
+#line 2328 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2316,7 +2336,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2320 "engines/director/lingo/lingo-gr.cpp"
+#line 2340 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20:
@@ -2328,7 +2348,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2332 "engines/director/lingo/lingo-gr.cpp"
+#line 2352 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 21:
@@ -2340,7 +2360,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2344 "engines/director/lingo/lingo-gr.cpp"
+#line 2364 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 22:
@@ -2352,7 +2372,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2356 "engines/director/lingo/lingo-gr.cpp"
+#line 2376 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 23:
@@ -2363,7 +2383,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2367 "engines/director/lingo/lingo-gr.cpp"
+#line 2387 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 24:
@@ -2374,7 +2394,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2378 "engines/director/lingo/lingo-gr.cpp"
+#line 2398 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 25:
@@ -2390,7 +2410,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2394 "engines/director/lingo/lingo-gr.cpp"
+#line 2414 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 26:
@@ -2406,7 +2426,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2410 "engines/director/lingo/lingo-gr.cpp"
+#line 2430 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 27:
@@ -2418,7 +2438,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2422 "engines/director/lingo/lingo-gr.cpp"
+#line 2442 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28:
@@ -2430,7 +2450,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2434 "engines/director/lingo/lingo-gr.cpp"
+#line 2454 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2442,7 +2462,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2446 "engines/director/lingo/lingo-gr.cpp"
+#line 2466 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
@@ -2450,20 +2470,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2454 "engines/director/lingo/lingo-gr.cpp"
+#line 2474 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
 #line 373 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2461 "engines/director/lingo/lingo-gr.cpp"
+#line 2481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
 #line 376 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2467 "engines/director/lingo/lingo-gr.cpp"
+#line 2487 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2488,7 +2508,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2492 "engines/director/lingo/lingo-gr.cpp"
+#line 2512 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
@@ -2496,20 +2516,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2500 "engines/director/lingo/lingo-gr.cpp"
+#line 2520 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
 #line 407 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2507 "engines/director/lingo/lingo-gr.cpp"
+#line 2527 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
 #line 410 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2513 "engines/director/lingo/lingo-gr.cpp"
+#line 2533 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
@@ -2534,7 +2554,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2538 "engines/director/lingo/lingo-gr.cpp"
+#line 2558 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
@@ -2545,7 +2565,7 @@ yyreduce:
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2549 "engines/director/lingo/lingo-gr.cpp"
+#line 2569 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
@@ -2555,7 +2575,7 @@ yyreduce:
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2559 "engines/director/lingo/lingo-gr.cpp"
+#line 2579 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
@@ -2570,7 +2590,7 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2574 "engines/director/lingo/lingo-gr.cpp"
+#line 2594 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2594,7 +2614,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2598 "engines/director/lingo/lingo-gr.cpp"
+#line 2618 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
@@ -2607,7 +2627,7 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2611 "engines/director/lingo/lingo-gr.cpp"
+#line 2631 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
@@ -2615,31 +2635,31 @@ yyreduce:
                               {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2619 "engines/director/lingo/lingo-gr.cpp"
+#line 2639 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
 #line 491 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2625 "engines/director/lingo/lingo-gr.cpp"
+#line 2645 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
 #line 492 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2631 "engines/director/lingo/lingo-gr.cpp"
+#line 2651 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
 #line 494 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2637 "engines/director/lingo/lingo-gr.cpp"
+#line 2657 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
 #line 496 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2643 "engines/director/lingo/lingo-gr.cpp"
+#line 2663 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
@@ -2651,7 +2671,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2655 "engines/director/lingo/lingo-gr.cpp"
+#line 2675 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
@@ -2663,7 +2683,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2667 "engines/director/lingo/lingo-gr.cpp"
+#line 2687 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
@@ -2673,7 +2693,7 @@ yyreduce:
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2677 "engines/director/lingo/lingo-gr.cpp"
+#line 2697 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
@@ -2681,7 +2701,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2685 "engines/director/lingo/lingo-gr.cpp"
+#line 2705 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
@@ -2689,7 +2709,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2693 "engines/director/lingo/lingo-gr.cpp"
+#line 2713 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
@@ -2697,20 +2717,20 @@ yyreduce:
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2701 "engines/director/lingo/lingo-gr.cpp"
+#line 2721 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
 #line 534 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2708 "engines/director/lingo/lingo-gr.cpp"
+#line 2728 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
 #line 537 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2714 "engines/director/lingo/lingo-gr.cpp"
+#line 2734 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
@@ -2718,7 +2738,7 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2722 "engines/director/lingo/lingo-gr.cpp"
+#line 2742 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67:
@@ -2726,19 +2746,19 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2730 "engines/director/lingo/lingo-gr.cpp"
+#line 2750 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68:
 #line 551 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[0].code); }
-#line 2736 "engines/director/lingo/lingo-gr.cpp"
+#line 2756 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
 #line 552 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2742 "engines/director/lingo/lingo-gr.cpp"
+#line 2762 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70:
@@ -2747,7 +2767,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2751 "engines/director/lingo/lingo-gr.cpp"
+#line 2771 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
@@ -2756,7 +2776,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2760 "engines/director/lingo/lingo-gr.cpp"
+#line 2780 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 73:
@@ -2769,7 +2789,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2773 "engines/director/lingo/lingo-gr.cpp"
+#line 2793 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
@@ -2780,7 +2800,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2784 "engines/director/lingo/lingo-gr.cpp"
+#line 2804 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
@@ -2788,7 +2808,7 @@ yyreduce:
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2792 "engines/director/lingo/lingo-gr.cpp"
+#line 2812 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
@@ -2796,7 +2816,7 @@ yyreduce:
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2800 "engines/director/lingo/lingo-gr.cpp"
+#line 2820 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
@@ -2807,19 +2827,19 @@ yyreduce:
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2811 "engines/director/lingo/lingo-gr.cpp"
+#line 2831 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
 #line 588 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_intersects); }
-#line 2817 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_intersects); }
+#line 2837 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
 #line 589 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 2823 "engines/director/lingo/lingo-gr.cpp"
+#line 2843 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 81:
@@ -2830,13 +2850,13 @@ yyreduce:
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2834 "engines/director/lingo/lingo-gr.cpp"
+#line 2854 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
 #line 597 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2840 "engines/director/lingo/lingo-gr.cpp"
+#line 2860 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
@@ -2845,7 +2865,7 @@ yyreduce:
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2849 "engines/director/lingo/lingo-gr.cpp"
+#line 2869 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
@@ -2853,7 +2873,7 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2857 "engines/director/lingo/lingo-gr.cpp"
+#line 2877 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
@@ -2866,133 +2886,133 @@ yyreduce:
 		}
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2870 "engines/director/lingo/lingo-gr.cpp"
+#line 2890 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
 #line 613 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2876 "engines/director/lingo/lingo-gr.cpp"
+#line 2896 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 88:
 #line 616 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2882 "engines/director/lingo/lingo-gr.cpp"
+#line 2902 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
 #line 618 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2888 "engines/director/lingo/lingo-gr.cpp"
+#line 2908 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
 #line 619 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2894 "engines/director/lingo/lingo-gr.cpp"
+#line 2914 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
 #line 620 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2900 "engines/director/lingo/lingo-gr.cpp"
+#line 2920 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
 #line 621 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2906 "engines/director/lingo/lingo-gr.cpp"
+#line 2926 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
 #line 622 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2912 "engines/director/lingo/lingo-gr.cpp"
+#line 2932 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
 #line 623 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2918 "engines/director/lingo/lingo-gr.cpp"
+#line 2938 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
 #line 624 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2924 "engines/director/lingo/lingo-gr.cpp"
+#line 2944 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
 #line 625 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2930 "engines/director/lingo/lingo-gr.cpp"
+#line 2950 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
 #line 626 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2936 "engines/director/lingo/lingo-gr.cpp"
+#line 2956 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
 #line 627 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2942 "engines/director/lingo/lingo-gr.cpp"
+#line 2962 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
 #line 628 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2948 "engines/director/lingo/lingo-gr.cpp"
+#line 2968 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
 #line 629 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2954 "engines/director/lingo/lingo-gr.cpp"
+#line 2974 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
 #line 630 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2960 "engines/director/lingo/lingo-gr.cpp"
+#line 2980 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
 #line 631 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2966 "engines/director/lingo/lingo-gr.cpp"
+#line 2986 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
 #line 632 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_not); }
-#line 2972 "engines/director/lingo/lingo-gr.cpp"
+#line 2992 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104:
 #line 633 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2978 "engines/director/lingo/lingo-gr.cpp"
+#line 2998 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
 #line 634 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2984 "engines/director/lingo/lingo-gr.cpp"
+#line 3004 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
 #line 635 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2990 "engines/director/lingo/lingo-gr.cpp"
+#line 3010 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
 #line 636 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 2996 "engines/director/lingo/lingo-gr.cpp"
+#line 3016 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
@@ -3000,55 +3020,55 @@ yyreduce:
                                         {
 		Common::String field("field");
 		g_lingo->codeFunc(&field, 1); }
-#line 3004 "engines/director/lingo/lingo-gr.cpp"
+#line 3024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
 #line 641 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_charOf); }
-#line 3010 "engines/director/lingo/lingo-gr.cpp"
+                                                                { g_lingo->code1(LC::c_charOf); }
+#line 3030 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
 #line 642 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_charToOf); }
-#line 3016 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_charToOf); }
+#line 3036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111:
 #line 643 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_itemOf); }
-#line 3022 "engines/director/lingo/lingo-gr.cpp"
+                                                                { g_lingo->code1(LC::c_itemOf); }
+#line 3042 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
 #line 644 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_itemToOf); }
-#line 3028 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_itemToOf); }
+#line 3048 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
 #line 645 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_lineOf); }
-#line 3034 "engines/director/lingo/lingo-gr.cpp"
+                                                                { g_lingo->code1(LC::c_lineOf); }
+#line 3054 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114:
 #line 646 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_lineToOf); }
-#line 3040 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_lineToOf); }
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
 #line 647 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_wordOf); }
-#line 3046 "engines/director/lingo/lingo-gr.cpp"
+                                                                { g_lingo->code1(LC::c_wordOf); }
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
 #line 648 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_wordToOf); }
-#line 3052 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_wordToOf); }
+#line 3072 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
@@ -3056,7 +3076,7 @@ yyreduce:
                                                 {
 		Common::String cast("cast");
 		g_lingo->codeFunc(&cast, 1); }
-#line 3060 "engines/director/lingo/lingo-gr.cpp"
+#line 3080 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
@@ -3064,7 +3084,7 @@ yyreduce:
                                         {
 		Common::String script("script");
 		g_lingo->codeFunc(&script, 1); }
-#line 3068 "engines/director/lingo/lingo-gr.cpp"
+#line 3088 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
@@ -3072,13 +3092,13 @@ yyreduce:
                                         {
 		Common::String window("window");
 		g_lingo->codeFunc(&window, 1); }
-#line 3076 "engines/director/lingo/lingo-gr.cpp"
+#line 3096 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
 #line 661 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3082 "engines/director/lingo/lingo-gr.cpp"
+#line 3102 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
@@ -3091,49 +3111,49 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 3095 "engines/director/lingo/lingo-gr.cpp"
+#line 3115 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
 #line 672 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3101 "engines/director/lingo/lingo-gr.cpp"
+#line 3121 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
 #line 673 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3107 "engines/director/lingo/lingo-gr.cpp"
+#line 3127 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
 #line 673 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 3113 "engines/director/lingo/lingo-gr.cpp"
+#line 3133 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128:
 #line 674 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3119 "engines/director/lingo/lingo-gr.cpp"
+#line 3139 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129:
 #line 674 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3125 "engines/director/lingo/lingo-gr.cpp"
+#line 3145 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
 #line 675 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3131 "engines/director/lingo/lingo-gr.cpp"
+#line 3151 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
 #line 675 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3137 "engines/director/lingo/lingo-gr.cpp"
+#line 3157 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
@@ -3141,7 +3161,7 @@ yyreduce:
                                         {
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 2); }
-#line 3145 "engines/director/lingo/lingo-gr.cpp"
+#line 3165 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133:
@@ -3149,7 +3169,7 @@ yyreduce:
                                                 {
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 1); }
-#line 3153 "engines/director/lingo/lingo-gr.cpp"
+#line 3173 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
@@ -3160,13 +3180,13 @@ yyreduce:
 			g_lingo->codeCmd((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 3164 "engines/director/lingo/lingo-gr.cpp"
+#line 3184 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
 #line 688 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 3170 "engines/director/lingo/lingo-gr.cpp"
+#line 3190 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
@@ -3175,7 +3195,7 @@ yyreduce:
 			g_lingo->codeCmd((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 3179 "engines/director/lingo/lingo-gr.cpp"
+#line 3199 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
@@ -3183,7 +3203,7 @@ yyreduce:
                                         {
 		g_lingo->codeCmd((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3187 "engines/director/lingo/lingo-gr.cpp"
+#line 3207 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
@@ -3191,7 +3211,7 @@ yyreduce:
                                                 {
 		g_lingo->codeCmd((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3195 "engines/director/lingo/lingo-gr.cpp"
+#line 3215 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
@@ -3199,7 +3219,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3203 "engines/director/lingo/lingo-gr.cpp"
+#line 3223 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140:
@@ -3207,7 +3227,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3211 "engines/director/lingo/lingo-gr.cpp"
+#line 3231 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
@@ -3215,7 +3235,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3219 "engines/director/lingo/lingo-gr.cpp"
+#line 3239 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
@@ -3223,7 +3243,7 @@ yyreduce:
                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3227 "engines/director/lingo/lingo-gr.cpp"
+#line 3247 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
@@ -3231,7 +3251,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3235 "engines/director/lingo/lingo-gr.cpp"
+#line 3255 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
@@ -3239,25 +3259,25 @@ yyreduce:
                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3243 "engines/director/lingo/lingo-gr.cpp"
+#line 3263 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
 #line 728 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3249 "engines/director/lingo/lingo-gr.cpp"
+#line 3269 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
 #line 729 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3255 "engines/director/lingo/lingo-gr.cpp"
+#line 3275 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
 #line 730 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3261 "engines/director/lingo/lingo-gr.cpp"
+#line 3281 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
@@ -3266,7 +3286,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3270 "engines/director/lingo/lingo-gr.cpp"
+#line 3290 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
@@ -3275,7 +3295,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3279 "engines/director/lingo/lingo-gr.cpp"
+#line 3299 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
@@ -3284,7 +3304,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3288 "engines/director/lingo/lingo-gr.cpp"
+#line 3308 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
@@ -3293,7 +3313,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3297 "engines/director/lingo/lingo-gr.cpp"
+#line 3317 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
@@ -3302,7 +3322,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3306 "engines/director/lingo/lingo-gr.cpp"
+#line 3326 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
@@ -3311,13 +3331,13 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3315 "engines/director/lingo/lingo-gr.cpp"
+#line 3335 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
 #line 759 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3321 "engines/director/lingo/lingo-gr.cpp"
+#line 3341 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
@@ -3326,13 +3346,13 @@ yyreduce:
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3330 "engines/director/lingo/lingo-gr.cpp"
+#line 3350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
 #line 789 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3336 "engines/director/lingo/lingo-gr.cpp"
+#line 3356 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
@@ -3342,19 +3362,19 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3346 "engines/director/lingo/lingo-gr.cpp"
+#line 3366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
 #line 795 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3352 "engines/director/lingo/lingo-gr.cpp"
+#line 3372 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
 #line 796 "engines/director/lingo/lingo-gr.y"
                   { startDef(); (*g_lingo->_methodVars)["me"] = kVarArgument; }
-#line 3358 "engines/director/lingo/lingo-gr.cpp"
+#line 3378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
@@ -3364,7 +3384,7 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3368 "engines/director/lingo/lingo-gr.cpp"
+#line 3388 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
@@ -3377,7 +3397,7 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3381 "engines/director/lingo/lingo-gr.cpp"
+#line 3401 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
@@ -3387,139 +3407,139 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3391 "engines/director/lingo/lingo-gr.cpp"
+#line 3411 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
 #line 816 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3397 "engines/director/lingo/lingo-gr.cpp"
+#line 3417 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
 #line 816 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = (yyvsp[0].s); }
-#line 3403 "engines/director/lingo/lingo-gr.cpp"
+#line 3423 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
 #line 818 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3409 "engines/director/lingo/lingo-gr.cpp"
+#line 3429 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
 #line 819 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3415 "engines/director/lingo/lingo-gr.cpp"
+#line 3435 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
 #line 820 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3421 "engines/director/lingo/lingo-gr.cpp"
+#line 3441 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
 #line 823 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3427 "engines/director/lingo/lingo-gr.cpp"
+#line 3447 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172:
 #line 824 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3433 "engines/director/lingo/lingo-gr.cpp"
+#line 3453 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 173:
 #line 826 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3439 "engines/director/lingo/lingo-gr.cpp"
+#line 3459 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 174:
 #line 828 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3445 "engines/director/lingo/lingo-gr.cpp"
+#line 3465 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 175:
 #line 829 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3451 "engines/director/lingo/lingo-gr.cpp"
+#line 3471 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 176:
 #line 830 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3457 "engines/director/lingo/lingo-gr.cpp"
+#line 3477 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 177:
 #line 832 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3463 "engines/director/lingo/lingo-gr.cpp"
+#line 3483 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 178:
 #line 833 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3469 "engines/director/lingo/lingo-gr.cpp"
+#line 3489 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 179:
 #line 835 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3475 "engines/director/lingo/lingo-gr.cpp"
+#line 3495 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 180:
 #line 837 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3481 "engines/director/lingo/lingo-gr.cpp"
+#line 3501 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 181:
 #line 838 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3487 "engines/director/lingo/lingo-gr.cpp"
+#line 3507 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 182:
 #line 839 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3493 "engines/director/lingo/lingo-gr.cpp"
+#line 3513 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 183:
 #line 840 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3499 "engines/director/lingo/lingo-gr.cpp"
+#line 3519 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 184:
 #line 842 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3505 "engines/director/lingo/lingo-gr.cpp"
+#line 3525 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 185:
 #line 843 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3511 "engines/director/lingo/lingo-gr.cpp"
+#line 3531 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 186:
 #line 845 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3517 "engines/director/lingo/lingo-gr.cpp"
+#line 3537 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 187:
 #line 846 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3523 "engines/director/lingo/lingo-gr.cpp"
+#line 3543 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 188:
@@ -3528,7 +3548,7 @@ yyreduce:
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3532 "engines/director/lingo/lingo-gr.cpp"
+#line 3552 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 189:
@@ -3537,7 +3557,7 @@ yyreduce:
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3541 "engines/director/lingo/lingo-gr.cpp"
+#line 3561 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 190:
@@ -3546,11 +3566,11 @@ yyreduce:
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3550 "engines/director/lingo/lingo-gr.cpp"
+#line 3570 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3554 "engines/director/lingo/lingo-gr.cpp"
+#line 3574 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 2d1579d86e..26a45e9259 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -585,8 +585,8 @@ simpleexprnoparens: INT		{
 		g_lingo->codeString($THEOBJECTPROP.prop->c_str());
 		delete $THEOBJECTPROP.obj;
 		delete $THEOBJECTPROP.prop; }
-	| tSPRITE expr tINTERSECTS expr	{ g_lingo->code1(LC::c_intersects); }
-	| tSPRITE expr tWITHIN expr		{ g_lingo->code1(LC::c_within); }
+    | tSPRITE expr tINTERSECTS simpleexpr	{ g_lingo->code1(LC::c_intersects); }
+    | tSPRITE expr tWITHIN simpleexpr		{ g_lingo->code1(LC::c_within); }
 	| list
 	| ID[func] '(' ID[method] ')' {
 			g_lingo->code1(LC::c_lazyeval);
@@ -638,14 +638,14 @@ expr: simpleexpr { $$ = $simpleexpr; }
 chunkexpr:  tFIELD simpleexprnoparens	{
 		Common::String field("field");
 		g_lingo->codeFunc(&field, 1); }
-	|  tCHAR expr tOF expr		{ g_lingo->code1(LC::c_charOf); }
-	| tCHAR expr tTO expr tOF expr	{ g_lingo->code1(LC::c_charToOf); }
-	| tITEM expr tOF expr			{ g_lingo->code1(LC::c_itemOf); }
-	| tITEM expr tTO expr tOF expr	{ g_lingo->code1(LC::c_itemToOf); }
-	| tLINE expr tOF expr			{ g_lingo->code1(LC::c_lineOf); }
-	| tLINE expr tTO expr tOF expr	{ g_lingo->code1(LC::c_lineToOf); }
-	| tWORD expr tOF expr			{ g_lingo->code1(LC::c_wordOf); }
-	| tWORD expr tTO expr tOF expr	{ g_lingo->code1(LC::c_wordToOf); }
+	| tCHAR expr tOF simpleexpr				{ g_lingo->code1(LC::c_charOf); }
+	| tCHAR expr tTO expr tOF simpleexpr	{ g_lingo->code1(LC::c_charToOf); }
+	| tITEM expr tOF simpleexpr				{ g_lingo->code1(LC::c_itemOf); }
+	| tITEM expr tTO expr tOF simpleexpr	{ g_lingo->code1(LC::c_itemToOf); }
+	| tLINE expr tOF simpleexpr				{ g_lingo->code1(LC::c_lineOf); }
+	| tLINE expr tTO expr tOF simpleexpr	{ g_lingo->code1(LC::c_lineToOf); }
+	| tWORD expr tOF simpleexpr				{ g_lingo->code1(LC::c_wordOf); }
+	| tWORD expr tTO expr tOF simpleexpr	{ g_lingo->code1(LC::c_wordToOf); }
 
 reference: 	chunkexpr
 	| tCAST simpleexprnoparens		{


Commit: 81dc7aaae38931045659da81f8fa2082a3b1444a
    https://github.com/scummvm/scummvm/commit/81dc7aaae38931045659da81f8fa2082a3b1444a
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-19T13:33:35-04:00

Commit Message:
DIRECTOR: LINGO: Move tNOT

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 6bbd7c5a9b..6e953c471f 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -824,7 +824,7 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  99
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2086
+#define YYLAST   2018
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  107
@@ -896,9 +896,9 @@ static const yytype_int16 yyrline[] =
      348,   350,   351,   356,   369,   373,   376,   368,   403,   407,
      410,   402,   437,   444,   450,   436,   480,   488,   491,   492,
      494,   496,   498,   505,   513,   514,   516,   522,   526,   530,
-     534,   537,   539,   540,   542,   543,   545,   548,   551,   552,
-     553,   557,   561,   562,   570,   576,   579,   582,   588,   589,
-     590,   591,   597,   597,   602,   605,   613,   615,   616,   618,
+     534,   537,   539,   540,   542,   543,   545,   548,   551,   555,
+     559,   560,   561,   562,   563,   571,   577,   580,   583,   589,
+     590,   591,   592,   598,   598,   603,   606,   614,   616,   617,
      619,   620,   621,   622,   623,   624,   625,   626,   627,   628,
      629,   630,   631,   632,   633,   634,   635,   636,   638,   641,
      642,   643,   644,   645,   646,   647,   648,   650,   651,   654,
@@ -989,45 +989,45 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    1408,  -356,  -356,  -356,   -35,  -356,  1062,  -356,  -356,  -356,
-     -31,  1277,   -17,    13,    17,    17,  1309,  1150,  -356,  1309,
-    -356,  -356,  -356,  -356,  -356,  -356,    25,   -73,   480,  -356,
+    1387,  -356,  -356,  -356,   -35,  -356,  1062,  -356,  -356,  -356,
+     -31,  1277,   -30,    13,    17,    17,  1309,  1150,  -356,  1309,
+    -356,  -356,  -356,  -356,  -356,  -356,    75,    -4,   480,  -356,
     -356,  -356,  -356,  1309,  -356,  -356,  -356,  -356,  -356,  1028,
-    -356,  -356,    17,   -40,  -356,  -356,  1397,  -356,    37,  1397,
-    -356,  -356,  -356,  1309,  -356,    11,  -356,  1309,  1309,  1309,
-    1309,  1309,  1309,  1397,  1397,   600,   707,   814,   921,  1309,
-     127,    -2,  -356,  -356,  1548,  -356,  -356,  -356,  -356,    17,
-    -356,    17,  1515,    17,  -356,   -42,  1397,  1397,     2,     7,
-      41,  -356,  1913,  1548,  -356,    17,  1581,    17,    17,  -356,
-    1408,  1185,  1979,   -30,  1979,    17,   -30,    17,  -356,     5,
-    -356,  -356,  1397,  -356,  1979,  1309,  -356,  1628,  1661,  1694,
-    1727,  1946,  -356,  -356,  -356,  -356,  -356,  -356,  1872,    23,
-      27,  -356,   -82,  1979,    12,    28,    32,  -356,  1185,  1309,
+    -356,  -356,    17,    -1,  -356,  -356,  1309,  -356,    41,  1309,
+    -356,  -356,  -356,  1309,  -356,    62,  -356,  1309,  1309,  1309,
+    1309,  1309,  1309,  1309,  1309,   600,   707,   814,   921,  1309,
+     127,    19,  -356,  -356,  1513,  -356,  -356,  -356,  -356,    17,
+    -356,    17,  1480,    17,  -356,   -42,  1309,  1309,    -3,     2,
+      68,  -356,  1845,  1513,  -356,    17,  1546,    17,    17,  -356,
+    1387,  1185,  1911,    26,  1911,    17,    26,    17,  -356,    28,
+    -356,  -356,  1309,  -356,  1911,  1309,  -356,  1593,  1626,  1659,
+    1692,  1878,  -356,  -356,  -356,  -356,  -356,  -356,  1804,    27,
+      29,  -356,   -82,  1911,    18,    34,    36,  -356,  1185,  1309,
     1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,
-    1309,  1309,  1309,  1309,  1309,  1309,  -356,  -356,  1397,   101,
-     101,   101,   -26,  1309,  1309,  1309,     8,    89,  1309,  1309,
-    1309,  1309,  1309,  1309,  -356,  -356,    36,  -356,  -356,  -356,
-      55,  -356,  -356,    53,  1872,   -58,  1309,   114,  -356,    -7,
-      18,    17,  -356,  1979,  1397,  1309,  1397,  1309,  1397,  1309,
-    1397,  1309,  1397,  1397,  -356,  1309,  1309,  1309,  -356,  1309,
-      66,    79,    40,   -43,   -43,   -43,   -43,  1992,  1992,  -356,
-      -5,   -43,   -43,   -43,   -43,    -5,   -60,   -60,  -356,  -356,
-      17,   125,  -356,  -356,  -356,  -356,  -356,  -356,  1309,  1309,
-    1979,  1979,  1979,  1309,  1309,    17,  1979,  1979,  1979,  1979,
-    1979,  1979,    17,   426,  1475,    17,  -356,  -356,  -356,  1979,
-    1475,  -356,    17,  -356,  -356,  -356,  1760,  -356,  1793,  -356,
-    1826,  -356,  1859,  -356,  -356,  1979,  1979,  1979,  1979,    23,
-      27,    65,  -356,  -356,  -356,  -356,    20,  1309,  1979,  1476,
-    -356,  1979,  1979,  1397,  -356,  -356,  -356,  -356,    73,  -356,
-    1309,  -356,  1475,  -356,  1475,  1397,  1397,  1397,  1397,  1309,
-    -356,  1979,  -356,  -356,  -356,  1475,    14,  -356,   103,  1475,
-    1979,    44,  -356,   165,  -356,  -356,  -356,  -356,  -356,    84,
-    1475,  -356,  -356,  -356,  -356,  1309,  1309,  -356,  -356,  -356,
-    1309,   152,    17,  -356,  -356,  -356,   139,   159,   110,  1979,
-    1979,  1979,  1475,  1309,  -356,   116,  -356,   104,  -356,  1309,
-     154,  -356,  -356,  1979,  -356,    17,  -356,  1979,  1309,   124,
-     158,  -356,  1475,  -356,  1979,  -356,  1475,   126,  -356,  -356,
-    -356,  -356,  1475,  -356,  -356,   128,  1475,  -356,   129,  -356
+    1309,  1309,  1309,  1309,  1309,  1309,  -356,  -356,  1309,   101,
+     101,   101,   -26,  1309,  1309,  1309,     8,    94,  1309,  1309,
+    1309,  1309,  1309,  1309,  -356,  -356,    40,  -356,  -356,  -356,
+      43,  -356,  -356,    53,  1804,   -63,  1309,   105,  -356,   -43,
+     -32,    17,  -356,  1911,  1309,  1309,  1309,  1309,  1309,  1309,
+    1309,  1309,  1309,  1309,  -356,  1309,  1309,  1309,  -356,  1309,
+      66,    79,   -58,   121,   121,   121,   121,  1924,  1924,  -356,
+     -44,   121,   121,   121,   121,   -44,   -60,   -60,  -356,  -356,
+      17,   103,  -356,  -356,  -356,  -356,  -356,  -356,  1309,  1309,
+    1911,  1911,  1911,  1309,  1309,    17,  1911,  1911,  1911,  1911,
+    1911,  1911,    17,   248,  1440,    17,  -356,  -356,  -356,  1911,
+    1440,  -356,    17,  -356,  -356,  -356,  1441,  -356,  1725,  -356,
+    1758,  -356,  1791,  -356,  -356,  1911,  1911,  1911,  1911,    27,
+      29,    61,  -356,  -356,  -356,  -356,   -27,  1309,  1911,  1330,
+    -356,  1911,  1911,  1309,  -356,  -356,  -356,  -356,    69,  -356,
+    1309,  -356,  1440,  -356,  1440,  1309,  1309,  1309,  1309,  1309,
+    -356,  1911,  -356,  -356,  -356,  1440,    10,  -356,    84,  1440,
+    1911,   -25,  -356,   146,  -356,  -356,  -356,  -356,  -356,    -9,
+    1440,  -356,  -356,  -356,  -356,  1309,  1309,  -356,  -356,  -356,
+    1309,    81,    17,  -356,  -356,  -356,   132,   152,   102,  1911,
+    1911,  1911,  1440,  1309,  -356,   104,  -356,    89,  -356,  1309,
+     140,  -356,  -356,  1911,  -356,    17,  -356,  1911,  1309,   111,
+     148,  -356,  1440,  -356,  1911,  -356,  1440,   122,  -356,  -356,
+    -356,  -356,  1440,  -356,  -356,   123,  1440,  -356,   130,  -356
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1039,37 +1039,37 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,   130,     0,
      128,   165,     8,     9,    10,    11,     0,     2,     0,    29,
       31,     6,    32,     0,    30,   122,   123,     5,    61,     0,
-      61,   124,     0,     0,    66,    73,     0,    67,     0,     0,
-      71,    70,    77,     0,   146,     0,   147,     0,     0,     0,
+      61,   124,     0,     0,    66,    74,     0,    67,     0,     0,
+      69,    68,    78,     0,   146,     0,   147,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    85,    87,    89,   148,   117,    72,   150,    80,     0,
+       0,    86,    88,    90,   148,   117,    73,   150,    81,     0,
       46,     0,   121,     0,    61,     0,     0,     0,     0,     0,
        0,   160,   133,   153,   155,     0,     0,     0,     0,     1,
        4,     0,   175,   138,    57,   167,   157,   167,   139,   127,
-      86,    74,     0,    75,   152,     0,   103,     0,     0,     0,
-       0,     0,    68,    69,   118,   108,   119,   120,     0,    71,
-      70,   181,    85,   184,     0,   183,   182,   186,     0,     0,
+      87,    75,     0,    76,   152,     0,    72,     0,     0,     0,
+       0,     0,    70,    71,   118,   108,   119,   120,     0,    69,
+      68,   181,    86,   184,     0,   183,   182,   186,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,   149,    61,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,   154,   143,   131,    51,    51,   141,
-     129,   166,     3,    85,   175,     0,     0,     0,   168,     0,
-       0,     0,    76,   151,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    88,     0,     0,     0,   179,     0,
-       0,    85,     0,    99,   100,    97,    98,   101,   102,    94,
-     105,   106,   107,    96,    95,   104,    90,    91,    92,    93,
+     129,   166,     3,    86,   175,     0,     0,     0,   168,     0,
+       0,     0,    77,   151,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    89,     0,     0,     0,   179,     0,
+       0,    86,     0,   100,   101,    98,    99,   102,   103,    95,
+     105,   106,   107,    97,    96,   104,    91,    92,    93,    94,
      167,     0,    12,    13,    15,    16,    17,    18,     0,     0,
       57,    22,    20,     0,     0,     0,    27,    28,    21,    19,
       47,   132,     0,     0,    64,     0,   134,   135,   137,   176,
       64,   173,     0,   173,   140,   109,     0,   111,     0,   113,
-       0,   115,     0,    78,    79,   189,   188,   190,   185,     0,
-       0,     0,   187,    81,    82,    84,     0,     0,    42,    34,
+       0,   115,     0,    79,    80,   189,   188,   190,   185,     0,
+       0,     0,   187,    82,    83,    85,     0,     0,    42,    34,
       50,    23,    24,     0,   144,    61,    65,    61,    62,   142,
        0,    58,    64,   169,    64,     0,     0,     0,     0,     0,
      173,    14,    61,    59,    59,    64,     0,    49,     0,    64,
      177,     0,    54,   164,   162,   110,   112,   114,   116,     0,
       64,    43,    35,    39,    58,     0,     0,    48,    63,   136,
-       0,    61,   170,    83,   159,    57,     0,     0,     0,    25,
+       0,    61,   170,    84,   159,    57,     0,     0,     0,    25,
       26,   178,    64,     0,    55,     0,   171,   163,    44,     0,
        0,    33,    61,    57,    52,     0,    50,    36,     0,     0,
        0,   172,    64,    57,    40,    53,    64,     0,    50,    57,
@@ -1079,13 +1079,13 @@ static const yytype_uint8 yydefact[] =
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -356,   113,  -356,     0,  -356,   -37,     3,  -356,  -356,  -356,
-    -356,  -356,  -356,  -356,  -356,  -356,  -355,    39,  -356,  -356,
-    -356,  -239,  -327,   -94,  -356,   -38,  -250,  -356,     9,  -356,
+    -356,   107,  -356,     0,  -356,   -36,     3,  -356,  -356,  -356,
+    -356,  -356,  -356,  -356,  -356,  -356,  -355,    42,  -356,  -356,
+    -356,  -239,  -327,   -93,  -356,   -38,  -250,  -356,    20,  -356,
      -28,   252,    24,  -356,  -356,  -356,  -356,  -356,  -356,  -356,
     -356,  -356,  -356,   -11,  -356,  -356,  -356,  -356,  -356,  -356,
-    -356,  -103,  -356,  -255,   -34,   -88,  -356,  -356,  -356,  -356,
-      19
+    -356,  -103,  -356,  -255,   -34,   -87,  -356,  -356,  -356,  -356,
+      25
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -1107,39 +1107,39 @@ static const yytype_int16 yytable[] =
 {
       28,   290,   107,    31,   190,   106,    94,   348,   304,   145,
      301,   372,   164,    89,    90,    91,    41,   238,   111,   138,
-      80,   113,   165,   382,   207,    99,   145,   100,   386,   146,
-      85,    86,    87,   154,   155,   122,   123,     1,   239,    83,
-      84,     1,   108,    88,   258,   186,   163,   151,   152,   153,
-     154,   155,   323,   384,   324,   330,   168,   115,   166,   167,
-     110,   170,   243,   156,   145,   334,   169,   185,   335,   338,
-     132,   171,   244,   186,   124,   125,   126,   127,   336,   157,
-     344,   158,   174,   162,   192,   112,   152,   153,   154,   155,
-       1,   279,   280,   261,   172,   175,   262,   179,   181,   138,
-      28,   183,   362,    31,   212,   188,   358,   188,   191,    22,
-      23,    24,    25,    22,    23,    24,    25,   208,   263,   230,
-     310,   262,   377,   262,   370,     1,   380,   286,    43,   205,
-     231,   209,   385,   206,   378,   210,   388,   245,   211,   252,
-     383,    44,   285,   186,    45,    46,   339,   340,    47,    48,
-      49,     1,   129,   130,   138,   256,   257,    52,   255,   232,
-     234,   236,    22,    23,    24,    25,   265,   260,   267,   287,
-     269,   207,   271,   319,   273,   274,    58,    59,    60,    61,
-     138,   283,   284,   233,   235,   237,   343,   340,   352,   353,
-     337,   264,   342,   359,   360,    57,   361,    22,    66,    24,
-      25,   364,    58,    59,    60,    61,    62,   365,   368,   375,
-     281,   376,   381,   182,   387,   389,   295,   254,    63,    64,
-     333,   329,     0,    65,    66,    67,    68,     0,    69,   282,
-     188,    70,  -180,   131,     0,     0,     0,     0,     0,     0,
+      80,   113,   165,   382,   207,   145,    83,    84,   386,   116,
+      85,    86,    87,   154,   155,   122,   123,     1,   239,   258,
+     186,     1,   108,    88,   285,   186,   163,   152,   153,   154,
+     155,   168,   323,   384,   324,   330,   170,   261,   166,   167,
+     262,   169,   243,   156,   335,   334,   171,   185,   263,   338,
+     132,   262,   244,   310,   336,    99,   262,   339,   340,   157,
+     344,   158,   174,   162,   192,   124,   125,   126,   127,   112,
+       1,   279,   280,   343,   340,   175,   100,   179,   181,   110,
+      28,   183,   362,    31,   212,   188,   358,   188,   115,    22,
+      23,    24,    25,    22,    23,    24,    25,   352,   353,   230,
+     138,   172,   377,   208,   370,     1,   380,   286,    43,   186,
+     231,   191,   385,   205,   378,   206,   388,   209,   211,   210,
+     383,    44,   245,   252,    45,    46,   255,   287,    47,    48,
+      49,     1,   129,   130,   138,   256,   257,    52,   260,   232,
+     234,   236,    22,    23,    24,    25,   265,   207,   267,   319,
+     269,   337,   271,   342,   273,   274,    58,    59,    60,    61,
+     138,   283,   284,   233,   235,   237,   359,   360,   361,   364,
+     145,   264,   365,   146,   368,    57,   375,    22,    66,    24,
+      25,   376,    58,    59,    60,    61,    62,   182,   381,   387,
+     281,   151,   152,   153,   154,   155,   389,   295,    63,    64,
+     254,   333,   329,    65,    66,    67,    68,     0,    69,     0,
+     188,    70,  -180,   131,     0,   282,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   293,     0,     0,     0,     0,
        0,     0,   294,    28,    28,   299,     0,   317,    74,   318,
       28,     0,   303,    82,     0,   316,     0,     0,    92,    93,
-       0,    96,     0,     0,   331,     0,     0,   325,   326,   327,
-     328,     0,     0,     0,     0,   104,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    28,   355,    28,   114,     0,     0,     0,   116,
+       0,    96,     1,     0,   331,     0,     2,   325,   326,   327,
+     328,     0,     0,     0,     0,   104,     4,     5,     6,     7,
+       0,     0,     0,     0,     0,     0,     0,     0,    11,     0,
+      13,     0,    28,   355,    28,   114,     0,    16,    17,    18,
      117,   118,   119,   120,   121,    28,     0,     0,     0,    28,
        0,   128,   133,     0,   369,     0,     0,     0,     0,     0,
-      28,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   356,     0,     0,     0,     0,     0,     0,     0,
+      28,    20,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   356,     0,    22,    23,    24,    25,     0,     0,
        0,     0,    28,   184,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   371,     0,   193,     0,     0,
        0,     0,    28,     0,     0,     0,    28,     0,     0,     0,
@@ -1150,14 +1150,14 @@ static const yytype_int16 yytable[] =
      246,   247,   248,   249,   250,   251,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,   259,     0,
        0,     0,     0,     0,     0,     0,     0,   266,     0,   268,
-       1,   270,     0,   272,     2,     0,     0,   275,   276,   277,
-       0,   278,     0,     0,     4,     5,     6,     7,     0,     0,
-       0,     0,     0,     0,     0,     0,    11,     0,    13,     0,
-    -174,    43,     0,     0,     0,    16,    17,    18,     0,     0,
+       0,   270,     0,   272,     0,     0,     0,   275,   276,   277,
+       0,   278,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    -174,    43,     0,     0,     0,     0,     0,     0,     0,     0,
      288,   289,     0,     0,    44,   291,   292,    45,    46,     0,
-       0,    47,    48,    49,     1,    50,    51,  -174,     0,    20,
+       0,    47,    48,    49,     1,    50,    51,  -174,     0,     0,
       52,     0,     0,     0,     0,     0,  -174,  -174,     0,     0,
-       0,     0,    22,    23,    24,    25,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,   311,
        0,     0,     0,     0,     0,     0,     0,     0,    57,     0,
        0,     0,   320,     0,     0,    58,    59,    60,    61,    62,
@@ -1171,7 +1171,7 @@ static const yytype_int16 yytable[] =
       52,     0,     0,     0,     0,    -8,    -8,    -8,    -8,    -8,
       -8,    -8,    -8,     0,    -8,     0,    -8,    -8,    -8,     0,
       -8,    -8,    -8,    -8,    -8,    -8,    -8,     0,     0,    -8,
-      -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,     0,    -8,
+      -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    57,    -8,
       -8,    -8,    -8,    -8,    -8,    58,    59,    60,    61,    62,
       -8,    -8,    -8,    -8,     0,    -8,    -8,    -8,    -8,    -8,
       -8,    -8,    -8,    -8,    -8,     0,    65,    66,    67,    68,
@@ -1182,7 +1182,7 @@ static const yytype_int16 yytable[] =
        0,     0,    -9,    -9,    -9,    -9,    -9,    -9,    -9,    -9,
        0,    -9,     0,    -9,    -9,    -9,     0,    -9,    -9,    -9,
       -9,    -9,    -9,    -9,     0,     0,    -9,    -9,    -9,    -9,
-      -9,    -9,    -9,    -9,    -9,     0,    -9,    -9,    -9,    -9,
+      -9,    -9,    -9,    -9,    -9,    57,    -9,    -9,    -9,    -9,
       -9,    -9,    58,    59,    60,    61,    62,    -9,    -9,    -9,
       -9,     0,    -9,    -9,    -9,    -9,    -9,    -9,    -9,    -9,
       -9,    -9,     0,    65,    66,    67,    68,    -9,    -9,    -9,
@@ -1193,7 +1193,7 @@ static const yytype_int16 yytable[] =
      -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,   -10,     0,
      -10,   -10,   -10,     0,   -10,   -10,   -10,   -10,   -10,   -10,
      -10,     0,     0,   -10,   -10,   -10,   -10,   -10,   -10,   -10,
-     -10,   -10,     0,   -10,   -10,   -10,   -10,   -10,   -10,    58,
+     -10,   -10,    57,   -10,   -10,   -10,   -10,   -10,   -10,    58,
       59,    60,    61,    62,   -10,   -10,   -10,   -10,     0,   -10,
      -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,
       65,    66,    67,    68,   -10,   -10,   -10,   -10,    70,   -10,
@@ -1203,7 +1203,7 @@ static const yytype_int16 yytable[] =
        0,    52,     0,     0,     0,     0,   -11,   -11,   -11,   -11,
      -11,   -11,   -11,   -11,     0,   -11,     0,   -11,   -11,   -11,
        0,   -11,   -11,   -11,   -11,   -11,   -11,   -11,     0,     0,
-     -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,     0,
+     -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,    57,
      -11,   -11,   -11,   -11,   -11,   -11,    58,    59,    60,    61,
       62,   -11,   -11,   -11,   -11,     0,   -11,   -11,   -11,   -11,
      -11,   -11,   -11,   -11,   -11,   -11,     0,    65,    66,    67,
@@ -1241,118 +1241,111 @@ static const yytype_int16 yytable[] =
       47,    48,    49,     1,    50,    51,     0,     0,     0,    52,
        0,     0,     0,     0,     0,    57,     0,     0,     0,     0,
        0,     0,    58,    59,    60,    61,    62,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    63,    64,
+       0,     0,     0,     0,     0,   -38,     0,     0,    63,    64,
        0,     0,     0,    65,    66,    67,    68,    57,    69,     0,
        0,    70,     0,     0,    58,    59,    60,    61,    62,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
-      63,    64,     0,     0,     0,    65,    66,    67,    68,     0,
-      69,    44,     0,    70,    45,    46,     0,     0,    47,    48,
-      49,     1,    50,    51,     0,     0,     0,    52,     0,     0,
-       0,     0,     1,     0,     0,     0,     2,     3,     0,     0,
-       0,     0,     0,     0,     0,     0,     4,     5,     6,     7,
-       8,     0,     0,     9,     0,    10,     0,     0,    11,    12,
-      13,     0,     0,    14,     0,     0,    15,    16,    17,    18,
-       0,     0,    58,    59,    60,    61,    62,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    63,    64,
-      19,    20,    21,    65,    66,    67,    68,     0,    69,     1,
-       0,    70,     0,     2,    22,    23,    24,    25,     0,     0,
-       0,   -38,     0,     4,     5,     6,     7,     8,     0,     0,
-       0,     0,    10,     0,     0,    11,    12,    13,     0,     0,
-      14,     0,     0,     0,    16,    17,    18,     0,   139,   140,
-     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,     0,    19,    20,   159,
-       0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
-     155,    22,    23,    24,    25,     0,     0,   139,   140,   141,
-     142,   143,   144,     0,   145,   160,   161,   146,   147,   148,
-       0,     0,     0,     0,    53,     0,    55,     0,     0,     0,
-       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
-     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
-     146,   147,   148,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   177,   149,   150,   151,   152,
-     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
-     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   149,
-     150,   151,   152,   153,   154,   155,   194,     0,     0,     0,
-       0,   178,   195,     0,     0,     0,     0,     0,     0,     0,
-     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
-     146,   147,   148,     0,     0,     0,     0,     0,     0,   196,
-       0,     0,     0,     0,     0,   197,   149,   150,   151,   152,
-     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
+       0,     0,   139,   140,   141,   142,   143,   144,     0,   145,
+      63,    64,   146,   147,   148,    65,    66,    67,    68,     0,
+      69,     1,     0,    70,     0,     2,     3,     0,   149,   150,
+     151,   152,   153,   154,   155,     4,     5,     6,     7,     8,
+       0,     0,     9,     0,    10,     0,     0,    11,    12,    13,
+       0,     0,    14,     0,     0,    15,    16,    17,    18,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     1,     0,     0,     0,     2,    19,
+      20,    21,     0,     0,     0,     0,     0,     0,     4,     5,
+       6,     7,     8,    22,    23,    24,    25,    10,     0,   305,
+      11,    12,    13,     0,     0,    14,     0,     0,     0,    16,
+      17,    18,     0,   139,   140,   141,   142,   143,   144,     0,
      145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
-       0,     0,   198,     0,     0,     0,     0,     0,   199,   149,
-     150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
-     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
-       0,     0,     0,     0,     0,   200,     0,     0,     0,     0,
-       0,   201,   149,   150,   151,   152,   153,   154,   155,   139,
-     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
-     147,   148,     0,     0,     0,     0,     0,     0,   305,     0,
-       0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
-     154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
-       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
-       0,   306,     0,     0,     0,     0,     0,     0,   149,   150,
+       0,     0,    19,    20,   159,     0,     0,     0,     0,   149,
+     150,   151,   152,   153,   154,   155,    22,    23,    24,    25,
+       0,     0,   139,   140,   141,   142,   143,   144,     0,   145,
+     160,   161,   146,   147,   148,     0,     0,     0,     0,    53,
+       0,    55,     0,     0,     0,     0,     0,     0,   149,   150,
      151,   152,   153,   154,   155,   139,   140,   141,   142,   143,
      144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
-       0,     0,     0,     0,   307,     0,     0,     0,     0,     0,
-       0,   149,   150,   151,   152,   153,   154,   155,   139,   140,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     177,   149,   150,   151,   152,   153,   154,   155,   139,   140,
      141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,     0,   308,     0,     0,
+     148,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
-     155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
-       0,   146,   147,   148,   139,   140,   141,   142,   143,   144,
-       0,   145,     0,     0,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-     149,   150,   151,   152,   153,   154,   155,     0,     0,   173,
-       0,     0,     0,     0,   204,   139,   140,   141,   142,   143,
+     155,   194,     0,     0,     0,     0,   178,   195,     0,     0,
+       0,     0,     0,     0,     0,   139,   140,   141,   142,   143,
      144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   149,   150,   151,   152,   153,   154,   155,   139,   140,
+       0,     0,     0,     0,   196,     0,     0,     0,     0,     0,
+     197,   149,   150,   151,   152,   153,   154,   155,   139,   140,
      141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,   202,   203,     0,     0,
-       0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
+     148,     0,     0,     0,     0,     0,     0,   198,     0,     0,
+       0,     0,     0,   199,   149,   150,   151,   152,   153,   154,
      155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
-       0,   146,   147,   148,   139,   140,   141,   142,     0,     0,
-       0,   145,     0,     0,   146,   147,   148,   149,   150,   151,
-     152,   153,   154,   155,     0,     0,     0,     0,     0,     0,
-     149,   150,   151,   152,   153,   154,   155
+       0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
+     200,     0,     0,     0,     0,     0,   201,   149,   150,   151,
+     152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
+       0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
+       0,     0,     0,   306,     0,     0,     0,     0,     0,     0,
+     149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
+     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
+       0,     0,     0,     0,     0,     0,   307,     0,     0,     0,
+       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
+     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
+     146,   147,   148,     0,     0,     0,     0,     0,     0,   308,
+       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
+     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
+     145,     0,     0,   146,   147,   148,   139,   140,   141,   142,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
+       0,     0,   149,   150,   151,   152,   153,   154,   155,     0,
+       0,   173,     0,     0,     0,     0,   204,   139,   140,   141,
+     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
+     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
+     146,   147,   148,     0,     0,     0,     0,     0,   202,   203,
+       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
+     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
+     145,     0,     0,   146,   147,   148,   139,   140,   141,   142,
+       0,     0,     0,   145,     0,     0,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
+       0,     0,   149,   150,   151,   152,   153,   154,   155
 };
 
 static const yytype_int16 yycheck[] =
 {
        0,   240,    40,     0,   107,    39,    17,   334,   263,    69,
      260,   366,    54,    13,    14,    15,    51,    43,    46,   101,
-      51,    49,    64,   378,   106,     0,    69,   100,   383,    72,
-      17,    18,    19,    93,    94,    63,    64,    24,    64,    56,
-      57,    24,    42,    30,   102,   103,    84,    90,    91,    92,
-      93,    94,   302,   380,   304,   310,    54,    46,    86,    87,
-     100,    54,    54,    74,    69,   315,    64,   101,    54,   319,
-      70,    64,    64,   103,    65,    66,    67,    68,    64,    79,
-     330,    81,    93,    83,   112,    48,    91,    92,    93,    94,
-      24,    25,    26,   100,    53,    95,   103,    97,    98,   101,
-     100,   101,   352,   100,   138,   105,   345,   107,   103,    96,
-      97,    98,    99,    96,    97,    98,    99,   105,   100,   157,
-     100,   103,   372,   103,   363,    24,   376,   230,     1,   106,
-     158,   103,   382,   106,   373,   103,   386,    48,   138,   103,
-     379,    14,   102,   103,    17,    18,   102,   103,    21,    22,
-      23,    24,    25,    26,   101,   102,   103,    30,   103,   159,
-     160,   161,    96,    97,    98,    99,   194,    53,   196,    44,
-     198,   106,   200,   100,   202,   203,    75,    76,    77,    78,
-     101,   102,   103,   159,   160,   161,   102,   103,    36,    37,
-      87,   191,    27,    54,    35,    68,    86,    96,    97,    98,
-      99,    85,    75,    76,    77,    78,    79,   103,    54,    85,
-     210,    53,    86,   100,    86,    86,   253,   178,    91,    92,
-     314,   309,    -1,    96,    97,    98,    99,    -1,   101,   210,
-     230,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,
+      51,    49,    64,   378,   106,    69,    56,    57,   383,    57,
+      17,    18,    19,    93,    94,    63,    64,    24,    64,   102,
+     103,    24,    42,    30,   102,   103,    84,    91,    92,    93,
+      94,    54,   302,   380,   304,   310,    54,   100,    86,    87,
+     103,    64,    54,    74,    54,   315,    64,   101,   100,   319,
+      70,   103,    64,   100,    64,     0,   103,   102,   103,    79,
+     330,    81,    93,    83,   112,    65,    66,    67,    68,    48,
+      24,    25,    26,   102,   103,    95,   100,    97,    98,   100,
+     100,   101,   352,   100,   138,   105,   345,   107,    46,    96,
+      97,    98,    99,    96,    97,    98,    99,    36,    37,   157,
+     101,    53,   372,   105,   363,    24,   376,   230,     1,   103,
+     158,   103,   382,   106,   373,   106,   386,   103,   138,   103,
+     379,    14,    48,   103,    17,    18,   103,    44,    21,    22,
+      23,    24,    25,    26,   101,   102,   103,    30,    53,   159,
+     160,   161,    96,    97,    98,    99,   194,   106,   196,   100,
+     198,    87,   200,    27,   202,   203,    75,    76,    77,    78,
+     101,   102,   103,   159,   160,   161,    54,    35,    86,    85,
+      69,   191,   103,    72,    54,    68,    85,    96,    97,    98,
+      99,    53,    75,    76,    77,    78,    79,   100,    86,    86,
+     210,    90,    91,    92,    93,    94,    86,   253,    91,    92,
+     178,   314,   309,    96,    97,    98,    99,    -1,   101,    -1,
+     230,   104,   105,   106,    -1,   210,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   245,    -1,    -1,    -1,    -1,
       -1,    -1,   252,   253,   254,   255,    -1,   295,     6,   297,
      260,    -1,   262,    11,    -1,   293,    -1,    -1,    16,    17,
-      -1,    19,    -1,    -1,   312,    -1,    -1,   305,   306,   307,
-     308,    -1,    -1,    -1,    -1,    33,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   302,   341,   304,    53,    -1,    -1,    -1,    57,
+      -1,    19,    24,    -1,   312,    -1,    28,   305,   306,   307,
+     308,    -1,    -1,    -1,    -1,    33,    38,    39,    40,    41,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+      52,    -1,   302,   341,   304,    53,    -1,    59,    60,    61,
       58,    59,    60,    61,    62,   315,    -1,    -1,    -1,   319,
       -1,    69,    70,    -1,   362,    -1,    -1,    -1,    -1,    -1,
-     330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   342,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     330,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   342,    -1,    96,    97,    98,    99,    -1,    -1,
       -1,    -1,   352,   101,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   365,    -1,   115,    -1,    -1,
       -1,    -1,   372,    -1,    -1,    -1,   376,    -1,    -1,    -1,
@@ -1363,14 +1356,14 @@ static const yytype_int16 yycheck[] =
      168,   169,   170,   171,   172,   173,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   186,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,    -1,   197,
-      24,   199,    -1,   201,    28,    -1,    -1,   205,   206,   207,
-      -1,   209,    -1,    -1,    38,    39,    40,    41,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,
-       0,     1,    -1,    -1,    -1,    59,    60,    61,    -1,    -1,
+      -1,   199,    -1,   201,    -1,    -1,    -1,   205,   206,   207,
+      -1,   209,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
      238,   239,    -1,    -1,    14,   243,   244,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    83,
+      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
       30,    -1,    -1,    -1,    -1,    -1,    36,    37,    -1,    -1,
-      -1,    -1,    96,    97,    98,    99,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   287,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
       -1,    -1,   300,    -1,    -1,    75,    76,    77,    78,    79,
@@ -1384,7 +1377,7 @@ static const yytype_int16 yycheck[] =
       30,    -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,
       40,    41,    42,    -1,    44,    -1,    46,    47,    48,    -1,
       50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    -1,    69,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
       80,    81,    82,    83,    -1,    85,    86,    87,    88,    89,
       90,    91,    92,    93,    94,    -1,    96,    97,    98,    99,
@@ -1395,7 +1388,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    35,    36,    37,    38,    39,    40,    41,    42,
       -1,    44,    -1,    46,    47,    48,    -1,    50,    51,    52,
       53,    54,    55,    56,    -1,    -1,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    -1,    69,    70,    71,    72,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
       83,    -1,    85,    86,    87,    88,    89,    90,    91,    92,
       93,    94,    -1,    96,    97,    98,    99,   100,   101,   102,
@@ -1406,7 +1399,7 @@ static const yytype_int16 yycheck[] =
       36,    37,    38,    39,    40,    41,    42,    -1,    44,    -1,
       46,    47,    48,    -1,    50,    51,    52,    53,    54,    55,
       56,    -1,    -1,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    -1,    69,    70,    71,    72,    73,    74,    75,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
       76,    77,    78,    79,    80,    81,    82,    83,    -1,    85,
       86,    87,    88,    89,    90,    91,    92,    93,    94,    -1,
       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
@@ -1416,7 +1409,7 @@ static const yytype_int16 yycheck[] =
       -1,    30,    -1,    -1,    -1,    -1,    35,    36,    37,    38,
       39,    40,    41,    42,    -1,    44,    -1,    46,    47,    48,
       -1,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    -1,
+      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
       69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
       79,    80,    81,    82,    83,    -1,    85,    86,    87,    88,
       89,    90,    91,    92,    93,    94,    -1,    96,    97,    98,
@@ -1454,79 +1447,72 @@ static const yytype_int16 yycheck[] =
       21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    30,
       -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
       -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
+      -1,    -1,    -1,    -1,    -1,    35,    -1,    -1,    91,    92,
       -1,    -1,    -1,    96,    97,    98,    99,    68,   101,    -1,
       -1,   104,    -1,    -1,    75,    76,    77,    78,    79,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
-      91,    92,    -1,    -1,    -1,    96,    97,    98,    99,    -1,
-     101,    14,    -1,   104,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    -1,    -1,    -1,    30,    -1,    -1,
-      -1,    -1,    24,    -1,    -1,    -1,    28,    29,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    38,    39,    40,    41,
-      42,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,
-      52,    -1,    -1,    55,    -1,    -1,    58,    59,    60,    61,
-      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,
-      82,    83,    84,    96,    97,    98,    99,    -1,   101,    24,
-      -1,   104,    -1,    28,    96,    97,    98,    99,    -1,    -1,
-      -1,    35,    -1,    38,    39,    40,    41,    42,    -1,    -1,
-      -1,    -1,    47,    -1,    -1,    50,    51,    52,    -1,    -1,
-      55,    -1,    -1,    -1,    59,    60,    61,    -1,    62,    63,
-      64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,    82,    83,    44,
-      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
-      94,    96,    97,    98,    99,    -1,    -1,    62,    63,    64,
-      65,    66,    67,    -1,    69,    70,    71,    72,    73,    74,
-      -1,    -1,    -1,    -1,    46,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
-      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,    91,
-      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
-      89,    90,    91,    92,    93,    94,    48,    -1,    -1,    -1,
-      -1,   100,    54,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,    91,
-      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
+      -1,    -1,    62,    63,    64,    65,    66,    67,    -1,    69,
+      91,    92,    72,    73,    74,    96,    97,    98,    99,    -1,
+     101,    24,    -1,   104,    -1,    28,    29,    -1,    88,    89,
+      90,    91,    92,    93,    94,    38,    39,    40,    41,    42,
+      -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,    52,
+      -1,    -1,    55,    -1,    -1,    58,    59,    60,    61,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,    28,    82,
+      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39,
+      40,    41,    42,    96,    97,    98,    99,    47,    -1,    48,
+      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,
+      60,    61,    -1,    62,    63,    64,    65,    66,    67,    -1,
       69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    88,
-      89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
-      -1,    54,    88,    89,    90,    91,    92,    93,    94,    62,
-      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
-      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
-      93,    94,    62,    63,    64,    65,    66,    67,    -1,    69,
-      -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    82,    83,    44,    -1,    -1,    -1,    -1,    88,
+      89,    90,    91,    92,    93,    94,    96,    97,    98,    99,
+      -1,    -1,    62,    63,    64,    65,    66,    67,    -1,    69,
+      70,    71,    72,    73,    74,    -1,    -1,    -1,    -1,    46,
       -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
       90,    91,    92,    93,    94,    62,    63,    64,    65,    66,
       67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
-      -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    90,    91,    92,    93,    94,    62,    63,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      54,    88,    89,    90,    91,    92,    93,    94,    62,    63,
       64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
-      94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    62,    63,    64,    65,    66,    67,
-      -1,    69,    -1,    -1,    72,    73,    74,    88,    89,    90,
-      91,    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    91,    92,    93,    94,    -1,    -1,    56,
-      -1,    -1,    -1,    -1,   102,    62,    63,    64,    65,    66,
+      94,    48,    -1,    -1,    -1,    -1,   100,    54,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
       67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    90,    91,    92,    93,    94,    62,    63,
+      -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
+      54,    88,    89,    90,    91,    92,    93,    94,    62,    63,
       64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    80,    81,    -1,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
+      -1,    -1,    -1,    54,    88,    89,    90,    91,    92,    93,
       94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
-      -1,    72,    73,    74,    62,    63,    64,    65,    -1,    -1,
-      -1,    69,    -1,    -1,    72,    73,    74,    88,    89,    90,
-      91,    92,    93,    94,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    91,    92,    93,    94
+      -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
+      48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,
+      91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
+      -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
+      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
+      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
+      -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
+      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
+      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
+      69,    -1,    -1,    72,    73,    74,    62,    63,    64,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    88,
+      89,    90,    91,    92,    93,    94,    -1,    -1,    -1,    -1,
+      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    -1,
+      -1,    56,    -1,    -1,    -1,    -1,   102,    62,    63,    64,
+      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
+      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
+      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    80,    81,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
+      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
+      69,    -1,    -1,    72,    73,    74,    62,    63,    64,    65,
+      -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,    88,
+      89,    90,    91,    92,    93,    94,    -1,    -1,    -1,    -1,
+      -1,    -1,    88,    89,    90,    91,    92,    93,    94
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1544,7 +1530,7 @@ static const yytype_uint8 yystos[] =
       51,    20,   138,    56,    57,    17,    18,    19,    30,   110,
      110,   110,   138,   138,   150,   144,   138,   143,   157,     0,
      100,   101,   138,   161,   138,   132,   161,   132,   110,   146,
-     100,   137,    48,   137,   138,    46,   138,   138,   138,   138,
+     100,   137,    48,   137,   138,    46,   137,   138,   138,   138,
      138,   138,   137,   137,   135,   135,   135,   135,   138,    25,
       26,   106,   110,   138,   164,   165,   166,   167,   101,    62,
       63,    64,    65,    66,    67,    69,    72,    73,    74,    88,
@@ -1585,7 +1571,7 @@ static const yytype_uint8 yyr1[] =
      123,   124,   125,   125,   126,   126,   127,   128,   129,   130,
      131,   132,   133,   133,   134,   134,   135,   135,   135,   135,
      135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
-     135,   135,   136,   135,   135,   135,   135,   137,   137,   138,
+     135,   135,   135,   136,   135,   135,   135,   135,   137,   137,
      138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
      138,   138,   138,   138,   138,   138,   138,   138,   139,   139,
      139,   139,   139,   139,   139,   139,   139,   140,   140,   140,
@@ -1608,11 +1594,11 @@ static const yytype_int8 yyr2[] =
        1,     1,     1,     9,     0,     0,     0,    15,     0,     0,
        0,    16,     0,     0,     0,    13,     2,     4,     7,     6,
        0,     0,     9,    11,     0,     2,     6,     0,     0,     0,
-       1,     0,     1,     3,     0,     1,     1,     1,     2,     2,
-       1,     1,     1,     1,     2,     2,     3,     1,     4,     4,
-       1,     4,     0,     7,     4,     1,     2,     1,     3,     1,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     2,     3,     3,     3,     3,     2,     4,
+       1,     0,     1,     3,     0,     1,     1,     1,     1,     1,
+       2,     2,     2,     1,     1,     2,     2,     3,     1,     4,
+       4,     1,     4,     0,     7,     4,     1,     2,     1,     3,
+       1,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     2,     4,
        6,     4,     6,     4,     6,     4,     6,     1,     2,     2,
        2,     2,     1,     1,     2,     1,     0,     3,     0,     3,
        0,     3,     4,     2,     4,     0,     7,     4,     2,     1,
@@ -1895,61 +1881,61 @@ yydestruct (const char *yymsg,
     case 22: /* THEFUNC  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1899 "engines/director/lingo/lingo-gr.cpp"
+#line 1885 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* THEFUNCINOF  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1905 "engines/director/lingo/lingo-gr.cpp"
+#line 1891 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* VARID  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1911 "engines/director/lingo/lingo-gr.cpp"
+#line 1897 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* STRING  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1917 "engines/director/lingo/lingo-gr.cpp"
+#line 1903 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* SYMBOL  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1923 "engines/director/lingo/lingo-gr.cpp"
+#line 1909 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* ENDCLAUSE  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1929 "engines/director/lingo/lingo-gr.cpp"
+#line 1915 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* tPLAYACCEL  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1935 "engines/director/lingo/lingo-gr.cpp"
+#line 1921 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* tMETHOD  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1941 "engines/director/lingo/lingo-gr.cpp"
+#line 1927 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 110: /* ID  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1947 "engines/director/lingo/lingo-gr.cpp"
+#line 1933 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 156: /* on  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1953 "engines/director/lingo/lingo-gr.cpp"
+#line 1939 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2230,25 +2216,25 @@ yyreduce:
   case 8:
 #line 222 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("cast"); }
-#line 2234 "engines/director/lingo/lingo-gr.cpp"
+#line 2220 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
 #line 223 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("field"); }
-#line 2240 "engines/director/lingo/lingo-gr.cpp"
+#line 2226 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 224 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("script"); }
-#line 2246 "engines/director/lingo/lingo-gr.cpp"
+#line 2232 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 225 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("window"); }
-#line 2252 "engines/director/lingo/lingo-gr.cpp"
+#line 2238 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2260,7 +2246,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2264 "engines/director/lingo/lingo-gr.cpp"
+#line 2250 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2268,7 +2254,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2272 "engines/director/lingo/lingo-gr.cpp"
+#line 2258 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2284,7 +2270,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2288 "engines/director/lingo/lingo-gr.cpp"
+#line 2274 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2296,7 +2282,7 @@ yyreduce:
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2300 "engines/director/lingo/lingo-gr.cpp"
+#line 2286 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2304,7 +2290,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2308 "engines/director/lingo/lingo-gr.cpp"
+#line 2294 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2316,7 +2302,7 @@ yyreduce:
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2320 "engines/director/lingo/lingo-gr.cpp"
+#line 2306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2324,7 +2310,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2328 "engines/director/lingo/lingo-gr.cpp"
+#line 2314 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2336,7 +2322,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2340 "engines/director/lingo/lingo-gr.cpp"
+#line 2326 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20:
@@ -2348,7 +2334,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2352 "engines/director/lingo/lingo-gr.cpp"
+#line 2338 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 21:
@@ -2360,7 +2346,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2364 "engines/director/lingo/lingo-gr.cpp"
+#line 2350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 22:
@@ -2372,7 +2358,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2376 "engines/director/lingo/lingo-gr.cpp"
+#line 2362 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 23:
@@ -2383,7 +2369,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2387 "engines/director/lingo/lingo-gr.cpp"
+#line 2373 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 24:
@@ -2394,7 +2380,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2398 "engines/director/lingo/lingo-gr.cpp"
+#line 2384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 25:
@@ -2410,7 +2396,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2414 "engines/director/lingo/lingo-gr.cpp"
+#line 2400 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 26:
@@ -2426,7 +2412,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2430 "engines/director/lingo/lingo-gr.cpp"
+#line 2416 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 27:
@@ -2438,7 +2424,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2442 "engines/director/lingo/lingo-gr.cpp"
+#line 2428 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28:
@@ -2450,7 +2436,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2454 "engines/director/lingo/lingo-gr.cpp"
+#line 2440 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2462,7 +2448,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2466 "engines/director/lingo/lingo-gr.cpp"
+#line 2452 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
@@ -2470,20 +2456,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2474 "engines/director/lingo/lingo-gr.cpp"
+#line 2460 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
 #line 373 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2481 "engines/director/lingo/lingo-gr.cpp"
+#line 2467 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
 #line 376 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2487 "engines/director/lingo/lingo-gr.cpp"
+#line 2473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2508,7 +2494,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2512 "engines/director/lingo/lingo-gr.cpp"
+#line 2498 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
@@ -2516,20 +2502,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2520 "engines/director/lingo/lingo-gr.cpp"
+#line 2506 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
 #line 407 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2527 "engines/director/lingo/lingo-gr.cpp"
+#line 2513 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
 #line 410 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2533 "engines/director/lingo/lingo-gr.cpp"
+#line 2519 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
@@ -2554,7 +2540,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2558 "engines/director/lingo/lingo-gr.cpp"
+#line 2544 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
@@ -2565,7 +2551,7 @@ yyreduce:
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2569 "engines/director/lingo/lingo-gr.cpp"
+#line 2555 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
@@ -2575,7 +2561,7 @@ yyreduce:
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2579 "engines/director/lingo/lingo-gr.cpp"
+#line 2565 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
@@ -2590,7 +2576,7 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2594 "engines/director/lingo/lingo-gr.cpp"
+#line 2580 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2614,7 +2600,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2618 "engines/director/lingo/lingo-gr.cpp"
+#line 2604 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
@@ -2627,7 +2613,7 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2631 "engines/director/lingo/lingo-gr.cpp"
+#line 2617 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
@@ -2635,31 +2621,31 @@ yyreduce:
                               {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2639 "engines/director/lingo/lingo-gr.cpp"
+#line 2625 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
 #line 491 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2645 "engines/director/lingo/lingo-gr.cpp"
+#line 2631 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
 #line 492 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2651 "engines/director/lingo/lingo-gr.cpp"
+#line 2637 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
 #line 494 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2657 "engines/director/lingo/lingo-gr.cpp"
+#line 2643 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
 #line 496 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2663 "engines/director/lingo/lingo-gr.cpp"
+#line 2649 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
@@ -2671,7 +2657,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2675 "engines/director/lingo/lingo-gr.cpp"
+#line 2661 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
@@ -2683,7 +2669,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2687 "engines/director/lingo/lingo-gr.cpp"
+#line 2673 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
@@ -2693,7 +2679,7 @@ yyreduce:
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2697 "engines/director/lingo/lingo-gr.cpp"
+#line 2683 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
@@ -2701,7 +2687,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2705 "engines/director/lingo/lingo-gr.cpp"
+#line 2691 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
@@ -2709,7 +2695,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2713 "engines/director/lingo/lingo-gr.cpp"
+#line 2699 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
@@ -2717,20 +2703,20 @@ yyreduce:
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2721 "engines/director/lingo/lingo-gr.cpp"
+#line 2707 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
 #line 534 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2728 "engines/director/lingo/lingo-gr.cpp"
+#line 2714 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
 #line 537 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2734 "engines/director/lingo/lingo-gr.cpp"
+#line 2720 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
@@ -2738,7 +2724,7 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2742 "engines/director/lingo/lingo-gr.cpp"
+#line 2728 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67:
@@ -2746,41 +2732,47 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2750 "engines/director/lingo/lingo-gr.cpp"
+#line 2736 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68:
 #line 551 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.code) = (yyvsp[0].code); }
-#line 2756 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 69:
-#line 552 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2762 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 70:
-#line 553 "engines/director/lingo/lingo-gr.y"
                         {											// D3
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2771 "engines/director/lingo/lingo-gr.cpp"
+#line 2745 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 557 "engines/director/lingo/lingo-gr.y"
+  case 69:
+#line 555 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2780 "engines/director/lingo/lingo-gr.cpp"
+#line 2754 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 70:
+#line 559 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.code) = (yyvsp[0].code); }
+#line 2760 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 71:
+#line 560 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
+#line 2766 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 73:
-#line 562 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 561 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_not); }
+#line 2772 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 74:
+#line 563 "engines/director/lingo/lingo-gr.y"
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(0); // Put dummy id
@@ -2789,95 +2781,95 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2793 "engines/director/lingo/lingo-gr.cpp"
+#line 2785 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 74:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 75:
+#line 571 "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 2804 "engines/director/lingo/lingo-gr.cpp"
+#line 2796 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 75:
-#line 576 "engines/director/lingo/lingo-gr.y"
+  case 76:
+#line 577 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2812 "engines/director/lingo/lingo-gr.cpp"
+#line 2804 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
-#line 579 "engines/director/lingo/lingo-gr.y"
+  case 77:
+#line 580 "engines/director/lingo/lingo-gr.y"
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2820 "engines/director/lingo/lingo-gr.cpp"
+#line 2812 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
-#line 582 "engines/director/lingo/lingo-gr.y"
+  case 78:
+#line 583 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_objectproppush);
 		g_lingo->codeString((yyvsp[0].objectprop).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2831 "engines/director/lingo/lingo-gr.cpp"
+#line 2823 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
-#line 588 "engines/director/lingo/lingo-gr.y"
+  case 79:
+#line 589 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2837 "engines/director/lingo/lingo-gr.cpp"
+#line 2829 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
-#line 589 "engines/director/lingo/lingo-gr.y"
+  case 80:
+#line 590 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 2843 "engines/director/lingo/lingo-gr.cpp"
+#line 2835 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
-#line 591 "engines/director/lingo/lingo-gr.y"
+  case 82:
+#line 592 "engines/director/lingo/lingo-gr.y"
                                       {
 			g_lingo->code1(LC::c_lazyeval);
 			g_lingo->codeString((yyvsp[-1].s)->c_str());
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2854 "engines/director/lingo/lingo-gr.cpp"
+#line 2846 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
-#line 597 "engines/director/lingo/lingo-gr.y"
+  case 83:
+#line 598 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2860 "engines/director/lingo/lingo-gr.cpp"
+#line 2852 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
-#line 598 "engines/director/lingo/lingo-gr.y"
+  case 84:
+#line 599 "engines/director/lingo/lingo-gr.y"
                                                     {
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2869 "engines/director/lingo/lingo-gr.cpp"
+#line 2861 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
-#line 602 "engines/director/lingo/lingo-gr.y"
+  case 85:
+#line 603 "engines/director/lingo/lingo-gr.y"
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2877 "engines/director/lingo/lingo-gr.cpp"
+#line 2869 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
-#line 605 "engines/director/lingo/lingo-gr.y"
+  case 86:
+#line 606 "engines/director/lingo/lingo-gr.y"
                         {
 		if (g_lingo->_builtinConsts.contains(*(yyvsp[0].s))) {
 			(yyval.code) = g_lingo->code1(LC::c_constpush);
@@ -2886,133 +2878,127 @@ yyreduce:
 		}
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2890 "engines/director/lingo/lingo-gr.cpp"
+#line 2882 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
-#line 613 "engines/director/lingo/lingo-gr.y"
+  case 87:
+#line 614 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2896 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 88:
-#line 616 "engines/director/lingo/lingo-gr.y"
-                                                { (yyval.code) = (yyvsp[-1].code); }
-#line 2902 "engines/director/lingo/lingo-gr.cpp"
+#line 2888 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
-#line 618 "engines/director/lingo/lingo-gr.y"
-                 { (yyval.code) = (yyvsp[0].code); }
-#line 2908 "engines/director/lingo/lingo-gr.cpp"
+#line 617 "engines/director/lingo/lingo-gr.y"
+                                                { (yyval.code) = (yyvsp[-1].code); }
+#line 2894 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
 #line 619 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_add); }
-#line 2914 "engines/director/lingo/lingo-gr.cpp"
+                 { (yyval.code) = (yyvsp[0].code); }
+#line 2900 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
 #line 620 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_sub); }
-#line 2920 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_add); }
+#line 2906 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
 #line 621 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_mul); }
-#line 2926 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_sub); }
+#line 2912 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
 #line 622 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_div); }
-#line 2932 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_mul); }
+#line 2918 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
 #line 623 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_mod); }
-#line 2938 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_div); }
+#line 2924 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
 #line 624 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_gt); }
-#line 2944 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_mod); }
+#line 2930 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
 #line 625 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_lt); }
-#line 2950 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_gt); }
+#line 2936 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
 #line 626 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_eq); }
-#line 2956 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_lt); }
+#line 2942 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
 #line 627 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_neq); }
-#line 2962 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_eq); }
+#line 2948 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
 #line 628 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_ge); }
-#line 2968 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_neq); }
+#line 2954 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
 #line 629 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_le); }
-#line 2974 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_ge); }
+#line 2960 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
 #line 630 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_and); }
-#line 2980 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_le); }
+#line 2966 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
 #line 631 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_or); }
-#line 2986 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_and); }
+#line 2972 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
 #line 632 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_not); }
-#line 2992 "engines/director/lingo/lingo-gr.cpp"
+                                                { g_lingo->code1(LC::c_or); }
+#line 2978 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104:
 #line 633 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2998 "engines/director/lingo/lingo-gr.cpp"
+#line 2984 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
 #line 634 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 3004 "engines/director/lingo/lingo-gr.cpp"
+#line 2990 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
 #line 635 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 3010 "engines/director/lingo/lingo-gr.cpp"
+#line 2996 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
 #line 636 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 3016 "engines/director/lingo/lingo-gr.cpp"
+#line 3002 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
@@ -3020,55 +3006,55 @@ yyreduce:
                                         {
 		Common::String field("field");
 		g_lingo->codeFunc(&field, 1); }
-#line 3024 "engines/director/lingo/lingo-gr.cpp"
+#line 3010 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
 #line 641 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_charOf); }
-#line 3030 "engines/director/lingo/lingo-gr.cpp"
+#line 3016 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
 #line 642 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 3036 "engines/director/lingo/lingo-gr.cpp"
+#line 3022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111:
 #line 643 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3042 "engines/director/lingo/lingo-gr.cpp"
+#line 3028 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
 #line 644 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 3048 "engines/director/lingo/lingo-gr.cpp"
+#line 3034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
 #line 645 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3054 "engines/director/lingo/lingo-gr.cpp"
+#line 3040 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114:
 #line 646 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 3060 "engines/director/lingo/lingo-gr.cpp"
+#line 3046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
 #line 647 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3066 "engines/director/lingo/lingo-gr.cpp"
+#line 3052 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
 #line 648 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 3072 "engines/director/lingo/lingo-gr.cpp"
+#line 3058 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
@@ -3076,7 +3062,7 @@ yyreduce:
                                                 {
 		Common::String cast("cast");
 		g_lingo->codeFunc(&cast, 1); }
-#line 3080 "engines/director/lingo/lingo-gr.cpp"
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
@@ -3084,7 +3070,7 @@ yyreduce:
                                         {
 		Common::String script("script");
 		g_lingo->codeFunc(&script, 1); }
-#line 3088 "engines/director/lingo/lingo-gr.cpp"
+#line 3074 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
@@ -3092,13 +3078,13 @@ yyreduce:
                                         {
 		Common::String window("window");
 		g_lingo->codeFunc(&window, 1); }
-#line 3096 "engines/director/lingo/lingo-gr.cpp"
+#line 3082 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
 #line 661 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3102 "engines/director/lingo/lingo-gr.cpp"
+#line 3088 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
@@ -3111,49 +3097,49 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 3115 "engines/director/lingo/lingo-gr.cpp"
+#line 3101 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
 #line 672 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3121 "engines/director/lingo/lingo-gr.cpp"
+#line 3107 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
 #line 673 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3127 "engines/director/lingo/lingo-gr.cpp"
+#line 3113 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
 #line 673 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 3133 "engines/director/lingo/lingo-gr.cpp"
+#line 3119 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128:
 #line 674 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3139 "engines/director/lingo/lingo-gr.cpp"
+#line 3125 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129:
 #line 674 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3145 "engines/director/lingo/lingo-gr.cpp"
+#line 3131 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
 #line 675 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3151 "engines/director/lingo/lingo-gr.cpp"
+#line 3137 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
 #line 675 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3157 "engines/director/lingo/lingo-gr.cpp"
+#line 3143 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
@@ -3161,7 +3147,7 @@ yyreduce:
                                         {
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 2); }
-#line 3165 "engines/director/lingo/lingo-gr.cpp"
+#line 3151 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133:
@@ -3169,7 +3155,7 @@ yyreduce:
                                                 {
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 1); }
-#line 3173 "engines/director/lingo/lingo-gr.cpp"
+#line 3159 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
@@ -3180,13 +3166,13 @@ yyreduce:
 			g_lingo->codeCmd((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 3184 "engines/director/lingo/lingo-gr.cpp"
+#line 3170 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
 #line 688 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 3190 "engines/director/lingo/lingo-gr.cpp"
+#line 3176 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
@@ -3195,7 +3181,7 @@ yyreduce:
 			g_lingo->codeCmd((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 3199 "engines/director/lingo/lingo-gr.cpp"
+#line 3185 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
@@ -3203,7 +3189,7 @@ yyreduce:
                                         {
 		g_lingo->codeCmd((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3207 "engines/director/lingo/lingo-gr.cpp"
+#line 3193 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
@@ -3211,7 +3197,7 @@ yyreduce:
                                                 {
 		g_lingo->codeCmd((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3215 "engines/director/lingo/lingo-gr.cpp"
+#line 3201 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
@@ -3219,7 +3205,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3223 "engines/director/lingo/lingo-gr.cpp"
+#line 3209 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140:
@@ -3227,7 +3213,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3231 "engines/director/lingo/lingo-gr.cpp"
+#line 3217 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
@@ -3235,7 +3221,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3239 "engines/director/lingo/lingo-gr.cpp"
+#line 3225 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
@@ -3243,7 +3229,7 @@ yyreduce:
                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3247 "engines/director/lingo/lingo-gr.cpp"
+#line 3233 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
@@ -3251,7 +3237,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3255 "engines/director/lingo/lingo-gr.cpp"
+#line 3241 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
@@ -3259,25 +3245,25 @@ yyreduce:
                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3263 "engines/director/lingo/lingo-gr.cpp"
+#line 3249 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
 #line 728 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3269 "engines/director/lingo/lingo-gr.cpp"
+#line 3255 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
 #line 729 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3275 "engines/director/lingo/lingo-gr.cpp"
+#line 3261 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
 #line 730 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3281 "engines/director/lingo/lingo-gr.cpp"
+#line 3267 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
@@ -3286,7 +3272,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3290 "engines/director/lingo/lingo-gr.cpp"
+#line 3276 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
@@ -3295,7 +3281,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3299 "engines/director/lingo/lingo-gr.cpp"
+#line 3285 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
@@ -3304,7 +3290,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3308 "engines/director/lingo/lingo-gr.cpp"
+#line 3294 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
@@ -3313,7 +3299,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3317 "engines/director/lingo/lingo-gr.cpp"
+#line 3303 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
@@ -3322,7 +3308,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3326 "engines/director/lingo/lingo-gr.cpp"
+#line 3312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
@@ -3331,13 +3317,13 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3335 "engines/director/lingo/lingo-gr.cpp"
+#line 3321 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
 #line 759 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3341 "engines/director/lingo/lingo-gr.cpp"
+#line 3327 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
@@ -3346,13 +3332,13 @@ yyreduce:
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3350 "engines/director/lingo/lingo-gr.cpp"
+#line 3336 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
 #line 789 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3356 "engines/director/lingo/lingo-gr.cpp"
+#line 3342 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
@@ -3362,19 +3348,19 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3366 "engines/director/lingo/lingo-gr.cpp"
+#line 3352 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
 #line 795 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3372 "engines/director/lingo/lingo-gr.cpp"
+#line 3358 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
 #line 796 "engines/director/lingo/lingo-gr.y"
                   { startDef(); (*g_lingo->_methodVars)["me"] = kVarArgument; }
-#line 3378 "engines/director/lingo/lingo-gr.cpp"
+#line 3364 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
@@ -3384,7 +3370,7 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3388 "engines/director/lingo/lingo-gr.cpp"
+#line 3374 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
@@ -3397,7 +3383,7 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3401 "engines/director/lingo/lingo-gr.cpp"
+#line 3387 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
@@ -3407,139 +3393,139 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3411 "engines/director/lingo/lingo-gr.cpp"
+#line 3397 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
 #line 816 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3417 "engines/director/lingo/lingo-gr.cpp"
+#line 3403 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
 #line 816 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = (yyvsp[0].s); }
-#line 3423 "engines/director/lingo/lingo-gr.cpp"
+#line 3409 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
 #line 818 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3429 "engines/director/lingo/lingo-gr.cpp"
+#line 3415 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
 #line 819 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3435 "engines/director/lingo/lingo-gr.cpp"
+#line 3421 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
 #line 820 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3441 "engines/director/lingo/lingo-gr.cpp"
+#line 3427 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
 #line 823 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3447 "engines/director/lingo/lingo-gr.cpp"
+#line 3433 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172:
 #line 824 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3453 "engines/director/lingo/lingo-gr.cpp"
+#line 3439 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 173:
 #line 826 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3459 "engines/director/lingo/lingo-gr.cpp"
+#line 3445 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 174:
 #line 828 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3465 "engines/director/lingo/lingo-gr.cpp"
+#line 3451 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 175:
 #line 829 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3471 "engines/director/lingo/lingo-gr.cpp"
+#line 3457 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 176:
 #line 830 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3477 "engines/director/lingo/lingo-gr.cpp"
+#line 3463 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 177:
 #line 832 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3483 "engines/director/lingo/lingo-gr.cpp"
+#line 3469 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 178:
 #line 833 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3489 "engines/director/lingo/lingo-gr.cpp"
+#line 3475 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 179:
 #line 835 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3495 "engines/director/lingo/lingo-gr.cpp"
+#line 3481 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 180:
 #line 837 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3501 "engines/director/lingo/lingo-gr.cpp"
+#line 3487 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 181:
 #line 838 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3507 "engines/director/lingo/lingo-gr.cpp"
+#line 3493 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 182:
 #line 839 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3513 "engines/director/lingo/lingo-gr.cpp"
+#line 3499 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 183:
 #line 840 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3519 "engines/director/lingo/lingo-gr.cpp"
+#line 3505 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 184:
 #line 842 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3525 "engines/director/lingo/lingo-gr.cpp"
+#line 3511 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 185:
 #line 843 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3531 "engines/director/lingo/lingo-gr.cpp"
+#line 3517 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 186:
 #line 845 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3537 "engines/director/lingo/lingo-gr.cpp"
+#line 3523 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 187:
 #line 846 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3543 "engines/director/lingo/lingo-gr.cpp"
+#line 3529 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 188:
@@ -3548,7 +3534,7 @@ yyreduce:
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3552 "engines/director/lingo/lingo-gr.cpp"
+#line 3538 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 189:
@@ -3557,7 +3543,7 @@ yyreduce:
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3561 "engines/director/lingo/lingo-gr.cpp"
+#line 3547 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 190:
@@ -3566,11 +3552,11 @@ yyreduce:
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3570 "engines/director/lingo/lingo-gr.cpp"
+#line 3556 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3574 "engines/director/lingo/lingo-gr.cpp"
+#line 3560 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 26a45e9259..68fee16634 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -548,8 +548,6 @@ simpleexprnoparens: INT		{
 	| FLOAT		{
 		$$ = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat($FLOAT); }
-	| '+' simpleexpr[arg]  %prec UNARY	{ $$ = $arg; }
-	| '-' simpleexpr[arg]  %prec UNARY	{ $$ = $arg; g_lingo->code1(LC::c_negate); }
 	| SYMBOL	{											// D3
 		$$ = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString($SYMBOL->c_str());
@@ -558,6 +556,9 @@ simpleexprnoparens: INT		{
 		$$ = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString($STRING->c_str());
 		delete $STRING; }
+	| '+' simpleexpr[arg]  %prec UNARY	{ $$ = $arg; }
+	| '-' simpleexpr[arg]  %prec UNARY	{ $$ = $arg; g_lingo->code1(LC::c_negate); }
+	| tNOT simpleexpr  %prec UNARY		{ g_lingo->code1(LC::c_not); }
 	| reference
 	| THEENTITY	{
 		$$ = g_lingo->code1(LC::c_intpush);
@@ -629,7 +630,6 @@ expr: simpleexpr { $$ = $simpleexpr; }
 	| expr tLE expr				{ g_lingo->code1(LC::c_le); }
 	| expr tAND expr			{ g_lingo->code1(LC::c_and); }
 	| expr tOR expr				{ g_lingo->code1(LC::c_or); }
-	| tNOT expr  %prec UNARY	{ g_lingo->code1(LC::c_not); }
 	| expr '&' expr				{ g_lingo->code1(LC::c_ampersand); }
 	| expr tCONCAT expr			{ g_lingo->code1(LC::c_concat); }
 	| expr tCONTAINS expr		{ g_lingo->code1(LC::c_contains); }


Commit: 7c11fbb89ebc0709d79be09fc4dd9e727a20cd94
    https://github.com/scummvm/scummvm/commit/7c11fbb89ebc0709d79be09fc4dd9e727a20cd94
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-19T13:33:35-04:00

Commit Message:
DIRECTOR: LINGO: Get rid of right recursion

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 6e953c471f..2d97c0a3a8 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -989,41 +989,41 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    1387,  -356,  -356,  -356,   -35,  -356,  1062,  -356,  -356,  -356,
-     -31,  1277,   -30,    13,    17,    17,  1309,  1150,  -356,  1309,
-    -356,  -356,  -356,  -356,  -356,  -356,    75,    -4,   480,  -356,
+    1387,  -356,  -356,  -356,   -29,  -356,  1062,  -356,  -356,  -356,
+       6,  1277,    16,    13,    17,    17,  1309,  1150,  -356,  1309,
+    -356,  -356,  -356,  -356,  -356,  -356,     3,  -356,   480,  -356,
     -356,  -356,  -356,  1309,  -356,  -356,  -356,  -356,  -356,  1028,
-    -356,  -356,    17,    -1,  -356,  -356,  1309,  -356,    41,  1309,
-    -356,  -356,  -356,  1309,  -356,    62,  -356,  1309,  1309,  1309,
+    -356,  -356,    17,   -74,  -356,  -356,  1309,  -356,    14,  1309,
+    -356,  -356,  -356,  1309,  -356,    31,  -356,  1309,  1309,  1309,
     1309,  1309,  1309,  1309,  1309,   600,   707,   814,   921,  1309,
-     127,    19,  -356,  -356,  1513,  -356,  -356,  -356,  -356,    17,
-    -356,    17,  1480,    17,  -356,   -42,  1309,  1309,    -3,     2,
-      68,  -356,  1845,  1513,  -356,    17,  1546,    17,    17,  -356,
-    1387,  1185,  1911,    26,  1911,    17,    26,    17,  -356,    28,
+     127,   -12,  -356,  -356,  1513,  -356,  -356,  -356,  -356,    17,
+    -356,    17,  1480,    17,  -356,   -37,  1309,  1309,   -30,    -3,
+      43,  -356,  1845,  1513,  -356,    17,  1546,    17,    17,  -356,
+    1387,  1185,  1911,    -4,  1911,    17,    -4,    17,  -356,    26,
     -356,  -356,  1309,  -356,  1911,  1309,  -356,  1593,  1626,  1659,
-    1692,  1878,  -356,  -356,  -356,  -356,  -356,  -356,  1804,    27,
-      29,  -356,   -82,  1911,    18,    34,    36,  -356,  1185,  1309,
+    1692,  1878,  -356,  -356,  -356,  -356,  -356,  -356,  1804,    25,
+      27,  -356,   -46,  1911,    30,    34,    36,  -356,  1185,  1309,
     1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,
     1309,  1309,  1309,  1309,  1309,  1309,  -356,  -356,  1309,   101,
-     101,   101,   -26,  1309,  1309,  1309,     8,    94,  1309,  1309,
-    1309,  1309,  1309,  1309,  -356,  -356,    40,  -356,  -356,  -356,
-      43,  -356,  -356,    53,  1804,   -63,  1309,   105,  -356,   -43,
+     101,   101,   -31,  1309,  1309,  1309,    10,    75,  1309,  1309,
+    1309,  1309,  1309,  1309,  -356,  -356,    55,  -356,  -356,  -356,
+      64,  -356,  -356,   -63,  1804,    -9,  1309,   116,  -356,   -84,
      -32,    17,  -356,  1911,  1309,  1309,  1309,  1309,  1309,  1309,
     1309,  1309,  1309,  1309,  -356,  1309,  1309,  1309,  -356,  1309,
-      66,    79,   -58,   121,   121,   121,   121,  1924,  1924,  -356,
-     -44,   121,   121,   121,   121,   -44,   -60,   -60,  -356,  -356,
-      17,   103,  -356,  -356,  -356,  -356,  -356,  -356,  1309,  1309,
+      66,    53,    15,   121,   121,   121,   121,  1924,  1924,  -356,
+     -44,   121,   121,   121,   121,   -44,   -49,   -49,  -356,  -356,
+      17,   129,  -356,  -356,  -356,  -356,  -356,  -356,  1309,  1309,
     1911,  1911,  1911,  1309,  1309,    17,  1911,  1911,  1911,  1911,
     1911,  1911,    17,   248,  1440,    17,  -356,  -356,  -356,  1911,
     1440,  -356,    17,  -356,  -356,  -356,  1441,  -356,  1725,  -356,
-    1758,  -356,  1791,  -356,  -356,  1911,  1911,  1911,  1911,    27,
-      29,    61,  -356,  -356,  -356,  -356,   -27,  1309,  1911,  1330,
-    -356,  1911,  1911,  1309,  -356,  -356,  -356,  -356,    69,  -356,
+    1758,  -356,  1791,  -356,  -356,  1911,  1911,  1911,  1911,    25,
+      27,    65,  -356,  -356,  -356,  -356,   -25,  1309,  1911,  1330,
+    -356,  1911,  1911,  1309,  -356,  -356,  -356,  -356,    83,  -356,
     1309,  -356,  1440,  -356,  1440,  1309,  1309,  1309,  1309,  1309,
-    -356,  1911,  -356,  -356,  -356,  1440,    10,  -356,    84,  1440,
-    1911,   -25,  -356,   146,  -356,  -356,  -356,  -356,  -356,    -9,
+    -356,  1911,  -356,  -356,  -356,  1440,    12,  -356,    97,  1440,
+    1911,    18,  -356,   158,  -356,  -356,  -356,  -356,  -356,    40,
     1440,  -356,  -356,  -356,  -356,  1309,  1309,  -356,  -356,  -356,
-    1309,    81,    17,  -356,  -356,  -356,   132,   152,   102,  1911,
+    1309,   110,    17,  -356,  -356,  -356,   132,   152,   102,  1911,
     1911,  1911,  1440,  1309,  -356,   104,  -356,    89,  -356,  1309,
      140,  -356,  -356,  1911,  -356,    17,  -356,  1911,  1309,   111,
      148,  -356,  1440,  -356,  1911,  -356,  1440,   122,  -356,  -356,
@@ -1079,13 +1079,13 @@ static const yytype_uint8 yydefact[] =
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -356,   107,  -356,     0,  -356,   -36,     3,  -356,  -356,  -356,
+    -356,  -356,   107,     0,  -356,   -36,     8,  -356,  -356,  -356,
     -356,  -356,  -356,  -356,  -356,  -356,  -355,    42,  -356,  -356,
     -356,  -239,  -327,   -93,  -356,   -38,  -250,  -356,    20,  -356,
-     -28,   252,    24,  -356,  -356,  -356,  -356,  -356,  -356,  -356,
+     -28,   252,    21,  -356,  -356,  -356,  -356,  -356,  -356,  -356,
     -356,  -356,  -356,   -11,  -356,  -356,  -356,  -356,  -356,  -356,
-    -356,  -103,  -356,  -255,   -34,   -87,  -356,  -356,  -356,  -356,
-      25
+    -356,  -103,  -356,  -254,   -34,   -87,  -356,  -356,  -356,  -356,
+      19
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -1105,30 +1105,30 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      28,   290,   107,    31,   190,   106,    94,   348,   304,   145,
-     301,   372,   164,    89,    90,    91,    41,   238,   111,   138,
-      80,   113,   165,   382,   207,   145,    83,    84,   386,   116,
-      85,    86,    87,   154,   155,   122,   123,     1,   239,   258,
-     186,     1,   108,    88,   285,   186,   163,   152,   153,   154,
-     155,   168,   323,   384,   324,   330,   170,   261,   166,   167,
-     262,   169,   243,   156,   335,   334,   171,   185,   263,   338,
-     132,   262,   244,   310,   336,    99,   262,   339,   340,   157,
-     344,   158,   174,   162,   192,   124,   125,   126,   127,   112,
-       1,   279,   280,   343,   340,   175,   100,   179,   181,   110,
-      28,   183,   362,    31,   212,   188,   358,   188,   115,    22,
-      23,    24,    25,    22,    23,    24,    25,   352,   353,   230,
-     138,   172,   377,   208,   370,     1,   380,   286,    43,   186,
-     231,   191,   385,   205,   378,   206,   388,   209,   211,   210,
-     383,    44,   245,   252,    45,    46,   255,   287,    47,    48,
-      49,     1,   129,   130,   138,   256,   257,    52,   260,   232,
-     234,   236,    22,    23,    24,    25,   265,   207,   267,   319,
-     269,   337,   271,   342,   273,   274,    58,    59,    60,    61,
-     138,   283,   284,   233,   235,   237,   359,   360,   361,   364,
+      28,   290,   107,    99,   190,   106,    94,   348,    31,   304,
+     301,   372,   238,    89,    90,    91,   261,   164,   111,   262,
+     145,   113,    41,   382,   168,   145,   110,   165,   386,   116,
+      85,    86,    87,   239,   169,   122,   123,     1,   138,   256,
+     257,     1,   108,    88,   154,   155,   163,   152,   153,   154,
+     155,   170,   323,   384,   324,   138,   330,    80,   166,   167,
+     207,   171,   112,   156,   243,   334,   335,   185,   263,   338,
+     132,   262,    83,    84,   244,   310,   336,   115,   262,   157,
+     344,   158,   174,   162,   192,   124,   125,   126,   127,   138,
+       1,   279,   280,   258,   186,   175,   172,   179,   181,   186,
+      28,   183,   362,   100,   212,   188,   358,   188,    31,    22,
+      23,    24,    25,    22,    23,    24,    25,   285,   186,   230,
+     339,   340,   377,   245,   370,     1,   380,   286,    43,   191,
+     231,   205,   385,   206,   378,   208,   388,   209,   211,   210,
+     383,    44,   343,   340,    45,    46,   352,   353,    47,    48,
+      49,     1,   129,   130,   138,   283,   284,    52,   252,   232,
+     234,   236,    22,    23,    24,    25,   265,   255,   267,   260,
+     269,   207,   271,   287,   273,   274,    58,    59,    60,    61,
+     233,   235,   237,   319,   337,   342,   359,   360,   361,   364,
      145,   264,   365,   146,   368,    57,   375,    22,    66,    24,
       25,   376,    58,    59,    60,    61,    62,   182,   381,   387,
      281,   151,   152,   153,   154,   155,   389,   295,    63,    64,
-     254,   333,   329,    65,    66,    67,    68,     0,    69,     0,
-     188,    70,  -180,   131,     0,   282,     0,     0,     0,     0,
+     254,   333,   329,    65,    66,    67,    68,     0,    69,   282,
+     188,    70,  -180,   131,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   293,     0,     0,     0,     0,
        0,     0,   294,    28,    28,   299,     0,   317,    74,   318,
       28,     0,   303,    82,     0,   316,     0,     0,    92,    93,
@@ -1311,30 +1311,30 @@ static const yytype_int16 yytable[] =
 
 static const yytype_int16 yycheck[] =
 {
-       0,   240,    40,     0,   107,    39,    17,   334,   263,    69,
-     260,   366,    54,    13,    14,    15,    51,    43,    46,   101,
-      51,    49,    64,   378,   106,    69,    56,    57,   383,    57,
-      17,    18,    19,    93,    94,    63,    64,    24,    64,   102,
-     103,    24,    42,    30,   102,   103,    84,    91,    92,    93,
-      94,    54,   302,   380,   304,   310,    54,   100,    86,    87,
-     103,    64,    54,    74,    54,   315,    64,   101,   100,   319,
-      70,   103,    64,   100,    64,     0,   103,   102,   103,    79,
-     330,    81,    93,    83,   112,    65,    66,    67,    68,    48,
-      24,    25,    26,   102,   103,    95,   100,    97,    98,   100,
-     100,   101,   352,   100,   138,   105,   345,   107,    46,    96,
-      97,    98,    99,    96,    97,    98,    99,    36,    37,   157,
-     101,    53,   372,   105,   363,    24,   376,   230,     1,   103,
-     158,   103,   382,   106,   373,   106,   386,   103,   138,   103,
-     379,    14,    48,   103,    17,    18,   103,    44,    21,    22,
-      23,    24,    25,    26,   101,   102,   103,    30,    53,   159,
-     160,   161,    96,    97,    98,    99,   194,   106,   196,   100,
-     198,    87,   200,    27,   202,   203,    75,    76,    77,    78,
-     101,   102,   103,   159,   160,   161,    54,    35,    86,    85,
+       0,   240,    40,     0,   107,    39,    17,   334,     0,   263,
+     260,   366,    43,    13,    14,    15,   100,    54,    46,   103,
+      69,    49,    51,   378,    54,    69,   100,    64,   383,    57,
+      17,    18,    19,    64,    64,    63,    64,    24,   101,   102,
+     103,    24,    42,    30,    93,    94,    84,    91,    92,    93,
+      94,    54,   302,   380,   304,   101,   310,    51,    86,    87,
+     106,    64,    48,    74,    54,   315,    54,   101,   100,   319,
+      70,   103,    56,    57,    64,   100,    64,    46,   103,    79,
+     330,    81,    93,    83,   112,    65,    66,    67,    68,   101,
+      24,    25,    26,   102,   103,    95,    53,    97,    98,   103,
+     100,   101,   352,   100,   138,   105,   345,   107,   100,    96,
+      97,    98,    99,    96,    97,    98,    99,   102,   103,   157,
+     102,   103,   372,    48,   363,    24,   376,   230,     1,   103,
+     158,   106,   382,   106,   373,   105,   386,   103,   138,   103,
+     379,    14,   102,   103,    17,    18,    36,    37,    21,    22,
+      23,    24,    25,    26,   101,   102,   103,    30,   103,   159,
+     160,   161,    96,    97,    98,    99,   194,   103,   196,    53,
+     198,   106,   200,    44,   202,   203,    75,    76,    77,    78,
+     159,   160,   161,   100,    87,    27,    54,    35,    86,    85,
       69,   191,   103,    72,    54,    68,    85,    96,    97,    98,
       99,    53,    75,    76,    77,    78,    79,   100,    86,    86,
      210,    90,    91,    92,    93,    94,    86,   253,    91,    92,
-     178,   314,   309,    96,    97,    98,    99,    -1,   101,    -1,
-     230,   104,   105,   106,    -1,   210,    -1,    -1,    -1,    -1,
+     178,   314,   309,    96,    97,    98,    99,    -1,   101,   210,
+     230,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,   245,    -1,    -1,    -1,    -1,
       -1,    -1,   252,   253,   254,   255,    -1,   295,     6,   297,
      260,    -1,   262,    11,    -1,   293,    -1,    -1,    16,    17,
@@ -1537,7 +1537,7 @@ static const yytype_uint8 yystos[] =
       89,    90,    91,    92,    93,    94,   150,   110,   110,    44,
       70,    71,   110,   132,    54,    64,   137,   137,    54,    64,
       54,    64,    53,    56,   150,   110,   148,    54,   100,   110,
-     147,   110,   108,   110,   138,   161,   103,   128,   110,   158,
+     147,   110,   109,   110,   138,   161,   103,   128,   110,   158,
      158,   103,   137,   138,    48,    54,    48,    54,    48,    54,
       48,    54,    80,    81,   102,   106,   106,   106,   105,   103,
      103,   110,   161,   138,   138,   138,   138,   138,   138,   138,
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 68fee16634..7ea7486995 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -212,7 +212,7 @@ static void mVar(Common::String *s, VarType type) {
 %%
 
 program: programline
-	| programline '\n' program
+	| program '\n' programline
 
 programline: /* empty */
 	| defn


Commit: 06d5e823e071b47958e924e8afbdd02b3b514552
    https://github.com/scummvm/scummvm/commit/06d5e823e071b47958e924e8afbdd02b3b514552
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-19T13:33:35-04:00

Commit Message:
DIRECTOR: LINGO: Fix token declaration

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 2d97c0a3a8..ce41715b82 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -245,10 +245,10 @@ extern int yydebug;
     tPLAYACCEL = 283,              /* tPLAYACCEL  */
     tMETHOD = 284,                 /* tMETHOD  */
     THEOBJECTPROP = 285,           /* THEOBJECTPROP  */
-    CAST = 286,                    /* CAST  */
-    FIELD = 287,                   /* FIELD  */
-    SCRIPT = 288,                  /* SCRIPT  */
-    WINDOW = 289,                  /* WINDOW  */
+    tCAST = 286,                   /* tCAST  */
+    tFIELD = 287,                  /* tFIELD  */
+    tSCRIPT = 288,                 /* tSCRIPT  */
+    tWINDOW = 289,                 /* tWINDOW  */
     tDOWN = 290,                   /* tDOWN  */
     tELSE = 291,                   /* tELSE  */
     tELSIF = 292,                  /* tELSIF  */
@@ -301,11 +301,7 @@ extern int yydebug;
     tON = 339,                     /* tON  */
     tENDIF = 340,                  /* tENDIF  */
     tENDREPEAT = 341,              /* tENDREPEAT  */
-    tENDTELL = 342,                /* tENDTELL  */
-    tCAST = 343,                   /* tCAST  */
-    tFIELD = 344,                  /* tFIELD  */
-    tSCRIPT = 345,                 /* tSCRIPT  */
-    tWINDOW = 346                  /* tWINDOW  */
+    tENDTELL = 342                 /* tENDTELL  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -329,7 +325,7 @@ union YYSTYPE
 		Common::String *prop;
 	} objectprop;
 
-#line 333 "engines/director/lingo/lingo-gr.cpp"
+#line 329 "engines/director/lingo/lingo-gr.cpp"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -378,10 +374,10 @@ enum yysymbol_kind_t
   YYSYMBOL_tPLAYACCEL = 28,                /* tPLAYACCEL  */
   YYSYMBOL_tMETHOD = 29,                   /* tMETHOD  */
   YYSYMBOL_THEOBJECTPROP = 30,             /* THEOBJECTPROP  */
-  YYSYMBOL_CAST = 31,                      /* CAST  */
-  YYSYMBOL_FIELD = 32,                     /* FIELD  */
-  YYSYMBOL_SCRIPT = 33,                    /* SCRIPT  */
-  YYSYMBOL_WINDOW = 34,                    /* WINDOW  */
+  YYSYMBOL_tCAST = 31,                     /* tCAST  */
+  YYSYMBOL_tFIELD = 32,                    /* tFIELD  */
+  YYSYMBOL_tSCRIPT = 33,                   /* tSCRIPT  */
+  YYSYMBOL_tWINDOW = 34,                   /* tWINDOW  */
   YYSYMBOL_tDOWN = 35,                     /* tDOWN  */
   YYSYMBOL_tELSE = 36,                     /* tELSE  */
   YYSYMBOL_tELSIF = 37,                    /* tELSIF  */
@@ -443,78 +439,74 @@ enum yysymbol_kind_t
   YYSYMBOL_93_ = 93,                       /* '*'  */
   YYSYMBOL_94_ = 94,                       /* '/'  */
   YYSYMBOL_95_ = 95,                       /* '%'  */
-  YYSYMBOL_tCAST = 96,                     /* tCAST  */
-  YYSYMBOL_tFIELD = 97,                    /* tFIELD  */
-  YYSYMBOL_tSCRIPT = 98,                   /* tSCRIPT  */
-  YYSYMBOL_tWINDOW = 99,                   /* tWINDOW  */
-  YYSYMBOL_100_n_ = 100,                   /* '\n'  */
-  YYSYMBOL_101_ = 101,                     /* '('  */
-  YYSYMBOL_102_ = 102,                     /* ')'  */
-  YYSYMBOL_103_ = 103,                     /* ','  */
-  YYSYMBOL_104_ = 104,                     /* '['  */
-  YYSYMBOL_105_ = 105,                     /* ']'  */
-  YYSYMBOL_106_ = 106,                     /* ':'  */
-  YYSYMBOL_YYACCEPT = 107,                 /* $accept  */
-  YYSYMBOL_program = 108,                  /* program  */
-  YYSYMBOL_programline = 109,              /* programline  */
-  YYSYMBOL_ID = 110,                       /* ID  */
-  YYSYMBOL_asgn = 111,                     /* asgn  */
-  YYSYMBOL_stmtoneliner = 112,             /* stmtoneliner  */
-  YYSYMBOL_stmt = 113,                     /* stmt  */
-  YYSYMBOL_114_1 = 114,                    /* $@1  */
-  YYSYMBOL_115_2 = 115,                    /* $@2  */
-  YYSYMBOL_116_3 = 116,                    /* $@3  */
-  YYSYMBOL_117_4 = 117,                    /* $@4  */
-  YYSYMBOL_118_5 = 118,                    /* $@5  */
-  YYSYMBOL_119_6 = 119,                    /* $@6  */
-  YYSYMBOL_120_7 = 120,                    /* $@7  */
-  YYSYMBOL_121_8 = 121,                    /* $@8  */
-  YYSYMBOL_122_9 = 122,                    /* $@9  */
-  YYSYMBOL_startrepeat = 123,              /* startrepeat  */
-  YYSYMBOL_tellstart = 124,                /* tellstart  */
-  YYSYMBOL_ifstmt = 125,                   /* ifstmt  */
-  YYSYMBOL_elseifstmtlist = 126,           /* elseifstmtlist  */
-  YYSYMBOL_elseifstmt = 127,               /* elseifstmt  */
-  YYSYMBOL_jumpifz = 128,                  /* jumpifz  */
-  YYSYMBOL_jump = 129,                     /* jump  */
-  YYSYMBOL_varassign = 130,                /* varassign  */
-  YYSYMBOL_if = 131,                       /* if  */
-  YYSYMBOL_lbl = 132,                      /* lbl  */
-  YYSYMBOL_stmtlist = 133,                 /* stmtlist  */
-  YYSYMBOL_stmtlistline = 134,             /* stmtlistline  */
-  YYSYMBOL_simpleexprnoparens = 135,       /* simpleexprnoparens  */
-  YYSYMBOL_136_10 = 136,                   /* $@10  */
-  YYSYMBOL_simpleexpr = 137,               /* simpleexpr  */
-  YYSYMBOL_expr = 138,                     /* expr  */
-  YYSYMBOL_chunkexpr = 139,                /* chunkexpr  */
-  YYSYMBOL_reference = 140,                /* reference  */
-  YYSYMBOL_proc = 141,                     /* proc  */
-  YYSYMBOL_142_11 = 142,                   /* $@11  */
-  YYSYMBOL_143_12 = 143,                   /* $@12  */
-  YYSYMBOL_144_13 = 144,                   /* $@13  */
-  YYSYMBOL_145_14 = 145,                   /* $@14  */
-  YYSYMBOL_globallist = 146,               /* globallist  */
-  YYSYMBOL_propertylist = 147,             /* propertylist  */
-  YYSYMBOL_instancelist = 148,             /* instancelist  */
-  YYSYMBOL_gotofunc = 149,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 150,                /* gotomovie  */
-  YYSYMBOL_playfunc = 151,                 /* playfunc  */
-  YYSYMBOL_152_15 = 152,                   /* $@15  */
-  YYSYMBOL_defn = 153,                     /* defn  */
-  YYSYMBOL_154_16 = 154,                   /* $@16  */
-  YYSYMBOL_155_17 = 155,                   /* $@17  */
-  YYSYMBOL_on = 156,                       /* on  */
-  YYSYMBOL_157_18 = 157,                   /* $@18  */
-  YYSYMBOL_argdef = 158,                   /* argdef  */
-  YYSYMBOL_endargdef = 159,                /* endargdef  */
-  YYSYMBOL_argstore = 160,                 /* argstore  */
-  YYSYMBOL_arglist = 161,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 162,          /* nonemptyarglist  */
-  YYSYMBOL_list = 163,                     /* list  */
-  YYSYMBOL_valuelist = 164,                /* valuelist  */
-  YYSYMBOL_linearlist = 165,               /* linearlist  */
-  YYSYMBOL_proplist = 166,                 /* proplist  */
-  YYSYMBOL_proppair = 167                  /* proppair  */
+  YYSYMBOL_96_n_ = 96,                     /* '\n'  */
+  YYSYMBOL_97_ = 97,                       /* '('  */
+  YYSYMBOL_98_ = 98,                       /* ')'  */
+  YYSYMBOL_99_ = 99,                       /* ','  */
+  YYSYMBOL_100_ = 100,                     /* '['  */
+  YYSYMBOL_101_ = 101,                     /* ']'  */
+  YYSYMBOL_102_ = 102,                     /* ':'  */
+  YYSYMBOL_YYACCEPT = 103,                 /* $accept  */
+  YYSYMBOL_program = 104,                  /* program  */
+  YYSYMBOL_programline = 105,              /* programline  */
+  YYSYMBOL_ID = 106,                       /* ID  */
+  YYSYMBOL_asgn = 107,                     /* asgn  */
+  YYSYMBOL_stmtoneliner = 108,             /* stmtoneliner  */
+  YYSYMBOL_stmt = 109,                     /* stmt  */
+  YYSYMBOL_110_1 = 110,                    /* $@1  */
+  YYSYMBOL_111_2 = 111,                    /* $@2  */
+  YYSYMBOL_112_3 = 112,                    /* $@3  */
+  YYSYMBOL_113_4 = 113,                    /* $@4  */
+  YYSYMBOL_114_5 = 114,                    /* $@5  */
+  YYSYMBOL_115_6 = 115,                    /* $@6  */
+  YYSYMBOL_116_7 = 116,                    /* $@7  */
+  YYSYMBOL_117_8 = 117,                    /* $@8  */
+  YYSYMBOL_118_9 = 118,                    /* $@9  */
+  YYSYMBOL_startrepeat = 119,              /* startrepeat  */
+  YYSYMBOL_tellstart = 120,                /* tellstart  */
+  YYSYMBOL_ifstmt = 121,                   /* ifstmt  */
+  YYSYMBOL_elseifstmtlist = 122,           /* elseifstmtlist  */
+  YYSYMBOL_elseifstmt = 123,               /* elseifstmt  */
+  YYSYMBOL_jumpifz = 124,                  /* jumpifz  */
+  YYSYMBOL_jump = 125,                     /* jump  */
+  YYSYMBOL_varassign = 126,                /* varassign  */
+  YYSYMBOL_if = 127,                       /* if  */
+  YYSYMBOL_lbl = 128,                      /* lbl  */
+  YYSYMBOL_stmtlist = 129,                 /* stmtlist  */
+  YYSYMBOL_stmtlistline = 130,             /* stmtlistline  */
+  YYSYMBOL_simpleexprnoparens = 131,       /* simpleexprnoparens  */
+  YYSYMBOL_132_10 = 132,                   /* $@10  */
+  YYSYMBOL_simpleexpr = 133,               /* simpleexpr  */
+  YYSYMBOL_expr = 134,                     /* expr  */
+  YYSYMBOL_chunkexpr = 135,                /* chunkexpr  */
+  YYSYMBOL_reference = 136,                /* reference  */
+  YYSYMBOL_proc = 137,                     /* proc  */
+  YYSYMBOL_138_11 = 138,                   /* $@11  */
+  YYSYMBOL_139_12 = 139,                   /* $@12  */
+  YYSYMBOL_140_13 = 140,                   /* $@13  */
+  YYSYMBOL_141_14 = 141,                   /* $@14  */
+  YYSYMBOL_globallist = 142,               /* globallist  */
+  YYSYMBOL_propertylist = 143,             /* propertylist  */
+  YYSYMBOL_instancelist = 144,             /* instancelist  */
+  YYSYMBOL_gotofunc = 145,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 146,                /* gotomovie  */
+  YYSYMBOL_playfunc = 147,                 /* playfunc  */
+  YYSYMBOL_148_15 = 148,                   /* $@15  */
+  YYSYMBOL_defn = 149,                     /* defn  */
+  YYSYMBOL_150_16 = 150,                   /* $@16  */
+  YYSYMBOL_151_17 = 151,                   /* $@17  */
+  YYSYMBOL_on = 152,                       /* on  */
+  YYSYMBOL_153_18 = 153,                   /* $@18  */
+  YYSYMBOL_argdef = 154,                   /* argdef  */
+  YYSYMBOL_endargdef = 155,                /* endargdef  */
+  YYSYMBOL_argstore = 156,                 /* argstore  */
+  YYSYMBOL_arglist = 157,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 158,          /* nonemptyarglist  */
+  YYSYMBOL_list = 159,                     /* list  */
+  YYSYMBOL_valuelist = 160,                /* valuelist  */
+  YYSYMBOL_linearlist = 161,               /* linearlist  */
+  YYSYMBOL_proplist = 162,                 /* proplist  */
+  YYSYMBOL_proppair = 163                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -824,10 +816,10 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  99
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2018
+#define YYLAST   1944
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  107
+#define YYNTOKENS  103
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  61
 /* YYNRULES -- Number of rules.  */
@@ -835,7 +827,7 @@ union yyalloc
 /* YYNSTATES -- Number of states.  */
 #define YYNSTATES  390
 
-#define YYMAXUTOK   346
+#define YYMAXUTOK   342
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -850,15 +842,15 @@ union yyalloc
 static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-     100,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+      96,     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,    95,    90,     2,
-     101,   102,    93,    91,   103,    92,     2,    94,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   106,     2,
+      97,    98,    93,    91,    99,    92,     2,    94,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   102,     2,
       88,     2,    89,     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,   104,     2,   105,     2,     2,     2,     2,     2,     2,
+       2,   100,     2,   101,     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,
@@ -883,7 +875,7 @@ static const yytype_int8 yytranslate[] =
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    96,    97,    98,    99
+      85,    86,    87
 };
 
 #if YYDEBUG
@@ -931,26 +923,26 @@ yysymbol_name (yysymbol_kind_t yysymbol)
   "PARRAY", "INT", "ARGC", "ARGCNORET", "THEENTITY", "THEENTITYWITHID",
   "THEMENUITEMENTITY", "THEMENUITEMSENTITY", "FLOAT", "THEFUNC",
   "THEFUNCINOF", "VARID", "STRING", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL",
-  "tMETHOD", "THEOBJECTPROP", "CAST", "FIELD", "SCRIPT", "WINDOW", "tDOWN",
-  "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tGOLOOP", "tIF", "tIN",
-  "tINTO", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT",
+  "tMETHOD", "THEOBJECTPROP", "tCAST", "tFIELD", "tSCRIPT", "tWINDOW",
+  "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tGOLOOP", "tIF",
+  "tIN", "tINTO", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT",
   "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE",
   "tFACTORY", "tOPEN", "tPLAY", "tINSTANCE", "tGE", "tLE", "tEQ", "tNEQ",
   "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT",
   "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE",
   "tINTERSECTS", "tWITHIN", "tTELL", "tPROPERTY", "tON", "tENDIF",
   "tENDREPEAT", "tENDTELL", "'<'", "'>'", "'&'", "'+'", "'-'", "'*'",
-  "'/'", "'%'", "tCAST", "tFIELD", "tSCRIPT", "tWINDOW", "'\\n'", "'('",
-  "')'", "','", "'['", "']'", "':'", "$accept", "program", "programline",
-  "ID", "asgn", "stmtoneliner", "stmt", "$@1", "$@2", "$@3", "$@4", "$@5",
-  "$@6", "$@7", "$@8", "$@9", "startrepeat", "tellstart", "ifstmt",
-  "elseifstmtlist", "elseifstmt", "jumpifz", "jump", "varassign", "if",
-  "lbl", "stmtlist", "stmtlistline", "simpleexprnoparens", "$@10",
-  "simpleexpr", "expr", "chunkexpr", "reference", "proc", "$@11", "$@12",
-  "$@13", "$@14", "globallist", "propertylist", "instancelist", "gotofunc",
-  "gotomovie", "playfunc", "$@15", "defn", "$@16", "$@17", "on", "$@18",
-  "argdef", "endargdef", "argstore", "arglist", "nonemptyarglist", "list",
-  "valuelist", "linearlist", "proplist", "proppair", YY_NULLPTR
+  "'/'", "'%'", "'\\n'", "'('", "')'", "','", "'['", "']'", "':'",
+  "$accept", "program", "programline", "ID", "asgn", "stmtoneliner",
+  "stmt", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8", "$@9",
+  "startrepeat", "tellstart", "ifstmt", "elseifstmtlist", "elseifstmt",
+  "jumpifz", "jump", "varassign", "if", "lbl", "stmtlist", "stmtlistline",
+  "simpleexprnoparens", "$@10", "simpleexpr", "expr", "chunkexpr",
+  "reference", "proc", "$@11", "$@12", "$@13", "$@14", "globallist",
+  "propertylist", "instancelist", "gotofunc", "gotomovie", "playfunc",
+  "$@15", "defn", "$@16", "$@17", "on", "$@18", "argdef", "endargdef",
+  "argstore", "arglist", "nonemptyarglist", "list", "valuelist",
+  "linearlist", "proplist", "proppair", YY_NULLPTR
   };
   return yy_sname[yysymbol];
 }
@@ -970,12 +962,12 @@ static const yytype_int16 yytoknum[] =
      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,    60,    62,
-      38,    43,    45,    42,    47,    37,   343,   344,   345,   346,
-      10,    40,    41,    44,    91,    93,    58
+      38,    43,    45,    42,    47,    37,    10,    40,    41,    44,
+      91,    93,    58
 };
 #endif
 
-#define YYPACT_NINF (-356)
+#define YYPACT_NINF (-328)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -989,45 +981,45 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    1387,  -356,  -356,  -356,   -29,  -356,  1062,  -356,  -356,  -356,
-       6,  1277,    16,    13,    17,    17,  1309,  1150,  -356,  1309,
-    -356,  -356,  -356,  -356,  -356,  -356,     3,  -356,   480,  -356,
-    -356,  -356,  -356,  1309,  -356,  -356,  -356,  -356,  -356,  1028,
-    -356,  -356,    17,   -74,  -356,  -356,  1309,  -356,    14,  1309,
-    -356,  -356,  -356,  1309,  -356,    31,  -356,  1309,  1309,  1309,
-    1309,  1309,  1309,  1309,  1309,   600,   707,   814,   921,  1309,
-     127,   -12,  -356,  -356,  1513,  -356,  -356,  -356,  -356,    17,
-    -356,    17,  1480,    17,  -356,   -37,  1309,  1309,   -30,    -3,
-      43,  -356,  1845,  1513,  -356,    17,  1546,    17,    17,  -356,
-    1387,  1185,  1911,    -4,  1911,    17,    -4,    17,  -356,    26,
-    -356,  -356,  1309,  -356,  1911,  1309,  -356,  1593,  1626,  1659,
-    1692,  1878,  -356,  -356,  -356,  -356,  -356,  -356,  1804,    25,
-      27,  -356,   -46,  1911,    30,    34,    36,  -356,  1185,  1309,
-    1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,  1309,
-    1309,  1309,  1309,  1309,  1309,  1309,  -356,  -356,  1309,   101,
-     101,   101,   -31,  1309,  1309,  1309,    10,    75,  1309,  1309,
-    1309,  1309,  1309,  1309,  -356,  -356,    55,  -356,  -356,  -356,
-      64,  -356,  -356,   -63,  1804,    -9,  1309,   116,  -356,   -84,
-     -32,    17,  -356,  1911,  1309,  1309,  1309,  1309,  1309,  1309,
-    1309,  1309,  1309,  1309,  -356,  1309,  1309,  1309,  -356,  1309,
-      66,    53,    15,   121,   121,   121,   121,  1924,  1924,  -356,
-     -44,   121,   121,   121,   121,   -44,   -49,   -49,  -356,  -356,
-      17,   129,  -356,  -356,  -356,  -356,  -356,  -356,  1309,  1309,
-    1911,  1911,  1911,  1309,  1309,    17,  1911,  1911,  1911,  1911,
-    1911,  1911,    17,   248,  1440,    17,  -356,  -356,  -356,  1911,
-    1440,  -356,    17,  -356,  -356,  -356,  1441,  -356,  1725,  -356,
-    1758,  -356,  1791,  -356,  -356,  1911,  1911,  1911,  1911,    25,
-      27,    65,  -356,  -356,  -356,  -356,   -25,  1309,  1911,  1330,
-    -356,  1911,  1911,  1309,  -356,  -356,  -356,  -356,    83,  -356,
-    1309,  -356,  1440,  -356,  1440,  1309,  1309,  1309,  1309,  1309,
-    -356,  1911,  -356,  -356,  -356,  1440,    12,  -356,    97,  1440,
-    1911,    18,  -356,   158,  -356,  -356,  -356,  -356,  -356,    40,
-    1440,  -356,  -356,  -356,  -356,  1309,  1309,  -356,  -356,  -356,
-    1309,   110,    17,  -356,  -356,  -356,   132,   152,   102,  1911,
-    1911,  1911,  1440,  1309,  -356,   104,  -356,    89,  -356,  1309,
-     140,  -356,  -356,  1911,  -356,    17,  -356,  1911,  1309,   111,
-     148,  -356,  1440,  -356,  1911,  -356,  1440,   122,  -356,  -356,
-    -356,  -356,  1440,  -356,  -356,   123,  1440,  -356,   130,  -356
+     154,  -328,  -328,  -328,  -328,  -328,  -328,  -328,   -42,  -328,
+    1183,  -328,  -328,  -328,   -29,  1329,    88,   124,    97,    97,
+    1410,  1222,  -328,  1410,  -328,  -328,    12,  -328,  1008,  -328,
+    -328,  -328,  -328,  1410,  -328,  -328,  -328,  -328,  -328,  1096,
+    -328,  -328,    97,   -83,  -328,  -328,  1410,  -328,   -24,  1410,
+    -328,  -328,  -328,   596,   699,   802,   905,  1410,  -328,    -3,
+    -328,  1410,  1410,  1410,  1410,  1410,  1410,  1410,  1410,  1410,
+     445,   -20,  -328,  -328,  1451,  -328,  -328,  -328,  -328,    97,
+    -328,    97,  1402,    97,  -328,   -33,  1410,  1410,   -13,     2,
+      31,  -328,  1754,  1451,  -328,    97,  1715,    97,    97,  -328,
+     154,  1303,  1837,    -5,  1837,    97,    -5,    97,  -328,    21,
+    -328,  -328,  1410,  -328,  -328,  -328,  -328,  -328,  1837,  1410,
+    -328,   501,  1484,  1517,  1550,  1804,  -328,  -328,  1767,    23,
+      35,  -328,   -40,  1837,    -2,    34,    40,  -328,  1303,  1410,
+    1410,  1410,  1410,  1410,  1410,  1410,  1410,  1410,  1410,  1410,
+    1410,  1410,  1410,  1410,  1410,  1410,  -328,  -328,  1410,    -4,
+      -4,    -4,   -27,  1410,  1410,  1410,     4,    75,  1410,  1410,
+    1410,  1410,  1410,  1410,  -328,  -328,    67,  -328,  -328,  -328,
+      68,  -328,  -328,    16,  1767,    48,  1410,    43,  -328,   -14,
+      -8,    97,  -328,  1837,  1410,  1410,  1410,  1410,  1410,  1410,
+    1410,  1410,  1410,  1410,  -328,  1410,  1410,  1410,  -328,  1410,
+     192,    19,    54,   -58,   -58,   -58,   -58,  1850,  1850,  -328,
+     -44,   -58,   -58,   -58,   -58,   -44,   -54,   -54,  -328,  -328,
+      97,   125,  -328,  -328,  -328,  -328,  -328,  -328,  1410,  1410,
+    1837,  1837,  1837,  1410,  1410,    97,  1837,  1837,  1837,  1837,
+    1837,  1837,    97,  1107,  1019,    97,  -328,  -328,  -328,  1837,
+    1019,  -328,    97,  -328,  -328,  -328,  1583,  -328,  1616,  -328,
+    1649,  -328,  1682,  -328,  -328,  1837,  1837,  1837,  1837,    23,
+      35,    70,  -328,  -328,  -328,  -328,    -6,  1410,  1837,   437,
+    -328,  1837,  1837,  1410,  -328,  -328,  -328,  -328,    72,  -328,
+    1410,  -328,  1019,  -328,  1019,  1410,  1410,  1410,  1410,  1410,
+    -328,  1837,  -328,  -328,  -328,  1019,    22,  -328,    83,  1019,
+    1837,    64,  -328,   147,  -328,  -328,  -328,  -328,  -328,    66,
+    1019,  -328,  -328,  -328,  -328,  1410,  1410,  -328,  -328,  -328,
+    1410,    24,    97,  -328,  -328,  -328,   122,   146,    98,  1837,
+    1837,  1837,  1019,  1410,  -328,   104,  -328,    91,  -328,  1410,
+     143,  -328,  -328,  1837,  -328,    97,  -328,  1837,  1410,   113,
+     149,  -328,  1019,  -328,  1837,  -328,  1019,   114,  -328,  -328,
+    -328,  -328,  1019,  -328,  -328,   117,  1019,  -328,   121,  -328
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1035,19 +1027,19 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       4,     7,   156,   161,   125,   126,     0,   145,    60,   158,
-       0,     0,     0,     0,     0,     0,     0,     0,   130,     0,
-     128,   165,     8,     9,    10,    11,     0,     2,     0,    29,
+       4,     7,   156,   161,     8,     9,    10,    11,   125,   126,
+       0,   145,    60,   158,     0,     0,     0,     0,     0,     0,
+       0,     0,   130,     0,   128,   165,     0,     2,     0,    29,
       31,     6,    32,     0,    30,   122,   123,     5,    61,     0,
       61,   124,     0,     0,    66,    74,     0,    67,     0,     0,
-      69,    68,    78,     0,   146,     0,   147,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      69,    68,    78,     0,     0,     0,     0,     0,   146,     0,
+     147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    86,    88,    90,   148,   117,    73,   150,    81,     0,
       46,     0,   121,     0,    61,     0,     0,     0,     0,     0,
        0,   160,   133,   153,   155,     0,     0,     0,     0,     1,
        4,     0,   175,   138,    57,   167,   157,   167,   139,   127,
-      87,    75,     0,    76,   152,     0,    72,     0,     0,     0,
-       0,     0,    70,    71,   118,   108,   119,   120,     0,    69,
+      87,    75,     0,    76,   118,   108,   119,   120,   152,     0,
+      72,     0,     0,     0,     0,     0,    70,    71,     0,    69,
       68,   181,    86,   184,     0,   183,   182,   186,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,   149,    61,     0,     0,
@@ -1079,13 +1071,13 @@ static const yytype_uint8 yydefact[] =
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -356,  -356,   107,     0,  -356,   -36,     8,  -356,  -356,  -356,
-    -356,  -356,  -356,  -356,  -356,  -356,  -355,    42,  -356,  -356,
-    -356,  -239,  -327,   -93,  -356,   -38,  -250,  -356,    20,  -356,
-     -28,   252,    21,  -356,  -356,  -356,  -356,  -356,  -356,  -356,
-    -356,  -356,  -356,   -11,  -356,  -356,  -356,  -356,  -356,  -356,
-    -356,  -103,  -356,  -254,   -34,   -87,  -356,  -356,  -356,  -356,
-      19
+    -328,  -328,   108,     0,  -328,   -32,     3,  -328,  -328,  -328,
+    -328,  -328,  -328,  -328,  -328,  -328,  -291,    33,  -328,  -328,
+    -328,  -239,  -327,   -95,  -328,   -38,  -250,  -328,    56,  -328,
+     -23,   248,   -10,  -328,  -328,  -328,  -328,  -328,  -328,  -328,
+    -328,  -328,  -328,   -15,  -328,  -328,  -328,  -328,  -328,  -328,
+    -328,  -103,  -328,  -255,   -34,   -89,  -328,  -328,  -328,  -328,
+      17
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
@@ -1105,484 +1097,470 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      28,   290,   107,    99,   190,   106,    94,   348,    31,   304,
-     301,   372,   238,    89,    90,    91,   261,   164,   111,   262,
-     145,   113,    41,   382,   168,   145,   110,   165,   386,   116,
-      85,    86,    87,   239,   169,   122,   123,     1,   138,   256,
-     257,     1,   108,    88,   154,   155,   163,   152,   153,   154,
-     155,   170,   323,   384,   324,   138,   330,    80,   166,   167,
-     207,   171,   112,   156,   243,   334,   335,   185,   263,   338,
-     132,   262,    83,    84,   244,   310,   336,   115,   262,   157,
-     344,   158,   174,   162,   192,   124,   125,   126,   127,   138,
-       1,   279,   280,   258,   186,   175,   172,   179,   181,   186,
-      28,   183,   362,   100,   212,   188,   358,   188,    31,    22,
-      23,    24,    25,    22,    23,    24,    25,   285,   186,   230,
-     339,   340,   377,   245,   370,     1,   380,   286,    43,   191,
-     231,   205,   385,   206,   378,   208,   388,   209,   211,   210,
-     383,    44,   343,   340,    45,    46,   352,   353,    47,    48,
-      49,     1,   129,   130,   138,   283,   284,    52,   252,   232,
-     234,   236,    22,    23,    24,    25,   265,   255,   267,   260,
-     269,   207,   271,   287,   273,   274,    58,    59,    60,    61,
-     233,   235,   237,   319,   337,   342,   359,   360,   361,   364,
-     145,   264,   365,   146,   368,    57,   375,    22,    66,    24,
-      25,   376,    58,    59,    60,    61,    62,   182,   381,   387,
-     281,   151,   152,   153,   154,   155,   389,   295,    63,    64,
-     254,   333,   329,    65,    66,    67,    68,     0,    69,   282,
-     188,    70,  -180,   131,     0,     0,     0,     0,     0,     0,
+      28,   290,   107,    31,   190,   106,    94,   348,   304,    41,
+     301,   145,    99,   110,   146,   145,   238,    89,    90,    91,
+       1,   164,    80,   111,   112,   145,   113,     4,    54,     6,
+       7,   165,   151,   152,   153,   154,   155,   239,   120,   154,
+     155,   168,   108,   119,   126,   127,   163,   152,   153,   154,
+     155,   169,   323,   384,   324,   330,   170,   138,   243,   156,
+     352,   353,   207,   166,   167,   334,   171,   185,   244,   338,
+     132,    62,    63,    64,    65,   372,   335,   138,   174,   157,
+     344,   158,   261,   162,   172,   262,   336,   382,   263,   192,
+     310,   262,   386,   262,   186,   175,   260,   179,   181,   208,
+      28,   183,   362,    31,   212,   188,   358,   188,   100,   114,
+     115,   116,   117,   138,   256,   257,   138,   283,   284,   230,
+     191,     1,   377,   245,   370,   205,   380,   286,     4,     5,
+       6,     7,   385,   209,   378,   231,   388,   206,   211,   210,
+     383,    85,    86,    87,    83,    84,   258,   186,     1,   233,
+     235,   237,   285,   186,    88,     4,     5,     6,     7,   232,
+     234,   236,   339,   340,   343,   340,   252,   255,   319,   287,
+     337,   265,   207,   267,   342,   269,   359,   271,     1,   273,
+     274,   360,     2,     3,   361,     4,     5,     6,     7,   364,
+     365,   264,     8,     9,    10,    11,    12,   368,   375,    13,
+     381,    14,   376,   387,    15,    16,    17,   389,   182,    18,
+     281,   254,    19,    20,    21,    22,     1,   279,   280,   333,
+     329,   295,     0,     4,     5,     6,     7,   282,     0,     0,
+     188,     0,     0,     0,     0,     0,    23,    24,    25,     0,
        0,     0,     0,     0,     0,   293,     0,     0,     0,     0,
        0,     0,   294,    28,    28,   299,     0,   317,    74,   318,
-      28,     0,   303,    82,     0,   316,     0,     0,    92,    93,
-       0,    96,     1,     0,   331,     0,     2,   325,   326,   327,
-     328,     0,     0,     0,     0,   104,     4,     5,     6,     7,
-       0,     0,     0,     0,     0,     0,     0,     0,    11,     0,
-      13,     0,    28,   355,    28,   114,     0,    16,    17,    18,
-     117,   118,   119,   120,   121,    28,     0,     0,     0,    28,
-       0,   128,   133,     0,   369,     0,     0,     0,     0,     0,
-      28,    20,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   356,     0,    22,    23,    24,    25,     0,     0,
-       0,     0,    28,   184,     0,     0,     0,     0,     0,     0,
+      28,     0,   303,    82,     0,     0,     0,     0,    92,    93,
+     316,    96,     0,     0,   331,     0,     0,     0,     0,     0,
+       0,   104,   325,   326,   327,   328,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    28,   355,    28,   118,     0,     0,     0,     0,
+     121,   122,   123,   124,   125,    28,     0,   128,   133,    28,
+       0,     0,     0,     0,   369,     0,     0,     0,     0,     0,
+      28,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   356,     0,     0,     0,     0,     0,     0,   184,
+       0,     0,    28,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   371,     0,   193,     0,     0,
        0,     0,    28,     0,     0,     0,    28,     0,     0,     0,
-       0,     0,    28,     0,     0,     0,    28,     0,     0,     0,
-       0,   213,   214,   215,   216,   217,   218,   219,   220,   221,
-     222,   223,   224,   225,   226,   227,   228,   229,     0,     0,
-       0,     0,     0,     0,     0,   240,   241,   242,     0,     0,
-     246,   247,   248,   249,   250,   251,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   259,     0,
-       0,     0,     0,     0,     0,     0,     0,   266,     0,   268,
-       0,   270,     0,   272,     0,     0,     0,   275,   276,   277,
-       0,   278,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    -174,    43,     0,     0,     0,     0,     0,     0,     0,     0,
-     288,   289,     0,     0,    44,   291,   292,    45,    46,     0,
-       0,    47,    48,    49,     1,    50,    51,  -174,     0,     0,
-      52,     0,     0,     0,     0,     0,  -174,  -174,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   311,
-       0,     0,     0,     0,     0,     0,     0,     0,    57,     0,
-       0,     0,   320,     0,     0,    58,    59,    60,    61,    62,
-       0,   320,     0,     0,     0,  -174,  -174,  -174,     0,     0,
-       0,    63,    64,     0,     0,     0,    65,    66,    67,    68,
-    -174,   101,     0,  -174,    70,     0,     0,   349,   350,     0,
-       0,     0,   351,     0,     0,     0,     0,     0,     0,     0,
-      -8,    43,     0,     0,     0,   363,     0,     0,     0,     0,
-       0,   367,     0,     0,    44,     0,     0,    45,    46,     0,
-     374,    47,    48,    49,     1,    50,    51,    -8,    -8,     0,
-      52,     0,     0,     0,     0,    -8,    -8,    -8,    -8,    -8,
-      -8,    -8,    -8,     0,    -8,     0,    -8,    -8,    -8,     0,
-      -8,    -8,    -8,    -8,    -8,    -8,    -8,     0,     0,    -8,
-      -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    57,    -8,
-      -8,    -8,    -8,    -8,    -8,    58,    59,    60,    61,    62,
-      -8,    -8,    -8,    -8,     0,    -8,    -8,    -8,    -8,    -8,
-      -8,    -8,    -8,    -8,    -8,     0,    65,    66,    67,    68,
-      -8,    -8,    -8,    -8,    70,    -8,    -8,    -9,    43,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    44,     0,     0,    45,    46,     0,     0,    47,    48,
-      49,     1,    50,    51,    -9,    -9,     0,    52,     0,     0,
-       0,     0,    -9,    -9,    -9,    -9,    -9,    -9,    -9,    -9,
-       0,    -9,     0,    -9,    -9,    -9,     0,    -9,    -9,    -9,
-      -9,    -9,    -9,    -9,     0,     0,    -9,    -9,    -9,    -9,
-      -9,    -9,    -9,    -9,    -9,    57,    -9,    -9,    -9,    -9,
-      -9,    -9,    58,    59,    60,    61,    62,    -9,    -9,    -9,
-      -9,     0,    -9,    -9,    -9,    -9,    -9,    -9,    -9,    -9,
-      -9,    -9,     0,    65,    66,    67,    68,    -9,    -9,    -9,
-      -9,    70,    -9,    -9,   -10,    43,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    44,     0,
-       0,    45,    46,     0,     0,    47,    48,    49,     1,    50,
-      51,   -10,   -10,     0,    52,     0,     0,     0,     0,   -10,
-     -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,   -10,     0,
-     -10,   -10,   -10,     0,   -10,   -10,   -10,   -10,   -10,   -10,
-     -10,     0,     0,   -10,   -10,   -10,   -10,   -10,   -10,   -10,
-     -10,   -10,    57,   -10,   -10,   -10,   -10,   -10,   -10,    58,
-      59,    60,    61,    62,   -10,   -10,   -10,   -10,     0,   -10,
-     -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,
-      65,    66,    67,    68,   -10,   -10,   -10,   -10,    70,   -10,
-     -10,   -11,    43,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    44,     0,     0,    45,    46,
-       0,     0,    47,    48,    49,     1,    50,    51,   -11,   -11,
-       0,    52,     0,     0,     0,     0,   -11,   -11,   -11,   -11,
-     -11,   -11,   -11,   -11,     0,   -11,     0,   -11,   -11,   -11,
-       0,   -11,   -11,   -11,   -11,   -11,   -11,   -11,     0,     0,
-     -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,    57,
-     -11,   -11,   -11,   -11,   -11,   -11,    58,    59,    60,    61,
-      62,   -11,   -11,   -11,   -11,     0,   -11,   -11,   -11,   -11,
-     -11,   -11,   -11,   -11,   -11,   -11,     0,    65,    66,    67,
-      68,   -11,   -11,   -11,   -11,    70,   -11,   -11,  -174,    43,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    44,     0,     0,    45,    46,     0,     0,    47,
-      48,    49,     1,    50,    51,  -174,     0,     0,    52,     0,
-       0,     0,     0,    43,  -174,  -174,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    44,     0,     0,    45,
-      46,     0,     0,    47,    48,    49,     1,    50,    51,     0,
-       0,     0,    52,     0,     0,     0,    57,     0,     0,     0,
-       0,     0,     0,    58,    59,    60,    61,    62,    53,    54,
-      55,    56,     0,  -174,  -174,  -174,     0,     0,     0,    63,
-      64,     0,     0,     0,    65,    66,    67,    68,  -174,    69,
-      57,  -174,    70,     0,     0,     0,     0,    58,    59,    60,
-      61,    62,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    43,     0,    63,    64,     0,     0,     0,    65,    66,
-      67,    68,     0,    69,    44,     0,    70,    45,    46,     0,
-       0,    47,    48,    49,     1,    50,    51,     0,     0,     0,
-      52,     0,     0,     0,     0,     0,    43,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    53,     0,    55,    44,
+       0,     0,    28,     0,     0,     0,    28,   213,   214,   215,
+     216,   217,   218,   219,   220,   221,   222,   223,   224,   225,
+     226,   227,   228,   229,     0,     0,     0,     0,     0,     0,
+       0,   240,   241,   242,     0,     0,   246,   247,   248,   249,
+     250,   251,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   259,     0,     0,     0,     0,     0,
+       0,     0,     0,   266,     0,   268,    43,   270,     0,   272,
+       0,     0,     0,   275,   276,   277,     0,   278,     0,    44,
        0,     0,    45,    46,     0,     0,    47,    48,    49,     1,
-      50,    51,     0,     0,     0,    52,     0,     0,    57,     0,
-       0,     0,     0,     0,     0,    58,    59,    60,    61,    62,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    63,    64,     0,     0,     0,    65,    66,    67,    68,
-       0,    69,     0,    57,    70,     0,     0,     0,     0,     0,
-      58,    59,    60,    61,    62,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    63,    64,    43,     0,
-       0,    65,    66,    67,    68,     0,    69,  -174,  -174,    70,
-       0,    44,     0,     0,    45,    46,     0,    81,    47,    48,
-      49,     1,    50,    51,     0,     0,     0,    52,     0,     0,
+     129,   130,   -38,     0,     0,    52,    53,    54,    55,    56,
+       0,     0,     0,     0,     0,     0,   288,   289,     0,     0,
+       0,   291,   292,     0,     0,     0,     0,     0,     0,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,     0,    61,     0,     0,     0,     0,     0,     0,
+      62,    63,    64,    65,    66,   149,   150,   151,   152,   153,
+     154,   155,     0,     0,     0,   311,    67,    68,     0,     0,
+       0,     0,    69,     0,     0,    70,  -180,   131,   320,   194,
+       0,     0,     0,     0,     0,   195,     0,   320,     0,     0,
+       0,     0,     0,   139,   140,   141,   142,   143,   144,     0,
+     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
+       0,     0,     0,   349,   350,     0,     0,     0,   351,   149,
+     150,   151,   152,   153,   154,   155,    -8,    43,     0,     0,
+       0,   363,     0,     0,     0,     0,     0,   367,     0,     0,
+      44,     0,     0,    45,    46,     0,   374,    47,    48,    49,
+       1,    50,    51,    -8,    -8,     0,    52,    53,    54,    55,
+      56,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,     0,
+      -8,     0,    -8,    -8,    -8,     0,    -8,    -8,    -8,    -8,
+      -8,    -8,    -8,     0,     0,    -8,    -8,    -8,    -8,    -8,
+      -8,    -8,    -8,    -8,    61,    -8,    -8,    -8,    -8,    -8,
+      -8,    62,    63,    64,    65,    66,    -8,    -8,    -8,    -8,
+       0,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,    -8,
+      -8,     0,    -8,    -8,    -8,    -8,    70,    -8,    -8,    -9,
       43,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    44,     0,     0,    45,    46,     0,     0,
+      47,    48,    49,     1,    50,    51,    -9,    -9,     0,    52,
+      53,    54,    55,    56,    -9,    -9,    -9,    -9,    -9,    -9,
+      -9,    -9,     0,    -9,     0,    -9,    -9,    -9,     0,    -9,
+      -9,    -9,    -9,    -9,    -9,    -9,     0,     0,    -9,    -9,
+      -9,    -9,    -9,    -9,    -9,    -9,    -9,    61,    -9,    -9,
+      -9,    -9,    -9,    -9,    62,    63,    64,    65,    66,    -9,
+      -9,    -9,    -9,     0,    -9,    -9,    -9,    -9,    -9,    -9,
+      -9,    -9,    -9,    -9,     0,    -9,    -9,    -9,    -9,    70,
+      -9,    -9,   -10,    43,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    44,     0,     0,    45,
+      46,     0,     0,    47,    48,    49,     1,    50,    51,   -10,
+     -10,     0,    52,    53,    54,    55,    56,   -10,   -10,   -10,
+     -10,   -10,   -10,   -10,   -10,     0,   -10,     0,   -10,   -10,
+     -10,     0,   -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,
+       0,   -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,
+      61,   -10,   -10,   -10,   -10,   -10,   -10,    62,    63,    64,
+      65,    66,   -10,   -10,   -10,   -10,     0,   -10,   -10,   -10,
+     -10,   -10,   -10,   -10,   -10,   -10,   -10,     0,   -10,   -10,
+     -10,   -10,    70,   -10,   -10,   -11,    43,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    44,
+       0,     0,    45,    46,     0,     0,    47,    48,    49,     1,
+      50,    51,   -11,   -11,     0,    52,    53,    54,    55,    56,
+     -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,     0,   -11,
+       0,   -11,   -11,   -11,     0,   -11,   -11,   -11,   -11,   -11,
+     -11,   -11,     0,     0,   -11,   -11,   -11,   -11,   -11,   -11,
+     -11,   -11,   -11,    61,   -11,   -11,   -11,   -11,   -11,   -11,
+      62,    63,    64,    65,    66,   -11,   -11,   -11,   -11,     0,
+     -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,   -11,
+       0,   -11,   -11,   -11,   -11,    70,   -11,   -11,  -174,    43,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    44,     0,     0,    45,    46,     0,     0,    47,
+      48,    49,     1,    50,    51,  -174,     0,     0,    52,    53,
+      54,    55,    56,     1,  -174,  -174,     0,     2,     0,     0,
+       4,     5,     6,     7,     0,     0,     0,     8,     9,    10,
+      11,    12,     0,     0,     0,     0,    14,     0,     0,    15,
+      16,    17,     0,     0,    18,     0,    61,     0,    20,    21,
+      22,     0,     0,    62,    63,    64,    65,    66,     0,     0,
+       0,     0,     0,  -174,  -174,  -174,  -174,    43,     0,    67,
+      68,    23,    24,     0,  -174,   101,     0,  -174,    70,     0,
+      44,     0,     0,    45,    46,     0,     0,    47,    48,    49,
+       1,    50,    51,  -174,     0,     0,    52,    53,    54,    55,
+      56,     1,  -174,  -174,     0,     2,     0,     0,     4,     5,
+       6,     7,     0,     0,     0,     8,     9,    10,    11,     0,
+       0,     0,     0,     0,     0,     0,     0,    15,     0,    17,
+       0,     0,     0,     0,    61,     0,    20,    21,    22,     0,
+       0,    62,    63,    64,    65,    66,     0,     0,     0,     0,
+       0,  -174,  -174,  -174,    43,     0,     0,    67,    68,     0,
+      24,     0,  -174,    69,     0,  -174,    70,    44,     0,     0,
+      45,    46,     0,     0,    47,    48,    49,     1,    50,    51,
+       0,     0,     0,    52,    53,    54,    55,    56,     0,     0,
+       0,     0,     0,    43,     0,     0,     0,     0,     0,    57,
+      58,    59,    60,     0,     0,     0,    44,     0,     0,    45,
+      46,     0,     0,    47,    48,    49,     1,    50,    51,     0,
+       0,    61,    52,    53,    54,    55,    56,     0,    62,    63,
+      64,    65,    66,     0,     0,     0,     0,     0,    57,     0,
+      59,     0,     0,     0,    67,    68,     0,     0,     0,     0,
+      69,     0,     0,    70,     0,     0,     0,     0,     0,     0,
+      61,     0,     0,     0,     0,     0,     0,    62,    63,    64,
+      65,    66,     0,     0,    43,     0,     0,     0,     0,     0,
+       0,     0,     0,    67,    68,     0,     0,    44,     0,    69,
+      45,    46,    70,     0,    47,    48,    49,     1,    50,    51,
+      43,     0,     0,    52,    53,    54,    55,    56,     0,     0,
+       0,     0,     0,    44,     0,     0,    45,    46,     0,    81,
       47,    48,    49,     1,    50,    51,     0,     0,     0,    52,
-       0,     0,     0,     0,     0,    57,     0,     0,     0,     0,
-       0,     0,    58,    59,    60,    61,    62,     0,     0,     0,
-       0,     0,     0,     0,     0,   -38,     0,     0,    63,    64,
-       0,     0,     0,    65,    66,    67,    68,    57,    69,     0,
-       0,    70,     0,     0,    58,    59,    60,    61,    62,     0,
-       0,     0,   139,   140,   141,   142,   143,   144,     0,   145,
-      63,    64,   146,   147,   148,    65,    66,    67,    68,     0,
-      69,     1,     0,    70,     0,     2,     3,     0,   149,   150,
-     151,   152,   153,   154,   155,     4,     5,     6,     7,     8,
-       0,     0,     9,     0,    10,     0,     0,    11,    12,    13,
-       0,     0,    14,     0,     0,    15,    16,    17,    18,     0,
+      53,    54,    55,    56,     0,     0,     0,     0,     0,     0,
+       0,    61,     0,     0,     0,     0,     0,     0,    62,    63,
+      64,    65,    66,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    67,    68,     0,    61,     0,     0,
+      69,  -174,  -174,    70,    62,    63,    64,    65,    66,     0,
+       0,    43,     0,     0,     0,     0,     0,     0,     0,     0,
+      67,    68,     0,     0,    44,     0,    69,    45,    46,    70,
+       0,    47,    48,    49,     1,    50,    51,     0,     0,     0,
+      52,    53,    54,    55,    56,     0,   159,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     1,     0,     0,     0,     2,    19,
-      20,    21,     0,     0,     0,     0,     0,     0,     4,     5,
-       6,     7,     8,    22,    23,    24,    25,    10,     0,   305,
-      11,    12,    13,     0,     0,    14,     0,     0,     0,    16,
-      17,    18,     0,   139,   140,   141,   142,   143,   144,     0,
+       0,     0,     0,     0,   139,   140,   141,   142,   143,   144,
+       0,   145,   160,   161,   146,   147,   148,     0,    61,     0,
+       0,     0,     0,     0,     0,    62,    63,    64,    65,    66,
+     149,   150,   151,   152,   153,   154,   155,    57,     0,    59,
+       0,    67,    68,     0,     0,     0,     0,    69,     0,     0,
+      70,     0,     0,   139,   140,   141,   142,   143,   144,     0,
      145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
-       0,     0,    19,    20,   159,     0,     0,     0,     0,   149,
-     150,   151,   152,   153,   154,   155,    22,    23,    24,    25,
-       0,     0,   139,   140,   141,   142,   143,   144,     0,   145,
-     160,   161,   146,   147,   148,     0,     0,     0,     0,    53,
-       0,    55,     0,     0,     0,     0,     0,     0,   149,   150,
+       0,     0,   196,     0,     0,     0,     0,     0,   197,   149,
+     150,   151,   152,   153,   154,   155,   139,   140,   141,   142,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
+       0,     0,     0,     0,     0,   198,     0,     0,     0,     0,
+       0,   199,   149,   150,   151,   152,   153,   154,   155,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,     0,     0,     0,     0,     0,     0,   200,     0,
+       0,     0,     0,     0,   201,   149,   150,   151,   152,   153,
+     154,   155,   139,   140,   141,   142,   143,   144,     0,   145,
+       0,     0,   146,   147,   148,     0,     0,     0,     0,     0,
+       0,   305,     0,     0,     0,     0,     0,     0,   149,   150,
      151,   152,   153,   154,   155,   139,   140,   141,   142,   143,
      144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     177,   149,   150,   151,   152,   153,   154,   155,   139,   140,
+       0,     0,     0,     0,   306,     0,     0,     0,     0,     0,
+       0,   149,   150,   151,   152,   153,   154,   155,   139,   140,
      141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     148,     0,     0,     0,     0,     0,     0,   307,     0,     0,
        0,     0,     0,     0,   149,   150,   151,   152,   153,   154,
-     155,   194,     0,     0,     0,     0,   178,   195,     0,     0,
-       0,     0,     0,     0,     0,   139,   140,   141,   142,   143,
-     144,     0,   145,     0,     0,   146,   147,   148,     0,     0,
-       0,     0,     0,     0,   196,     0,     0,     0,     0,     0,
-     197,   149,   150,   151,   152,   153,   154,   155,   139,   140,
-     141,   142,   143,   144,     0,   145,     0,     0,   146,   147,
-     148,     0,     0,     0,     0,     0,     0,   198,     0,     0,
-       0,     0,     0,   199,   149,   150,   151,   152,   153,   154,
      155,   139,   140,   141,   142,   143,   144,     0,   145,     0,
        0,   146,   147,   148,     0,     0,     0,     0,     0,     0,
-     200,     0,     0,     0,     0,     0,   201,   149,   150,   151,
+     308,     0,     0,     0,     0,     0,     0,   149,   150,   151,
      152,   153,   154,   155,   139,   140,   141,   142,   143,   144,
        0,   145,     0,     0,   146,   147,   148,     0,     0,     0,
-       0,     0,     0,   306,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   177,
      149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
-     142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
-       0,     0,     0,     0,     0,     0,   307,     0,     0,     0,
-       0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
-     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
-     146,   147,   148,     0,     0,     0,     0,     0,     0,   308,
-       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
-     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
-     145,     0,     0,   146,   147,   148,   139,   140,   141,   142,
-     143,   144,     0,   145,     0,     0,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
-       0,     0,   149,   150,   151,   152,   153,   154,   155,     0,
-       0,   173,     0,     0,     0,     0,   204,   139,   140,   141,
      142,   143,   144,     0,   145,     0,     0,   146,   147,   148,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,   149,   150,   151,   152,   153,   154,   155,
-     139,   140,   141,   142,   143,   144,     0,   145,     0,     0,
-     146,   147,   148,     0,     0,     0,     0,     0,   202,   203,
-       0,     0,     0,     0,     0,     0,   149,   150,   151,   152,
-     153,   154,   155,   139,   140,   141,   142,   143,   144,     0,
-     145,     0,     0,   146,   147,   148,   139,   140,   141,   142,
-       0,     0,     0,   145,     0,     0,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,     0,     0,     0,     0,
-       0,     0,   149,   150,   151,   152,   153,   154,   155
+     173,   178,     0,     0,     0,     0,   139,   140,   141,   142,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,     0,
+       0,     0,     0,     0,     0,   149,   150,   151,   152,   153,
+     154,   155,     0,     0,     0,   204,   139,   140,   141,   142,
+     143,   144,     0,   145,     0,     0,   146,   147,   148,     0,
+       0,     0,     0,     0,   202,   203,     0,     0,     0,     0,
+       0,     0,   149,   150,   151,   152,   153,   154,   155,   139,
+     140,   141,   142,   143,   144,     0,   145,     0,     0,   146,
+     147,   148,   139,   140,   141,   142,     0,     0,     0,   145,
+       0,     0,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,     0,     0,     0,     0,     0,     0,   149,   150,
+     151,   152,   153,   154,   155
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,   240,    40,     0,   107,    39,    17,   334,     0,   263,
-     260,   366,    43,    13,    14,    15,   100,    54,    46,   103,
-      69,    49,    51,   378,    54,    69,   100,    64,   383,    57,
-      17,    18,    19,    64,    64,    63,    64,    24,   101,   102,
-     103,    24,    42,    30,    93,    94,    84,    91,    92,    93,
-      94,    54,   302,   380,   304,   101,   310,    51,    86,    87,
-     106,    64,    48,    74,    54,   315,    54,   101,   100,   319,
-      70,   103,    56,    57,    64,   100,    64,    46,   103,    79,
-     330,    81,    93,    83,   112,    65,    66,    67,    68,   101,
-      24,    25,    26,   102,   103,    95,    53,    97,    98,   103,
-     100,   101,   352,   100,   138,   105,   345,   107,   100,    96,
-      97,    98,    99,    96,    97,    98,    99,   102,   103,   157,
-     102,   103,   372,    48,   363,    24,   376,   230,     1,   103,
-     158,   106,   382,   106,   373,   105,   386,   103,   138,   103,
-     379,    14,   102,   103,    17,    18,    36,    37,    21,    22,
-      23,    24,    25,    26,   101,   102,   103,    30,   103,   159,
-     160,   161,    96,    97,    98,    99,   194,   103,   196,    53,
-     198,   106,   200,    44,   202,   203,    75,    76,    77,    78,
-     159,   160,   161,   100,    87,    27,    54,    35,    86,    85,
-      69,   191,   103,    72,    54,    68,    85,    96,    97,    98,
-      99,    53,    75,    76,    77,    78,    79,   100,    86,    86,
-     210,    90,    91,    92,    93,    94,    86,   253,    91,    92,
-     178,   314,   309,    96,    97,    98,    99,    -1,   101,   210,
-     230,   104,   105,   106,    -1,    -1,    -1,    -1,    -1,    -1,
+       0,   240,    40,     0,   107,    39,    21,   334,   263,    51,
+     260,    69,     0,    96,    72,    69,    43,    17,    18,    19,
+      24,    54,    51,    46,    48,    69,    49,    31,    32,    33,
+      34,    64,    90,    91,    92,    93,    94,    64,    61,    93,
+      94,    54,    42,    46,    67,    68,    84,    91,    92,    93,
+      94,    64,   302,   380,   304,   310,    54,    97,    54,    74,
+      36,    37,   102,    86,    87,   315,    64,   101,    64,   319,
+      70,    75,    76,    77,    78,   366,    54,    97,    93,    79,
+     330,    81,    96,    83,    53,    99,    64,   378,    96,   112,
+      96,    99,   383,    99,    99,    95,    53,    97,    98,   101,
+     100,   101,   352,   100,   138,   105,   345,   107,    96,    53,
+      54,    55,    56,    97,    98,    99,    97,    98,    99,   157,
+      99,    24,   372,    48,   363,   102,   376,   230,    31,    32,
+      33,    34,   382,    99,   373,   158,   386,   102,   138,    99,
+     379,    17,    18,    19,    56,    57,    98,    99,    24,   159,
+     160,   161,    98,    99,    30,    31,    32,    33,    34,   159,
+     160,   161,    98,    99,    98,    99,    99,    99,    96,    44,
+      87,   194,   102,   196,    27,   198,    54,   200,    24,   202,
+     203,    35,    28,    29,    86,    31,    32,    33,    34,    85,
+      99,   191,    38,    39,    40,    41,    42,    54,    85,    45,
+      86,    47,    53,    86,    50,    51,    52,    86,   100,    55,
+     210,   178,    58,    59,    60,    61,    24,    25,    26,   314,
+     309,   253,    -1,    31,    32,    33,    34,   210,    -1,    -1,
+     230,    -1,    -1,    -1,    -1,    -1,    82,    83,    84,    -1,
       -1,    -1,    -1,    -1,    -1,   245,    -1,    -1,    -1,    -1,
-      -1,    -1,   252,   253,   254,   255,    -1,   295,     6,   297,
-     260,    -1,   262,    11,    -1,   293,    -1,    -1,    16,    17,
-      -1,    19,    24,    -1,   312,    -1,    28,   305,   306,   307,
-     308,    -1,    -1,    -1,    -1,    33,    38,    39,    40,    41,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-      52,    -1,   302,   341,   304,    53,    -1,    59,    60,    61,
-      58,    59,    60,    61,    62,   315,    -1,    -1,    -1,   319,
-      -1,    69,    70,    -1,   362,    -1,    -1,    -1,    -1,    -1,
-     330,    83,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   342,    -1,    96,    97,    98,    99,    -1,    -1,
-      -1,    -1,   352,   101,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   365,    -1,   115,    -1,    -1,
-      -1,    -1,   372,    -1,    -1,    -1,   376,    -1,    -1,    -1,
-      -1,    -1,   382,    -1,    -1,    -1,   386,    -1,    -1,    -1,
-      -1,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,   154,   155,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   163,   164,   165,    -1,    -1,
-     168,   169,   170,   171,   172,   173,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   186,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   195,    -1,   197,
-      -1,   199,    -1,   201,    -1,    -1,    -1,   205,   206,   207,
-      -1,   209,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     238,   239,    -1,    -1,    14,   243,   244,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
-      30,    -1,    -1,    -1,    -1,    -1,    36,    37,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   287,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,
-      -1,    -1,   300,    -1,    -1,    75,    76,    77,    78,    79,
-      -1,   309,    -1,    -1,    -1,    85,    86,    87,    -1,    -1,
-      -1,    91,    92,    -1,    -1,    -1,    96,    97,    98,    99,
-     100,   101,    -1,   103,   104,    -1,    -1,   335,   336,    -1,
-      -1,    -1,   340,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       0,     1,    -1,    -1,    -1,   353,    -1,    -1,    -1,    -1,
-      -1,   359,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,
-     368,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
-      30,    -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,
-      40,    41,    42,    -1,    44,    -1,    46,    47,    48,    -1,
-      50,    51,    52,    53,    54,    55,    56,    -1,    -1,    59,
-      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    -1,    85,    86,    87,    88,    89,
-      90,    91,    92,    93,    94,    -1,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,     0,     1,    -1,
+      -1,    -1,   252,   253,   254,   255,    -1,   295,    10,   297,
+     260,    -1,   262,    15,    -1,    -1,    -1,    -1,    20,    21,
+     293,    23,    -1,    -1,   312,    -1,    -1,    -1,    -1,    -1,
+      -1,    33,   305,   306,   307,   308,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,
-      23,    24,    25,    26,    27,    28,    -1,    30,    -1,    -1,
-      -1,    -1,    35,    36,    37,    38,    39,    40,    41,    42,
-      -1,    44,    -1,    46,    47,    48,    -1,    50,    51,    52,
-      53,    54,    55,    56,    -1,    -1,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    -1,    85,    86,    87,    88,    89,    90,    91,    92,
-      93,    94,    -1,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,     0,     1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,
-      -1,    17,    18,    -1,    -1,    21,    22,    23,    24,    25,
-      26,    27,    28,    -1,    30,    -1,    -1,    -1,    -1,    35,
-      36,    37,    38,    39,    40,    41,    42,    -1,    44,    -1,
-      46,    47,    48,    -1,    50,    51,    52,    53,    54,    55,
-      56,    -1,    -1,    59,    60,    61,    62,    63,    64,    65,
-      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    -1,    85,
-      86,    87,    88,    89,    90,    91,    92,    93,    94,    -1,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    27,    28,
-      -1,    30,    -1,    -1,    -1,    -1,    35,    36,    37,    38,
-      39,    40,    41,    42,    -1,    44,    -1,    46,    47,    48,
-      -1,    50,    51,    52,    53,    54,    55,    56,    -1,    -1,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    -1,    85,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    -1,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,     0,     1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
-      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    -1,
-      -1,    -1,    -1,     1,    36,    37,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
-      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    -1,
-      -1,    -1,    30,    -1,    -1,    -1,    68,    -1,    -1,    -1,
-      -1,    -1,    -1,    75,    76,    77,    78,    79,    46,    47,
-      48,    49,    -1,    85,    86,    87,    -1,    -1,    -1,    91,
-      92,    -1,    -1,    -1,    96,    97,    98,    99,   100,   101,
-      68,   103,   104,    -1,    -1,    -1,    -1,    75,    76,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,     1,    -1,    91,    92,    -1,    -1,    -1,    96,    97,
-      98,    99,    -1,   101,    14,    -1,   104,    17,    18,    -1,
-      -1,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
-      30,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    48,    14,
+      -1,    -1,   302,   341,   304,    57,    -1,    -1,    -1,    -1,
+      62,    63,    64,    65,    66,   315,    -1,    69,    70,   319,
+      -1,    -1,    -1,    -1,   362,    -1,    -1,    -1,    -1,    -1,
+     330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   342,    -1,    -1,    -1,    -1,    -1,    -1,   101,
+      -1,    -1,   352,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   365,    -1,   119,    -1,    -1,
+      -1,    -1,   372,    -1,    -1,    -1,   376,    -1,    -1,    -1,
+      -1,    -1,   382,    -1,    -1,    -1,   386,   139,   140,   141,
+     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
+     152,   153,   154,   155,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   163,   164,   165,    -1,    -1,   168,   169,   170,   171,
+     172,   173,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   186,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   195,    -1,   197,     1,   199,    -1,   201,
+      -1,    -1,    -1,   205,   206,   207,    -1,   209,    -1,    14,
       -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
-      25,    26,    -1,    -1,    -1,    30,    -1,    -1,    68,    -1,
-      -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    91,    92,    -1,    -1,    -1,    96,    97,    98,    99,
-      -1,   101,    -1,    68,   104,    -1,    -1,    -1,    -1,    -1,
-      75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    91,    92,     1,    -1,
-      -1,    96,    97,    98,    99,    -1,   101,   102,   103,   104,
-      -1,    14,    -1,    -1,    17,    18,    -1,    20,    21,    22,
-      23,    24,    25,    26,    -1,    -1,    -1,    30,    -1,    -1,
+      25,    26,    35,    -1,    -1,    30,    31,    32,    33,    34,
+      -1,    -1,    -1,    -1,    -1,    -1,   238,   239,    -1,    -1,
+      -1,   243,   244,    -1,    -1,    -1,    -1,    -1,    -1,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,    76,    77,    78,    79,    88,    89,    90,    91,    92,
+      93,    94,    -1,    -1,    -1,   287,    91,    92,    -1,    -1,
+      -1,    -1,    97,    -1,    -1,   100,   101,   102,   300,    48,
+      -1,    -1,    -1,    -1,    -1,    54,    -1,   309,    -1,    -1,
+      -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    -1,
+      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   335,   336,    -1,    -1,    -1,   340,    88,
+      89,    90,    91,    92,    93,    94,     0,     1,    -1,    -1,
+      -1,   353,    -1,    -1,    -1,    -1,    -1,   359,    -1,    -1,
+      14,    -1,    -1,    17,    18,    -1,   368,    21,    22,    23,
+      24,    25,    26,    27,    28,    -1,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
+      44,    -1,    46,    47,    48,    -1,    50,    51,    52,    53,
+      54,    55,    56,    -1,    -1,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      -1,    85,    86,    87,    88,    89,    90,    91,    92,    93,
+      94,    -1,    96,    97,    98,    99,   100,   101,   102,     0,
        1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    28,    -1,    30,
+      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    -1,    44,    -1,    46,    47,    48,    -1,    50,
+      51,    52,    53,    54,    55,    56,    -1,    -1,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    -1,    85,    86,    87,    88,    89,    90,
+      91,    92,    93,    94,    -1,    96,    97,    98,    99,   100,
+     101,   102,     0,     1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    27,
+      28,    -1,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    -1,    44,    -1,    46,    47,
+      48,    -1,    50,    51,    52,    53,    54,    55,    56,    -1,
+      -1,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+      78,    79,    80,    81,    82,    83,    -1,    85,    86,    87,
+      88,    89,    90,    91,    92,    93,    94,    -1,    96,    97,
+      98,    99,   100,   101,   102,     0,     1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,
+      -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,    24,
+      25,    26,    27,    28,    -1,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    -1,    44,
+      -1,    46,    47,    48,    -1,    50,    51,    52,    53,    54,
+      55,    56,    -1,    -1,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      -1,    96,    97,    98,    99,   100,   101,   102,     0,     1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    14,    -1,    -1,    17,    18,    -1,    -1,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,    33,    34,    24,    36,    37,    -1,    28,    -1,    -1,
+      31,    32,    33,    34,    -1,    -1,    -1,    38,    39,    40,
+      41,    42,    -1,    -1,    -1,    -1,    47,    -1,    -1,    50,
+      51,    52,    -1,    -1,    55,    -1,    68,    -1,    59,    60,
+      61,    -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,
+      -1,    -1,    -1,    85,    86,    87,     0,     1,    -1,    91,
+      92,    82,    83,    -1,    96,    97,    -1,    99,   100,    -1,
+      14,    -1,    -1,    17,    18,    -1,    -1,    21,    22,    23,
+      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    33,
+      34,    24,    36,    37,    -1,    28,    -1,    -1,    31,    32,
+      33,    34,    -1,    -1,    -1,    38,    39,    40,    41,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
+      -1,    -1,    -1,    -1,    68,    -1,    59,    60,    61,    -1,
+      -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,    -1,
+      -1,    85,    86,    87,     1,    -1,    -1,    91,    92,    -1,
+      83,    -1,    96,    97,    -1,    99,   100,    14,    -1,    -1,
+      17,    18,    -1,    -1,    21,    22,    23,    24,    25,    26,
+      -1,    -1,    -1,    30,    31,    32,    33,    34,    -1,    -1,
+      -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    46,
+      47,    48,    49,    -1,    -1,    -1,    14,    -1,    -1,    17,
+      18,    -1,    -1,    21,    22,    23,    24,    25,    26,    -1,
+      -1,    68,    30,    31,    32,    33,    34,    -1,    75,    76,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    46,    -1,
+      48,    -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,
+      97,    -1,    -1,   100,    -1,    -1,    -1,    -1,    -1,    -1,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,    77,
+      78,    79,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    91,    92,    -1,    -1,    14,    -1,    97,
+      17,    18,   100,    -1,    21,    22,    23,    24,    25,    26,
+       1,    -1,    -1,    30,    31,    32,    33,    34,    -1,    -1,
+      -1,    -1,    -1,    14,    -1,    -1,    17,    18,    -1,    20,
       21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    30,
-      -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    75,    76,    77,    78,    79,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    35,    -1,    -1,    91,    92,
-      -1,    -1,    -1,    96,    97,    98,    99,    68,   101,    -1,
-      -1,   104,    -1,    -1,    75,    76,    77,    78,    79,    -1,
-      -1,    -1,    62,    63,    64,    65,    66,    67,    -1,    69,
-      91,    92,    72,    73,    74,    96,    97,    98,    99,    -1,
-     101,    24,    -1,   104,    -1,    28,    29,    -1,    88,    89,
-      90,    91,    92,    93,    94,    38,    39,    40,    41,    42,
-      -1,    -1,    45,    -1,    47,    -1,    -1,    50,    51,    52,
-      -1,    -1,    55,    -1,    -1,    58,    59,    60,    61,    -1,
+      31,    32,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    76,
+      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    91,    92,    -1,    68,    -1,    -1,
+      97,    98,    99,   100,    75,    76,    77,    78,    79,    -1,
+      -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      91,    92,    -1,    -1,    14,    -1,    97,    17,    18,   100,
+      -1,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
+      30,    31,    32,    33,    34,    -1,    44,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,    28,    82,
-      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    38,    39,
-      40,    41,    42,    96,    97,    98,    99,    47,    -1,    48,
-      50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,
-      60,    61,    -1,    62,    63,    64,    65,    66,    67,    -1,
+      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
+      -1,    69,    70,    71,    72,    73,    74,    -1,    68,    -1,
+      -1,    -1,    -1,    -1,    -1,    75,    76,    77,    78,    79,
+      88,    89,    90,    91,    92,    93,    94,    46,    -1,    48,
+      -1,    91,    92,    -1,    -1,    -1,    -1,    97,    -1,    -1,
+     100,    -1,    -1,    62,    63,    64,    65,    66,    67,    -1,
       69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    -1,    82,    83,    44,    -1,    -1,    -1,    -1,    88,
-      89,    90,    91,    92,    93,    94,    96,    97,    98,    99,
-      -1,    -1,    62,    63,    64,    65,    66,    67,    -1,    69,
-      70,    71,    72,    73,    74,    -1,    -1,    -1,    -1,    46,
+      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    54,    88,
+      89,    90,    91,    92,    93,    94,    62,    63,    64,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,
+      -1,    54,    88,    89,    90,    91,    92,    93,    94,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
+      -1,    -1,    -1,    -1,    54,    88,    89,    90,    91,    92,
+      93,    94,    62,    63,    64,    65,    66,    67,    -1,    69,
+      -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,
       -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
       90,    91,    92,    93,    94,    62,    63,    64,    65,    66,
       67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      54,    88,    89,    90,    91,    92,    93,    94,    62,    63,
-      64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
-      94,    48,    -1,    -1,    -1,    -1,   100,    54,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
-      67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,
       -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,
-      54,    88,    89,    90,    91,    92,    93,    94,    62,    63,
+      -1,    88,    89,    90,    91,    92,    93,    94,    62,    63,
       64,    65,    66,    67,    -1,    69,    -1,    -1,    72,    73,
       74,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
-      -1,    -1,    -1,    54,    88,    89,    90,    91,    92,    93,
+      -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
       94,    62,    63,    64,    65,    66,    67,    -1,    69,    -1,
       -1,    72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,
-      48,    -1,    -1,    -1,    -1,    -1,    54,    88,    89,    90,
+      48,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
       91,    92,    93,    94,    62,    63,    64,    65,    66,    67,
       -1,    69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,
-      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    54,
       88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
       65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
-      -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
-      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    48,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    62,    63,    64,    65,
-      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    88,
-      89,    90,    91,    92,    93,    94,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    -1,
-      -1,    56,    -1,    -1,    -1,    -1,   102,    62,    63,    64,
-      65,    66,    67,    -1,    69,    -1,    -1,    72,    73,    74,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    94,
-      62,    63,    64,    65,    66,    67,    -1,    69,    -1,    -1,
-      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    80,    81,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,
-      92,    93,    94,    62,    63,    64,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    62,    63,    64,    65,
-      -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,    88,
-      89,    90,    91,    92,    93,    94,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    91,    92,    93,    94
+      56,    96,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    88,    89,    90,    91,    92,    93,    94,    -1,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    91,    92,
+      93,    94,    -1,    -1,    -1,    98,    62,    63,    64,    65,
+      66,    67,    -1,    69,    -1,    -1,    72,    73,    74,    -1,
+      -1,    -1,    -1,    -1,    80,    81,    -1,    -1,    -1,    -1,
+      -1,    -1,    88,    89,    90,    91,    92,    93,    94,    62,
+      63,    64,    65,    66,    67,    -1,    69,    -1,    -1,    72,
+      73,    74,    62,    63,    64,    65,    -1,    -1,    -1,    69,
+      -1,    -1,    72,    73,    74,    88,    89,    90,    91,    92,
+      93,    94,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
+      90,    91,    92,    93,    94
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    24,    28,    29,    38,    39,    40,    41,    42,    45,
-      47,    50,    51,    52,    55,    58,    59,    60,    61,    82,
-      83,    84,    96,    97,    98,    99,   108,   109,   110,   111,
-     112,   113,   125,   131,   141,   149,   151,   153,   156,   152,
-     155,    51,   142,     1,    14,    17,    18,    21,    22,    23,
-      25,    26,    30,    46,    47,    48,    49,    68,    75,    76,
-      77,    78,    79,    91,    92,    96,    97,    98,    99,   101,
-     104,   110,   135,   137,   138,   139,   140,   150,   163,   154,
-      51,    20,   138,    56,    57,    17,    18,    19,    30,   110,
-     110,   110,   138,   138,   150,   144,   138,   143,   157,     0,
-     100,   101,   138,   161,   138,   132,   161,   132,   110,   146,
-     100,   137,    48,   137,   138,    46,   137,   138,   138,   138,
-     138,   138,   137,   137,   135,   135,   135,   135,   138,    25,
-      26,   106,   110,   138,   164,   165,   166,   167,   101,    62,
+       0,    24,    28,    29,    31,    32,    33,    34,    38,    39,
+      40,    41,    42,    45,    47,    50,    51,    52,    55,    58,
+      59,    60,    61,    82,    83,    84,   104,   105,   106,   107,
+     108,   109,   121,   127,   137,   145,   147,   149,   152,   148,
+     151,    51,   138,     1,    14,    17,    18,    21,    22,    23,
+      25,    26,    30,    31,    32,    33,    34,    46,    47,    48,
+      49,    68,    75,    76,    77,    78,    79,    91,    92,    97,
+     100,   106,   131,   133,   134,   135,   136,   146,   159,   150,
+      51,    20,   134,    56,    57,    17,    18,    19,    30,   106,
+     106,   106,   134,   134,   146,   140,   134,   139,   153,     0,
+      96,    97,   134,   157,   134,   128,   157,   128,   106,   142,
+      96,   133,    48,   133,   131,   131,   131,   131,   134,    46,
+     133,   134,   134,   134,   134,   134,   133,   133,   134,    25,
+      26,   102,   106,   134,   160,   161,   162,   163,    97,    62,
       63,    64,    65,    66,    67,    69,    72,    73,    74,    88,
-      89,    90,    91,    92,    93,    94,   150,   110,   110,    44,
-      70,    71,   110,   132,    54,    64,   137,   137,    54,    64,
-      54,    64,    53,    56,   150,   110,   148,    54,   100,   110,
-     147,   110,   109,   110,   138,   161,   103,   128,   110,   158,
-     158,   103,   137,   138,    48,    54,    48,    54,    48,    54,
-      48,    54,    80,    81,   102,   106,   106,   106,   105,   103,
-     103,   110,   161,   138,   138,   138,   138,   138,   138,   138,
-     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
-     132,   137,   110,   139,   110,   139,   110,   139,    43,    64,
-     138,   138,   138,    54,    64,    48,   138,   138,   138,   138,
-     138,   138,   103,   124,   124,   103,   102,   103,   102,   138,
-      53,   100,   103,   100,   110,   137,   138,   137,   138,   137,
-     138,   137,   138,   137,   137,   138,   138,   138,   138,    25,
-      26,   110,   167,   102,   103,   102,   158,    44,   138,   138,
-     128,   138,   138,   110,   110,   112,   113,   133,   134,   110,
-     145,   133,   160,   110,   160,    48,    48,    48,    48,   136,
-     100,   138,   120,   114,   117,   123,   137,   132,   132,   100,
-     138,   162,   129,   133,   133,   137,   137,   137,   137,   162,
-     160,   132,   130,   130,   133,    54,    64,    87,   133,   102,
-     103,   126,    27,   102,   133,   121,   115,   118,   129,   138,
-     138,   138,    36,    37,   127,   132,   110,   159,   128,    54,
-      35,    86,   133,   138,    85,   103,   122,   138,    54,   132,
-     128,   110,   123,   116,   138,    85,    53,   133,   128,   119,
-     133,    86,   123,   128,   129,   133,   123,    86,   133,    86
+      89,    90,    91,    92,    93,    94,   146,   106,   106,    44,
+      70,    71,   106,   128,    54,    64,   133,   133,    54,    64,
+      54,    64,    53,    56,   146,   106,   144,    54,    96,   106,
+     143,   106,   105,   106,   134,   157,    99,   124,   106,   154,
+     154,    99,   133,   134,    48,    54,    48,    54,    48,    54,
+      48,    54,    80,    81,    98,   102,   102,   102,   101,    99,
+      99,   106,   157,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     128,   133,   106,   135,   106,   135,   106,   135,    43,    64,
+     134,   134,   134,    54,    64,    48,   134,   134,   134,   134,
+     134,   134,    99,   120,   120,    99,    98,    99,    98,   134,
+      53,    96,    99,    96,   106,   133,   134,   133,   134,   133,
+     134,   133,   134,   133,   133,   134,   134,   134,   134,    25,
+      26,   106,   163,    98,    99,    98,   154,    44,   134,   134,
+     124,   134,   134,   106,   106,   108,   109,   129,   130,   106,
+     141,   129,   156,   106,   156,    48,    48,    48,    48,   132,
+      96,   134,   116,   110,   113,   119,   133,   128,   128,    96,
+     134,   158,   125,   129,   129,   133,   133,   133,   133,   158,
+     156,   128,   126,   126,   129,    54,    64,    87,   129,    98,
+      99,   122,    27,    98,   129,   117,   111,   114,   125,   134,
+     134,   134,    36,    37,   123,   128,   106,   155,   124,    54,
+      35,    86,   129,   134,    85,    99,   118,   134,    54,   128,
+     124,   106,   119,   112,   134,    85,    53,   129,   124,   115,
+     129,    86,   119,   124,   125,   129,   119,    86,   129,    86
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   107,   108,   108,   109,   109,   109,   110,   110,   110,
-     110,   110,   111,   111,   111,   111,   111,   111,   111,   111,
-     111,   111,   111,   111,   111,   111,   111,   111,   111,   112,
-     112,   113,   113,   113,   114,   115,   116,   113,   117,   118,
-     119,   113,   120,   121,   122,   113,   113,   113,   113,   113,
-     123,   124,   125,   125,   126,   126,   127,   128,   129,   130,
-     131,   132,   133,   133,   134,   134,   135,   135,   135,   135,
-     135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
-     135,   135,   135,   136,   135,   135,   135,   135,   137,   137,
-     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
-     138,   138,   138,   138,   138,   138,   138,   138,   139,   139,
-     139,   139,   139,   139,   139,   139,   139,   140,   140,   140,
-     140,   141,   141,   141,   141,   141,   142,   141,   143,   141,
-     144,   141,   141,   141,   141,   145,   141,   141,   141,   146,
-     146,   147,   147,   148,   148,   149,   149,   149,   149,   149,
-     149,   150,   150,   151,   151,   151,   152,   151,   154,   153,
-     153,   155,   153,   153,   153,   157,   156,   158,   158,   158,
-     159,   159,   159,   160,   161,   161,   161,   162,   162,   163,
-     164,   164,   164,   164,   165,   165,   166,   166,   167,   167,
-     167
+       0,   103,   104,   104,   105,   105,   105,   106,   106,   106,
+     106,   106,   107,   107,   107,   107,   107,   107,   107,   107,
+     107,   107,   107,   107,   107,   107,   107,   107,   107,   108,
+     108,   109,   109,   109,   110,   111,   112,   109,   113,   114,
+     115,   109,   116,   117,   118,   109,   109,   109,   109,   109,
+     119,   120,   121,   121,   122,   122,   123,   124,   125,   126,
+     127,   128,   129,   129,   130,   130,   131,   131,   131,   131,
+     131,   131,   131,   131,   131,   131,   131,   131,   131,   131,
+     131,   131,   131,   132,   131,   131,   131,   131,   133,   133,
+     134,   134,   134,   134,   134,   134,   134,   134,   134,   134,
+     134,   134,   134,   134,   134,   134,   134,   134,   135,   135,
+     135,   135,   135,   135,   135,   135,   135,   136,   136,   136,
+     136,   137,   137,   137,   137,   137,   138,   137,   139,   137,
+     140,   137,   137,   137,   137,   141,   137,   137,   137,   142,
+     142,   143,   143,   144,   144,   145,   145,   145,   145,   145,
+     145,   146,   146,   147,   147,   147,   148,   147,   150,   149,
+     149,   151,   149,   149,   149,   153,   152,   154,   154,   154,
+     155,   155,   155,   156,   157,   157,   157,   158,   158,   159,
+     160,   160,   160,   160,   161,   161,   162,   162,   163,   163,
+     163
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1881,61 +1859,61 @@ yydestruct (const char *yymsg,
     case 22: /* THEFUNC  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1885 "engines/director/lingo/lingo-gr.cpp"
+#line 1863 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* THEFUNCINOF  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1891 "engines/director/lingo/lingo-gr.cpp"
+#line 1869 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* VARID  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1897 "engines/director/lingo/lingo-gr.cpp"
+#line 1875 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 25: /* STRING  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1903 "engines/director/lingo/lingo-gr.cpp"
+#line 1881 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 26: /* SYMBOL  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1909 "engines/director/lingo/lingo-gr.cpp"
+#line 1887 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 27: /* ENDCLAUSE  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1915 "engines/director/lingo/lingo-gr.cpp"
+#line 1893 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 28: /* tPLAYACCEL  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1921 "engines/director/lingo/lingo-gr.cpp"
+#line 1899 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 29: /* tMETHOD  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1927 "engines/director/lingo/lingo-gr.cpp"
+#line 1905 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 110: /* ID  */
+    case 106: /* ID  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1933 "engines/director/lingo/lingo-gr.cpp"
+#line 1911 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 156: /* on  */
+    case 152: /* on  */
 #line 210 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1939 "engines/director/lingo/lingo-gr.cpp"
+#line 1917 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2216,25 +2194,25 @@ yyreduce:
   case 8:
 #line 222 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("cast"); }
-#line 2220 "engines/director/lingo/lingo-gr.cpp"
+#line 2198 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
 #line 223 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("field"); }
-#line 2226 "engines/director/lingo/lingo-gr.cpp"
+#line 2204 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
 #line 224 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("script"); }
-#line 2232 "engines/director/lingo/lingo-gr.cpp"
+#line 2210 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 225 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = new Common::String("window"); }
-#line 2238 "engines/director/lingo/lingo-gr.cpp"
+#line 2216 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
@@ -2246,7 +2224,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2250 "engines/director/lingo/lingo-gr.cpp"
+#line 2228 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2254,7 +2232,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2258 "engines/director/lingo/lingo-gr.cpp"
+#line 2236 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2270,7 +2248,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2274 "engines/director/lingo/lingo-gr.cpp"
+#line 2252 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2282,7 +2260,7 @@ yyreduce:
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2286 "engines/director/lingo/lingo-gr.cpp"
+#line 2264 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2290,7 +2268,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_after);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2294 "engines/director/lingo/lingo-gr.cpp"
+#line 2272 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2302,7 +2280,7 @@ yyreduce:
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2306 "engines/director/lingo/lingo-gr.cpp"
+#line 2284 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2310,7 +2288,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_before);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2314 "engines/director/lingo/lingo-gr.cpp"
+#line 2292 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2322,7 +2300,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2326 "engines/director/lingo/lingo-gr.cpp"
+#line 2304 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20:
@@ -2334,7 +2312,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2338 "engines/director/lingo/lingo-gr.cpp"
+#line 2316 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 21:
@@ -2346,7 +2324,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2350 "engines/director/lingo/lingo-gr.cpp"
+#line 2328 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 22:
@@ -2358,7 +2336,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2362 "engines/director/lingo/lingo-gr.cpp"
+#line 2340 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 23:
@@ -2369,7 +2347,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2373 "engines/director/lingo/lingo-gr.cpp"
+#line 2351 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 24:
@@ -2380,7 +2358,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2384 "engines/director/lingo/lingo-gr.cpp"
+#line 2362 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 25:
@@ -2396,7 +2374,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2400 "engines/director/lingo/lingo-gr.cpp"
+#line 2378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 26:
@@ -2412,7 +2390,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2416 "engines/director/lingo/lingo-gr.cpp"
+#line 2394 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 27:
@@ -2424,7 +2402,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2428 "engines/director/lingo/lingo-gr.cpp"
+#line 2406 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 28:
@@ -2436,7 +2414,7 @@ yyreduce:
 		delete (yyvsp[-2].objectprop).obj;
 		delete (yyvsp[-2].objectprop).prop;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2440 "engines/director/lingo/lingo-gr.cpp"
+#line 2418 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2448,7 +2426,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		(*g_lingo->_currentAssembly)[(yyvsp[-1].code)] = start;	/* looping back */
 		endRepeat((yyvsp[-1].code) + 1, (yyvsp[-6].code));	}
-#line 2452 "engines/director/lingo/lingo-gr.cpp"
+#line 2430 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
@@ -2456,20 +2434,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2460 "engines/director/lingo/lingo-gr.cpp"
+#line 2438 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
 #line 373 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2467 "engines/director/lingo/lingo-gr.cpp"
+#line 2445 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
 #line 376 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_le); }
-#line 2473 "engines/director/lingo/lingo-gr.cpp"
+#line 2451 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2494,7 +2472,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2498 "engines/director/lingo/lingo-gr.cpp"
+#line 2476 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
@@ -2502,20 +2480,20 @@ yyreduce:
                                 { g_lingo->code1(LC::c_varpush);
 				  g_lingo->codeString((yyvsp[-2].s)->c_str());
 				  mVar((yyvsp[-2].s), globalCheck()); }
-#line 2506 "engines/director/lingo/lingo-gr.cpp"
+#line 2484 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
 #line 407 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_eval);
 				  g_lingo->codeString((yyvsp[-4].s)->c_str()); }
-#line 2513 "engines/director/lingo/lingo-gr.cpp"
+#line 2491 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
 #line 410 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_ge); }
-#line 2519 "engines/director/lingo/lingo-gr.cpp"
+#line 2497 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 41:
@@ -2540,7 +2518,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[pos] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end;	/* end, if cond fails */
 		endRepeat(pos + 1, nextPos); }
-#line 2544 "engines/director/lingo/lingo-gr.cpp"
+#line 2522 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 42:
@@ -2551,7 +2529,7 @@ yyreduce:
 				  g_lingo->codeFunc(&count, 1);
 				  g_lingo->code1(LC::c_intpush);	// start counter
 				  g_lingo->codeInt(1); }
-#line 2555 "engines/director/lingo/lingo-gr.cpp"
+#line 2533 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
@@ -2561,7 +2539,7 @@ yyreduce:
 				  g_lingo->code1(LC::c_stackpeek);	// get array size
 				  g_lingo->codeInt(2);
 				  g_lingo->code1(LC::c_le); }
-#line 2565 "engines/director/lingo/lingo-gr.cpp"
+#line 2543 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
@@ -2576,7 +2554,7 @@ yyreduce:
 				  g_lingo->codeString((yyvsp[-6].s)->c_str());
 				  mVar((yyvsp[-6].s), globalCheck());
 				  g_lingo->code1(LC::c_assign); }
-#line 2580 "engines/director/lingo/lingo-gr.cpp"
+#line 2558 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2600,7 +2578,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[jump + 1] = loop;		/* final count value */
 		(*g_lingo->_currentAssembly)[(yyvsp[-4].code)] = end;		/* end, if cond fails */
 		endRepeat(end2, nextPos); }
-#line 2604 "engines/director/lingo/lingo-gr.cpp"
+#line 2582 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
@@ -2613,7 +2591,7 @@ yyreduce:
 		} else {
 			warning("# LINGO: next repeat not inside repeat block");
 		} }
-#line 2617 "engines/director/lingo/lingo-gr.cpp"
+#line 2595 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
@@ -2621,31 +2599,31 @@ yyreduce:
                               {
 		g_lingo->code1(LC::c_whencode);
 		g_lingo->codeString((yyvsp[-2].s)->c_str()); }
-#line 2625 "engines/director/lingo/lingo-gr.cpp"
+#line 2603 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
 #line 491 "engines/director/lingo/lingo-gr.y"
                                                           { g_lingo->code1(LC::c_telldone); }
-#line 2631 "engines/director/lingo/lingo-gr.cpp"
+#line 2609 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
 #line 492 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->code1(LC::c_telldone); }
-#line 2637 "engines/director/lingo/lingo-gr.cpp"
+#line 2615 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
 #line 494 "engines/director/lingo/lingo-gr.y"
                                 { startRepeat(); }
-#line 2643 "engines/director/lingo/lingo-gr.cpp"
+#line 2621 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
 #line 496 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_tell); }
-#line 2649 "engines/director/lingo/lingo-gr.cpp"
+#line 2627 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
@@ -2657,7 +2635,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-6].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = end3;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-3].code), (yyvsp[-1].code)); }
-#line 2661 "engines/director/lingo/lingo-gr.cpp"
+#line 2639 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 53:
@@ -2669,7 +2647,7 @@ yyreduce:
 		(*g_lingo->_currentAssembly)[(yyvsp[-8].code)] = else1;		/* elsepart */
 		(*g_lingo->_currentAssembly)[(yyvsp[-5].code)] = end;		/* end, if cond fails */
 		g_lingo->processIf((yyvsp[-5].code), (yyvsp[-1].code)); }
-#line 2673 "engines/director/lingo/lingo-gr.cpp"
+#line 2651 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
@@ -2679,7 +2657,7 @@ yyreduce:
 		WRITE_UINT32(&else1, (yyvsp[0].code) + 1 - (yyvsp[-3].code) + 1);
 		(*g_lingo->_currentAssembly)[(yyvsp[-3].code)] = else1;	/* end, if cond fails */
 		g_lingo->codeLabel((yyvsp[0].code)); }
-#line 2683 "engines/director/lingo/lingo-gr.cpp"
+#line 2661 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
@@ -2687,7 +2665,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jumpifz, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2691 "engines/director/lingo/lingo-gr.cpp"
+#line 2669 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
@@ -2695,7 +2673,7 @@ yyreduce:
                                 {
 		g_lingo->code2(LC::c_jump, 0);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2699 "engines/director/lingo/lingo-gr.cpp"
+#line 2677 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
@@ -2703,20 +2681,20 @@ yyreduce:
                                         {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = g_lingo->_currentAssembly->size() - 1; }
-#line 2707 "engines/director/lingo/lingo-gr.cpp"
+#line 2685 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
 #line 534 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeLabel(0); }
-#line 2714 "engines/director/lingo/lingo-gr.cpp"
+#line 2692 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
 #line 537 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentAssembly->size(); }
-#line 2720 "engines/director/lingo/lingo-gr.cpp"
+#line 2698 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
@@ -2724,7 +2702,7 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2728 "engines/director/lingo/lingo-gr.cpp"
+#line 2706 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67:
@@ -2732,7 +2710,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2736 "engines/director/lingo/lingo-gr.cpp"
+#line 2714 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68:
@@ -2741,7 +2719,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2745 "engines/director/lingo/lingo-gr.cpp"
+#line 2723 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
@@ -2750,25 +2728,25 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2754 "engines/director/lingo/lingo-gr.cpp"
+#line 2732 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 70:
 #line 559 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[0].code); }
-#line 2760 "engines/director/lingo/lingo-gr.cpp"
+#line 2738 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 71:
 #line 560 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
-#line 2766 "engines/director/lingo/lingo-gr.cpp"
+#line 2744 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 72:
 #line 561 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_not); }
-#line 2772 "engines/director/lingo/lingo-gr.cpp"
+#line 2750 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 74:
@@ -2781,7 +2759,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2785 "engines/director/lingo/lingo-gr.cpp"
+#line 2763 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 75:
@@ -2792,7 +2770,7 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[-1].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[-1].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2796 "engines/director/lingo/lingo-gr.cpp"
+#line 2774 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 76:
@@ -2800,7 +2778,7 @@ yyreduce:
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2804 "engines/director/lingo/lingo-gr.cpp"
+#line 2782 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 77:
@@ -2808,7 +2786,7 @@ yyreduce:
                                         {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
 		delete (yyvsp[-2].s); }
-#line 2812 "engines/director/lingo/lingo-gr.cpp"
+#line 2790 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 78:
@@ -2819,19 +2797,19 @@ yyreduce:
 		g_lingo->codeString((yyvsp[0].objectprop).prop->c_str());
 		delete (yyvsp[0].objectprop).obj;
 		delete (yyvsp[0].objectprop).prop; }
-#line 2823 "engines/director/lingo/lingo-gr.cpp"
+#line 2801 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 79:
 #line 589 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_intersects); }
-#line 2829 "engines/director/lingo/lingo-gr.cpp"
+#line 2807 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 80:
 #line 590 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_within); }
-#line 2835 "engines/director/lingo/lingo-gr.cpp"
+#line 2813 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 82:
@@ -2842,13 +2820,13 @@ yyreduce:
 			g_lingo->codeFunc((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 2846 "engines/director/lingo/lingo-gr.cpp"
+#line 2824 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 83:
 #line 598 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 2852 "engines/director/lingo/lingo-gr.cpp"
+#line 2830 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 84:
@@ -2857,7 +2835,7 @@ yyreduce:
 			g_lingo->codeFunc((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 2861 "engines/director/lingo/lingo-gr.cpp"
+#line 2839 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 85:
@@ -2865,7 +2843,7 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2869 "engines/director/lingo/lingo-gr.cpp"
+#line 2847 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 86:
@@ -2878,127 +2856,127 @@ yyreduce:
 		}
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2882 "engines/director/lingo/lingo-gr.cpp"
+#line 2860 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 87:
 #line 614 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2888 "engines/director/lingo/lingo-gr.cpp"
+#line 2866 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 89:
 #line 617 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2894 "engines/director/lingo/lingo-gr.cpp"
+#line 2872 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 90:
 #line 619 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2900 "engines/director/lingo/lingo-gr.cpp"
+#line 2878 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 91:
 #line 620 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_add); }
-#line 2906 "engines/director/lingo/lingo-gr.cpp"
+#line 2884 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 92:
 #line 621 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_sub); }
-#line 2912 "engines/director/lingo/lingo-gr.cpp"
+#line 2890 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 93:
 #line 622 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mul); }
-#line 2918 "engines/director/lingo/lingo-gr.cpp"
+#line 2896 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 94:
 #line 623 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_div); }
-#line 2924 "engines/director/lingo/lingo-gr.cpp"
+#line 2902 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 95:
 #line 624 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_mod); }
-#line 2930 "engines/director/lingo/lingo-gr.cpp"
+#line 2908 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 96:
 #line 625 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gt); }
-#line 2936 "engines/director/lingo/lingo-gr.cpp"
+#line 2914 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 97:
 #line 626 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lt); }
-#line 2942 "engines/director/lingo/lingo-gr.cpp"
+#line 2920 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 98:
 #line 627 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_eq); }
-#line 2948 "engines/director/lingo/lingo-gr.cpp"
+#line 2926 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 99:
 #line 628 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_neq); }
-#line 2954 "engines/director/lingo/lingo-gr.cpp"
+#line 2932 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 100:
 #line 629 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ge); }
-#line 2960 "engines/director/lingo/lingo-gr.cpp"
+#line 2938 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 101:
 #line 630 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_le); }
-#line 2966 "engines/director/lingo/lingo-gr.cpp"
+#line 2944 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 102:
 #line 631 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_and); }
-#line 2972 "engines/director/lingo/lingo-gr.cpp"
+#line 2950 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 103:
 #line 632 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_or); }
-#line 2978 "engines/director/lingo/lingo-gr.cpp"
+#line 2956 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 104:
 #line 633 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_ampersand); }
-#line 2984 "engines/director/lingo/lingo-gr.cpp"
+#line 2962 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 105:
 #line 634 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_concat); }
-#line 2990 "engines/director/lingo/lingo-gr.cpp"
+#line 2968 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 106:
 #line 635 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_contains); }
-#line 2996 "engines/director/lingo/lingo-gr.cpp"
+#line 2974 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 107:
 #line 636 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_starts); }
-#line 3002 "engines/director/lingo/lingo-gr.cpp"
+#line 2980 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 108:
@@ -3006,55 +2984,55 @@ yyreduce:
                                         {
 		Common::String field("field");
 		g_lingo->codeFunc(&field, 1); }
-#line 3010 "engines/director/lingo/lingo-gr.cpp"
+#line 2988 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 109:
 #line 641 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_charOf); }
-#line 3016 "engines/director/lingo/lingo-gr.cpp"
+#line 2994 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 110:
 #line 642 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_charToOf); }
-#line 3022 "engines/director/lingo/lingo-gr.cpp"
+#line 3000 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 111:
 #line 643 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_itemOf); }
-#line 3028 "engines/director/lingo/lingo-gr.cpp"
+#line 3006 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 112:
 #line 644 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_itemToOf); }
-#line 3034 "engines/director/lingo/lingo-gr.cpp"
+#line 3012 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 113:
 #line 645 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_lineOf); }
-#line 3040 "engines/director/lingo/lingo-gr.cpp"
+#line 3018 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 114:
 #line 646 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_lineToOf); }
-#line 3046 "engines/director/lingo/lingo-gr.cpp"
+#line 3024 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 115:
 #line 647 "engines/director/lingo/lingo-gr.y"
                                                                 { g_lingo->code1(LC::c_wordOf); }
-#line 3052 "engines/director/lingo/lingo-gr.cpp"
+#line 3030 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 116:
 #line 648 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_wordToOf); }
-#line 3058 "engines/director/lingo/lingo-gr.cpp"
+#line 3036 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 118:
@@ -3062,7 +3040,7 @@ yyreduce:
                                                 {
 		Common::String cast("cast");
 		g_lingo->codeFunc(&cast, 1); }
-#line 3066 "engines/director/lingo/lingo-gr.cpp"
+#line 3044 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 119:
@@ -3070,7 +3048,7 @@ yyreduce:
                                         {
 		Common::String script("script");
 		g_lingo->codeFunc(&script, 1); }
-#line 3074 "engines/director/lingo/lingo-gr.cpp"
+#line 3052 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 120:
@@ -3078,13 +3056,13 @@ yyreduce:
                                         {
 		Common::String window("window");
 		g_lingo->codeFunc(&window, 1); }
-#line 3082 "engines/director/lingo/lingo-gr.cpp"
+#line 3060 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 121:
 #line 661 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_printtop); }
-#line 3088 "engines/director/lingo/lingo-gr.cpp"
+#line 3066 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 124:
@@ -3097,49 +3075,49 @@ yyreduce:
 		} else {
 			warning("# LINGO: exit repeat not inside repeat block");
 		} }
-#line 3101 "engines/director/lingo/lingo-gr.cpp"
+#line 3079 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 125:
 #line 672 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_procret); }
-#line 3107 "engines/director/lingo/lingo-gr.cpp"
+#line 3085 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 126:
 #line 673 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3113 "engines/director/lingo/lingo-gr.cpp"
+#line 3091 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 127:
 #line 673 "engines/director/lingo/lingo-gr.y"
                                                                                  { inLast(); }
-#line 3119 "engines/director/lingo/lingo-gr.cpp"
+#line 3097 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 128:
 #line 674 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3125 "engines/director/lingo/lingo-gr.cpp"
+#line 3103 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 129:
 #line 674 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3131 "engines/director/lingo/lingo-gr.cpp"
+#line 3109 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 130:
 #line 675 "engines/director/lingo/lingo-gr.y"
                                                         { inArgs(); }
-#line 3137 "engines/director/lingo/lingo-gr.cpp"
+#line 3115 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 131:
 #line 675 "engines/director/lingo/lingo-gr.y"
                                                                                    { inLast(); }
-#line 3143 "engines/director/lingo/lingo-gr.cpp"
+#line 3121 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 132:
@@ -3147,7 +3125,7 @@ yyreduce:
                                         {
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 2); }
-#line 3151 "engines/director/lingo/lingo-gr.cpp"
+#line 3129 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 133:
@@ -3155,7 +3133,7 @@ yyreduce:
                                                 {
 		Common::String open("open");
 		g_lingo->codeFunc(&open, 1); }
-#line 3159 "engines/director/lingo/lingo-gr.cpp"
+#line 3137 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 134:
@@ -3166,13 +3144,13 @@ yyreduce:
 			g_lingo->codeCmd((yyvsp[-3].s), 1);
 			delete (yyvsp[-3].s);
 			delete (yyvsp[-1].s); }
-#line 3170 "engines/director/lingo/lingo-gr.cpp"
+#line 3148 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 135:
 #line 688 "engines/director/lingo/lingo-gr.y"
                                       { g_lingo->code1(LC::c_lazyeval); g_lingo->codeString((yyvsp[-1].s)->c_str()); }
-#line 3176 "engines/director/lingo/lingo-gr.cpp"
+#line 3154 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 136:
@@ -3181,7 +3159,7 @@ yyreduce:
 			g_lingo->codeCmd((yyvsp[-6].s), (yyvsp[-1].narg) + 1);
 			delete (yyvsp[-6].s);
 			delete (yyvsp[-4].s); }
-#line 3185 "engines/director/lingo/lingo-gr.cpp"
+#line 3163 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 137:
@@ -3189,7 +3167,7 @@ yyreduce:
                                         {
 		g_lingo->codeCmd((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3193 "engines/director/lingo/lingo-gr.cpp"
+#line 3171 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 138:
@@ -3197,7 +3175,7 @@ yyreduce:
                                                 {
 		g_lingo->codeCmd((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3201 "engines/director/lingo/lingo-gr.cpp"
+#line 3179 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 139:
@@ -3205,7 +3183,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3209 "engines/director/lingo/lingo-gr.cpp"
+#line 3187 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 140:
@@ -3213,7 +3191,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarGlobal);
 		delete (yyvsp[0].s); }
-#line 3217 "engines/director/lingo/lingo-gr.cpp"
+#line 3195 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 141:
@@ -3221,7 +3199,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3225 "engines/director/lingo/lingo-gr.cpp"
+#line 3203 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 142:
@@ -3229,7 +3207,7 @@ yyreduce:
                                         {
 		mVar((yyvsp[0].s), kVarProperty);
 		delete (yyvsp[0].s); }
-#line 3233 "engines/director/lingo/lingo-gr.cpp"
+#line 3211 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 143:
@@ -3237,7 +3215,7 @@ yyreduce:
                                                 {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3241 "engines/director/lingo/lingo-gr.cpp"
+#line 3219 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 144:
@@ -3245,25 +3223,25 @@ yyreduce:
                                         {
 		mVar((yyvsp[0].s), kVarInstance);
 		delete (yyvsp[0].s); }
-#line 3249 "engines/director/lingo/lingo-gr.cpp"
+#line 3227 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 145:
 #line 728 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3255 "engines/director/lingo/lingo-gr.cpp"
+#line 3233 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 146:
 #line 729 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3261 "engines/director/lingo/lingo-gr.cpp"
+#line 3239 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 147:
 #line 730 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3267 "engines/director/lingo/lingo-gr.cpp"
+#line 3245 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 148:
@@ -3272,7 +3250,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3276 "engines/director/lingo/lingo-gr.cpp"
+#line 3254 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 149:
@@ -3281,7 +3259,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3285 "engines/director/lingo/lingo-gr.cpp"
+#line 3263 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 150:
@@ -3290,7 +3268,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3294 "engines/director/lingo/lingo-gr.cpp"
+#line 3272 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 153:
@@ -3299,7 +3277,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_play); }
-#line 3303 "engines/director/lingo/lingo-gr.cpp"
+#line 3281 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 154:
@@ -3308,7 +3286,7 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3312 "engines/director/lingo/lingo-gr.cpp"
+#line 3290 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 155:
@@ -3317,13 +3295,13 @@ yyreduce:
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3321 "engines/director/lingo/lingo-gr.cpp"
+#line 3299 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 156:
 #line 759 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3327 "engines/director/lingo/lingo-gr.cpp"
+#line 3305 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 157:
@@ -3332,13 +3310,13 @@ yyreduce:
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3336 "engines/director/lingo/lingo-gr.cpp"
+#line 3314 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 158:
 #line 789 "engines/director/lingo/lingo-gr.y"
              { startDef(); }
-#line 3342 "engines/director/lingo/lingo-gr.cpp"
+#line 3320 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 159:
@@ -3348,19 +3326,19 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3352 "engines/director/lingo/lingo-gr.cpp"
+#line 3330 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 160:
 #line 795 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3358 "engines/director/lingo/lingo-gr.cpp"
+#line 3336 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 161:
 #line 796 "engines/director/lingo/lingo-gr.y"
                   { startDef(); (*g_lingo->_methodVars)["me"] = kVarArgument; }
-#line 3364 "engines/director/lingo/lingo-gr.cpp"
+#line 3342 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 162:
@@ -3370,7 +3348,7 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1);
 		endDef();
 		delete (yyvsp[-6].s); }
-#line 3374 "engines/director/lingo/lingo-gr.cpp"
+#line 3352 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 163:
@@ -3383,7 +3361,7 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3387 "engines/director/lingo/lingo-gr.cpp"
+#line 3365 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 164:
@@ -3393,139 +3371,139 @@ yyreduce:
 		g_lingo->codeDefine(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		endDef();
 		delete (yyvsp[-5].s); }
-#line 3397 "engines/director/lingo/lingo-gr.cpp"
+#line 3375 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 165:
 #line 816 "engines/director/lingo/lingo-gr.y"
          { startDef(); }
-#line 3403 "engines/director/lingo/lingo-gr.cpp"
+#line 3381 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 166:
 #line 816 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.s) = (yyvsp[0].s); }
-#line 3409 "engines/director/lingo/lingo-gr.cpp"
+#line 3387 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 167:
 #line 818 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3415 "engines/director/lingo/lingo-gr.cpp"
+#line 3393 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 168:
 #line 819 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3421 "engines/director/lingo/lingo-gr.cpp"
+#line 3399 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 169:
 #line 820 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); mVar((yyvsp[0].s), kVarArgument); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3427 "engines/director/lingo/lingo-gr.cpp"
+#line 3405 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 171:
 #line 823 "engines/director/lingo/lingo-gr.y"
                                                         { delete (yyvsp[0].s); }
-#line 3433 "engines/director/lingo/lingo-gr.cpp"
+#line 3411 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 172:
 #line 824 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3439 "engines/director/lingo/lingo-gr.cpp"
+#line 3417 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 173:
 #line 826 "engines/director/lingo/lingo-gr.y"
                                         { inDef(); }
-#line 3445 "engines/director/lingo/lingo-gr.cpp"
+#line 3423 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 174:
 #line 828 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 0; }
-#line 3451 "engines/director/lingo/lingo-gr.cpp"
+#line 3429 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 175:
 #line 829 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.narg) = 1; }
-#line 3457 "engines/director/lingo/lingo-gr.cpp"
+#line 3435 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 176:
 #line 830 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3463 "engines/director/lingo/lingo-gr.cpp"
+#line 3441 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 177:
 #line 832 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3469 "engines/director/lingo/lingo-gr.cpp"
+#line 3447 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 178:
 #line 833 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3475 "engines/director/lingo/lingo-gr.cpp"
+#line 3453 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 179:
 #line 835 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = (yyvsp[-1].code); }
-#line 3481 "engines/director/lingo/lingo-gr.cpp"
+#line 3459 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 180:
 #line 837 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3487 "engines/director/lingo/lingo-gr.cpp"
+#line 3465 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 181:
 #line 838 "engines/director/lingo/lingo-gr.y"
                                                         { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3493 "engines/director/lingo/lingo-gr.cpp"
+#line 3471 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 182:
 #line 839 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3499 "engines/director/lingo/lingo-gr.cpp"
+#line 3477 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 183:
 #line 840 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3505 "engines/director/lingo/lingo-gr.cpp"
+#line 3483 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 184:
 #line 842 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3511 "engines/director/lingo/lingo-gr.cpp"
+#line 3489 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 185:
 #line 843 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3517 "engines/director/lingo/lingo-gr.cpp"
+#line 3495 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 186:
 #line 845 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3523 "engines/director/lingo/lingo-gr.cpp"
+#line 3501 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 187:
 #line 846 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3529 "engines/director/lingo/lingo-gr.cpp"
+#line 3507 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 188:
@@ -3534,7 +3512,7 @@ yyreduce:
 		g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3538 "engines/director/lingo/lingo-gr.cpp"
+#line 3516 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 189:
@@ -3543,7 +3521,7 @@ yyreduce:
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3547 "engines/director/lingo/lingo-gr.cpp"
+#line 3525 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 190:
@@ -3552,11 +3530,11 @@ yyreduce:
 		g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[-2].s)->c_str());
 		delete (yyvsp[-2].s); }
-#line 3556 "engines/director/lingo/lingo-gr.cpp"
+#line 3534 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3560 "engines/director/lingo/lingo-gr.cpp"
+#line 3538 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index be9df7f0ef..099766056c 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -82,10 +82,10 @@ extern int yydebug;
     tPLAYACCEL = 283,              /* tPLAYACCEL  */
     tMETHOD = 284,                 /* tMETHOD  */
     THEOBJECTPROP = 285,           /* THEOBJECTPROP  */
-    CAST = 286,                    /* CAST  */
-    FIELD = 287,                   /* FIELD  */
-    SCRIPT = 288,                  /* SCRIPT  */
-    WINDOW = 289,                  /* WINDOW  */
+    tCAST = 286,                   /* tCAST  */
+    tFIELD = 287,                  /* tFIELD  */
+    tSCRIPT = 288,                 /* tSCRIPT  */
+    tWINDOW = 289,                 /* tWINDOW  */
     tDOWN = 290,                   /* tDOWN  */
     tELSE = 291,                   /* tELSE  */
     tELSIF = 292,                  /* tELSIF  */
@@ -138,11 +138,7 @@ extern int yydebug;
     tON = 339,                     /* tON  */
     tENDIF = 340,                  /* tENDIF  */
     tENDREPEAT = 341,              /* tENDREPEAT  */
-    tENDTELL = 342,                /* tENDTELL  */
-    tCAST = 343,                   /* tCAST  */
-    tFIELD = 344,                  /* tFIELD  */
-    tSCRIPT = 345,                 /* tSCRIPT  */
-    tWINDOW = 346                  /* tWINDOW  */
+    tENDTELL = 342                 /* tENDTELL  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -166,7 +162,7 @@ union YYSTYPE
 		Common::String *prop;
 	} objectprop;
 
-#line 170 "engines/director/lingo/lingo-gr.h"
+#line 166 "engines/director/lingo/lingo-gr.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 7ea7486995..33f7292cf6 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -184,7 +184,7 @@ static void mVar(Common::String *s, VarType type) {
 %token<s> VARID STRING SYMBOL
 %token<s> ENDCLAUSE tPLAYACCEL tMETHOD
 %token<objectprop> THEOBJECTPROP
-%token<ref> CAST FIELD SCRIPT WINDOW
+%token tCAST tFIELD tSCRIPT tWINDOW
 %token tDOWN tELSE tELSIF tEXIT tGLOBAL tGO tGOLOOP tIF tIN tINTO tMACRO
 %token tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN
 %token tWITH tWHILE tFACTORY tOPEN tPLAY tINSTANCE


Commit: 085bc555b7ee3f42810c469b7c5954b6c6cce3d8
    https://github.com/scummvm/scummvm/commit/085bc555b7ee3f42810c469b7c5954b6c6cce3d8
Author: djsrv (dservilla at gmail.com)
Date: 2020-07-19T13:33:35-04:00

Commit Message:
DIRECTOR: LINGO: Add tests

Changed paths:
    engines/director/lingo/tests/chunks.lingo
    engines/director/lingo/tests/reference.lingo


diff --git a/engines/director/lingo/tests/chunks.lingo b/engines/director/lingo/tests/chunks.lingo
index 371d844fd8..17d3ad51be 100644
--- a/engines/director/lingo/tests/chunks.lingo
+++ b/engines/director/lingo/tests/chunks.lingo
@@ -4,3 +4,4 @@ put the last word of field 1 into field 3
 
 put the last char of "Macromedia, the multimedia company"
 put the last word of "Macromedia, the multimedia company"
+put the last word of "Macromedia, the multimedia company" && "man"
diff --git a/engines/director/lingo/tests/reference.lingo b/engines/director/lingo/tests/reference.lingo
index 77ed656337..53f5d71ac3 100644
--- a/engines/director/lingo/tests/reference.lingo
+++ b/engines/director/lingo/tests/reference.lingo
@@ -17,3 +17,12 @@ put line 1 to 5 of field the number of cast "MasterList" into field the number o
 -- user-defined handlers/factories w/ reference name
 -- (mainly to test grammar, so no factory definition)
 set theWindow = Window(mNew,#noGrowDoc,"Window " & windowNumber)
+
+-- other weird stuff with reference name
+put window("test")
+set window = 1
+put window
+window("test")
+window "test"
+window cast
+put cast cast




More information about the Scummvm-git-logs mailing list