diff --git a/reactos/dll/win32/vbscript/compile.c b/reactos/dll/win32/vbscript/compile.c index 4251bb2f022..3a816abb323 100644 --- a/reactos/dll/win32/vbscript/compile.c +++ b/reactos/dll/win32/vbscript/compile.c @@ -515,6 +515,8 @@ static HRESULT compile_expression(compile_ctx_t *ctx, expression_t *expr) return compile_binary_expression(ctx, (binary_expression_t*)expr, OP_nequal); case EXPR_NEW: return push_instr_str(ctx, OP_new, ((string_expression_t*)expr)->value); + case EXPR_NOARG: + return push_instr_int(ctx, OP_hres, DISP_E_PARAMNOTFOUND); case EXPR_NOT: return compile_unary_expression(ctx, (unary_expression_t*)expr, OP_not); case EXPR_NOTHING: diff --git a/reactos/dll/win32/vbscript/global.c b/reactos/dll/win32/vbscript/global.c index a3d01d5fac2..c3e6f62f08a 100644 --- a/reactos/dll/win32/vbscript/global.c +++ b/reactos/dll/win32/vbscript/global.c @@ -19,6 +19,7 @@ #include "vbscript.h" #include +#include #include #define round(x) (((x) < 0) ? (int)((x) - 0.5) : (int)((x) + 0.5)) @@ -106,9 +107,6 @@ static HRESULT return_short(VARIANT *res, short val) static HRESULT return_int(VARIANT *res, int val) { - if((short)val == val) - return return_short(res, val); - if(res) { V_VT(res) = VT_I4; V_I4(res) = val; @@ -127,6 +125,16 @@ static inline HRESULT return_double(VARIANT *res, double val) return S_OK; } +static inline HRESULT return_float(VARIANT *res, float val) +{ + if(res) { + V_VT(res) = VT_R4; + V_R4(res) = val; + } + + return S_OK; +} + static inline HRESULT return_null(VARIANT *res) { if(res) @@ -196,11 +204,12 @@ static HRESULT set_object_site(script_ctx_t *ctx, IUnknown *obj) return S_OK; ax_site = create_ax_site(ctx); - if(ax_site) + if(ax_site) { hres = IObjectWithSite_SetSite(obj_site, ax_site); + IUnknown_Release(ax_site); + } else hres = E_OUTOFMEMORY; - IUnknown_Release(ax_site); IObjectWithSite_Release(obj_site); return hres; } @@ -411,9 +420,7 @@ static HRESULT Global_CLng(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARI if(!res) return DISP_E_BADVARTYPE; - V_VT(res) = VT_I4; - V_I4(res) = i; - return S_OK; + return return_int(res, i); } static HRESULT Global_CBool(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) @@ -759,8 +766,13 @@ static HRESULT Global_Rnd(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIA static HRESULT Global_Timer(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + SYSTEMTIME lt; + double sec; + + GetLocalTime(<); + sec = lt.wHour * 3600 + lt.wMinute * 60 + lt.wSecond + lt.wMilliseconds / 1000.0; + return return_float(res, sec); + } static HRESULT Global_LBound(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) @@ -777,8 +789,24 @@ static HRESULT Global_UBound(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VA static HRESULT Global_RGB(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + HRESULT hres; + int i, color[3]; + + TRACE("%s %s %s\n", debugstr_variant(arg), debugstr_variant(arg + 1), debugstr_variant(arg + 2)); + + assert(args_cnt == 3); + + for(i = 0; i < 3; i++) { + hres = to_int(arg + i, color + i); + if(FAILED(hres)) + return hres; + if(color[i] > 255) + color[i] = 255; + if(color[i] < 0) + return MAKE_VBSERROR(VBSE_ILLEGAL_FUNC_CALL); + } + + return return_int(res, RGB(color[0], color[1], color[2])); } static HRESULT Global_Len(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) @@ -1745,10 +1773,64 @@ static HRESULT Global_StrReverse(vbdisp_t *This, VARIANT *arg, unsigned args_cnt return return_bstr(res, ret); } -static HRESULT Global_InStrRev(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) +static HRESULT Global_InStrRev(vbdisp_t *This, VARIANT *args, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + int start, ret = 0; + BSTR str1, str2; + HRESULT hres; + + TRACE("%s %s arg_cnt=%u\n", debugstr_variant(args), debugstr_variant(args+1), args_cnt); + + if(args_cnt > 3) { + FIXME("Unsupported args\n"); + return E_NOTIMPL; + } + + assert(2 <= args_cnt && args_cnt <= 4); + + if(V_VT(args) == VT_NULL || V_VT(args+1) == VT_NULL || V_VT(args+2) == VT_NULL) + return MAKE_VBSERROR(VBSE_ILLEGAL_NULL_USE); + + hres = to_string(args, &str1); + if(FAILED(hres)) + return hres; + + hres = to_string(args+1, &str2); + if(SUCCEEDED(hres)) { + if(args_cnt > 2) { + hres = to_int(args+2, &start); + if(SUCCEEDED(hres) && start <= 0) { + FIXME("Unsupported start %d\n", start); + hres = E_NOTIMPL; + } + }else { + start = SysStringLen(str1); + } + } else { + str2 = NULL; + } + + if(SUCCEEDED(hres)) { + const WCHAR *ptr; + size_t len; + + len = SysStringLen(str2); + if(start >= len && start <= SysStringLen(str1)) { + for(ptr = str1+start-SysStringLen(str2); ptr >= str1; ptr--) { + if(!memcmp(ptr, str2, len*sizeof(WCHAR))) { + ret = ptr-str1+1; + break; + } + } + } + } + + SysFreeString(str1); + SysFreeString(str2); + if(FAILED(hres)) + return hres; + + return return_int(res, ret); } static HRESULT Global_LoadPicture(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) @@ -1772,12 +1854,7 @@ static HRESULT Global_ScriptEngineMajorVersion(vbdisp_t *This, VARIANT *arg, uns assert(args_cnt == 0); - if(res) { - V_VT(res) = VT_I4; - V_I4(res) = VBSCRIPT_MAJOR_VERSION; - } - - return S_OK; + return return_int(res, VBSCRIPT_MAJOR_VERSION); } static HRESULT Global_ScriptEngineMinorVersion(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) @@ -1786,12 +1863,7 @@ static HRESULT Global_ScriptEngineMinorVersion(vbdisp_t *This, VARIANT *arg, uns assert(args_cnt == 0); - if(res) { - V_VT(res) = VT_I4; - V_I4(res) = VBSCRIPT_MINOR_VERSION; - } - - return S_OK; + return return_int(res, VBSCRIPT_MINOR_VERSION); } static HRESULT Global_ScriptEngineBuildVersion(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) @@ -1800,12 +1872,7 @@ static HRESULT Global_ScriptEngineBuildVersion(vbdisp_t *This, VARIANT *arg, uns assert(args_cnt == 0); - if(res) { - V_VT(res) = VT_I4; - V_I4(res) = VBSCRIPT_BUILD_VERSION; - } - - return S_OK; + return return_int(res, VBSCRIPT_BUILD_VERSION); } static HRESULT Global_FormatNumber(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) diff --git a/reactos/dll/win32/vbscript/interp.c b/reactos/dll/win32/vbscript/interp.c index aae6758f3a0..eea4ccd0ea9 100644 --- a/reactos/dll/win32/vbscript/interp.c +++ b/reactos/dll/win32/vbscript/interp.c @@ -1360,6 +1360,18 @@ static HRESULT interp_nothing(exec_ctx_t *ctx) return stack_push(ctx, &v); } +static HRESULT interp_hres(exec_ctx_t *ctx) +{ + const unsigned arg = ctx->instr->arg1.uint; + VARIANT v; + + TRACE("%d\n", arg); + + V_VT(&v) = VT_ERROR; + V_ERROR(&v) = arg; + return stack_push(ctx, &v); +} + static HRESULT interp_not(exec_ctx_t *ctx) { variant_val_t val; diff --git a/reactos/dll/win32/vbscript/parse.h b/reactos/dll/win32/vbscript/parse.h index 2a497038b4b..f0479b5be07 100644 --- a/reactos/dll/win32/vbscript/parse.h +++ b/reactos/dll/win32/vbscript/parse.h @@ -42,6 +42,7 @@ typedef enum { EXPR_NEG, EXPR_NEQUAL, EXPR_NEW, + EXPR_NOARG, /* not a real expression */ EXPR_NOT, EXPR_NOTHING, EXPR_NULL, diff --git a/reactos/dll/win32/vbscript/parser.tab.c b/reactos/dll/win32/vbscript/parser.tab.c index 212783a652e..367c7f3c22d 100644 --- a/reactos/dll/win32/vbscript/parser.tab.c +++ b/reactos/dll/win32/vbscript/parser.tab.c @@ -145,7 +145,10 @@ static const WCHAR propertyW[] = {'p','r','o','p','e','r','t','y',0}; # define YYERROR_VERBOSE 0 #endif - +/* In a future release of Bison, this section will be replaced + by #include "parser.tab.h". */ +#ifndef YY_PARSER_PARSER_TAB_H_INCLUDED +# define YY_PARSER_PARSER_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -254,7 +257,7 @@ union YYSTYPE BOOL boolean; double dbl; -#line 263 "parser.tab.c" /* yacc.c:355 */ +#line 266 "parser.tab.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -264,11 +267,11 @@ union YYSTYPE int parser_parse (parser_ctx_t *ctx); - +#endif /* !YY_PARSER_PARSER_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 277 "parser.tab.c" /* yacc.c:358 */ +#line 280 "parser.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -510,16 +513,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 862 +#define YYLAST 871 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 87 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 59 +#define YYNNTS 60 /* YYNRULES -- Number of rules. */ -#define YYNRULES 164 +#define YYNRULES 167 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 335 +#define YYNSTATES 341 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -579,16 +582,16 @@ static const yytype_uint16 yyrline[] = 208, 212, 213, 216, 217, 220, 221, 222, 225, 226, 229, 230, 233, 236, 237, 240, 241, 244, 245, 248, 250, 251, 254, 256, 259, 260, 263, 264, 267, 271, - 272, 275, 276, 277, 281, 282, 285, 286, 288, 290, - 293, 294, 297, 298, 301, 302, 305, 306, 309, 310, - 313, 314, 317, 318, 321, 322, 323, 324, 325, 326, - 327, 328, 331, 332, 335, 336, 337, 340, 341, 344, - 345, 349, 350, 352, 356, 357, 360, 361, 362, 363, - 366, 367, 370, 371, 372, 373, 374, 375, 376, 379, - 380, 381, 382, 385, 386, 387, 390, 391, 394, 397, - 398, 400, 402, 403, 406, 408, 410, 414, 416, 420, - 421, 424, 425, 426, 429, 430, 433, 434, 437, 438, - 439, 443, 444, 448, 449 + 272, 275, 276, 277, 281, 282, 285, 286, 289, 290, + 291, 293, 295, 298, 299, 302, 303, 306, 307, 310, + 311, 314, 315, 318, 319, 322, 323, 326, 327, 328, + 329, 330, 331, 332, 333, 336, 337, 340, 341, 342, + 345, 346, 349, 350, 354, 355, 357, 361, 362, 365, + 366, 367, 368, 371, 372, 375, 376, 377, 378, 379, + 380, 381, 384, 385, 386, 387, 390, 391, 392, 395, + 396, 399, 402, 403, 405, 407, 408, 411, 413, 415, + 419, 421, 425, 426, 429, 430, 431, 434, 435, 438, + 439, 442, 443, 444, 448, 449, 453, 454 }; #endif @@ -614,16 +617,16 @@ static const char *const yytname[] = "DimList", "ConstDeclList", "ConstDecl", "ConstExpression", "DoType", "Step_opt", "IfStatement", "EndIf_opt", "ElseIfs_opt", "ElseIfs", "ElseIf", "Else_opt", "CaseClausules", "Arguments_opt", - "ArgumentList_opt", "EmptyBrackets_opt", "ExpressionList", "Expression", - "EqvExpression", "XorExpression", "OrExpression", "AndExpression", - "NotExpression", "EqualityExpression", "ConcatExpression", - "AdditiveExpression", "ModExpression", "IntdivExpression", - "MultiplicativeExpression", "ExpExpression", "UnaryExpression", - "CallExpression", "LiteralExpression", "NumericLiteralExpression", - "IntegerValue", "PrimaryExpression", "ClassDeclaration", "ClassBody", - "PropertyDecl", "FunctionDecl", "Storage_opt", "Storage", - "ArgumentsDecl_opt", "ArgumentDeclList", "ArgumentDecl", "Identifier", - "StSep", YY_NULLPTR + "ArgumentList_opt", "ArgumentList", "EmptyBrackets_opt", + "ExpressionList", "Expression", "EqvExpression", "XorExpression", + "OrExpression", "AndExpression", "NotExpression", "EqualityExpression", + "ConcatExpression", "AdditiveExpression", "ModExpression", + "IntdivExpression", "MultiplicativeExpression", "ExpExpression", + "UnaryExpression", "CallExpression", "LiteralExpression", + "NumericLiteralExpression", "IntegerValue", "PrimaryExpression", + "ClassDeclaration", "ClassBody", "PropertyDecl", "FunctionDecl", + "Storage_opt", "Storage", "ArgumentsDecl_opt", "ArgumentDeclList", + "ArgumentDecl", "Identifier", "StSep", YY_NULLPTR }; #endif @@ -644,12 +647,12 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -158 +#define YYPACT_NINF -154 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-158))) + (!!((Yystate) == (-154))) -#define YYTABLE_NINF -150 +#define YYTABLE_NINF -153 #define yytable_value_is_error(Yytable_value) \ 0 @@ -658,40 +661,41 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -28, -18, 43, -158, 56, -158, 307, -158, -158, 6, - -2, -158, -2, 468, 184, 468, 20, 33, 32, -158, - -2, 6, 26, -158, -158, 50, -158, 557, 468, -158, - 116, 51, 388, -158, 62, -158, -158, -158, 130, -158, - -158, 8, -158, 63, 10, -158, 93, 104, -158, -158, - 468, -158, -158, -158, -2, -158, -158, -158, -158, -158, - 498, 8, 24, 166, 171, 177, 189, -158, 29, 113, - 53, 182, 122, 102, 129, -158, 62, -158, -158, -158, - -158, -158, -158, -158, 47, 598, -158, -158, 468, -2, - 145, 468, 214, 8, -158, 127, -158, 11, -158, 557, - -158, 468, 152, -158, -5, -158, 19, -2, -2, -2, - 468, 163, -158, -2, -158, 112, -2, 97, -158, -158, - -158, -158, 468, 348, 468, 468, 468, 468, 498, 498, - 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, - 498, 498, 498, 651, 201, -158, 557, 48, 200, 468, - 36, 120, 173, 185, 175, -158, -158, 169, 35, 468, - 468, -158, 13, 13, -158, -158, -158, -158, 176, 179, - -158, 45, -158, -158, 166, 557, 221, 171, 177, 189, - -158, 113, 113, 113, 113, 113, 113, 113, 53, 182, - 182, 122, 102, 129, 129, -158, 217, 121, -158, 598, - 468, 25, -158, -158, 211, -2, 228, 256, 257, 150, - 196, 468, -158, -158, -158, 249, -158, -11, -158, 260, - 261, -158, 112, -158, 237, 786, -158, 468, 233, 59, - 468, 418, 240, 268, 219, 120, 120, 135, 270, 249, - -2, -2, 198, 202, 277, 692, 692, -158, 468, 247, - -158, 237, 253, 249, -158, 733, 12, 7, 7, 242, - 120, 283, -158, -158, 224, 225, 226, 120, 277, 277, - -158, -11, -158, 263, 265, 27, 293, 271, -158, 273, - -158, 243, 468, 295, 786, 557, -158, -158, -158, 13, - 231, 236, -158, -158, -158, -158, 282, 286, 310, 692, - 287, -158, -158, 249, 733, -158, 211, 312, -11, -11, - -158, -158, 557, -158, -158, 255, -158, 692, 241, 252, - -158, -158, 288, 320, 326, 308, 692, 692, -158, 302, - 305, 314, 315, -158, -158 + -13, -11, 67, -154, 78, -154, 313, -154, -154, 98, + -5, -154, -5, 464, 146, 464, 12, 34, 76, -154, + -5, 98, 96, -154, -154, 90, -154, 566, 464, -154, + 159, 101, 182, -154, 104, -154, -154, -154, 37, -154, + -154, 1, -154, 100, 4, -154, 112, 131, -154, -154, + 464, -154, -154, -154, -5, -154, -154, -154, -154, -154, + 497, 1, 31, 171, 196, 198, 212, -154, 24, 147, + -60, 208, 148, -31, 143, -154, 104, -154, -154, -154, + -154, -154, -154, -154, 52, 607, -154, -154, 464, -5, + 158, 464, 228, 1, -154, 65, -154, -3, -154, 566, + -154, 392, 392, 165, -154, -154, 130, 19, -5, -5, + -5, 392, 167, -154, -5, -154, 92, -5, 528, -154, + -154, -154, -154, 464, 354, 464, 464, 464, 464, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, + 497, 497, 497, 497, 660, 202, -154, 566, 105, 204, + 464, 16, 123, 181, 201, 191, -154, -154, -154, 188, + 22, 464, 392, -154, 7, 7, -154, -154, -154, -154, + 192, 193, -154, 42, -154, -154, 171, 566, 85, 196, + 198, 212, -154, 147, 147, 147, 147, 147, 147, 147, + -60, 208, 208, 148, -31, 143, 143, -154, 236, 13, + -154, 607, 464, 29, -154, -154, 227, -5, 242, 270, + 271, 176, 210, 464, -154, -154, -154, 263, -154, 2, + -154, 274, 275, -154, 92, -154, 250, 795, 253, -154, + -154, 464, 245, 109, 464, 425, 258, 286, 239, 123, + 123, 107, 291, 263, -5, -5, 219, 222, 292, 701, + 701, -154, 464, 273, -154, 250, 269, -154, 263, -154, + 742, 14, 21, 21, 30, 260, 123, 302, -154, -154, + 241, 244, 247, 123, 292, 292, -154, 2, -154, 277, + 280, 43, 311, 287, -154, -154, 259, 464, 316, 795, + 566, 464, -154, -154, -154, 7, 246, 248, -154, -154, + -154, -154, 301, 307, 321, 701, 308, -154, 263, 742, + -154, 227, -154, 331, 2, 2, -154, -154, 566, -154, + -154, 276, -154, 701, 262, 265, -154, -154, 312, 341, + 346, 327, 701, 701, -154, 322, 323, 332, 335, -154, + -154 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -699,62 +703,63 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 3, 0, 0, 5, 0, 1, 149, 4, 2, 0, - 0, 162, 0, 0, 0, 0, 0, 0, 0, 34, - 0, 0, 152, 153, 137, 0, 161, 13, 0, 6, - 0, 15, 78, 22, 0, 120, 7, 27, 0, 150, - 41, 78, 21, 43, 45, 37, 50, 0, 122, 123, - 0, 128, 126, 127, 0, 124, 131, 129, 132, 130, - 0, 78, 0, 82, 84, 86, 88, 90, 92, 94, - 102, 104, 107, 109, 111, 114, 117, 116, 125, 32, - 30, 31, 28, 29, 0, 149, 55, 56, 0, 0, - 0, 0, 0, 78, 151, 0, 14, 0, 12, 17, - 79, 0, 121, 18, 76, 77, 80, 0, 0, 0, - 0, 19, 74, 0, 47, 0, 0, 0, 93, 118, - 119, 121, 0, 149, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 5, 0, 1, 152, 4, 2, 0, + 0, 165, 0, 0, 0, 0, 0, 0, 0, 34, + 0, 0, 155, 156, 140, 0, 164, 13, 0, 6, + 0, 15, 81, 22, 0, 123, 7, 27, 0, 153, + 41, 81, 21, 43, 45, 37, 50, 0, 125, 126, + 0, 131, 129, 130, 0, 127, 134, 132, 135, 133, + 0, 81, 0, 85, 87, 89, 91, 93, 95, 97, + 105, 107, 110, 112, 114, 117, 120, 119, 128, 32, + 30, 31, 28, 29, 0, 152, 55, 56, 0, 0, + 0, 0, 0, 81, 154, 0, 14, 0, 12, 17, + 82, 0, 0, 124, 18, 77, 76, 78, 0, 0, + 0, 0, 19, 74, 0, 47, 0, 0, 0, 96, + 121, 122, 124, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 149, 0, 9, 10, 0, 0, 0, - 0, 149, 121, 0, 0, 136, 16, 0, 0, 0, - 0, 42, 78, 78, 44, 135, 133, 134, 0, 48, - 51, 0, 52, 53, 83, 8, 60, 85, 87, 89, - 91, 96, 101, 100, 99, 95, 97, 98, 103, 106, - 105, 108, 110, 112, 113, 115, 0, 26, 11, 149, - 0, 0, 163, 164, 71, 0, 0, 0, 0, 0, - 150, 0, 35, 36, 75, 20, 81, 0, 154, 0, - 0, 46, 0, 54, 64, 149, 23, 0, 0, 0, - 0, 0, 0, 0, 0, 149, 149, 0, 0, 33, - 0, 0, 0, 156, 78, 149, 149, 49, 0, 69, - 65, 66, 62, 25, 24, 149, 57, 0, 0, 0, - 149, 0, 143, 140, 0, 0, 0, 149, 78, 78, - 155, 0, 158, 0, 0, 0, 0, 0, 67, 0, - 61, 0, 0, 0, 149, 8, 40, 142, 138, 78, - 0, 0, 141, 159, 160, 157, 0, 0, 0, 149, - 0, 63, 39, 58, 149, 72, 71, 0, 0, 0, - 147, 148, 8, 70, 59, 0, 73, 149, 0, 0, - 68, 38, 0, 0, 0, 0, 149, 149, 144, 0, - 0, 0, 0, 145, 146 + 0, 0, 0, 0, 152, 0, 9, 10, 0, 0, + 0, 0, 152, 124, 0, 0, 139, 16, 80, 0, + 0, 0, 0, 42, 81, 81, 44, 138, 136, 137, + 0, 48, 51, 0, 52, 53, 86, 8, 62, 88, + 90, 92, 94, 99, 104, 103, 102, 98, 100, 101, + 106, 109, 108, 111, 113, 115, 116, 118, 0, 26, + 11, 152, 0, 0, 166, 167, 71, 0, 0, 0, + 0, 0, 153, 0, 35, 36, 75, 20, 79, 0, + 157, 0, 0, 46, 0, 54, 64, 152, 0, 60, + 23, 0, 0, 0, 0, 0, 0, 0, 0, 152, + 152, 0, 0, 33, 0, 0, 0, 159, 81, 152, + 152, 49, 0, 69, 65, 66, 62, 63, 25, 24, + 152, 57, 0, 0, 83, 0, 152, 0, 146, 143, + 0, 0, 0, 152, 81, 81, 158, 0, 161, 0, + 0, 0, 0, 0, 67, 61, 0, 0, 0, 152, + 8, 0, 40, 145, 141, 81, 0, 0, 144, 162, + 163, 160, 0, 0, 0, 152, 0, 39, 58, 152, + 72, 71, 84, 0, 0, 0, 150, 151, 8, 70, + 59, 0, 73, 152, 0, 0, 68, 38, 0, 0, + 0, 0, 152, 152, 147, 0, 0, 0, 0, 148, + 149 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -158, -158, -158, -158, -101, -137, 336, -23, -158, -6, - 232, 139, 125, 234, -158, -158, 151, -158, -158, -158, - -158, 98, -158, -158, 49, -13, -158, 0, -31, 55, - 238, 229, 246, 230, -40, -158, 99, 223, 60, 216, - 220, 69, -52, -4, 262, 192, -158, -158, -158, -78, - -158, -144, -139, -133, -157, 95, -96, 17, -22 + -154, -154, -154, -154, -113, -143, 349, -26, -154, -6, + 251, 153, 137, 249, -154, -154, 163, -154, -154, 108, + -154, 114, -154, -154, 61, -9, -154, -23, -8, 86, + 57, 257, 261, 266, 256, -42, -154, 82, 255, -30, + 264, 254, 25, -54, -4, 267, 223, -154, -154, -154, + -149, -154, -138, -90, -87, -153, 118, -121, 17, -37 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 6, 144, 145, 146, 30, 31, 61, - 42, 43, 168, 45, 46, 172, 88, 283, 33, 280, - 249, 250, 251, 277, 232, 102, 103, 112, 157, 106, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 169, 35, 36, 206, - 207, 37, 38, 39, 219, 242, 243, 40, 204 + -1, 2, 3, 6, 145, 146, 147, 30, 31, 61, + 42, 43, 170, 45, 46, 174, 88, 288, 33, 229, + 253, 254, 255, 283, 236, 103, 104, 159, 113, 263, + 107, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 171, 35, 36, + 208, 209, 37, 38, 39, 221, 246, 247, 40, 206 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -762,184 +767,186 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 32, 105, 34, 41, 96, 34, 220, 208, 120, 198, - 118, 202, 209, 11, 100, 93, 114, 34, 210, 100, - 1, 32, 11, 34, 85, 122, 122, 44, 111, 47, - 11, 4, 104, 122, 90, 240, 241, 92, 122, 122, - 202, 122, 196, 5, 128, 129, 130, 131, 121, 122, - 122, 143, 199, 282, 86, 26, 123, 11, 87, 298, - 7, 122, 122, 255, 26, 230, 24, -74, 62, -74, - 84, 119, 26, 122, 224, 89, 156, 91, 203, 32, - 152, 34, 28, 97, 110, 94, 115, 180, 155, 217, - 195, 208, 208, 32, 160, 34, 209, 209, 228, 26, - 176, 132, 210, 210, 48, 49, 148, 203, 133, 134, - 160, 95, 155, 56, 57, 58, 208, 32, 59, 34, - 98, 209, 99, 208, 161, 162, 163, 210, 209, 216, - 44, 136, 307, 47, 210, 137, 107, 32, 113, 34, - 32, 205, 34, 147, 273, 274, 150, 305, 51, 52, - 53, -139, 108, 109, 281, 86, 158, 262, 263, 87, - 264, 265, 218, 218, 55, 56, 57, 58, 116, 32, - 59, 34, 108, 109, 237, 171, 117, 22, 23, 124, - 165, 166, 287, 125, 306, 167, 140, 141, 126, 292, - 266, 153, 154, 32, 135, 34, 189, 190, 313, 127, - 258, 138, 252, 315, 201, 139, 79, 80, 81, 193, - 194, 320, 318, 319, 215, 142, 322, 149, 151, 32, - 82, 34, 44, 83, 159, 329, 330, 181, 182, 183, - 184, 185, 186, 187, 244, 284, 285, -121, 197, 32, - 32, 34, 34, 200, 272, 211, 214, 212, 213, 32, - 225, 34, 226, 221, 222, 229, 231, 268, 269, 234, - 235, 236, 238, 122, 245, 246, 239, 248, 293, 294, - 254, 259, 260, 261, 267, 270, 276, 271, 32, 32, - 34, 34, 253, 100, 279, 256, 286, 288, 244, 218, - 289, 290, 291, 32, 296, 34, 297, 299, 32, 304, - 34, 301, 300, 275, 310, 302, 32, 308, 34, 311, - 8, 32, 309, 34, 312, 314, 317, 321, 323, 325, - 32, 32, 34, 34, 326, 244, 244, 9, 10, 324, - 327, 11, 328, 331, 12, 13, 332, 303, 333, 334, - 14, 15, 29, 16, 233, 164, 17, 247, 227, 278, - 170, 18, 175, 177, 191, 316, 179, 19, 188, 192, - 174, 20, 21, 223, 22, 23, 295, 24, 9, 10, - 25, 178, 11, 26, 0, 12, 13, 0, 27, 173, - 0, 14, 15, 28, 16, 0, 0, 17, 0, 0, - 0, 0, 18, 0, 100, 48, 49, 50, 19, 0, - 0, 0, 0, 21, 0, 22, 23, 0, 24, 0, - 0, 25, 11, 0, 26, 0, 0, 0, 0, 27, - 0, 0, 0, 0, 28, 48, 49, 50, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 52, 53, 11, 0, 54, 0, 0, 257, 24, 0, - 0, 0, 0, 0, 26, 55, 56, 57, 58, 0, - 0, 59, 0, 0, 101, 0, 60, 0, 0, 51, - 52, 53, 0, 0, 54, 48, 49, 50, 24, 0, - 0, 0, 0, 0, 26, 55, 56, 57, 58, 0, - 0, 59, 11, 0, 28, 0, 60, 0, 0, 0, - 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, - 52, 53, 11, 0, 54, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 26, 55, 56, 57, 58, 0, - 0, 59, 0, 0, 28, 0, 60, 0, 0, 51, - 52, 53, 0, 0, 54, 0, 0, 0, 24, 0, - 0, 0, 0, 0, 26, 55, 56, 57, 58, 0, - 0, 59, 0, 0, 28, 0, 60, 9, 10, -149, - -149, 11, 0, 0, 12, 13, 0, 0, 0, 0, - 14, 15, 0, 16, 0, 0, 17, 0, 0, 0, + 32, 96, 34, 41, 200, 34, 121, 100, 119, 105, + 115, 123, 222, 100, 210, 93, 85, 34, 137, 11, + 204, 32, 138, 34, 106, 204, 11, 44, 123, 47, + 123, 198, 112, 123, 90, 1, 123, 92, 4, 129, + 130, 131, 132, 123, 123, 123, 86, 86, 244, 245, + 87, 87, 122, 141, 142, 287, 144, 123, 11, 109, + 110, 26, 211, 124, 226, 212, 123, 5, 26, 234, + 62, 120, 84, 157, 156, 304, 89, 111, 158, 32, + 116, 34, 7, 219, 153, 97, 182, 205, 232, 197, + 268, 269, 205, 32, 162, 34, 133, 162, 178, 156, + 26, 210, 210, 134, 135, 291, 149, 191, 192, 201, + 56, 57, 58, 260, 227, 59, 228, 293, 32, 123, + 34, 91, 11, 123, 298, 163, 164, 165, 210, 154, + 155, 44, 270, 271, 47, 210, 279, 280, 32, 218, + 34, 32, 313, 34, 207, 148, 310, 286, 151, 211, + 211, 95, 212, 212, -142, 94, 220, 220, 24, 160, + 167, 168, 272, 98, 26, 169, 195, 196, 79, 80, + 81, 32, 99, 34, 28, 114, 211, 311, 108, 212, + 22, 23, 82, 211, 125, 83, 212, 117, 100, 48, + 49, 50, 319, 324, 325, 32, 321, 34, 109, 110, + 241, 256, -74, 118, -74, 326, 11, 203, 126, 127, + 328, 183, 184, 185, 186, 187, 188, 189, 217, 335, + 336, 32, 128, 34, 44, 289, 290, 139, 136, 143, + 150, 140, 152, 51, 52, 53, 248, 161, 54, 199, + 278, -124, 24, 32, 32, 34, 34, 202, 26, 55, + 56, 57, 58, 213, 32, 59, 34, 101, 102, 233, + 60, 274, 275, 214, 215, 216, 299, 300, 224, 223, + 243, 230, 235, 238, 239, 240, 242, 123, 249, 250, + 252, 257, 259, 32, 32, 34, 34, 220, 258, 265, + 266, 261, 264, 267, 248, 273, 276, 277, 100, 32, + 228, 34, 282, 32, 292, 34, 294, 295, 302, 281, + 296, 303, 32, 297, 34, 305, 8, 32, 306, 34, + 309, 307, 314, 316, 315, 318, 32, 32, 34, 34, + 317, 248, 248, 9, 10, 323, 320, 11, 327, 329, + 12, 13, 330, 331, 308, 332, 14, 15, 264, 16, + 333, 334, 17, 337, 338, 29, 339, 18, 177, 340, + 237, 251, 231, 19, 285, 166, 172, 20, 21, 284, + 22, 23, 322, 24, 9, 10, 25, 312, 11, 26, + 176, 12, 13, 181, 27, 175, 179, 14, 15, 28, + 16, 190, 180, 17, 194, 301, 225, 0, 18, 48, + 49, 50, 0, 193, 19, 0, 0, 0, 0, 21, + 0, 22, 23, 0, 24, 0, 11, 25, 0, 0, + 26, 0, 0, 0, 0, 27, 0, 0, 0, 0, + 28, 0, 48, 49, 50, 0, 0, 0, 0, 0, + 0, 0, 0, 51, 52, 53, 0, 0, 54, 11, + 0, 0, 24, 0, 262, 0, 0, 0, 26, 55, + 56, 57, 58, 0, 0, 59, 0, 101, 28, 0, + 60, 48, 49, 50, 0, 0, 51, 52, 53, 0, + 0, 54, 0, 0, 0, 24, 0, 0, 11, 0, + 0, 26, 55, 56, 57, 58, 0, 0, 59, 0, + 0, 28, 0, 60, 48, 49, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 51, 52, 53, 0, 0, + 54, 11, 0, 0, 24, 0, 0, 0, 0, 0, + 26, 55, 56, 57, 58, 48, 49, 59, 0, 0, + 28, 0, 60, 0, 0, 0, 0, 0, 51, 52, + 53, 0, 0, 54, 0, 0, 0, 24, 0, 0, + 0, 0, 0, 26, 55, 56, 57, 58, 0, 0, + 59, 0, 0, 28, 0, 60, 0, 0, 0, 51, + 52, 53, 0, 0, 0, 0, 9, 10, -152, -152, + 11, 0, 0, 12, 13, 55, 56, 57, 58, 14, + 15, 59, 16, 0, 0, 17, 173, 0, 0, 0, + 18, 0, 0, 0, 0, 0, 19, 0, 0, 0, + 0, 21, 0, 22, 23, 0, 24, 9, 10, 25, + 0, 11, 26, 0, 12, 13, 0, 27, 0, 0, + 14, 15, 28, 16, -8, 0, 17, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 19, 0, 0, - 0, 0, 21, 0, 22, 23, 0, 24, 9, 10, - 25, 0, 11, 26, 0, 12, 13, 0, 27, 0, - 0, 14, 15, 28, 16, -8, 0, 17, 0, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 19, 0, - 0, 0, 0, 21, 0, 22, 23, 0, 24, 0, - 0, 25, 0, 0, 26, 0, 0, 0, 0, 27, - 0, 9, 10, 0, 28, 11, 0, 0, 12, 13, - 0, 0, 0, 0, 14, 15, -8, 16, 0, 0, + 0, 0, 21, 0, 22, 23, 0, 24, 0, 0, + 25, 0, 0, 26, 0, 0, 0, 0, 27, 0, + 9, 10, 0, 28, 11, 0, 0, 12, 13, 0, + 0, 0, 0, 14, 15, -8, 16, 0, 0, 17, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, + 19, 0, 0, 0, 0, 21, 0, 22, 23, 0, + 24, 9, 10, 25, 0, 11, 26, 0, 12, 13, + 0, 27, -8, 0, 14, 15, 28, 16, 0, 0, 17, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 21, 0, 22, 23, 0, 24, 9, 10, 25, 0, 11, 26, 0, 12, - 13, 0, 27, -8, 0, 14, 15, 28, 16, 0, + 13, 0, 27, 0, 0, 14, 15, 28, 16, 0, 0, 17, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 21, 0, 22, - 23, 0, 24, 9, 10, 25, 0, 11, 26, 0, - 12, 13, 0, 27, 0, 0, 14, 15, 28, 16, - 0, 0, 17, 0, 0, 0, 0, 18, 0, 0, - 0, 0, 0, 19, 0, 0, 0, 0, 21, 0, - 22, 23, 0, 24, 0, -8, 25, 0, 0, 26, - 0, 0, 0, 0, 27, 0, 9, 10, 0, 28, - 11, 0, 0, 12, 13, 0, 0, 0, 0, 14, - 15, 0, 16, 0, 0, 17, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 21, 0, 22, 23, 0, 24, 0, 0, 25, - 0, 0, 26, 0, 0, 0, 0, 27, 0, 0, - 0, 0, 28 + 23, 0, 24, 0, -8, 25, 0, 0, 26, 0, + 0, 0, 0, 27, 0, 9, 10, 0, 28, 11, + 0, 0, 12, 13, 0, 0, 0, 0, 14, 15, + 0, 16, 0, 0, 17, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, + 21, 0, 22, 23, 0, 24, 0, 0, 25, 0, + 0, 26, 0, 0, 0, 0, 27, 0, 0, 0, + 0, 28 }; static const yytype_int16 yycheck[] = { - 6, 32, 6, 9, 27, 9, 163, 151, 60, 146, - 50, 4, 151, 24, 6, 21, 6, 21, 151, 6, - 48, 27, 24, 27, 4, 14, 14, 10, 41, 12, - 24, 49, 32, 14, 17, 46, 47, 20, 14, 14, - 4, 14, 143, 0, 15, 16, 17, 18, 61, 14, - 14, 4, 4, 41, 34, 66, 32, 24, 38, 32, - 4, 14, 14, 4, 66, 40, 60, 72, 13, 74, - 15, 54, 66, 14, 175, 42, 99, 45, 71, 85, - 93, 85, 76, 28, 76, 59, 76, 127, 77, 76, - 142, 235, 236, 99, 75, 99, 235, 236, 199, 66, - 123, 72, 235, 236, 7, 8, 89, 71, 79, 80, - 75, 61, 77, 68, 69, 70, 260, 123, 73, 123, - 4, 260, 71, 267, 107, 108, 109, 260, 267, 160, - 113, 78, 289, 116, 267, 82, 74, 143, 75, 143, - 146, 21, 146, 88, 245, 246, 91, 284, 51, 52, - 53, 31, 22, 23, 255, 34, 101, 235, 236, 38, - 25, 26, 162, 163, 67, 68, 69, 70, 75, 175, - 73, 175, 22, 23, 24, 78, 72, 57, 58, 13, - 68, 69, 260, 12, 285, 73, 84, 85, 11, 267, - 55, 64, 65, 199, 81, 199, 136, 137, 299, 10, - 231, 19, 225, 304, 149, 83, 22, 23, 24, 140, - 141, 312, 308, 309, 159, 86, 317, 72, 4, 225, - 36, 225, 205, 39, 72, 326, 327, 128, 129, 130, - 131, 132, 133, 134, 217, 257, 258, 74, 37, 245, - 246, 245, 246, 43, 244, 72, 77, 62, 73, 255, - 29, 255, 35, 77, 75, 200, 45, 240, 241, 31, - 4, 4, 66, 14, 4, 4, 211, 30, 268, 269, - 37, 31, 4, 54, 4, 77, 29, 75, 284, 285, - 284, 285, 227, 6, 31, 230, 44, 4, 271, 289, - 66, 66, 66, 299, 31, 299, 31, 4, 304, 4, - 304, 28, 31, 248, 22, 62, 312, 76, 312, 23, - 3, 317, 76, 317, 4, 28, 4, 62, 77, 31, - 326, 327, 326, 327, 4, 308, 309, 20, 21, 77, - 4, 24, 24, 31, 27, 28, 31, 282, 24, 24, - 33, 34, 6, 36, 205, 113, 39, 222, 197, 251, - 116, 44, 4, 124, 138, 306, 126, 50, 135, 139, - 122, 54, 55, 171, 57, 58, 271, 60, 20, 21, - 63, 125, 24, 66, -1, 27, 28, -1, 71, 117, - -1, 33, 34, 76, 36, -1, -1, 39, -1, -1, - -1, -1, 44, -1, 6, 7, 8, 9, 50, -1, - -1, -1, -1, 55, -1, 57, 58, -1, 60, -1, - -1, 63, 24, -1, 66, -1, -1, -1, -1, 71, - -1, -1, -1, -1, 76, 7, 8, 9, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, - 52, 53, 24, -1, 56, -1, -1, 29, 60, -1, - -1, -1, -1, -1, 66, 67, 68, 69, 70, -1, - -1, 73, -1, -1, 76, -1, 78, -1, -1, 51, - 52, 53, -1, -1, 56, 7, 8, 9, 60, -1, - -1, -1, -1, -1, 66, 67, 68, 69, 70, -1, - -1, 73, 24, -1, 76, -1, 78, -1, -1, -1, - -1, -1, -1, -1, -1, 7, 8, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, - 52, 53, 24, -1, 56, -1, -1, -1, 60, -1, - -1, -1, -1, -1, 66, 67, 68, 69, 70, -1, - -1, 73, -1, -1, 76, -1, 78, -1, -1, 51, - 52, 53, -1, -1, 56, -1, -1, -1, 60, -1, - -1, -1, -1, -1, 66, 67, 68, 69, 70, -1, - -1, 73, -1, -1, 76, -1, 78, 20, 21, 22, - 23, 24, -1, -1, 27, 28, -1, -1, -1, -1, - 33, 34, -1, 36, -1, -1, 39, -1, -1, -1, + 6, 27, 6, 9, 147, 9, 60, 6, 50, 32, + 6, 14, 165, 6, 152, 21, 4, 21, 78, 24, + 4, 27, 82, 27, 32, 4, 24, 10, 14, 12, + 14, 144, 41, 14, 17, 48, 14, 20, 49, 15, + 16, 17, 18, 14, 14, 14, 34, 34, 46, 47, + 38, 38, 61, 84, 85, 41, 4, 14, 24, 22, + 23, 66, 152, 32, 177, 152, 14, 0, 66, 40, + 13, 54, 15, 99, 77, 32, 42, 76, 101, 85, + 76, 85, 4, 76, 93, 28, 128, 71, 201, 143, + 239, 240, 71, 99, 75, 99, 72, 75, 124, 77, + 66, 239, 240, 79, 80, 75, 89, 137, 138, 4, + 68, 69, 70, 4, 29, 73, 31, 266, 124, 14, + 124, 45, 24, 14, 273, 108, 109, 110, 266, 64, + 65, 114, 25, 26, 117, 273, 249, 250, 144, 162, + 144, 147, 295, 147, 21, 88, 289, 260, 91, 239, + 240, 61, 239, 240, 31, 59, 164, 165, 60, 102, + 68, 69, 55, 4, 66, 73, 141, 142, 22, 23, + 24, 177, 71, 177, 76, 75, 266, 290, 74, 266, + 57, 58, 36, 273, 13, 39, 273, 75, 6, 7, + 8, 9, 305, 314, 315, 201, 309, 201, 22, 23, + 24, 227, 72, 72, 74, 318, 24, 150, 12, 11, + 323, 129, 130, 131, 132, 133, 134, 135, 161, 332, + 333, 227, 10, 227, 207, 262, 263, 19, 81, 86, + 72, 83, 4, 51, 52, 53, 219, 72, 56, 37, + 248, 74, 60, 249, 250, 249, 250, 43, 66, 67, + 68, 69, 70, 72, 260, 73, 260, 75, 76, 202, + 78, 244, 245, 62, 73, 77, 274, 275, 75, 77, + 213, 35, 45, 31, 4, 4, 66, 14, 4, 4, + 30, 28, 37, 289, 290, 289, 290, 295, 231, 31, + 4, 234, 235, 54, 277, 4, 77, 75, 6, 305, + 31, 305, 29, 309, 44, 309, 4, 66, 31, 252, + 66, 31, 318, 66, 318, 4, 3, 323, 31, 323, + 4, 62, 76, 22, 76, 4, 332, 333, 332, 333, + 23, 314, 315, 20, 21, 4, 28, 24, 62, 77, + 27, 28, 77, 31, 287, 4, 33, 34, 291, 36, + 4, 24, 39, 31, 31, 6, 24, 44, 4, 24, + 207, 224, 199, 50, 256, 114, 117, 54, 55, 255, + 57, 58, 311, 60, 20, 21, 63, 291, 24, 66, + 123, 27, 28, 127, 71, 118, 125, 33, 34, 76, + 36, 136, 126, 39, 140, 277, 173, -1, 44, 7, + 8, 9, -1, 139, 50, -1, -1, -1, -1, 55, + -1, 57, 58, -1, 60, -1, 24, 63, -1, -1, + 66, -1, -1, -1, -1, 71, -1, -1, -1, -1, + 76, -1, 7, 8, 9, -1, -1, -1, -1, -1, + -1, -1, -1, 51, 52, 53, -1, -1, 56, 24, + -1, -1, 60, -1, 29, -1, -1, -1, 66, 67, + 68, 69, 70, -1, -1, 73, -1, 75, 76, -1, + 78, 7, 8, 9, -1, -1, 51, 52, 53, -1, + -1, 56, -1, -1, -1, 60, -1, -1, 24, -1, + -1, 66, 67, 68, 69, 70, -1, -1, 73, -1, + -1, 76, -1, 78, 7, 8, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 51, 52, 53, -1, -1, + 56, 24, -1, -1, 60, -1, -1, -1, -1, -1, + 66, 67, 68, 69, 70, 7, 8, 73, -1, -1, + 76, -1, 78, -1, -1, -1, -1, -1, 51, 52, + 53, -1, -1, 56, -1, -1, -1, 60, -1, -1, + -1, -1, -1, 66, 67, 68, 69, 70, -1, -1, + 73, -1, -1, 76, -1, 78, -1, -1, -1, 51, + 52, 53, -1, -1, -1, -1, 20, 21, 22, 23, + 24, -1, -1, 27, 28, 67, 68, 69, 70, 33, + 34, 73, 36, -1, -1, 39, 78, -1, -1, -1, + 44, -1, -1, -1, -1, -1, 50, -1, -1, -1, + -1, 55, -1, 57, 58, -1, 60, 20, 21, 63, + -1, 24, 66, -1, 27, 28, -1, 71, -1, -1, + 33, 34, 76, 36, 37, -1, 39, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, 50, -1, -1, - -1, -1, 55, -1, 57, 58, -1, 60, 20, 21, - 63, -1, 24, 66, -1, 27, 28, -1, 71, -1, - -1, 33, 34, 76, 36, 37, -1, 39, -1, -1, - -1, -1, 44, -1, -1, -1, -1, -1, 50, -1, - -1, -1, -1, 55, -1, 57, 58, -1, 60, -1, - -1, 63, -1, -1, 66, -1, -1, -1, -1, 71, - -1, 20, 21, -1, 76, 24, -1, -1, 27, 28, - -1, -1, -1, -1, 33, 34, 35, 36, -1, -1, + -1, -1, 55, -1, 57, 58, -1, 60, -1, -1, + 63, -1, -1, 66, -1, -1, -1, -1, 71, -1, + 20, 21, -1, 76, 24, -1, -1, 27, 28, -1, + -1, -1, -1, 33, 34, 35, 36, -1, -1, 39, + -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, + 50, -1, -1, -1, -1, 55, -1, 57, 58, -1, + 60, 20, 21, 63, -1, 24, 66, -1, 27, 28, + -1, 71, 31, -1, 33, 34, 76, 36, -1, -1, 39, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, 57, 58, -1, 60, 20, 21, 63, -1, 24, 66, -1, 27, - 28, -1, 71, 31, -1, 33, 34, 76, 36, -1, + 28, -1, 71, -1, -1, 33, 34, 76, 36, -1, -1, 39, -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, 57, - 58, -1, 60, 20, 21, 63, -1, 24, 66, -1, - 27, 28, -1, 71, -1, -1, 33, 34, 76, 36, - -1, -1, 39, -1, -1, -1, -1, 44, -1, -1, - -1, -1, -1, 50, -1, -1, -1, -1, 55, -1, - 57, 58, -1, 60, -1, 62, 63, -1, -1, 66, - -1, -1, -1, -1, 71, -1, 20, 21, -1, 76, - 24, -1, -1, 27, 28, -1, -1, -1, -1, 33, - 34, -1, 36, -1, -1, 39, -1, -1, -1, -1, - 44, -1, -1, -1, -1, -1, 50, -1, -1, -1, - -1, 55, -1, 57, 58, -1, 60, -1, -1, 63, - -1, -1, 66, -1, -1, -1, -1, 71, -1, -1, - -1, -1, 76 + 58, -1, 60, -1, 62, 63, -1, -1, 66, -1, + -1, -1, -1, 71, -1, 20, 21, -1, 76, 24, + -1, -1, 27, 28, -1, -1, -1, -1, 33, 34, + -1, 36, -1, -1, 39, -1, -1, -1, -1, 44, + -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, + 55, -1, 57, 58, -1, 60, -1, -1, 63, -1, + -1, 66, -1, -1, -1, -1, 71, -1, -1, -1, + -1, 76 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -949,37 +956,38 @@ static const yytype_uint8 yystos[] = 0, 48, 88, 89, 49, 0, 90, 4, 3, 20, 21, 24, 27, 28, 33, 34, 36, 39, 44, 50, 54, 55, 57, 58, 60, 63, 66, 71, 76, 93, - 94, 95, 96, 105, 130, 134, 135, 138, 139, 140, - 144, 96, 97, 98, 144, 100, 101, 144, 7, 8, + 94, 95, 96, 105, 131, 135, 136, 139, 140, 141, + 145, 96, 97, 98, 145, 100, 101, 145, 7, 8, 9, 51, 52, 53, 56, 67, 68, 69, 70, 73, - 78, 96, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 22, - 23, 24, 36, 39, 116, 4, 34, 38, 103, 42, - 144, 45, 144, 96, 59, 61, 94, 116, 4, 71, - 6, 76, 112, 113, 114, 115, 116, 74, 22, 23, - 76, 112, 114, 75, 6, 76, 75, 72, 121, 144, - 129, 112, 14, 32, 13, 12, 11, 10, 15, 16, - 17, 18, 72, 79, 80, 81, 78, 82, 19, 83, - 84, 85, 86, 4, 91, 92, 93, 116, 144, 72, - 116, 4, 112, 64, 65, 77, 94, 115, 116, 72, - 75, 144, 144, 144, 97, 68, 69, 73, 99, 133, - 100, 78, 102, 131, 117, 4, 94, 118, 119, 120, - 121, 123, 123, 123, 123, 123, 123, 123, 124, 125, - 125, 126, 127, 128, 128, 129, 91, 37, 92, 4, - 43, 116, 4, 71, 145, 21, 136, 137, 138, 139, - 140, 72, 62, 73, 77, 116, 115, 76, 114, 141, - 141, 77, 75, 132, 91, 29, 35, 103, 91, 116, - 40, 45, 111, 98, 31, 4, 4, 24, 66, 116, - 46, 47, 142, 143, 144, 4, 4, 99, 30, 107, - 108, 109, 94, 116, 37, 4, 116, 29, 115, 31, - 4, 54, 136, 136, 25, 26, 55, 4, 144, 144, - 77, 75, 114, 91, 91, 116, 29, 110, 108, 31, - 106, 91, 41, 104, 145, 145, 44, 136, 4, 66, - 66, 66, 136, 114, 114, 142, 31, 31, 32, 4, - 31, 28, 62, 116, 4, 92, 91, 141, 76, 76, - 22, 23, 4, 91, 28, 91, 111, 4, 143, 143, - 91, 62, 91, 77, 77, 31, 4, 4, 24, 91, - 91, 31, 31, 24, 24 + 78, 96, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 22, + 23, 24, 36, 39, 117, 4, 34, 38, 103, 42, + 145, 45, 145, 96, 59, 61, 94, 117, 4, 71, + 6, 75, 76, 112, 113, 114, 115, 117, 74, 22, + 23, 76, 112, 115, 75, 6, 76, 75, 72, 122, + 145, 130, 112, 14, 32, 13, 12, 11, 10, 15, + 16, 17, 18, 72, 79, 80, 81, 78, 82, 19, + 83, 84, 85, 86, 4, 91, 92, 93, 117, 145, + 72, 117, 4, 112, 64, 65, 77, 94, 114, 114, + 117, 72, 75, 145, 145, 145, 97, 68, 69, 73, + 99, 134, 100, 78, 102, 132, 118, 4, 94, 119, + 120, 121, 122, 124, 124, 124, 124, 124, 124, 124, + 125, 126, 126, 127, 128, 129, 129, 130, 91, 37, + 92, 4, 43, 117, 4, 71, 146, 21, 137, 138, + 139, 140, 141, 72, 62, 73, 77, 117, 114, 76, + 115, 142, 142, 77, 75, 133, 91, 29, 31, 106, + 35, 103, 91, 117, 40, 45, 111, 98, 31, 4, + 4, 24, 66, 117, 46, 47, 143, 144, 145, 4, + 4, 99, 30, 107, 108, 109, 94, 28, 117, 37, + 4, 117, 29, 116, 117, 31, 4, 54, 137, 137, + 25, 26, 55, 4, 145, 145, 77, 75, 115, 91, + 91, 117, 29, 110, 108, 106, 91, 41, 104, 146, + 146, 75, 44, 137, 4, 66, 66, 66, 137, 115, + 115, 143, 31, 31, 32, 4, 31, 62, 117, 4, + 92, 91, 116, 142, 76, 76, 22, 23, 4, 91, + 28, 91, 111, 4, 144, 144, 91, 62, 91, 77, + 77, 31, 4, 4, 24, 91, 91, 31, 31, 24, + 24 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -993,15 +1001,15 @@ static const yytype_uint8 yyr1[] = 100, 100, 101, 102, 102, 103, 103, 104, 104, 105, 105, 105, 106, 106, 107, 107, 108, 108, 109, 110, 110, 111, 111, 111, 112, 112, 113, 113, 114, 114, - 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, - 120, 120, 121, 121, 122, 122, 122, 122, 122, 122, - 122, 122, 123, 123, 124, 124, 124, 125, 125, 126, - 126, 127, 127, 127, 128, 128, 129, 129, 129, 129, - 130, 130, 131, 131, 131, 131, 131, 131, 131, 132, - 132, 132, 132, 133, 133, 133, 134, 134, 135, 136, - 136, 136, 136, 136, 137, 137, 137, 138, 138, 139, - 139, 140, 140, 140, 141, 141, 142, 142, 143, 143, - 143, 144, 144, 145, 145 + 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, + 119, 120, 120, 121, 121, 122, 122, 123, 123, 123, + 123, 123, 123, 123, 123, 124, 124, 125, 125, 125, + 126, 126, 127, 127, 128, 128, 128, 129, 129, 130, + 130, 130, 130, 131, 131, 132, 132, 132, 132, 132, + 132, 132, 133, 133, 133, 133, 134, 134, 134, 135, + 135, 136, 137, 137, 137, 137, 137, 138, 138, 138, + 139, 139, 140, 140, 141, 141, 141, 142, 142, 143, + 143, 144, 144, 144, 145, 145, 146, 146 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1013,17 +1021,17 @@ static const yytype_uint8 yyr2[] = 2, 2, 2, 5, 1, 4, 4, 2, 10, 8, 7, 1, 3, 1, 3, 1, 4, 2, 1, 3, 1, 3, 3, 1, 2, 1, 1, 0, 2, 9, - 4, 7, 0, 2, 0, 1, 1, 2, 5, 0, - 3, 0, 4, 5, 1, 3, 1, 1, 0, 1, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 2, 1, 3, 3, 3, 3, 3, - 3, 3, 1, 3, 1, 3, 3, 1, 3, 1, - 3, 1, 3, 3, 1, 3, 1, 1, 2, 2, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 7, 0, - 3, 4, 4, 3, 9, 11, 11, 8, 8, 0, - 1, 2, 1, 1, 1, 3, 1, 3, 2, 3, - 3, 1, 1, 1, 1 + 5, 7, 0, 2, 0, 1, 1, 2, 5, 0, + 3, 0, 4, 5, 1, 3, 1, 1, 1, 3, + 2, 0, 1, 1, 3, 1, 3, 1, 3, 1, + 3, 1, 3, 1, 3, 1, 2, 1, 3, 3, + 3, 3, 3, 3, 3, 1, 3, 1, 3, 3, + 1, 3, 1, 3, 1, 3, 3, 1, 3, 1, + 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 1, 7, 0, 3, 4, 4, 3, 9, 11, 11, + 8, 8, 0, 1, 2, 1, 1, 1, 3, 1, + 3, 2, 3, 3, 1, 1, 1, 1 }; @@ -1708,944 +1716,962 @@ yyreduce: case 2: #line 147 "parser.y" /* yacc.c:1646 */ { parse_complete(ctx, (yyvsp[-2].boolean)); } -#line 1717 "parser.tab.c" /* yacc.c:1646 */ +#line 1725 "parser.tab.c" /* yacc.c:1646 */ break; case 3: #line 150 "parser.y" /* yacc.c:1646 */ { (yyval.boolean) = FALSE; } -#line 1723 "parser.tab.c" /* yacc.c:1646 */ +#line 1731 "parser.tab.c" /* yacc.c:1646 */ break; case 4: #line 151 "parser.y" /* yacc.c:1646 */ { (yyval.boolean) = TRUE; } -#line 1729 "parser.tab.c" /* yacc.c:1646 */ +#line 1737 "parser.tab.c" /* yacc.c:1646 */ break; case 6: #line 155 "parser.y" /* yacc.c:1646 */ { source_add_statement(ctx, (yyvsp[0].statement)); } -#line 1735 "parser.tab.c" /* yacc.c:1646 */ +#line 1743 "parser.tab.c" /* yacc.c:1646 */ break; case 7: #line 156 "parser.y" /* yacc.c:1646 */ { source_add_class(ctx, (yyvsp[0].class_decl)); } -#line 1741 "parser.tab.c" /* yacc.c:1646 */ +#line 1749 "parser.tab.c" /* yacc.c:1646 */ break; case 8: #line 159 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = NULL; } -#line 1747 "parser.tab.c" /* yacc.c:1646 */ +#line 1755 "parser.tab.c" /* yacc.c:1646 */ break; case 9: #line 160 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 1753 "parser.tab.c" /* yacc.c:1646 */ +#line 1761 "parser.tab.c" /* yacc.c:1646 */ break; case 10: #line 163 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 1759 "parser.tab.c" /* yacc.c:1646 */ +#line 1767 "parser.tab.c" /* yacc.c:1646 */ break; case 11: #line 164 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = link_statements((yyvsp[-1].statement), (yyvsp[0].statement)); } -#line 1765 "parser.tab.c" /* yacc.c:1646 */ +#line 1773 "parser.tab.c" /* yacc.c:1646 */ break; case 12: #line 167 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].statement); } -#line 1771 "parser.tab.c" /* yacc.c:1646 */ +#line 1779 "parser.tab.c" /* yacc.c:1646 */ break; case 13: #line 170 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = NULL; } -#line 1777 "parser.tab.c" /* yacc.c:1646 */ +#line 1785 "parser.tab.c" /* yacc.c:1646 */ break; case 14: #line 171 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 1783 "parser.tab.c" /* yacc.c:1646 */ +#line 1791 "parser.tab.c" /* yacc.c:1646 */ break; case 15: #line 172 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 1789 "parser.tab.c" /* yacc.c:1646 */ +#line 1797 "parser.tab.c" /* yacc.c:1646 */ break; case 16: #line 173 "parser.y" /* yacc.c:1646 */ { (yyvsp[-2].statement)->next = (yyvsp[0].statement); (yyval.statement) = (yyvsp[-2].statement); } -#line 1795 "parser.tab.c" /* yacc.c:1646 */ +#line 1803 "parser.tab.c" /* yacc.c:1646 */ break; case 17: #line 174 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].statement); } -#line 1801 "parser.tab.c" /* yacc.c:1646 */ +#line 1809 "parser.tab.c" /* yacc.c:1646 */ break; case 18: #line 177 "parser.y" /* yacc.c:1646 */ { (yyvsp[-1].member)->args = (yyvsp[0].expression); (yyval.statement) = new_call_statement(ctx, FALSE, (yyvsp[-1].member)); CHECK_ERROR; } -#line 1807 "parser.tab.c" /* yacc.c:1646 */ +#line 1815 "parser.tab.c" /* yacc.c:1646 */ break; case 19: #line 178 "parser.y" /* yacc.c:1646 */ { (yyvsp[-1].member)->args = (yyvsp[0].expression); (yyval.statement) = new_call_statement(ctx, TRUE, (yyvsp[-1].member)); CHECK_ERROR; } -#line 1813 "parser.tab.c" /* yacc.c:1646 */ +#line 1821 "parser.tab.c" /* yacc.c:1646 */ break; case 20: #line 180 "parser.y" /* yacc.c:1646 */ { (yyvsp[-3].member)->args = (yyvsp[-2].expression); (yyval.statement) = new_assign_statement(ctx, (yyvsp[-3].member), (yyvsp[0].expression)); CHECK_ERROR; } -#line 1819 "parser.tab.c" /* yacc.c:1646 */ +#line 1827 "parser.tab.c" /* yacc.c:1646 */ break; case 21: #line 181 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_dim_statement(ctx, (yyvsp[0].dim_decl)); CHECK_ERROR; } -#line 1825 "parser.tab.c" /* yacc.c:1646 */ +#line 1833 "parser.tab.c" /* yacc.c:1646 */ break; case 22: #line 182 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 1831 "parser.tab.c" /* yacc.c:1646 */ +#line 1839 "parser.tab.c" /* yacc.c:1646 */ break; case 23: #line 184 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_while_statement(ctx, STAT_WHILE, (yyvsp[-3].expression), (yyvsp[-1].statement)); CHECK_ERROR; } -#line 1837 "parser.tab.c" /* yacc.c:1646 */ +#line 1845 "parser.tab.c" /* yacc.c:1646 */ break; case 24: #line 186 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_while_statement(ctx, (yyvsp[-4].boolean) ? STAT_WHILELOOP : STAT_UNTIL, (yyvsp[-3].expression), (yyvsp[-1].statement)); CHECK_ERROR; } -#line 1844 "parser.tab.c" /* yacc.c:1646 */ +#line 1852 "parser.tab.c" /* yacc.c:1646 */ break; case 25: #line 189 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_while_statement(ctx, (yyvsp[-1].boolean) ? STAT_DOWHILE : STAT_DOUNTIL, (yyvsp[0].expression), (yyvsp[-3].statement)); CHECK_ERROR; } -#line 1851 "parser.tab.c" /* yacc.c:1646 */ +#line 1859 "parser.tab.c" /* yacc.c:1646 */ break; case 26: #line 191 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_while_statement(ctx, STAT_DOWHILE, NULL, (yyvsp[-1].statement)); CHECK_ERROR; } -#line 1857 "parser.tab.c" /* yacc.c:1646 */ +#line 1865 "parser.tab.c" /* yacc.c:1646 */ break; case 27: #line 192 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_function_statement(ctx, (yyvsp[0].func_decl)); CHECK_ERROR; } -#line 1863 "parser.tab.c" /* yacc.c:1646 */ +#line 1871 "parser.tab.c" /* yacc.c:1646 */ break; case 28: #line 193 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_EXITDO, 0); CHECK_ERROR; } -#line 1869 "parser.tab.c" /* yacc.c:1646 */ +#line 1877 "parser.tab.c" /* yacc.c:1646 */ break; case 29: #line 194 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_EXITFOR, 0); CHECK_ERROR; } -#line 1875 "parser.tab.c" /* yacc.c:1646 */ +#line 1883 "parser.tab.c" /* yacc.c:1646 */ break; case 30: #line 195 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_EXITFUNC, 0); CHECK_ERROR; } -#line 1881 "parser.tab.c" /* yacc.c:1646 */ +#line 1889 "parser.tab.c" /* yacc.c:1646 */ break; case 31: #line 196 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_EXITPROP, 0); CHECK_ERROR; } -#line 1887 "parser.tab.c" /* yacc.c:1646 */ +#line 1895 "parser.tab.c" /* yacc.c:1646 */ break; case 32: #line 197 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_EXITSUB, 0); CHECK_ERROR; } -#line 1893 "parser.tab.c" /* yacc.c:1646 */ +#line 1901 "parser.tab.c" /* yacc.c:1646 */ break; case 33: #line 199 "parser.y" /* yacc.c:1646 */ { (yyvsp[-3].member)->args = (yyvsp[-2].expression); (yyval.statement) = new_set_statement(ctx, (yyvsp[-3].member), (yyvsp[0].expression)); CHECK_ERROR; } -#line 1899 "parser.tab.c" /* yacc.c:1646 */ +#line 1907 "parser.tab.c" /* yacc.c:1646 */ break; case 34: #line 200 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_STOP, 0); CHECK_ERROR; } -#line 1905 "parser.tab.c" /* yacc.c:1646 */ +#line 1913 "parser.tab.c" /* yacc.c:1646 */ break; case 35: #line 201 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_onerror_statement(ctx, TRUE); CHECK_ERROR; } -#line 1911 "parser.tab.c" /* yacc.c:1646 */ +#line 1919 "parser.tab.c" /* yacc.c:1646 */ break; case 36: #line 202 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_onerror_statement(ctx, FALSE); CHECK_ERROR; } -#line 1917 "parser.tab.c" /* yacc.c:1646 */ +#line 1925 "parser.tab.c" /* yacc.c:1646 */ break; case 37: #line 203 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_const_statement(ctx, (yyvsp[0].const_decl)); CHECK_ERROR; } -#line 1923 "parser.tab.c" /* yacc.c:1646 */ +#line 1931 "parser.tab.c" /* yacc.c:1646 */ break; case 38: #line 205 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_forto_statement(ctx, (yyvsp[-8].string), (yyvsp[-6].expression), (yyvsp[-4].expression), (yyvsp[-3].expression), (yyvsp[-1].statement)); CHECK_ERROR; } -#line 1929 "parser.tab.c" /* yacc.c:1646 */ +#line 1937 "parser.tab.c" /* yacc.c:1646 */ break; case 39: #line 207 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_foreach_statement(ctx, (yyvsp[-5].string), (yyvsp[-3].expression), (yyvsp[-1].statement)); } -#line 1935 "parser.tab.c" /* yacc.c:1646 */ +#line 1943 "parser.tab.c" /* yacc.c:1646 */ break; case 40: #line 209 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_select_statement(ctx, (yyvsp[-4].expression), (yyvsp[-2].case_clausule)); } -#line 1941 "parser.tab.c" /* yacc.c:1646 */ +#line 1949 "parser.tab.c" /* yacc.c:1646 */ break; case 41: #line 212 "parser.y" /* yacc.c:1646 */ { (yyval.member) = new_member_expression(ctx, NULL, (yyvsp[0].string)); CHECK_ERROR; } -#line 1947 "parser.tab.c" /* yacc.c:1646 */ +#line 1955 "parser.tab.c" /* yacc.c:1646 */ break; case 42: #line 213 "parser.y" /* yacc.c:1646 */ { (yyval.member) = new_member_expression(ctx, (yyvsp[-2].expression), (yyvsp[0].string)); CHECK_ERROR; } -#line 1953 "parser.tab.c" /* yacc.c:1646 */ +#line 1961 "parser.tab.c" /* yacc.c:1646 */ break; case 43: #line 216 "parser.y" /* yacc.c:1646 */ { (yyval.dim_decl) = (yyvsp[0].dim_decl); } -#line 1959 "parser.tab.c" /* yacc.c:1646 */ +#line 1967 "parser.tab.c" /* yacc.c:1646 */ break; case 44: #line 217 "parser.y" /* yacc.c:1646 */ { (yyvsp[-2].dim_decl)->next = (yyvsp[0].dim_decl); (yyval.dim_decl) = (yyvsp[-2].dim_decl); } -#line 1965 "parser.tab.c" /* yacc.c:1646 */ +#line 1973 "parser.tab.c" /* yacc.c:1646 */ break; case 45: #line 220 "parser.y" /* yacc.c:1646 */ { (yyval.dim_decl) = new_dim_decl(ctx, (yyvsp[0].string), FALSE, NULL); CHECK_ERROR; } -#line 1971 "parser.tab.c" /* yacc.c:1646 */ +#line 1979 "parser.tab.c" /* yacc.c:1646 */ break; case 46: #line 221 "parser.y" /* yacc.c:1646 */ { (yyval.dim_decl) = new_dim_decl(ctx, (yyvsp[-3].string), TRUE, (yyvsp[-1].dim_list)); CHECK_ERROR; } -#line 1977 "parser.tab.c" /* yacc.c:1646 */ +#line 1985 "parser.tab.c" /* yacc.c:1646 */ break; case 47: #line 222 "parser.y" /* yacc.c:1646 */ { (yyval.dim_decl) = new_dim_decl(ctx, (yyvsp[-1].string), TRUE, NULL); CHECK_ERROR; } -#line 1983 "parser.tab.c" /* yacc.c:1646 */ +#line 1991 "parser.tab.c" /* yacc.c:1646 */ break; case 48: #line 225 "parser.y" /* yacc.c:1646 */ { (yyval.dim_list) = new_dim(ctx, (yyvsp[0].uint), NULL); } -#line 1989 "parser.tab.c" /* yacc.c:1646 */ +#line 1997 "parser.tab.c" /* yacc.c:1646 */ break; case 49: #line 226 "parser.y" /* yacc.c:1646 */ { (yyval.dim_list) = new_dim(ctx, (yyvsp[-2].uint), (yyvsp[0].dim_list)); } -#line 1995 "parser.tab.c" /* yacc.c:1646 */ +#line 2003 "parser.tab.c" /* yacc.c:1646 */ break; case 50: #line 229 "parser.y" /* yacc.c:1646 */ { (yyval.const_decl) = (yyvsp[0].const_decl); } -#line 2001 "parser.tab.c" /* yacc.c:1646 */ +#line 2009 "parser.tab.c" /* yacc.c:1646 */ break; case 51: #line 230 "parser.y" /* yacc.c:1646 */ { (yyvsp[-2].const_decl)->next = (yyvsp[0].const_decl); (yyval.const_decl) = (yyvsp[-2].const_decl); } -#line 2007 "parser.tab.c" /* yacc.c:1646 */ +#line 2015 "parser.tab.c" /* yacc.c:1646 */ break; case 52: #line 233 "parser.y" /* yacc.c:1646 */ { (yyval.const_decl) = new_const_decl(ctx, (yyvsp[-2].string), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2013 "parser.tab.c" /* yacc.c:1646 */ +#line 2021 "parser.tab.c" /* yacc.c:1646 */ break; case 53: #line 236 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2019 "parser.tab.c" /* yacc.c:1646 */ +#line 2027 "parser.tab.c" /* yacc.c:1646 */ break; case 54: #line 237 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_unary_expression(ctx, EXPR_NEG, (yyvsp[0].expression)); CHECK_ERROR; } -#line 2025 "parser.tab.c" /* yacc.c:1646 */ +#line 2033 "parser.tab.c" /* yacc.c:1646 */ break; case 55: #line 240 "parser.y" /* yacc.c:1646 */ { (yyval.boolean) = TRUE; } -#line 2031 "parser.tab.c" /* yacc.c:1646 */ +#line 2039 "parser.tab.c" /* yacc.c:1646 */ break; case 56: #line 241 "parser.y" /* yacc.c:1646 */ { (yyval.boolean) = FALSE; } -#line 2037 "parser.tab.c" /* yacc.c:1646 */ +#line 2045 "parser.tab.c" /* yacc.c:1646 */ break; case 57: #line 244 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = NULL;} -#line 2043 "parser.tab.c" /* yacc.c:1646 */ +#line 2051 "parser.tab.c" /* yacc.c:1646 */ break; case 58: #line 245 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2049 "parser.tab.c" /* yacc.c:1646 */ +#line 2057 "parser.tab.c" /* yacc.c:1646 */ break; case 59: #line 249 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_if_statement(ctx, (yyvsp[-7].expression), (yyvsp[-4].statement), (yyvsp[-3].elseif), (yyvsp[-2].statement)); CHECK_ERROR; } -#line 2055 "parser.tab.c" /* yacc.c:1646 */ +#line 2063 "parser.tab.c" /* yacc.c:1646 */ break; case 60: #line 250 "parser.y" /* yacc.c:1646 */ - { (yyval.statement) = new_if_statement(ctx, (yyvsp[-2].expression), (yyvsp[0].statement), NULL, NULL); CHECK_ERROR; } -#line 2061 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.statement) = new_if_statement(ctx, (yyvsp[-3].expression), (yyvsp[-1].statement), NULL, NULL); CHECK_ERROR; } +#line 2069 "parser.tab.c" /* yacc.c:1646 */ break; case 61: #line 252 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_if_statement(ctx, (yyvsp[-5].expression), (yyvsp[-3].statement), NULL, (yyvsp[-1].statement)); CHECK_ERROR; } -#line 2067 "parser.tab.c" /* yacc.c:1646 */ +#line 2075 "parser.tab.c" /* yacc.c:1646 */ break; case 64: #line 259 "parser.y" /* yacc.c:1646 */ { (yyval.elseif) = NULL; } -#line 2073 "parser.tab.c" /* yacc.c:1646 */ +#line 2081 "parser.tab.c" /* yacc.c:1646 */ break; case 65: #line 260 "parser.y" /* yacc.c:1646 */ { (yyval.elseif) = (yyvsp[0].elseif); } -#line 2079 "parser.tab.c" /* yacc.c:1646 */ +#line 2087 "parser.tab.c" /* yacc.c:1646 */ break; case 66: #line 263 "parser.y" /* yacc.c:1646 */ { (yyval.elseif) = (yyvsp[0].elseif); } -#line 2085 "parser.tab.c" /* yacc.c:1646 */ +#line 2093 "parser.tab.c" /* yacc.c:1646 */ break; case 67: #line 264 "parser.y" /* yacc.c:1646 */ { (yyvsp[-1].elseif)->next = (yyvsp[0].elseif); (yyval.elseif) = (yyvsp[-1].elseif); } -#line 2091 "parser.tab.c" /* yacc.c:1646 */ +#line 2099 "parser.tab.c" /* yacc.c:1646 */ break; case 68: #line 268 "parser.y" /* yacc.c:1646 */ { (yyval.elseif) = new_elseif_decl(ctx, (yyvsp[-3].expression), (yyvsp[0].statement)); } -#line 2097 "parser.tab.c" /* yacc.c:1646 */ +#line 2105 "parser.tab.c" /* yacc.c:1646 */ break; case 69: #line 271 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = NULL; } -#line 2103 "parser.tab.c" /* yacc.c:1646 */ +#line 2111 "parser.tab.c" /* yacc.c:1646 */ break; case 70: #line 272 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 2109 "parser.tab.c" /* yacc.c:1646 */ +#line 2117 "parser.tab.c" /* yacc.c:1646 */ break; case 71: #line 275 "parser.y" /* yacc.c:1646 */ { (yyval.case_clausule) = NULL; } -#line 2115 "parser.tab.c" /* yacc.c:1646 */ +#line 2123 "parser.tab.c" /* yacc.c:1646 */ break; case 72: #line 276 "parser.y" /* yacc.c:1646 */ { (yyval.case_clausule) = new_case_clausule(ctx, NULL, (yyvsp[0].statement), NULL); } -#line 2121 "parser.tab.c" /* yacc.c:1646 */ +#line 2129 "parser.tab.c" /* yacc.c:1646 */ break; case 73: #line 278 "parser.y" /* yacc.c:1646 */ { (yyval.case_clausule) = new_case_clausule(ctx, (yyvsp[-3].expression), (yyvsp[-1].statement), (yyvsp[0].case_clausule)); } -#line 2127 "parser.tab.c" /* yacc.c:1646 */ +#line 2135 "parser.tab.c" /* yacc.c:1646 */ break; case 74: #line 281 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = NULL; } -#line 2133 "parser.tab.c" /* yacc.c:1646 */ +#line 2141 "parser.tab.c" /* yacc.c:1646 */ break; case 75: #line 282 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[-1].expression); } -#line 2139 "parser.tab.c" /* yacc.c:1646 */ +#line 2147 "parser.tab.c" /* yacc.c:1646 */ break; case 76: #line 285 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = NULL; } -#line 2145 "parser.tab.c" /* yacc.c:1646 */ +#line 2153 "parser.tab.c" /* yacc.c:1646 */ break; case 77: #line 286 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2151 "parser.tab.c" /* yacc.c:1646 */ +#line 2159 "parser.tab.c" /* yacc.c:1646 */ + break; + + case 78: +#line 289 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2165 "parser.tab.c" /* yacc.c:1646 */ + break; + + case 79: +#line 290 "parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].expression)->next = (yyvsp[0].expression); (yyval.expression) = (yyvsp[-2].expression); } +#line 2171 "parser.tab.c" /* yacc.c:1646 */ break; case 80: -#line 293 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2157 "parser.tab.c" /* yacc.c:1646 */ - break; - - case 81: -#line 294 "parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].expression)->next = (yyvsp[0].expression); (yyval.expression) = (yyvsp[-2].expression); } -#line 2163 "parser.tab.c" /* yacc.c:1646 */ - break; - - case 82: -#line 297 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2169 "parser.tab.c" /* yacc.c:1646 */ +#line 291 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_expression(ctx, EXPR_NOARG, 0); CHECK_ERROR; (yyval.expression)->next = (yyvsp[0].expression); } +#line 2177 "parser.tab.c" /* yacc.c:1646 */ break; case 83: #line 298 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_IMP, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2175 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2183 "parser.tab.c" /* yacc.c:1646 */ break; case 84: -#line 301 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2181 "parser.tab.c" /* yacc.c:1646 */ +#line 299 "parser.y" /* yacc.c:1646 */ + { (yyvsp[-2].expression)->next = (yyvsp[0].expression); (yyval.expression) = (yyvsp[-2].expression); } +#line 2189 "parser.tab.c" /* yacc.c:1646 */ break; case 85: #line 302 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_EQV, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2187 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2195 "parser.tab.c" /* yacc.c:1646 */ break; case 86: -#line 305 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2193 "parser.tab.c" /* yacc.c:1646 */ +#line 303 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_IMP, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2201 "parser.tab.c" /* yacc.c:1646 */ break; case 87: #line 306 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_XOR, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2199 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2207 "parser.tab.c" /* yacc.c:1646 */ break; case 88: -#line 309 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2205 "parser.tab.c" /* yacc.c:1646 */ +#line 307 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_EQV, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2213 "parser.tab.c" /* yacc.c:1646 */ break; case 89: #line 310 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_OR, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2211 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2219 "parser.tab.c" /* yacc.c:1646 */ break; case 90: -#line 313 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2217 "parser.tab.c" /* yacc.c:1646 */ +#line 311 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_XOR, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2225 "parser.tab.c" /* yacc.c:1646 */ break; case 91: #line 314 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_AND, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2223 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2231 "parser.tab.c" /* yacc.c:1646 */ break; case 92: -#line 317 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2229 "parser.tab.c" /* yacc.c:1646 */ +#line 315 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_OR, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2237 "parser.tab.c" /* yacc.c:1646 */ break; case 93: #line 318 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_unary_expression(ctx, EXPR_NOT, (yyvsp[0].expression)); CHECK_ERROR; } -#line 2235 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2243 "parser.tab.c" /* yacc.c:1646 */ break; case 94: -#line 321 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2241 "parser.tab.c" /* yacc.c:1646 */ +#line 319 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_AND, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2249 "parser.tab.c" /* yacc.c:1646 */ break; case 95: #line 322 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_EQUAL, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2247 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2255 "parser.tab.c" /* yacc.c:1646 */ break; case 96: #line 323 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_NEQUAL, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2253 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_unary_expression(ctx, EXPR_NOT, (yyvsp[0].expression)); CHECK_ERROR; } +#line 2261 "parser.tab.c" /* yacc.c:1646 */ break; case 97: -#line 324 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_GT, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2259 "parser.tab.c" /* yacc.c:1646 */ +#line 326 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2267 "parser.tab.c" /* yacc.c:1646 */ break; case 98: -#line 325 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_LT, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2265 "parser.tab.c" /* yacc.c:1646 */ +#line 327 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_EQUAL, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2273 "parser.tab.c" /* yacc.c:1646 */ break; case 99: -#line 326 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_GTEQ, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2271 "parser.tab.c" /* yacc.c:1646 */ +#line 328 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_NEQUAL, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2279 "parser.tab.c" /* yacc.c:1646 */ break; case 100: -#line 327 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_LTEQ, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2277 "parser.tab.c" /* yacc.c:1646 */ +#line 329 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_GT, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2285 "parser.tab.c" /* yacc.c:1646 */ break; case 101: -#line 328 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_IS, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2283 "parser.tab.c" /* yacc.c:1646 */ +#line 330 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_LT, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2291 "parser.tab.c" /* yacc.c:1646 */ break; case 102: #line 331 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2289 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_GTEQ, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2297 "parser.tab.c" /* yacc.c:1646 */ break; case 103: #line 332 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_CONCAT, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2295 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_LTEQ, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2303 "parser.tab.c" /* yacc.c:1646 */ break; case 104: -#line 335 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2301 "parser.tab.c" /* yacc.c:1646 */ +#line 333 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_IS, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2309 "parser.tab.c" /* yacc.c:1646 */ break; case 105: #line 336 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_ADD, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2307 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2315 "parser.tab.c" /* yacc.c:1646 */ break; case 106: #line 337 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_SUB, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2313 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_CONCAT, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2321 "parser.tab.c" /* yacc.c:1646 */ break; case 107: #line 340 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2319 "parser.tab.c" /* yacc.c:1646 */ +#line 2327 "parser.tab.c" /* yacc.c:1646 */ break; case 108: #line 341 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_MOD, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2325 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_ADD, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2333 "parser.tab.c" /* yacc.c:1646 */ break; case 109: -#line 344 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2331 "parser.tab.c" /* yacc.c:1646 */ +#line 342 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_SUB, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2339 "parser.tab.c" /* yacc.c:1646 */ break; case 110: -#line 346 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_IDIV, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2337 "parser.tab.c" /* yacc.c:1646 */ +#line 345 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2345 "parser.tab.c" /* yacc.c:1646 */ break; case 111: -#line 349 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2343 "parser.tab.c" /* yacc.c:1646 */ +#line 346 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_MOD, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2351 "parser.tab.c" /* yacc.c:1646 */ break; case 112: -#line 351 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_MUL, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2349 "parser.tab.c" /* yacc.c:1646 */ +#line 349 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2357 "parser.tab.c" /* yacc.c:1646 */ break; case 113: -#line 353 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_DIV, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2355 "parser.tab.c" /* yacc.c:1646 */ +#line 351 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_IDIV, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2363 "parser.tab.c" /* yacc.c:1646 */ break; case 114: -#line 356 "parser.y" /* yacc.c:1646 */ +#line 354 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2361 "parser.tab.c" /* yacc.c:1646 */ +#line 2369 "parser.tab.c" /* yacc.c:1646 */ break; case 115: -#line 357 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_binary_expression(ctx, EXPR_EXP, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2367 "parser.tab.c" /* yacc.c:1646 */ +#line 356 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_MUL, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2375 "parser.tab.c" /* yacc.c:1646 */ break; case 116: -#line 360 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2373 "parser.tab.c" /* yacc.c:1646 */ +#line 358 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_DIV, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2381 "parser.tab.c" /* yacc.c:1646 */ break; case 117: #line 361 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2379 "parser.tab.c" /* yacc.c:1646 */ +#line 2387 "parser.tab.c" /* yacc.c:1646 */ break; case 118: #line 362 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_new_expression(ctx, (yyvsp[0].string)); CHECK_ERROR; } -#line 2385 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_binary_expression(ctx, EXPR_EXP, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } +#line 2393 "parser.tab.c" /* yacc.c:1646 */ break; case 119: -#line 363 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_unary_expression(ctx, EXPR_NEG, (yyvsp[0].expression)); CHECK_ERROR; } -#line 2391 "parser.tab.c" /* yacc.c:1646 */ +#line 365 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2399 "parser.tab.c" /* yacc.c:1646 */ break; case 120: #line 366 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2397 "parser.tab.c" /* yacc.c:1646 */ +#line 2405 "parser.tab.c" /* yacc.c:1646 */ break; case 121: #line 367 "parser.y" /* yacc.c:1646 */ - { (yyvsp[-1].member)->args = (yyvsp[0].expression); (yyval.expression) = &(yyvsp[-1].member)->expr; } -#line 2403 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_new_expression(ctx, (yyvsp[0].string)); CHECK_ERROR; } +#line 2411 "parser.tab.c" /* yacc.c:1646 */ break; case 122: -#line 370 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_bool_expression(ctx, VARIANT_TRUE); CHECK_ERROR; } -#line 2409 "parser.tab.c" /* yacc.c:1646 */ +#line 368 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_unary_expression(ctx, EXPR_NEG, (yyvsp[0].expression)); CHECK_ERROR; } +#line 2417 "parser.tab.c" /* yacc.c:1646 */ break; case 123: #line 371 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_bool_expression(ctx, VARIANT_FALSE); CHECK_ERROR; } -#line 2415 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2423 "parser.tab.c" /* yacc.c:1646 */ break; case 124: #line 372 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_string_expression(ctx, (yyvsp[0].string)); CHECK_ERROR; } -#line 2421 "parser.tab.c" /* yacc.c:1646 */ + { (yyvsp[-1].member)->args = (yyvsp[0].expression); (yyval.expression) = &(yyvsp[-1].member)->expr; } +#line 2429 "parser.tab.c" /* yacc.c:1646 */ break; case 125: -#line 373 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = (yyvsp[0].expression); } -#line 2427 "parser.tab.c" /* yacc.c:1646 */ +#line 375 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_bool_expression(ctx, VARIANT_TRUE); CHECK_ERROR; } +#line 2435 "parser.tab.c" /* yacc.c:1646 */ break; case 126: -#line 374 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_expression(ctx, EXPR_EMPTY, 0); CHECK_ERROR; } -#line 2433 "parser.tab.c" /* yacc.c:1646 */ +#line 376 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_bool_expression(ctx, VARIANT_FALSE); CHECK_ERROR; } +#line 2441 "parser.tab.c" /* yacc.c:1646 */ break; case 127: -#line 375 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_expression(ctx, EXPR_NULL, 0); CHECK_ERROR; } -#line 2439 "parser.tab.c" /* yacc.c:1646 */ +#line 377 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_string_expression(ctx, (yyvsp[0].string)); CHECK_ERROR; } +#line 2447 "parser.tab.c" /* yacc.c:1646 */ break; case 128: -#line 376 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_expression(ctx, EXPR_NOTHING, 0); CHECK_ERROR; } -#line 2445 "parser.tab.c" /* yacc.c:1646 */ +#line 378 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = (yyvsp[0].expression); } +#line 2453 "parser.tab.c" /* yacc.c:1646 */ break; case 129: #line 379 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_long_expression(ctx, EXPR_USHORT, (yyvsp[0].lng)); CHECK_ERROR; } -#line 2451 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_expression(ctx, EXPR_EMPTY, 0); CHECK_ERROR; } +#line 2459 "parser.tab.c" /* yacc.c:1646 */ break; case 130: #line 380 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_long_expression(ctx, EXPR_USHORT, 0); CHECK_ERROR; } -#line 2457 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_expression(ctx, EXPR_NULL, 0); CHECK_ERROR; } +#line 2465 "parser.tab.c" /* yacc.c:1646 */ break; case 131: #line 381 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_long_expression(ctx, EXPR_ULONG, (yyvsp[0].lng)); CHECK_ERROR; } -#line 2463 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_expression(ctx, EXPR_NOTHING, 0); CHECK_ERROR; } +#line 2471 "parser.tab.c" /* yacc.c:1646 */ break; case 132: -#line 382 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_double_expression(ctx, (yyvsp[0].dbl)); CHECK_ERROR; } -#line 2469 "parser.tab.c" /* yacc.c:1646 */ +#line 384 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_long_expression(ctx, EXPR_USHORT, (yyvsp[0].lng)); CHECK_ERROR; } +#line 2477 "parser.tab.c" /* yacc.c:1646 */ break; case 133: #line 385 "parser.y" /* yacc.c:1646 */ - { (yyval.uint) = (yyvsp[0].lng); } -#line 2475 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_long_expression(ctx, EXPR_USHORT, 0); CHECK_ERROR; } +#line 2483 "parser.tab.c" /* yacc.c:1646 */ break; case 134: #line 386 "parser.y" /* yacc.c:1646 */ - { (yyval.uint) = 0; } -#line 2481 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_long_expression(ctx, EXPR_ULONG, (yyvsp[0].lng)); CHECK_ERROR; } +#line 2489 "parser.tab.c" /* yacc.c:1646 */ break; case 135: #line 387 "parser.y" /* yacc.c:1646 */ - { (yyval.uint) = (yyvsp[0].lng); } -#line 2487 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.expression) = new_double_expression(ctx, (yyvsp[0].dbl)); CHECK_ERROR; } +#line 2495 "parser.tab.c" /* yacc.c:1646 */ break; case 136: #line 390 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_unary_expression(ctx, EXPR_BRACKETS, (yyvsp[-1].expression)); } -#line 2493 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.uint) = (yyvsp[0].lng); } +#line 2501 "parser.tab.c" /* yacc.c:1646 */ break; case 137: #line 391 "parser.y" /* yacc.c:1646 */ - { (yyval.expression) = new_expression(ctx, EXPR_ME, 0); CHECK_ERROR; } -#line 2499 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.uint) = 0; } +#line 2507 "parser.tab.c" /* yacc.c:1646 */ break; case 138: -#line 394 "parser.y" /* yacc.c:1646 */ - { (yyvsp[-3].class_decl)->name = (yyvsp[-5].string); (yyval.class_decl) = (yyvsp[-3].class_decl); } -#line 2505 "parser.tab.c" /* yacc.c:1646 */ +#line 392 "parser.y" /* yacc.c:1646 */ + { (yyval.uint) = (yyvsp[0].lng); } +#line 2513 "parser.tab.c" /* yacc.c:1646 */ break; case 139: -#line 397 "parser.y" /* yacc.c:1646 */ - { (yyval.class_decl) = new_class_decl(ctx); } -#line 2511 "parser.tab.c" /* yacc.c:1646 */ +#line 395 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_unary_expression(ctx, EXPR_BRACKETS, (yyvsp[-1].expression)); } +#line 2519 "parser.tab.c" /* yacc.c:1646 */ break; case 140: -#line 398 "parser.y" /* yacc.c:1646 */ - { (yyval.class_decl) = add_class_function(ctx, (yyvsp[0].class_decl), (yyvsp[-2].func_decl)); CHECK_ERROR; } -#line 2517 "parser.tab.c" /* yacc.c:1646 */ +#line 396 "parser.y" /* yacc.c:1646 */ + { (yyval.expression) = new_expression(ctx, EXPR_ME, 0); CHECK_ERROR; } +#line 2525 "parser.tab.c" /* yacc.c:1646 */ break; case 141: -#line 400 "parser.y" /* yacc.c:1646 */ - { dim_decl_t *dim_decl = new_dim_decl(ctx, (yyvsp[-2].string), FALSE, NULL); CHECK_ERROR; - (yyval.class_decl) = add_dim_prop(ctx, (yyvsp[0].class_decl), dim_decl, (yyvsp[-3].uint)); CHECK_ERROR; } -#line 2524 "parser.tab.c" /* yacc.c:1646 */ +#line 399 "parser.y" /* yacc.c:1646 */ + { (yyvsp[-3].class_decl)->name = (yyvsp[-5].string); (yyval.class_decl) = (yyvsp[-3].class_decl); } +#line 2531 "parser.tab.c" /* yacc.c:1646 */ break; case 142: #line 402 "parser.y" /* yacc.c:1646 */ - { (yyval.class_decl) = add_dim_prop(ctx, (yyvsp[0].class_decl), (yyvsp[-2].dim_decl), 0); CHECK_ERROR; } -#line 2530 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.class_decl) = new_class_decl(ctx); } +#line 2537 "parser.tab.c" /* yacc.c:1646 */ break; case 143: #line 403 "parser.y" /* yacc.c:1646 */ { (yyval.class_decl) = add_class_function(ctx, (yyvsp[0].class_decl), (yyvsp[-2].func_decl)); CHECK_ERROR; } -#line 2536 "parser.tab.c" /* yacc.c:1646 */ +#line 2543 "parser.tab.c" /* yacc.c:1646 */ break; case 144: -#line 407 "parser.y" /* yacc.c:1646 */ - { (yyval.func_decl) = new_function_decl(ctx, (yyvsp[-5].string), FUNC_PROPGET, (yyvsp[-8].uint), (yyvsp[-4].arg_decl), (yyvsp[-2].statement)); CHECK_ERROR; } -#line 2542 "parser.tab.c" /* yacc.c:1646 */ +#line 405 "parser.y" /* yacc.c:1646 */ + { dim_decl_t *dim_decl = new_dim_decl(ctx, (yyvsp[-2].string), FALSE, NULL); CHECK_ERROR; + (yyval.class_decl) = add_dim_prop(ctx, (yyvsp[0].class_decl), dim_decl, (yyvsp[-3].uint)); CHECK_ERROR; } +#line 2550 "parser.tab.c" /* yacc.c:1646 */ break; case 145: -#line 409 "parser.y" /* yacc.c:1646 */ - { (yyval.func_decl) = new_function_decl(ctx, (yyvsp[-7].string), FUNC_PROPLET, (yyvsp[-10].uint), (yyvsp[-5].arg_decl), (yyvsp[-2].statement)); CHECK_ERROR; } -#line 2548 "parser.tab.c" /* yacc.c:1646 */ +#line 407 "parser.y" /* yacc.c:1646 */ + { (yyval.class_decl) = add_dim_prop(ctx, (yyvsp[0].class_decl), (yyvsp[-2].dim_decl), 0); CHECK_ERROR; } +#line 2556 "parser.tab.c" /* yacc.c:1646 */ break; case 146: -#line 411 "parser.y" /* yacc.c:1646 */ - { (yyval.func_decl) = new_function_decl(ctx, (yyvsp[-7].string), FUNC_PROPSET, (yyvsp[-10].uint), (yyvsp[-5].arg_decl), (yyvsp[-2].statement)); CHECK_ERROR; } -#line 2554 "parser.tab.c" /* yacc.c:1646 */ +#line 408 "parser.y" /* yacc.c:1646 */ + { (yyval.class_decl) = add_class_function(ctx, (yyvsp[0].class_decl), (yyvsp[-2].func_decl)); CHECK_ERROR; } +#line 2562 "parser.tab.c" /* yacc.c:1646 */ break; case 147: -#line 415 "parser.y" /* yacc.c:1646 */ - { (yyval.func_decl) = new_function_decl(ctx, (yyvsp[-5].string), FUNC_SUB, (yyvsp[-7].uint), (yyvsp[-4].arg_decl), (yyvsp[-2].statement)); CHECK_ERROR; } -#line 2560 "parser.tab.c" /* yacc.c:1646 */ +#line 412 "parser.y" /* yacc.c:1646 */ + { (yyval.func_decl) = new_function_decl(ctx, (yyvsp[-5].string), FUNC_PROPGET, (yyvsp[-8].uint), (yyvsp[-4].arg_decl), (yyvsp[-2].statement)); CHECK_ERROR; } +#line 2568 "parser.tab.c" /* yacc.c:1646 */ break; case 148: -#line 417 "parser.y" /* yacc.c:1646 */ - { (yyval.func_decl) = new_function_decl(ctx, (yyvsp[-5].string), FUNC_FUNCTION, (yyvsp[-7].uint), (yyvsp[-4].arg_decl), (yyvsp[-2].statement)); CHECK_ERROR; } -#line 2566 "parser.tab.c" /* yacc.c:1646 */ +#line 414 "parser.y" /* yacc.c:1646 */ + { (yyval.func_decl) = new_function_decl(ctx, (yyvsp[-7].string), FUNC_PROPLET, (yyvsp[-10].uint), (yyvsp[-5].arg_decl), (yyvsp[-2].statement)); CHECK_ERROR; } +#line 2574 "parser.tab.c" /* yacc.c:1646 */ break; case 149: -#line 420 "parser.y" /* yacc.c:1646 */ - { (yyval.uint) = 0; } -#line 2572 "parser.tab.c" /* yacc.c:1646 */ +#line 416 "parser.y" /* yacc.c:1646 */ + { (yyval.func_decl) = new_function_decl(ctx, (yyvsp[-7].string), FUNC_PROPSET, (yyvsp[-10].uint), (yyvsp[-5].arg_decl), (yyvsp[-2].statement)); CHECK_ERROR; } +#line 2580 "parser.tab.c" /* yacc.c:1646 */ break; case 150: -#line 421 "parser.y" /* yacc.c:1646 */ - { (yyval.uint) = (yyvsp[0].uint); } -#line 2578 "parser.tab.c" /* yacc.c:1646 */ +#line 420 "parser.y" /* yacc.c:1646 */ + { (yyval.func_decl) = new_function_decl(ctx, (yyvsp[-5].string), FUNC_SUB, (yyvsp[-7].uint), (yyvsp[-4].arg_decl), (yyvsp[-2].statement)); CHECK_ERROR; } +#line 2586 "parser.tab.c" /* yacc.c:1646 */ break; case 151: -#line 424 "parser.y" /* yacc.c:1646 */ - { (yyval.uint) = STORAGE_IS_DEFAULT; } -#line 2584 "parser.tab.c" /* yacc.c:1646 */ +#line 422 "parser.y" /* yacc.c:1646 */ + { (yyval.func_decl) = new_function_decl(ctx, (yyvsp[-5].string), FUNC_FUNCTION, (yyvsp[-7].uint), (yyvsp[-4].arg_decl), (yyvsp[-2].statement)); CHECK_ERROR; } +#line 2592 "parser.tab.c" /* yacc.c:1646 */ break; case 152: #line 425 "parser.y" /* yacc.c:1646 */ { (yyval.uint) = 0; } -#line 2590 "parser.tab.c" /* yacc.c:1646 */ +#line 2598 "parser.tab.c" /* yacc.c:1646 */ break; case 153: #line 426 "parser.y" /* yacc.c:1646 */ - { (yyval.uint) = STORAGE_IS_PRIVATE; } -#line 2596 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.uint) = (yyvsp[0].uint); } +#line 2604 "parser.tab.c" /* yacc.c:1646 */ break; case 154: #line 429 "parser.y" /* yacc.c:1646 */ - { (yyval.arg_decl) = NULL; } -#line 2602 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.uint) = STORAGE_IS_DEFAULT; } +#line 2610 "parser.tab.c" /* yacc.c:1646 */ break; case 155: #line 430 "parser.y" /* yacc.c:1646 */ - { (yyval.arg_decl) = (yyvsp[-1].arg_decl); } -#line 2608 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.uint) = 0; } +#line 2616 "parser.tab.c" /* yacc.c:1646 */ break; case 156: -#line 433 "parser.y" /* yacc.c:1646 */ - { (yyval.arg_decl) = (yyvsp[0].arg_decl); } -#line 2614 "parser.tab.c" /* yacc.c:1646 */ +#line 431 "parser.y" /* yacc.c:1646 */ + { (yyval.uint) = STORAGE_IS_PRIVATE; } +#line 2622 "parser.tab.c" /* yacc.c:1646 */ break; case 157: #line 434 "parser.y" /* yacc.c:1646 */ - { (yyvsp[-2].arg_decl)->next = (yyvsp[0].arg_decl); (yyval.arg_decl) = (yyvsp[-2].arg_decl); } -#line 2620 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.arg_decl) = NULL; } +#line 2628 "parser.tab.c" /* yacc.c:1646 */ break; case 158: -#line 437 "parser.y" /* yacc.c:1646 */ - { (yyval.arg_decl) = new_argument_decl(ctx, (yyvsp[-1].string), TRUE); } -#line 2626 "parser.tab.c" /* yacc.c:1646 */ +#line 435 "parser.y" /* yacc.c:1646 */ + { (yyval.arg_decl) = (yyvsp[-1].arg_decl); } +#line 2634 "parser.tab.c" /* yacc.c:1646 */ break; case 159: #line 438 "parser.y" /* yacc.c:1646 */ - { (yyval.arg_decl) = new_argument_decl(ctx, (yyvsp[-1].string), TRUE); } -#line 2632 "parser.tab.c" /* yacc.c:1646 */ + { (yyval.arg_decl) = (yyvsp[0].arg_decl); } +#line 2640 "parser.tab.c" /* yacc.c:1646 */ break; case 160: #line 439 "parser.y" /* yacc.c:1646 */ - { (yyval.arg_decl) = new_argument_decl(ctx, (yyvsp[-1].string), FALSE); } -#line 2638 "parser.tab.c" /* yacc.c:1646 */ + { (yyvsp[-2].arg_decl)->next = (yyvsp[0].arg_decl); (yyval.arg_decl) = (yyvsp[-2].arg_decl); } +#line 2646 "parser.tab.c" /* yacc.c:1646 */ break; case 161: -#line 443 "parser.y" /* yacc.c:1646 */ - { (yyval.string) = (yyvsp[0].string); } -#line 2644 "parser.tab.c" /* yacc.c:1646 */ +#line 442 "parser.y" /* yacc.c:1646 */ + { (yyval.arg_decl) = new_argument_decl(ctx, (yyvsp[-1].string), TRUE); } +#line 2652 "parser.tab.c" /* yacc.c:1646 */ break; case 162: +#line 443 "parser.y" /* yacc.c:1646 */ + { (yyval.arg_decl) = new_argument_decl(ctx, (yyvsp[-1].string), TRUE); } +#line 2658 "parser.tab.c" /* yacc.c:1646 */ + break; + + case 163: #line 444 "parser.y" /* yacc.c:1646 */ + { (yyval.arg_decl) = new_argument_decl(ctx, (yyvsp[-1].string), FALSE); } +#line 2664 "parser.tab.c" /* yacc.c:1646 */ + break; + + case 164: +#line 448 "parser.y" /* yacc.c:1646 */ + { (yyval.string) = (yyvsp[0].string); } +#line 2670 "parser.tab.c" /* yacc.c:1646 */ + break; + + case 165: +#line 449 "parser.y" /* yacc.c:1646 */ { (yyval.string) = propertyW; } -#line 2650 "parser.tab.c" /* yacc.c:1646 */ +#line 2676 "parser.tab.c" /* yacc.c:1646 */ break; -#line 2654 "parser.tab.c" /* yacc.c:1646 */ +#line 2680 "parser.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2873,7 +2899,7 @@ yyreturn: #endif return yyresult; } -#line 451 "parser.y" /* yacc.c:1906 */ +#line 456 "parser.y" /* yacc.c:1906 */ static int parser_error(parser_ctx_t *ctx, const char *str) diff --git a/reactos/dll/win32/vbscript/parser.y b/reactos/dll/win32/vbscript/parser.y index 681a0c96e4a..9606592003b 100644 --- a/reactos/dll/win32/vbscript/parser.y +++ b/reactos/dll/win32/vbscript/parser.y @@ -128,7 +128,7 @@ static const WCHAR propertyW[] = {'p','r','o','p','e','r','t','y',0}; %type NotExpression UnaryExpression AndExpression OrExpression XorExpression EqvExpression %type ConstExpression NumericLiteralExpression %type MemberExpression -%type Arguments_opt ArgumentList_opt Step_opt ExpressionList +%type Arguments_opt ArgumentList ArgumentList_opt Step_opt ExpressionList %type OptionExplicit_opt DoType %type ArgumentsDecl_opt ArgumentDeclList ArgumentDecl %type FunctionDecl PropertyDecl @@ -246,10 +246,10 @@ Step_opt IfStatement : tIF Expression tTHEN tNL StatementsNl_opt ElseIfs_opt Else_opt tEND tIF - { $$ = new_if_statement(ctx, $2, $5, $6, $7); CHECK_ERROR; } - | tIF Expression tTHEN Statement { $$ = new_if_statement(ctx, $2, $4, NULL, NULL); CHECK_ERROR; } + { $$ = new_if_statement(ctx, $2, $5, $6, $7); CHECK_ERROR; } + | tIF Expression tTHEN Statement EndIf_opt { $$ = new_if_statement(ctx, $2, $4, NULL, NULL); CHECK_ERROR; } | tIF Expression tTHEN Statement tELSE Statement EndIf_opt - { $$ = new_if_statement(ctx, $2, $4, NULL, $6); CHECK_ERROR; } + { $$ = new_if_statement(ctx, $2, $4, NULL, $6); CHECK_ERROR; } EndIf_opt : /* empty */ @@ -279,11 +279,16 @@ CaseClausules Arguments_opt : EmptyBrackets_opt { $$ = NULL; } - | '(' ExpressionList ')' { $$ = $2; } + | '(' ArgumentList ')' { $$ = $2; } ArgumentList_opt : EmptyBrackets_opt { $$ = NULL; } - | ExpressionList { $$ = $1; } + | ArgumentList { $$ = $1; } + +ArgumentList + : Expression { $$ = $1; } + | Expression ',' ArgumentList { $1->next = $3; $$ = $1; } + | ',' ArgumentList { $$ = new_expression(ctx, EXPR_NOARG, 0); CHECK_ERROR; $$->next = $2; } EmptyBrackets_opt : /* empty */ diff --git a/reactos/dll/win32/vbscript/vbscript.h b/reactos/dll/win32/vbscript/vbscript.h index ace5fd39cae..f4c14dd3293 100644 --- a/reactos/dll/win32/vbscript/vbscript.h +++ b/reactos/dll/win32/vbscript/vbscript.h @@ -245,6 +245,7 @@ typedef enum { X(empty, 1, 0, 0) \ X(enumnext, 0, ARG_ADDR, ARG_BSTR) \ X(equal, 1, 0, 0) \ + X(hres, 1, ARG_UINT, 0) \ X(errmode, 1, ARG_INT, 0) \ X(eqv, 1, 0, 0) \ X(exp, 1, 0, 0) \ diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index a44a115b2c6..6a56dcbc1cd 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -198,7 +198,7 @@ reactos/dll/win32/url # Synced to Wine-1.7.27 reactos/dll/win32/urlmon # Synced to WineStaging-1.7.37 reactos/dll/win32/usp10 # Synced to WineStaging-1.7.37 reactos/dll/win32/uxtheme # Forked -reactos/dll/win32/vbscript # Synced to Wine-1.7.27 +reactos/dll/win32/vbscript # Synced to WineStaging-1.7.37 reactos/dll/win32/version # Synced to Wine-1.7.27 reactos/dll/win32/wbemdisp # Synced to Wine-1.7.27 reactos/dll/win32/wbemprox # Synced to WineStaging-1.7.37