From e0b80a0929ec41313ac65ce2cc844f0f8703feca Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 20 Jan 2018 13:39:40 +0100 Subject: [PATCH] [VBSCRIPT] Sync with Wine 3.0. CORE-14225 --- dll/win32/vbscript/CMakeLists.txt | 1 + dll/win32/vbscript/global.c | 80 +- dll/win32/vbscript/interp.c | 69 +- dll/win32/vbscript/parser.tab.c | 1286 +++++++++++++++-------------- dll/win32/vbscript/parser.tab.h | 8 +- dll/win32/vbscript/parser.y | 35 +- dll/win32/vbscript/utils.c | 189 +++++ dll/win32/vbscript/vbdisp.c | 2 +- dll/win32/vbscript/vbscript.c | 3 + dll/win32/vbscript/vbscript.h | 2 + media/doc/README.WINE | 2 +- 11 files changed, 978 insertions(+), 699 deletions(-) create mode 100644 dll/win32/vbscript/utils.c diff --git a/dll/win32/vbscript/CMakeLists.txt b/dll/win32/vbscript/CMakeLists.txt index 81ba90b3722..99df1c31636 100644 --- a/dll/win32/vbscript/CMakeLists.txt +++ b/dll/win32/vbscript/CMakeLists.txt @@ -10,6 +10,7 @@ list(APPEND SOURCE lex.c parser.tab.c regexp.c + utils.c vbdisp.c vbregexp.c vbscript.c diff --git a/dll/win32/vbscript/global.c b/dll/win32/vbscript/global.c index 15348052590..16bd9bbd202 100644 --- a/dll/win32/vbscript/global.c +++ b/dll/win32/vbscript/global.c @@ -815,8 +815,40 @@ static HRESULT Global_LBound(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VA static HRESULT Global_UBound(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + SAFEARRAY *sa; + HRESULT hres; + LONG ubound; + int dim; + + assert(args_cnt == 1 || args_cnt == 2); + + TRACE("%s %s\n", debugstr_variant(arg), args_cnt == 2 ? debugstr_variant(arg + 1) : "1"); + + switch(V_VT(arg)) { + case VT_VARIANT|VT_ARRAY: + sa = V_ARRAY(arg); + break; + case VT_VARIANT|VT_ARRAY|VT_BYREF: + sa = *V_ARRAYREF(arg); + break; + default: + FIXME("arg %s not supported\n", debugstr_variant(arg)); + return E_NOTIMPL; + } + + if(args_cnt == 2) { + hres = to_int(arg + 1, &dim); + if(FAILED(hres)) + return hres; + }else { + dim = 1; + } + + hres = SafeArrayGetUBound(sa, dim, &ubound); + if(FAILED(hres)) + return hres; + + return return_int(res, ubound); } static HRESULT Global_RGB(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) @@ -1785,8 +1817,44 @@ static HRESULT Global_TypeName(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, static HRESULT Global_Array(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + SAFEARRAYBOUND bounds; + SAFEARRAY *sa; + VARIANT *data; + HRESULT hres; + unsigned i; + + TRACE("arg_cnt=%u\n", args_cnt); + + bounds.lLbound = 0; + bounds.cElements = args_cnt; + sa = SafeArrayCreate(VT_VARIANT, 1, &bounds); + if(!sa) + return E_OUTOFMEMORY; + + hres = SafeArrayAccessData(sa, (void**)&data); + if(FAILED(hres)) { + SafeArrayDestroy(sa); + return hres; + } + + for(i=0; icDims != argc) { - FIXME("argc %d does not match cDims %d\n", dp->cArgs, array->cDims); - return E_FAIL; - } - - for(i=0; i < argc; i++) { - hres = to_int(get_arg(dp, i), &idx); - if(FAILED(hres)) - return hres; - - idx -= array->rgsabound[i].lLbound; - if(idx >= array->rgsabound[i].cElements) { - FIXME("out of bound element %d in dim %d of size %d\n", idx, i+1, array->rgsabound[i].cElements); - return E_FAIL; - } - - cell_off += idx*dim_size; - dim_size *= array->rgsabound[i].cElements; - } - - hres = SafeArrayAccessData(array, (void**)&data); + hres = SafeArrayLock(array); if(FAILED(hres)) return hres; - *ret = data+cell_off; + if(array->cDims != argc) { + FIXME("argc %d does not match cDims %d\n", dp->cArgs, array->cDims); + SafeArrayUnlock(array); + return E_FAIL; + } - SafeArrayUnaccessData(array); - return S_OK; + indices = heap_alloc(sizeof(*indices) * argc); + if(!indices) { + SafeArrayUnlock(array); + return E_OUTOFMEMORY; + } + + for(i=0; iinstr++; }else { - stack_pop(ctx); + stack_popn(ctx, 1); instr_jmp(ctx, loop_end); } return S_OK; diff --git a/dll/win32/vbscript/parser.tab.c b/dll/win32/vbscript/parser.tab.c index 1396fdcfedc..39842e6bf5c 100644 --- a/dll/win32/vbscript/parser.tab.c +++ b/dll/win32/vbscript/parser.tab.c @@ -127,7 +127,7 @@ static const WCHAR propertyW[] = {'p','r','o','p','e','r','t','y',0}; #define CHECK_ERROR if(((parser_ctx_t*)ctx)->hres != S_OK) YYABORT -#line 136 "parser.tab.c" /* yacc.c:339 */ +#line 131 "parser.tab.c" /* yacc.c:339 */ # ifndef YY_NULL # if defined __cplusplus && 201103L <= __cplusplus @@ -147,8 +147,8 @@ static const WCHAR propertyW[] = {'p','r','o','p','e','r','t','y',0}; /* In a future release of Bison, this section will be replaced by #include "parser.tab.h". */ -#ifndef YY_PARSER_E_REACTOS_SYNC_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED -# define YY_PARSER_E_REACTOS_SYNC_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED +#ifndef YY_PARSER_E_REACTOSSYNC3_0_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED +# define YY_PARSER_E_REACTOSSYNC3_0_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -238,7 +238,7 @@ extern int parser_debug; typedef union YYSTYPE YYSTYPE; union YYSTYPE { -#line 88 "parser.y" /* yacc.c:355 */ +#line 83 "parser.y" /* yacc.c:355 */ const WCHAR *string; statement_t *statement; @@ -257,7 +257,7 @@ union YYSTYPE BOOL boolean; double dbl; -#line 266 "parser.tab.c" /* yacc.c:355 */ +#line 261 "parser.tab.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -267,11 +267,11 @@ union YYSTYPE int parser_parse (parser_ctx_t *ctx); -#endif /* !YY_PARSER_E_REACTOS_SYNC_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED */ +#endif /* !YY_PARSER_E_REACTOSSYNC3_0_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 280 "parser.tab.c" /* yacc.c:358 */ +#line 275 "parser.tab.c" /* yacc.c:358 */ #ifdef short # undef short @@ -494,16 +494,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 909 +#define YYLAST 944 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 87 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 60 /* YYNRULES -- Number of rules. */ -#define YYNRULES 167 +#define YYNRULES 169 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 341 +#define YYNSTATES 343 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -556,23 +556,23 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 147, 147, 150, 151, 153, 155, 156, 159, 160, - 163, 164, 167, 170, 171, 172, 173, 174, 177, 178, - 179, 181, 182, 183, 185, 188, 191, 192, 193, 194, - 195, 196, 197, 198, 200, 201, 202, 203, 204, 206, - 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, 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 + 0, 142, 142, 145, 146, 148, 150, 151, 154, 155, + 158, 159, 162, 165, 166, 167, 168, 169, 172, 173, + 174, 176, 177, 178, 180, 183, 186, 187, 188, 189, + 190, 191, 192, 193, 195, 196, 197, 198, 199, 201, + 203, 207, 208, 211, 212, 215, 216, 217, 220, 221, + 224, 225, 228, 231, 232, 235, 236, 239, 240, 243, + 245, 246, 249, 251, 254, 255, 258, 259, 262, 266, + 267, 270, 271, 272, 276, 277, 280, 281, 284, 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, 450, 451 }; #endif @@ -628,10 +628,10 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -159 +#define YYPACT_NINF -205 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-159))) + (!!((Yystate) == (-205))) #define YYTABLE_NINF -153 @@ -642,41 +642,41 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 15, 4, 58, -159, 73, -159, 320, -159, -159, 41, - 44, -159, 44, 511, 140, 511, 10, 19, 96, -159, - 44, 41, 84, -159, -159, 42, -159, 604, 511, -159, - 128, 78, 401, -159, 82, -159, -159, -159, 8, -159, - -159, 6, -159, 83, 7, -159, 94, 108, -159, -159, - 511, -159, -159, -159, 44, -159, -159, -159, -159, -159, - 545, 6, 22, 180, 184, 187, 189, -159, 34, 119, - -12, 183, 120, 39, 118, -159, 82, -159, -159, -159, - -159, -159, -159, -159, 31, -159, -159, -159, -159, 511, - 645, 44, 133, 511, 202, 6, -159, 70, -159, 11, - -159, 604, -159, 431, 431, 145, -159, -159, -33, 12, - 44, 44, 44, 431, 146, -159, 44, -159, -13, 44, - 182, -159, -159, -159, -159, 511, 361, 511, 511, 511, - 511, 545, 545, 545, 545, 545, 545, 545, 545, 545, - 545, 545, 545, 545, 545, 545, 698, 31, 185, -159, - 604, 176, 511, 31, 90, 153, 164, 154, -159, -159, - -159, 151, -3, 511, 431, -159, 16, 16, -159, -159, - -159, -159, 161, 155, -159, 97, -159, -159, 180, 604, - 87, 184, 187, 189, -159, 119, 119, 119, 119, 119, - 119, 119, -12, 183, 183, 120, 39, 118, 118, -159, - 196, 645, 81, -159, 511, 24, 197, 44, 210, 243, - 244, 162, 198, 511, -159, -159, -159, 239, -159, 33, - -159, 259, 261, -159, -13, -159, 236, 833, 240, -159, - -159, 230, 511, 31, 511, 481, 238, 266, 217, 90, - 90, 21, 268, 239, 44, 44, 199, 200, 267, 739, - 739, -159, 511, 245, -159, 236, 249, -159, -159, 239, - 780, 18, 20, 20, 14, 237, 90, 278, -159, -159, - 221, 223, 224, 90, 267, 267, -159, 33, -159, 260, - 262, 98, 291, 269, -159, -159, 235, 511, 20, 833, - 604, 511, -159, -159, -159, 16, 222, 226, -159, -159, - -159, -159, 282, 283, 303, 739, 280, -159, 239, 780, - -159, 197, -159, 305, 33, 33, -159, -159, 604, -159, - -159, 248, -159, 739, 234, 247, -159, -159, 284, 309, - 312, 296, 739, 739, -159, 290, 294, 298, 306, -159, - -159 + -12, -8, 47, -205, 22, -205, 346, 22, 22, -205, + -205, 34, 35, -205, 35, 537, 134, 537, 12, 32, + 60, -205, 35, 34, -10, -205, -205, 65, -205, 639, + 537, -205, 57, 2, 427, -205, 85, -205, -205, -205, + 109, -205, -205, -205, -205, 4, -205, 33, 5, -205, + 46, 81, -205, -205, 537, -205, -205, -205, 35, -205, + -205, -205, -205, -205, 571, 4, 16, 126, 155, 160, + 168, -205, 37, 117, 29, 181, 119, 79, 130, -205, + 85, -205, -205, -205, -205, -205, -205, -205, 18, -205, + -205, 537, 680, 35, 146, 537, 22, 4, -205, 121, + -205, 13, -205, 639, -205, 457, 457, 147, -205, -205, + 77, 0, 35, 35, 35, 457, 148, -205, 35, -205, + 111, 35, 601, -205, -205, -205, -205, 537, 387, 537, + 537, 537, 537, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 733, 18, + 183, -205, 639, 178, 537, 18, 8, 152, 165, 156, + -205, -205, -205, 151, 1, 537, 457, -205, 6, 6, + -205, -205, -205, -205, 154, 157, -205, 136, -205, -205, + 126, 639, 143, 155, 160, 168, -205, 117, 117, 117, + 117, 117, 117, 117, 29, 181, 181, 119, 79, 130, + 130, -205, 198, 680, 95, -205, 537, 28, 189, 35, + 204, 22, 22, 96, 170, 537, -205, -205, -205, 223, + -205, -3, -205, 22, 22, -205, 111, -205, 210, 868, + 214, -205, -205, 212, 537, 18, 537, 507, 221, 22, + 199, 8, 8, 70, 22, 223, 35, 35, 177, 180, + 253, 774, 774, -205, 537, 231, -205, 210, 230, -205, + -205, 223, 815, 71, 22, 22, 17, 219, 8, 22, + -205, -205, 201, 202, 206, 8, 253, 253, -205, -3, + -205, 234, 239, 19, 269, 243, -205, -205, 213, 537, + 22, 868, 639, 537, -205, -205, -205, 6, 200, 203, + -205, -205, -205, -205, 255, 257, 274, 774, 254, -205, + 223, 815, -205, 189, -205, 22, -3, -3, -205, -205, + 639, -205, -205, 222, -205, 774, 216, 220, -205, -205, + 250, 22, 22, 259, 774, 774, -205, 267, 268, 266, + 278, -205, -205 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -684,63 +684,63 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 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, 166, 55, 56, 167, 0, - 152, 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, + 3, 0, 0, 5, 0, 1, 152, 166, 167, 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, 168, 169, 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, 55, + 56, 0, 152, 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, 152, 0, 0, 9, - 10, 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, 152, 26, 11, 0, 0, 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, 24, 25, - 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 + 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, + 0, 9, 10, 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, 152, 26, 11, 0, 0, 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, + 24, 25, 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[] = { - -159, -159, -159, -159, 28, -144, 328, -26, -159, -6, - 219, 129, 114, 220, -159, -159, 141, -159, -159, 86, - -159, 95, -159, -159, 38, 1, -159, -25, -16, 54, - 5, 227, 228, 229, 233, -40, -159, 79, 225, 32, - 231, 216, 48, -52, -4, 246, 192, -159, -159, -159, - -79, -159, -135, -114, -85, -158, 91, -137, 17, -80 + -205, -205, -205, -205, -124, -148, 298, -26, -205, -6, + 188, 99, 83, 190, -205, -205, 106, -205, -205, 54, + -205, 58, -205, -205, 7, -25, -205, -21, -33, 20, + 135, 191, 193, 194, 192, -45, -205, 56, 185, 66, + 195, 182, 67, -56, -4, 211, 158, -205, -205, -205, + -204, -205, -138, -128, -87, -163, 53, -102, 48, 27 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 2, 3, 6, 148, 149, 150, 30, 31, 61, - 42, 43, 172, 45, 46, 176, 89, 288, 33, 229, - 253, 254, 255, 283, 236, 105, 106, 161, 115, 263, - 109, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 173, 35, 36, - 208, 209, 37, 38, 39, 221, 246, 247, 40, 90 + -1, 2, 3, 6, 150, 151, 152, 32, 33, 65, + 46, 47, 174, 49, 50, 178, 91, 290, 35, 231, + 255, 256, 257, 285, 238, 107, 108, 163, 117, 265, + 111, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 175, 37, 38, + 210, 211, 39, 40, 41, 223, 248, 249, 42, 9 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -748,233 +748,241 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 32, 98, 34, 41, 146, 34, 203, 107, 123, 222, - 121, 125, 102, 117, 85, 95, 108, 34, 62, 210, - 84, 32, 102, 34, 85, 125, 125, 44, 125, 47, - 111, 112, 125, 99, 92, 85, 125, 94, 125, -74, - 211, -74, 114, 11, 86, 125, 270, 271, 87, 131, - 132, 133, 134, 4, 126, 169, 170, 11, 5, 287, - 171, 91, 124, 1, 234, 11, 139, 201, 11, 212, - 140, 122, 164, 206, 158, 159, 272, 7, 160, 244, - 245, 88, 113, 118, 32, 26, 34, 164, 158, 291, - 184, 88, 219, 199, 147, 32, 155, 34, 153, 26, - 180, 24, 88, 97, 210, 210, 135, 26, 151, 162, - 26, 207, 125, 136, 137, 86, 227, 28, 228, 87, - 32, -142, 34, 143, 144, 211, 211, 165, 166, 167, - 304, 210, 100, 44, 156, 157, 47, 313, 210, 218, - 32, 93, 34, 96, 32, 310, 34, 22, 23, 101, - 220, 220, 211, 260, 212, 212, 110, 205, 116, 211, - 268, 269, 79, 80, 81, 56, 57, 58, 217, 119, - 59, 193, 194, 32, 200, 34, 82, 324, 325, 83, - 120, 212, 289, 290, 111, 112, 241, 293, 212, 48, - 49, 197, 198, 127, 298, 32, 128, 34, 129, 130, - 138, 256, 141, 142, 145, 152, 154, 226, 309, 233, - 185, 186, 187, 188, 189, 190, 191, 163, 243, 204, - -124, 32, 202, 34, 44, 213, 214, 215, 216, 231, - 224, 230, 278, 51, 52, 53, 248, 259, 223, 261, - 264, 238, 235, 32, 32, 34, 34, 239, 240, 55, - 56, 57, 58, 125, 32, 59, 34, 281, 299, 300, - 175, 274, 275, 249, 242, 250, 252, 258, 257, 265, - 266, 267, 273, 102, 282, 277, 276, 279, 280, 220, - 228, 292, 294, 32, 32, 34, 34, 295, 286, 296, - 297, 302, 308, 303, 248, 305, 264, 307, 314, 32, - 306, 34, 315, 32, 316, 34, 317, 318, 320, 323, - 327, 329, 32, 332, 34, 331, 333, 32, 311, 34, - 334, 337, 339, 8, 330, 338, 32, 32, 34, 34, - 340, 248, 248, 319, 29, 168, 237, 321, 251, 174, - 9, 10, 285, 232, 11, 312, 326, 12, 13, 322, - 284, 328, 178, 14, 15, 181, 16, 182, 196, 17, - 335, 336, 183, 192, 18, 179, 177, 225, 301, 0, - 19, 0, 195, 0, 20, 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, 102, 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, - 0, 24, 0, 0, 0, 0, 0, 26, 55, 56, - 57, 58, 0, 0, 59, 0, 103, 104, 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, 103, 28, 0, 60, - 262, 0, 0, 0, 0, 0, 0, 0, 48, 49, - 50, 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, 48, 49, 59, 0, 0, 28, 0, 60, - 0, 0, 51, 52, 53, 0, 0, 54, 0, 11, - 0, 24, 0, 0, 0, 0, 0, 26, 55, 56, - 57, 58, 0, 0, 59, 0, 0, 28, 0, 60, - 0, 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, 9, 10, -152, -152, 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, 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, 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, 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 + 34, 110, 36, 100, 205, 45, 224, 36, 125, 123, + 104, 119, 104, 109, 127, 127, 7, 97, 212, 36, + 116, 13, 7, 34, 202, 36, 7, 127, 213, 209, + 127, 127, 127, 127, 43, 44, 1, 270, 271, -142, + 126, 4, 127, 246, 247, 92, 89, 5, 128, 98, + 90, 306, 133, 134, 135, 136, 13, 228, 13, 13, + 48, 102, 51, 28, 295, 24, 25, 94, 236, 214, + 96, 300, 157, 103, 93, 166, 166, 161, 160, 233, + 115, 120, 221, 8, 162, 127, 34, 186, 36, 8, + 160, 201, 293, 8, 26, 272, 273, 34, 28, 36, + 28, 28, 182, 212, 212, 95, 124, 141, 118, 137, + 30, 142, 289, 213, 213, 148, 138, 139, 113, 114, + 243, 121, 34, 156, 36, 274, 99, 281, 282, 89, + 212, 113, 114, 90, 315, 222, 222, 212, 288, 129, + 213, 153, 34, 312, 36, 220, 34, 213, 36, -74, + 66, -74, 88, 122, 214, 214, 83, 84, 85, 112, + 167, 168, 169, 145, 146, 101, 48, 130, 313, 51, + 86, 131, 229, 87, 230, 34, 203, 36, 132, 171, + 172, 214, 208, 321, 173, 158, 159, 323, 214, 187, + 188, 189, 190, 191, 192, 193, 328, 34, 140, 36, + 143, 330, 144, 258, 60, 61, 62, 195, 196, 63, + 337, 338, 199, 200, 326, 327, 147, 280, 154, 165, + 204, 206, -124, 34, 215, 36, 149, 216, 218, 217, + 155, 225, 226, 232, 237, 240, 244, 127, 241, 242, + 254, 164, 259, 301, 302, 34, 34, 36, 36, 260, + 251, 252, 267, 269, 278, 279, 34, 48, 36, 104, + 284, 230, 262, 294, 222, 304, 268, 297, 298, 250, + 305, 275, 299, 307, 308, 309, 316, 318, 320, 317, + 319, 333, 322, 336, 329, 34, 34, 36, 36, 207, + 341, 291, 292, 331, 276, 277, 296, 332, 339, 340, + 219, 34, 342, 36, 31, 34, 170, 36, 239, 253, + 234, 176, 287, 314, 34, 286, 36, 311, 180, 34, + 324, 36, 183, 185, 184, 194, 198, 250, 34, 34, + 36, 36, 303, 179, 0, 227, 0, 0, 197, 0, + 0, 235, 325, 0, 0, 0, 0, 0, 0, 10, + 245, 0, 0, 0, 0, 0, 0, 0, 334, 335, + 0, 0, 0, 0, 250, 250, 11, 12, 0, 261, + 13, 263, 266, 14, 15, 0, 0, 0, 0, 16, + 17, 0, 18, 0, 0, 19, 0, 0, 0, 283, + 20, 181, 0, 0, 0, 0, 21, 0, 0, 0, + 22, 23, 0, 24, 25, 0, 26, 11, 12, 27, + 0, 13, 28, 0, 14, 15, 0, 29, 0, 0, + 16, 17, 30, 18, 310, 0, 19, 0, 266, 0, + 0, 20, 0, 104, 52, 53, 54, 21, 0, 0, + 0, 0, 23, 0, 24, 25, 0, 26, 0, 0, + 27, 13, 0, 28, 0, 0, 0, 0, 29, 0, + 0, 0, 0, 30, 52, 53, 54, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, + 57, 13, 0, 58, 0, 0, 0, 26, 0, 0, + 0, 0, 0, 28, 59, 60, 61, 62, 0, 0, + 63, 0, 105, 106, 0, 64, 0, 0, 55, 56, + 57, 0, 0, 58, 52, 53, 54, 26, 0, 0, + 0, 0, 0, 28, 59, 60, 61, 62, 0, 0, + 63, 13, 105, 30, 0, 64, 264, 0, 0, 0, + 0, 0, 0, 0, 52, 53, 54, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, + 57, 13, 0, 58, 0, 0, 0, 26, 0, 0, + 0, 0, 0, 28, 59, 60, 61, 62, 52, 53, + 63, 0, 0, 30, 0, 64, 0, 0, 55, 56, + 57, 0, 0, 58, 0, 13, 0, 26, 0, 0, + 0, 0, 0, 28, 59, 60, 61, 62, 52, 53, + 63, 0, 0, 30, 0, 64, 0, 0, 0, 0, + 0, 0, 55, 56, 57, 0, 0, 58, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 28, 59, 60, + 61, 62, 0, 0, 63, 0, 0, 30, 0, 64, + 0, 0, 55, 56, 57, 0, 0, 0, 0, 11, + 12, -152, -152, 13, 0, 0, 14, 15, 59, 60, + 61, 62, 16, 17, 63, 18, 0, 0, 19, 177, + 0, 0, 0, 20, 0, 0, 0, 0, 0, 21, + 0, 0, 0, 0, 23, 0, 24, 25, 0, 26, + 11, 12, 27, 0, 13, 28, 0, 14, 15, 0, + 29, 0, 0, 16, 17, 30, 18, -8, 0, 19, + 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, + 21, 0, 0, 0, 0, 23, 0, 24, 25, 0, + 26, 0, 0, 27, 0, 0, 28, 0, 0, 0, + 0, 29, 0, 11, 12, 0, 30, 13, 0, 0, + 14, 15, 0, 0, 0, 0, 16, 17, -8, 18, + 0, 0, 19, 0, 0, 0, 0, 20, 0, 0, + 0, 0, 0, 21, 0, 0, 0, 0, 23, 0, + 24, 25, 0, 26, 11, 12, 27, 0, 13, 28, + 0, 14, 15, 0, 29, -8, 0, 16, 17, 30, + 18, 0, 0, 19, 0, 0, 0, 0, 20, 0, + 0, 0, 0, 0, 21, 0, 0, 0, 0, 23, + 0, 24, 25, 0, 26, 11, 12, 27, 0, 13, + 28, 0, 14, 15, 0, 29, 0, 0, 16, 17, + 30, 18, 0, 0, 19, 0, 0, 0, 0, 20, + 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, + 23, 0, 24, 25, 0, 26, 0, -8, 27, 0, + 0, 28, 0, 0, 0, 0, 29, 0, 11, 12, + 0, 30, 13, 0, 0, 14, 15, 0, 0, 0, + 0, 16, 17, 0, 18, 0, 0, 19, 0, 0, + 0, 0, 20, 0, 0, 0, 0, 0, 21, 0, + 0, 0, 0, 23, 0, 24, 25, 0, 26, 0, + 0, 27, 0, 0, 28, 0, 0, 0, 0, 29, + 0, 0, 0, 0, 30 }; static const yytype_int16 yycheck[] = { - 6, 27, 6, 9, 84, 9, 150, 32, 60, 167, - 50, 14, 6, 6, 4, 21, 32, 21, 13, 154, - 15, 27, 6, 27, 4, 14, 14, 10, 14, 12, - 22, 23, 14, 28, 17, 4, 14, 20, 14, 72, - 154, 74, 41, 24, 34, 14, 25, 26, 38, 15, - 16, 17, 18, 49, 32, 68, 69, 24, 0, 41, - 73, 42, 61, 48, 40, 24, 78, 147, 24, 154, - 82, 54, 75, 153, 77, 101, 55, 4, 103, 46, - 47, 71, 76, 76, 90, 66, 90, 75, 77, 75, - 130, 71, 76, 145, 89, 101, 95, 101, 93, 66, - 126, 60, 71, 61, 239, 240, 72, 66, 91, 104, - 66, 21, 14, 79, 80, 34, 29, 76, 31, 38, - 126, 31, 126, 84, 85, 239, 240, 110, 111, 112, - 32, 266, 4, 116, 64, 65, 119, 295, 273, 164, - 146, 45, 146, 59, 150, 289, 150, 57, 58, 71, - 166, 167, 266, 233, 239, 240, 74, 152, 75, 273, - 239, 240, 22, 23, 24, 68, 69, 70, 163, 75, - 73, 139, 140, 179, 146, 179, 36, 314, 315, 39, - 72, 266, 262, 263, 22, 23, 24, 266, 273, 7, - 8, 143, 144, 13, 273, 201, 12, 201, 11, 10, - 81, 227, 19, 83, 86, 72, 4, 179, 288, 204, - 131, 132, 133, 134, 135, 136, 137, 72, 213, 43, - 74, 227, 37, 227, 207, 72, 62, 73, 77, 201, - 75, 35, 248, 51, 52, 53, 219, 232, 77, 234, - 235, 31, 45, 249, 250, 249, 250, 4, 4, 67, - 68, 69, 70, 14, 260, 73, 260, 252, 274, 275, - 78, 244, 245, 4, 66, 4, 30, 37, 28, 31, - 4, 54, 4, 6, 29, 75, 77, 249, 250, 295, - 31, 44, 4, 289, 290, 289, 290, 66, 260, 66, - 66, 31, 287, 31, 277, 4, 291, 62, 76, 305, - 31, 305, 76, 309, 22, 309, 23, 4, 28, 4, - 62, 77, 318, 4, 318, 31, 4, 323, 290, 323, - 24, 31, 24, 3, 77, 31, 332, 333, 332, 333, - 24, 314, 315, 305, 6, 116, 207, 309, 224, 119, - 20, 21, 256, 202, 24, 291, 318, 27, 28, 311, - 255, 323, 125, 33, 34, 127, 36, 128, 142, 39, - 332, 333, 129, 138, 44, 4, 120, 175, 277, -1, - 50, -1, 141, -1, 54, 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, 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, - -1, 60, -1, -1, -1, -1, -1, 66, 67, 68, - 69, 70, -1, -1, 73, -1, 75, 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, 75, 76, -1, 78, - 29, -1, -1, -1, -1, -1, -1, -1, 7, 8, - 9, -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, 7, 8, 73, -1, -1, 76, -1, 78, - -1, -1, 51, 52, 53, -1, -1, 56, -1, 24, + 6, 34, 6, 29, 152, 11, 169, 11, 64, 54, + 6, 6, 6, 34, 14, 14, 4, 23, 156, 23, + 45, 24, 4, 29, 148, 29, 4, 14, 156, 21, + 14, 14, 14, 14, 7, 8, 48, 241, 242, 31, + 65, 49, 14, 46, 47, 18, 34, 0, 32, 59, + 38, 32, 15, 16, 17, 18, 24, 181, 24, 24, + 12, 4, 14, 66, 268, 57, 58, 19, 40, 156, + 22, 275, 97, 71, 42, 75, 75, 103, 77, 203, + 76, 76, 76, 71, 105, 14, 92, 132, 92, 71, + 77, 147, 75, 71, 60, 25, 26, 103, 66, 103, + 66, 66, 128, 241, 242, 45, 58, 78, 75, 72, + 76, 82, 41, 241, 242, 88, 79, 80, 22, 23, + 24, 75, 128, 96, 128, 55, 61, 251, 252, 34, + 268, 22, 23, 38, 297, 168, 169, 275, 262, 13, + 268, 93, 148, 291, 148, 166, 152, 275, 152, 72, + 15, 74, 17, 72, 241, 242, 22, 23, 24, 74, + 112, 113, 114, 84, 85, 30, 118, 12, 292, 121, + 36, 11, 29, 39, 31, 181, 149, 181, 10, 68, + 69, 268, 155, 307, 73, 64, 65, 311, 275, 133, + 134, 135, 136, 137, 138, 139, 320, 203, 81, 203, + 19, 325, 83, 229, 68, 69, 70, 141, 142, 73, + 334, 335, 145, 146, 316, 317, 86, 250, 72, 72, + 37, 43, 74, 229, 72, 229, 91, 62, 77, 73, + 95, 77, 75, 35, 45, 31, 66, 14, 211, 212, + 30, 106, 28, 276, 277, 251, 252, 251, 252, 37, + 223, 224, 31, 54, 77, 75, 262, 209, 262, 6, + 29, 31, 235, 44, 297, 31, 239, 66, 66, 221, + 31, 244, 66, 4, 31, 62, 76, 22, 4, 76, + 23, 31, 28, 24, 62, 291, 292, 291, 292, 154, + 24, 264, 265, 77, 246, 247, 269, 77, 31, 31, + 165, 307, 24, 307, 6, 311, 118, 311, 209, 226, + 204, 121, 258, 293, 320, 257, 320, 290, 127, 325, + 313, 325, 129, 131, 130, 140, 144, 279, 334, 335, + 334, 335, 279, 122, -1, 177, -1, -1, 143, -1, + -1, 206, 315, -1, -1, -1, -1, -1, -1, 3, + 215, -1, -1, -1, -1, -1, -1, -1, 331, 332, + -1, -1, -1, -1, 316, 317, 20, 21, -1, 234, + 24, 236, 237, 27, 28, -1, -1, -1, -1, 33, + 34, -1, 36, -1, -1, 39, -1, -1, -1, 254, + 44, 4, -1, -1, -1, -1, 50, -1, -1, -1, + 54, 55, -1, 57, 58, -1, 60, 20, 21, 63, + -1, 24, 66, -1, 27, 28, -1, 71, -1, -1, + 33, 34, 76, 36, 289, -1, 39, -1, 293, -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, -1, 60, -1, -1, + -1, -1, -1, 66, 67, 68, 69, 70, -1, -1, + 73, -1, 75, 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, 75, 76, -1, 78, 29, -1, -1, -1, + -1, -1, -1, -1, 7, 8, 9, -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, 7, 8, + 73, -1, -1, 76, -1, 78, -1, -1, 51, 52, + 53, -1, -1, 56, -1, 24, -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, -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, -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, 20, 21, 22, 23, 24, -1, - -1, 27, 28, -1, -1, -1, -1, 33, 34, -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, -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, -1, -1, 33, 34, - 76, 36, 37, -1, 39, -1, -1, -1, -1, 44, + 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, -1, 63, -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, 35, 36, -1, -1, 39, -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, 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, -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 + -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 symbol of state STATE-NUM. */ 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, 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, 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, 71, 103, - 146, 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, 146, 117, 91, 92, - 93, 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, 146, 37, 92, 43, 117, 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, 91, 103, 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, 37, 117, - 146, 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, 146, - 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 + 0, 48, 88, 89, 49, 0, 90, 4, 71, 146, + 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, 131, 135, 136, 139, + 140, 141, 145, 146, 146, 96, 97, 98, 145, 100, + 101, 145, 7, 8, 9, 51, 52, 53, 56, 67, + 68, 69, 70, 73, 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, 34, + 38, 103, 146, 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, 146, 117, + 91, 92, 93, 145, 72, 117, 146, 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, 146, 37, 92, 43, 117, 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, 91, 103, 117, 40, 45, 111, 98, + 31, 146, 146, 24, 66, 117, 46, 47, 143, 144, + 145, 146, 146, 99, 30, 107, 108, 109, 94, 28, + 37, 117, 146, 117, 29, 116, 117, 31, 146, 54, + 137, 137, 25, 26, 55, 146, 145, 145, 77, 75, + 115, 91, 91, 117, 29, 110, 108, 106, 91, 41, + 104, 146, 146, 75, 44, 137, 146, 66, 66, 66, + 137, 115, 115, 143, 31, 31, 32, 4, 31, 62, + 117, 146, 92, 91, 116, 142, 76, 76, 22, 23, + 4, 91, 28, 91, 111, 146, 144, 144, 91, 62, + 91, 77, 77, 31, 146, 146, 24, 91, 91, 31, + 31, 24, 24 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -996,7 +1004,7 @@ static const yytype_uint8 yyr1[] = 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 + 143, 144, 144, 144, 145, 145, 146, 146, 146, 146 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1018,7 +1026,7 @@ static const yytype_uint8 yyr2[] = 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 + 3, 2, 3, 3, 1, 1, 1, 1, 2, 2 }; @@ -1701,964 +1709,964 @@ yyreduce: switch (yyn) { case 2: -#line 147 "parser.y" /* yacc.c:1646 */ +#line 142 "parser.y" /* yacc.c:1646 */ { parse_complete(ctx, (yyvsp[-2].boolean)); } -#line 1712 "parser.tab.c" /* yacc.c:1646 */ +#line 1715 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 3: -#line 150 "parser.y" /* yacc.c:1646 */ +#line 145 "parser.y" /* yacc.c:1646 */ { (yyval.boolean) = FALSE; } -#line 1718 "parser.tab.c" /* yacc.c:1646 */ +#line 1721 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 4: -#line 151 "parser.y" /* yacc.c:1646 */ +#line 146 "parser.y" /* yacc.c:1646 */ { (yyval.boolean) = TRUE; } -#line 1724 "parser.tab.c" /* yacc.c:1646 */ +#line 1727 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 6: -#line 155 "parser.y" /* yacc.c:1646 */ +#line 150 "parser.y" /* yacc.c:1646 */ { source_add_statement(ctx, (yyvsp[0].statement)); } -#line 1730 "parser.tab.c" /* yacc.c:1646 */ +#line 1733 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 7: -#line 156 "parser.y" /* yacc.c:1646 */ +#line 151 "parser.y" /* yacc.c:1646 */ { source_add_class(ctx, (yyvsp[0].class_decl)); } -#line 1736 "parser.tab.c" /* yacc.c:1646 */ +#line 1739 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 8: -#line 159 "parser.y" /* yacc.c:1646 */ +#line 154 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = NULL; } -#line 1742 "parser.tab.c" /* yacc.c:1646 */ +#line 1745 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 9: -#line 160 "parser.y" /* yacc.c:1646 */ +#line 155 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 1748 "parser.tab.c" /* yacc.c:1646 */ +#line 1751 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 10: -#line 163 "parser.y" /* yacc.c:1646 */ +#line 158 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 1754 "parser.tab.c" /* yacc.c:1646 */ +#line 1757 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 11: -#line 164 "parser.y" /* yacc.c:1646 */ +#line 159 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = link_statements((yyvsp[-1].statement), (yyvsp[0].statement)); } -#line 1760 "parser.tab.c" /* yacc.c:1646 */ +#line 1763 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 12: -#line 167 "parser.y" /* yacc.c:1646 */ +#line 162 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].statement); } -#line 1766 "parser.tab.c" /* yacc.c:1646 */ +#line 1769 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 13: -#line 170 "parser.y" /* yacc.c:1646 */ +#line 165 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = NULL; } -#line 1772 "parser.tab.c" /* yacc.c:1646 */ +#line 1775 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 14: -#line 171 "parser.y" /* yacc.c:1646 */ +#line 166 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 1778 "parser.tab.c" /* yacc.c:1646 */ +#line 1781 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 15: -#line 172 "parser.y" /* yacc.c:1646 */ +#line 167 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 1784 "parser.tab.c" /* yacc.c:1646 */ +#line 1787 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 16: -#line 173 "parser.y" /* yacc.c:1646 */ +#line 168 "parser.y" /* yacc.c:1646 */ { (yyvsp[-2].statement)->next = (yyvsp[0].statement); (yyval.statement) = (yyvsp[-2].statement); } -#line 1790 "parser.tab.c" /* yacc.c:1646 */ +#line 1793 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 17: -#line 174 "parser.y" /* yacc.c:1646 */ +#line 169 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[-1].statement); } -#line 1796 "parser.tab.c" /* yacc.c:1646 */ +#line 1799 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 18: -#line 177 "parser.y" /* yacc.c:1646 */ +#line 172 "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 1802 "parser.tab.c" /* yacc.c:1646 */ +#line 1805 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 19: -#line 178 "parser.y" /* yacc.c:1646 */ +#line 173 "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 1808 "parser.tab.c" /* yacc.c:1646 */ +#line 1811 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 20: -#line 180 "parser.y" /* yacc.c:1646 */ +#line 175 "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 1814 "parser.tab.c" /* yacc.c:1646 */ +#line 1817 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 21: -#line 181 "parser.y" /* yacc.c:1646 */ +#line 176 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_dim_statement(ctx, (yyvsp[0].dim_decl)); CHECK_ERROR; } -#line 1820 "parser.tab.c" /* yacc.c:1646 */ +#line 1823 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 22: -#line 182 "parser.y" /* yacc.c:1646 */ +#line 177 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 1826 "parser.tab.c" /* yacc.c:1646 */ +#line 1829 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 23: -#line 184 "parser.y" /* yacc.c:1646 */ +#line 179 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_while_statement(ctx, STAT_WHILE, (yyvsp[-3].expression), (yyvsp[-1].statement)); CHECK_ERROR; } -#line 1832 "parser.tab.c" /* yacc.c:1646 */ +#line 1835 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 24: -#line 186 "parser.y" /* yacc.c:1646 */ +#line 181 "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 1839 "parser.tab.c" /* yacc.c:1646 */ +#line 1842 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 25: -#line 189 "parser.y" /* yacc.c:1646 */ +#line 184 "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 1846 "parser.tab.c" /* yacc.c:1646 */ +#line 1849 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 26: -#line 191 "parser.y" /* yacc.c:1646 */ +#line 186 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_while_statement(ctx, STAT_DOWHILE, NULL, (yyvsp[-1].statement)); CHECK_ERROR; } -#line 1852 "parser.tab.c" /* yacc.c:1646 */ +#line 1855 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 27: -#line 192 "parser.y" /* yacc.c:1646 */ +#line 187 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_function_statement(ctx, (yyvsp[0].func_decl)); CHECK_ERROR; } -#line 1858 "parser.tab.c" /* yacc.c:1646 */ +#line 1861 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 28: -#line 193 "parser.y" /* yacc.c:1646 */ +#line 188 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_EXITDO, 0); CHECK_ERROR; } -#line 1864 "parser.tab.c" /* yacc.c:1646 */ +#line 1867 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 29: -#line 194 "parser.y" /* yacc.c:1646 */ +#line 189 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_EXITFOR, 0); CHECK_ERROR; } -#line 1870 "parser.tab.c" /* yacc.c:1646 */ +#line 1873 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 30: -#line 195 "parser.y" /* yacc.c:1646 */ +#line 190 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_EXITFUNC, 0); CHECK_ERROR; } -#line 1876 "parser.tab.c" /* yacc.c:1646 */ +#line 1879 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 31: -#line 196 "parser.y" /* yacc.c:1646 */ +#line 191 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_EXITPROP, 0); CHECK_ERROR; } -#line 1882 "parser.tab.c" /* yacc.c:1646 */ +#line 1885 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 32: -#line 197 "parser.y" /* yacc.c:1646 */ +#line 192 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_EXITSUB, 0); CHECK_ERROR; } -#line 1888 "parser.tab.c" /* yacc.c:1646 */ +#line 1891 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 33: -#line 199 "parser.y" /* yacc.c:1646 */ +#line 194 "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 1894 "parser.tab.c" /* yacc.c:1646 */ +#line 1897 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 34: -#line 200 "parser.y" /* yacc.c:1646 */ +#line 195 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_statement(ctx, STAT_STOP, 0); CHECK_ERROR; } -#line 1900 "parser.tab.c" /* yacc.c:1646 */ +#line 1903 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 35: -#line 201 "parser.y" /* yacc.c:1646 */ +#line 196 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_onerror_statement(ctx, TRUE); CHECK_ERROR; } -#line 1906 "parser.tab.c" /* yacc.c:1646 */ +#line 1909 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 36: -#line 202 "parser.y" /* yacc.c:1646 */ +#line 197 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_onerror_statement(ctx, FALSE); CHECK_ERROR; } -#line 1912 "parser.tab.c" /* yacc.c:1646 */ +#line 1915 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 37: -#line 203 "parser.y" /* yacc.c:1646 */ +#line 198 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_const_statement(ctx, (yyvsp[0].const_decl)); CHECK_ERROR; } -#line 1918 "parser.tab.c" /* yacc.c:1646 */ +#line 1921 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 38: -#line 205 "parser.y" /* yacc.c:1646 */ +#line 200 "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 1924 "parser.tab.c" /* yacc.c:1646 */ +#line 1927 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 39: -#line 207 "parser.y" /* yacc.c:1646 */ +#line 202 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_foreach_statement(ctx, (yyvsp[-5].string), (yyvsp[-3].expression), (yyvsp[-1].statement)); } -#line 1930 "parser.tab.c" /* yacc.c:1646 */ +#line 1933 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 40: -#line 209 "parser.y" /* yacc.c:1646 */ +#line 204 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_select_statement(ctx, (yyvsp[-4].expression), (yyvsp[-2].case_clausule)); } -#line 1936 "parser.tab.c" /* yacc.c:1646 */ +#line 1939 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 41: -#line 212 "parser.y" /* yacc.c:1646 */ +#line 207 "parser.y" /* yacc.c:1646 */ { (yyval.member) = new_member_expression(ctx, NULL, (yyvsp[0].string)); CHECK_ERROR; } -#line 1942 "parser.tab.c" /* yacc.c:1646 */ +#line 1945 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 42: -#line 213 "parser.y" /* yacc.c:1646 */ +#line 208 "parser.y" /* yacc.c:1646 */ { (yyval.member) = new_member_expression(ctx, (yyvsp[-2].expression), (yyvsp[0].string)); CHECK_ERROR; } -#line 1948 "parser.tab.c" /* yacc.c:1646 */ +#line 1951 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 43: -#line 216 "parser.y" /* yacc.c:1646 */ +#line 211 "parser.y" /* yacc.c:1646 */ { (yyval.dim_decl) = (yyvsp[0].dim_decl); } -#line 1954 "parser.tab.c" /* yacc.c:1646 */ +#line 1957 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 44: -#line 217 "parser.y" /* yacc.c:1646 */ +#line 212 "parser.y" /* yacc.c:1646 */ { (yyvsp[-2].dim_decl)->next = (yyvsp[0].dim_decl); (yyval.dim_decl) = (yyvsp[-2].dim_decl); } -#line 1960 "parser.tab.c" /* yacc.c:1646 */ +#line 1963 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 45: -#line 220 "parser.y" /* yacc.c:1646 */ +#line 215 "parser.y" /* yacc.c:1646 */ { (yyval.dim_decl) = new_dim_decl(ctx, (yyvsp[0].string), FALSE, NULL); CHECK_ERROR; } -#line 1966 "parser.tab.c" /* yacc.c:1646 */ +#line 1969 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 46: -#line 221 "parser.y" /* yacc.c:1646 */ +#line 216 "parser.y" /* yacc.c:1646 */ { (yyval.dim_decl) = new_dim_decl(ctx, (yyvsp[-3].string), TRUE, (yyvsp[-1].dim_list)); CHECK_ERROR; } -#line 1972 "parser.tab.c" /* yacc.c:1646 */ +#line 1975 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 47: -#line 222 "parser.y" /* yacc.c:1646 */ +#line 217 "parser.y" /* yacc.c:1646 */ { (yyval.dim_decl) = new_dim_decl(ctx, (yyvsp[-1].string), TRUE, NULL); CHECK_ERROR; } -#line 1978 "parser.tab.c" /* yacc.c:1646 */ +#line 1981 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 48: -#line 225 "parser.y" /* yacc.c:1646 */ +#line 220 "parser.y" /* yacc.c:1646 */ { (yyval.dim_list) = new_dim(ctx, (yyvsp[0].uint), NULL); } -#line 1984 "parser.tab.c" /* yacc.c:1646 */ +#line 1987 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 49: -#line 226 "parser.y" /* yacc.c:1646 */ +#line 221 "parser.y" /* yacc.c:1646 */ { (yyval.dim_list) = new_dim(ctx, (yyvsp[-2].uint), (yyvsp[0].dim_list)); } -#line 1990 "parser.tab.c" /* yacc.c:1646 */ +#line 1993 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 50: -#line 229 "parser.y" /* yacc.c:1646 */ +#line 224 "parser.y" /* yacc.c:1646 */ { (yyval.const_decl) = (yyvsp[0].const_decl); } -#line 1996 "parser.tab.c" /* yacc.c:1646 */ +#line 1999 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 51: -#line 230 "parser.y" /* yacc.c:1646 */ +#line 225 "parser.y" /* yacc.c:1646 */ { (yyvsp[-2].const_decl)->next = (yyvsp[0].const_decl); (yyval.const_decl) = (yyvsp[-2].const_decl); } -#line 2002 "parser.tab.c" /* yacc.c:1646 */ +#line 2005 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 52: -#line 233 "parser.y" /* yacc.c:1646 */ +#line 228 "parser.y" /* yacc.c:1646 */ { (yyval.const_decl) = new_const_decl(ctx, (yyvsp[-2].string), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2008 "parser.tab.c" /* yacc.c:1646 */ +#line 2011 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 53: -#line 236 "parser.y" /* yacc.c:1646 */ +#line 231 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2014 "parser.tab.c" /* yacc.c:1646 */ +#line 2017 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 54: -#line 237 "parser.y" /* yacc.c:1646 */ +#line 232 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_unary_expression(ctx, EXPR_NEG, (yyvsp[0].expression)); CHECK_ERROR; } -#line 2020 "parser.tab.c" /* yacc.c:1646 */ +#line 2023 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 55: -#line 240 "parser.y" /* yacc.c:1646 */ +#line 235 "parser.y" /* yacc.c:1646 */ { (yyval.boolean) = TRUE; } -#line 2026 "parser.tab.c" /* yacc.c:1646 */ +#line 2029 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 56: -#line 241 "parser.y" /* yacc.c:1646 */ +#line 236 "parser.y" /* yacc.c:1646 */ { (yyval.boolean) = FALSE; } -#line 2032 "parser.tab.c" /* yacc.c:1646 */ +#line 2035 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 57: -#line 244 "parser.y" /* yacc.c:1646 */ +#line 239 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = NULL;} -#line 2038 "parser.tab.c" /* yacc.c:1646 */ +#line 2041 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 58: -#line 245 "parser.y" /* yacc.c:1646 */ +#line 240 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2044 "parser.tab.c" /* yacc.c:1646 */ +#line 2047 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 59: -#line 249 "parser.y" /* yacc.c:1646 */ +#line 244 "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 2050 "parser.tab.c" /* yacc.c:1646 */ +#line 2053 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 60: -#line 250 "parser.y" /* yacc.c:1646 */ +#line 245 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_if_statement(ctx, (yyvsp[-3].expression), (yyvsp[-1].statement), NULL, NULL); CHECK_ERROR; } -#line 2056 "parser.tab.c" /* yacc.c:1646 */ +#line 2059 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 61: -#line 252 "parser.y" /* yacc.c:1646 */ +#line 247 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = new_if_statement(ctx, (yyvsp[-5].expression), (yyvsp[-3].statement), NULL, (yyvsp[-1].statement)); CHECK_ERROR; } -#line 2062 "parser.tab.c" /* yacc.c:1646 */ +#line 2065 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 64: -#line 259 "parser.y" /* yacc.c:1646 */ +#line 254 "parser.y" /* yacc.c:1646 */ { (yyval.elseif) = NULL; } -#line 2068 "parser.tab.c" /* yacc.c:1646 */ +#line 2071 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 65: -#line 260 "parser.y" /* yacc.c:1646 */ +#line 255 "parser.y" /* yacc.c:1646 */ { (yyval.elseif) = (yyvsp[0].elseif); } -#line 2074 "parser.tab.c" /* yacc.c:1646 */ +#line 2077 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 66: -#line 263 "parser.y" /* yacc.c:1646 */ +#line 258 "parser.y" /* yacc.c:1646 */ { (yyval.elseif) = (yyvsp[0].elseif); } -#line 2080 "parser.tab.c" /* yacc.c:1646 */ +#line 2083 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 67: -#line 264 "parser.y" /* yacc.c:1646 */ +#line 259 "parser.y" /* yacc.c:1646 */ { (yyvsp[-1].elseif)->next = (yyvsp[0].elseif); (yyval.elseif) = (yyvsp[-1].elseif); } -#line 2086 "parser.tab.c" /* yacc.c:1646 */ +#line 2089 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 68: -#line 268 "parser.y" /* yacc.c:1646 */ +#line 263 "parser.y" /* yacc.c:1646 */ { (yyval.elseif) = new_elseif_decl(ctx, (yyvsp[-3].expression), (yyvsp[0].statement)); } -#line 2092 "parser.tab.c" /* yacc.c:1646 */ +#line 2095 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 69: -#line 271 "parser.y" /* yacc.c:1646 */ +#line 266 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = NULL; } -#line 2098 "parser.tab.c" /* yacc.c:1646 */ +#line 2101 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 70: -#line 272 "parser.y" /* yacc.c:1646 */ +#line 267 "parser.y" /* yacc.c:1646 */ { (yyval.statement) = (yyvsp[0].statement); } -#line 2104 "parser.tab.c" /* yacc.c:1646 */ +#line 2107 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 71: -#line 275 "parser.y" /* yacc.c:1646 */ +#line 270 "parser.y" /* yacc.c:1646 */ { (yyval.case_clausule) = NULL; } -#line 2110 "parser.tab.c" /* yacc.c:1646 */ +#line 2113 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 72: -#line 276 "parser.y" /* yacc.c:1646 */ +#line 271 "parser.y" /* yacc.c:1646 */ { (yyval.case_clausule) = new_case_clausule(ctx, NULL, (yyvsp[0].statement), NULL); } -#line 2116 "parser.tab.c" /* yacc.c:1646 */ +#line 2119 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 73: -#line 278 "parser.y" /* yacc.c:1646 */ +#line 273 "parser.y" /* yacc.c:1646 */ { (yyval.case_clausule) = new_case_clausule(ctx, (yyvsp[-3].expression), (yyvsp[-1].statement), (yyvsp[0].case_clausule)); } -#line 2122 "parser.tab.c" /* yacc.c:1646 */ +#line 2125 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 74: -#line 281 "parser.y" /* yacc.c:1646 */ +#line 276 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = NULL; } -#line 2128 "parser.tab.c" /* yacc.c:1646 */ +#line 2131 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 75: -#line 282 "parser.y" /* yacc.c:1646 */ +#line 277 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[-1].expression); } -#line 2134 "parser.tab.c" /* yacc.c:1646 */ +#line 2137 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 76: -#line 285 "parser.y" /* yacc.c:1646 */ +#line 280 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = NULL; } -#line 2140 "parser.tab.c" /* yacc.c:1646 */ +#line 2143 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 77: -#line 286 "parser.y" /* yacc.c:1646 */ +#line 281 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2146 "parser.tab.c" /* yacc.c:1646 */ +#line 2149 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 78: -#line 289 "parser.y" /* yacc.c:1646 */ +#line 284 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2152 "parser.tab.c" /* yacc.c:1646 */ +#line 2155 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 79: -#line 290 "parser.y" /* yacc.c:1646 */ +#line 285 "parser.y" /* yacc.c:1646 */ { (yyvsp[-2].expression)->next = (yyvsp[0].expression); (yyval.expression) = (yyvsp[-2].expression); } -#line 2158 "parser.tab.c" /* yacc.c:1646 */ +#line 2161 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 80: -#line 291 "parser.y" /* yacc.c:1646 */ +#line 286 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_expression(ctx, EXPR_NOARG, 0); CHECK_ERROR; (yyval.expression)->next = (yyvsp[0].expression); } -#line 2164 "parser.tab.c" /* yacc.c:1646 */ +#line 2167 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 83: -#line 298 "parser.y" /* yacc.c:1646 */ +#line 293 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2170 "parser.tab.c" /* yacc.c:1646 */ +#line 2173 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 84: -#line 299 "parser.y" /* yacc.c:1646 */ +#line 294 "parser.y" /* yacc.c:1646 */ { (yyvsp[-2].expression)->next = (yyvsp[0].expression); (yyval.expression) = (yyvsp[-2].expression); } -#line 2176 "parser.tab.c" /* yacc.c:1646 */ +#line 2179 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 85: -#line 302 "parser.y" /* yacc.c:1646 */ +#line 297 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2182 "parser.tab.c" /* yacc.c:1646 */ +#line 2185 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 86: -#line 303 "parser.y" /* yacc.c:1646 */ +#line 298 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_IMP, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2188 "parser.tab.c" /* yacc.c:1646 */ +#line 2191 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 87: -#line 306 "parser.y" /* yacc.c:1646 */ +#line 301 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2194 "parser.tab.c" /* yacc.c:1646 */ +#line 2197 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 88: -#line 307 "parser.y" /* yacc.c:1646 */ +#line 302 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_EQV, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2200 "parser.tab.c" /* yacc.c:1646 */ +#line 2203 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 89: -#line 310 "parser.y" /* yacc.c:1646 */ +#line 305 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2206 "parser.tab.c" /* yacc.c:1646 */ +#line 2209 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 90: -#line 311 "parser.y" /* yacc.c:1646 */ +#line 306 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_XOR, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2212 "parser.tab.c" /* yacc.c:1646 */ +#line 2215 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 91: -#line 314 "parser.y" /* yacc.c:1646 */ +#line 309 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2218 "parser.tab.c" /* yacc.c:1646 */ +#line 2221 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 92: -#line 315 "parser.y" /* yacc.c:1646 */ +#line 310 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_OR, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2224 "parser.tab.c" /* yacc.c:1646 */ +#line 2227 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 93: -#line 318 "parser.y" /* yacc.c:1646 */ +#line 313 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2230 "parser.tab.c" /* yacc.c:1646 */ +#line 2233 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 94: -#line 319 "parser.y" /* yacc.c:1646 */ +#line 314 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_AND, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2236 "parser.tab.c" /* yacc.c:1646 */ +#line 2239 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 95: -#line 322 "parser.y" /* yacc.c:1646 */ +#line 317 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2242 "parser.tab.c" /* yacc.c:1646 */ +#line 2245 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 96: -#line 323 "parser.y" /* yacc.c:1646 */ +#line 318 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_unary_expression(ctx, EXPR_NOT, (yyvsp[0].expression)); CHECK_ERROR; } -#line 2248 "parser.tab.c" /* yacc.c:1646 */ +#line 2251 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 97: -#line 326 "parser.y" /* yacc.c:1646 */ +#line 321 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2254 "parser.tab.c" /* yacc.c:1646 */ +#line 2257 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 98: -#line 327 "parser.y" /* yacc.c:1646 */ +#line 322 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_EQUAL, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2260 "parser.tab.c" /* yacc.c:1646 */ +#line 2263 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 99: -#line 328 "parser.y" /* yacc.c:1646 */ +#line 323 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_NEQUAL, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2266 "parser.tab.c" /* yacc.c:1646 */ +#line 2269 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 100: -#line 329 "parser.y" /* yacc.c:1646 */ +#line 324 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_GT, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2272 "parser.tab.c" /* yacc.c:1646 */ +#line 2275 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 101: -#line 330 "parser.y" /* yacc.c:1646 */ +#line 325 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_LT, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2278 "parser.tab.c" /* yacc.c:1646 */ +#line 2281 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 102: -#line 331 "parser.y" /* yacc.c:1646 */ +#line 326 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_GTEQ, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2284 "parser.tab.c" /* yacc.c:1646 */ +#line 2287 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 103: -#line 332 "parser.y" /* yacc.c:1646 */ +#line 327 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_LTEQ, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2290 "parser.tab.c" /* yacc.c:1646 */ +#line 2293 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 104: -#line 333 "parser.y" /* yacc.c:1646 */ +#line 328 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_IS, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2296 "parser.tab.c" /* yacc.c:1646 */ +#line 2299 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 105: -#line 336 "parser.y" /* yacc.c:1646 */ +#line 331 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2302 "parser.tab.c" /* yacc.c:1646 */ +#line 2305 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 106: -#line 337 "parser.y" /* yacc.c:1646 */ +#line 332 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_CONCAT, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2308 "parser.tab.c" /* yacc.c:1646 */ +#line 2311 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 107: -#line 340 "parser.y" /* yacc.c:1646 */ +#line 335 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2314 "parser.tab.c" /* yacc.c:1646 */ +#line 2317 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 108: -#line 341 "parser.y" /* yacc.c:1646 */ +#line 336 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_ADD, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2320 "parser.tab.c" /* yacc.c:1646 */ +#line 2323 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 109: -#line 342 "parser.y" /* yacc.c:1646 */ +#line 337 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_SUB, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2326 "parser.tab.c" /* yacc.c:1646 */ +#line 2329 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 110: -#line 345 "parser.y" /* yacc.c:1646 */ +#line 340 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2332 "parser.tab.c" /* yacc.c:1646 */ +#line 2335 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 111: -#line 346 "parser.y" /* yacc.c:1646 */ +#line 341 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_MOD, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2338 "parser.tab.c" /* yacc.c:1646 */ +#line 2341 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 112: -#line 349 "parser.y" /* yacc.c:1646 */ +#line 344 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2344 "parser.tab.c" /* yacc.c:1646 */ +#line 2347 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 113: -#line 351 "parser.y" /* yacc.c:1646 */ +#line 346 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_IDIV, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2350 "parser.tab.c" /* yacc.c:1646 */ +#line 2353 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 114: -#line 354 "parser.y" /* yacc.c:1646 */ +#line 349 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2356 "parser.tab.c" /* yacc.c:1646 */ +#line 2359 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 115: -#line 356 "parser.y" /* yacc.c:1646 */ +#line 351 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_MUL, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2362 "parser.tab.c" /* yacc.c:1646 */ +#line 2365 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 116: -#line 358 "parser.y" /* yacc.c:1646 */ +#line 353 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_DIV, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2368 "parser.tab.c" /* yacc.c:1646 */ +#line 2371 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 117: -#line 361 "parser.y" /* yacc.c:1646 */ +#line 356 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2374 "parser.tab.c" /* yacc.c:1646 */ +#line 2377 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 118: -#line 362 "parser.y" /* yacc.c:1646 */ +#line 357 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_binary_expression(ctx, EXPR_EXP, (yyvsp[-2].expression), (yyvsp[0].expression)); CHECK_ERROR; } -#line 2380 "parser.tab.c" /* yacc.c:1646 */ +#line 2383 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 119: -#line 365 "parser.y" /* yacc.c:1646 */ +#line 360 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2386 "parser.tab.c" /* yacc.c:1646 */ +#line 2389 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 120: -#line 366 "parser.y" /* yacc.c:1646 */ +#line 361 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2392 "parser.tab.c" /* yacc.c:1646 */ +#line 2395 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 121: -#line 367 "parser.y" /* yacc.c:1646 */ +#line 362 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_new_expression(ctx, (yyvsp[0].string)); CHECK_ERROR; } -#line 2398 "parser.tab.c" /* yacc.c:1646 */ +#line 2401 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 122: -#line 368 "parser.y" /* yacc.c:1646 */ +#line 363 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_unary_expression(ctx, EXPR_NEG, (yyvsp[0].expression)); CHECK_ERROR; } -#line 2404 "parser.tab.c" /* yacc.c:1646 */ +#line 2407 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 123: -#line 371 "parser.y" /* yacc.c:1646 */ +#line 366 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2410 "parser.tab.c" /* yacc.c:1646 */ +#line 2413 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 124: -#line 372 "parser.y" /* yacc.c:1646 */ +#line 367 "parser.y" /* yacc.c:1646 */ { (yyvsp[-1].member)->args = (yyvsp[0].expression); (yyval.expression) = &(yyvsp[-1].member)->expr; } -#line 2416 "parser.tab.c" /* yacc.c:1646 */ +#line 2419 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 125: -#line 375 "parser.y" /* yacc.c:1646 */ +#line 370 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_bool_expression(ctx, VARIANT_TRUE); CHECK_ERROR; } -#line 2422 "parser.tab.c" /* yacc.c:1646 */ +#line 2425 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 126: -#line 376 "parser.y" /* yacc.c:1646 */ +#line 371 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_bool_expression(ctx, VARIANT_FALSE); CHECK_ERROR; } -#line 2428 "parser.tab.c" /* yacc.c:1646 */ +#line 2431 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 127: -#line 377 "parser.y" /* yacc.c:1646 */ +#line 372 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_string_expression(ctx, (yyvsp[0].string)); CHECK_ERROR; } -#line 2434 "parser.tab.c" /* yacc.c:1646 */ +#line 2437 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 128: -#line 378 "parser.y" /* yacc.c:1646 */ +#line 373 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = (yyvsp[0].expression); } -#line 2440 "parser.tab.c" /* yacc.c:1646 */ +#line 2443 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 129: -#line 379 "parser.y" /* yacc.c:1646 */ +#line 374 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_expression(ctx, EXPR_EMPTY, 0); CHECK_ERROR; } -#line 2446 "parser.tab.c" /* yacc.c:1646 */ +#line 2449 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 130: -#line 380 "parser.y" /* yacc.c:1646 */ +#line 375 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_expression(ctx, EXPR_NULL, 0); CHECK_ERROR; } -#line 2452 "parser.tab.c" /* yacc.c:1646 */ +#line 2455 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 131: -#line 381 "parser.y" /* yacc.c:1646 */ +#line 376 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_expression(ctx, EXPR_NOTHING, 0); CHECK_ERROR; } -#line 2458 "parser.tab.c" /* yacc.c:1646 */ +#line 2461 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 132: -#line 384 "parser.y" /* yacc.c:1646 */ +#line 379 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_long_expression(ctx, EXPR_USHORT, (yyvsp[0].lng)); CHECK_ERROR; } -#line 2464 "parser.tab.c" /* yacc.c:1646 */ +#line 2467 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 133: -#line 385 "parser.y" /* yacc.c:1646 */ +#line 380 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_long_expression(ctx, EXPR_USHORT, 0); CHECK_ERROR; } -#line 2470 "parser.tab.c" /* yacc.c:1646 */ +#line 2473 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 134: -#line 386 "parser.y" /* yacc.c:1646 */ +#line 381 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_long_expression(ctx, EXPR_ULONG, (yyvsp[0].lng)); CHECK_ERROR; } -#line 2476 "parser.tab.c" /* yacc.c:1646 */ +#line 2479 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 135: -#line 387 "parser.y" /* yacc.c:1646 */ +#line 382 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_double_expression(ctx, (yyvsp[0].dbl)); CHECK_ERROR; } -#line 2482 "parser.tab.c" /* yacc.c:1646 */ +#line 2485 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 136: -#line 390 "parser.y" /* yacc.c:1646 */ +#line 385 "parser.y" /* yacc.c:1646 */ { (yyval.uint) = (yyvsp[0].lng); } -#line 2488 "parser.tab.c" /* yacc.c:1646 */ +#line 2491 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 137: -#line 391 "parser.y" /* yacc.c:1646 */ +#line 386 "parser.y" /* yacc.c:1646 */ { (yyval.uint) = 0; } -#line 2494 "parser.tab.c" /* yacc.c:1646 */ +#line 2497 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 138: -#line 392 "parser.y" /* yacc.c:1646 */ +#line 387 "parser.y" /* yacc.c:1646 */ { (yyval.uint) = (yyvsp[0].lng); } -#line 2500 "parser.tab.c" /* yacc.c:1646 */ +#line 2503 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 139: -#line 395 "parser.y" /* yacc.c:1646 */ +#line 390 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_unary_expression(ctx, EXPR_BRACKETS, (yyvsp[-1].expression)); } -#line 2506 "parser.tab.c" /* yacc.c:1646 */ +#line 2509 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 140: -#line 396 "parser.y" /* yacc.c:1646 */ +#line 391 "parser.y" /* yacc.c:1646 */ { (yyval.expression) = new_expression(ctx, EXPR_ME, 0); CHECK_ERROR; } -#line 2512 "parser.tab.c" /* yacc.c:1646 */ +#line 2515 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 141: -#line 399 "parser.y" /* yacc.c:1646 */ +#line 394 "parser.y" /* yacc.c:1646 */ { (yyvsp[-3].class_decl)->name = (yyvsp[-5].string); (yyval.class_decl) = (yyvsp[-3].class_decl); } -#line 2518 "parser.tab.c" /* yacc.c:1646 */ +#line 2521 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 142: -#line 402 "parser.y" /* yacc.c:1646 */ +#line 397 "parser.y" /* yacc.c:1646 */ { (yyval.class_decl) = new_class_decl(ctx); } -#line 2524 "parser.tab.c" /* yacc.c:1646 */ +#line 2527 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 143: -#line 403 "parser.y" /* yacc.c:1646 */ +#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 2530 "parser.tab.c" /* yacc.c:1646 */ +#line 2533 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 144: -#line 405 "parser.y" /* yacc.c:1646 */ +#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 2537 "parser.tab.c" /* yacc.c:1646 */ +#line 2540 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 145: -#line 407 "parser.y" /* yacc.c:1646 */ +#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 2543 "parser.tab.c" /* yacc.c:1646 */ +#line 2546 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 146: -#line 408 "parser.y" /* yacc.c:1646 */ +#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 2549 "parser.tab.c" /* yacc.c:1646 */ +#line 2552 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 147: -#line 412 "parser.y" /* yacc.c:1646 */ +#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 2555 "parser.tab.c" /* yacc.c:1646 */ +#line 2558 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 148: -#line 414 "parser.y" /* yacc.c:1646 */ +#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 2561 "parser.tab.c" /* yacc.c:1646 */ +#line 2564 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 149: -#line 416 "parser.y" /* yacc.c:1646 */ +#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 2567 "parser.tab.c" /* yacc.c:1646 */ +#line 2570 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 150: -#line 420 "parser.y" /* yacc.c:1646 */ +#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 2573 "parser.tab.c" /* yacc.c:1646 */ +#line 2576 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 151: -#line 422 "parser.y" /* yacc.c:1646 */ +#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 2579 "parser.tab.c" /* yacc.c:1646 */ +#line 2582 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 152: -#line 425 "parser.y" /* yacc.c:1646 */ +#line 420 "parser.y" /* yacc.c:1646 */ { (yyval.uint) = 0; } -#line 2585 "parser.tab.c" /* yacc.c:1646 */ +#line 2588 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 153: -#line 426 "parser.y" /* yacc.c:1646 */ +#line 421 "parser.y" /* yacc.c:1646 */ { (yyval.uint) = (yyvsp[0].uint); } -#line 2591 "parser.tab.c" /* yacc.c:1646 */ +#line 2594 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 154: -#line 429 "parser.y" /* yacc.c:1646 */ +#line 424 "parser.y" /* yacc.c:1646 */ { (yyval.uint) = STORAGE_IS_DEFAULT; } -#line 2597 "parser.tab.c" /* yacc.c:1646 */ +#line 2600 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 155: -#line 430 "parser.y" /* yacc.c:1646 */ +#line 425 "parser.y" /* yacc.c:1646 */ { (yyval.uint) = 0; } -#line 2603 "parser.tab.c" /* yacc.c:1646 */ +#line 2606 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 156: -#line 431 "parser.y" /* yacc.c:1646 */ +#line 426 "parser.y" /* yacc.c:1646 */ { (yyval.uint) = STORAGE_IS_PRIVATE; } -#line 2609 "parser.tab.c" /* yacc.c:1646 */ +#line 2612 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 157: -#line 434 "parser.y" /* yacc.c:1646 */ +#line 429 "parser.y" /* yacc.c:1646 */ { (yyval.arg_decl) = NULL; } -#line 2615 "parser.tab.c" /* yacc.c:1646 */ +#line 2618 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 158: -#line 435 "parser.y" /* yacc.c:1646 */ +#line 430 "parser.y" /* yacc.c:1646 */ { (yyval.arg_decl) = (yyvsp[-1].arg_decl); } -#line 2621 "parser.tab.c" /* yacc.c:1646 */ +#line 2624 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 159: -#line 438 "parser.y" /* yacc.c:1646 */ +#line 433 "parser.y" /* yacc.c:1646 */ { (yyval.arg_decl) = (yyvsp[0].arg_decl); } -#line 2627 "parser.tab.c" /* yacc.c:1646 */ +#line 2630 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 160: -#line 439 "parser.y" /* yacc.c:1646 */ +#line 434 "parser.y" /* yacc.c:1646 */ { (yyvsp[-2].arg_decl)->next = (yyvsp[0].arg_decl); (yyval.arg_decl) = (yyvsp[-2].arg_decl); } -#line 2633 "parser.tab.c" /* yacc.c:1646 */ +#line 2636 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 161: -#line 442 "parser.y" /* yacc.c:1646 */ +#line 437 "parser.y" /* yacc.c:1646 */ { (yyval.arg_decl) = new_argument_decl(ctx, (yyvsp[-1].string), TRUE); } -#line 2639 "parser.tab.c" /* yacc.c:1646 */ +#line 2642 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 162: -#line 443 "parser.y" /* yacc.c:1646 */ +#line 438 "parser.y" /* yacc.c:1646 */ { (yyval.arg_decl) = new_argument_decl(ctx, (yyvsp[-1].string), TRUE); } -#line 2645 "parser.tab.c" /* yacc.c:1646 */ +#line 2648 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 163: -#line 444 "parser.y" /* yacc.c:1646 */ +#line 439 "parser.y" /* yacc.c:1646 */ { (yyval.arg_decl) = new_argument_decl(ctx, (yyvsp[-1].string), FALSE); } -#line 2651 "parser.tab.c" /* yacc.c:1646 */ +#line 2654 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 164: -#line 448 "parser.y" /* yacc.c:1646 */ +#line 443 "parser.y" /* yacc.c:1646 */ { (yyval.string) = (yyvsp[0].string); } -#line 2657 "parser.tab.c" /* yacc.c:1646 */ +#line 2660 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; case 165: -#line 449 "parser.y" /* yacc.c:1646 */ +#line 444 "parser.y" /* yacc.c:1646 */ { (yyval.string) = propertyW; } -#line 2663 "parser.tab.c" /* yacc.c:1646 */ +#line 2666 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ break; -#line 2667 "parser.tab.c" /* yacc.c:1646 */ +#line 2670 "E:/reactosSync3.0_gcc/dll/win32/vbscript/parser.tab.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -2886,7 +2894,7 @@ yyreturn: #endif return yyresult; } -#line 456 "parser.y" /* yacc.c:1906 */ +#line 453 "parser.y" /* yacc.c:1906 */ static int parser_error(parser_ctx_t *ctx, const char *str) diff --git a/dll/win32/vbscript/parser.tab.h b/dll/win32/vbscript/parser.tab.h index 6e550964568..513c2ef0538 100644 --- a/dll/win32/vbscript/parser.tab.h +++ b/dll/win32/vbscript/parser.tab.h @@ -30,8 +30,8 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_PARSER_E_REACTOS_SYNC_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED -# define YY_PARSER_E_REACTOS_SYNC_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED +#ifndef YY_PARSER_E_REACTOSSYNC3_0_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED +# define YY_PARSER_E_REACTOSSYNC3_0_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -121,7 +121,7 @@ extern int parser_debug; typedef union YYSTYPE YYSTYPE; union YYSTYPE { -#line 88 "parser.y" /* yacc.c:1909 */ +#line 83 "parser.y" /* yacc.c:1909 */ const WCHAR *string; statement_t *statement; @@ -150,4 +150,4 @@ union YYSTYPE int parser_parse (parser_ctx_t *ctx); -#endif /* !YY_PARSER_E_REACTOS_SYNC_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED */ +#endif /* !YY_PARSER_E_REACTOSSYNC3_0_GCC_DLL_WIN32_VBSCRIPT_PARSER_TAB_H_INCLUDED */ diff --git a/dll/win32/vbscript/parser.y b/dll/win32/vbscript/parser.y index 6b303eea35b..34a07ad94b0 100644 --- a/dll/win32/vbscript/parser.y +++ b/dll/win32/vbscript/parser.y @@ -19,11 +19,6 @@ %{ #include "vbscript.h" -#include "parse.h" - -#include "wine/debug.h" - -WINE_DEFAULT_DEBUG_CHANNEL(vbscript); static int parser_error(parser_ctx_t *,const char*); @@ -148,7 +143,7 @@ Program OptionExplicit_opt : /* empty */ { $$ = FALSE; } - | tOPTION tEXPLICIT tNL { $$ = TRUE; } + | tOPTION tEXPLICIT StSep { $$ = TRUE; } SourceElements : /* empty */ @@ -164,7 +159,7 @@ StatementsNl | StatementNl StatementsNl { $$ = link_statements($1, $2); } StatementNl - : Statement tNL { $$ = $1; } + : Statement tNL { $$ = $1; } Statement : ':' { $$ = NULL; } @@ -396,29 +391,29 @@ PrimaryExpression | tME { $$ = new_expression(ctx, EXPR_ME, 0); CHECK_ERROR; } ClassDeclaration - : tCLASS Identifier tNL ClassBody tEND tCLASS tNL { $4->name = $2; $$ = $4; } + : tCLASS Identifier StSep ClassBody tEND tCLASS StSep { $4->name = $2; $$ = $4; } ClassBody - : /* empty */ { $$ = new_class_decl(ctx); } - | FunctionDecl tNL ClassBody { $$ = add_class_function(ctx, $3, $1); CHECK_ERROR; } + : /* empty */ { $$ = new_class_decl(ctx); } + | FunctionDecl StSep ClassBody { $$ = add_class_function(ctx, $3, $1); CHECK_ERROR; } /* FIXME: We should use DimDecl here to support arrays, but that conflicts with PropertyDecl. */ - | Storage tIdentifier tNL ClassBody { dim_decl_t *dim_decl = new_dim_decl(ctx, $2, FALSE, NULL); CHECK_ERROR; + | Storage tIdentifier StSep ClassBody { dim_decl_t *dim_decl = new_dim_decl(ctx, $2, FALSE, NULL); CHECK_ERROR; $$ = add_dim_prop(ctx, $4, dim_decl, $1); CHECK_ERROR; } - | tDIM DimDecl tNL ClassBody { $$ = add_dim_prop(ctx, $4, $2, 0); CHECK_ERROR; } - | PropertyDecl tNL ClassBody { $$ = add_class_function(ctx, $3, $1); CHECK_ERROR; } + | tDIM DimDecl StSep ClassBody { $$ = add_dim_prop(ctx, $4, $2, 0); CHECK_ERROR; } + | PropertyDecl StSep ClassBody { $$ = add_class_function(ctx, $3, $1); CHECK_ERROR; } PropertyDecl - : Storage_opt tPROPERTY tGET tIdentifier ArgumentsDecl_opt tNL StatementsNl_opt tEND tPROPERTY + : Storage_opt tPROPERTY tGET tIdentifier ArgumentsDecl_opt StSep StatementsNl_opt tEND tPROPERTY { $$ = new_function_decl(ctx, $4, FUNC_PROPGET, $1, $5, $7); CHECK_ERROR; } - | Storage_opt tPROPERTY tLET tIdentifier '(' ArgumentDecl ')' tNL StatementsNl_opt tEND tPROPERTY + | Storage_opt tPROPERTY tLET tIdentifier '(' ArgumentDecl ')' StSep StatementsNl_opt tEND tPROPERTY { $$ = new_function_decl(ctx, $4, FUNC_PROPLET, $1, $6, $9); CHECK_ERROR; } - | Storage_opt tPROPERTY tSET tIdentifier '(' ArgumentDecl ')' tNL StatementsNl_opt tEND tPROPERTY + | Storage_opt tPROPERTY tSET tIdentifier '(' ArgumentDecl ')' StSep StatementsNl_opt tEND tPROPERTY { $$ = new_function_decl(ctx, $4, FUNC_PROPSET, $1, $6, $9); CHECK_ERROR; } FunctionDecl - : Storage_opt tSUB Identifier ArgumentsDecl_opt tNL StatementsNl_opt tEND tSUB + : Storage_opt tSUB Identifier ArgumentsDecl_opt StSep StatementsNl_opt tEND tSUB { $$ = new_function_decl(ctx, $3, FUNC_SUB, $1, $4, $6); CHECK_ERROR; } - | Storage_opt tFUNCTION Identifier ArgumentsDecl_opt tNL StatementsNl_opt tEND tFUNCTION + | Storage_opt tFUNCTION Identifier ArgumentsDecl_opt StSep StatementsNl_opt tEND tFUNCTION { $$ = new_function_decl(ctx, $3, FUNC_FUNCTION, $1, $4, $6); CHECK_ERROR; } Storage_opt @@ -448,10 +443,12 @@ Identifier : tIdentifier { $$ = $1; } | tPROPERTY { $$ = propertyW; } -/* Some statements accept both new line and ':' as a separator */ +/* Most statements accept both new line and ':' as separators */ StSep : tNL | ':' + | tNL StSep + | ':' StSep %% diff --git a/dll/win32/vbscript/utils.c b/dll/win32/vbscript/utils.c new file mode 100644 index 00000000000..9444c4778f8 --- /dev/null +++ b/dll/win32/vbscript/utils.c @@ -0,0 +1,189 @@ +/* + * Copyright 2017 Piotr Caban for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "vbscript.h" + +typedef struct { + IEnumVARIANT IEnumVARIANT_iface; + + LONG ref; + + SAFEARRAY *sa; + ULONG i, size; +} safearray_iter; + +static inline safearray_iter *impl_from_IEnumVARIANT(IEnumVARIANT *iface) +{ + return CONTAINING_RECORD(iface, safearray_iter, IEnumVARIANT_iface); +} + +static HRESULT WINAPI safearray_iter_IEnumVARIANT_QueryInterface( + IEnumVARIANT *iface, REFIID riid, void **ppv) +{ + safearray_iter *This = impl_from_IEnumVARIANT(iface); + + if(IsEqualGUID(riid, &IID_IUnknown)) { + TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); + *ppv = &This->IEnumVARIANT_iface; + }else if(IsEqualGUID(riid, &IID_IEnumVARIANT)) { + TRACE("(%p)->(IID_IEnumVARIANT %p)\n", This, ppv); + *ppv = &This->IEnumVARIANT_iface; + }else { + FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); + *ppv = NULL; + return E_NOINTERFACE; + } + + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; +} + +static ULONG WINAPI safearray_iter_IEnumVARIANT_AddRef(IEnumVARIANT *iface) +{ + safearray_iter *This = impl_from_IEnumVARIANT(iface); + LONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) ref=%d\n", This, ref); + + return ref; +} + +static ULONG WINAPI safearray_iter_IEnumVARIANT_Release(IEnumVARIANT *iface) +{ + safearray_iter *This = impl_from_IEnumVARIANT(iface); + LONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) ref=%d\n", iface, ref); + + if(!ref) { + if(This->sa) + SafeArrayUnlock(This->sa); + heap_free(This); + } + + return ref; +} + +static HRESULT WINAPI safearray_iter_IEnumVARIANT_Next(IEnumVARIANT *iface, + ULONG celt, VARIANT *rgVar, ULONG *pCeltFetched) +{ + safearray_iter *This = impl_from_IEnumVARIANT(iface); + HRESULT hres; + VARIANT *v; + + TRACE("(%p)->(%u %p %p)\n", This, celt, rgVar, pCeltFetched); + + if(celt != 1) { + FIXME("celt != 1\n"); + return E_NOTIMPL; + } + + if(This->i >= This->size) { + if(pCeltFetched) + *pCeltFetched = 0; + return S_FALSE; + } + + if(!This->sa->cLocks) + ERR("SAFEARRAY not locked\n"); + + v = (VARIANT*)(((BYTE*)This->sa->pvData) + This->i * This->sa->cbElements); + V_VT(rgVar) = VT_EMPTY; + hres = VariantCopy(rgVar, v); + if(FAILED(hres)) + return hres; + + This->i++; + if(pCeltFetched) + *pCeltFetched = 1; + return S_OK; +} + +static HRESULT WINAPI safearray_iter_IEnumVARIANT_Skip(IEnumVARIANT *iface, ULONG celt) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI safearray_iter_IEnumVARIANT_Reset(IEnumVARIANT *iface) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static HRESULT WINAPI safearray_iter_IEnumVARIANT_Clone( + IEnumVARIANT *iface, IEnumVARIANT **ppEnum) +{ + FIXME("\n"); + return E_NOTIMPL; +} + +static const IEnumVARIANTVtbl safearray_iter_EnumVARIANTVtbl = { + safearray_iter_IEnumVARIANT_QueryInterface, + safearray_iter_IEnumVARIANT_AddRef, + safearray_iter_IEnumVARIANT_Release, + safearray_iter_IEnumVARIANT_Next, + safearray_iter_IEnumVARIANT_Skip, + safearray_iter_IEnumVARIANT_Reset, + safearray_iter_IEnumVARIANT_Clone +}; + +static ULONG get_safearray_size(SAFEARRAY *sa) +{ + ULONG ret = 1; + USHORT i; + + if(!sa) + return 0; + + for(i=0; icDims && ret; i++) + ret *= sa->rgsabound[i].cElements; + return ret; +} + +HRESULT create_safearray_iter(SAFEARRAY *sa, IEnumVARIANT **ev) +{ + safearray_iter *iter; + HRESULT hres; + + if(sa && !(sa->fFeatures & FADF_VARIANT)) { + FIXME("enumeration not supported: %x\n", sa->fFeatures); + return E_NOTIMPL; + } + + iter = heap_alloc(sizeof(*iter)); + if(!iter) + return E_OUTOFMEMORY; + + if(sa) { + hres = SafeArrayLock(sa); + if(FAILED(hres)) { + heap_free(iter); + return hres; + } + } + + iter->IEnumVARIANT_iface.lpVtbl = &safearray_iter_EnumVARIANTVtbl; + iter->ref = 1; + iter->sa = sa; + iter->i = 0; + iter->size = get_safearray_size(sa); + + *ev = &iter->IEnumVARIANT_iface; + return S_OK; +} diff --git a/dll/win32/vbscript/vbdisp.c b/dll/win32/vbscript/vbdisp.c index 7e1f2472d4f..5a4b1f88063 100644 --- a/dll/win32/vbscript/vbdisp.c +++ b/dll/win32/vbscript/vbdisp.c @@ -549,7 +549,7 @@ static IDispatchExVtbl DispatchExVtbl = { static inline vbdisp_t *unsafe_impl_from_IDispatch(IDispatch *iface) { return iface->lpVtbl == (IDispatchVtbl*)&DispatchExVtbl - ? CONTAINING_RECORD((IDispatchEx *)iface, vbdisp_t, IDispatchEx_iface) + ? CONTAINING_RECORD(iface, vbdisp_t, IDispatchEx_iface) : NULL; } diff --git a/dll/win32/vbscript/vbscript.c b/dll/win32/vbscript/vbscript.c index 25be31a445c..1fc788117c8 100644 --- a/dll/win32/vbscript/vbscript.c +++ b/dll/win32/vbscript/vbscript.c @@ -345,6 +345,9 @@ static HRESULT WINAPI VBScript_SetScriptState(IActiveScript *iface, SCRIPTSTATE case SCRIPTSTATE_INITIALIZED: FIXME("unimplemented SCRIPTSTATE_INITIALIZED\n"); return S_OK; + case SCRIPTSTATE_DISCONNECTED: + FIXME("unimplemented SCRIPTSTATE_DISCONNECTED\n"); + return S_OK; default: FIXME("unimplemented state %d\n", ss); return E_NOTIMPL; diff --git a/dll/win32/vbscript/vbscript.h b/dll/win32/vbscript/vbscript.h index 070079eb711..5bb1577e4fa 100644 --- a/dll/win32/vbscript/vbscript.h +++ b/dll/win32/vbscript/vbscript.h @@ -402,6 +402,8 @@ HRESULT create_regexp(IDispatch**) DECLSPEC_HIDDEN; HRESULT map_hres(HRESULT) DECLSPEC_HIDDEN; +HRESULT create_safearray_iter(SAFEARRAY *sa, IEnumVARIANT **ev) DECLSPEC_HIDDEN; + #define FACILITY_VBS 0xa #define MAKE_VBSERROR(code) MAKE_HRESULT(SEVERITY_ERROR, FACILITY_VBS, code) diff --git a/media/doc/README.WINE b/media/doc/README.WINE index 14089f8b59d..a9f299e28c8 100644 --- a/media/doc/README.WINE +++ b/media/doc/README.WINE @@ -191,7 +191,7 @@ reactos/dll/win32/url # Synced to WineStaging-2.9 reactos/dll/win32/urlmon # Synced to Wine-3.0 reactos/dll/win32/usp10 # Synced to Wine-3.0 reactos/dll/win32/uxtheme # Forked -reactos/dll/win32/vbscript # Synced to WineStaging-2.9 +reactos/dll/win32/vbscript # Synced to Wine-3.0 reactos/dll/win32/version # Synced to WineStaging-2.9 reactos/dll/win32/vssapi # Synced to WineStaging-2.9 reactos/dll/win32/wbemdisp # Synced to WineStaging-2.16