[WIDL]
authorAleksey Bragin <aleksey@reactos.org>
Thu, 4 Mar 2010 13:46:14 +0000 (13:46 +0000)
committerAleksey Bragin <aleksey@reactos.org>
Thu, 4 Mar 2010 13:46:14 +0000 (13:46 +0000)
- Sync to Wine-1.1.39

svn path=/trunk/; revision=45833

14 files changed:
reactos/media/doc/README.WINE
reactos/tools/widl/expr.c
reactos/tools/widl/header.c
reactos/tools/widl/header.h
reactos/tools/widl/parser.h
reactos/tools/widl/parser.l
reactos/tools/widl/parser.tab.c
reactos/tools/widl/parser.tab.h
reactos/tools/widl/parser.y
reactos/tools/widl/parser.yy.c
reactos/tools/widl/proxy.c
reactos/tools/widl/typegen.c
reactos/tools/widl/widl.c
reactos/tools/widl/widltypes.h

index 59e7c9f..729128b 100644 (file)
@@ -22,7 +22,7 @@ When porting a new DLL from Wine to ReactOS, please do the following steps
 The following build tools are shared with Wine.
 
 reactos/tools/unicode             # Synced to Wine-20081105 (~Wine-1.1.7)
-reactos/tools/widl                # Synced to Wine-1_1_32
+reactos/tools/widl                # Synced to Wine-1_1_39
 reactos/tools/winebuild           # Synced to Wine-1_1_13
 reactos/tools/wmc                 # Synced to Wine-20081105 (~Wine-1.1.7)
 reactos/tools/wpp                 # Synced to Wine-20081105 (~Wine-1.1.7)
index b528376..bca7c5a 100644 (file)
@@ -87,7 +87,9 @@ expr_t *make_exprs(enum expr_type type, char *val)
     e->u.sval = val;
     e->is_const = FALSE;
     /* check for predefined constants */
-    if (type == EXPR_IDENTIFIER)
+    switch (type)
+    {
+    case EXPR_IDENTIFIER:
     {
         var_t *c = find_const(val, 0);
         if (c)
@@ -97,6 +99,21 @@ expr_t *make_exprs(enum expr_type type, char *val)
             e->is_const = TRUE;
             e->cval = c->eval->cval;
         }
+        break;
+    }
+    case EXPR_CHARCONST:
+        if (!val[0])
+            error_loc("empty character constant\n");
+        else if (val[1])
+            error_loc("multi-character constants are endian dependent\n");
+        else
+        {
+            e->is_const = TRUE;
+            e->cval = *val;
+        }
+        break;
+    default:
+        break;
     }
     return e;
 }
