diff options
author | Eugene Sandulenko | 2017-02-06 19:10:51 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2017-02-06 19:10:51 +0100 |
commit | 293d59f6ada41d8c942717a0248d6aef62765a29 (patch) | |
tree | e932d17e1536f893f05d0eeb423b563904919da3 /engines/director | |
parent | 7f5ff6cac066a0505fd4aacc211a2627e0c0f8ce (diff) | |
download | scummvm-rg350-293d59f6ada41d8c942717a0248d6aef62765a29.tar.gz scummvm-rg350-293d59f6ada41d8c942717a0248d6aef62765a29.tar.bz2 scummvm-rg350-293d59f6ada41d8c942717a0248d6aef62765a29.zip |
DIRECTOR: Lingo: Further work on improved built-in grammar
Diffstat (limited to 'engines/director')
-rw-r--r-- | engines/director/lingo/lingo-builtins.cpp | 14 | ||||
-rw-r--r-- | engines/director/lingo/lingo-code.cpp | 4 | ||||
-rw-r--r-- | engines/director/lingo/lingo-gr.cpp | 1830 | ||||
-rw-r--r-- | engines/director/lingo/lingo-gr.h | 248 | ||||
-rw-r--r-- | engines/director/lingo/lingo-gr.y | 21 | ||||
-rw-r--r-- | engines/director/lingo/lingo-lex.cpp | 33 | ||||
-rw-r--r-- | engines/director/lingo/lingo-lex.l | 15 |
7 files changed, 1101 insertions, 1064 deletions
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp index f5abbcadad..630d681dee 100644 --- a/engines/director/lingo/lingo-builtins.cpp +++ b/engines/director/lingo/lingo-builtins.cpp @@ -27,7 +27,7 @@ namespace Director { static struct BuiltinProto { const char *name; void (*func)(int); - int minArgs; + int minArgs; // -1 -- arglist int maxArgs; bool parens; } builtins[] = { @@ -158,7 +158,7 @@ static struct BuiltinProto { { "updateStage", Lingo::b_updateStage, 0, 0, false }, // D2 { "zoomBox", Lingo::b_zoomBox, -1,0, false }, // D2 // Point - { "point", Lingo::b_point, 2, 2, true }, + { "point", Lingo::b_point, 2, 2, true }, // Sound { "beep", Lingo::b_beep, 0, 1, false }, // D2 { "mci", Lingo::b_mci, 1, 1, false }, @@ -183,7 +183,6 @@ static struct BuiltinProto { { "field", Lingo::b_field, 1, 1, false }, // D3 { "me", Lingo::b_me, -1,0, false }, // D3 - { 0, 0, 0, 0, false } }; @@ -194,6 +193,12 @@ static const char *twoWordBuiltins[] = { 0 }; +static const char *builtinFunctions[] = { + "cast", + "field", + 0 +}; + void Lingo::initBuiltIns() { for (BuiltinProto *blt = builtins; blt->name; blt++) { Symbol *sym = new Symbol; @@ -211,6 +216,9 @@ void Lingo::initBuiltIns() { _functions[(void *)sym->u.s] = new FuncDesc(blt->name, ""); } + for (const char **b = builtinFunctions; *b; b++) + _builtins[*b]->type = FBLTIN; + for (const char **b = twoWordBuiltins; *b; b++) _twoWordBuiltins[*b] = true; } diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index 1b45359ac5..2a20e02b2e 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -1030,7 +1030,7 @@ void Lingo::call(Common::String name, int nargs) { warning("Call to undefined handler '%s'. Dropping %d stack items", name.c_str(), nargs); dropArgs = true; } else { - if (sym->type == BLTIN && sym->nargs != -1 && sym->nargs != nargs && sym->maxArgs != nargs) { + if ((sym->type == BLTIN || sym->type == FBLTIN) && sym->nargs != -1 && sym->nargs != nargs && sym->maxArgs != nargs) { if (sym->nargs == sym->maxArgs) warning("Incorrect number of arguments to handler '%s', expecting %d. Dropping %d stack items", name.c_str(), sym->nargs, nargs); else @@ -1057,7 +1057,7 @@ void Lingo::call(Common::String name, int nargs) { g_lingo->pop(); } - if (sym->type == BLTIN) { + if (sym->type == BLTIN || sym->type == FBLTIN) { if (sym->u.bltin == b_factory) g_lingo->factoryCall(name, nargs); else diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index e8f994d4d7..56c0af2f63 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -84,66 +84,69 @@ BLTINONEARG = 273, BLTINARGLIST = 274, TWOWORDBUILTIN = 275, - ID = 276, - STRING = 277, - HANDLER = 278, - SYMBOL = 279, - ENDCLAUSE = 280, - tPLAYACCEL = 281, - tDOWN = 282, - tELSE = 283, - tNLELSIF = 284, - tEXIT = 285, - tFRAME = 286, - tGLOBAL = 287, - tGO = 288, - tIF = 289, - tINTO = 290, - tLOOP = 291, - tMACRO = 292, - tMOVIE = 293, - tNEXT = 294, - tOF = 295, - tPREVIOUS = 296, - tPUT = 297, - tREPEAT = 298, - tSET = 299, - tTHEN = 300, - tTO = 301, - tWHEN = 302, - tWITH = 303, - tWHILE = 304, - tNLELSE = 305, - tFACTORY = 306, - tMETHOD = 307, - tOPEN = 308, - tPLAY = 309, - tDONE = 310, - tINSTANCE = 311, - tGE = 312, - tLE = 313, - tGT = 314, - tLT = 315, - tEQ = 316, - tNEQ = 317, - tAND = 318, - tOR = 319, - tNOT = 320, - tMOD = 321, - tAFTER = 322, - tBEFORE = 323, - tCONCAT = 324, - tCONTAINS = 325, - tSTARTS = 326, - tCHAR = 327, - tITEM = 328, - tLINE = 329, - tWORD = 330, - tSPRITE = 331, - tINTERSECTS = 332, - tWITHIN = 333, - tON = 334, - tME = 335 + FBLTIN = 276, + FBLTINNOARGS = 277, + FBLTINONEARG = 278, + ID = 279, + STRING = 280, + HANDLER = 281, + SYMBOL = 282, + ENDCLAUSE = 283, + tPLAYACCEL = 284, + tDOWN = 285, + tELSE = 286, + tNLELSIF = 287, + tEXIT = 288, + tFRAME = 289, + tGLOBAL = 290, + tGO = 291, + tIF = 292, + tINTO = 293, + tLOOP = 294, + tMACRO = 295, + tMOVIE = 296, + tNEXT = 297, + tOF = 298, + tPREVIOUS = 299, + tPUT = 300, + tREPEAT = 301, + tSET = 302, + tTHEN = 303, + tTO = 304, + tWHEN = 305, + tWITH = 306, + tWHILE = 307, + tNLELSE = 308, + tFACTORY = 309, + tMETHOD = 310, + tOPEN = 311, + tPLAY = 312, + tDONE = 313, + tINSTANCE = 314, + tGE = 315, + tLE = 316, + tGT = 317, + tLT = 318, + tEQ = 319, + tNEQ = 320, + tAND = 321, + tOR = 322, + tNOT = 323, + tMOD = 324, + tAFTER = 325, + tBEFORE = 326, + tCONCAT = 327, + tCONTAINS = 328, + tSTARTS = 329, + tCHAR = 330, + tITEM = 331, + tLINE = 332, + tWORD = 333, + tSPRITE = 334, + tINTERSECTS = 335, + tWITHIN = 336, + tON = 337, + tME = 338 }; #endif /* Tokens. */ @@ -165,66 +168,69 @@ #define BLTINONEARG 273 #define BLTINARGLIST 274 #define TWOWORDBUILTIN 275 -#define ID 276 -#define STRING 277 -#define HANDLER 278 -#define SYMBOL 279 -#define ENDCLAUSE 280 -#define tPLAYACCEL 281 -#define tDOWN 282 -#define tELSE 283 -#define tNLELSIF 284 -#define tEXIT 285 -#define tFRAME 286 -#define tGLOBAL 287 -#define tGO 288 -#define tIF 289 -#define tINTO 290 -#define tLOOP 291 -#define tMACRO 292 -#define tMOVIE 293 -#define tNEXT 294 -#define tOF 295 -#define tPREVIOUS 296 -#define tPUT 297 -#define tREPEAT 298 -#define tSET 299 -#define tTHEN 300 -#define tTO 301 -#define tWHEN 302 -#define tWITH 303 -#define tWHILE 304 -#define tNLELSE 305 -#define tFACTORY 306 -#define tMETHOD 307 -#define tOPEN 308 -#define tPLAY 309 -#define tDONE 310 -#define tINSTANCE 311 -#define tGE 312 -#define tLE 313 -#define tGT 314 -#define tLT 315 -#define tEQ 316 -#define tNEQ 317 -#define tAND 318 -#define tOR 319 -#define tNOT 320 -#define tMOD 321 -#define tAFTER 322 -#define tBEFORE 323 -#define tCONCAT 324 -#define tCONTAINS 325 -#define tSTARTS 326 -#define tCHAR 327 -#define tITEM 328 -#define tLINE 329 -#define tWORD 330 -#define tSPRITE 331 -#define tINTERSECTS 332 -#define tWITHIN 333 -#define tON 334 -#define tME 335 +#define FBLTIN 276 +#define FBLTINNOARGS 277 +#define FBLTINONEARG 278 +#define ID 279 +#define STRING 280 +#define HANDLER 281 +#define SYMBOL 282 +#define ENDCLAUSE 283 +#define tPLAYACCEL 284 +#define tDOWN 285 +#define tELSE 286 +#define tNLELSIF 287 +#define tEXIT 288 +#define tFRAME 289 +#define tGLOBAL 290 +#define tGO 291 +#define tIF 292 +#define tINTO 293 +#define tLOOP 294 +#define tMACRO 295 +#define tMOVIE 296 +#define tNEXT 297 +#define tOF 298 +#define tPREVIOUS 299 +#define tPUT 300 +#define tREPEAT 301 +#define tSET 302 +#define tTHEN 303 +#define tTO 304 +#define tWHEN 305 +#define tWITH 306 +#define tWHILE 307 +#define tNLELSE 308 +#define tFACTORY 309 +#define tMETHOD 310 +#define tOPEN 311 +#define tPLAY 312 +#define tDONE 313 +#define tINSTANCE 314 +#define tGE 315 +#define tLE 316 +#define tGT 317 +#define tLT 318 +#define tEQ 319 +#define tNEQ 320 +#define tAND 321 +#define tOR 322 +#define tNOT 323 +#define tMOD 324 +#define tAFTER 325 +#define tBEFORE 326 +#define tCONCAT 327 +#define tCONTAINS 328 +#define tSTARTS 329 +#define tCHAR 330 +#define tITEM 331 +#define tLINE 332 +#define tWORD 333 +#define tSPRITE 334 +#define tINTERSECTS 335 +#define tWITHIN 336 +#define tON 337 +#define tME 338 @@ -292,7 +298,7 @@ typedef union YYSTYPE Common::Array<double> *arr; } /* Line 193 of yacc.c. */ -#line 296 "engines/director/lingo/lingo-gr.cpp" +#line 302 "engines/director/lingo/lingo-gr.cpp" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -305,7 +311,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 309 "engines/director/lingo/lingo-gr.cpp" +#line 315 "engines/director/lingo/lingo-gr.cpp" #ifdef short # undef short @@ -518,22 +524,22 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 114 +#define YYFINAL 115 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1644 +#define YYLAST 1612 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 96 +#define YYNTOKENS 99 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 42 /* YYNRULES -- Number of rules. */ -#define YYNRULES 152 +#define YYNRULES 154 /* YYNRULES -- Number of states. */ -#define YYNSTATES 336 +#define YYNSTATES 337 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 335 +#define YYMAXUTOK 338 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -542,15 +548,15 @@ union yyalloc static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 88, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 91, 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, 87, 82, 2, - 89, 90, 85, 83, 95, 84, 2, 86, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 90, 85, 2, + 92, 93, 88, 86, 98, 87, 2, 89, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 92, 81, 91, 2, 2, 2, 2, 2, 2, 2, + 95, 84, 94, 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, 93, 2, 94, 2, 2, 2, 2, 2, 2, + 2, 96, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -574,7 +580,7 @@ static const yytype_uint8 yytranslate[] = 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 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 + 75, 76, 77, 78, 79, 80, 81, 82, 83 }; #if YYDEBUG @@ -588,101 +594,101 @@ static const yytype_uint16 yyprhs[] = 141, 148, 159, 170, 171, 175, 178, 180, 183, 185, 192, 194, 201, 203, 207, 211, 214, 218, 220, 222, 223, 224, 225, 228, 231, 235, 237, 239, 241, 243, - 245, 250, 252, 254, 257, 259, 263, 267, 271, 275, - 279, 283, 287, 291, 295, 299, 303, 307, 310, 314, - 318, 322, 326, 329, 332, 336, 340, 345, 350, 355, - 362, 367, 374, 379, 386, 391, 398, 401, 403, 405, - 408, 410, 413, 416, 419, 422, 424, 427, 432, 439, - 444, 447, 451, 453, 457, 459, 463, 466, 469, 472, - 475, 479, 482, 485, 487, 491, 494, 497, 500, 504, - 507, 508, 512, 513, 522, 525, 526, 535, 536, 537, - 548, 549, 551, 555, 560, 561, 564, 565, 567, 571, - 573, 577, 580 + 245, 248, 253, 255, 257, 260, 262, 266, 270, 274, + 278, 282, 286, 290, 294, 298, 302, 306, 310, 313, + 317, 321, 325, 329, 332, 335, 339, 343, 348, 353, + 358, 365, 370, 377, 382, 389, 394, 401, 404, 406, + 408, 411, 413, 416, 419, 421, 424, 427, 429, 432, + 437, 444, 449, 452, 456, 458, 462, 464, 468, 471, + 474, 477, 480, 484, 487, 490, 492, 496, 499, 502, + 505, 509, 512, 513, 517, 518, 527, 530, 531, 540, + 541, 542, 553, 554, 556, 560, 565, 566, 569, 570, + 572, 576, 578, 582, 585 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 97, 0, -1, 97, 98, 99, -1, 99, -1, 1, - 98, -1, 88, -1, -1, 127, -1, 134, -1, 102, - -1, 42, 118, 35, 21, -1, 42, 118, 67, 118, - -1, 42, 118, 68, 118, -1, 44, 21, 81, 118, - -1, 44, 12, 81, 118, -1, 44, 13, 118, 81, - 118, -1, 44, 21, 46, 118, -1, 44, 12, 46, - 118, -1, 44, 13, 118, 46, 118, -1, 118, -1, - 119, -1, 101, -1, 103, -1, 110, 89, 109, 90, - 116, 115, 25, -1, 111, 81, 118, 115, 46, 118, - 115, 116, 115, 25, -1, 111, 81, 118, 115, 27, - 46, 118, 115, 116, 115, 25, -1, 117, 118, 115, - -1, 112, 109, 45, 98, 116, 115, 25, -1, 112, - 109, 45, 98, 116, 115, 50, 116, 115, 25, -1, - 112, 109, 45, 98, 116, 115, 114, 105, 115, 25, - -1, 112, 109, 45, 114, 101, 115, -1, 112, 109, - 45, 114, 101, 115, 50, 114, 101, 115, -1, 112, - 109, 45, 114, 101, 115, 106, 115, 104, 115, -1, - -1, 50, 114, 101, -1, 105, 108, -1, 108, -1, - 106, 107, -1, 107, -1, 113, 109, 45, 114, 102, - 115, -1, 106, -1, 113, 109, 45, 114, 116, 115, - -1, 118, -1, 118, 81, 118, -1, 89, 109, 90, - -1, 43, 49, -1, 43, 48, 21, -1, 34, -1, - 29, -1, -1, -1, -1, 116, 98, -1, 116, 102, - -1, 47, 21, 45, -1, 11, -1, 14, -1, 24, - -1, 22, -1, 16, -1, 21, 89, 135, 90, -1, - 21, -1, 12, -1, 13, 118, -1, 100, -1, 118, - 83, 118, -1, 118, 84, 118, -1, 118, 85, 118, - -1, 118, 86, 118, -1, 118, 66, 118, -1, 118, - 91, 118, -1, 118, 92, 118, -1, 118, 62, 118, - -1, 118, 57, 118, -1, 118, 58, 118, -1, 118, - 63, 118, -1, 118, 64, 118, -1, 65, 118, -1, - 118, 82, 118, -1, 118, 69, 118, -1, 118, 70, - 118, -1, 118, 71, 118, -1, 83, 118, -1, 84, - 118, -1, 89, 118, 90, -1, 93, 135, 94, -1, - 76, 118, 77, 118, -1, 76, 118, 78, 118, -1, - 72, 118, 40, 118, -1, 72, 118, 46, 118, 40, - 118, -1, 73, 118, 40, 118, -1, 73, 118, 46, - 118, 40, 118, -1, 74, 118, 40, 118, -1, 74, - 118, 46, 118, 40, 118, -1, 75, 118, 40, 118, - -1, 75, 118, 46, 118, 40, 118, -1, 42, 118, - -1, 122, -1, 125, -1, 30, 43, -1, 30, -1, - 32, 120, -1, 56, 121, -1, 18, 118, -1, 17, - 118, -1, 17, -1, 19, 137, -1, 80, 89, 21, - 90, -1, 80, 89, 21, 95, 135, 90, -1, 53, - 118, 48, 118, -1, 53, 118, -1, 20, 21, 135, - -1, 21, -1, 120, 95, 21, -1, 21, -1, 121, - 95, 21, -1, 33, 36, -1, 33, 39, -1, 33, - 41, -1, 33, 123, -1, 33, 123, 124, -1, 33, - 124, -1, 31, 118, -1, 118, -1, 40, 38, 118, - -1, 38, 118, -1, 54, 55, -1, 54, 123, -1, - 54, 123, 124, -1, 54, 124, -1, -1, 26, 126, - 135, -1, -1, 37, 21, 128, 114, 132, 98, 133, - 116, -1, 51, 21, -1, -1, 52, 21, 129, 114, - 132, 98, 133, 116, -1, -1, -1, 79, 21, 130, - 114, 131, 132, 98, 133, 116, 25, -1, -1, 21, - -1, 132, 95, 21, -1, 132, 98, 95, 21, -1, - -1, 21, 136, -1, -1, 118, -1, 135, 95, 118, - -1, 118, -1, 135, 95, 118, -1, 118, 98, -1, - 135, 95, 118, 98, -1 + 100, 0, -1, 100, 101, 102, -1, 102, -1, 1, + 101, -1, 91, -1, -1, 130, -1, 137, -1, 105, + -1, 45, 121, 38, 24, -1, 45, 121, 70, 121, + -1, 45, 121, 71, 121, -1, 47, 24, 84, 121, + -1, 47, 12, 84, 121, -1, 47, 13, 121, 84, + 121, -1, 47, 24, 49, 121, -1, 47, 12, 49, + 121, -1, 47, 13, 121, 49, 121, -1, 121, -1, + 122, -1, 104, -1, 106, -1, 113, 92, 112, 93, + 119, 118, 28, -1, 114, 84, 121, 118, 49, 121, + 118, 119, 118, 28, -1, 114, 84, 121, 118, 30, + 49, 121, 118, 119, 118, 28, -1, 120, 121, 118, + -1, 115, 112, 48, 101, 119, 118, 28, -1, 115, + 112, 48, 101, 119, 118, 53, 119, 118, 28, -1, + 115, 112, 48, 101, 119, 118, 117, 108, 118, 28, + -1, 115, 112, 48, 117, 104, 118, -1, 115, 112, + 48, 117, 104, 118, 53, 117, 104, 118, -1, 115, + 112, 48, 117, 104, 118, 109, 118, 107, 118, -1, + -1, 53, 117, 104, -1, 108, 111, -1, 111, -1, + 109, 110, -1, 110, -1, 116, 112, 48, 117, 105, + 118, -1, 109, -1, 116, 112, 48, 117, 119, 118, + -1, 121, -1, 121, 84, 121, -1, 92, 112, 93, + -1, 46, 52, -1, 46, 51, 24, -1, 37, -1, + 32, -1, -1, -1, -1, 119, 101, -1, 119, 105, + -1, 50, 24, 48, -1, 11, -1, 14, -1, 27, + -1, 25, -1, 22, -1, 23, 121, -1, 24, 92, + 138, 93, -1, 24, -1, 12, -1, 13, 121, -1, + 103, -1, 121, 86, 121, -1, 121, 87, 121, -1, + 121, 88, 121, -1, 121, 89, 121, -1, 121, 69, + 121, -1, 121, 94, 121, -1, 121, 95, 121, -1, + 121, 65, 121, -1, 121, 60, 121, -1, 121, 61, + 121, -1, 121, 66, 121, -1, 121, 67, 121, -1, + 68, 121, -1, 121, 85, 121, -1, 121, 72, 121, + -1, 121, 73, 121, -1, 121, 74, 121, -1, 86, + 121, -1, 87, 121, -1, 92, 121, 93, -1, 96, + 138, 97, -1, 79, 121, 80, 121, -1, 79, 121, + 81, 121, -1, 75, 121, 43, 121, -1, 75, 121, + 49, 121, 43, 121, -1, 76, 121, 43, 121, -1, + 76, 121, 49, 121, 43, 121, -1, 77, 121, 43, + 121, -1, 77, 121, 49, 121, 43, 121, -1, 78, + 121, 43, 121, -1, 78, 121, 49, 121, 43, 121, + -1, 45, 121, -1, 125, -1, 128, -1, 33, 46, + -1, 33, -1, 35, 123, -1, 59, 124, -1, 16, + -1, 18, 121, -1, 17, 121, -1, 17, -1, 19, + 140, -1, 83, 92, 24, 93, -1, 83, 92, 24, + 98, 138, 93, -1, 56, 121, 51, 121, -1, 56, + 121, -1, 20, 24, 138, -1, 24, -1, 123, 98, + 24, -1, 24, -1, 124, 98, 24, -1, 36, 39, + -1, 36, 42, -1, 36, 44, -1, 36, 126, -1, + 36, 126, 127, -1, 36, 127, -1, 34, 121, -1, + 121, -1, 43, 41, 121, -1, 41, 121, -1, 57, + 58, -1, 57, 126, -1, 57, 126, 127, -1, 57, + 127, -1, -1, 29, 129, 138, -1, -1, 40, 24, + 131, 117, 135, 101, 136, 119, -1, 54, 24, -1, + -1, 55, 24, 132, 117, 135, 101, 136, 119, -1, + -1, -1, 82, 24, 133, 117, 134, 135, 101, 136, + 119, 28, -1, -1, 24, -1, 135, 98, 24, -1, + 135, 101, 98, 24, -1, -1, 24, 139, -1, -1, + 121, -1, 138, 98, 121, -1, 121, -1, 139, 98, + 121, -1, 121, 101, -1, 140, 98, 121, 101, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 117, 117, 118, 119, 122, 127, 128, 129, 130, - 133, 139, 140, 141, 147, 155, 163, 169, 177, 187, - 188, 191, 192, 197, 210, 228, 242, 250, 260, 272, - 284, 294, 304, 316, 317, 320, 321, 324, 325, 328, - 336, 337, 345, 346, 347, 350, 353, 360, 367, 375, - 378, 381, 382, 383, 386, 392, 393, 396, 399, 402, - 405, 408, 412, 419, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 459, 460, 461, 462, - 463, 465, 466, 467, 470, 473, 476, 477, 478, 479, - 480, 481, 484, 485, 488, 489, 500, 501, 502, 503, - 506, 509, 514, 515, 518, 519, 522, 523, 526, 529, - 532, 532, 562, 562, 568, 571, 571, 576, 577, 576, - 587, 588, 589, 590, 593, 597, 605, 606, 607, 610, - 611, 614, 615 + 0, 118, 118, 119, 120, 123, 128, 129, 130, 131, + 134, 140, 141, 142, 148, 156, 164, 170, 178, 188, + 189, 192, 193, 198, 211, 229, 243, 251, 261, 273, + 285, 295, 305, 317, 318, 321, 322, 325, 326, 329, + 337, 338, 346, 347, 348, 351, 354, 361, 368, 376, + 379, 382, 383, 384, 387, 393, 394, 397, 400, 403, + 406, 409, 412, 416, 423, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 463, 464, 465, + 466, 467, 469, 470, 471, 474, 477, 480, 483, 484, + 485, 486, 487, 488, 491, 492, 495, 496, 507, 508, + 509, 510, 513, 516, 521, 522, 525, 526, 529, 530, + 533, 536, 539, 539, 569, 569, 575, 578, 578, 583, + 584, 583, 594, 595, 596, 597, 600, 604, 612, 613, + 614, 617, 618, 621, 622 }; #endif @@ -694,22 +700,22 @@ static const char *const yytname[] = "$end", "error", "$undefined", "UNARY", "CASTREF", "VOID", "VAR", "POINT", "RECT", "ARRAY", "OBJECT", "INT", "THEENTITY", "THEENTITYWITHID", "FLOAT", "BLTIN", "BLTINNOARGS", "BLTINNOARGSORONE", - "BLTINONEARG", "BLTINARGLIST", "TWOWORDBUILTIN", "ID", "STRING", - "HANDLER", "SYMBOL", "ENDCLAUSE", "tPLAYACCEL", "tDOWN", "tELSE", - "tNLELSIF", "tEXIT", "tFRAME", "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP", - "tMACRO", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT", - "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE", - "tFACTORY", "tMETHOD", "tOPEN", "tPLAY", "tDONE", "tINSTANCE", "tGE", - "tLE", "tGT", "tLT", "tEQ", "tNEQ", "tAND", "tOR", "tNOT", "tMOD", - "tAFTER", "tBEFORE", "tCONCAT", "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", - "tLINE", "tWORD", "tSPRITE", "tINTERSECTS", "tWITHIN", "tON", "tME", - "'='", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", - "'>'", "'<'", "'['", "']'", "','", "$accept", "program", "nl", - "programline", "asgn", "stmtoneliner", "stmt", "ifstmt", - "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner", + "BLTINONEARG", "BLTINARGLIST", "TWOWORDBUILTIN", "FBLTIN", + "FBLTINNOARGS", "FBLTINONEARG", "ID", "STRING", "HANDLER", "SYMBOL", + "ENDCLAUSE", "tPLAYACCEL", "tDOWN", "tELSE", "tNLELSIF", "tEXIT", + "tFRAME", "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP", "tMACRO", "tMOVIE", + "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT", "tSET", "tTHEN", "tTO", + "tWHEN", "tWITH", "tWHILE", "tNLELSE", "tFACTORY", "tMETHOD", "tOPEN", + "tPLAY", "tDONE", "tINSTANCE", "tGE", "tLE", "tGT", "tLT", "tEQ", "tNEQ", + "tAND", "tOR", "tNOT", "tMOD", "tAFTER", "tBEFORE", "tCONCAT", + "tCONTAINS", "tSTARTS", "tCHAR", "tITEM", "tLINE", "tWORD", "tSPRITE", + "tINTERSECTS", "tWITHIN", "tON", "tME", "'='", "'&'", "'+'", "'-'", + "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "'>'", "'<'", "'['", "']'", + "','", "$accept", "program", "nl", "programline", "asgn", "stmtoneliner", + "stmt", "ifstmt", "elsestmtoneliner", "elseifstmt", "elseifstmtoneliner", "elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile", "repeatwith", "if", "elseif", "begin", "end", "stmtlist", "when", "expr", - "func", "globallist", "instancelist", "gotofunc", "gotoframe", + "proc", "globallist", "instancelist", "gotofunc", "gotoframe", "gotomovie", "playfunc", "@1", "defn", "@2", "@3", "@4", "@5", "argdef", "argstore", "macro", "arglist", "nonemptyarglist", "nonemptyarglistnl", 0 }; @@ -728,30 +734,30 @@ static const yytype_uint16 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, 61, 38, 43, 45, 42, 47, 37, 10, 40, - 41, 62, 60, 91, 93, 44 + 335, 336, 337, 338, 61, 38, 43, 45, 42, 47, + 37, 10, 40, 41, 62, 60, 91, 93, 44 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 96, 97, 97, 97, 98, 99, 99, 99, 99, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, - 101, 102, 102, 102, 102, 102, 102, 103, 103, 103, - 103, 103, 103, 104, 104, 105, 105, 106, 106, 107, - 108, 108, 109, 109, 109, 110, 111, 112, 113, 114, - 115, 116, 116, 116, 117, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 119, 119, 119, 119, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, - 119, 119, 120, 120, 121, 121, 122, 122, 122, 122, - 122, 122, 123, 123, 124, 124, 125, 125, 125, 125, - 126, 125, 128, 127, 127, 129, 127, 130, 131, 127, - 132, 132, 132, 132, 133, 134, 135, 135, 135, 136, - 136, 137, 137 + 0, 99, 100, 100, 100, 101, 102, 102, 102, 102, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 104, + 104, 105, 105, 105, 105, 105, 105, 106, 106, 106, + 106, 106, 106, 107, 107, 108, 108, 109, 109, 110, + 111, 111, 112, 112, 112, 113, 114, 115, 116, 117, + 118, 119, 119, 119, 120, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, + 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 122, 122, 122, 122, 123, 123, 124, 124, 125, 125, + 125, 125, 125, 125, 126, 126, 127, 127, 128, 128, + 128, 128, 129, 128, 131, 130, 130, 132, 130, 133, + 134, 130, 135, 135, 135, 135, 136, 137, 138, 138, + 138, 139, 139, 140, 140 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -763,16 +769,16 @@ static const yytype_uint8 yyr2[] = 6, 10, 10, 0, 3, 2, 1, 2, 1, 6, 1, 6, 1, 3, 3, 2, 3, 1, 1, 0, 0, 0, 2, 2, 3, 1, 1, 1, 1, 1, - 4, 1, 1, 2, 1, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, - 3, 3, 2, 2, 3, 3, 4, 4, 4, 6, - 4, 6, 4, 6, 4, 6, 2, 1, 1, 2, - 1, 2, 2, 2, 2, 1, 2, 4, 6, 4, - 2, 3, 1, 3, 1, 3, 2, 2, 2, 2, - 3, 2, 2, 1, 3, 2, 2, 2, 3, 2, - 0, 3, 0, 8, 2, 0, 8, 0, 0, 10, - 0, 1, 3, 4, 0, 2, 0, 1, 3, 1, - 3, 2, 4 + 2, 4, 1, 1, 2, 1, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, + 3, 3, 3, 2, 2, 3, 3, 4, 4, 4, + 6, 4, 6, 4, 6, 4, 6, 2, 1, 1, + 2, 1, 2, 2, 1, 2, 2, 1, 2, 4, + 6, 4, 2, 3, 1, 3, 1, 3, 2, 2, + 2, 2, 3, 2, 2, 1, 3, 2, 2, 2, + 3, 2, 0, 3, 0, 8, 2, 0, 8, 0, + 0, 10, 0, 1, 3, 4, 0, 2, 0, 1, + 3, 1, 3, 2, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -780,444 +786,438 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 0, 55, 62, 0, 56, 59, 105, 0, 146, - 0, 61, 58, 57, 130, 100, 0, 0, 47, 0, + 0, 0, 55, 63, 0, 56, 104, 107, 0, 0, + 0, 59, 0, 62, 58, 57, 132, 101, 0, 0, + 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 146, 0, 3, 64, 21, 9, 22, 0, 0, 0, - 0, 19, 20, 97, 98, 7, 8, 5, 4, 61, - 0, 63, 104, 103, 147, 0, 106, 146, 146, 149, - 0, 145, 146, 99, 112, 101, 0, 116, 0, 117, - 0, 118, 123, 119, 121, 132, 96, 0, 45, 0, - 0, 0, 0, 134, 135, 110, 126, 127, 129, 114, - 102, 77, 0, 0, 0, 0, 0, 137, 0, 82, - 83, 0, 147, 0, 1, 6, 0, 0, 0, 0, - 42, 50, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, - 151, 0, 111, 147, 0, 0, 131, 0, 122, 125, - 0, 120, 49, 0, 0, 0, 46, 0, 0, 0, - 0, 0, 54, 49, 0, 128, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 0, 84, - 85, 0, 2, 0, 50, 0, 0, 49, 0, 26, - 73, 74, 72, 75, 76, 69, 79, 80, 81, 78, - 65, 66, 67, 68, 70, 71, 148, 60, 150, 113, - 124, 140, 10, 11, 12, 17, 14, 0, 0, 16, - 13, 140, 109, 115, 88, 0, 90, 0, 92, 0, - 94, 0, 86, 87, 138, 107, 146, 148, 51, 0, - 44, 51, 0, 43, 152, 141, 0, 18, 15, 0, - 0, 0, 0, 0, 140, 0, 50, 0, 0, 50, - 50, 0, 144, 144, 89, 91, 93, 95, 0, 108, - 52, 53, 0, 0, 50, 49, 30, 142, 0, 51, - 51, 144, 23, 50, 51, 27, 51, 0, 48, 49, - 50, 38, 0, 143, 133, 136, 51, 51, 50, 50, - 50, 40, 36, 0, 0, 37, 33, 0, 0, 50, - 0, 0, 35, 0, 0, 50, 49, 50, 49, 139, - 0, 24, 28, 29, 49, 31, 0, 32, 0, 25, - 51, 34, 50, 50, 39, 41 + 0, 0, 148, 0, 3, 65, 21, 9, 22, 0, + 0, 0, 0, 19, 20, 98, 99, 7, 8, 5, + 4, 62, 0, 64, 106, 105, 0, 108, 148, 60, + 148, 151, 147, 148, 100, 114, 102, 0, 118, 0, + 119, 0, 120, 125, 121, 123, 134, 97, 0, 45, + 0, 0, 0, 0, 136, 137, 112, 128, 129, 131, + 116, 103, 78, 0, 0, 0, 0, 0, 139, 0, + 83, 84, 0, 149, 0, 1, 6, 0, 0, 0, + 0, 42, 50, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, + 0, 153, 0, 113, 149, 0, 0, 133, 0, 124, + 127, 0, 122, 49, 0, 0, 0, 46, 0, 0, + 0, 0, 0, 54, 49, 0, 130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, + 85, 86, 0, 2, 0, 50, 0, 0, 49, 0, + 26, 74, 75, 73, 76, 77, 70, 80, 81, 82, + 79, 66, 67, 68, 69, 71, 72, 0, 61, 152, + 115, 126, 142, 10, 11, 12, 17, 14, 0, 0, + 16, 13, 142, 111, 117, 89, 0, 91, 0, 93, + 0, 95, 0, 87, 88, 140, 109, 148, 150, 51, + 0, 44, 51, 0, 43, 154, 143, 0, 18, 15, + 0, 0, 0, 0, 0, 142, 0, 50, 0, 0, + 50, 50, 0, 146, 146, 90, 92, 94, 96, 0, + 110, 52, 53, 0, 0, 50, 49, 30, 144, 0, + 51, 51, 146, 23, 50, 51, 27, 51, 0, 48, + 49, 50, 38, 0, 145, 135, 138, 51, 51, 50, + 50, 50, 40, 36, 0, 0, 37, 33, 0, 0, + 50, 0, 0, 35, 0, 0, 50, 49, 50, 49, + 141, 0, 24, 28, 29, 49, 31, 0, 32, 0, + 25, 51, 34, 50, 50, 39, 41 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 41, 270, 42, 43, 44, 271, 46, 317, 300, - 301, 291, 302, 119, 47, 48, 49, 292, 211, 189, - 256, 50, 51, 52, 75, 100, 53, 83, 84, 54, - 72, 55, 152, 163, 177, 254, 246, 279, 56, 144, - 71, 66 + -1, 43, 271, 44, 45, 46, 272, 48, 318, 301, + 302, 292, 303, 120, 49, 50, 51, 293, 212, 190, + 257, 52, 53, 54, 76, 101, 55, 84, 85, 56, + 73, 57, 153, 164, 178, 255, 247, 280, 58, 145, + 72, 67 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -275 +#define YYPACT_NINF -264 static const yytype_int16 yypact[] = { - 289, -65, -275, -275, 964, -275, -275, 964, 964, 964, - 37, 372, -275, -275, -275, 31, 61, 863, -275, 72, - 964, 38, 71, 75, 76, 77, 964, 929, 79, 964, - 964, 964, 964, 964, 964, 81, 15, 964, 964, 964, - 964, 2, -275, -275, -275, -275, -275, 16, 22, 1030, - 964, 1552, -275, -275, -275, -275, -275, -275, -275, 17, - 964, 1552, 1552, 1552, 1458, 12, -275, 964, 964, 1324, - 13, -275, 964, -275, -275, 18, 964, -275, 964, -275, - 78, -275, 1552, 32, -275, -275, 340, 89, -275, -39, - 964, -32, 69, -275, -275, 1007, -275, 32, -275, -275, - 25, -45, 1069, 1101, 1133, 1165, 1396, -275, 100, -45, - -45, 1490, 1552, -6, -275, 457, 1030, 964, 1030, 95, - 1521, 1552, 964, 964, 964, 964, 964, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, 964, 964, 340, - -275, 964, 27, 1490, -33, 964, 27, 120, 1552, 1552, - 964, -275, -275, 122, 964, 964, -275, 964, 964, 766, - 964, 964, -275, -275, 964, -275, 123, 964, 964, 964, - 964, 964, 964, 964, 964, 964, 964, -275, -31, -275, - -275, 964, -275, 57, 1552, 58, 1427, -65, 964, -275, - 164, 164, 164, -45, -45, -45, 1552, 164, 164, 826, - 206, 206, -45, -45, 1552, 1552, 1458, -275, 1360, -275, - 1552, 128, -275, 1552, 1552, 1552, 1552, 964, 964, 1552, - 1552, 128, 1552, -275, 1552, 1197, 1552, 1229, 1552, 1261, - 1552, 1293, 1552, 1552, -275, -275, 964, 1552, -275, -2, - -275, -275, 789, 1552, -275, -275, -66, 1552, 1552, -66, - 964, 964, 964, 964, 128, -30, 623, 104, 964, 623, - -275, 131, 59, 59, 1552, 1552, 1552, 1552, -66, -275, - -275, -275, 132, 964, 1552, -5, -13, -275, 139, -275, - -275, 59, -275, 1552, -275, -275, -275, 124, -275, -275, - 124, -275, 1030, -275, 623, 623, -275, -275, 623, 623, - 124, 124, -275, 1030, 789, -275, 113, 121, 540, 623, - 142, 154, -275, 158, 141, -275, -275, -275, -275, -275, - 162, -275, -275, -275, -275, -275, 789, -275, 706, -275, - 706, -275, -275, 623, -275, -275 + 297, -60, -264, -264, 907, -264, -264, 907, 907, 907, + 34, -264, 907, 984, -264, -264, -264, 29, 67, 804, + -264, 71, 907, 46, 55, 75, 76, 84, 907, 881, + 85, 907, 907, 907, 907, 907, 907, 89, 25, 907, + 907, 907, 907, 2, -264, -264, -264, -264, -264, 30, + 37, 1010, 907, 1517, -264, -264, -264, -264, -264, -264, + -264, 31, 907, 1517, 1517, 1517, 1423, 43, 907, 1517, + 907, 1517, 44, 907, -264, -264, 47, 907, -264, 907, + -264, 103, -264, 1517, -16, -264, -264, 1043, 122, -264, + -38, 907, -34, 100, -264, -264, 1330, -264, -16, -264, + -264, 51, -56, 1075, 1107, 1139, 1171, 1361, -264, 126, + -56, -56, 1455, 1517, 17, -264, 383, 1010, 907, 1010, + 105, 1486, 1517, 907, 907, 907, 907, 907, 907, 907, + 907, 907, 907, 907, 907, 907, 907, 907, 907, 907, + 1043, -264, 907, 53, 1455, -32, 907, 53, 130, 1517, + 1517, 907, -264, -264, 131, 907, 907, -264, 907, 907, + 704, 907, 907, -264, -264, 907, -264, 137, 907, 907, + 907, 907, 907, 907, 907, 907, 907, 907, -264, -12, + -264, -264, 907, -264, 72, 1517, 74, 1392, -60, 907, + -264, 16, 16, 16, -56, -56, -56, 1517, 16, 16, + 120, 155, 155, -56, -56, 1517, 1517, 1423, -264, 1517, + -264, 1517, 140, -264, 1517, 1517, 1517, 1517, 907, 907, + 1517, 1517, 140, 1517, -264, 1517, 1203, 1517, 1235, 1517, + 1267, 1517, 1299, 1517, 1517, -264, -264, 907, 1517, -264, + -4, -264, -264, 727, 1517, -264, -264, -2, 1517, 1517, + -2, 907, 907, 907, 907, 140, 14, 555, 119, 907, + 555, -264, 157, 81, 81, 1517, 1517, 1517, 1517, -2, + -264, -264, -264, 156, 907, 1517, -6, -25, -264, 161, + -264, -264, 81, -264, 1517, -264, -264, -264, 162, -264, + -264, 162, -264, 1010, -264, 555, 555, -264, -264, 555, + 555, 162, 162, -264, 1010, 727, -264, 135, 145, 469, + 555, 167, 169, -264, 170, 152, -264, -264, -264, -264, + -264, 173, -264, -264, -264, -264, -264, 727, -264, 641, + -264, 641, -264, -264, 555, -264, -264 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -275, -275, 14, 73, -275, -241, 0, -275, -275, -275, - -86, -247, -108, -112, -275, -275, -275, -274, -111, -75, - -185, -275, 1, -275, -275, -275, -275, 166, -16, -275, - -275, -275, -275, -275, -275, -275, -218, -210, -275, 8, - -275, -275 + -264, -264, 11, 86, -264, -240, 0, -264, -264, -264, + -74, -243, -97, -113, -264, -264, -264, -237, -94, -27, + -225, -264, 1, -264, -264, -264, -264, 176, -8, -264, + -264, -264, -264, -264, -264, -264, -198, -263, -264, -24, + -264, -264 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -149 +#define YYTABLE_NINF -7 static const yytype_int16 yytable[] = { - 45, 260, 114, 249, 183, 61, 185, 157, 62, 63, - 64, 98, 69, 303, 160, 58, 288, 65, 82, 70, - 285, 86, 57, 57, 128, 257, 303, 95, 82, 261, - 101, 102, 103, 104, 105, 106, 268, 289, 109, 110, - 111, 112, 158, 305, 258, 286, 136, 137, 113, 161, - 120, 121, 221, 280, 305, 115, 259, 207, 67, 235, - 269, 139, 181, 315, 236, 181, 234, 151, 112, 143, - 78, 296, 80, 112, 73, 142, 242, 148, 140, 149, - 146, 165, 74, 89, 90, 331, 87, 88, 180, 181, - 57, 159, 91, 85, 294, 295, 92, 93, 94, 298, - 99, 299, 107, 117, 108, 116, 138, 141, 145, 239, - 156, 308, 309, 147, 162, 45, 150, 120, 184, 186, - 166, 178, 181, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 112, - 187, 209, 206, 212, 223, 333, 208, 238, 240, 245, - 273, 210, 277, 288, 278, 213, 214, 282, 215, 216, - 293, 219, 220, 316, 287, 222, 318, 321, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 304, 322, - 307, 272, 237, 323, 275, 276, 324, 329, 182, 243, - 290, 314, 312, 97, 0, 0, 0, 0, 0, 284, - 0, 241, 0, 0, 0, 326, 0, 328, 297, 0, - 0, 0, 0, 330, 0, 306, 0, 0, 247, 248, - 244, 0, 0, 310, 311, 313, 0, 125, 126, 0, - 127, 0, 0, 128, 320, 0, 0, 112, 0, 0, - 325, 0, 327, 0, 255, 0, 131, 132, 133, 134, - 135, 264, 265, 266, 267, 136, 137, 334, 335, 274, - 262, 0, 0, 263, 0, 0, 0, 0, 0, 125, - 126, 0, 127, 0, 283, 128, 0, 0, 0, 0, - 0, 0, 281, 0, 0, 0, 0, 0, 0, -6, - 1, 134, 135, 120, 0, 0, 0, 136, 137, 0, - 2, 3, 4, 5, 120, 6, 7, 8, 9, 10, - 11, 12, 0, 13, 0, 14, 0, 0, 0, 15, - 0, 16, 17, 18, 0, 0, 19, 0, 332, 0, - 332, 20, 21, 22, 0, 0, 23, 0, 0, 0, - 24, 25, 26, 27, 0, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, - 0, 30, 31, 32, 33, 34, 0, 0, 35, 36, - 0, 0, 37, 38, 0, 153, 0, -6, 39, 0, - 0, 0, 40, 2, 3, 4, 5, 0, 6, 0, - 0, 0, 0, 59, 12, 0, 13, 122, 123, 0, - 0, 0, 124, 125, 126, 0, 127, 154, 155, 128, - 129, 130, 0, 0, 60, 0, 22, 0, 0, 0, - 0, 0, 131, 132, 133, 134, 135, 0, 0, 0, - 0, 136, 137, 0, 0, 0, 0, 29, 0, 0, - 0, 0, 0, 0, 30, 31, 32, 33, 34, 0, - 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, - 0, 68, 0, 0, 0, 40, 0, -146, 2, 3, - 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, - 0, 13, 0, 14, 0, 0, 0, 15, 0, 16, - 17, 18, 0, 0, 19, 0, 0, 0, 0, 20, - 21, 22, 0, 0, 23, 0, 0, 0, 24, 25, - 26, 27, 0, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 29, 0, 0, 0, 0, 0, 0, 30, - 31, 32, 33, 34, 0, 0, 35, 36, 0, 0, - 37, 38, 0, 0, 0, 0, 39, 0, 0, 0, - 40, 2, 3, 4, 5, 0, 6, 7, 8, 9, - 10, 59, 12, 0, 13, 319, 14, 0, 0, 0, - 15, 0, 16, 17, 18, 0, 0, 0, 0, 0, - 0, 0, 20, 21, 22, 0, 0, 23, 0, 0, - 0, 0, 0, 26, 27, 0, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, - 0, 0, 30, 31, 32, 33, 34, 0, 0, 0, - 36, 0, 0, 37, 38, 0, 0, 0, 57, 39, - 0, 0, 0, 40, 2, 3, 4, 5, 0, 6, - 7, 8, 9, 10, 59, 12, 0, 13, 0, 14, - 0, 0, 0, 15, 0, 16, 17, 18, 0, 0, - 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, - 23, 0, 0, 0, 0, 0, 26, 27, 0, 28, - 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 0, 0, 0, 0, 0, 30, 31, 32, 33, 34, - 0, 0, 0, 36, 0, 0, 37, 38, 0, 0, - 0, 57, 39, 0, 0, 0, 40, 2, 3, 4, - 5, 0, 6, 7, 8, 9, 10, 59, 12, 0, - 13, 0, 14, 0, 0, 0, 15, 0, 16, 17, - 18, 0, 0, 0, 0, 0, 0, 0, 20, 21, - 22, 0, 0, 23, 0, 0, 0, 0, 0, 26, - 27, 0, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 29, 0, 0, 0, 0, 0, 0, 30, 31, - 32, 33, 34, 0, 0, 0, 36, 0, 0, 37, - 38, 0, 0, 0, 0, 39, 0, 0, 0, 40, + 47, 281, 115, 261, 184, 63, 186, 289, 64, 65, + 66, 158, 60, 69, 71, 161, 129, 260, 114, 297, + 83, 99, 286, 87, 250, 79, 258, 81, 290, 96, + 83, 59, 102, 103, 104, 105, 106, 107, 137, 138, + 110, 111, 112, 113, 143, 259, 159, 287, 306, 147, + 162, 304, 121, 122, 116, 295, 296, 269, 68, 306, + 299, 208, 300, 140, 304, 316, 182, 90, 91, 113, + 222, 144, 309, 310, 113, 74, 152, 141, 149, 92, + 150, 236, 126, 127, 235, 128, 237, 332, 129, 59, + 166, 75, 160, 59, 243, 86, 262, 88, 89, 93, + 94, 132, 133, 134, 135, 136, 334, 270, 95, 100, + 137, 138, 182, 108, 181, 182, 47, 109, 121, 185, + 187, 118, 117, 139, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 113, 142, 146, 207, 151, 148, 157, 209, 163, 167, + 179, 182, 211, 188, 210, 213, 214, 215, 240, 216, + 217, 224, 220, 221, 246, 239, 223, 241, 274, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 279, + 308, 278, 288, 238, 283, 294, 126, 127, 317, 128, + 244, 315, 129, 319, 289, 322, 305, 323, 324, 242, + 325, 330, 183, 291, 313, 98, 133, 134, 135, 136, + 0, 0, 0, 256, 137, 138, 0, 0, 245, 248, + 249, 126, 127, 327, 128, 329, 0, 129, 0, 0, + 273, 331, 0, 276, 277, 0, 0, 0, 113, 0, + 0, 0, 0, 135, 136, 0, 0, 0, 285, 137, + 138, 0, 265, 266, 267, 268, 0, 298, 263, 0, + 275, 264, 0, 0, 307, 0, 0, 0, 0, 0, + 0, 0, 311, 312, 314, 284, 0, 0, 0, 0, + 282, 0, 0, 321, 0, 0, 0, 0, 0, 326, + 0, 328, 0, 0, 121, 0, 0, -6, 1, 0, + 0, 0, 0, 0, 0, 121, 335, 336, 2, 3, + 4, 5, 0, 6, 7, 8, 9, 10, 0, 11, + 12, 13, 14, 0, 15, 0, 16, 0, 0, 333, + 17, 333, 18, 19, 20, 0, 0, 21, 0, 0, + 0, 0, 22, 23, 24, 0, 0, 25, 0, 0, + 0, 26, 27, 28, 29, 0, 30, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, + 0, 0, 32, 33, 34, 35, 36, 0, 0, 37, + 38, 0, 0, 39, 40, 0, 0, 0, -6, 41, + 0, 0, 0, 42, 2, 3, 4, 5, 0, 6, + 7, 8, 9, 10, 0, 11, 12, 13, 14, 0, + 15, 0, 16, 0, 0, 0, 17, 0, 18, 19, + 20, 0, 0, 21, 0, 0, 0, 0, 22, 23, + 24, 0, 0, 25, 0, 0, 0, 26, 27, 28, + 29, 0, 30, 0, 0, 0, 0, 0, 0, 0, + 0, 31, 0, 0, 0, 0, 0, 0, 32, 33, + 34, 35, 36, 0, 0, 37, 38, 0, 0, 39, + 40, 0, 0, 0, 0, 41, 0, 0, 0, 42, 2, 3, 4, 5, 0, 6, 7, 8, 9, 10, - 59, 12, 217, 13, 0, 14, 0, 0, 0, 15, - 0, 16, 17, 122, 123, 0, 0, 0, 124, 125, - 126, 20, 127, 22, 0, 128, 129, 130, 0, 0, - 0, 0, 26, 27, 0, 28, 0, 218, 131, 132, - 133, 134, 135, 0, 29, 0, 0, 136, 137, 0, - 0, 30, 31, 32, 33, 34, 0, 0, 0, 36, - 0, 0, 37, 38, 2, 3, 4, 5, 39, 6, - 0, 0, 40, 0, 59, 12, 0, 13, 0, 125, - 126, 0, 127, 0, 76, 128, 0, 0, 0, 77, - 0, 78, 79, 80, 81, 60, 0, 22, 0, 132, - 133, 134, 135, 0, 0, 0, 0, 136, 137, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 0, 0, 0, 0, 0, 30, 31, 32, 33, 34, - 2, 3, 4, 5, 0, 6, 37, 38, 0, 0, - 59, 12, 39, 13, 0, 0, 40, 0, 0, 0, - 76, 0, 0, 0, 0, 0, 0, 78, 0, 80, - 0, 60, 0, 22, 0, 2, 3, 4, 5, 0, - 6, 0, 0, 0, 96, 59, 12, 0, 13, 0, - 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, - 0, 30, 31, 32, 33, 34, 60, 0, 22, 0, - 0, 0, 37, 38, 0, 0, 0, 0, 39, 0, - 0, 0, 40, 0, 0, 0, 0, 0, 0, 29, - 0, 0, 0, 0, 0, 0, 30, 31, 32, 33, - 34, 2, 3, 4, 5, 0, 6, 37, 38, 0, - 0, 59, 12, 39, 13, 164, 0, 40, 0, 0, - 0, 0, 0, 0, 122, 123, 0, 0, 0, 124, - 125, 126, 60, 127, 22, 0, 128, 129, 130, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, - 132, 133, 134, 135, 0, 29, 0, 0, 136, 137, - 0, 0, 30, 31, 32, 33, 34, 0, 0, 167, - 0, 0, 0, 37, 38, 168, 0, 0, 0, 118, - 0, 0, 0, 40, 0, 0, 122, 123, 0, 0, - 0, 124, 125, 126, 0, 127, 0, 0, 128, 129, - 130, 169, 0, 0, 0, 0, 0, 170, 0, 0, - 0, 131, 132, 133, 134, 135, 0, 0, 122, 123, - 136, 137, 0, 124, 125, 126, 0, 127, 0, 0, - 128, 129, 130, 171, 0, 0, 0, 0, 0, 172, - 0, 0, 0, 131, 132, 133, 134, 135, 0, 0, - 122, 123, 136, 137, 0, 124, 125, 126, 0, 127, - 0, 0, 128, 129, 130, 173, 0, 0, 0, 0, - 0, 174, 0, 0, 0, 131, 132, 133, 134, 135, - 0, 0, 122, 123, 136, 137, 0, 124, 125, 126, - 0, 127, 0, 0, 128, 129, 130, 250, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 131, 132, 133, - 134, 135, 0, 0, 122, 123, 136, 137, 0, 124, - 125, 126, 0, 127, 0, 0, 128, 129, 130, 251, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, - 132, 133, 134, 135, 0, 0, 122, 123, 136, 137, - 0, 124, 125, 126, 0, 127, 0, 0, 128, 129, - 130, 252, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 131, 132, 133, 134, 135, 0, 0, 122, 123, - 136, 137, 0, 124, 125, 126, 0, 127, 0, 0, - 128, 129, 130, 253, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 131, 132, 133, 134, 135, 0, 0, - 122, 123, 136, 137, 0, 124, 125, 126, 0, 127, - 0, 0, 128, 129, 130, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 131, 132, 133, 134, 135, - 0, 122, 123, 0, 136, 137, 124, 125, 126, 0, - 127, 0, 0, 128, 129, 130, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 131, 132, 133, 134, - 135, 0, 0, 0, 0, 136, 137, 122, 123, -147, - 0, 0, 124, 125, 126, 0, 127, 0, 0, 128, - 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 131, 132, 133, 134, 135, 0, 0, 0, - 0, 136, 137, 122, 123, -148, 0, 0, 124, 125, - 126, 0, 127, 0, 0, 128, 129, 130, 0, 0, - 0, 0, 0, 175, 176, 0, 0, 0, 131, 132, - 133, 134, 135, 0, 122, 123, 0, 136, 137, 124, - 125, 126, 0, 127, 0, 0, 128, 129, 130, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 131, - 132, 133, 134, 135, 0, 122, 123, 179, 136, 137, - 124, 125, 126, 0, 127, 0, 0, 128, 129, 130, + 0, 11, 12, 61, 14, 0, 15, 320, 16, 0, + 0, 0, 17, 0, 18, 19, 20, 0, 0, 0, + 0, 0, 0, 0, 22, 23, 24, 0, 0, 25, + 0, 0, 0, 0, 0, 28, 29, 0, 30, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 32, 33, 34, 35, 36, 0, + 0, 0, 38, 0, 0, 39, 40, 0, 0, 0, + 59, 41, 0, 0, 0, 42, 2, 3, 4, 5, + 0, 6, 7, 8, 9, 10, 0, 11, 12, 61, + 14, 0, 15, 0, 16, 0, 0, 0, 17, 0, + 18, 19, 20, 0, 0, 0, 0, 0, 0, 0, + 22, 23, 24, 0, 0, 25, 0, 0, 0, 0, + 0, 28, 29, 0, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, + 32, 33, 34, 35, 36, 0, 0, 0, 38, 0, + 0, 39, 40, 0, 0, 0, 59, 41, 0, 0, + 0, 42, 2, 3, 4, 5, 0, 6, 7, 8, + 9, 10, 0, 11, 12, 61, 14, 0, 15, 0, + 16, 0, 0, 0, 17, 0, 18, 19, 20, 0, + 0, 0, 0, 0, 0, 0, 22, 23, 24, 0, + 0, 25, 0, 0, 0, 0, 0, 28, 29, 0, + 30, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 32, 33, 34, 35, + 36, 0, 0, 0, 38, 0, 0, 39, 40, 0, + 0, 0, 0, 41, 0, 0, 0, 42, 2, 3, + 4, 5, 0, 6, 7, 8, 9, 10, 0, 11, + 12, 61, 14, 218, 15, 0, 16, 0, 0, 0, + 17, 0, 18, 19, 123, 124, 0, 0, 0, 125, + 126, 127, 22, 128, 24, 0, 129, 130, 131, 0, + 0, 0, 0, 28, 29, 0, 30, 0, 219, 132, + 133, 134, 135, 136, 0, 31, 0, 0, 137, 138, + 0, 0, 32, 33, 34, 35, 36, 0, 0, 0, + 38, 0, 0, 39, 40, 2, 3, 4, 5, 41, + 0, 0, 0, 42, 0, 0, 11, 12, 61, 14, + 0, 15, 0, 0, 0, 0, 0, 0, 77, 0, + 0, 0, 0, 78, 0, 79, 80, 81, 82, 62, + 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 0, 0, 0, 32, + 33, 34, 35, 36, 0, 0, 0, 0, 0, 0, + 39, 40, 2, 3, 4, 5, 41, 0, 0, 0, + 42, 0, 0, 11, 12, 61, 14, 0, 15, 0, + 0, 0, 0, 0, 0, 77, 0, 0, 2, 3, + 4, 5, 79, 0, 81, 0, 62, 0, 24, 11, + 12, 61, 14, 0, 15, 0, 0, 0, 0, 97, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, + 0, 0, 62, 0, 24, 0, 32, 33, 34, 35, + 36, 0, 0, 0, 0, 0, 0, 39, 40, 0, + 0, 0, 0, 41, 0, 31, 0, 42, 0, 0, + 0, 0, 32, 33, 34, 35, 36, 0, 0, 0, + 0, 0, 0, 39, 40, 2, 3, 4, 5, 41, + 0, 0, 0, 42, 0, 0, 11, 12, 61, 14, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2, 3, 4, 5, 0, 0, 0, 0, 62, + 0, 24, 11, 12, 61, 14, 0, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 62, 0, 24, 0, 32, + 33, 34, 35, 36, 0, 0, 0, 0, 0, 0, + 39, 40, 0, 0, 0, 0, 70, 0, 31, 0, + 42, 154, 0, 0, 0, 32, 33, 34, 35, 36, + 0, 0, 0, 0, 0, 0, 39, 40, 0, 0, + 0, 0, 119, 123, 124, 0, 42, 0, 125, 126, + 127, 0, 128, 155, 156, 129, 130, 131, 168, 0, + 0, 0, 0, 0, 169, 0, 0, 0, 132, 133, + 134, 135, 136, 0, 0, 123, 124, 137, 138, 0, + 125, 126, 127, 0, 128, 0, 0, 129, 130, 131, + 170, 0, 0, 0, 0, 0, 171, 0, 0, 0, + 132, 133, 134, 135, 136, 0, 0, 123, 124, 137, + 138, 0, 125, 126, 127, 0, 128, 0, 0, 129, + 130, 131, 172, 0, 0, 0, 0, 0, 173, 0, + 0, 0, 132, 133, 134, 135, 136, 0, 0, 123, + 124, 137, 138, 0, 125, 126, 127, 0, 128, 0, + 0, 129, 130, 131, 174, 0, 0, 0, 0, 0, + 175, 0, 0, 0, 132, 133, 134, 135, 136, 0, + 0, 123, 124, 137, 138, 0, 125, 126, 127, 0, + 128, 0, 0, 129, 130, 131, 251, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 132, 133, 134, 135, + 136, 0, 0, 123, 124, 137, 138, 0, 125, 126, + 127, 0, 128, 0, 0, 129, 130, 131, 252, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 132, 133, + 134, 135, 136, 0, 0, 123, 124, 137, 138, 0, + 125, 126, 127, 0, 128, 0, 0, 129, 130, 131, + 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136, 0, 0, 123, 124, 137, + 138, 0, 125, 126, 127, 0, 128, 0, 0, 129, + 130, 131, 254, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 132, 133, 134, 135, 136, 0, 0, 123, + 124, 137, 138, 0, 125, 126, 127, 0, 128, 0, + 0, 129, 130, 131, 0, 0, 0, 0, 0, 0, + 0, 165, 0, 0, 132, 133, 134, 135, 136, 0, + 123, 124, 0, 137, 138, 125, 126, 127, 0, 128, + 0, 0, 129, 130, 131, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 132, 133, 134, 135, 136, + 0, 123, 124, 0, 137, 138, 125, 126, 127, 0, + 128, 0, 0, 129, 130, 131, 0, 0, 0, 0, + 0, 176, 177, 0, 0, 0, 132, 133, 134, 135, + 136, 0, 123, 124, 0, 137, 138, 125, 126, 127, + 0, 128, 0, 0, 129, 130, 131, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 189, 132, 133, 134, + 135, 136, 0, 123, 124, 180, 137, 138, 125, 126, + 127, 0, 128, 0, 0, 129, 130, 131, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 132, 133, + 134, 135, 136, 0, 59, 123, 124, 137, 138, 0, + 125, 126, 127, 0, 128, 0, 0, 129, 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 131, 132, 133, 134, 135, 0, 57, 122, 123, 136, - 137, 0, 124, 125, 126, 0, 127, 0, 0, 128, - 129, 130, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 131, 132, 133, 134, 135, 0, 122, 123, - 179, 136, 137, 124, 125, 126, 0, 127, 0, 0, - 128, 129, 130, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 188, 131, 132, 133, 134, 135, 0, 122, - 123, 0, 136, 137, 124, 125, 126, 0, 127, 0, - 0, 128, 129, 130, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 131, 132, 133, 134, 135, 0, - 0, 0, 0, 136, 137 + 132, 133, 134, 135, 136, 0, 123, 124, 180, 137, + 138, 125, 126, 127, 0, 128, 0, 0, 129, 130, + 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 189, 132, 133, 134, 135, 136, 0, 123, 124, 0, + 137, 138, 125, 126, 127, 0, 128, 0, 0, 129, + 130, 131, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 132, 133, 134, 135, 136, 0, 0, 0, + 0, 137, 138 }; static const yytype_int16 yycheck[] = { - 0, 242, 0, 221, 116, 4, 118, 46, 7, 8, - 9, 27, 11, 287, 46, 1, 29, 9, 17, 11, - 25, 20, 88, 88, 69, 27, 300, 26, 27, 95, - 29, 30, 31, 32, 33, 34, 254, 50, 37, 38, - 39, 40, 81, 290, 46, 50, 91, 92, 40, 81, - 49, 50, 163, 263, 301, 41, 241, 90, 21, 90, - 90, 60, 95, 304, 95, 95, 177, 83, 67, 68, - 38, 281, 40, 72, 43, 67, 187, 76, 64, 78, - 72, 97, 21, 12, 13, 326, 48, 49, 94, 95, - 88, 90, 21, 21, 279, 280, 21, 21, 21, 284, - 21, 286, 21, 81, 89, 89, 89, 95, 95, 184, - 21, 296, 297, 95, 45, 115, 38, 116, 117, 118, - 95, 21, 95, 122, 123, 124, 125, 126, 127, 128, + 0, 264, 0, 243, 117, 4, 119, 32, 7, 8, + 9, 49, 1, 12, 13, 49, 72, 242, 42, 282, + 19, 29, 28, 22, 222, 41, 30, 43, 53, 28, + 29, 91, 31, 32, 33, 34, 35, 36, 94, 95, + 39, 40, 41, 42, 68, 49, 84, 53, 291, 73, + 84, 288, 51, 52, 43, 280, 281, 255, 24, 302, + 285, 93, 287, 62, 301, 305, 98, 12, 13, 68, + 164, 70, 297, 298, 73, 46, 84, 66, 77, 24, + 79, 93, 66, 67, 178, 69, 98, 327, 72, 91, + 98, 24, 91, 91, 188, 24, 98, 51, 52, 24, + 24, 85, 86, 87, 88, 89, 331, 93, 24, 24, + 94, 95, 98, 24, 97, 98, 116, 92, 117, 118, + 119, 84, 92, 92, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 45, 21, 141, 21, 21, 330, 145, 90, 90, 21, - 46, 150, 21, 29, 95, 154, 155, 25, 157, 158, - 21, 160, 161, 50, 275, 164, 45, 25, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 289, 25, - 292, 256, 181, 25, 259, 260, 45, 25, 115, 188, - 276, 303, 300, 27, -1, -1, -1, -1, -1, 274, - -1, 187, -1, -1, -1, 316, -1, 318, 283, -1, - -1, -1, -1, 324, -1, 290, -1, -1, 217, 218, - 206, -1, -1, 298, 299, 300, -1, 63, 64, -1, - 66, -1, -1, 69, 309, -1, -1, 236, -1, -1, - 315, -1, 317, -1, 236, -1, 82, 83, 84, 85, - 86, 250, 251, 252, 253, 91, 92, 332, 333, 258, - 246, -1, -1, 249, -1, -1, -1, -1, -1, 63, - 64, -1, 66, -1, 273, 69, -1, -1, -1, -1, - -1, -1, 268, -1, -1, -1, -1, -1, -1, 0, - 1, 85, 86, 292, -1, -1, -1, 91, 92, -1, - 11, 12, 13, 14, 303, 16, 17, 18, 19, 20, - 21, 22, -1, 24, -1, 26, -1, -1, -1, 30, - -1, 32, 33, 34, -1, -1, 37, -1, 328, -1, - 330, 42, 43, 44, -1, -1, 47, -1, -1, -1, - 51, 52, 53, 54, -1, 56, -1, -1, -1, -1, - -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, - -1, 72, 73, 74, 75, 76, -1, -1, 79, 80, - -1, -1, 83, 84, -1, 35, -1, 88, 89, -1, - -1, -1, 93, 11, 12, 13, 14, -1, 16, -1, - -1, -1, -1, 21, 22, -1, 24, 57, 58, -1, - -1, -1, 62, 63, 64, -1, 66, 67, 68, 69, - 70, 71, -1, -1, 42, -1, 44, -1, -1, -1, - -1, -1, 82, 83, 84, 85, 86, -1, -1, -1, - -1, 91, 92, -1, -1, -1, -1, 65, -1, -1, - -1, -1, -1, -1, 72, 73, 74, 75, 76, -1, - -1, -1, -1, -1, -1, 83, 84, -1, -1, -1, - -1, 89, -1, -1, -1, 93, -1, 95, 11, 12, - 13, 14, -1, 16, 17, 18, 19, 20, 21, 22, - -1, 24, -1, 26, -1, -1, -1, 30, -1, 32, - 33, 34, -1, -1, 37, -1, -1, -1, -1, 42, - 43, 44, -1, -1, 47, -1, -1, -1, 51, 52, - 53, 54, -1, 56, -1, -1, -1, -1, -1, -1, - -1, -1, 65, -1, -1, -1, -1, -1, -1, 72, - 73, 74, 75, 76, -1, -1, 79, 80, -1, -1, - 83, 84, -1, -1, -1, -1, 89, -1, -1, -1, - 93, 11, 12, 13, 14, -1, 16, 17, 18, 19, - 20, 21, 22, -1, 24, 25, 26, -1, -1, -1, - 30, -1, 32, 33, 34, -1, -1, -1, -1, -1, - -1, -1, 42, 43, 44, -1, -1, 47, -1, -1, - -1, -1, -1, 53, 54, -1, 56, -1, -1, -1, - -1, -1, -1, -1, -1, 65, -1, -1, -1, -1, - -1, -1, 72, 73, 74, 75, 76, -1, -1, -1, - 80, -1, -1, 83, 84, -1, -1, -1, 88, 89, - -1, -1, -1, 93, 11, 12, 13, 14, -1, 16, - 17, 18, 19, 20, 21, 22, -1, 24, -1, 26, - -1, -1, -1, 30, -1, 32, 33, 34, -1, -1, - -1, -1, -1, -1, -1, 42, 43, 44, -1, -1, - 47, -1, -1, -1, -1, -1, 53, 54, -1, 56, - -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, - -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, - -1, -1, -1, 80, -1, -1, 83, 84, -1, -1, - -1, 88, 89, -1, -1, -1, 93, 11, 12, 13, - 14, -1, 16, 17, 18, 19, 20, 21, 22, -1, - 24, -1, 26, -1, -1, -1, 30, -1, 32, 33, - 34, -1, -1, -1, -1, -1, -1, -1, 42, 43, - 44, -1, -1, 47, -1, -1, -1, -1, -1, 53, - 54, -1, 56, -1, -1, -1, -1, -1, -1, -1, - -1, 65, -1, -1, -1, -1, -1, -1, 72, 73, - 74, 75, 76, -1, -1, -1, 80, -1, -1, 83, - 84, -1, -1, -1, -1, 89, -1, -1, -1, 93, + 139, 98, 98, 142, 41, 98, 24, 146, 48, 98, + 24, 98, 151, 48, 24, 24, 155, 156, 185, 158, + 159, 24, 161, 162, 24, 93, 165, 93, 49, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 98, + 293, 24, 276, 182, 28, 24, 66, 67, 53, 69, + 189, 304, 72, 48, 32, 28, 290, 28, 28, 188, + 48, 28, 116, 277, 301, 29, 86, 87, 88, 89, + -1, -1, -1, 237, 94, 95, -1, -1, 207, 218, + 219, 66, 67, 317, 69, 319, -1, 72, -1, -1, + 257, 325, -1, 260, 261, -1, -1, -1, 237, -1, + -1, -1, -1, 88, 89, -1, -1, -1, 275, 94, + 95, -1, 251, 252, 253, 254, -1, 284, 247, -1, + 259, 250, -1, -1, 291, -1, -1, -1, -1, -1, + -1, -1, 299, 300, 301, 274, -1, -1, -1, -1, + 269, -1, -1, 310, -1, -1, -1, -1, -1, 316, + -1, 318, -1, -1, 293, -1, -1, 0, 1, -1, + -1, -1, -1, -1, -1, 304, 333, 334, 11, 12, + 13, 14, -1, 16, 17, 18, 19, 20, -1, 22, + 23, 24, 25, -1, 27, -1, 29, -1, -1, 329, + 33, 331, 35, 36, 37, -1, -1, 40, -1, -1, + -1, -1, 45, 46, 47, -1, -1, 50, -1, -1, + -1, 54, 55, 56, 57, -1, 59, -1, -1, -1, + -1, -1, -1, -1, -1, 68, -1, -1, -1, -1, + -1, -1, 75, 76, 77, 78, 79, -1, -1, 82, + 83, -1, -1, 86, 87, -1, -1, -1, 91, 92, + -1, -1, -1, 96, 11, 12, 13, 14, -1, 16, + 17, 18, 19, 20, -1, 22, 23, 24, 25, -1, + 27, -1, 29, -1, -1, -1, 33, -1, 35, 36, + 37, -1, -1, 40, -1, -1, -1, -1, 45, 46, + 47, -1, -1, 50, -1, -1, -1, 54, 55, 56, + 57, -1, 59, -1, -1, -1, -1, -1, -1, -1, + -1, 68, -1, -1, -1, -1, -1, -1, 75, 76, + 77, 78, 79, -1, -1, 82, 83, -1, -1, 86, + 87, -1, -1, -1, -1, 92, -1, -1, -1, 96, 11, 12, 13, 14, -1, 16, 17, 18, 19, 20, - 21, 22, 46, 24, -1, 26, -1, -1, -1, 30, - -1, 32, 33, 57, 58, -1, -1, -1, 62, 63, - 64, 42, 66, 44, -1, 69, 70, 71, -1, -1, - -1, -1, 53, 54, -1, 56, -1, 81, 82, 83, - 84, 85, 86, -1, 65, -1, -1, 91, 92, -1, - -1, 72, 73, 74, 75, 76, -1, -1, -1, 80, - -1, -1, 83, 84, 11, 12, 13, 14, 89, 16, - -1, -1, 93, -1, 21, 22, -1, 24, -1, 63, - 64, -1, 66, -1, 31, 69, -1, -1, -1, 36, - -1, 38, 39, 40, 41, 42, -1, 44, -1, 83, - 84, 85, 86, -1, -1, -1, -1, 91, 92, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, - -1, -1, -1, -1, -1, 72, 73, 74, 75, 76, - 11, 12, 13, 14, -1, 16, 83, 84, -1, -1, - 21, 22, 89, 24, -1, -1, 93, -1, -1, -1, - 31, -1, -1, -1, -1, -1, -1, 38, -1, 40, - -1, 42, -1, 44, -1, 11, 12, 13, 14, -1, - 16, -1, -1, -1, 55, 21, 22, -1, 24, -1, - -1, -1, -1, -1, 65, -1, -1, -1, -1, -1, - -1, 72, 73, 74, 75, 76, 42, -1, 44, -1, - -1, -1, 83, 84, -1, -1, -1, -1, 89, -1, - -1, -1, 93, -1, -1, -1, -1, -1, -1, 65, - -1, -1, -1, -1, -1, -1, 72, 73, 74, 75, - 76, 11, 12, 13, 14, -1, 16, 83, 84, -1, - -1, 21, 22, 89, 24, 48, -1, 93, -1, -1, - -1, -1, -1, -1, 57, 58, -1, -1, -1, 62, - 63, 64, 42, 66, 44, -1, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - 83, 84, 85, 86, -1, 65, -1, -1, 91, 92, - -1, -1, 72, 73, 74, 75, 76, -1, -1, 40, - -1, -1, -1, 83, 84, 46, -1, -1, -1, 89, - -1, -1, -1, 93, -1, -1, 57, 58, -1, -1, - -1, 62, 63, 64, -1, 66, -1, -1, 69, 70, - 71, 40, -1, -1, -1, -1, -1, 46, -1, -1, - -1, 82, 83, 84, 85, 86, -1, -1, 57, 58, - 91, 92, -1, 62, 63, 64, -1, 66, -1, -1, - 69, 70, 71, 40, -1, -1, -1, -1, -1, 46, - -1, -1, -1, 82, 83, 84, 85, 86, -1, -1, - 57, 58, 91, 92, -1, 62, 63, 64, -1, 66, - -1, -1, 69, 70, 71, 40, -1, -1, -1, -1, - -1, 46, -1, -1, -1, 82, 83, 84, 85, 86, - -1, -1, 57, 58, 91, 92, -1, 62, 63, 64, - -1, 66, -1, -1, 69, 70, 71, 40, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 82, 83, 84, - 85, 86, -1, -1, 57, 58, 91, 92, -1, 62, - 63, 64, -1, 66, -1, -1, 69, 70, 71, 40, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - 83, 84, 85, 86, -1, -1, 57, 58, 91, 92, - -1, 62, 63, 64, -1, 66, -1, -1, 69, 70, - 71, 40, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 82, 83, 84, 85, 86, -1, -1, 57, 58, - 91, 92, -1, 62, 63, 64, -1, 66, -1, -1, - 69, 70, 71, 40, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 82, 83, 84, 85, 86, -1, -1, - 57, 58, 91, 92, -1, 62, 63, 64, -1, 66, - -1, -1, 69, 70, 71, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 82, 83, 84, 85, 86, - -1, 57, 58, -1, 91, 92, 62, 63, 64, -1, - 66, -1, -1, 69, 70, 71, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 82, 83, 84, 85, - 86, -1, -1, -1, -1, 91, 92, 57, 58, 95, - -1, -1, 62, 63, 64, -1, 66, -1, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 82, 83, 84, 85, 86, -1, -1, -1, - -1, 91, 92, 57, 58, 95, -1, -1, 62, 63, - 64, -1, 66, -1, -1, 69, 70, 71, -1, -1, - -1, -1, -1, 77, 78, -1, -1, -1, 82, 83, - 84, 85, 86, -1, 57, 58, -1, 91, 92, 62, - 63, 64, -1, 66, -1, -1, 69, 70, 71, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 81, 82, - 83, 84, 85, 86, -1, 57, 58, 90, 91, 92, - 62, 63, 64, -1, 66, -1, -1, 69, 70, 71, + -1, 22, 23, 24, 25, -1, 27, 28, 29, -1, + -1, -1, 33, -1, 35, 36, 37, -1, -1, -1, + -1, -1, -1, -1, 45, 46, 47, -1, -1, 50, + -1, -1, -1, -1, -1, 56, 57, -1, 59, -1, + -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, + -1, -1, -1, -1, 75, 76, 77, 78, 79, -1, + -1, -1, 83, -1, -1, 86, 87, -1, -1, -1, + 91, 92, -1, -1, -1, 96, 11, 12, 13, 14, + -1, 16, 17, 18, 19, 20, -1, 22, 23, 24, + 25, -1, 27, -1, 29, -1, -1, -1, 33, -1, + 35, 36, 37, -1, -1, -1, -1, -1, -1, -1, + 45, 46, 47, -1, -1, 50, -1, -1, -1, -1, + -1, 56, 57, -1, 59, -1, -1, -1, -1, -1, + -1, -1, -1, 68, -1, -1, -1, -1, -1, -1, + 75, 76, 77, 78, 79, -1, -1, -1, 83, -1, + -1, 86, 87, -1, -1, -1, 91, 92, -1, -1, + -1, 96, 11, 12, 13, 14, -1, 16, 17, 18, + 19, 20, -1, 22, 23, 24, 25, -1, 27, -1, + 29, -1, -1, -1, 33, -1, 35, 36, 37, -1, + -1, -1, -1, -1, -1, -1, 45, 46, 47, -1, + -1, 50, -1, -1, -1, -1, -1, 56, 57, -1, + 59, -1, -1, -1, -1, -1, -1, -1, -1, 68, + -1, -1, -1, -1, -1, -1, 75, 76, 77, 78, + 79, -1, -1, -1, 83, -1, -1, 86, 87, -1, + -1, -1, -1, 92, -1, -1, -1, 96, 11, 12, + 13, 14, -1, 16, 17, 18, 19, 20, -1, 22, + 23, 24, 25, 49, 27, -1, 29, -1, -1, -1, + 33, -1, 35, 36, 60, 61, -1, -1, -1, 65, + 66, 67, 45, 69, 47, -1, 72, 73, 74, -1, + -1, -1, -1, 56, 57, -1, 59, -1, 84, 85, + 86, 87, 88, 89, -1, 68, -1, -1, 94, 95, + -1, -1, 75, 76, 77, 78, 79, -1, -1, -1, + 83, -1, -1, 86, 87, 11, 12, 13, 14, 92, + -1, -1, -1, 96, -1, -1, 22, 23, 24, 25, + -1, 27, -1, -1, -1, -1, -1, -1, 34, -1, + -1, -1, -1, 39, -1, 41, 42, 43, 44, 45, + -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 68, -1, -1, -1, -1, -1, -1, 75, + 76, 77, 78, 79, -1, -1, -1, -1, -1, -1, + 86, 87, 11, 12, 13, 14, 92, -1, -1, -1, + 96, -1, -1, 22, 23, 24, 25, -1, 27, -1, + -1, -1, -1, -1, -1, 34, -1, -1, 11, 12, + 13, 14, 41, -1, 43, -1, 45, -1, 47, 22, + 23, 24, 25, -1, 27, -1, -1, -1, -1, 58, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, + -1, -1, 45, -1, 47, -1, 75, 76, 77, 78, + 79, -1, -1, -1, -1, -1, -1, 86, 87, -1, + -1, -1, -1, 92, -1, 68, -1, 96, -1, -1, + -1, -1, 75, 76, 77, 78, 79, -1, -1, -1, + -1, -1, -1, 86, 87, 11, 12, 13, 14, 92, + -1, -1, -1, 96, -1, -1, 22, 23, 24, 25, + -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 11, 12, 13, 14, -1, -1, -1, -1, 45, + -1, 47, 22, 23, 24, 25, -1, 27, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 68, -1, -1, 45, -1, 47, -1, 75, + 76, 77, 78, 79, -1, -1, -1, -1, -1, -1, + 86, 87, -1, -1, -1, -1, 92, -1, 68, -1, + 96, 38, -1, -1, -1, 75, 76, 77, 78, 79, + -1, -1, -1, -1, -1, -1, 86, 87, -1, -1, + -1, -1, 92, 60, 61, -1, 96, -1, 65, 66, + 67, -1, 69, 70, 71, 72, 73, 74, 43, -1, + -1, -1, -1, -1, 49, -1, -1, -1, 85, 86, + 87, 88, 89, -1, -1, 60, 61, 94, 95, -1, + 65, 66, 67, -1, 69, -1, -1, 72, 73, 74, + 43, -1, -1, -1, -1, -1, 49, -1, -1, -1, + 85, 86, 87, 88, 89, -1, -1, 60, 61, 94, + 95, -1, 65, 66, 67, -1, 69, -1, -1, 72, + 73, 74, 43, -1, -1, -1, -1, -1, 49, -1, + -1, -1, 85, 86, 87, 88, 89, -1, -1, 60, + 61, 94, 95, -1, 65, 66, 67, -1, 69, -1, + -1, 72, 73, 74, 43, -1, -1, -1, -1, -1, + 49, -1, -1, -1, 85, 86, 87, 88, 89, -1, + -1, 60, 61, 94, 95, -1, 65, 66, 67, -1, + 69, -1, -1, 72, 73, 74, 43, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 85, 86, 87, 88, + 89, -1, -1, 60, 61, 94, 95, -1, 65, 66, + 67, -1, 69, -1, -1, 72, 73, 74, 43, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, + 87, 88, 89, -1, -1, 60, 61, 94, 95, -1, + 65, 66, 67, -1, 69, -1, -1, 72, 73, 74, + 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 85, 86, 87, 88, 89, -1, -1, 60, 61, 94, + 95, -1, 65, 66, 67, -1, 69, -1, -1, 72, + 73, 74, 43, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 85, 86, 87, 88, 89, -1, -1, 60, + 61, 94, 95, -1, 65, 66, 67, -1, 69, -1, + -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, + -1, 51, -1, -1, 85, 86, 87, 88, 89, -1, + 60, 61, -1, 94, 95, 65, 66, 67, -1, 69, + -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 85, 86, 87, 88, 89, + -1, 60, 61, -1, 94, 95, 65, 66, 67, -1, + 69, -1, -1, 72, 73, 74, -1, -1, -1, -1, + -1, 80, 81, -1, -1, -1, 85, 86, 87, 88, + 89, -1, 60, 61, -1, 94, 95, 65, 66, 67, + -1, 69, -1, -1, 72, 73, 74, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 84, 85, 86, 87, + 88, 89, -1, 60, 61, 93, 94, 95, 65, 66, + 67, -1, 69, -1, -1, 72, 73, 74, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 85, 86, + 87, 88, 89, -1, 91, 60, 61, 94, 95, -1, + 65, 66, 67, -1, 69, -1, -1, 72, 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 82, 83, 84, 85, 86, -1, 88, 57, 58, 91, - 92, -1, 62, 63, 64, -1, 66, -1, -1, 69, - 70, 71, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 82, 83, 84, 85, 86, -1, 57, 58, - 90, 91, 92, 62, 63, 64, -1, 66, -1, -1, - 69, 70, 71, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 81, 82, 83, 84, 85, 86, -1, 57, - 58, -1, 91, 92, 62, 63, 64, -1, 66, -1, - -1, 69, 70, 71, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, 83, 84, 85, 86, -1, - -1, -1, -1, 91, 92 + 85, 86, 87, 88, 89, -1, 60, 61, 93, 94, + 95, 65, 66, 67, -1, 69, -1, -1, 72, 73, + 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 84, 85, 86, 87, 88, 89, -1, 60, 61, -1, + 94, 95, 65, 66, 67, -1, 69, -1, -1, 72, + 73, 74, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 85, 86, 87, 88, 89, -1, -1, -1, + -1, 94, 95 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1225,39 +1225,39 @@ static const yytype_int16 yycheck[] = static const yytype_uint8 yystos[] = { 0, 1, 11, 12, 13, 14, 16, 17, 18, 19, - 20, 21, 22, 24, 26, 30, 32, 33, 34, 37, - 42, 43, 44, 47, 51, 52, 53, 54, 56, 65, - 72, 73, 74, 75, 76, 79, 80, 83, 84, 89, - 93, 97, 99, 100, 101, 102, 103, 110, 111, 112, - 117, 118, 119, 122, 125, 127, 134, 88, 98, 21, - 42, 118, 118, 118, 118, 135, 137, 21, 89, 118, - 135, 136, 126, 43, 21, 120, 31, 36, 38, 39, - 40, 41, 118, 123, 124, 21, 118, 48, 49, 12, - 13, 21, 21, 21, 21, 118, 55, 123, 124, 21, - 121, 118, 118, 118, 118, 118, 118, 21, 89, 118, - 118, 118, 118, 135, 0, 98, 89, 81, 89, 109, - 118, 118, 57, 58, 62, 63, 64, 66, 69, 70, - 71, 82, 83, 84, 85, 86, 91, 92, 89, 118, - 98, 95, 135, 118, 135, 95, 135, 95, 118, 118, - 38, 124, 128, 35, 67, 68, 21, 46, 81, 118, - 46, 81, 45, 129, 48, 124, 95, 40, 46, 40, - 46, 40, 46, 40, 46, 77, 78, 130, 21, 90, - 94, 95, 99, 109, 118, 109, 118, 45, 81, 115, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 118, 118, 118, 90, 118, 21, - 118, 114, 21, 118, 118, 118, 118, 46, 81, 118, - 118, 114, 118, 21, 118, 118, 118, 118, 118, 118, - 118, 118, 118, 118, 114, 90, 95, 118, 90, 115, - 90, 98, 114, 118, 98, 21, 132, 118, 118, 132, - 40, 40, 40, 40, 131, 135, 116, 27, 46, 116, - 101, 95, 98, 98, 118, 118, 118, 118, 132, 90, - 98, 102, 115, 46, 118, 115, 115, 21, 95, 133, - 133, 98, 25, 118, 115, 25, 50, 114, 29, 50, - 106, 107, 113, 21, 116, 116, 133, 115, 116, 116, - 105, 106, 108, 113, 114, 107, 115, 109, 116, 116, - 115, 115, 108, 115, 109, 101, 50, 104, 45, 25, - 115, 25, 25, 25, 45, 115, 114, 115, 114, 25, - 114, 101, 102, 116, 115, 115 + 20, 22, 23, 24, 25, 27, 29, 33, 35, 36, + 37, 40, 45, 46, 47, 50, 54, 55, 56, 57, + 59, 68, 75, 76, 77, 78, 79, 82, 83, 86, + 87, 92, 96, 100, 102, 103, 104, 105, 106, 113, + 114, 115, 120, 121, 122, 125, 128, 130, 137, 91, + 101, 24, 45, 121, 121, 121, 121, 140, 24, 121, + 92, 121, 139, 129, 46, 24, 123, 34, 39, 41, + 42, 43, 44, 121, 126, 127, 24, 121, 51, 52, + 12, 13, 24, 24, 24, 24, 121, 58, 126, 127, + 24, 124, 121, 121, 121, 121, 121, 121, 24, 92, + 121, 121, 121, 121, 138, 0, 101, 92, 84, 92, + 112, 121, 121, 60, 61, 65, 66, 67, 69, 72, + 73, 74, 85, 86, 87, 88, 89, 94, 95, 92, + 121, 101, 98, 138, 121, 138, 98, 138, 98, 121, + 121, 41, 127, 131, 38, 70, 71, 24, 49, 84, + 121, 49, 84, 48, 132, 51, 127, 98, 43, 49, + 43, 49, 43, 49, 43, 49, 80, 81, 133, 24, + 93, 97, 98, 102, 112, 121, 112, 121, 48, 84, + 118, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 93, 121, + 24, 121, 117, 24, 121, 121, 121, 121, 49, 84, + 121, 121, 117, 121, 24, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 117, 93, 98, 121, 93, + 118, 93, 101, 117, 121, 101, 24, 135, 121, 121, + 135, 43, 43, 43, 43, 134, 138, 119, 30, 49, + 119, 104, 98, 101, 101, 121, 121, 121, 121, 135, + 93, 101, 105, 118, 49, 121, 118, 118, 24, 98, + 136, 136, 101, 28, 121, 118, 28, 53, 117, 32, + 53, 109, 110, 116, 24, 119, 119, 136, 118, 119, + 119, 108, 109, 111, 116, 117, 110, 118, 112, 119, + 119, 118, 118, 111, 118, 112, 104, 53, 107, 48, + 28, 118, 28, 28, 28, 48, 118, 117, 118, 117, + 28, 117, 104, 105, 119, 118, 118 }; #define yyerrok (yyerrstatus = 0) @@ -2072,12 +2072,12 @@ yyreduce: switch (yyn) { case 4: -#line 119 "engines/director/lingo/lingo-gr.y" +#line 120 "engines/director/lingo/lingo-gr.y" { yyerrok; ;} break; case 5: -#line 122 "engines/director/lingo/lingo-gr.y" +#line 123 "engines/director/lingo/lingo-gr.y" { g_lingo->_linenumber++; g_lingo->_colnumber = 1; @@ -2085,7 +2085,7 @@ yyreduce: break; case 10: -#line 133 "engines/director/lingo/lingo-gr.y" +#line 134 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_varpush); g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str()); @@ -2095,17 +2095,17 @@ yyreduce: break; case 11: -#line 139 "engines/director/lingo/lingo-gr.y" +#line 140 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_after); ;} break; case 12: -#line 140 "engines/director/lingo/lingo-gr.y" +#line 141 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_before); ;} break; case 13: -#line 141 "engines/director/lingo/lingo-gr.y" +#line 142 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_varpush); g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str()); @@ -2115,7 +2115,7 @@ yyreduce: break; case 14: -#line 147 "engines/director/lingo/lingo-gr.y" +#line 148 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Put dummy id g_lingo->code1(g_lingo->c_theentityassign); @@ -2127,7 +2127,7 @@ yyreduce: break; case 15: -#line 155 "engines/director/lingo/lingo-gr.y" +#line 156 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_swap); g_lingo->code1(g_lingo->c_theentityassign); @@ -2139,7 +2139,7 @@ yyreduce: break; case 16: -#line 163 "engines/director/lingo/lingo-gr.y" +#line 164 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_varpush); g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str()); @@ -2149,7 +2149,7 @@ yyreduce: break; case 17: -#line 169 "engines/director/lingo/lingo-gr.y" +#line 170 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Put dummy id g_lingo->code1(g_lingo->c_theentityassign); @@ -2161,7 +2161,7 @@ yyreduce: break; case 18: -#line 177 "engines/director/lingo/lingo-gr.y" +#line 178 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_swap); g_lingo->code1(g_lingo->c_theentityassign); @@ -2173,12 +2173,12 @@ yyreduce: break; case 19: -#line 187 "engines/director/lingo/lingo-gr.y" +#line 188 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_xpop); ;} break; case 23: -#line 197 "engines/director/lingo/lingo-gr.y" +#line 198 "engines/director/lingo/lingo-gr.y" { inst body = 0, end = 0; WRITE_UINT32(&body, (yyvsp[(5) - (7)].code)); @@ -2190,7 +2190,7 @@ yyreduce: break; case 24: -#line 210 "engines/director/lingo/lingo-gr.y" +#line 211 "engines/director/lingo/lingo-gr.y" { inst init = 0, finish = 0, body = 0, end = 0, inc = 0; WRITE_UINT32(&init, (yyvsp[(3) - (10)].code)); @@ -2208,7 +2208,7 @@ yyreduce: break; case 25: -#line 228 "engines/director/lingo/lingo-gr.y" +#line 229 "engines/director/lingo/lingo-gr.y" { inst init = 0, finish = 0, body = 0, end = 0, inc = 0; WRITE_UINT32(&init, (yyvsp[(3) - (11)].code)); @@ -2226,7 +2226,7 @@ yyreduce: break; case 26: -#line 242 "engines/director/lingo/lingo-gr.y" +#line 243 "engines/director/lingo/lingo-gr.y" { inst end = 0; WRITE_UINT32(&end, (yyvsp[(3) - (3)].code)); @@ -2236,7 +2236,7 @@ yyreduce: break; case 27: -#line 250 "engines/director/lingo/lingo-gr.y" +#line 251 "engines/director/lingo/lingo-gr.y" { inst then = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(5) - (7)].code)); @@ -2250,7 +2250,7 @@ yyreduce: break; case 28: -#line 260 "engines/director/lingo/lingo-gr.y" +#line 261 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(5) - (10)].code)); @@ -2266,7 +2266,7 @@ yyreduce: break; case 29: -#line 272 "engines/director/lingo/lingo-gr.y" +#line 273 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(5) - (10)].code)); @@ -2282,7 +2282,7 @@ yyreduce: break; case 30: -#line 284 "engines/director/lingo/lingo-gr.y" +#line 285 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(4) - (6)].code)); @@ -2296,7 +2296,7 @@ yyreduce: break; case 31: -#line 294 "engines/director/lingo/lingo-gr.y" +#line 295 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(4) - (10)].code)); @@ -2310,7 +2310,7 @@ yyreduce: break; case 32: -#line 304 "engines/director/lingo/lingo-gr.y" +#line 305 "engines/director/lingo/lingo-gr.y" { inst then = 0, else1 = 0, end = 0; WRITE_UINT32(&then, (yyvsp[(4) - (10)].code)); @@ -2324,17 +2324,17 @@ yyreduce: break; case 33: -#line 316 "engines/director/lingo/lingo-gr.y" +#line 317 "engines/director/lingo/lingo-gr.y" { (yyval.code) = 0; ;} break; case 34: -#line 317 "engines/director/lingo/lingo-gr.y" +#line 318 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[(2) - (3)].code); ;} break; case 39: -#line 328 "engines/director/lingo/lingo-gr.y" +#line 329 "engines/director/lingo/lingo-gr.y" { inst then = 0; WRITE_UINT32(&then, (yyvsp[(4) - (6)].code)); @@ -2344,7 +2344,7 @@ yyreduce: break; case 41: -#line 337 "engines/director/lingo/lingo-gr.y" +#line 338 "engines/director/lingo/lingo-gr.y" { inst then = 0; WRITE_UINT32(&then, (yyvsp[(5) - (6)].code)); @@ -2354,22 +2354,22 @@ yyreduce: break; case 42: -#line 345 "engines/director/lingo/lingo-gr.y" +#line 346 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(STOP); ;} break; case 43: -#line 346 "engines/director/lingo/lingo-gr.y" +#line 347 "engines/director/lingo/lingo-gr.y" { g_lingo->code2(g_lingo->c_eq, STOP); ;} break; case 45: -#line 350 "engines/director/lingo/lingo-gr.y" +#line 351 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;} break; case 46: -#line 353 "engines/director/lingo/lingo-gr.y" +#line 354 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP); g_lingo->code3(STOP, STOP, STOP); @@ -2378,7 +2378,7 @@ yyreduce: break; case 47: -#line 360 "engines/director/lingo/lingo-gr.y" +#line 361 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_ifcode); g_lingo->code3(STOP, STOP, STOP); @@ -2387,7 +2387,7 @@ yyreduce: break; case 48: -#line 367 "engines/director/lingo/lingo-gr.y" +#line 368 "engines/director/lingo/lingo-gr.y" { inst skipEnd; WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions @@ -2397,22 +2397,22 @@ yyreduce: break; case 49: -#line 375 "engines/director/lingo/lingo-gr.y" +#line 376 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->_currentScript->size(); ;} break; case 50: -#line 378 "engines/director/lingo/lingo-gr.y" +#line 379 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;} break; case 51: -#line 381 "engines/director/lingo/lingo-gr.y" +#line 382 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->_currentScript->size(); ;} break; case 54: -#line 386 "engines/director/lingo/lingo-gr.y" +#line 387 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_whencode); g_lingo->code1(STOP); @@ -2421,55 +2421,62 @@ yyreduce: break; case 55: -#line 392 "engines/director/lingo/lingo-gr.y" +#line 393 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->codeConst((yyvsp[(1) - (1)].i)); ;} break; case 56: -#line 393 "engines/director/lingo/lingo-gr.y" +#line 394 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_fconstpush); g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;} break; case 57: -#line 396 "engines/director/lingo/lingo-gr.y" +#line 397 "engines/director/lingo/lingo-gr.y" { // D3 (yyval.code) = g_lingo->code1(g_lingo->c_symbolpush); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;} break; case 58: -#line 399 "engines/director/lingo/lingo-gr.y" +#line 400 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_stringpush); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;} break; case 59: -#line 402 "engines/director/lingo/lingo-gr.y" +#line 403 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func); delete (yyvsp[(1) - (1)].s); ;} break; case 60: -#line 405 "engines/director/lingo/lingo-gr.y" +#line 406 "engines/director/lingo/lingo-gr.y" + { + g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func); + delete (yyvsp[(1) - (2)].s); ;} + break; + + case 61: +#line 409 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); delete (yyvsp[(1) - (4)].s); ;} break; - case 61: -#line 408 "engines/director/lingo/lingo-gr.y" + case 62: +#line 412 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_eval); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} break; - case 62: -#line 412 "engines/director/lingo/lingo-gr.y" + case 63: +#line 416 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->codeConst(0); // Put dummy id g_lingo->code1(g_lingo->c_theentitypush); @@ -2479,8 +2486,8 @@ yyreduce: g_lingo->code2(e, f); ;} break; - case 63: -#line 419 "engines/director/lingo/lingo-gr.y" + case 64: +#line 423 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->code1(g_lingo->c_theentitypush); inst e = 0, f = 0; @@ -2489,329 +2496,336 @@ yyreduce: g_lingo->code2(e, f); ;} break; - case 65: -#line 426 "engines/director/lingo/lingo-gr.y" + case 66: +#line 430 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_add); ;} break; - case 66: -#line 427 "engines/director/lingo/lingo-gr.y" + case 67: +#line 431 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_sub); ;} break; - case 67: -#line 428 "engines/director/lingo/lingo-gr.y" + case 68: +#line 432 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_mul); ;} break; - case 68: -#line 429 "engines/director/lingo/lingo-gr.y" + case 69: +#line 433 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_div); ;} break; - case 69: -#line 430 "engines/director/lingo/lingo-gr.y" + case 70: +#line 434 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_mod); ;} break; - case 70: -#line 431 "engines/director/lingo/lingo-gr.y" + case 71: +#line 435 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_gt); ;} break; - case 71: -#line 432 "engines/director/lingo/lingo-gr.y" + case 72: +#line 436 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_lt); ;} break; - case 72: -#line 433 "engines/director/lingo/lingo-gr.y" + case 73: +#line 437 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_neq); ;} break; - case 73: -#line 434 "engines/director/lingo/lingo-gr.y" + case 74: +#line 438 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_ge); ;} break; - case 74: -#line 435 "engines/director/lingo/lingo-gr.y" + case 75: +#line 439 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_le); ;} break; - case 75: -#line 436 "engines/director/lingo/lingo-gr.y" + case 76: +#line 440 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_and); ;} break; - case 76: -#line 437 "engines/director/lingo/lingo-gr.y" + case 77: +#line 441 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_or); ;} break; - case 77: -#line 438 "engines/director/lingo/lingo-gr.y" + case 78: +#line 442 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_not); ;} break; - case 78: -#line 439 "engines/director/lingo/lingo-gr.y" + case 79: +#line 443 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_ampersand); ;} break; - case 79: -#line 440 "engines/director/lingo/lingo-gr.y" + case 80: +#line 444 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_concat); ;} break; - case 80: -#line 441 "engines/director/lingo/lingo-gr.y" + case 81: +#line 445 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_contains); ;} break; - case 81: -#line 442 "engines/director/lingo/lingo-gr.y" + case 82: +#line 446 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_starts); ;} break; - case 82: -#line 443 "engines/director/lingo/lingo-gr.y" + case 83: +#line 447 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[(2) - (2)].code); ;} break; - case 83: -#line 444 "engines/director/lingo/lingo-gr.y" + case 84: +#line 448 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;} break; - case 84: -#line 445 "engines/director/lingo/lingo-gr.y" + case 85: +#line 449 "engines/director/lingo/lingo-gr.y" { (yyval.code) = (yyvsp[(2) - (3)].code); ;} break; - case 85: -#line 446 "engines/director/lingo/lingo-gr.y" + case 86: +#line 450 "engines/director/lingo/lingo-gr.y" { (yyval.code) = g_lingo->codeArray((yyvsp[(2) - (3)].narg)); ;} break; - case 86: -#line 447 "engines/director/lingo/lingo-gr.y" + case 87: +#line 451 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_intersects); ;} break; - case 87: -#line 448 "engines/director/lingo/lingo-gr.y" + case 88: +#line 452 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_within); ;} break; - case 88: -#line 449 "engines/director/lingo/lingo-gr.y" + case 89: +#line 453 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_charOf); ;} break; - case 89: -#line 450 "engines/director/lingo/lingo-gr.y" + case 90: +#line 454 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_charToOf); ;} break; - case 90: -#line 451 "engines/director/lingo/lingo-gr.y" + case 91: +#line 455 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_itemOf); ;} break; - case 91: -#line 452 "engines/director/lingo/lingo-gr.y" + case 92: +#line 456 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_itemToOf); ;} break; - case 92: -#line 453 "engines/director/lingo/lingo-gr.y" + case 93: +#line 457 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_lineOf); ;} break; - case 93: -#line 454 "engines/director/lingo/lingo-gr.y" + case 94: +#line 458 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_lineToOf); ;} break; - case 94: -#line 455 "engines/director/lingo/lingo-gr.y" + case 95: +#line 459 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_wordOf); ;} break; - case 95: -#line 456 "engines/director/lingo/lingo-gr.y" + case 96: +#line 460 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_wordToOf); ;} break; - case 96: -#line 459 "engines/director/lingo/lingo-gr.y" + case 97: +#line 463 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_printtop); ;} break; - case 99: -#line 462 "engines/director/lingo/lingo-gr.y" + case 100: +#line 466 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_exitRepeat); ;} break; - case 100: -#line 463 "engines/director/lingo/lingo-gr.y" + case 101: +#line 467 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); ;} break; - case 103: -#line 467 "engines/director/lingo/lingo-gr.y" + case 104: +#line 471 "engines/director/lingo/lingo-gr.y" + { + g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func); + delete (yyvsp[(1) - (1)].s); ;} + break; + + case 105: +#line 474 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func); delete (yyvsp[(1) - (2)].s); ;} break; - case 104: -#line 470 "engines/director/lingo/lingo-gr.y" + case 106: +#line 477 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->_builtins[*(yyvsp[(1) - (2)].s)]->u.func); delete (yyvsp[(1) - (2)].s); ;} break; - case 105: -#line 473 "engines/director/lingo/lingo-gr.y" + case 107: +#line 480 "engines/director/lingo/lingo-gr.y" { g_lingo->code2(g_lingo->c_voidpush, g_lingo->_builtins[*(yyvsp[(1) - (1)].s)]->u.func); delete (yyvsp[(1) - (1)].s); ;} break; - case 106: -#line 476 "engines/director/lingo/lingo-gr.y" + case 108: +#line 483 "engines/director/lingo/lingo-gr.y" { g_lingo->codeFunc((yyvsp[(1) - (2)].s), (yyvsp[(2) - (2)].narg)); ;} break; - case 107: -#line 477 "engines/director/lingo/lingo-gr.y" + case 109: +#line 484 "engines/director/lingo/lingo-gr.y" { g_lingo->codeMe((yyvsp[(3) - (4)].s), 0); ;} break; - case 108: -#line 478 "engines/director/lingo/lingo-gr.y" + case 110: +#line 485 "engines/director/lingo/lingo-gr.y" { g_lingo->codeMe((yyvsp[(3) - (6)].s), (yyvsp[(5) - (6)].narg)); ;} break; - case 109: -#line 479 "engines/director/lingo/lingo-gr.y" + case 111: +#line 486 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_open); ;} break; - case 110: -#line 480 "engines/director/lingo/lingo-gr.y" + case 112: +#line 487 "engines/director/lingo/lingo-gr.y" { g_lingo->code2(g_lingo->c_voidpush, g_lingo->c_open); ;} break; - case 111: -#line 481 "engines/director/lingo/lingo-gr.y" + case 113: +#line 488 "engines/director/lingo/lingo-gr.y" { Common::String s(*(yyvsp[(1) - (3)].s)); s += '-'; s += *(yyvsp[(2) - (3)].s); g_lingo->codeFunc(&s, (yyvsp[(3) - (3)].narg)); ;} break; - case 112: -#line 484 "engines/director/lingo/lingo-gr.y" + case 114: +#line 491 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} break; - case 113: -#line 485 "engines/director/lingo/lingo-gr.y" + case 115: +#line 492 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} break; - case 114: -#line 488 "engines/director/lingo/lingo-gr.y" + case 116: +#line 495 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;} break; - case 115: -#line 489 "engines/director/lingo/lingo-gr.y" + case 117: +#line 496 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_instance); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;} break; - case 116: -#line 500 "engines/director/lingo/lingo-gr.y" + case 118: +#line 507 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_gotoloop); ;} break; - case 117: -#line 501 "engines/director/lingo/lingo-gr.y" + case 119: +#line 508 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_gotonext); ;} break; - case 118: -#line 502 "engines/director/lingo/lingo-gr.y" + case 120: +#line 509 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_gotoprevious); ;} break; - case 119: -#line 503 "engines/director/lingo/lingo-gr.y" + case 121: +#line 510 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(1); g_lingo->code1(g_lingo->c_goto); ;} break; - case 120: -#line 506 "engines/director/lingo/lingo-gr.y" + case 122: +#line 513 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(3); g_lingo->code1(g_lingo->c_goto); ;} break; - case 121: -#line 509 "engines/director/lingo/lingo-gr.y" + case 123: +#line 516 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(2); g_lingo->code1(g_lingo->c_goto); ;} break; - case 126: -#line 522 "engines/director/lingo/lingo-gr.y" + case 128: +#line 529 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_playdone); ;} break; - case 127: -#line 523 "engines/director/lingo/lingo-gr.y" + case 129: +#line 530 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(1); g_lingo->code1(g_lingo->c_play); ;} break; - case 128: -#line 526 "engines/director/lingo/lingo-gr.y" + case 130: +#line 533 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(3); g_lingo->code1(g_lingo->c_play); ;} break; - case 129: -#line 529 "engines/director/lingo/lingo-gr.y" + case 131: +#line 536 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(2); g_lingo->code1(g_lingo->c_play); ;} break; - case 130: -#line 532 "engines/director/lingo/lingo-gr.y" + case 132: +#line 539 "engines/director/lingo/lingo-gr.y" { g_lingo->codeSetImmediate(true); ;} break; - case 131: -#line 532 "engines/director/lingo/lingo-gr.y" + case 133: +#line 539 "engines/director/lingo/lingo-gr.y" { g_lingo->codeSetImmediate(false); g_lingo->codeFunc((yyvsp[(1) - (3)].s), (yyvsp[(3) - (3)].narg)); ;} break; - case 132: -#line 562 "engines/director/lingo/lingo-gr.y" + case 134: +#line 569 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;} break; - case 133: -#line 563 "engines/director/lingo/lingo-gr.y" + case 135: +#line 570 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); @@ -2819,38 +2833,38 @@ yyreduce: g_lingo->_indef = false; ;} break; - case 134: -#line 568 "engines/director/lingo/lingo-gr.y" + case 136: +#line 575 "engines/director/lingo/lingo-gr.y" { g_lingo->codeFactory(*(yyvsp[(2) - (2)].s)); ;} break; - case 135: -#line 571 "engines/director/lingo/lingo-gr.y" + case 137: +#line 578 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; ;} break; - case 136: -#line 572 "engines/director/lingo/lingo-gr.y" + case 138: +#line 579 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_procret); g_lingo->define(*(yyvsp[(2) - (8)].s), (yyvsp[(4) - (8)].code), (yyvsp[(5) - (8)].narg) + 1, &g_lingo->_currentFactory); g_lingo->_indef = false; ;} break; - case 137: -#line 576 "engines/director/lingo/lingo-gr.y" + case 139: +#line 583 "engines/director/lingo/lingo-gr.y" { g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;} break; - case 138: -#line 577 "engines/director/lingo/lingo-gr.y" + case 140: +#line 584 "engines/director/lingo/lingo-gr.y" { g_lingo->_ignoreMe = true; ;} break; - case 139: -#line 577 "engines/director/lingo/lingo-gr.y" + case 141: +#line 584 "engines/director/lingo/lingo-gr.y" { g_lingo->codeConst(0); // Push fake value on stack g_lingo->code1(g_lingo->c_procret); @@ -2862,33 +2876,33 @@ yyreduce: ;} break; - case 140: -#line 587 "engines/director/lingo/lingo-gr.y" + case 142: +#line 594 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 0; ;} break; - case 141: -#line 588 "engines/director/lingo/lingo-gr.y" + case 143: +#line 595 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;} break; - case 142: -#line 589 "engines/director/lingo/lingo-gr.y" + case 144: +#line 596 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} break; - case 143: -#line 590 "engines/director/lingo/lingo-gr.y" + case 145: +#line 597 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;} break; - case 144: -#line 593 "engines/director/lingo/lingo-gr.y" + case 146: +#line 600 "engines/director/lingo/lingo-gr.y" { g_lingo->codeArgStore(); ;} break; - case 145: -#line 597 "engines/director/lingo/lingo-gr.y" + case 147: +#line 604 "engines/director/lingo/lingo-gr.y" { g_lingo->code1(g_lingo->c_call); g_lingo->codeString((yyvsp[(1) - (2)].s)->c_str()); @@ -2897,44 +2911,44 @@ yyreduce: g_lingo->code1(numpar); ;} break; - case 146: -#line 605 "engines/director/lingo/lingo-gr.y" + case 148: +#line 612 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 0; ;} break; - case 147: -#line 606 "engines/director/lingo/lingo-gr.y" + case 149: +#line 613 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; ;} break; - case 148: -#line 607 "engines/director/lingo/lingo-gr.y" + case 150: +#line 614 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} break; - case 149: -#line 610 "engines/director/lingo/lingo-gr.y" + case 151: +#line 617 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; ;} break; - case 150: -#line 611 "engines/director/lingo/lingo-gr.y" + case 152: +#line 618 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;} break; - case 151: -#line 614 "engines/director/lingo/lingo-gr.y" + case 153: +#line 621 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = 1; ;} break; - case 152: -#line 615 "engines/director/lingo/lingo-gr.y" + case 154: +#line 622 "engines/director/lingo/lingo-gr.y" { (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;} break; /* Line 1267 of yacc.c. */ -#line 2938 "engines/director/lingo/lingo-gr.cpp" +#line 2952 "engines/director/lingo/lingo-gr.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -3148,6 +3162,6 @@ yyreturn: } -#line 618 "engines/director/lingo/lingo-gr.y" +#line 625 "engines/director/lingo/lingo-gr.y" diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h index 5f9a89477e..639ada7d9e 100644 --- a/engines/director/lingo/lingo-gr.h +++ b/engines/director/lingo/lingo-gr.h @@ -57,66 +57,69 @@ BLTINONEARG = 273, BLTINARGLIST = 274, TWOWORDBUILTIN = 275, - ID = 276, - STRING = 277, - HANDLER = 278, - SYMBOL = 279, - ENDCLAUSE = 280, - tPLAYACCEL = 281, - tDOWN = 282, - tELSE = 283, - tNLELSIF = 284, - tEXIT = 285, - tFRAME = 286, - tGLOBAL = 287, - tGO = 288, - tIF = 289, - tINTO = 290, - tLOOP = 291, - tMACRO = 292, - tMOVIE = 293, - tNEXT = 294, - tOF = 295, - tPREVIOUS = 296, - tPUT = 297, - tREPEAT = 298, - tSET = 299, - tTHEN = 300, - tTO = 301, - tWHEN = 302, - tWITH = 303, - tWHILE = 304, - tNLELSE = 305, - tFACTORY = 306, - tMETHOD = 307, - tOPEN = 308, - tPLAY = 309, - tDONE = 310, - tINSTANCE = 311, - tGE = 312, - tLE = 313, - tGT = 314, - tLT = 315, - tEQ = 316, - tNEQ = 317, - tAND = 318, - tOR = 319, - tNOT = 320, - tMOD = 321, - tAFTER = 322, - tBEFORE = 323, - tCONCAT = 324, - tCONTAINS = 325, - tSTARTS = 326, - tCHAR = 327, - tITEM = 328, - tLINE = 329, - tWORD = 330, - tSPRITE = 331, - tINTERSECTS = 332, - tWITHIN = 333, - tON = 334, - tME = 335 + FBLTIN = 276, + FBLTINNOARGS = 277, + FBLTINONEARG = 278, + ID = 279, + STRING = 280, + HANDLER = 281, + SYMBOL = 282, + ENDCLAUSE = 283, + tPLAYACCEL = 284, + tDOWN = 285, + tELSE = 286, + tNLELSIF = 287, + tEXIT = 288, + tFRAME = 289, + tGLOBAL = 290, + tGO = 291, + tIF = 292, + tINTO = 293, + tLOOP = 294, + tMACRO = 295, + tMOVIE = 296, + tNEXT = 297, + tOF = 298, + tPREVIOUS = 299, + tPUT = 300, + tREPEAT = 301, + tSET = 302, + tTHEN = 303, + tTO = 304, + tWHEN = 305, + tWITH = 306, + tWHILE = 307, + tNLELSE = 308, + tFACTORY = 309, + tMETHOD = 310, + tOPEN = 311, + tPLAY = 312, + tDONE = 313, + tINSTANCE = 314, + tGE = 315, + tLE = 316, + tGT = 317, + tLT = 318, + tEQ = 319, + tNEQ = 320, + tAND = 321, + tOR = 322, + tNOT = 323, + tMOD = 324, + tAFTER = 325, + tBEFORE = 326, + tCONCAT = 327, + tCONTAINS = 328, + tSTARTS = 329, + tCHAR = 330, + tITEM = 331, + tLINE = 332, + tWORD = 333, + tSPRITE = 334, + tINTERSECTS = 335, + tWITHIN = 336, + tON = 337, + tME = 338 }; #endif /* Tokens. */ @@ -138,66 +141,69 @@ #define BLTINONEARG 273 #define BLTINARGLIST 274 #define TWOWORDBUILTIN 275 -#define ID 276 -#define STRING 277 -#define HANDLER 278 -#define SYMBOL 279 -#define ENDCLAUSE 280 -#define tPLAYACCEL 281 -#define tDOWN 282 -#define tELSE 283 -#define tNLELSIF 284 -#define tEXIT 285 -#define tFRAME 286 -#define tGLOBAL 287 -#define tGO 288 -#define tIF 289 -#define tINTO 290 -#define tLOOP 291 -#define tMACRO 292 -#define tMOVIE 293 -#define tNEXT 294 -#define tOF 295 -#define tPREVIOUS 296 -#define tPUT 297 -#define tREPEAT 298 -#define tSET 299 -#define tTHEN 300 -#define tTO 301 -#define tWHEN 302 -#define tWITH 303 -#define tWHILE 304 -#define tNLELSE 305 -#define tFACTORY 306 -#define tMETHOD 307 -#define tOPEN 308 -#define tPLAY 309 -#define tDONE 310 -#define tINSTANCE 311 -#define tGE 312 -#define tLE 313 -#define tGT 314 -#define tLT 315 -#define tEQ 316 -#define tNEQ 317 -#define tAND 318 -#define tOR 319 -#define tNOT 320 -#define tMOD 321 -#define tAFTER 322 -#define tBEFORE 323 -#define tCONCAT 324 -#define tCONTAINS 325 -#define tSTARTS 326 -#define tCHAR 327 -#define tITEM 328 -#define tLINE 329 -#define tWORD 330 -#define tSPRITE 331 -#define tINTERSECTS 332 -#define tWITHIN 333 -#define tON 334 -#define tME 335 +#define FBLTIN 276 +#define FBLTINNOARGS 277 +#define FBLTINONEARG 278 +#define ID 279 +#define STRING 280 +#define HANDLER 281 +#define SYMBOL 282 +#define ENDCLAUSE 283 +#define tPLAYACCEL 284 +#define tDOWN 285 +#define tELSE 286 +#define tNLELSIF 287 +#define tEXIT 288 +#define tFRAME 289 +#define tGLOBAL 290 +#define tGO 291 +#define tIF 292 +#define tINTO 293 +#define tLOOP 294 +#define tMACRO 295 +#define tMOVIE 296 +#define tNEXT 297 +#define tOF 298 +#define tPREVIOUS 299 +#define tPUT 300 +#define tREPEAT 301 +#define tSET 302 +#define tTHEN 303 +#define tTO 304 +#define tWHEN 305 +#define tWITH 306 +#define tWHILE 307 +#define tNLELSE 308 +#define tFACTORY 309 +#define tMETHOD 310 +#define tOPEN 311 +#define tPLAY 312 +#define tDONE 313 +#define tINSTANCE 314 +#define tGE 315 +#define tLE 316 +#define tGT 317 +#define tLT 318 +#define tEQ 319 +#define tNEQ 320 +#define tAND 321 +#define tOR 322 +#define tNOT 323 +#define tMOD 324 +#define tAFTER 325 +#define tBEFORE 326 +#define tCONCAT 327 +#define tCONTAINS 328 +#define tSTARTS 329 +#define tCHAR 330 +#define tITEM 331 +#define tLINE 332 +#define tWORD 333 +#define tSPRITE 334 +#define tINTERSECTS 335 +#define tWITHIN 336 +#define tON 337 +#define tME 338 @@ -215,7 +221,7 @@ typedef union YYSTYPE Common::Array<double> *arr; } /* Line 1529 of yacc.c. */ -#line 219 "engines/director/lingo/lingo-gr.hpp" +#line 225 "engines/director/lingo/lingo-gr.hpp" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index 4033d76cb8..7e0f04681a 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -92,6 +92,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) { %token<e> THEENTITY THEENTITYWITHID %token<f> FLOAT %token<s> BLTIN BLTINNOARGS BLTINNOARGSORONE BLTINONEARG BLTINARGLIST TWOWORDBUILTIN +%token<s> FBLTIN FBLTINNOARGS FBLTINONEARG %token<s> ID STRING HANDLER SYMBOL %token<s> ENDCLAUSE tPLAYACCEL %token tDOWN tELSE tNLELSIF tEXIT tFRAME tGLOBAL tGO tIF tINTO tLOOP tMACRO @@ -185,7 +186,7 @@ asgn: tPUT expr tINTO ID { ; stmtoneliner: expr { g_lingo->code1(g_lingo->c_xpop); } - | func + | proc ; stmt: stmtoneliner @@ -399,9 +400,12 @@ expr: INT { $$ = g_lingo->codeConst($1); } | STRING { $$ = g_lingo->code1(g_lingo->c_stringpush); g_lingo->codeString($1->c_str()); } - | BLTINNOARGS { + | FBLTINNOARGS { $$ = g_lingo->code1(g_lingo->_builtins[*$1]->u.func); delete $1; } + | FBLTINONEARG expr { + g_lingo->code1(g_lingo->_builtins[*$1]->u.func); + delete $1; } | ID '(' arglist ')' { $$ = g_lingo->codeFunc($1, $3); delete $1; } @@ -456,7 +460,7 @@ expr: INT { $$ = g_lingo->codeConst($1); } | tWORD expr tTO expr tOF expr { g_lingo->code1(g_lingo->c_wordToOf); } ; -func: tPUT expr { g_lingo->code1(g_lingo->c_printtop); } +proc: tPUT expr { g_lingo->code1(g_lingo->c_printtop); } | gotofunc | playfunc | tEXIT tREPEAT { g_lingo->code1(g_lingo->c_exitRepeat); } @@ -464,6 +468,9 @@ func: tPUT expr { g_lingo->code1(g_lingo->c_printtop); } g_lingo->code1(g_lingo->c_procret); } | tGLOBAL globallist | tINSTANCE instancelist + | BLTINNOARGS { + g_lingo->code1(g_lingo->_builtins[*$1]->u.func); + delete $1; } | BLTINONEARG expr { g_lingo->code1(g_lingo->_builtins[*$1]->u.func); delete $1; } @@ -607,12 +614,12 @@ arglist: /* nothing */ { $$ = 0; } | arglist ',' expr { $$ = $1 + 1; } ; -nonemptyarglist: expr { $$ = 1; } - | arglist ',' expr { $$ = $1 + 1; } +nonemptyarglist: expr { $$ = 1; } + | nonemptyarglist ',' expr { $$ = $1 + 1; } ; -nonemptyarglistnl: expr nl { $$ = 1; } - | arglist ',' expr nl { $$ = $1 + 1; } +nonemptyarglistnl: expr nl { $$ = 1; } + | nonemptyarglistnl ',' expr nl { $$ = $1 + 1; } ; %% diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp index fb6c4a21e5..e26eed1a81 100644 --- a/engines/director/lingo/lingo-lex.cpp +++ b/engines/director/lingo/lingo-lex.cpp @@ -1461,21 +1461,22 @@ YY_RULE_SETUP } if (g_lingo->_builtins.contains(yytext)) { - if (g_lingo->_builtins[yytext]->type == BLTIN && g_lingo->_builtins[yytext]->parens == false) { + int type = g_lingo->_builtins[yytext]->type; + if ((type == BLTIN || type == FBLTIN) && g_lingo->_builtins[yytext]->parens == false) { if (g_lingo->_builtins[yytext]->nargs == 0) { if (g_lingo->_builtins[yytext]->maxArgs == 0) - return BLTINNOARGS; + return type == BLTIN ? BLTINNOARGS : FBLTINNOARGS; else if (g_lingo->_builtins[yytext]->maxArgs == 1) - return BLTINNOARGSORONE; + return type == BLTINNOARGSORONE; else - error("Incorrect setup for builtin: %s", yytext); + return type == BLTINARGLIST; } else if (g_lingo->_builtins[yytext]->nargs == 1 && g_lingo->_builtins[yytext]->maxArgs == 1) { - return BLTINONEARG; + return type == BLTIN ? BLTINONEARG : FBLTINONEARG; } else if (g_lingo->_builtins[yytext]->nargs == -1) { - return BLTINARGLIST; + return type == BLTINARGLIST; } else { - error("Incorrect setup for builtin: %s", yytext); + return type == BLTINARGLIST; } } } @@ -1485,41 +1486,41 @@ YY_RULE_SETUP YY_BREAK case 63: YY_RULE_SETUP -#line 291 "engines/director/lingo/lingo-lex.l" +#line 292 "engines/director/lingo/lingo-lex.l" { count(); yylval.f = atof(yytext); return FLOAT; } YY_BREAK case 64: YY_RULE_SETUP -#line 292 "engines/director/lingo/lingo-lex.l" +#line 293 "engines/director/lingo/lingo-lex.l" { count(); yylval.i = strtol(yytext, NULL, 10); return INT; } YY_BREAK case 65: YY_RULE_SETUP -#line 293 "engines/director/lingo/lingo-lex.l" +#line 294 "engines/director/lingo/lingo-lex.l" { count(); return *yytext; } YY_BREAK case 66: /* rule 66 can match eol */ YY_RULE_SETUP -#line 294 "engines/director/lingo/lingo-lex.l" +#line 295 "engines/director/lingo/lingo-lex.l" { return '\n'; } YY_BREAK case 67: YY_RULE_SETUP -#line 295 "engines/director/lingo/lingo-lex.l" +#line 296 "engines/director/lingo/lingo-lex.l" { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; } YY_BREAK case 68: YY_RULE_SETUP -#line 296 "engines/director/lingo/lingo-lex.l" +#line 297 "engines/director/lingo/lingo-lex.l" YY_BREAK case 69: YY_RULE_SETUP -#line 298 "engines/director/lingo/lingo-lex.l" +#line 299 "engines/director/lingo/lingo-lex.l" ECHO; YY_BREAK -#line 1523 "engines/director/lingo/lingo-lex.cpp" +#line 1524 "engines/director/lingo/lingo-lex.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2482,7 +2483,7 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 298 "engines/director/lingo/lingo-lex.l" +#line 299 "engines/director/lingo/lingo-lex.l" diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l index 00750c4523..ec9d6319bd 100644 --- a/engines/director/lingo/lingo-lex.l +++ b/engines/director/lingo/lingo-lex.l @@ -267,21 +267,22 @@ whitespace [\t ] } if (g_lingo->_builtins.contains(yytext)) { - if (g_lingo->_builtins[yytext]->type == BLTIN && g_lingo->_builtins[yytext]->parens == false) { + int type = g_lingo->_builtins[yytext]->type; + if ((type == BLTIN || type == FBLTIN) && g_lingo->_builtins[yytext]->parens == false) { if (g_lingo->_builtins[yytext]->nargs == 0) { if (g_lingo->_builtins[yytext]->maxArgs == 0) - return BLTINNOARGS; + return type == BLTIN ? BLTINNOARGS : FBLTINNOARGS; else if (g_lingo->_builtins[yytext]->maxArgs == 1) - return BLTINNOARGSORONE; + return type == BLTINNOARGSORONE; else - error("Incorrect setup for builtin: %s", yytext); + return type == BLTINARGLIST; } else if (g_lingo->_builtins[yytext]->nargs == 1 && g_lingo->_builtins[yytext]->maxArgs == 1) { - return BLTINONEARG; + return type == BLTIN ? BLTINONEARG : FBLTINONEARG; } else if (g_lingo->_builtins[yytext]->nargs == -1) { - return BLTINARGLIST; + return type == BLTINARGLIST; } else { - error("Incorrect setup for builtin: %s", yytext); + return type == BLTINARGLIST; } } } |