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

sev- sev at scummvm.org
Sun May 10 23:10:30 UTC 2020


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

Summary:
eaa1bc5c46 DIRECTOR: LINGO: Support 'the FBLTIN OF <value>' syntax
5865959b36 DIRECTOR: LINGO: Added test for the new 'the' syntax
2761d3e080 DIRECTOR: LINGO: Removed special treatment of 'the sqrt of <value>'
fe7ea8e0a9 DIRECTOR: Remove special lexing for 'the value of'


Commit: eaa1bc5c46aa9365ba95b5f11b205fb09c14e605
    https://github.com/scummvm/scummvm/commit/eaa1bc5c46aa9365ba95b5f11b205fb09c14e605
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-11T00:56:30+02:00

Commit Message:
DIRECTOR: LINGO: Support 'the FBLTIN OF <value>' syntax

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 9c7ea1a8bf..9bfcd02d03 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -164,69 +164,70 @@ extern int yydebug;
     BLTIN = 277,                   /* BLTIN  */
     FBLTIN = 278,                  /* FBLTIN  */
     RBLTIN = 279,                  /* RBLTIN  */
-    ID = 280,                      /* ID  */
-    STRING = 281,                  /* STRING  */
-    HANDLER = 282,                 /* HANDLER  */
-    SYMBOL = 283,                  /* SYMBOL  */
-    ENDCLAUSE = 284,               /* ENDCLAUSE  */
-    tPLAYACCEL = 285,              /* tPLAYACCEL  */
-    tMETHOD = 286,                 /* tMETHOD  */
-    THEOBJECTFIELD = 287,          /* THEOBJECTFIELD  */
-    THEOBJECTREF = 288,            /* THEOBJECTREF  */
-    tDOWN = 289,                   /* tDOWN  */
-    tELSE = 290,                   /* tELSE  */
-    tELSIF = 291,                  /* tELSIF  */
-    tEXIT = 292,                   /* tEXIT  */
-    tGLOBAL = 293,                 /* tGLOBAL  */
-    tGO = 294,                     /* tGO  */
-    tIF = 295,                     /* tIF  */
-    tIN = 296,                     /* tIN  */
-    tINTO = 297,                   /* tINTO  */
-    tLOOP = 298,                   /* tLOOP  */
-    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  */
-    tNLELSE = 312,                 /* tNLELSE  */
-    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  */
+    THEFBLTIN = 280,               /* THEFBLTIN  */
+    ID = 281,                      /* ID  */
+    STRING = 282,                  /* STRING  */
+    HANDLER = 283,                 /* HANDLER  */
+    SYMBOL = 284,                  /* SYMBOL  */
+    ENDCLAUSE = 285,               /* ENDCLAUSE  */
+    tPLAYACCEL = 286,              /* tPLAYACCEL  */
+    tMETHOD = 287,                 /* tMETHOD  */
+    THEOBJECTFIELD = 288,          /* THEOBJECTFIELD  */
+    THEOBJECTREF = 289,            /* THEOBJECTREF  */
+    tDOWN = 290,                   /* tDOWN  */
+    tELSE = 291,                   /* tELSE  */
+    tELSIF = 292,                  /* tELSIF  */
+    tEXIT = 293,                   /* tEXIT  */
+    tGLOBAL = 294,                 /* tGLOBAL  */
+    tGO = 295,                     /* tGO  */
+    tIF = 296,                     /* tIF  */
+    tIN = 297,                     /* tIN  */
+    tINTO = 298,                   /* tINTO  */
+    tLOOP = 299,                   /* tLOOP  */
+    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  */
+    tNLELSE = 313,                 /* tNLELSE  */
+    tFACTORY = 314,                /* tFACTORY  */
+    tOPEN = 315,                   /* tOPEN  */
+    tPLAY = 316,                   /* tPLAY  */
+    tINSTANCE = 317,               /* tINSTANCE  */
+    tGE = 318,                     /* tGE  */
+    tLE = 319,                     /* tLE  */
+    tEQ = 320,                     /* tEQ  */
+    tNEQ = 321,                    /* tNEQ  */
+    tAND = 322,                    /* tAND  */
+    tOR = 323,                     /* tOR  */
+    tNOT = 324,                    /* tNOT  */
+    tMOD = 325,                    /* tMOD  */
+    tAFTER = 326,                  /* tAFTER  */
+    tBEFORE = 327,                 /* tBEFORE  */
+    tCONCAT = 328,                 /* tCONCAT  */
+    tCONTAINS = 329,               /* tCONTAINS  */
+    tSTARTS = 330,                 /* tSTARTS  */
+    tCHAR = 331,                   /* tCHAR  */
+    tITEM = 332,                   /* tITEM  */
+    tLINE = 333,                   /* tLINE  */
+    tWORD = 334,                   /* tWORD  */
+    tSPRITE = 335,                 /* tSPRITE  */
+    tINTERSECTS = 336,             /* tINTERSECTS  */
+    tWITHIN = 337,                 /* tWITHIN  */
+    tTELL = 338,                   /* tTELL  */
+    tPROPERTY = 339,               /* tPROPERTY  */
+    tON = 340,                     /* tON  */
+    tENDIF = 341,                  /* tENDIF  */
+    tENDREPEAT = 342,              /* tENDREPEAT  */
+    tENDTELL = 343                 /* tENDTELL  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -255,7 +256,7 @@ union YYSTYPE
 		Common::String *field;
 	} objectref;
 
-#line 259 "engines/director/lingo/lingo-gr.cpp"
+#line 260 "engines/director/lingo/lingo-gr.cpp"
 
 };
 typedef union YYSTYPE YYSTYPE;
@@ -298,135 +299,136 @@ enum yysymbol_kind_t
   YYSYMBOL_BLTIN = 22,                     /* BLTIN  */
   YYSYMBOL_FBLTIN = 23,                    /* FBLTIN  */
   YYSYMBOL_RBLTIN = 24,                    /* RBLTIN  */