@@ -457,6 +474,11 @@ static struct expression_type resolve_expression(const struct expr_loc *expr_loc
         result.is_temporary = TRUE;
         result.type = type_new_pointer(RPC_FC_UP, type_new_int(TYPE_BASIC_WCHAR, 0), NULL);
         break;
+    case EXPR_CHARCONST:
+        result.is_variable = FALSE;
+        result.is_temporary = TRUE;
+        result.type = type_new_int(TYPE_BASIC_CHAR, 0);
+        break;
     case EXPR_DOUBLE:
         result.is_variable = FALSE;
         result.is_temporary = TRUE;
@@ -655,6 +677,9 @@ void write_expr(FILE *h, const expr_t *e, int brackets,
     case EXPR_WSTRLIT:
         fprintf(h, "L\"%s\"", e->u.sval);
         break;
+    case EXPR_CHARCONST:
+        fprintf(h, "'%s'", e->u.sval);
+        break;
     case EXPR_LOGNOT:
         fprintf(h, "!");
         write_expr(h, e->ref, 1, toplevel, toplevel_prefix, cont_type, local_var_prefix);
@@ -804,6 +829,7 @@ int compare_expr(const expr_t *a, const expr_t *b)
         case EXPR_IDENTIFIER:
         case EXPR_STRLIT:
         case EXPR_WSTRLIT:
+        case EXPR_CHARCONST:
             return strcmp(a->u.sval, b->u.sval);
         case EXPR_COND:
             ret = compare_expr(a->ref, b->ref);
index e87a44e..5602b6d 100644 (file)
@@ -254,6 +254,7 @@ void write_type_left(FILE *h, type_t *t, int declonly)
         break;
       case TYPE_BASIC:
         if (type_basic_get_type(t) != TYPE_BASIC_INT32 &&
+            type_basic_get_type(t) != TYPE_BASIC_INT64 &&
             type_basic_get_type(t) != TYPE_BASIC_HYPER)
         {
           if (type_basic_get_sign(t) < 0) fprintf(h, "signed ");
@@ -264,7 +265,6 @@ void write_type_left(FILE *h, type_t *t, int declonly)
         case TYPE_BASIC_INT8: fprintf(h, "small"); break;
         case TYPE_BASIC_INT16: fprintf(h, "short"); break;
         case TYPE_BASIC_INT: fprintf(h, "int"); break;
-        case TYPE_BASIC_INT64: fprintf(h, "__int64"); break;
         case TYPE_BASIC_INT3264: fprintf(h, "__int3264"); break;
         case TYPE_BASIC_BYTE: fprintf(h, "byte"); break;
         case TYPE_BASIC_CHAR: fprintf(h, "char"); break;
@@ -279,6 +279,12 @@ void write_type_left(FILE *h, type_t *t, int declonly)
           else
             fprintf(h, "LONG");
           break;
+        case TYPE_BASIC_INT64:
+          if (type_basic_get_sign(t) > 0)
+            fprintf(h, "UINT64");
+          else
+            fprintf(h, "INT64");
+          break;
         case TYPE_BASIC_HYPER:
           if (type_basic_get_sign(t) > 0)
             fprintf(h, "MIDL_uhyper");
@@ -685,10 +691,12 @@ int has_out_arg_or_return(const var_t *func)
 
 /********** INTERFACES **********/
 
-int is_object(const attr_list_t *list)
+int is_object(const type_t *iface)
 {
     const attr_t *attr;
-    if (list) LIST_FOR_EACH_ENTRY( attr, list, const attr_t, entry )
+    if (type_is_defined(iface) && type_iface_get_inherit(iface))
+        return 1;
+    if (iface->attrs) LIST_FOR_EACH_ENTRY( attr, iface->attrs, const attr_t, entry )
         if (attr->type == ATTR_OBJECT || attr->type == ATTR_ODL) return 1;
     return 0;
 }
@@ -860,7 +868,7 @@ static void write_locals(FILE *fp, const type_t *iface, int body)
     = "/* WIDL-generated stub.  You must provide an implementation for this.  */";
   const statement_t *stmt;
 
-  if (!is_object(iface->attrs))
+  if (!is_object(iface))
     return;
 
   STATEMENTS_FOR_EACH_FUNC(stmt, type_iface_get_stmts(iface)) {
@@ -1174,7 +1182,7 @@ static void write_forward_decls(FILE *header, const statement_list_t *stmts)
       case STMT_TYPE:
         if (type_get_type(stmt->u.type) == TYPE_INTERFACE)
         {
-          if (is_object(stmt->u.type->attrs) || is_attr(stmt->u.type->attrs, ATTR_DISPINTERFACE))
+          if (is_object(stmt->u.type) || is_attr(stmt->u.type->attrs, ATTR_DISPINTERFACE))
             write_forward(header, stmt->u.type);
         }
         else if (type_get_type(stmt->u.type) == TYPE_COCLASS)
@@ -1209,7 +1217,7 @@ static void write_header_stmts(FILE *header, const statement_list_t *stmts, cons
         if (type_get_type(stmt->u.type) == TYPE_INTERFACE)
         {
           type_t *iface = stmt->u.type;
-          if (is_attr(stmt->u.type->attrs, ATTR_DISPINTERFACE) || is_object(stmt->u.type->attrs))
+          if (is_attr(stmt->u.type->attrs, ATTR_DISPINTERFACE) || is_object(stmt->u.type))
           {
             write_com_interface_start(header, iface);
             write_header_stmts(header, type_iface_get_stmts(iface), stmt->u.type, TRUE);
index d4b3b88..7d6c543 100644 (file)
@@ -38,7 +38,7 @@ extern void write_type_def_or_decl(FILE *h, type_t *t, int is_field, const char
 extern void write_type_decl(FILE *f, type_t *t, const char *name);
 extern void write_type_decl_left(FILE *f, type_t *t);
 extern int needs_space_after(type_t *t);
-extern int is_object(const attr_list_t *list);
+extern int is_object(const type_t *iface);
 extern int is_local(const attr_list_t *list);
 extern int need_stub(const type_t *iface);
 extern int need_proxy(const type_t *iface);
index 71f08dc..1bcc3c1 100644 (file)
@@ -45,4 +45,6 @@ void pop_import(void);
 
 int is_type(const char *name);
 
+extern char *temp_name;
+
 #endif
index f509cb1..0d231fc 100644 (file)
@@ -37,6 +37,7 @@ double        [0-9]+\.[0-9]+([eE][+-]?[0-9]+)*
 %x WSTRQUOTE
 %x ATTR
 %x PP_LINE
+%x SQUOTE
 
 %{
 
@@ -63,8 +64,6 @@ double        [0-9]+\.[0-9]+([eE][+-]?[0-9]+)*
 
 #include "parser.tab.h"
 
-extern char *temp_name;
-
 static void addcchar(char c);
 static char *get_buffered_cstring(void);
 
@@ -157,10 +156,17 @@ UUID *parse_uuid(const char *u)
                                parser_lval.str = get_buffered_cstring();
                                return aWSTRING;
                        }
-<QUOTE,WSTRQUOTE>\\\\  |
+<INITIAL,ATTR>\'       yy_push_state(SQUOTE); cbufidx = 0;
+<SQUOTE>\'             {
+                               yy_pop_state();
+                               parser_lval.str = get_buffered_cstring();
+                               return aSQSTRING;
+                       }
+<QUOTE,WSTRQUOTE,SQUOTE>\\\\   |
 <QUOTE,WSTRQUOTE>\\\"  addcchar(yytext[1]);
-<QUOTE,WSTRQUOTE>\\.   addcchar('\\'); addcchar(yytext[1]);
-<QUOTE,WSTRQUOTE>.     addcchar(yytext[0]);
+<SQUOTE>\\\'   addcchar(yytext[1]);
+<QUOTE,WSTRQUOTE,SQUOTE>\\.    addcchar('\\'); addcchar(yytext[1]);
+<QUOTE,WSTRQUOTE,SQUOTE>.      addcchar(yytext[0]);
 <INITIAL,ATTR>\[       yy_push_state(ATTR); return '[';
 <ATTR>\]               yy_pop_state(); return ']';
 <ATTR>{cident}         return attr_token(yytext);
index 198575f..cdb7eeb 100644 (file)
@@ -268,150 +268,151 @@ static statement_list_t *append_statement(statement_list_t *list, statement_t *s
      aDOUBLE = 262,
      aSTRING = 263,
      aWSTRING = 264,
-     aUUID = 265,
-     aEOF = 266,
-     SHL = 267,
-     SHR = 268,
-     MEMBERPTR = 269,
-     EQUALITY = 270,
-     INEQUALITY = 271,
-     GREATEREQUAL = 272,
-     LESSEQUAL = 273,
-     LOGICALOR = 274,
-     LOGICALAND = 275,
-     ELLIPSIS = 276,
-     tAGGREGATABLE = 277,
-     tALLOCATE = 278,
-     tANNOTATION = 279,
-     tAPPOBJECT = 280,
-     tASYNC = 281,
-     tASYNCUUID = 282,
-     tAUTOHANDLE = 283,
-     tBINDABLE = 284,
-     tBOOLEAN = 285,
-     tBROADCAST = 286,
-     tBYTE = 287,
-     tBYTECOUNT = 288,
-     tCALLAS = 289,
-     tCALLBACK = 290,
-     tCASE = 291,
-     tCDECL = 292,
-     tCHAR = 293,
-     tCOCLASS = 294,
-     tCODE = 295,
-     tCOMMSTATUS = 296,
-     tCONST = 297,
-     tCONTEXTHANDLE = 298,
-     tCONTEXTHANDLENOSERIALIZE = 299,
-     tCONTEXTHANDLESERIALIZE = 300,
-     tCONTROL = 301,
-     tCPPQUOTE = 302,
-     tDEFAULT = 303,
-     tDEFAULTCOLLELEM = 304,
-     tDEFAULTVALUE = 305,
-     tDEFAULTVTABLE = 306,
-     tDISPLAYBIND = 307,
-     tDISPINTERFACE = 308,
-     tDLLNAME = 309,
-     tDOUBLE = 310,
-     tDUAL = 311,
-     tENDPOINT = 312,
-     tENTRY = 313,
-     tENUM = 314,
-     tERRORSTATUST = 315,
-     tEXPLICITHANDLE = 316,
-     tEXTERN = 317,
-     tFALSE = 318,
-     tFASTCALL = 319,
-     tFLOAT = 320,
-     tHANDLE = 321,
-     tHANDLET = 322,
-     tHELPCONTEXT = 323,
-     tHELPFILE = 324,
-     tHELPSTRING = 325,
-     tHELPSTRINGCONTEXT = 326,
-     tHELPSTRINGDLL = 327,
-     tHIDDEN = 328,
-     tHYPER = 329,
-     tID = 330,
-     tIDEMPOTENT = 331,
-     tIIDIS = 332,
-     tIMMEDIATEBIND = 333,
-     tIMPLICITHANDLE = 334,
-     tIMPORT = 335,
-     tIMPORTLIB = 336,
-     tIN = 337,
-     tIN_LINE = 338,
-     tINLINE = 339,
-     tINPUTSYNC = 340,
-     tINT = 341,
-     tINT3264 = 342,
-     tINT64 = 343,
-     tINTERFACE = 344,
-     tLCID = 345,
-     tLENGTHIS = 346,
-     tLIBRARY = 347,
-     tLOCAL = 348,
-     tLONG = 349,
-     tMETHODS = 350,
-     tMODULE = 351,
-     tNONBROWSABLE = 352,
-     tNONCREATABLE = 353,
-     tNONEXTENSIBLE = 354,
-     tNULL = 355,
-     tOBJECT = 356,
-     tODL = 357,
-     tOLEAUTOMATION = 358,
-     tOPTIONAL = 359,
-     tOUT = 360,
-     tPASCAL = 361,
-     tPOINTERDEFAULT = 362,
-     tPROPERTIES = 363,
-     tPROPGET = 364,
-     tPROPPUT = 365,
-     tPROPPUTREF = 366,
-     tPTR = 367,
-     tPUBLIC = 368,
-     tRANGE = 369,
-     tREADONLY = 370,
-     tREF = 371,
-     tREGISTER = 372,
-     tREQUESTEDIT = 373,
-     tRESTRICTED = 374,
-     tRETVAL = 375,
-     tSAFEARRAY = 376,
-     tSHORT = 377,
-     tSIGNED = 378,
-     tSIZEIS = 379,
-     tSIZEOF = 380,
-     tSMALL = 381,
-     tSOURCE = 382,
-     tSTATIC = 383,
-     tSTDCALL = 384,
-     tSTRICTCONTEXTHANDLE = 385,
-     tSTRING = 386,
-     tSTRUCT = 387,
-     tSWITCH = 388,
-     tSWITCHIS = 389,
-     tSWITCHTYPE = 390,
-     tTRANSMITAS = 391,
-     tTRUE = 392,
-     tTYPEDEF = 393,
-     tUNION = 394,
-     tUNIQUE = 395,
-     tUNSIGNED = 396,
-     tUUID = 397,
-     tV1ENUM = 398,
-     tVARARG = 399,
-     tVERSION = 400,
-     tVOID = 401,
-     tWCHAR = 402,
-     tWIREMARSHAL = 403,
-     ADDRESSOF = 404,
-     NEG = 405,
-     POS = 406,
-     PPTR = 407,
-     CAST = 408
+     aSQSTRING = 265,
+     aUUID = 266,
+     aEOF = 267,
+     SHL = 268,
+     SHR = 269,
+     MEMBERPTR = 270,
+     EQUALITY = 271,
+     INEQUALITY = 272,
+     GREATEREQUAL = 273,
+     LESSEQUAL = 274,
+     LOGICALOR = 275,
+     LOGICALAND = 276,
+     ELLIPSIS = 277,
+     tAGGREGATABLE = 278,
+     tALLOCATE = 279,
+     tANNOTATION = 280,
+     tAPPOBJECT = 281,
+     tASYNC = 282,
+     tASYNCUUID = 283,
+     tAUTOHANDLE = 284,
+     tBINDABLE = 285,
+     tBOOLEAN = 286,
+     tBROADCAST = 287,
+     tBYTE = 288,
+     tBYTECOUNT = 289,
+     tCALLAS = 290,
+     tCALLBACK = 291,
+     tCASE = 292,
+     tCDECL = 293,
+     tCHAR = 294,
+     tCOCLASS = 295,
+     tCODE = 296,
+     tCOMMSTATUS = 297,
+     tCONST = 298,
+     tCONTEXTHANDLE = 299,
+     tCONTEXTHANDLENOSERIALIZE = 300,
+     tCONTEXTHANDLESERIALIZE = 301,
+     tCONTROL = 302,
+     tCPPQUOTE = 303,
+     tDEFAULT = 304,
+     tDEFAULTCOLLELEM = 305,
+     tDEFAULTVALUE = 306,
+     tDEFAULTVTABLE = 307,
+     tDISPLAYBIND = 308,
+     tDISPINTERFACE = 309,
+     tDLLNAME = 310,
+     tDOUBLE = 311,
+     tDUAL = 312,
+     tENDPOINT = 313,
+     tENTRY = 314,
+     tENUM = 315,
+     tERRORSTATUST = 316,
+     tEXPLICITHANDLE = 317,
+     tEXTERN = 318,
+     tFALSE = 319,
+     tFASTCALL = 320,
+     tFLOAT = 321,
+     tHANDLE = 322,
+     tHANDLET = 323,
+     tHELPCONTEXT = 324,
+     tHELPFILE = 325,
+     tHELPSTRING = 326,
+     tHELPSTRINGCONTEXT = 327,
+     tHELPSTRINGDLL = 328,
+     tHIDDEN = 329,
+     tHYPER = 330,
+     tID = 331,
+     tIDEMPOTENT = 332,
+     tIIDIS = 333,
+     tIMMEDIATEBIND = 334,
+     tIMPLICITHANDLE = 335,
+     tIMPORT = 336,
+     tIMPORTLIB = 337,
+     tIN = 338,
+     tIN_LINE = 339,
+     tINLINE = 340,
+     tINPUTSYNC = 341,
+     tINT = 342,
+     tINT3264 = 343,
+     tINT64 = 344,
+     tINTERFACE = 345,
+     tLCID = 346,
+     tLENGTHIS = 347,
+     tLIBRARY = 348,
+     tLOCAL = 349,
+     tLONG = 350,
+     tMETHODS = 351,
+     tMODULE = 352,
+     tNONBROWSABLE = 353,
+     tNONCREATABLE = 354,
+     tNONEXTENSIBLE = 355,
+     tNULL = 356,
+     tOBJECT = 357,
+     tODL = 358,
+     tOLEAUTOMATION = 359,
+     tOPTIONAL = 360,
+     tOUT = 361,
+     tPASCAL = 362,
+     tPOINTERDEFAULT = 363,
+     tPROPERTIES = 364,
+     tPROPGET = 365,
+     tPROPPUT = 366,
+     tPROPPUTREF = 367,
+     tPTR = 368,
+     tPUBLIC = 369,
+     tRANGE = 370,
+     tREADONLY = 371,
+     tREF = 372,
+     tREGISTER = 373,
+     tREQUESTEDIT = 374,
+     tRESTRICTED = 375,
+     tRETVAL = 376,
+     tSAFEARRAY = 377,
+     tSHORT = 378,
+     tSIGNED = 379,
+     tSIZEIS = 380,
+     tSIZEOF = 381,
+     tSMALL = 382,
+     tSOURCE = 383,
+     tSTATIC = 384,
+     tSTDCALL = 385,
+     tSTRICTCONTEXTHANDLE = 386,
+     tSTRING = 387,
+     tSTRUCT = 388,
+     tSWITCH = 389,
+     tSWITCHIS = 390,
+     tSWITCHTYPE = 391,
+     tTRANSMITAS = 392,
+     tTRUE = 393,
+     tTYPEDEF = 394,
+     tUNION = 395,
+     tUNIQUE = 396,
+     tUNSIGNED = 397,
+     tUUID = 398,
+     tV1ENUM = 399,
+     tVARARG = 400,
+     tVERSION = 401,
+     tVOID = 402,
+     tWCHAR = 403,
+     tWIREMARSHAL = 404,
+     ADDRESSOF = 405,
+     NEG = 406,
+     POS = 407,
+     PPTR = 408,
+     CAST = 409
    };
 #endif
 
@@ -454,7 +455,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 458 "parser.tab.c"
+#line 459 "parser.tab.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -466,7 +467,7 @@ typedef union YYSTYPE
 
 
 /* Line 264 of yacc.c  */
-#line 470 "parser.tab.c"
+#line 471 "parser.tab.c"
 
 #ifdef short
 # undef short
@@ -681,20 +682,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2392
+#define YYLAST   2343
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  178
+#define YYNTOKENS  179
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  99
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  344
+#define YYNRULES  345
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  606
+#define YYNSTATES  607
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   408
+#define YYMAXUTOK   409
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -705,16 +706,16 @@ static const yytype_uint8 yytranslate[] =
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   162,     2,     2,     2,   161,   154,     2,
-     173,   174,   159,   158,   149,   157,   169,   160,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   151,   172,
-     155,   177,   156,   150,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   163,     2,     2,     2,   162,   155,     2,
+     174,   175,   160,   159,   150,   158,   170,   161,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   152,   173,
+     156,   178,   157,   151,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   170,     2,   171,   153,     2,     2,     2,     2,     2,
+       2,   171,     2,   172,   154,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   175,   152,   176,   163,     2,     2,     2,
+       2,     2,     2,   176,   153,   177,   164,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -742,7 +743,7 @@ static const yytype_uint8 yytranslate[] =
      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   164,   165,   166,   167,   168
+     145,   146,   147,   148,   149,   165,   166,   167,   168,   169
 };
 
 #if YYDEBUG
@@ -766,135 +767,135 @@ static const yytype_uint16 yyprhs[] =
      388,   393,   398,   400,   402,   404,   406,   408,   410,   412,
      413,   416,   421,   425,   426,   429,   431,   433,   437,   441,
      443,   449,   451,   455,   456,   458,   460,   462,   464,   466,
-     468,   470,   472,   474,   476,   482,   486,   490,   494,   498,
-     502,   506,   510,   514,   518,   522,   526,   530,   534,   538,
-     542,   546,   550,   554,   557,   560,   563,   566,   569,   572,
-     576,   580,   586,   592,   597,   601,   603,   607,   609,   611,
-     612,   615,   620,   624,   627,   630,   631,   634,   637,   639,
-     643,   647,   651,   654,   655,   657,   658,   660,   662,   664,
-     666,   668,   670,   672,   675,   678,   680,   682,   684,   686,
-     688,   690,   691,   693,   695,   698,   700,   703,   706,   708,
-     710,   712,   715,   718,   721,   727,   728,   731,   734,   737,
-     740,   743,   746,   750,   753,   757,   763,   769,   770,   773,
-     776,   779,   782,   789,   798,   801,   804,   807,   810,   813,
-     816,   822,   824,   826,   828,   830,   832,   833,   836,   839,
-     843,   844,   846,   849,   852,   855,   859,   862,   864,   866,
-     870,   873,   878,   882,   885,   887,   891,   894,   895,   897,
-     901,   904,   906,   910,   915,   919,   922,   924,   928,   931,
-     932,   934,   936,   940,   943,   945,   949,   954,   956,   960,
-     961,   964,   967,   969,   973,   975,   979,   981,   983,   985,
-     991,   993,   995,   997,   999,  1002,  1004,  1007,  1009,  1012,
-    1017,  1022,  1028,  1039,  1041
+     468,   470,   472,   474,   476,   478,   484,   488,   492,   496,
+     500,   504,   508,   512,   516,   520,   524,   528,   532,   536,
+     540,   544,   548,   552,   556,   559,   562,   565,   568,   571,
+     574,   578,   582,   588,   594,   599,   603,   605,   609,   611,
+     613,   614,   617,   622,   626,   629,   632,   633,   636,   639,
+     641,   645,   649,   653,   656,   657,   659,   660,   662,   664,
+     666,   668,   670,   672,   674,   677,   680,   682,   684,   686,
+     688,   690,   692,   693,   695,   697,   700,   702,   705,   708,
+     710,   712,   714,   717,   720,   723,   729,   730,   733,   736,
+     739,   742,   745,   748,   752,   755,   759,   765,   771,   772,
+     775,   778,   781,   784,   791,   800,   803,   806,   809,   812,
+     815,   818,   824,   826,   828,   830,   832,   834,   835,   838,
+     841,   845,   846,   848,   851,   854,   857,   861,   864,   866,
+     868,   872,   875,   880,   884,   887,   889,   893,   896,   897,
+     899,   903,   906,   908,   912,   917,   921,   924,   926,   930,
+     933,   934,   936,   938,   942,   945,   947,   951,   956,   958,
+     962,   963,   966,   969,   971,   975,   977,   981,   983,   985,
+     987,   993,   995,   997,   999,  1001,  1004,  1006,  1009,  1011,
+    1014,  1019,  1024,  1030,  1041,  1043
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     179,     0,    -1,   180,    -1,    -1,   180,   245,    -1,   180,
-     244,    -1,   180,   231,   172,    -1,   180,   233,    -1,   180,
-     248,    -1,   180,   192,    -1,   180,   184,    -1,    -1,   181,
-     245,    -1,   181,   244,    -1,   181,   231,   172,    -1,   181,
-     233,    -1,   181,   248,    -1,   181,   184,    -1,   181,   189,
-      -1,   181,   192,    -1,    -1,   182,   184,    -1,    -1,   172,
-      -1,   186,    -1,   185,   172,    -1,   224,   172,    -1,   188,
-      -1,   274,   172,    -1,   210,    -1,   272,    -1,   275,    -1,
-     199,   210,    -1,   199,   272,    -1,   199,   275,    -1,    47,
-     173,     8,   174,    -1,    80,     8,   172,    -1,   187,   181,
-      11,    -1,    81,   173,     8,   174,   183,    -1,    92,     3,
-      -1,   199,   190,   175,    -1,   191,   181,   176,   183,    -1,
-      -1,   195,    -1,   196,    -1,   194,   149,   196,    -1,   194,
-      -1,   194,   149,    21,    -1,   199,   253,   264,    -1,   253,
-     264,    -1,   170,   212,   171,    -1,   170,   159,   171,    -1,
-      -1,   199,    -1,   170,   200,   171,    -1,   202,    -1,   200,
-     149,   202,    -1,   200,   171,   170,   202,    -1,     8,    -1,
-     201,   149,     8,    -1,    -1,    22,    -1,    24,   173,     8,
-     174,    -1,    25,    -1,    26,    -1,    28,    -1,    29,    -1,
-      31,    -1,    34,   173,   227,   174,    -1,    36,   173,   214,
-     174,    -1,    43,    -1,    44,    -1,    45,    -1,    46,    -1,
-      48,    -1,    49,    -1,    50,   173,   216,   174,    -1,    51,
-      -1,    52,    -1,    54,   173,     8,   174,    -1,    56,    -1,
-      57,   173,   201,   174,    -1,    58,   173,   216,   174,    -1,
-      61,    -1,    66,    -1,    68,   173,   215,   174,    -1,    69,
-     173,     8,   174,    -1,    70,   173,     8,   174,    -1,    71,
-     173,   215,   174,    -1,    72,   173,     8,   174,    -1,    73,
-      -1,    75,   173,   215,   174,    -1,    76,    -1,    77,   173,
-     213,   174,    -1,    78,    -1,    79,   173,    67,     3,   174,
-      -1,    82,    -1,    85,    -1,    91,   173,   211,   174,    -1,
-      90,   173,   215,   174,    -1,    90,    -1,    93,    -1,    97,
-      -1,    98,    -1,    99,    -1,   101,    -1,   102,    -1,   103,
-      -1,   104,    -1,   105,    -1,   107,   173,   271,   174,    -1,
-     109,    -1,   110,    -1,   111,    -1,   113,    -1,   114,   173,
-     215,   149,   215,   174,    -1,   115,    -1,   118,    -1,   119,
-      -1,   120,    -1,   124,   173,   211,   174,    -1,   127,    -1,
-     130,    -1,   131,    -1,   134,   173,   213,   174,    -1,   135,
-     173,   273,   174,    -1,   136,   173,   273,   174,    -1,   142,
-     173,   203,   174,    -1,   143,    -1,   144,    -1,   145,   173,
-     276,   174,    -1,   148,   173,   273,   174,    -1,   271,    -1,
-      10,    -1,     8,    -1,    37,    -1,    64,    -1,   106,    -1,
-     129,    -1,    -1,   205,   206,    -1,    36,   215,   151,   221,
-      -1,    48,   151,   221,    -1,    -1,   208,   149,    -1,   208,
-      -1,   209,    -1,   208,   149,   209,    -1,   227,   177,   215,
-      -1,   227,    -1,    59,   226,   175,   207,   176,    -1,   212,
-      -1,   211,   149,   212,    -1,    -1,   213,    -1,     5,    -1,
-       6,    -1,     7,    -1,    63,    -1,   100,    -1,   137,    -1,
-       8,    -1,     9,    -1,     3,    -1,   213,   150,   213,   151,
-     213,    -1,   213,    19,   213,    -1,   213,    20,   213,    -1,
-     213,   152,   213,    -1,   213,   153,   213,    -1,   213,   154,
-     213,    -1,   213,    15,   213,    -1,   213,    16,   213,    -1,
-     213,   156,   213,    -1,   213,   155,   213,    -1,   213,    17,
-     213,    -1,   213,    18,   213,    -1,   213,    12,   213,    -1,
-     213,    13,   213,    -1,   213,   158,   213,    -1,   213,   157,
-     213,    -1,   213,   161,   213,    -1,   213,   159,   213,    -1,
-     213,   160,   213,    -1,   162,   213,    -1,   163,   213,    -1,
-     158,   213,    -1,   157,   213,    -1,   154,   213,    -1,   159,
-     213,    -1,   213,    14,     3,    -1,   213,   169,     3,    -1,
-     173,   253,   260,   174,   213,    -1,   125,   173,   253,   260,
-     174,    -1,   213,   170,   213,   171,    -1,   173,   213,   174,
-      -1,   215,    -1,   214,   149,   215,    -1,   213,    -1,   213,
-      -1,    -1,   217,   218,    -1,   198,   253,   269,   172,    -1,
-     198,   275,   172,    -1,   222,   172,    -1,   199,   172,    -1,
-      -1,   220,   219,    -1,   222,   172,    -1,   172,    -1,   198,
-     253,   256,    -1,   198,   253,   256,    -1,   199,   253,   270,
-      -1,   253,   270,    -1,    -1,   227,    -1,    -1,     3,    -1,
-       4,    -1,     3,    -1,     4,    -1,    32,    -1,   147,    -1,
-     230,    -1,   123,   230,    -1,   141,   230,    -1,   141,    -1,
-      65,    -1,    55,    -1,    30,    -1,    60,    -1,    67,    -1,
-      -1,    86,    -1,    86,    -1,   122,   229,    -1,   126,    -1,
-      94,   229,    -1,    74,   229,    -1,    88,    -1,    38,    -1,
-      87,    -1,    39,     3,    -1,    39,     4,    -1,   199,   231,
-      -1,   232,   175,   234,   176,   183,    -1,    -1,   234,   235,
-      -1,   198,   245,    -1,    53,     3,    -1,    53,     4,    -1,
-     199,   236,    -1,   108,   151,    -1,   238,   222,   172,    -1,
-      95,   151,    -1,   239,   223,   172,    -1,   237,   175,   238,
-     239,   176,    -1,   237,   175,   242,   172,   176,    -1,    -1,
-     151,     4,    -1,    89,     3,    -1,    89,     4,    -1,   199,
-     242,    -1,   243,   241,   175,   182,   176,   183,    -1,   243,
-     151,     3,   175,   188,   182,   176,   183,    -1,   240,   183,
-      -1,   242,   172,    -1,   236,   172,    -1,    96,     3,    -1,
-      96,     4,    -1,   199,   246,    -1,   247,   175,   182,   176,
-     183,    -1,    62,    -1,   128,    -1,   117,    -1,    84,    -1,
-      42,    -1,    -1,   252,   251,    -1,   273,   254,    -1,   255,
-     273,   254,    -1,    -1,   255,    -1,   251,   254,    -1,   250,
-     254,    -1,   249,   254,    -1,   159,   252,   256,    -1,   204,
-     256,    -1,   257,    -1,   227,    -1,   173,   256,   174,    -1,
-     257,   197,    -1,   257,   173,   193,   174,    -1,   159,   252,
-     260,    -1,   204,   260,    -1,   261,    -1,   159,   252,   264,
-      -1,   204,   264,    -1,    -1,   258,    -1,   173,   259,   174,
-      -1,   261,   197,    -1,   197,    -1,   173,   193,   174,    -1,
-     261,   173,   193,   174,    -1,   159,   252,   264,    -1,   204,
-     264,    -1,   265,    -1,   159,   252,   264,    -1,   204,   264,
-      -1,    -1,   262,    -1,   227,    -1,   173,   263,   174,    -1,
-     265,   197,    -1,   197,    -1,   173,   193,   174,    -1,   265,
-     173,   193,   174,    -1,   256,    -1,   266,   149,   256,    -1,
-      -1,   151,   216,    -1,   262,   267,    -1,   268,    -1,   269,
-     149,   268,    -1,   256,    -1,   256,   177,   216,    -1,   116,
-      -1,   140,    -1,   112,    -1,   132,   226,   175,   217,   176,
-      -1,   146,    -1,     4,    -1,   228,    -1,   210,    -1,    59,
-       3,    -1,   272,    -1,   132,     3,    -1,   275,    -1,   139,
-       3,    -1,   121,   173,   273,   174,    -1,   138,   198,   253,
-     266,    -1,   139,   226,   175,   220,   176,    -1,   139,   226,
-     133,   173,   222,   174,   225,   175,   205,   176,    -1,     5,
-      -1,     5,   169,     5,    -1
+     180,     0,    -1,   181,    -1,    -1,   181,   246,    -1,   181,
+     245,    -1,   181,   232,   173,    -1,   181,   234,    -1,   181,
+     249,    -1,   181,   193,    -1,   181,   185,    -1,    -1,   182,
+     246,    -1,   182,   245,    -1,   182,   232,   173,    -1,   182,
+     234,    -1,   182,   249,    -1,   182,   185,    -1,   182,   190,
+      -1,   182,   193,    -1,    -1,   183,   185,    -1,    -1,   173,
+      -1,   187,    -1,   186,   173,    -1,   225,   173,    -1,   189,
+      -1,   275,   173,    -1,   211,    -1,   273,    -1,   276,    -1,
+     200,   211,    -1,   200,   273,    -1,   200,   276,    -1,    48,
+     174,     8,   175,    -1,    81,     8,   173,    -1,   188,   182,
+      12,    -1,    82,   174,     8,   175,   184,    -1,    93,     3,
+      -1,   200,   191,   176,    -1,   192,   182,   177,   184,    -1,
+      -1,   196,    -1,   197,    -1,   195,   150,   197,    -1,   195,
+      -1,   195,   150,    22,    -1,   200,   254,   265,    -1,   254,
+     265,    -1,   171,   213,   172,    -1,   171,   160,   172,    -1,
+      -1,   200,    -1,   171,   201,   172,    -1,   203,    -1,   201,
+     150,   203,    -1,   201,   172,   171,   203,    -1,     8,    -1,
+     202,   150,     8,    -1,    -1,    23,    -1,    25,   174,     8,
+     175,    -1,    26,    -1,    27,    -1,    29,    -1,    30,    -1,
+      32,    -1,    35,   174,   228,   175,    -1,    37,   174,   215,
+     175,    -1,    44,    -1,    45,    -1,    46,    -1,    47,    -1,
+      49,    -1,    50,    -1,    51,   174,   217,   175,    -1,    52,
+      -1,    53,    -1,    55,   174,     8,   175,    -1,    57,    -1,
+      58,   174,   202,   175,    -1,    59,   174,   217,   175,    -1,
+      62,    -1,    67,    -1,    69,   174,   216,   175,    -1,    70,
+     174,     8,   175,    -1,    71,   174,     8,   175,    -1,    72,
+     174,   216,   175,    -1,    73,   174,     8,   175,    -1,    74,
+      -1,    76,   174,   216,   175,    -1,    77,    -1,    78,   174,
+     214,   175,    -1,    79,    -1,    80,   174,    68,     3,   175,
+      -1,    83,    -1,    86,    -1,    92,   174,   212,   175,    -1,
+      91,   174,   216,   175,    -1,    91,    -1,    94,    -1,    98,
+      -1,    99,    -1,   100,    -1,   102,    -1,   103,    -1,   104,
+      -1,   105,    -1,   106,    -1,   108,   174,   272,   175,    -1,
+     110,    -1,   111,    -1,   112,    -1,   114,    -1,   115,   174,
+     216,   150,   216,   175,    -1,   116,    -1,   119,    -1,   120,
+      -1,   121,    -1,   125,   174,   212,   175,    -1,   128,    -1,
+     131,    -1,   132,    -1,   135,   174,   214,   175,    -1,   136,
+     174,   274,   175,    -1,   137,   174,   274,   175,    -1,   143,
+     174,   204,   175,    -1,   144,    -1,   145,    -1,   146,   174,
+     277,   175,    -1,   149,   174,   274,   175,    -1,   272,    -1,
+      11,    -1,     8,    -1,    38,    -1,    65,    -1,   107,    -1,
+     130,    -1,    -1,   206,   207,    -1,    37,   216,   152,   222,
+      -1,    49,   152,   222,    -1,    -1,   209,   150,    -1,   209,
+      -1,   210,    -1,   209,   150,   210,    -1,   228,   178,   216,
+      -1,   228,    -1,    60,   227,   176,   208,   177,    -1,   213,
+      -1,   212,   150,   213,    -1,    -1,   214,    -1,     5,    -1,
+       6,    -1,     7,    -1,    64,    -1,   101,    -1,   138,    -1,
+       8,    -1,     9,    -1,    10,    -1,     3,    -1,   214,   151,
+     214,   152,   214,    -1,   214,    20,   214,    -1,   214,    21,
+     214,    -1,   214,   153,   214,    -1,   214,   154,   214,    -1,
+     214,   155,   214,    -1,   214,    16,   214,    -1,   214,    17,
+     214,    -1,   214,   157,   214,    -1,   214,   156,   214,    -1,
+     214,    18,   214,    -1,   214,    19,   214,    -1,   214,    13,
+     214,    -1,   214,    14,   214,    -1,   214,   159,   214,    -1,
+     214,   158,   214,    -1,   214,   162,   214,    -1,   214,   160,
+     214,    -1,   214,   161,   214,    -1,   163,   214,    -1,   164,
+     214,    -1,   159,   214,    -1,   158,   214,    -1,   155,   214,
+      -1,   160,   214,    -1,   214,    15,     3,    -1,   214,   170,
+       3,    -1,   174,   254,   261,   175,   214,    -1,   126,   174,
+     254,   261,   175,    -1,   214,   171,   214,   172,    -1,   174,
+     214,   175,    -1,   216,    -1,   215,   150,   216,    -1,   214,
+      -1,   214,    -1,    -1,   218,   219,    -1,   199,   254,   270,
+     173,    -1,   199,   276,   173,    -1,   223,   173,    -1,   200,
+     173,    -1,    -1,   221,   220,    -1,   223,   173,    -1,   173,
+      -1,   199,   254,   257,    -1,   199,   254,   257,    -1,   200,
+     254,   271,    -1,   254,   271,    -1,    -1,   228,    -1,    -1,
+       3,    -1,     4,    -1,     3,    -1,     4,    -1,    33,    -1,
+     148,    -1,   231,    -1,   124,   231,    -1,   142,   231,    -1,
+     142,    -1,    66,    -1,    56,    -1,    31,    -1,    61,    -1,
+      68,    -1,    -1,    87,    -1,    87,    -1,   123,   230,    -1,
+     127,    -1,    95,   230,    -1,    75,   230,    -1,    89,    -1,
+      39,    -1,    88,    -1,    40,     3,    -1,    40,     4,    -1,
+     200,   232,    -1,   233,   176,   235,   177,   184,    -1,    -1,
+     235,   236,    -1,   199,   246,    -1,    54,     3,    -1,    54,
+       4,    -1,   200,   237,    -1,   109,   152,    -1,   239,   223,
+     173,    -1,    96,   152,    -1,   240,   224,   173,    -1,   238,
+     176,   239,   240,   177,    -1,   238,   176,   243,   173,   177,
+      -1,    -1,   152,     4,    -1,    90,     3,    -1,    90,     4,
+      -1,   200,   243,    -1,   244,   242,   176,   183,   177,   184,
+      -1,   244,   152,     3,   176,   189,   183,   177,   184,    -1,
+     241,   184,    -1,   243,   173,    -1,   237,   173,    -1,    97,
+       3,    -1,    97,     4,    -1,   200,   247,    -1,   248,   176,
+     183,   177,   184,    -1,    63,    -1,   129,    -1,   118,    -1,
+      85,    -1,    43,    -1,    -1,   253,   252,    -1,   274,   255,
+      -1,   256,   274,   255,    -1,    -1,   256,    -1,   252,   255,
+      -1,   251,   255,    -1,   250,   255,    -1,   160,   253,   257,
+      -1,   205,   257,    -1,   258,    -1,   228,    -1,   174,   257,
+     175,    -1,   258,   198,    -1,   258,   174,   194,   175,    -1,
+     160,   253,   261,    -1,   205,   261,    -1,   262,    -1,   160,
+     253,   265,    -1,   205,   265,    -1,    -1,   259,    -1,   174,
+     260,   175,    -1,   262,   198,    -1,   198,    -1,   174,   194,
+     175,    -1,   262,   174,   194,   175,    -1,   160,   253,   265,
+      -1,   205,   265,    -1,   266,    -1,   160,   253,   265,    -1,
+     205,   265,    -1,    -1,   263,    -1,   228,    -1,   174,   264,
+     175,    -1,   266,   198,    -1,   198,    -1,   174,   194,   175,
+      -1,   266,   174,   194,   175,    -1,   257,    -1,   267,   150,
+     257,    -1,    -1,   152,   217,    -1,   263,   268,    -1,   269,
+      -1,   270,   150,   269,    -1,   257,    -1,   257,   178,   217,
+      -1,   117,    -1,   141,    -1,   113,    -1,   133,   227,   176,
+     218,   177,    -1,   147,    -1,     4,    -1,   229,    -1,   211,
+      -1,    60,     3,    -1,   273,    -1,   133,     3,    -1,   276,
+      -1,   140,     3,    -1,   122,   174,   274,   175,    -1,   139,
+     199,   254,   267,    -1,   140,   227,   176,   221,   177,    -1,
+     140,   227,   134,   174,   223,   175,   226,   176,   206,   177,
+      -1,     5,    -1,     5,   170,     5,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -919,22 +920,22 @@ static const yytype_uint16 yyrline[] =
      632,   633,   634,   635,   636,   637,   638,   639,   640,   641,
      642,   643,   644,   645,   646,   647,   648,   649,   650,   651,
      652,   653,   654,   655,   656,   657,   658,   659,   660,   661,
-     662,   663,   665,   667,   668,   671,   672,   675,   681,   687,
-     688,   691,   696,   703,   704,   707,   708,   712,   713,   716,
-     723,   732,   736,   741,   742,   745,   746,   747,   750,   752,
-     755,   756,   757,   758,   759,   760,   761,   762,   763,   764,
-     765,   768,   769,   772,   773,   774,   775,   776,   777,   778,
-     779,   782,   783,   791,   797,   801,   802,   806,   809,   810,
-     813,   823,   824,   827,   828,   831,   837,   843,   844,   847,
-     848,   851,   862,   869,   875,   879,   880,   883,   884,   887,
-     892,   899,   900,   901,   905,   909,   912,   913,   916,   917,
-     921,   922,   926,   927,   928,   932,   934,   935,   939,   940,
-     941,   942,   950,   952,   953,   958,   960,   964,   965,   970,
-     971,   972,   973,   978,   987,   989,   990,   995,   997,  1001,
-    1002,  1009,  1010,  1011,  1012,  1013,  1018,  1026,  1027,  1030,
-    1031,  1034,  1041,  1042,  1047,  1048,  1052,  1053,  1054,  1057,
-    1060,  1061,  1062,  1063,  1064,  1065,  1066,  1067,  1068,  1069,
-    1072,  1078,  1080,  1086,  1087
+     662,   663,   664,   666,   668,   669,   672,   673,   676,   682,
+     688,   689,   692,   697,   704,   705,   708,   709,   713,   714,
+     717,   724,   733,   737,   742,   743,   746,   747,   748,   751,
+     753,   756,   757,   758,   759,   760,   761,   762,   763,   764,
+     765,   766,   769,   770,   773,   774,   775,   776,   777,   778,
+     779,   780,   783,   784,   792,   798,   802,   803,   807,   810,
+     811,   814,   824,   825,   828,   829,   832,   838,   844,   845,
+     848,   849,   852,   863,   870,   876,   880,   881,   884,   885,
+     888,   893,   900,   901,   902,   906,   910,   913,   914,   917,
+     918,   922,   923,   927,   928,   929,   933,   935,   936,   940,
+     941,   942,   943,   951,   953,   954,   959,   961,   965,   966,
+     971,   972,   973,   974,   979,   988,   990,   991,   996,   998,
+    1002,  1003,  1010,  1011,  1012,  1013,  1014,  1019,  1027,  1028,
+    1031,  1032,  1035,  1042,  1043,  1048,  1049,  1053,  1054,  1055,
+    1058,  1061,  1062,  1063,  1064,  1065,  1066,  1067,  1068,  1069,
+    1070,  1073,  1079,  1081,  1087,  1088
 };
 #endif
 
@@ -944,13 +945,13 @@ static const yytype_uint16 yyrline[] =
 static const char *const yytname[] =
 {
   "$end", "error", "$undefined", "aIDENTIFIER", "aKNOWNTYPE", "aNUM",
-  "aHEXNUM", "aDOUBLE", "aSTRING", "aWSTRING", "aUUID", "aEOF", "SHL",
-  "SHR", "MEMBERPTR", "EQUALITY", "INEQUALITY", "GREATEREQUAL",
-  "LESSEQUAL", "LOGICALOR", "LOGICALAND", "ELLIPSIS", "tAGGREGATABLE",
-  "tALLOCATE", "tANNOTATION", "tAPPOBJECT", "tASYNC", "tASYNCUUID",
-  "tAUTOHANDLE", "tBINDABLE", "tBOOLEAN", "tBROADCAST", "tBYTE",
-  "tBYTECOUNT", "tCALLAS", "tCALLBACK", "tCASE", "tCDECL", "tCHAR",
-  "tCOCLASS", "tCODE", "tCOMMSTATUS", "tCONST", "tCONTEXTHANDLE",
+  "aHEXNUM", "aDOUBLE", "aSTRING", "aWSTRING", "aSQSTRING", "aUUID",
+  "aEOF", "SHL", "SHR", "MEMBERPTR", "EQUALITY", "INEQUALITY",
+  "GREATEREQUAL", "LESSEQUAL", "LOGICALOR", "LOGICALAND", "ELLIPSIS",
+  "tAGGREGATABLE", "tALLOCATE", "tANNOTATION", "tAPPOBJECT", "tASYNC",
+  "tASYNCUUID", "tAUTOHANDLE", "tBINDABLE", "tBOOLEAN", "tBROADCAST",
+  "tBYTE", "tBYTECOUNT", "tCALLAS", "tCALLBACK", "tCASE", "tCDECL",
+  "tCHAR", "tCOCLASS", "tCODE", "tCOMMSTATUS", "tCONST", "tCONTEXTHANDLE",
   "tCONTEXTHANDLENOSERIALIZE", "tCONTEXTHANDLESERIALIZE", "tCONTROL",
   "tCPPQUOTE", "tDEFAULT", "tDEFAULTCOLLELEM", "tDEFAULTVALUE",
   "tDEFAULTVTABLE", "tDISPLAYBIND", "tDISPINTERFACE", "tDLLNAME",
@@ -1019,51 +1020,51 @@ static const yytype_uint16 yytoknum[] =
      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
      385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
-     395,   396,   397,   398,   399,   400,   401,   402,   403,    44,
-      63,    58,   124,    94,    38,    60,    62,    45,    43,    42,
-      47,    37,    33,   126,   404,   405,   406,   407,   408,    46,
-      91,    93,    59,    40,    41,   123,   125,    61
+     395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
+      44,    63,    58,   124,    94,    38,    60,    62,    45,    43,
+      42,    47,    37,    33,   126,   405,   406,   407,   408,   409,
+      46,    91,    93,    59,    40,    41,   123,   125,    61
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   178,   179,   180,   180,   180,   180,   180,   180,   180,
-     180,   181,   181,   181,   181,   181,   181,   181,   181,   181,
-     182,   182,   183,   183,   184,   184,   184,   184,   184,   185,
-     185,   185,   185,   185,   185,   186,   187,   188,   189,   190,
-     191,   192,   193,   193,   194,   194,   195,   195,   196,   196,
-     197,   197,   198,   198,   199,   200,   200,   200,   201,   201,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   203,   203,   204,   204,   204,   204,   205,
-     205,   206,   206,   207,   207,   207,   208,   208,   209,   209,
-     210,   211,   211,   212,   212,   213,   213,   213,   213,   213,
-     213,   213,   213,   213,   213,   213,   213,   213,   213,   213,
-     213,   213,   213,   213,   213,   213,   213,   213,   213,   213,
-     213,   213,   213,   213,   213,   213,   213,   213,   213,   213,
-     213,   213,   213,   213,   213,   214,   214,   215,   216,   217,
-     217,   218,   218,   219,   219,   220,   220,   221,   221,   222,
-     223,   224,   224,   225,   225,   226,   226,   226,   227,   227,
-     228,   228,   228,   228,   228,   228,   228,   228,   228,   228,
-     228,   229,   229,   230,   230,   230,   230,   230,   230,   230,
-     230,   231,   231,   232,   233,   234,   234,   235,   236,   236,
-     237,   238,   238,   239,   239,   240,   240,   241,   241,   242,
-     242,   243,   244,   244,   244,   245,   245,   246,   246,   247,
-     248,   249,   249,   249,   250,   251,   252,   252,   253,   253,
-     254,   254,   255,   255,   255,   256,   256,   256,   257,   257,
-     257,   257,   258,   258,   258,   259,   259,   260,   260,   261,
-     261,   261,   261,   261,   262,   262,   262,   263,   263,   264,
-     264,   265,   265,   265,   265,   265,   265,   266,   266,   267,
-     267,   268,   269,   269,   270,   270,   271,   271,   271,   272,
-     273,   273,   273,   273,   273,   273,   273,   273,   273,   273,
-     274,   275,   275,   276,   276
+       0,   179,   180,   181,   181,   181,   181,   181,   181,   181,
+     181,   182,   182,   182,   182,   182,   182,   182,   182,   182,
+     183,   183,   184,   184,   185,   185,   185,   185,   185,   186,
+     186,   186,   186,   186,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   194,   195,   195,   196,   196,   197,   197,
+     198,   198,   199,   199,   200,   201,   201,   201,   202,   202,
+     203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
+     203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
+     203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
+     203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
+     203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
+     203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
+     203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
+     203,   203,   203,   204,   204,   205,   205,   205,   205,   206,
+     206,   207,   207,   208,   208,   208,   209,   209,   210,   210,
+     211,   212,   212,   213,   213,   214,   214,   214,   214,   214,
+     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
+     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
+     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
+     214,   214,   214,   214,   214,   214,   215,   215,   216,   217,
+     218,   218,   219,   219,   220,   220,   221,   221,   222,   222,
+     223,   224,   225,   225,   226,   226,   227,   227,   227,   228,
+     228,   229,   229,   229,   229,   229,   229,   229,   229,   229,
+     229,   229,   230,   230,   231,   231,   231,   231,   231,   231,
+     231,   231,   232,   232,   233,   234,   235,   235,   236,   237,
+     237,   238,   239,   239,   240,   240,   241,   241,   242,   242,
+     243,   243,   244,   245,   245,   245,   246,   246,   247,   247,
+     248,   249,   250,   250,   250,   251,   252,   253,   253,   254,
+     254,   255,   255,   256,   256,   256,   257,   257,   257,   258,
+     258,   258,   258,   259,   259,   259,   260,   260,   261,   261,
+     262,   262,   262,   262,   262,   263,   263,   263,   264,   264,
+     265,   265,   266,   266,   266,   266,   266,   266,   267,   267,
+     268,   268,   269,   270,   270,   271,   271,   272,   272,   272,
+     273,   274,   274,   274,   274,   274,   274,   274,   274,   274,
+     274,   275,   276,   276,   277,   277
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1085,25 +1086,25 @@ static const yytype_uint8 yyr2[] =
        4,     4,     1,     1,     1,     1,     1,     1,     1,     0,
        2,     4,     3,     0,     2,     1,     1,     3,     3,     1,
        5,     1,     3,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     5,     3,     3,     3,     3,     3,
+       1,     1,     1,     1,     1,     5,     3,     3,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     2,     2,     2,     2,     2,     2,     3,
-       3,     5,     5,     4,     3,     1,     3,     1,     1,     0,
-       2,     4,     3,     2,     2,     0,     2,     2,     1,     3,
-       3,     3,     2,     0,     1,     0,     1,     1,     1,     1,
-       1,     1,     1,     2,     2,     1,     1,     1,     1,     1,
-       1,     0,     1,     1,     2,     1,     2,     2,     1,     1,
-       1,     2,     2,     2,     5,     0,     2,     2,     2,     2,
-       2,     2,     3,     2,     3,     5,     5,     0,     2,     2,
-       2,     2,     6,     8,     2,     2,     2,     2,     2,     2,
-       5,     1,     1,     1,     1,     1,     0,     2,     2,     3,
-       0,     1,     2,     2,     2,     3,     2,     1,     1,     3,
-       2,     4,     3,     2,     1,     3,     2,     0,     1,     3,
-       2,     1,     3,     4,     3,     2,     1,     3,     2,     0,
-       1,     1,     3,     2,     1,     3,     4,     1,     3,     0,
-       2,     2,     1,     3,     1,     3,     1,     1,     1,     5,
-       1,     1,     1,     1,     2,     1,     2,     1,     2,     4,
-       4,     5,    10,     1,     3
+       3,     3,     3,     3,     2,     2,     2,     2,     2,     2,
+       3,     3,     5,     5,     4,     3,     1,     3,     1,     1,
+       0,     2,     4,     3,     2,     2,     0,     2,     2,     1,
+       3,     3,     3,     2,     0,     1,     0,     1,     1,     1,
+       1,     1,     1,     1,     2,     2,     1,     1,     1,     1,
+       1,     1,     0,     1,     1,     2,     1,     2,     2,     1,
+       1,     1,     2,     2,     2,     5,     0,     2,     2,     2,
+       2,     2,     2,     3,     2,     3,     5,     5,     0,     2,
+       2,     2,     2,     6,     8,     2,     2,     2,     2,     2,
+       2,     5,     1,     1,     1,     1,     1,     0,     2,     2,
+       3,     0,     1,     2,     2,     2,     3,     2,     1,     1,
+       3,     2,     4,     3,     2,     1,     3,     2,     0,     1,
+       3,     2,     1,     3,     4,     3,     2,     1,     3,     2,
+       0,     1,     1,     3,     2,     1,     3,     4,     1,     3,
+       0,     2,     2,     1,     3,     1,     3,     1,     1,     1,
+       5,     1,     1,     1,     1,     2,     1,     2,     1,     2,
+       4,     4,     5,    10,     1,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1111,725 +1112,715 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       3,     0,     2,     1,   331,   228,   220,   239,     0,   275,
-       0,     0,   227,   215,   229,   271,   226,   230,   231,     0,
-     274,   233,   240,   238,     0,   231,   273,     0,   231,     0,
-     235,   272,   215,    52,   215,   225,   330,   221,    60,    10,
-       0,    24,    11,    27,    11,     9,     0,   333,     0,   332,
-     222,     0,     0,     7,     0,     0,    22,     0,   257,     5,
-       4,     0,     8,   280,   280,   280,     0,     0,   335,   280,
-       0,   337,   241,   242,     0,   248,   249,   334,   217,     0,
-     232,   237,     0,   259,   260,   236,     0,   234,   223,   336,
-       0,     0,    53,   338,     0,   224,    61,     0,    63,    64,
+       3,     0,     2,     1,   332,   229,   221,   240,     0,   276,
+       0,     0,   228,   216,   230,   272,   227,   231,   232,     0,
+     275,   234,   241,   239,     0,   232,   274,     0,   232,     0,
+     236,   273,   216,    52,   216,   226,   331,   222,    60,    10,
+       0,    24,    11,    27,    11,     9,     0,   334,     0,   333,
+     223,     0,     0,     7,     0,     0,    22,     0,   258,     5,
+       4,     0,     8,   281,   281,   281,     0,     0,   336,   281,
+       0,   338,   242,   243,     0,   249,   250,   335,   218,     0,
+     233,   238,     0,   260,   261,   237,     0,   235,   224,   337,
+       0,     0,    53,   339,     0,   225,    61,     0,    63,    64,
       65,    66,    67,     0,     0,    70,    71,    72,    73,    74,
       75,     0,    77,    78,     0,    80,     0,     0,    83,    84,
        0,     0,     0,     0,     0,    90,     0,    92,     0,    94,
        0,    96,    97,   100,     0,   101,   102,   103,   104,   105,
-     106,   107,   108,   109,     0,   111,   112,   113,   328,   114,
-       0,   116,   326,   117,   118,   119,     0,   121,   122,   123,
-       0,     0,     0,   327,     0,   128,   129,     0,     0,     0,
-      55,   132,    25,     0,     0,     0,     0,     0,   333,   243,
-     250,   261,   269,     0,   335,   337,    26,     6,   245,   266,
-       0,    23,   264,   265,     0,     0,    20,   284,   281,   283,
-     282,   218,   219,   135,   136,   137,   138,   276,     0,     0,
-     288,   324,   287,   212,   333,   335,   280,   337,   278,    28,
-       0,   143,    36,     0,   199,     0,     0,   205,     0,     0,
+     106,   107,   108,   109,     0,   111,   112,   113,   329,   114,
+       0,   116,   327,   117,   118,   119,     0,   121,   122,   123,
+       0,     0,     0,   328,     0,   128,   129,     0,     0,     0,
+      55,   132,    25,     0,     0,     0,     0,     0,   334,   244,
+     251,   262,   270,     0,   336,   338,    26,     6,   246,   267,
+       0,    23,   265,   266,     0,     0,    20,   285,   282,   284,
+     283,   219,   220,   135,   136,   137,   138,   277,     0,     0,
+     289,   325,   288,   213,   334,   336,   281,   338,   279,    28,
+       0,   143,    36,     0,   200,     0,     0,   206,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,   153,     0,     0,   153,     0,     0,
        0,     0,     0,     0,    60,    54,    37,     0,    17,    18,
-      19,     0,    15,    13,    12,    16,    22,    39,   267,   268,
-      40,   211,    52,     0,    52,     0,     0,   258,    20,     0,
-       0,     0,   286,     0,   153,    42,   290,   279,    35,     0,
-     145,   146,   149,   339,    52,   317,   340,    52,    52,     0,
-       0,   163,   155,   156,   157,   161,   162,   158,   159,     0,
-     160,     0,     0,     0,     0,     0,     0,     0,   197,     0,
-     195,   198,     0,     0,    58,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   151,   154,     0,
-       0,     0,     0,     0,     0,   134,   133,     0,   343,     0,
-       0,    56,    60,     0,    14,    41,    22,     0,   246,   251,
-       0,     0,     0,    52,     0,     0,     0,    22,    21,     0,
-     277,   285,   289,   325,     0,     0,     0,    46,    43,    44,
-       0,   309,   150,   144,     0,   329,     0,   200,     0,     0,
-     341,    53,   206,     0,    62,    68,     0,   187,   186,   185,
-     188,   183,   184,     0,   297,     0,     0,     0,     0,     0,
+      19,     0,    15,    13,    12,    16,    22,    39,   268,   269,
+      40,   212,    52,     0,    52,     0,     0,   259,    20,     0,
+       0,     0,   287,     0,   153,    42,   291,   280,    35,     0,
+     145,   146,   149,   340,    52,   318,   341,    52,    52,     0,
+       0,   164,   155,   156,   157,   161,   162,   163,   158,   159,
+       0,   160,     0,     0,     0,     0,     0,     0,     0,   198,
+       0,   196,   199,     0,     0,    58,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   151,   154,
+       0,     0,     0,     0,     0,     0,   134,   133,     0,   344,
+       0,     0,    56,    60,     0,    14,    41,    22,     0,   247,
+     252,     0,     0,     0,    52,     0,     0,     0,    22,    21,
+       0,   278,   286,   290,   326,     0,     0,     0,    46,    43,
+      44,     0,   310,   150,   144,     0,   330,     0,   201,     0,
+       0,   342,    53,   207,     0,    62,    68,     0,   188,   187,
+     186,   189,   184,   185,     0,   298,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    69,    76,
-      79,     0,    81,    82,    85,    86,    87,    88,    89,    91,
-      93,     0,    99,   153,    98,   110,     0,   120,   124,   125,
-     126,   127,     0,   130,   131,    57,     0,   244,   247,   253,
-       0,   252,   255,     0,     0,   256,    20,    22,   270,    51,
-      50,   291,     0,   309,   276,    42,   314,   309,   311,   310,
-      49,   306,   147,   148,     0,   337,   318,   213,   204,   203,
-     297,   194,   276,    42,   301,   297,   298,     0,   294,   176,
-     177,   189,   170,   171,   174,   175,   165,   166,     0,   167,
-     168,   169,   173,   172,   179,   178,   181,   182,   180,   190,
-       0,   196,    59,    95,   152,     0,   344,    22,   209,     0,
-     254,     0,   262,    47,    45,    48,   309,   276,     0,   309,
-       0,   305,    42,   313,   319,   322,     0,   202,     0,   214,
-       0,   297,   276,     0,   309,     0,   293,     0,    42,   300,
-       0,   193,   115,    38,   210,    22,   304,   309,   315,   308,
-     312,     0,     0,   321,     0,   201,   139,   192,   292,   309,
-     302,   296,   299,   191,     0,   164,   263,   307,   316,   320,
-     323,     0,   295,   303,     0,     0,   342,   140,     0,    52,
-      52,   208,   142,     0,   141,   207
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    69,
+      76,    79,     0,    81,    82,    85,    86,    87,    88,    89,
+      91,    93,     0,    99,   153,    98,   110,     0,   120,   124,
+     125,   126,   127,     0,   130,   131,    57,     0,   245,   248,
+     254,     0,   253,   256,     0,     0,   257,    20,    22,   271,
+      51,    50,   292,     0,   310,   277,    42,   315,   310,   312,
+     311,    49,   307,   147,   148,     0,   338,   319,   214,   205,
+     204,   298,   195,   277,    42,   302,   298,   299,     0,   295,
+     177,   178,   190,   171,   172,   175,   176,   166,   167,     0,
+     168,   169,   170,   174,   173,   180,   179,   182,   183,   181,
+     191,     0,   197,    59,    95,   152,     0,   345,    22,   210,
+       0,   255,     0,   263,    47,    45,    48,   310,   277,     0,
+     310,     0,   306,    42,   314,   320,   323,     0,   203,     0,
+     215,     0,   298,   277,     0,   310,     0,   294,     0,    42,
+     301,     0,   194,   115,    38,   211,    22,   305,   310,   316,
+     309,   313,     0,     0,   322,     0,   202,   139,   193,   293,
+     310,   303,   297,   300,   192,     0,   165,   264,   308,   317,
+     321,   324,     0,   296,   304,     0,     0,   343,   140,     0,
+      52,    52,   209,   142,     0,   141,   208
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     2,   173,   279,   192,   368,    40,    41,    42,
-      43,   259,   177,    44,   260,   376,   377,   378,   379,   476,
-     361,    92,   169,   325,   170,   347,   477,   591,   597,   289,
-     290,   291,   214,   336,   337,   318,   319,   320,   322,   294,
-     387,   392,   298,   602,   603,   464,    48,   548,    79,   478,
-      49,    81,    50,   261,    52,   262,   272,   358,    54,    55,
-     274,   363,    56,   195,    57,    58,   263,   264,   182,    61,
+      -1,     1,     2,   173,   279,   192,   369,    40,    41,    42,
+      43,   259,   177,    44,   260,   377,   378,   379,   380,   477,
+     362,    92,   169,   326,   170,   348,   478,   592,   598,   289,
+     290,   291,   214,   337,   338,   319,   320,   321,   323,   294,
+     388,   393,   298,   603,   604,   465,    48,   549,    79,   479,
+      49,    81,    50,   261,    52,   262,   272,   359,    54,    55,
+     274,   364,    56,   195,    57,    58,   263,   264,   182,    61,
      265,    63,    64,    65,   280,    66,   197,    67,   211,   212,
-     496,   555,   497,   498,   479,   540,   480,   481,   296,   573,
-     545,   546,   213,   171,   215,    69,    70,   217,   349
+     497,   556,   498,   499,   480,   541,   481,   482,   296,   574,
+     546,   547,   213,   171,   215,    69,    70,   217,   350
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -472
+#define YYPACT_NINF -459
 static const yytype_int16 yypact[] =
 {
-    -472,    38,  1206,  -472,  -472,  -472,  -472,  -472,    75,  -472,
-     -86,   228,  -472,   238,  -472,  -472,  -472,  -472,    28,   101,
-    -472,  -472,  -472,  -472,   265,    28,  -472,   -23,    28,   408,
-    -472,  -472,   271,    -3,   287,   408,  -472,  -472,  2244,  -472,
-      25,  -472,  -472,  -472,  -472,  -472,  1982,    34,    47,  -472,
-    -472,    52,    54,  -472,    73,    61,   106,   110,    62,  -472,
-    -472,    97,  -472,    31,    31,    31,   114,  2135,   123,    31,
-     133,   135,  -472,  -472,   218,  -472,  -472,   126,  -472,   142,
-    -472,  -472,   146,  -472,  -472,  -472,  2135,  -472,  -472,   126,
-     148,  2060,  -472,   -99,   -89,  -472,  -472,   151,  -472,  -472,
-    -472,  -472,  -472,   153,   154,  -472,  -472,  -472,  -472,  -472,
-    -472,   156,  -472,  -472,   157,  -472,   159,   160,  -472,  -472,
-     161,   162,   163,   165,   167,  -472,   169,  -472,   173,  -472,
-     174,  -472,  -472,   185,   187,  -472,  -472,  -472,  -472,  -472,
-    -472,  -472,  -472,  -472,   192,  -472,  -472,  -472,  -472,  -472,
-     194,  -472,  -472,  -472,  -472,  -472,   201,  -472,  -472,  -472,
-     210,   212,   214,  -472,   215,  -472,  -472,   216,   219,   -79,
-    -472,  -472,  -472,  1111,   425,   334,   290,   224,   230,  -472,
-    -472,  -472,  -472,   114,   233,   235,  -472,  -472,  -472,  -472,
-      24,  -472,  -472,  -472,   296,   225,  -472,  -472,  -472,  -472,
-    -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,   114,   114,
-    -472,   229,   -26,  -472,  -472,  -472,    31,  -472,  -472,  -472,
-     236,   312,  -472,   237,  -472,   114,   242,  -472,   400,   312,
-     967,   967,   401,   409,   967,   967,   410,   411,   967,   413,
-     967,   967,   349,   967,   967,   -21,   967,   967,   967,  2135,
-    2135,   129,   418,  2135,  2244,   254,  -472,   260,  -472,  -472,
-    -472,   263,  -472,  -472,  -472,  -472,   106,  -472,  -472,  -472,
-    -472,  -472,  -145,   285,   -65,   266,   264,  -472,  -472,   520,
-      64,   268,  -472,   967,   974,  1552,  -472,  -472,  -472,   269,
-     292,  -472,   272,  -472,   -54,  -472,   294,    -3,   -36,   270,
-     274,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,   277,
-    -472,   967,   967,   967,   967,   967,   967,   805,  1801,  -125,
-    -472,  1801,   279,   280,  -472,  -110,   282,   284,   286,   288,
-     291,   295,   297,  1557,   448,   300,  -109,  -472,  1801,   301,
-     310,   -72,  1615,   302,   303,  -472,  -472,   305,   299,   307,
-     309,  -472,  2244,   453,  -472,  -472,   106,     1,  -472,  -472,
-     335,  2060,   321,   -34,   322,   417,   615,   106,  -472,  2060,
-    -472,  -472,  -472,  -472,   895,   329,   330,   354,  -472,  -472,
-    2060,    57,  -472,   312,   967,  -472,  2060,  -472,   114,   333,
-    -472,   336,  -472,   338,  -472,  -472,  2060,    18,    18,    18,
-      18,    18,    18,  1638,   267,   967,   967,   512,   967,   967,
-     967,   967,   967,   967,   967,   967,   967,   967,   967,   967,
-     967,   967,   967,   967,   967,   513,   967,   967,  -472,  -472,
-    -472,   510,  -472,  -472,  -472,  -472,  -472,  -472,  -472,  -472,
-    -472,   346,  -472,   967,  -472,  -472,   967,  -472,  -472,  -472,
-    -472,  -472,   516,  -472,  -472,  -472,   348,  -472,  -472,  -472,
-     114,  -472,  -472,  2060,   351,  -472,  -472,   106,  -472,  -472,
-    -472,  -472,  1474,    57,  -472,  1318,  -472,    57,  -472,  -472,
-    -472,    41,  -472,  -472,    57,   353,  -472,   312,  -472,  -472,
-     267,  -472,  -472,  1396,  -472,   267,  -472,   352,    48,   193,
-     193,  -472,   221,   221,   152,   152,  1688,  1765,  1742,  1819,
-    1838,  1870,   152,   152,   234,   234,    18,    18,    18,  -472,
-    1720,  -472,  -472,  -472,  -472,   358,  -472,   106,  -472,   114,
-    -472,   710,  -472,  -472,  -472,  -472,    32,  -472,   361,    57,
-     362,  -472,  1552,  -472,   376,  -472,   -45,  -472,   363,  -472,
-     365,   255,  -472,   367,    57,   369,  -472,   967,  1552,  -472,
-     967,  -472,  -472,  -472,  -472,   106,  -472,    32,  -472,  -472,
-    -472,   370,   967,  -472,    57,  -472,  -472,  -472,  -472,    32,
-    -472,  -472,  -472,    18,   371,  1801,  -472,  -472,  -472,  -472,
-    -472,    23,  -472,  -472,   967,   377,  -472,  -472,   398,    20,
-      20,  -472,  -472,   382,  -472,  -472
+    -459,    58,  1214,  -459,  -459,  -459,  -459,  -459,   161,  -459,
+    -102,   256,  -459,   264,  -459,  -459,  -459,  -459,    -1,    88,
+    -459,  -459,  -459,  -459,   289,    -1,  -459,   -67,    -1,   484,
+    -459,  -459,   295,   -19,   297,   484,  -459,  -459,  2194,  -459,
+     -16,  -459,  -459,  -459,  -459,  -459,  2007,     5,    13,  -459,
+    -459,    39,    25,  -459,    46,    72,    54,    89,   117,  -459,
+    -459,    98,  -459,   -14,   -14,   -14,   287,   992,   103,   -14,
+     109,   113,  -459,  -459,   276,  -459,  -459,   112,  -459,   119,
+    -459,  -459,   129,  -459,  -459,  -459,   992,  -459,  -459,   112,
+     128,  2085,  -459,  -103,  -101,  -459,  -459,   134,  -459,  -459,
+    -459,  -459,  -459,   140,   144,  -459,  -459,  -459,  -459,  -459,
+    -459,   146,  -459,  -459,   149,  -459,   153,   154,  -459,  -459,
+     163,   164,   168,   171,   174,  -459,   175,  -459,   177,  -459,
+     182,  -459,  -459,   184,   185,  -459,  -459,  -459,  -459,  -459,
+    -459,  -459,  -459,  -459,   186,  -459,  -459,  -459,  -459,  -459,
+     192,  -459,  -459,  -459,  -459,  -459,   194,  -459,  -459,  -459,
+     200,   201,   204,  -459,   205,  -459,  -459,   207,   208,   -93,
+    -459,  -459,  -459,  1119,   500,   359,   303,   209,   210,  -459,
+    -459,  -459,  -459,   287,   211,   216,  -459,  -459,  -459,  -459,
+      33,  -459,  -459,  -459,   307,   212,  -459,  -459,  -459,  -459,
+    -459,  -459,  -459,  -459,  -459,  -459,  -459,  -459,   287,   287,
+    -459,   213,   -87,  -459,  -459,  -459,   -14,  -459,  -459,  -459,
+     218,   309,  -459,   220,  -459,   287,   223,  -459,   391,   309,
+     944,   944,   392,   398,   944,   944,   399,   400,   944,   402,
+     944,   944,   344,   944,   944,   -72,   944,   944,   944,   992,
+     992,   111,   410,   992,  2194,   245,  -459,   244,  -459,  -459,
+    -459,   246,  -459,  -459,  -459,  -459,    54,  -459,  -459,  -459,
+    -459,  -459,   -50,   268,   -32,   248,   247,  -459,  -459,   595,
+      40,   253,  -459,   944,   983,  1577,  -459,  -459,  -459,   255,
+     272,  -459,   252,  -459,   -18,  -459,   284,   -19,    -8,   260,
+     262,  -459,  -459,  -459,  -459,  -459,  -459,  -459,  -459,  -459,
+     266,  -459,   944,   944,   944,   944,   944,   944,   880,  1826,
+     -80,  -459,  1826,   263,   267,  -459,   -69,   269,   270,   271,
+     273,   274,   280,   281,  1582,   438,   285,   -62,  -459,  1826,
+     291,   293,   -24,  1640,   294,   298,  -459,  -459,   300,   302,
+     301,   304,  -459,  2194,   443,  -459,  -459,    54,     7,  -459,
+    -459,   316,  2085,   305,    14,   306,   389,   690,    54,  -459,
+    2085,  -459,  -459,  -459,  -459,   326,   308,   313,   327,  -459,
+    -459,  2085,    90,  -459,   309,   944,  -459,  2085,  -459,   287,
+     318,  -459,   321,  -459,   322,  -459,  -459,  2085,    11,    11,
+      11,    11,    11,    11,  1663,   279,   944,   944,   479,   944,
+     944,   944,   944,   944,   944,   944,   944,   944,   944,   944,
+     944,   944,   944,   944,   944,   944,   488,   944,   944,  -459,
+    -459,  -459,   489,  -459,  -459,  -459,  -459,  -459,  -459,  -459,
+    -459,  -459,   324,  -459,   944,  -459,  -459,   944,  -459,  -459,
+    -459,  -459,  -459,   491,  -459,  -459,  -459,   330,  -459,  -459,
+    -459,   287,  -459,  -459,  2085,   328,  -459,  -459,    54,  -459,
+    -459,  -459,  -459,  1499,    90,  -459,  1326,  -459,    90,  -459,
+    -459,  -459,    16,  -459,  -459,    90,   329,  -459,   309,  -459,
+    -459,   279,  -459,  -459,  1404,  -459,   279,  -459,   331,    31,
+     243,   243,  -459,   444,   444,    95,    95,  1713,  1790,  1767,
+    1844,  1863,  1895,    95,    95,   193,   193,    11,    11,    11,
+    -459,  1745,  -459,  -459,  -459,  -459,   332,  -459,    54,  -459,
+     287,  -459,   785,  -459,  -459,  -459,  -459,   145,  -459,   333,
+      90,   334,  -459,  1577,  -459,   358,  -459,   -74,  -459,   335,
+    -459,   337,    47,  -459,   338,    90,   339,  -459,   944,  1577,
+    -459,   944,  -459,  -459,  -459,  -459,    54,  -459,   145,  -459,
+    -459,  -459,   340,   944,  -459,    90,  -459,  -459,  -459,  -459,
+     145,  -459,  -459,  -459,    11,   341,  1826,  -459,  -459,  -459,
+    -459,  -459,    -9,  -459,  -459,   944,   365,  -459,  -459,   366,
+      51,    51,  -459,  -459,   347,  -459,  -459
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -472,  -472,  -472,   511,  -271,  -257,    10,  -472,  -472,  -472,
-     195,  -472,  -472,  -472,   557,  -409,  -472,  -472,    89,  -192,
-      -6,    -2,  -472,  -472,  -244,  -472,   -63,  -472,  -472,  -472,
-    -472,   182,     2,   323,  -261,  -159,  -472,  -224,  -228,  -472,
-    -472,  -472,  -472,   -32,  -167,  -472,  -472,  -472,   164,   -40,
-    -472,   200,   100,    51,  -472,   567,  -472,  -472,   527,  -472,
-    -472,  -472,  -472,  -472,   -13,  -472,   572,    -1,  -472,  -472,
-     574,  -472,  -472,  -265,  -411,   -41,    -7,   -22,  -180,  -472,
-    -472,  -472,  -439,  -472,  -471,  -472,  -456,  -472,  -472,  -472,
-       3,  -472,   395,   339,     6,   -49,  -472,     0,  -472
+    -459,  -459,  -459,   477,  -258,  -257,    19,  -459,  -459,  -459,
+     156,  -459,  -459,  -459,   522,  -429,  -459,  -459,    52,  -202,
+     -21,    -2,  -459,  -459,  -229,  -459,   -65,  -459,  -459,  -459,
+    -459,   142,     2,   282,  -260,  -181,  -459,  -224,  -227,  -459,
+    -459,  -459,  -459,   -73,  -206,  -459,  -459,  -459,   215,   -63,
+    -459,   188,   121,    28,  -459,   525,  -459,  -459,   490,  -459,
+    -459,  -459,  -459,  -459,   -23,  -459,   533,     3,  -459,  -459,
+     535,  -459,  -459,  -265,  -413,   -40,   -10,   -27,  -191,  -459,
+    -459,  -459,  -414,  -459,  -458,  -459,  -439,  -459,  -459,  -459,
+     -33,  -459,   361,   310,     6,   -54,  -459,     0,  -459
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -217
+#define YYTABLE_NINF -218
 static const yytype_int16 yytable[] =
 {
-      46,    60,    71,   209,    47,   183,   326,   366,    68,   355,
-     351,   327,    39,   544,   330,   370,   332,   535,   216,   335,
-     286,   541,   340,   375,   427,    38,   210,    91,   281,   282,
-     360,   356,   407,   181,  -216,   201,   202,   223,     3,   431,
-     443,   198,   198,   198,   226,   295,   185,   198,   178,   428,
-     225,   550,   184,    51,    11,   373,   556,   199,   200,   594,
-     201,   202,   218,   536,   432,   444,   538,   201,   202,   203,
-     254,   595,   321,     9,     9,   321,  -216,   443,    72,    73,
-     566,   551,   333,   569,   553,   338,   227,    74,   338,   342,
-      24,   148,   255,    15,   203,   152,   204,   179,   581,   457,
-     371,   203,   447,   544,   574,    38,     9,   362,   455,    82,
-     468,   587,   578,    24,    80,    20,    38,   201,   202,   163,
-     209,   204,   385,   592,   321,   338,   567,   575,   204,    88,
-     389,   393,   273,   571,    38,    95,    38,   345,   205,   346,
-     390,   579,   462,   210,   284,   209,   209,   285,    26,   584,
-      86,   203,   397,   398,   399,   400,   401,   402,   403,    31,
-     483,   206,   209,   205,   405,   406,   407,    38,   210,   210,
-     205,    46,    46,    71,    71,    47,    47,   275,   204,    68,
-      68,   292,   524,   258,   258,   210,   206,   425,   426,   300,
-      38,   474,   601,   206,   198,   531,    90,   172,    94,   596,
-     343,   344,   284,   521,   350,   475,   -29,   407,   486,   287,
-     532,   284,   494,   194,   542,   400,   474,   209,   284,   186,
-     205,   558,   525,   207,   187,    85,   220,   284,    87,   188,
-     475,    75,    76,   405,   406,   407,   190,   208,   410,   411,
-     210,    77,    78,   206,   381,   189,   499,   500,   407,   502,
-     503,   504,   505,   506,   507,   508,   509,   510,   511,   512,
-     513,   514,   515,   516,   517,   518,   357,   520,    83,    84,
-     563,   370,   196,   207,    89,    78,   404,   369,   191,    71,
-     528,    47,   193,   380,   338,    68,   370,   208,   386,   543,
-      93,    78,   203,   268,   269,   -30,   391,     9,   494,   276,
-     277,  -216,   370,   494,   203,   219,   559,   -31,   586,   420,
-     421,   422,   423,   424,   370,   201,   202,   221,   222,   204,
-     460,   425,   426,   224,   228,   209,   229,   230,   183,   231,
-     232,   204,   233,   234,   235,   236,   237,   267,   238,   473,
-     239,   495,   240,   292,   589,   484,   241,   242,   210,   564,
-     420,   421,   422,   423,   424,   490,   458,   463,   243,   494,
-     244,   205,   425,   426,   369,   245,    71,   246,    47,   185,
-     598,   178,    68,   205,   247,   184,   418,   419,   420,   421,
-     422,   423,   424,   248,   206,   249,   485,   250,   251,   252,
-     425,   426,   253,   422,   423,   424,   206,   209,   583,   270,
-     278,   585,   -32,   425,   426,   -33,   283,   -34,   299,   323,
-     288,   293,   539,   321,   492,   297,   334,   324,   328,   329,
-     210,   331,   529,   348,   352,   284,   492,   495,   493,     4,
-     554,   381,   495,   353,   381,   354,   359,   284,   364,   365,
-     493,   383,   372,   388,   394,   382,     7,   549,   395,   384,
-     396,   441,   381,   429,   430,     5,   433,     6,   434,   446,
-     435,   456,   436,     7,     8,   437,   209,     9,   452,   438,
-     380,   439,    10,   380,   442,   445,   449,   450,    11,   451,
-      12,   453,    18,   454,    13,    14,   459,    15,   495,   210,
-      16,   380,    17,   461,    21,    22,    23,    19,   465,    18,
-     470,   381,    25,   472,   471,    19,   257,   487,   488,    20,
-     489,    21,    22,    23,    24,   501,   519,   381,   522,    25,
-     523,   526,   527,   530,     4,   547,   557,   572,   599,   369,
-      28,    71,   562,    47,    30,   568,   570,    68,   576,   577,
-     380,   580,    26,   582,   588,   593,    27,    28,    29,   600,
-       5,    30,     6,    31,   605,   174,   380,    32,     7,    45,
-     466,   534,     9,    33,    34,   482,    35,    10,   604,    53,
-     341,    36,    37,   180,    59,    12,    62,   590,   271,    13,
-      14,     0,    15,     0,   339,    16,     0,    17,     0,     0,
-       0,     0,     0,     0,    18,    38,     0,     0,     0,     0,
-      19,   266,     0,     0,    20,     0,    21,    22,    23,     0,
-       0,     0,     0,     0,    25,     0,     0,     0,     0,     4,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    26,     0,     0,
-       0,    27,    28,    29,     0,     5,    30,     6,    31,     0,
-       0,     0,    32,     7,     0,     0,     0,     9,    33,    34,
-       0,    35,    10,     0,     0,     0,    36,    37,     0,     0,
-      12,     0,     0,     0,    13,    14,     0,    15,     0,     0,
-      16,     0,    17,     0,     0,     0,     0,     0,     0,    18,
-      38,     0,     0,     0,     0,    19,   367,     0,     0,    20,
-       0,    21,    22,    23,     0,     0,     0,     0,     0,    25,
-       0,     0,     0,     0,     4,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    26,     0,     0,     0,    27,    28,    29,     0,
-       5,    30,     6,    31,     0,     0,     0,    32,     7,     0,
-       0,     0,     9,    33,    34,     0,    35,    10,     0,     0,
-       0,    36,    37,     0,     0,    12,     0,     0,     0,    13,
-      14,     0,    15,     0,     0,    16,     0,    17,     0,     0,
-       0,     0,     0,     0,    18,    38,     0,     0,     0,     0,
-      19,   467,     0,     0,    20,     0,    21,    22,    23,     0,
-       0,     0,     0,     0,    25,     0,     0,     0,   301,     4,
-     302,   303,   304,   305,   306,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    26,     0,     0,
-       0,    27,    28,    29,     0,     5,    30,     6,    31,     0,
-       0,     0,    32,     7,     0,     0,     0,     9,    33,    34,
-       0,    35,     0,     0,     0,     0,    36,    37,     0,     0,
-      12,     0,     0,     0,    13,    14,     0,    15,   307,     0,
-      16,     0,    17,     0,     0,     0,     0,     0,     0,    18,
-      38,     0,     0,     0,     0,     0,   565,     0,     0,    20,
-       0,    21,    22,    23,     0,     0,     0,     0,   301,    25,
-     302,   303,   304,   305,   306,   308,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    26,     0,     0,     0,    27,    28,    29,     0,
-     309,    30,     0,    31,     0,     0,     0,    32,     0,     0,
-       0,     0,   310,     0,    34,     0,    35,     0,     0,     0,
-       0,    36,    37,     0,     0,     0,     0,     0,   307,   311,
-       0,     0,   312,   313,   314,     0,     0,   315,   316,     0,
-     301,     0,   302,   303,   304,   305,   306,   301,   317,   302,
-     303,   304,   305,   306,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   308,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     309,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     307,     0,   310,     0,     0,     0,     0,   307,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   311,
-       0,     0,   312,   313,   314,     0,     0,   315,   316,     0,
-       0,     0,     0,     0,     0,     0,   469,   308,   317,     0,
-       0,     0,     0,     0,   308,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   309,     0,     0,     0,     0,     0,     0,   309,
-       0,     0,     0,     0,   310,     0,     0,     0,     0,     0,
-       0,   310,     0,     0,     0,     4,     0,     0,     0,     0,
-       0,   311,   256,     0,   312,   313,   314,     0,   311,   315,
-     316,   312,   313,   374,     0,     0,   315,   316,     0,     0,
-     317,     5,     0,     6,     0,     0,     0,   317,     0,     7,
-       8,     0,     0,     9,     0,     0,     0,     0,    10,     0,
-       0,     0,     0,     0,    11,     0,    12,     0,     0,     0,
+      46,   209,    71,   210,    47,    60,   183,   327,    68,   356,
+     286,   328,    91,   216,   331,   371,   333,   281,   282,   336,
+     367,    39,   341,   181,   376,   352,   408,   545,   595,     9,
+      51,  -217,   223,   226,   295,   536,   198,   198,   198,   542,
+     596,   148,   198,   201,   202,   152,   185,   539,   178,    15,
+     322,   225,   184,   322,   199,   200,   374,   254,     3,   218,
+     334,    11,   537,   339,   361,   554,   339,   343,   363,   163,
+     428,    20,    74,  -217,   179,   227,   575,   551,   203,   255,
+     552,   432,   557,     9,   284,   203,    80,   285,   444,   372,
+       9,   390,   394,   201,   202,   429,    82,    24,   567,   576,
+     458,   570,   322,   339,    26,   204,   433,    86,   406,   407,
+     408,   469,   204,   445,   572,    31,   582,   545,   209,   346,
+     210,    38,   347,    24,   456,   568,   444,   357,   203,   588,
+     585,   398,   399,   400,   401,   402,   403,   404,   579,    38,
+     580,   593,   273,   209,   209,   210,   210,   205,   201,   202,
+      88,   448,    38,    38,   205,   204,    95,   172,   292,   386,
+     209,   484,   210,    38,    72,    73,   300,   275,   597,   391,
+     206,    46,    46,    71,    71,    47,    47,   206,   -29,    68,
+      68,   426,   427,   203,   525,    38,   186,   284,     9,   198,
+     543,   463,   258,   258,   401,   344,   345,   205,   487,   351,
+     207,   188,   284,   495,   522,   559,   287,   493,   408,   532,
+     204,   533,   187,    85,   208,   209,    87,   210,   284,   189,
+     206,   494,    38,   526,   602,   500,   501,   191,   503,   504,
+     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
+     515,   516,   517,   518,   519,   382,   521,    90,   190,    94,
+     475,   358,   205,   421,   422,   423,   424,   425,   408,    75,
+      76,   284,   193,   339,   476,   426,   427,    77,    78,   194,
+     529,   564,   371,   387,   196,   206,   -30,   370,   405,    71,
+     544,    47,   219,   381,   220,    68,   -31,   371,  -217,   495,
+     201,   202,    83,    84,   495,   221,   392,   560,    89,    78,
+      93,    78,   222,   371,   224,   475,   268,   269,   228,   587,
+     276,   277,   201,   202,   229,   371,   284,   203,   230,   476,
+     231,   292,   461,   232,   209,   203,   210,   233,   234,   301,
+     183,   302,   303,   304,   305,   306,   307,   235,   236,   565,
+     496,   474,   237,   464,   204,   238,   590,   485,   239,   240,
+     495,   241,   204,   423,   424,   425,   242,   491,   243,   244,
+     245,   459,   267,   426,   427,   370,   246,    71,   247,    47,
+     185,   599,   178,    68,   248,   249,   184,   584,   250,   251,
+     586,   252,   253,   -32,   -33,   270,   205,   486,   278,   -34,
+     308,   283,   322,   288,   205,   293,   209,   297,   210,   299,
+     324,   421,   422,   423,   424,   425,   325,   329,   330,   206,
+     332,   540,   335,   426,   427,   349,   353,   206,   354,   355,
+     360,   365,   384,   366,   530,   550,   496,   309,   373,   555,
+     385,   496,   383,   382,   389,   395,   382,   396,   430,   493,
+     397,   442,   431,   447,   434,   435,   436,   207,   437,   438,
+     284,   457,   310,   494,   382,   439,   440,   406,   407,   408,
+     443,   208,   411,   412,   311,   209,   446,   210,   460,   450,
+      19,   381,   453,   451,   381,   452,   454,   473,   462,   455,
+     471,   312,   502,   466,   313,   314,   315,   496,   472,   316,
+     317,   520,   381,   488,   489,   490,   527,   523,   470,   524,
+     318,   531,   548,   382,     4,   528,   558,   563,   569,   571,
+     573,   577,   578,   581,   583,   589,   594,   600,   601,   382,
+     606,   174,   467,     7,    45,   535,   483,    53,   605,   342,
+     370,     5,    71,     6,    47,    59,   180,    62,    68,     7,
+       8,   381,   591,     9,   271,     0,     0,     0,    10,     0,
+       0,     0,     0,     0,    11,   340,    12,   381,     0,    18,
       13,    14,     0,    15,     0,     0,    16,     0,    17,     0,
-       0,     0,     0,     0,     0,    18,     0,     0,     0,     0,
+       0,    21,    22,    23,     0,    18,     0,     0,     0,    25,
        0,    19,   257,     0,     0,    20,     0,    21,    22,    23,
-      24,     0,     0,     0,     0,    25,     0,     0,     0,     0,
-       4,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    26,     0,
+      24,     0,     0,     0,     0,    25,     0,     0,     0,     4,
+     419,   420,   421,   422,   423,   424,   425,    28,     0,     0,
+       0,    30,     0,     0,   426,   427,     0,     0,    26,     0,
        0,     0,    27,    28,    29,     0,     5,    30,     6,    31,
-       0,     0,     0,    32,     7,     8,     0,     0,     9,    33,
-      34,     0,    35,    10,     0,     0,     0,    36,    37,    11,
+       0,     0,     0,    32,     7,     0,     0,     0,     9,    33,
+      34,     0,    35,    10,     0,     0,     0,    36,    37,     0,
        0,    12,     0,     0,     0,    13,    14,     0,    15,     0,
        0,    16,     0,    17,     0,     0,     0,     0,     0,     0,
-      18,    38,     0,     0,     0,     0,    19,     0,     0,     0,
-      20,     0,    21,    22,    23,    24,     0,     0,     0,     0,
-      25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      18,    38,     0,     0,     0,     0,    19,   266,     0,     0,
+      20,     0,    21,    22,    23,     0,     0,     0,     0,     0,
+      25,     0,     0,     0,     4,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     4,    26,     0,     0,     0,    27,    28,    29,
-       0,     0,    30,     0,    31,     0,     0,     0,    32,     0,
-       0,     0,     0,     0,    33,    34,     0,    35,     5,     0,
-       6,     0,    36,    37,     0,   203,     7,     0,     0,     0,
-       9,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    12,     0,     0,    38,    13,    14,     0,
-      15,     0,   204,    16,     0,    17,     0,     0,     0,     0,
-       0,     0,    18,     0,     0,     0,     0,     0,     0,     0,
-       4,     0,    20,     0,    21,    22,    23,     0,     0,     0,
-       0,     0,    25,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   205,     0,     5,     0,     6,     0,
-       0,     0,     0,   203,     7,    26,     0,     0,     9,    27,
-      28,    29,     0,     0,    30,     0,    31,   206,     0,     0,
-      32,    12,     0,     0,     0,    13,    14,    34,    15,    35,
-     204,    16,     0,    17,    36,    37,     0,     0,     0,     0,
-      18,     0,     0,     0,     0,     0,     0,   537,     4,     0,
-      20,     0,    21,    22,    23,     0,     0,     0,    38,     0,
-      25,     0,     0,     0,     0,   533,     0,     0,     0,     0,
-       0,     0,   205,     0,     5,     0,     6,     0,     0,     0,
-       0,     0,     7,    26,     0,     0,     9,    27,    28,    29,
-       0,     0,    30,     0,    31,   206,     0,     0,    32,    12,
-       0,     0,     0,    13,    14,    34,    15,    35,     0,    16,
-       0,    17,    36,    37,     0,     0,     0,     0,    18,     0,
-       0,     0,     0,     0,     0,   552,     4,     0,    20,     0,
-      21,    22,    23,     0,     0,     0,    38,     0,    25,   405,
-     406,   407,   408,   409,   410,   411,   412,   413,     0,     0,
-       0,     0,     5,     0,     6,     0,     0,     0,     0,     0,
-       7,    26,     0,     0,     9,    27,    28,    29,     0,     0,
-      30,     0,    31,     0,     0,     0,    32,    12,     0,     0,
-       0,    13,    14,    34,    15,    35,     0,    16,     0,    17,
-      36,    37,     0,     0,     0,     0,    18,   405,   406,   407,
-     408,   409,   410,   411,   412,   413,    20,     0,    21,    22,
-      23,     0,     0,     0,    38,     0,    25,     0,     0,     0,
-     405,   406,   407,   408,   409,   410,   411,   412,   413,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    26,
-       0,     0,     0,    27,    28,    29,     0,     0,    30,     0,
-      31,     0,     0,     0,    32,     0,     0,     0,     0,     0,
-       0,    34,     0,    35,     0,     0,     0,     0,    36,    37,
-     405,   406,   407,   408,   409,   410,   411,   414,   413,   415,
-     416,   417,   418,   419,   420,   421,   422,   423,   424,     0,
-       0,     0,    38,     0,     0,     0,   425,   426,     0,     0,
-       0,   440,   405,   406,   407,   408,   409,   410,   411,   412,
-     413,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   405,   406,   407,   408,   409,   410,
-     411,   412,   413,     0,     0,   414,     0,   415,   416,   417,
-     418,   419,   420,   421,   422,   423,   424,   405,   406,   407,
-     408,   409,   410,   411,   425,   426,     0,     0,   414,   448,
-     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-       0,     0,     0,     0,     0,     0,     0,   425,   426,     0,
-       0,     0,   491,   405,   406,   407,   408,   409,   410,   411,
-     412,   413,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   405,   406,   407,   408,   409,   410,   411,     0,     0,
-     415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-     405,   406,   407,   408,   409,   410,   411,   425,   426,     0,
+       0,     0,     0,    26,     0,     0,     0,    27,    28,    29,
+       0,     5,    30,     6,    31,     0,     0,     0,    32,     7,
+       0,     0,     0,     9,    33,    34,     0,    35,    10,     0,
+       0,     0,    36,    37,     0,     0,    12,     0,     0,     0,
+      13,    14,     0,    15,     0,     0,    16,     0,    17,     0,
+       0,     0,     0,     0,     0,    18,    38,     0,     0,     0,
+       0,    19,   368,     0,     0,    20,     0,    21,    22,    23,
+       0,     0,     0,     0,     0,    25,     0,     0,     0,     4,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    26,     0,
+       0,     0,    27,    28,    29,     0,     5,    30,     6,    31,
+       0,     0,     0,    32,     7,     0,     0,     0,     9,    33,
+      34,     0,    35,    10,     0,     0,     0,    36,    37,     0,
+       0,    12,     0,     0,     0,    13,    14,     0,    15,     0,
+       0,    16,     0,    17,     0,     0,     0,     0,     0,     0,
+      18,    38,     0,     0,     0,     0,    19,   468,     0,     0,
+      20,     0,    21,    22,    23,     0,     0,     0,     0,     0,
+      25,     0,     0,   301,     4,   302,   303,   304,   305,   306,
+     307,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    26,     0,     0,     0,    27,    28,    29,
+       0,     5,    30,     6,    31,     0,     0,     0,    32,     7,
+       0,     0,     0,     9,    33,    34,     0,    35,     0,     0,
+       0,     0,    36,    37,     0,     0,    12,     0,     0,     0,
+      13,    14,     0,    15,   308,     0,    16,   301,    17,   302,
+     303,   304,   305,   306,   307,    18,    38,     0,     0,     0,
+       0,     0,   566,     0,     0,    20,     0,    21,    22,    23,
+       0,     0,     0,     0,     0,    25,     0,     0,     0,     0,
+       0,   309,     0,     0,     0,     0,   301,     0,   302,   303,
+     304,   305,   306,   307,     0,     0,     4,     0,    26,     0,
+       0,     0,    27,    28,    29,     0,   310,    30,   308,    31,
+       0,     0,     0,    32,     0,     0,     0,     0,   311,     0,
+      34,     0,    35,     5,     0,     6,     0,    36,    37,     0,
+       0,     7,     0,     0,     0,   312,     0,     0,   313,   314,
+     315,     0,     0,   316,   317,   309,     0,   308,    12,     0,
+       0,     0,    13,    14,   318,     0,     0,     0,    16,     0,
+      17,     0,     0,     0,     0,     0,     0,    18,     0,     0,
+     310,     0,     0,     0,     0,     0,     0,     0,     0,    21,
+      22,    23,   311,     0,   309,     0,     0,    25,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   312,
+       0,     0,   313,   314,   315,     0,     0,   316,   317,   310,
+       0,     0,     0,     0,    27,    28,    29,     0,   318,    30,
+       0,   311,     0,     4,     0,    32,     0,     0,     0,     0,
+       0,   256,    34,     0,    35,     0,     0,     0,   312,    36,
+      37,   313,   314,   375,     0,     0,   316,   317,     0,     0,
+       5,     0,     6,     0,     0,     0,     0,   318,     7,     8,
+       0,     0,     9,     0,     0,     0,     0,    10,     0,     0,
+       0,     0,     0,    11,     0,    12,     0,     0,     0,    13,
+      14,     0,    15,     0,     0,    16,     0,    17,     0,     0,
+       0,     0,     0,     0,    18,     0,     0,     0,     0,     0,
+      19,   257,     0,     0,    20,     0,    21,    22,    23,    24,
+       0,     0,     0,     0,    25,     0,     0,     0,     4,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     414,     0,   415,   416,   417,   418,   419,   420,   421,   422,
-     423,   424,   405,   406,   407,   408,   409,   410,   411,   425,
-     426,   561,   414,   560,   415,   416,   417,   418,   419,   420,
-     421,   422,   423,   424,     0,     0,     0,     0,     0,     0,
-       0,   425,   426,     0,     0,     0,     0,   415,   416,   417,
-     418,   419,   420,   421,   422,   423,   424,     0,     0,     0,
-       0,     0,     0,     0,   425,   426,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    26,     0,     0,
+       0,    27,    28,    29,     0,     5,    30,     6,    31,     0,
+       0,     0,    32,     7,     8,     0,     0,     9,    33,    34,
+       0,    35,    10,     0,     0,     0,    36,    37,    11,     0,
+      12,     0,     0,     0,    13,    14,     0,    15,     0,     0,
+      16,     0,    17,     0,     0,     0,     0,     0,     0,    18,
+      38,     0,     0,     0,     0,    19,     0,     0,     0,    20,
+       0,    21,    22,    23,    24,     0,     0,     0,     0,    25,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   414,     0,   415,   416,   417,   418,   419,   420,   421,
-     422,   423,   424,     0,     0,     0,     0,     0,     0,     0,
-     425,   426,   416,   417,   418,   419,   420,   421,   422,   423,
-     424,     0,     0,     0,     0,     0,     4,     0,   425,   426,
-       0,     0,   417,   418,   419,   420,   421,   422,   423,   424,
-       0,     0,     0,     0,     0,     0,     0,   425,   426,     0,
-       0,     0,     5,     0,     6,     0,     0,     0,     0,     0,
-       7,     8,     0,     0,     9,   418,   419,   420,   421,   422,
-     423,   424,     0,     0,     0,    11,     0,    12,     0,   425,
-     426,    13,    14,     0,    15,     0,     0,    16,     0,    17,
-       0,     0,     0,     0,     0,     0,    18,     0,     0,     0,
-       0,     0,     0,     0,     4,     0,    20,     0,    21,    22,
-      23,    24,     0,     0,   175,     0,    25,     0,   176,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       5,     0,     6,     0,     0,     0,     0,     0,     7,    26,
-       0,     0,     9,    27,    28,    29,     0,     0,    30,     0,
-      31,     0,     0,     0,    32,    12,     0,     0,     0,    13,
-      14,    34,    15,    35,     0,    16,     0,    17,    36,    37,
-       0,     0,     0,     0,    18,     0,     0,     0,     0,     4,
-       0,     0,     0,     0,    20,     0,    21,    22,    23,     0,
-       0,     0,     0,     0,    25,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     5,     0,     6,     0,     0,
-       0,     0,     0,     7,     0,     0,     0,    26,     0,     0,
-       0,    27,    28,    29,     0,     0,    30,     0,    31,     0,
-      12,     0,    32,     0,    13,    14,     0,     0,     0,    34,
-      16,    35,    17,     0,     0,     0,    36,    37,     0,    18,
+       4,     0,    26,     0,     0,     0,    27,    28,    29,     0,
+       0,    30,     0,    31,     0,     0,     0,    32,     0,     0,
+       0,     0,     0,    33,    34,     0,    35,     5,     0,     6,
+       0,    36,    37,     0,   203,     7,     0,     0,     0,     9,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    21,    22,    23,     0,     0,     0,     0,     0,    25,
+       0,     0,    12,     0,     0,    38,    13,    14,     0,    15,
+       0,   204,    16,     0,    17,     0,     0,     0,     0,     0,
+       0,    18,     0,     0,     0,     0,     0,     0,     4,     0,
+       0,    20,     0,    21,    22,    23,     0,     0,     0,     0,
+       0,    25,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   205,     0,     5,     0,     6,     0,     0,
+       0,     0,   203,     7,    26,     0,     0,     9,    27,    28,
+      29,     0,     0,    30,     0,    31,   206,     0,     0,    32,
+      12,     0,     0,     0,    13,    14,    34,    15,    35,   204,
+      16,     0,    17,    36,    37,     0,     0,     0,     0,    18,
+       0,     0,     0,     0,     0,     0,   538,     0,     0,    20,
+       0,    21,    22,    23,     0,     0,     0,    38,     0,    25,
+       0,     0,     0,     4,     0,     0,     0,     0,     0,     0,
+       0,   205,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   534,    26,     0,     0,     0,    27,    28,    29,     0,
+       5,    30,     6,    31,   206,     0,     0,    32,     7,     0,
+       0,     0,     9,     0,    34,     0,    35,     0,     0,     0,
+       0,    36,    37,     0,     0,    12,     0,     0,     0,    13,
+      14,     0,    15,     0,   553,    16,     0,    17,     0,     0,
+       0,     0,     0,     0,    18,    38,     0,     0,     0,     0,
+       0,     4,     0,     0,    20,     0,    21,    22,    23,     0,
+       0,     0,     0,     0,    25,   406,   407,   408,   409,   410,
+     411,   412,   413,   414,     0,     0,     0,     0,     5,     0,
+       6,     0,     0,     0,     0,     0,     7,    26,     0,     0,
+       9,    27,    28,    29,     0,     0,    30,     0,    31,     0,
+       0,     0,    32,    12,     0,     0,     0,    13,    14,    34,
+      15,    35,     0,    16,     0,    17,    36,    37,     0,     0,
+       0,     0,    18,   406,   407,   408,   409,   410,   411,   412,
+     413,   414,    20,     0,    21,    22,    23,     0,     0,     0,
+      38,     0,    25,     0,     0,     0,   406,   407,   408,   409,
+     410,   411,   412,   413,   414,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    26,     0,     0,     0,    27,
+      28,    29,     0,     0,    30,     0,    31,     0,     0,     0,
+      32,     0,     0,     0,     0,     0,     0,    34,     0,    35,
+       0,     0,     0,     0,    36,    37,   406,   407,   408,   409,
+     410,   411,   412,   415,   414,   416,   417,   418,   419,   420,
+     421,   422,   423,   424,   425,     0,     0,     0,    38,     0,
+       0,     0,   426,   427,     0,     0,     0,   441,   406,   407,
+     408,   409,   410,   411,   412,   413,   414,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     406,   407,   408,   409,   410,   411,   412,   413,   414,     0,
+       0,   415,     0,   416,   417,   418,   419,   420,   421,   422,
+     423,   424,   425,   406,   407,   408,   409,   410,   411,   412,
+     426,   427,     0,     0,   415,   449,   416,   417,   418,   419,
+     420,   421,   422,   423,   424,   425,     0,     0,     0,     0,
+       0,     0,     0,   426,   427,     0,     0,     0,   492,   406,
+     407,   408,   409,   410,   411,   412,   413,   414,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   406,   407,   408,
+     409,   410,   411,   412,     0,     0,   416,   417,   418,   419,
+     420,   421,   422,   423,   424,   425,   406,   407,   408,   409,
+     410,   411,   412,   426,   427,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   415,     0,   416,   417,
+     418,   419,   420,   421,   422,   423,   424,   425,   406,   407,
+     408,   409,   410,   411,   412,   426,   427,   562,   415,   561,
+     416,   417,   418,   419,   420,   421,   422,   423,   424,   425,
+       0,     0,     0,     0,     0,     0,     0,   426,   427,     0,
+       0,     0,     0,   416,   417,   418,   419,   420,   421,   422,
+     423,   424,   425,     0,     0,     0,     0,     0,     0,     0,
+     426,   427,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   415,     0,   416,
+     417,   418,   419,   420,   421,   422,   423,   424,   425,     0,
+       0,     0,     0,     0,     0,     0,   426,   427,   417,   418,
+     419,   420,   421,   422,   423,   424,   425,     0,     0,     0,
+       0,     4,     0,     0,   426,   427,     0,     0,   418,   419,
+     420,   421,   422,   423,   424,   425,     0,     0,     0,     0,
+       0,     0,     0,   426,   427,     0,     0,     0,     5,     0,
+       6,     0,     0,     0,     0,     0,     7,     8,     0,     0,
+       9,   419,   420,   421,   422,   423,   424,   425,     0,     0,
+       0,    11,     0,    12,     0,   426,   427,    13,    14,     0,
+      15,     0,     0,    16,     0,    17,     0,     0,     0,     0,
+       0,     0,    18,     0,     0,     0,     0,     0,     0,     4,
+       0,     0,    20,     0,    21,    22,    23,    24,     0,     0,
+     175,     0,    25,     0,   176,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     5,     0,     6,     0,
+       0,     0,     0,     0,     7,    26,     0,     0,     9,    27,
+      28,    29,     0,     0,    30,     0,    31,     0,     0,     0,
+      32,    12,     0,     0,     0,    13,    14,    34,    15,    35,
+       0,    16,     0,    17,    36,    37,     0,     0,     0,     0,
+      18,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      20,     0,    21,    22,    23,     0,     0,     0,     0,     0,
+      25,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    27,    28,    29,     0,
-       0,    30,     0,     0,     0,     0,    96,    32,    97,    98,
-      99,     0,   100,   101,    34,   102,    35,     0,   103,     0,
-     104,    36,    37,     0,     0,     0,     0,   105,   106,   107,
-     108,     0,   109,   110,   111,   112,   113,     0,   114,     0,
-     115,   116,   117,     0,     0,   118,     0,     0,     0,     0,
-     119,     0,   120,   121,   122,   123,   124,   125,     0,   126,
-     127,   128,   129,   130,     0,     0,   131,     0,     0,   132,
-       0,     0,     0,     0,   133,   134,     0,   135,     0,     0,
-       0,   136,   137,   138,     0,   139,   140,   141,   142,   143,
-       0,   144,     0,   145,   146,   147,   148,   149,   150,   151,
-     152,     0,   153,   154,   155,     0,     0,     0,   156,     0,
-       0,   157,     0,     0,   158,   159,     0,     0,   160,   161,
-     162,     0,     0,     0,   163,     0,   164,   165,   166,   167,
-       0,     0,   168
+       0,     0,     0,    26,     0,     0,     0,    27,    28,    29,
+       0,     0,    30,     0,    31,     0,     0,    96,    32,    97,
+      98,    99,     0,   100,   101,    34,   102,    35,     0,   103,
+       0,   104,    36,    37,     0,     0,     0,     0,   105,   106,
+     107,   108,     0,   109,   110,   111,   112,   113,     0,   114,
+       0,   115,   116,   117,     0,     0,   118,     0,     0,     0,
+       0,   119,     0,   120,   121,   122,   123,   124,   125,     0,
+     126,   127,   128,   129,   130,     0,     0,   131,     0,     0,
+     132,     0,     0,     0,     0,   133,   134,     0,   135,     0,
+       0,     0,   136,   137,   138,     0,   139,   140,   141,   142,
+     143,     0,   144,     0,   145,   146,   147,   148,   149,   150,
+     151,   152,     0,   153,   154,   155,     0,     0,     0,   156,
+       0,     0,   157,     0,     0,   158,   159,     0,     0,   160,
+     161,   162,     0,     0,     0,   163,     0,   164,   165,   166,
+     167,     0,     0,   168
 };
 
 static const yytype_int16 yycheck[] =
 {
-       2,     2,     2,    66,     2,    46,   234,   278,     2,   266,
-     254,   235,     2,   484,   238,   280,   240,   473,    67,   243,
-     212,   477,   246,   284,   149,   170,    66,    33,   208,   209,
-      95,   176,    14,    46,   133,     3,     4,    86,     0,   149,
-     149,    63,    64,    65,   133,   225,    46,    69,    46,   174,
-      91,   490,    46,     2,    53,   283,   495,    64,    65,    36,
-       3,     4,    69,   474,   174,   174,   475,     3,     4,    37,
-     149,    48,   231,    42,    42,   234,   175,   149,     3,     4,
-     536,   492,   241,   539,   493,   244,   175,   173,   247,   248,
-      89,   112,   171,    62,    37,   116,    64,    46,   554,   356,
-     280,    37,   174,   574,   149,   170,    42,   274,   352,     8,
-     367,   567,   551,    89,    86,    84,   170,     3,     4,   140,
-     183,    64,   176,   579,   283,   284,   537,   172,    64,    29,
-     297,   298,   108,   542,   170,    35,   170,     8,   106,    10,
-     176,   552,   176,   183,   170,   208,   209,   173,   117,   558,
-     173,    37,   311,   312,   313,   314,   315,   316,   317,   128,
-     384,   129,   225,   106,    12,    13,    14,   170,   208,   209,
-     106,   173,   174,   173,   174,   173,   174,   190,    64,   173,
-     174,   221,   443,   173,   174,   225,   129,   169,   170,   229,
-     170,   159,   172,   129,   216,   466,    32,   172,    34,   176,
-     249,   250,   170,   427,   253,   173,   172,    14,   388,   216,
-     467,   170,   404,   151,   173,   374,   159,   280,   170,   172,
-     106,   173,   446,   159,   172,    25,     8,   170,    28,   175,
-     173,     3,     4,    12,    13,    14,   175,   173,    17,    18,
-     280,     3,     4,   129,   285,   172,   405,   406,    14,   408,
-     409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
-     419,   420,   421,   422,   423,   424,   272,   426,     3,     4,
-     527,   536,   175,   159,     3,     4,   317,   279,   172,   279,
-     460,   279,   172,   285,   443,   279,   551,   173,   294,   481,
-       3,     4,    37,     3,     4,   172,   298,    42,   490,     3,
-       4,   175,   567,   495,    37,   172,   498,   172,   565,   157,
-     158,   159,   160,   161,   579,     3,     4,   175,   172,    64,
-     361,   169,   170,   175,   173,   388,   173,   173,   369,   173,
-     173,    64,   173,   173,   173,   173,   173,     3,   173,   380,
-     173,   404,   173,   383,   572,   386,   173,   173,   388,   529,
-     157,   158,   159,   160,   161,   396,   357,   363,   173,   551,
-     173,   106,   169,   170,   366,   173,   366,   173,   366,   369,
-     594,   369,   366,   106,   173,   369,   155,   156,   157,   158,
-     159,   160,   161,   173,   129,   173,   386,   173,   173,   173,
-     169,   170,   173,   159,   160,   161,   129,   460,   557,   175,
-     175,   560,   172,   169,   170,   172,   177,   172,     8,     8,
-     174,   174,   475,   572,   159,   173,    67,     8,     8,     8,
-     460,     8,   463,     5,   170,   170,   159,   490,   173,     4,
-     493,   472,   495,   173,   475,   172,   151,   170,   172,   175,
-     173,   149,   174,   149,   174,   176,    38,   487,   174,   177,
-     173,     3,   493,   174,   174,    30,   174,    32,   174,   149,
-     174,     8,   174,    38,    39,   174,   529,    42,   169,   174,
-     472,   174,    47,   475,   174,   174,   174,   174,    53,   174,
-      55,   174,    74,   174,    59,    60,   151,    62,   551,   529,
-      65,   493,    67,   172,    86,    87,    88,    80,   176,    74,
-     171,   542,    94,   149,   174,    80,    81,   174,   172,    84,
-     172,    86,    87,    88,    89,     3,     3,   558,     8,    94,
-     174,     5,   174,   172,     4,   172,   174,   151,   151,   531,
-     122,   531,   174,   531,   126,   174,   174,   531,   175,   174,
-     542,   174,   117,   174,   174,   174,   121,   122,   123,   151,
-      30,   126,    32,   128,   172,    44,   558,   132,    38,     2,
-     365,   472,    42,   138,   139,   383,   141,    47,   600,     2,
-     247,   146,   147,    46,     2,    55,     2,   574,   183,    59,
-      60,    -1,    62,    -1,   245,    65,    -1,    67,    -1,    -1,
-      -1,    -1,    -1,    -1,    74,   170,    -1,    -1,    -1,    -1,
-      80,   176,    -1,    -1,    84,    -1,    86,    87,    88,    -1,
-      -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,     4,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,
-      -1,   121,   122,   123,    -1,    30,   126,    32,   128,    -1,
-      -1,    -1,   132,    38,    -1,    -1,    -1,    42,   138,   139,
-      -1,   141,    47,    -1,    -1,    -1,   146,   147,    -1,    -1,
-      55,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    -1,
-      65,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
-     170,    -1,    -1,    -1,    -1,    80,   176,    -1,    -1,    84,
-      -1,    86,    87,    88,    -1,    -1,    -1,    -1,    -1,    94,
-      -1,    -1,    -1,    -1,     4,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   117,    -1,    -1,    -1,   121,   122,   123,    -1,
-      30,   126,    32,   128,    -1,    -1,    -1,   132,    38,    -1,
-      -1,    -1,    42,   138,   139,    -1,   141,    47,    -1,    -1,
-      -1,   146,   147,    -1,    -1,    55,    -1,    -1,    -1,    59,
-      60,    -1,    62,    -1,    -1,    65,    -1,    67,    -1,    -1,
-      -1,    -1,    -1,    -1,    74,   170,    -1,    -1,    -1,    -1,
-      80,   176,    -1,    -1,    84,    -1,    86,    87,    88,    -1,
-      -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,     3,     4,
-       5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,
-      -1,   121,   122,   123,    -1,    30,   126,    32,   128,    -1,
-      -1,    -1,   132,    38,    -1,    -1,    -1,    42,   138,   139,
-      -1,   141,    -1,    -1,    -1,    -1,   146,   147,    -1,    -1,
-      55,    -1,    -1,    -1,    59,    60,    -1,    62,    63,    -1,
-      65,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,
-     170,    -1,    -1,    -1,    -1,    -1,   176,    -1,    -1,    84,
-      -1,    86,    87,    88,    -1,    -1,    -1,    -1,     3,    94,
-       5,     6,     7,     8,     9,   100,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   117,    -1,    -1,    -1,   121,   122,   123,    -1,
-     125,   126,    -1,   128,    -1,    -1,    -1,   132,    -1,    -1,
-      -1,    -1,   137,    -1,   139,    -1,   141,    -1,    -1,    -1,
-      -1,   146,   147,    -1,    -1,    -1,    -1,    -1,    63,   154,
-      -1,    -1,   157,   158,   159,    -1,    -1,   162,   163,    -1,
-       3,    -1,     5,     6,     7,     8,     9,     3,   173,     5,
-       6,     7,     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   100,    -1,    -1,    -1,    -1,
+       2,    66,     2,    66,     2,     2,    46,   234,     2,   266,
+     212,   235,    33,    67,   238,   280,   240,   208,   209,   243,
+     278,     2,   246,    46,   284,   254,    15,   485,    37,    43,
+       2,   134,    86,   134,   225,   474,    63,    64,    65,   478,
+      49,   113,    69,     3,     4,   117,    46,   476,    46,    63,
+     231,    91,    46,   234,    64,    65,   283,   150,     0,    69,
+     241,    54,   475,   244,    96,   494,   247,   248,   274,   141,
+     150,    85,   174,   176,    46,   176,   150,   491,    38,   172,
+     493,   150,   496,    43,   171,    38,    87,   174,   150,   280,
+      43,   297,   298,     3,     4,   175,     8,    90,   537,   173,
+     357,   540,   283,   284,   118,    65,   175,   174,    13,    14,
+      15,   368,    65,   175,   543,   129,   555,   575,   183,     8,
+     183,   171,    11,    90,   353,   538,   150,   177,    38,   568,
+     559,   312,   313,   314,   315,   316,   317,   318,   552,   171,
+     553,   580,   109,   208,   209,   208,   209,   107,     3,     4,
+      29,   175,   171,   171,   107,    65,    35,   173,   221,   177,
+     225,   385,   225,   171,     3,     4,   229,   190,   177,   177,
+     130,   173,   174,   173,   174,   173,   174,   130,   173,   173,
+     174,   170,   171,    38,   444,   171,   173,   171,    43,   216,
+     174,   177,   173,   174,   375,   249,   250,   107,   389,   253,
+     160,   176,   171,   405,   428,   174,   216,   160,    15,   467,
+      65,   468,   173,    25,   174,   280,    28,   280,   171,   173,
+     130,   174,   171,   447,   173,   406,   407,   173,   409,   410,
+     411,   412,   413,   414,   415,   416,   417,   418,   419,   420,
+     421,   422,   423,   424,   425,   285,   427,    32,   176,    34,
+     160,   272,   107,   158,   159,   160,   161,   162,    15,     3,
+       4,   171,   173,   444,   174,   170,   171,     3,     4,   152,
+     461,   528,   537,   294,   176,   130,   173,   279,   318,   279,
+     482,   279,   173,   285,     8,   279,   173,   552,   176,   491,
+       3,     4,     3,     4,   496,   176,   298,   499,     3,     4,
+       3,     4,   173,   568,   176,   160,     3,     4,   174,   566,
+       3,     4,     3,     4,   174,   580,   171,    38,   174,   174,
+     174,   384,   362,   174,   389,    38,   389,   174,   174,     3,
+     370,     5,     6,     7,     8,     9,    10,   174,   174,   530,
+     405,   381,   174,   364,    65,   174,   573,   387,   174,   174,
+     552,   174,    65,   160,   161,   162,   174,   397,   174,   174,
+     174,   358,     3,   170,   171,   367,   174,   367,   174,   367,
+     370,   595,   370,   367,   174,   174,   370,   558,   174,   174,
+     561,   174,   174,   173,   173,   176,   107,   387,   176,   173,
+      64,   178,   573,   175,   107,   175,   461,   174,   461,     8,
+       8,   158,   159,   160,   161,   162,     8,     8,     8,   130,
+       8,   476,    68,   170,   171,     5,   171,   130,   174,   173,
+     152,   173,   150,   176,   464,   488,   491,   101,   175,   494,
+     178,   496,   177,   473,   150,   175,   476,   175,   175,   160,
+     174,     3,   175,   150,   175,   175,   175,   160,   175,   175,
+     171,     8,   126,   174,   494,   175,   175,    13,    14,    15,
+     175,   174,    18,    19,   138,   530,   175,   530,   152,   175,
+      81,   473,   170,   175,   476,   175,   175,   150,   173,   175,
+     172,   155,     3,   177,   158,   159,   160,   552,   175,   163,
+     164,     3,   494,   175,   173,   173,     5,     8,   172,   175,
+     174,   173,   173,   543,     4,   175,   175,   175,   175,   175,
+     152,   176,   175,   175,   175,   175,   175,   152,   152,   559,
+     173,    44,   366,    39,     2,   473,   384,     2,   601,   247,
+     532,    31,   532,    33,   532,     2,    46,     2,   532,    39,
+      40,   543,   575,    43,   183,    -1,    -1,    -1,    48,    -1,
+      -1,    -1,    -1,    -1,    54,   245,    56,   559,    -1,    75,
+      60,    61,    -1,    63,    -1,    -1,    66,    -1,    68,    -1,
+      -1,    87,    88,    89,    -1,    75,    -1,    -1,    -1,    95,
+      -1,    81,    82,    -1,    -1,    85,    -1,    87,    88,    89,
+      90,    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,     4,
+     156,   157,   158,   159,   160,   161,   162,   123,    -1,    -1,
+      -1,   127,    -1,    -1,   170,   171,    -1,    -1,   118,    -1,
+      -1,    -1,   122,   123,   124,    -1,    31,   127,    33,   129,
+      -1,    -1,    -1,   133,    39,    -1,    -1,    -1,    43,   139,
+     140,    -1,   142,    48,    -1,    -1,    -1,   147,   148,    -1,
+      -1,    56,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,
+      -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,   171,    -1,    -1,    -1,    -1,    81,   177,    -1,    -1,
+      85,    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    -1,
+      95,    -1,    -1,    -1,     4,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   118,    -1,    -1,    -1,   122,   123,   124,
+      -1,    31,   127,    33,   129,    -1,    -1,    -1,   133,    39,
+      -1,    -1,    -1,    43,   139,   140,    -1,   142,    48,    -1,
+      -1,    -1,   147,   148,    -1,    -1,    56,    -1,    -1,    -1,
+      60,    61,    -1,    63,    -1,    -1,    66,    -1,    68,    -1,
+      -1,    -1,    -1,    -1,    -1,    75,   171,    -1,    -1,    -1,
+      -1,    81,   177,    -1,    -1,    85,    -1,    87,    88,    89,
+      -1,    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,     4,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     125,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      63,    -1,   137,    -1,    -1,    -1,    -1,    63,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   154,
-      -1,    -1,   157,   158,   159,    -1,    -1,   162,   163,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   171,   100,   173,    -1,
-      -1,    -1,    -1,    -1,   100,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,    -1,
+      -1,    -1,   122,   123,   124,    -1,    31,   127,    33,   129,
+      -1,    -1,    -1,   133,    39,    -1,    -1,    -1,    43,   139,
+     140,    -1,   142,    48,    -1,    -1,    -1,   147,   148,    -1,
+      -1,    56,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,
+      -1,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,
+      75,   171,    -1,    -1,    -1,    -1,    81,   177,    -1,    -1,
+      85,    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    -1,
+      95,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
+      10,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   118,    -1,    -1,    -1,   122,   123,   124,
+      -1,    31,   127,    33,   129,    -1,    -1,    -1,   133,    39,
+      -1,    -1,    -1,    43,   139,   140,    -1,   142,    -1,    -1,
+      -1,    -1,   147,   148,    -1,    -1,    56,    -1,    -1,    -1,
+      60,    61,    -1,    63,    64,    -1,    66,     3,    68,     5,
+       6,     7,     8,     9,    10,    75,   171,    -1,    -1,    -1,
+      -1,    -1,   177,    -1,    -1,    85,    -1,    87,    88,    89,
+      -1,    -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,    -1,
+      -1,   101,    -1,    -1,    -1,    -1,     3,    -1,     5,     6,
+       7,     8,     9,    10,    -1,    -1,     4,    -1,   118,    -1,
+      -1,    -1,   122,   123,   124,    -1,   126,   127,    64,   129,
+      -1,    -1,    -1,   133,    -1,    -1,    -1,    -1,   138,    -1,
+     140,    -1,   142,    31,    -1,    33,    -1,   147,   148,    -1,
+      -1,    39,    -1,    -1,    -1,   155,    -1,    -1,   158,   159,
+     160,    -1,    -1,   163,   164,   101,    -1,    64,    56,    -1,
+      -1,    -1,    60,    61,   174,    -1,    -1,    -1,    66,    -1,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    75,    -1,    -1,
+     126,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
+      88,    89,   138,    -1,   101,    -1,    -1,    95,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
+      -1,    -1,   158,   159,   160,    -1,    -1,   163,   164,   126,
+      -1,    -1,    -1,    -1,   122,   123,   124,    -1,   174,   127,
+      -1,   138,    -1,     4,    -1,   133,    -1,    -1,    -1,    -1,
+      -1,    12,   140,    -1,   142,    -1,    -1,    -1,   155,   147,
+     148,   158,   159,   160,    -1,    -1,   163,   164,    -1,    -1,
+      31,    -1,    33,    -1,    -1,    -1,    -1,   174,    39,    40,
+      -1,    -1,    43,    -1,    -1,    -1,    -1,    48,    -1,    -1,
+      -1,    -1,    -1,    54,    -1,    56,    -1,    -1,    -1,    60,
+      61,    -1,    63,    -1,    -1,    66,    -1,    68,    -1,    -1,
+      -1,    -1,    -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,
+      81,    82,    -1,    -1,    85,    -1,    87,    88,    89,    90,
+      -1,    -1,    -1,    -1,    95,    -1,    -1,    -1,     4,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   125,    -1,    -1,    -1,    -1,    -1,    -1,   125,
-      -1,    -1,    -1,    -1,   137,    -1,    -1,    -1,    -1,    -1,
-      -1,   137,    -1,    -1,    -1,     4,    -1,    -1,    -1,    -1,
-      -1,   154,    11,    -1,   157,   158,   159,    -1,   154,   162,
-     163,   157,   158,   159,    -1,    -1,   162,   163,    -1,    -1,
-     173,    30,    -1,    32,    -1,    -1,    -1,   173,    -1,    38,
-      39,    -1,    -1,    42,    -1,    -1,    -1,    -1,    47,    -1,
-      -1,    -1,    -1,    -1,    53,    -1,    55,    -1,    -1,    -1,
-      59,    60,    -1,    62,    -1,    -1,    65,    -1,    67,    -1,
-      -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    -1,
-      -1,    80,    81,    -1,    -1,    84,    -1,    86,    87,    88,
-      89,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
-       4,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,
-      -1,    -1,   121,   122,   123,    -1,    30,   126,    32,   128,
-      -1,    -1,    -1,   132,    38,    39,    -1,    -1,    42,   138,
-     139,    -1,   141,    47,    -1,    -1,    -1,   146,   147,    53,
-      -1,    55,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
-      -1,    65,    -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,
-      74,   170,    -1,    -1,    -1,    -1,    80,    -1,    -1,    -1,
-      84,    -1,    86,    87,    88,    89,    -1,    -1,    -1,    -1,
-      94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,    -1,    -1,
+      -1,   122,   123,   124,    -1,    31,   127,    33,   129,    -1,
+      -1,    -1,   133,    39,    40,    -1,    -1,    43,   139,   140,
+      -1,   142,    48,    -1,    -1,    -1,   147,   148,    54,    -1,
+      56,    -1,    -1,    -1,    60,    61,    -1,    63,    -1,    -1,
+      66,    -1,    68,    -1,    -1,    -1,    -1,    -1,    -1,    75,
+     171,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    85,
+      -1,    87,    88,    89,    90,    -1,    -1,    -1,    -1,    95,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,     4,   117,    -1,    -1,    -1,   121,   122,   123,
-      -1,    -1,   126,    -1,   128,    -1,    -1,    -1,   132,    -1,
-      -1,    -1,    -1,    -1,   138,   139,    -1,   141,    30,    -1,
-      32,    -1,   146,   147,    -1,    37,    38,    -1,    -1,    -1,
-      42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    55,    -1,    -1,   170,    59,    60,    -1,
-      62,    -1,    64,    65,    -1,    67,    -1,    -1,    -1,    -1,
-      -1,    -1,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       4,    -1,    84,    -1,    86,    87,    88,    -1,    -1,    -1,
-      -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   106,    -1,    30,    -1,    32,    -1,
-      -1,    -1,    -1,    37,    38,   117,    -1,    -1,    42,   121,
-     122,   123,    -1,    -1,   126,    -1,   128,   129,    -1,    -1,
-     132,    55,    -1,    -1,    -1,    59,    60,   139,    62,   141,
-      64,    65,    -1,    67,   146,   147,    -1,    -1,    -1,    -1,
-      74,    -1,    -1,    -1,    -1,    -1,    -1,   159,     4,    -1,
-      84,    -1,    86,    87,    88,    -1,    -1,    -1,   170,    -1,
-      94,    -1,    -1,    -1,    -1,    21,    -1,    -1,    -1,    -1,
-      -1,    -1,   106,    -1,    30,    -1,    32,    -1,    -1,    -1,
-      -1,    -1,    38,   117,    -1,    -1,    42,   121,   122,   123,
-      -1,    -1,   126,    -1,   128,   129,    -1,    -1,   132,    55,
-      -1,    -1,    -1,    59,    60,   139,    62,   141,    -1,    65,
-      -1,    67,   146,   147,    -1,    -1,    -1,    -1,    74,    -1,
-      -1,    -1,    -1,    -1,    -1,   159,     4,    -1,    84,    -1,
-      86,    87,    88,    -1,    -1,    -1,   170,    -1,    94,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    -1,    -1,
-      -1,    -1,    30,    -1,    32,    -1,    -1,    -1,    -1,    -1,
-      38,   117,    -1,    -1,    42,   121,   122,   123,    -1,    -1,
-     126,    -1,   128,    -1,    -1,    -1,   132,    55,    -1,    -1,
-      -1,    59,    60,   139,    62,   141,    -1,    65,    -1,    67,
-     146,   147,    -1,    -1,    -1,    -1,    74,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    84,    -1,    86,    87,
-      88,    -1,    -1,    -1,   170,    -1,    94,    -1,    -1,    -1,
-      12,    13,    14,    15,    16,    17,    18,    19,    20,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
-      -1,    -1,    -1,   121,   122,   123,    -1,    -1,   126,    -1,
-     128,    -1,    -1,    -1,   132,    -1,    -1,    -1,    -1,    -1,
-      -1,   139,    -1,   141,    -1,    -1,    -1,    -1,   146,   147,
-      12,    13,    14,    15,    16,    17,    18,   150,    20,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,    -1,
-      -1,    -1,   170,    -1,    -1,    -1,   169,   170,    -1,    -1,
-      -1,   174,    12,    13,    14,    15,    16,    17,    18,    19,
-      20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    -1,    -1,   150,    -1,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,    12,    13,    14,
-      15,    16,    17,    18,   169,   170,    -1,    -1,   150,   174,
-     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   169,   170,    -1,
-      -1,    -1,   174,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    12,    13,    14,    15,    16,    17,    18,    -1,    -1,
-     152,   153,   154,   155,   156,   157,   158,   159,   160,   161,
-      12,    13,    14,    15,    16,    17,    18,   169,   170,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     150,    -1,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,    12,    13,    14,    15,    16,    17,    18,   169,
-     170,   171,   150,   151,   152,   153,   154,   155,   156,   157,
-     158,   159,   160,   161,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   169,   170,    -1,    -1,    -1,    -1,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   169,   170,    -1,    -1,    -1,    -1,
+       4,    -1,   118,    -1,    -1,    -1,   122,   123,   124,    -1,
+      -1,   127,    -1,   129,    -1,    -1,    -1,   133,    -1,    -1,
+      -1,    -1,    -1,   139,   140,    -1,   142,    31,    -1,    33,
+      -1,   147,   148,    -1,    38,    39,    -1,    -1,    -1,    43,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   150,    -1,   152,   153,   154,   155,   156,   157,   158,
-     159,   160,   161,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     169,   170,   153,   154,   155,   156,   157,   158,   159,   160,
-     161,    -1,    -1,    -1,    -1,    -1,     4,    -1,   169,   170,
-      -1,    -1,   154,   155,   156,   157,   158,   159,   160,   161,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   169,   170,    -1,
-      -1,    -1,    30,    -1,    32,    -1,    -1,    -1,    -1,    -1,
-      38,    39,    -1,    -1,    42,   155,   156,   157,   158,   159,
-     160,   161,    -1,    -1,    -1,    53,    -1,    55,    -1,   169,
-     170,    59,    60,    -1,    62,    -1,    -1,    65,    -1,    67,
-      -1,    -1,    -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,     4,    -1,    84,    -1,    86,    87,
-      88,    89,    -1,    -1,    92,    -1,    94,    -1,    96,    -1,
+      -1,    -1,    56,    -1,    -1,   171,    60,    61,    -1,    63,
+      -1,    65,    66,    -1,    68,    -1,    -1,    -1,    -1,    -1,
+      -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,     4,    -1,
+      -1,    85,    -1,    87,    88,    89,    -1,    -1,    -1,    -1,
+      -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   107,    -1,    31,    -1,    33,    -1,    -1,
+      -1,    -1,    38,    39,   118,    -1,    -1,    43,   122,   123,
+     124,    -1,    -1,   127,    -1,   129,   130,    -1,    -1,   133,
+      56,    -1,    -1,    -1,    60,    61,   140,    63,   142,    65,
+      66,    -1,    68,   147,   148,    -1,    -1,    -1,    -1,    75,
+      -1,    -1,    -1,    -1,    -1,    -1,   160,    -1,    -1,    85,
+      -1,    87,    88,    89,    -1,    -1,    -1,   171,    -1,    95,
+      -1,    -1,    -1,     4,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    22,   118,    -1,    -1,    -1,   122,   123,   124,    -1,
+      31,   127,    33,   129,   130,    -1,    -1,   133,    39,    -1,
+      -1,    -1,    43,    -1,   140,    -1,   142,    -1,    -1,    -1,
+      -1,   147,   148,    -1,    -1,    56,    -1,    -1,    -1,    60,
+      61,    -1,    63,    -1,   160,    66,    -1,    68,    -1,    -1,
+      -1,    -1,    -1,    -1,    75,   171,    -1,    -1,    -1,    -1,
+      -1,     4,    -1,    -1,    85,    -1,    87,    88,    89,    -1,
+      -1,    -1,    -1,    -1,    95,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    -1,    -1,    -1,    -1,    31,    -1,
+      33,    -1,    -1,    -1,    -1,    -1,    39,   118,    -1,    -1,
+      43,   122,   123,   124,    -1,    -1,   127,    -1,   129,    -1,
+      -1,    -1,   133,    56,    -1,    -1,    -1,    60,    61,   140,
+      63,   142,    -1,    66,    -1,    68,   147,   148,    -1,    -1,
+      -1,    -1,    75,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    85,    -1,    87,    88,    89,    -1,    -1,    -1,
+     171,    -1,    95,    -1,    -1,    -1,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   118,    -1,    -1,    -1,   122,
+     123,   124,    -1,    -1,   127,    -1,   129,    -1,    -1,    -1,
+     133,    -1,    -1,    -1,    -1,    -1,    -1,   140,    -1,   142,
+      -1,    -1,    -1,    -1,   147,   148,    13,    14,    15,    16,
+      17,    18,    19,   151,    21,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,    -1,    -1,    -1,   171,    -1,
+      -1,    -1,   170,   171,    -1,    -1,    -1,   175,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      30,    -1,    32,    -1,    -1,    -1,    -1,    -1,    38,   117,
-      -1,    -1,    42,   121,   122,   123,    -1,    -1,   126,    -1,
-     128,    -1,    -1,    -1,   132,    55,    -1,    -1,    -1,    59,
-      60,   139,    62,   141,    -1,    65,    -1,    67,   146,   147,
-      -1,    -1,    -1,    -1,    74,    -1,    -1,    -1,    -1,     4,
-      -1,    -1,    -1,    -1,    84,    -1,    86,    87,    88,    -1,
-      -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    30,    -1,    32,    -1,    -1,
-      -1,    -1,    -1,    38,    -1,    -1,    -1,   117,    -1,    -1,
-      -1,   121,   122,   123,    -1,    -1,   126,    -1,   128,    -1,
-      55,    -1,   132,    -1,    59,    60,    -1,    -1,    -1,   139,
-      65,   141,    67,    -1,    -1,    -1,   146,   147,    -1,    74,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    -1,
+      -1,   151,    -1,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,    13,    14,    15,    16,    17,    18,    19,
+     170,   171,    -1,    -1,   151,   175,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   170,   171,    -1,    -1,    -1,   175,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    13,    14,    15,
+      16,    17,    18,    19,    -1,    -1,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,    13,    14,    15,    16,
+      17,    18,    19,   170,   171,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   151,    -1,   153,   154,
+     155,   156,   157,   158,   159,   160,   161,   162,    13,    14,
+      15,    16,    17,    18,    19,   170,   171,   172,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   170,   171,    -1,
+      -1,    -1,    -1,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     170,   171,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   151,    -1,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   170,   171,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,    -1,    -1,    -1,
+      -1,     4,    -1,    -1,   170,   171,    -1,    -1,   155,   156,
+     157,   158,   159,   160,   161,   162,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   170,   171,    -1,    -1,    -1,    31,    -1,
+      33,    -1,    -1,    -1,    -1,    -1,    39,    40,    -1,    -1,
+      43,   156,   157,   158,   159,   160,   161,   162,    -1,    -1,
+      -1,    54,    -1,    56,    -1,   170,   171,    60,    61,    -1,
+      63,    -1,    -1,    66,    -1,    68,    -1,    -1,    -1,    -1,
+      -1,    -1,    75,    -1,    -1,    -1,    -1,    -1,    -1,     4,
+      -1,    -1,    85,    -1,    87,    88,    89,    90,    -1,    -1,
+      93,    -1,    95,    -1,    97,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    31,    -1,    33,    -1,
+      -1,    -1,    -1,    -1,    39,   118,    -1,    -1,    43,   122,
+     123,   124,    -1,    -1,   127,    -1,   129,    -1,    -1,    -1,
+     133,    56,    -1,    -1,    -1,    60,    61,   140,    63,   142,
+      -1,    66,    -1,    68,   147,   148,    -1,    -1,    -1,    -1,
+      75,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      85,    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    -1,
+      95,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    86,    87,    88,    -1,    -1,    -1,    -1,    -1,    94,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,   121,   122,   123,    -1,
-      -1,   126,    -1,    -1,    -1,    -1,    22,   132,    24,    25,
-      26,    -1,    28,    29,   139,    31,   141,    -1,    34,    -1,
-      36,   146,   147,    -1,    -1,    -1,    -1,    43,    44,    45,
-      46,    -1,    48,    49,    50,    51,    52,    -1,    54,    -1,
-      56,    57,    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,
-      66,    -1,    68,    69,    70,    71,    72,    73,    -1,    75,
-      76,    77,    78,    79,    -1,    -1,    82,    -1,    -1,    85,
-      -1,    -1,    -1,    -1,    90,    91,    -1,    93,    -1,    -1,
-      -1,    97,    98,    99,    -1,   101,   102,   103,   104,   105,
-      -1,   107,    -1,   109,   110,   111,   112,   113,   114,   115,
-     116,    -1,   118,   119,   120,    -1,    -1,    -1,   124,    -1,
-      -1,   127,    -1,    -1,   130,   131,    -1,    -1,   134,   135,
-     136,    -1,    -1,    -1,   140,    -1,   142,   143,   144,   145,
-      -1,    -1,   148
+      -1,    -1,    -1,   118,    -1,    -1,    -1,   122,   123,   124,
+      -1,    -1,   127,    -1,   129,    -1,    -1,    23,   133,    25,
+      26,    27,    -1,    29,    30,   140,    32,   142,    -1,    35,
+      -1,    37,   147,   148,    -1,    -1,    -1,    -1,    44,    45,
+      46,    47,    -1,    49,    50,    51,    52,    53,    -1,    55,
+      -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
+      -1,    67,    -1,    69,    70,    71,    72,    73,    74,    -1,
+      76,    77,    78,    79,    80,    -1,    -1,    83,    -1,    -1,
+      86,    -1,    -1,    -1,    -1,    91,    92,    -1,    94,    -1,
+      -1,    -1,    98,    99,   100,    -1,   102,   103,   104,   105,
+     106,    -1,   108,    -1,   110,   111,   112,   113,   114,   115,
+     116,   117,    -1,   119,   120,   121,    -1,    -1,    -1,   125,
+      -1,    -1,   128,    -1,    -1,   131,   132,    -1,    -1,   135,
+     136,   137,    -1,    -1,    -1,   141,    -1,   143,   144,   145,
+     146,    -1,    -1,   149
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   179,   180,     0,     4,    30,    32,    38,    39,    42,
-      47,    53,    55,    59,    60,    62,    65,    67,    74,    80,
-      84,    86,    87,    88,    89,    94,   117,   121,   122,   123,
-     126,   128,   132,   138,   139,   141,   146,   147,   170,   184,
-     185,   186,   187,   188,   191,   192,   199,   210,   224,   228,
-     230,   231,   232,   233,   236,   237,   240,   242,   243,   244,
-     245,   247,   248,   249,   250,   251,   253,   255,   272,   273,
-     274,   275,     3,     4,   173,     3,     4,     3,     4,   226,
-      86,   229,     8,     3,     4,   229,   173,   229,   230,     3,
-     226,   198,   199,     3,   226,   230,    22,    24,    25,    26,
-      28,    29,    31,    34,    36,    43,    44,    45,    46,    48,
-      49,    50,    51,    52,    54,    56,    57,    58,    61,    66,
-      68,    69,    70,    71,    72,    73,    75,    76,    77,    78,
-      79,    82,    85,    90,    91,    93,    97,    98,    99,   101,
-     102,   103,   104,   105,   107,   109,   110,   111,   112,   113,
-     114,   115,   116,   118,   119,   120,   124,   127,   130,   131,
-     134,   135,   136,   140,   142,   143,   144,   145,   148,   200,
-     202,   271,   172,   181,   181,    92,    96,   190,   210,   231,
-     236,   242,   246,   253,   272,   275,   172,   172,   175,   172,
-     175,   172,   183,   172,   151,   241,   175,   254,   255,   254,
-     254,     3,     4,    37,    64,   106,   129,   159,   173,   204,
-     227,   256,   257,   270,   210,   272,   273,   275,   254,   172,
-       8,   175,   172,   273,   175,   253,   133,   175,   173,   173,
-     173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
-     173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
-     173,   173,   173,   173,   149,   171,    11,    81,   184,   189,
-     192,   231,   233,   244,   245,   248,   176,     3,     3,     4,
-     175,   270,   234,   108,   238,   242,     3,     4,   175,   182,
-     252,   256,   256,   177,   170,   173,   197,   254,   174,   207,
-     208,   209,   227,   174,   217,   256,   266,   173,   220,     8,
-     227,     3,     5,     6,     7,     8,     9,    63,   100,   125,
-     137,   154,   157,   158,   159,   162,   163,   173,   213,   214,
-     215,   213,   216,     8,     8,   201,   216,   215,     8,     8,
-     215,     8,   215,   213,    67,   215,   211,   212,   213,   271,
-     215,   211,   213,   273,   273,     8,    10,   203,     5,   276,
-     273,   202,   170,   173,   172,   183,   176,   198,   235,   151,
-      95,   198,   222,   239,   172,   175,   182,   176,   184,   199,
-     251,   256,   174,   216,   159,   212,   193,   194,   195,   196,
-     199,   253,   176,   149,   177,   176,   198,   218,   149,   222,
-     176,   199,   219,   222,   174,   174,   173,   213,   213,   213,
-     213,   213,   213,   213,   253,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,   150,   152,   153,   154,   155,   156,
-     157,   158,   159,   160,   161,   169,   170,   149,   174,   174,
-     174,   149,   174,   174,   174,   174,   174,   174,   174,   174,
-     174,     3,   174,   149,   174,   174,   149,   174,   174,   174,
-     174,   174,   169,   174,   174,   202,     8,   183,   245,   151,
-     253,   172,   176,   198,   223,   176,   188,   176,   183,   171,
-     171,   174,   149,   253,   159,   173,   197,   204,   227,   262,
-     264,   265,   209,   215,   253,   275,   256,   174,   172,   172,
-     253,   174,   159,   173,   197,   204,   258,   260,   261,   213,
-     213,     3,   213,   213,   213,   213,   213,   213,   213,   213,
-     213,   213,   213,   213,   213,   213,   213,   213,   213,     3,
-     213,   215,     8,   174,   212,   215,     5,   174,   256,   253,
-     172,   182,   183,    21,   196,   264,   252,   159,   193,   204,
-     263,   264,   173,   197,   262,   268,   269,   172,   225,   227,
-     260,   252,   159,   193,   204,   259,   260,   174,   173,   197,
-     151,   171,   174,   183,   256,   176,   264,   252,   174,   264,
-     174,   193,   151,   267,   149,   172,   175,   174,   260,   252,
-     174,   264,   174,   213,   193,   213,   183,   264,   174,   216,
-     268,   205,   264,   174,    36,    48,   176,   206,   215,   151,
-     151,   172,   221,   222,   221,   172
+       0,   180,   181,     0,     4,    31,    33,    39,    40,    43,
+      48,    54,    56,    60,    61,    63,    66,    68,    75,    81,
+      85,    87,    88,    89,    90,    95,   118,   122,   123,   124,
+     127,   129,   133,   139,   140,   142,   147,   148,   171,   185,
+     186,   187,   188,   189,   192,   193,   200,   211,   225,   229,
+     231,   232,   233,   234,   237,   238,   241,   243,   244,   245,
+     246,   248,   249,   250,   251,   252,   254,   256,   273,   274,
+     275,   276,     3,     4,   174,     3,     4,     3,     4,   227,
+      87,   230,     8,     3,     4,   230,   174,   230,   231,     3,
+     227,   199,   200,     3,   227,   231,    23,    25,    26,    27,
+      29,    30,    32,    35,    37,    44,    45,    46,    47,    49,
+      50,    51,    52,    53,    55,    57,    58,    59,    62,    67,
+      69,    70,    71,    72,    73,    74,    76,    77,    78,    79,
+      80,    83,    86,    91,    92,    94,    98,    99,   100,   102,
+     103,   104,   105,   106,   108,   110,   111,   112,   113,   114,
+     115,   116,   117,   119,   120,   121,   125,   128,   131,   132,
+     135,   136,   137,   141,   143,   144,   145,   146,   149,   201,
+     203,   272,   173,   182,   182,    93,    97,   191,   211,   232,
+     237,   243,   247,   254,   273,   276,   173,   173,   176,   173,
+     176,   173,   184,   173,   152,   242,   176,   255,   256,   255,
+     255,     3,     4,    38,    65,   107,   130,   160,   174,   205,
+     228,   257,   258,   271,   211,   273,   274,   276,   255,   173,
+       8,   176,   173,   274,   176,   254,   134,   176,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
+     174,   174,   174,   174,   174,   174,   174,   174,   174,   174,
+     174,   174,   174,   174,   150,   172,    12,    82,   185,   190,
+     193,   232,   234,   245,   246,   249,   177,     3,     3,     4,
+     176,   271,   235,   109,   239,   243,     3,     4,   176,   183,
+     253,   257,   257,   178,   171,   174,   198,   255,   175,   208,
+     209,   210,   228,   175,   218,   257,   267,   174,   221,     8,
+     228,     3,     5,     6,     7,     8,     9,    10,    64,   101,
+     126,   138,   155,   158,   159,   160,   163,   164,   174,   214,
+     215,   216,   214,   217,     8,     8,   202,   217,   216,     8,
+       8,   216,     8,   216,   214,    68,   216,   212,   213,   214,
+     272,   216,   212,   214,   274,   274,     8,    11,   204,     5,
+     277,   274,   203,   171,   174,   173,   184,   177,   199,   236,
+     152,    96,   199,   223,   240,   173,   176,   183,   177,   185,
+     200,   252,   257,   175,   217,   160,   213,   194,   195,   196,
+     197,   200,   254,   177,   150,   178,   177,   199,   219,   150,
+     223,   177,   200,   220,   223,   175,   175,   174,   214,   214,
+     214,   214,   214,   214,   214,   254,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,   151,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   170,   171,   150,   175,
+     175,   175,   150,   175,   175,   175,   175,   175,   175,   175,
+     175,   175,     3,   175,   150,   175,   175,   150,   175,   175,
+     175,   175,   175,   170,   175,   175,   203,     8,   184,   246,
+     152,   254,   173,   177,   199,   224,   177,   189,   177,   184,
+     172,   172,   175,   150,   254,   160,   174,   198,   205,   228,
+     263,   265,   266,   210,   216,   254,   276,   257,   175,   173,
+     173,   254,   175,   160,   174,   198,   205,   259,   261,   262,
+     214,   214,     3,   214,   214,   214,   214,   214,   214,   214,
+     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
+       3,   214,   216,     8,   175,   213,   216,     5,   175,   257,
+     254,   173,   183,   184,    22,   197,   265,   253,   160,   194,
+     205,   264,   265,   174,   198,   263,   269,   270,   173,   226,
+     228,   261,   253,   160,   194,   205,   260,   261,   175,   174,
+     198,   152,   172,   175,   184,   257,   177,   265,   253,   175,
+     265,   175,   194,   152,   268,   150,   173,   176,   175,   261,
+     253,   175,   265,   175,   214,   194,   214,   184,   265,   175,
+     217,   269,   206,   265,   175,    37,    49,   177,   207,   216,
+     152,   152,   173,   222,   223,   222,   173
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -3755,350 +3746,357 @@ yyreduce:
 
 /* Line 1455 of yacc.c  */
 #line 635 "parser.y"
-    { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[(1) - (1)].str)); ;}
+    { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[(1) - (1)].str)); ;}
     break;
 
   case 164:
 
 /* Line 1455 of yacc.c  */
 #line 636 "parser.y"
-    { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[(1) - (5)].expr), (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].expr)); ;}
+    { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[(1) - (1)].str)); ;}
     break;
 
   case 165:
 
 /* Line 1455 of yacc.c  */
 #line 637 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[(1) - (5)].expr), (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].expr)); ;}
     break;
 
   case 166:
 
 /* Line 1455 of yacc.c  */
 #line 638 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 167:
 
 /* Line 1455 of yacc.c  */
 #line 639 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 168:
 
 /* Line 1455 of yacc.c  */
 #line 640 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 169:
 
 /* Line 1455 of yacc.c  */
 #line 641 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 170:
 
 /* Line 1455 of yacc.c  */
 #line 642 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 171:
 
 /* Line 1455 of yacc.c  */
 #line 643 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 172:
 
 /* Line 1455 of yacc.c  */
 #line 644 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 173:
 
 /* Line 1455 of yacc.c  */
 #line 645 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 174:
 
 /* Line 1455 of yacc.c  */
 #line 646 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 175:
 
 /* Line 1455 of yacc.c  */
 #line 647 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 176:
 
 /* Line 1455 of yacc.c  */
 #line 648 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 177:
 
 /* Line 1455 of yacc.c  */
 #line 649 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 178:
 
 /* Line 1455 of yacc.c  */
 #line 650 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 179:
 
 /* Line 1455 of yacc.c  */
 #line 651 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 180:
 
 /* Line 1455 of yacc.c  */
 #line 652 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 181:
 
 /* Line 1455 of yacc.c  */
 #line 653 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 182:
 
 /* Line 1455 of yacc.c  */
 #line 654 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 183:
 
 /* Line 1455 of yacc.c  */
 #line 655 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[(2) - (2)].expr)); ;}
