https://git.reactos.org/?p=reactos.git;a=commitdiff;h=e0b80a0929ec41313ac65ce2cc844f0f8703feca

commit e0b80a0929ec41313ac65ce2cc844f0f8703feca
Author:     Amine Khaldi <[email protected]>
AuthorDate: Sat Jan 20 13:39:40 2018 +0100
Commit:     Amine Khaldi <[email protected]>
CommitDate: Sat Jan 20 13:39:40 2018 +0100

    [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       |   59 +-
 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, 973 insertions(+), 694 deletions(-)

diff --git a/dll/win32/vbscript/CMakeLists.txt 
b/dll/win32/vbscript/CMakeLists.txt
index 81ba90b372..99df1c3163 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 1534805259..16bd9bbd20 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; i<args_cnt; i++) {
+        hres = VariantCopyInd(data+i, arg+i);
+        if(FAILED(hres)) {
+            SafeArrayUnaccessData(sa);
+            SafeArrayDestroy(sa);
+            return hres;
+        }
+    }
+    SafeArrayUnaccessData(sa);
+
+    if(res) {
+        V_VT(res) = VT_ARRAY|VT_VARIANT;
+        V_ARRAY(res) = sa;
+    }else {
+        SafeArrayDestroy(sa);
+    }
+
+    return S_OK;
 }
 
 static HRESULT Global_Erase(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, 
VARIANT *res)
@@ -2213,7 +2281,7 @@ static const builtin_prop_t global_props[] = {
     {DISPID_GLOBAL_RND,                       Global_Rnd, 0, 1},
     {DISPID_GLOBAL_TIMER,                     Global_Timer, 0, 0},
     {DISPID_GLOBAL_LBOUND,                    Global_LBound, 0, 1},
-    {DISPID_GLOBAL_UBOUND,                    Global_UBound, 0, 1},
+    {DISPID_GLOBAL_UBOUND,                    Global_UBound, 0, 1, 2},
     {DISPID_GLOBAL_RGB,                       Global_RGB, 0, 3},
     {DISPID_GLOBAL_LEN,                       Global_Len, 0, 1},
     {DISPID_GLOBAL_LENB,                      Global_LenB, 0, 1},
@@ -2265,7 +2333,7 @@ static const builtin_prop_t global_props[] = {
     {DISPID_GLOBAL_DATEDIFF,                  Global_DateDiff, 0, 3, 5},
     {DISPID_GLOBAL_DATEPART,                  Global_DatePart, 0, 2, 4},
     {DISPID_GLOBAL_TYPENAME,                  Global_TypeName, 0, 1},
-    {DISPID_GLOBAL_ARRAY,                     Global_Array, 0, 1},
+    {DISPID_GLOBAL_ARRAY,                     Global_Array, 0, 0, MAXDWORD},
     {DISPID_GLOBAL_ERASE,                     Global_Erase, 0, 1},
     {DISPID_GLOBAL_FILTER,                    Global_Filter, 0, 2, 4},
     {DISPID_GLOBAL_JOIN,                      Global_Join, 0, 1, 2},
diff --git a/dll/win32/vbscript/interp.c b/dll/win32/vbscript/interp.c
index 9e30715915..56eaf9114f 100644
--- a/dll/win32/vbscript/interp.c
+++ b/dll/win32/vbscript/interp.c
@@ -475,10 +475,8 @@ static void vbstack_to_dp(exec_ctx_t *ctx, unsigned 
arg_cnt, BOOL is_propput, DI
 
 static HRESULT array_access(exec_ctx_t *ctx, SAFEARRAY *array, DISPPARAMS *dp, 
VARIANT **ret)
 {
-    unsigned cell_off = 0, dim_size = 1, i;
-    unsigned argc = arg_cnt(dp);
-    VARIANT *data;
-    LONG idx;
+    unsigned i, argc = arg_cnt(dp);
+    LONG *indices;
     HRESULT hres;
 
     if(!array) {
@@ -486,34 +484,35 @@ static HRESULT array_access(exec_ctx_t *ctx, SAFEARRAY 
*array, DISPPARAMS *dp, V
         return E_FAIL;
     }
 
+    hres = SafeArrayLock(array);
+    if(FAILED(hres))
+        return hres;
+
     if(array->cDims != argc) {
         FIXME("argc %d does not match cDims %d\n", dp->cArgs, array->cDims);
+        SafeArrayUnlock(array);
         return E_FAIL;
     }
 
-    for(i=0; i < argc; i++) {
-        hres = to_int(get_arg(dp, i), &idx);
-        if(FAILED(hres))
-            return hres;
+    indices = heap_alloc(sizeof(*indices) * argc);
+    if(!indices) {
+        SafeArrayUnlock(array);
+        return E_OUTOFMEMORY;
+    }
 
-        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;
+    for(i=0; i<argc; i++) {
+        hres = to_int(get_arg(dp, i), indices+i);
+        if(FAILED(hres)) {
+            heap_free(indices);
+            SafeArrayUnlock(array);
+            return hres;
         }
-
-        cell_off += idx*dim_size;
-        dim_size *= array->rgsabound[i].cElements;
     }
 
-    hres = SafeArrayAccessData(array, (void**)&data);
-    if(FAILED(hres))
-        return hres;
-
-    *ret = data+cell_off;
-
-    SafeArrayUnaccessData(array);
-    return S_OK;
+    hres = SafeArrayPtrOfIndex(array, indices, (void**)ret);
+    SafeArrayUnlock(array);
+    heap_free(indices);
+    return hres;
 }
 
 static HRESULT do_icall(exec_ctx_t *ctx, VARIANT *res)
@@ -1143,6 +1142,18 @@ static HRESULT interp_newenum(exec_ctx_t *ctx)
         V_UNKNOWN(r) = (IUnknown*)iter;
         break;
     }
+    case VT_VARIANT|VT_ARRAY:
+    case VT_VARIANT|VT_ARRAY|VT_BYREF: {
+        IEnumVARIANT *iter;
+
+        hres = create_safearray_iter(V_ISBYREF(v.v) ? *V_ARRAYREF(v.v) : 
V_ARRAY(v.v), &iter);
+        if(FAILED(hres))
+            return hres;
+
+        V_VT(r) = VT_UNKNOWN;
+        V_UNKNOWN(r) = (IUnknown*)iter;
+        break;
+    }
     default:
         FIXME("Unsupported for %s\n", debugstr_variant(v.v));
         release_val(&v);
@@ -1186,7 +1197,7 @@ static HRESULT interp_enumnext(exec_ctx_t *ctx)
     if(do_continue) {
         ctx->instr++;
     }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 1396fdcfed..39842e6bf5 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,
-      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,
-      -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,    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,    -1,    -1,    39,
+      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,    62,    63,    -1,    -1,    66,    -1,    -1,    -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,    -1,    36,
+      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,    -1,    -1,    63,    -1,    -1,    66,
-      -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    76
+      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
 };
 
   /* 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 6e55096456..513c2ef053 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 6b303eea35..34a07ad94b 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 0000000000..9444c4778f
--- /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; i<sa->cDims && 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 7e1f2472d4..5a4b1f8806 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 25be31a445..1fc788117c 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 070079eb71..5bb1577e4f 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 14089f8b59..a9f299e28c 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

Reply via email to