-  YYSYMBOL_ID = 25,                        /* ID  */
-  YYSYMBOL_STRING = 26,                    /* STRING  */
-  YYSYMBOL_HANDLER = 27,                   /* HANDLER  */
-  YYSYMBOL_SYMBOL = 28,                    /* SYMBOL  */
-  YYSYMBOL_ENDCLAUSE = 29,                 /* ENDCLAUSE  */
-  YYSYMBOL_tPLAYACCEL = 30,                /* tPLAYACCEL  */
-  YYSYMBOL_tMETHOD = 31,                   /* tMETHOD  */
-  YYSYMBOL_THEOBJECTFIELD = 32,            /* THEOBJECTFIELD  */
-  YYSYMBOL_THEOBJECTREF = 33,              /* THEOBJECTREF  */
-  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_tIF = 40,                       /* tIF  */
-  YYSYMBOL_tIN = 41,                       /* tIN  */
-  YYSYMBOL_tINTO = 42,                     /* tINTO  */
-  YYSYMBOL_tLOOP = 43,                     /* tLOOP  */
-  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_tNLELSE = 57,                   /* tNLELSE  */
-  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_stmtonelinerwithif = 108,       /* stmtonelinerwithif  */
-  YYSYMBOL_stmt = 109,                     /* stmt  */
-  YYSYMBOL_tellstart = 110,                /* tellstart  */
-  YYSYMBOL_ifstmt = 111,                   /* ifstmt  */
-  YYSYMBOL_elseifstmtlist = 112,           /* elseifstmtlist  */
-  YYSYMBOL_elseifstmt = 113,               /* elseifstmt  */
-  YYSYMBOL_ifoneliner = 114,               /* ifoneliner  */
-  YYSYMBOL_repeatwhile = 115,              /* repeatwhile  */
-  YYSYMBOL_repeatwith = 116,               /* repeatwith  */
-  YYSYMBOL_if = 117,                       /* if  */
-  YYSYMBOL_elseif = 118,                   /* elseif  */
-  YYSYMBOL_begin = 119,                    /* begin  */
-  YYSYMBOL_end = 120,                      /* end  */
-  YYSYMBOL_stmtlist = 121,                 /* stmtlist  */
-  YYSYMBOL_when = 122,                     /* when  */
-  YYSYMBOL_simpleexpr = 123,               /* simpleexpr  */
-  YYSYMBOL_expr = 124,                     /* expr  */
-  YYSYMBOL_chunkexpr = 125,                /* chunkexpr  */
-  YYSYMBOL_reference = 126,                /* reference  */
-  YYSYMBOL_proc = 127,                     /* proc  */
-  YYSYMBOL_128_1 = 128,                    /* $@1  */
-  YYSYMBOL_129_2 = 129,                    /* $@2  */
-  YYSYMBOL_globallist = 130,               /* globallist  */
-  YYSYMBOL_propertylist = 131,             /* propertylist  */
-  YYSYMBOL_instancelist = 132,             /* instancelist  */
-  YYSYMBOL_gotofunc = 133,                 /* gotofunc  */
-  YYSYMBOL_gotomovie = 134,                /* gotomovie  */
-  YYSYMBOL_playfunc = 135,                 /* playfunc  */
-  YYSYMBOL_136_3 = 136,                    /* $@3  */
-  YYSYMBOL_defn = 137,                     /* defn  */
-  YYSYMBOL_138_4 = 138,                    /* $@4  */
-  YYSYMBOL_139_5 = 139,                    /* $@5  */
-  YYSYMBOL_140_6 = 140,                    /* $@6  */
-  YYSYMBOL_on = 141,                       /* on  */
-  YYSYMBOL_142_7 = 142,                    /* $@7  */
-  YYSYMBOL_argdef = 143,                   /* argdef  */
-  YYSYMBOL_endargdef = 144,                /* endargdef  */
-  YYSYMBOL_argstore = 145,                 /* argstore  */
-  YYSYMBOL_macro = 146,                    /* macro  */
-  YYSYMBOL_arglist = 147,                  /* arglist  */
-  YYSYMBOL_nonemptyarglist = 148,          /* nonemptyarglist  */
-  YYSYMBOL_list = 149,                     /* list  */
-  YYSYMBOL_valuelist = 150,                /* valuelist  */
-  YYSYMBOL_linearlist = 151,               /* linearlist  */
-  YYSYMBOL_proplist = 152,                 /* proplist  */
-  YYSYMBOL_proppair = 153                  /* proppair  */
+  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_THEOBJECTFIELD = 33,            /* THEOBJECTFIELD  */
+  YYSYMBOL_THEOBJECTREF = 34,              /* THEOBJECTREF  */
+  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_tIF = 41,                       /* tIF  */
+  YYSYMBOL_tIN = 42,                       /* tIN  */
+  YYSYMBOL_tINTO = 43,                     /* tINTO  */
+  YYSYMBOL_tLOOP = 44,                     /* tLOOP  */
+  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_tNLELSE = 58,                   /* tNLELSE  */
+  YYSYMBOL_tFACTORY = 59,                  /* tFACTORY  */
+  YYSYMBOL_tOPEN = 60,                     /* tOPEN  */
+  YYSYMBOL_tPLAY = 61,                     /* tPLAY  */
+  YYSYMBOL_tINSTANCE = 62,                 /* tINSTANCE  */
+  YYSYMBOL_tGE = 63,                       /* tGE  */
+  YYSYMBOL_tLE = 64,                       /* tLE  */
+  YYSYMBOL_tEQ = 65,                       /* tEQ  */
+  YYSYMBOL_tNEQ = 66,                      /* tNEQ  */
+  YYSYMBOL_tAND = 67,                      /* tAND  */
+  YYSYMBOL_tOR = 68,                       /* tOR  */
+  YYSYMBOL_tNOT = 69,                      /* tNOT  */
+  YYSYMBOL_tMOD = 70,                      /* tMOD  */
+  YYSYMBOL_tAFTER = 71,                    /* tAFTER  */
+  YYSYMBOL_tBEFORE = 72,                   /* tBEFORE  */
+  YYSYMBOL_tCONCAT = 73,                   /* tCONCAT  */
+  YYSYMBOL_tCONTAINS = 74,                 /* tCONTAINS  */
+  YYSYMBOL_tSTARTS = 75,                   /* tSTARTS  */
+  YYSYMBOL_tCHAR = 76,                     /* tCHAR  */
+  YYSYMBOL_tITEM = 77,                     /* tITEM  */
+  YYSYMBOL_tLINE = 78,                     /* tLINE  */
+  YYSYMBOL_tWORD = 79,                     /* tWORD  */
+  YYSYMBOL_tSPRITE = 80,                   /* tSPRITE  */
+  YYSYMBOL_tINTERSECTS = 81,               /* tINTERSECTS  */
+  YYSYMBOL_tWITHIN = 82,                   /* tWITHIN  */
+  YYSYMBOL_tTELL = 83,                     /* tTELL  */
+  YYSYMBOL_tPROPERTY = 84,                 /* tPROPERTY  */
+  YYSYMBOL_tON = 85,                       /* tON  */
+  YYSYMBOL_tENDIF = 86,                    /* tENDIF  */
+  YYSYMBOL_tENDREPEAT = 87,                /* tENDREPEAT  */
+  YYSYMBOL_tENDTELL = 88,                  /* tENDTELL  */
+  YYSYMBOL_89_ = 89,                       /* '<'  */
+  YYSYMBOL_90_ = 90,                       /* '>'  */
+  YYSYMBOL_91_ = 91,                       /* '&'  */
+  YYSYMBOL_92_ = 92,                       /* '+'  */
+  YYSYMBOL_93_ = 93,                       /* '-'  */
+  YYSYMBOL_94_ = 94,                       /* '*'  */
+  YYSYMBOL_95_ = 95,                       /* '/'  */
+  YYSYMBOL_96_ = 96,                       /* '%'  */
+  YYSYMBOL_97_n_ = 97,                     /* '\n'  */
+  YYSYMBOL_98_ = 98,                       /* '('  */
+  YYSYMBOL_99_ = 99,                       /* ')'  */
+  YYSYMBOL_100_ = 100,                     /* ','  */
+  YYSYMBOL_101_ = 101,                     /* '['  */
+  YYSYMBOL_102_ = 102,                     /* ']'  */
+  YYSYMBOL_103_ = 103,                     /* ':'  */
+  YYSYMBOL_YYACCEPT = 104,                 /* $accept  */
+  YYSYMBOL_program = 105,                  /* program  */
+  YYSYMBOL_programline = 106,              /* programline  */
+  YYSYMBOL_asgn = 107,                     /* asgn  */
+  YYSYMBOL_stmtoneliner = 108,             /* stmtoneliner  */
+  YYSYMBOL_stmtonelinerwithif = 109,       /* stmtonelinerwithif  */
+  YYSYMBOL_stmt = 110,                     /* stmt  */
+  YYSYMBOL_tellstart = 111,                /* tellstart  */
+  YYSYMBOL_ifstmt = 112,                   /* ifstmt  */
+  YYSYMBOL_elseifstmtlist = 113,           /* elseifstmtlist  */
+  YYSYMBOL_elseifstmt = 114,               /* elseifstmt  */
+  YYSYMBOL_ifoneliner = 115,               /* ifoneliner  */
+  YYSYMBOL_repeatwhile = 116,              /* repeatwhile  */
+  YYSYMBOL_repeatwith = 117,               /* repeatwith  */
+  YYSYMBOL_if = 118,                       /* if  */
+  YYSYMBOL_elseif = 119,                   /* elseif  */
+  YYSYMBOL_begin = 120,                    /* begin  */
+  YYSYMBOL_end = 121,                      /* end  */
+  YYSYMBOL_stmtlist = 122,                 /* stmtlist  */
+  YYSYMBOL_when = 123,                     /* when  */
+  YYSYMBOL_simpleexpr = 124,               /* simpleexpr  */
+  YYSYMBOL_expr = 125,                     /* expr  */
+  YYSYMBOL_chunkexpr = 126,                /* chunkexpr  */
+  YYSYMBOL_reference = 127,                /* reference  */
+  YYSYMBOL_proc = 128,                     /* proc  */
+  YYSYMBOL_129_1 = 129,                    /* $@1  */
+  YYSYMBOL_130_2 = 130,                    /* $@2  */
+  YYSYMBOL_globallist = 131,               /* globallist  */
+  YYSYMBOL_propertylist = 132,             /* propertylist  */
+  YYSYMBOL_instancelist = 133,             /* instancelist  */
+  YYSYMBOL_gotofunc = 134,                 /* gotofunc  */
+  YYSYMBOL_gotomovie = 135,                /* gotomovie  */
+  YYSYMBOL_playfunc = 136,                 /* playfunc  */
+  YYSYMBOL_137_3 = 137,                    /* $@3  */
+  YYSYMBOL_defn = 138,                     /* defn  */
+  YYSYMBOL_139_4 = 139,                    /* $@4  */
+  YYSYMBOL_140_5 = 140,                    /* $@5  */
+  YYSYMBOL_141_6 = 141,                    /* $@6  */
+  YYSYMBOL_on = 142,                       /* on  */
+  YYSYMBOL_143_7 = 143,                    /* $@7  */
+  YYSYMBOL_argdef = 144,                   /* argdef  */
+  YYSYMBOL_endargdef = 145,                /* endargdef  */
+  YYSYMBOL_argstore = 146,                 /* argstore  */
+  YYSYMBOL_macro = 147,                    /* macro  */
+  YYSYMBOL_arglist = 148,                  /* arglist  */
+  YYSYMBOL_nonemptyarglist = 149,          /* nonemptyarglist  */
+  YYSYMBOL_list = 150,                     /* list  */
+  YYSYMBOL_valuelist = 151,                /* valuelist  */
+  YYSYMBOL_linearlist = 152,               /* linearlist  */
+  YYSYMBOL_proplist = 153,                 /* proplist  */
+  YYSYMBOL_proppair = 154                  /* proppair  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
@@ -734,20 +736,20 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  127
+#define YYFINAL  129
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1768
+#define YYLAST   1771
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  103
+#define YYNTOKENS  104
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  51
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  172
+#define YYNRULES  173
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  376
+#define YYNSTATES  379
 
-#define YYMAXUTOK   342
+#define YYMAXUTOK   343
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -762,15 +764,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,
+      97,     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,
-      88,     2,    89,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,    96,    91,     2,
+      98,    99,    94,    92,   100,    93,     2,    95,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   103,     2,
+      89,     2,    90,     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,   101,     2,   102,     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,
@@ -795,7 +797,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
+      85,    86,    87,    88
 };
 
 #if YYDEBUG
@@ -809,17 +811,17 @@ static const yytype_int16 yyrline[] =
      324,   335,   336,   338,   345,   355,   366,   368,   374,   380,
      387,   389,   391,   392,   393,   395,   401,   404,   407,   411,
      415,   419,   427,   428,   430,   431,   432,   435,   438,   441,
-     447,   452,   458,   459,   460,   461,   462,   463,   464,   465,
-     466,   467,   468,   469,   470,   471,   472,   473,   474,   475,
-     476,   477,   478,   479,   480,   482,   483,   484,   485,   486,
-     487,   488,   489,   491,   494,   496,   497,   498,   499,   500,
-     501,   501,   502,   502,   503,   504,   507,   510,   511,   513,
-     517,   522,   526,   531,   535,   547,   548,   549,   550,   554,
-     558,   563,   564,   566,   570,   574,   578,   578,   608,   608,
-     608,   615,   616,   616,   623,   633,   641,   641,   643,   644,
-     645,   646,   648,   649,   650,   652,   654,   662,   663,   664,
-     666,   667,   669,   671,   672,   673,   674,   676,   677,   679,
-     680,   682,   686
+     444,   450,   455,   461,   462,   463,   464,   465,   466,   467,
+     468,   469,   470,   471,   472,   473,   474,   475,   476,   477,
+     478,   479,   480,   481,   482,   483,   485,   486,   487,   488,
+     489,   490,   491,   492,   494,   497,   499,   500,   501,   502,
+     503,   504,   504,   505,   505,   506,   507,   510,   513,   514,
+     516,   520,   525,   529,   534,   538,   550,   551,   552,   553,
+     557,   561,   566,   567,   569,   573,   577,   581,   581,   611,
+     611,   611,   618,   619,   619,   626,   636,   644,   644,   646,
+     647,   648,   649,   651,   652,   653,   655,   657,   665,   666,
+     667,   669,   670,   672,   674,   675,   676,   677,   679,   680,
+     682,   683,   685,   689
 };
 #endif
 
@@ -839,13 +841,13 @@ static const char *const yytname[] =
   "VOID", "VAR", "POINT", "RECT", "ARRAY", "OBJECT", "REFERENCE",
   "LEXERROR", "PARRAY", "INT", "ARGC", "ARGCNORET", "THEENTITY",
   "THEENTITYWITHID", "THEMENUITEMENTITY", "THEMENUITEMSENTITY", "FLOAT",
-  "BLTIN", "FBLTIN", "RBLTIN", "ID", "STRING", "HANDLER", "SYMBOL",
-  "ENDCLAUSE", "tPLAYACCEL", "tMETHOD", "THEOBJECTFIELD", "THEOBJECTREF",
-  "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO", "tIF", "tIN",
-  "tINTO", "tLOOP", "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS",
-  "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE",
-  "tNLELSE", "tFACTORY", "tOPEN", "tPLAY", "tINSTANCE", "tGE", "tLE",
-  "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE",
+  "BLTIN", "FBLTIN", "RBLTIN", "THEFBLTIN", "ID", "STRING", "HANDLER",
+  "SYMBOL", "ENDCLAUSE", "tPLAYACCEL", "tMETHOD", "THEOBJECTFIELD",
+  "THEOBJECTREF", "tDOWN", "tELSE", "tELSIF", "tEXIT", "tGLOBAL", "tGO",
+  "tIF", "tIN", "tINTO", "tLOOP", "tMACRO", "tMOVIE", "tNEXT", "tOF",
+  "tPREVIOUS", "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", "tWHEN", "tWITH",
+  "tWHILE", "tNLELSE", "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", "'<'", "'>'", "'&'", "'+'", "'-'",
@@ -881,13 +883,13 @@ 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,   342,    60,    62,
-      38,    43,    45,    42,    47,    37,    10,    40,    41,    44,
-      91,    93,    58
+     335,   336,   337,   338,   339,   340,   341,   342,   343,    60,
+      62,    38,    43,    45,    42,    47,    37,    10,    40,    41,
+      44,    91,    93,    58
 };
 #endif
 
-#define YYPACT_NINF (-272)
+#define YYPACT_NINF (-283)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -901,44 +903,44 @@ static const yytype_int16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     311,   -85,  -272,  -272,    23,  -272,  1041,  1122,    23,  1160,
-    -272,  -272,  -272,  -272,  -272,  -272,   -31,  -272,   884,  -272,
-    -272,   -27,  1003,    32,    99,    13,    22,  1241,   922,    34,
-    1241,  1241,  1241,  1241,  1241,  1241,  1241,  -272,  -272,  1241,
-    1241,  1241,   392,     8,  -272,  -272,  -272,  -272,  -272,  1241,
-       0,  1241,   722,  -272,  1661,  -272,  -272,  -272,  -272,  -272,
-    -272,  -272,  -272,  -272,  -272,  -272,  -272,   -45,  1003,  1241,
-    1661,   -34,  1241,   -34,  -272,  1241,  1661,   -26,  1241,  -272,
-    -272,    70,  -272,  1241,  -272,    60,  -272,  1233,  -272,    85,
-    -272,    97,   384,   103,  -272,   -33,    23,    23,   -14,    77,
-      98,  -272,  1558,  1233,  -272,  -272,    55,  -272,  1281,  1314,
-    1347,  1380,  1628,  1545,   131,   132,  -272,  -272,  1591,    58,
-      59,  -272,  1661,    61,    64,    66,  -272,  -272,   479,  1661,
-    -272,  -272,  1661,  -272,  -272,  1241,  1661,  -272,  -272,  1241,
-    1241,  1241,  1241,  1241,  1241,  1241,  1241,  1241,  1241,  1241,
-    1241,  1241,  1241,  1241,  1241,  1241,   141,  1241,   384,  1591,
-      -7,  1241,     2,    27,  1241,   -34,   141,  -272,    69,  1661,
-    1241,  -272,  -272,    23,    31,  1241,  1241,  -272,  1241,  1241,
-       7,   127,  1241,  1241,  1241,  -272,  1241,  -272,   150,  1241,
-    1241,  1241,  1241,  1241,  1241,  1241,  1241,  1241,  1241,  -272,
-    -272,  -272,    82,  -272,  -272,    23,    23,  -272,  1241,    93,
-    -272,  -272,  1241,  1241,   142,  -272,  1661,    21,    21,    21,
-      21,  1674,  1674,  -272,     5,    21,    21,    21,    21,     5,
-      -8,    -8,  -272,  -272,  -272,   -29,  -272,  1661,  -272,  -272,
-    1661,   -18,   168,  1661,  -272,   153,  -272,  -272,  1661,  1661,
-    1661,    21,  1241,  1241,   171,  1661,    21,  1661,  1661,  -272,
-    1661,  1413,  1661,  1446,  1661,  1479,  1661,  1512,  1661,  1661,
-     803,  -272,   172,  -272,  -272,  1661,    58,    59,  -272,   641,
-    1661,  1661,  -272,   146,   100,   175,   100,  -272,   141,  1241,
-    1661,    21,    23,  1241,  1241,  1241,  1241,  -272,   641,  -272,
-    -272,  -272,   115,  -272,   -21,   641,   803,   179,  -272,  -272,
-    -272,   -17,  1661,   152,  1661,  1661,  1661,  1661,  -272,   122,
-    -272,   641,   160,  1241,  -272,  -272,  -272,   560,   641,   100,
-    1241,  -272,   128,  1241,  1661,   117,   -28,   190,  -272,  1661,
-    -272,  1661,  -272,  -272,  -272,  -272,  1241,   133,  -272,  -272,
-    -272,   118,   641,  -272,   641,  -272,  1661,  -272,   803,   191,
-     641,   134,   641,   167,  -272,  -272,   135,  -272,   140,  -272,
-     143,  -272,  -272,   641,  -272,  -272
+     339,   -48,  -283,  -283,    31,  -283,  1075,  1157,    31,     7,
+    1194,  -283,  -283,  -283,  -283,  -283,  -283,    22,  -283,   919,
+    -283,  -283,    26,  1038,    28,    92,    33,    70,  1276,   956,
+      86,  1276,  1276,  1276,  1276,  1276,  1276,  1276,  -283,  -283,
+    1276,  1276,  1276,   421,     9,  -283,  -283,  -283,  -283,  -283,
+    1276,     1,  1276,   755,  -283,  1663,  -283,  -283,  -283,  -283,
+    -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,    19,  1038,
+    1276,  1663,    30,  1276,    30,  -283,    31,  1276,  1663,    34,
+    1276,  -283,  -283,   102,  -283,  1276,  -283,   106,  -283,   413,
+    -283,   133,  -283,   134,   153,   136,  -283,    -3,    31,    31,
+      11,   109,   111,  -283,  1560,   413,  -283,  -283,    65,  -283,
+    1268,  1316,  1349,  1382,  1630,  1547,   140,   144,  -283,  -283,
+    1593,    74,    75,  -283,  1663,    72,    84,    97,  -283,  -283,
+     509,  1663,  -283,  -283,  1663,  -283,  -283,  1276,  1663,  -283,
+    -283,  1276,  1276,  1276,  1276,  1276,  1276,  1276,  1276,  1276,
+    1276,  1276,  1276,  1276,  1276,  1276,  1276,  1276,   173,  1276,
+     153,  1593,    -9,  1276,    16,  -283,    56,  1276,    30,   173,
+    -283,   100,  1663,  1276,  -283,  -283,    31,    44,  1276,  1276,
+    -283,  1276,  1276,    15,   154,  1276,  1276,  1276,  -283,  1276,
+    -283,   175,  1276,  1276,  1276,  1276,  1276,  1276,  1276,  1276,
+    1276,  1276,  -283,  -283,  -283,   103,  -283,  -283,    31,    31,
+    -283,  1276,    68,  -283,  -283,  1276,  1276,   151,  -283,  1663,
+       8,     8,     8,     8,  1676,  1676,  -283,   -54,     8,     8,
+       8,     8,   -54,   -62,   -62,  -283,  -283,  -283,   -82,  -283,
+    1663,  -283,  -283,  1663,   -76,   180,  1663,  -283,   164,  -283,
+    -283,  1663,  1663,  1663,     8,  1276,  1276,   182,  1663,     8,
+    1663,  1663,  -283,  1663,  1415,  1663,  1448,  1663,  1481,  1663,
+    1514,  1663,  1663,   837,  -283,   185,  -283,  -283,  1663,    74,
+      75,  -283,   673,  1663,  1663,  -283,   159,   113,   196,   113,
+    -283,   173,  1276,  1663,     8,    31,  1276,  1276,  1276,  1276,
+    -283,   673,  -283,  -283,  -283,   142,  -283,    21,   673,   837,
+     204,  -283,  -283,  -283,    -8,  1663,   177,  1663,  1663,  1663,
+    1663,  -283,   145,  -283,   673,   178,  1276,  -283,  -283,  -283,
+     591,   673,   113,  1276,  -283,   147,  1276,  1663,    71,   -25,
+     209,  -283,  1663,  -283,  1663,  -283,  -283,  -283,  -283,  1276,
+     150,  -283,  -283,  -283,   137,   673,  -283,   673,  -283,  1663,
+    -283,   837,   212,   673,   152,   673,   187,  -283,  -283,   165,
+    -283,   155,  -283,   167,  -283,  -283,   673,  -283,  -283
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -946,66 +948,66 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,    56,    61,     0,    57,   157,   157,     0,    60,
-      59,    58,   136,   142,    70,    71,   109,   110,     0,    48,
-     138,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   112,   146,     0,
-       0,     0,   163,     0,     3,    72,    28,     7,    29,     0,
-       0,     0,     0,    64,    22,   104,    65,    23,   106,   107,
-       6,    50,    21,    63,     4,    60,    69,    60,     0,   157,
-     158,   116,   157,    67,   103,   157,   160,   156,   157,    50,
-     108,     0,   125,     0,   126,     0,   127,   128,   130,     0,
-      34,     0,   105,     0,    46,     0,     0,     0,     0,     0,
-       0,   141,   118,   133,   135,   123,   114,    86,     0,     0,
-       0,     0,     0,     0,     0,     0,    91,    92,     0,    59,
-      58,   164,   167,     0,   165,   166,   169,     1,     5,    51,
-      50,    50,    51,    51,    27,     0,    25,    26,    24,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   148,   157,     0,   158,
-       0,     0,     0,     0,     0,   137,   148,   119,   111,   132,
-       0,   129,   139,     0,     0,     0,     0,    47,     0,     0,
-       0,     0,     0,     0,     0,    55,     0,   134,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    38,
-      38,   121,   113,   147,    62,     0,     0,   162,     0,     0,
-       2,    52,     0,     0,     0,    35,    51,    82,    83,    80,
-      81,    84,    85,    77,    88,    89,    90,    79,    78,    87,
-      73,    74,    75,    76,   149,     0,   115,   159,    66,    68,
-     161,     0,     0,   131,    50,     0,     8,     9,    11,    12,
-      16,    14,     0,     0,     0,    15,    13,    20,   117,   124,
-      95,     0,    97,     0,    99,     0,   101,     0,    93,    94,
-       0,    52,     0,   172,   171,   168,     0,     0,   170,    51,
-      51,    51,    52,     0,   155,     0,   155,   120,   148,     0,
-      17,    18,     0,     0,     0,     0,     0,    51,    51,   122,
-      53,    54,     0,    52,     0,    51,     0,     0,    52,   150,
-      52,     0,    10,     0,    96,    98,   100,   102,    37,     0,
-      30,    51,     0,     0,    41,    51,   151,   145,   143,   155,
-       0,    36,     0,     0,    51,    51,     0,   152,    52,    19,
-      33,    51,    52,    50,    49,    42,     0,     0,    50,    45,
-     153,   144,   140,    52,    51,    52,    51,    39,     0,     0,
-      51,     0,    51,     0,    51,   154,     0,    31,     0,    52,
-       0,    32,    40,    51,    44,    43
+       0,     0,    56,    61,     0,    57,   158,   158,     0,     0,
+      60,    59,    58,   137,   143,    71,    72,   110,   111,     0,
+      48,   139,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   113,   147,
+       0,     0,     0,   164,     0,     3,    73,    28,     7,    29,
+       0,     0,     0,     0,    64,    22,   105,    65,    23,   107,
+     108,     6,    50,    21,    63,     4,    60,    70,    60,     0,
+     158,   159,   117,   158,    67,   104,     0,   158,   161,   157,
+     158,    50,   109,     0,   126,     0,   127,     0,   128,   129,
+     131,     0,    34,     0,   106,     0,    46,     0,     0,     0,
+       0,     0,     0,   142,   119,   134,   136,   124,   115,    87,
+       0,     0,     0,     0,     0,     0,     0,     0,    92,    93,
+       0,    59,    58,   165,   168,     0,   166,   167,   170,     1,
+       5,    51,    50,    50,    51,    51,    27,     0,    25,    26,
+      24,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   149,   158,
+       0,   159,     0,     0,     0,    69,     0,     0,   138,   149,
+     120,   112,   133,     0,   130,   140,     0,     0,     0,     0,
+      47,     0,     0,     0,     0,     0,     0,     0,    55,     0,
+     135,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    38,    38,   122,   114,   148,    62,     0,     0,
+     163,     0,     0,     2,    52,     0,     0,     0,    35,    51,
+      83,    84,    81,    82,    85,    86,    78,    89,    90,    91,
+      80,    79,    88,    74,    75,    76,    77,   150,     0,   116,
+     160,    66,    68,   162,     0,     0,   132,    50,     0,     8,
+       9,    11,    12,    16,    14,     0,     0,     0,    15,    13,
+      20,   118,   125,    96,     0,    98,     0,   100,     0,   102,
+       0,    94,    95,     0,    52,     0,   173,   172,   169,     0,
+       0,   171,    51,    51,    51,    52,     0,   156,     0,   156,
+     121,   149,     0,    17,    18,     0,     0,     0,     0,     0,
+      51,    51,   123,    53,    54,     0,    52,     0,    51,     0,
+       0,    52,   151,    52,     0,    10,     0,    97,    99,   101,
+     103,    37,     0,    30,    51,     0,     0,    41,    51,   152,
+     146,   144,   156,     0,    36,     0,     0,    51,    51,     0,
+     153,    52,    19,    33,    51,    52,    50,    49,    42,     0,
+       0,    50,    45,   154,   145,   141,    52,    51,    52,    51,
+      39,     0,     0,    51,     0,    51,     0,    51,   155,     0,
+      31,     0,    52,     0,    32,    40,    51,    44,    43
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -272,  -272,   101,  -272,  -264,  -272,     4,    26,  -272,  -272,
-    -272,  -272,  -272,  -272,   178,  -272,   -77,   -57,  -100,  -272,
-       6,    -6,  -272,    53,   180,  -272,  -272,  -272,  -272,  -272,
-    -272,   -19,  -272,  -272,  -272,  -272,  -272,  -272,  -272,  -272,
-    -161,  -272,  -271,   181,    11,  -272,  -272,  -272,  -272,  -272,
-      25
+    -283,  -283,   121,  -283,  -267,  -283,     3,    51,  -283,  -283,
+    -283,  -283,  -283,  -283,   202,  -283,   -79,   -21,  -187,  -283,
+       6,    -6,  -283,    79,   205,  -283,  -283,  -283,  -283,  -283,
+    -283,   -17,  -283,  -283,  -283,  -283,  -283,  -283,  -283,  -283,
+    -164,  -283,  -282,   206,    13,  -283,  -283,  -283,  -283,  -283,
+      45
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    43,    44,    45,    46,   133,   301,   270,    48,   335,
-     345,   134,    49,    50,    51,   346,   156,   211,   279,    52,
-      53,    54,    55,    56,    57,    81,   114,   168,   202,   106,
-      58,    88,    59,    78,    60,    89,   244,    79,    61,   115,
-     235,   351,   308,    62,   163,    77,    63,   123,   124,   125,
-     126
+      -1,    44,    45,    46,    47,   135,   304,   273,    49,   338,
+     348,   136,    50,    51,    52,   349,   158,   214,   282,    53,
+      54,    55,    56,    57,    58,    83,   116,   171,   205,   108,
+      59,    90,    60,    80,    61,    91,   247,    81,    62,   117,
+     238,   354,   311,    63,   166,    79,    64,   125,   126,   127,
+     128
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1013,364 +1015,366 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      70,    70,   166,    76,    47,   241,   297,   348,   127,   104,
-      66,    64,    87,   322,    74,   310,    92,    71,    73,    80,
-     178,   102,   103,    90,   107,   108,   109,   110,   111,   112,
-     113,   179,   323,   116,   117,   118,   122,     2,   100,   182,
-       3,   130,   325,   129,     5,   132,   136,   101,    65,    10,
-     183,    11,   157,   212,   213,     8,   246,   349,   338,   105,
-     252,   145,   158,   159,   131,   161,   159,   284,   171,   159,
-     285,   253,    70,   164,   145,   214,   215,   169,   286,   329,
-     160,   285,   285,   162,   187,   154,   155,    93,    94,   165,
-     145,   236,   161,   146,   364,   167,   152,   153,   154,   155,
-     238,   161,   180,   181,   128,   170,    31,    32,    33,    34,
-     172,   151,   152,   153,   154,   155,    95,    96,    97,   276,
-      41,   277,   173,    42,    98,   239,   161,   311,   177,   216,
-     184,    99,    47,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     185,    70,   343,   344,   188,   237,   201,   203,   240,   283,
-     205,   206,   207,   208,   243,   209,   234,   288,   242,   248,
-     249,   298,   250,   251,   254,   259,   255,   256,   257,   245,
-     258,   272,   305,   260,   261,   262,   263,   264,   265,   266,
-     267,   268,   269,   287,   282,   289,   292,   299,   306,   307,
-     309,   320,   275,   321,   326,   330,   280,   281,   327,   331,
-     328,   273,   274,   333,   340,   350,   365,   359,   357,   369,
-     367,   371,   302,   303,   304,   372,   271,   247,   374,   210,
-     135,     0,   137,   138,   278,     0,     0,     0,   352,     0,
-     318,   319,   354,     0,     0,     0,   290,   291,   324,     0,
-       0,     0,     0,   360,     0,   362,     0,     0,     0,     0,
-       0,     0,     0,     0,   332,     0,   355,     0,   336,   373,
-       0,   358,     0,     0,     0,     0,     0,   342,   347,     0,
-       0,     0,     0,   312,   353,     0,     0,   314,   315,   316,
-     317,     0,     0,     0,     0,     0,     0,   361,   313,   363,
-       0,     0,     0,   366,     0,   368,     0,   370,     0,     0,
-       0,    -5,     1,     0,     0,     0,   375,   334,     0,     0,
-       0,     0,     0,     0,   339,     2,     0,   341,     3,     4,
-       0,     0,     5,     6,     7,     8,     9,    10,     0,    11,
-     356,    12,    13,    14,    15,     0,     0,     0,    16,    17,
-      18,    19,     0,     0,     0,    20,     0,    21,     0,     0,
-      22,    23,    24,     0,     0,    25,     0,     0,     0,    26,
-      27,    28,    29,     0,     0,     0,     0,     0,     0,    30,
-       0,     0,     0,     0,     0,     0,    31,    32,    33,    34,
-      35,     0,     0,    36,    37,    38,     0,     0,     0,     0,
-       0,     0,    39,    40,     0,     0,     2,    -5,    41,     3,
-       4,    42,     0,     5,     0,     7,     8,    67,   119,     0,
-     120,     0,     0,     0,    14,    15,   174,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    68,     0,    24,     0,     0,   139,   140,   141,   142,
-     143,   144,     0,   145,   175,   176,   146,   147,   148,     0,
-      30,     0,     0,     0,     0,     0,     0,    31,    32,    33,
-      34,    35,   149,   150,   151,   152,   153,   154,   155,     0,
-       0,     0,     0,    39,    40,     0,     0,     0,     0,    41,
-       0,     0,    42,     2,   121,     0,     3,     4,     0,     0,
-       5,     6,     7,     8,     9,    10,     0,    11,     0,    12,
-      13,    14,    15,     0,     0,     0,    16,    17,    18,    19,
-       0,     0,     0,    20,     0,    21,     0,     0,    22,    23,
-      24,     0,     0,    25,     0,     0,     0,    26,    27,    28,
-      29,     0,     0,     0,     0,     0,     0,    30,     0,     0,
-       0,     0,     0,     0,    31,    32,    33,    34,    35,     0,
-       0,    36,    37,    38,     0,     0,     0,     0,     0,     0,
-      39,    40,     0,     0,     2,     0,    41,     3,     4,    42,
-       0,     5,     6,     7,     8,     9,    10,     0,    11,   337,
-      12,     0,    14,    15,     0,     0,     0,    16,    17,    18,
-      19,     0,     0,     0,     0,     0,    21,     0,     0,    22,
-      23,    24,     0,     0,    25,     0,     0,     0,     0,    27,
-      28,    29,     0,     0,     0,     0,     0,     0,    30,     0,
-       0,     0,     0,     0,     0,    31,    32,    33,    34,    35,
-       0,     0,    36,    37,     0,     0,     0,     0,     0,     0,
-       0,    39,    40,     0,     0,     2,   300,    41,     3,     4,
-      42,     0,     5,     6,     7,     8,     9,    10,     0,    11,
-       0,    12,     0,    14,    15,     0,     0,     0,    16,    17,
-      18,    19,     0,     0,     0,     0,     0,    21,     0,     0,
-      22,    23,    24,     0,     0,    25,     0,     0,     0,     0,
-      27,    28,    29,     0,     0,     0,     0,     0,     0,    30,
-       0,     0,     0,     0,     0,     0,    31,    32,    33,    34,
-      35,     0,     0,    36,    37,     0,     0,     0,     0,     0,
-       0,     0,    39,    40,     0,     0,     2,   300,    41,     3,
-       4,    42,     0,     5,     6,     7,     8,     9,    10,     0,
-      11,     0,    12,     0,    14,    15,     0,     0,     0,    16,
-      17,    18,    19,     0,     0,     0,     0,     0,     0,     0,
-       0,    22,     0,    24,     0,     0,     0,     0,     0,     0,
-       0,    27,    28,    29,     0,     0,     0,     0,     0,     0,
-      30,     0,     0,     0,     0,     0,     0,    31,    32,    33,
-      34,    35,     0,     0,     0,    37,     0,     0,     0,     0,
-       0,     0,     0,    39,    40,     0,     0,     2,     0,    41,
-       3,     4,    42,     0,     5,     6,     7,     8,     9,    10,
-       0,    11,     0,    12,     0,    14,    15,     0,     0,     0,
-      16,    17,    18,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    22,     0,    24,     0,     0,     0,     0,     0,
-       0,     0,    27,    28,    29,     0,     0,     0,     0,     0,
-       0,    30,     0,     0,     0,     0,     0,     0,    31,    32,
-      33,    34,    35,     0,     0,     0,    37,     0,     0,     0,
-       0,     0,     0,     0,    39,    40,     0,     0,     2,     0,
-      41,     3,     4,    42,     0,     5,     0,     7,     8,    67,
-      10,     0,    11,     0,     0,     0,    14,    15,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    82,     0,    83,
-      84,    85,    86,    68,     0,    24,     2,     0,     0,     3,
-       4,     0,     0,     5,     0,     7,     8,    67,    10,     0,
-      11,     0,    30,     0,    14,    15,     0,     0,     0,    31,
-      32,    33,    34,    35,     0,     0,     0,    83,     0,    85,
-       0,    68,     0,    24,     0,    39,    40,     0,     0,     0,
-       0,    41,     0,     0,    42,     0,     0,     0,     0,     0,
-      30,     0,     0,     0,     0,     0,     0,    31,    32,    33,
-      34,    35,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    39,    40,     0,     0,     2,     0,    41,
-       3,     4,    42,    91,     5,     0,     7,     8,    67,    10,
-       0,    11,     0,     0,     0,    14,    15,     0,     0,     0,
+      71,    71,   169,    48,    78,   244,   300,   313,   147,   129,
+      67,   351,   106,    89,    75,   287,   147,    94,   288,    72,
+      74,   289,   104,   105,   288,   109,   110,   111,   112,   113,
+     114,   115,   156,   157,   118,   119,   120,   124,   154,   155,
+     156,   157,   328,   132,   131,     2,   134,   138,     3,    65,
+     341,   181,     5,   215,   216,    76,   325,    66,    11,   102,
+      12,   352,   182,   160,   161,   185,   133,   161,     8,   255,
+     249,   161,   174,    82,    71,   326,   186,    92,   147,   172,
+     256,   148,   165,   162,    95,    96,   164,   301,   190,   332,
+     239,   163,   288,   168,   367,   279,   103,   280,   308,   153,
+     154,   155,   156,   157,   183,   184,   130,   346,   347,    97,
+      98,    99,   107,   217,   218,   241,   163,   159,   100,   324,
+      32,    33,    34,    35,   330,   101,   331,   314,   170,    42,
+     163,   219,    43,    48,   167,   220,   221,   222,   223,   224,
+     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+     235,   236,   173,    71,   355,   242,   163,   240,   357,   175,
+     176,   243,   180,   187,   188,   191,   204,   246,   291,   363,
+     206,   365,   251,   252,   210,   253,   254,   208,   209,   258,
+     259,   260,   248,   261,   211,   376,   263,   264,   265,   266,
+     267,   268,   269,   270,   271,   272,   177,   212,   286,   237,
+     245,   262,   257,   275,   285,   278,   290,   292,   295,   283,
+     284,   302,   309,   310,   276,   277,   141,   142,   143,   144,
+     145,   146,   312,   147,   178,   179,   148,   149,   150,   323,
+     329,   333,   336,   334,   343,   353,   360,   362,   368,   370,
+     372,   375,   151,   152,   153,   154,   155,   156,   157,   293,
+     294,   213,   374,   377,   274,   137,   250,   281,   139,   140,
+       0,   305,   306,   307,     0,     0,     0,   358,     0,     0,
+       0,     0,   361,     0,     0,     0,     0,     0,     0,   321,
+     322,     0,     0,     0,     0,     0,   315,   327,     0,     0,
+     317,   318,   319,   320,     0,     0,     0,     0,     0,     0,
+       0,   316,     0,   335,     0,     0,     0,   339,     0,     0,
+       0,     0,     0,     0,     0,     0,   345,   350,     0,     0,
+     337,     0,     0,   356,     0,     0,     0,   342,     0,     0,
+     344,     0,     0,     0,     0,     0,   364,     0,   366,    -5,
+       1,     0,   369,   359,   371,     0,   373,     0,     0,     0,
+       0,     0,     0,     2,     0,   378,     3,     4,     0,     0,
+       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
+      13,    14,    15,    16,     0,     0,     0,    17,    18,    19,
+      20,     0,     0,     0,    21,     0,    22,     0,     0,    23,
+      24,    25,     0,     0,    26,     0,     0,     0,    27,    28,
+      29,    30,     0,     0,     0,     0,     0,     0,    31,     0,
+       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
+       0,     0,    37,    38,    39,     0,     0,     0,     0,     0,
+       0,    40,    41,     0,     0,     2,    -5,    42,     3,     4,
+      43,     0,     5,     0,     7,     8,     9,    68,   121,     0,
+     122,     0,     0,     0,    15,    16,     0,     0,     0,    85,
+       0,    87,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    69,     0,    25,     0,     0,   141,   142,   143,   144,
+     145,   146,     0,   147,     0,     0,   148,   149,   150,     0,
+      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
+      35,    36,   151,   152,   153,   154,   155,   156,   157,     0,
+       0,     0,     0,    40,    41,     0,     0,     0,     0,    42,
+       0,     0,    43,     2,   123,     0,     3,     4,     0,     0,
+       5,     6,     7,     8,     9,    10,    11,     0,    12,     0,
+      13,    14,    15,    16,     0,     0,     0,    17,    18,    19,
+      20,     0,     0,     0,    21,     0,    22,     0,     0,    23,
+      24,    25,     0,     0,    26,     0,     0,     0,    27,    28,
+      29,    30,     0,     0,     0,     0,     0,     0,    31,     0,
+       0,     0,     0,     0,     0,    32,    33,    34,    35,    36,
+       0,     0,    37,    38,    39,     0,     0,     0,     0,     0,
+       0,    40,    41,     0,     0,     2,     0,    42,     3,     4,
+      43,     0,     5,     6,     7,     8,     9,    10,    11,     0,
+      12,   340,    13,     0,    15,    16,     0,     0,     0,    17,
+      18,    19,    20,     0,     0,     0,     0,     0,    22,     0,
+       0,    23,    24,    25,     0,     0,    26,     0,     0,     0,
+       0,    28,    29,    30,     0,     0,     0,     0,     0,     0,
+      31,     0,     0,     0,     0,     0,     0,    32,    33,    34,
+      35,    36,     0,     0,    37,    38,     0,     0,     0,     0,
+       0,     0,     0,    40,    41,     0,     0,     2,   303,    42,
+       3,     4,    43,     0,     5,     6,     7,     8,     9,    10,
+      11,     0,    12,     0,    13,     0,    15,    16,     0,     0,
+       0,    17,    18,    19,    20,     0,     0,     0,     0,     0,
+      22,     0,     0,    23,    24,    25,     0,     0,    26,     0,
+       0,     0,     0,    28,    29,    30,     0,     0,     0,     0,
+       0,     0,    31,     0,     0,     0,     0,     0,     0,    32,
+      33,    34,    35,    36,     0,     0,    37,    38,     0,     0,
+       0,     0,     0,     0,     0,    40,    41,     0,     0,     2,
+     303,    42,     3,     4,    43,     0,     5,     6,     7,     8,
+       9,    10,    11,     0,    12,     0,    13,     0,    15,    16,
+       0,     0,     0,    17,    18,    19,    20,     0,     0,     0,
+       0,     0,     0,     0,     0,    23,     0,    25,     0,     0,
+       0,     0,     0,     0,     0,    28,    29,    30,     0,     0,
+       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,    32,    33,    34,    35,    36,     0,     0,     0,    38,
+       0,     0,     0,     0,     0,     0,     0,    40,    41,     0,
+       0,     2,     0,    42,     3,     4,    43,     0,     5,     6,
+       7,     8,     9,    10,    11,     0,    12,     0,    13,     0,
+      15,    16,     0,     0,     0,    17,    18,    19,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    23,     0,    25,
+       0,     0,     0,     0,     0,     0,     0,    28,    29,    30,
+       0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
+       0,    38,     0,     0,     0,     0,     0,     0,     0,    40,
+      41,     0,     0,     2,     0,    42,     3,     4,    43,     0,
+       5,     0,     7,     8,     9,    68,    11,     0,    12,     0,
+       0,     0,    15,    16,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    84,     0,    85,    86,    87,    88,    69,
+       2,    25,     0,     3,     4,     0,     0,     5,     0,     7,
+       8,     9,    68,    11,     0,    12,     0,     0,    31,    15,
+      16,     0,     0,     0,     0,    32,    33,    34,    35,    36,
+       0,     0,    85,     0,    87,     0,    69,     0,    25,     0,
+       0,    40,    41,     0,     0,     0,     0,    42,     0,     0,
+      43,     0,     0,     0,     0,    31,     0,     0,     0,     0,
+       0,     0,    32,    33,    34,    35,    36,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    40,    41,
+       0,     0,     2,     0,    42,     3,     4,    43,    93,     5,
+       0,     7,     8,     9,    68,    11,     0,    12,     0,     0,
+       0,    15,    16,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    69,     2,
+      25,     0,     3,     4,     0,     0,     5,     0,     7,     8,
+       9,    68,    11,     0,    12,     0,     0,    31,    15,    16,
+       0,     0,     0,     0,    32,    33,    34,    35,    36,     0,
+       0,     0,     0,     0,     0,    69,     0,    25,     0,     0,
+      40,    41,     0,     0,     0,     0,    42,     0,     0,    43,
+       0,     0,     0,     0,    31,     0,     0,     0,     0,     0,
+       0,    32,    33,    34,    35,    36,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    40,    41,     0,
+       0,     2,     0,    70,     3,     4,    43,     0,     5,     0,
+       7,     8,     9,    68,    11,     0,    12,     0,     0,     0,
+      15,    16,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    69,     2,    25,
+       0,     3,     4,     0,     0,     5,     0,     7,     8,     9,
+      68,    11,     0,    12,     0,     0,    31,    15,    16,     0,
+       0,     0,     0,    32,    33,    34,    35,    36,     0,     0,
+       0,     0,     0,     0,    69,     0,    25,     0,     0,    40,
+      41,     0,     0,     0,     0,    73,     0,     0,    43,     0,
+       0,     0,     0,    31,     0,     0,     0,     0,     0,     0,
+      32,    33,    34,    35,    36,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
+       2,     0,    77,     3,     4,    43,     0,     5,     0,     7,
+       8,     9,    68,    11,     0,    12,     0,     0,     0,    15,
+      16,     0,     0,     0,     0,     0,   192,     0,     0,     0,
+       0,     0,   193,     0,     0,     0,    69,     0,    25,     0,
+       0,   141,   142,   143,   144,   145,   146,     0,   147,     0,
+       0,   148,   149,   150,     0,    31,     0,     0,     0,     0,
+       0,     0,    32,    33,    34,    35,    36,   151,   152,   153,
+     154,   155,   156,   157,   194,     0,     0,     0,    40,    41,
+     195,     0,     0,     0,    42,     0,     0,    43,     0,   141,
+     142,   143,   144,   145,   146,     0,   147,     0,     0,   148,
+     149,   150,     0,     0,     0,     0,     0,   196,     0,     0,
+       0,     0,     0,   197,     0,   151,   152,   153,   154,   155,
+     156,   157,   141,   142,   143,   144,   145,   146,     0,   147,
+       0,     0,   148,   149,   150,     0,     0,     0,     0,     0,
+     198,     0,     0,     0,     0,     0,   199,     0,   151,   152,
+     153,   154,   155,   156,   157,   141,   142,   143,   144,   145,
+     146,     0,   147,     0,     0,   148,   149,   150,     0,     0,
+       0,     0,     0,   296,     0,     0,     0,     0,     0,     0,
+       0,   151,   152,   153,   154,   155,   156,   157,   141,   142,
+     143,   144,   145,   146,     0,   147,     0,     0,   148,   149,
+     150,     0,     0,     0,     0,     0,   297,     0,     0,     0,
+       0,     0,     0,     0,   151,   152,   153,   154,   155,   156,
+     157,   141,   142,   143,   144,   145,   146,     0,   147,     0,
+       0,   148,   149,   150,     0,     0,     0,     0,     0,   298,
+       0,     0,     0,     0,     0,     0,     0,   151,   152,   153,
+     154,   155,   156,   157,   141,   142,   143,   144,   145,   146,
+       0,   147,     0,     0,   148,   149,   150,     0,     0,     0,
+       0,     0,   299,     0,     0,     0,     0,     0,     0,     0,
+     151,   152,   153,   154,   155,   156,   157,   141,   142,   143,
+     144,   145,   146,     0,   147,     0,     0,   148,   149,   150,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    68,     0,    24,     2,     0,     0,     3,     4,
-       0,     0,     5,     0,     7,     8,    67,    10,     0,    11,
-       0,    30,     0,    14,    15,     0,     0,     0,    31,    32,
-      33,    34,    35,     0,     0,     0,     0,     0,     0,     0,
-      68,     0,    24,     0,    39,    40,     0,     0,     0,     0,
-      41,     0,     0,    42,     0,     0,     0,     0,     0,    30,
-       0,     0,     0,     0,     0,     0,    31,    32,    33,    34,
-      35,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    39,    40,     0,     0,     2,     0,    69,     3,
-       4,    42,     0,     5,     0,     7,     8,    67,    10,     0,
-      11,     0,     0,     0,    14,    15,     0,     0,     0,     0,
+       0,   202,     0,   151,   152,   153,   154,   155,   156,   157,
+     141,   142,   143,   144,   145,   146,   189,   147,     0,     0,
+     148,   149,   150,   141,   142,   143,   144,   145,   146,     0,
+     147,     0,     0,   148,   149,   150,   151,   152,   153,   154,
+     155,   156,   157,     0,   203,     0,     0,     0,     0,   151,
+     152,   153,   154,   155,   156,   157,   141,   142,   143,   144,
+     145,   146,     0,   147,     0,     0,   148,   149,   150,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    68,     0,    24,     2,     0,     0,     3,     4,     0,
-       0,     5,     0,     7,     8,    67,    10,     0,    11,     0,
-      30,     0,    14,    15,     0,     0,     0,    31,    32,    33,
-      34,    35,     0,     0,     0,     0,     0,     0,     0,    68,
-       0,    24,     0,    39,    40,     0,     0,     0,     0,    72,
-       0,     0,    42,     0,     0,     0,     0,     0,    30,     0,
-       0,     0,     0,     0,     0,    31,    32,    33,    34,    35,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    39,    40,     0,     0,     2,     0,    75,     3,     4,
-      42,     0,     5,     0,     7,     8,    67,    10,     0,    11,
-       0,     0,     0,    14,    15,     0,     0,     0,    83,     0,
-      85,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      68,     0,    24,     0,     0,   139,   140,   141,   142,   143,
-     144,     0,   145,     0,     0,   146,   147,   148,     0,    30,
-       0,     0,     0,     0,     0,     0,    31,    32,    33,    34,
-      35,   149,   150,   151,   152,   153,   154,   155,   189,     0,
-       0,     0,    39,    40,   190,     0,     0,     0,    41,     0,
-       0,    42,     0,   139,   140,   141,   142,   143,   144,     0,
-     145,     0,     0,   146,   147,   148,     0,     0,     0,     0,
-       0,   191,     0,     0,     0,     0,     0,   192,     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,   193,     0,     0,     0,     0,     0,
-     194,     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,   195,     0,     0,
-       0,     0,     0,   196,     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,
-     293,     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,   294,     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,   295,     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,   296,
-       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,     0,     0,     0,     0,     0,     0,   199,     0,
-     149,   150,   151,   152,   153,   154,   155,   139,   140,   141,
-     142,   143,   144,   186,   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,   200,     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,     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,   197,   198,
-       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
+       0,     0,   151,   152,   153,   154,   155,   156,   157,     0,
+       0,     0,   207,   141,   142,   143,   144,   145,   146,     0,
+     147,     0,     0,   148,   149,   150,     0,     0,     0,     0,
+       0,   200,   201,     0,     0,     0,     0,     0,     0,   151,
+     152,   153,   154,   155,   156,   157,   141,   142,   143,   144,
+     145,   146,     0,   147,     0,     0,   148,   149,   150,   141,
+     142,   143,   144,     0,     0,     0,   147,     0,     0,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,     0,
+       0,     0,     0,     0,     0,   151,   152,   153,   154,   155,
+     156,   157
 };
 
 static const yytype_int16 yycheck[] =
 {
-       6,     7,    79,     9,     0,   166,   270,    35,     0,    28,
-       4,    96,    18,    34,     8,   286,    22,     6,     7,    50,
-      53,    27,    28,    50,    30,    31,    32,    33,    34,    35,
-      36,    64,    53,    39,    40,    41,    42,    14,    25,    53,
-      17,    41,   306,    49,    21,    51,    52,    25,    25,    26,
-      64,    28,    97,   130,   131,    24,    25,    85,   329,    25,
-      53,    69,    68,    69,    64,    99,    72,    96,    87,    75,
-      99,    64,    78,    99,    69,   132,   133,    83,    96,    96,
-      69,    99,    99,    72,   103,    93,    94,    55,    56,    78,
-      69,    98,    99,    72,   358,    25,    91,    92,    93,    94,
-      98,    99,    96,    97,    96,    45,    75,    76,    77,    78,
-      25,    90,    91,    92,    93,    94,    17,    18,    19,    26,
-      97,    28,    25,   100,    25,    98,    99,   288,    25,   135,
-      53,    32,   128,   139,   140,   141,   142,   143,   144,   145,
+       6,     7,    81,     0,    10,   169,   273,   289,    70,     0,
+       4,    36,    29,    19,     8,    97,    70,    23,   100,     6,
+       7,    97,    28,    29,   100,    31,    32,    33,    34,    35,
+      36,    37,    94,    95,    40,    41,    42,    43,    92,    93,
+      94,    95,   309,    42,    50,    14,    52,    53,    17,    97,
+     332,    54,    21,   132,   133,    48,    35,    26,    27,    26,
+      29,    86,    65,    69,    70,    54,    65,    73,    24,    54,
+      26,    77,    89,    51,    80,    54,    65,    51,    70,    85,
+      65,    73,    76,    70,    56,    57,    73,   274,   105,    97,
+      99,   100,   100,    80,   361,    27,    26,    29,   285,    91,
+      92,    93,    94,    95,    98,    99,    97,    36,    37,    17,
+      18,    19,    26,   134,   135,    99,   100,    98,    26,   306,
+      76,    77,    78,    79,   311,    33,   313,   291,    26,    98,
+     100,   137,   101,   130,   100,   141,   142,   143,   144,   145,
      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
-      52,   157,    35,    36,    99,   161,    25,    25,   164,   216,
-     102,   102,   101,    99,   170,    99,    25,   244,    99,   175,
-     176,   271,   178,   179,    47,    25,   182,   183,   184,   173,
-     186,    99,   282,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,   198,    25,    52,    42,    25,    25,    52,    99,
-      25,    86,   208,   303,    25,    53,   212,   213,   308,    87,
-     310,   205,   206,    53,    86,    25,    25,    99,    85,    52,
-      86,    86,   279,   280,   281,    85,   200,   174,    85,   128,
-      52,    -1,    52,    52,   209,    -1,    -1,    -1,   338,    -1,
-     297,   298,   342,    -1,    -1,    -1,   252,   253,   305,    -1,
-      -1,    -1,    -1,   353,    -1,   355,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   321,    -1,   343,    -1,   325,   369,
-      -1,   348,    -1,    -1,    -1,    -1,    -1,   334,   335,    -1,
-      -1,    -1,    -1,   289,   341,    -1,    -1,   293,   294,   295,
-     296,    -1,    -1,    -1,    -1,    -1,    -1,   354,   292,   356,
-      -1,    -1,    -1,   360,    -1,   362,    -1,   364,    -1,    -1,
-      -1,     0,     1,    -1,    -1,    -1,   373,   323,    -1,    -1,
-      -1,    -1,    -1,    -1,   330,    14,    -1,   333,    17,    18,
-      -1,    -1,    21,    22,    23,    24,    25,    26,    -1,    28,
-     346,    30,    31,    32,    33,    -1,    -1,    -1,    37,    38,
-      39,    40,    -1,    -1,    -1,    44,    -1,    46,    -1,    -1,
-      49,    50,    51,    -1,    -1,    54,    -1,    -1,    -1,    58,
-      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,    84,    -1,    -1,    -1,    -1,
-      -1,    -1,    91,    92,    -1,    -1,    14,    96,    97,    17,
-      18,   100,    -1,    21,    -1,    23,    24,    25,    26,    -1,
-      28,    -1,    -1,    -1,    32,    33,    42,    -1,    -1,    -1,
+     156,   157,    46,   159,   341,    99,   100,   163,   345,    26,
+      26,   167,    26,    54,    53,   100,    26,   173,   247,   356,
+      26,   358,   178,   179,   102,   181,   182,   103,   103,   185,
+     186,   187,   176,   189,   100,   372,   192,   193,   194,   195,
+     196,   197,   198,   199,   200,   201,    43,   100,   219,    26,
+     100,    26,    48,   100,    53,   211,    26,    43,    26,   215,
+     216,    26,    53,   100,   208,   209,    63,    64,    65,    66,
+      67,    68,    26,    70,    71,    72,    73,    74,    75,    87,
+      26,    54,    54,    88,    87,    26,    86,   100,    26,    87,
+      53,    86,    89,    90,    91,    92,    93,    94,    95,   255,
+     256,   130,    87,    86,   203,    53,   177,   212,    53,    53,
+      -1,   282,   283,   284,    -1,    -1,    -1,   346,    -1,    -1,
+      -1,    -1,   351,    -1,    -1,    -1,    -1,    -1,    -1,   300,
+     301,    -1,    -1,    -1,    -1,    -1,   292,   308,    -1,    -1,
+     296,   297,   298,   299,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   295,    -1,   324,    -1,    -1,    -1,   328,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   337,   338,    -1,    -1,
+     326,    -1,    -1,   344,    -1,    -1,    -1,   333,    -1,    -1,
+     336,    -1,    -1,    -1,    -1,    -1,   357,    -1,   359,     0,
+       1,    -1,   363,   349,   365,    -1,   367,    -1,    -1,    -1,
+      -1,    -1,    -1,    14,    -1,   376,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      31,    32,    33,    34,    -1,    -1,    -1,    38,    39,    40,
+      41,    -1,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,
+      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,
+      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
+      -1,    -1,    83,    84,    85,    -1,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    -1,    -1,    14,    97,    98,    17,    18,
+     101,    -1,    21,    -1,    23,    24,    25,    26,    27,    -1,
+      29,    -1,    -1,    -1,    33,    34,    -1,    -1,    -1,    46,
+      -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    50,    -1,    52,    -1,    -1,    63,    64,    65,    66,
+      67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,
+      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
+      79,    80,    89,    90,    91,    92,    93,    94,    95,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    98,
+      -1,    -1,   101,    14,   103,    -1,    17,    18,    -1,    -1,
+      21,    22,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      31,    32,    33,    34,    -1,    -1,    -1,    38,    39,    40,
+      41,    -1,    -1,    -1,    45,    -1,    47,    -1,    -1,    50,
+      51,    52,    -1,    -1,    55,    -1,    -1,    -1,    59,    60,
+      61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
+      -1,    -1,    83,    84,    85,    -1,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    -1,    -1,    14,    -1,    98,    17,    18,
+     101,    -1,    21,    22,    23,    24,    25,    26,    27,    -1,
+      29,    30,    31,    -1,    33,    34,    -1,    -1,    -1,    38,
+      39,    40,    41,    -1,    -1,    -1,    -1,    -1,    47,    -1,
+      -1,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
+      -1,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    -1,
+      69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    78,
+      79,    80,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    14,    97,    98,
+      17,    18,   101,    -1,    21,    22,    23,    24,    25,    26,
+      27,    -1,    29,    -1,    31,    -1,    33,    34,    -1,    -1,
+      -1,    38,    39,    40,    41,    -1,    -1,    -1,    -1,    -1,
+      47,    -1,    -1,    50,    51,    52,    -1,    -1,    55,    -1,
+      -1,    -1,    -1,    60,    61,    62,    -1,    -1,    -1,    -1,
+      -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      77,    78,    79,    80,    -1,    -1,    83,    84,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    14,
+      97,    98,    17,    18,   101,    -1,    21,    22,    23,    24,
+      25,    26,    27,    -1,    29,    -1,    31,    -1,    33,    34,
+      -1,    -1,    -1,    38,    39,    40,    41,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    60,    61,    62,    -1,    -1,
+      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    77,    78,    79,    80,    -1,    -1,    -1,    84,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    14,    -1,    98,    17,    18,   101,    -1,    21,    22,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    31,    -1,
+      33,    34,    -1,    -1,    -1,    38,    39,    40,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    61,    62,
+      -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,
+      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
+      -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    -1,    -1,    14,    -1,    98,    17,    18,   101,    -1,
+      21,    -1,    23,    24,    25,    26,    27,    -1,    29,    -1,
+      -1,    -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    44,    -1,    46,    47,    48,    49,    50,
+      14,    52,    -1,    17,    18,    -1,    -1,    21,    -1,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    -1,    69,    33,
+      34,    -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,
+      -1,    -1,    46,    -1,    48,    -1,    50,    -1,    52,    -1,
+      -1,    92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,
+     101,    -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
+      -1,    -1,    14,    -1,    98,    17,    18,   101,    20,    21,
+      -1,    23,    24,    25,    26,    27,    -1,    29,    -1,    -1,
+      -1,    33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    14,
+      52,    -1,    17,    18,    -1,    -1,    21,    -1,    23,    24,
+      25,    26,    27,    -1,    29,    -1,    -1,    69,    33,    34,
+      -1,    -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,
+      92,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,
+      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    14,    -1,    98,    17,    18,   101,    -1,    21,    -1,
+      23,    24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,
+      33,    34,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    14,    52,
+      -1,    17,    18,    -1,    -1,    21,    -1,    23,    24,    25,
+      26,    27,    -1,    29,    -1,    -1,    69,    33,    34,    -1,
+      -1,    -1,    -1,    76,    77,    78,    79,    80,    -1,    -1,
+      -1,    -1,    -1,    -1,    50,    -1,    52,    -1,    -1,    92,
+      93,    -1,    -1,    -1,    -1,    98,    -1,    -1,   101,    -1,
+      -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    -1,    -1,
+      76,    77,    78,    79,    80,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
+      14,    -1,    98,    17,    18,   101,    -1,    21,    -1,    23,
+      24,    25,    26,    27,    -1,    29,    -1,    -1,    -1,    33,
+      34,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
+      -1,    -1,    54,    -1,    -1,    -1,    50,    -1,    52,    -1,
+      -1,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
+      -1,    73,    74,    75,    -1,    69,    -1,    -1,    -1,    -1,
+      -1,    -1,    76,    77,    78,    79,    80,    89,    90,    91,
+      92,    93,    94,    95,    48,    -1,    -1,    -1,    92,    93,
+      54,    -1,    -1,    -1,    98,    -1,    -1,   101,    -1,    63,
+      64,    65,    66,    67,    68,    -1,    70,    -1,    -1,    73,
+      74,    75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
+      -1,    -1,    -1,    54,    -1,    89,    90,    91,    92,    93,
+      94,    95,    63,    64,    65,    66,    67,    68,    -1,    70,
+      -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
+      48,    -1,    -1,    -1,    -1,    -1,    54,    -1,    89,    90,
+      91,    92,    93,    94,    95,    63,    64,    65,    66,    67,
+      68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,
+      -1,    -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    89,    90,    91,    92,    93,    94,    95,    63,    64,
+      65,    66,    67,    68,    -1,    70,    -1,    -1,    73,    74,
+      75,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,    94,
+      95,    63,    64,    65,    66,    67,    68,    -1,    70,    -1,
+      -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,    48,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    90,    91,
+      92,    93,    94,    95,    63,    64,    65,    66,    67,    68,
+      -1,    70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,
+      -1,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      89,    90,    91,    92,    93,    94,    95,    63,    64,    65,
+      66,    67,    68,    -1,    70,    -1,    -1,    73,    74,    75,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    -1,    51,    -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,    -1,
-      -1,    -1,    -1,    91,    92,    -1,    -1,    -1,    -1,    97,
-      -1,    -1,   100,    14,   102,    -1,    17,    18,    -1,    -1,
-      21,    22,    23,    24,    25,    26,    -1,    28,    -1,    30,
-      31,    32,    33,    -1,    -1,    -1,    37,    38,    39,    40,
-      -1,    -1,    -1,    44,    -1,    46,    -1,    -1,    49,    50,
-      51,    -1,    -1,    54,    -1,    -1,    -1,    58,    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,    84,    -1,    -1,    -1,    -1,    -1,    -1,
-      91,    92,    -1,    -1,    14,    -1,    97,    17,    18,   100,
-      -1,    21,    22,    23,    24,    25,    26,    -1,    28,    29,
-      30,    -1,    32,    33,    -1,    -1,    -1,    37,    38,    39,
-      40,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    49,
-      50,    51,    -1,    -1,    54,    -1,    -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,    -1,    -1,    -1,    -1,    -1,
-      -1,    91,    92,    -1,    -1,    14,    96,    97,    17,    18,
-     100,    -1,    21,    22,    23,    24,    25,    26,    -1,    28,
-      -1,    30,    -1,    32,    33,    -1,    -1,    -1,    37,    38,
-      39,    40,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,
-      49,    50,    51,    -1,    -1,    54,    -1,    -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,    -1,    -1,    -1,    -1,
-      -1,    -1,    91,    92,    -1,    -1,    14,    96,    97,    17,
-      18,   100,    -1,    21,    22,    23,    24,    25,    26,    -1,
-      28,    -1,    30,    -1,    32,    33,    -1,    -1,    -1,    37,
-      38,    39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    -1,    51,    -1,    -1,    -1,    -1,    -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,    -1,    83,    -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,    28,    -1,    30,    -1,    32,    33,    -1,    -1,    -1,
-      37,    38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    49,    -1,    51,    -1,    -1,    -1,    -1,    -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,    -1,    83,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    91,    92,    -1,    -1,    14,    -1,
-      97,    17,    18,   100,    -1,    21,    -1,    23,    24,    25,
-      26,    -1,    28,    -1,    -1,    -1,    32,    33,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,    -1,    45,
-      46,    47,    48,    49,    -1,    51,    14,    -1,    -1,    17,
-      18,    -1,    -1,    21,    -1,    23,    24,    25,    26,    -1,
-      28,    -1,    68,    -1,    32,    33,    -1,    -1,    -1,    75,
-      76,    77,    78,    79,    -1,    -1,    -1,    45,    -1,    47,
-      -1,    49,    -1,    51,    -1,    91,    92,    -1,    -1,    -1,
-      -1,    97,    -1,    -1,   100,    -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,    20,    21,    -1,    23,    24,    25,    26,
-      -1,    28,    -1,    -1,    -1,    32,    33,    -1,    -1,    -1,
+      -1,    54,    -1,    89,    90,    91,    92,    93,    94,    95,
+      63,    64,    65,    66,    67,    68,    56,    70,    -1,    -1,
+      73,    74,    75,    63,    64,    65,    66,    67,    68,    -1,
+      70,    -1,    -1,    73,    74,    75,    89,    90,    91,    92,
+      93,    94,    95,    -1,    97,    -1,    -1,    -1,    -1,    89,
+      90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
+      67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    49,    -1,    51,    14,    -1,    -1,    17,    18,
-      -1,    -1,    21,    -1,    23,    24,    25,    26,    -1,    28,
-      -1,    68,    -1,    32,    33,    -1,    -1,    -1,    75,    76,
-      77,    78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      49,    -1,    51,    -1,    91,    92,    -1,    -1,    -1,    -1,
-      97,    -1,    -1,   100,    -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,    -1,    23,    24,    25,    26,    -1,
-      28,    -1,    -1,    -1,    32,    33,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    49,    -1,    51,    14,    -1,    -1,    17,    18,    -1,
-      -1,    21,    -1,    23,    24,    25,    26,    -1,    28,    -1,
-      68,    -1,    32,    33,    -1,    -1,    -1,    75,    76,    77,
-      78,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    49,
-      -1,    51,    -1,    91,    92,    -1,    -1,    -1,    -1,    97,
-      -1,    -1,   100,    -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,    -1,    23,    24,    25,    26,    -1,    28,
-      -1,    -1,    -1,    32,    33,    -1,    -1,    -1,    45,    -1,
-      47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      49,    -1,    51,    -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,    47,    -1,
-      -1,    -1,    91,    92,    53,    -1,    -1,    -1,    97,    -1,
-      -1,   100,    -1,    62,    63,    64,    65,    66,    67,    -1,
-      69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
-      -1,    47,    -1,    -1,    -1,    -1,    -1,    53,    -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,    47,    -1,    -1,    -1,    -1,    -1,
-      53,    -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,    47,    -1,    -1,
-      -1,    -1,    -1,    53,    -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,
-      47,    -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,    47,    -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,    47,    -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,    47,
-      -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,    -1,    -1,    -1,    -1,    -1,    -1,    53,    -1,
-      88,    89,    90,    91,    92,    93,    94,    62,    63,    64,
-      65,    66,    67,    55,    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,    96,    -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,    -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
+      -1,    -1,    89,    90,    91,    92,    93,    94,    95,    -1,
+      -1,    -1,    99,    63,    64,    65,    66,    67,    68,    -1,
+      70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
+      -1,    81,    82,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+      90,    91,    92,    93,    94,    95,    63,    64,    65,    66,
+      67,    68,    -1,    70,    -1,    -1,    73,    74,    75,    63,
+      64,    65,    66,    -1,    -1,    -1,    70,    -1,    -1,    73,
+      74,    75,    89,    90,    91,    92,    93,    94,    95,    -1,
+      -1,    -1,    -1,    -1,    -1,    89,    90,    91,    92,    93,
+      94,    95
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1378,66 +1382,66 @@ static const yytype_int16 yycheck[] =
 static const yytype_uint8 yystos[] =
 {
        0,     1,    14,    17,    18,    21,    22,    23,    24,    25,
-      26,    28,    30,    31,    32,    33,    37,    38,    39,    40,
-      44,    46,    49,    50,    51,    54,    58,    59,    60,    61,
-      68,    75,    76,    77,    78,    79,    82,    83,    84,    91,
-      92,    97,   100,   104,   105,   106,   107,   109,   111,   115,
-     116,   117,   122,   123,   124,   125,   126,   127,   133,   135,
-     137,   141,   146,   149,    96,    25,   123,    25,    49,    97,
-     124,   147,    97,   147,   123,    97,   124,   148,   136,   140,
-      50,   128,    43,    45,    46,    47,    48,   124,   134,   138,
-      50,    20,   124,    55,    56,    17,    18,    19,    25,    32,
-      25,    25,   124,   124,   134,    25,   132,   124,   124,   124,
-     124,   124,   124,   124,   129,   142,   124,   124,   124,    26,
-      28,   102,   124,   150,   151,   152,   153,     0,    96,   124,
-      41,    64,   124,   108,   114,   117,   124,   127,   146,    62,
-      63,    64,    65,    66,    67,    69,    72,    73,    74,    88,
-      89,    90,    91,    92,    93,    94,   119,    97,   124,   124,
-     147,    99,   147,   147,    99,   147,   119,    25,   130,   124,
-      45,   134,    25,    25,    42,    70,    71,    25,    53,    64,
-     123,   123,    53,    64,    53,    52,    55,   134,    99,    47,
-      53,    47,    53,    47,    53,    47,    53,    80,    81,    53,
-      96,    25,   131,    25,    98,   102,   102,   101,    99,    99,
-     105,   120,   119,   119,   120,   120,   124,   124,   124,   124,
-     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
-     124,   124,   124,   124,    25,   143,    98,   124,    98,    98,
-     124,   143,    99,   124,   139,   123,    25,   126,   124,   124,
-     124,   124,    53,    64,    47,   124,   124,   124,   124,    25,
-     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
-     110,   110,    99,   123,   123,   124,    26,    28,   153,   121,
-     124,   124,    52,   120,    96,    99,    96,    25,   119,    42,
-     124,   124,    25,    47,    47,    47,    47,   107,   121,    25,
-      96,   109,   120,   120,   120,   121,    52,    99,   145,    25,
-     145,   143,   124,   123,   124,   124,   124,   124,   120,   120,
-      86,   121,    34,    53,   120,   107,    25,   121,   121,    96,
-      53,    87,   120,    53,   124,   112,   120,    29,   145,   124,
-      86,   124,   120,    35,    36,   113,   118,   120,    35,    85,
-      25,   144,   121,   120,   121,   119,   124,    85,   119,    99,
-     121,   120,   121,   120,   107,    25,   120,    86,   120,    52,
-     120,    86,    85,   121,    85,   120
+      26,    27,    29,    31,    32,    33,    34,    38,    39,    40,
+      41,    45,    47,    50,    51,    52,    55,    59,    60,    61,
+      62,    69,    76,    77,    78,    79,    80,    83,    84,    85,
+      92,    93,    98,   101,   105,   106,   107,   108,   110,   112,
+     116,   117,   118,   123,   124,   125,   126,   127,   128,   134,
+     136,   138,   142,   147,   150,    97,    26,   124,    26,    50,
+      98,   125,   148,    98,   148,   124,    48,    98,   125,   149,
+     137,   141,    51,   129,    44,    46,    47,    48,    49,   125,
+     135,   139,    51,    20,   125,    56,    57,    17,    18,    19,
+      26,    33,    26,    26,   125,   125,   135,    26,   133,   125,
+     125,   125,   125,   125,   125,   125,   130,   143,   125,   125,
+     125,    27,    29,   103,   125,   151,   152,   153,   154,     0,
+      97,   125,    42,    65,   125,   109,   115,   118,   125,   128,
+     147,    63,    64,    65,    66,    67,    68,    70,    73,    74,
+      75,    89,    90,    91,    92,    93,    94,    95,   120,    98,
+     125,   125,   148,   100,   148,   124,   148,   100,   148,   120,
+      26,   131,   125,    46,   135,    26,    26,    43,    71,    72,
+      26,    54,    65,   124,   124,    54,    65,    54,    53,    56,
+     135,   100,    48,    54,    48,    54,    48,    54,    48,    54,
+      81,    82,    54,    97,    26,   132,    26,    99,   103,   103,
+     102,   100,   100,   106,   121,   120,   120,   121,   121,   125,
+     125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,   125,   125,    26,   144,    99,
+     125,    99,    99,   125,   144,   100,   125,   140,   124,    26,
+     127,   125,   125,   125,   125,    54,    65,    48,   125,   125,
+     125,   125,    26,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   111,   111,   100,   124,   124,   125,    27,
+      29,   154,   122,   125,   125,    53,   121,    97,   100,    97,
+      26,   120,    43,   125,   125,    26,    48,    48,    48,    48,
+     108,   122,    26,    97,   110,   121,   121,   121,   122,    53,
+     100,   146,    26,   146,   144,   125,   124,   125,   125,   125,
+     125,   121,   121,    87,   122,    35,    54,   121,   108,    26,
+     122,   122,    97,    54,    88,   121,    54,   125,   113,   121,
+      30,   146,   125,    87,   125,   121,    36,    37,   114,   119,
+     121,    36,    86,    26,   145,   122,   121,   122,   120,   125,
+      86,   120,   100,   122,   121,   122,   121,   108,    26,   121,
+      87,   121,    53,   121,    87,    86,   122,    86,   121
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   103,   104,   104,   104,   105,   105,   105,   106,   106,
-     106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
-     106,   107,   107,   107,   108,   108,   108,   108,   109,   109,
-     109,   109,   109,   109,   109,   109,   109,   109,   110,   111,
-     111,   112,   112,   113,   114,   114,   115,   116,   117,   118,
-     119,   120,   121,   121,   121,   122,   123,   123,   123,   123,
-     123,   123,   123,   123,   124,   124,   124,   124,   124,   124,
-     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
-     124,   124,   124,   124,   124,   124,   124,   124,   124,   124,
-     124,   124,   124,   124,   124,   125,   125,   125,   125,   125,
-     125,   125,   125,   126,   126,   127,   127,   127,   127,   127,
-     128,   127,   129,   127,   127,   127,   127,   127,   127,   130,
-     130,   131,   131,   132,   132,   133,   133,   133,   133,   133,
-     133,   134,   134,   135,   135,   135,   136,   135,   138,   139,
-     137,   137,   140,   137,   137,   137,   142,   141,   143,   143,
-     143,   143,   144,   144,   144,   145,   146,   147,   147,   147,
-     148,   148,   149,   150,   150,   150,   150,   151,   151,   152,
-     152,   153,   153
+       0,   104,   105,   105,   105,   106,   106,   106,   107,   107,
+     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
+     107,   108,   108,   108,   109,   109,   109,   109,   110,   110,
+     110,   110,   110,   110,   110,   110,   110,   110,   111,   112,
+     112,   113,   113,   114,   115,   115,   116,   117,   118,   119,
+     120,   121,   122,   122,   122,   123,   124,   124,   124,   124,
+     124,   124,   124,   124,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,   125,   126,   126,   126,   126,
+     126,   126,   126,   126,   127,   127,   128,   128,   128,   128,
+     128,   129,   128,   130,   128,   128,   128,   128,   128,   128,
+     131,   131,   132,   132,   133,   133,   134,   134,   134,   134,
+     134,   134,   135,   135,   136,   136,   136,   137,   136,   139,
+     140,   138,   138,   141,   138,   138,   138,   143,   142,   144,
+     144,   144,   144,   145,   145,   145,   146,   147,   148,   148,
+     148,   149,   149,   150,   151,   151,   151,   151,   152,   152,
+     153,   153,   154,   154
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1449,18 +1453,18 @@ static const yytype_int8 yyr2[] =
        6,    11,    12,     8,     2,     3,     7,     6,     0,     9,
       12,     0,     2,     6,    11,     7,     2,     3,     1,     1,
        0,     0,     0,     2,     2,     3,     1,     1,     1,     1,
-       1,     1,     3,     1,     1,     1,     4,     2,     4,     2,
-       1,     1,     1,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     2,     3,     3,     3,
-       3,     2,     2,     4,     4,     4,     6,     4,     6,     4,
-       6,     4,     6,     2,     1,     2,     1,     1,     2,     1,
-       0,     3,     0,     3,     2,     4,     2,     4,     2,     1,
-       3,     1,     3,     1,     3,     2,     2,     2,     2,     3,
-       2,     3,     2,     2,     3,     2,     0,     3,     0,     0,
-       9,     2,     0,     7,     8,     6,     0,     3,     0,     1,
-       3,     4,     0,     1,     3,     0,     2,     0,     1,     3,
-       1,     3,     3,     0,     1,     1,     1,     1,     3,     1,
-       3,     3,     3
+       1,     1,     3,     1,     1,     1,     4,     2,     4,     3,
+       2,     1,     1,     1,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     2,     3,     3,
+       3,     3,     2,     2,     4,     4,     4,     6,     4,     6,
+       4,     6,     4,     6,     2,     1,     2,     1,     1,     2,
+       1,     0,     3,     0,     3,     2,     4,     2,     4,     2,
+       1,     3,     1,     3,     1,     3,     2,     2,     2,     2,
+       3,     2,     3,     2,     2,     3,     2,     0,     3,     0,
+       0,     9,     2,     0,     7,     8,     6,     0,     3,     0,
+       1,     3,     4,     0,     1,     3,     0,     2,     0,     1,
+       3,     1,     3,     3,     0,     1,     1,     1,     1,     3,
+       1,     3,     3,     3
 };
 
 
@@ -1939,73 +1943,79 @@ yydestruct (const char *yymsg,
     case 22: /* BLTIN  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1943 "engines/director/lingo/lingo-gr.cpp"
+#line 1947 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 23: /* FBLTIN  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1949 "engines/director/lingo/lingo-gr.cpp"
+#line 1953 "engines/director/lingo/lingo-gr.cpp"
         break;
 
     case 24: /* RBLTIN  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1955 "engines/director/lingo/lingo-gr.cpp"
+#line 1959 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 25: /* ID  */
+    case 25: /* THEFBLTIN  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1961 "engines/director/lingo/lingo-gr.cpp"
+#line 1965 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 26: /* STRING  */
+    case 26: /* ID  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1967 "engines/director/lingo/lingo-gr.cpp"
+#line 1971 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 27: /* HANDLER  */
+    case 27: /* STRING  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1973 "engines/director/lingo/lingo-gr.cpp"
+#line 1977 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 28: /* SYMBOL  */
+    case 28: /* HANDLER  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1979 "engines/director/lingo/lingo-gr.cpp"
+#line 1983 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 29: /* ENDCLAUSE  */
+    case 29: /* SYMBOL  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1985 "engines/director/lingo/lingo-gr.cpp"
+#line 1989 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 30: /* tPLAYACCEL  */
+    case 30: /* ENDCLAUSE  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1991 "engines/director/lingo/lingo-gr.cpp"
+#line 1995 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 31: /* tMETHOD  */
+    case 31: /* tPLAYACCEL  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 1997 "engines/director/lingo/lingo-gr.cpp"
+#line 2001 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 32: /* THEOBJECTFIELD  */
+    case 32: /* tMETHOD  */
+#line 135 "engines/director/lingo/lingo-gr.y"
+            { delete ((*yyvaluep).s); }
+#line 2007 "engines/director/lingo/lingo-gr.cpp"
+        break;
+
+    case 33: /* THEOBJECTFIELD  */
 #line 136 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).objectfield).os; }