+    { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
     break;
 
   case 184:
 
 /* Line 1455 of yacc.c  */
 #line 656 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[(2) - (2)].expr)); ;}
+    { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 185:
 
 /* Line 1455 of yacc.c  */
 #line 657 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[(2) - (2)].expr)); ;}
+    { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 186:
 
 /* Line 1455 of yacc.c  */
 #line 658 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[(2) - (2)].expr)); ;}
+    { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 187:
 
 /* Line 1455 of yacc.c  */
 #line 659 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[(2) - (2)].expr)); ;}
+    { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 188:
 
 /* Line 1455 of yacc.c  */
 #line 660 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[(2) - (2)].expr)); ;}
+    { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 189:
 
 /* Line 1455 of yacc.c  */
 #line 661 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[(1) - (3)].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); ;}
+    { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
   case 190:
 
 /* Line 1455 of yacc.c  */
 #line 662 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[(1) - (3)].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); ;}
+    { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[(1) - (3)].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); ;}
     break;
 
   case 191:
 
 /* Line 1455 of yacc.c  */
-#line 664 "parser.y"
-    { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[(2) - (5)].declspec), (yyvsp[(3) - (5)].declarator), 0), (yyvsp[(5) - (5)].expr)); free((yyvsp[(2) - (5)].declspec)); free((yyvsp[(3) - (5)].declarator)); ;}
+#line 663 "parser.y"
+    { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[(1) - (3)].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); ;}
     break;
 
   case 192:
 
 /* Line 1455 of yacc.c  */
-#line 666 "parser.y"
-    { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[(3) - (5)].declspec), (yyvsp[(4) - (5)].declarator), 0), NULL); free((yyvsp[(3) - (5)].declspec)); free((yyvsp[(4) - (5)].declarator)); ;}
+#line 665 "parser.y"
+    { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[(2) - (5)].declspec), (yyvsp[(3) - (5)].declarator), 0), (yyvsp[(5) - (5)].expr)); free((yyvsp[(2) - (5)].declspec)); free((yyvsp[(3) - (5)].declarator)); ;}
     break;
 
   case 193:
 
 /* Line 1455 of yacc.c  */
 #line 667 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[(1) - (4)].expr), (yyvsp[(3) - (4)].expr)); ;}
