From b0f8a5f9bdc8f6d06d312ec039b80ebca57dd291 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Sat, 15 Nov 2025 17:34:33 +0000 Subject: [PATCH 1/4] tscript change Adds the ability to declare defaults for function arguments eg function testFunc(%x = 1, %y = 1) { return %x + %y; } can now be called as testFunc(10) and it will return the value of 11. --- Engine/source/console/consoleInternal.cpp | 5 + Engine/source/console/consoleInternal.h | 4 + Engine/source/console/torquescript/CMDgram.y | 28 +- Engine/source/console/torquescript/ast.h | 5 + .../source/console/torquescript/astAlloc.cpp | 13 + .../source/console/torquescript/astNodes.cpp | 24 + .../source/console/torquescript/cmdgram.cpp | 2452 +++++++++-------- .../console/torquescript/compiledEval.cpp | 50 +- 8 files changed, 1375 insertions(+), 1206 deletions(-) diff --git a/Engine/source/console/consoleInternal.cpp b/Engine/source/console/consoleInternal.cpp index 454af91ec..e8e99cbc2 100644 --- a/Engine/source/console/consoleInternal.cpp +++ b/Engine/source/console/consoleInternal.cpp @@ -671,10 +671,15 @@ Namespace::Entry::Entry() mNext = NULL; mPackage = StringTable->EmptyString(); mToolOnly = false; + VECTOR_SET_ASSOCIATION(mArgFlags); + VECTOR_SET_ASSOCIATION(mDefaultValues); } void Namespace::Entry::clear() { + mArgFlags.clear(); + mDefaultValues.clear(); + if (mModule) { mModule->decRefCount(); diff --git a/Engine/source/console/consoleInternal.h b/Engine/source/console/consoleInternal.h index beffb2e2c..041c4cffa 100644 --- a/Engine/source/console/consoleInternal.h +++ b/Engine/source/console/consoleInternal.h @@ -130,6 +130,10 @@ public: /// The offset in the compiled script code at which this function begins. U32 mFunctionOffset; + // Offsets to get default values for arguments. + Vector mArgFlags; + Vector mDefaultValues; + /// If it's a script function, this is the line of the declaration in code. /// @note 0 for functions read from legacy DSOs that have no line number information. U32 mFunctionLineNumber; diff --git a/Engine/source/console/torquescript/CMDgram.y b/Engine/source/console/torquescript/CMDgram.y index 9e1b30543..c081cb82c 100644 --- a/Engine/source/console/torquescript/CMDgram.y +++ b/Engine/source/console/torquescript/CMDgram.y @@ -138,6 +138,7 @@ struct Token %type slot_acc %type intslot_acc %type expression_stmt +%type param %type var_list %type var_list_decl %type assign_op_struct @@ -242,12 +243,31 @@ var_list_decl ; var_list - : VAR - { $$ = VarNode::alloc( $1.lineNumber, $1.value, NULL ); } - | var_list ',' VAR - { $$ = $1; ((StmtNode*)($1))->append((StmtNode*)VarNode::alloc( $3.lineNumber, $3.value, NULL ) ); } + : param + { $$ = $1; } + | var_list ',' param + { $$ = $1; ((StmtNode*)($1))->append((StmtNode*)$3 ); } ; +param + : VAR + { + $$ = VarNode::allocParam($1.lineNumber, $1.value, NULL); + } + | VAR '?' + { + $$ = VarNode::allocParam($1.lineNumber, $1.value, NULL); + } + | VAR '=' expr + { + $$ = VarNode::allocParam($1.lineNumber, $1.value, $3); + } + | VAR '?' '=' expr + { + $$ = VarNode::allocParam($1.lineNumber, $1.value, $4); + } + ; + datablock_decl : rwDATABLOCK class_name_expr '(' expr parent_block ')' '{' slot_assign_list_opt '}' ';' { $$ = ObjectDeclNode::alloc( $1.lineNumber, $2, $4, NULL, $5.value, $8, NULL, true, false, false); } diff --git a/Engine/source/console/torquescript/ast.h b/Engine/source/console/torquescript/ast.h index 1c41958a3..69b30da01 100644 --- a/Engine/source/console/torquescript/ast.h +++ b/Engine/source/console/torquescript/ast.h @@ -311,8 +311,13 @@ struct VarNode : ExprNode StringTableEntry varName; ExprNode* arrayIndex; + ExprNode* defaultValue; // optional expression + static VarNode* alloc(S32 lineNumber, StringTableEntry varName, ExprNode* arrayIndex); + // function params initialization. + static VarNode* allocParam(S32 lineNumber, StringTableEntry varName, ExprNode* defaultValue); + U32 compile(CodeStream& codeStream, U32 ip, TypeReq type) override; TypeReq getPreferredType() override; ExprNodeName getExprNodeNameEnum() const override { return NameVarNode; } diff --git a/Engine/source/console/torquescript/astAlloc.cpp b/Engine/source/console/torquescript/astAlloc.cpp index 9b149b598..637a988ef 100644 --- a/Engine/source/console/torquescript/astAlloc.cpp +++ b/Engine/source/console/torquescript/astAlloc.cpp @@ -206,6 +206,19 @@ VarNode* VarNode::alloc(S32 lineNumber, StringTableEntry varName, ExprNode* arra ret->optimizedNode = NULL; ret->varName = varName; ret->arrayIndex = arrayIndex; + ret->defaultValue = NULL; + return ret; +} + +VarNode* VarNode::allocParam(S32 lineNumber, StringTableEntry varName, ExprNode* defaultValue) +{ + VarNode* ret = (VarNode*)consoleAlloc(sizeof(VarNode)); + constructInPlace(ret); + ret->dbgLineNumber = lineNumber; + ret->optimizedNode = NULL; + ret->varName = varName; + ret->arrayIndex = NULL; + ret->defaultValue = defaultValue; return ret; } diff --git a/Engine/source/console/torquescript/astNodes.cpp b/Engine/source/console/torquescript/astNodes.cpp index df824c260..bea3dca4f 100644 --- a/Engine/source/console/torquescript/astNodes.cpp +++ b/Engine/source/console/torquescript/astNodes.cpp @@ -1529,6 +1529,19 @@ U32 FunctionDeclStmtNode::compileStmt(CodeStream& codeStream, U32 ip) CodeBlock::smInFunction = false; + // check for argument setup + for (VarNode* walk = args; walk; walk = (VarNode*)((StmtNode*)walk)->getNext()) + { + if (walk->defaultValue) + { + TypeReq walkType = walk->defaultValue->getPreferredType(); + if (walkType == TypeReqNone) + walkType = TypeReqString; + + ip = walk->defaultValue->compile(codeStream, ip, walkType); + } + } + codeStream.emit(OP_FUNC_DECL); codeStream.emitSTE(fnName); codeStream.emitSTE(nameSpace); @@ -1538,11 +1551,22 @@ U32 FunctionDeclStmtNode::compileStmt(CodeStream& codeStream, U32 ip) const U32 endIp = codeStream.emit(0); codeStream.emit(argc); const U32 localNumVarsIP = codeStream.emit(0); + for (VarNode* walk = args; walk; walk = (VarNode*)((StmtNode*)walk)->getNext()) { StringTableEntry name = walk->varName; codeStream.emit(getFuncVars(dbgLineNumber)->lookup(name, dbgLineNumber)); } + + // check for argument setup + for (VarNode* walk = args; walk; walk = (VarNode*)((StmtNode*)walk)->getNext()) + { + U32 flags = 0; + if (walk->defaultValue) flags |= 0x1; + + codeStream.emit(flags); + } + CodeBlock::smInFunction = true; ip = compileBlock(stmts, codeStream, ip); diff --git a/Engine/source/console/torquescript/cmdgram.cpp b/Engine/source/console/torquescript/cmdgram.cpp index ab15ffc73..798ff0169 100644 --- a/Engine/source/console/torquescript/cmdgram.cpp +++ b/Engine/source/console/torquescript/cmdgram.cpp @@ -269,36 +269,37 @@ enum yysymbol_kind_t YYSYMBOL_fn_decl_stmt = 108, /* fn_decl_stmt */ YYSYMBOL_var_list_decl = 109, /* var_list_decl */ YYSYMBOL_var_list = 110, /* var_list */ - YYSYMBOL_datablock_decl = 111, /* datablock_decl */ - YYSYMBOL_object_decl = 112, /* object_decl */ - YYSYMBOL_parent_block = 113, /* parent_block */ - YYSYMBOL_object_name = 114, /* object_name */ - YYSYMBOL_object_args = 115, /* object_args */ - YYSYMBOL_object_declare_block = 116, /* object_declare_block */ - YYSYMBOL_object_decl_list = 117, /* object_decl_list */ - YYSYMBOL_stmt_block = 118, /* stmt_block */ - YYSYMBOL_switch_stmt = 119, /* switch_stmt */ - YYSYMBOL_case_block = 120, /* case_block */ - YYSYMBOL_case_expr = 121, /* case_expr */ - YYSYMBOL_if_stmt = 122, /* if_stmt */ - YYSYMBOL_while_stmt = 123, /* while_stmt */ - YYSYMBOL_for_stmt = 124, /* for_stmt */ - YYSYMBOL_foreach_stmt = 125, /* foreach_stmt */ - YYSYMBOL_expression_stmt = 126, /* expression_stmt */ - YYSYMBOL_expr = 127, /* expr */ - YYSYMBOL_slot_acc = 128, /* slot_acc */ - YYSYMBOL_intslot_acc = 129, /* intslot_acc */ - YYSYMBOL_class_name_expr = 130, /* class_name_expr */ - YYSYMBOL_assign_op_struct = 131, /* assign_op_struct */ - YYSYMBOL_stmt_expr = 132, /* stmt_expr */ - YYSYMBOL_funcall_expr = 133, /* funcall_expr */ - YYSYMBOL_assert_expr = 134, /* assert_expr */ - YYSYMBOL_expr_list_decl = 135, /* expr_list_decl */ - YYSYMBOL_expr_list = 136, /* expr_list */ - YYSYMBOL_slot_assign_list_opt = 137, /* slot_assign_list_opt */ - YYSYMBOL_slot_assign_list = 138, /* slot_assign_list */ - YYSYMBOL_slot_assign = 139, /* slot_assign */ - YYSYMBOL_aidx_expr = 140 /* aidx_expr */ + YYSYMBOL_param = 111, /* param */ + YYSYMBOL_datablock_decl = 112, /* datablock_decl */ + YYSYMBOL_object_decl = 113, /* object_decl */ + YYSYMBOL_parent_block = 114, /* parent_block */ + YYSYMBOL_object_name = 115, /* object_name */ + YYSYMBOL_object_args = 116, /* object_args */ + YYSYMBOL_object_declare_block = 117, /* object_declare_block */ + YYSYMBOL_object_decl_list = 118, /* object_decl_list */ + YYSYMBOL_stmt_block = 119, /* stmt_block */ + YYSYMBOL_switch_stmt = 120, /* switch_stmt */ + YYSYMBOL_case_block = 121, /* case_block */ + YYSYMBOL_case_expr = 122, /* case_expr */ + YYSYMBOL_if_stmt = 123, /* if_stmt */ + YYSYMBOL_while_stmt = 124, /* while_stmt */ + YYSYMBOL_for_stmt = 125, /* for_stmt */ + YYSYMBOL_foreach_stmt = 126, /* foreach_stmt */ + YYSYMBOL_expression_stmt = 127, /* expression_stmt */ + YYSYMBOL_expr = 128, /* expr */ + YYSYMBOL_slot_acc = 129, /* slot_acc */ + YYSYMBOL_intslot_acc = 130, /* intslot_acc */ + YYSYMBOL_class_name_expr = 131, /* class_name_expr */ + YYSYMBOL_assign_op_struct = 132, /* assign_op_struct */ + YYSYMBOL_stmt_expr = 133, /* stmt_expr */ + YYSYMBOL_funcall_expr = 134, /* funcall_expr */ + YYSYMBOL_assert_expr = 135, /* assert_expr */ + YYSYMBOL_expr_list_decl = 136, /* expr_list_decl */ + YYSYMBOL_expr_list = 137, /* expr_list */ + YYSYMBOL_slot_assign_list_opt = 138, /* slot_assign_list_opt */ + YYSYMBOL_slot_assign_list = 139, /* slot_assign_list */ + YYSYMBOL_slot_assign = 140, /* slot_assign */ + YYSYMBOL_aidx_expr = 141 /* aidx_expr */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -629,16 +630,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2858 +#define YYLAST 2932 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 100 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 41 +#define YYNNTS 42 /* YYNRULES -- Number of rules. */ -#define YYNRULES 162 +#define YYNRULES 166 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 380 +#define YYNSTATES 386 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 329 @@ -694,23 +695,23 @@ static const yytype_int8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 166, 166, 172, 173, 178, 180, 182, 187, 192, - 194, 200, 201, 206, 207, 208, 209, 210, 211, 212, - 214, 216, 218, 220, 222, 224, 226, 231, 233, 239, - 240, 245, 247, 252, 257, 259, 261, 263, 265, 267, - 273, 274, 280, 281, 287, 288, 294, 295, 297, 299, - 304, 306, 311, 313, 318, 320, 325, 327, 329, 334, - 336, 341, 343, 348, 350, 355, 357, 359, 361, 363, - 365, 367, 369, 374, 376, 381, 386, 388, 390, 392, - 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, - 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, - 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, - 454, 456, 458, 460, 462, 484, 486, 491, 493, 498, - 500, 505, 507, 509, 511, 513, 515, 517, 519, 521, - 523, 525, 527, 532, 534, 536, 538, 540, 542, 544, - 546, 548, 550, 555, 557, 559, 569, 571, 577, 578, - 583, 585, 591, 592, 597, 599, 604, 606, 608, 610, - 612, 617, 619 + 0, 167, 167, 173, 174, 179, 181, 183, 188, 193, + 195, 201, 202, 207, 208, 209, 210, 211, 212, 213, + 215, 217, 219, 221, 223, 225, 227, 232, 234, 240, + 241, 246, 248, 253, 257, 261, 265, 272, 277, 279, + 281, 283, 285, 287, 293, 294, 300, 301, 307, 308, + 314, 315, 317, 319, 324, 326, 331, 333, 338, 340, + 345, 347, 349, 354, 356, 361, 363, 368, 370, 375, + 377, 379, 381, 383, 385, 387, 389, 394, 396, 401, + 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, + 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, + 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, + 466, 468, 470, 472, 474, 476, 478, 480, 482, 504, + 506, 511, 513, 518, 520, 525, 527, 529, 531, 533, + 535, 537, 539, 541, 543, 545, 547, 552, 554, 556, + 558, 560, 562, 564, 566, 568, 570, 575, 577, 579, + 589, 591, 597, 598, 603, 605, 611, 612, 617, 619, + 624, 626, 628, 630, 632, 637, 639 }; #endif @@ -744,7 +745,7 @@ yysymbol_name (yysymbol_kind_t yysymbol) "opCOLONCOLON", "'['", "opMDASN", "opNDASN", "opNTASN", "'?'", "opSTRNE", "UNARY", "']'", "$accept", "start", "decl_list", "decl", "package_decl", "fn_decl_list", "statement_list", "stmt", "fn_decl_stmt", - "var_list_decl", "var_list", "datablock_decl", "object_decl", + "var_list_decl", "var_list", "param", "datablock_decl", "object_decl", "parent_block", "object_name", "object_args", "object_declare_block", "object_decl_list", "stmt_block", "switch_stmt", "case_block", "case_expr", "if_stmt", "while_stmt", "for_stmt", "foreach_stmt", @@ -757,12 +758,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-310) +#define YYPACT_NINF (-315) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-76) +#define YYTABLE_NINF (-80) #define yytable_value_is_error(Yyn) \ 0 @@ -771,44 +772,45 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - -310, 31, 397, -310, 4, 2, 2, -3, 32, 27, - 167, 34, 489, 40, 41, 43, 2, 44, 47, 66, - 55, -310, 67, 115, -33, -310, -310, -310, -310, 1002, - 1002, 1002, 1002, 1002, -310, -310, -310, -310, -310, -310, - -310, -310, -310, -310, -310, 59, 2465, 2727, -310, 71, - -310, -310, -12, -310, 1002, 81, 82, -310, -310, 1002, - -310, -310, -310, 1115, -310, 1002, -310, -310, 124, 708, - 108, 129, 97, 1002, 1002, 107, 1002, 1002, 1002, -310, - -310, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, - 1002, 1002, -310, 1002, 133, -34, -34, 1169, -34, -34, - -310, 1002, 1002, 1002, 1002, 1002, 1002, 137, 1002, 1002, - 1002, 1002, 1002, 2, 2, 1002, 1002, 1002, 1002, 1002, - 1002, 1002, 1002, 1002, 1002, 1002, 750, -310, 141, 143, - 1223, 9, 1002, 1277, -310, 1331, 549, 127, 792, 1385, - 156, 162, 1002, 1439, 1493, 183, 1007, 1061, 2465, 2465, - 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, 2465, - -39, 2465, 131, 149, 159, -310, 292, 292, -34, -34, - 2722, 2722, -43, 2606, 2664, -34, 2635, 2786, -310, -310, - 39, 39, 2693, 2693, 2722, 2722, 2577, 2548, 2786, 1547, - 2786, 1002, 2465, -310, 142, 154, 160, -310, 1002, 158, - 2465, 158, 489, 489, -310, -310, 1002, 319, 1601, 834, - 1002, 1002, 1655, 157, 161, 5, -310, -310, 179, 1002, - -310, 1002, 2747, -310, 1002, 1002, 1002, 1002, 1002, -31, - 165, 190, 141, 135, 197, 171, 171, 231, -310, 1709, - 489, 1763, 876, 918, 1817, 1871, 1925, 184, 217, 217, - 187, -310, 194, 1979, 2465, 1002, -310, 2465, 199, 200, - -38, 2519, -310, -310, -310, 204, 158, -310, 1002, 205, - 211, 489, -310, -310, 489, 489, 2033, 489, 2087, 960, - 489, 489, 193, 1002, 207, 210, -310, -310, -310, 2465, - -310, -310, -310, 594, 214, 171, 149, 216, 222, -310, - -310, -310, 489, -310, 489, 489, 2141, -310, -310, 70, - -5, 2465, -310, -310, -310, -310, 221, 213, 213, -310, - -310, -310, 489, 233, -30, 246, 224, 70, -310, 1002, - -310, 639, 226, 228, 227, 23, 213, 229, -310, 1002, - 1002, 1002, -29, 230, -310, 2465, 444, -310, 213, -310, - -310, 235, 23, -310, 2195, 2249, -23, 1002, 1002, -310, - 237, -310, 236, -310, -310, -310, 248, 2303, -19, -310, - -310, 1002, -310, 249, 684, 2357, 1002, -310, 2411, -310 + -315, 22, 144, -315, -11, -20, -20, -14, 45, 41, + 762, 51, 413, 53, 55, 63, -20, 68, 69, 98, + 83, -315, 92, -26, 37, -315, -315, -315, -315, 1140, + 1140, 1140, 1140, 1140, -315, -315, -315, -315, -315, -315, + -315, -315, -315, -315, -315, 84, 2603, 457, -315, 85, + -315, -315, 39, -315, 1140, 91, 97, -315, -315, 1140, + -315, -315, -315, 1253, -315, 1140, -315, -315, 140, 804, + 119, 125, 108, 1140, 1140, 107, 1140, 1140, 1140, -315, + -315, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, + 1140, 1140, -315, 1140, 132, -30, -30, 1307, -30, -30, + -315, 1140, 1140, 1140, 1140, 1140, 1140, 134, 1140, 1140, + 1140, 1140, 1140, -20, -20, 1140, 1140, 1140, 1140, 1140, + 1140, 1140, 1140, 1140, 1140, 1140, 846, -315, 137, 139, + 1361, 27, 1140, 1415, -315, 1469, 538, 120, 888, 1523, + 160, 165, 1140, 1577, 1631, 188, 1145, 1199, 2603, 2603, + 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, 2603, + -42, 2603, 136, 138, 141, -315, 94, 94, -30, -30, + 256, 256, 34, 2744, 2802, -30, 2773, 2860, -315, -315, + 221, 221, 2831, 2831, 256, 256, 2715, 2686, 2860, 1685, + 2860, 1140, 2603, -36, 142, 143, -315, 148, -315, 1140, + 135, 2603, 135, 413, 413, -315, -315, 1140, 930, 1739, + 972, 1140, 1140, 1793, 145, 146, 14, -315, -315, 153, + 1140, -315, 1140, 535, -315, 1140, 1140, 1140, 1140, 1140, + 44, 1140, 147, 149, 137, 137, 105, 172, 154, 154, + 209, -315, 1847, 413, 1901, 1014, 1056, 1955, 2009, 2063, + 159, 193, 193, 164, -315, 168, 2117, 2603, 1140, -315, + 2603, 169, 174, -32, 2657, -315, 2603, 1140, -315, -315, + 179, 135, -315, 1140, 180, 181, 413, -315, -315, 413, + 413, 2171, 413, 2225, 1098, 413, 413, 178, 1140, 185, + 190, -315, -315, -315, 2603, -315, -315, -315, 2603, 648, + 194, 154, 138, 195, 196, -315, -315, -315, 413, -315, + 413, 413, 2279, -315, -315, 2, 67, 2603, -315, -315, + -315, -315, 184, 93, 93, -315, -315, -315, 413, 208, + -21, 219, 198, 2, -315, 1140, -315, 693, 200, 202, + 203, 25, 93, 212, -315, 1140, 1140, 1140, -4, 204, + -315, 2603, 207, -315, 93, -315, -315, 210, 25, -315, + 2333, 2387, 1, 1140, 1140, -315, 218, -315, 220, -315, + -315, -315, 229, 2441, 17, -315, -315, 1140, -315, 232, + 738, 2495, 1140, -315, 2549, -315 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -816,64 +818,65 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 3, 0, 2, 1, 0, 0, 0, 108, 0, 0, + 3, 0, 2, 1, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 107, 88, 113, 111, 26, 112, 105, 106, 0, - 0, 0, 0, 0, 4, 7, 5, 6, 17, 135, - 18, 13, 14, 15, 16, 0, 0, 109, 110, 76, - 133, 134, 0, 119, 0, 0, 0, 19, 20, 0, - 108, 88, 21, 0, 76, 0, 11, 53, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, - 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 138, 148, 0, 86, 87, 0, 104, 103, + 0, 111, 92, 117, 115, 26, 116, 109, 110, 0, + 0, 0, 0, 0, 4, 7, 5, 6, 17, 139, + 18, 13, 14, 15, 16, 0, 0, 113, 114, 80, + 137, 138, 0, 123, 0, 0, 0, 19, 20, 0, + 112, 92, 21, 0, 80, 0, 11, 57, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, + 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 142, 152, 0, 90, 91, 0, 108, 107, 23, 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, 140, 29, 0, - 0, 42, 42, 0, 22, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 136, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 161, - 0, 150, 0, 149, 0, 77, 82, 83, 84, 85, - 90, 91, 115, 81, 80, 79, 78, 102, 117, 118, - 97, 98, 94, 95, 92, 93, 99, 96, 100, 0, - 101, 0, 141, 31, 0, 30, 0, 120, 42, 40, - 43, 40, 0, 0, 52, 12, 0, 0, 0, 0, - 0, 0, 40, 0, 0, 0, 9, 146, 0, 0, - 24, 0, 114, 143, 0, 148, 148, 0, 0, 0, - 0, 0, 29, 0, 0, 44, 44, 61, 63, 0, + 0, 0, 0, 0, 0, 0, 0, 144, 29, 0, + 0, 46, 46, 0, 22, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 140, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 165, + 0, 154, 0, 153, 0, 81, 86, 87, 88, 89, + 94, 95, 119, 85, 84, 83, 82, 106, 121, 122, + 101, 102, 98, 99, 96, 97, 103, 100, 104, 0, + 105, 0, 145, 33, 0, 30, 31, 0, 124, 46, + 44, 47, 44, 0, 0, 56, 12, 0, 0, 0, + 0, 0, 0, 44, 0, 0, 0, 9, 150, 0, + 0, 24, 0, 118, 147, 0, 152, 152, 0, 0, + 0, 0, 34, 0, 0, 29, 0, 0, 48, 48, + 65, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 0, 166, 0, 143, + 155, 0, 0, 0, 93, 146, 35, 0, 11, 32, + 0, 44, 45, 0, 0, 0, 0, 68, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 10, 0, 0, 162, 0, 139, 151, 0, 0, - 0, 89, 142, 11, 32, 0, 40, 41, 0, 0, - 0, 0, 64, 72, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 8, 147, 25, 137, - 144, 145, 116, 0, 0, 44, 45, 35, 39, 62, - 71, 70, 0, 68, 0, 0, 0, 73, 74, 152, - 0, 59, 54, 55, 27, 11, 0, 46, 46, 69, - 67, 66, 0, 0, 0, 0, 0, 153, 154, 0, - 11, 0, 37, 0, 0, 48, 47, 0, 65, 0, - 0, 0, 0, 0, 155, 60, 56, 28, 46, 50, - 34, 0, 49, 38, 0, 0, 0, 0, 0, 33, - 0, 58, 0, 51, 158, 156, 0, 0, 0, 11, - 36, 0, 157, 0, 57, 0, 0, 159, 0, 160 + 0, 8, 151, 25, 141, 148, 149, 120, 36, 0, + 0, 48, 49, 39, 43, 66, 75, 74, 0, 72, + 0, 0, 0, 77, 78, 156, 0, 63, 58, 59, + 27, 11, 0, 50, 50, 73, 71, 70, 0, 0, + 0, 0, 0, 157, 158, 0, 11, 0, 41, 0, + 0, 52, 51, 0, 69, 0, 0, 0, 0, 0, + 159, 64, 60, 28, 50, 54, 38, 0, 53, 42, + 0, 0, 0, 0, 0, 37, 0, 62, 0, 55, + 162, 160, 0, 0, 0, 11, 40, 0, 161, 0, + 61, 0, 0, 163, 0, 164 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -310, -310, -310, -310, -310, -310, -256, -1, -140, 64, - -310, -310, -94, -188, -121, -230, -309, -28, 30, -310, - -246, -310, -310, -310, -310, -310, -310, 38, -310, -310, - 19, -45, -2, -310, -310, -138, -187, -310, 0, -300, - -190 + -315, -315, -315, -315, -315, -315, -260, -1, -132, 50, + -315, 52, -315, -221, -193, -120, -216, -227, -53, -199, + -315, -245, -315, -315, -315, -315, -315, -315, 283, -315, + -315, 0, -45, -2, -315, -315, -188, -180, -315, -25, + -314, -225 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 1, 2, 34, 35, 215, 136, 67, 37, 194, - 195, 38, 39, 235, 199, 269, 334, 335, 68, 40, - 284, 310, 41, 42, 43, 44, 45, 46, 47, 48, - 55, 92, 64, 50, 51, 162, 163, 326, 336, 328, - 160 + 0, 1, 2, 34, 35, 216, 136, 67, 37, 194, + 195, 196, 38, 39, 238, 200, 274, 340, 341, 68, + 40, 289, 316, 41, 42, 43, 44, 45, 46, 47, + 48, 55, 92, 64, 50, 51, 162, 163, 332, 342, + 334, 160 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -881,378 +884,404 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 49, 36, 127, 285, 229, 216, 270, 293, 4, 337, - 49, 201, 226, 236, 5, 6, 60, 107, 221, 221, - 340, 357, 93, 329, 247, 56, 224, 344, 5, 6, - 262, 3, 113, 114, 221, 72, 344, 260, 221, 362, - 53, 20, 52, 128, 21, 61, 23, 24, 63, 227, - 26, 27, 28, 330, 29, 30, 57, 54, 94, 331, - 222, 292, 341, 358, 31, 316, 250, 95, 96, 97, - 98, 99, 32, 33, 346, 251, 366, 233, 295, 129, - 373, 296, 59, 101, 102, 103, 104, 258, 259, 65, - 107, 58, 130, 110, 323, 69, 70, 133, 71, 73, - 361, 198, 74, 135, 75, 113, 114, 139, 324, 325, - 76, 143, 144, 374, 146, 147, 148, 77, 100, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - -75, 161, 178, 179, 49, 205, 131, 132, 137, 166, - 167, 168, 169, 170, 171, 140, 173, 174, 175, 176, - 177, 356, 142, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 192, 78, 141, 145, 368, 200, - 200, 164, 5, 6, 60, 172, 208, 256, 193, 210, - 212, 196, 206, 79, 80, 211, 4, 223, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 230, 20, - 49, 49, 21, 61, 23, 24, 224, 91, 26, 27, - 28, 231, 29, 30, 225, 232, 234, 248, 5, 6, - 252, 249, 31, 333, 333, 263, 62, 264, 268, 161, - 32, 33, 237, 238, 266, 267, 200, 323, 49, 271, - 282, 351, 333, 283, 239, 241, 286, 244, 245, 246, - 287, 324, 325, 309, 333, 290, 291, 253, 351, 254, - 294, 297, 257, 161, 161, 159, 261, 298, 312, 49, - 273, 313, 49, 49, 315, 49, 317, 332, 49, 49, - 276, 278, 318, 339, 342, 343, 348, 349, 350, 359, - 353, 49, 205, 289, 363, 369, 265, 370, 371, 376, - 49, 299, 49, 49, 300, 301, 161, 303, 352, 327, - 307, 308, 0, 0, 0, 0, 0, 306, 0, 0, - 49, 311, 0, 0, 5, 6, 60, 0, 0, 49, - 205, 0, 319, 0, 320, 321, 0, 0, 103, 104, - 0, 0, 0, 107, 49, 205, 110, 0, 0, 0, - 0, 20, 338, 0, 21, 61, 23, 24, 113, 114, - 26, 27, 28, 0, 29, 30, 0, 345, 0, 0, - 0, 0, 49, 205, 31, 240, 0, 354, 355, 159, - 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 367, 159, 0, 0, 0, - 4, 0, 5, 6, 7, 0, 8, 0, 9, 375, - 10, 11, 12, 0, 378, 0, 0, 13, 14, 15, - 0, 16, 17, 0, 18, 0, 19, 0, 0, 20, - 0, 0, 21, 22, 23, 24, 0, 25, 26, 27, - 28, 0, 29, 30, 0, 0, 0, 0, 0, 5, - 6, 7, 31, 8, 0, 9, 0, 10, 11, 12, - 32, 33, 0, 360, 13, 14, 15, 0, 16, 17, - 283, 18, 0, 0, 0, 0, 20, 0, 0, 21, - 22, 23, 24, 0, 25, 26, 27, 28, 0, 29, - 30, 0, 0, 0, 5, 6, 7, 0, 8, 31, - 9, 0, 10, 11, 12, 0, 0, 32, 33, 13, - 14, 15, 0, 16, 17, 0, 18, 0, 0, 0, - 0, 20, 0, 0, 21, 22, 23, 24, 0, 25, - 26, 27, 28, 0, 29, 30, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 0, 0, 0, 66, - 0, 0, 32, 33, 5, 6, 7, 0, 8, 0, - 9, 0, 10, 11, 12, 0, 0, 0, 0, 13, - 14, 15, 0, 16, 17, 0, 18, 0, 0, 0, - 0, 20, 0, 0, 21, 22, 23, 24, 0, 25, - 26, 27, 28, 0, 29, 30, 0, 0, 0, 5, - 6, 7, 0, 8, 31, 9, 0, 10, 11, 12, - 204, 0, 32, 33, 13, 14, 15, 0, 16, 17, - 0, 18, 0, 0, 0, 0, 20, 0, 0, 21, - 22, 23, 24, 0, 25, 26, 27, 28, 0, 29, - 30, 0, 0, 0, 5, 6, 7, 0, 8, 31, - 9, 0, 10, 11, 12, 314, 0, 32, 33, 13, - 14, 15, 0, 16, 17, 0, 18, 0, 0, 0, - 0, 20, 0, 0, 21, 22, 23, 24, 0, 25, - 26, 27, 28, 0, 29, 30, 0, 0, 0, 5, - 6, 7, 0, 8, 31, 9, 0, 10, 11, 12, - 347, 0, 32, 33, 13, 14, 15, 0, 16, 17, - 0, 18, 0, 5, 6, 60, 20, 0, 0, 21, - 22, 23, 24, 0, 25, 26, 27, 28, 0, 29, - 30, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 20, 0, 0, 21, 61, 23, 24, 32, 33, 26, - 27, 28, 0, 29, 30, 5, 6, 60, 0, 0, - 0, 0, 0, 31, 0, 0, 0, 138, 0, 0, - 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 21, 61, 23, 24, 0, - 0, 26, 27, 28, 0, 29, 30, 5, 6, 60, - 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, - 191, 0, 0, 32, 33, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 0, 0, 21, 61, 23, - 24, 0, 0, 26, 27, 28, 0, 29, 30, 5, + 49, 36, 127, 263, 240, 241, 56, 290, 299, 239, + 49, 230, 202, 217, 231, 222, 72, 4, 53, 350, + 250, 107, 3, 275, 78, 222, 329, 52, 350, 346, + 5, 6, 5, 6, 60, 54, 113, 114, 261, 262, + 330, 331, 79, 80, 278, 57, 363, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 223, 222, 20, + 232, 337, 21, 61, 23, 24, 91, 297, 26, 27, + 28, 347, 29, 30, 222, 253, 352, 305, 301, 236, + 306, 307, 31, 309, 254, 322, 313, 314, 364, 227, + 32, 33, 93, 302, 128, 335, 59, 343, 5, 6, + 372, 225, 339, 339, 58, 265, 65, 367, 69, 325, + 70, 326, 327, 178, 179, 380, 379, 329, 71, 199, + 357, 339, 362, 73, 74, 336, 228, 368, 94, 344, + 129, 330, 331, 339, 49, 206, 75, 357, 76, 374, + 103, 104, 77, 100, -79, 107, 131, 4, 110, 5, + 6, 7, 132, 8, 137, 9, 140, 10, 11, 12, + 113, 114, 141, 142, 13, 14, 15, 145, 16, 17, + 164, 18, 172, 19, 193, 207, 20, 197, 259, 21, + 22, 23, 24, 211, 25, 26, 27, 28, 212, 29, + 30, 4, 224, 237, 255, 225, 226, 267, 233, 31, + 234, 49, 49, 235, 271, 251, 252, 32, 33, 268, + 272, 273, 5, 6, 7, 287, 8, 276, 9, 288, + 10, 11, 12, 291, 292, 295, 366, 13, 14, 15, + 296, 16, 17, 288, 18, 300, 303, 304, 315, 20, + 338, 49, 21, 22, 23, 24, 318, 25, 26, 27, + 28, 319, 29, 30, 321, 323, 324, 348, 345, 349, + 354, 355, 31, 365, 356, 101, 102, 103, 104, 369, + 32, 33, 107, 359, 49, 110, 375, 49, 49, 377, + 49, 376, 382, 49, 49, 270, 269, 113, 114, 358, + 333, 0, 0, 63, 0, 0, 0, 49, 206, 0, + 101, 102, 103, 104, 0, 0, 49, 107, 49, 49, + 110, 0, 95, 96, 97, 98, 99, 0, 0, 0, + 0, 112, 113, 114, 0, 0, 49, 115, 116, 0, + 0, 0, 0, 0, 0, 49, 206, 130, 0, 0, + 0, 0, 133, 0, 0, 0, 123, 0, 135, 0, + 49, 206, 139, 125, 0, 0, 143, 144, 0, 146, + 147, 148, 0, 0, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 0, 161, 0, 49, 206, + 0, 0, 0, 0, 166, 167, 168, 169, 170, 171, + 0, 173, 174, 175, 176, 177, 0, 0, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 192, + 0, 0, 0, 0, 201, 201, 0, 0, 5, 6, + 7, 209, 8, 0, 9, 213, 10, 11, 12, 0, + 0, 0, 0, 13, 14, 15, 0, 16, 17, 0, + 18, 0, 0, 0, 0, 20, 0, 0, 21, 22, + 23, 24, 0, 25, 26, 27, 28, 0, 29, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, + 0, 0, 0, 66, 161, 0, 32, 33, 0, 0, + 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, + 242, 244, 0, 247, 248, 249, 0, 0, 0, 0, + 0, 0, 0, 256, 0, 257, 0, 126, 260, 161, + 161, 159, 264, 0, 266, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 79, 80, 0, 281, 283, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 0, 294, 0, 5, 6, 7, 0, 8, 0, 9, + 298, 10, 11, 12, 0, 0, 161, 0, 13, 14, + 15, 0, 16, 17, 0, 18, 0, 312, 0, 0, + 20, 317, 0, 21, 22, 23, 24, 0, 25, 26, + 27, 28, 0, 29, 30, 258, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 0, 0, 0, 205, + 0, 32, 33, 79, 80, 0, 0, 0, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 351, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 360, 361, + 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 373, 159, 0, 0, + 0, 0, 0, 5, 6, 7, 0, 8, 0, 9, + 381, 10, 11, 12, 0, 384, 0, 0, 13, 14, + 15, 0, 16, 17, 0, 18, 0, 0, 0, 0, + 20, 0, 0, 21, 22, 23, 24, 0, 25, 26, + 27, 28, 0, 29, 30, 0, 0, 0, 5, 6, + 7, 0, 8, 31, 9, 0, 10, 11, 12, 320, + 0, 32, 33, 13, 14, 15, 0, 16, 17, 0, + 18, 0, 0, 0, 0, 20, 0, 0, 21, 22, + 23, 24, 0, 25, 26, 27, 28, 0, 29, 30, + 0, 0, 0, 5, 6, 7, 0, 8, 31, 9, + 0, 10, 11, 12, 353, 0, 32, 33, 13, 14, + 15, 0, 16, 17, 0, 18, 0, 5, 6, 60, + 20, 0, 0, 21, 22, 23, 24, 0, 25, 26, + 27, 28, 0, 29, 30, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 20, 0, 0, 21, 61, 23, + 24, 32, 33, 26, 27, 28, 0, 29, 30, 5, 6, 60, 0, 0, 0, 0, 0, 31, 0, 0, - 0, 207, 0, 0, 0, 32, 33, 0, 0, 0, + 0, 62, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, 61, 23, 24, 0, 0, 26, 27, 28, 0, 29, 30, 5, 6, 60, 0, 0, 0, 0, 0, 31, - 0, 0, 0, 243, 0, 0, 0, 32, 33, 0, + 0, 0, 0, 138, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, 61, 23, 24, 0, 0, 26, 27, 28, 0, 29, 30, 5, 6, 60, 0, 0, 0, 0, - 0, 31, 275, 0, 0, 0, 0, 0, 0, 32, + 0, 31, 0, 0, 0, 0, 191, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, 61, 23, 24, 0, 0, 26, 27, 28, 0, 29, 30, 5, 6, 60, 0, 0, - 0, 0, 0, 31, 277, 0, 0, 0, 0, 0, + 0, 0, 0, 31, 0, 0, 0, 208, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, 61, 23, 24, 0, 0, 26, 27, 28, 0, 29, 30, 5, 6, 60, - 0, 0, 0, 0, 0, 31, 305, 0, 0, 0, + 0, 0, 0, 0, 0, 31, 243, 0, 0, 0, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, 61, 23, - 24, 0, 0, 26, 27, 28, 0, 29, 30, 0, - 0, 101, 102, 103, 104, 105, 106, 31, 107, 108, - 109, 110, 0, 217, 218, 32, 33, 0, 0, 111, - 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, - 106, 0, 107, 108, 109, 110, 0, 0, 219, 0, - 220, 0, 0, 111, 0, 0, 112, 113, 114, 0, - 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, - 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, - 0, 0, 0, 0, 134, 0, 0, 111, 0, 0, + 24, 0, 0, 26, 27, 28, 0, 29, 30, 5, + 6, 60, 0, 0, 0, 0, 0, 31, 0, 0, + 0, 246, 0, 0, 0, 32, 33, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, + 61, 23, 24, 0, 0, 26, 27, 28, 0, 29, + 30, 5, 6, 60, 0, 0, 0, 0, 0, 31, + 280, 0, 0, 0, 0, 0, 0, 32, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, + 0, 21, 61, 23, 24, 0, 0, 26, 27, 28, + 0, 29, 30, 5, 6, 60, 0, 0, 0, 0, + 0, 31, 282, 0, 0, 0, 0, 0, 0, 32, + 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 21, 61, 23, 24, 0, 0, 26, + 27, 28, 0, 29, 30, 5, 6, 60, 0, 0, + 0, 0, 0, 31, 311, 0, 0, 0, 0, 0, + 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 20, 0, 0, 21, 61, 23, 24, 0, + 0, 26, 27, 28, 0, 29, 30, 0, 0, 101, + 102, 103, 104, 105, 106, 31, 107, 108, 109, 110, + 0, 218, 219, 32, 33, 0, 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, - 107, 108, 109, 110, 0, 165, 0, 0, 0, 0, - 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, - 104, 105, 106, 0, 107, 108, 109, 110, 0, 197, - 0, 0, 0, 0, 0, 111, 0, 0, 112, 113, - 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, - 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, - 109, 110, 0, 202, 0, 0, 0, 0, 0, 111, - 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, - 106, 0, 107, 108, 109, 110, 0, 203, 0, 0, - 0, 0, 0, 111, 0, 0, 112, 113, 114, 0, - 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, - 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, - 0, 0, 0, 0, 209, 0, 0, 111, 0, 0, - 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, - 107, 108, 109, 110, 0, 213, 0, 0, 0, 0, - 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, - 104, 105, 106, 0, 107, 108, 109, 110, 0, 214, - 0, 0, 0, 0, 0, 111, 0, 0, 112, 113, - 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, - 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, - 109, 110, 0, 0, 0, 228, 0, 0, 0, 111, - 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, - 106, 0, 107, 108, 109, 110, 0, 0, 0, 0, - 242, 0, 0, 111, 0, 0, 112, 113, 114, 0, - 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, - 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, - 0, 0, 0, 234, 0, 0, 0, 111, 0, 0, - 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, - 107, 108, 109, 110, 0, 272, 0, 0, 0, 0, - 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, - 104, 105, 106, 0, 107, 108, 109, 110, 0, 274, - 0, 0, 0, 0, 0, 111, 0, 0, 112, 113, - 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, - 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, - 109, 110, 0, 0, 0, 0, 279, 0, 0, 111, - 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, - 106, 0, 107, 108, 109, 110, 0, 280, 0, 0, - 0, 0, 0, 111, 0, 0, 112, 113, 114, 0, - 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, - 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, - 0, 281, 0, 0, 0, 0, 0, 111, 0, 0, - 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, - 107, 108, 109, 110, 0, 0, 0, 0, 288, 0, - 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, - 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, - 104, 105, 106, 0, 107, 108, 109, 110, 0, 302, - 0, 0, 0, 0, 0, 111, 0, 0, 112, 113, - 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, - 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, - 109, 110, 0, 304, 0, 0, 0, 0, 0, 111, - 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, - 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, - 106, 0, 107, 108, 109, 110, 0, 322, 0, 0, - 0, 0, 0, 111, 0, 0, 112, 113, 114, 0, - 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, - 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, - 0, 0, 0, 0, 364, 0, 0, 111, 0, 0, - 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, - 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, - 107, 108, 109, 110, 0, 0, 0, 0, 365, 0, + 107, 108, 109, 110, 0, 0, 220, 0, 221, 0, 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, 0, 0, - 0, 0, 372, 0, 0, 111, 0, 0, 112, 113, + 0, 0, 134, 0, 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, - 109, 110, 0, 0, 0, 0, 377, 0, 0, 111, + 109, 110, 0, 165, 0, 0, 0, 0, 0, 111, + 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, + 106, 0, 107, 108, 109, 110, 0, 198, 0, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 0, + 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, + 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, + 0, 203, 0, 0, 0, 0, 0, 111, 0, 0, + 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, + 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, + 107, 108, 109, 110, 0, 204, 0, 0, 0, 0, + 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, + 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, + 104, 105, 106, 0, 107, 108, 109, 110, 0, 0, + 0, 0, 210, 0, 0, 111, 0, 0, 112, 113, + 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, + 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, + 109, 110, 0, 214, 0, 0, 0, 0, 0, 111, + 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, + 106, 0, 107, 108, 109, 110, 0, 215, 0, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 0, + 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, + 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, + 0, 0, 0, 229, 0, 0, 0, 111, 0, 0, + 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, + 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, + 107, 108, 109, 110, 0, 0, 0, 0, 245, 0, + 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, + 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, + 104, 105, 106, 0, 107, 108, 109, 110, 0, 0, + 0, 237, 0, 0, 0, 111, 0, 0, 112, 113, + 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, + 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, + 109, 110, 0, 277, 0, 0, 0, 0, 0, 111, + 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, + 106, 0, 107, 108, 109, 110, 0, 279, 0, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 0, + 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, + 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, + 0, 0, 0, 0, 284, 0, 0, 111, 0, 0, + 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, + 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, + 107, 108, 109, 110, 0, 285, 0, 0, 0, 0, + 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, + 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, + 104, 105, 106, 0, 107, 108, 109, 110, 0, 286, + 0, 0, 0, 0, 0, 111, 0, 0, 112, 113, + 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, + 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, + 109, 110, 0, 0, 0, 0, 293, 0, 0, 111, + 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, + 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, + 106, 0, 107, 108, 109, 110, 0, 308, 0, 0, + 0, 0, 0, 111, 0, 0, 112, 113, 114, 0, + 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, + 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, + 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, + 0, 310, 0, 0, 0, 0, 0, 111, 0, 0, + 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, + 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, + 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, + 107, 108, 109, 110, 0, 328, 0, 0, 0, 0, + 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, + 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, + 104, 105, 106, 0, 107, 108, 109, 110, 0, 0, + 0, 0, 370, 0, 0, 111, 0, 0, 112, 113, + 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, + 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, + 109, 110, 0, 0, 0, 0, 371, 0, 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, 0, 0, 0, 0, - 379, 0, 0, 111, 0, 0, 112, 113, 114, 0, + 378, 0, 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, - 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, + 0, 0, 0, 0, 383, 0, 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, 104, 105, 106, 0, - 107, 108, 109, 110, 0, 0, 0, 0, 0, 0, + 107, 108, 109, 110, 0, 0, 0, 0, 385, 0, 0, 111, 0, 0, 112, 113, 114, 0, 0, 0, - 115, 116, 101, 102, 103, 104, 105, 106, 0, 107, - 108, 109, 110, 117, 118, 119, 120, 121, 122, 123, - 111, 0, 0, 112, 113, 114, 125, 0, 0, 115, - 116, 101, 102, 103, 104, 105, 106, 0, 107, 108, - 109, 110, 117, 118, 119, 120, 121, 0, 123, 111, - 0, 0, 112, 113, 114, 125, 0, 0, 115, 116, - 101, 102, 103, 104, 105, 106, 0, 107, 0, 109, - 110, 117, 118, 119, 120, 0, 0, 123, 111, 0, + 115, 116, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 117, 118, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 0, 124, 125, 101, 102, 103, + 104, 105, 106, 0, 107, 108, 109, 110, 0, 0, + 0, 0, 0, 0, 0, 111, 0, 0, 112, 113, + 114, 0, 0, 0, 115, 116, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 117, 118, 119, + 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, + 125, 101, 102, 103, 104, 105, 106, 0, 107, 108, + 109, 110, 0, 0, 0, 0, 0, 0, 0, 111, + 0, 0, 112, 113, 114, 0, 0, 0, 115, 116, + 101, 102, 103, 104, 105, 106, 0, 107, 108, 109, + 110, 117, 118, 119, 120, 121, 122, 123, 111, 0, 0, 112, 113, 114, 125, 0, 0, 115, 116, 101, - 102, 103, 104, 105, 106, 0, 107, 0, 109, 110, - 117, 118, 119, 120, 0, 0, 123, 0, 0, 0, + 102, 103, 104, 105, 106, 0, 107, 108, 109, 110, + 117, 118, 119, 120, 121, 0, 123, 111, 0, 0, 112, 113, 114, 125, 0, 0, 115, 116, 101, 102, - 103, 104, 105, 106, 0, 107, 0, 0, 110, 117, - 118, 119, 120, 0, 0, 123, 0, 0, 0, 112, + 103, 104, 105, 106, 0, 107, 0, 109, 110, 117, + 118, 119, 120, 0, 0, 123, 111, 0, 0, 112, 113, 114, 125, 0, 0, 115, 116, 101, 102, 103, - 104, 105, 106, 0, 107, 0, 0, 110, 117, 118, + 104, 105, 106, 0, 107, 0, 109, 110, 117, 118, 119, 120, 0, 0, 123, 0, 0, 0, 112, 113, 114, 125, 0, 0, 115, 116, 101, 102, 103, 104, - 0, 0, 0, 107, 0, 0, 110, 126, 0, 119, + 105, 106, 0, 107, 0, 0, 110, 117, 118, 119, 120, 0, 0, 123, 0, 0, 0, 112, 113, 114, - 125, 0, 0, 115, 116, 79, 80, 255, 0, 0, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 0, 0, 123, 0, 0, 79, 80, 0, 0, 125, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 101, 102, 103, 104, 0, 0, 0, 107, 0, 0, - 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 113, 114, 0, 0, 0, 115, 116 + 125, 0, 0, 115, 116, 101, 102, 103, 104, 105, + 106, 0, 107, 0, 0, 110, 117, 118, 119, 120, + 0, 0, 123, 0, 0, 0, 112, 113, 114, 125, + 0, 0, 115, 116, 101, 102, 103, 104, 0, 0, + 0, 107, 0, 0, 110, 0, 0, 119, 120, 0, + 0, 123, 0, 0, 0, 0, 113, 114, 125, 0, + 0, 115, 116 }; static const yytype_int16 yycheck[] = { - 2, 2, 47, 249, 191, 145, 236, 263, 3, 318, - 12, 132, 55, 201, 5, 6, 7, 51, 57, 57, - 50, 50, 55, 28, 212, 6, 57, 327, 5, 6, - 61, 0, 66, 67, 57, 16, 336, 227, 57, 348, - 38, 32, 38, 55, 35, 36, 37, 38, 10, 92, - 41, 42, 43, 58, 45, 46, 59, 55, 91, 315, - 99, 99, 92, 92, 55, 295, 61, 29, 30, 31, - 32, 33, 63, 64, 330, 215, 99, 198, 266, 91, - 99, 268, 55, 44, 45, 46, 47, 225, 226, 55, - 51, 59, 54, 54, 24, 55, 55, 59, 55, 55, - 346, 92, 55, 65, 38, 66, 67, 69, 38, 39, - 55, 73, 74, 369, 76, 77, 78, 50, 59, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 59, 93, 113, 114, 136, 136, 55, 55, 14, 101, - 102, 103, 104, 105, 106, 37, 108, 109, 110, 111, - 112, 341, 55, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 50, 37, 60, 358, 131, - 132, 38, 5, 6, 7, 38, 138, 222, 37, 23, - 142, 38, 55, 68, 69, 23, 3, 56, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 56, 32, - 202, 203, 35, 36, 37, 38, 57, 92, 41, 42, - 43, 57, 45, 46, 55, 55, 58, 60, 5, 6, - 41, 60, 55, 317, 318, 60, 59, 37, 57, 191, - 63, 64, 202, 203, 99, 38, 198, 24, 240, 8, - 56, 335, 336, 26, 206, 207, 59, 209, 210, 211, - 56, 38, 39, 60, 348, 56, 56, 219, 352, 221, - 56, 56, 224, 225, 226, 227, 228, 56, 61, 271, - 240, 61, 274, 275, 60, 277, 60, 56, 280, 281, - 242, 243, 60, 50, 38, 61, 60, 59, 61, 59, - 61, 293, 293, 255, 59, 58, 232, 61, 50, 50, - 302, 271, 304, 305, 274, 275, 268, 277, 336, 309, - 280, 281, -1, -1, -1, -1, -1, 279, -1, -1, - 322, 283, -1, -1, 5, 6, 7, -1, -1, 331, - 331, -1, 302, -1, 304, 305, -1, -1, 46, 47, - -1, -1, -1, 51, 346, 346, 54, -1, -1, -1, - -1, 32, 322, -1, 35, 36, 37, 38, 66, 67, - 41, 42, 43, -1, 45, 46, -1, 329, -1, -1, - -1, -1, 374, 374, 55, 56, -1, 339, 340, 341, - -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 357, 358, -1, -1, -1, - 3, -1, 5, 6, 7, -1, 9, -1, 11, 371, - 13, 14, 15, -1, 376, -1, -1, 20, 21, 22, - -1, 24, 25, -1, 27, -1, 29, -1, -1, 32, - -1, -1, 35, 36, 37, 38, -1, 40, 41, 42, - 43, -1, 45, 46, -1, -1, -1, -1, -1, 5, - 6, 7, 55, 9, -1, 11, -1, 13, 14, 15, - 63, 64, -1, 19, 20, 21, 22, -1, 24, 25, - 26, 27, -1, -1, -1, -1, 32, -1, -1, 35, - 36, 37, 38, -1, 40, 41, 42, 43, -1, 45, - 46, -1, -1, -1, 5, 6, 7, -1, 9, 55, - 11, -1, 13, 14, 15, -1, -1, 63, 64, 20, - 21, 22, -1, 24, 25, -1, 27, -1, -1, -1, - -1, 32, -1, -1, 35, 36, 37, 38, -1, 40, - 41, 42, 43, -1, 45, 46, -1, -1, -1, -1, - -1, -1, -1, -1, 55, -1, -1, -1, -1, 60, - -1, -1, 63, 64, 5, 6, 7, -1, 9, -1, - 11, -1, 13, 14, 15, -1, -1, -1, -1, 20, - 21, 22, -1, 24, 25, -1, 27, -1, -1, -1, - -1, 32, -1, -1, 35, 36, 37, 38, -1, 40, - 41, 42, 43, -1, 45, 46, -1, -1, -1, 5, - 6, 7, -1, 9, 55, 11, -1, 13, 14, 15, - 61, -1, 63, 64, 20, 21, 22, -1, 24, 25, - -1, 27, -1, -1, -1, -1, 32, -1, -1, 35, - 36, 37, 38, -1, 40, 41, 42, 43, -1, 45, - 46, -1, -1, -1, 5, 6, 7, -1, 9, 55, - 11, -1, 13, 14, 15, 61, -1, 63, 64, 20, - 21, 22, -1, 24, 25, -1, 27, -1, -1, -1, - -1, 32, -1, -1, 35, 36, 37, 38, -1, 40, - 41, 42, 43, -1, 45, 46, -1, -1, -1, 5, - 6, 7, -1, 9, 55, 11, -1, 13, 14, 15, - 61, -1, 63, 64, 20, 21, 22, -1, 24, 25, - -1, 27, -1, 5, 6, 7, 32, -1, -1, 35, - 36, 37, 38, -1, 40, 41, 42, 43, -1, 45, - 46, -1, -1, -1, -1, -1, -1, -1, -1, 55, - 32, -1, -1, 35, 36, 37, 38, 63, 64, 41, + 2, 2, 47, 228, 203, 204, 6, 252, 268, 202, + 12, 191, 132, 145, 50, 57, 16, 3, 38, 333, + 213, 51, 0, 239, 50, 57, 24, 38, 342, 50, + 5, 6, 5, 6, 7, 55, 66, 67, 226, 227, + 38, 39, 68, 69, 243, 59, 50, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 99, 57, 32, + 96, 321, 35, 36, 37, 38, 92, 99, 41, 42, + 43, 92, 45, 46, 57, 61, 336, 276, 271, 199, + 279, 280, 55, 282, 216, 301, 285, 286, 92, 55, + 63, 64, 55, 273, 55, 28, 55, 324, 5, 6, + 99, 57, 323, 324, 59, 61, 55, 352, 55, 308, + 55, 310, 311, 113, 114, 375, 99, 24, 55, 92, + 341, 342, 347, 55, 55, 58, 92, 354, 91, 328, + 91, 38, 39, 354, 136, 136, 38, 358, 55, 364, + 46, 47, 50, 59, 59, 51, 55, 3, 54, 5, + 6, 7, 55, 9, 14, 11, 37, 13, 14, 15, + 66, 67, 37, 55, 20, 21, 22, 60, 24, 25, + 38, 27, 38, 29, 37, 55, 32, 38, 223, 35, + 36, 37, 38, 23, 40, 41, 42, 43, 23, 45, + 46, 3, 56, 58, 41, 57, 55, 50, 56, 55, + 57, 203, 204, 55, 99, 60, 60, 63, 64, 60, + 38, 57, 5, 6, 7, 56, 9, 8, 11, 26, + 13, 14, 15, 59, 56, 56, 19, 20, 21, 22, + 56, 24, 25, 26, 27, 56, 56, 56, 60, 32, + 56, 243, 35, 36, 37, 38, 61, 40, 41, 42, + 43, 61, 45, 46, 60, 60, 60, 38, 50, 61, + 60, 59, 55, 59, 61, 44, 45, 46, 47, 59, + 63, 64, 51, 61, 276, 54, 58, 279, 280, 50, + 282, 61, 50, 285, 286, 235, 234, 66, 67, 342, + 315, -1, -1, 10, -1, -1, -1, 299, 299, -1, + 44, 45, 46, 47, -1, -1, 308, 51, 310, 311, + 54, -1, 29, 30, 31, 32, 33, -1, -1, -1, + -1, 65, 66, 67, -1, -1, 328, 71, 72, -1, + -1, -1, -1, -1, -1, 337, 337, 54, -1, -1, + -1, -1, 59, -1, -1, -1, 90, -1, 65, -1, + 352, 352, 69, 97, -1, -1, 73, 74, -1, 76, + 77, 78, -1, -1, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, -1, 93, -1, 380, 380, + -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, + -1, 108, 109, 110, 111, 112, -1, -1, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + -1, -1, -1, -1, 131, 132, -1, -1, 5, 6, + 7, 138, 9, -1, 11, 142, 13, 14, 15, -1, + -1, -1, -1, 20, 21, 22, -1, 24, 25, -1, + 27, -1, -1, -1, -1, 32, -1, -1, 35, 36, + 37, 38, -1, 40, 41, 42, 43, -1, 45, 46, + -1, -1, -1, -1, -1, -1, -1, -1, 55, -1, + -1, -1, -1, 60, 191, -1, 63, 64, -1, -1, + -1, -1, 199, -1, -1, -1, -1, -1, -1, -1, + 207, 208, -1, 210, 211, 212, -1, -1, -1, -1, + -1, -1, -1, 220, -1, 222, -1, 50, 225, 226, + 227, 228, 229, -1, 231, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 68, 69, -1, 245, 246, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + -1, 258, -1, 5, 6, 7, -1, 9, -1, 11, + 267, 13, 14, 15, -1, -1, 273, -1, 20, 21, + 22, -1, 24, 25, -1, 27, -1, 284, -1, -1, + 32, 288, -1, 35, 36, 37, 38, -1, 40, 41, + 42, 43, -1, 45, 46, 50, -1, -1, -1, -1, + -1, -1, -1, 55, -1, -1, -1, -1, -1, 61, + -1, 63, 64, 68, 69, -1, -1, -1, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 335, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 345, 346, + 347, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 363, 364, -1, -1, + -1, -1, -1, 5, 6, 7, -1, 9, -1, 11, + 377, 13, 14, 15, -1, 382, -1, -1, 20, 21, + 22, -1, 24, 25, -1, 27, -1, -1, -1, -1, + 32, -1, -1, 35, 36, 37, 38, -1, 40, 41, + 42, 43, -1, 45, 46, -1, -1, -1, 5, 6, + 7, -1, 9, 55, 11, -1, 13, 14, 15, 61, + -1, 63, 64, 20, 21, 22, -1, 24, 25, -1, + 27, -1, -1, -1, -1, 32, -1, -1, 35, 36, + 37, 38, -1, 40, 41, 42, 43, -1, 45, 46, + -1, -1, -1, 5, 6, 7, -1, 9, 55, 11, + -1, 13, 14, 15, 61, -1, 63, 64, 20, 21, + 22, -1, 24, 25, -1, 27, -1, 5, 6, 7, + 32, -1, -1, 35, 36, 37, 38, -1, 40, 41, + 42, 43, -1, 45, 46, -1, -1, -1, -1, -1, + -1, -1, -1, 55, 32, -1, -1, 35, 36, 37, + 38, 63, 64, 41, 42, 43, -1, 45, 46, 5, + 6, 7, -1, -1, -1, -1, -1, 55, -1, -1, + -1, 59, -1, -1, -1, 63, 64, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 32, -1, -1, 35, + 36, 37, 38, -1, -1, 41, 42, 43, -1, 45, + 46, 5, 6, 7, -1, -1, -1, -1, -1, 55, + -1, -1, -1, 59, -1, -1, -1, 63, 64, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, + -1, 35, 36, 37, 38, -1, -1, 41, 42, 43, + -1, 45, 46, 5, 6, 7, -1, -1, -1, -1, + -1, 55, -1, -1, -1, -1, 60, -1, -1, 63, + 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 32, -1, -1, 35, 36, 37, 38, -1, -1, 41, 42, 43, -1, 45, 46, 5, 6, 7, -1, -1, -1, -1, -1, 55, -1, -1, -1, 59, -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, 35, 36, 37, 38, -1, -1, 41, 42, 43, -1, 45, 46, 5, 6, 7, - -1, -1, -1, -1, -1, 55, -1, -1, -1, -1, - 60, -1, -1, 63, 64, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, + -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, 35, 36, 37, 38, -1, -1, 41, 42, 43, -1, 45, 46, 5, 6, 7, -1, -1, -1, -1, -1, 55, -1, -1, @@ -1260,7 +1289,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 32, -1, -1, 35, 36, 37, 38, -1, -1, 41, 42, 43, -1, 45, 46, 5, 6, 7, -1, -1, -1, -1, -1, 55, - -1, -1, -1, 59, -1, -1, -1, 63, 64, -1, + 56, -1, -1, -1, -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, 35, 36, 37, 38, -1, -1, 41, 42, 43, -1, 45, 46, 5, 6, 7, -1, -1, -1, -1, @@ -1271,24 +1300,36 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 55, 56, -1, -1, -1, -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, -1, -1, 35, 36, 37, 38, -1, - -1, 41, 42, 43, -1, 45, 46, 5, 6, 7, - -1, -1, -1, -1, -1, 55, 56, -1, -1, -1, - -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 32, -1, -1, 35, 36, 37, - 38, -1, -1, 41, 42, 43, -1, 45, 46, -1, - -1, 44, 45, 46, 47, 48, 49, 55, 51, 52, - 53, 54, -1, 56, 57, 63, 64, -1, -1, 62, + -1, 41, 42, 43, -1, 45, 46, -1, -1, 44, + 45, 46, 47, 48, 49, 55, 51, 52, 53, 54, + -1, 56, 57, 63, 64, -1, -1, 62, -1, -1, + 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, + 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, + -1, 96, 97, 44, 45, 46, 47, 48, 49, -1, + 51, 52, 53, 54, -1, -1, 57, -1, 59, -1, + -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, + 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, + -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, + 47, 48, 49, -1, 51, 52, 53, 54, -1, -1, + -1, -1, 59, -1, -1, 62, -1, -1, 65, 66, + 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, + 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, + 97, 44, 45, 46, 47, 48, 49, -1, 51, 52, + 53, 54, -1, 56, -1, -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, 47, 48, - 49, -1, 51, 52, 53, 54, -1, -1, 57, -1, - 59, -1, -1, 62, -1, -1, 65, 66, 67, -1, + 49, -1, 51, 52, 53, 54, -1, 56, -1, -1, + -1, -1, -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, 47, 48, 49, -1, 51, 52, 53, 54, - -1, -1, -1, -1, 59, -1, -1, 62, -1, -1, + -1, 56, -1, -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, @@ -1298,8 +1339,35 @@ static const yytype_int16 yycheck[] = 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, - 47, 48, 49, -1, 51, 52, 53, 54, -1, 56, - -1, -1, -1, -1, -1, 62, -1, -1, 65, 66, + 47, 48, 49, -1, 51, 52, 53, 54, -1, -1, + -1, -1, 59, -1, -1, 62, -1, -1, 65, 66, + 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, + 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, + 97, 44, 45, 46, 47, 48, 49, -1, 51, 52, + 53, 54, -1, 56, -1, -1, -1, -1, -1, 62, + -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, + -1, -1, -1, 96, 97, 44, 45, 46, 47, 48, + 49, -1, 51, 52, 53, 54, -1, 56, -1, -1, + -1, -1, -1, 62, -1, -1, 65, 66, 67, -1, + -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, + 89, 90, -1, -1, -1, -1, -1, 96, 97, 44, + 45, 46, 47, 48, 49, -1, 51, 52, 53, 54, + -1, -1, -1, 58, -1, -1, -1, 62, -1, -1, + 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, + 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, + -1, 96, 97, 44, 45, 46, 47, 48, 49, -1, + 51, 52, 53, 54, -1, -1, -1, -1, 59, -1, + -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, + 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, + -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, + 47, 48, 49, -1, 51, 52, 53, 54, -1, -1, + -1, 58, -1, -1, -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, @@ -1331,33 +1399,6 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, 47, 48, 49, -1, 51, 52, - 53, 54, -1, -1, -1, 58, -1, -1, -1, 62, - -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, - -1, -1, -1, 96, 97, 44, 45, 46, 47, 48, - 49, -1, 51, 52, 53, 54, -1, -1, -1, -1, - 59, -1, -1, 62, -1, -1, 65, 66, 67, -1, - -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, - 89, 90, -1, -1, -1, -1, -1, 96, 97, 44, - 45, 46, 47, 48, 49, -1, 51, 52, 53, 54, - -1, -1, -1, 58, -1, -1, -1, 62, -1, -1, - 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, - 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, - -1, 96, 97, 44, 45, 46, 47, 48, 49, -1, - 51, 52, 53, 54, -1, 56, -1, -1, -1, -1, - -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, - 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, - -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, - 47, 48, 49, -1, 51, 52, 53, 54, -1, 56, - -1, -1, -1, -1, -1, 62, -1, -1, 65, 66, - 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, - 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, - 97, 44, 45, 46, 47, 48, 49, -1, 51, 52, 53, 54, -1, -1, -1, -1, 59, -1, -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1374,34 +1415,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, 47, 48, 49, -1, - 51, 52, 53, 54, -1, -1, -1, -1, 59, -1, - -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, - 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, - -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, - 47, 48, 49, -1, 51, 52, 53, 54, -1, 56, - -1, -1, -1, -1, -1, 62, -1, -1, 65, 66, - 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, - 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, - 97, 44, 45, 46, 47, 48, 49, -1, 51, 52, - 53, 54, -1, 56, -1, -1, -1, -1, -1, 62, - -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, - -1, -1, -1, 96, 97, 44, 45, 46, 47, 48, - 49, -1, 51, 52, 53, 54, -1, 56, -1, -1, - -1, -1, -1, 62, -1, -1, 65, 66, 67, -1, - -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, - 89, 90, -1, -1, -1, -1, -1, 96, 97, 44, - 45, 46, 47, 48, 49, -1, 51, 52, 53, 54, - -1, -1, -1, -1, 59, -1, -1, 62, -1, -1, - 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, - 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, - -1, 96, 97, 44, 45, 46, 47, 48, 49, -1, - 51, 52, 53, 54, -1, -1, -1, -1, 59, -1, + 51, 52, 53, 54, -1, 56, -1, -1, -1, -1, -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, @@ -1423,40 +1437,45 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, 47, 48, 49, -1, 51, 52, 53, 54, - -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, + -1, -1, -1, -1, 59, -1, -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, 47, 48, 49, -1, - 51, 52, 53, 54, -1, -1, -1, -1, -1, -1, + 51, 52, 53, 54, -1, -1, -1, -1, 59, -1, -1, 62, -1, -1, 65, 66, 67, -1, -1, -1, - 71, 72, 44, 45, 46, 47, 48, 49, -1, 51, - 52, 53, 54, 84, 85, 86, 87, 88, 89, 90, - 62, -1, -1, 65, 66, 67, 97, -1, -1, 71, - 72, 44, 45, 46, 47, 48, 49, -1, 51, 52, - 53, 54, 84, 85, 86, 87, 88, -1, 90, 62, - -1, -1, 65, 66, 67, 97, -1, -1, 71, 72, - 44, 45, 46, 47, 48, 49, -1, 51, -1, 53, - 54, 84, 85, 86, 87, -1, -1, 90, 62, -1, + 71, 72, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, + -1, -1, -1, -1, -1, 96, 97, 44, 45, 46, + 47, 48, 49, -1, 51, 52, 53, 54, -1, -1, + -1, -1, -1, -1, -1, 62, -1, -1, 65, 66, + 67, -1, -1, -1, 71, 72, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 84, 85, 86, + 87, 88, 89, 90, -1, -1, -1, -1, -1, 96, + 97, 44, 45, 46, 47, 48, 49, -1, 51, 52, + 53, 54, -1, -1, -1, -1, -1, -1, -1, 62, + -1, -1, 65, 66, 67, -1, -1, -1, 71, 72, + 44, 45, 46, 47, 48, 49, -1, 51, 52, 53, + 54, 84, 85, 86, 87, 88, 89, 90, 62, -1, -1, 65, 66, 67, 97, -1, -1, 71, 72, 44, - 45, 46, 47, 48, 49, -1, 51, -1, 53, 54, - 84, 85, 86, 87, -1, -1, 90, -1, -1, -1, + 45, 46, 47, 48, 49, -1, 51, 52, 53, 54, + 84, 85, 86, 87, 88, -1, 90, 62, -1, -1, 65, 66, 67, 97, -1, -1, 71, 72, 44, 45, - 46, 47, 48, 49, -1, 51, -1, -1, 54, 84, - 85, 86, 87, -1, -1, 90, -1, -1, -1, 65, + 46, 47, 48, 49, -1, 51, -1, 53, 54, 84, + 85, 86, 87, -1, -1, 90, 62, -1, -1, 65, 66, 67, 97, -1, -1, 71, 72, 44, 45, 46, - 47, 48, 49, -1, 51, -1, -1, 54, 84, 85, + 47, 48, 49, -1, 51, -1, 53, 54, 84, 85, 86, 87, -1, -1, 90, -1, -1, -1, 65, 66, 67, 97, -1, -1, 71, 72, 44, 45, 46, 47, - -1, -1, -1, 51, -1, -1, 54, 50, -1, 86, + 48, 49, -1, 51, -1, -1, 54, 84, 85, 86, 87, -1, -1, 90, -1, -1, -1, 65, 66, 67, - 97, -1, -1, 71, 72, 68, 69, 50, -1, -1, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - -1, -1, 90, -1, -1, 68, 69, -1, -1, 97, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 44, 45, 46, 47, -1, -1, -1, 51, -1, -1, - 54, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 66, 67, -1, -1, -1, 71, 72 + 97, -1, -1, 71, 72, 44, 45, 46, 47, 48, + 49, -1, 51, -1, -1, 54, 84, 85, 86, 87, + -1, -1, 90, -1, -1, -1, 65, 66, 67, 97, + -1, -1, 71, 72, 44, 45, 46, 47, -1, -1, + -1, 51, -1, -1, 54, -1, -1, 86, 87, -1, + -1, 90, -1, -1, -1, -1, 66, 67, 97, -1, + -1, 71, 72 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1466,41 +1485,42 @@ static const yytype_uint8 yystos[] = 0, 101, 102, 0, 3, 5, 6, 7, 9, 11, 13, 14, 15, 20, 21, 22, 24, 25, 27, 29, 32, 35, 36, 37, 38, 40, 41, 42, 43, 45, - 46, 55, 63, 64, 103, 104, 107, 108, 111, 112, - 119, 122, 123, 124, 125, 126, 127, 128, 129, 132, - 133, 134, 38, 38, 55, 130, 130, 59, 59, 55, - 7, 36, 59, 127, 132, 55, 60, 107, 118, 55, - 55, 55, 130, 55, 55, 38, 55, 50, 50, 68, + 46, 55, 63, 64, 103, 104, 107, 108, 112, 113, + 120, 123, 124, 125, 126, 127, 128, 129, 130, 133, + 134, 135, 38, 38, 55, 131, 131, 59, 59, 55, + 7, 36, 59, 128, 133, 55, 60, 107, 119, 55, + 55, 55, 131, 55, 55, 38, 55, 50, 50, 68, 69, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 92, 131, 55, 91, 127, 127, 127, 127, 127, + 82, 92, 132, 55, 91, 128, 128, 128, 128, 128, 59, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 62, 65, 66, 67, 71, 72, 84, 85, 86, - 87, 88, 89, 90, 96, 97, 50, 131, 55, 91, - 127, 55, 55, 127, 59, 127, 106, 14, 59, 127, - 37, 37, 55, 127, 127, 60, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 140, 127, 135, 136, 38, 56, 127, 127, 127, 127, - 127, 127, 38, 127, 127, 127, 127, 127, 130, 130, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 60, 127, 37, 109, 110, 38, 56, 92, 114, - 127, 114, 56, 56, 61, 107, 55, 59, 127, 59, - 23, 23, 127, 56, 56, 105, 108, 56, 57, 57, - 59, 57, 99, 56, 57, 55, 55, 92, 58, 136, - 56, 57, 55, 114, 58, 113, 113, 118, 118, 127, - 56, 127, 59, 59, 127, 127, 127, 113, 60, 60, - 61, 108, 41, 127, 127, 50, 131, 127, 135, 135, - 140, 127, 61, 60, 37, 109, 99, 38, 57, 115, - 115, 8, 56, 118, 56, 56, 127, 56, 127, 59, - 56, 56, 56, 26, 120, 120, 59, 56, 59, 127, - 56, 56, 99, 106, 56, 113, 136, 56, 56, 118, - 118, 118, 56, 118, 56, 56, 127, 118, 118, 60, - 121, 127, 61, 61, 61, 60, 115, 60, 60, 118, - 118, 118, 56, 24, 38, 39, 137, 138, 139, 28, - 58, 106, 56, 112, 116, 117, 138, 116, 118, 50, - 50, 92, 38, 61, 139, 127, 106, 61, 60, 59, - 61, 112, 117, 61, 127, 127, 140, 50, 92, 59, - 19, 120, 116, 59, 59, 59, 99, 127, 140, 58, - 61, 50, 59, 99, 106, 127, 50, 59, 127, 59 + 87, 88, 89, 90, 96, 97, 50, 132, 55, 91, + 128, 55, 55, 128, 59, 128, 106, 14, 59, 128, + 37, 37, 55, 128, 128, 60, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 141, 128, 136, 137, 38, 56, 128, 128, 128, 128, + 128, 128, 38, 128, 128, 128, 128, 128, 131, 131, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 60, 128, 37, 109, 110, 111, 38, 56, 92, + 115, 128, 115, 56, 56, 61, 107, 55, 59, 128, + 59, 23, 23, 128, 56, 56, 105, 108, 56, 57, + 57, 59, 57, 99, 56, 57, 55, 55, 92, 58, + 137, 50, 96, 56, 57, 55, 115, 58, 114, 114, + 119, 119, 128, 56, 128, 59, 59, 128, 128, 128, + 114, 60, 60, 61, 108, 41, 128, 128, 50, 132, + 128, 136, 136, 141, 128, 61, 128, 50, 60, 111, + 109, 99, 38, 57, 116, 116, 8, 56, 119, 56, + 56, 128, 56, 128, 59, 56, 56, 56, 26, 121, + 121, 59, 56, 59, 128, 56, 56, 99, 128, 106, + 56, 114, 137, 56, 56, 119, 119, 119, 56, 119, + 56, 56, 128, 119, 119, 60, 122, 128, 61, 61, + 61, 60, 116, 60, 60, 119, 119, 119, 56, 24, + 38, 39, 138, 139, 140, 28, 58, 106, 56, 113, + 117, 118, 139, 117, 119, 50, 50, 92, 38, 61, + 140, 128, 106, 61, 60, 59, 61, 113, 118, 61, + 128, 128, 141, 50, 92, 59, 19, 121, 117, 59, + 59, 59, 99, 128, 141, 58, 61, 50, 59, 99, + 106, 128, 50, 59, 128, 59 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -1509,20 +1529,20 @@ static const yytype_uint8 yyr1[] = 0, 100, 101, 102, 102, 103, 103, 103, 104, 105, 105, 106, 106, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 108, 108, 109, - 109, 110, 110, 111, 112, 112, 112, 112, 112, 112, - 113, 113, 114, 114, 115, 115, 116, 116, 116, 116, - 117, 117, 118, 118, 119, 119, 120, 120, 120, 121, - 121, 122, 122, 123, 123, 124, 124, 124, 124, 124, - 124, 124, 124, 125, 125, 126, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 128, 128, 129, 129, 130, - 130, 131, 131, 131, 131, 131, 131, 131, 131, 131, - 131, 131, 131, 132, 132, 132, 132, 132, 132, 132, - 132, 132, 132, 133, 133, 133, 134, 134, 135, 135, - 136, 136, 137, 137, 138, 138, 139, 139, 139, 139, - 139, 140, 140 + 109, 110, 110, 111, 111, 111, 111, 112, 113, 113, + 113, 113, 113, 113, 114, 114, 115, 115, 116, 116, + 117, 117, 117, 117, 118, 118, 119, 119, 120, 120, + 121, 121, 121, 122, 122, 123, 123, 124, 124, 125, + 125, 125, 125, 125, 125, 125, 125, 126, 126, 127, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + 128, 128, 128, 128, 128, 128, 128, 128, 128, 129, + 129, 130, 130, 131, 131, 132, 132, 132, 132, 132, + 132, 132, 132, 132, 132, 132, 132, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 134, 134, 134, + 135, 135, 136, 136, 137, 137, 138, 138, 139, 139, + 140, 140, 140, 140, 140, 141, 141 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1531,20 +1551,20 @@ static const yytype_int8 yyr2[] = 0, 2, 1, 0, 2, 1, 1, 1, 6, 1, 2, 0, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 4, 6, 1, 8, 10, 0, - 1, 1, 3, 10, 10, 7, 12, 9, 10, 7, - 0, 2, 0, 1, 0, 2, 0, 1, 1, 2, - 2, 3, 3, 1, 7, 7, 4, 7, 5, 1, - 3, 5, 7, 5, 6, 9, 8, 8, 7, 8, - 7, 7, 6, 7, 7, 1, 1, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 1, 5, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 4, 3, 6, 3, 3, 1, - 3, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 1, 1, 3, 6, 2, 5, - 2, 3, 5, 4, 6, 6, 4, 6, 0, 1, - 1, 3, 0, 1, 1, 2, 4, 5, 4, 7, - 8, 1, 3 + 1, 1, 3, 1, 2, 3, 4, 10, 10, 7, + 12, 9, 10, 7, 0, 2, 0, 1, 0, 2, + 0, 1, 1, 2, 2, 3, 3, 1, 7, 7, + 4, 7, 5, 1, 3, 5, 7, 5, 6, 9, + 8, 8, 7, 8, 7, 7, 6, 7, 7, 1, + 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 1, 5, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 4, 3, + 6, 3, 3, 1, 3, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, + 3, 6, 2, 5, 2, 3, 5, 4, 6, 6, + 4, 6, 0, 1, 1, 3, 0, 1, 1, 2, + 4, 5, 4, 7, 8, 1, 3 }; @@ -2192,937 +2212,969 @@ yyreduce: switch (yyn) { case 2: /* start: decl_list */ -#line 167 "CMDgram.y" +#line 168 "CMDgram.y" { } -#line 2198 "CMDgram.c" +#line 2218 "CMDgram.c" break; case 3: /* decl_list: %empty */ -#line 172 "CMDgram.y" +#line 173 "CMDgram.y" { (yyval.stmt) = nil; } -#line 2204 "CMDgram.c" +#line 2224 "CMDgram.c" break; case 4: /* decl_list: decl_list decl */ -#line 174 "CMDgram.y" +#line 175 "CMDgram.y" { if(!Script::gStatementList) { Script::gStatementList = (yyvsp[0].stmt); } else { Script::gStatementList->append((yyvsp[0].stmt)); } } -#line 2210 "CMDgram.c" +#line 2230 "CMDgram.c" break; case 5: /* decl: stmt */ -#line 179 "CMDgram.y" +#line 180 "CMDgram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2216 "CMDgram.c" +#line 2236 "CMDgram.c" break; case 6: /* decl: fn_decl_stmt */ -#line 181 "CMDgram.y" +#line 182 "CMDgram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2222 "CMDgram.c" +#line 2242 "CMDgram.c" break; case 7: /* decl: package_decl */ -#line 183 "CMDgram.y" +#line 184 "CMDgram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2228 "CMDgram.c" +#line 2248 "CMDgram.c" break; case 8: /* package_decl: rwPACKAGE IDENT '{' fn_decl_list '}' ';' */ -#line 188 "CMDgram.y" +#line 189 "CMDgram.y" { (yyval.stmt) = (yyvsp[-2].stmt); for(StmtNode *walk = ((yyvsp[-2].stmt));walk;walk = walk->getNext() ) walk->setPackage((yyvsp[-4].s).value); } -#line 2234 "CMDgram.c" +#line 2254 "CMDgram.c" break; case 9: /* fn_decl_list: fn_decl_stmt */ -#line 193 "CMDgram.y" +#line 194 "CMDgram.y" { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2240 "CMDgram.c" +#line 2260 "CMDgram.c" break; case 10: /* fn_decl_list: fn_decl_list fn_decl_stmt */ -#line 195 "CMDgram.y" +#line 196 "CMDgram.y" { (yyval.stmt) = (yyvsp[-1].stmt); ((yyvsp[-1].stmt))->append((yyvsp[0].stmt)); } -#line 2246 "CMDgram.c" +#line 2266 "CMDgram.c" break; case 11: /* statement_list: %empty */ -#line 200 "CMDgram.y" +#line 201 "CMDgram.y" { (yyval.stmt) = nil; } -#line 2252 "CMDgram.c" +#line 2272 "CMDgram.c" break; case 12: /* statement_list: statement_list stmt */ -#line 202 "CMDgram.y" +#line 203 "CMDgram.y" { if(!(yyvsp[-1].stmt)) { (yyval.stmt) = (yyvsp[0].stmt); } else { ((yyvsp[-1].stmt))->append((yyvsp[0].stmt)); (yyval.stmt) = (yyvsp[-1].stmt); } } -#line 2258 "CMDgram.c" +#line 2278 "CMDgram.c" break; case 19: /* stmt: rwBREAK ';' */ -#line 213 "CMDgram.y" +#line 214 "CMDgram.y" { (yyval.stmt) = BreakStmtNode::alloc( (yyvsp[-1].i).lineNumber ); } -#line 2264 "CMDgram.c" +#line 2284 "CMDgram.c" break; case 20: /* stmt: rwCONTINUE ';' */ -#line 215 "CMDgram.y" +#line 216 "CMDgram.y" { (yyval.stmt) = ContinueStmtNode::alloc( (yyvsp[-1].i).lineNumber ); } -#line 2270 "CMDgram.c" +#line 2290 "CMDgram.c" break; case 21: /* stmt: rwRETURN ';' */ -#line 217 "CMDgram.y" +#line 218 "CMDgram.y" { (yyval.stmt) = ReturnStmtNode::alloc( (yyvsp[-1].i).lineNumber, NULL ); } -#line 2276 "CMDgram.c" +#line 2296 "CMDgram.c" break; case 22: /* stmt: rwRETURN expr ';' */ -#line 219 "CMDgram.y" +#line 220 "CMDgram.y" { (yyval.stmt) = ReturnStmtNode::alloc( (yyvsp[-2].i).lineNumber, (yyvsp[-1].expr) ); } -#line 2282 "CMDgram.c" +#line 2302 "CMDgram.c" break; case 23: /* stmt: expression_stmt ';' */ -#line 221 "CMDgram.y" +#line 222 "CMDgram.y" { (yyval.stmt) = (yyvsp[-1].stmt); } -#line 2288 "CMDgram.c" +#line 2308 "CMDgram.c" break; case 24: /* stmt: TTAG '=' expr ';' */ -#line 223 "CMDgram.y" +#line 224 "CMDgram.y" { (yyval.stmt) = TTagSetStmtNode::alloc( (yyvsp[-3].s).lineNumber, (yyvsp[-3].s).value, (yyvsp[-1].expr), NULL ); } -#line 2294 "CMDgram.c" +#line 2314 "CMDgram.c" break; case 25: /* stmt: TTAG '=' expr ',' expr ';' */ -#line 225 "CMDgram.y" +#line 226 "CMDgram.y" { (yyval.stmt) = TTagSetStmtNode::alloc( (yyvsp[-5].s).lineNumber, (yyvsp[-5].s).value, (yyvsp[-3].expr), (yyvsp[-1].expr) ); } -#line 2300 "CMDgram.c" +#line 2320 "CMDgram.c" break; case 26: /* stmt: DOCBLOCK */ -#line 227 "CMDgram.y" +#line 228 "CMDgram.y" { (yyval.stmt) = StrConstNode::alloc( (yyvsp[0].str).lineNumber, (yyvsp[0].str).value, false, true ); } -#line 2306 "CMDgram.c" +#line 2326 "CMDgram.c" break; case 27: /* fn_decl_stmt: rwDEFINE IDENT '(' var_list_decl ')' '{' statement_list '}' */ -#line 232 "CMDgram.y" +#line 233 "CMDgram.y" { (yyval.stmt) = FunctionDeclStmtNode::alloc( (yyvsp[-7].i).lineNumber, (yyvsp[-6].s).value, NULL, (yyvsp[-4].var), (yyvsp[-1].stmt) ); } -#line 2312 "CMDgram.c" +#line 2332 "CMDgram.c" break; case 28: /* fn_decl_stmt: rwDEFINE IDENT opCOLONCOLON IDENT '(' var_list_decl ')' '{' statement_list '}' */ -#line 234 "CMDgram.y" +#line 235 "CMDgram.y" { (yyval.stmt) = FunctionDeclStmtNode::alloc( (yyvsp[-9].i).lineNumber, (yyvsp[-6].s).value, (yyvsp[-8].s).value, (yyvsp[-4].var), (yyvsp[-1].stmt) ); } -#line 2318 "CMDgram.c" +#line 2338 "CMDgram.c" break; case 29: /* var_list_decl: %empty */ -#line 239 "CMDgram.y" +#line 240 "CMDgram.y" { (yyval.var) = NULL; } -#line 2324 "CMDgram.c" +#line 2344 "CMDgram.c" break; case 30: /* var_list_decl: var_list */ -#line 241 "CMDgram.y" +#line 242 "CMDgram.y" { (yyval.var) = (yyvsp[0].var); } -#line 2330 "CMDgram.c" +#line 2350 "CMDgram.c" break; - case 31: /* var_list: VAR */ -#line 246 "CMDgram.y" - { (yyval.var) = VarNode::alloc( (yyvsp[0].s).lineNumber, (yyvsp[0].s).value, NULL ); } -#line 2336 "CMDgram.c" + case 31: /* var_list: param */ +#line 247 "CMDgram.y" + { (yyval.var) = (yyvsp[0].var); } +#line 2356 "CMDgram.c" break; - case 32: /* var_list: var_list ',' VAR */ -#line 248 "CMDgram.y" - { (yyval.var) = (yyvsp[-2].var); ((StmtNode*)((yyvsp[-2].var)))->append((StmtNode*)VarNode::alloc( (yyvsp[0].s).lineNumber, (yyvsp[0].s).value, NULL ) ); } -#line 2342 "CMDgram.c" + case 32: /* var_list: var_list ',' param */ +#line 249 "CMDgram.y" + { (yyval.var) = (yyvsp[-2].var); ((StmtNode*)((yyvsp[-2].var)))->append((StmtNode*)(yyvsp[0].var) ); } +#line 2362 "CMDgram.c" break; - case 33: /* datablock_decl: rwDATABLOCK class_name_expr '(' expr parent_block ')' '{' slot_assign_list_opt '}' ';' */ -#line 253 "CMDgram.y" - { (yyval.stmt) = ObjectDeclNode::alloc( (yyvsp[-9].i).lineNumber, (yyvsp[-8].expr), (yyvsp[-6].expr), NULL, (yyvsp[-5].s).value, (yyvsp[-2].slist), NULL, true, false, false); } -#line 2348 "CMDgram.c" + case 33: /* param: VAR */ +#line 254 "CMDgram.y" + { + (yyval.var) = VarNode::allocParam((yyvsp[0].s).lineNumber, (yyvsp[0].s).value, NULL); + } +#line 2370 "CMDgram.c" break; - case 34: /* object_decl: rwDECLARE class_name_expr '(' object_name parent_block object_args ')' '{' object_declare_block '}' */ + case 34: /* param: VAR '?' */ #line 258 "CMDgram.y" - { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-9].i).lineNumber, (yyvsp[-8].expr), (yyvsp[-6].expr), (yyvsp[-4].expr), (yyvsp[-5].s).value, (yyvsp[-1].odcl).slots, (yyvsp[-1].odcl).decls, false, false, false); } -#line 2354 "CMDgram.c" - break; - - case 35: /* object_decl: rwDECLARE class_name_expr '(' object_name parent_block object_args ')' */ -#line 260 "CMDgram.y" - { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-6].i).lineNumber, (yyvsp[-5].expr), (yyvsp[-3].expr), (yyvsp[-1].expr), (yyvsp[-2].s).value, NULL, NULL, false, false, false); } -#line 2360 "CMDgram.c" - break; - - case 36: /* object_decl: rwDECLARE class_name_expr '(' '[' object_name ']' parent_block object_args ')' '{' object_declare_block '}' */ -#line 262 "CMDgram.y" - { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-11].i).lineNumber, (yyvsp[-10].expr), (yyvsp[-7].expr), (yyvsp[-4].expr), (yyvsp[-5].s).value, (yyvsp[-1].odcl).slots, (yyvsp[-1].odcl).decls, false, true, false); } -#line 2366 "CMDgram.c" - break; - - case 37: /* object_decl: rwDECLARE class_name_expr '(' '[' object_name ']' parent_block object_args ')' */ -#line 264 "CMDgram.y" - { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-8].i).lineNumber, (yyvsp[-7].expr), (yyvsp[-4].expr), (yyvsp[-1].expr), (yyvsp[-2].s).value, NULL, NULL, false, true, false); } -#line 2372 "CMDgram.c" - break; - - case 38: /* object_decl: rwDECLARESINGLETON class_name_expr '(' object_name parent_block object_args ')' '{' object_declare_block '}' */ -#line 266 "CMDgram.y" - { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-9].i).lineNumber, (yyvsp[-8].expr), (yyvsp[-6].expr), (yyvsp[-4].expr), (yyvsp[-5].s).value, (yyvsp[-1].odcl).slots, (yyvsp[-1].odcl).decls, false, false, true); } + { + (yyval.var) = VarNode::allocParam((yyvsp[-1].s).lineNumber, (yyvsp[-1].s).value, NULL); + } #line 2378 "CMDgram.c" break; - case 39: /* object_decl: rwDECLARESINGLETON class_name_expr '(' object_name parent_block object_args ')' */ -#line 268 "CMDgram.y" - { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-6].i).lineNumber, (yyvsp[-5].expr), (yyvsp[-3].expr), (yyvsp[-1].expr), (yyvsp[-2].s).value, NULL, NULL, false, false, true); } -#line 2384 "CMDgram.c" + case 35: /* param: VAR '=' expr */ +#line 262 "CMDgram.y" + { + (yyval.var) = VarNode::allocParam((yyvsp[-2].s).lineNumber, (yyvsp[-2].s).value, (yyvsp[0].expr)); + } +#line 2386 "CMDgram.c" break; - case 40: /* parent_block: %empty */ + case 36: /* param: VAR '?' '=' expr */ +#line 266 "CMDgram.y" + { + (yyval.var) = VarNode::allocParam((yyvsp[-3].s).lineNumber, (yyvsp[-3].s).value, (yyvsp[0].expr)); + } +#line 2394 "CMDgram.c" + break; + + case 37: /* datablock_decl: rwDATABLOCK class_name_expr '(' expr parent_block ')' '{' slot_assign_list_opt '}' ';' */ #line 273 "CMDgram.y" - { (yyval.s).value = NULL; } -#line 2390 "CMDgram.c" + { (yyval.stmt) = ObjectDeclNode::alloc( (yyvsp[-9].i).lineNumber, (yyvsp[-8].expr), (yyvsp[-6].expr), NULL, (yyvsp[-5].s).value, (yyvsp[-2].slist), NULL, true, false, false); } +#line 2400 "CMDgram.c" break; - case 41: /* parent_block: ':' IDENT */ -#line 275 "CMDgram.y" - { (yyval.s) = (yyvsp[0].s); } -#line 2396 "CMDgram.c" + case 38: /* object_decl: rwDECLARE class_name_expr '(' object_name parent_block object_args ')' '{' object_declare_block '}' */ +#line 278 "CMDgram.y" + { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-9].i).lineNumber, (yyvsp[-8].expr), (yyvsp[-6].expr), (yyvsp[-4].expr), (yyvsp[-5].s).value, (yyvsp[-1].odcl).slots, (yyvsp[-1].odcl).decls, false, false, false); } +#line 2406 "CMDgram.c" break; - case 42: /* object_name: %empty */ + case 39: /* object_decl: rwDECLARE class_name_expr '(' object_name parent_block object_args ')' */ #line 280 "CMDgram.y" - { (yyval.expr) = StrConstNode::alloc( CodeBlock::smCurrentParser->getCurrentLine(), "", false); } -#line 2402 "CMDgram.c" + { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-6].i).lineNumber, (yyvsp[-5].expr), (yyvsp[-3].expr), (yyvsp[-1].expr), (yyvsp[-2].s).value, NULL, NULL, false, false, false); } +#line 2412 "CMDgram.c" break; - case 43: /* object_name: expr */ + case 40: /* object_decl: rwDECLARE class_name_expr '(' '[' object_name ']' parent_block object_args ')' '{' object_declare_block '}' */ #line 282 "CMDgram.y" - { (yyval.expr) = (yyvsp[0].expr); } -#line 2408 "CMDgram.c" + { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-11].i).lineNumber, (yyvsp[-10].expr), (yyvsp[-7].expr), (yyvsp[-4].expr), (yyvsp[-5].s).value, (yyvsp[-1].odcl).slots, (yyvsp[-1].odcl).decls, false, true, false); } +#line 2418 "CMDgram.c" break; - case 44: /* object_args: %empty */ -#line 287 "CMDgram.y" - { (yyval.expr) = NULL; } -#line 2414 "CMDgram.c" + case 41: /* object_decl: rwDECLARE class_name_expr '(' '[' object_name ']' parent_block object_args ')' */ +#line 284 "CMDgram.y" + { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-8].i).lineNumber, (yyvsp[-7].expr), (yyvsp[-4].expr), (yyvsp[-1].expr), (yyvsp[-2].s).value, NULL, NULL, false, true, false); } +#line 2424 "CMDgram.c" break; - case 45: /* object_args: ',' expr_list */ -#line 289 "CMDgram.y" - { (yyval.expr) = (yyvsp[0].expr); } -#line 2420 "CMDgram.c" + case 42: /* object_decl: rwDECLARESINGLETON class_name_expr '(' object_name parent_block object_args ')' '{' object_declare_block '}' */ +#line 286 "CMDgram.y" + { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-9].i).lineNumber, (yyvsp[-8].expr), (yyvsp[-6].expr), (yyvsp[-4].expr), (yyvsp[-5].s).value, (yyvsp[-1].odcl).slots, (yyvsp[-1].odcl).decls, false, false, true); } +#line 2430 "CMDgram.c" break; - case 46: /* object_declare_block: %empty */ -#line 294 "CMDgram.y" - { (yyval.odcl).slots = NULL; (yyval.odcl).decls = NULL; } -#line 2426 "CMDgram.c" + case 43: /* object_decl: rwDECLARESINGLETON class_name_expr '(' object_name parent_block object_args ')' */ +#line 288 "CMDgram.y" + { (yyval.od) = ObjectDeclNode::alloc( (yyvsp[-6].i).lineNumber, (yyvsp[-5].expr), (yyvsp[-3].expr), (yyvsp[-1].expr), (yyvsp[-2].s).value, NULL, NULL, false, false, true); } +#line 2436 "CMDgram.c" break; - case 47: /* object_declare_block: slot_assign_list */ -#line 296 "CMDgram.y" - { (yyval.odcl).slots = (yyvsp[0].slist); (yyval.odcl).decls = NULL; } -#line 2432 "CMDgram.c" + case 44: /* parent_block: %empty */ +#line 293 "CMDgram.y" + { (yyval.s).value = NULL; } +#line 2442 "CMDgram.c" break; - case 48: /* object_declare_block: object_decl_list */ -#line 298 "CMDgram.y" - { (yyval.odcl).slots = NULL; (yyval.odcl).decls = (yyvsp[0].od); } -#line 2438 "CMDgram.c" + case 45: /* parent_block: ':' IDENT */ +#line 295 "CMDgram.y" + { (yyval.s) = (yyvsp[0].s); } +#line 2448 "CMDgram.c" break; - case 49: /* object_declare_block: slot_assign_list object_decl_list */ + case 46: /* object_name: %empty */ #line 300 "CMDgram.y" - { (yyval.odcl).slots = (yyvsp[-1].slist); (yyval.odcl).decls = (yyvsp[0].od); } -#line 2444 "CMDgram.c" + { (yyval.expr) = StrConstNode::alloc( CodeBlock::smCurrentParser->getCurrentLine(), "", false); } +#line 2454 "CMDgram.c" break; - case 50: /* object_decl_list: object_decl ';' */ -#line 305 "CMDgram.y" - { (yyval.od) = (yyvsp[-1].od); } -#line 2450 "CMDgram.c" - break; - - case 51: /* object_decl_list: object_decl_list object_decl ';' */ -#line 307 "CMDgram.y" - { (yyvsp[-2].od)->append((yyvsp[-1].od)); (yyval.od) = (yyvsp[-2].od); } -#line 2456 "CMDgram.c" - break; - - case 52: /* stmt_block: '{' statement_list '}' */ -#line 312 "CMDgram.y" - { (yyval.stmt) = (yyvsp[-1].stmt); } -#line 2462 "CMDgram.c" - break; - - case 53: /* stmt_block: stmt */ -#line 314 "CMDgram.y" - { (yyval.stmt) = (yyvsp[0].stmt); } -#line 2468 "CMDgram.c" - break; - - case 54: /* switch_stmt: rwSWITCH '(' expr ')' '{' case_block '}' */ -#line 319 "CMDgram.y" - { (yyval.stmt) = (yyvsp[-1].ifnode); (yyvsp[-1].ifnode)->propagateSwitchExpr((yyvsp[-4].expr), false); } -#line 2474 "CMDgram.c" - break; - - case 55: /* switch_stmt: rwSWITCHSTR '(' expr ')' '{' case_block '}' */ -#line 321 "CMDgram.y" - { (yyval.stmt) = (yyvsp[-1].ifnode); (yyvsp[-1].ifnode)->propagateSwitchExpr((yyvsp[-4].expr), true); } -#line 2480 "CMDgram.c" - break; - - case 56: /* case_block: rwCASE case_expr ':' statement_list */ -#line 326 "CMDgram.y" - { (yyval.ifnode) = IfStmtNode::alloc( (yyvsp[-3].i).lineNumber, (yyvsp[-2].expr), (yyvsp[0].stmt), NULL, false); } -#line 2486 "CMDgram.c" - break; - - case 57: /* case_block: rwCASE case_expr ':' statement_list rwDEFAULT ':' statement_list */ -#line 328 "CMDgram.y" - { (yyval.ifnode) = IfStmtNode::alloc( (yyvsp[-6].i).lineNumber, (yyvsp[-5].expr), (yyvsp[-3].stmt), (yyvsp[0].stmt), false); } -#line 2492 "CMDgram.c" - break; - - case 58: /* case_block: rwCASE case_expr ':' statement_list case_block */ -#line 330 "CMDgram.y" - { (yyval.ifnode) = IfStmtNode::alloc( (yyvsp[-4].i).lineNumber, (yyvsp[-3].expr), (yyvsp[-1].stmt), (yyvsp[0].ifnode), true); } -#line 2498 "CMDgram.c" - break; - - case 59: /* case_expr: expr */ -#line 335 "CMDgram.y" - { (yyval.expr) = (yyvsp[0].expr);} -#line 2504 "CMDgram.c" - break; - - case 60: /* case_expr: case_expr rwCASEOR expr */ -#line 337 "CMDgram.y" - { ((yyvsp[-2].expr))->append((yyvsp[0].expr)); (yyval.expr)=(yyvsp[-2].expr); } -#line 2510 "CMDgram.c" - break; - - case 61: /* if_stmt: rwIF '(' expr ')' stmt_block */ -#line 342 "CMDgram.y" - { (yyval.stmt) = IfStmtNode::alloc((yyvsp[-4].i).lineNumber, (yyvsp[-2].expr), (yyvsp[0].stmt), NULL, false); } -#line 2516 "CMDgram.c" - break; - - case 62: /* if_stmt: rwIF '(' expr ')' stmt_block rwELSE stmt_block */ -#line 344 "CMDgram.y" - { (yyval.stmt) = IfStmtNode::alloc((yyvsp[-6].i).lineNumber, (yyvsp[-4].expr), (yyvsp[-2].stmt), (yyvsp[0].stmt), false); } -#line 2522 "CMDgram.c" - break; - - case 63: /* while_stmt: rwWHILE '(' expr ')' stmt_block */ -#line 349 "CMDgram.y" - { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-4].i).lineNumber, nil, (yyvsp[-2].expr), nil, (yyvsp[0].stmt), false); } -#line 2528 "CMDgram.c" - break; - - case 64: /* while_stmt: rwDO stmt_block rwWHILE '(' expr ')' */ -#line 351 "CMDgram.y" - { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-3].i).lineNumber, nil, (yyvsp[-1].expr), nil, (yyvsp[-4].stmt), true); } -#line 2534 "CMDgram.c" - break; - - case 65: /* for_stmt: rwFOR '(' expr ';' expr ';' expr ')' stmt_block */ -#line 356 "CMDgram.y" - { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-8].i).lineNumber, (yyvsp[-6].expr), (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].stmt), false); } -#line 2540 "CMDgram.c" - break; - - case 66: /* for_stmt: rwFOR '(' expr ';' expr ';' ')' stmt_block */ -#line 358 "CMDgram.y" - { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-7].i).lineNumber, (yyvsp[-5].expr), (yyvsp[-3].expr), NULL, (yyvsp[0].stmt), false); } -#line 2546 "CMDgram.c" - break; - - case 67: /* for_stmt: rwFOR '(' expr ';' ';' expr ')' stmt_block */ -#line 360 "CMDgram.y" - { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-7].i).lineNumber, (yyvsp[-5].expr), NULL, (yyvsp[-2].expr), (yyvsp[0].stmt), false); } -#line 2552 "CMDgram.c" - break; - - case 68: /* for_stmt: rwFOR '(' expr ';' ';' ')' stmt_block */ -#line 362 "CMDgram.y" - { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-6].i).lineNumber, (yyvsp[-4].expr), NULL, NULL, (yyvsp[0].stmt), false); } -#line 2558 "CMDgram.c" - break; - - case 69: /* for_stmt: rwFOR '(' ';' expr ';' expr ')' stmt_block */ -#line 364 "CMDgram.y" - { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-7].i).lineNumber, NULL, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].stmt), false); } -#line 2564 "CMDgram.c" - break; - - case 70: /* for_stmt: rwFOR '(' ';' expr ';' ')' stmt_block */ -#line 366 "CMDgram.y" - { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-6].i).lineNumber, NULL, (yyvsp[-3].expr), NULL, (yyvsp[0].stmt), false); } -#line 2570 "CMDgram.c" - break; - - case 71: /* for_stmt: rwFOR '(' ';' ';' expr ')' stmt_block */ -#line 368 "CMDgram.y" - { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-6].i).lineNumber, NULL, NULL, (yyvsp[-2].expr), (yyvsp[0].stmt), false); } -#line 2576 "CMDgram.c" - break; - - case 72: /* for_stmt: rwFOR '(' ';' ';' ')' stmt_block */ -#line 370 "CMDgram.y" - { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-5].i).lineNumber, NULL, NULL, NULL, (yyvsp[0].stmt), false); } -#line 2582 "CMDgram.c" - break; - - case 73: /* foreach_stmt: rwFOREACH '(' VAR rwIN expr ')' stmt_block */ -#line 375 "CMDgram.y" - { (yyval.stmt) = IterStmtNode::alloc( (yyvsp[-6].i).lineNumber, (yyvsp[-4].s).value, (yyvsp[-2].expr), (yyvsp[0].stmt), false ); } -#line 2588 "CMDgram.c" - break; - - case 74: /* foreach_stmt: rwFOREACHSTR '(' VAR rwIN expr ')' stmt_block */ -#line 377 "CMDgram.y" - { (yyval.stmt) = IterStmtNode::alloc( (yyvsp[-6].i).lineNumber, (yyvsp[-4].s).value, (yyvsp[-2].expr), (yyvsp[0].stmt), true ); } -#line 2594 "CMDgram.c" - break; - - case 75: /* expression_stmt: stmt_expr */ -#line 382 "CMDgram.y" - { (yyval.stmt) = (yyvsp[0].expr); } -#line 2600 "CMDgram.c" - break; - - case 76: /* expr: stmt_expr */ -#line 387 "CMDgram.y" + case 47: /* object_name: expr */ +#line 302 "CMDgram.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2606 "CMDgram.c" +#line 2460 "CMDgram.c" break; - case 77: /* expr: '(' expr ')' */ -#line 389 "CMDgram.y" - { (yyval.expr) = (yyvsp[-1].expr); } -#line 2612 "CMDgram.c" + case 48: /* object_args: %empty */ +#line 307 "CMDgram.y" + { (yyval.expr) = NULL; } +#line 2466 "CMDgram.c" break; - case 78: /* expr: expr '^' expr */ -#line 391 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2618 "CMDgram.c" + case 49: /* object_args: ',' expr_list */ +#line 309 "CMDgram.y" + { (yyval.expr) = (yyvsp[0].expr); } +#line 2472 "CMDgram.c" break; - case 79: /* expr: expr '%' expr */ -#line 393 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2624 "CMDgram.c" + case 50: /* object_declare_block: %empty */ +#line 314 "CMDgram.y" + { (yyval.odcl).slots = NULL; (yyval.odcl).decls = NULL; } +#line 2478 "CMDgram.c" break; - case 80: /* expr: expr '&' expr */ + case 51: /* object_declare_block: slot_assign_list */ +#line 316 "CMDgram.y" + { (yyval.odcl).slots = (yyvsp[0].slist); (yyval.odcl).decls = NULL; } +#line 2484 "CMDgram.c" + break; + + case 52: /* object_declare_block: object_decl_list */ +#line 318 "CMDgram.y" + { (yyval.odcl).slots = NULL; (yyval.odcl).decls = (yyvsp[0].od); } +#line 2490 "CMDgram.c" + break; + + case 53: /* object_declare_block: slot_assign_list object_decl_list */ +#line 320 "CMDgram.y" + { (yyval.odcl).slots = (yyvsp[-1].slist); (yyval.odcl).decls = (yyvsp[0].od); } +#line 2496 "CMDgram.c" + break; + + case 54: /* object_decl_list: object_decl ';' */ +#line 325 "CMDgram.y" + { (yyval.od) = (yyvsp[-1].od); } +#line 2502 "CMDgram.c" + break; + + case 55: /* object_decl_list: object_decl_list object_decl ';' */ +#line 327 "CMDgram.y" + { (yyvsp[-2].od)->append((yyvsp[-1].od)); (yyval.od) = (yyvsp[-2].od); } +#line 2508 "CMDgram.c" + break; + + case 56: /* stmt_block: '{' statement_list '}' */ +#line 332 "CMDgram.y" + { (yyval.stmt) = (yyvsp[-1].stmt); } +#line 2514 "CMDgram.c" + break; + + case 57: /* stmt_block: stmt */ +#line 334 "CMDgram.y" + { (yyval.stmt) = (yyvsp[0].stmt); } +#line 2520 "CMDgram.c" + break; + + case 58: /* switch_stmt: rwSWITCH '(' expr ')' '{' case_block '}' */ +#line 339 "CMDgram.y" + { (yyval.stmt) = (yyvsp[-1].ifnode); (yyvsp[-1].ifnode)->propagateSwitchExpr((yyvsp[-4].expr), false); } +#line 2526 "CMDgram.c" + break; + + case 59: /* switch_stmt: rwSWITCHSTR '(' expr ')' '{' case_block '}' */ +#line 341 "CMDgram.y" + { (yyval.stmt) = (yyvsp[-1].ifnode); (yyvsp[-1].ifnode)->propagateSwitchExpr((yyvsp[-4].expr), true); } +#line 2532 "CMDgram.c" + break; + + case 60: /* case_block: rwCASE case_expr ':' statement_list */ +#line 346 "CMDgram.y" + { (yyval.ifnode) = IfStmtNode::alloc( (yyvsp[-3].i).lineNumber, (yyvsp[-2].expr), (yyvsp[0].stmt), NULL, false); } +#line 2538 "CMDgram.c" + break; + + case 61: /* case_block: rwCASE case_expr ':' statement_list rwDEFAULT ':' statement_list */ +#line 348 "CMDgram.y" + { (yyval.ifnode) = IfStmtNode::alloc( (yyvsp[-6].i).lineNumber, (yyvsp[-5].expr), (yyvsp[-3].stmt), (yyvsp[0].stmt), false); } +#line 2544 "CMDgram.c" + break; + + case 62: /* case_block: rwCASE case_expr ':' statement_list case_block */ +#line 350 "CMDgram.y" + { (yyval.ifnode) = IfStmtNode::alloc( (yyvsp[-4].i).lineNumber, (yyvsp[-3].expr), (yyvsp[-1].stmt), (yyvsp[0].ifnode), true); } +#line 2550 "CMDgram.c" + break; + + case 63: /* case_expr: expr */ +#line 355 "CMDgram.y" + { (yyval.expr) = (yyvsp[0].expr);} +#line 2556 "CMDgram.c" + break; + + case 64: /* case_expr: case_expr rwCASEOR expr */ +#line 357 "CMDgram.y" + { ((yyvsp[-2].expr))->append((yyvsp[0].expr)); (yyval.expr)=(yyvsp[-2].expr); } +#line 2562 "CMDgram.c" + break; + + case 65: /* if_stmt: rwIF '(' expr ')' stmt_block */ +#line 362 "CMDgram.y" + { (yyval.stmt) = IfStmtNode::alloc((yyvsp[-4].i).lineNumber, (yyvsp[-2].expr), (yyvsp[0].stmt), NULL, false); } +#line 2568 "CMDgram.c" + break; + + case 66: /* if_stmt: rwIF '(' expr ')' stmt_block rwELSE stmt_block */ +#line 364 "CMDgram.y" + { (yyval.stmt) = IfStmtNode::alloc((yyvsp[-6].i).lineNumber, (yyvsp[-4].expr), (yyvsp[-2].stmt), (yyvsp[0].stmt), false); } +#line 2574 "CMDgram.c" + break; + + case 67: /* while_stmt: rwWHILE '(' expr ')' stmt_block */ +#line 369 "CMDgram.y" + { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-4].i).lineNumber, nil, (yyvsp[-2].expr), nil, (yyvsp[0].stmt), false); } +#line 2580 "CMDgram.c" + break; + + case 68: /* while_stmt: rwDO stmt_block rwWHILE '(' expr ')' */ +#line 371 "CMDgram.y" + { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-3].i).lineNumber, nil, (yyvsp[-1].expr), nil, (yyvsp[-4].stmt), true); } +#line 2586 "CMDgram.c" + break; + + case 69: /* for_stmt: rwFOR '(' expr ';' expr ';' expr ')' stmt_block */ +#line 376 "CMDgram.y" + { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-8].i).lineNumber, (yyvsp[-6].expr), (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].stmt), false); } +#line 2592 "CMDgram.c" + break; + + case 70: /* for_stmt: rwFOR '(' expr ';' expr ';' ')' stmt_block */ +#line 378 "CMDgram.y" + { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-7].i).lineNumber, (yyvsp[-5].expr), (yyvsp[-3].expr), NULL, (yyvsp[0].stmt), false); } +#line 2598 "CMDgram.c" + break; + + case 71: /* for_stmt: rwFOR '(' expr ';' ';' expr ')' stmt_block */ +#line 380 "CMDgram.y" + { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-7].i).lineNumber, (yyvsp[-5].expr), NULL, (yyvsp[-2].expr), (yyvsp[0].stmt), false); } +#line 2604 "CMDgram.c" + break; + + case 72: /* for_stmt: rwFOR '(' expr ';' ';' ')' stmt_block */ +#line 382 "CMDgram.y" + { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-6].i).lineNumber, (yyvsp[-4].expr), NULL, NULL, (yyvsp[0].stmt), false); } +#line 2610 "CMDgram.c" + break; + + case 73: /* for_stmt: rwFOR '(' ';' expr ';' expr ')' stmt_block */ +#line 384 "CMDgram.y" + { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-7].i).lineNumber, NULL, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].stmt), false); } +#line 2616 "CMDgram.c" + break; + + case 74: /* for_stmt: rwFOR '(' ';' expr ';' ')' stmt_block */ +#line 386 "CMDgram.y" + { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-6].i).lineNumber, NULL, (yyvsp[-3].expr), NULL, (yyvsp[0].stmt), false); } +#line 2622 "CMDgram.c" + break; + + case 75: /* for_stmt: rwFOR '(' ';' ';' expr ')' stmt_block */ +#line 388 "CMDgram.y" + { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-6].i).lineNumber, NULL, NULL, (yyvsp[-2].expr), (yyvsp[0].stmt), false); } +#line 2628 "CMDgram.c" + break; + + case 76: /* for_stmt: rwFOR '(' ';' ';' ')' stmt_block */ +#line 390 "CMDgram.y" + { (yyval.stmt) = LoopStmtNode::alloc((yyvsp[-5].i).lineNumber, NULL, NULL, NULL, (yyvsp[0].stmt), false); } +#line 2634 "CMDgram.c" + break; + + case 77: /* foreach_stmt: rwFOREACH '(' VAR rwIN expr ')' stmt_block */ #line 395 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2630 "CMDgram.c" + { (yyval.stmt) = IterStmtNode::alloc( (yyvsp[-6].i).lineNumber, (yyvsp[-4].s).value, (yyvsp[-2].expr), (yyvsp[0].stmt), false ); } +#line 2640 "CMDgram.c" break; - case 81: /* expr: expr '|' expr */ + case 78: /* foreach_stmt: rwFOREACHSTR '(' VAR rwIN expr ')' stmt_block */ #line 397 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2636 "CMDgram.c" + { (yyval.stmt) = IterStmtNode::alloc( (yyvsp[-6].i).lineNumber, (yyvsp[-4].s).value, (yyvsp[-2].expr), (yyvsp[0].stmt), true ); } +#line 2646 "CMDgram.c" break; - case 82: /* expr: expr '+' expr */ -#line 399 "CMDgram.y" - { (yyval.expr) = FloatBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2642 "CMDgram.c" + case 79: /* expression_stmt: stmt_expr */ +#line 402 "CMDgram.y" + { (yyval.stmt) = (yyvsp[0].expr); } +#line 2652 "CMDgram.c" break; - case 83: /* expr: expr '-' expr */ -#line 401 "CMDgram.y" - { (yyval.expr) = FloatBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2648 "CMDgram.c" - break; - - case 84: /* expr: expr '*' expr */ -#line 403 "CMDgram.y" - { (yyval.expr) = FloatBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2654 "CMDgram.c" - break; - - case 85: /* expr: expr '/' expr */ -#line 405 "CMDgram.y" - { (yyval.expr) = FloatBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2660 "CMDgram.c" - break; - - case 86: /* expr: '-' expr */ + case 80: /* expr: stmt_expr */ #line 407 "CMDgram.y" - { (yyval.expr) = FloatUnaryExprNode::alloc( (yyvsp[-1].i).lineNumber, (yyvsp[-1].i).value, (yyvsp[0].expr)); } -#line 2666 "CMDgram.c" + { (yyval.expr) = (yyvsp[0].expr); } +#line 2658 "CMDgram.c" break; - case 87: /* expr: '*' expr */ + case 81: /* expr: '(' expr ')' */ #line 409 "CMDgram.y" - { (yyval.expr) = TTagDerefNode::alloc( (yyvsp[-1].i).lineNumber, (yyvsp[0].expr) ); } -#line 2672 "CMDgram.c" + { (yyval.expr) = (yyvsp[-1].expr); } +#line 2664 "CMDgram.c" break; - case 88: /* expr: TTAG */ + case 82: /* expr: expr '^' expr */ #line 411 "CMDgram.y" - { (yyval.expr) = TTagExprNode::alloc( (yyvsp[0].s).lineNumber, (yyvsp[0].s).value ); } -#line 2678 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2670 "CMDgram.c" break; - case 89: /* expr: expr '?' expr ':' expr */ + case 83: /* expr: expr '%' expr */ #line 413 "CMDgram.y" - { (yyval.expr) = ConditionalExprNode::alloc( (yyvsp[-4].expr)->dbgLineNumber, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2684 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2676 "CMDgram.c" break; - case 90: /* expr: expr '<' expr */ + case 84: /* expr: expr '&' expr */ #line 415 "CMDgram.y" { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2690 "CMDgram.c" +#line 2682 "CMDgram.c" break; - case 91: /* expr: expr '>' expr */ + case 85: /* expr: expr '|' expr */ #line 417 "CMDgram.y" { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2696 "CMDgram.c" +#line 2688 "CMDgram.c" break; - case 92: /* expr: expr opGE expr */ + case 86: /* expr: expr '+' expr */ #line 419 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2702 "CMDgram.c" + { (yyval.expr) = FloatBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2694 "CMDgram.c" break; - case 93: /* expr: expr opLE expr */ + case 87: /* expr: expr '-' expr */ #line 421 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2708 "CMDgram.c" + { (yyval.expr) = FloatBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2700 "CMDgram.c" break; - case 94: /* expr: expr opEQ expr */ + case 88: /* expr: expr '*' expr */ #line 423 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2714 "CMDgram.c" + { (yyval.expr) = FloatBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2706 "CMDgram.c" break; - case 95: /* expr: expr opNE expr */ + case 89: /* expr: expr '/' expr */ #line 425 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2720 "CMDgram.c" + { (yyval.expr) = FloatBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2712 "CMDgram.c" break; - case 96: /* expr: expr opOR expr */ + case 90: /* expr: '-' expr */ #line 427 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2726 "CMDgram.c" + { (yyval.expr) = FloatUnaryExprNode::alloc( (yyvsp[-1].i).lineNumber, (yyvsp[-1].i).value, (yyvsp[0].expr)); } +#line 2718 "CMDgram.c" break; - case 97: /* expr: expr opSHL expr */ + case 91: /* expr: '*' expr */ #line 429 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2732 "CMDgram.c" + { (yyval.expr) = TTagDerefNode::alloc( (yyvsp[-1].i).lineNumber, (yyvsp[0].expr) ); } +#line 2724 "CMDgram.c" break; - case 98: /* expr: expr opSHR expr */ + case 92: /* expr: TTAG */ #line 431 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2738 "CMDgram.c" + { (yyval.expr) = TTagExprNode::alloc( (yyvsp[0].s).lineNumber, (yyvsp[0].s).value ); } +#line 2730 "CMDgram.c" break; - case 99: /* expr: expr opAND expr */ + case 93: /* expr: expr '?' expr ':' expr */ #line 433 "CMDgram.y" - { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 2744 "CMDgram.c" + { (yyval.expr) = ConditionalExprNode::alloc( (yyvsp[-4].expr)->dbgLineNumber, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2736 "CMDgram.c" break; - case 100: /* expr: expr opSTREQ expr */ + case 94: /* expr: expr '<' expr */ #line 435 "CMDgram.y" - { (yyval.expr) = StreqExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-2].expr), (yyvsp[0].expr), true); } -#line 2750 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2742 "CMDgram.c" break; - case 101: /* expr: expr opSTRNE expr */ + case 95: /* expr: expr '>' expr */ #line 437 "CMDgram.y" - { (yyval.expr) = StreqExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-2].expr), (yyvsp[0].expr), false); } -#line 2756 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2748 "CMDgram.c" break; - case 102: /* expr: expr '@' expr */ + case 96: /* expr: expr opGE expr */ #line 439 "CMDgram.y" - { (yyval.expr) = StrcatExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-2].expr), (yyvsp[0].expr), (yyvsp[-1].i).value); } -#line 2762 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2754 "CMDgram.c" break; - case 103: /* expr: '!' expr */ + case 97: /* expr: expr opLE expr */ #line 441 "CMDgram.y" - { (yyval.expr) = IntUnaryExprNode::alloc((yyvsp[-1].i).lineNumber, (yyvsp[-1].i).value, (yyvsp[0].expr)); } -#line 2768 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2760 "CMDgram.c" break; - case 104: /* expr: '~' expr */ + case 98: /* expr: expr opEQ expr */ #line 443 "CMDgram.y" - { (yyval.expr) = IntUnaryExprNode::alloc((yyvsp[-1].i).lineNumber, (yyvsp[-1].i).value, (yyvsp[0].expr)); } -#line 2774 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2766 "CMDgram.c" break; - case 105: /* expr: TAGATOM */ + case 99: /* expr: expr opNE expr */ #line 445 "CMDgram.y" - { (yyval.expr) = StrConstNode::alloc( (yyvsp[0].str).lineNumber, (yyvsp[0].str).value, true); } -#line 2780 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2772 "CMDgram.c" break; - case 106: /* expr: FLTCONST */ + case 100: /* expr: expr opOR expr */ #line 447 "CMDgram.y" - { (yyval.expr) = FloatNode::alloc( (yyvsp[0].f).lineNumber, (yyvsp[0].f).value ); } -#line 2786 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2778 "CMDgram.c" break; - case 107: /* expr: INTCONST */ + case 101: /* expr: expr opSHL expr */ #line 449 "CMDgram.y" - { (yyval.expr) = IntNode::alloc( (yyvsp[0].i).lineNumber, (yyvsp[0].i).value ); } -#line 2792 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2784 "CMDgram.c" break; - case 108: /* expr: rwBREAK */ + case 102: /* expr: expr opSHR expr */ #line 451 "CMDgram.y" - { (yyval.expr) = ConstantNode::alloc( (yyvsp[0].i).lineNumber, StringTable->insert("break")); } -#line 2798 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2790 "CMDgram.c" break; - case 109: /* expr: slot_acc */ + case 103: /* expr: expr opAND expr */ #line 453 "CMDgram.y" - { (yyval.expr) = SlotAccessNode::alloc( (yyvsp[0].slot).lineNumber, (yyvsp[0].slot).object, (yyvsp[0].slot).array, (yyvsp[0].slot).slotName ); } -#line 2804 "CMDgram.c" + { (yyval.expr) = IntBinaryExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-1].i).value, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 2796 "CMDgram.c" break; - case 110: /* expr: intslot_acc */ + case 104: /* expr: expr opSTREQ expr */ #line 455 "CMDgram.y" - { (yyval.expr) = InternalSlotAccessNode::alloc( (yyvsp[0].intslot).lineNumber, (yyvsp[0].intslot).object, (yyvsp[0].intslot).slotExpr, (yyvsp[0].intslot).recurse); } -#line 2810 "CMDgram.c" + { (yyval.expr) = StreqExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-2].expr), (yyvsp[0].expr), true); } +#line 2802 "CMDgram.c" break; - case 111: /* expr: IDENT */ + case 105: /* expr: expr opSTRNE expr */ #line 457 "CMDgram.y" - { (yyval.expr) = ConstantNode::alloc( (yyvsp[0].s).lineNumber, (yyvsp[0].s).value ); } -#line 2816 "CMDgram.c" + { (yyval.expr) = StreqExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-2].expr), (yyvsp[0].expr), false); } +#line 2808 "CMDgram.c" break; - case 112: /* expr: STRATOM */ + case 106: /* expr: expr '@' expr */ #line 459 "CMDgram.y" - { (yyval.expr) = StrConstNode::alloc( (yyvsp[0].str).lineNumber, (yyvsp[0].str).value, false); } -#line 2822 "CMDgram.c" + { (yyval.expr) = StrcatExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-2].expr), (yyvsp[0].expr), (yyvsp[-1].i).value); } +#line 2814 "CMDgram.c" break; - case 113: /* expr: VAR */ + case 107: /* expr: '!' expr */ #line 461 "CMDgram.y" - { (yyval.expr) = (ExprNode*)VarNode::alloc( (yyvsp[0].s).lineNumber, (yyvsp[0].s).value, NULL); } -#line 2828 "CMDgram.c" + { (yyval.expr) = IntUnaryExprNode::alloc((yyvsp[-1].i).lineNumber, (yyvsp[-1].i).value, (yyvsp[0].expr)); } +#line 2820 "CMDgram.c" break; - case 114: /* expr: VAR '[' aidx_expr ']' */ + case 108: /* expr: '~' expr */ #line 463 "CMDgram.y" - { (yyval.expr) = (ExprNode*)VarNode::alloc( (yyvsp[-3].s).lineNumber, (yyvsp[-3].s).value, (yyvsp[-1].expr) ); } -#line 2834 "CMDgram.c" + { (yyval.expr) = IntUnaryExprNode::alloc((yyvsp[-1].i).lineNumber, (yyvsp[-1].i).value, (yyvsp[0].expr)); } +#line 2826 "CMDgram.c" break; - case 115: /* slot_acc: expr '.' IDENT */ -#line 485 "CMDgram.y" - { (yyval.slot).lineNumber = (yyvsp[-2].expr)->dbgLineNumber; (yyval.slot).object = (yyvsp[-2].expr); (yyval.slot).slotName = (yyvsp[0].s).value; (yyval.slot).array = NULL; } -#line 2840 "CMDgram.c" + case 109: /* expr: TAGATOM */ +#line 465 "CMDgram.y" + { (yyval.expr) = StrConstNode::alloc( (yyvsp[0].str).lineNumber, (yyvsp[0].str).value, true); } +#line 2832 "CMDgram.c" break; - case 116: /* slot_acc: expr '.' IDENT '[' aidx_expr ']' */ -#line 487 "CMDgram.y" - { (yyval.slot).lineNumber = (yyvsp[-5].expr)->dbgLineNumber; (yyval.slot).object = (yyvsp[-5].expr); (yyval.slot).slotName = (yyvsp[-3].s).value; (yyval.slot).array = (yyvsp[-1].expr); } -#line 2846 "CMDgram.c" + case 110: /* expr: FLTCONST */ +#line 467 "CMDgram.y" + { (yyval.expr) = FloatNode::alloc( (yyvsp[0].f).lineNumber, (yyvsp[0].f).value ); } +#line 2838 "CMDgram.c" break; - case 117: /* intslot_acc: expr opINTNAME class_name_expr */ -#line 492 "CMDgram.y" - { (yyval.intslot).lineNumber = (yyvsp[-2].expr)->dbgLineNumber; (yyval.intslot).object = (yyvsp[-2].expr); (yyval.intslot).slotExpr = (yyvsp[0].expr); (yyval.intslot).recurse = false; } -#line 2852 "CMDgram.c" + case 111: /* expr: INTCONST */ +#line 469 "CMDgram.y" + { (yyval.expr) = IntNode::alloc( (yyvsp[0].i).lineNumber, (yyvsp[0].i).value ); } +#line 2844 "CMDgram.c" break; - case 118: /* intslot_acc: expr opINTNAMER class_name_expr */ -#line 494 "CMDgram.y" - { (yyval.intslot).lineNumber = (yyvsp[-2].expr)->dbgLineNumber; (yyval.intslot).object = (yyvsp[-2].expr); (yyval.intslot).slotExpr = (yyvsp[0].expr); (yyval.intslot).recurse = true; } -#line 2858 "CMDgram.c" + case 112: /* expr: rwBREAK */ +#line 471 "CMDgram.y" + { (yyval.expr) = ConstantNode::alloc( (yyvsp[0].i).lineNumber, StringTable->insert("break")); } +#line 2850 "CMDgram.c" break; - case 119: /* class_name_expr: IDENT */ -#line 499 "CMDgram.y" + case 113: /* expr: slot_acc */ +#line 473 "CMDgram.y" + { (yyval.expr) = SlotAccessNode::alloc( (yyvsp[0].slot).lineNumber, (yyvsp[0].slot).object, (yyvsp[0].slot).array, (yyvsp[0].slot).slotName ); } +#line 2856 "CMDgram.c" + break; + + case 114: /* expr: intslot_acc */ +#line 475 "CMDgram.y" + { (yyval.expr) = InternalSlotAccessNode::alloc( (yyvsp[0].intslot).lineNumber, (yyvsp[0].intslot).object, (yyvsp[0].intslot).slotExpr, (yyvsp[0].intslot).recurse); } +#line 2862 "CMDgram.c" + break; + + case 115: /* expr: IDENT */ +#line 477 "CMDgram.y" { (yyval.expr) = ConstantNode::alloc( (yyvsp[0].s).lineNumber, (yyvsp[0].s).value ); } -#line 2864 "CMDgram.c" +#line 2868 "CMDgram.c" break; - case 120: /* class_name_expr: '(' expr ')' */ -#line 501 "CMDgram.y" - { (yyval.expr) = (yyvsp[-1].expr); } -#line 2870 "CMDgram.c" + case 116: /* expr: STRATOM */ +#line 479 "CMDgram.y" + { (yyval.expr) = StrConstNode::alloc( (yyvsp[0].str).lineNumber, (yyvsp[0].str).value, false); } +#line 2874 "CMDgram.c" break; - case 121: /* assign_op_struct: opPLUSPLUS */ -#line 506 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[0].i).lineNumber; (yyval.asn).token = opPLUSPLUS; (yyval.asn).expr = FloatNode::alloc( (yyvsp[0].i).lineNumber, 1 ); } -#line 2876 "CMDgram.c" + case 117: /* expr: VAR */ +#line 481 "CMDgram.y" + { (yyval.expr) = (ExprNode*)VarNode::alloc( (yyvsp[0].s).lineNumber, (yyvsp[0].s).value, NULL); } +#line 2880 "CMDgram.c" break; - case 122: /* assign_op_struct: opMINUSMINUS */ -#line 508 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[0].i).lineNumber; (yyval.asn).token = opMINUSMINUS; (yyval.asn).expr = FloatNode::alloc( (yyvsp[0].i).lineNumber, 1 ); } -#line 2882 "CMDgram.c" + case 118: /* expr: VAR '[' aidx_expr ']' */ +#line 483 "CMDgram.y" + { (yyval.expr) = (ExprNode*)VarNode::alloc( (yyvsp[-3].s).lineNumber, (yyvsp[-3].s).value, (yyvsp[-1].expr) ); } +#line 2886 "CMDgram.c" break; - case 123: /* assign_op_struct: opPLASN expr */ -#line 510 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '+'; (yyval.asn).expr = (yyvsp[0].expr); } -#line 2888 "CMDgram.c" + case 119: /* slot_acc: expr '.' IDENT */ +#line 505 "CMDgram.y" + { (yyval.slot).lineNumber = (yyvsp[-2].expr)->dbgLineNumber; (yyval.slot).object = (yyvsp[-2].expr); (yyval.slot).slotName = (yyvsp[0].s).value; (yyval.slot).array = NULL; } +#line 2892 "CMDgram.c" break; - case 124: /* assign_op_struct: opMIASN expr */ + case 120: /* slot_acc: expr '.' IDENT '[' aidx_expr ']' */ +#line 507 "CMDgram.y" + { (yyval.slot).lineNumber = (yyvsp[-5].expr)->dbgLineNumber; (yyval.slot).object = (yyvsp[-5].expr); (yyval.slot).slotName = (yyvsp[-3].s).value; (yyval.slot).array = (yyvsp[-1].expr); } +#line 2898 "CMDgram.c" + break; + + case 121: /* intslot_acc: expr opINTNAME class_name_expr */ #line 512 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '-'; (yyval.asn).expr = (yyvsp[0].expr); } -#line 2894 "CMDgram.c" + { (yyval.intslot).lineNumber = (yyvsp[-2].expr)->dbgLineNumber; (yyval.intslot).object = (yyvsp[-2].expr); (yyval.intslot).slotExpr = (yyvsp[0].expr); (yyval.intslot).recurse = false; } +#line 2904 "CMDgram.c" break; - case 125: /* assign_op_struct: opMLASN expr */ + case 122: /* intslot_acc: expr opINTNAMER class_name_expr */ #line 514 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '*'; (yyval.asn).expr = (yyvsp[0].expr); } -#line 2900 "CMDgram.c" + { (yyval.intslot).lineNumber = (yyvsp[-2].expr)->dbgLineNumber; (yyval.intslot).object = (yyvsp[-2].expr); (yyval.intslot).slotExpr = (yyvsp[0].expr); (yyval.intslot).recurse = true; } +#line 2910 "CMDgram.c" break; - case 126: /* assign_op_struct: opDVASN expr */ -#line 516 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '/'; (yyval.asn).expr = (yyvsp[0].expr); } -#line 2906 "CMDgram.c" + case 123: /* class_name_expr: IDENT */ +#line 519 "CMDgram.y" + { (yyval.expr) = ConstantNode::alloc( (yyvsp[0].s).lineNumber, (yyvsp[0].s).value ); } +#line 2916 "CMDgram.c" break; - case 127: /* assign_op_struct: opMODASN expr */ -#line 518 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '%'; (yyval.asn).expr = (yyvsp[0].expr); } -#line 2912 "CMDgram.c" + case 124: /* class_name_expr: '(' expr ')' */ +#line 521 "CMDgram.y" + { (yyval.expr) = (yyvsp[-1].expr); } +#line 2922 "CMDgram.c" break; - case 128: /* assign_op_struct: opANDASN expr */ -#line 520 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '&'; (yyval.asn).expr = (yyvsp[0].expr); } -#line 2918 "CMDgram.c" - break; - - case 129: /* assign_op_struct: opXORASN expr */ -#line 522 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '^'; (yyval.asn).expr = (yyvsp[0].expr); } -#line 2924 "CMDgram.c" - break; - - case 130: /* assign_op_struct: opORASN expr */ -#line 524 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '|'; (yyval.asn).expr = (yyvsp[0].expr); } -#line 2930 "CMDgram.c" - break; - - case 131: /* assign_op_struct: opSLASN expr */ + case 125: /* assign_op_struct: opPLUSPLUS */ #line 526 "CMDgram.y" - { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = opSHL; (yyval.asn).expr = (yyvsp[0].expr); } -#line 2936 "CMDgram.c" + { (yyval.asn).lineNumber = (yyvsp[0].i).lineNumber; (yyval.asn).token = opPLUSPLUS; (yyval.asn).expr = FloatNode::alloc( (yyvsp[0].i).lineNumber, 1 ); } +#line 2928 "CMDgram.c" break; - case 132: /* assign_op_struct: opSRASN expr */ + case 126: /* assign_op_struct: opMINUSMINUS */ #line 528 "CMDgram.y" + { (yyval.asn).lineNumber = (yyvsp[0].i).lineNumber; (yyval.asn).token = opMINUSMINUS; (yyval.asn).expr = FloatNode::alloc( (yyvsp[0].i).lineNumber, 1 ); } +#line 2934 "CMDgram.c" + break; + + case 127: /* assign_op_struct: opPLASN expr */ +#line 530 "CMDgram.y" + { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '+'; (yyval.asn).expr = (yyvsp[0].expr); } +#line 2940 "CMDgram.c" + break; + + case 128: /* assign_op_struct: opMIASN expr */ +#line 532 "CMDgram.y" + { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '-'; (yyval.asn).expr = (yyvsp[0].expr); } +#line 2946 "CMDgram.c" + break; + + case 129: /* assign_op_struct: opMLASN expr */ +#line 534 "CMDgram.y" + { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '*'; (yyval.asn).expr = (yyvsp[0].expr); } +#line 2952 "CMDgram.c" + break; + + case 130: /* assign_op_struct: opDVASN expr */ +#line 536 "CMDgram.y" + { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '/'; (yyval.asn).expr = (yyvsp[0].expr); } +#line 2958 "CMDgram.c" + break; + + case 131: /* assign_op_struct: opMODASN expr */ +#line 538 "CMDgram.y" + { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '%'; (yyval.asn).expr = (yyvsp[0].expr); } +#line 2964 "CMDgram.c" + break; + + case 132: /* assign_op_struct: opANDASN expr */ +#line 540 "CMDgram.y" + { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '&'; (yyval.asn).expr = (yyvsp[0].expr); } +#line 2970 "CMDgram.c" + break; + + case 133: /* assign_op_struct: opXORASN expr */ +#line 542 "CMDgram.y" + { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '^'; (yyval.asn).expr = (yyvsp[0].expr); } +#line 2976 "CMDgram.c" + break; + + case 134: /* assign_op_struct: opORASN expr */ +#line 544 "CMDgram.y" + { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = '|'; (yyval.asn).expr = (yyvsp[0].expr); } +#line 2982 "CMDgram.c" + break; + + case 135: /* assign_op_struct: opSLASN expr */ +#line 546 "CMDgram.y" + { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = opSHL; (yyval.asn).expr = (yyvsp[0].expr); } +#line 2988 "CMDgram.c" + break; + + case 136: /* assign_op_struct: opSRASN expr */ +#line 548 "CMDgram.y" { (yyval.asn).lineNumber = (yyvsp[-1].i).lineNumber; (yyval.asn).token = opSHR; (yyval.asn).expr = (yyvsp[0].expr); } -#line 2942 "CMDgram.c" +#line 2994 "CMDgram.c" break; - case 133: /* stmt_expr: funcall_expr */ -#line 533 "CMDgram.y" + case 137: /* stmt_expr: funcall_expr */ +#line 553 "CMDgram.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2948 "CMDgram.c" +#line 3000 "CMDgram.c" break; - case 134: /* stmt_expr: assert_expr */ -#line 535 "CMDgram.y" + case 138: /* stmt_expr: assert_expr */ +#line 555 "CMDgram.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 2954 "CMDgram.c" +#line 3006 "CMDgram.c" break; - case 135: /* stmt_expr: object_decl */ -#line 537 "CMDgram.y" + case 139: /* stmt_expr: object_decl */ +#line 557 "CMDgram.y" { (yyval.expr) = (yyvsp[0].od); } -#line 2960 "CMDgram.c" +#line 3012 "CMDgram.c" break; - case 136: /* stmt_expr: VAR '=' expr */ -#line 539 "CMDgram.y" + case 140: /* stmt_expr: VAR '=' expr */ +#line 559 "CMDgram.y" { (yyval.expr) = AssignExprNode::alloc( (yyvsp[-2].s).lineNumber, (yyvsp[-2].s).value, NULL, (yyvsp[0].expr)); } -#line 2966 "CMDgram.c" +#line 3018 "CMDgram.c" break; - case 137: /* stmt_expr: VAR '[' aidx_expr ']' '=' expr */ -#line 541 "CMDgram.y" + case 141: /* stmt_expr: VAR '[' aidx_expr ']' '=' expr */ +#line 561 "CMDgram.y" { (yyval.expr) = AssignExprNode::alloc( (yyvsp[-5].s).lineNumber, (yyvsp[-5].s).value, (yyvsp[-3].expr), (yyvsp[0].expr)); } -#line 2972 "CMDgram.c" +#line 3024 "CMDgram.c" break; - case 138: /* stmt_expr: VAR assign_op_struct */ -#line 543 "CMDgram.y" + case 142: /* stmt_expr: VAR assign_op_struct */ +#line 563 "CMDgram.y" { (yyval.expr) = AssignOpExprNode::alloc( (yyvsp[-1].s).lineNumber, (yyvsp[-1].s).value, NULL, (yyvsp[0].asn).expr, (yyvsp[0].asn).token); } -#line 2978 "CMDgram.c" +#line 3030 "CMDgram.c" break; - case 139: /* stmt_expr: VAR '[' aidx_expr ']' assign_op_struct */ -#line 545 "CMDgram.y" + case 143: /* stmt_expr: VAR '[' aidx_expr ']' assign_op_struct */ +#line 565 "CMDgram.y" { (yyval.expr) = AssignOpExprNode::alloc( (yyvsp[-4].s).lineNumber, (yyvsp[-4].s).value, (yyvsp[-2].expr), (yyvsp[0].asn).expr, (yyvsp[0].asn).token); } -#line 2984 "CMDgram.c" +#line 3036 "CMDgram.c" break; - case 140: /* stmt_expr: slot_acc assign_op_struct */ -#line 547 "CMDgram.y" + case 144: /* stmt_expr: slot_acc assign_op_struct */ +#line 567 "CMDgram.y" { (yyval.expr) = SlotAssignOpNode::alloc( (yyvsp[-1].slot).lineNumber, (yyvsp[-1].slot).object, (yyvsp[-1].slot).slotName, (yyvsp[-1].slot).array, (yyvsp[0].asn).token, (yyvsp[0].asn).expr); } -#line 2990 "CMDgram.c" +#line 3042 "CMDgram.c" break; - case 141: /* stmt_expr: slot_acc '=' expr */ -#line 549 "CMDgram.y" + case 145: /* stmt_expr: slot_acc '=' expr */ +#line 569 "CMDgram.y" { (yyval.expr) = SlotAssignNode::alloc( (yyvsp[-2].slot).lineNumber, (yyvsp[-2].slot).object, (yyvsp[-2].slot).array, (yyvsp[-2].slot).slotName, (yyvsp[0].expr)); } -#line 2996 "CMDgram.c" +#line 3048 "CMDgram.c" break; - case 142: /* stmt_expr: slot_acc '=' '{' expr_list '}' */ -#line 551 "CMDgram.y" + case 146: /* stmt_expr: slot_acc '=' '{' expr_list '}' */ +#line 571 "CMDgram.y" { (yyval.expr) = SlotAssignNode::alloc( (yyvsp[-4].slot).lineNumber, (yyvsp[-4].slot).object, (yyvsp[-4].slot).array, (yyvsp[-4].slot).slotName, (yyvsp[-1].expr)); } -#line 3002 "CMDgram.c" +#line 3054 "CMDgram.c" break; - case 143: /* funcall_expr: IDENT '(' expr_list_decl ')' */ -#line 556 "CMDgram.y" + case 147: /* funcall_expr: IDENT '(' expr_list_decl ')' */ +#line 576 "CMDgram.y" { (yyval.expr) = FuncCallExprNode::alloc( (yyvsp[-3].s).lineNumber, (yyvsp[-3].s).value, NULL, (yyvsp[-1].expr), false); } -#line 3008 "CMDgram.c" +#line 3060 "CMDgram.c" break; - case 144: /* funcall_expr: IDENT opCOLONCOLON IDENT '(' expr_list_decl ')' */ -#line 558 "CMDgram.y" + case 148: /* funcall_expr: IDENT opCOLONCOLON IDENT '(' expr_list_decl ')' */ +#line 578 "CMDgram.y" { (yyval.expr) = FuncCallExprNode::alloc( (yyvsp[-5].s).lineNumber, (yyvsp[-3].s).value, (yyvsp[-5].s).value, (yyvsp[-1].expr), false); } -#line 3014 "CMDgram.c" +#line 3066 "CMDgram.c" break; - case 145: /* funcall_expr: expr '.' IDENT '(' expr_list_decl ')' */ -#line 560 "CMDgram.y" + case 149: /* funcall_expr: expr '.' IDENT '(' expr_list_decl ')' */ +#line 580 "CMDgram.y" { (yyvsp[-5].expr)->append((yyvsp[-1].expr)); (yyval.expr) = FuncCallExprNode::alloc( (yyvsp[-5].expr)->dbgLineNumber, (yyvsp[-3].s).value, NULL, (yyvsp[-5].expr), true); } -#line 3020 "CMDgram.c" +#line 3072 "CMDgram.c" break; - case 146: /* assert_expr: rwASSERT '(' expr ')' */ -#line 570 "CMDgram.y" + case 150: /* assert_expr: rwASSERT '(' expr ')' */ +#line 590 "CMDgram.y" { (yyval.expr) = AssertCallExprNode::alloc( (yyvsp[-3].i).lineNumber, (yyvsp[-1].expr), NULL ); } -#line 3026 "CMDgram.c" +#line 3078 "CMDgram.c" break; - case 147: /* assert_expr: rwASSERT '(' expr ',' STRATOM ')' */ -#line 572 "CMDgram.y" + case 151: /* assert_expr: rwASSERT '(' expr ',' STRATOM ')' */ +#line 592 "CMDgram.y" { (yyval.expr) = AssertCallExprNode::alloc( (yyvsp[-5].i).lineNumber, (yyvsp[-3].expr), (yyvsp[-1].str).value ); } -#line 3032 "CMDgram.c" +#line 3084 "CMDgram.c" break; - case 148: /* expr_list_decl: %empty */ -#line 577 "CMDgram.y" + case 152: /* expr_list_decl: %empty */ +#line 597 "CMDgram.y" { (yyval.expr) = NULL; } -#line 3038 "CMDgram.c" +#line 3090 "CMDgram.c" break; - case 149: /* expr_list_decl: expr_list */ -#line 579 "CMDgram.y" + case 153: /* expr_list_decl: expr_list */ +#line 599 "CMDgram.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 3044 "CMDgram.c" +#line 3096 "CMDgram.c" break; - case 150: /* expr_list: expr */ -#line 584 "CMDgram.y" + case 154: /* expr_list: expr */ +#line 604 "CMDgram.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 3050 "CMDgram.c" +#line 3102 "CMDgram.c" break; - case 151: /* expr_list: expr_list ',' expr */ -#line 586 "CMDgram.y" + case 155: /* expr_list: expr_list ',' expr */ +#line 606 "CMDgram.y" { ((yyvsp[-2].expr))->append((yyvsp[0].expr)); (yyval.expr) = (yyvsp[-2].expr); } -#line 3056 "CMDgram.c" +#line 3108 "CMDgram.c" break; - case 152: /* slot_assign_list_opt: %empty */ -#line 591 "CMDgram.y" - { (yyval.slist) = NULL; } -#line 3062 "CMDgram.c" - break; - - case 153: /* slot_assign_list_opt: slot_assign_list */ -#line 593 "CMDgram.y" - { (yyval.slist) = (yyvsp[0].slist); } -#line 3068 "CMDgram.c" - break; - - case 154: /* slot_assign_list: slot_assign */ -#line 598 "CMDgram.y" - { (yyval.slist) = (yyvsp[0].slist); } -#line 3074 "CMDgram.c" - break; - - case 155: /* slot_assign_list: slot_assign_list slot_assign */ -#line 600 "CMDgram.y" - { (yyvsp[-1].slist)->append((yyvsp[0].slist)); (yyval.slist) = (yyvsp[-1].slist); } -#line 3080 "CMDgram.c" - break; - - case 156: /* slot_assign: IDENT '=' expr ';' */ -#line 605 "CMDgram.y" - { (yyval.slist) = SlotAssignNode::alloc( (yyvsp[-3].s).lineNumber, NULL, NULL, (yyvsp[-3].s).value, (yyvsp[-1].expr)); } -#line 3086 "CMDgram.c" - break; - - case 157: /* slot_assign: TYPEIDENT IDENT '=' expr ';' */ -#line 607 "CMDgram.y" - { (yyval.slist) = SlotAssignNode::alloc( (yyvsp[-4].i).lineNumber, NULL, NULL, (yyvsp[-3].s).value, (yyvsp[-1].expr), (yyvsp[-4].i).value); } -#line 3092 "CMDgram.c" - break; - - case 158: /* slot_assign: rwDATABLOCK '=' expr ';' */ -#line 609 "CMDgram.y" - { (yyval.slist) = SlotAssignNode::alloc( (yyvsp[-3].i).lineNumber, NULL, NULL, StringTable->insert("datablock"), (yyvsp[-1].expr)); } -#line 3098 "CMDgram.c" - break; - - case 159: /* slot_assign: IDENT '[' aidx_expr ']' '=' expr ';' */ + case 156: /* slot_assign_list_opt: %empty */ #line 611 "CMDgram.y" - { (yyval.slist) = SlotAssignNode::alloc( (yyvsp[-6].s).lineNumber, NULL, (yyvsp[-4].expr), (yyvsp[-6].s).value, (yyvsp[-1].expr)); } -#line 3104 "CMDgram.c" + { (yyval.slist) = NULL; } +#line 3114 "CMDgram.c" break; - case 160: /* slot_assign: TYPEIDENT IDENT '[' aidx_expr ']' '=' expr ';' */ + case 157: /* slot_assign_list_opt: slot_assign_list */ #line 613 "CMDgram.y" - { (yyval.slist) = SlotAssignNode::alloc( (yyvsp[-7].i).lineNumber, NULL, (yyvsp[-4].expr), (yyvsp[-6].s).value, (yyvsp[-1].expr), (yyvsp[-7].i).value); } -#line 3110 "CMDgram.c" + { (yyval.slist) = (yyvsp[0].slist); } +#line 3120 "CMDgram.c" break; - case 161: /* aidx_expr: expr */ + case 158: /* slot_assign_list: slot_assign */ #line 618 "CMDgram.y" - { (yyval.expr) = (yyvsp[0].expr); } -#line 3116 "CMDgram.c" - break; - - case 162: /* aidx_expr: aidx_expr ',' expr */ -#line 620 "CMDgram.y" - { (yyval.expr) = CommaCatExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 3122 "CMDgram.c" - break; - - + { (yyval.slist) = (yyvsp[0].slist); } #line 3126 "CMDgram.c" + break; + + case 159: /* slot_assign_list: slot_assign_list slot_assign */ +#line 620 "CMDgram.y" + { (yyvsp[-1].slist)->append((yyvsp[0].slist)); (yyval.slist) = (yyvsp[-1].slist); } +#line 3132 "CMDgram.c" + break; + + case 160: /* slot_assign: IDENT '=' expr ';' */ +#line 625 "CMDgram.y" + { (yyval.slist) = SlotAssignNode::alloc( (yyvsp[-3].s).lineNumber, NULL, NULL, (yyvsp[-3].s).value, (yyvsp[-1].expr)); } +#line 3138 "CMDgram.c" + break; + + case 161: /* slot_assign: TYPEIDENT IDENT '=' expr ';' */ +#line 627 "CMDgram.y" + { (yyval.slist) = SlotAssignNode::alloc( (yyvsp[-4].i).lineNumber, NULL, NULL, (yyvsp[-3].s).value, (yyvsp[-1].expr), (yyvsp[-4].i).value); } +#line 3144 "CMDgram.c" + break; + + case 162: /* slot_assign: rwDATABLOCK '=' expr ';' */ +#line 629 "CMDgram.y" + { (yyval.slist) = SlotAssignNode::alloc( (yyvsp[-3].i).lineNumber, NULL, NULL, StringTable->insert("datablock"), (yyvsp[-1].expr)); } +#line 3150 "CMDgram.c" + break; + + case 163: /* slot_assign: IDENT '[' aidx_expr ']' '=' expr ';' */ +#line 631 "CMDgram.y" + { (yyval.slist) = SlotAssignNode::alloc( (yyvsp[-6].s).lineNumber, NULL, (yyvsp[-4].expr), (yyvsp[-6].s).value, (yyvsp[-1].expr)); } +#line 3156 "CMDgram.c" + break; + + case 164: /* slot_assign: TYPEIDENT IDENT '[' aidx_expr ']' '=' expr ';' */ +#line 633 "CMDgram.y" + { (yyval.slist) = SlotAssignNode::alloc( (yyvsp[-7].i).lineNumber, NULL, (yyvsp[-4].expr), (yyvsp[-6].s).value, (yyvsp[-1].expr), (yyvsp[-7].i).value); } +#line 3162 "CMDgram.c" + break; + + case 165: /* aidx_expr: expr */ +#line 638 "CMDgram.y" + { (yyval.expr) = (yyvsp[0].expr); } +#line 3168 "CMDgram.c" + break; + + case 166: /* aidx_expr: aidx_expr ',' expr */ +#line 640 "CMDgram.y" + { (yyval.expr) = CommaCatExprNode::alloc( (yyvsp[-2].expr)->dbgLineNumber, (yyvsp[-2].expr), (yyvsp[0].expr)); } +#line 3174 "CMDgram.c" + break; + + +#line 3178 "CMDgram.c" default: break; } @@ -3325,7 +3377,7 @@ yyreturnlab: return yyresult; } -#line 622 "CMDgram.y" +#line 642 "CMDgram.y" int diff --git a/Engine/source/console/torquescript/compiledEval.cpp b/Engine/source/console/torquescript/compiledEval.cpp index fd328f583..9f34b99b7 100644 --- a/Engine/source/console/torquescript/compiledEval.cpp +++ b/Engine/source/console/torquescript/compiledEval.cpp @@ -614,7 +614,22 @@ Con::EvalResult CodeBlock::exec(U32 ip, const char* functionName, Namespace* thi ConsoleValue& value = argv[i + 1]; Script::gEvalState.moveConsoleValue(reg, (value)); } - ip = ip + fnArgc + (2 + 6 + 1 + 1); + + if (wantedArgc < fnArgc) + { + Namespace::Entry* temp = thisNamespace->lookup(thisFunctionName); + for (; i < fnArgc; i++) + { + S32 reg = code[ip + (2 + 6 + 1 + 1) + i]; + if (temp->mArgFlags[i] & 0x1) + { + ConsoleValue& value = temp->mDefaultValues[i]; + Script::gEvalState.moveConsoleValue(reg, (value)); + } + } + } + + ip = ip + fnArgc + (2 + 6 + 1 + 1) + fnArgc; curFloatTable = functionFloats; curStringTable = functionStrings; curStringTableLen = functionStringsMaxLen; @@ -736,8 +751,39 @@ Con::EvalResult CodeBlock::exec(U32 ip, const char* functionName, Namespace* thi curNSDocBlock = NULL; } } - Namespace::relinkPackages(); + + U32 fnArgc = code[ip + 2 + 6]; + + // Compute pointer to the register mapping like exec() does. + U32 readPtr = ip + 2 + 6 + 1; // points to the slot after argc (localNumVarsIP) + readPtr += 1; // skip localNumVarsIP + readPtr += fnArgc; // skip register mapping + + Namespace::Entry* temp = ns->lookup(fnName); + + temp->mArgFlags.setSize(fnArgc); + temp->mDefaultValues.setSize(fnArgc); + + // Read flags sequentially + for (U32 fa = 0; fa < fnArgc; ++fa) + { + temp->mArgFlags[fa] = code[readPtr++]; + } + + // this might seem weird but because of the order + // the stack accumulates consoleValues we cant be sure + // all args have a console value, and we need to pop + // the stack, do this in reverse order. + for (S32 fa = S32(fnArgc - 1); fa >= 0; fa--) + { + if (temp->mArgFlags[fa] & 0x1) + { + temp->mDefaultValues[fa] = stack[_STK--]; + } + } + + Namespace::relinkPackages(); // If we had a docblock, it's definitely not valid anymore, so clear it out. curFNDocBlock = NULL; From 9d9fe0db77ab9eb18ef637139b6ad6af8c05960b Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Sun, 16 Nov 2025 06:01:33 +0000 Subject: [PATCH 2/4] Update astNodes.cpp --- Engine/source/console/torquescript/astNodes.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Engine/source/console/torquescript/astNodes.cpp b/Engine/source/console/torquescript/astNodes.cpp index bea3dca4f..b7d84e1bc 100644 --- a/Engine/source/console/torquescript/astNodes.cpp +++ b/Engine/source/console/torquescript/astNodes.cpp @@ -49,6 +49,12 @@ namespace Compiler } } +bool hasTrailingNumber(StringTableEntry varName) { + size_t len = dStrlen(varName); + if (len == 0) return false; // empty string + return dIsdigit((unsigned char)varName[len - 1]); +} + using namespace Compiler; FuncVars gEvalFuncVars; @@ -664,7 +670,7 @@ U32 VarNode::compile(CodeStream& codeStream, U32 ip, TypeReq type) precompileIdent(varName); - bool oldVariables = arrayIndex || varName[0] == '$'; + bool oldVariables = arrayIndex || varName[0] == '$' || hasTrailingNumber(varName); if (oldVariables) { @@ -713,7 +719,7 @@ U32 VarNode::compile(CodeStream& codeStream, U32 ip, TypeReq type) TypeReq VarNode::getPreferredType() { - bool oldVariables = arrayIndex || varName[0] == '$'; + bool oldVariables = arrayIndex || varName[0] == '$' || hasTrailingNumber(varName); return oldVariables ? TypeReqNone : getFuncVars(dbgLineNumber)->lookupType(varName, dbgLineNumber); } @@ -913,7 +919,7 @@ U32 AssignExprNode::compile(CodeStream& codeStream, U32 ip, TypeReq type) ip = expr->compile(codeStream, ip, subType); - bool oldVariables = arrayIndex || varName[0] == '$'; + bool oldVariables = arrayIndex || varName[0] == '$' || hasTrailingNumber(varName); if (oldVariables) { @@ -1047,7 +1053,7 @@ U32 AssignOpExprNode::compile(CodeStream& codeStream, U32 ip, TypeReq type) getAssignOpTypeOp(op, subType, operand); precompileIdent(varName); - bool oldVariables = arrayIndex || varName[0] == '$'; + bool oldVariables = arrayIndex || varName[0] == '$' || hasTrailingNumber(varName); if (op == opPLUSPLUS && !oldVariables && type == TypeReqNone) { From fe982c730c660b194ffe29beedfb6b99d5780bd9 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Sun, 16 Nov 2025 14:17:14 +0000 Subject: [PATCH 3/4] Revert "Update astNodes.cpp" This reverts commit 9d9fe0db77ab9eb18ef637139b6ad6af8c05960b. --- Engine/source/console/torquescript/astNodes.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/Engine/source/console/torquescript/astNodes.cpp b/Engine/source/console/torquescript/astNodes.cpp index b7d84e1bc..bea3dca4f 100644 --- a/Engine/source/console/torquescript/astNodes.cpp +++ b/Engine/source/console/torquescript/astNodes.cpp @@ -49,12 +49,6 @@ namespace Compiler } } -bool hasTrailingNumber(StringTableEntry varName) { - size_t len = dStrlen(varName); - if (len == 0) return false; // empty string - return dIsdigit((unsigned char)varName[len - 1]); -} - using namespace Compiler; FuncVars gEvalFuncVars; @@ -670,7 +664,7 @@ U32 VarNode::compile(CodeStream& codeStream, U32 ip, TypeReq type) precompileIdent(varName); - bool oldVariables = arrayIndex || varName[0] == '$' || hasTrailingNumber(varName); + bool oldVariables = arrayIndex || varName[0] == '$'; if (oldVariables) { @@ -719,7 +713,7 @@ U32 VarNode::compile(CodeStream& codeStream, U32 ip, TypeReq type) TypeReq VarNode::getPreferredType() { - bool oldVariables = arrayIndex || varName[0] == '$' || hasTrailingNumber(varName); + bool oldVariables = arrayIndex || varName[0] == '$'; return oldVariables ? TypeReqNone : getFuncVars(dbgLineNumber)->lookupType(varName, dbgLineNumber); } @@ -919,7 +913,7 @@ U32 AssignExprNode::compile(CodeStream& codeStream, U32 ip, TypeReq type) ip = expr->compile(codeStream, ip, subType); - bool oldVariables = arrayIndex || varName[0] == '$' || hasTrailingNumber(varName); + bool oldVariables = arrayIndex || varName[0] == '$'; if (oldVariables) { @@ -1053,7 +1047,7 @@ U32 AssignOpExprNode::compile(CodeStream& codeStream, U32 ip, TypeReq type) getAssignOpTypeOp(op, subType, operand); precompileIdent(varName); - bool oldVariables = arrayIndex || varName[0] == '$' || hasTrailingNumber(varName); + bool oldVariables = arrayIndex || varName[0] == '$'; if (op == opPLUSPLUS && !oldVariables && type == TypeReqNone) { From b29de841ea33dff33a6eb7e4eff4ea00efe8060f Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Sun, 16 Nov 2025 14:19:01 +0000 Subject: [PATCH 4/4] we should be failing on error fail when a unit test fails --- .github/workflows/build-linux-gcc.yml | 2 +- .github/workflows/build-macos-clang.yml | 2 +- .github/workflows/build-windows-msvc.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-linux-gcc.yml b/.github/workflows/build-linux-gcc.yml index 34613de98..3e11f98ad 100644 --- a/.github/workflows/build-linux-gcc.yml +++ b/.github/workflows/build-linux-gcc.yml @@ -105,5 +105,5 @@ jobs: name: Linux test results path: "**/My Projects/Torque3D/game/test_detail.xml" reporter: java-junit - fail-on-error: false + fail-on-error: true if: github.event_name != 'pull_request' diff --git a/.github/workflows/build-macos-clang.yml b/.github/workflows/build-macos-clang.yml index 4d2aa2d99..8310a7588 100644 --- a/.github/workflows/build-macos-clang.yml +++ b/.github/workflows/build-macos-clang.yml @@ -75,5 +75,5 @@ jobs: name: MacOS Test results path: "**/My Projects/Torque3D/game/test_detail.xml" reporter: java-junit - fail-on-error: false + fail-on-error: true if: github.event_name != 'pull_request' diff --git a/.github/workflows/build-windows-msvc.yml b/.github/workflows/build-windows-msvc.yml index 2b9ac82ef..a8ddaad55 100644 --- a/.github/workflows/build-windows-msvc.yml +++ b/.github/workflows/build-windows-msvc.yml @@ -71,5 +71,5 @@ jobs: name: Windows test results path: "**/My Projects/Torque3D/game/test_detail.xml" reporter: java-junit - fail-on-error: false + fail-on-error: true if: github.event_name != 'pull_request'