-#line 2003 "engines/director/lingo/lingo-gr.cpp"
+#line 2013 "engines/director/lingo/lingo-gr.cpp"
         break;
 
-    case 141: /* on  */
+    case 142: /* on  */
 #line 135 "engines/director/lingo/lingo-gr.y"
             { delete ((*yyvaluep).s); }
-#line 2009 "engines/director/lingo/lingo-gr.cpp"
+#line 2019 "engines/director/lingo/lingo-gr.cpp"
         break;
 
       default:
@@ -2289,7 +2299,7 @@ yyreduce:
   case 4:
 #line 142 "engines/director/lingo/lingo-gr.y"
                                 { yyerrok; }
-#line 2293 "engines/director/lingo/lingo-gr.cpp"
+#line 2303 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 8:
@@ -2300,7 +2310,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code);
 		delete (yyvsp[0].s); }
-#line 2304 "engines/director/lingo/lingo-gr.cpp"
+#line 2314 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 9:
@@ -2308,7 +2318,7 @@ yyreduce:
                                                 {
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[-2].code); }
-#line 2312 "engines/director/lingo/lingo-gr.cpp"
+#line 2322 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 10:
@@ -2324,19 +2334,19 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-4].e)[1]);
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2328 "engines/director/lingo/lingo-gr.cpp"
+#line 2338 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 11:
 #line 169 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_after); }