+    { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[(3) - (5)].declspec), (yyvsp[(4) - (5)].declarator), 0), NULL); free((yyvsp[(3) - (5)].declspec)); free((yyvsp[(4) - (5)].declarator)); ;}
     break;
 
   case 194:
 
 /* Line 1455 of yacc.c  */
 #line 668 "parser.y"
-    { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
+    { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[(1) - (4)].expr), (yyvsp[(3) - (4)].expr)); ;}
     break;
 
   case 195:
 
 /* Line 1455 of yacc.c  */
-#line 671 "parser.y"
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[(1) - (1)].expr) ); ;}
+#line 669 "parser.y"
+    { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
     break;
 
   case 196:
 
 /* Line 1455 of yacc.c  */
 #line 672 "parser.y"
-    { (yyval.expr_list) = append_expr( (yyvsp[(1) - (3)].expr_list), (yyvsp[(3) - (3)].expr) ); ;}
+    { (yyval.expr_list) = append_expr( NULL, (yyvsp[(1) - (1)].expr) ); ;}
     break;
 
   case 197:
 
 /* Line 1455 of yacc.c  */
-#line 675 "parser.y"
+#line 673 "parser.y"
+    { (yyval.expr_list) = append_expr( (yyvsp[(1) - (3)].expr_list), (yyvsp[(3) - (3)].expr) ); ;}
+    break;
+
+  case 198:
+
+/* Line 1455 of yacc.c  */
+#line 676 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr);
                                                  if (!(yyval.expr)->is_const)
                                                      error_loc("expression is not an integer constant\n");
                                                ;}
     break;
 
-  case 198:
+  case 199:
 
 /* Line 1455 of yacc.c  */
-#line 681 "parser.y"
+#line 682 "parser.y"
     { (yyval.expr) = (yyvsp[(1) - (1)].expr);
                                                  if (!(yyval.expr)->is_const && (yyval.expr)->type != EXPR_STRLIT && (yyval.expr)->type != EXPR_WSTRLIT)
                                                      error_loc("expression is not constant\n");
                                                ;}
     break;
 
-  case 199:
+  case 200:
 
 /* Line 1455 of yacc.c  */
-#line 687 "parser.y"
+#line 688 "parser.y"
     { (yyval.var_list) = NULL; ;}
     break;
 
-  case 200:
+  case 201:
 
 /* Line 1455 of yacc.c  */
-#line 688 "parser.y"
+#line 689 "parser.y"
     { (yyval.var_list) = append_var_list((yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var_list)); ;}
     break;
 
-  case 201:
+  case 202:
 
 /* Line 1455 of yacc.c  */
-#line 692 "parser.y"
+#line 693 "parser.y"
     { const char *first = LIST_ENTRY(list_head((yyvsp[(3) - (4)].declarator_list)), declarator_t, entry)->var->name;
                                                  check_field_attrs(first, (yyvsp[(1) - (4)].attr_list));
                                                  (yyval.var_list) = set_var_types((yyvsp[(1) - (4)].attr_list), (yyvsp[(2) - (4)].declspec), (yyvsp[(3) - (4)].declarator_list));
                                                ;}
     break;
 