-#line 2334 "engines/director/lingo/lingo-gr.cpp"
+#line 2344 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 12:
 #line 170 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code1(LC::c_before); }
-#line 2340 "engines/director/lingo/lingo-gr.cpp"
+#line 2350 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 13:
@@ -2347,7 +2357,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2351 "engines/director/lingo/lingo-gr.cpp"
+#line 2361 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 14:
@@ -2359,7 +2369,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2363 "engines/director/lingo/lingo-gr.cpp"
+#line 2373 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 15:
@@ -2370,7 +2380,7 @@ yyreduce:
 		g_lingo->code1(LC::c_assign);
 		(yyval.code) = (yyvsp[0].code);
 		delete (yyvsp[-2].s); }
-#line 2374 "engines/director/lingo/lingo-gr.cpp"
+#line 2384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 16:
@@ -2382,7 +2392,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].e)[0]);
 		g_lingo->codeInt((yyvsp[-2].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2386 "engines/director/lingo/lingo-gr.cpp"
+#line 2396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 17:
@@ -2393,7 +2403,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2397 "engines/director/lingo/lingo-gr.cpp"
+#line 2407 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 18:
@@ -2404,7 +2414,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-3].e)[0]);
 		g_lingo->codeInt((yyvsp[-3].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2408 "engines/director/lingo/lingo-gr.cpp"
+#line 2418 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 19:
@@ -2420,7 +2430,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-6].e)[0]);
 		g_lingo->codeInt((yyvsp[-6].e)[1]);
 		(yyval.code) = (yyvsp[0].code); }
-#line 2424 "engines/director/lingo/lingo-gr.cpp"
+#line 2434 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 20:
@@ -2431,7 +2441,7 @@ yyreduce:
 		g_lingo->codeInt((yyvsp[-2].objectfield).oe);
 		delete (yyvsp[-2].objectfield).os;
 		(yyval.code) = (yyvsp[0].code); }
-#line 2435 "engines/director/lingo/lingo-gr.cpp"
+#line 2445 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 30:
@@ -2442,7 +2452,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-5].code));
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = body;	/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 2] = end; }
-#line 2446 "engines/director/lingo/lingo-gr.cpp"
+#line 2456 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 31:
@@ -2459,7 +2469,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 5] = end; }
-#line 2463 "engines/director/lingo/lingo-gr.cpp"
+#line 2473 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 32:
@@ -2476,7 +2486,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 4] = inc;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 5] = end; }
-#line 2480 "engines/director/lingo/lingo-gr.cpp"
+#line 2490 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 33:
@@ -2491,14 +2501,14 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 3] = body;		/* body of loop */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 4] = 0;		/* increment */
 		(*g_lingo->_currentScript)[(yyvsp[-7].code) + 5] = end; }
-#line 2495 "engines/director/lingo/lingo-gr.cpp"
+#line 2505 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 34:
 #line 294 "engines/director/lingo/lingo-gr.y"
                         {
 		g_lingo->code1(LC::c_nextRepeat); }
-#line 2502 "engines/director/lingo/lingo-gr.cpp"
+#line 2512 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 35:
@@ -2508,7 +2518,7 @@ yyreduce:
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		g_lingo->code1(STOP);
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2512 "engines/director/lingo/lingo-gr.cpp"
+#line 2522 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 36:
@@ -2517,7 +2527,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[-1].code) - (yyvsp[-3].code));
 		(*g_lingo->_currentScript)[(yyvsp[-3].code) + 1] = end; }
-#line 2521 "engines/director/lingo/lingo-gr.cpp"
+#line 2531 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 37:
@@ -2526,7 +2536,7 @@ yyreduce:
 		inst end;
 		WRITE_UINT32(&end, (yyvsp[0].code) - (yyvsp[-2].code));
 		(*g_lingo->_currentScript)[(yyvsp[-2].code) + 1] = end; }
-#line 2530 "engines/director/lingo/lingo-gr.cpp"
+#line 2540 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 38:
@@ -2534,7 +2544,7 @@ yyreduce:
                                                         {
 		(yyval.code) = g_lingo->code1(LC::c_tellcode);
 		g_lingo->code1(STOP); }
-#line 2538 "engines/director/lingo/lingo-gr.cpp"
+#line 2548 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 39:
@@ -2549,7 +2559,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-8].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-8].code), (yyvsp[-1].code) - (yyvsp[-8].code), 0); }
-#line 2553 "engines/director/lingo/lingo-gr.cpp"
+#line 2563 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 40:
@@ -2564,7 +2574,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-11].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-11].code), (yyvsp[-1].code) - (yyvsp[-11].code), (yyvsp[-3].code) - (yyvsp[-11].code)); }
-#line 2568 "engines/director/lingo/lingo-gr.cpp"
+#line 2578 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 43:
@@ -2575,7 +2585,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-5].code) + 1] = then;	/* thenpart */
 
 		g_lingo->codeLabel((yyvsp[-5].code)); }
-#line 2579 "engines/director/lingo/lingo-gr.cpp"
+#line 2589 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 44:
@@ -2590,7 +2600,7 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-10].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-10].code), (yyvsp[-1].code) - (yyvsp[-10].code), (yyvsp[-3].code) - (yyvsp[-10].code)); }
-#line 2594 "engines/director/lingo/lingo-gr.cpp"
+#line 2604 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 45:
@@ -2605,13 +2615,13 @@ yyreduce:
 		(*g_lingo->_currentScript)[(yyvsp[-6].code) + 3] = end;	/* end, if cond fails */
 
 		g_lingo->processIf((yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code), (yyvsp[-1].code) - (yyvsp[-6].code)); }
-#line 2609 "engines/director/lingo/lingo-gr.cpp"
+#line 2619 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 46:
 #line 366 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.code) = g_lingo->code3(LC::c_repeatwhilecode, STOP, STOP); }
-#line 2615 "engines/director/lingo/lingo-gr.cpp"
+#line 2625 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 47:
@@ -2621,7 +2631,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2625 "engines/director/lingo/lingo-gr.cpp"
+#line 2635 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 48:
@@ -2631,7 +2641,7 @@ yyreduce:
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(0);  // Do not skip end
 		g_lingo->codeLabel(0); }
-#line 2635 "engines/director/lingo/lingo-gr.cpp"
+#line 2645 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 49:
@@ -2642,25 +2652,25 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_ifcode);
 		g_lingo->code3(STOP, STOP, STOP);
 		g_lingo->code1(skipEnd); }
-#line 2646 "engines/director/lingo/lingo-gr.cpp"
+#line 2656 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 50:
 #line 387 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2652 "engines/director/lingo/lingo-gr.cpp"
+#line 2662 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 51:
 #line 389 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2658 "engines/director/lingo/lingo-gr.cpp"
+#line 2668 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 52:
 #line 391 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->_currentScript->size(); }
-#line 2664 "engines/director/lingo/lingo-gr.cpp"
+#line 2674 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 55:
@@ -2670,7 +2680,7 @@ yyreduce:
 		g_lingo->code1(STOP);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
 		delete (yyvsp[-1].s); }
-#line 2674 "engines/director/lingo/lingo-gr.cpp"
+#line 2684 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 56:
@@ -2678,7 +2688,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt((yyvsp[0].i)); }
-#line 2682 "engines/director/lingo/lingo-gr.cpp"
+#line 2692 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 57:
@@ -2686,7 +2696,7 @@ yyreduce:
                         {
 		(yyval.code) = g_lingo->code1(LC::c_floatpush);
 		g_lingo->codeFloat((yyvsp[0].f)); }
-#line 2690 "engines/director/lingo/lingo-gr.cpp"
+#line 2700 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 58:
@@ -2695,7 +2705,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_symbolpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2699 "engines/director/lingo/lingo-gr.cpp"
+#line 2709 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 59:
@@ -2704,7 +2714,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_stringpush);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2708 "engines/director/lingo/lingo-gr.cpp"
+#line 2718 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 60:
@@ -2713,7 +2723,7 @@ yyreduce:
 		(yyval.code) = g_lingo->code1(LC::c_eval);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 2717 "engines/director/lingo/lingo-gr.cpp"
+#line 2727 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 61:
@@ -2726,19 +2736,19 @@ yyreduce:
 		WRITE_UINT32(&e, (yyvsp[0].e)[0]);
 		WRITE_UINT32(&f, (yyvsp[0].e)[1]);
 		g_lingo->code2(e, f); }
-#line 2730 "engines/director/lingo/lingo-gr.cpp"
+#line 2740 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 62:
 #line 427 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 2736 "engines/director/lingo/lingo-gr.cpp"
+#line 2746 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 64:
 #line 430 "engines/director/lingo/lingo-gr.y"
                  { (yyval.code) = (yyvsp[0].code); }
-#line 2742 "engines/director/lingo/lingo-gr.cpp"
+#line 2752 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 66:
@@ -2746,7 +2756,7 @@ yyreduce:
                                  {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2750 "engines/director/lingo/lingo-gr.cpp"
+#line 2760 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 67:
@@ -2754,7 +2764,7 @@ yyreduce:
                                 {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 2758 "engines/director/lingo/lingo-gr.cpp"
+#line 2768 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 68:
@@ -2762,488 +2772,496 @@ yyreduce:
                                 {
 		(yyval.code) = g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 2766 "engines/director/lingo/lingo-gr.cpp"
+#line 2776 "engines/director/lingo/lingo-gr.cpp"
     break;
 
   case 69:
 #line 441 "engines/director/lingo/lingo-gr.y"
+                                        {
+		(yyval.code) = g_lingo->codeFunc((yyvsp[-2].s), 1);
+		delete (yyvsp[-2].s); }
+#line 2784 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 70:
+#line 444 "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 2777 "engines/director/lingo/lingo-gr.cpp"
+#line 2795 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 70:
-#line 447 "engines/director/lingo/lingo-gr.y"
+  case 71:
+#line 450 "engines/director/lingo/lingo-gr.y"
                          {
 		g_lingo->code1(LC::c_objectfieldpush);
 		g_lingo->codeString((yyvsp[0].objectfield).os->c_str());
 		g_lingo->codeInt((yyvsp[0].objectfield).oe);
 		delete (yyvsp[0].objectfield).os; }
-#line 2787 "engines/director/lingo/lingo-gr.cpp"
+#line 2805 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 71:
-#line 452 "engines/director/lingo/lingo-gr.y"
+  case 72:
+#line 455 "engines/director/lingo/lingo-gr.y"
                        {
 		g_lingo->code1(LC::c_objectrefpush);
 		g_lingo->codeString((yyvsp[0].objectref).obj->c_str());
 		g_lingo->codeString((yyvsp[0].objectref).field->c_str());
 		delete (yyvsp[0].objectref).obj;
 		delete (yyvsp[0].objectref).field; }
-#line 2798 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 73:
-#line 459 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_add); }
-#line 2804 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 74:
-#line 460 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_sub); }
-#line 2810 "engines/director/lingo/lingo-gr.cpp"
-    break;
-
-  case 75:
-#line 461 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_mul); }
 #line 2816 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 76:
+  case 74:
 #line 462 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_div); }
+                                                { g_lingo->code1(LC::c_add); }
 #line 2822 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 77:
+  case 75:
 #line 463 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_mod); }
+                                                { g_lingo->code1(LC::c_sub); }
 #line 2828 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 78:
+  case 76:
 #line 464 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_gt); }
+                                                { g_lingo->code1(LC::c_mul); }
 #line 2834 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 79:
+  case 77:
 #line 465 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_lt); }
+                                                { g_lingo->code1(LC::c_div); }
 #line 2840 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 80:
+  case 78:
 #line 466 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_eq); }
+                                                { g_lingo->code1(LC::c_mod); }
 #line 2846 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 81:
+  case 79:
 #line 467 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_neq); }
+                                                { g_lingo->code1(LC::c_gt); }
 #line 2852 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 82:
+  case 80:
 #line 468 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_ge); }
+                                                { g_lingo->code1(LC::c_lt); }
 #line 2858 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 83:
+  case 81:
 #line 469 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_le); }
+                                                { g_lingo->code1(LC::c_eq); }
 #line 2864 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 84:
+  case 82:
 #line 470 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_and); }
+                                                { g_lingo->code1(LC::c_neq); }
 #line 2870 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 85:
+  case 83:
 #line 471 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_or); }
+                                                { g_lingo->code1(LC::c_ge); }
 #line 2876 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 86:
+  case 84:
 #line 472 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_not); }
+                                                { g_lingo->code1(LC::c_le); }
 #line 2882 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 87:
+  case 85:
 #line 473 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_ampersand); }
+                                                { g_lingo->code1(LC::c_and); }
 #line 2888 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 88:
+  case 86:
 #line 474 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_concat); }
+                                                { g_lingo->code1(LC::c_or); }
 #line 2894 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 89:
+  case 87:
 #line 475 "engines/director/lingo/lingo-gr.y"
-                                        { g_lingo->code1(LC::c_contains); }
+                                        { g_lingo->code1(LC::c_not); }
 #line 2900 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 90:
+  case 88:
 #line 476 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_starts); }
+                                                { g_lingo->code1(LC::c_ampersand); }
 #line 2906 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 91:
+  case 89:
 #line 477 "engines/director/lingo/lingo-gr.y"
-                                    { (yyval.code) = (yyvsp[0].code); }
+                                                { g_lingo->code1(LC::c_concat); }
 #line 2912 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 92:
+  case 90:
 #line 478 "engines/director/lingo/lingo-gr.y"
-                                    { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
+                                        { g_lingo->code1(LC::c_contains); }
 #line 2918 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 93:
+  case 91:
 #line 479 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_intersects); }
+                                                { g_lingo->code1(LC::c_starts); }
 #line 2924 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 94:
+  case 92:
 #line 480 "engines/director/lingo/lingo-gr.y"
-                                                        { g_lingo->code1(LC::c_within); }
+                                    { (yyval.code) = (yyvsp[0].code); }
 #line 2930 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 95:
-#line 482 "engines/director/lingo/lingo-gr.y"
-                                                        { g_lingo->code1(LC::c_charOf); }
+  case 93:
+#line 481 "engines/director/lingo/lingo-gr.y"
+                                    { (yyval.code) = (yyvsp[0].code); g_lingo->code1(LC::c_negate); }
 #line 2936 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 96:
-#line 483 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_charToOf); }
+  case 94:
+#line 482 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_intersects); }
 #line 2942 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 97:
-#line 484 "engines/director/lingo/lingo-gr.y"
-                                                        { g_lingo->code1(LC::c_itemOf); }
+  case 95:
+#line 483 "engines/director/lingo/lingo-gr.y"
+                                                        { g_lingo->code1(LC::c_within); }
 #line 2948 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 98:
+  case 96:
 #line 485 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_itemToOf); }
+                                                        { g_lingo->code1(LC::c_charOf); }
 #line 2954 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 99:
+  case 97:
 #line 486 "engines/director/lingo/lingo-gr.y"
-                                                        { g_lingo->code1(LC::c_lineOf); }
+                                                { g_lingo->code1(LC::c_charToOf); }
 #line 2960 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 100:
+  case 98:
 #line 487 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_lineToOf); }
+                                                        { g_lingo->code1(LC::c_itemOf); }
 #line 2966 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 101:
+  case 99:
 #line 488 "engines/director/lingo/lingo-gr.y"
-                                                        { g_lingo->code1(LC::c_wordOf); }
+                                                { g_lingo->code1(LC::c_itemToOf); }
 #line 2972 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 102:
+  case 100:
 #line 489 "engines/director/lingo/lingo-gr.y"
-                                                { g_lingo->code1(LC::c_wordToOf); }
+                                                        { g_lingo->code1(LC::c_lineOf); }
 #line 2978 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 103:
+  case 101:
+#line 490 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_lineToOf); }
+#line 2984 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 102:
 #line 491 "engines/director/lingo/lingo-gr.y"
+                                                        { g_lingo->code1(LC::c_wordOf); }
+#line 2990 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 103:
+#line 492 "engines/director/lingo/lingo-gr.y"
+                                                { g_lingo->code1(LC::c_wordToOf); }
+#line 2996 "engines/director/lingo/lingo-gr.cpp"
+    break;
+
+  case 104:
+#line 494 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), 1);
 		delete (yyvsp[-1].s); }
-#line 2986 "engines/director/lingo/lingo-gr.cpp"
+#line 3004 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 105:
-#line 496 "engines/director/lingo/lingo-gr.y"
+  case 106:
+#line 499 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_printtop); }
-#line 2992 "engines/director/lingo/lingo-gr.cpp"
+#line 3010 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 108:
-#line 499 "engines/director/lingo/lingo-gr.y"
+  case 109:
+#line 502 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code1(LC::c_exitRepeat); }
-#line 2998 "engines/director/lingo/lingo-gr.cpp"
+#line 3016 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 109:
-#line 500 "engines/director/lingo/lingo-gr.y"
+  case 110:
+#line 503 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_procret); }
-#line 3004 "engines/director/lingo/lingo-gr.cpp"
+#line 3022 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 110:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 111:
+#line 504 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 3010 "engines/director/lingo/lingo-gr.cpp"
+#line 3028 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 111:
-#line 501 "engines/director/lingo/lingo-gr.y"
+  case 112:
+#line 504 "engines/director/lingo/lingo-gr.y"
                                                                  { g_lingo->_indef = kStateNone; }
-#line 3016 "engines/director/lingo/lingo-gr.cpp"
+#line 3034 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 112:
-#line 502 "engines/director/lingo/lingo-gr.y"
+  case 113:
+#line 505 "engines/director/lingo/lingo-gr.y"
                     { g_lingo->_indef = kStateInArgs; }
-#line 3022 "engines/director/lingo/lingo-gr.cpp"
+#line 3040 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 113:
-#line 502 "engines/director/lingo/lingo-gr.y"
+  case 114:
+#line 505 "engines/director/lingo/lingo-gr.y"
                                                                      { g_lingo->_indef = kStateNone; }
-#line 3028 "engines/director/lingo/lingo-gr.cpp"
+#line 3046 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 115:
-#line 504 "engines/director/lingo/lingo-gr.y"
+  case 116:
+#line 507 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->codeFunc((yyvsp[-3].s), (yyvsp[-1].narg));
 		delete (yyvsp[-3].s); }
-#line 3036 "engines/director/lingo/lingo-gr.cpp"
+#line 3054 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 116:
-#line 507 "engines/director/lingo/lingo-gr.y"
+  case 117:
+#line 510 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->codeFunc((yyvsp[-1].s), (yyvsp[0].narg));
 		delete (yyvsp[-1].s); }
-#line 3044 "engines/director/lingo/lingo-gr.cpp"
+#line 3062 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 117:
-#line 510 "engines/director/lingo/lingo-gr.y"
+  case 118:
+#line 513 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->code1(LC::c_open); }
-#line 3050 "engines/director/lingo/lingo-gr.cpp"
+#line 3068 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 118:
-#line 511 "engines/director/lingo/lingo-gr.y"
+  case 119:
+#line 514 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->code2(LC::c_voidpush, LC::c_open); }
-#line 3056 "engines/director/lingo/lingo-gr.cpp"
+#line 3074 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 119:
-#line 513 "engines/director/lingo/lingo-gr.y"
+  case 120:
+#line 516 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3065 "engines/director/lingo/lingo-gr.cpp"
+#line 3083 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 120:
-#line 517 "engines/director/lingo/lingo-gr.y"
+  case 121:
+#line 520 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_global);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3074 "engines/director/lingo/lingo-gr.cpp"
+#line 3092 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 121:
-#line 522 "engines/director/lingo/lingo-gr.y"
+  case 122:
+#line 525 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3083 "engines/director/lingo/lingo-gr.cpp"
+#line 3101 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 122:
-#line 526 "engines/director/lingo/lingo-gr.y"
+  case 123:
+#line 529 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_property);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3092 "engines/director/lingo/lingo-gr.cpp"
+#line 3110 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 123:
-#line 531 "engines/director/lingo/lingo-gr.y"
+  case 124:
+#line 534 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3101 "engines/director/lingo/lingo-gr.cpp"
+#line 3119 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 124:
-#line 535 "engines/director/lingo/lingo-gr.y"
+  case 125:
+#line 538 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_instance);
 		g_lingo->codeString((yyvsp[0].s)->c_str());
 		delete (yyvsp[0].s); }
-#line 3110 "engines/director/lingo/lingo-gr.cpp"
+#line 3128 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 125:
-#line 547 "engines/director/lingo/lingo-gr.y"
+  case 126:
+#line 550 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoloop); }
-#line 3116 "engines/director/lingo/lingo-gr.cpp"
+#line 3134 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 126:
-#line 548 "engines/director/lingo/lingo-gr.y"
+  case 127:
+#line 551 "engines/director/lingo/lingo-gr.y"
                                                         { g_lingo->code1(LC::c_gotonext); }
-#line 3122 "engines/director/lingo/lingo-gr.cpp"
+#line 3140 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 127:
-#line 549 "engines/director/lingo/lingo-gr.y"
+  case 128:
+#line 552 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->code1(LC::c_gotoprevious); }
-#line 3128 "engines/director/lingo/lingo-gr.cpp"
+#line 3146 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 128:
-#line 550 "engines/director/lingo/lingo-gr.y"
+  case 129:
+#line 553 "engines/director/lingo/lingo-gr.y"
                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(1);
 		g_lingo->code1(LC::c_goto); }
-#line 3137 "engines/director/lingo/lingo-gr.cpp"
+#line 3155 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 129:
-#line 554 "engines/director/lingo/lingo-gr.y"
+  case 130:
+#line 557 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_goto); }
-#line 3146 "engines/director/lingo/lingo-gr.cpp"
+#line 3164 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 130:
-#line 558 "engines/director/lingo/lingo-gr.y"
+  case 131:
+#line 561 "engines/director/lingo/lingo-gr.y"
                                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_goto); }
-#line 3155 "engines/director/lingo/lingo-gr.cpp"
+#line 3173 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 133:
-#line 566 "engines/director/lingo/lingo-gr.y"
+  case 134:
+#line 569 "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 3164 "engines/director/lingo/lingo-gr.cpp"
+#line 3182 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 134:
-#line 570 "engines/director/lingo/lingo-gr.y"
+  case 135:
+#line 573 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(3);
 		g_lingo->code1(LC::c_play); }