-  case 202:
+  case 203:
 
 /* Line 1455 of yacc.c  */
-#line 696 "parser.y"
+#line 697 "parser.y"
     { var_t *v = make_var(NULL);
                                                  v->type = (yyvsp[(2) - (3)].type); v->attrs = (yyvsp[(1) - (3)].attr_list);
                                                  (yyval.var_list) = append_var(NULL, v);
                                                ;}
     break;
 
-  case 203:
+  case 204:
 
 /* Line 1455 of yacc.c  */
-#line 703 "parser.y"
+#line 704 "parser.y"
     { (yyval.var) = (yyvsp[(1) - (2)].var); ;}
     break;
 
-  case 204:
+  case 205:
 
 /* Line 1455 of yacc.c  */
-#line 704 "parser.y"
+#line 705 "parser.y"
     { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[(1) - (2)].attr_list); ;}
     break;
 
-  case 205:
+  case 206:
 
 /* Line 1455 of yacc.c  */
-#line 707 "parser.y"
+#line 708 "parser.y"
     { (yyval.var_list) = NULL; ;}
     break;
 
-  case 206:
+  case 207:
 
 /* Line 1455 of yacc.c  */
-#line 708 "parser.y"
+#line 709 "parser.y"
     { (yyval.var_list) = append_var( (yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var) ); ;}
     break;
 
-  case 207:
+  case 208:
 
 /* Line 1455 of yacc.c  */
-#line 712 "parser.y"
+#line 713 "parser.y"
     { (yyval.var) = (yyvsp[(1) - (2)].var); ;}
     break;
 
-  case 208:
+  case 209:
 
 /* Line 1455 of yacc.c  */
-#line 713 "parser.y"
+#line 714 "parser.y"
     { (yyval.var) = NULL; ;}
     break;
 
-  case 209:
+  case 210:
 
 /* Line 1455 of yacc.c  */
-#line 716 "parser.y"
+#line 717 "parser.y"
     { (yyval.var) = declare_var(check_field_attrs((yyvsp[(3) - (3)].declarator)->var->name, (yyvsp[(1) - (3)].attr_list)),
                                                                (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE);
                                                  free((yyvsp[(3) - (3)].declarator));
                                                ;}
     break;
 
-  case 210:
+  case 211:
 
 /* Line 1455 of yacc.c  */
-#line 723 "parser.y"
+#line 724 "parser.y"
     { var_t *v;
                                                  v = declare_var(check_function_attrs((yyvsp[(3) - (3)].declarator)->var->name, (yyvsp[(1) - (3)].attr_list)),
                                                               (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE);
@@ -4107,43 +4105,36 @@ yyreduce:
                                                ;}
     break;
 
-  case 211:
+  case 212:
 
 /* Line 1455 of yacc.c  */
-#line 733 "parser.y"
+#line 734 "parser.y"
     { (yyval.var) = declare_var((yyvsp[(1) - (3)].attr_list), (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE);
                                                  free((yyvsp[(3) - (3)].declarator));
                                                ;}
     break;
 
-  case 212:
+  case 213:
 
 /* Line 1455 of yacc.c  */
-#line 736 "parser.y"
+#line 737 "parser.y"
     { (yyval.var) = declare_var(NULL, (yyvsp[(1) - (2)].declspec), (yyvsp[(2) - (2)].declarator), FALSE);
                                                  free((yyvsp[(2) - (2)].declarator));
                                                ;}
     break;
 
-  case 213:
+  case 214:
 
 /* Line 1455 of yacc.c  */
-#line 741 "parser.y"
+#line 742 "parser.y"
     { (yyval.var) = NULL; ;}
     break;
 
-  case 215:
-
-/* Line 1455 of yacc.c  */
-#line 745 "parser.y"
-    { (yyval.str) = NULL; ;}
-    break;
-
   case 216:
 
 /* Line 1455 of yacc.c  */
 #line 746 "parser.y"
-    { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
+    { (yyval.str) = NULL; ;}
     break;
 
   case 217:
@@ -4156,22 +4147,22 @@ yyreduce:
   case 218:
 
 /* Line 1455 of yacc.c  */
-#line 750 "parser.y"
-    { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); ;}
+#line 748 "parser.y"
+    { (yyval.str) = (yyvsp[(1) - (1)].str); ;}
     break;
 
   case 219:
 
 /* Line 1455 of yacc.c  */
-#line 752 "parser.y"
+#line 751 "parser.y"
     { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); ;}
     break;
 
   case 220:
 
 /* Line 1455 of yacc.c  */
-#line 755 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+#line 753 "parser.y"
+    { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); ;}
     break;
 
   case 221:
@@ -4181,32 +4172,32 @@ yyreduce:
     { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
     break;
 
-  case 223:
+  case 222:
 
 /* Line 1455 of yacc.c  */
-#line 758 "parser.y"
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), -1); ;}
+#line 757 "parser.y"
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
     break;
 
   case 224:
 
 /* Line 1455 of yacc.c  */
 #line 759 "parser.y"
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), 1); ;}
+    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), -1); ;}
     break;
 
   case 225:
 
 /* Line 1455 of yacc.c  */
 #line 760 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); ;}
+    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), 1); ;}
     break;
 
   case 226:
 
 /* Line 1455 of yacc.c  */
 #line 761 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); ;}
     break;
 
   case 227:
@@ -4237,73 +4228,80 @@ yyreduce:
     { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
     break;
 
-  case 233:
+  case 231:
 
 /* Line 1455 of yacc.c  */
-#line 772 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); ;}
+#line 766 "parser.y"
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
     break;
 
   case 234:
 
 /* Line 1455 of yacc.c  */
 #line 773 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); ;}
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); ;}
     break;
 
   case 235:
 
 /* Line 1455 of yacc.c  */
 #line 774 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); ;}
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); ;}
     break;
 
   case 236:
 
 /* Line 1455 of yacc.c  */
 #line 775 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); ;}
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); ;}
     break;
 
   case 237:
 
 /* Line 1455 of yacc.c  */
 #line 776 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); ;}
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); ;}
     break;
 
   case 238:
 
 /* Line 1455 of yacc.c  */
 #line 777 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); ;}
+    { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); ;}
     break;
 
   case 239:
 
 /* Line 1455 of yacc.c  */
 #line 778 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); ;}
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); ;}
     break;
 
   case 240:
 
 /* Line 1455 of yacc.c  */
 #line 779 "parser.y"
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); ;}
+    { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); ;}
     break;
 
   case 241:
 
 /* Line 1455 of yacc.c  */
-#line 782 "parser.y"
-    { (yyval.type) = type_new_coclass((yyvsp[(2) - (2)].str)); ;}
+#line 780 "parser.y"
+    { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); ;}
     break;
 
   case 242:
 
 /* Line 1455 of yacc.c  */
 #line 783 "parser.y"
+    { (yyval.type) = type_new_coclass((yyvsp[(2) - (2)].str)); ;}
+    break;
+
+  case 243:
+
+/* Line 1455 of yacc.c  */
+#line 784 "parser.y"
     { (yyval.type) = find_type((yyvsp[(2) - (2)].str), 0);
                                                  if (type_get_type_detect_alias((yyval.type)) != TYPE_COCLASS)
                                                    error_loc("%s was not declared a coclass at %s:%d\n",
@@ -4312,62 +4310,62 @@ yyreduce:
                                                ;}
     break;
 
-  case 243:
+  case 244:
 
 /* Line 1455 of yacc.c  */
-#line 791 "parser.y"
+#line 792 "parser.y"
     { (yyval.type) = (yyvsp[(2) - (2)].type);
                                                  check_def((yyval.type));
                                                  (yyval.type)->attrs = check_coclass_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
                                                ;}
     break;
 
-  case 244:
+  case 245:
 
 /* Line 1455 of yacc.c  */
-#line 798 "parser.y"
+#line 799 "parser.y"
     { (yyval.type) = type_coclass_define((yyvsp[(1) - (5)].type), (yyvsp[(3) - (5)].ifref_list)); ;}
     break;
 
-  case 245:
+  case 246:
 
 /* Line 1455 of yacc.c  */
-#line 801 "parser.y"
+#line 802 "parser.y"
     { (yyval.ifref_list) = NULL; ;}
     break;
 
-  case 246:
+  case 247:
 
 /* Line 1455 of yacc.c  */
-#line 802 "parser.y"
+#line 803 "parser.y"
     { (yyval.ifref_list) = append_ifref( (yyvsp[(1) - (2)].ifref_list), (yyvsp[(2) - (2)].ifref) ); ;}
     break;
 
-  case 247:
+  case 248:
 
 /* Line 1455 of yacc.c  */
-#line 806 "parser.y"
+#line 807 "parser.y"
     { (yyval.ifref) = make_ifref((yyvsp[(2) - (2)].type)); (yyval.ifref)->attrs = (yyvsp[(1) - (2)].attr_list); ;}
     break;
 
-  case 248:
+  case 249:
 
 /* Line 1455 of yacc.c  */
-#line 809 "parser.y"
+#line 810 "parser.y"
     { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); ;}
     break;
 
-  case 249:
+  case 250:
 
 /* Line 1455 of yacc.c  */
-#line 810 "parser.y"
+#line 811 "parser.y"
     { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); ;}
     break;
 
-  case 250:
+  case 251:
 
 /* Line 1455 of yacc.c  */
-#line 813 "parser.y"
+#line 814 "parser.y"
     { attr_t *attrs;
                                                  is_object_interface = TRUE;
                                                  (yyval.type) = (yyvsp[(2) - (2)].type);
@@ -4378,71 +4376,64 @@ yyreduce:
                                                ;}
     break;
 
-  case 251:
-
-/* Line 1455 of yacc.c  */
-#line 823 "parser.y"
-    { (yyval.var_list) = NULL; ;}
-    break;
-
   case 252:
 
 /* Line 1455 of yacc.c  */
 #line 824 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(2) - (3)].var) ); ;}
+    { (yyval.var_list) = NULL; ;}
     break;
 
   case 253:
 
 /* Line 1455 of yacc.c  */
-#line 827 "parser.y"
-    { (yyval.stmt_list) = NULL; ;}
+#line 825 "parser.y"
+    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(2) - (3)].var) ); ;}
     break;
 
   case 254:
 
 /* Line 1455 of yacc.c  */
 #line 828 "parser.y"
-    { (yyval.stmt_list) = append_func( (yyvsp[(1) - (3)].stmt_list), (yyvsp[(2) - (3)].func) ); ;}
+    { (yyval.stmt_list) = NULL; ;}
     break;
 
   case 255:
 
 /* Line 1455 of yacc.c  */
-#line 834 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (5)].type);
-                                                 type_dispinterface_define((yyval.type), (yyvsp[(3) - (5)].var_list), (yyvsp[(4) - (5)].stmt_list));
-                                               ;}
+#line 829 "parser.y"
+    { (yyval.stmt_list) = append_func( (yyvsp[(1) - (3)].stmt_list), (yyvsp[(2) - (3)].func) ); ;}
     break;
 
   case 256:
 
 /* Line 1455 of yacc.c  */
-#line 838 "parser.y"
+#line 835 "parser.y"
     { (yyval.type) = (yyvsp[(1) - (5)].type);
-                                                 type_dispinterface_define_from_iface((yyval.type), (yyvsp[(3) - (5)].type));
+                                                 type_dispinterface_define((yyval.type), (yyvsp[(3) - (5)].var_list), (yyvsp[(4) - (5)].stmt_list));
                                                ;}
     break;
 
   case 257:
 
 /* Line 1455 of yacc.c  */
-#line 843 "parser.y"
-    { (yyval.type) = NULL; ;}
+#line 839 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (5)].type);
+                                                 type_dispinterface_define_from_iface((yyval.type), (yyvsp[(3) - (5)].type));
+                                               ;}
     break;
 
   case 258:
 
 /* Line 1455 of yacc.c  */
 #line 844 "parser.y"
-    { (yyval.type) = find_type_or_error2((yyvsp[(2) - (2)].str), 0); ;}
+    { (yyval.type) = NULL; ;}
     break;
 
   case 259:
 
 /* Line 1455 of yacc.c  */
-#line 847 "parser.y"
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); ;}
+#line 845 "parser.y"
+    { (yyval.type) = find_type_or_error2((yyvsp[(2) - (2)].str), 0); is_object_interface = 1; ;}
     break;
 
   case 260:
@@ -4455,49 +4446,49 @@ yyreduce:
   case 261:
 
 /* Line 1455 of yacc.c  */
-#line 851 "parser.y"
+#line 849 "parser.y"
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); ;}
+    break;
+
+  case 262:
+
+/* Line 1455 of yacc.c  */
+#line 852 "parser.y"
     { (yyval.ifinfo).interface = (yyvsp[(2) - (2)].type);
                                                  (yyval.ifinfo).old_pointer_default = pointer_default;
                                                  if (is_attr((yyvsp[(1) - (2)].attr_list), ATTR_POINTERDEFAULT))
                                                    pointer_default = get_attrv((yyvsp[(1) - (2)].attr_list), ATTR_POINTERDEFAULT);
-                                                 is_object_interface = is_object((yyvsp[(1) - (2)].attr_list));
                                                  check_def((yyvsp[(2) - (2)].type));
                                                  (yyvsp[(2) - (2)].type)->attrs = check_iface_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
+                                                 is_object_interface = is_object((yyvsp[(2) - (2)].type));
                                                  (yyvsp[(2) - (2)].type)->defined = TRUE;
                                                ;}
     break;
 
-  case 262:
+  case 263:
 
 /* Line 1455 of yacc.c  */
-#line 863 "parser.y"
+#line 864 "parser.y"
     { (yyval.type) = (yyvsp[(1) - (6)].ifinfo).interface;
                                                  type_interface_define((yyval.type), (yyvsp[(2) - (6)].type), (yyvsp[(4) - (6)].stmt_list));
                                                  pointer_default = (yyvsp[(1) - (6)].ifinfo).old_pointer_default;
                                                ;}
     break;
 
-  case 263:
+  case 264:
 
 /* Line 1455 of yacc.c  */
-#line 871 "parser.y"
+#line 872 "parser.y"
     { (yyval.type) = (yyvsp[(1) - (8)].ifinfo).interface;
                                                  type_interface_define((yyval.type), find_type_or_error2((yyvsp[(3) - (8)].str), 0), (yyvsp[(6) - (8)].stmt_list));
                                                  pointer_default = (yyvsp[(1) - (8)].ifinfo).old_pointer_default;
                                                ;}
     break;
 
-  case 264:
-
-/* Line 1455 of yacc.c  */
-#line 875 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (2)].type); ;}
-    break;
-
   case 265:
 
 /* Line 1455 of yacc.c  */
-#line 879 "parser.y"
+#line 876 "parser.y"
     { (yyval.type) = (yyvsp[(1) - (2)].type); ;}
     break;
 
@@ -4511,8 +4502,8 @@ yyreduce:
   case 267:
 
 /* Line 1455 of yacc.c  */
-#line 883 "parser.y"
-    { (yyval.type) = type_new_module((yyvsp[(2) - (2)].str)); ;}
+#line 881 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (2)].type); ;}
     break;
 
   case 268:
@@ -4525,96 +4516,96 @@ yyreduce:
   case 269:
 
 /* Line 1455 of yacc.c  */
-#line 887 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type);
-                                                 (yyval.type)->attrs = check_module_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
-                                               ;}
+#line 885 "parser.y"
+    { (yyval.type) = type_new_module((yyvsp[(2) - (2)].str)); ;}
     break;
 
   case 270:
 
 /* Line 1455 of yacc.c  */
-#line 893 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (5)].type);
-                                                  type_module_define((yyval.type), (yyvsp[(3) - (5)].stmt_list));
+#line 888 "parser.y"
+    { (yyval.type) = (yyvsp[(2) - (2)].type);
+                                                 (yyval.type)->attrs = check_module_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
                                                ;}
     break;
 
   case 271:
 
 /* Line 1455 of yacc.c  */
-#line 899 "parser.y"
-    { (yyval.stgclass) = STG_EXTERN; ;}
+#line 894 "parser.y"
+    { (yyval.type) = (yyvsp[(1) - (5)].type);
+                                                  type_module_define((yyval.type), (yyvsp[(3) - (5)].stmt_list));
+                                               ;}
     break;
 
   case 272:
 
 /* Line 1455 of yacc.c  */
 #line 900 "parser.y"
-    { (yyval.stgclass) = STG_STATIC; ;}
+    { (yyval.stgclass) = STG_EXTERN; ;}
     break;
 
   case 273:
 
 /* Line 1455 of yacc.c  */
 #line 901 "parser.y"
-    { (yyval.stgclass) = STG_REGISTER; ;}
+    { (yyval.stgclass) = STG_STATIC; ;}
     break;
 
   case 274:
 
 /* Line 1455 of yacc.c  */
-#line 905 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_INLINE); ;}
+#line 902 "parser.y"
+    { (yyval.stgclass) = STG_REGISTER; ;}
     break;
 
   case 275:
 
 /* Line 1455 of yacc.c  */
-#line 909 "parser.y"
-    { (yyval.attr) = make_attr(ATTR_CONST); ;}
+#line 906 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_INLINE); ;}
     break;
 
   case 276:
 
 /* Line 1455 of yacc.c  */
-#line 912 "parser.y"
-    { (yyval.attr_list) = NULL; ;}
+#line 910 "parser.y"
+    { (yyval.attr) = make_attr(ATTR_CONST); ;}
     break;
 
   case 277:
 
 /* Line 1455 of yacc.c  */
 #line 913 "parser.y"
-    { (yyval.attr_list) = append_attr((yyvsp[(1) - (2)].attr_list), (yyvsp[(2) - (2)].attr)); ;}
+    { (yyval.attr_list) = NULL; ;}
     break;
 
   case 278:
 
 /* Line 1455 of yacc.c  */
-#line 916 "parser.y"
-    { (yyval.declspec) = make_decl_spec((yyvsp[(1) - (2)].type), (yyvsp[(2) - (2)].declspec), NULL, NULL, STG_NONE); ;}
+#line 914 "parser.y"
+    { (yyval.attr_list) = append_attr((yyvsp[(1) - (2)].attr_list), (yyvsp[(2) - (2)].attr)); ;}
     break;
 
   case 279:
 
 /* Line 1455 of yacc.c  */
-#line 918 "parser.y"
-    { (yyval.declspec) = make_decl_spec((yyvsp[(2) - (3)].type), (yyvsp[(1) - (3)].declspec), (yyvsp[(3) - (3)].declspec), NULL, STG_NONE); ;}
+#line 917 "parser.y"
+    { (yyval.declspec) = make_decl_spec((yyvsp[(1) - (2)].type), (yyvsp[(2) - (2)].declspec), NULL, NULL, STG_NONE); ;}
     break;
 
   case 280:
 
 /* Line 1455 of yacc.c  */
-#line 921 "parser.y"
-    { (yyval.declspec) = NULL; ;}
+#line 919 "parser.y"
+    { (yyval.declspec) = make_decl_spec((yyvsp[(2) - (3)].type), (yyvsp[(1) - (3)].declspec), (yyvsp[(3) - (3)].declspec), NULL, STG_NONE); ;}
     break;
 
-  case 282:
+  case 281:
 
 /* Line 1455 of yacc.c  */
-#line 926 "parser.y"
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, (yyvsp[(1) - (2)].attr), STG_NONE); ;}
+#line 922 "parser.y"
+    { (yyval.declspec) = NULL; ;}
     break;
 
   case 283:
@@ -4628,326 +4619,326 @@ yyreduce:
 
 /* Line 1455 of yacc.c  */
 #line 928 "parser.y"
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, NULL, (yyvsp[(1) - (2)].stgclass)); ;}
+    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, (yyvsp[(1) - (2)].attr), STG_NONE); ;}
     break;
 
   case 285:
 
 /* Line 1455 of yacc.c  */
-#line 933 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
+#line 929 "parser.y"
+    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, NULL, (yyvsp[(1) - (2)].stgclass)); ;}
     break;
 
   case 286:
 
 /* Line 1455 of yacc.c  */
 #line 934 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
+    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
     break;
 
-  case 288:
+  case 287:
 
 /* Line 1455 of yacc.c  */
-#line 939 "parser.y"
-    { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); ;}
+#line 935 "parser.y"
+    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
     break;
 
   case 289:
 
 /* Line 1455 of yacc.c  */
 #line 940 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); ;}
+    { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); ;}
     break;
 
   case 290:
 
 /* Line 1455 of yacc.c  */
 #line 941 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); ;}
+    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); ;}
     break;
 
   case 291:
 
 /* Line 1455 of yacc.c  */
 #line 942 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); ;}
+    break;
+
+  case 292:
+
+/* Line 1455 of yacc.c  */
+#line 943 "parser.y"
     { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
                                                  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
                                                  (yyval.declarator)->type = NULL;
                                                ;}
     break;
 
-  case 292:
+  case 293:
 
 /* Line 1455 of yacc.c  */
-#line 951 "parser.y"
+#line 952 "parser.y"
     { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
     break;
 
-  case 293:
+  case 294:
 
 /* Line 1455 of yacc.c  */
-#line 952 "parser.y"
+#line 953 "parser.y"
     { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
     break;
 
-  case 295:
+  case 296:
 
 /* Line 1455 of yacc.c  */
-#line 959 "parser.y"
+#line 960 "parser.y"
     { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
     break;
 
-  case 296:
+  case 297:
 
 /* Line 1455 of yacc.c  */
-#line 960 "parser.y"
+#line 961 "parser.y"
     { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
     break;
 
-  case 297:
+  case 298:
 
 /* Line 1455 of yacc.c  */
-#line 964 "parser.y"
+#line 965 "parser.y"
     { (yyval.declarator) = make_declarator(NULL); ;}
     break;
 
-  case 299:
+  case 300:
 
 /* Line 1455 of yacc.c  */
-#line 970 "parser.y"
+#line 971 "parser.y"
     { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); ;}
     break;
 
-  case 300:
+  case 301:
 
 /* Line 1455 of yacc.c  */
-#line 971 "parser.y"
+#line 972 "parser.y"
     { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
-  case 301:
+  case 302:
 
 /* Line 1455 of yacc.c  */
-#line 972 "parser.y"
+#line 973 "parser.y"
     { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 302:
+  case 303:
 
 /* Line 1455 of yacc.c  */
-#line 974 "parser.y"
+#line 975 "parser.y"
     { (yyval.declarator) = make_declarator(NULL);
                                                  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(2) - (3)].var_list)));
                                                  (yyval.declarator)->type = NULL;
                                                ;}
     break;
 
-  case 303:
+  case 304:
 
 /* Line 1455 of yacc.c  */
-#line 979 "parser.y"
+#line 980 "parser.y"
     { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
                                                  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
                                                  (yyval.declarator)->type = NULL;
                                                ;}
     break;
 
-  case 304:
+  case 305:
 
 /* Line 1455 of yacc.c  */
-#line 988 "parser.y"
+#line 989 "parser.y"
     { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
     break;
 
-  case 305:
+  case 306:
 
 /* Line 1455 of yacc.c  */
-#line 989 "parser.y"
+#line 990 "parser.y"
     { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
     break;
 
-  case 307:
+  case 308:
 
 /* Line 1455 of yacc.c  */
-#line 996 "parser.y"
+#line 997 "parser.y"
     { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); ;}
     break;
 
-  case 308:
+  case 309:
 
 /* Line 1455 of yacc.c  */
-#line 997 "parser.y"
+#line 998 "parser.y"
     { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); ;}
     break;
 
-  case 309:
+  case 310:
 
 /* Line 1455 of yacc.c  */
-#line 1001 "parser.y"
+#line 1002 "parser.y"
     { (yyval.declarator) = make_declarator(NULL); ;}
     break;
 
-  case 311:
+  case 312:
 
 /* Line 1455 of yacc.c  */
-#line 1009 "parser.y"
+#line 1010 "parser.y"
     { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); ;}
     break;
 
-  case 312:
+  case 313:
 
 /* Line 1455 of yacc.c  */
-#line 1010 "parser.y"
+#line 1011 "parser.y"
     { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); ;}
     break;
 
-  case 313:
+  case 314:
 
 /* Line 1455 of yacc.c  */
-#line 1011 "parser.y"
+#line 1012 "parser.y"
     { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); ;}
     break;
 
-  case 314:
+  case 315:
 
 /* Line 1455 of yacc.c  */
-#line 1012 "parser.y"
+#line 1013 "parser.y"
     { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(1) - (1)].expr)); ;}
     break;
 
-  case 315:
+  case 316:
 
 /* Line 1455 of yacc.c  */
-#line 1014 "parser.y"
+#line 1015 "parser.y"
     { (yyval.declarator) = make_declarator(NULL);
                                                  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(2) - (3)].var_list)));
                                                  (yyval.declarator)->type = NULL;
                                                ;}
     break;
 
-  case 316:
+  case 317:
 
 /* Line 1455 of yacc.c  */
-#line 1019 "parser.y"
+#line 1020 "parser.y"
     { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
                                                  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
                                                  (yyval.declarator)->type = NULL;
                                                ;}
     break;
 
-  case 317:
-
-/* Line 1455 of yacc.c  */
-#line 1026 "parser.y"
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); ;}
-    break;
-
   case 318:
 
 /* Line 1455 of yacc.c  */
 #line 1027 "parser.y"
-    { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); ;}
+    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); ;}
     break;
 
   case 319:
 
 /* Line 1455 of yacc.c  */
-#line 1030 "parser.y"
-    { (yyval.expr) = NULL; ;}
+#line 1028 "parser.y"
+    { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); ;}
     break;
 
   case 320:
 
 /* Line 1455 of yacc.c  */
 #line 1031 "parser.y"
-    { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
+    { (yyval.expr) = NULL; ;}
     break;
 
   case 321:
 
 /* Line 1455 of yacc.c  */
-#line 1034 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->bits = (yyvsp[(2) - (2)].expr);
-                                                 if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name)
-                                                   error_loc("unnamed fields are not allowed");
-                                               ;}
+#line 1032 "parser.y"
+    { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
     break;
 
   case 322:
 
 /* Line 1455 of yacc.c  */
-#line 1041 "parser.y"
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); ;}
+#line 1035 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->bits = (yyvsp[(2) - (2)].expr);
+                                                 if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name)
+                                                   error_loc("unnamed fields are not allowed\n");
+                                               ;}
     break;
 
   case 323:
 
 /* Line 1455 of yacc.c  */
-#line 1043 "parser.y"
-    { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); ;}
+#line 1042 "parser.y"
+    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); ;}
     break;
 
   case 324:
 
 /* Line 1455 of yacc.c  */
-#line 1047 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (1)].declarator); ;}
+#line 1044 "parser.y"
+    { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); ;}
     break;
 
   case 325:
 
 /* Line 1455 of yacc.c  */
 #line 1048 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (3)].declarator); (yyvsp[(1) - (3)].declarator)->var->eval = (yyvsp[(3) - (3)].expr); ;}
+    { (yyval.declarator) = (yyvsp[(1) - (1)].declarator); ;}
     break;
 
   case 326:
 
 /* Line 1455 of yacc.c  */
-#line 1052 "parser.y"
-    { (yyval.num) = RPC_FC_RP; ;}
+#line 1049 "parser.y"
+    { (yyval.declarator) = (yyvsp[(1) - (3)].declarator); (yyvsp[(1) - (3)].declarator)->var->eval = (yyvsp[(3) - (3)].expr); ;}
     break;
 
   case 327:
 
 /* Line 1455 of yacc.c  */
 #line 1053 "parser.y"
-    { (yyval.num) = RPC_FC_UP; ;}
+    { (yyval.num) = RPC_FC_RP; ;}
     break;
 
   case 328:
 
 /* Line 1455 of yacc.c  */
 #line 1054 "parser.y"
-    { (yyval.num) = RPC_FC_FP; ;}
+    { (yyval.num) = RPC_FC_UP; ;}
     break;
 
   case 329:
 
 /* Line 1455 of yacc.c  */
-#line 1057 "parser.y"
-    { (yyval.type) = type_new_struct((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); ;}
+#line 1055 "parser.y"
+    { (yyval.num) = RPC_FC_FP; ;}
     break;
 
   case 330:
 
 /* Line 1455 of yacc.c  */
-#line 1060 "parser.y"
-    { (yyval.type) = type_new_void(); ;}
+#line 1058 "parser.y"
+    { (yyval.type) = type_new_struct((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); ;}
     break;
 
   case 331:
 
 /* Line 1455 of yacc.c  */
 #line 1061 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
+    { (yyval.type) = type_new_void(); ;}
     break;
 
   case 332:
 
 /* Line 1455 of yacc.c  */
 #line 1062 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); ;}
+    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); ;}
     break;
 
   case 333:
@@ -4961,85 +4952,92 @@ yyreduce:
 
 /* Line 1455 of yacc.c  */
 #line 1064 "parser.y"