-#line 3173 "engines/director/lingo/lingo-gr.cpp"
+#line 3191 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 135:
-#line 574 "engines/director/lingo/lingo-gr.y"
+  case 136:
+#line 577 "engines/director/lingo/lingo-gr.y"
                                                         {
 		g_lingo->code1(LC::c_intpush);
 		g_lingo->codeInt(2);
 		g_lingo->code1(LC::c_play); }
-#line 3182 "engines/director/lingo/lingo-gr.cpp"
+#line 3200 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 136:
-#line 578 "engines/director/lingo/lingo-gr.y"
+  case 137:
+#line 581 "engines/director/lingo/lingo-gr.y"
                      { g_lingo->codeSetImmediate(true); }
-#line 3188 "engines/director/lingo/lingo-gr.cpp"
+#line 3206 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 137:
-#line 578 "engines/director/lingo/lingo-gr.y"
+  case 138:
+#line 581 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->codeSetImmediate(false);
 		g_lingo->codeFunc((yyvsp[-2].s), (yyvsp[0].narg));
 		delete (yyvsp[-2].s); }
-#line 3197 "engines/director/lingo/lingo-gr.cpp"
+#line 3215 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 138:
-#line 608 "engines/director/lingo/lingo-gr.y"
+  case 139:
+#line 611 "engines/director/lingo/lingo-gr.y"
              { g_lingo->_indef = kStateInArgs; }
-#line 3203 "engines/director/lingo/lingo-gr.cpp"
+#line 3221 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 139:
-#line 608 "engines/director/lingo/lingo-gr.y"
+  case 140:
+#line 611 "engines/director/lingo/lingo-gr.y"
                                                     { g_lingo->_currentFactory.clear(); }
-#line 3209 "engines/director/lingo/lingo-gr.cpp"
+#line 3227 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 140:
-#line 609 "engines/director/lingo/lingo-gr.y"
+  case 141:
+#line 612 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg));
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 3220 "engines/director/lingo/lingo-gr.cpp"
+#line 3238 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 141:
-#line 615 "engines/director/lingo/lingo-gr.y"
+  case 142:
+#line 618 "engines/director/lingo/lingo-gr.y"
                         { g_lingo->codeFactory(*(yyvsp[0].s)); delete (yyvsp[0].s); }
-#line 3226 "engines/director/lingo/lingo-gr.cpp"
+#line 3244 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 142:
-#line 616 "engines/director/lingo/lingo-gr.y"
+  case 143:
+#line 619 "engines/director/lingo/lingo-gr.y"
                   { g_lingo->_indef = kStateInArgs; }
-#line 3232 "engines/director/lingo/lingo-gr.cpp"
+#line 3250 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 143:
-#line 617 "engines/director/lingo/lingo-gr.y"
+  case 144:
+#line 620 "engines/director/lingo/lingo-gr.y"
                                                                         {
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-6].s), (yyvsp[-4].code), (yyvsp[-3].narg) + 1, &g_lingo->_currentFactory);
 		g_lingo->clearArgStack();
 		g_lingo->_indef = kStateNone;
 		delete (yyvsp[-6].s); }
-#line 3243 "engines/director/lingo/lingo-gr.cpp"
+#line 3261 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 144:
-#line 623 "engines/director/lingo/lingo-gr.y"
+  case 145:
+#line 626 "engines/director/lingo/lingo-gr.y"
                                                                      {	// D3
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-7].s), (yyvsp[-6].code), (yyvsp[-5].narg));
@@ -3254,11 +3272,11 @@ yyreduce:
 		checkEnd((yyvsp[-1].s), (yyvsp[-7].s)->c_str(), false);
 		delete (yyvsp[-7].s);
 		delete (yyvsp[-1].s); }
-#line 3258 "engines/director/lingo/lingo-gr.cpp"
+#line 3276 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 145:
-#line 633 "engines/director/lingo/lingo-gr.y"
+  case 146:
+#line 636 "engines/director/lingo/lingo-gr.y"
                                                  {	// D4. No 'end' clause
 		g_lingo->code1(LC::c_procret);
 		g_lingo->define(*(yyvsp[-5].s), (yyvsp[-4].code), (yyvsp[-3].narg));
@@ -3266,65 +3284,65 @@ yyreduce:
 		g_lingo->clearArgStack();
 		g_lingo->_ignoreMe = false;
 		delete (yyvsp[-5].s); }
-#line 3270 "engines/director/lingo/lingo-gr.cpp"
+#line 3288 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 146:
-#line 641 "engines/director/lingo/lingo-gr.y"
+  case 147:
+#line 644 "engines/director/lingo/lingo-gr.y"
          { g_lingo->_indef = kStateInArgs; }
-#line 3276 "engines/director/lingo/lingo-gr.cpp"
+#line 3294 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 147:
-#line 641 "engines/director/lingo/lingo-gr.y"
+  case 148:
+#line 644 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.s) = (yyvsp[0].s); g_lingo->_currentFactory.clear(); g_lingo->_ignoreMe = true; }
-#line 3282 "engines/director/lingo/lingo-gr.cpp"
+#line 3300 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 148:
-#line 643 "engines/director/lingo/lingo-gr.y"
+  case 149:
+#line 646 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3288 "engines/director/lingo/lingo-gr.cpp"
+#line 3306 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 149:
-#line 644 "engines/director/lingo/lingo-gr.y"
+  case 150:
+#line 647 "engines/director/lingo/lingo-gr.y"
                                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = 1; delete (yyvsp[0].s); }
-#line 3294 "engines/director/lingo/lingo-gr.cpp"
+#line 3312 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 150:
-#line 645 "engines/director/lingo/lingo-gr.y"
+  case 151:
+#line 648 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-2].narg) + 1; delete (yyvsp[0].s); }
-#line 3300 "engines/director/lingo/lingo-gr.cpp"
+#line 3318 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 151:
-#line 646 "engines/director/lingo/lingo-gr.y"
+  case 152:
+#line 649 "engines/director/lingo/lingo-gr.y"
                                 { g_lingo->codeArg((yyvsp[0].s)); (yyval.narg) = (yyvsp[-3].narg) + 1; delete (yyvsp[0].s); }
-#line 3306 "engines/director/lingo/lingo-gr.cpp"
+#line 3324 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 153:
-#line 649 "engines/director/lingo/lingo-gr.y"
+  case 154:
+#line 652 "engines/director/lingo/lingo-gr.y"
                                                 { delete (yyvsp[0].s); }
-#line 3312 "engines/director/lingo/lingo-gr.cpp"
+#line 3330 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 154:
-#line 650 "engines/director/lingo/lingo-gr.y"
+  case 155:
+#line 653 "engines/director/lingo/lingo-gr.y"
                                         { delete (yyvsp[0].s); }
-#line 3318 "engines/director/lingo/lingo-gr.cpp"
+#line 3336 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 155:
-#line 652 "engines/director/lingo/lingo-gr.y"
+  case 156:
+#line 655 "engines/director/lingo/lingo-gr.y"
                                         { g_lingo->codeArgStore(); g_lingo->_indef = kStateInDef; }
-#line 3324 "engines/director/lingo/lingo-gr.cpp"
+#line 3342 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 156:
-#line 654 "engines/director/lingo/lingo-gr.y"
+  case 157:
+#line 657 "engines/director/lingo/lingo-gr.y"
                                 {
 		g_lingo->code1(LC::c_call);
 		g_lingo->codeString((yyvsp[-1].s)->c_str());
@@ -3332,113 +3350,113 @@ yyreduce:
 		WRITE_UINT32(&numpar, (yyvsp[0].narg));
 		g_lingo->code1(numpar);
 		delete (yyvsp[-1].s); }
-#line 3336 "engines/director/lingo/lingo-gr.cpp"
+#line 3354 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 157:
-#line 662 "engines/director/lingo/lingo-gr.y"
+  case 158:
+#line 665 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = 0; }
-#line 3342 "engines/director/lingo/lingo-gr.cpp"
+#line 3360 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 158:
-#line 663 "engines/director/lingo/lingo-gr.y"
+  case 159:
+#line 666 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.narg) = 1; }
-#line 3348 "engines/director/lingo/lingo-gr.cpp"
+#line 3366 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 159:
-#line 664 "engines/director/lingo/lingo-gr.y"
+  case 160:
+#line 667 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3354 "engines/director/lingo/lingo-gr.cpp"
+#line 3372 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 160:
-#line 666 "engines/director/lingo/lingo-gr.y"
+  case 161:
+#line 669 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3360 "engines/director/lingo/lingo-gr.cpp"
+#line 3378 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 161:
-#line 667 "engines/director/lingo/lingo-gr.y"
+  case 162:
+#line 670 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3366 "engines/director/lingo/lingo-gr.cpp"
+#line 3384 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 162:
-#line 669 "engines/director/lingo/lingo-gr.y"
+  case 163:
+#line 672 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = (yyvsp[-1].code); }
-#line 3372 "engines/director/lingo/lingo-gr.cpp"
+#line 3390 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 163:
-#line 671 "engines/director/lingo/lingo-gr.y"
+  case 164:
+#line 674 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.code) = g_lingo->code2(LC::c_arraypush, 0); }
-#line 3378 "engines/director/lingo/lingo-gr.cpp"
+#line 3396 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 164:
-#line 672 "engines/director/lingo/lingo-gr.y"
+  case 165:
+#line 675 "engines/director/lingo/lingo-gr.y"
                                                 { (yyval.code) = g_lingo->code2(LC::c_proparraypush, 0); }
-#line 3384 "engines/director/lingo/lingo-gr.cpp"
+#line 3402 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 165:
-#line 673 "engines/director/lingo/lingo-gr.y"
+  case 166:
+#line 676 "engines/director/lingo/lingo-gr.y"
                      { (yyval.code) = g_lingo->code1(LC::c_arraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3390 "engines/director/lingo/lingo-gr.cpp"
+#line 3408 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 166:
-#line 674 "engines/director/lingo/lingo-gr.y"
+  case 167:
+#line 677 "engines/director/lingo/lingo-gr.y"
                          { (yyval.code) = g_lingo->code1(LC::c_proparraypush); (yyval.code) = g_lingo->codeInt((yyvsp[0].narg)); }
-#line 3396 "engines/director/lingo/lingo-gr.cpp"
+#line 3414 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 167:
-#line 676 "engines/director/lingo/lingo-gr.y"
+  case 168:
+#line 679 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3402 "engines/director/lingo/lingo-gr.cpp"
+#line 3420 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 168:
-#line 677 "engines/director/lingo/lingo-gr.y"
+  case 169:
+#line 680 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3408 "engines/director/lingo/lingo-gr.cpp"
+#line 3426 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 169:
-#line 679 "engines/director/lingo/lingo-gr.y"
+  case 170:
+#line 682 "engines/director/lingo/lingo-gr.y"
                                         { (yyval.narg) = 1; }
-#line 3414 "engines/director/lingo/lingo-gr.cpp"
+#line 3432 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 170:
-#line 680 "engines/director/lingo/lingo-gr.y"
+  case 171:
+#line 683 "engines/director/lingo/lingo-gr.y"
                                 { (yyval.narg) = (yyvsp[-2].narg) + 1; }
-#line 3420 "engines/director/lingo/lingo-gr.cpp"
+#line 3438 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 171:
-#line 682 "engines/director/lingo/lingo-gr.y"
+  case 172:
+#line 685 "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 3429 "engines/director/lingo/lingo-gr.cpp"
+#line 3447 "engines/director/lingo/lingo-gr.cpp"
     break;
 
-  case 172:
-#line 686 "engines/director/lingo/lingo-gr.y"
+  case 173:
+#line 689 "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 3438 "engines/director/lingo/lingo-gr.cpp"
+#line 3456 "engines/director/lingo/lingo-gr.cpp"
     break;
 
 
-#line 3442 "engines/director/lingo/lingo-gr.cpp"
+#line 3460 "engines/director/lingo/lingo-gr.cpp"
 
       default: break;
     }
@@ -3663,5 +3681,5 @@ yyreturn:
   return yyresult;
 }
 
-#line 692 "engines/director/lingo/lingo-gr.y"
+#line 695 "engines/director/lingo/lingo-gr.y"
 
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 4dfbc0e389..6d16c1ab85 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -76,69 +76,70 @@ extern int yydebug;
     BLTIN = 277,                   /* BLTIN  */
     FBLTIN = 278,                  /* FBLTIN  */
     RBLTIN = 279,                  /* RBLTIN  */
-    ID = 280,                      /* ID  */
-    STRING = 281,                  /* STRING  */
-    HANDLER = 282,                 /* HANDLER  */
-    SYMBOL = 283,                  /* SYMBOL  */
-    ENDCLAUSE = 284,               /* ENDCLAUSE  */
-    tPLAYACCEL = 285,              /* tPLAYACCEL  */
-    tMETHOD = 286,                 /* tMETHOD  */
-    THEOBJECTFIELD = 287,          /* THEOBJECTFIELD  */
-    THEOBJECTREF = 288,            /* THEOBJECTREF  */
-    tDOWN = 289,                   /* tDOWN  */
-    tELSE = 290,                   /* tELSE  */
-    tELSIF = 291,                  /* tELSIF  */
-    tEXIT = 292,                   /* tEXIT  */
-    tGLOBAL = 293,                 /* tGLOBAL  */
-    tGO = 294,                     /* tGO  */
-    tIF = 295,                     /* tIF  */
-    tIN = 296,                     /* tIN  */
-    tINTO = 297,                   /* tINTO  */
-    tLOOP = 298,                   /* tLOOP  */
-    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  */
-    tNLELSE = 312,                 /* tNLELSE  */
-    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  */
+    THEFBLTIN = 280,               /* THEFBLTIN  */
+    ID = 281,                      /* ID  */
+    STRING = 282,                  /* STRING  */
+    HANDLER = 283,                 /* HANDLER  */
+    SYMBOL = 284,                  /* SYMBOL  */
+    ENDCLAUSE = 285,               /* ENDCLAUSE  */
+    tPLAYACCEL = 286,              /* tPLAYACCEL  */
+    tMETHOD = 287,                 /* tMETHOD  */
+    THEOBJECTFIELD = 288,          /* THEOBJECTFIELD  */
+    THEOBJECTREF = 289,            /* THEOBJECTREF  */
+    tDOWN = 290,                   /* tDOWN  */
+    tELSE = 291,                   /* tELSE  */
+    tELSIF = 292,                  /* tELSIF  */
+    tEXIT = 293,                   /* tEXIT  */
+    tGLOBAL = 294,                 /* tGLOBAL  */
+    tGO = 295,                     /* tGO  */
+    tIF = 296,                     /* tIF  */
+    tIN = 297,                     /* tIN  */
+    tINTO = 298,                   /* tINTO  */
+    tLOOP = 299,                   /* tLOOP  */
+    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  */
+    tNLELSE = 313,                 /* tNLELSE  */
+    tFACTORY = 314,                /* tFACTORY  */
+    tOPEN = 315,                   /* tOPEN  */
+    tPLAY = 316,                   /* tPLAY  */
+    tINSTANCE = 317,               /* tINSTANCE  */
+    tGE = 318,                     /* tGE  */
+    tLE = 319,                     /* tLE  */
+    tEQ = 320,                     /* tEQ  */
+    tNEQ = 321,                    /* tNEQ  */
+    tAND = 322,                    /* tAND  */
+    tOR = 323,                     /* tOR  */
+    tNOT = 324,                    /* tNOT  */
+    tMOD = 325,                    /* tMOD  */
+    tAFTER = 326,                  /* tAFTER  */
+    tBEFORE = 327,                 /* tBEFORE  */
+    tCONCAT = 328,                 /* tCONCAT  */
+    tCONTAINS = 329,               /* tCONTAINS  */
+    tSTARTS = 330,                 /* tSTARTS  */
+    tCHAR = 331,                   /* tCHAR  */
+    tITEM = 332,                   /* tITEM  */
+    tLINE = 333,                   /* tLINE  */
+    tWORD = 334,                   /* tWORD  */
+    tSPRITE = 335,                 /* tSPRITE  */
+    tINTERSECTS = 336,             /* tINTERSECTS  */
+    tWITHIN = 337,                 /* tWITHIN  */
+    tTELL = 338,                   /* tTELL  */
+    tPROPERTY = 339,               /* tPROPERTY  */
+    tON = 340,                     /* tON  */
+    tENDIF = 341,                  /* tENDIF  */
+    tENDREPEAT = 342,              /* tENDREPEAT  */
+    tENDTELL = 343                 /* tENDTELL  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -167,7 +168,7 @@ union YYSTYPE
 		Common::String *field;
 	} objectref;
 
-#line 171 "engines/director/lingo/lingo-gr.h"
+#line 172 "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 f8666e3e67..e6ad4ffd73 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -107,7 +107,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
 %token<i> INT ARGC ARGCNORET
 %token<e> THEENTITY THEENTITYWITHID THEMENUITEMENTITY THEMENUITEMSENTITY
 %token<f> FLOAT
-%token<s> BLTIN FBLTIN RBLTIN
+%token<s> BLTIN FBLTIN RBLTIN THEFBLTIN
 %token<s> ID STRING HANDLER SYMBOL
 %token<s> ENDCLAUSE tPLAYACCEL tMETHOD
 %token<objectfield> THEOBJECTFIELD
@@ -438,6 +438,9 @@ expr: simpleexpr { $$ = $simpleexpr; }
 	| ID '(' arglist ')'	{
 		$$ = g_lingo->codeFunc($ID, $arglist);
 		delete $ID; }
+	| THEFBLTIN tOF simpleexpr	{
+		$$ = g_lingo->codeFunc($THEFBLTIN, 1);
+		delete $THEFBLTIN; }
 	| THEENTITYWITHID simpleexpr {
 		$$ = g_lingo->code1(LC::c_theentitypush);
 		inst e = 0, f = 0;
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 38ff38aea8..96eca9600d 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1599,77 +1599,85 @@ 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) {
+				yylval.s = new Common::String(ptr);
+				return THEFBLTIN;
+			}
+		}
+
 		warning("LEXER: Unhandled the entity '%s'", ptr);
 	}
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 358 "engines/director/lingo/lingo-lex.l"
+#line 366 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 359 "engines/director/lingo/lingo-lex.l"
+#line 367 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 360 "engines/director/lingo/lingo-lex.l"
+#line 368 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 361 "engines/director/lingo/lingo-lex.l"
+#line 369 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 362 "engines/director/lingo/lingo-lex.l"
+#line 370 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 363 "engines/director/lingo/lingo-lex.l"
+#line 371 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 364 "engines/director/lingo/lingo-lex.l"
+#line 372 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 365 "engines/director/lingo/lingo-lex.l"
+#line 373 "engines/director/lingo/lingo-lex.l"
 { count(); return tWORD; }
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 367 "engines/director/lingo/lingo-lex.l"
+#line 375 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 368 "engines/director/lingo/lingo-lex.l"
+#line 376 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 369 "engines/director/lingo/lingo-lex.l"
+#line 377 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 370 "engines/director/lingo/lingo-lex.l"
+#line 378 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 371 "engines/director/lingo/lingo-lex.l"
+#line 379 "engines/director/lingo/lingo-lex.l"
 { count(); return tEQ; }
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 373 "engines/director/lingo/lingo-lex.l"
+#line 381 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1707,41 +1715,41 @@ YY_RULE_SETUP
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 407 "engines/director/lingo/lingo-lex.l"
+#line 415 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 408 "engines/director/lingo/lingo-lex.l"
+#line 416 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 409 "engines/director/lingo/lingo-lex.l"
+#line 417 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
 case 72:
 /* rule 72 can match eol */
 YY_RULE_SETUP
-#line 410 "engines/director/lingo/lingo-lex.l"
+#line 418 "engines/director/lingo/lingo-lex.l"
 { count(); return '\n'; }
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 411 "engines/director/lingo/lingo-lex.l"
+#line 419 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 412 "engines/director/lingo/lingo-lex.l"
+#line 420 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 414 "engines/director/lingo/lingo-lex.l"
+#line 422 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1745 "engines/director/lingo/lingo-lex.cpp"
+#line 1753 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2701,7 +2709,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 414 "engines/director/lingo/lingo-lex.l"
+#line 422 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index b18b957d63..72cb2a928f 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -353,6 +353,14 @@ the[ \t]+[[: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) {
+				yylval.s = new Common::String(ptr);
+				return THEFBLTIN;
+			}
+		}
+
 		warning("LEXER: Unhandled the entity '%s'", ptr);
 	}
 then			{ count(); return tTHEN; }


Commit: 5865959b36d3b54c29a0075c4b3fae406aa36cc0
    https://github.com/scummvm/scummvm/commit/5865959b36d3b54c29a0075c4b3fae406aa36cc0
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-11T00:57:35+02:00

Commit Message:
DIRECTOR: LINGO: Added test for the new 'the' syntax

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


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


Commit: 2761d3e0807b1a38dfb2858bec33e4203113415c
    https://github.com/scummvm/scummvm/commit/2761d3e0807b1a38dfb2858bec33e4203113415c
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-11T01:03:55+02:00

Commit Message:
DIRECTOR: LINGO: Removed special treatment of 'the sqrt of <value>'

Changed paths:
    engines/director/lingo/lingo-lex.cpp
    engines/director/lingo/lingo-lex.l
    engines/director/lingo/lingo-the.cpp
    engines/director/lingo/tests/the.lingo


diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 96eca9600d..002ce85256 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 75
-#define YY_END_OF_BUFFER 76
+#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
@@ -373,45 +373,44 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[333] =
+static yyconst flex_int16_t yy_accept[324] =
     {   0,
-        0,    0,   76,   74,    4,   72,   72,   74,   74,   74,
-       71,   71,   71,   70,   71,   67,   71,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   74,    3,    3,   68,    4,   72,
-        0,    0,    0,   73,    5,   66,    2,   69,   70,   65,
-       63,   64,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   12,   24,   68,   68,   68,   68,
-       68,   68,   68,   68,   34,   35,   68,   37,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   56,   68,   68,
-       68,    1,    3,    3,    0,   68,    5,    2,   69,   68,
-
-        7,   68,   68,   68,   68,   68,   15,   68,   68,   20,
-       68,   68,   68,   68,   68,   68,   68,   30,   68,   68,
-       33,   68,   68,   68,   68,   43,   68,   45,   68,   68,
-       68,   68,   68,   68,   68,   68,    0,   68,   68,   68,
-        9,   68,   11,   14,    0,   17,   68,    0,    0,   68,
-       68,   23,   25,   26,   27,   68,   68,   68,   32,   36,
-       39,   68,   68,   68,   68,   68,   47,    0,   55,   60,
-       68,   58,   62,    0,   68,    6,   68,   68,    0,   15,
-       68,    0,   20,   68,   68,   28,   68,   31,    0,   68,
-       68,   68,   68,   68,   68,   54,   54,   54,   54,   54,
-
-       61,   68,    0,   68,    8,   68,    0,   15,   18,    0,
-        0,   68,   68,   68,    0,   68,   68,   68,   44,   57,
-       46,    0,    0,   54,   54,   54,   54,   59,    0,   68,
-       68,   13,    0,   68,   68,    0,   29,    0,   68,   68,
-       68,    0,    0,    0,    0,   54,   54,   54,   54,    0,
-       16,   10,   19,   21,   68,   29,   29,    0,   68,   41,
-       42,    0,    0,    0,   54,   54,   54,   54,   16,   68,
-       29,    0,   40,    0,    0,    0,    0,   54,    0,   54,
-       22,   38,   53,   52,   53,    0,    0,    0,    0,   54,
-        0,    0,    0,   52,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   48,
-        0,    0,    0,   53,   52,   52,   53,    0,   49,   51,
-       52,   52,    0,   52,    0,   52,    0,    0,    0,    0,
-       50,    0
+        0,    0,   75,   73,    4,   71,   71,   73,   73,   73,
+       70,   70,   70,   69,   70,   66,   70,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   73,    3,    3,   67,    4,   71,
+        0,    0,    0,   72,    5,   65,    2,   68,   69,   64,
+       62,   63,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   12,   24,   67,   67,   67,   67,
+       67,   67,   67,   67,   34,   35,   67,   37,   67,   67,
+       67,   67,   67,   67,   67,   67,   67,   55,   67,   67,
+       67,    1,    3,    3,    0,   67,    5,    2,   68,   67,
+
+        7,   67,   67,   67,   67,   67,   15,   67,   67,   20,
+       67,   67,   67,   67,   67,   67,   67,   30,   67,   67,
+       33,   67,   67,   67,   67,   43,   67,   45,   67,   67,
+       67,   67,   67,   67,   67,   67,    0,   67,   67,   67,
+        9,   67,   11,   14,    0,   17,   67,    0,    0,   67,
+       67,   23,   25,   26,   27,   67,   67,   67,   32,   36,
+       39,   67,   67,   67,   67,   67,   47,    0,   54,   59,
+       67,   57,   61,    0,   67,    6,   67,   67,    0,   15,
+       67,    0,   20,   67,   67,   28,   67,   31,    0,   67,
+       67,   67,   67,   67,   67,   53,   53,   53,   53,   60,
+
+       67,    0,   67,    8,   67,    0,   15,   18,    0,    0,
+       67,   67,   67,    0,   67,   67,   67,   44,   56,   46,
+        0,    0,   53,   53,   53,   58,    0,   67,   67,   13,
+        0,   67,   67,    0,   29,    0,   67,   67,   67,    0,
+        0,    0,    0,   53,   53,   53,    0,   16,   10,   19,
+       21,   67,   29,   29,    0,   67,   41,   42,    0,    0,
+        0,   53,   53,   53,   16,   67,   29,    0,   40,    0,
+        0,    0,    0,   53,   53,   22,   38,   52,   51,   52,
+        0,    0,    0,    0,   53,    0,   51,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,   52,   51,   51,   52,    0,   48,
+       50,   51,   51,    0,   51,    0,   51,    0,    0,    0,
+        0,   49,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -424,19 +423,19 @@ static yyconst flex_int32_t yy_ec[256] =
        13,   13,   13,   13,   13,   13,   13,    8,    1,   14,
        15,   16,    1,    1,   17,   18,   19,   20,   21,   22,
        23,   24,   25,   26,   26,   27,   28,   29,   30,   31,
-       32,   33,   34,   35,   36,   37,   38,   39,   40,   26,
-        8,    1,    8,    8,   41,    1,   42,   43,   44,   45,
+       26,   32,   33,   34,   35,   36,   37,   38,   39,   26,
+        8,    1,    8,    8,   40,    1,   41,   42,   43,   44,
 
-       46,   47,   48,   49,   50,   26,   26,   51,   52,   53,
-       54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
-       64,   26,    1,    1,    1,    1,    1,    1,    1,    1,
+       45,   46,   47,   48,   49,   26,   26,   50,   51,   52,
+       53,   54,   26,   55,   56,   57,   58,   59,   60,   61,
+       62,   26,    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,    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,   65,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,   63,    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,
@@ -446,216 +445,209 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[66] =
+static yyconst flex_int32_t yy_meta[64] =
     {   0,
         1,    2,    3,    3,    2,    1,    1,    1,    1,    1,
         1,    1,    4,    1,    1,    1,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
+        5,    5,    5,    5,    5,    5,    5,    5,    5,    6,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        6,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
-        5,    5,    5,    5,    1
+        5,    5,    1
     } ;
 
-static yyconst flex_int16_t yy_base[350] =
+static yyconst flex_int16_t yy_base[341] =
     {   0,
-        0,   64,  173,  929,   68,  929,  929,   72,  162,    0,
-      929,  157,  134,   55,   63,  929,  125,   59,   59,   59,
-       55,   63,    0,   64,   75,   70,  100,   77,  110,  102,
-       98,  129,  128,  131,  144,  167,  188,  134,  192,  929,
-      196,  175,  130,  929,    0,  929,    0,   86,  174,  929,
-      929,  929,    0,   66,  163,  180,  186,   74,  167,  172,
-      189,  186,  177,   82,    0,  181,  191,  188,  188,  194,
-      184,  213,  181,  186,    0,    0,  201,    0,  206,  225,
-      190,  220,  217,  221,  239,  232,  239,    0,  241,  229,
-      232,  929,  290,  294,  260,  261,    0,    0,   69,  261,
-
-        0,  254,  253,  255,  271,  280,   91,  268,  286,  313,
-      271,  290,  281,  292,  288,  288,  293,    0,  297,  290,
-        0,  299,  292,  297,  308,    0,  319,    0,  321,  317,
-      324,  352,  324,  334,  338,  344,  347,  333,  336,  337,
-        0,  356,    0,  265,  267,    0,  359,  345,  349,  365,
-      347,    0,    0,    0,    0,  354,  356,  367,    0,    0,
-      394,  365,  374,  380,  365,  371,    0,  435,    0,    0,
-      388,  389,    0,  382,  388,    0,  398,  396,  423,    0,
-      396,  409,  427,  402,  399,    0,  407,    0,  448,  416,
-      413,  421,  421,  417,  424,  466,  482,  492,  498,  496,
-
-        0,  430,  431,  432,    0,  437,  427,    0,    0,  453,
-      509,  460,  470,  505,  476,  493,  479,  482,    0,    0,
-        0,  520,  499,  541,  543,  557,  558,    0,  490,  502,
-      515,  929,  511,  515,  545,  524,    0,  552,  551,  542,
-      537,  576,  563,  560,  558,  582,  586,  608,  610,  558,
-        0,    0,  929,    0,  567,    0,    0,  575,  584,    0,
-        0,  581,  619,  595,  623,  629,  643,  647,  929,  598,
-        0,  598,    0,  615,  649,  616,  653,  661,  675,  674,
-        0,  929,  929,    0,  929,  667,  680,  684,  676,  694,
-      685,  669,  712,    0,  683,  719,  698,  723,  725,  733,
-
-      738,  689,  712,  697,  748,  747,  759,  757,  701,  771,
-      780,  781,  786,  788,  745,  734,  794,  798,  802,  929,
-      804,  808,  810,  812,  791,  817,  773,  773,  822,  826,
-      929,  929,  858,  860,  863,  866,  872,  877,  882,  884,
-      889,  894,  897,  900,  905,  910,  912,  917,  922
+        0,   62,  169,  888,   66,  888,  888,   70,  124,    0,
+      888,  119,  115,   53,   61,  888,  109,   57,   57,   57,
+       53,   61,    0,   62,   85,   68,  106,   95,  112,  118,
+       59,  118,  141,  130,   91,  188,  193,   79,  197,  888,
+      201,   97,  112,  888,    0,  888,    0,   84,  144,  888,
+      888,  888,    0,  104,  126,  162,  168,  159,  170,  179,
+      193,  189,  187,   80,    0,  185,  199,  193,  193,  205,
+      192,  211,  189,  195,    0,    0,  212,    0,  226,  232,
+      202,  227,  227,  231,  237,  238,  245,    0,  247,  237,
+      242,  888,  296,  300,  252,  263,    0,    0,   78,  262,
+
+        0,  257,  257,  257,  279,  274,  130,  275,  293,  311,
+      281,  296,  292,  302,  290,  293,  303,    0,  303,  296,
+        0,  308,  300,  314,  323,    0,  313,    0,  315,  323,
+      329,  364,  332,  338,  343,  350,  352,  340,  343,  344,
+        0,  355,    0,  172,  223,    0,  363,  350,  353,  368,
+      355,    0,    0,    0,    0,  359,  360,  379,    0,    0,
+      406,  376,  381,  386,  358,  373,    0,  412,    0,    0,
+      397,  394,    0,  387,  392,    0,  407,  404,  429,    0,
+      405,  416,  271,  406,  403,    0,  417,    0,  444,  431,
+      410,  424,  426,  430,  432,  467,  479,  489,  490,    0,
+
+      441,  450,  450,    0,  456,  451,    0,    0,  458,  496,
+      468,  481,  508,  472,  487,  477,  480,    0,    0,    0,
+      514,  495,  523,  536,  549,    0,  485,  483,  499,  888,
+      515,  528,  531,  560,    0,  536,  536,  510,  522,  567,
+      551,  548,  553,  578,  580,  591,  524,    0,    0,  888,
+        0,  557,    0,    0,  567,  573,    0,    0,  570,  601,
+      577,  605,  611,  629,  888,  584,    0,  588,    0,  598,
+      606,  603,  639,  650,  652,    0,  888,  888,    0,  888,
+      640,  659,  663,  661,  665,  682,    0,  628,  686,  688,
+      693,  702,  701,  625,  649,  667,  706,  712,  713,  723,
+
+      677,  692,  728,  736,  743,  695,  718,  747,  755,  761,
+      888,  765,  766,  767,  772,  748,  777,  746,  734,  779,
+      781,  888,  888,  817,  819,  822,  825,  831,  836,  841,
+      843,  848,  853,  856,  859,  864,  869,  871,  876,  881
     } ;
 
-static yyconst flex_int16_t yy_def[350] =
+static yyconst flex_int16_t yy_def[341] =
     {   0,
-      332,    1,  332,  332,  332,  332,  332,  332,  333,  334,
-      332,  332,  332,  332,  332,  332,  332,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  332,  332,  332,  335,  332,  332,
-      332,  332,  333,  332,  336,  332,  337,  332,  332,  332,
-      332,  332,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  332,  332,  332,  332,  335,  336,  337,  332,  335,
-
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  332,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  332,  335,  335,  335,
-      335,  335,  335,  335,  338,  335,  335,  332,  332,  335,
-      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
-      335,  335,  335,  335,  335,  335,  335,  339,  335,  335,
-      335,  335,  335,  332,  335,  335,  335,  335,  332,  340,
-      335,  332,  332,  335,  335,  335,  335,  335,  332,  335,
-      335,  335,  335,  335,  335,  339,  339,  339,  339,  339,
-
-      335,  335,  332,  335,  335,  335,  332,  340,  335,  332,
-      332,  335,  335,  341,  332,  335,  335,  335,  335,  335,
-      335,  332,  332,  339,  339,  339,  339,  335,  332,  335,
-      335,  332,  332,  335,  335,  342,  343,  332,  335,  335,
-      335,  332,  332,  332,  332,  339,  339,  339,  339,  332,
-      335,  335,  332,  335,  335,  344,  343,  332,  335,  335,
-      335,  332,  332,  332,  339,  339,  339,  339,  332,  335,
-      344,  332,  335,  332,  345,  332,  346,  339,  332,  339,
-      335,  332,  332,  347,  332,  346,  346,  346,  346,  339,
-      332,  332,  332,  347,  332,  346,  346,  346,  332,  332,
-
-      332,  332,  332,  332,  346,  345,  346,  332,  332,  345,
-      332,  332,  332,  346,  347,  347,  346,  332,  345,  332,
-      347,  347,  348,  349,  332,  349,  332,  332,  332,  332,
-      332,    0,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332
+      323,    1,  323,  323,  323,  323,  323,  323,  324,  325,
+      323,  323,  323,  323,  323,  323,  323,  326,  326,  326,
+      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
+      326,  326,  326,  326,  323,  323,  323,  326,  323,  323,
+      323,  323,  324,  323,  327,  323,  328,  323,  323,  323,
+      323,  323,  326,  326,  326,  326,  326,  326,  326,  326,
+      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
+      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
+      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
+      326,  323,  323,  323,  323,  326,  327,  328,  323,  326,
+
+      326,  326,  326,  326,  326,  326,  326,  326,  326,  323,
+      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
+      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
+      326,  326,  326,  326,  326,  326,  323,  326,  326,  326,
+      326,  326,  326,  326,  329,  326,  326,  323,  323,  326,
+      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
+      326,  326,  326,  326,  326,  326,  326,  330,  326,  326,
+      326,  326,  326,  323,  326,  326,  326,  326,  323,  331,
+      326,  323,  323,  326,  326,  326,  326,  326,  323,  326,
+      326,  326,  326,  326,  326,  330,  330,  330,  330,  326,
+
+      326,  323,  326,  326,  326,  323,  331,  326,  323,  323,
+      326,  326,  332,  323,  326,  326,  326,  326,  326,  326,
+      323,  323,  330,  330,  330,  326,  323,  326,  326,  323,
+      323,  326,  326,  333,  334,  323,  326,  326,  326,  323,
+      323,  323,  323,  330,  330,  330,  323,  326,  326,  323,
+      326,  326,  335,  334,  323,  326,  326,  326,  323,  323,
+      323,  330,  330,  330,  323,  326,  335,  323,  326,  323,
+      336,  323,  337,  330,  330,  326,  323,  323,  338,  323,
+      337,  337,  337,  337,  330,  323,  338,  323,  337,  337,
+      337,  323,  323,  323,  323,  323,  337,  336,  337,  323,
+
+      323,  323,  323,  323,  337,  338,  338,  337,  323,  336,
+      323,  338,  338,  339,  340,  323,  340,  323,  323,  323,
+      323,  323,    0,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323
     } ;
 
-static yyconst flex_int16_t yy_nxt[995] =
+static yyconst flex_int16_t yy_nxt[952] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   11,
        13,    4,   14,   15,   16,   17,   18,   19,   20,   21,
        22,   23,   24,   23,   25,   23,   26,   27,   28,   29,
-       30,   23,   31,   32,   33,   23,   23,   34,   23,   23,
-       23,   18,   19,   20,   21,   22,   23,   24,   23,   25,
-       26,   27,   28,   29,   30,   23,   31,   32,   33,   23,
-       23,   34,   23,   23,   35,   36,   48,   49,   37,   39,
-       40,   40,   41,   41,   40,   40,   41,   50,   51,   56,
-       54,   99,   57,  110,   59,   38,  110,   55,   58,   60,
-       63,   61,  145,   64,   68,  145,   65,   73,   99,   69,
-
-      100,   62,  104,   66,   56,   54,   74,   57,   59,   67,
-       38,   55,   58,   60,   63,   61,   70,   64,   82,   68,
-       71,   65,   73,   69,  100,   62,  104,   66,   79,   72,
-       74,   75,   42,   67,   80,   44,   42,   81,   76,   52,
-       77,   70,   78,   82,   47,   71,   92,   92,   86,   83,
-       96,   87,   79,   72,   89,   90,   75,   88,   80,   84,
-       91,   81,   76,   85,   77,   46,   78,   44,   93,   40,
-       40,   94,  332,   86,   83,   96,   87,   92,   92,   89,
-       90,   88,  101,   84,   91,   48,   49,   85,   95,   94,
-       40,   40,   94,   39,   40,   40,   41,   41,   40,   40,
-
-       41,  102,  103,  332,  105,  106,  109,  101,  107,   95,
-      108,  113,  116,   95,  111,  112,  114,  115,  117,  120,
-      121,  122,  123,  332,  126,  332,  102,  103,  105,  106,
-      109,   42,  118,  107,   95,  108,  113,  116,  111,  112,
-      114,  115,  117,  120,  121,  124,  122,  123,  126,  119,
-      127,  128,   42,  129,  125,  130,   42,  118,  131,  132,
-       42,  133,  332,  135,  136,  134,  179,  332,  145,  179,
-      124,  145,  332,  119,  127,  128,  137,  129,  125,  138,
-      130,  139,  131,  140,  132,  141,  133,  135,  136,  142,
-      134,   93,   40,   40,   94,   94,   40,   40,   94,  143,
-
-      144,  137,  146,  147,  138,  150,  139,  140,  153,  141,
-      151,   95,  154,  142,  110,   95,  157,  110,  155,  152,
-      156,  158,  332,  143,  159,  144,  146,  160,  147,  150,
-      332,  161,  153,  162,  148,  151,   95,  154,  163,  164,
-       95,  157,  155,  152,  156,  165,  158,  149,  159,  166,
-      167,  160,  170,  168,   42,  161,  168,  162,   42,  148,
-      171,  172,  163,  173,  164,  174,  332,  175,  176,  177,
-      165,  149,  178,  166,  167,  181,  170,  182,  183,  185,
-      169,  184,  332,  186,  171,  187,  172,  188,  173,  191,
-      174,  175,  176,  177,  192,  189,  193,  178,  189,  194,
-
-      181,  182,  183,  185,  169,  195,  184,  186,  201,  187,
-      190,  332,  188,  202,  191,  332,  203,  204,  205,  192,
-      206,  193,  209,  194,  179,  210,  214,  179,  211,  195,
-      212,  211,  213,  201,  216,  190,  168,  220,  202,  168,
-      203,  204,  217,  205,  332,  206,  209,  207,  232,  189,
-      210,  214,  189,  218,  212,  219,  213,  221,  228,  216,
-      229,  197,  220,  198,  230,  231,  217,  222,  199,  215,
-      222,  200,  207,  232,  332,  223,  332,  218,  234,  219,
-      233,  221,  228,  222,  229,  197,  222,  198,  230,  231,
-      235,  223,  199,  222,  215,  200,  222,  222,  224,  222,
-
-      222,  223,  222,  234,  233,  223,  236,  223,  238,  236,
-      211,  239,  227,  211,  240,  235,  241,   53,  243,  332,
-      332,  242,  250,  224,  242,  236,  332,  225,  236,  226,
-      148,  253,  238,  245,  332,  254,  239,  227,  240,  243,
-      241,  251,  222,  243,  222,  222,  250,  222,  252,  244,
-      223,  225,  223,  226,  245,  148,  253,  245,  222,  222,
-      254,  222,  222,  255,  243,  251,  223,  223,  258,  332,
-      247,  259,  252,  244,  246,  260,  261,  242,  245,  262,
-      242,  263,  264,  222,  249,  332,  222,  222,  255,  248,
-      222,  223,  332,  258,  247,  223,  259,  269,  246,  260,
-
-      261,  270,  272,  266,  262,  244,  263,  264,  249,  222,
-      273,  222,  222,  248,  222,  274,  265,  223,  282,  223,
-      275,  269,  276,  275,  277,  270,  272,  277,  266,  244,
-      222,  281,  223,  222,  273,  283,  285,  332,  223,  274,
-      265,  332,  267,  282,  279,  268,  276,  279,  222,  278,
-      275,  222,  223,  275,  242,  281,  223,  242,  332,  332,
-      283,  285,  222,  332,  332,  222,  267,  280,  295,  268,
-      223,  295,  287,  332,  278,  293,  291,  295,  293,  291,
-      295,  295,  288,  223,  295,  295,  291,  289,  295,  291,
-      300,  332,  280,  290,  243,  299,  296,  287,  299,  306,
-
-      298,  332,  306,  223,  292,  297,  288,  303,  332,  245,
-      311,  289,  304,  301,  292,  300,  301,  290,  313,  243,
-      295,  296,  318,  295,  295,  298,  308,  295,  292,  308,
-      297,  243,  303,  245,  310,  311,  304,  310,  292,  301,
-      312,  302,  301,  313,  243,  332,  245,  318,  275,  295,
-      307,  275,  295,  305,  309,  322,  243,  332,  308,  245,
-      295,  308,  332,  295,  312,  302,  332,  302,  314,  243,
-      245,  315,  310,  321,  307,  310,  316,  305,  309,  317,
-      322,  319,  320,  245,  319,  320,  309,  320,  332,  295,
-      320,  302,  295,  314,  330,  295,  315,  321,  295,  323,
-
-      316,  329,  323,  319,  317,  320,  319,  332,  320,  320,
-      309,  323,  320,  325,  323,  327,  325,  332,  325,  330,
-      328,  325,  332,  331,  294,  329,  331,  331,  332,  294,
-      331,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      327,  332,  332,  332,  328,  332,  332,  332,  332,  332,
-      284,  332,  294,  332,  332,  332,  332,  294,   43,   43,
-      332,   43,   43,   43,   45,   45,   53,   53,   53,   97,
-       97,   97,   98,   98,  332,   98,   98,   98,  180,  332,
-      332,  180,  180,  196,  332,  332,  196,  208,  208,  208,
-      237,  332,  237,  237,  237,  256,  332,  332,  256,  256,
-
-      257,  257,  257,  271,  271,  271,  284,  332,  332,  284,
-      284,  286,  332,  332,  286,  294,  294,  294,  324,  332,
-      332,  324,  324,  326,  332,  326,  326,  326,    3,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332
-
+       30,   31,   32,   33,   23,   23,   34,   23,   23,   23,
+       18,   19,   20,   21,   22,   23,   24,   23,   25,   26,
+       27,   28,   29,   30,   31,   32,   33,   23,   23,   34,
+       23,   23,   35,   36,   48,   49,   37,   39,   40,   40,
+       41,   41,   40,   40,   41,   50,   51,   56,   54,   82,
+       57,  110,   59,   38,  110,   55,   58,   60,   63,   61,
+       99,   64,   68,   92,   92,   96,   99,   69,   62,   92,
+
+       92,   56,   54,   82,   57,   59,   65,   38,   55,   58,
+       60,   63,   61,   66,   64,   73,   68,   44,   67,   96,
+       69,   62,   70,   52,   74,   47,   71,   46,   42,   44,
+       65,  145,   42,   75,  145,   72,   66,  100,   83,   73,
+       76,   67,   77,   78,   79,  101,   70,   74,   84,   80,
+       71,   85,   81,   89,   90,   48,   49,   75,   72,   91,
+      100,   86,   83,   76,   87,   77,   78,   79,  323,  101,
+       88,   84,   80,  179,   85,   81,  179,   89,   90,  323,
+      323,  323,   91,  102,  103,   86,  323,  104,   87,   93,
+       40,   40,   94,   88,   94,   40,   40,   94,   39,   40,
+
+       40,   41,   41,   40,   40,   41,  105,  102,  103,   95,
+      104,  106,  107,  108,   95,  323,  109,  111,  112,  113,
+      323,  114,  115,  116,  145,  117,  120,  145,  121,  105,
+      118,  323,  122,   95,  106,  126,  107,  108,   95,  109,
+      111,  112,  123,  113,  114,  115,  119,  116,  117,  120,
+       42,  121,  124,  130,  118,   42,  122,  127,  126,   42,
+      128,  125,  129,   42,  131,  132,  123,  133,  137,  119,
+      135,  134,  210,  136,  323,  210,  124,  130,  323,  323,
+      127,  138,  139,  128,  125,  129,  140,  131,  141,  132,
+      142,  133,  137,  135,  144,  134,  136,   93,   40,   40,
+
+       94,   94,   40,   40,   94,  138,  139,  143,  146,  140,
+      147,  141,  110,  142,  150,  110,  151,   95,  144,  153,
+      155,   95,  154,  323,  156,  152,  157,  158,  323,  159,
+      143,  146,  148,  164,  147,  323,  160,  150,  161,  165,
+      151,   95,  153,  155,  149,   95,  154,  156,  152,  162,
+      157,  158,  159,  163,  166,  167,  148,  164,   42,  160,
+      170,  161,   42,  165,  171,  168,  172,  149,  168,  173,
+      174,  178,  162,  175,  176,  177,  163,  166,  167,  181,
+      323,  182,  183,  170,  184,  323,  185,  171,  186,  187,
+      172,  194,  169,  173,  174,  178,  175,  176,  177,  188,
+
+      191,  192,  193,  181,  182,  183,  195,  189,  184,  185,
+      189,  186,  187,  168,  194,  169,  168,  200,  201,  323,
+      202,  203,  190,  188,  191,  192,  193,  204,  205,  195,
+      179,  208,  209,  179,  211,  212,  213,  323,  197,  216,
+      198,  200,  201,  202,  203,  189,  190,  199,  189,  215,
+      219,  204,  205,  206,  208,  217,  209,  211,  212,  218,
+      213,  197,  216,  198,  220,  214,  323,  323,  221,  226,
+      199,  221,  230,  215,  219,  323,  222,  206,  217,  227,
+      221,  228,  218,  221,  229,  231,  232,  220,  222,  214,
+      221,  221,  226,  221,  221,  223,  230,  210,  222,  222,
+
+      210,  233,  227,  236,  228,  237,  225,  229,  231,  234,
+      232,  238,  234,  239,  241,  240,  247,  148,  240,  223,
+       53,  248,  323,  224,  221,  233,  236,  221,  243,  237,
+      225,  249,  222,  241,  238,  250,  239,  221,  241,  247,
+      221,  148,  257,  242,  248,  222,  224,  243,  251,  252,
+      221,  243,  255,  221,  249,  244,  256,  241,  222,  250,
+      258,  234,  265,  245,  234,  257,  242,  259,  240,  260,
+      243,  240,  251,  252,  323,  246,  255,  261,  244,  221,
+      256,  221,  221,  258,  221,  265,  245,  222,  323,  222,
+      266,  259,  221,  260,  268,  221,  242,  263,  246,  269,
+
+      222,  261,  271,  270,  272,  271,  273,  271,  277,  273,
+      271,  262,  221,  266,  222,  221,  276,  268,  278,  242,
+      222,  263,  269,  280,  323,  264,  270,  272,  323,  323,
+      221,  274,  277,  221,  262,  323,  323,  323,  222,  276,
+      240,  288,  278,  240,  288,  323,  302,  280,  264,  275,
+      323,  221,  295,  286,  221,  274,  286,  296,  282,  222,
+      288,  222,  288,  288,  288,  288,  292,  288,  283,  292,
+      302,  323,  284,  275,  222,  289,  295,  303,  323,  323,
+      296,  285,  282,  293,  290,  291,  293,  288,  304,  298,
+      288,  283,  298,  310,  288,  284,  310,  288,  309,  289,
+
+      303,  241,  293,  300,  285,  293,  300,  288,  290,  291,
+      288,  294,  304,  271,  288,  243,  271,  288,  323,  297,
+      299,  241,  309,  312,  300,  241,  305,  300,  323,  311,
+      294,  301,  311,  308,  294,  243,  306,  311,  243,  313,
+      311,  307,  297,  299,  288,  241,  312,  288,  288,  323,
+      305,  288,  301,  294,  301,  321,  314,  308,  243,  314,
+      306,  323,  310,  313,  307,  310,  311,  311,  314,  311,
+      311,  314,  318,  316,  320,  301,  316,  319,  316,  321,
+      322,  316,  322,  322,  287,  322,  323,  323,  323,  287,
+      323,  323,  323,  323,  323,  323,  318,  320,  323,  323,
+
+      319,  323,  323,  323,  323,  323,  279,  323,  323,  323,
+      323,  287,  323,  323,  323,  323,  287,   43,   43,  323,
+       43,   43,   43,   45,   45,   53,   53,   53,   97,   97,
+       97,   98,   98,  323,   98,   98,   98,  180,  323,  323,
+      180,  180,  196,  323,  323,  196,  207,  207,  207,  235,
+      323,  235,  235,  235,  253,  323,  323,  253,  253,  254,
+      254,  254,  267,  267,  267,  279,  323,  323,  279,  279,
+      281,  323,  323,  281,  287,  287,  287,  315,  323,  323,
+      315,  315,  317,  323,  317,  317,  317,    3,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323
     } ;
 
-static yyconst flex_int16_t yy_chk[995] =
+static yyconst flex_int16_t yy_chk[952] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -663,110 +655,105 @@ static yyconst flex_int16_t yy_chk[995] =
         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,    2,   14,   14,    2,    5,