-    { (yyval.type) = type_new_enum((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
+    { (yyval.type) = (yyvsp[(1) - (1)].type); ;}
     break;
 
   case 335:
 
 /* Line 1455 of yacc.c  */
 #line 1065 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); ;}
+    { (yyval.type) = type_new_enum((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
     break;
 
   case 336:
 
 /* Line 1455 of yacc.c  */
 #line 1066 "parser.y"
-    { (yyval.type) = type_new_struct((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
+    { (yyval.type) = (yyvsp[(1) - (1)].type); ;}
     break;
 
   case 337:
 
 /* Line 1455 of yacc.c  */
 #line 1067 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); ;}
+    { (yyval.type) = type_new_struct((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
     break;
 
   case 338:
 
 /* Line 1455 of yacc.c  */
 #line 1068 "parser.y"
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
+    { (yyval.type) = (yyvsp[(1) - (1)].type); ;}
     break;
 
   case 339:
 
 /* Line 1455 of yacc.c  */
 #line 1069 "parser.y"
-    { (yyval.type) = make_safearray((yyvsp[(3) - (4)].type)); ;}
+    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (2)].str), FALSE, NULL); ;}
     break;
 
   case 340:
 
 /* Line 1455 of yacc.c  */
-#line 1073 "parser.y"
+#line 1070 "parser.y"
+    { (yyval.type) = make_safearray((yyvsp[(3) - (4)].type)); ;}
+    break;
+
+  case 341:
+
+/* Line 1455 of yacc.c  */
+#line 1074 "parser.y"
     { reg_typedefs((yyvsp[(3) - (4)].declspec), (yyvsp[(4) - (4)].declarator_list), check_typedef_attrs((yyvsp[(2) - (4)].attr_list)));
                                                  (yyval.statement) = make_statement_typedef((yyvsp[(4) - (4)].declarator_list));
                                                ;}
     break;
 
-  case 341:
+  case 342:
 
 /* Line 1455 of yacc.c  */
-#line 1079 "parser.y"
+#line 1080 "parser.y"
     { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); ;}
     break;
 
-  case 342:
+  case 343:
 
 /* Line 1455 of yacc.c  */
-#line 1082 "parser.y"
+#line 1083 "parser.y"
     { (yyval.type) = type_new_encapsulated_union((yyvsp[(2) - (10)].str), (yyvsp[(5) - (10)].var), (yyvsp[(7) - (10)].var), (yyvsp[(9) - (10)].var_list)); ;}
     break;
 
-  case 343:
+  case 344:
 
 /* Line 1455 of yacc.c  */
-#line 1086 "parser.y"
+#line 1087 "parser.y"
     { (yyval.num) = MAKEVERSION((yyvsp[(1) - (1)].num), 0); ;}
     break;
 
-  case 344:
+  case 345:
 
 /* Line 1455 of yacc.c  */
-#line 1087 "parser.y"
+#line 1088 "parser.y"
     { (yyval.num) = MAKEVERSION((yyvsp[(1) - (3)].num), (yyvsp[(3) - (3)].num)); ;}
     break;
 
 
 
 /* Line 1455 of yacc.c  */
-#line 5043 "parser.tab.c"
+#line 5041 "parser.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5251,7 +5249,7 @@ yyreturn:
 
 
 /* Line 1675 of yacc.c  */
-#line 1090 "parser.y"
+#line 1091 "parser.y"
 
 
 static void decl_builtin_basic(const char *name, enum type_basic_type type)
index 73f6993..1266e12 100644 (file)
      aDOUBLE = 262,
      aSTRING = 263,
      aWSTRING = 264,
-     aUUID = 265,
-     aEOF = 266,
-     SHL = 267,
-     SHR = 268,
-     MEMBERPTR = 269,
-     EQUALITY = 270,
-     INEQUALITY = 271,
-     GREATEREQUAL = 272,
-     LESSEQUAL = 273,
-     LOGICALOR = 274,
-     LOGICALAND = 275,
-     ELLIPSIS = 276,
-     tAGGREGATABLE = 277,
-     tALLOCATE = 278,
-     tANNOTATION = 279,
-     tAPPOBJECT = 280,
-     tASYNC = 281,
-     tASYNCUUID = 282,
-     tAUTOHANDLE = 283,
-     tBINDABLE = 284,
-     tBOOLEAN = 285,
-     tBROADCAST = 286,
-     tBYTE = 287,
-     tBYTECOUNT = 288,
-     tCALLAS = 289,
-     tCALLBACK = 290,
-     tCASE = 291,
-     tCDECL = 292,
-     tCHAR = 293,
-     tCOCLASS = 294,
-     tCODE = 295,
-     tCOMMSTATUS = 296,
-     tCONST = 297,
-     tCONTEXTHANDLE = 298,
-     tCONTEXTHANDLENOSERIALIZE = 299,
-     tCONTEXTHANDLESERIALIZE = 300,
-     tCONTROL = 301,
-     tCPPQUOTE = 302,
-     tDEFAULT = 303,
-     tDEFAULTCOLLELEM = 304,
-     tDEFAULTVALUE = 305,
-     tDEFAULTVTABLE = 306,
-     tDISPLAYBIND = 307,
-     tDISPINTERFACE = 308,
-     tDLLNAME = 309,
-     tDOUBLE = 310,
-     tDUAL = 311,
-     tENDPOINT = 312,
-     tENTRY = 313,
-     tENUM = 314,
-     tERRORSTATUST = 315,
-     tEXPLICITHANDLE = 316,
-     tEXTERN = 317,
-     tFALSE = 318,
-     tFASTCALL = 319,
-     tFLOAT = 320,
-     tHANDLE = 321,
-     tHANDLET = 322,
-     tHELPCONTEXT = 323,
-     tHELPFILE = 324,
-     tHELPSTRING = 325,
-     tHELPSTRINGCONTEXT = 326,
-     tHELPSTRINGDLL = 327,
-     tHIDDEN = 328,
-     tHYPER = 329,
-     tID = 330,
-     tIDEMPOTENT = 331,
-     tIIDIS = 332,
-     tIMMEDIATEBIND = 333,
-     tIMPLICITHANDLE = 334,
-     tIMPORT = 335,
-     tIMPORTLIB = 336,
-     tIN = 337,
-     tIN_LINE = 338,
-     tINLINE = 339,
-     tINPUTSYNC = 340,
-     tINT = 341,
-     tINT3264 = 342,
-     tINT64 = 343,
-     tINTERFACE = 344,
-     tLCID = 345,
-     tLENGTHIS = 346,
-     tLIBRARY = 347,
-     tLOCAL = 348,
-     tLONG = 349,
-     tMETHODS = 350,
-     tMODULE = 351,
-     tNONBROWSABLE = 352,
-     tNONCREATABLE = 353,
-     tNONEXTENSIBLE = 354,
-     tNULL = 355,
-     tOBJECT = 356,
-     tODL = 357,
-     tOLEAUTOMATION = 358,
-     tOPTIONAL = 359,
-     tOUT = 360,
-     tPASCAL = 361,
-     tPOINTERDEFAULT = 362,
-     tPROPERTIES = 363,
-     tPROPGET = 364,
-     tPROPPUT = 365,
-     tPROPPUTREF = 366,
-     tPTR = 367,
-     tPUBLIC = 368,
-     tRANGE = 369,
-     tREADONLY = 370,
-     tREF = 371,
-     tREGISTER = 372,
-     tREQUESTEDIT = 373,
-     tRESTRICTED = 374,
-     tRETVAL = 375,
-     tSAFEARRAY = 376,
-     tSHORT = 377,
-     tSIGNED = 378,
-     tSIZEIS = 379,
-     tSIZEOF = 380,
-     tSMALL = 381,
-     tSOURCE = 382,
-     tSTATIC = 383,
-     tSTDCALL = 384,
-     tSTRICTCONTEXTHANDLE = 385,
-     tSTRING = 386,
-     tSTRUCT = 387,
-     tSWITCH = 388,
-     tSWITCHIS = 389,
-     tSWITCHTYPE = 390,
-     tTRANSMITAS = 391,
-     tTRUE = 392,
-     tTYPEDEF = 393,
-     tUNION = 394,
-     tUNIQUE = 395,
-     tUNSIGNED = 396,
-     tUUID = 397,
-     tV1ENUM = 398,
-     tVARARG = 399,
-     tVERSION = 400,
-     tVOID = 401,
-     tWCHAR = 402,
-     tWIREMARSHAL = 403,
-     ADDRESSOF = 404,
-     NEG = 405,
-     POS = 406,
-     PPTR = 407,
-     CAST = 408
+     aSQSTRING = 265,
+     aUUID = 266,
+     aEOF = 267,
+     SHL = 268,
+     SHR = 269,
+     MEMBERPTR = 270,
+     EQUALITY = 271,
+     INEQUALITY = 272,
+     GREATEREQUAL = 273,
+     LESSEQUAL = 274,
+     LOGICALOR = 275,
+     LOGICALAND = 276,
+     ELLIPSIS = 277,
+     tAGGREGATABLE = 278,
+     tALLOCATE = 279,
+     tANNOTATION = 280,
+     tAPPOBJECT = 281,
+     tASYNC = 282,
+     tASYNCUUID = 283,
+     tAUTOHANDLE = 284,
+     tBINDABLE = 285,
+     tBOOLEAN = 286,
+     tBROADCAST = 287,
+     tBYTE = 288,
+     tBYTECOUNT = 289,
+     tCALLAS = 290,
+     tCALLBACK = 291,
+     tCASE = 292,
+     tCDECL = 293,
+     tCHAR = 294,
+     tCOCLASS = 295,
+     tCODE = 296,
+     tCOMMSTATUS = 297,
+     tCONST = 298,
+     tCONTEXTHANDLE = 299,
+     tCONTEXTHANDLENOSERIALIZE = 300,
+     tCONTEXTHANDLESERIALIZE = 301,
+     tCONTROL = 302,
+     tCPPQUOTE = 303,
+     tDEFAULT = 304,
+     tDEFAULTCOLLELEM = 305,
+     tDEFAULTVALUE = 306,
+     tDEFAULTVTABLE = 307,
+     tDISPLAYBIND = 308,
+     tDISPINTERFACE = 309,
+     tDLLNAME = 310,
+     tDOUBLE = 311,
+     tDUAL = 312,
+     tENDPOINT = 313,
+     tENTRY = 314,
+     tENUM = 315,
+     tERRORSTATUST = 316,
+     tEXPLICITHANDLE = 317,
+     tEXTERN = 318,
+     tFALSE = 319,
+     tFASTCALL = 320,
+     tFLOAT = 321,
+     tHANDLE = 322,
+     tHANDLET = 323,
+     tHELPCONTEXT = 324,
+     tHELPFILE = 325,
+     tHELPSTRING = 326,
+     tHELPSTRINGCONTEXT = 327,
+     tHELPSTRINGDLL = 328,
+     tHIDDEN = 329,
+     tHYPER = 330,
+     tID = 331,
+     tIDEMPOTENT = 332,
+     tIIDIS = 333,
+     tIMMEDIATEBIND = 334,
+     tIMPLICITHANDLE = 335,
+     tIMPORT = 336,
+     tIMPORTLIB = 337,
+     tIN = 338,
+     tIN_LINE = 339,
+     tINLINE = 340,
+     tINPUTSYNC = 341,
+     tINT = 342,
+     tINT3264 = 343,
+     tINT64 = 344,
+     tINTERFACE = 345,
+     tLCID = 346,
+     tLENGTHIS = 347,
+     tLIBRARY = 348,
+     tLOCAL = 349,
+     tLONG = 350,
+     tMETHODS = 351,
+     tMODULE = 352,
+     tNONBROWSABLE = 353,
+     tNONCREATABLE = 354,
+     tNONEXTENSIBLE = 355,
+     tNULL = 356,
+     tOBJECT = 357,
+     tODL = 358,
+     tOLEAUTOMATION = 359,
+     tOPTIONAL = 360,
+     tOUT = 361,
+     tPASCAL = 362,
+     tPOINTERDEFAULT = 363,
+     tPROPERTIES = 364,
+     tPROPGET = 365,
+     tPROPPUT = 366,
+     tPROPPUTREF = 367,
+     tPTR = 368,
+     tPUBLIC = 369,
+     tRANGE = 370,
+     tREADONLY = 371,
+     tREF = 372,
+     tREGISTER = 373,
+     tREQUESTEDIT = 374,
+     tRESTRICTED = 375,
+     tRETVAL = 376,
+     tSAFEARRAY = 377,
+     tSHORT = 378,
+     tSIGNED = 379,
+     tSIZEIS = 380,
+     tSIZEOF = 381,
+     tSMALL = 382,
+     tSOURCE = 383,
+     tSTATIC = 384,
+     tSTDCALL = 385,
+     tSTRICTCONTEXTHANDLE = 386,
+     tSTRING = 387,
+     tSTRUCT = 388,
+     tSWITCH = 389,
+     tSWITCHIS = 390,
+     tSWITCHTYPE = 391,
+     tTRANSMITAS = 392,
+     tTRUE = 393,
+     tTYPEDEF = 394,
+     tUNION = 395,
+     tUNIQUE = 396,
+     tUNSIGNED = 397,
+     tUUID = 398,
+     tV1ENUM = 399,
+     tVARARG = 400,
+     tVERSION = 401,
+     tVOID = 402,
+     tWCHAR = 403,
+     tWIREMARSHAL = 404,
+     ADDRESSOF = 405,
+     NEG = 406,
+     POS = 407,
+     PPTR = 408,
+     CAST = 409
    };
 #endif
 
@@ -232,7 +233,7 @@ typedef union YYSTYPE
 
 
 /* Line 1676 of yacc.c  */
-#line 236 "parser.tab.h"
+#line 237 "parser.tab.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index de44ab5..2af7742 100644 (file)
@@ -186,7 +186,7 @@ static statement_list_t *append_statement(statement_list_t *list, statement_t *s
 %token <str> aKNOWNTYPE
 %token <num> aNUM aHEXNUM
 %token <dbl> aDOUBLE
-%token <str> aSTRING aWSTRING
+%token <str> aSTRING aWSTRING aSQSTRING
 %token <uuid> aUUID
 %token aEOF
 %token SHL SHR
@@ -632,6 +632,7 @@ expr:         aNUM                                  { $$ = make_exprl(EXPR_NUM, $1); }
        | tTRUE                                 { $$ = make_exprl(EXPR_TRUEFALSE, 1); }
        | aSTRING                               { $$ = make_exprs(EXPR_STRLIT, $1); }
        | aWSTRING                              { $$ = make_exprs(EXPR_WSTRLIT, $1); }
+       | aSQSTRING                             { $$ = make_exprs(EXPR_CHARCONST, $1); }
        | aIDENTIFIER                           { $$ = make_exprs(EXPR_IDENTIFIER, $1); }
        | expr '?' expr ':' expr                { $$ = make_expr3(EXPR_COND, $1, $3, $5); }
        | expr LOGICALOR expr                   { $$ = make_expr2(EXPR_LOGOR, $1, $3); }
@@ -841,7 +842,7 @@ dispinterfacedef: dispinterfacehdr '{'
        ;
 
 inherit:                                       { $$ = NULL; }
-       | ':' aKNOWNTYPE                        { $$ = find_type_or_error2($2, 0); }
+       | ':' aKNOWNTYPE                        { $$ = find_type_or_error2($2, 0); is_object_interface = 1; }
        ;
 
 interface: tINTERFACE aIDENTIFIER              { $$ = get_type(TYPE_INTERFACE, $2, 0); }
@@ -852,9 +853,9 @@ interfacehdr: attributes interface          { $$.interface = $2;
                                                  $$.old_pointer_default = pointer_default;
                                                  if (is_attr($1, ATTR_POINTERDEFAULT))
                                                    pointer_default = get_attrv($1, ATTR_POINTERDEFAULT);
-                                                 is_object_interface = is_object($1);
                                                  check_def($2);
                                                  $2->attrs = check_iface_attrs($2->name, $1);
+                                                 is_object_interface = is_object($2);
                                                  $2->defined = TRUE;
                                                }
        ;
@@ -1033,7 +1034,7 @@ m_bitfield:                                       { $$ = NULL; }
 
 struct_declarator: any_declarator m_bitfield   { $$ = $1; $$->bits = $2;
                                                  if (!$$->bits && !$$->var->name)
-                                                   error_loc("unnamed fields are not allowed");
+                                                   error_loc("unnamed fields are not allowed\n");
                                                }
        ;
 
index 9cb425c..2bf33f6 100644 (file)
@@ -301,26 +301,26 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 33
-#define YY_END_OF_BUFFER 34
-static yyconst short int yy_accept[142] =
+#define YY_NUM_RULES 36
+#define YY_END_OF_BUFFER 37
+static yyconst short int yy_accept[148] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    2,    2,
-       34,   32,   21,   20,   32,    3,   32,   32,   32,   16,
-       16,   32,   32,   32,   19,   19,   19,   11,   32,   21,
-        1,   10,   33,    4,   10,    6,   16,   16,   13,   13,
-       13,   12,    2,   26,   30,   24,    0,    0,   16,   16,
-       16,    0,   22,   28,   25,   27,   23,   19,    5,   19,
-       29,    0,    1,    1,    9,    8,    7,   16,    0,   13,
-       13,    2,   31,   17,   16,   16,   15,   19,   16,    0,
-       13,    0,   15,   15,   19,   16,    0,   13,    0,   17,
-       15,   15,   19,   16,    0,   13,   19,   16,    0,   13,
-
-       19,   16,    0,   13,   19,   16,    0,   13,   19,    0,
-       16,    0,   18,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   37,   35,   24,   23,   35,    3,   35,    7,
+       35,   35,   19,   19,   35,   35,   35,   22,   22,   22,
+       14,   35,   24,    1,   13,   36,    4,   13,    6,   19,
+       19,   16,   16,   16,   15,    2,    8,   13,   29,   33,
+       27,    0,    0,   19,   19,   19,    0,   25,   31,   28,
+       30,   26,   22,    5,   22,   32,    0,    1,    1,   12,
+       10,    9,   19,    0,   16,   16,    2,   11,   34,   20,
+       19,   19,   18,   22,   19,    0,   16,    0,   18,   18,
+       22,   19,    0,   16,    0,   20,   18,   18,   22,   19,
+
+        0,   16,   22,   19,    0,   16,   22,   19,    0,   16,
+       22,   19,    0,   16,   22,    0,   19,    0,   21,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   14,
-        0
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   17,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -328,17 +328,17 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    2,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    4,    5,    6,    1,    1,    7,    1,    8,
-        1,    1,    9,    1,   10,   11,    1,   12,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,    1,    1,   14,
-       15,   16,    1,    1,   17,   18,   18,   18,   19,   20,
-       21,   21,   21,   21,   21,   22,   21,   21,   21,   21,
-       21,   23,   24,   21,   25,   21,   21,   26,   27,   21,
-       28,   29,   30,    1,   21,    1,   18,   18,   18,   18,
-
-       31,   18,   21,   21,   21,   21,   21,   32,   21,   21,
-       21,   21,   21,   21,   21,   21,   33,   21,   21,   34,
-       21,   21,    1,   35,    1,    1,    1,    1,    1,    1,
+        1,    2,    4,    5,    6,    1,    1,    7,    8,    9,
+        1,    1,   10,    1,   11,   12,    1,   13,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,    1,    1,   15,
+       16,   17,    1,    1,   18,   19,   19,   19,   20,   21,
+       22,   22,   22,   22,   22,   23,   22,   22,   22,   22,
+       22,   24,   25,   22,   26,   22,   22,   27,   28,   22,
+       29,   30,   31,    1,   22,    1,   19,   19,   19,   19,
+
+       32,   19,   22,   22,   22,   22,   22,   33,   22,   22,
+       22,   22,   22,   22,   22,   22,   34,   22,   22,   35,
+       22,   22,    1,   36,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -355,182 +355,182 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[36] =
+static yyconst int yy_meta[37] =
     {   0,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    3,    3,    1,    1,    1,    3,    3,    3,    3,
-        4,    4,    4,    4,    4,    4,    4,    1,    1,    1,
-        3,    4,    4,    4,    1
+        1,    1,    3,    3,    1,    1,    1,    3,    3,    3,
+        3,    4,    4,    4,    4,    4,    4,    4,    1,    1,
+        1,    3,    4,    4,    4,    1
     } ;
 
-static yyconst short int yy_base[178] =
+static yyconst short int yy_base[184] =
     {   0,
-        0,   34,   34,   38,   39,   42,   71,   44,  270,  269,
-      271,  491,  491,  491,  255,  491,  258,  248,  252,   96,
-       22,   37,  242,   38,    0,  251,  238,  491,  219,   53,
-      251,  491,  491,  491,   33,  491,  119,   23,  142,  165,
-      246,  491,    0,  491,  491,  491,  239,   48,    0,   33,
-       88,    0,  491,  491,  491,  491,  491,    0,  491,  228,
-      491,   63,  241,  240,  491,  491,  491,  185,    0,  207,
-        0,    0,  491,  104,  491,  491,  124,  222,  227,    0,
-      249,  102,   94,  102,  220,  269,    0,  291,  113,  168,
-      491,  491,  213,  311,    0,  333,  212,  353,    0,  375,
-
-      217,  395,    0,  417,  206,  439,  222,  221,   62,    0,
-      220,  140,  491,    0,    0,    0,  219,    0,    0,    0,
-        0,  218,    0,    0,    0,    0,  213,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  491,
-      491,  472,  476,  478,  482,  486,  219,  218,  212,  211,
-      210,  209,  208,  206,  205,  203,  198,  197,  192,  191,
-      190,  189,  188,  187,  186,  185,  183,  176,  169,  168,
-      167,  155,  144,  140,  137,  130,  110
+        0,   35,   35,   39,   40,   43,   61,   45,  262,  261,
+       46,   47,  263,  481,  481,  481,  246,  481,  254,  481,
+      243,  243,   85,   25,   41,  238,   42,    0,  248,  229,
+      481,  210,   60,  243,  481,  481,  481,   34,  481,  108,
+       26,  131,  154,  239,  481,    0,  481,   60,  481,  481,
+      481,  231,   58,    0,   75,   77,    0,  481,  481,  481,
+      481,  481,    0,  481,  220,  481,   61,  238,  236,  481,
+      481,  481,  174,    0,  196,    0,    0,  481,  481,   93,
+      481,  481,  113,  213,  216,    0,  238,  166,   89,   81,
+      214,  258,    0,  280,   89,  169,  481,  481,  207,  300,
+
+        0,  322,  203,  342,    0,  364,  208,  384,    0,  406,
+      197,  428,  213,  212,  115,    0,  211,  128,  481,    0,
+        0,    0,  210,    0,    0,    0,    0,  209,    0,    0,
+        0,    0,  208,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  481,  481,  462,  466,  468,
+      472,  476,  215,  210,  209,  208,  202,  201,  200,  199,
+      196,  195,  193,  188,  187,  182,  181,  178,  175,  168,
+      167,  166,  159,  158,  157,  145,  135,  130,  129,  113,
+      102,   88,   75
     } ;
 
-static yyconst short int yy_def[178] =
+static yyconst short int yy_def[184] =
     {   0,
-      141,    1,  142,  142,  142,  142,  141,    7,  143,  143,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-       20,  141,  141,  141,  144,  144,  144,  141,  141,  141,
-      141,  141,  141,  141,  145,  141,  141,   37,  141,   39,
-       40,  141,  146,  141,  141,  141,  141,  141,   21,  141,
-      141,  147,  141,  141,  141,  141,  141,  144,  141,  144,
-      141,  141,  141,  141,  141,  141,  141,  141,  148,   40,
-       40,  146,  141,  141,  141,  141,  147,  144,  141,  149,
-       40,  141,  141,  141,  144,  141,  150,   40,  141,  141,
-      141,  141,  144,  141,  151,   40,  144,  141,  152,   40,
-
-      144,  141,  153,   40,  144,  141,  141,   40,  144,  154,
-      106,  141,  141,  155,  156,  157,  141,  158,  159,  160,
-      161,  141,  162,  163,  164,  165,  141,  166,  167,  168,
-      169,  170,  171,  172,  173,  174,  175,  176,  177,  141,
-        0,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141
+      147,    1,  148,  148,  148,  148,    1,    7,  149,  149,
+      148,  148,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147,   23,  147,  147,  147,  150,  150,  150,
+      147,  147,  147,  147,  147,  147,  147,  151,  147,  147,
+       40,  147,   42,   43,  147,  152,  147,  151,  147,  147,
+      147,  147,  147,   24,  147,  147,  153,  147,  147,  147,
+      147,  147,  150,  147,  150,  147,  147,  147,  147,  147,
+      147,  147,  147,  154,   43,   43,  152,  147,  147,  147,
+      147,  147,  153,  150,  147,  155,   43,  147,  147,  147,
+      150,  147,  156,   43,  147,  147,  147,  147,  150,  147,
+
+      157,   43,  150,  147,  158,   43,  150,  147,  159,   43,
+      150,  147,  147,   43,  150,  160,  112,  147,  147,  161,
+      162,  163,  147,  164,  165,  166,  167,  147,  168,  169,
+      170,  171,  147,  172,  173,  174,  175,  176,  177,  178,
+      179,  180,  181,  182,  183,  147,    0,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147
     } ;
 
-static yyconst short int yy_nxt[527] =
+static yyconst short int yy_nxt[518] =
     {   0,
-       12,   13,   14,   15,   16,   12,   17,   12,   12,   18,
-       19,   20,   21,   22,   23,   24,   25,   25,   25,   25,
-       25,   26,   25,   27,   25,   25,   25,   28,   12,   12,
-       25,   25,   25,   25,   29,   30,   33,   66,   34,   31,
-       33,   33,   34,   36,   33,   30,   36,  141,  141,   31,
-       53,   54,   56,   57,   62,  141,  141,   75,   63,   74,
-       74,   67,   35,  112,   62,   75,   35,   35,   63,  113,
-       35,   12,   13,   14,   15,   16,   12,   17,   12,   12,
-       18,   19,   37,   38,   22,   23,   24,   39,   39,   39,
-       39,   40,   41,   40,   40,   40,   40,   40,   28,   12,
-
-       42,   39,   40,   40,   40,   29,   48,   49,   49,   76,
-       89,   89,  140,   90,   90,   74,   74,   50,   91,   76,
-       51,   52,   82,   92,   90,   90,   91,   50,   51,   52,
-       68,   68,  139,   92,   82,   69,   69,   69,   69,  138,
-       50,  112,  137,   51,   52,   83,  136,  113,   84,   69,
-       50,   51,   52,   70,   70,   83,   84,  135,   70,   70,
-       70,   70,   71,   71,   71,   71,   71,   71,   71,  134,
-      133,  132,   70,   71,   71,   71,   71,   71,  131,   90,
-       90,   71,   71,   71,   71,  130,   82,  129,  127,  126,
-      125,  124,  122,  121,  120,   71,   79,   79,   82,  119,
-
-      117,   80,   80,   80,   80,  116,   50,  115,  114,   51,
-      107,  103,   99,   95,   87,   80,   50,   51,   81,   81,
-       80,   77,  128,   81,   81,   81,   81,  123,  118,  141,
-      110,  110,  109,  105,  101,   97,   93,   81,   86,   86,
-       85,   64,   64,   87,   87,   87,   87,   78,   50,   73,
-       59,   51,   64,   61,   60,   59,   55,   87,   50,   51,
-       88,   88,   47,   46,   45,   88,   88,   88,   88,   44,
-      141,   33,   33,  141,  141,  141,  141,  141,  141,   88,
-       94,   94,  141,  141,  141,   95,   95,   95,   95,  141,
-       50,  141,  141,   51,  141,  141,  141,  141,  141,   95,
-
-       50,   51,   96,   96,  141,  141,  141,   96,   96,   96,
-       96,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,   96,   98,   98,  141,  141,  141,   99,   99,   99,
-       99,  141,   50,  141,  141,   51,  141,  141,  141,  141,
-      141,   99,   50,   51,  100,  100,  141,  141,  141,  100,
-      100,  100,  100,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  100,  102,  102,  141,  141,  141,  103,
-      103,  103,  103,  141,   50,  141,  141,   51,  141,  141,
-      141,  141,  141,  103,   50,   51,  104,  104,  141,  141,
-      141,  104,  104,  104,  104,  141,  141,  141,  141,  141,
-
-      141,  141,  141,  141,  141,  104,  106,  106,  141,  141,
-      141,  107,  107,  107,  107,  141,   50,  141,  141,   51,
-      141,  141,  141,  141,  141,  107,   50,   51,  108,  108,
-      141,  141,  141,  108,  108,  108,  108,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  108,  110,  141,
-      111,  111,  141,  141,  141,  141,  141,  141,  141,  141,
-       50,  141,  141,   51,  141,  141,  141,  141,  141,  141,
-       50,   51,   32,   32,   32,   32,   43,   43,   43,   43,
-       58,   58,   65,  141,   65,   65,   72,  141,   72,   72,
-       11,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141
+       14,   15,   16,   17,   18,   14,   19,   20,   14,   14,
+       21,   22,   23,   24,   25,   26,   27,   28,   28,   28,
+       28,   28,   29,   28,   30,   28,   28,   28,   31,   14,
+       14,   28,   28,   28,   28,   32,   33,   36,   71,   37,
+       34,   36,   36,   37,   39,   36,   33,   39,   36,   36,
+       34,  147,  147,   47,   47,   58,   59,   61,   62,  147,
+      147,   67,   67,   72,   38,   68,   68,   78,   38,   38,
+       80,   80,   38,   40,   41,   48,   48,  146,   42,   42,
+       42,   42,   43,   44,   43,   43,   43,   43,   43,   72,
+      145,   45,   42,   43,   43,   43,   53,   54,   54,   82,
+
+       81,   96,   96,   98,  144,   80,   80,   55,   81,   82,
+       56,   57,   88,   98,   97,  143,  118,   55,   56,   57,
+       73,   73,   97,  119,   88,   74,   74,   74,   74,  118,
+       55,  142,  141,   56,   57,   89,  119,  140,   90,   74,
+       55,   56,   57,   75,   75,   89,   90,  139,   75,   75,
+       75,   75,   76,   76,   76,   76,   76,   76,   76,  138,
+      137,  136,   75,   76,   76,   76,   76,   76,  135,  133,
+      132,   76,   76,   76,   76,   95,   95,  131,   96,   96,
+      130,   96,   96,  128,  127,   76,   85,   85,   88,  126,
+      125,   86,   86,   86,   86,  123,   55,  122,  121,   56,
+
+       88,  120,  113,  109,  105,   86,   55,   56,   87,   87,
+      101,   93,   86,   87,   87,   87,   87,   83,  134,  129,
+      124,  147,  116,  116,  115,  111,  107,   87,   92,   92,
+      103,   99,   91,   93,   93,   93,   93,   69,   55,   69,
+       84,   56,   79,   64,   69,   66,   65,   93,   55,   56,
+       94,   94,   64,   60,   52,   94,   94,   94,   94,   51,
+       50,   49,  147,   36,   36,  147,  147,  147,  147,   94,
+      100,  100,  147,  147,  147,  101,  101,  101,  101,  147,
+       55,  147,  147,   56,  147,  147,  147,  147,  147,  101,
+       55,   56,  102,  102,  147,  147,  147,  102,  102,  102,
+
+      102,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  102,  104,  104,  147,  147,  147,  105,  105,  105,
+      105,  147,   55,  147,  147,   56,  147,  147,  147,  147,
+      147,  105,   55,   56,  106,  106,  147,  147,  147,  106,
+      106,  106,  106,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147,  106,  108,  108,  147,  147,  147,  109,
+      109,  109,  109,  147,   55,  147,  147,   56,  147,  147,
+      147,  147,  147,  109,   55,   56,  110,  110,  147,  147,
+      147,  110,  110,  110,  110,  147,  147,  147,  147,  147,
+      147,  147,  147,  147,  147,  110,  112,  112,  147,  147,
+
+      147,  113,  113,  113,  113,  147,   55,  147,  147,   56,
+      147,  147,  147,  147,  147,  113,   55,   56,  114,  114,
+      147,  147,  147,  114,  114,  114,  114,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147,  114,  116,  147,
+      117,  117,  147,  147,  147,  147,  147,  147,  147,  147,
+       55,  147,  147,   56,  147,  147,  147,  147,  147,  147,
+       55,   56,   35,   35,   35,   35,   46,   46,   46,   46,
+       63,   63,   70,  147,   70,   70,   77,  147,   77,   77,
+       13,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147
     } ;
 
-static yyconst short int yy_chk[527] =
+static yyconst short int yy_chk[518] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    2,    3,   35,    3,    2,
-        4,    5,    4,    5,    6,    8,    6,   21,   38,    8,
-       22,   22,   24,   24,   30,   21,   38,   50,   30,   48,
-       48,   35,    3,  109,   62,   50,    4,    5,   62,  109,
-        6,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-
-        7,    7,    7,    7,    7,    7,   20,   20,   20,   51,
-       82,   82,  177,   82,   82,   74,   74,   20,   83,   51,
-       20,   20,   74,   84,   89,   89,   83,   20,   20,   20,
-       37,   37,  176,   84,   74,   37,   37,   37,   37,  175,
-       37,  112,  174,   37,   37,   77,  173,  112,   77,   37,
-       37,   37,   37,   39,   39,   77,   77,  172,   39,   39,
-       39,   39,   39,   39,   39,   39,   39,   39,   39,  171,
-      170,  169,   39,   39,   39,   39,   40,   40,  168,   90,
-       90,   40,   40,   40,   40,  167,   90,  166,  165,  164,
-      163,  162,  161,  160,  159,   40,   68,   68,   90,  158,
-
-      157,   68,   68,   68,   68,  156,   68,  155,  154,   68,
-      153,  152,  151,  150,  149,   68,   68,   68,   70,   70,
-      148,  147,  127,   70,   70,   70,   70,  122,  117,  111,
-      108,  107,  105,  101,   97,   93,   85,   70,   79,   79,
-       78,   64,   63,   79,   79,   79,   79,   60,   79,   47,
-       41,   79,   31,   29,   27,   26,   23,   79,   79,   79,
-       81,   81,   19,   18,   17,   81,   81,   81,   81,   15,
-       11,   10,    9,    0,    0,    0,    0,    0,    0,   81,
-       86,   86,    0,    0,    0,   86,   86,   86,   86,    0,
-       86,    0,    0,   86,    0,    0,    0,    0,    0,   86,
-
-       86,   86,   88,   88,    0,    0,    0,   88,   88,   88,
-       88,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   88,   94,   94,    0,    0,    0,   94,   94,   94,
-       94,    0,   94,    0,    0,   94,    0,    0,    0,    0,
-        0,   94,   94,   94,   96,   96,    0,    0,    0,   96,
-       96,   96,   96,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   96,   98,   98,    0,    0,    0,   98,
-       98,   98,   98,    0,   98,    0,    0,   98,    0,    0,
-        0,    0,    0,   98,   98,   98,  100,  100,    0,    0,
-        0,  100,  100,  100,  100,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,  100,  102,  102,    0,    0,
-        0,  102,  102,  102,  102,    0,  102,    0,    0,  102,
-        0,    0,    0,    0,    0,  102,  102,  102,  104,  104,
-        0,    0,    0,  104,  104,  104,  104,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  104,  106,    0,
-      106,  106,    0,    0,    0,    0,    0,    0,    0,    0,
-      106,    0,    0,  106,    0,    0,    0,    0,    0,    0,
-      106,  106,  142,  142,  142,  142,  143,  143,  143,  143,
-      144,  144,  145,    0,  145,  145,  146,    0,  146,  146,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
-      141,  141,  141,  141,  141,  141
+        1,    1,    1,    1,    1,    1,    2,    3,   38,    3,
+        2,    4,    5,    4,    5,    6,    8,    6,   11,   12,
+        8,   24,   41,   11,   12,   25,   25,   27,   27,   24,
+       41,   33,   67,   38,    3,   33,   67,   48,    4,    5,
+       53,   53,    6,    7,    7,   11,   12,  183,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,   48,
+      182,    7,    7,    7,    7,    7,   23,   23,   23,   56,
+
+       55,   95,   95,   90,  181,   80,   80,   23,   55,   56,
+       23,   23,   80,   90,   89,  180,  115,   23,   23,   23,
+       40,   40,   89,  115,   80,   40,   40,   40,   40,  118,
+       40,  179,  178,   40,   40,   83,  118,  177,   83,   40,
+       40,   40,   40,   42,   42,   83,   83,  176,   42,   42,
+       42,   42,   42,   42,   42,   42,   42,   42,   42,  175,
+      174,  173,   42,   42,   42,   42,   43,   43,  172,  171,
+      170,   43,   43,   43,   43,   88,   88,  169,   88,   88,
+      168,   96,   96,  167,  166,   43,   73,   73,   96,  165,
+      164,   73,   73,   73,   73,  163,   73,  162,  161,   73,
+
+       96,  160,  159,  158,  157,   73,   73,   73,   75,   75,
+      156,  155,  154,   75,   75,   75,   75,  153,  133,  128,
+      123,  117,  114,  113,  111,  107,  103,   75,   85,   85,
+       99,   91,   84,   85,   85,   85,   85,   69,   85,   68,
+       65,   85,   52,   44,   34,   32,   30,   85,   85,   85,
+       87,   87,   29,   26,   22,   87,   87,   87,   87,   21,
+       19,   17,   13,   10,    9,    0,    0,    0,    0,   87,
+       92,   92,    0,    0,    0,   92,   92,   92,   92,    0,
+       92,    0,    0,   92,    0,    0,    0,    0,    0,   92,
+       92,   92,   94,   94,    0,    0,    0,   94,   94,   94,
+
+       94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   94,  100,  100,    0,    0,    0,  100,  100,  100,
+      100,    0,  100,    0,    0,  100,    0,    0,    0,    0,
+        0,  100,  100,  100,  102,  102,    0,    0,    0,  102,
+      102,  102,  102,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  102,  104,  104,    0,    0,    0,  104,
+      104,  104,  104,    0,  104,    0,    0,  104,    0,    0,
+        0,    0,    0,  104,  104,  104,  106,  106,    0,    0,
+        0,  106,  106,  106,  106,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  106,  108,  108,    0,    0,
+
+        0,  108,  108,  108,  108,    0,  108,    0,    0,  108,
+        0,    0,    0,    0,    0,  108,  108,  108,  110,  110,
+        0,    0,    0,  110,  110,  110,  110,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  110,  112,    0,
+      112,  112,    0,    0,    0,    0,    0,    0,    0,    0,
+      112,    0,    0,  112,    0,    0,    0,    0,    0,    0,
+      112,  112,  148,  148,  148,  148,  149,  149,  149,  149,
+      150,  150,  151,    0,  151,  151,  152,    0,  152,  152,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+
+      147,  147,  147,  147,  147,  147,  147,  147,  147,  147,
+      147,  147,  147,  147,  147,  147,  147
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -578,7 +578,9 @@ char *yytext;
 
 #define PP_LINE 4
 
-#line 42 "parser.l"
+#define SQUOTE 5
+
+#line 43 "parser.l"
 
 #include "config.h"
 
@@ -603,8 +605,6 @@ char *yytext;
 
 #include "parser.tab.h"
 
-extern char *temp_name;
-
 static void addcchar(char c);
 static char *get_buffered_cstring(void);
 
@@ -816,7 +816,7 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
 
-#line 127 "parser.l"
+#line 126 "parser.l"
 
 #line 822 "parser.yy.c"
 
@@ -870,13 +870,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 142 )
+                               if ( yy_current_state >= 148 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 491 );
+               while ( yy_base[yy_current_state] != 481 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -904,12 +904,12 @@ do_action:        /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 128 "parser.l"
+#line 127 "parser.l"
 yy_push_state(PP_LINE);
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 129 "parser.l"
+#line 128 "parser.l"
 {
                             int lineno;
                             char *cptr, *fname;
@@ -932,12 +932,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 148 "parser.l"
+#line 147 "parser.l"
 yy_push_state(QUOTE); cbufidx = 0;
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 149 "parser.l"
+#line 148 "parser.l"
 {
                                yy_pop_state();
                                parser_lval.str = get_buffered_cstring();
@@ -946,12 +946,12 @@ YY_RULE_SETUP
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 154 "parser.l"
+#line 153 "parser.l"
 yy_push_state(WSTRQUOTE);
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 155 "parser.l"
+#line 154 "parser.l"
 {
                                yy_pop_state();
                                parser_lval.str = get_buffered_cstring();
@@ -959,145 +959,164 @@ YY_RULE_SETUP
                        }
        YY_BREAK
 case 7:
-#line 161 "parser.l"
+YY_RULE_SETUP
+#line 159 "parser.l"
+yy_push_state(SQUOTE); cbufidx = 0;
+       YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 161 "parser.l"
-addcchar(yytext[1]);
+#line 160 "parser.l"
+{
+                               yy_pop_state();
+                               parser_lval.str = get_buffered_cstring();
+                               return aSQSTRING;
+                       }
        YY_BREAK
 case 9:
+#line 166 "parser.l"
+case 10:
+YY_RULE_SETUP
+#line 166 "parser.l"
+addcchar(yytext[1]);
+       YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 167 "parser.l"
+addcchar(yytext[1]);
+       YY_BREAK
+case 12:
 YY_RULE_SETUP
-#line 162 "parser.l"
+#line 168 "parser.l"
 addcchar('\\'); addcchar(yytext[1]);
        YY_BREAK
-case 10:
+case 13:
 YY_RULE_SETUP
-#line 163 "parser.l"
+#line 169 "parser.l"
 addcchar(yytext[0]);
        YY_BREAK
-case 11:
+case 14:
 YY_RULE_SETUP
-#line 164 "parser.l"
+#line 170 "parser.l"
 yy_push_state(ATTR); return '[';
        YY_BREAK
-case 12:
+case 15:
 YY_RULE_SETUP
-#line 165 "parser.l"
+#line 171 "parser.l"
 yy_pop_state(); return ']';
        YY_BREAK
-case 13:
+case 16:
 YY_RULE_SETUP
-#line 166 "parser.l"
+#line 172 "parser.l"
 return attr_token(yytext);
        YY_BREAK
-case 14:
+case 17:
 YY_RULE_SETUP
-#line 167 "parser.l"
+#line 173 "parser.l"
 {
                                parser_lval.uuid = parse_uuid(yytext);
                                return aUUID;
                        }
        YY_BREAK
-case 15:
+case 18:
 YY_RULE_SETUP
-#line 171 "parser.l"
+#line 177 "parser.l"
 {
                                parser_lval.num = xstrtoul(yytext, NULL, 0);
                                return aHEXNUM;
                        }
        YY_BREAK
-case 16:
+case 19:
 YY_RULE_SETUP
-#line 175 "parser.l"
+#line 181 "parser.l"
 {
                                parser_lval.num = xstrtoul(yytext, NULL, 0);
                                return aNUM;
                        }
        YY_BREAK
-case 17:
+case 20:
 YY_RULE_SETUP
-#line 179 "parser.l"
+#line 185 "parser.l"
 {
                                parser_lval.dbl = strtod(yytext, NULL);
                                return aDOUBLE;
                        }
        YY_BREAK
-case 18:
+case 21:
 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
 yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 183 "parser.l"
+#line 189 "parser.l"
 return tSAFEARRAY;
        YY_BREAK
-case 19:
+case 22:
 YY_RULE_SETUP
-#line 184 "parser.l"
+#line 190 "parser.l"
 return kw_token(yytext);
        YY_BREAK
-case 20:
+case 23:
 YY_RULE_SETUP
-#line 185 "parser.l"
+#line 191 "parser.l"
 line_number++;
        YY_BREAK
-case 21:
+case 24:
 YY_RULE_SETUP
-#line 186 "parser.l"
+#line 192 "parser.l"
 
        YY_BREAK
-case 22:
+case 25:
 YY_RULE_SETUP
-#line 187 "parser.l"
+#line 193 "parser.l"
 return SHL;
        YY_BREAK
-case 23:
+case 26:
 YY_RULE_SETUP
-#line 188 "parser.l"
+#line 194 "parser.l"
 return SHR;
        YY_BREAK
-case 24:
+case 27:
 YY_RULE_SETUP
-#line 189 "parser.l"
+#line 195 "parser.l"
 return MEMBERPTR;
        YY_BREAK
-case 25:
+case 28:
 YY_RULE_SETUP
-#line 190 "parser.l"
+#line 196 "parser.l"
 return EQUALITY;
        YY_BREAK
-case 26:
+case 29:
 YY_RULE_SETUP
-#line 191 "parser.l"
+#line 197 "parser.l"
 return INEQUALITY;
        YY_BREAK
-case 27:
+case 30:
 YY_RULE_SETUP
-#line 192 "parser.l"
+#line 198 "parser.l"
 return GREATEREQUAL;
        YY_BREAK
-case 28:
+case 31:
 YY_RULE_SETUP
-#line 193 "parser.l"
+#line 199 "parser.l"
 return LESSEQUAL;
        YY_BREAK
-case 29:
+case 32:
 YY_RULE_SETUP
-#line 194 "parser.l"
+#line 200 "parser.l"
 return LOGICALOR;
        YY_BREAK
-case 30:
+case 33:
 YY_RULE_SETUP
-#line 195 "parser.l"
+#line 201 "parser.l"
 return LOGICALAND;
        YY_BREAK
-case 31:
+case 34:
 YY_RULE_SETUP
-#line 196 "parser.l"
+#line 202 "parser.l"
 return ELLIPSIS;
        YY_BREAK
-case 32:
+case 35:
 YY_RULE_SETUP
-#line 197 "parser.l"
+#line 203 "parser.l"
 return yytext[0];
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
@@ -1105,19 +1124,20 @@ case YY_STATE_EOF(QUOTE):
 case YY_STATE_EOF(WSTRQUOTE):
 case YY_STATE_EOF(ATTR):
 case YY_STATE_EOF(PP_LINE):
-#line 198 "parser.l"
+case YY_STATE_EOF(SQUOTE):
+#line 204 "parser.l"
 {
                                if (import_stack_ptr)
                                        return aEOF;
                                else yyterminate();
                        }
        YY_BREAK
-case 33:
+case 36:
 YY_RULE_SETUP
-#line 203 "parser.l"
+#line 209 "parser.l"
 ECHO;
        YY_BREAK
-#line 1121 "parser.yy.c"
+#line 1141 "parser.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -1408,7 +1428,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 142 )
+                       if ( yy_current_state >= 148 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1443,11 +1463,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 142 )
+               if ( yy_current_state >= 148 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 141);
+       yy_is_jam = (yy_current_state == 147);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2003,7 +2023,7 @@ int main()
        return 0;
        }
 #endif
-#line 203 "parser.l"
+#line 209 "parser.l"
 
 
 #ifndef parser_wrap
index cc753bb..30feca8 100644 (file)
@@ -698,12 +698,12 @@ static int does_any_iface(const statement_list_t *stmts, type_pred_t pred)
 
 int need_proxy(const type_t *iface)
 {
-  return is_object(iface->attrs) && !is_local(iface->attrs);
+  return is_object(iface) && !is_local(iface->attrs);
 }
 
 int need_stub(const type_t *iface)
 {
-  return !is_object(iface->attrs) && !is_local(iface->attrs);
+  return !is_object(iface) && !is_local(iface->attrs);
 }
 
 int need_proxy_file(const statement_list_t *stmts)
@@ -754,7 +754,7 @@ static void build_iface_list( const statement_list_t *stmts, type_t **ifaces[],
             type_t *iface = stmt->u.type;
             if (type_iface_get_inherit(iface) && need_proxy(iface))
             {
-                *ifaces = xrealloc( *ifaces, (*count + 1) * sizeof(*ifaces) );
+                *ifaces = xrealloc( *ifaces, (*count + 1) * sizeof(**ifaces) );
                 (*ifaces)[(*count)++] = iface;
             }
         }
index fdb2379..c35020c 100644 (file)
@@ -69,7 +69,7 @@ static unsigned int write_string_tfs(FILE *file, const attr_list_t *attrs,
                                type_t *type, int toplevel_param,
                                const char *name, unsigned int *typestring_offset);
 
-const char *string_of_type(unsigned char type)
+static const char *string_of_type(unsigned char type)
 {
     switch (type)
     {
@@ -133,7 +133,7 @@ static void *get_aliaschain_attrp(const type_t *type, enum attr_type attr)
             return get_attrp(t->attrs, attr);
         else if (type_is_alias(t))
             t = type_alias_get_aliasee(t);
-        else return 0;
+        else return NULL;
     }
 }
 
@@ -391,7 +391,7 @@ unsigned char get_struct_fc(const type_t *type)
   return RPC_FC_STRUCT;
 }
 
-unsigned char get_array_fc(const type_t *type)
+static unsigned char get_array_fc(const type_t *type)
 {
     unsigned char fc;
     const expr_t *size_is;
@@ -641,7 +641,7 @@ static type_t *get_user_type(const type_t *t, const char **pname)
         if (type_is_alias(t))
             t = type_alias_get_aliasee(t);
         else
-            return 0;
+            return NULL;
     }
 }
 
@@ -3298,7 +3298,7 @@ void print_phase_basetype(FILE *file, int indent, const char *local_var_prefix,
             size = 0;
         }
 
-        if (phase == PHASE_MARSHAL)
+        if (phase == PHASE_MARSHAL && alignment > 1)
             print_file(file, indent, "MIDL_memset(__frame->_StubMsg.Buffer, 0, (0x%x - (ULONG_PTR)__frame->_StubMsg.Buffer) & 0x%x);\n", alignment, alignment - 1);
         print_file(file, indent, "__frame->_StubMsg.Buffer = (unsigned char *)(((ULONG_PTR)__frame->_StubMsg.Buffer + %u) & ~0x%x);\n",
                     alignment - 1, alignment - 1);
index c1c3832..8c76c24 100644 (file)
@@ -100,7 +100,7 @@ int parser_debug, yy_flex_debug;
 
 int pedantic = 0;
 int do_everything = 1;
-int preprocess_only = 0;
+static int preprocess_only = 0;
 int do_header = 0;
 int do_typelib = 0;
 int do_proxies = 0;
@@ -108,7 +108,7 @@ int do_client = 0;
 int do_server = 0;
 int do_idfile = 0;
 int do_dlldata = 0;
-int no_preprocess = 0;
+static int no_preprocess = 0;
 int old_names = 0;
 int do_win32 = 1;
 int do_win64 = 1;
@@ -127,16 +127,15 @@ char *client_name;
 char *client_token;
 char *server_name;
 char *server_token;
-char *idfile_name;
-char *idfile_token;
+static char *idfile_name;
+static char *idfile_token;
 char *temp_name;
 const char *prefix_client = "";
 const char *prefix_server = "";
 
 int line_number = 1;
 
-FILE *header;
-FILE *idfile;
+static FILE *idfile;
 
 size_t pointer_size = 0;
 syskind_t typelib_kind = sizeof(void*) == 8 ? SYS_WIN64 : SYS_WIN32;
@@ -160,18 +159,18 @@ enum {
 static const char short_options[] =
     "b:cC:d:D:EhH:I:m:NpP:sS:tT:uU:VW";
 static const struct option long_options[] = {
-    { "dlldata", 1, 0, DLLDATA_OPTION },
-    { "dlldata-only", 0, 0, DLLDATA_ONLY_OPTION },
-    { "local-stubs", 1, 0, LOCAL_STUBS_OPTION },
-    { "oldnames", 0, 0, OLDNAMES_OPTION },
-    { "prefix-all", 1, 0, PREFIX_ALL_OPTION },
-    { "prefix-client", 1, 0, PREFIX_CLIENT_OPTION },
-    { "prefix-server", 1, 0, PREFIX_SERVER_OPTION },
-    { "win32", 0, 0, WIN32_OPTION },
-    { "win64", 0, 0, WIN64_OPTION },
-    { "win32-align", 1, 0, WIN32_ALIGN_OPTION },
-    { "win64-align", 1, 0, WIN64_ALIGN_OPTION },
-    { 0, 0, 0, 0 }
+    { "dlldata", 1, NULL, DLLDATA_OPTION },
+    { "dlldata-only", 0, NULL, DLLDATA_ONLY_OPTION },
+    { "local-stubs", 1, NULL, LOCAL_STUBS_OPTION },
+    { "oldnames", 0, NULL, OLDNAMES_OPTION },
+    { "prefix-all", 1, NULL, PREFIX_ALL_OPTION },
+    { "prefix-client", 1, NULL, PREFIX_CLIENT_OPTION },
+    { "prefix-server", 1, NULL, PREFIX_SERVER_OPTION },
+    { "win32", 0, NULL, WIN32_OPTION },
+    { "win64", 0, NULL, WIN64_OPTION },
+    { "win32-align", 1, NULL, WIN32_ALIGN_OPTION },
+    { "win64-align", 1, NULL, WIN64_ALIGN_OPTION },
+    { NULL, 0, NULL, 0 }
 };
 
 static void rm_tempfile(void);
@@ -431,7 +430,7 @@ static void write_id_data_stmts(const statement_list_t *stmts)
       if (type_get_type(type) == TYPE_INTERFACE)
       {
         const UUID *uuid;
-        if (!is_object(type->attrs) && !is_attr(type->attrs, ATTR_DISPINTERFACE))
+        if (!is_object(type) && !is_attr(type->attrs, ATTR_DISPINTERFACE))
           continue;
         uuid = get_attrp(type->attrs, ATTR_UUID);
         write_guid(idfile, is_attr(type->attrs, ATTR_DISPINTERFACE) ? "DIID" : "IID",
@@ -648,8 +647,8 @@ int main(int argc,char *argv[])
 
   if(debuglevel)
   {
-    setbuf(stdout,0);
-    setbuf(stderr,0);
+    setbuf(stdout, NULL);
+    setbuf(stderr, NULL);
   }
 
   parser_debug = debuglevel & DEBUGLEVEL_TRACE ? 1 : 0;
index f0afce4..9ee3b45 100644 (file)
@@ -195,6 +195,7 @@ enum expr_type
     EXPR_POS,
     EXPR_STRLIT,
     EXPR_WSTRLIT,
+    EXPR_CHARCONST,
 };
 
 enum type_kind