-        5,    5,    5,    8,    8,    8,    8,   15,   15,   19,
-       18,   99,   20,   64,   21,    2,   64,   18,   20,   22,
-       24,   22,  107,   24,   26,  107,   25,   28,   48,   26,
-
-       54,   22,   58,   25,   19,   18,   28,   20,   21,   25,
-        2,   18,   20,   22,   24,   22,   27,   24,   31,   26,
-       27,   25,   28,   26,   54,   22,   58,   25,   30,   27,
-       28,   29,    5,   25,   30,   43,    8,   30,   29,   17,
-       29,   27,   29,   31,   13,   27,   35,   35,   33,   32,
-       38,   33,   30,   27,   34,   34,   29,   33,   30,   32,
-       34,   30,   29,   32,   29,   12,   29,    9,   36,   36,
-       36,   36,    3,   33,   32,   38,   33,   42,   42,   34,
-       34,   33,   55,   32,   34,   49,   49,   32,   36,   37,
-       37,   37,   37,   39,   39,   39,   39,   41,   41,   41,
-
-       41,   56,   57,    0,   59,   60,   63,   55,   61,   37,
-       62,   67,   70,   36,   66,   66,   68,   69,   71,   73,
-       74,   77,   79,    0,   81,    0,   56,   57,   59,   60,
-       63,   36,   72,   61,   37,   62,   67,   70,   66,   66,
-       68,   69,   71,   73,   74,   80,   77,   79,   81,   72,
-       82,   83,   37,   84,   80,   85,   39,   72,   86,   87,
-       41,   89,    0,   90,   91,   89,  144,    0,  145,  144,
-       80,  145,    0,   72,   82,   83,   95,   84,   80,   96,
-       85,  100,   86,  102,   87,  103,   89,   90,   91,  104,
-       89,   93,   93,   93,   93,   94,   94,   94,   94,  105,
-
-      106,   95,  108,  109,   96,  111,  100,  102,  113,  103,
-      112,   93,  114,  104,  110,   94,  117,  110,  115,  112,
-      116,  119,    0,  105,  120,  106,  108,  122,  109,  111,
-        0,  123,  113,  124,  110,  112,   93,  114,  125,  127,
-       94,  117,  115,  112,  116,  129,  119,  110,  120,  130,
-      131,  122,  133,  132,   93,  123,  132,  124,   94,  110,
-      134,  135,  125,  136,  127,  137,    0,  138,  139,  140,
-      129,  110,  142,  130,  131,  147,  133,  148,  149,  151,
-      132,  150,    0,  156,  134,  157,  135,  158,  136,  162,
-      137,  138,  139,  140,  163,  161,  164,  142,  161,  165,
-
-      147,  148,  149,  151,  132,  166,  150,  156,  171,  157,
-      161,    0,  158,  172,  162,    0,  174,  175,  177,  163,
-      178,  164,  181,  165,  179,  182,  187,  179,  183,  166,
-      184,  183,  185,  171,  190,  161,  168,  194,  172,  168,
-      174,  175,  191,  177,    0,  178,  181,  179,  207,  189,
-      182,  187,  189,  192,  184,  193,  185,  195,  202,  190,
-      203,  168,  194,  168,  204,  206,  191,  196,  168,  189,
-      196,  168,  179,  207,    0,  196,    0,  192,  212,  193,
-      210,  195,  202,  197,  203,  168,  197,  168,  204,  206,
-      213,  197,  168,  198,  189,  168,  198,  200,  197,  199,
-
-      200,  198,  199,  212,  210,  200,  214,  199,  215,  214,
-      211,  216,  200,  211,  217,  213,  218,  214,  223,    0,
-        0,  222,  229,  197,  222,  236,    0,  198,  236,  199,
-      211,  233,  215,  223,    0,  234,  216,  200,  217,  222,
-      218,  230,  224,  223,  225,  224,  229,  225,  231,  222,
-      224,  198,  225,  199,  222,  211,  233,  223,  226,  227,
-      234,  226,  227,  235,  222,  230,  226,  227,  238,    0,
-      225,  239,  231,  222,  224,  240,  241,  242,  222,  243,
-      242,  244,  245,  246,  227,    0,  246,  247,  235,  226,
-      247,  246,    0,  238,  225,  247,  239,  250,  224,  240,
-
-      241,  255,  258,  247,  243,  242,  244,  245,  227,  248,
-      259,  249,  248,  226,  249,  262,  246,  248,  272,  249,
-      263,  250,  264,  263,  265,  255,  258,  265,  247,  242,
-      266,  270,  265,  266,  259,  274,  276,    0,  266,  262,
-      246,    0,  248,  272,  267,  249,  264,  267,  268,  266,
-      275,  268,  267,  275,  277,  270,  268,  277,    0,    0,
-      274,  276,  278,    0,    0,  278,  248,  268,  286,  249,
-      278,  286,  277,    0,  266,  280,  279,  289,  280,  279,
-      289,  287,  277,  280,  287,  288,  291,  277,  288,  291,
-      292,    0,  268,  278,  279,  290,  287,  277,  290,  297,
-
-      289,    0,  297,  290,  279,  288,  277,  295,    0,  279,
-      302,  277,  295,  293,  291,  292,  293,  278,  304,  279,
-      296,  287,  309,  296,  298,  289,  299,  298,  279,  299,
-      288,  293,  295,  279,  300,  302,  295,  300,  291,  301,
-      303,  293,  301,  304,  299,    0,  293,  309,  306,  305,
-      298,  306,  305,  296,  299,  316,  293,    0,  308,  299,
-      307,  308,    0,  307,  303,  293,    0,  301,  305,  299,
-      293,  306,  310,  315,  298,  310,  306,  296,  299,  307,
-      316,  311,  312,  299,  311,  312,  308,  313,    0,  314,
-      313,  301,  314,  305,  328,  317,  306,  315,  317,  318,
-
-      306,  327,  318,  319,  307,  321,  319,    0,  321,  322,
-      308,  323,  322,  324,  323,  325,  324,    0,  326,  328,
-      325,  326,    0,  329,  324,  327,  329,  330,    0,  326,
-      330,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      325,    0,    0,    0,  325,    0,    0,    0,    0,    0,
-      323,    0,  324,    0,    0,    0,    0,  326,  333,  333,
-        0,  333,  333,  333,  334,  334,  335,  335,  335,  336,
-      336,  336,  337,  337,    0,  337,  337,  337,  338,    0,
-        0,  338,  338,  339,    0,    0,  339,  340,  340,  340,
-      341,    0,  341,  341,  341,  342,    0,    0,  342,  342,
-
-      343,  343,  343,  344,  344,  344,  345,    0,    0,  345,
-      345,  346,    0,    0,  346,  347,  347,  347,  348,    0,
-        0,  348,  348,  349,    0,  349,  349,  349,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332,  332,  332,  332,  332,  332,  332,
-      332,  332,  332,  332
-
+        1,    1,    1,    2,   14,   14,    2,    5,    5,    5,
+        5,    8,    8,    8,    8,   15,   15,   19,   18,   31,
+       20,   64,   21,    2,   64,   18,   20,   22,   24,   22,
+       99,   24,   26,   35,   35,   38,   48,   26,   22,   42,
+
+       42,   19,   18,   31,   20,   21,   25,    2,   18,   20,
+       22,   24,   22,   25,   24,   28,   26,   43,   25,   38,
+       26,   22,   27,   17,   28,   13,   27,   12,    5,    9,
+       25,  107,    8,   29,  107,   27,   25,   54,   32,   28,
+       29,   25,   29,   29,   30,   55,   27,   28,   32,   30,
+       27,   32,   30,   34,   34,   49,   49,   29,   27,   34,
+       54,   33,   32,   29,   33,   29,   29,   30,    3,   55,
+       33,   32,   30,  144,   32,   30,  144,   34,   34,    0,
+        0,    0,   34,   56,   57,   33,    0,   58,   33,   36,
+       36,   36,   36,   33,   37,   37,   37,   37,   39,   39,
+
+       39,   39,   41,   41,   41,   41,   59,   56,   57,   36,
+       58,   60,   61,   62,   37,    0,   63,   66,   66,   67,
+        0,   68,   69,   70,  145,   71,   73,  145,   74,   59,
+       72,    0,   77,   36,   60,   81,   61,   62,   37,   63,
+       66,   66,   79,   67,   68,   69,   72,   70,   71,   73,
+       36,   74,   80,   85,   72,   37,   77,   82,   81,   39,
+       83,   80,   84,   41,   86,   87,   79,   89,   95,   72,
+       90,   89,  183,   91,    0,  183,   80,   85,    0,    0,
+       82,   96,  100,   83,   80,   84,  102,   86,  103,   87,
+      104,   89,   95,   90,  106,   89,   91,   93,   93,   93,
+
+       93,   94,   94,   94,   94,   96,  100,  105,  108,  102,
+      109,  103,  110,  104,  111,  110,  112,   93,  106,  113,
+      115,   94,  114,    0,  116,  112,  117,  119,    0,  120,
+      105,  108,  110,  127,  109,    0,  122,  111,  123,  129,
+      112,   93,  113,  115,  110,   94,  114,  116,  112,  124,
+      117,  119,  120,  125,  130,  131,  110,  127,   93,  122,
+      133,  123,   94,  129,  134,  132,  135,  110,  132,  136,
+      137,  142,  124,  138,  139,  140,  125,  130,  131,  147,
+        0,  148,  149,  133,  150,    0,  151,  134,  156,  157,
+      135,  165,  132,  136,  137,  142,  138,  139,  140,  158,
+
+      162,  163,  164,  147,  148,  149,  166,  161,  150,  151,
+      161,  156,  157,  168,  165,  132,  168,  171,  172,    0,
+      174,  175,  161,  158,  162,  163,  164,  177,  178,  166,
+      179,  181,  182,  179,  184,  185,  187,    0,  168,  191,
+      168,  171,  172,  174,  175,  189,  161,  168,  189,  190,
+      194,  177,  178,  179,  181,  192,  182,  184,  185,  193,
+      187,  168,  191,  168,  195,  189,    0,    0,  196,  201,
+      168,  196,  206,  190,  194,    0,  196,  179,  192,  202,
+      197,  203,  193,  197,  205,  209,  211,  195,  197,  189,
+      198,  199,  201,  198,  199,  197,  206,  210,  198,  199,
+
+      210,  212,  202,  214,  203,  215,  199,  205,  209,  213,
+      211,  216,  213,  217,  222,  221,  227,  210,  221,  197,
+      213,  228,    0,  198,  223,  212,  214,  223,  222,  215,
+      199,  229,  223,  221,  216,  231,  217,  224,  222,  227,
+      224,  210,  238,  221,  228,  224,  198,  221,  232,  233,
+      225,  222,  236,  225,  229,  223,  237,  221,  225,  231,
+      239,  234,  247,  224,  234,  238,  221,  241,  240,  242,
+      221,  240,  232,  233,    0,  225,  236,  243,  223,  244,
+      237,  245,  244,  239,  245,  247,  224,  244,    0,  245,
+      252,  241,  246,  242,  255,  246,  240,  245,  225,  256,
+
+      246,  243,  260,  259,  261,  260,  262,  271,  268,  262,
+      271,  244,  263,  252,  262,  263,  266,  255,  270,  240,
+      263,  245,  256,  272,    0,  246,  259,  261,    0,    0,
+      264,  263,  268,  264,  244,    0,    0,    0,  264,  266,
+      273,  281,  270,  273,  281,    0,  294,  272,  246,  264,
+        0,  274,  288,  275,  274,  263,  275,  288,  273,  274,
+      282,  275,  284,  282,  283,  284,  285,  283,  273,  285,
+      294,    0,  273,  264,  285,  282,  288,  295,    0,    0,
+      288,  274,  273,  286,  283,  284,  286,  289,  296,  290,
+      289,  273,  290,  302,  291,  273,  302,  291,  301,  282,
+
+      295,  286,  293,  292,  274,  293,  292,  297,  283,  284,
+      297,  286,  296,  298,  299,  286,  298,  299,    0,  289,
+      291,  292,  301,  306,  300,  286,  297,  300,    0,  303,
+      293,  292,  303,  299,  286,  292,  298,  304,  286,  307,
+      304,  298,  289,  291,  305,  292,  306,  305,  308,    0,
+      297,  308,  300,  293,  292,  319,  309,  299,  292,  309,
+      298,    0,  310,  307,  298,  310,  312,  313,  314,  312,
+      313,  314,  316,  315,  318,  300,  315,  316,  317,  319,
+      320,  317,  321,  320,  315,  321,    0,    0,    0,  317,
+        0,    0,    0,    0,    0,    0,  316,  318,    0,    0,
+
+      316,    0,    0,    0,    0,    0,  314,    0,    0,    0,
+        0,  315,    0,    0,    0,    0,  317,  324,  324,    0,
+      324,  324,  324,  325,  325,  326,  326,  326,  327,  327,
+      327,  328,  328,    0,  328,  328,  328,  329,    0,    0,
+      329,  329,  330,    0,    0,  330,  331,  331,  331,  332,
+        0,  332,  332,  332,  333,    0,    0,  333,  333,  334,
+      334,  334,  335,  335,  335,  336,    0,    0,  336,  336,
+      337,    0,    0,  337,  338,  338,  338,  339,    0,    0,
+      339,  339,  340,    0,  340,  340,  340,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
+      323
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -857,7 +844,7 @@ static int checkImmediate(int token) {
 	return token;
 }
 
-#line 861 "engines/director/lingo/lingo-lex.cpp"
+#line 848 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -1043,7 +1030,7 @@ YY_DECL
 #line 92 "engines/director/lingo/lingo-lex.l"
 
 
-#line 1047 "engines/director/lingo/lingo-lex.cpp"
+#line 1034 "engines/director/lingo/lingo-lex.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -1097,13 +1084,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 >= 333 )
+				if ( yy_current_state >= 324 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 332 );
+		while ( yy_current_state != 323 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1392,26 +1379,14 @@ YY_RULE_SETUP
 {
 		count();
 
-		yylval.e[0] = g_lingo->_theEntities["sqrt"]->entity;
-		yylval.e[1] = 0;	// No field
-
-		return THEENTITYWITHID;
-	}
-	YY_BREAK
-case 49:
-YY_RULE_SETUP
-#line 178 "engines/director/lingo/lingo-lex.l"
-{
-		count();
-
 		yylval.s = new Common::String("value");
 
 		return FBLTIN;
 	}
 	YY_BREAK
-case 50:
+case 49:
 YY_RULE_SETUP
-#line 185 "engines/director/lingo/lingo-lex.l"
+#line 177 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1448,9 +1423,9 @@ YY_RULE_SETUP
 		}
 	}
 	YY_BREAK
-case 51:
+case 50:
 YY_RULE_SETUP
-#line 220 "engines/director/lingo/lingo-lex.l"
+#line 212 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1474,9 +1449,9 @@ YY_RULE_SETUP
 		}
 	}
 	YY_BREAK
-case 52:
+case 51:
 YY_RULE_SETUP
-#line 242 "engines/director/lingo/lingo-lex.l"
+#line 234 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1541,9 +1516,9 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s', field '%s'", ptr, field.c_str());
 	}
 	YY_BREAK
-case 53:
+case 52:
 YY_RULE_SETUP
-#line 305 "engines/director/lingo/lingo-lex.l"
+#line 297 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1579,9 +1554,9 @@ YY_RULE_SETUP
 			return THEENTITY;
 	}
 	YY_BREAK
-case 54:
+case 53:
 YY_RULE_SETUP
-#line 339 "engines/director/lingo/lingo-lex.l"
+#line 331 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1610,74 +1585,74 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s'", ptr);
 	}
 	YY_BREAK
-case 55:
+case 54:
 YY_RULE_SETUP
-#line 366 "engines/director/lingo/lingo-lex.l"
+#line 358 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
-case 56:
+case 55:
 YY_RULE_SETUP
-#line 367 "engines/director/lingo/lingo-lex.l"
+#line 359 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
-case 57:
+case 56:
 YY_RULE_SETUP
-#line 368 "engines/director/lingo/lingo-lex.l"
+#line 360 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
-case 58:
+case 57:
 YY_RULE_SETUP
-#line 369 "engines/director/lingo/lingo-lex.l"
+#line 361 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
-case 59:
+case 58:
 YY_RULE_SETUP
-#line 370 "engines/director/lingo/lingo-lex.l"
+#line 362 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
-case 60:
+case 59:
 YY_RULE_SETUP
-#line 371 "engines/director/lingo/lingo-lex.l"
+#line 363 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
-case 61:
+case 60:
 YY_RULE_SETUP
-#line 372 "engines/director/lingo/lingo-lex.l"
+#line 364 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
-case 62:
+case 61:
 YY_RULE_SETUP
-#line 373 "engines/director/lingo/lingo-lex.l"
+#line 365 "engines/director/lingo/lingo-lex.l"
 { count(); return tWORD; }
 	YY_BREAK
-case 63:
+case 62:
 YY_RULE_SETUP
-#line 375 "engines/director/lingo/lingo-lex.l"
+#line 367 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
-case 64:
+case 63:
 YY_RULE_SETUP
-#line 376 "engines/director/lingo/lingo-lex.l"
+#line 368 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
-case 65:
+case 64:
 YY_RULE_SETUP
-#line 377 "engines/director/lingo/lingo-lex.l"
+#line 369 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
-case 66:
+case 65:
 YY_RULE_SETUP
-#line 378 "engines/director/lingo/lingo-lex.l"
+#line 370 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
-case 67:
+case 66:
 YY_RULE_SETUP
-#line 379 "engines/director/lingo/lingo-lex.l"
+#line 371 "engines/director/lingo/lingo-lex.l"
 { count(); return tEQ; }
 	YY_BREAK
-case 68:
+case 67:
 YY_RULE_SETUP
-#line 381 "engines/director/lingo/lingo-lex.l"
+#line 373 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1713,43 +1688,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 69:
+case 68:
 YY_RULE_SETUP
-#line 415 "engines/director/lingo/lingo-lex.l"
+#line 407 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
-case 70:
+case 69:
 YY_RULE_SETUP
-#line 416 "engines/director/lingo/lingo-lex.l"
+#line 408 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
-case 71:
+case 70:
 YY_RULE_SETUP
-#line 417 "engines/director/lingo/lingo-lex.l"
+#line 409 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
-case 72:
-/* rule 72 can match eol */
+case 71:
+/* rule 71 can match eol */
 YY_RULE_SETUP
-#line 418 "engines/director/lingo/lingo-lex.l"
+#line 410 "engines/director/lingo/lingo-lex.l"
 { count(); return '\n'; }
 	YY_BREAK
-case 73:
+case 72:
 YY_RULE_SETUP
-#line 419 "engines/director/lingo/lingo-lex.l"
+#line 411 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
-case 74:
+case 73:
 YY_RULE_SETUP
-#line 420 "engines/director/lingo/lingo-lex.l"
+#line 412 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
-case 75:
+case 74:
 YY_RULE_SETUP
-#line 422 "engines/director/lingo/lingo-lex.l"
+#line 414 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1753 "engines/director/lingo/lingo-lex.cpp"
+#line 1728 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2043,7 +2018,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 >= 333 )
+			if ( yy_current_state >= 324 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2071,11 +2046,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 >= 333 )
+		if ( yy_current_state >= 324 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 332);
+	yy_is_jam = (yy_current_state == 323);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2709,7 +2684,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 422 "engines/director/lingo/lingo-lex.l"
+#line 414 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 72cb2a928f..6cc7fff06a 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -167,14 +167,6 @@ repeat		{ count(); return checkImmediate(tREPEAT); }
 set			{ count(); return tSET; }
 starts		{ count(); return tSTARTS; }
 tell		{ count(); return tTELL; }
-the[ \t]+sqrt[ \t]+of[ \t]+	{
-		count();
-
-		yylval.e[0] = g_lingo->_theEntities["sqrt"]->entity;
-		yylval.e[1] = 0;	// No field
-
-		return THEENTITYWITHID;
-	}
 the[ \t]+value[ \t]+of[ \t]+	{
 		count();
 
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index 22ff87c552..71c655ef80 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -123,7 +123,6 @@ TheEntity entities[] = {
 	{ kTheSoundLevel,		"soundLevel",		false, 2 },	// D2 p
 	{ kTheSoundEntity,		"sound",			true,  4 },	// D4
 	{ kTheSprite,			"sprite",			true,  2 },	// D4 p
-	{ kTheSqrt,				"sqrt",				false, 2 },	// D2 f
 	{ kTheStage,			"stage",			false, 4 },	//				D4 p
 	{ kTheStageBottom,		"stageBottom",		false, 2 },	// D2 f
 	{ kTheStageColor,		"stageColor",		false, 3 },	//		D3 p
@@ -463,11 +462,6 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
 	case kTheSprite:
 		d = getTheSprite(id, field);
 		break;
-	case kTheSqrt:
-		id.makeFloat();
-		d.type = FLOAT;
-		d.u.f = sqrt(id.u.f);
-		break;
 	case kTheStillDown:
 		d.type = INT;
 		d.u.i = _vm->getCurrentScore()->_mouseIsDown;
diff --git a/engines/director/lingo/tests/the.lingo b/engines/director/lingo/tests/the.lingo
index 918a2e266d..9193ad189d 100644
--- a/engines/director/lingo/tests/the.lingo
+++ b/engines/director/lingo/tests/the.lingo
@@ -47,3 +47,5 @@ set the castNum of sprite the clickon = the number of cast "main.hi"
 set castname = the name of cast(the castnum of sprite 15)
 
 set res = the soundBusy of 1
+
+put the sqrt of 9


Commit: fe7ea8e0a9153e8ed9bcfb1b1f3dd11cd2eabd5f
    https://github.com/scummvm/scummvm/commit/fe7ea8e0a9153e8ed9bcfb1b1f3dd11cd2eabd5f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-05-11T01:09:57+02:00

Commit Message:
DIRECTOR: Remove special lexing for 'the value of'

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


diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 002ce85256..7dd67ad695 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -364,8 +364,8 @@ static void yy_fatal_error (yyconst char msg[]  );
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 74
-#define YY_END_OF_BUFFER 75
+#define YY_NUM_RULES 73
+#define YY_END_OF_BUFFER 74
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -373,44 +373,43 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[324] =
+static yyconst flex_int16_t yy_accept[314] =
     {   0,
-        0,    0,   75,   73,    4,   71,   71,   73,   73,   73,
-       70,   70,   70,   69,   70,   66,   70,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   73,    3,    3,   67,    4,   71,
-        0,    0,    0,   72,    5,   65,    2,   68,   69,   64,
-       62,   63,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   12,   24,   67,   67,   67,   67,
-       67,   67,   67,   67,   34,   35,   67,   37,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   55,   67,   67,
-       67,    1,    3,    3,    0,   67,    5,    2,   68,   67,
-
-        7,   67,   67,   67,   67,   67,   15,   67,   67,   20,
-       67,   67,   67,   67,   67,   67,   67,   30,   67,   67,
-       33,   67,   67,   67,   67,   43,   67,   45,   67,   67,
-       67,   67,   67,   67,   67,   67,    0,   67,   67,   67,
-        9,   67,   11,   14,    0,   17,   67,    0,    0,   67,
-       67,   23,   25,   26,   27,   67,   67,   67,   32,   36,
-       39,   67,   67,   67,   67,   67,   47,    0,   54,   59,
-       67,   57,   61,    0,   67,    6,   67,   67,    0,   15,
-       67,    0,   20,   67,   67,   28,   67,   31,    0,   67,
-       67,   67,   67,   67,   67,   53,   53,   53,   53,   60,
-
-       67,    0,   67,    8,   67,    0,   15,   18,    0,    0,
-       67,   67,   67,    0,   67,   67,   67,   44,   56,   46,
-        0,    0,   53,   53,   53,   58,    0,   67,   67,   13,
-        0,   67,   67,    0,   29,    0,   67,   67,   67,    0,
-        0,    0,    0,   53,   53,   53,    0,   16,   10,   19,
-       21,   67,   29,   29,    0,   67,   41,   42,    0,    0,
-        0,   53,   53,   53,   16,   67,   29,    0,   40,    0,
-        0,    0,    0,   53,   53,   22,   38,   52,   51,   52,
-        0,    0,    0,    0,   53,    0,   51,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,   52,   51,   51,   52,    0,   48,
-       50,   51,   51,    0,   51,    0,   51,    0,    0,    0,
-        0,   49,    0
+        0,    0,   74,   72,    4,   70,   70,   72,   72,   72,
+       69,   69,   69,   68,   69,   65,   69,   66,   66,   66,
+       66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
+       66,   66,   66,   66,   72,    3,    3,   66,    4,   70,
+        0,    0,    0,   71,    5,   64,    2,   67,   68,   63,
+       61,   62,   66,   66,   66,   66,   66,   66,   66,   66,
+       66,   66,   66,   66,   12,   24,   66,   66,   66,   66,
+       66,   66,   66,   66,   34,   35,   66,   37,   66,   66,
+       66,   66,   66,   66,   66,   66,   66,   54,   66,   66,
+       66,    1,    3,    3,    0,   66,    5,    2,   67,   66,
+
+        7,   66,   66,   66,   66,   66,   15,   66,   66,   20,
+       66,   66,   66,   66,   66,   66,   66,   30,   66,   66,
+       33,   66,   66,   66,   66,   43,   66,   45,   66,   66,
+       66,   66,   66,   66,   66,   66,    0,   66,   66,   66,
+        9,   66,   11,   14,    0,   17,   66,    0,    0,   66,
+       66,   23,   25,   26,   27,   66,   66,   66,   32,   36,
+       39,   66,   66,   66,   66,   66,   47,    0,   53,   58,
+       66,   56,   60,    0,   66,    6,   66,   66,    0,   15,
+       66,    0,   20,   66,   66,   28,   66,   31,    0,   66,
+       66,   66,   66,   66,   66,   52,   52,   52,   59,   66,
+
+        0,   66,    8,   66,    0,   15,   18,    0,    0,   66,
+       66,   66,    0,   66,   66,   66,   44,   55,   46,    0,
+        0,   52,   52,   57,    0,   66,   66,   13,    0,   66,
+       66,    0,   29,    0,   66,   66,   66,    0,    0,    0,
+        0,   52,   52,    0,   16,   10,   19,   21,   66,   29,
+       29,    0,   66,   41,   42,    0,    0,    0,   52,   52,
+       16,   66,   29,    0,   40,    0,    0,    0,    0,   52,
+       22,   38,   51,   50,   51,    0,    0,    0,    0,   52,
+       50,    0,    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 yyconst flex_int32_t yy_ec[256] =
@@ -456,18 +455,18 @@ static yyconst flex_int32_t yy_meta[64] =
         5,    5,    1
     } ;
 
-static yyconst flex_int16_t yy_base[341] =
+static yyconst flex_int16_t yy_base[331] =
     {   0,
-        0,   62,  169,  888,   66,  888,  888,   70,  124,    0,
-      888,  119,  115,   53,   61,  888,  109,   57,   57,   57,
+        0,   62,  169,  834,   66,  834,  834,   70,  124,    0,
+      834,  119,  115,   53,   61,  834,  109,   57,   57,   57,
        53,   61,    0,   62,   85,   68,  106,   95,  112,  118,
-       59,  118,  141,  130,   91,  188,  193,   79,  197,  888,
-      201,   97,  112,  888,    0,  888,    0,   84,  144,  888,
-      888,  888,    0,  104,  126,  162,  168,  159,  170,  179,
+       59,  118,  141,  130,   91,  188,  193,   79,  197,  834,
+      201,   97,  112,  834,    0,  834,    0,   84,  144,  834,
+      834,  834,    0,  104,  126,  162,  168,  159,  170,  179,
       193,  189,  187,   80,    0,  185,  199,  193,  193,  205,
       192,  211,  189,  195,    0,    0,  212,    0,  226,  232,
       202,  227,  227,  231,  237,  238,  245,    0,  247,  237,
-      242,  888,  296,  300,  252,  263,    0,    0,   78,  262,
+      242,  834,  296,  300,  252,  263,    0,    0,   78,  262,
 
         0,  257,  257,  257,  279,  274,  130,  275,  293,  311,
       281,  296,  292,  302,  290,  293,  303,    0,  303,  296,
@@ -477,68 +476,66 @@ static yyconst flex_int16_t yy_base[341] =
       355,    0,    0,    0,    0,  359,  360,  379,    0,    0,
       406,  376,  381,  386,  358,  373,    0,  412,    0,    0,
       397,  394,    0,  387,  392,    0,  407,  404,  429,    0,
-      405,  416,  271,  406,  403,    0,  417,    0,  444,  431,
-      410,  424,  426,  430,  432,  467,  479,  489,  490,    0,
-
-      441,  450,  450,    0,  456,  451,    0,    0,  458,  496,
-      468,  481,  508,  472,  487,  477,  480,    0,    0,    0,
-      514,  495,  523,  536,  549,    0,  485,  483,  499,  888,
-      515,  528,  531,  560,    0,  536,  536,  510,  522,  567,
-      551,  548,  553,  578,  580,  591,  524,    0,    0,  888,
-        0,  557,    0,    0,  567,  573,    0,    0,  570,  601,
-      577,  605,  611,  629,  888,  584,    0,  588,    0,  598,
-      606,  603,  639,  650,  652,    0,  888,  888,    0,  888,
-      640,  659,  663,  661,  665,  682,    0,  628,  686,  688,
-      693,  702,  701,  625,  649,  667,  706,  712,  713,  723,
-
-      677,  692,  728,  736,  743,  695,  718,  747,  755,  761,
-      888,  765,  766,  767,  772,  748,  777,  746,  734,  779,
-      781,  888,  888,  817,  819,  822,  825,  831,  836,  841,
-      843,  848,  853,  856,  859,  864,  869,  871,  876,  881
+      405,  416,  271,  406,  403,    0,  417,    0,  444,  429,
+      410,  418,  417,  435,  427,  465,  474,  483,    0,  440,
+
+      441,  445,    0,  452,  443,    0,    0,  454,  494,  467,
+      466,  493,  465,  482,  468,  473,    0,    0,    0,  512,
+      493,  519,  526,    0,  480,  483,  501,  834,  488,  498,
+      504,  546,    0,  521,  518,  511,  510,  553,  543,  539,
+      539,  566,  568,  520,    0,    0,  834,    0,  532,    0,
+        0,  546,  552,    0,    0,  546,  585,  553,  589,  591,
+      834,  559,    0,  574,    0,  577,  603,  586,  609,  615,
+        0,  834,  834,    0,  834,  611,  616,  622,  630,  632,
+        0,  616,  643,  647,  654,  658,  599,  604,  659,  669,
+      682,  671,  608,  670,  681,  688,  629,  645,  693,  704,
+
+      834,  705,  711,  712,  718,  696,  723,  656,  697,  727,
+      728,  834,  834,  763,  765,  768,  771,  777,  782,  787,
+      789,  794,  799,  802,  805,  810,  815,  817,  822,  827
     } ;
 
-static yyconst flex_int16_t yy_def[341] =
+static yyconst flex_int16_t yy_def[331] =
     {   0,
-      323,    1,  323,  323,  323,  323,  323,  323,  324,  325,
-      323,  323,  323,  323,  323,  323,  323,  326,  326,  326,
-      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
-      326,  326,  326,  326,  323,  323,  323,  326,  323,  323,
-      323,  323,  324,  323,  327,  323,  328,  323,  323,  323,
-      323,  323,  326,  326,  326,  326,  326,  326,  326,  326,
-      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
-      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
-      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
-      326,  323,  323,  323,  323,  326,  327,  328,  323,  326,
-
-      326,  326,  326,  326,  326,  326,  326,  326,  326,  323,
-      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
-      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
-      326,  326,  326,  326,  326,  326,  323,  326,  326,  326,
-      326,  326,  326,  326,  329,  326,  326,  323,  323,  326,
-      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
-      326,  326,  326,  326,  326,  326,  326,  330,  326,  326,
-      326,  326,  326,  323,  326,  326,  326,  326,  323,  331,
-      326,  323,  323,  326,  326,  326,  326,  326,  323,  326,
-      326,  326,  326,  326,  326,  330,  330,  330,  330,  326,
-
-      326,  323,  326,  326,  326,  323,  331,  326,  323,  323,
-      326,  326,  332,  323,  326,  326,  326,  326,  326,  326,
-      323,  323,  330,  330,  330,  326,  323,  326,  326,  323,
-      323,  326,  326,  333,  334,  323,  326,  326,  326,  323,
-      323,  323,  323,  330,  330,  330,  323,  326,  326,  323,
-      326,  326,  335,  334,  323,  326,  326,  326,  323,  323,
-      323,  330,  330,  330,  323,  326,  335,  323,  326,  323,
-      336,  323,  337,  330,  330,  326,  323,  323,  338,  323,
-      337,  337,  337,  337,  330,  323,  338,  323,  337,  337,
-      337,  323,  323,  323,  323,  323,  337,  336,  337,  323,
-
-      323,  323,  323,  323,  337,  338,  338,  337,  323,  336,
-      323,  338,  338,  339,  340,  323,  340,  323,  323,  323,
-      323,  323,    0,  323,  323,  323,  323,  323,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323
+      313,    1,  313,  313,  313,  313,  313,  313,  314,  315,
+      313,  313,  313,  313,  313,  313,  313,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  313,  313,  313,  316,  313,  313,
+      313,  313,  314,  313,  317,  313,  318,  313,  313,  313,
+      313,  313,  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,  313,  313,  313,  313,  316,  317,  318,  313,  316,
+
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  313,
+      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,  313,  316,  316,  316,
+      316,  316,  316,  316,  319,  316,  316,  313,  313,  316,
+      316,  316,  316,  316,  316,  316,  316,  316,  316,  316,
+      316,  316,  316,  316,  316,  316,  316,  320,  316,  316,
+      316,  316,  316,  313,  316,  316,  316,  316,  313,  321,
+      316,  313,  313,  316,  316,  316,  316,  316,  313,  316,
+      316,  316,  316,  316,  316,  320,  320,  320,  316,  316,
+
+      313,  316,  316,  316,  313,  321,  316,  313,  313,  316,
+      316,  322,  313,  316,  316,  316,  316,  316,  316,  313,
+      313,  320,  320,  316,  313,  316,  316,  313,  313,  316,
+      316,  323,  324,  313,  316,  316,  316,  313,  313,  313,
+      313,  320,  320,  313,  316,  316,  313,  316,  316,  325,
+      324,  313,  316,  316,  316,  313,  313,  313,  320,  320,
+      313,  316,  325,  313,  316,  313,  326,  313,  327,  320,
+      316,  313,  313,  328,  313,  327,  327,  327,  327,  320,
+      328,  313,  327,  327,  327,  313,  313,  313,  327,  326,
+      327,  313,  313,  313,  313,  327,  328,  328,  327,  313,
+
+      313,  328,  328,  329,  330,  313,  330,  313,  313,  313,
+      313,  313,    0,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313
     } ;
 
-static yyconst flex_int16_t yy_nxt[952] =
+static yyconst flex_int16_t yy_nxt[898] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   11,
        13,    4,   14,   15,   16,   17,   18,   19,   20,   21,
@@ -557,97 +554,91 @@ static yyconst flex_int16_t yy_nxt[952] =
        65,  145,   42,   75,  145,   72,   66,  100,   83,   73,
        76,   67,   77,   78,   79,  101,   70,   74,   84,   80,
        71,   85,   81,   89,   90,   48,   49,   75,   72,   91,
-      100,   86,   83,   76,   87,   77,   78,   79,  323,  101,
-       88,   84,   80,  179,   85,   81,  179,   89,   90,  323,
-      323,  323,   91,  102,  103,   86,  323,  104,   87,   93,
+      100,   86,   83,   76,   87,   77,   78,   79,  313,  101,
+       88,   84,   80,  179,   85,   81,  179,   89,   90,  313,
+      313,  313,   91,  102,  103,   86,  313,  104,   87,   93,
        40,   40,   94,   88,   94,   40,   40,   94,   39,   40,
 
        40,   41,   41,   40,   40,   41,  105,  102,  103,   95,
-      104,  106,  107,  108,   95,  323,  109,  111,  112,  113,
-      323,  114,  115,  116,  145,  117,  120,  145,  121,  105,
-      118,  323,  122,   95,  106,  126,  107,  108,   95,  109,
+      104,  106,  107,  108,   95,  313,  109,  111,  112,  113,
+      313,  114,  115,  116,  145,  117,  120,  145,  121,  105,
+      118,  313,  122,   95,  106,  126,  107,  108,   95,  109,
       111,  112,  123,  113,  114,  115,  119,  116,  117,  120,
        42,  121,  124,  130,  118,   42,  122,  127,  126,   42,
       128,  125,  129,   42,  131,  132,  123,  133,  137,  119,
-      135,  134,  210,  136,  323,  210,  124,  130,  323,  323,
+      135,  134,  209,  136,  313,  209,  124,  130,  313,  313,
       127,  138,  139,  128,  125,  129,  140,  131,  141,  132,
       142,  133,  137,  135,  144,  134,  136,   93,   40,   40,
 
        94,   94,   40,   40,   94,  138,  139,  143,  146,  140,
       147,  141,  110,  142,  150,  110,  151,   95,  144,  153,
-      155,   95,  154,  323,  156,  152,  157,  158,  323,  159,
-      143,  146,  148,  164,  147,  323,  160,  150,  161,  165,
+      155,   95,  154,  313,  156,  152,  157,  158,  313,  159,
+      143,  146,  148,  164,  147,  313,  160,  150,  161,  165,
       151,   95,  153,  155,  149,   95,  154,  156,  152,  162,
       157,  158,  159,  163,  166,  167,  148,  164,   42,  160,
       170,  161,   42,  165,  171,  168,  172,  149,  168,  173,
       174,  178,  162,  175,  176,  177,  163,  166,  167,  181,
-      323,  182,  183,  170,  184,  323,  185,  171,  186,  187,
+      313,  182,  183,  170,  184,  313,  185,  171,  186,  187,
       172,  194,  169,  173,  174,  178,  175,  176,  177,  188,
 
       191,  192,  193,  181,  182,  183,  195,  189,  184,  185,
-      189,  186,  187,  168,  194,  169,  168,  200,  201,  323,
-      202,  203,  190,  188,  191,  192,  193,  204,  205,  195,
-      179,  208,  209,  179,  211,  212,  213,  323,  197,  216,
-      198,  200,  201,  202,  203,  189,  190,  199,  189,  215,
-      219,  204,  205,  206,  208,  217,  209,  211,  212,  218,
-      213,  197,  216,  198,  220,  214,  323,  323,  221,  226,
-      199,  221,  230,  215,  219,  323,  222,  206,  217,  227,
-      221,  228,  218,  221,  229,  231,  232,  220,  222,  214,
-      221,  221,  226,  221,  221,  223,  230,  210,  222,  222,
-
-      210,  233,  227,  236,  228,  237,  225,  229,  231,  234,
-      232,  238,  234,  239,  241,  240,  247,  148,  240,  223,
-       53,  248,  323,  224,  221,  233,  236,  221,  243,  237,
-      225,  249,  222,  241,  238,  250,  239,  221,  241,  247,
-      221,  148,  257,  242,  248,  222,  224,  243,  251,  252,
-      221,  243,  255,  221,  249,  244,  256,  241,  222,  250,
-      258,  234,  265,  245,  234,  257,  242,  259,  240,  260,
-      243,  240,  251,  252,  323,  246,  255,  261,  244,  221,
-      256,  221,  221,  258,  221,  265,  245,  222,  323,  222,
-      266,  259,  221,  260,  268,  221,  242,  263,  246,  269,
-
-      222,  261,  271,  270,  272,  271,  273,  271,  277,  273,
-      271,  262,  221,  266,  222,  221,  276,  268,  278,  242,
-      222,  263,  269,  280,  323,  264,  270,  272,  323,  323,
-      221,  274,  277,  221,  262,  323,  323,  323,  222,  276,
-      240,  288,  278,  240,  288,  323,  302,  280,  264,  275,
-      323,  221,  295,  286,  221,  274,  286,  296,  282,  222,
-      288,  222,  288,  288,  288,  288,  292,  288,  283,  292,
-      302,  323,  284,  275,  222,  289,  295,  303,  323,  323,
-      296,  285,  282,  293,  290,  291,  293,  288,  304,  298,
-      288,  283,  298,  310,  288,  284,  310,  288,  309,  289,
-
-      303,  241,  293,  300,  285,  293,  300,  288,  290,  291,
-      288,  294,  304,  271,  288,  243,  271,  288,  323,  297,
-      299,  241,  309,  312,  300,  241,  305,  300,  323,  311,
-      294,  301,  311,  308,  294,  243,  306,  311,  243,  313,
-      311,  307,  297,  299,  288,  241,  312,  288,  288,  323,
-      305,  288,  301,  294,  301,  321,  314,  308,  243,  314,
-      306,  323,  310,  313,  307,  310,  311,  311,  314,  311,
-      311,  314,  318,  316,  320,  301,  316,  319,  316,  321,
-      322,  316,  322,  322,  287,  322,  323,  323,  323,  287,
-      323,  323,  323,  323,  323,  323,  318,  320,  323,  323,
-
-      319,  323,  323,  323,  323,  323,  279,  323,  323,  323,
-      323,  287,  323,  323,  323,  323,  287,   43,   43,  323,
-       43,   43,   43,   45,   45,   53,   53,   53,   97,   97,
-       97,   98,   98,  323,   98,   98,   98,  180,  323,  323,
-      180,  180,  196,  323,  323,  196,  207,  207,  207,  235,
-      323,  235,  235,  235,  253,  323,  323,  253,  253,  254,
-      254,  254,  267,  267,  267,  279,  323,  323,  279,  279,
-      281,  323,  323,  281,  287,  287,  287,  315,  323,  323,
-      315,  315,  317,  323,  317,  317,  317,    3,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323
+      189,  186,  187,  168,  194,  169,  168,  199,  200,  313,
+      201,  202,  190,  188,  191,  192,  193,  203,  204,  195,
+      179,  207,  208,  179,  210,  211,  212,  313,  197,  215,
+      198,  199,  200,  201,  202,  189,  190,  214,  189,  216,
+      217,  203,  204,  205,  207,  218,  208,  210,  211,  219,
+      212,  197,  215,  198,  228,  213,  220,  313,  224,  220,
+      225,  214,  216,  217,  221,  220,  226,  205,  220,  218,
+      227,  229,  219,  221,  220,  230,  231,  220,  228,  213,
+      222,  224,  221,  225,  232,  209,  234,  232,  209,  226,
+
+      235,  313,  236,  227,  229,   53,  237,  313,  247,  230,
+      231,  244,  239,  238,  222,  148,  238,  223,  248,  234,
+      220,  245,  249,  220,  235,  236,  241,  220,  221,  237,
+      220,  239,  247,  246,  244,  221,  239,  252,  253,  148,
+      223,  240,  248,  254,  245,  241,  249,  232,  255,  241,
+      232,  242,  313,  243,  238,  239,  246,  238,  261,  256,
+      257,  252,  253,  258,  240,  262,  254,  220,  241,  220,
+      220,  255,  220,  264,  242,  221,  243,  221,  265,  266,
+      268,  261,  240,  256,  257,  260,  267,  258,  262,  267,
+      269,  271,  220,  269,  272,  220,  264,  273,  221,  259,
+
+      221,  265,  266,  268,  267,  240,  275,  267,  313,  260,
+      238,  270,  282,  238,  271,  282,  220,  282,  272,  220,
+      282,  273,  259,  282,  221,  295,  282,  294,  277,  300,
+      275,  282,  283,  286,  282,  270,  286,  313,  278,  313,
+      287,  221,  279,  284,  282,  288,  280,  282,  290,  295,
+      294,  290,  277,  300,  285,  282,  283,  302,  282,  292,
+      282,  278,  292,  282,  287,  279,  303,  284,  288,  280,
+      267,  301,  292,  267,  301,  292,  289,  239,  285,  296,
+      302,  291,  301,  282,  310,  301,  282,  293,  313,  282,
+      303,  241,  282,  297,  282,  313,  313,  282,  298,  289,
+
+      293,  239,  299,  296,  291,  304,  301,  310,  304,  301,
+      293,  313,  301,  304,  241,  301,  304,  297,  311,  306,
+      308,  298,  306,  293,  306,  309,  299,  306,  312,  312,
+      281,  312,  312,  313,  313,  281,  313,  313,  313,  313,
+      313,  313,  311,  313,  308,  313,  313,  313,  309,  313,
+      313,  274,  313,  313,  313,  313,  313,  281,  313,  313,
+      313,  313,  281,   43,   43,  313,   43,   43,   43,   45,
+       45,   53,   53,   53,   97,   97,   97,   98,   98,  313,
+       98,   98,   98,  180,  313,  313,  180,  180,  196,  313,
+      313,  196,  206,  206,  206,  233,  313,  233,  233,  233,
+
+      250,  313,  313,  250,  250,  251,  251,  251,  263,  263,
+      263,  274,  313,  313,  274,  274,  276,  313,  313,  276,
+      281,  281,  281,  305,  313,  313,  305,  305,  307,  313,
+      307,  307,  307,    3,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313
+
     } ;
 
-static yyconst flex_int16_t yy_chk[952] =
+static yyconst flex_int16_t yy_chk[898] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -697,63 +688,57 @@ static yyconst flex_int16_t yy_chk[952] =
       161,  156,  157,  168,  165,  132,  168,  171,  172,    0,
       174,  175,  161,  158,  162,  163,  164,  177,  178,  166,
       179,  181,  182,  179,  184,  185,  187,    0,  168,  191,
-      168,  171,  172,  174,  175,  189,  161,  168,  189,  190,
-      194,  177,  178,  179,  181,  192,  182,  184,  185,  193,
-      187,  168,  191,  168,  195,  189,    0,    0,  196,  201,
-      168,  196,  206,  190,  194,    0,  196,  179,  192,  202,
-      197,  203,  193,  197,  205,  209,  211,  195,  197,  189,
-      198,  199,  201,  198,  199,  197,  206,  210,  198,  199,
-
-      210,  212,  202,  214,  203,  215,  199,  205,  209,  213,
-      211,  216,  213,  217,  222,  221,  227,  210,  221,  197,
-      213,  228,    0,  198,  223,  212,  214,  223,  222,  215,
-      199,  229,  223,  221,  216,  231,  217,  224,  222,  227,
-      224,  210,  238,  221,  228,  224,  198,  221,  232,  233,
-      225,  222,  236,  225,  229,  223,  237,  221,  225,  231,
-      239,  234,  247,  224,  234,  238,  221,  241,  240,  242,
-      221,  240,  232,  233,    0,  225,  236,  243,  223,  244,
-      237,  245,  244,  239,  245,  247,  224,  244,    0,  245,
-      252,  241,  246,  242,  255,  246,  240,  245,  225,  256,
-
-      246,  243,  260,  259,  261,  260,  262,  271,  268,  262,
-      271,  244,  263,  252,  262,  263,  266,  255,  270,  240,
-      263,  245,  256,  272,    0,  246,  259,  261,    0,    0,
-      264,  263,  268,  264,  244,    0,    0,    0,  264,  266,
-      273,  281,  270,  273,  281,    0,  294,  272,  246,  264,
-        0,  274,  288,  275,  274,  263,  275,  288,  273,  274,
-      282,  275,  284,  282,  283,  284,  285,  283,  273,  285,
-      294,    0,  273,  264,  285,  282,  288,  295,    0,    0,
-      288,  274,  273,  286,  283,  284,  286,  289,  296,  290,
-      289,  273,  290,  302,  291,  273,  302,  291,  301,  282,
-
-      295,  286,  293,  292,  274,  293,  292,  297,  283,  284,
-      297,  286,  296,  298,  299,  286,  298,  299,    0,  289,
-      291,  292,  301,  306,  300,  286,  297,  300,    0,  303,
-      293,  292,  303,  299,  286,  292,  298,  304,  286,  307,
-      304,  298,  289,  291,  305,  292,  306,  305,  308,    0,
-      297,  308,  300,  293,  292,  319,  309,  299,  292,  309,
-      298,    0,  310,  307,  298,  310,  312,  313,  314,  312,
-      313,  314,  316,  315,  318,  300,  315,  316,  317,  319,
-      320,  317,  321,  320,  315,  321,    0,    0,    0,  317,
-        0,    0,    0,    0,    0,    0,  316,  318,    0,    0,
-
-      316,    0,    0,    0,    0,    0,  314,    0,    0,    0,
-        0,  315,    0,    0,    0,    0,  317,  324,  324,    0,
-      324,  324,  324,  325,  325,  326,  326,  326,  327,  327,
-      327,  328,  328,    0,  328,  328,  328,  329,    0,    0,
-      329,  329,  330,    0,    0,  330,  331,  331,  331,  332,
-        0,  332,  332,  332,  333,    0,    0,  333,  333,  334,
-      334,  334,  335,  335,  335,  336,    0,    0,  336,  336,
-      337,    0,    0,  337,  338,  338,  338,  339,    0,    0,
-      339,  339,  340,    0,  340,  340,  340,  323,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
-      323
+      168,  171,  172,  174,  175,  189,  161,  190,  189,  192,
+      193,  177,  178,  179,  181,  194,  182,  184,  185,  195,
+      187,  168,  191,  168,  205,  189,  196,    0,  200,  196,
+      201,  190,  192,  193,  196,  197,  202,  179,  197,  194,
+      204,  208,  195,  197,  198,  210,  211,  198,  205,  189,
+      197,  200,  198,  201,  212,  209,  213,  212,  209,  202,
+
+      214,    0,  215,  204,  208,  212,  216,    0,  229,  210,
+      211,  225,  221,  220,  197,  209,  220,  198,  230,  213,
+      222,  226,  231,  222,  214,  215,  221,  223,  222,  216,
+      223,  220,  229,  227,  225,  223,  221,  234,  235,  209,
+      198,  220,  230,  236,  226,  220,  231,  232,  237,  221,
+      232,  222,    0,  223,  238,  220,  227,  238,  244,  239,
+      240,  234,  235,  241,  220,  249,  236,  242,  220,  243,
+      242,  237,  243,  252,  222,  242,  223,  243,  253,  256,
+      258,  244,  238,  239,  240,  243,  257,  241,  249,  257,
+      259,  262,  260,  259,  264,  260,  252,  266,  259,  242,
+
+      260,  253,  256,  258,  267,  238,  268,  267,    0,  243,
+      269,  260,  276,  269,  262,  276,  270,  277,  264,  270,
+      277,  266,  242,  278,  270,  288,  278,  287,  269,  293,
+      268,  279,  277,  280,  279,  260,  280,    0,  269,    0,
+      282,  280,  269,  278,  283,  282,  270,  283,  284,  288,
+      287,  284,  269,  293,  279,  285,  277,  297,  285,  286,
+      289,  269,  286,  289,  282,  269,  298,  278,  282,  270,
+      290,  294,  292,  290,  294,  292,  283,  286,  279,  289,
+      297,  285,  295,  291,  308,  295,  291,  286,    0,  296,
+      298,  286,  296,  290,  299,    0,    0,  299,  290,  283,
+
+      292,  286,  291,  289,  285,  300,  302,  308,  300,  302,
+      286,    0,  303,  304,  286,  303,  304,  290,  309,  305,
+      306,  290,  305,  292,  307,  306,  291,  307,  310,  311,
+      305,  310,  311,    0,    0,  307,    0,    0,    0,    0,
+        0,    0,  309,    0,  306,    0,    0,    0,  306,    0,
+        0,  304,    0,    0,    0,    0,    0,  305,    0,    0,
+        0,    0,  307,  314,  314,    0,  314,  314,  314,  315,
+      315,  316,  316,  316,  317,  317,  317,  318,  318,    0,
+      318,  318,  318,  319,    0,    0,  319,  319,  320,    0,
+        0,  320,  321,  321,  321,  322,    0,  322,  322,  322,
+
+      323,    0,    0,  323,  323,  324,  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,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
+      313,  313,  313,  313,  313,  313,  313
+
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -844,7 +829,7 @@ static int checkImmediate(int token) {
 	return token;
 }
 
-#line 848 "engines/director/lingo/lingo-lex.cpp"
+#line 833 "engines/director/lingo/lingo-lex.cpp"
 
 #define INITIAL 0
 
@@ -1030,7 +1015,7 @@ YY_DECL
 #line 92 "engines/director/lingo/lingo-lex.l"
 
 
-#line 1034 "engines/director/lingo/lingo-lex.cpp"
+#line 1019 "engines/director/lingo/lingo-lex.cpp"
 
 	if ( !(yy_init) )
 		{
@@ -1084,13 +1069,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 >= 324 )
+				if ( yy_current_state >= 314 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 323 );
+		while ( yy_current_state != 313 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1379,17 +1364,6 @@ YY_RULE_SETUP
 {
 		count();
 
-		yylval.s = new Common::String("value");
-
-		return FBLTIN;
-	}
-	YY_BREAK
-case 49:
-YY_RULE_SETUP
-#line 177 "engines/director/lingo/lingo-lex.l"
-{
-		count();
-
 		const char *ptr = &yytext[4]; // Skip 'the '
 		while (*ptr == ' ' || *ptr == '\t') ptr++;
 
@@ -1423,9 +1397,9 @@ YY_RULE_SETUP
 		}
 	}
 	YY_BREAK
-case 50:
+case 49:
 YY_RULE_SETUP
-#line 212 "engines/director/lingo/lingo-lex.l"
+#line 205 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1449,9 +1423,9 @@ YY_RULE_SETUP
 		}
 	}
 	YY_BREAK
-case 51:
+case 50:
 YY_RULE_SETUP
-#line 234 "engines/director/lingo/lingo-lex.l"
+#line 227 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1516,9 +1490,9 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s', field '%s'", ptr, field.c_str());
 	}
 	YY_BREAK
-case 52:
+case 51:
 YY_RULE_SETUP
-#line 297 "engines/director/lingo/lingo-lex.l"
+#line 290 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1554,9 +1528,9 @@ YY_RULE_SETUP
 			return THEENTITY;
 	}
 	YY_BREAK
-case 53:
+case 52:
 YY_RULE_SETUP
-#line 331 "engines/director/lingo/lingo-lex.l"
+#line 324 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 
@@ -1585,74 +1559,74 @@ YY_RULE_SETUP
 		warning("LEXER: Unhandled the entity '%s'", ptr);
 	}
 	YY_BREAK
-case 54:
+case 53:
 YY_RULE_SETUP
-#line 358 "engines/director/lingo/lingo-lex.l"
+#line 351 "engines/director/lingo/lingo-lex.l"
 { count(); return tTHEN; }
 	YY_BREAK
-case 55:
+case 54:
 YY_RULE_SETUP
-#line 359 "engines/director/lingo/lingo-lex.l"
+#line 352 "engines/director/lingo/lingo-lex.l"
 { count(); return tTO; }
 	YY_BREAK
-case 56:
+case 55:
 YY_RULE_SETUP
-#line 360 "engines/director/lingo/lingo-lex.l"
+#line 353 "engines/director/lingo/lingo-lex.l"
 { count(); return tSPRITE; }
 	YY_BREAK
-case 57:
+case 56:
 YY_RULE_SETUP
-#line 361 "engines/director/lingo/lingo-lex.l"
+#line 354 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITH; }
 	YY_BREAK
-case 58:
+case 57:
 YY_RULE_SETUP
-#line 362 "engines/director/lingo/lingo-lex.l"
+#line 355 "engines/director/lingo/lingo-lex.l"
 { count(); return tWITHIN; }
 	YY_BREAK
-case 59:
+case 58:
 YY_RULE_SETUP
-#line 363 "engines/director/lingo/lingo-lex.l"
+#line 356 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHEN; }
 	YY_BREAK
-case 60:
+case 59:
 YY_RULE_SETUP
-#line 364 "engines/director/lingo/lingo-lex.l"
+#line 357 "engines/director/lingo/lingo-lex.l"
 { count(); return tWHILE; }
 	YY_BREAK
-case 61:
+case 60:
 YY_RULE_SETUP
-#line 365 "engines/director/lingo/lingo-lex.l"
+#line 358 "engines/director/lingo/lingo-lex.l"
 { count(); return tWORD; }
 	YY_BREAK
-case 62:
+case 61:
 YY_RULE_SETUP
-#line 367 "engines/director/lingo/lingo-lex.l"
+#line 360 "engines/director/lingo/lingo-lex.l"
 { count(); return tNEQ; }
 	YY_BREAK
-case 63:
+case 62:
 YY_RULE_SETUP
-#line 368 "engines/director/lingo/lingo-lex.l"
+#line 361 "engines/director/lingo/lingo-lex.l"
 { count(); return tGE; }
 	YY_BREAK
-case 64:
+case 63:
 YY_RULE_SETUP
-#line 369 "engines/director/lingo/lingo-lex.l"
+#line 362 "engines/director/lingo/lingo-lex.l"
 { count(); return tLE; }
 	YY_BREAK
-case 65:
+case 64:
 YY_RULE_SETUP
-#line 370 "engines/director/lingo/lingo-lex.l"
+#line 363 "engines/director/lingo/lingo-lex.l"
 { count(); return tCONCAT; }
 	YY_BREAK
-case 66:
+case 65:
 YY_RULE_SETUP
-#line 371 "engines/director/lingo/lingo-lex.l"
+#line 364 "engines/director/lingo/lingo-lex.l"
 { count(); return tEQ; }
 	YY_BREAK
-case 67:
+case 66:
 YY_RULE_SETUP
-#line 373 "engines/director/lingo/lingo-lex.l"
+#line 366 "engines/director/lingo/lingo-lex.l"
 {
 		count();
 		yylval.s = new Common::String(yytext);
@@ -1688,43 +1662,43 @@ YY_RULE_SETUP
 		return ID;
 	}
 	YY_BREAK
-case 68:
+case 67:
 YY_RULE_SETUP
-#line 407 "engines/director/lingo/lingo-lex.l"
+#line 400 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.f = atof(yytext); return FLOAT; }
 	YY_BREAK
-case 69:
+case 68:
 YY_RULE_SETUP
-#line 408 "engines/director/lingo/lingo-lex.l"
+#line 401 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
 	YY_BREAK
-case 70:
+case 69:
 YY_RULE_SETUP
-#line 409 "engines/director/lingo/lingo-lex.l"
+#line 402 "engines/director/lingo/lingo-lex.l"
 { count(); return *yytext; }
 	YY_BREAK
-case 71:
-/* rule 71 can match eol */
+case 70:
+/* rule 70 can match eol */
 YY_RULE_SETUP
-#line 410 "engines/director/lingo/lingo-lex.l"
+#line 403 "engines/director/lingo/lingo-lex.l"
 { count(); return '\n'; }
 	YY_BREAK
-case 72:
+case 71:
 YY_RULE_SETUP
-#line 411 "engines/director/lingo/lingo-lex.l"
+#line 404 "engines/director/lingo/lingo-lex.l"
 { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
 	YY_BREAK
-case 73:
+case 72:
 YY_RULE_SETUP
-#line 412 "engines/director/lingo/lingo-lex.l"
+#line 405 "engines/director/lingo/lingo-lex.l"
 { count(); }
 	YY_BREAK
-case 74:
+case 73:
 YY_RULE_SETUP
-#line 414 "engines/director/lingo/lingo-lex.l"
+#line 407 "engines/director/lingo/lingo-lex.l"
 ECHO;
 	YY_BREAK
-#line 1728 "engines/director/lingo/lingo-lex.cpp"
+#line 1702 "engines/director/lingo/lingo-lex.cpp"
 case YY_STATE_EOF(INITIAL):
 	yyterminate();
 
@@ -2018,7 +1992,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 >= 324 )
+			if ( yy_current_state >= 314 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2046,11 +2020,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 >= 324 )
+		if ( yy_current_state >= 314 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 323);
+	yy_is_jam = (yy_current_state == 313);
 
 	return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2684,7 +2658,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 414 "engines/director/lingo/lingo-lex.l"
+#line 407 "engines/director/lingo/lingo-lex.l"
 
 
 
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 6cc7fff06a..9cebd3ccd3 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -167,13 +167,6 @@ repeat		{ count(); return checkImmediate(tREPEAT); }
 set			{ count(); return tSET; }
 starts		{ count(); return tSTARTS; }
 tell		{ count(); return tTELL; }
-the[ \t]+value[ \t]+of[ \t]+	{
-		count();
-
-		yylval.s = new Common::String("value");
-
-		return FBLTIN;
-	}
 the[ \t]+number[ \t]+of[ \t]+[[:alpha:]]+[ \t](in|of)[ \t]	{
 		count();
 




More information about the Scummvm-git-logs mailing list