[WIDL] Port ALLOCATE attribute support to our WIDL
authorEric Kohl <eric.kohl@reactos.org>
Sat, 26 Dec 2020 13:00:26 +0000 (14:00 +0100)
committerEric Kohl <eric.kohl@reactos.org>
Sat, 26 Dec 2020 13:00:26 +0000 (14:00 +0100)
sdk/tools/widl/parser.l
sdk/tools/widl/parser.tab.c
sdk/tools/widl/parser.tab.h
sdk/tools/widl/parser.y
sdk/tools/widl/parser.yy.c
sdk/tools/widl/parser.yy.h
sdk/tools/widl/typegen.c
sdk/tools/widl/widltypes.h

index 3cbf4ff..da80432 100644 (file)
@@ -318,6 +318,7 @@ static const struct keyword keywords[] = {
 static const struct keyword attr_keywords[] =
 {
         {"aggregatable",                tAGGREGATABLE},
+        {"all_nodes",                   tALLNODES},
         {"allocate",                    tALLOCATE},
         {"annotation",                  tANNOTATION},
         {"apartment",                   tAPARTMENT},
@@ -345,6 +346,7 @@ static const struct keyword attr_keywords[] =
         {"disable_consistency_check",   tDISABLECONSISTENCYCHECK},
         {"displaybind",                 tDISPLAYBIND},
         {"dllname",                     tDLLNAME},
+        {"dont_free",                   tDONTFREE},
         {"dual",                        tDUAL},
         {"enable_allocate",             tENABLEALLOCATE},
         {"encode",                      tENCODE},
@@ -406,6 +408,7 @@ static const struct keyword attr_keywords[] =
         {"restricted",                  tRESTRICTED},
         {"retval",                      tRETVAL},
         {"single",                      tSINGLE},
+        {"single_node",                 tSINGLENODE},
         {"size_is",                     tSIZEIS},
         {"source",                      tSOURCE},
         {"strict_context_handle",       tSTRICTCONTEXTHANDLE},
index c45e0c0..7936980 100644 (file)
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.  */
+/* A Bison parser, made by GNU Bison 3.5.4.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0"
+#define YYBISON_VERSION "3.5.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
 #define yyerror         parser_error
 #define yydebug         parser_debug
 #define yynerrs         parser_nerrs
-
 #define yylval          parser_lval
 #define yychar          parser_char
 
-/* Copy the first part of user declarations.  */
-#line 1 "parser.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 1 "parser.y"
 
 /*
  * IDL Compiler
@@ -214,13 +217,26 @@ static typelib_t *current_typelib;
 #endif
 
 
-#line 218 "parser.tab.c" /* yacc.c:339  */
+#line 221 "parser.tab.c"
 
-# ifndef YY_NULL
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULL nullptr
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+#  else
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
 #  else
-#   define YY_NULL 0
+#   define YY_NULLPTR ((void*)0)
 #  endif
 # endif
 
@@ -232,10 +248,10 @@ static typelib_t *current_typelib;
 # define YYERROR_VERBOSE 1
 #endif
 
-/* In a future release of Bison, this section will be replaced
-   by #include "parser.tab.h".  */
-#ifndef YY_PARSER_E_REACTOSSYNC_MSVC_HOST_TOOLS_SDK_TOOLS_WIDL_PARSER_TAB_H_INCLUDED
-# define YY_PARSER_E_REACTOSSYNC_MSVC_HOST_TOOLS_SDK_TOOLS_WIDL_PARSER_TAB_H_INCLUDED
+/* Use api.header.include to #include this header
+   instead of duplicating it here.  */
+#ifndef YY_PARSER_PARSER_TAB_H_INCLUDED
+# define YY_PARSER_PARSER_TAB_H_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -272,178 +288,180 @@ extern int parser_debug;
     LOGICALAND = 278,
     ELLIPSIS = 279,
     tAGGREGATABLE = 280,
-    tALLOCATE = 281,
-    tANNOTATION = 282,
-    tAPPOBJECT = 283,
-    tASYNC = 284,
-    tASYNCUUID = 285,
-    tAUTOHANDLE = 286,
-    tBINDABLE = 287,
-    tBOOLEAN = 288,
-    tBROADCAST = 289,
-    tBYTE = 290,
-    tBYTECOUNT = 291,
-    tCALLAS = 292,
-    tCALLBACK = 293,
-    tCASE = 294,
-    tCDECL = 295,
-    tCHAR = 296,
-    tCOCLASS = 297,
-    tCODE = 298,
-    tCOMMSTATUS = 299,
-    tCONST = 300,
-    tCONTEXTHANDLE = 301,
-    tCONTEXTHANDLENOSERIALIZE = 302,
-    tCONTEXTHANDLESERIALIZE = 303,
-    tCONTROL = 304,
-    tCPPQUOTE = 305,
-    tDECODE = 306,
-    tDEFAULT = 307,
-    tDEFAULTBIND = 308,
-    tDEFAULTCOLLELEM = 309,
-    tDEFAULTVALUE = 310,
-    tDEFAULTVTABLE = 311,
-    tDISABLECONSISTENCYCHECK = 312,
-    tDISPLAYBIND = 313,
-    tDISPINTERFACE = 314,
-    tDLLNAME = 315,
-    tDOUBLE = 316,
-    tDUAL = 317,
-    tENABLEALLOCATE = 318,
-    tENCODE = 319,
-    tENDPOINT = 320,
-    tENTRY = 321,
-    tENUM = 322,
-    tERRORSTATUST = 323,
-    tEXPLICITHANDLE = 324,
-    tEXTERN = 325,
-    tFALSE = 326,
-    tFASTCALL = 327,
-    tFAULTSTATUS = 328,
-    tFLOAT = 329,
-    tFORCEALLOCATE = 330,
-    tHANDLE = 331,
-    tHANDLET = 332,
-    tHELPCONTEXT = 333,
-    tHELPFILE = 334,
-    tHELPSTRING = 335,
-    tHELPSTRINGCONTEXT = 336,
-    tHELPSTRINGDLL = 337,
-    tHIDDEN = 338,
-    tHYPER = 339,
-    tID = 340,
-    tIDEMPOTENT = 341,
-    tIGNORE = 342,
-    tIIDIS = 343,
-    tIMMEDIATEBIND = 344,
-    tIMPLICITHANDLE = 345,
-    tIMPORT = 346,
-    tIMPORTLIB = 347,
-    tIN = 348,
-    tIN_LINE = 349,
-    tINLINE = 350,
-    tINPUTSYNC = 351,
-    tINT = 352,
-    tINT32 = 353,
-    tINT3264 = 354,
-    tINT64 = 355,
-    tINTERFACE = 356,
-    tLCID = 357,
-    tLENGTHIS = 358,
-    tLIBRARY = 359,
-    tLICENSED = 360,
-    tLOCAL = 361,
-    tLONG = 362,
-    tMAYBE = 363,
-    tMESSAGE = 364,
-    tMETHODS = 365,
-    tMODULE = 366,
-    tNAMESPACE = 367,
-    tNOCODE = 368,
-    tNONBROWSABLE = 369,
-    tNONCREATABLE = 370,
-    tNONEXTENSIBLE = 371,
-    tNOTIFY = 372,
-    tNOTIFYFLAG = 373,
-    tNULL = 374,
-    tOBJECT = 375,
-    tODL = 376,
-    tOLEAUTOMATION = 377,
-    tOPTIMIZE = 378,
-    tOPTIONAL = 379,
-    tOUT = 380,
-    tPARTIALIGNORE = 381,
-    tPASCAL = 382,
-    tPOINTERDEFAULT = 383,
-    tPRAGMA_WARNING = 384,
-    tPROGID = 385,
-    tPROPERTIES = 386,
-    tPROPGET = 387,
-    tPROPPUT = 388,
-    tPROPPUTREF = 389,
-    tPROXY = 390,
-    tPTR = 391,
-    tPUBLIC = 392,
-    tRANGE = 393,
-    tREADONLY = 394,
-    tREF = 395,
-    tREGISTER = 396,
-    tREPRESENTAS = 397,
-    tREQUESTEDIT = 398,
-    tRESTRICTED = 399,
-    tRETVAL = 400,
-    tSAFEARRAY = 401,
-    tSHORT = 402,
-    tSIGNED = 403,
-    tSIZEIS = 404,
-    tSIZEOF = 405,
-    tSMALL = 406,
-    tSOURCE = 407,
-    tSTATIC = 408,
-    tSTDCALL = 409,
-    tSTRICTCONTEXTHANDLE = 410,
-    tSTRING = 411,
-    tSTRUCT = 412,
-    tSWITCH = 413,
-    tSWITCHIS = 414,
-    tSWITCHTYPE = 415,
-    tTHREADING = 416,
-    tTRANSMITAS = 417,
-    tTRUE = 418,
-    tTYPEDEF = 419,
-    tUIDEFAULT = 420,
-    tUNION = 421,
-    tUNIQUE = 422,
-    tUNSIGNED = 423,
-    tUSESGETLASTERROR = 424,
-    tUSERMARSHAL = 425,
-    tUUID = 426,
-    tV1ENUM = 427,
-    tVARARG = 428,
-    tVERSION = 429,
-    tVIPROGID = 430,
-    tVOID = 431,
-    tWCHAR = 432,
-    tWIREMARSHAL = 433,
-    tAPARTMENT = 434,
-    tNEUTRAL = 435,
-    tSINGLE = 436,
-    tFREE = 437,
-    tBOTH = 438,
-    CAST = 439,
-    PPTR = 440,
-    POS = 441,
-    NEG = 442,
-    ADDRESSOF = 443
+    tALLNODES = 281,
+    tALLOCATE = 282,
+    tANNOTATION = 283,
+    tAPPOBJECT = 284,
+    tASYNC = 285,
+    tASYNCUUID = 286,
+    tAUTOHANDLE = 287,
+    tBINDABLE = 288,
+    tBOOLEAN = 289,
+    tBROADCAST = 290,
+    tBYTE = 291,
+    tBYTECOUNT = 292,
+    tCALLAS = 293,
+    tCALLBACK = 294,
+    tCASE = 295,
+    tCDECL = 296,
+    tCHAR = 297,
+    tCOCLASS = 298,
+    tCODE = 299,
+    tCOMMSTATUS = 300,
+    tCONST = 301,
+    tCONTEXTHANDLE = 302,
+    tCONTEXTHANDLENOSERIALIZE = 303,
+    tCONTEXTHANDLESERIALIZE = 304,
+    tCONTROL = 305,
+    tCPPQUOTE = 306,
+    tDECODE = 307,
+    tDEFAULT = 308,
+    tDEFAULTBIND = 309,
+    tDEFAULTCOLLELEM = 310,
+    tDEFAULTVALUE = 311,
+    tDEFAULTVTABLE = 312,
+    tDISABLECONSISTENCYCHECK = 313,
+    tDISPLAYBIND = 314,
+    tDISPINTERFACE = 315,
+    tDLLNAME = 316,
+    tDONTFREE = 317,
+    tDOUBLE = 318,
+    tDUAL = 319,
+    tENABLEALLOCATE = 320,
+    tENCODE = 321,
+    tENDPOINT = 322,
+    tENTRY = 323,
+    tENUM = 324,
+    tERRORSTATUST = 325,
+    tEXPLICITHANDLE = 326,
+    tEXTERN = 327,
+    tFALSE = 328,
+    tFASTCALL = 329,
+    tFAULTSTATUS = 330,
+    tFLOAT = 331,
+    tFORCEALLOCATE = 332,
+    tHANDLE = 333,
+    tHANDLET = 334,
+    tHELPCONTEXT = 335,
+    tHELPFILE = 336,
+    tHELPSTRING = 337,
+    tHELPSTRINGCONTEXT = 338,
+    tHELPSTRINGDLL = 339,
+    tHIDDEN = 340,
+    tHYPER = 341,
+    tID = 342,
+    tIDEMPOTENT = 343,
+    tIGNORE = 344,
+    tIIDIS = 345,
+    tIMMEDIATEBIND = 346,
+    tIMPLICITHANDLE = 347,
+    tIMPORT = 348,
+    tIMPORTLIB = 349,
+    tIN = 350,
+    tIN_LINE = 351,
+    tINLINE = 352,
+    tINPUTSYNC = 353,
+    tINT = 354,
+    tINT32 = 355,
+    tINT3264 = 356,
+    tINT64 = 357,
+    tINTERFACE = 358,
+    tLCID = 359,
+    tLENGTHIS = 360,
+    tLIBRARY = 361,
+    tLICENSED = 362,
+    tLOCAL = 363,
+    tLONG = 364,
+    tMAYBE = 365,
+    tMESSAGE = 366,
+    tMETHODS = 367,
+    tMODULE = 368,
+    tNAMESPACE = 369,
+    tNOCODE = 370,
+    tNONBROWSABLE = 371,
+    tNONCREATABLE = 372,
+    tNONEXTENSIBLE = 373,
+    tNOTIFY = 374,
+    tNOTIFYFLAG = 375,
+    tNULL = 376,
+    tOBJECT = 377,
+    tODL = 378,
+    tOLEAUTOMATION = 379,
+    tOPTIMIZE = 380,
+    tOPTIONAL = 381,
+    tOUT = 382,
+    tPARTIALIGNORE = 383,
+    tPASCAL = 384,
+    tPOINTERDEFAULT = 385,
+    tPRAGMA_WARNING = 386,
+    tPROGID = 387,
+    tPROPERTIES = 388,
+    tPROPGET = 389,
+    tPROPPUT = 390,
+    tPROPPUTREF = 391,
+    tPROXY = 392,
+    tPTR = 393,
+    tPUBLIC = 394,
+    tRANGE = 395,
+    tREADONLY = 396,
+    tREF = 397,
+    tREGISTER = 398,
+    tREPRESENTAS = 399,
+    tREQUESTEDIT = 400,
+    tRESTRICTED = 401,
+    tRETVAL = 402,
+    tSAFEARRAY = 403,
+    tSHORT = 404,
+    tSIGNED = 405,
+    tSINGLENODE = 406,
+    tSIZEIS = 407,
+    tSIZEOF = 408,
+    tSMALL = 409,
+    tSOURCE = 410,
+    tSTATIC = 411,
+    tSTDCALL = 412,
+    tSTRICTCONTEXTHANDLE = 413,
+    tSTRING = 414,
+    tSTRUCT = 415,
+    tSWITCH = 416,
+    tSWITCHIS = 417,
+    tSWITCHTYPE = 418,
+    tTHREADING = 419,
+    tTRANSMITAS = 420,
+    tTRUE = 421,
+    tTYPEDEF = 422,
+    tUIDEFAULT = 423,
+    tUNION = 424,
+    tUNIQUE = 425,
+    tUNSIGNED = 426,
+    tUSESGETLASTERROR = 427,
+    tUSERMARSHAL = 428,
+    tUUID = 429,
+    tV1ENUM = 430,
+    tVARARG = 431,
+    tVERSION = 432,
+    tVIPROGID = 433,
+    tVOID = 434,
+    tWCHAR = 435,
+    tWIREMARSHAL = 436,
+    tAPARTMENT = 437,
+    tNEUTRAL = 438,
+    tSINGLE = 439,
+    tFREE = 440,
+    tBOTH = 441,
+    CAST = 442,
+    PPTR = 443,
+    POS = 444,
+    NEG = 445,
+    ADDRESSOF = 446
   };
 #endif
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 144 "parser.y" /* yacc.c:355  */
+#line 144 "parser.y"
 
        attr_t *attr;
        attr_list_t *attr_list;
@@ -471,8 +489,10 @@ union YYSTYPE
        struct _decl_spec_t *declspec;
        enum storage_class stgclass;
 
-#line 475 "parser.tab.c" /* yacc.c:355  */
+#line 493 "parser.tab.c"
+
 };
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -482,38 +502,83 @@ extern YYSTYPE parser_lval;
 
 int parser_parse (void);
 
-#endif /* !YY_PARSER_E_REACTOSSYNC_MSVC_HOST_TOOLS_SDK_TOOLS_WIDL_PARSER_TAB_H_INCLUDED  */
+#endif /* !YY_PARSER_PARSER_TAB_H_INCLUDED  */
 
-/* Copy the second part of user declarations.  */
 
-#line 490 "parser.tab.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
 typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
+#endif
+
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
 #else
-typedef unsigned short int yytype_uint16;
+typedef short yytype_uint8;
 #endif
 
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
 #else
-typedef short int yytype_int16;
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
 #endif
 
 #ifndef YYSIZE_T
@@ -521,15 +586,27 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int16 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
 # if defined YYENABLE_NLS && YYENABLE_NLS
@@ -543,11 +620,19 @@ typedef short int yytype_int16;
 # endif
 #endif
 
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later.  */
-# if (! defined __GNUC__ || __GNUC__ < 2 \
-      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
-#  define __attribute__(Spec) /* empty */
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define YY_ATTRIBUTE_PURE
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
@@ -558,13 +643,13 @@ typedef short int yytype_int16;
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
     _Pragma ("GCC diagnostic pop")
 #else
 # define YY_INITIAL_VALUE(Value) Value
@@ -577,6 +662,20 @@ typedef short int yytype_int16;
 # define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
 
 #if ! defined yyoverflow || YYERROR_VERBOSE
 
@@ -653,17 +752,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
 # define YYCOPY_NEEDED 1
@@ -676,11 +775,11 @@ union yyalloc
 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     do                                                                  \
       {                                                                 \
-        YYSIZE_T yynewbytes;                                            \
+        YYPTRDIFF_T yynewbytes;                                         \
         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
         Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                          \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
       }                                                                 \
     while (0)
 
@@ -692,12 +791,12 @@ union yyalloc
 # ifndef YYCOPY
 #  if defined __GNUC__ && 1 < __GNUC__
 #   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
 #  else
 #   define YYCOPY(Dst, Src, Count)              \
       do                                        \
         {                                       \
-          YYSIZE_T yyi;                         \
+          YYPTRDIFF_T yyi;                      \
           for (yyi = 0; yyi < (Count); yyi++)   \
             (Dst)[yyi] = (Src)[yyi];            \
         }                                       \
@@ -709,42 +808,43 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  3
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3047
+#define YYLAST   3170
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  213
+#define YYNTOKENS  216
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  113
+#define YYNNTS  115
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  410
+#define YYNRULES  417
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  718
+#define YYNSTATES  729
 
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   443
+#define YYMAXUTOK   446
+
 
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
 #define YYTRANSLATE(YYX)                                                \
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, without out-of-bounds checking.  */
+   as returned by yylex.  */
 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,   197,     2,     2,     2,   196,   189,     2,
-     210,   211,   194,   193,   184,   192,   204,   195,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   186,   209,
-     190,   212,   191,   185,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   200,     2,     2,     2,   199,   192,     2,
+     213,   214,   197,   196,   187,   195,   207,   198,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   189,   212,
+     193,   215,   194,   188,     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,   205,     2,   206,   188,     2,     2,     2,     2,     2,
+       2,   208,     2,   209,   191,     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,   207,   187,   208,   198,     2,     2,     2,
+       2,     2,     2,   210,   190,   211,   201,     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,
@@ -775,56 +875,56 @@ static const yytype_uint8 yytranslate[] =
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180,   181,   182,   183,   199,
-     200,   201,   202,   203
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   202,   203,   204,   205,   206
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
-{
-       0,   327,   327,   344,   344,   346,   347,   347,   349,   350,
-     351,   354,   357,   358,   359,   362,   363,   364,   364,   366,
-     367,   368,   371,   372,   373,   374,   377,   378,   381,   382,
-     386,   387,   388,   389,   390,   391,   392,   395,   406,   407,
-     411,   412,   413,   414,   415,   416,   417,   418,   419,   422,
-     424,   432,   438,   446,   447,   449,   457,   468,   469,   472,
-     473,   476,   477,   481,   486,   493,   497,   498,   501,   502,
-     506,   509,   510,   511,   514,   515,   518,   519,   520,   521,
-     522,   523,   524,   525,   526,   527,   528,   529,   530,   531,
-     532,   533,   534,   535,   536,   537,   538,   539,   540,   541,
-     542,   543,   544,   545,   546,   547,   548,   549,   550,   551,
-     552,   553,   554,   555,   556,   557,   558,   559,   560,   561,
-     562,   563,   564,   565,   566,   567,   568,   569,   570,   571,
-     572,   573,   574,   575,   576,   577,   578,   579,   580,   581,
-     582,   583,   584,   585,   586,   587,   588,   589,   590,   591,
-     592,   593,   597,   598,   599,   600,   601,   602,   603,   604,
-     605,   606,   607,   608,   609,   610,   611,   612,   613,   614,
-     615,   616,   617,   618,   619,   620,   624,   625,   630,   631,
-     632,   633,   636,   637,   640,   644,   650,   651,   652,   655,
-     659,   671,   675,   680,   683,   684,   687,   688,   691,   692,
-     693,   694,   695,   696,   697,   698,   699,   700,   701,   702,
-     703,   704,   705,   706,   707,   708,   709,   710,   711,   712,
-     713,   714,   715,   716,   717,   718,   719,   720,   721,   722,
-     723,   724,   725,   726,   727,   728,   730,   732,   733,   736,
-     737,   740,   746,   752,   753,   756,   761,   768,   769,   772,
-     773,   777,   778,   781,   785,   791,   799,   803,   808,   809,
-     812,   813,   814,   817,   819,   822,   823,   824,   825,   826,
-     827,   828,   829,   830,   831,   832,   835,   836,   839,   840,
-     841,   842,   843,   844,   845,   846,   847,   850,   851,   859,
-     865,   869,   872,   873,   877,   880,   881,   884,   893,   894,
-     897,   898,   901,   907,   913,   914,   917,   918,   921,   931,
-     941,   947,   951,   952,   955,   956,   959,   964,   971,   972,
-     973,   977,   981,   984,   985,   988,   989,   993,   994,   998,
-     999,  1000,  1004,  1006,  1008,  1012,  1013,  1014,  1015,  1023,
-    1025,  1027,  1032,  1034,  1039,  1040,  1045,  1046,  1047,  1048,
-    1053,  1062,  1064,  1065,  1070,  1072,  1076,  1077,  1084,  1085,
-    1086,  1087,  1088,  1093,  1101,  1102,  1105,  1106,  1109,  1116,
-    1117,  1122,  1123,  1127,  1128,  1129,  1130,  1131,  1135,  1136,
-    1137,  1140,  1143,  1144,  1145,  1146,  1147,  1148,  1149,  1150,
-    1151,  1152,  1155,  1162,  1164,  1170,  1171,  1172,  1175,  1177,
-    1179,  1181,  1184,  1189,  1197,  1198,  1201,  1202,  1205,  1206,
-    1207
+static const yytype_int16 yyrline[] =
+{
+       0,   328,   328,   345,   345,   347,   348,   348,   350,   351,
+     352,   355,   358,   359,   360,   363,   364,   365,   365,   367,
+     368,   369,   372,   373,   374,   375,   378,   379,   382,   383,
+     387,   388,   389,   390,   391,   392,   393,   396,   407,   408,
+     412,   413,   414,   415,   416,   417,   418,   419,   420,   423,
+     425,   433,   439,   447,   448,   450,   458,   469,   470,   473,
+     474,   477,   478,   482,   487,   494,   498,   499,   502,   503,
+     507,   510,   511,   512,   515,   516,   519,   520,   521,   522,
+     523,   524,   525,   526,   527,   528,   529,   530,   531,   532,
+     533,   534,   535,   536,   537,   538,   539,   540,   541,   542,
+     543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
+     553,   554,   555,   556,   557,   558,   559,   560,   561,   562,
+     563,   564,   565,   566,   567,   568,   569,   570,   571,   572,
+     573,   574,   575,   576,   577,   578,   579,   580,   581,   582,
+     583,   584,   585,   586,   587,   588,   589,   590,   591,   592,
+     593,   594,   598,   599,   600,   601,   602,   603,   604,   605,
+     606,   607,   608,   609,   610,   611,   612,   613,   614,   615,
+     616,   617,   618,   619,   620,   621,   625,   626,   631,   632,
+     633,   634,   637,   638,   641,   645,   651,   652,   653,   656,
+     660,   672,   676,   681,   684,   685,   688,   689,   692,   693,
+     694,   695,   696,   697,   698,   699,   700,   701,   702,   703,
+     704,   705,   706,   707,   708,   709,   710,   711,   712,   713,
+     714,   715,   716,   717,   718,   719,   720,   721,   722,   723,
+     724,   725,   726,   727,   728,   729,   731,   733,   734,   737,
+     738,   741,   747,   753,   754,   757,   762,   769,   770,   773,
+     774,   778,   779,   782,   786,   792,   800,   804,   809,   810,
+     813,   814,   815,   818,   820,   823,   824,   825,   826,   827,
+     828,   829,   830,   831,   832,   833,   836,   837,   840,   841,
+     842,   843,   844,   845,   846,   847,   848,   851,   852,   860,
+     866,   870,   873,   874,   878,   881,   882,   885,   894,   895,
+     898,   899,   902,   908,   914,   915,   918,   919,   922,   932,
+     942,   948,   952,   953,   956,   957,   960,   965,   972,   973,
+     974,   978,   982,   985,   986,   989,   990,   994,   995,   999,
+    1000,  1001,  1005,  1007,  1009,  1013,  1014,  1015,  1016,  1024,
+    1026,  1028,  1033,  1035,  1040,  1041,  1046,  1047,  1048,  1049,
+    1054,  1063,  1065,  1066,  1071,  1073,  1077,  1078,  1085,  1086,
+    1087,  1088,  1089,  1094,  1102,  1103,  1106,  1107,  1110,  1117,
+    1118,  1123,  1124,  1128,  1129,  1130,  1131,  1132,  1136,  1137,
+    1138,  1141,  1144,  1145,  1146,  1147,  1148,  1149,  1150,  1151,
+    1152,  1153,  1156,  1163,  1165,  1171,  1172,  1173,  1177,  1178,
+    1182,  1183,  1187,  1194,  1203,  1204,  1208,  1209,  1213,  1215,
+    1216,  1217,  1221,  1222,  1227,  1228,  1229,  1230
 };
 #endif
 
@@ -837,41 +937,41 @@ static const char *const yytname[] =
   "aNUM", "aHEXNUM", "aDOUBLE", "aSTRING", "aWSTRING", "aSQSTRING",
   "aUUID", "aEOF", "aACF", "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",
+  "ELLIPSIS", "tAGGREGATABLE", "tALLNODES", "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", "tDECODE", "tDEFAULT", "tDEFAULTBIND",
   "tDEFAULTCOLLELEM", "tDEFAULTVALUE", "tDEFAULTVTABLE",
   "tDISABLECONSISTENCYCHECK", "tDISPLAYBIND", "tDISPINTERFACE", "tDLLNAME",
-  "tDOUBLE", "tDUAL", "tENABLEALLOCATE", "tENCODE", "tENDPOINT", "tENTRY",
-  "tENUM", "tERRORSTATUST", "tEXPLICITHANDLE", "tEXTERN", "tFALSE",
-  "tFASTCALL", "tFAULTSTATUS", "tFLOAT", "tFORCEALLOCATE", "tHANDLE",
-  "tHANDLET", "tHELPCONTEXT", "tHELPFILE", "tHELPSTRING",
-  "tHELPSTRINGCONTEXT", "tHELPSTRINGDLL", "tHIDDEN", "tHYPER", "tID",
-  "tIDEMPOTENT", "tIGNORE", "tIIDIS", "tIMMEDIATEBIND", "tIMPLICITHANDLE",
-  "tIMPORT", "tIMPORTLIB", "tIN", "tIN_LINE", "tINLINE", "tINPUTSYNC",
-  "tINT", "tINT32", "tINT3264", "tINT64", "tINTERFACE", "tLCID",
-  "tLENGTHIS", "tLIBRARY", "tLICENSED", "tLOCAL", "tLONG", "tMAYBE",
-  "tMESSAGE", "tMETHODS", "tMODULE", "tNAMESPACE", "tNOCODE",
+  "tDONTFREE", "tDOUBLE", "tDUAL", "tENABLEALLOCATE", "tENCODE",
+  "tENDPOINT", "tENTRY", "tENUM", "tERRORSTATUST", "tEXPLICITHANDLE",
+  "tEXTERN", "tFALSE", "tFASTCALL", "tFAULTSTATUS", "tFLOAT",
+  "tFORCEALLOCATE", "tHANDLE", "tHANDLET", "tHELPCONTEXT", "tHELPFILE",
+  "tHELPSTRING", "tHELPSTRINGCONTEXT", "tHELPSTRINGDLL", "tHIDDEN",
+  "tHYPER", "tID", "tIDEMPOTENT", "tIGNORE", "tIIDIS", "tIMMEDIATEBIND",
+  "tIMPLICITHANDLE", "tIMPORT", "tIMPORTLIB", "tIN", "tIN_LINE", "tINLINE",
+  "tINPUTSYNC", "tINT", "tINT32", "tINT3264", "tINT64", "tINTERFACE",
+  "tLCID", "tLENGTHIS", "tLIBRARY", "tLICENSED", "tLOCAL", "tLONG",
+  "tMAYBE", "tMESSAGE", "tMETHODS", "tMODULE", "tNAMESPACE", "tNOCODE",
   "tNONBROWSABLE", "tNONCREATABLE", "tNONEXTENSIBLE", "tNOTIFY",
   "tNOTIFYFLAG", "tNULL", "tOBJECT", "tODL", "tOLEAUTOMATION", "tOPTIMIZE",
   "tOPTIONAL", "tOUT", "tPARTIALIGNORE", "tPASCAL", "tPOINTERDEFAULT",
   "tPRAGMA_WARNING", "tPROGID", "tPROPERTIES", "tPROPGET", "tPROPPUT",
   "tPROPPUTREF", "tPROXY", "tPTR", "tPUBLIC", "tRANGE", "tREADONLY",
   "tREF", "tREGISTER", "tREPRESENTAS", "tREQUESTEDIT", "tRESTRICTED",
-  "tRETVAL", "tSAFEARRAY", "tSHORT", "tSIGNED", "tSIZEIS", "tSIZEOF",
-  "tSMALL", "tSOURCE", "tSTATIC", "tSTDCALL", "tSTRICTCONTEXTHANDLE",
-  "tSTRING", "tSTRUCT", "tSWITCH", "tSWITCHIS", "tSWITCHTYPE",
-  "tTHREADING", "tTRANSMITAS", "tTRUE", "tTYPEDEF", "tUIDEFAULT", "tUNION",
-  "tUNIQUE", "tUNSIGNED", "tUSESGETLASTERROR", "tUSERMARSHAL", "tUUID",
-  "tV1ENUM", "tVARARG", "tVERSION", "tVIPROGID", "tVOID", "tWCHAR",
-  "tWIREMARSHAL", "tAPARTMENT", "tNEUTRAL", "tSINGLE", "tFREE", "tBOTH",
-  "','", "'?'", "':'", "'|'", "'^'", "'&'", "'<'", "'>'", "'-'", "'+'",
-  "'*'", "'/'", "'%'", "'!'", "'~'", "CAST", "PPTR", "POS", "NEG",
-  "ADDRESSOF", "'.'", "'['", "']'", "'{'", "'}'", "';'", "'('", "')'",
-  "'='", "$accept", "input", "m_acf", "gbl_statements", "$@1",
+  "tRETVAL", "tSAFEARRAY", "tSHORT", "tSIGNED", "tSINGLENODE", "tSIZEIS",
+  "tSIZEOF", "tSMALL", "tSOURCE", "tSTATIC", "tSTDCALL",
+  "tSTRICTCONTEXTHANDLE", "tSTRING", "tSTRUCT", "tSWITCH", "tSWITCHIS",
+  "tSWITCHTYPE", "tTHREADING", "tTRANSMITAS", "tTRUE", "tTYPEDEF",
+  "tUIDEFAULT", "tUNION", "tUNIQUE", "tUNSIGNED", "tUSESGETLASTERROR",
+  "tUSERMARSHAL", "tUUID", "tV1ENUM", "tVARARG", "tVERSION", "tVIPROGID",
+  "tVOID", "tWCHAR", "tWIREMARSHAL", "tAPARTMENT", "tNEUTRAL", "tSINGLE",
+  "tFREE", "tBOTH", "','", "'?'", "':'", "'|'", "'^'", "'&'", "'<'", "'>'",
+  "'-'", "'+'", "'*'", "'/'", "'%'", "'!'", "'~'", "CAST", "PPTR", "POS",
+  "NEG", "ADDRESSOF", "'.'", "'['", "']'", "'{'", "'}'", "';'", "'('",
+  "')'", "'='", "$accept", "input", "m_acf", "gbl_statements", "$@1",
   "imp_statements", "$@2", "int_statements", "semicolon_opt", "statement",
   "pragma_warning", "warnings", "typedecl", "cppquote", "import_start",
   "import", "importlib", "libraryhdr", "library_start", "librarydef",
@@ -896,14 +996,15 @@ static const char *const yytname[] =
   "struct_declarator_list", "init_declarator", "threading_type",
   "pointer_type", "structdef", "type", "typedef", "uniondef", "version",
   "acf_statements", "acf_int_statements", "acf_int_statement",
-  "acf_interface", "acf_attributes", "acf_attribute_list", "acf_attribute", YY_NULL
+  "acf_interface", "acf_attributes", "acf_attribute_list", "acf_attribute",
+  "allocate_option_list", "allocate_option", YY_NULLPTR
 };
 #endif
 
 # ifdef YYPRINT
 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
    (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_uint16 yytoknum[] =
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
@@ -923,105 +1024,106 @@ static const yytype_uint16 yytoknum[] =
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
-     435,   436,   437,   438,    44,    63,    58,   124,    94,    38,
-      60,    62,    45,    43,    42,    47,    37,    33,   126,   439,
-     440,   441,   442,   443,    46,    91,    93,   123,   125,    59,
-      40,    41,    61
+     435,   436,   437,   438,   439,   440,   441,    44,    63,    58,
+     124,    94,    38,    60,    62,    45,    43,    42,    47,    37,
+      33,   126,   442,   443,   444,   445,   446,    46,    91,    93,
+     123,   125,    59,    40,    41,    61
 };
 # endif
 
-#define YYPACT_NINF -560
+#define YYPACT_NINF (-564)
 
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-560)))
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF -405
+#define YYTABLE_NINF (-405)
 
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(Yyn) \
   0
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -560,    94,  1606,  -560,  -560,  -560,   -57,  -560,  -560,  -560,
-     147,  -560,   -89,   165,  -560,   169,  -560,  -560,  -560,  -560,
-      35,   149,  -560,  -560,  -560,  -560,  -560,   172,    35,   164,
-     -34,  -560,   -29,    35,   333,  -560,  -560,   192,   197,   333,
-    -560,  -560,  2869,  -560,  -560,  -560,   -27,  -560,  -560,  -560,
-    -560,  -560,    21,  2567,   -13,   -10,  -560,  -560,     9,   -36,
-    -560,     2,    12,    38,    23,    46,    41,  -560,  -560,    57,
-    -560,   128,   128,   128,   175,  2716,    76,   128,    81,    88,
-      61,  -560,   -57,   219,  -560,  -560,   315,  -560,  -560,    15,
-    -560,   121,  -560,  -560,   123,  -560,  -560,  -560,  -560,   331,
-    2716,  -560,  -560,    58,   129,   -94,  -112,  -560,  -560,   130,
-    -560,  -560,   131,  -560,  -560,  -560,   132,   134,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,   138,  -560,
-    -560,  -560,   140,  -560,  -560,  -560,   141,   146,  -560,  -560,
-    -560,  -560,   150,   151,   153,   157,   158,  -560,   160,  -560,
-    -560,   161,  -560,   163,  -560,  -560,   166,   167,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,   168,  -560,  -560,  -560,   170,   171,  -560,  -560,  -560,
-    -560,  -560,  -560,   174,  -560,  -560,   185,  -560,  -560,  -560,
-     187,  -560,  -560,  -560,   188,   189,   190,   191,  -560,  -560,
-    -560,   195,   196,  -560,  -560,   206,   209,   211,  -132,  -560,
-    -560,  -560,  1736,   851,   133,   267,   270,   273,   283,   286,
-     220,   148,  -560,  -560,  -560,  -560,   175,   173,   216,  -560,
-    -560,  -560,  -560,  -560,   -42,  -560,  -560,  -560,   290,   222,
-    -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,  -560,   175,   175,  -560,   127,  -101,  -560,  -560,  -560,
-     128,  -560,  -560,  -560,  -560,  -560,  -560,  -119,  -560,  -560,
-     374,   215,   291,  -560,   249,   225,  -560,   227,  -560,   429,
-      84,   291,   710,   710,   430,   432,   710,   710,   435,   458,
-     710,   461,   710,   710,  2097,   710,   710,   463,   -68,   464,
-     710,  2716,   710,   710,  2716,   -38,  2716,  2716,    84,   324,
-     466,  2716,  2869,   271,  -560,   268,  -560,  -560,  -560,   272,
-    -560,   278,  -560,  -560,  -560,    23,  2612,  -560,   279,  -560,
-    -560,  -560,  -560,   279,   -91,  -560,  -560,  -122,  -560,   293,
-     -65,   280,   284,  -560,  -560,  1193,    52,   266,  -560,   710,
-     542,  2097,  -560,  -560,    61,  -560,   285,  -560,   282,   303,
-    -560,   281,   488,  -560,   -49,   133,   -39,   294,  -560,  -560,
-     295,   296,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,   305,  -560,   710,   710,   710,   710,   710,   710,   596,
-    2299,  -135,  -560,  2299,   306,   307,  -560,  -111,   308,   309,
-     314,   316,   317,   323,   326,   371,   327,  2612,    77,   328,
-    -106,  -560,  2299,   329,   330,   332,   311,   335,  -100,  1397,
-     343,  -560,  -560,  -560,  -560,  -560,   344,   346,   359,   360,
-     292,  -560,   361,   362,   367,  -560,  2869,   492,  -560,  -560,
-    -560,   175,    23,   -11,  -560,  1089,  -560,   340,  2612,   370,
-    1476,   334,   413,  1297,    23,  -560,  2612,  -560,  -560,  -560,
-    -560,   611,  -560,  2190,   377,   402,  -560,  -560,  -560,   380,
-    -560,   291,   710,  -560,    18,  -560,  2612,  -560,   378,  -560,
-     384,  -560,   389,  -560,  -560,  -560,  2612,    36,    36,    36,
-      36,    36,    36,  2102,   496,   710,   710,   597,   710,   710,
-     710,   710,   710,   710,   710,   710,   710,   710,   710,   710,
-     710,   710,   710,   710,   710,   605,   710,   710,  -560,  -560,
-    -560,   600,  -560,  -560,  -560,  -560,  -560,  -560,  -560,  -560,
-    -560,  -560,    77,  -560,  1833,  -560,    77,  -560,  -560,  -560,
-     -87,  -560,   710,  -560,  -560,  -560,  -560,   710,  -560,  -560,
-    -560,  -560,  -560,  -560,  -560,  -560,   604,  -560,  -560,  -560,
-    -560,   400,  -560,  -560,   428,  -560,  -560,  -560,  -560,   175,
-     116,  -560,  -560,  2612,   407,  -560,  -560,  -560,    23,  -560,
-    -560,  -560,  -560,  2009,   419,   417,   380,  -560,  -560,  -560,
-    -560,    77,   418,   291,  -560,  -560,   496,  -560,  -560,  1921,
-    -560,   496,  -560,   415,   -74,   318,   318,  -560,   575,   575,
-     482,   482,  2318,  2337,  2260,  2372,  2394,   218,   482,   482,
-      54,    54,    36,    36,    36,  -560,  2212,  -560,  -560,  -560,
-      74,  -560,   421,    77,   422,  -560,  2097,  -560,  -560,   424,
-    -560,    23,   970,   175,  -560,  -560,  1401,  -560,  -560,  -560,
-     623,  -560,  -560,   444,  -560,  -103,  -560,   431,  -560,   425,
-     375,  -560,   434,    77,   437,  -560,   710,  2097,  -560,   710,
-    -560,  -560,    74,  -560,  -560,  -560,   440,  -560,  -560,  -560,
-    -560,    23,   433,   710,  -560,    77,  -560,  -560,  -560,  -560,
-      74,  -560,  -560,  -560,    36,   441,  2299,  -560,  -560,  -560,
-    -560,  -560,  -560,    -1,  -560,  -560,   710,   453,  -560,  -560,
-     468,   -58,   -58,  -560,  -560,   447,  -560,  -560
+    -564,   108,  1696,  -564,  -564,  -564,   -66,  -564,  -564,  -564,
+     176,  -564,  -101,   195,  -564,   243,  -564,  -564,  -564,  -564,
+      38,   148,  -564,  -564,  -564,  -564,  -564,   269,    38,   165,
+     -35,  -564,   -14,    38,    15,  -564,  -564,   291,   321,    15,
+    -564,  -564,  2989,  -564,  -564,  -564,    47,  -564,  -564,  -564,
+    -564,  -564,    51,  2671,    53,    57,  -564,  -564,    64,    24,
+    -564,    81,    80,    85,    87,    91,   117,  -564,  -564,   123,
+    -564,   -16,   -16,   -16,    48,  2836,   125,   -16,   130,   136,
+      96,  -564,   -66,   152,  -564,  -564,   346,  -564,  -564,   119,
+    -564,   139,  -564,  -564,   149,  -564,  -564,  -564,  -564,   368,
+    2836,  -564,  -564,   122,   168,   -92,  -117,  -564,  -564,   169,
+    -564,  -564,   173,  -564,  -564,  -564,   174,   186,  -564,  -564,
+    -564,  -564,  -564,  -564,  -564,  -564,  -564,  -564,   187,  -564,
+    -564,  -564,   188,  -564,  -564,  -564,   189,   190,  -564,  -564,
+    -564,  -564,   191,   192,   194,   203,   206,  -564,   207,  -564,
+    -564,   208,  -564,   213,  -564,  -564,   214,   216,  -564,  -564,
+    -564,  -564,  -564,  -564,  -564,  -564,  -564,  -564,  -564,  -564,
+    -564,   217,  -564,  -564,  -564,   218,   220,  -564,  -564,  -564,
+    -564,  -564,  -564,   223,  -564,  -564,   224,  -564,  -564,  -564,
+     225,  -564,  -564,  -564,   226,   228,   230,   231,  -564,  -564,
+    -564,   236,   257,  -564,  -564,   259,   260,   262,   -62,  -564,
+    -564,  -564,  1836,   878,   200,   335,   340,   349,   359,   364,
+     267,   268,  -564,  -564,  -564,  -564,    48,   270,   271,  -564,
+    -564,  -564,  -564,  -564,   -30,  -564,  -564,  -564,   369,   274,
+    -564,  -564,  -564,  -564,  -564,  -564,  -564,  -564,  -564,  -564,
+    -564,  -564,    48,    48,  -564,   272,   -58,  -564,  -564,  -564,
+     -16,  -564,  -564,  -564,   275,  -564,  -564,  -564,   -12,  -564,
+    -564,   423,   278,   376,  -564,   296,   279,  -564,   276,  -564,
+     485,    43,   376,   731,   731,   487,   489,   731,   731,   490,
+     491,   731,   492,   731,   731,  2224,   731,   731,   494,   -80,
+     495,   731,  2836,   731,   731,  2836,    98,  2836,  2836,    43,
+     202,   496,  2836,  2989,   298,  -564,   295,  -564,  -564,  -564,
+     299,  -564,   302,  -564,  -564,  -564,    87,  2760,  -564,   303,
+    -564,  -564,  -564,  -564,   303,   -97,  -564,  -564,  -112,  -564,
+     325,   -72,   305,   308,  -564,  -564,  1239,    45,   306,  -564,
+     731,   624,  2224,  -564,  -564,    66,    96,  -564,   311,  -564,
+     312,   337,  -564,   307,   520,  -564,  -111,   200,    59,   313,
+    -564,  -564,   314,   316,  -564,  -564,  -564,  -564,  -564,  -564,
+    -564,  -564,  -564,   318,  -564,   731,   731,   731,   731,   731,
+     731,   605,  2473,   -93,  -564,  2473,   320,   322,  -564,   -42,
+     328,   330,   331,   332,   333,   334,   336,   374,   338,  2760,
+      65,   339,   -41,  -564,  2473,   341,   342,   344,   345,   347,
+     -38,  2230,   360,  -564,  -564,  -564,  -564,  -564,   361,   362,
+     363,   365,   352,  -564,   366,   370,   372,  -564,  2989,   526,
+    -564,  -564,  -564,    48,    87,    27,  -564,  1120,  -564,   371,
+    2760,   351,  1575,   343,   456,  1358,    87,  -564,  2760,  -564,
+    -564,  -564,  -564,   709,  -564,  2390,   373,   391,  -564,  -564,
+    -564,  -564,  -564,  -564,   -34,  -564,  -564,   384,  -564,   376,
+     731,  -564,    21,  -564,  2760,  -564,   377,  -564,   378,  -564,
+     380,  -564,  -564,  -564,  2760,    32,    32,    32,    32,    32,
+      32,  2319,   227,   731,   731,   590,   731,   731,   731,   731,
+     731,   731,   731,   731,   731,   731,   731,   731,   731,   731,
+     731,   731,   731,   592,   731,   731,  -564,  -564,  -564,   587,
+    -564,  -564,  -564,  -564,  -564,  -564,  -564,  -564,  -564,  -564,
+      65,  -564,  1957,  -564,    65,  -564,  -564,  -564,     8,  -564,
+     731,  -564,  -564,  -564,  -564,   731,  -564,  -564,  -564,  -564,
+    -564,  -564,  -564,  -564,   591,  -564,  -564,  -564,  -564,   385,
+    -564,  -564,   411,  -564,  -564,  -564,  -564,    48,   171,  -564,
+    -564,  2760,   388,  -564,  -564,  -564,    87,  -564,  -564,  -564,
+    -564,  2135,    66,  -564,   393,   394,   384,  -564,  -564,  -564,
+    -564,    65,   390,   376,  -564,  -564,   227,  -564,  -564,  2046,
+    -564,   227,  -564,   392,    28,    90,    90,  -564,   672,   672,
+     215,   215,  2345,  2504,  2452,  1277,  1396,  1337,   215,   215,
+      30,    30,    32,    32,    32,  -564,  2430,  -564,  -564,  -564,
+      36,  -564,   395,    65,   403,  -564,  2224,  -564,  -564,   404,
+    -564,    87,   999,    48,  -564,  -564,  1477,  -564,  -564,  -564,
+    -564,   599,  -564,  -564,   430,  -564,  -103,  -564,   410,  -564,
+     407,   289,  -564,   408,    65,   409,  -564,   731,  2224,  -564,
+     731,  -564,  -564,    36,  -564,  -564,  -564,   414,  -564,  -564,
+    -564,  -564,    87,   412,   731,  -564,    65,  -564,  -564,  -564,
+    -564,    36,  -564,  -564,  -564,    32,   415,  2473,  -564,  -564,
+    -564,  -564,  -564,  -564,    -7,  -564,  -564,   731,   436,  -564,
+    -564,   447,  -147,  -147,  -564,  -564,   425,  -564,  -564
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
      Performed when YYTABLE does not specify something else to do.  Zero
      means the default is an error.  */
-static const yytype_uint16 yydefact[] =
+static const yytype_int16 yydefact[] =
 {
        5,     0,     3,     1,    35,   383,   398,   273,   265,   284,
        0,   322,     0,     0,   272,   260,   274,   318,   271,   275,
@@ -1049,86 +1151,87 @@ static const yytype_uint16 yydefact[] =
       10,   292,     6,   313,     0,    29,   311,   312,     0,     0,
       26,   331,   328,   330,   329,   263,   264,   178,   179,   180,
      181,   323,     0,     0,   335,   371,   334,   257,   385,   387,
-     327,   389,   325,    34,   409,   408,   410,     0,   406,   399,
-       0,     0,   186,    50,     0,     0,   243,     0,   249,     0,
+     327,   389,   325,    34,     0,   410,   409,   411,     0,   406,
+     399,     0,     0,   186,    50,     0,     0,   243,     0,   249,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   196,     0,     0,     0,
-       0,     0,   196,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    76,    70,    51,     0,    23,    24,    25,     0,
-      21,     0,    19,    16,    22,    28,     0,    69,   386,    53,
-      54,   314,   315,   388,   390,    55,   256,    68,     5,     0,
-      68,     0,     0,   305,    26,    68,     0,     0,   333,     0,
-       0,    57,   337,   326,     0,   405,     0,    49,     0,   188,
-     189,   192,     0,   391,    68,    68,    68,     0,   177,   176,
-       0,     0,   207,   198,   199,   200,   204,   205,   206,   201,
-     202,     0,   203,     0,     0,     0,     0,     0,     0,     0,
-     241,     0,   239,   242,     0,     0,    74,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   356,     0,
-       0,   194,   197,     0,     0,     0,     0,     0,     0,     0,
-       0,   373,   374,   375,   376,   377,     0,     0,     0,     0,
-     395,   397,     0,     0,     0,    72,    76,     0,    20,    17,
-      56,     0,    28,     0,   293,    68,   298,     0,     0,     0,
-       0,     0,     0,    68,    28,    27,    69,   324,   332,   336,
-     372,     0,    67,     0,     0,    61,    58,    59,   407,   400,
-     193,   187,     0,    38,     0,   381,     0,   244,     0,   393,
-      69,   250,     0,    78,   169,    84,     0,   231,   230,   229,
-     232,   227,   228,     0,   344,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   196,     0,     0,
+       0,     0,     0,   196,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    76,    70,    51,     0,    23,    24,    25,
+       0,    21,     0,    19,    16,    22,    28,     0,    69,   386,
+      53,    54,   314,   315,   388,   390,    55,   256,    68,     5,
+       0,    68,     0,     0,   305,    26,    68,     0,     0,   333,
+       0,     0,    57,   337,   326,     0,     0,   405,     0,    49,
+       0,   188,   189,   192,     0,   391,    68,    68,    68,     0,
+     177,   176,     0,     0,   207,   198,   199,   200,   204,   205,
+     206,   201,   202,     0,   203,     0,     0,     0,     0,     0,
+       0,     0,   241,     0,   239,   242,     0,     0,    74,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    85,    96,
-     100,     0,   104,   105,   110,   111,   112,   113,   114,   116,
-     119,   121,   356,   323,    57,   361,   356,   358,   357,    64,
-     353,   125,   196,   124,   140,   144,   145,     0,   153,   157,
-     161,   162,   164,   163,   167,   168,     0,   172,   173,   174,
-      73,     0,    15,   364,   392,   290,   294,     7,   300,     0,
-     387,   299,   302,     0,     0,   255,   303,    26,    28,   317,
-      66,    65,   338,     0,   404,     0,   400,   190,   191,    39,
+     356,     0,     0,   194,   197,     0,     0,     0,     0,     0,
+       0,     0,     0,   373,   374,   375,   376,   377,     0,     0,
+       0,     0,   395,   397,     0,     0,     0,    72,    76,     0,
+      20,    17,    56,     0,    28,     0,   293,    68,   298,     0,
+       0,     0,     0,     0,     0,    68,    28,    27,    69,   324,
+     332,   336,   372,     0,    67,     0,     0,    61,    58,    59,
+     416,   414,   417,   415,     0,   412,   407,   400,   193,   187,
+       0,    38,     0,   381,     0,   244,     0,   393,    69,   250,
+       0,    78,   169,    84,     0,   231,   230,   229,   232,   227,
+     228,     0,   344,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    85,    96,   100,     0,
+     104,   105,   110,   111,   112,   113,   114,   116,   119,   121,
+     356,   323,    57,   361,   356,   358,   357,    64,   353,   125,
+     196,   124,   140,   144,   145,     0,   153,   157,   161,   162,
+     164,   163,   167,   168,     0,   172,   173,   174,    73,     0,
+      15,   364,   392,   290,   294,     7,   300,     0,   387,   299,
+     302,     0,     0,   255,   303,    26,    28,   317,    66,    65,
+     338,     0,     0,   408,   404,     0,   400,   190,   191,    39,
       37,     0,   389,   258,   248,   247,   344,   238,   323,    57,
      348,   344,   345,     0,   341,   220,   221,   233,   214,   215,
      218,   219,   209,   210,     0,   211,   212,   213,   217,   216,
      223,   222,   225,   226,   224,   234,     0,   240,    75,    63,
      356,   323,     0,   356,     0,   352,    57,   360,   195,     0,
      396,    28,    68,     0,   253,   301,    68,   309,    62,    60,
-       0,   403,   401,   366,   369,     0,   246,     0,   259,     0,
-     344,   323,     0,   356,     0,   340,     0,    57,   347,     0,
-     237,   351,   356,   362,   355,   359,     0,   151,    52,    18,
-     365,    28,     0,     0,   368,     0,   245,   182,   236,   339,
-     356,   349,   343,   346,   235,     0,   208,   354,   363,   310,
-     402,   367,   370,     0,   342,   350,     0,     0,   394,   183,
-       0,    68,    68,   252,   185,     0,   184,   251
+     413,     0,   403,   401,   366,   369,     0,   246,     0,   259,
+       0,   344,   323,     0,   356,     0,   340,     0,    57,   347,
+       0,   237,   351,   356,   362,   355,   359,     0,   151,    52,
+      18,   365,    28,     0,     0,   368,     0,   245,   182,   236,
+     339,   356,   349,   343,   346,   235,     0,   208,   354,   363,
+     310,   402,   367,   370,     0,   342,   350,     0,     0,   394,
+     183,     0,    68,    68,   252,   185,     0,   184,   251
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -560,  -560,  -560,   320,  -560,   -46,  -560,  -317,  -315,     0,
-    -560,  -560,  -560,  -560,  -560,   208,  -560,  -560,  -560,    10,
-    -514,  -560,  -560,  -261,  -242,  -203,    -2,  -560,  -560,  -272,
-     354,   -66,  -560,  -560,  -560,  -560,   198,    13,   366,   137,
-    -195,  -560,  -264,  -280,  -560,  -560,  -560,  -560,   -41,  -237,
-    -560,   233,  -560,    25,   -69,  -560,    42,    99,     5,  -560,
-      11,    17,  -560,  -560,   619,  -560,  -560,  -560,  -560,  -560,
-     -18,  -560,    19,    16,  -560,  -560,    20,  -560,  -560,  -307,
-    -496,   -52,   -43,   -30,  -236,  -560,  -560,  -560,  -540,  -560,
-    -559,  -560,    51,  -560,  -560,  -560,     3,  -560,   459,  -560,
-     391,     1,   -50,  -560,     7,  -560,   615,   112,  -560,  -560,
-     115,  -560,   348
+    -564,  -564,  -564,   301,  -564,   -45,  -564,  -331,  -315,     0,
+    -564,  -564,  -564,  -564,  -564,   184,  -564,  -564,  -564,    11,
+    -483,  -564,  -564,  -263,  -246,  -207,    -2,  -564,  -564,  -284,
+     353,   -68,  -564,  -564,  -564,  -564,   163,    13,   355,    93,
+    -199,  -564,  -265,  -279,  -564,  -564,  -564,  -564,   -78,  -197,
+    -564,   196,  -564,     5,   -70,  -564,   110,   162,    10,  -564,
+      17,    19,  -564,  -564,   593,  -564,  -564,  -564,  -564,  -564,
+     -28,  -564,    20,    16,  -564,  -564,    22,  -564,  -564,  -313,
+    -506,   -52,     6,     3,  -236,  -564,  -564,  -564,  -539,  -564,
+    -563,  -564,  -164,  -564,  -564,  -564,   -47,  -564,   426,  -564,
+     356,     1,   -55,  -564,     7,  -564,   578,    68,  -564,  -564,
+      67,  -564,   310,  -564,    75
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    43,     2,   338,   212,   562,   345,   236,   316,
-      45,   474,    46,    47,    48,    49,   317,   220,    50,   318,
-     464,   465,   466,   467,   535,    52,   327,   208,   397,   209,
-     370,   536,   703,   709,   358,   359,   360,   258,   410,   411,
-     390,   391,   392,   394,   364,   477,   481,   366,   714,   715,
-     574,    55,   657,    91,   537,    56,    93,    57,   319,    59,
-     320,   321,   337,   444,    62,    63,   340,   450,    64,   239,
-      65,    66,   322,   323,   225,    69,   324,    71,    72,    73,
-     346,    74,   241,    75,   255,   256,   602,   664,   603,   604,
-     538,   634,   539,   540,   564,   684,   654,   655,   257,   426,
-     210,   259,    77,    78,   261,   432,    81,   585,   586,    82,
-      83,   267,   268
+      -1,     1,    43,     2,   339,   212,   570,   346,   236,   317,
+      45,   482,    46,    47,    48,    49,   318,   220,    50,   319,
+     466,   467,   468,   469,   543,    52,   328,   208,   399,   209,
+     372,   544,   714,   720,   360,   361,   362,   258,   412,   413,
+     392,   393,   394,   396,   366,   485,   489,   368,   725,   726,
+     582,    55,   668,    91,   545,    56,    93,    57,   320,    59,
+     321,   322,   338,   446,    62,    63,   341,   452,    64,   239,
+      65,    66,   323,   324,   225,    69,   325,    71,    72,    73,
+     347,    74,   241,    75,   255,   256,   612,   675,   613,   614,
+     546,   644,   547,   548,   572,   695,   665,   666,   257,   428,
+     210,   259,    77,    78,   261,   434,    81,   595,   596,    82,
+      83,   268,   269,   474,   475
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1136,749 +1239,776 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      53,   226,    44,    76,   213,   254,   398,    58,   253,    79,
-     440,   326,    51,    60,   352,    54,   347,   348,    68,    61,
-     632,    67,    70,   399,   589,   260,   402,   453,   404,   243,
-     244,   409,   653,   406,   262,   224,   416,   630,   706,   457,
-     435,   242,   242,   242,  -404,   447,   277,   242,    13,   517,
-     275,   707,   312,   497,   227,   245,   659,   246,   222,    27,
-     228,   665,   104,   106,  -261,   354,   221,  -261,   181,   460,
-      97,   497,   185,   521,   313,   101,   518,   245,   542,   246,
-     245,   685,   246,    42,   542,   662,   442,   355,   393,   339,
-      27,   393,   247,   368,     3,   278,   369,    11,   405,   199,
-     522,   412,   660,   449,   350,   543,   686,   412,   419,   351,
-     458,   549,   264,  -261,   247,   -45,  -261,   247,   350,    11,
-     689,    86,   676,   636,   248,   265,   653,   565,   478,   482,
-     266,   350,    92,   102,   443,   672,   667,   448,   107,   579,
-      42,   421,   422,   423,   424,   425,   248,    42,    80,   248,
-      84,   713,    85,   695,   393,   463,    42,   254,    94,   475,
-     253,   476,   448,   448,   560,   690,    42,    98,    87,   479,
-      88,   231,    89,    11,    90,    95,    99,    96,   245,   249,
-     246,   100,   211,   254,   254,   214,   253,   253,   487,   488,
-     489,   490,   491,   492,   493,   103,   -40,    90,    17,   229,
-     105,   249,    90,   361,   249,   563,   250,   708,   588,   232,
-      53,    53,   371,    76,    76,   247,   341,   353,   230,    79,
-      79,   233,  -261,    22,   -41,    54,    54,   238,   250,   590,
-     242,   250,   235,   495,   496,   497,   498,   499,   500,   501,
-     515,   516,   408,   104,   106,   234,   251,   248,   512,   513,
-     514,   417,   600,   627,   420,   237,   427,   428,   515,   516,
-     646,   434,   252,   647,   240,  -261,   490,   -43,   533,    31,
-     328,   533,    90,   329,   441,   330,   331,   254,   332,   350,
-     253,    36,   350,   639,   534,   -42,   333,   534,    90,   334,
-     263,    90,   407,   342,   245,   343,   246,   -44,   637,   408,
-     605,   606,   249,   608,   609,   610,   611,   612,   613,   614,
-     615,   616,   617,   618,   619,   620,   621,   622,   623,   624,
-     270,   626,   649,   457,   271,  -254,   678,  -254,   272,   250,
-     430,   431,   273,   644,   274,   497,   276,   494,    42,   349,
-     279,   280,   281,   456,   282,   455,    76,   412,   283,   407,
-     284,   285,    79,   457,   600,   532,   286,   -46,    54,   600,
-     287,   288,   668,   289,   480,   457,   699,   290,   291,   251,
-     292,   293,   254,   294,     9,   253,   295,   296,   297,   356,
-     298,   299,   -47,   457,   300,   252,   495,   496,   497,   498,
-     499,   500,   501,   502,   503,   301,   569,   302,   303,   304,
-     305,   306,   361,   701,   226,   307,   308,   680,   508,   509,
-     510,   511,   512,   513,   514,   247,   309,    20,   600,   310,
-      11,   311,   515,   516,   591,   -48,   357,   335,   601,   344,
-      23,    24,    25,    26,   596,   362,   363,   365,   367,   395,
-      28,   396,   710,    53,   400,    44,    76,   248,   573,   570,
-      58,   456,    79,   455,    76,    51,    60,   227,    54,   566,
-      79,    68,    61,   228,    67,    70,    54,   401,   633,   221,
-     403,   694,   413,   415,   696,   433,   436,   459,   437,   446,
-      33,   438,   408,   592,    35,   439,  -261,   471,   393,   451,
-     470,   452,   469,   472,   473,   547,   556,   495,   496,   497,
-     254,   561,   249,   253,    21,   483,   484,   485,   448,   448,
-     510,   511,   512,   513,   514,   486,   642,   519,   520,   523,
-     524,   226,   515,   516,   658,   525,   568,   526,   527,   250,
-     601,   408,   407,   663,   528,   601,   247,   529,   531,   541,
-     544,   545,   576,   546,   584,   372,   548,   408,   373,   374,
-     375,   376,   377,   378,   551,   552,   504,   553,   505,   506,
-     507,   508,   509,   510,   511,   512,   513,   514,   248,   598,
-     554,   555,   557,   558,   254,   515,   516,   253,   559,   571,
-     350,   407,   530,   629,   408,   599,   583,   635,   582,   593,
-     495,   496,   497,   594,   601,   500,   501,   407,   595,   372,
-     607,     5,   373,   374,   375,   376,   377,   378,   625,   628,
-     640,   641,   643,   379,   372,   408,   645,   373,   374,   375,
-     376,   377,   378,   249,    80,   651,   666,   656,   682,     7,
-     683,     8,   673,   675,   407,   677,   688,     9,   687,   711,
-      53,    11,   700,    76,   456,   691,   455,    76,   693,    79,
-     250,   698,   705,    79,   712,    54,   717,    14,   445,    54,
-     577,   380,   429,   215,    16,   407,    17,   379,   418,   587,
-      18,   716,   223,    19,   510,   511,   512,   513,   514,   638,
-      20,   671,   379,   575,   674,   336,   515,   516,   702,   414,
-     598,    22,   381,    23,    24,    25,    26,   269,   652,   650,
-       0,   350,   468,    28,     0,   382,   599,     0,     0,     0,
-       0,     0,     0,   372,   692,   380,   373,   374,   375,   376,
-     377,   378,     0,   697,     0,     0,     0,     0,     0,     0,
-     380,   383,     0,     0,   384,   385,   461,    31,     0,   387,
-     388,   704,    32,    33,    34,     0,   381,    35,   462,    36,
-       0,     0,   389,   218,     0,     0,     0,     0,     0,   382,
-       0,   381,   219,     0,    39,   508,   509,   510,   511,   512,
-     513,   514,    40,    41,   382,     0,     0,     0,     0,   515,
-     516,   379,     0,     0,     0,   383,     0,     0,   384,   385,
-     386,     0,     0,   387,   388,     0,     0,     0,     0,     0,
-     383,     0,     0,   384,   385,   386,   389,     0,   387,   388,
-       0,     0,     0,     0,     0,     0,     0,   580,     0,     0,
-       0,   389,     0,     0,     0,     0,     0,     0,     0,   380,
+      53,   226,    44,    76,   254,   213,   253,   327,   400,    79,
+     353,   442,    58,    51,   455,    54,   348,   349,    68,    60,
+     260,    61,    67,   401,    70,   224,   404,   599,   406,   437,
+      11,   411,   408,   717,   459,   640,   418,  -404,   664,   245,
+     449,   246,   104,   106,   278,   276,   718,   505,   245,   505,
+     246,   245,   370,   246,   227,   371,    17,     9,   181,   642,
+     228,    42,   185,   222,  -261,   724,   221,   670,   245,  -261,
+     246,   462,   676,    27,   242,   242,   242,   247,   243,   244,
+     242,    22,    11,   262,   696,   395,   247,    13,   395,   247,
+     199,    11,   470,   279,   525,   407,    42,    42,   414,   444,
+     483,    20,   671,   340,   414,   421,   247,   505,     3,   697,
+     248,   460,    86,  -261,    23,    24,    25,    26,  -261,   248,
+     -45,   526,   248,   264,    28,   313,   673,    31,   471,   573,
+      27,   445,   700,   664,   450,   683,    42,    92,    97,   248,
+      36,   587,    80,   101,   451,   529,   550,   314,   265,   550,
+     351,   395,   465,   592,   568,   352,   254,    94,   253,   484,
+     450,   450,   266,   687,    33,   249,   701,   267,    98,    35,
+     486,   490,   530,   551,   249,   356,   557,   249,    99,    84,
+     593,    85,   254,   254,   253,   253,   495,   496,   497,   498,
+     499,   500,   501,   250,   249,   706,   102,   357,    87,   100,
+      88,   107,   250,   363,   719,   250,   342,   571,   432,   433,
+      53,    53,   373,    76,    76,   598,   351,   472,   214,    79,
+      79,   646,   250,   104,   106,    54,    54,   520,   521,   522,
+     503,   504,   505,   541,   231,   600,   351,   523,   524,   523,
+     524,   678,   251,   410,   351,   251,    89,   419,    90,   542,
+     422,   473,   429,   430,   656,   271,   610,   436,   252,   211,
+     637,   252,   541,   242,   498,   -40,   354,    42,   247,   229,
+     487,   657,    95,   351,    96,   443,   230,   254,   542,   253,
+     423,   424,   425,   426,   427,   518,   519,   520,   521,   522,
+     649,   232,   233,   409,   103,   234,    90,   523,   524,   235,
+     410,   248,   647,   237,   615,   616,   238,   618,   619,   620,
+     621,   622,   623,   624,   625,   626,   627,   628,   629,   630,
+     631,   632,   633,   634,   105,   636,    90,   459,   659,  -261,
+     247,   -41,  -261,   240,   -43,    11,   689,   -42,   329,   502,
+      90,   654,   263,   330,   458,   331,   457,    76,   -44,   273,
+     409,   414,   332,    79,   333,   272,   249,   540,   459,    54,
+     610,   274,   334,   248,    90,   610,   488,   335,   679,    90,
+     459,   275,   343,   254,   344,   253,   639,   710,   277,   245,
+     645,   246,   280,  -254,   250,  -254,   281,   282,   459,   503,
+     504,   505,   506,   507,   508,   509,   510,   511,   577,   283,
+     284,   285,   286,   287,   288,   289,   226,   290,    42,   363,
+     518,   519,   520,   521,   522,   712,   291,   691,   249,   292,
+     293,   294,   523,   524,   608,   610,   295,   296,   358,   297,
+     298,   299,   601,   300,   611,   351,   301,   302,   303,   304,
+     609,   305,   606,   306,   307,    53,   250,    44,    76,   308,
+     581,   578,   721,   458,    79,   457,    76,    58,    51,   227,
+      54,   574,    79,    68,    60,   228,    61,    67,    54,    70,
+     309,   221,   310,   311,   643,   312,   682,   336,   705,   685,
+     -46,   707,   -47,   -48,   345,   364,   608,   350,   355,   367,
+     410,   602,   359,   365,   369,   395,   397,   351,   398,   402,
+     403,   405,   609,   415,   417,   435,   438,   254,   439,   253,
+     703,   440,   441,  -261,   448,   450,   450,   453,   454,   708,
+     461,   477,   480,   478,   479,   652,   481,   491,   492,   226,
+     493,   494,   555,   669,   527,   569,   528,   715,   611,   410,
+     409,   674,   531,   611,   532,   533,   534,   535,   536,    21,
+     537,   594,   539,   549,   584,   552,   553,   410,   554,   564,
+     576,   556,   512,   579,   513,   514,   515,   516,   517,   518,
+     519,   520,   521,   522,   559,   560,   561,   562,   591,   563,
+     565,   523,   524,   254,   566,   253,   567,   590,   538,   409,
+     604,   603,   605,   617,   410,   635,   638,   650,   653,   651,
+     655,    80,   667,   611,   693,   662,   677,   409,   374,   684,
+       5,   375,   376,   377,   378,   379,   380,   686,   688,   694,
+     698,   699,   702,   704,   711,   722,   410,   374,   709,   716,
+     375,   376,   377,   378,   379,   380,   723,   728,   585,     7,
+     447,     8,   597,   648,   409,   727,   223,     9,   583,   713,
+      53,    11,   337,    76,   458,   416,   457,    76,   420,    79,
+     270,   661,   431,    79,   663,    54,   476,   660,    14,    54,
+       0,     0,     0,     0,   215,    16,   409,    17,   381,     0,
+       0,    18,     0,     0,    19,     0,     0,   503,   504,   505,
+       0,    20,   508,   509,     0,     0,     0,   381,     0,     0,
+       0,     0,    22,     0,    23,    24,    25,    26,     0,     0,
+       0,     0,   374,     0,    28,   375,   376,   377,   378,   379,
+     380,     0,     0,     0,     0,     0,   382,     0,     0,     0,
+       0,     0,     0,     0,   374,     0,     0,   375,   376,   377,
+     378,   379,   380,     0,     0,   382,     0,     0,    31,     0,
+       0,     0,     0,    32,    33,    34,     0,     0,   383,    35,
+       0,    36,     0,     0,     0,   218,     0,     0,     0,     0,
+       0,   384,     0,     0,   219,     0,    39,   383,     0,     0,
+       0,     0,   381,     0,    40,    41,     0,     0,     0,     0,
+     384,     0,     0,     0,     0,     0,     0,   385,     0,     0,
+     386,   387,   388,     0,   381,   389,   390,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   385,     0,   391,   386,
+     387,   463,     0,     0,   389,   390,     0,     0,     0,     0,
+     382,     0,     0,   464,     0,     0,     0,   391,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   382,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   383,     0,     0,   516,   517,   518,   519,   520,
+     521,   522,     0,     0,     0,   384,     0,     0,     0,   523,
+     524,     0,     4,     5,   383,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   384,     0,     0,
+       0,   385,     0,     0,   386,   387,   388,     0,     0,   389,
+     390,     0,     7,     0,     8,     0,     0,     0,   588,     0,
+       9,    10,   391,   385,    11,     0,   386,   387,   388,    12,
+       0,   389,   390,     0,     0,     0,     0,     0,    13,     0,
+       0,    14,     0,     0,   391,     0,     0,    15,    16,     0,
+      17,     0,     0,     0,    18,     0,     0,    19,     0,     0,
+       0,     0,     0,     0,    20,     0,     0,     0,     0,     0,
+       0,    21,   316,     0,     0,    22,     0,    23,    24,    25,
+      26,    27,     0,     0,     0,     0,     0,    28,     0,     0,
+       0,     0,    29,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     4,     5,     0,     0,     0,     0,    30,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     4,     5,     0,     0,     0,
-     381,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   382,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     7,     0,     8,     0,     0,     0,
-       0,     0,     9,    10,     0,     0,    11,     0,     0,   383,
-       0,    12,   384,   385,   386,     0,     0,   387,   388,     0,
-      13,     0,    14,     0,     0,     0,     0,     0,    15,    16,
-     389,    17,     0,     0,     0,    18,     0,     0,    19,     0,
-       0,     0,     0,     0,     0,    20,     0,     0,     0,     0,
-       0,     0,    21,   315,     0,     0,    22,     0,    23,    24,
+       0,    31,     0,     0,     0,     0,    32,    33,    34,     0,
+       0,     0,    35,     7,    36,     8,     0,     0,    37,     0,
+       0,     9,    10,     0,     0,    11,     0,    38,     0,    39,
+      12,     0,     0,     0,     0,     0,     0,    40,    41,    13,
+       0,     0,    14,     0,     0,     0,     0,     0,    15,    16,
+       0,    17,     0,     0,     0,    18,     0,     0,    19,     0,
+       0,     0,     0,     0,     0,    20,    42,     0,     0,   326,
+       0,     0,    21,   316,     0,     0,    22,     0,    23,    24,
       25,    26,    27,     0,     0,     0,     0,     0,    28,     0,
        0,     0,     0,    29,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     4,     5,     0,     0,     0,     0,
       30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    31,     0,     0,     0,     0,    32,    33,    34,
-       0,     0,    35,     7,    36,     8,     0,     0,    37,     0,
-       0,     9,    10,     0,     0,    11,     0,    38,     0,    39,
-      12,     0,     0,     0,     0,     0,     0,    40,    41,    13,
+       0,     0,     0,    35,     7,    36,     8,     0,     0,    37,
+       0,     0,     9,    10,     0,     0,    11,     0,    38,     0,
+      39,    12,     0,     0,     0,     0,     0,     0,    40,    41,
+      13,     0,     0,    14,     0,     0,     0,     0,     0,    15,
+      16,     0,    17,     0,     0,     0,    18,     0,     0,    19,
+       0,     0,     0,     0,     0,     0,    20,    42,     0,     0,
+     690,     0,     0,    21,     0,     0,     0,    22,     0,    23,
+      24,    25,    26,    27,     0,     0,     0,     0,     0,    28,
+       0,     0,     0,     0,    29,     0,     0,     0,     0,     0,
+       0,     0,     0,     4,     5,     0,     0,     0,     0,     0,
+       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    31,     0,     0,     0,     0,    32,    33,
+      34,     0,     0,     7,    35,     8,    36,     0,     0,     0,
+      37,     9,     0,     0,     0,    11,     0,     0,     0,    38,
+      12,    39,   503,   504,   505,   506,   507,   508,   509,    40,
+      41,     0,    14,     0,     0,     0,     0,     0,    15,    16,
+       0,    17,     0,     0,     0,    18,     0,     0,    19,     0,
+       0,     0,     0,     0,     0,    20,     0,     0,    42,     0,
+       0,   575,    21,     0,     0,     0,    22,     0,    23,    24,
+      25,    26,     0,     0,     0,     0,     0,     0,    28,     0,
+       0,     0,   503,   504,   505,   506,   507,   508,   509,     0,
+       0,     0,     4,     5,     0,     0,     0,     0,     0,     0,
+      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    31,     0,     0,     0,     0,    32,    33,    34,
+       0,     0,     7,    35,     8,    36,     0,     0,     0,    37,
+       9,     0,     0,     0,    11,     0,     0,     0,    38,    12,
+      39,   503,   504,   505,   506,   507,   508,   509,    40,    41,
        0,    14,     0,     0,     0,     0,     0,    15,    16,     0,
       17,     0,     0,     0,    18,     0,     0,    19,     0,     0,
-       0,     0,     0,     0,    20,     0,    42,     0,     0,   325,
-       0,    21,   315,     0,     0,    22,     0,    23,    24,    25,
-      26,    27,     0,     0,     0,     0,     0,    28,     0,     0,
-       0,     0,    29,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     4,     5,     0,     0,     0,     0,    30,
+       0,     0,     0,     0,    20,     0,     0,    42,     0,     0,
+     456,    21,     0,     0,     0,    22,     0,    23,    24,    25,
+      26,     0,     0,     0,     0,     0,     0,    28,   514,   515,
+     516,   517,   518,   519,   520,   521,   522,     0,     0,     0,
+       0,     4,     5,     0,   523,   524,     0,     0,     0,    30,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    31,     0,     0,     0,     0,    32,    33,    34,     0,
-       0,    35,     7,    36,     8,     0,     0,    37,     0,     0,
-       9,    10,     0,     0,    11,     0,    38,     0,    39,    12,
-       0,     0,     0,     0,     0,     0,    40,    41,    13,     0,
-      14,     0,     0,     0,     0,     0,    15,    16,     0,    17,
+       0,     7,    35,     8,    36,     0,     0,     0,    37,     9,
+       0,     0,     0,    11,     0,     0,     0,    38,    12,    39,
+     516,   517,   518,   519,   520,   521,   522,    40,    41,     0,
+      14,     0,     0,     0,   523,   524,    15,    16,     0,    17,
        0,     0,     0,    18,     0,     0,    19,     0,     0,     0,
-       0,     0,     0,    20,     0,    42,     0,     0,   679,     0,
+       0,     0,     0,    20,     0,     0,    42,     0,     0,   586,
       21,     0,     0,     0,    22,     0,    23,    24,    25,    26,
-      27,     0,     0,     0,     0,     0,    28,     4,     5,     0,
-       0,    29,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    30,     0,
-       0,     0,     0,     0,     0,     0,     7,     0,     8,     0,
-      31,     0,     0,     0,     9,    32,    33,    34,    11,     0,
-      35,     0,    36,    12,     0,     0,    37,     0,     0,     0,
-       0,     0,     0,     0,    14,    38,     0,    39,     0,     0,
-      15,    16,     0,    17,     0,    40,    41,    18,     0,     0,
-      19,     0,     0,     0,     0,     0,     0,    20,     0,     0,
-       0,     0,     0,     0,    21,     0,     0,     0,    22,     0,
-      23,    24,    25,    26,    42,     0,     0,   567,     0,     0,
-      28,     4,     5,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    30,     0,     0,     0,     0,     0,     0,     0,
-       7,     0,     8,     0,    31,     0,     0,     0,     9,    32,
-      33,    34,    11,     0,    35,     0,    36,    12,     0,     0,
-      37,     0,     0,     0,     0,     0,     0,     0,    14,    38,
-       0,    39,     0,     0,    15,    16,     0,    17,     0,    40,
-      41,    18,     0,     0,    19,     0,     0,     0,     0,     0,
-       0,    20,     0,     0,     0,     0,     0,     0,    21,     0,
-       0,     0,    22,     0,    23,    24,    25,    26,    42,     0,
-       0,   454,     0,     0,    28,     4,     5,     0,     0,     0,
-       0,     0,   495,   496,   497,   498,   499,   500,   501,   502,
-     503,     0,     0,     0,     0,     0,    30,     0,     0,     0,
-       0,     0,     0,     0,     7,     0,     8,     0,    31,     0,
-       0,     0,     9,    32,    33,    34,    11,     0,    35,     0,
-      36,    12,     0,     0,    37,     0,     0,     0,     0,     0,
-       0,     0,    14,    38,     0,    39,     0,     0,    15,    16,
-       0,    17,     0,    40,    41,    18,     0,     0,    19,     0,
-       0,     5,     0,     0,     0,    20,     0,     0,     0,     0,
-       0,     0,    21,     0,     0,     0,    22,     0,    23,    24,
-      25,    26,    42,     0,     0,   578,     0,     0,    28,     7,
+       5,     0,     0,     0,     0,     0,    28,     0,   515,   516,
+     517,   518,   519,   520,   521,   522,     0,     0,     0,     0,
+       0,     0,     0,   523,   524,     0,     0,     0,    30,     7,
        0,     8,     0,     0,     0,     0,     0,     9,     0,     0,
-       0,    11,     0,     0,     0,     0,     0,     0,     0,     0,
-      30,     0,     0,     0,     0,     0,     0,    14,     0,     0,
-       0,     0,    31,   215,    16,     0,    17,    32,    33,    34,
-      18,     0,    35,    19,    36,     0,     0,     0,    37,     0,
-      20,     0,     0,     0,     0,     0,     0,    38,     0,    39,
-       0,    22,     0,    23,    24,    25,    26,    40,    41,     0,
-       0,     0,   504,    28,   505,   506,   507,   508,   509,   510,
-     511,   512,   513,   514,     0,     0,     0,     0,     0,     0,
-       0,   515,   516,     0,     0,     0,    42,     0,   550,   681,
-       4,     5,     0,     0,     0,     0,     0,    31,     0,     0,
-       6,     0,    32,    33,    34,     0,     0,    35,     0,    36,
-       0,     0,     0,   218,     0,     0,     0,     0,     0,     7,
-       0,     8,   219,     0,    39,     0,     0,     9,    10,     0,
-       0,    11,    40,    41,     0,     0,    12,     0,     0,     0,
-       0,     0,     0,     0,     0,    13,     0,    14,     0,     0,
-       0,     0,     0,    15,    16,     0,    17,     0,     0,     0,
-      18,    42,     0,    19,   572,     0,     0,     0,     0,     0,
-      20,     0,     0,     0,     0,     0,     0,    21,     0,     0,
-       0,    22,     0,    23,    24,    25,    26,    27,     0,     0,
-       0,     0,     0,    28,     0,     0,     0,     0,    29,     0,
+      31,    11,     0,     0,     0,    32,    33,    34,     0,     0,
+       0,    35,     0,    36,     0,     0,     0,    37,    14,     0,
+       0,     0,     0,     0,   215,    16,    38,    17,    39,     0,
+       0,    18,     0,     0,    19,     0,    40,    41,     0,     0,
+       0,    20,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    22,     0,    23,    24,    25,    26,     0,     0,
+       0,     0,     0,     0,    28,    42,     0,     0,   692,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
-       4,     5,     0,     0,     0,     0,     0,    31,     0,   314,
-       0,     0,    32,    33,    34,     0,     0,    35,     0,    36,
-       0,     0,     0,    37,     0,     0,     0,     0,     0,     7,
-     -68,     8,    38,     0,    39,     0,     0,     9,    10,     0,
-       0,    11,    40,    41,     0,     0,    12,     0,     0,     0,
-       0,     0,     0,     0,     0,    13,     0,    14,     0,     0,
-       0,     0,     0,    15,    16,     0,    17,     0,     0,     0,
-      18,    42,     0,    19,     0,     0,     0,     0,     0,     0,
-      20,     0,     0,     0,     0,     0,     0,    21,   315,     0,
-       0,    22,     0,    23,    24,    25,    26,    27,     5,     0,
-       0,     0,     0,    28,     0,     0,     0,     0,    29,     0,
+       4,     5,     0,     0,     0,     0,     0,     0,     0,     0,
+       6,     0,     0,     0,     0,     0,     0,     0,    31,     0,
+       0,     0,     0,    32,    33,    34,     0,     0,     0,    35,
+       7,    36,     8,     0,     0,   218,     0,     0,     9,    10,
+       0,     0,    11,     0,   219,     0,    39,    12,     0,     0,
+       0,     0,     0,     0,    40,    41,    13,     0,     0,    14,
+       0,     0,     0,     0,     0,    15,    16,     0,    17,     0,
+       0,     0,    18,     0,     0,    19,     0,     0,     0,     0,
+       0,     0,    20,    42,     0,     0,   580,     0,     0,    21,
+       0,     0,     0,    22,     0,    23,    24,    25,    26,    27,
+       0,     0,     0,     0,     0,    28,     0,     0,     0,     0,
+      29,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    30,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
+       4,     5,     0,     0,    32,    33,    34,     0,     0,   315,
+      35,     0,    36,     0,     0,     0,    37,     0,     0,     0,
+       0,     0,     0,   -68,     0,    38,     0,    39,     0,     0,
+       7,     0,     8,     0,     0,    40,    41,     0,     9,    10,
+       0,     0,    11,     0,     0,     0,     0,    12,     0,     0,
+       0,     0,     0,     0,     0,     0,    13,     0,     0,    14,
+       0,     0,     0,     0,    42,    15,    16,     0,    17,     0,
+       0,     0,    18,     0,     0,    19,     0,     0,     0,     0,
+       0,     0,    20,     0,     0,     0,     0,     0,     0,    21,
+     316,     0,     0,    22,     0,    23,    24,    25,    26,    27,
+       0,     0,     0,     0,     0,    28,     0,     0,     0,     0,
+      29,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     5,     0,     0,     0,     0,    30,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
+       0,     0,     0,     0,    32,    33,    34,     0,     0,     0,
+      35,     7,    36,     8,     0,     0,    37,     0,   247,     9,
+       0,     0,     0,    11,     0,    38,     0,    39,     0,     0,
+       0,     0,     0,     0,     0,    40,    41,     0,     0,     0,
+      14,     0,     0,     0,     0,     0,   215,    16,     0,    17,
+       0,   248,     0,    18,     0,     0,    19,     0,     0,     0,
+       0,     0,     0,    20,    42,     0,     0,     0,     0,     0,
+       0,     5,     0,     0,    22,     0,    23,    24,    25,    26,
+       0,     0,     0,     0,     0,     0,    28,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    30,     7,     0,     8,     0,
-       0,     0,     0,   247,     9,     0,     0,    31,    11,     0,
-       0,     0,    32,    33,    34,     0,     0,    35,     0,    36,
-       0,     0,     0,    37,    14,     0,     0,     0,     0,     0,
-     215,    16,    38,    17,    39,   248,     0,    18,     0,     0,
-      19,     0,    40,    41,     0,     0,     0,    20,     0,     0,
-       0,     0,     0,     0,     0,     0,     5,     0,    22,     0,
-      23,    24,    25,    26,     0,     0,     0,     0,     0,     0,
-      28,    42,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     7,     0,     8,     0,     0,     0,
-     249,   247,     9,     0,     0,     0,    11,     0,     0,     0,
-       0,     0,     0,     0,    31,     0,     0,     0,     0,    32,
-      33,    34,    14,     0,    35,     0,    36,   250,   215,    16,
-     218,    17,     0,   248,     0,    18,     0,     0,    19,   219,
-       0,    39,     0,     0,     0,    20,     0,     0,     0,    40,
-      41,     0,     0,     0,     5,     0,    22,     0,    23,    24,
-      25,    26,     0,     0,     0,     0,     0,   631,    28,     0,
-       0,     0,     0,   648,     0,     0,     0,     0,    42,     0,
-       0,     0,     7,     0,     8,     0,     0,     0,   249,     0,
-       9,     0,     0,     0,    11,     0,     0,     0,     0,     0,
-       0,     0,    31,     0,     0,     0,     0,    32,    33,    34,
-      14,     0,    35,     0,    36,   250,   215,    16,   218,    17,
-       0,     0,     0,    18,     0,     0,    19,   219,     0,    39,
-       0,     0,     0,    20,     0,     0,     0,    40,    41,     0,
-       0,     0,     5,     0,    22,     0,    23,    24,    25,    26,
-       0,     0,     0,     0,     0,   661,    28,   495,   496,   497,
-     498,   499,   500,   501,   502,   503,    42,     0,     0,     0,
-       7,     0,     8,     0,     0,     0,     0,     0,     9,     0,
+       7,     0,     8,     0,     0,     0,   249,   247,     9,     0,
        0,     0,    11,     0,     0,     0,     0,     0,     0,     0,
-      31,     0,     0,     0,     0,    32,    33,    34,    14,     0,
-      35,     0,    36,     0,   215,    16,   218,    17,     0,     0,
+      31,     0,     0,     0,     0,    32,    33,    34,     0,    14,
+       0,    35,     0,    36,   250,   215,    16,   218,    17,     0,
+     248,     0,    18,     0,     0,    19,   219,     0,    39,     0,
+       0,     0,    20,     0,     0,     0,    40,    41,     0,     0,
+       5,     0,     0,    22,     0,    23,    24,    25,    26,     0,
+       0,     0,     0,     0,   641,    28,     0,     0,     0,   658,
+       0,     0,     0,     0,     0,    42,     0,     0,     0,     7,
+       0,     8,     0,     0,     0,   249,     0,     9,     0,     0,
+       0,    11,     0,     0,     0,     0,     0,     0,     0,    31,
+       0,     0,     0,     0,    32,    33,    34,     0,    14,     0,
+      35,     0,    36,   250,   215,    16,   218,    17,     0,     0,
        0,    18,     0,     0,    19,   219,     0,    39,     0,     0,
-       0,    20,     0,     0,     0,    40,    41,     0,     0,     0,
+       0,    20,     0,     0,     0,    40,    41,     0,     0,     5,
        0,     0,    22,     0,    23,    24,    25,    26,     0,     0,
-       0,     0,     0,     0,    28,   495,   496,   497,   498,   499,
-     500,   501,   502,   503,    42,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   495,   496,   497,
-     498,   499,   500,   501,   502,   503,     0,     0,    31,     0,
-       0,     0,     0,    32,    33,    34,     0,     0,    35,     0,
+       0,     0,     0,   672,    28,   503,   504,   505,   506,   507,
+     508,   509,   510,   511,    42,     0,     0,     0,     7,     0,
+       8,     0,     0,     0,     0,     0,     9,     0,     0,     0,
+      11,     0,     0,     0,     0,     0,     0,     0,    31,     0,
+       0,     0,     0,    32,    33,    34,     0,    14,     0,    35,
+       0,    36,     0,   215,    16,   218,    17,     0,     0,     0,
+      18,     0,     0,    19,   219,     0,    39,     0,     0,     0,
+      20,     0,     0,     0,    40,    41,     0,     0,     0,     0,
+       0,    22,     0,    23,    24,    25,    26,     0,     0,     0,
+       0,     0,     0,    28,   503,   504,   505,   506,   507,   508,
+     509,   510,   511,    42,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     503,   504,   505,   506,   507,   508,   509,    31,   511,     0,
+       0,     0,    32,    33,    34,     0,     0,     0,    35,     0,
       36,     0,     0,     0,   218,     0,     0,     0,     0,     0,
        0,     0,     0,   219,     0,    39,     0,     0,     0,     0,
-       0,     0,     0,    40,    41,   495,   496,   497,   498,   499,
-     500,   501,   502,   503,     0,     0,     0,   504,     0,   505,
-     506,   507,   508,   509,   510,   511,   512,   513,   514,     0,
-       0,     0,    42,     0,     0,     0,   515,   516,     0,     0,
-       0,     0,     0,   597,   495,   496,   497,   498,   499,   500,
-     501,   502,   503,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   495,   496,   497,   498,   499,   500,   501,
-       0,   503,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   495,   496,   497,   498,   499,   500,   501,     0,
+       0,     0,     0,    40,    41,   503,   504,   505,   506,   507,
+     508,   509,   510,   511,     0,     0,     0,     0,   512,     0,
+     513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
+       0,     0,    42,     0,     0,     0,     0,   523,   524,     0,
+       0,     0,     0,     0,   558,   503,   504,   505,   506,   507,
+     508,   509,   510,   511,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   503,   504,   505,
+     506,   507,   508,   509,   510,   511,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   503,   504,
+     505,   506,   507,   508,   509,   510,   511,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   512,     0,   513,
+     514,   515,   516,   517,   518,   519,   520,   521,   522,   503,
+     504,   505,   506,   507,   508,   509,   523,   524,     0,     0,
+       0,     0,     0,   607,     0,   513,   514,   515,   516,   517,
+     518,   519,   520,   521,   522,     0,     0,     0,     0,     0,
+       0,     0,   523,   524,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   504,     0,   505,   506,   507,
-     508,   509,   510,   511,   512,   513,   514,   495,   496,   497,
-     498,   499,   500,   501,   515,   516,   581,   504,     0,   505,
-     506,   507,   508,   509,   510,   511,   512,   513,   514,   495,
-     496,   497,   498,   499,   500,   501,   515,   516,   670,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   512,     0,
+     513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
+       0,     0,     0,     0,     0,     0,     0,   523,   524,   589,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   512,     0,
+     513,   514,   515,   516,   517,   518,   519,   520,   521,   522,
+       0,     0,     0,     0,     0,     0,     0,   523,   524,   681,
+     512,   680,   513,   514,   515,   516,   517,   518,   519,   520,
+     521,   522,     0,     0,     0,     0,     0,     0,     0,   523,
+     524,   512,     0,   513,   514,   515,   516,   517,   518,   519,
+     520,   521,   522,     0,     0,     0,     5,     0,     0,     0,
+     523,   524,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   513,   514,   515,   516,   517,   518,
+     519,   520,   521,   522,     0,     7,     0,     8,     0,     0,
+       0,   523,   524,     9,    10,     0,     0,    11,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   504,   669,   505,   506,   507,
-     508,   509,   510,   511,   512,   513,   514,     0,     0,     0,
-       0,     0,     0,     0,   515,   516,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   504,     0,   505,   506,   507,   508,
-     509,   510,   511,   512,   513,   514,     0,     0,     0,     0,
-       0,     0,     0,   515,   516,   505,   506,   507,   508,   509,
-     510,   511,   512,   513,   514,     0,     0,     0,     0,     0,
-       0,     0,   515,   516,   505,   506,   507,   508,   509,   510,
-     511,   512,   513,   514,     0,     0,     0,     0,     0,     0,
-       0,   515,   516,     0,     0,     0,     0,     0,     0,     0,
+       0,    13,     0,     0,    14,     0,     0,     0,     0,     0,
+     215,    16,     0,    17,     0,     0,     0,    18,     0,     0,
+      19,     0,     0,     0,     0,     0,     0,    20,     0,     0,
+       0,     0,     0,     0,     0,     5,     0,     0,    22,     0,
+      23,    24,    25,    26,    27,     0,     0,   216,     0,     0,
+      28,     0,     0,     0,   217,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     7,     0,     8,     0,     0,     0,
+       0,     0,     9,     0,     0,     0,    11,     0,     0,     0,
+       0,     0,     0,     0,    31,     0,     0,     0,     0,    32,
+      33,    34,     0,    14,     0,    35,     0,    36,     0,   215,
+      16,   218,    17,     0,     0,     0,    18,     0,     0,    19,
+     219,     5,    39,     0,     0,     0,    20,     0,     0,     0,
+      40,    41,     0,     0,     0,     0,     0,    22,     0,    23,
+      24,    25,    26,     0,     0,     0,     0,     0,     0,    28,
+       7,     0,     8,     0,     0,     0,     0,     0,     9,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     506,   507,   508,   509,   510,   511,   512,   513,   514,     0,
-       0,     0,     5,     0,     0,     0,   515,   516,     0,     0,
-       0,     0,     0,   507,   508,   509,   510,   511,   512,   513,
-     514,     0,     0,     0,     0,     0,     0,     0,   515,   516,
-       7,     0,     8,     0,     0,     0,     0,     0,     9,    10,
-       0,     0,    11,     0,     0,     0,     0,     5,     0,     0,
-       0,     0,     0,     0,     0,     0,    13,     0,    14,     0,
-       0,     0,     0,     0,   215,    16,     0,    17,     0,     0,
-       0,    18,     0,     0,    19,     7,     0,     8,     0,     0,
-       0,    20,     0,     9,     0,     0,     0,    11,     0,     0,
-       0,     0,    22,     0,    23,    24,    25,    26,    27,     0,
-       0,   216,     0,    14,    28,     0,     0,     0,   217,   215,
-      16,     0,    17,     0,     0,     0,    18,     0,     0,    19,
-       0,     0,     0,     0,     0,     0,    20,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    22,    31,    23,
-      24,    25,    26,    32,    33,    34,     0,     0,    35,    28,
-      36,     5,     0,     0,   218,     0,     0,     0,     0,     0,
-       0,     0,     0,   219,     0,    39,     0,     0,     0,     0,
-       0,     0,     0,    40,    41,     0,     0,     0,     0,     7,
-       0,     8,     0,    31,     0,     0,     0,     9,    32,    33,
-      34,     0,     0,    35,     0,    36,     0,     0,     0,   218,
-       0,     0,     0,     0,     0,     0,     0,    14,   219,     0,
-      39,     0,     0,   215,    16,     0,     0,     0,    40,    41,
-      18,     0,     0,    19,     0,     0,     0,     0,     0,     0,
-      20,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    23,    24,    25,    26,     0,     0,     0,
-       0,     0,     0,    28,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    14,
+       0,     0,     0,    31,     0,   215,    16,     0,    32,    33,
+      34,     0,    18,     0,    35,    19,    36,     0,     0,     0,
+     218,     0,    20,     0,     0,     0,     0,     0,     0,   219,
+       0,    39,     0,     0,     0,    23,    24,    25,    26,    40,
+      41,     0,     0,     0,     0,    28,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    32,    33,    34,     0,     0,    35,     0,     0,
-       0,     0,     0,   218,     0,     0,     0,     0,     0,     0,
-       0,     0,   219,     0,    39,     0,     0,     0,     0,     0,
-       0,     0,    40,    41,   108,     0,   109,   110,   111,   112,
-     113,   114,     0,   115,     0,     0,   116,     0,   117,     0,
-       0,     0,   118,   119,     0,   120,   121,   122,   123,     0,
-     124,   125,   126,   127,   128,   129,   130,   131,     0,   132,
-       0,   133,   134,   135,   136,   137,     0,     0,   138,     0,
-       0,     0,   139,     0,   140,   141,     0,   142,   143,   144,
-     145,   146,   147,     0,   148,   149,   150,   151,   152,   153,
-       0,     0,   154,     0,     0,   155,     0,     0,     0,     0,
-       0,   156,   157,     0,   158,   159,     0,   160,   161,     0,
-       0,     0,   162,   163,   164,   165,   166,   167,     0,   168,
-     169,   170,   171,   172,   173,   174,     0,   175,     0,   176,
-       0,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-       0,   186,   187,   188,   189,     0,     0,     0,   190,     0,
-       0,   191,     0,     0,   192,   193,     0,     0,   194,   195,
-     196,   197,     0,     0,   198,     0,   199,     0,   200,   201,
-     202,   203,   204,   205,   206,     0,     0,   207
+       0,     0,     0,     0,    32,    33,    34,     0,     0,     0,
+      35,     0,     0,     0,     0,     0,   218,     0,     0,     0,
+       0,     0,     0,     0,     0,   219,     0,    39,     0,     0,
+       0,     0,     0,     0,   108,    40,    41,   109,   110,   111,
+     112,   113,   114,     0,   115,     0,     0,   116,     0,   117,
+       0,     0,     0,   118,   119,     0,   120,   121,   122,   123,
+       0,   124,   125,   126,   127,   128,   129,   130,   131,     0,
+     132,     0,     0,   133,   134,   135,   136,   137,     0,     0,
+     138,     0,     0,     0,   139,     0,   140,   141,     0,   142,
+     143,   144,   145,   146,   147,     0,   148,   149,   150,   151,
+     152,   153,     0,     0,   154,     0,     0,   155,     0,     0,
+       0,     0,     0,   156,   157,     0,   158,   159,     0,   160,
+     161,     0,     0,     0,   162,   163,   164,   165,   166,   167,
+       0,   168,   169,   170,   171,   172,   173,   174,     0,   175,
+       0,   176,     0,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,     0,   186,   187,   188,   189,     0,     0,     0,
+       0,   190,     0,     0,   191,     0,     0,   192,   193,     0,
+       0,   194,   195,   196,   197,     0,     0,   198,     0,   199,
+       0,   200,   201,   202,   203,   204,   205,   206,     0,     0,
+     207
 };
 
 static const yytype_int16 yycheck[] =
 {
-       2,    53,     2,     2,    50,    74,   286,     2,    74,     2,
-     325,   214,     2,     2,   256,     2,   252,   253,     2,     2,
-     534,     2,     2,   287,     6,    75,   290,   344,   292,    72,
-      73,   295,   591,   294,    77,    53,   300,   533,    39,   346,
-     312,    71,    72,    73,   101,   110,   158,    77,    59,   184,
-     100,    52,   184,    17,    53,     3,   596,     5,    53,   101,
-      53,   601,    37,    38,   158,   184,    53,   158,   136,   349,
-      28,    17,   140,   184,   206,    33,   211,     3,   184,     5,
-       3,   184,     5,   205,   184,   599,   208,   206,   283,   131,
-     101,   286,    40,     9,     0,   207,    12,    45,   293,   167,
-     211,   296,   598,   340,   205,   211,   209,   302,   303,   210,
-     346,   211,    51,   207,    40,   209,   207,    40,   205,    45,
-     660,   210,   636,   210,    72,    64,   685,   442,   365,   366,
-      69,   205,    97,    34,   337,   631,   210,   340,    39,   454,
-     205,   179,   180,   181,   182,   183,    72,   205,   205,    72,
-       3,   209,     5,   667,   349,   350,   205,   226,     9,   208,
-     226,   364,   365,   366,   436,   661,   205,     3,     3,   208,
-       5,   207,     3,    45,     5,     3,   210,     5,     3,   127,
-       5,   210,   209,   252,   253,   164,   252,   253,   383,   384,
-     385,   386,   387,   388,   389,     3,   209,     5,    70,   209,
-       3,   127,     5,   272,   127,   441,   154,   208,   472,   207,
-     212,   213,   281,   212,   213,    40,   234,   260,   209,   212,
-     213,   209,   207,    95,   209,   212,   213,   186,   154,   211,
-     260,   154,   209,    15,    16,    17,    18,    19,    20,    21,
-     204,   205,   294,   218,   219,   207,   194,    72,   194,   195,
-     196,   301,   494,   517,   304,   209,   306,   307,   204,   205,
-     577,   311,   210,   578,   207,   207,   461,   209,   194,   141,
-       3,   194,     5,     3,   326,     5,     3,   346,     5,   205,
-     346,   153,   205,   547,   210,   209,     3,   210,     5,     3,
-     209,     5,   294,     3,     3,     5,     5,   209,   540,   351,
-     495,   496,   127,   498,   499,   500,   501,   502,   503,   504,
-     505,   506,   507,   508,   509,   510,   511,   512,   513,   514,
-     101,   516,   583,   630,     9,   209,   641,   211,   207,   154,
-       6,     7,   209,   569,     3,    17,   207,   389,   205,   212,
-     210,   210,   210,   345,   210,   345,   345,   542,   210,   351,
-     210,   210,   345,   660,   596,   407,   210,   209,   345,   601,
-     210,   210,   604,   210,   366,   672,   681,   210,   210,   194,
-     210,   210,   441,   210,    41,   441,   210,   210,   210,     5,
-     210,   210,   209,   690,   210,   210,    15,    16,    17,    18,
-      19,    20,    21,    22,    23,   210,   448,   210,   210,   210,
-     210,   210,   471,   683,   456,   210,   210,   643,   190,   191,
-     192,   193,   194,   195,   196,    40,   210,    84,   660,   210,
-      45,   210,   204,   205,   476,   209,   211,   207,   494,   207,
-      97,    98,    99,   100,   486,   186,   211,   210,     9,     9,
-     107,     9,   706,   445,     9,   445,   445,    72,   450,   448,
-     445,   453,   445,   453,   453,   445,   445,   456,   445,   443,
-     453,   445,   445,   456,   445,   445,   453,     9,   534,   456,
-       9,   666,     9,     9,   669,     9,   205,   211,   210,   186,
-     147,   209,   534,   476,   151,   207,   207,   184,   683,   209,
-     208,   207,   207,   212,     6,   184,   204,    15,    16,    17,
-     569,     9,   127,   569,    91,   211,   211,   211,   711,   712,
-     192,   193,   194,   195,   196,   210,   562,   211,   211,   211,
-     211,   573,   204,   205,   593,   211,   186,   211,   211,   154,
-     596,   583,   534,   599,   211,   601,    40,   211,   211,   211,
-     211,   211,   208,   211,   164,     3,   211,   599,     6,     7,
-       8,     9,    10,    11,   211,   211,   185,   211,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,    72,   194,
-     211,   211,   211,   211,   643,   204,   205,   643,   211,   209,
-     205,   583,   211,   532,   636,   210,   184,   536,   211,   211,
-      15,    16,    17,   209,   660,    20,    21,   599,   209,     3,
-       3,     5,     6,     7,     8,     9,    10,    11,     3,     9,
-       6,   211,   184,    71,     3,   667,   209,     6,     7,     8,
-       9,    10,    11,   127,   205,   208,   211,   209,     5,    33,
-     186,    35,   211,   211,   636,   211,   211,    41,   207,   186,
-     642,    45,   209,   642,   646,   211,   646,   646,   211,   642,
-     154,   211,   211,   646,   186,   642,   209,    61,   338,   646,
-     452,   119,   308,    67,    68,   667,    70,    71,   302,   471,
-      74,   712,    53,    77,   192,   193,   194,   195,   196,   542,
-      84,   630,    71,   450,   633,   226,   204,   205,   685,   298,
-     194,    95,   150,    97,    98,    99,   100,    82,   586,   584,
-      -1,   205,   354,   107,    -1,   163,   210,    -1,    -1,    -1,
-      -1,    -1,    -1,     3,   663,   119,     6,     7,     8,     9,
-      10,    11,    -1,   672,    -1,    -1,    -1,    -1,    -1,    -1,
-     119,   189,    -1,    -1,   192,   193,   194,   141,    -1,   197,
-     198,   690,   146,   147,   148,    -1,   150,   151,   206,   153,
-      -1,    -1,   210,   157,    -1,    -1,    -1,    -1,    -1,   163,
-      -1,   150,   166,    -1,   168,   190,   191,   192,   193,   194,
-     195,   196,   176,   177,   163,    -1,    -1,    -1,    -1,   204,
-     205,    71,    -1,    -1,    -1,   189,    -1,    -1,   192,   193,
-     194,    -1,    -1,   197,   198,    -1,    -1,    -1,    -1,    -1,
-     189,    -1,    -1,   192,   193,   194,   210,    -1,   197,   198,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   206,    -1,    -1,
-      -1,   210,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
+       2,    53,     2,     2,    74,    50,    74,   214,   287,     2,
+     256,   326,     2,     2,   345,     2,   252,   253,     2,     2,
+      75,     2,     2,   288,     2,    53,   291,     6,   293,   313,
+      46,   296,   295,    40,   347,   541,   301,   103,   601,     3,
+     112,     5,    37,    38,   161,   100,    53,    17,     3,    17,
+       5,     3,     9,     5,    53,    12,    72,    42,   138,   542,
+      53,   208,   142,    53,   161,   212,    53,   606,     3,   161,
+       5,   350,   611,   103,    71,    72,    73,    41,    72,    73,
+      77,    97,    46,    77,   187,   284,    41,    60,   287,    41,
+     170,    46,    26,   210,   187,   294,   208,   208,   297,   211,
+     211,    86,   608,   133,   303,   304,    41,    17,     0,   212,
+      74,   347,   213,   210,    99,   100,   101,   102,   210,    74,
+     212,   214,    74,    27,   109,   187,   609,   143,    62,   444,
+     103,   338,   671,   696,   341,   641,   208,    99,    28,    74,
+     156,   456,   208,    33,   341,   187,   187,   209,    52,   187,
+     208,   350,   351,   187,   438,   213,   226,     9,   226,   366,
+     367,   368,    66,   646,   149,   129,   672,    71,     3,   154,
+     367,   368,   214,   214,   129,   187,   214,   129,   213,     3,
+     214,     5,   252,   253,   252,   253,   385,   386,   387,   388,
+     389,   390,   391,   157,   129,   678,    34,   209,     3,   213,
+       5,    39,   157,   273,   211,   157,   234,   443,     6,     7,
+     212,   213,   282,   212,   213,   480,   208,   151,   167,   212,
+     213,   213,   157,   218,   219,   212,   213,   197,   198,   199,
+      15,    16,    17,   197,   210,   214,   208,   207,   208,   207,
+     208,   213,   197,   295,   208,   197,     3,   302,     5,   213,
+     305,   185,   307,   308,   585,   103,   502,   312,   213,   212,
+     525,   213,   197,   260,   463,   212,   260,   208,    41,   212,
+     211,   586,     3,   208,     5,   327,   212,   347,   213,   347,
+     182,   183,   184,   185,   186,   195,   196,   197,   198,   199,
+     555,   210,   212,   295,     3,   210,     5,   207,   208,   212,
+     352,    74,   548,   212,   503,   504,   189,   506,   507,   508,
+     509,   510,   511,   512,   513,   514,   515,   516,   517,   518,
+     519,   520,   521,   522,     3,   524,     5,   640,   591,   210,
+      41,   212,   210,   210,   212,    46,   651,   212,     3,   391,
+       5,   577,   212,     3,   346,     5,   346,   346,   212,   210,
+     352,   550,     3,   346,     5,     9,   129,   409,   671,   346,
+     606,   212,     3,    74,     5,   611,   368,     3,   614,     5,
+     683,     3,     3,   443,     5,   443,   540,   692,   210,     3,
+     544,     5,   213,   212,   157,   214,   213,   213,   701,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,   450,   213,
+     213,   213,   213,   213,   213,   213,   458,   213,   208,   479,
+     195,   196,   197,   198,   199,   694,   213,   653,   129,   213,
+     213,   213,   207,   208,   197,   671,   213,   213,     5,   213,
+     213,   213,   484,   213,   502,   208,   213,   213,   213,   213,
+     213,   213,   494,   213,   213,   447,   157,   447,   447,   213,
+     452,   450,   717,   455,   447,   455,   455,   447,   447,   458,
+     447,   445,   455,   447,   447,   458,   447,   447,   455,   447,
+     213,   458,   213,   213,   542,   213,   640,   210,   677,   643,
+     212,   680,   212,   212,   210,   189,   197,   215,   213,   213,
+     542,   484,   214,   214,     9,   694,     9,   208,     9,     9,
+       9,     9,   213,     9,     9,     9,   208,   577,   213,   577,
+     674,   212,   210,   210,   189,   722,   723,   212,   210,   683,
+     214,   210,   215,   211,   187,   570,     6,   214,   214,   581,
+     214,   213,   187,   603,   214,     9,   214,   701,   606,   591,
+     542,   609,   214,   611,   214,   214,   214,   214,   214,    93,
+     214,   167,   214,   214,   211,   214,   214,   609,   214,   207,
+     189,   214,   188,   212,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,   214,   214,   214,   214,   187,   214,
+     214,   207,   208,   653,   214,   653,   214,   214,   214,   591,
+     212,   214,   212,     3,   646,     3,     9,     6,   187,   214,
+     212,   208,   212,   671,     5,   211,   214,   609,     3,   214,
+       5,     6,     7,     8,     9,    10,    11,   214,   214,   189,
+     210,   214,   214,   214,   212,   189,   678,     3,   214,   214,
+       6,     7,     8,     9,    10,    11,   189,   212,   454,    34,
+     339,    36,   479,   550,   646,   723,    53,    42,   452,   696,
+     652,    46,   226,   652,   656,   299,   656,   656,   303,   652,
+      82,   594,   309,   656,   596,   652,   356,   592,    63,   656,
+      -1,    -1,    -1,    -1,    69,    70,   678,    72,    73,    -1,
+      -1,    76,    -1,    -1,    79,    -1,    -1,    15,    16,    17,
+      -1,    86,    20,    21,    -1,    -1,    -1,    73,    -1,    -1,
+      -1,    -1,    97,    -1,    99,   100,   101,   102,    -1,    -1,
+      -1,    -1,     3,    -1,   109,     6,     7,     8,     9,    10,
+      11,    -1,    -1,    -1,    -1,    -1,   121,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     3,    -1,    -1,     6,     7,     8,
+       9,    10,    11,    -1,    -1,   121,    -1,    -1,   143,    -1,
+      -1,    -1,    -1,   148,   149,   150,    -1,    -1,   153,   154,
+      -1,   156,    -1,    -1,    -1,   160,    -1,    -1,    -1,    -1,
+      -1,   166,    -1,    -1,   169,    -1,   171,   153,    -1,    -1,
+      -1,    -1,    73,    -1,   179,   180,    -1,    -1,    -1,    -1,
+     166,    -1,    -1,    -1,    -1,    -1,    -1,   192,    -1,    -1,
+     195,   196,   197,    -1,    73,   200,   201,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   192,    -1,   213,   195,
+     196,   197,    -1,    -1,   200,   201,    -1,    -1,    -1,    -1,
+     121,    -1,    -1,   209,    -1,    -1,    -1,   213,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   153,    -1,    -1,   193,   194,   195,   196,   197,
+     198,   199,    -1,    -1,    -1,   166,    -1,    -1,    -1,   207,
+     208,    -1,     4,     5,   153,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   166,    -1,    -1,
+      -1,   192,    -1,    -1,   195,   196,   197,    -1,    -1,   200,
+     201,    -1,    34,    -1,    36,    -1,    -1,    -1,   209,    -1,
+      42,    43,   213,   192,    46,    -1,   195,   196,   197,    51,
+      -1,   200,   201,    -1,    -1,    -1,    -1,    -1,    60,    -1,
+      -1,    63,    -1,    -1,   213,    -1,    -1,    69,    70,    -1,
+      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    86,    -1,    -1,    -1,    -1,    -1,
+      -1,    93,    94,    -1,    -1,    97,    -1,    99,   100,   101,
+     102,   103,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
+      -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     4,     5,    -1,    -1,    -1,    -1,   131,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,     4,     5,    -1,    -1,    -1,
-     150,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   163,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    33,    -1,    35,    -1,    -1,    -1,
-      -1,    -1,    41,    42,    -1,    -1,    45,    -1,    -1,   189,
-      -1,    50,   192,   193,   194,    -1,    -1,   197,   198,    -1,
-      59,    -1,    61,    -1,    -1,    -1,    -1,    -1,    67,    68,
-     210,    70,    -1,    -1,    -1,    74,    -1,    -1,    77,    -1,
-      -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,
-      -1,    -1,    91,    92,    -1,    -1,    95,    -1,    97,    98,
-      99,   100,   101,    -1,    -1,    -1,    -1,    -1,   107,    -1,
-      -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   143,    -1,    -1,    -1,    -1,   148,   149,   150,    -1,
+      -1,    -1,   154,    34,   156,    36,    -1,    -1,   160,    -1,
+      -1,    42,    43,    -1,    -1,    46,    -1,   169,    -1,   171,
+      51,    -1,    -1,    -1,    -1,    -1,    -1,   179,   180,    60,
+      -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,    69,    70,
+      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    86,   208,    -1,    -1,   211,
+      -1,    -1,    93,    94,    -1,    -1,    97,    -1,    99,   100,
+     101,   102,   103,    -1,    -1,    -1,    -1,    -1,   109,    -1,
+      -1,    -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,     4,     5,    -1,    -1,    -1,    -1,
-     129,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   141,    -1,    -1,    -1,    -1,   146,   147,   148,
-      -1,    -1,   151,    33,   153,    35,    -1,    -1,   157,    -1,
-      -1,    41,    42,    -1,    -1,    45,    -1,   166,    -1,   168,
-      50,    -1,    -1,    -1,    -1,    -1,    -1,   176,   177,    59,
-      -1,    61,    -1,    -1,    -1,    -1,    -1,    67,    68,    -1,
-      70,    -1,    -1,    -1,    74,    -1,    -1,    77,    -1,    -1,
-      -1,    -1,    -1,    -1,    84,    -1,   205,    -1,    -1,   208,
-      -1,    91,    92,    -1,    -1,    95,    -1,    97,    98,    99,
-     100,   101,    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,
-      -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,     4,     5,    -1,    -1,    -1,    -1,   129,
+     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   143,    -1,    -1,    -1,    -1,   148,   149,   150,
+      -1,    -1,    -1,   154,    34,   156,    36,    -1,    -1,   160,
+      -1,    -1,    42,    43,    -1,    -1,    46,    -1,   169,    -1,
+     171,    51,    -1,    -1,    -1,    -1,    -1,    -1,   179,   180,
+      60,    -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,    69,
+      70,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
+      -1,    -1,    -1,    -1,    -1,    -1,    86,   208,    -1,    -1,
+     211,    -1,    -1,    93,    -1,    -1,    -1,    97,    -1,    99,
+     100,   101,   102,   103,    -1,    -1,    -1,    -1,    -1,   109,
+      -1,    -1,    -1,    -1,   114,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     4,     5,    -1,    -1,    -1,    -1,    -1,
+      -1,   131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   143,    -1,    -1,    -1,    -1,   148,   149,
+     150,    -1,    -1,    34,   154,    36,   156,    -1,    -1,    -1,
+     160,    42,    -1,    -1,    -1,    46,    -1,    -1,    -1,   169,
+      51,   171,    15,    16,    17,    18,    19,    20,    21,   179,
+     180,    -1,    63,    -1,    -1,    -1,    -1,    -1,    69,    70,
+      -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,    -1,
+      -1,    -1,    -1,    -1,    -1,    86,    -1,    -1,   208,    -1,
+      -1,   211,    93,    -1,    -1,    -1,    97,    -1,    99,   100,
+     101,   102,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
+      -1,    -1,    15,    16,    17,    18,    19,    20,    21,    -1,
+      -1,    -1,     4,     5,    -1,    -1,    -1,    -1,    -1,    -1,
+     131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   143,    -1,    -1,    -1,    -1,   148,   149,   150,
+      -1,    -1,    34,   154,    36,   156,    -1,    -1,    -1,   160,
+      42,    -1,    -1,    -1,    46,    -1,    -1,    -1,   169,    51,
+     171,    15,    16,    17,    18,    19,    20,    21,   179,   180,
+      -1,    63,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1,
+      72,    -1,    -1,    -1,    76,    -1,    -1,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    86,    -1,    -1,   208,    -1,    -1,
+     211,    93,    -1,    -1,    -1,    97,    -1,    99,   100,   101,
+     102,    -1,    -1,    -1,    -1,    -1,    -1,   109,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,    -1,    -1,    -1,
+      -1,     4,     5,    -1,   207,   208,    -1,    -1,    -1,   131,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   141,    -1,    -1,    -1,    -1,   146,   147,   148,    -1,
-      -1,   151,    33,   153,    35,    -1,    -1,   157,    -1,    -1,
-      41,    42,    -1,    -1,    45,    -1,   166,    -1,   168,    50,
-      -1,    -1,    -1,    -1,    -1,    -1,   176,   177,    59,    -1,
-      61,    -1,    -1,    -1,    -1,    -1,    67,    68,    -1,    70,
-      -1,    -1,    -1,    74,    -1,    -1,    77,    -1,    -1,    -1,
-      -1,    -1,    -1,    84,    -1,   205,    -1,    -1,   208,    -1,
-      91,    -1,    -1,    -1,    95,    -1,    97,    98,    99,   100,
-     101,    -1,    -1,    -1,    -1,    -1,   107,     4,     5,    -1,
-      -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   129,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    33,    -1,    35,    -1,
-     141,    -1,    -1,    -1,    41,   146,   147,   148,    45,    -1,
-     151,    -1,   153,    50,    -1,    -1,   157,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    61,   166,    -1,   168,    -1,    -1,
-      67,    68,    -1,    70,    -1,   176,   177,    74,    -1,    -1,
-      77,    -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,
-      -1,    -1,    -1,    -1,    91,    -1,    -1,    -1,    95,    -1,
-      97,    98,    99,   100,   205,    -1,    -1,   208,    -1,    -1,
-     107,     4,     5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   143,    -1,    -1,    -1,    -1,   148,   149,   150,    -1,
+      -1,    34,   154,    36,   156,    -1,    -1,    -1,   160,    42,
+      -1,    -1,    -1,    46,    -1,    -1,    -1,   169,    51,   171,
+     193,   194,   195,   196,   197,   198,   199,   179,   180,    -1,
+      63,    -1,    -1,    -1,   207,   208,    69,    70,    -1,    72,
+      -1,    -1,    -1,    76,    -1,    -1,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    86,    -1,    -1,   208,    -1,    -1,   211,
+      93,    -1,    -1,    -1,    97,    -1,    99,   100,   101,   102,
+       5,    -1,    -1,    -1,    -1,    -1,   109,    -1,   192,   193,
+     194,   195,   196,   197,   198,   199,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   207,   208,    -1,    -1,    -1,   131,    34,
+      -1,    36,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+     143,    46,    -1,    -1,    -1,   148,   149,   150,    -1,    -1,
+      -1,   154,    -1,   156,    -1,    -1,    -1,   160,    63,    -1,
+      -1,    -1,    -1,    -1,    69,    70,   169,    72,   171,    -1,
+      -1,    76,    -1,    -1,    79,    -1,   179,   180,    -1,    -1,
+      -1,    86,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    97,    -1,    99,   100,   101,   102,    -1,    -1,
+      -1,    -1,    -1,    -1,   109,   208,    -1,    -1,   211,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   129,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      33,    -1,    35,    -1,   141,    -1,    -1,    -1,    41,   146,
-     147,   148,    45,    -1,   151,    -1,   153,    50,    -1,    -1,
-     157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,   166,
-      -1,   168,    -1,    -1,    67,    68,    -1,    70,    -1,   176,
-     177,    74,    -1,    -1,    77,    -1,    -1,    -1,    -1,    -1,
-      -1,    84,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,
-      -1,    -1,    95,    -1,    97,    98,    99,   100,   205,    -1,
-      -1,   208,    -1,    -1,   107,     4,     5,    -1,    -1,    -1,
-      -1,    -1,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    33,    -1,    35,    -1,   141,    -1,
-      -1,    -1,    41,   146,   147,   148,    45,    -1,   151,    -1,
-     153,    50,    -1,    -1,   157,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    61,   166,    -1,   168,    -1,    -1,    67,    68,
-      -1,    70,    -1,   176,   177,    74,    -1,    -1,    77,    -1,
-      -1,     5,    -1,    -1,    -1,    84,    -1,    -1,    -1,    -1,
-      -1,    -1,    91,    -1,    -1,    -1,    95,    -1,    97,    98,
-      99,   100,   205,    -1,    -1,   208,    -1,    -1,   107,    33,
-      -1,    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
-      -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     129,    -1,    -1,    -1,    -1,    -1,    -1,    61,    -1,    -1,
-      -1,    -1,   141,    67,    68,    -1,    70,   146,   147,   148,
-      74,    -1,   151,    77,   153,    -1,    -1,    -1,   157,    -1,
-      84,    -1,    -1,    -1,    -1,    -1,    -1,   166,    -1,   168,
-      -1,    95,    -1,    97,    98,    99,   100,   176,   177,    -1,
-      -1,    -1,   185,   107,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   204,   205,    -1,    -1,    -1,   205,    -1,   211,   208,
-       4,     5,    -1,    -1,    -1,    -1,    -1,   141,    -1,    -1,
-      14,    -1,   146,   147,   148,    -1,    -1,   151,    -1,   153,
-      -1,    -1,    -1,   157,    -1,    -1,    -1,    -1,    -1,    33,
-      -1,    35,   166,    -1,   168,    -1,    -1,    41,    42,    -1,
-      -1,    45,   176,   177,    -1,    -1,    50,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    -1,    -1,
-      -1,    -1,    -1,    67,    68,    -1,    70,    -1,    -1,    -1,
-      74,   205,    -1,    77,   208,    -1,    -1,    -1,    -1,    -1,
-      84,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    -1,
-      -1,    95,    -1,    97,    98,    99,   100,   101,    -1,    -1,
-      -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,   112,    -1,
+       4,     5,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   143,    -1,
+      -1,    -1,    -1,   148,   149,   150,    -1,    -1,    -1,   154,
+      34,   156,    36,    -1,    -1,   160,    -1,    -1,    42,    43,
+      -1,    -1,    46,    -1,   169,    -1,   171,    51,    -1,    -1,
+      -1,    -1,    -1,    -1,   179,   180,    60,    -1,    -1,    63,
+      -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    72,    -1,
+      -1,    -1,    76,    -1,    -1,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    86,   208,    -1,    -1,   211,    -1,    -1,    93,
+      -1,    -1,    -1,    97,    -1,    99,   100,   101,   102,   103,
+      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,
+     114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   131,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   143,
+       4,     5,    -1,    -1,   148,   149,   150,    -1,    -1,    13,
+     154,    -1,   156,    -1,    -1,    -1,   160,    -1,    -1,    -1,
+      -1,    -1,    -1,   167,    -1,   169,    -1,   171,    -1,    -1,
+      34,    -1,    36,    -1,    -1,   179,   180,    -1,    42,    43,
+      -1,    -1,    46,    -1,    -1,    -1,    -1,    51,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    63,
+      -1,    -1,    -1,    -1,   208,    69,    70,    -1,    72,    -1,
+      -1,    -1,    76,    -1,    -1,    79,    -1,    -1,    -1,    -1,
+      -1,    -1,    86,    -1,    -1,    -1,    -1,    -1,    -1,    93,
+      94,    -1,    -1,    97,    -1,    99,   100,   101,   102,   103,
+      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,
+     114,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,     5,    -1,    -1,    -1,    -1,   131,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   143,
+      -1,    -1,    -1,    -1,   148,   149,   150,    -1,    -1,    -1,
+     154,    34,   156,    36,    -1,    -1,   160,    -1,    41,    42,
+      -1,    -1,    -1,    46,    -1,   169,    -1,   171,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   179,   180,    -1,    -1,    -1,
+      63,    -1,    -1,    -1,    -1,    -1,    69,    70,    -1,    72,
+      -1,    74,    -1,    76,    -1,    -1,    79,    -1,    -1,    -1,
+      -1,    -1,    -1,    86,   208,    -1,    -1,    -1,    -1,    -1,
+      -1,     5,    -1,    -1,    97,    -1,    99,   100,   101,   102,
+      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   129,    -1,    -1,    -1,    -1,
-       4,     5,    -1,    -1,    -1,    -1,    -1,   141,    -1,    13,
-      -1,    -1,   146,   147,   148,    -1,    -1,   151,    -1,   153,
-      -1,    -1,    -1,   157,    -1,    -1,    -1,    -1,    -1,    33,
-     164,    35,   166,    -1,   168,    -1,    -1,    41,    42,    -1,
-      -1,    45,   176,   177,    -1,    -1,    50,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    -1,    -1,
-      -1,    -1,    -1,    67,    68,    -1,    70,    -1,    -1,    -1,
-      74,   205,    -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,
-      84,    -1,    -1,    -1,    -1,    -1,    -1,    91,    92,    -1,
-      -1,    95,    -1,    97,    98,    99,   100,   101,     5,    -1,
-      -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,   112,    -1,
+      34,    -1,    36,    -1,    -1,    -1,   129,    41,    42,    -1,
+      -1,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     143,    -1,    -1,    -1,    -1,   148,   149,   150,    -1,    63,
+      -1,   154,    -1,   156,   157,    69,    70,   160,    72,    -1,
+      74,    -1,    76,    -1,    -1,    79,   169,    -1,   171,    -1,
+      -1,    -1,    86,    -1,    -1,    -1,   179,   180,    -1,    -1,
+       5,    -1,    -1,    97,    -1,    99,   100,   101,   102,    -1,
+      -1,    -1,    -1,    -1,   197,   109,    -1,    -1,    -1,    24,
+      -1,    -1,    -1,    -1,    -1,   208,    -1,    -1,    -1,    34,
+      -1,    36,    -1,    -1,    -1,   129,    -1,    42,    -1,    -1,
+      -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   143,
+      -1,    -1,    -1,    -1,   148,   149,   150,    -1,    63,    -1,
+     154,    -1,   156,   157,    69,    70,   160,    72,    -1,    -1,
+      -1,    76,    -1,    -1,    79,   169,    -1,   171,    -1,    -1,
+      -1,    86,    -1,    -1,    -1,   179,   180,    -1,    -1,     5,
+      -1,    -1,    97,    -1,    99,   100,   101,   102,    -1,    -1,
+      -1,    -1,    -1,   197,   109,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,   208,    -1,    -1,    -1,    34,    -1,
+      36,    -1,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,
+      46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   143,    -1,
+      -1,    -1,    -1,   148,   149,   150,    -1,    63,    -1,   154,
+      -1,   156,    -1,    69,    70,   160,    72,    -1,    -1,    -1,
+      76,    -1,    -1,    79,   169,    -1,   171,    -1,    -1,    -1,
+      86,    -1,    -1,    -1,   179,   180,    -1,    -1,    -1,    -1,
+      -1,    97,    -1,    99,   100,   101,   102,    -1,    -1,    -1,
+      -1,    -1,    -1,   109,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,   208,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   129,    33,    -1,    35,    -1,
-      -1,    -1,    -1,    40,    41,    -1,    -1,   141,    45,    -1,
-      -1,    -1,   146,   147,   148,    -1,    -1,   151,    -1,   153,
-      -1,    -1,    -1,   157,    61,    -1,    -1,    -1,    -1,    -1,
-      67,    68,   166,    70,   168,    72,    -1,    74,    -1,    -1,
-      77,    -1,   176,   177,    -1,    -1,    -1,    84,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,     5,    -1,    95,    -1,
-      97,    98,    99,   100,    -1,    -1,    -1,    -1,    -1,    -1,
-     107,   205,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    33,    -1,    35,    -1,    -1,    -1,
-     127,    40,    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   141,    -1,    -1,    -1,    -1,   146,
-     147,   148,    61,    -1,   151,    -1,   153,   154,    67,    68,
-     157,    70,    -1,    72,    -1,    74,    -1,    -1,    77,   166,
-      -1,   168,    -1,    -1,    -1,    84,    -1,    -1,    -1,   176,
-     177,    -1,    -1,    -1,     5,    -1,    95,    -1,    97,    98,
-      99,   100,    -1,    -1,    -1,    -1,    -1,   194,   107,    -1,
-      -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,   205,    -1,
-      -1,    -1,    33,    -1,    35,    -1,    -1,    -1,   127,    -1,
-      41,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   141,    -1,    -1,    -1,    -1,   146,   147,   148,
-      61,    -1,   151,    -1,   153,   154,    67,    68,   157,    70,
-      -1,    -1,    -1,    74,    -1,    -1,    77,   166,    -1,   168,
-      -1,    -1,    -1,    84,    -1,    -1,    -1,   176,   177,    -1,
-      -1,    -1,     5,    -1,    95,    -1,    97,    98,    99,   100,
-      -1,    -1,    -1,    -1,    -1,   194,   107,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,   205,    -1,    -1,    -1,
-      33,    -1,    35,    -1,    -1,    -1,    -1,    -1,    41,    -1,
-      -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     141,    -1,    -1,    -1,    -1,   146,   147,   148,    61,    -1,
-     151,    -1,   153,    -1,    67,    68,   157,    70,    -1,    -1,
-      -1,    74,    -1,    -1,    77,   166,    -1,   168,    -1,    -1,
-      -1,    84,    -1,    -1,    -1,   176,   177,    -1,    -1,    -1,
-      -1,    -1,    95,    -1,    97,    98,    99,   100,    -1,    -1,
-      -1,    -1,    -1,    -1,   107,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,   205,    -1,    -1,    -1,    -1,    -1,
+      15,    16,    17,    18,    19,    20,    21,   143,    23,    -1,
+      -1,    -1,   148,   149,   150,    -1,    -1,    -1,   154,    -1,
+     156,    -1,    -1,    -1,   160,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   169,    -1,   171,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   179,   180,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    -1,    -1,    -1,    -1,   188,    -1,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+      -1,    -1,   208,    -1,    -1,    -1,    -1,   207,   208,    -1,
+      -1,    -1,    -1,    -1,   214,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    -1,    -1,   141,    -1,
-      -1,    -1,    -1,   146,   147,   148,    -1,    -1,   151,    -1,
-     153,    -1,    -1,    -1,   157,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   166,    -1,   168,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   176,   177,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    -1,    -1,    -1,   185,    -1,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,    -1,
-      -1,    -1,   205,    -1,    -1,    -1,   204,   205,    -1,    -1,
-      -1,    -1,    -1,   211,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    15,    16,    17,    18,    19,    20,    21,
-      -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    15,    16,    17,    18,    19,    20,    21,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   185,    -1,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,    15,    16,    17,
-      18,    19,    20,    21,   204,   205,   206,   185,    -1,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,    15,
-      16,    17,    18,    19,    20,    21,   204,   205,   206,    -1,
+      18,    19,    20,    21,    22,    23,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   188,    -1,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,    15,
+      16,    17,    18,    19,    20,    21,   207,   208,    -1,    -1,
+      -1,    -1,    -1,   214,    -1,   190,   191,   192,   193,   194,
+     195,   196,   197,   198,   199,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   207,   208,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   188,    -1,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   207,   208,   209,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   194,   195,   196,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   204,   205,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   188,    -1,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   207,   208,   209,
+     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
+     198,   199,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   207,
+     208,   188,    -1,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,    -1,    -1,    -1,     5,    -1,    -1,    -1,
+     207,   208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   190,   191,   192,   193,   194,   195,
+     196,   197,   198,   199,    -1,    34,    -1,    36,    -1,    -1,
+      -1,   207,   208,    42,    43,    -1,    -1,    46,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,   185,    -1,   187,   188,   189,   190,
-     191,   192,   193,   194,   195,   196,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   204,   205,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   204,   205,   187,   188,   189,   190,   191,   192,
-     193,   194,   195,   196,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   204,   205,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    60,    -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,
+      69,    70,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
+      79,    -1,    -1,    -1,    -1,    -1,    -1,    86,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,     5,    -1,    -1,    97,    -1,
+      99,   100,   101,   102,   103,    -1,    -1,   106,    -1,    -1,
+     109,    -1,    -1,    -1,   113,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    34,    -1,    36,    -1,    -1,    -1,
+      -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   143,    -1,    -1,    -1,    -1,   148,
+     149,   150,    -1,    63,    -1,   154,    -1,   156,    -1,    69,
+      70,   160,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
+     169,     5,   171,    -1,    -1,    -1,    86,    -1,    -1,    -1,
+     179,   180,    -1,    -1,    -1,    -1,    -1,    97,    -1,    99,
+     100,   101,   102,    -1,    -1,    -1,    -1,    -1,    -1,   109,
+      34,    -1,    36,    -1,    -1,    -1,    -1,    -1,    42,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,    -1,
-      -1,    -1,     5,    -1,    -1,    -1,   204,   205,    -1,    -1,
-      -1,    -1,    -1,   189,   190,   191,   192,   193,   194,   195,
-     196,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   204,   205,
-      33,    -1,    35,    -1,    -1,    -1,    -1,    -1,    41,    42,
-      -1,    -1,    45,    -1,    -1,    -1,    -1,     5,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    -1,
-      -1,    -1,    -1,    -1,    67,    68,    -1,    70,    -1,    -1,
-      -1,    74,    -1,    -1,    77,    33,    -1,    35,    -1,    -1,
-      -1,    84,    -1,    41,    -1,    -1,    -1,    45,    -1,    -1,
-      -1,    -1,    95,    -1,    97,    98,    99,   100,   101,    -1,
-      -1,   104,    -1,    61,   107,    -1,    -1,    -1,   111,    67,
-      68,    -1,    70,    -1,    -1,    -1,    74,    -1,    -1,    77,
-      -1,    -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    95,   141,    97,
-      98,    99,   100,   146,   147,   148,    -1,    -1,   151,   107,
-     153,     5,    -1,    -1,   157,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   166,    -1,   168,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   176,   177,    -1,    -1,    -1,    -1,    33,
-      -1,    35,    -1,   141,    -1,    -1,    -1,    41,   146,   147,
-     148,    -1,    -1,   151,    -1,   153,    -1,    -1,    -1,   157,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    61,   166,    -1,
-     168,    -1,    -1,    67,    68,    -1,    -1,    -1,   176,   177,
-      74,    -1,    -1,    77,    -1,    -1,    -1,    -1,    -1,    -1,
-      84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    97,    98,    99,   100,    -1,    -1,    -1,
-      -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,
+      -1,    -1,    -1,   143,    -1,    69,    70,    -1,   148,   149,
+     150,    -1,    76,    -1,   154,    79,   156,    -1,    -1,    -1,
+     160,    -1,    86,    -1,    -1,    -1,    -1,    -1,    -1,   169,
+      -1,   171,    -1,    -1,    -1,    99,   100,   101,   102,   179,
+     180,    -1,    -1,    -1,    -1,   109,    -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,   146,   147,   148,    -1,    -1,   151,    -1,    -1,
-      -1,    -1,    -1,   157,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   166,    -1,   168,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   176,   177,    25,    -1,    27,    28,    29,    30,
-      31,    32,    -1,    34,    -1,    -1,    37,    -1,    39,    -1,
-      -1,    -1,    43,    44,    -1,    46,    47,    48,    49,    -1,
-      51,    52,    53,    54,    55,    56,    57,    58,    -1,    60,
-      -1,    62,    63,    64,    65,    66,    -1,    -1,    69,    -1,
-      -1,    -1,    73,    -1,    75,    76,    -1,    78,    79,    80,
-      81,    82,    83,    -1,    85,    86,    87,    88,    89,    90,
-      -1,    -1,    93,    -1,    -1,    96,    -1,    -1,    -1,    -1,
-      -1,   102,   103,    -1,   105,   106,    -1,   108,   109,    -1,
-      -1,    -1,   113,   114,   115,   116,   117,   118,    -1,   120,
-     121,   122,   123,   124,   125,   126,    -1,   128,    -1,   130,
-      -1,   132,   133,   134,   135,   136,   137,   138,   139,   140,
-      -1,   142,   143,   144,   145,    -1,    -1,    -1,   149,    -1,
-      -1,   152,    -1,    -1,   155,   156,    -1,    -1,   159,   160,
-     161,   162,    -1,    -1,   165,    -1,   167,    -1,   169,   170,
-     171,   172,   173,   174,   175,    -1,    -1,   178
+      -1,    -1,    -1,    -1,   148,   149,   150,    -1,    -1,    -1,
+     154,    -1,    -1,    -1,    -1,    -1,   160,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   169,    -1,   171,    -1,    -1,
+      -1,    -1,    -1,    -1,    25,   179,   180,    28,    29,    30,
+      31,    32,    33,    -1,    35,    -1,    -1,    38,    -1,    40,
+      -1,    -1,    -1,    44,    45,    -1,    47,    48,    49,    50,
+      -1,    52,    53,    54,    55,    56,    57,    58,    59,    -1,
+      61,    -1,    -1,    64,    65,    66,    67,    68,    -1,    -1,
+      71,    -1,    -1,    -1,    75,    -1,    77,    78,    -1,    80,
+      81,    82,    83,    84,    85,    -1,    87,    88,    89,    90,
+      91,    92,    -1,    -1,    95,    -1,    -1,    98,    -1,    -1,
+      -1,    -1,    -1,   104,   105,    -1,   107,   108,    -1,   110,
+     111,    -1,    -1,    -1,   115,   116,   117,   118,   119,   120,
+      -1,   122,   123,   124,   125,   126,   127,   128,    -1,   130,
+      -1,   132,    -1,   134,   135,   136,   137,   138,   139,   140,
+     141,   142,    -1,   144,   145,   146,   147,    -1,    -1,    -1,
+      -1,   152,    -1,    -1,   155,    -1,    -1,   158,   159,    -1,
+      -1,   162,   163,   164,   165,    -1,    -1,   168,    -1,   170,
+      -1,   172,   173,   174,   175,   176,   177,   178,    -1,    -1,
+     181
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
-static const yytype_uint16 yystos[] =
-{
-       0,   214,   216,     0,     4,     5,    14,    33,    35,    41,
-      42,    45,    50,    59,    61,    67,    68,    70,    74,    77,
-      84,    91,    95,    97,    98,    99,   100,   101,   107,   112,
-     129,   141,   146,   147,   148,   151,   153,   157,   166,   168,
-     176,   177,   205,   215,   222,   223,   225,   226,   227,   228,
-     231,   232,   238,   239,   250,   264,   268,   270,   271,   272,
-     273,   274,   277,   278,   281,   283,   284,   285,   286,   288,
-     289,   290,   291,   292,   294,   296,   314,   315,   316,   317,
-     205,   319,   322,   323,     3,     5,   210,     3,     5,     3,
-       5,   266,    97,   269,     9,     3,     5,   269,     3,   210,
-     210,   269,   270,     3,   266,     3,   266,   270,    25,    27,
-      28,    29,    30,    31,    32,    34,    37,    39,    43,    44,
-      46,    47,    48,    49,    51,    52,    53,    54,    55,    56,
-      57,    58,    60,    62,    63,    64,    65,    66,    69,    73,
-      75,    76,    78,    79,    80,    81,    82,    83,    85,    86,
-      87,    88,    89,    90,    93,    96,   102,   103,   105,   106,
-     108,   109,   113,   114,   115,   116,   117,   118,   120,   121,
-     122,   123,   124,   125,   126,   128,   130,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   142,   143,   144,   145,
-     149,   152,   155,   156,   159,   160,   161,   162,   165,   167,
-     169,   170,   171,   172,   173,   174,   175,   178,   240,   242,
-     313,   209,   218,   218,   164,    67,   104,   111,   157,   166,
-     230,   250,   271,   277,   283,   287,   294,   314,   317,   209,
-     209,   207,   207,   209,   207,   209,   221,   209,   186,   282,
-     207,   295,   296,   295,   295,     3,     5,    40,    72,   127,
-     154,   194,   210,   244,   267,   297,   298,   311,   250,   314,
-     315,   317,   295,   209,    51,    64,    69,   324,   325,   319,
-     101,     9,   207,   209,     3,   315,   207,   158,   207,   210,
-     210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
-     210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
-     210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
-     210,   210,   184,   206,    13,    92,   222,   229,   232,   271,
-     273,   274,   285,   286,   289,   208,   238,   239,     3,     3,
-       5,     3,     5,     3,     3,   207,   311,   275,   217,   131,
-     279,   283,     3,     5,   207,   220,   293,   297,   297,   212,
-     205,   210,   237,   295,   184,   206,     5,   211,   247,   248,
-     249,   267,   186,   211,   257,   210,   260,     9,     9,    12,
-     243,   267,     3,     6,     7,     8,     9,    10,    11,    71,
-     119,   150,   163,   189,   192,   193,   194,   197,   198,   210,
-     253,   254,   255,   253,   256,     9,     9,   241,   256,   255,
-       9,     9,   255,     9,   255,   253,   236,   239,   294,   255,
-     251,   252,   253,     9,   313,     9,   255,   315,   251,   253,
-     315,   179,   180,   181,   182,   183,   312,   315,   315,   243,
-       6,     7,   318,     9,   315,   242,   205,   210,   209,   207,
-     221,   294,   208,   238,   276,   216,   186,   110,   238,   262,
-     280,   209,   207,   220,   208,   222,   239,   292,   297,   211,
-     256,   194,   206,   253,   233,   234,   235,   236,   325,   207,
-     208,   184,   212,     6,   224,   208,   238,   258,   262,   208,
-     239,   259,   262,   211,   211,   211,   210,   253,   253,   253,
-     253,   253,   253,   253,   294,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,   185,   187,   188,   189,   190,   191,
-     192,   193,   194,   195,   196,   204,   205,   184,   211,   211,
-     211,   184,   211,   211,   211,   211,   211,   211,   211,   211,
-     211,   211,   294,   194,   210,   237,   244,   267,   303,   305,
-     306,   211,   184,   211,   211,   211,   211,   184,   211,   211,
-     211,   211,   211,   211,   211,   211,   204,   211,   211,   211,
-     242,     9,   219,   297,   307,   221,   286,   208,   186,   294,
-     314,   209,   208,   239,   263,   264,   208,   228,   208,   221,
-     206,   206,   211,   184,   164,   320,   321,   249,   255,     6,
-     211,   294,   317,   211,   209,   209,   294,   211,   194,   210,
-     237,   244,   299,   301,   302,   253,   253,     3,   253,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
-     253,   253,   253,   253,   253,     3,   253,   255,     9,   305,
-     293,   194,   233,   244,   304,   305,   210,   237,   252,   255,
-       6,   211,   218,   184,   297,   209,   220,   221,    24,   236,
-     323,   208,   320,   303,   309,   310,   209,   265,   267,   301,
-     293,   194,   233,   244,   300,   301,   211,   210,   237,   186,
-     206,   305,   293,   211,   305,   211,   233,   211,   221,   208,
-     297,   208,     5,   186,   308,   184,   209,   207,   211,   301,
-     293,   211,   305,   211,   253,   233,   253,   305,   211,   221,
-     209,   256,   309,   245,   305,   211,    39,    52,   208,   246,
-     255,   186,   186,   209,   261,   262,   261,   209
+static const yytype_int16 yystos[] =
+{
+       0,   217,   219,     0,     4,     5,    14,    34,    36,    42,
+      43,    46,    51,    60,    63,    69,    70,    72,    76,    79,
+      86,    93,    97,    99,   100,   101,   102,   103,   109,   114,
+     131,   143,   148,   149,   150,   154,   156,   160,   169,   171,
+     179,   180,   208,   218,   225,   226,   228,   229,   230,   231,
+     234,   235,   241,   242,   253,   267,   271,   273,   274,   275,
+     276,   277,   280,   281,   284,   286,   287,   288,   289,   291,
+     292,   293,   294,   295,   297,   299,   317,   318,   319,   320,
+     208,   322,   325,   326,     3,     5,   213,     3,     5,     3,
+       5,   269,    99,   272,     9,     3,     5,   272,     3,   213,
+     213,   272,   273,     3,   269,     3,   269,   273,    25,    28,
+      29,    30,    31,    32,    33,    35,    38,    40,    44,    45,
+      47,    48,    49,    50,    52,    53,    54,    55,    56,    57,
+      58,    59,    61,    64,    65,    66,    67,    68,    71,    75,
+      77,    78,    80,    81,    82,    83,    84,    85,    87,    88,
+      89,    90,    91,    92,    95,    98,   104,   105,   107,   108,
+     110,   111,   115,   116,   117,   118,   119,   120,   122,   123,
+     124,   125,   126,   127,   128,   130,   132,   134,   135,   136,
+     137,   138,   139,   140,   141,   142,   144,   145,   146,   147,
+     152,   155,   158,   159,   162,   163,   164,   165,   168,   170,
+     172,   173,   174,   175,   176,   177,   178,   181,   243,   245,
+     316,   212,   221,   221,   167,    69,   106,   113,   160,   169,
+     233,   253,   274,   280,   286,   290,   297,   317,   320,   212,
+     212,   210,   210,   212,   210,   212,   224,   212,   189,   285,
+     210,   298,   299,   298,   298,     3,     5,    41,    74,   129,
+     157,   197,   213,   247,   270,   300,   301,   314,   253,   317,
+     318,   320,   298,   212,    27,    52,    66,    71,   327,   328,
+     322,   103,     9,   210,   212,     3,   318,   210,   161,   210,
+     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,   187,   209,    13,    94,   225,   232,   235,
+     274,   276,   277,   288,   289,   292,   211,   241,   242,     3,
+       3,     5,     3,     5,     3,     3,   210,   314,   278,   220,
+     133,   282,   286,     3,     5,   210,   223,   296,   300,   300,
+     215,   208,   213,   240,   298,   213,   187,   209,     5,   214,
+     250,   251,   252,   270,   189,   214,   260,   213,   263,     9,
+       9,    12,   246,   270,     3,     6,     7,     8,     9,    10,
+      11,    73,   121,   153,   166,   192,   195,   196,   197,   200,
+     201,   213,   256,   257,   258,   256,   259,     9,     9,   244,
+     259,   258,     9,     9,   258,     9,   258,   256,   239,   242,
+     297,   258,   254,   255,   256,     9,   316,     9,   258,   318,
+     254,   256,   318,   182,   183,   184,   185,   186,   315,   318,
+     318,   246,     6,     7,   321,     9,   318,   245,   208,   213,
+     212,   210,   224,   297,   211,   241,   279,   219,   189,   112,
+     241,   265,   283,   212,   210,   223,   211,   225,   242,   295,
+     300,   214,   259,   197,   209,   256,   236,   237,   238,   239,
+      26,    62,   151,   185,   329,   330,   328,   210,   211,   187,
+     215,     6,   227,   211,   241,   261,   265,   211,   242,   262,
+     265,   214,   214,   214,   213,   256,   256,   256,   256,   256,
+     256,   256,   297,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,   188,   190,   191,   192,   193,   194,   195,   196,
+     197,   198,   199,   207,   208,   187,   214,   214,   214,   187,
+     214,   214,   214,   214,   214,   214,   214,   214,   214,   214,
+     297,   197,   213,   240,   247,   270,   306,   308,   309,   214,
+     187,   214,   214,   214,   214,   187,   214,   214,   214,   214,
+     214,   214,   214,   214,   207,   214,   214,   214,   245,     9,
+     222,   300,   310,   224,   289,   211,   189,   297,   317,   212,
+     211,   242,   266,   267,   211,   231,   211,   224,   209,   209,
+     214,   187,   187,   214,   167,   323,   324,   252,   258,     6,
+     214,   297,   320,   214,   212,   212,   297,   214,   197,   213,
+     240,   247,   302,   304,   305,   256,   256,     3,   256,   256,
+     256,   256,   256,   256,   256,   256,   256,   256,   256,   256,
+     256,   256,   256,   256,   256,     3,   256,   258,     9,   308,
+     296,   197,   236,   247,   307,   308,   213,   240,   255,   258,
+       6,   214,   221,   187,   300,   212,   223,   224,    24,   239,
+     330,   326,   211,   323,   306,   312,   313,   212,   268,   270,
+     304,   296,   197,   236,   247,   303,   304,   214,   213,   240,
+     189,   209,   308,   296,   214,   308,   214,   236,   214,   224,
+     211,   300,   211,     5,   189,   311,   187,   212,   210,   214,
+     304,   296,   214,   308,   214,   256,   236,   256,   308,   214,
+     224,   212,   259,   312,   248,   308,   214,    40,    53,   211,
+     249,   258,   189,   189,   212,   264,   265,   264,   212
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
-{
-       0,   213,   214,   215,   215,   216,   217,   216,   216,   216,
-     216,   216,   216,   216,   216,   218,   218,   219,   218,   218,
-     218,   218,   218,   218,   218,   218,   220,   220,   221,   221,
-     222,   222,   222,   222,   222,   222,   222,   223,   224,   224,
-     225,   225,   225,   225,   225,   225,   225,   225,   225,   226,
-     227,   228,   229,   230,   230,   231,   232,   233,   233,   234,
-     234,   235,   235,   236,   236,   237,   237,   237,   238,   238,
-     239,   240,   240,   240,   241,   241,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
-     242,   242,   242,   242,   242,   242,   243,   243,   244,   244,
-     244,   244,   245,   245,   246,   246,   247,   247,   247,   248,
-     248,   249,   249,   250,   251,   251,   252,   252,   253,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
-     253,   253,   253,   253,   253,   253,   253,   253,   253,   254,
-     254,   255,   256,   257,   257,   258,   258,   259,   259,   260,
-     260,   261,   261,   262,   262,   263,   264,   264,   265,   265,
-     266,   266,   266,   267,   267,   268,   268,   268,   268,   268,
-     268,   268,   268,   268,   268,   268,   269,   269,   270,   270,
-     270,   270,   270,   270,   270,   270,   270,   271,   271,   272,
-     273,   274,   275,   275,   276,   277,   277,   278,   279,   279,
-     280,   280,   281,   281,   282,   282,   283,   283,   284,   285,
-     285,   285,   286,   286,   287,   287,   288,   289,   290,   290,
-     290,   291,   292,   293,   293,   294,   294,   295,   295,   296,
-     296,   296,   297,   297,   297,   298,   298,   298,   298,   299,
-     299,   299,   300,   300,   301,   301,   302,   302,   302,   302,
-     302,   303,   303,   303,   304,   304,   305,   305,   306,   306,
-     306,   306,   306,   306,   307,   307,   308,   308,   309,   310,
-     310,   311,   311,   312,   312,   312,   312,   312,   313,   313,
-     313,   314,   315,   315,   315,   315,   315,   315,   315,   315,
-     315,   315,   316,   317,   317,   318,   318,   318,   319,   319,
-     320,   320,   321,   322,   323,   323,   324,   324,   325,   325,
-     325
+static const yytype_int16 yyr1[] =
+{
+       0,   216,   217,   218,   218,   219,   220,   219,   219,   219,
+     219,   219,   219,   219,   219,   221,   221,   222,   221,   221,
+     221,   221,   221,   221,   221,   221,   223,   223,   224,   224,
+     225,   225,   225,   225,   225,   225,   225,   226,   227,   227,
+     228,   228,   228,   228,   228,   228,   228,   228,   228,   229,
+     230,   231,   232,   233,   233,   234,   235,   236,   236,   237,
+     237,   238,   238,   239,   239,   240,   240,   240,   241,   241,
+     242,   243,   243,   243,   244,   244,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   245,   245,   245,   245,
+     245,   245,   245,   245,   245,   245,   246,   246,   247,   247,
+     247,   247,   248,   248,   249,   249,   250,   250,   250,   251,
+     251,   252,   252,   253,   254,   254,   255,   255,   256,   256,
+     256,   256,   256,   256,   256,   256,   256,   256,   256,   256,
+     256,   256,   256,   256,   256,   256,   256,   256,   256,   256,
+     256,   256,   256,   256,   256,   256,   256,   256,   256,   256,
+     256,   256,   256,   256,   256,   256,   256,   256,   256,   257,
+     257,   258,   259,   260,   260,   261,   261,   262,   262,   263,
+     263,   264,   264,   265,   265,   266,   267,   267,   268,   268,
+     269,   269,   269,   270,   270,   271,   271,   271,   271,   271,
+     271,   271,   271,   271,   271,   271,   272,   272,   273,   273,
+     273,   273,   273,   273,   273,   273,   273,   274,   274,   275,
+     276,   277,   278,   278,   279,   280,   280,   281,   282,   282,
+     283,   283,   284,   284,   285,   285,   286,   286,   287,   288,
+     288,   288,   289,   289,   290,   290,   291,   292,   293,   293,
+     293,   294,   295,   296,   296,   297,   297,   298,   298,   299,
+     299,   299,   300,   300,   300,   301,   301,   301,   301,   302,
+     302,   302,   303,   303,   304,   304,   305,   305,   305,   305,
+     305,   306,   306,   306,   307,   307,   308,   308,   309,   309,
+     309,   309,   309,   309,   310,   310,   311,   311,   312,   313,
+     313,   314,   314,   315,   315,   315,   315,   315,   316,   316,
+     316,   317,   318,   318,   318,   318,   318,   318,   318,   318,
+     318,   318,   319,   320,   320,   321,   321,   321,   322,   322,
+     323,   323,   324,   325,   326,   326,   327,   327,   328,   328,
+     328,   328,   329,   329,   330,   330,   330,   330
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+static const yytype_int8 yyr2[] =
 {
        0,     2,     2,     0,     2,     0,     0,     6,     2,     2,
        3,     2,     2,     2,     2,     0,     2,     0,     6,     2,
@@ -1920,8 +2050,8 @@ static const yytype_uint8 yyr2[] =
        3,     1,     3,     1,     1,     1,     1,     1,     1,     1,
        1,     5,     1,     1,     1,     1,     2,     1,     2,     1,
        2,     4,     5,     5,    10,     1,     3,     1,     0,     2,
-       0,     2,     4,     6,     0,     3,     1,     3,     1,     1,
-       1
+       0,     2,     4,     6,     0,     3,     1,     3,     4,     1,
+       1,     1,     1,     3,     1,     1,     1,     1
 };
 
 
@@ -1937,22 +2067,22 @@ static const yytype_uint8 yyr2[] =
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                  \
-do                                                              \
-  if (yychar == YYEMPTY)                                        \
-    {                                                           \
-      yychar = (Token);                                         \
-      yylval = (Value);                                         \
-      YYPOPSTACK (yylen);                                       \
-      yystate = *yyssp;                                         \
-      goto yybackup;                                            \
-    }                                                           \
-  else                                                          \
-    {                                                           \
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
 
 /* Error token number */
 #define YYTERROR        1
@@ -1992,37 +2122,39 @@ do {                                                                      \
 } while (0)
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
 # endif
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   YYUSE (yytype);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  YYFPRINTF (yyoutput, "%s %s (",
+  YYFPRINTF (yyo, "%s %s (",
              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yytype, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -2031,7 +2163,7 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
 `------------------------------------------------------------------*/
 
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -2054,20 +2186,20 @@ do {                                                            \
 `------------------------------------------------*/
 
 static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
-  unsigned long int yylno = yyrline[yyrule];
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
              yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr,
-                       yystos[yyssp[yyi + 1 - yynrhs]],
-                       &(yyvsp[(yyi + 1) - (yynrhs)])
+                       yystos[+yyssp[yyi + 1 - yynrhs]],
+                       &yyvsp[(yyi + 1) - (yynrhs)]
                                               );
       YYFPRINTF (stderr, "\n");
     }
@@ -2111,13 +2243,13 @@ int yydebug;
 
 # ifndef yystrlen
 #  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
+#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
 #  else
 /* Return the length of YYSTR.  */
-static YYSIZE_T
+static YYPTRDIFF_T
 yystrlen (const char *yystr)
 {
-  YYSIZE_T yylen;
+  YYPTRDIFF_T yylen;
   for (yylen = 0; yystr[yylen]; yylen++)
     continue;
   return yylen;
@@ -2153,12 +2285,12 @@ yystpcpy (char *yydest, const char *yysrc)
    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
    null, do not copy; instead, return the length of what the result
    would have been.  */
-static YYSIZE_T
+static YYPTRDIFF_T
 yytnamerr (char *yyres, const char *yystr)
 {
   if (*yystr == '"')
     {
-      YYSIZE_T yyn = 0;
+      YYPTRDIFF_T yyn = 0;
       char const *yyp = yystr;
 
       for (;;)
@@ -2171,7 +2303,10 @@ yytnamerr (char *yyres, const char *yystr)
           case '\\':
             if (*++yyp != '\\')
               goto do_not_strip_quotes;
-            /* Fall through.  */
+            else
+              goto append;
+
+          append:
           default:
             if (yyres)
               yyres[yyn] = *yyp;
@@ -2186,10 +2321,10 @@ yytnamerr (char *yyres, const char *yystr)
     do_not_strip_quotes: ;
     }
 
-  if (! yyres)
+  if (yyres)
+    return yystpcpy (yyres, yystr) - yyres;
+  else
     return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
 }
 # endif
 
@@ -2202,19 +2337,19 @@ yytnamerr (char *yyres, const char *yystr)
    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
    required number of bytes is too large to store.  */
 static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                yytype_int16 *yyssp, int yytoken)
+yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
+                yy_state_t *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
-  YYSIZE_T yysize = yysize0;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
-  const char *yyformat = YY_NULL;
-  /* Arguments of yyformat. */
+  const char *yyformat = YY_NULLPTR;
+  /* Arguments of yyformat: reported tokens (one for the "unexpected",
+     one per "expected"). */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-  /* Number of reported tokens (one for the "unexpected", one per
-     "expected"). */
+  /* Actual size of YYARG. */
   int yycount = 0;
+  /* Cumulated lengths of YYARG.  */
+  YYPTRDIFF_T yysize = 0;
 
   /* There are many possibilities here to consider:
      - If this state is a consistent state with a default action, then
@@ -2241,7 +2376,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
   */
   if (yytoken != YYEMPTY)
     {
-      int yyn = yypact[*yyssp];
+      int yyn = yypact[+*yyssp];
+      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+      yysize = yysize0;
       yyarg[yycount++] = yytname[yytoken];
       if (!yypact_value_is_default (yyn))
         {
@@ -2266,11 +2403,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                   }
                 yyarg[yycount++] = yytname[yyx];
                 {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
-                  if (! (yysize <= yysize1
-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                  YYPTRDIFF_T yysize1
+                    = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+                    yysize = yysize1;
+                  else
                     return 2;
-                  yysize = yysize1;
                 }
               }
         }
@@ -2282,6 +2420,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
       case N:                               \
         yyformat = S;                       \
       break
+    default: /* Avoid compiler warnings. */
       YYCASE_(0, YY_("syntax error"));
       YYCASE_(1, YY_("syntax error, unexpected %s"));
       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
@@ -2292,10 +2431,13 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
     }
 
   {
-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+    /* Don't count the "%s"s in the final size, but reserve room for
+       the terminator.  */
+    YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
+    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+      yysize = yysize1;
+    else
       return 2;
-    yysize = yysize1;
   }
 
   if (*yymsg_alloc < yysize)
@@ -2321,8 +2463,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
         }
       else
         {
-          yyp++;
-          yyformat++;
+          ++yyp;
+          ++yyformat;
         }
   }
   return 0;
@@ -2365,7 +2507,7 @@ int yynerrs;
 int
 yyparse (void)
 {
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
@@ -2377,16 +2519,16 @@ yyparse (void)
        to reallocate them elsewhere.  */
 
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
+    YYPTRDIFF_T yystacksize;
 
   int yyn;
   int yyresult;
@@ -2400,7 +2542,7 @@ yyparse (void)
   /* Buffer for error messages, and its allocated size.  */
   char yymsgbuf[128];
   char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
 #endif
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
@@ -2421,46 +2563,54 @@ yyparse (void)
   yychar = YYEMPTY; /* Cause a token to be read.  */
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
         /* Give user a chance to reallocate the stack.  Use copies of
            these so that the &'s don't force the real ones into
            memory.  */
+        yy_state_t *yyss1 = yyss;
         YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
 
         /* Each stack pointer address is followed by the size of the
            data in use in that stack, in bytes.  This used to be a
            conditional around just the two extra args, but that might
            be undefined if yyoverflow is a macro.  */
         yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * sizeof (*yyssp),
-                    &yyvs1, yysize * sizeof (*yyvsp),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
                     &yystacksize);
-
         yyss = yyss1;
         yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
         goto yyexhaustedlab;
@@ -2469,42 +2619,43 @@ yyparse (void)
         yystacksize = YYMAXDEPTH;
 
       {
-        yytype_int16 *yyss1 = yyss;
+        yy_state_t *yyss1 = yyss;
         union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
         if (! yyptr)
           goto yyexhaustedlab;
         YYSTACK_RELOCATE (yyss_alloc, yyss);
         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-#  undef YYSTACK_RELOCATE
+# undef YYSTACK_RELOCATE
         if (yyss1 != yyssa)
           YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
@@ -2554,15 +2705,13 @@ yybackup:
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -2577,7 +2726,7 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
@@ -2597,9 +2746,9 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 2:
-#line 327 "parser.y" /* yacc.c:1646  */
-    { fix_incomplete();
+  case 2:
+#line 328 "parser.y"
+                                                { fix_incomplete();
                                                  check_statements((yyvsp[-1].stmt_list), FALSE);
                                                  check_all_user_types((yyvsp[-1].stmt_list));
                                                  write_header((yyvsp[-1].stmt_list));
@@ -2614,1115 +2763,1115 @@ yyreduce:
                                                  write_dlldata((yyvsp[-1].stmt_list));
                                                  write_local_stubs((yyvsp[-1].stmt_list));
                                                }
-#line 2618 "parser.tab.c" /* yacc.c:1646  */
+#line 2767 "parser.tab.c"
     break;
 
   case 5:
-#line 346 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = NULL; }
-#line 2624 "parser.tab.c" /* yacc.c:1646  */
+#line 347 "parser.y"
+                                                { (yyval.stmt_list) = NULL; }
+#line 2773 "parser.tab.c"
     break;
 
   case 6:
-#line 347 "parser.y" /* yacc.c:1646  */
-    { push_namespace((yyvsp[-1].str)); }
-#line 2630 "parser.tab.c" /* yacc.c:1646  */
+#line 348 "parser.y"
+                                          { push_namespace((yyvsp[-1].str)); }
+#line 2779 "parser.tab.c"
     break;
 
   case 7:
-#line 348 "parser.y" /* yacc.c:1646  */
-    { pop_namespace((yyvsp[-4].str)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
-#line 2636 "parser.tab.c" /* yacc.c:1646  */
+#line 349 "parser.y"
+                                                { pop_namespace((yyvsp[-4].str)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
+#line 2785 "parser.tab.c"
     break;
 
   case 8:
-#line 349 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
-#line 2642 "parser.tab.c" /* yacc.c:1646  */
+#line 350 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
+#line 2791 "parser.tab.c"
     break;
 
   case 9:
-#line 350 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 2648 "parser.tab.c" /* yacc.c:1646  */
+#line 351 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
+#line 2797 "parser.tab.c"
     break;
 
   case 10:
-#line 351 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = (yyvsp[-2].stmt_list);
+#line 352 "parser.y"
+                                                { (yyval.stmt_list) = (yyvsp[-2].stmt_list);
                                                  reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0);
                                                }
-#line 2656 "parser.tab.c" /* yacc.c:1646  */
+#line 2805 "parser.tab.c"
     break;
 
   case 11:
-#line 354 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
+#line 355 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
                                                  reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0);
                                                }
-#line 2664 "parser.tab.c" /* yacc.c:1646  */
+#line 2813 "parser.tab.c"
     break;
 
   case 12:
-#line 357 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
-#line 2670 "parser.tab.c" /* yacc.c:1646  */
+#line 358 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
+#line 2819 "parser.tab.c"
     break;
 
   case 13:
-#line 358 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
-#line 2676 "parser.tab.c" /* yacc.c:1646  */
+#line 359 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
+#line 2825 "parser.tab.c"
     break;
 
   case 14:
-#line 359 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2682 "parser.tab.c" /* yacc.c:1646  */
+#line 360 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
+#line 2831 "parser.tab.c"
     break;
 
   case 15:
-#line 362 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = NULL; }
-#line 2688 "parser.tab.c" /* yacc.c:1646  */
+#line 363 "parser.y"
+                                                { (yyval.stmt_list) = NULL; }
+#line 2837 "parser.tab.c"
     break;
 
   case 16:
-#line 363 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
-#line 2694 "parser.tab.c" /* yacc.c:1646  */
+#line 364 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
+#line 2843 "parser.tab.c"
     break;
 
   case 17:
-#line 364 "parser.y" /* yacc.c:1646  */
-    { push_namespace((yyvsp[-1].str)); }
-#line 2700 "parser.tab.c" /* yacc.c:1646  */
+#line 365 "parser.y"
+                                          { push_namespace((yyvsp[-1].str)); }
+#line 2849 "parser.tab.c"
     break;
 
   case 18:
-#line 365 "parser.y" /* yacc.c:1646  */
-    { pop_namespace((yyvsp[-4].str)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
-#line 2706 "parser.tab.c" /* yacc.c:1646  */
+#line 366 "parser.y"
+                                                { pop_namespace((yyvsp[-4].str)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
+#line 2855 "parser.tab.c"
     break;
 
   case 19:
-#line 366 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 2712 "parser.tab.c" /* yacc.c:1646  */
+#line 367 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
+#line 2861 "parser.tab.c"
     break;
 
   case 20:
-#line 367 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); }
-#line 2718 "parser.tab.c" /* yacc.c:1646  */
+#line 368 "parser.y"
+                                                { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); }
+#line 2867 "parser.tab.c"
     break;
 
   case 21:
-#line 368 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
+#line 369 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
                                                  reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0);
                                                }
-#line 2726 "parser.tab.c" /* yacc.c:1646  */
+#line 2875 "parser.tab.c"
     break;
 
   case 22:
-#line 371 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
-#line 2732 "parser.tab.c" /* yacc.c:1646  */
+#line 372 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
+#line 2881 "parser.tab.c"
     break;
 
   case 23:
-#line 372 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2738 "parser.tab.c" /* yacc.c:1646  */
+#line 373 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
+#line 2887 "parser.tab.c"
     break;
 
   case 24:
-#line 373 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_importlib((yyvsp[0].str))); }
-#line 2744 "parser.tab.c" /* yacc.c:1646  */
+#line 374 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_importlib((yyvsp[0].str))); }
+#line 2893 "parser.tab.c"
     break;
 
   case 25:
-#line 374 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
-#line 2750 "parser.tab.c" /* yacc.c:1646  */
+#line 375 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
+#line 2899 "parser.tab.c"
     break;
 
   case 26:
-#line 377 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = NULL; }
-#line 2756 "parser.tab.c" /* yacc.c:1646  */
+#line 378 "parser.y"
+                                                { (yyval.stmt_list) = NULL; }
+#line 2905 "parser.tab.c"
     break;
 
   case 27:
-#line 378 "parser.y" /* yacc.c:1646  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2762 "parser.tab.c" /* yacc.c:1646  */
+#line 379 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
+#line 2911 "parser.tab.c"
     break;
 
   case 30:
-#line 386 "parser.y" /* yacc.c:1646  */
-    { (yyval.statement) = make_statement_cppquote((yyvsp[0].str)); }
-#line 2768 "parser.tab.c" /* yacc.c:1646  */
+#line 387 "parser.y"
+                                                { (yyval.statement) = make_statement_cppquote((yyvsp[0].str)); }
+#line 2917 "parser.tab.c"
     break;
 
   case 31:
-#line 387 "parser.y" /* yacc.c:1646  */
-    { (yyval.statement) = make_statement_type_decl((yyvsp[-1].type)); }
-#line 2774 "parser.tab.c" /* yacc.c:1646  */
+#line 388 "parser.y"
+                                                { (yyval.statement) = make_statement_type_decl((yyvsp[-1].type)); }
+#line 2923 "parser.tab.c"
     break;
 
   case 32:
-#line 388 "parser.y" /* yacc.c:1646  */
-    { (yyval.statement) = make_statement_declaration((yyvsp[-1].var)); }
-#line 2780 "parser.tab.c" /* yacc.c:1646  */
+#line 389 "parser.y"
+                                                { (yyval.statement) = make_statement_declaration((yyvsp[-1].var)); }
+#line 2929 "parser.tab.c"
     break;
 
   case 33:
-#line 389 "parser.y" /* yacc.c:1646  */
-    { (yyval.statement) = make_statement_import((yyvsp[0].str)); }
-#line 2786 "parser.tab.c" /* yacc.c:1646  */
+#line 390 "parser.y"
+                                                { (yyval.statement) = make_statement_import((yyvsp[0].str)); }
+#line 2935 "parser.tab.c"
     break;
 
   case 34:
-#line 390 "parser.y" /* yacc.c:1646  */
-    { (yyval.statement) = (yyvsp[-1].statement); }
-#line 2792 "parser.tab.c" /* yacc.c:1646  */
+#line 391 "parser.y"
+                                                { (yyval.statement) = (yyvsp[-1].statement); }
+#line 2941 "parser.tab.c"
     break;
 
   case 35:
-#line 391 "parser.y" /* yacc.c:1646  */
-    { (yyval.statement) = make_statement_pragma((yyvsp[0].str)); }
-#line 2798 "parser.tab.c" /* yacc.c:1646  */
+#line 392 "parser.y"
+                                                { (yyval.statement) = make_statement_pragma((yyvsp[0].str)); }
+#line 2947 "parser.tab.c"
     break;
 
   case 36:
-#line 392 "parser.y" /* yacc.c:1646  */
-    { (yyval.statement) = NULL; }
-#line 2804 "parser.tab.c" /* yacc.c:1646  */
+#line 393 "parser.y"
+                         { (yyval.statement) = NULL; }
+#line 2953 "parser.tab.c"
     break;
 
   case 37:
-#line 396 "parser.y" /* yacc.c:1646  */
-    {
+#line 397 "parser.y"
+                  {
                       int result;
                       (yyval.statement) = NULL;
                       result = do_warning((yyvsp[-3].str), (yyvsp[-1].warning_list));
                       if(!result)
                           error_loc("expected \"disable\" or \"enable\"\n");
                   }
-#line 2816 "parser.tab.c" /* yacc.c:1646  */
+#line 2965 "parser.tab.c"
     break;
 
   case 38:
-#line 406 "parser.y" /* yacc.c:1646  */
-    { (yyval.warning_list) = append_warning(NULL, (yyvsp[0].num)); }
-#line 2822 "parser.tab.c" /* yacc.c:1646  */
+#line 407 "parser.y"
+               { (yyval.warning_list) = append_warning(NULL, (yyvsp[0].num)); }
+#line 2971 "parser.tab.c"
     break;
 
   case 39:
-#line 407 "parser.y" /* yacc.c:1646  */
-    { (yyval.warning_list) = append_warning((yyvsp[-1].warning_list), (yyvsp[0].num)); }
-#line 2828 "parser.tab.c" /* yacc.c:1646  */
+#line 408 "parser.y"
+                        { (yyval.warning_list) = append_warning((yyvsp[-1].warning_list), (yyvsp[0].num)); }
+#line 2977 "parser.tab.c"
     break;
 
   case 41:
-#line 412 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 2834 "parser.tab.c" /* yacc.c:1646  */
+#line 413 "parser.y"
+                                                { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 2983 "parser.tab.c"
     break;
 
   case 43:
-#line 414 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 2840 "parser.tab.c" /* yacc.c:1646  */
+#line 415 "parser.y"
+                                                { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 2989 "parser.tab.c"
     break;
 
   case 45:
-#line 416 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
-#line 2846 "parser.tab.c" /* yacc.c:1646  */
+#line 417 "parser.y"
+                                                { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
+#line 2995 "parser.tab.c"
     break;
 
   case 46:
-#line 417 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[-1].attr_list)); }
-#line 2852 "parser.tab.c" /* yacc.c:1646  */
+#line 418 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[-1].attr_list)); }
+#line 3001 "parser.tab.c"
     break;
 
   case 47:
-#line 418 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[-1].attr_list)); }
-#line 2858 "parser.tab.c" /* yacc.c:1646  */
+#line 419 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[-1].attr_list)); }
+#line 3007 "parser.tab.c"
     break;
 
   case 48:
-#line 419 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_union_attrs((yyvsp[-1].attr_list)); }
-#line 2864 "parser.tab.c" /* yacc.c:1646  */
+#line 420 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_union_attrs((yyvsp[-1].attr_list)); }
+#line 3013 "parser.tab.c"
     break;
 
   case 49:
-#line 422 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[-1].str); }
-#line 2870 "parser.tab.c" /* yacc.c:1646  */
+#line 423 "parser.y"
+                                                { (yyval.str) = (yyvsp[-1].str); }
+#line 3019 "parser.tab.c"
     break;
 
   case 50:
-#line 424 "parser.y" /* yacc.c:1646  */
-    { assert(yychar == YYEMPTY);
+#line 425 "parser.y"
+                                                { assert(yychar == YYEMPTY);
                                                  (yyval.import) = xmalloc(sizeof(struct _import_t));
                                                  (yyval.import)->name = (yyvsp[-1].str);
                                                  (yyval.import)->import_performed = do_import((yyvsp[-1].str));
                                                  if (!(yyval.import)->import_performed) yychar = aEOF;
                                                }
-#line 2881 "parser.tab.c" /* yacc.c:1646  */
+#line 3030 "parser.tab.c"
     break;
 
   case 51:
-#line 432 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[-2].import)->name;
+#line 433 "parser.y"
+                                                { (yyval.str) = (yyvsp[-2].import)->name;
                                                  if ((yyvsp[-2].import)->import_performed) pop_import();
                                                  free((yyvsp[-2].import));
                                                }
-#line 2890 "parser.tab.c" /* yacc.c:1646  */
+#line 3039 "parser.tab.c"
     break;
 
   case 52:
-#line 440 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[-2].str); if(!parse_only) add_importlib((yyvsp[-2].str)); }
-#line 2896 "parser.tab.c" /* yacc.c:1646  */
+#line 441 "parser.y"
+                                                { (yyval.str) = (yyvsp[-2].str); if(!parse_only) add_importlib((yyvsp[-2].str)); }
+#line 3045 "parser.tab.c"
     break;
 
   case 53:
-#line 446 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 2902 "parser.tab.c" /* yacc.c:1646  */
+#line 447 "parser.y"
+                                                { (yyval.str) = (yyvsp[0].str); }
+#line 3051 "parser.tab.c"
     break;
 
   case 54:
-#line 447 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 2908 "parser.tab.c" /* yacc.c:1646  */
+#line 448 "parser.y"
+                                                { (yyval.str) = (yyvsp[0].str); }
+#line 3057 "parser.tab.c"
     break;
 
   case 55:
-#line 449 "parser.y" /* yacc.c:1646  */
-    { (yyval.typelib) = make_library((yyvsp[-1].str), check_library_attrs((yyvsp[-1].str), (yyvsp[-2].attr_list)));
+#line 450 "parser.y"
+                                                { (yyval.typelib) = make_library((yyvsp[-1].str), check_library_attrs((yyvsp[-1].str), (yyvsp[-2].attr_list)));
 /* ifdef __REACTOS__ */
                                                  if (!parse_only) start_typelib((yyval.typelib));
 /* else
                                                  if (!parse_only && do_typelib) current_typelib = $$;
 */
                                                }
-#line 2920 "parser.tab.c" /* yacc.c:1646  */
+#line 3069 "parser.tab.c"
     break;
 
   case 56:
-#line 459 "parser.y" /* yacc.c:1646  */
-    { (yyval.typelib) = (yyvsp[-3].typelib);
+#line 460 "parser.y"
+                                                { (yyval.typelib) = (yyvsp[-3].typelib);
                                                  (yyval.typelib)->stmts = (yyvsp[-2].stmt_list);
                                                  if (!parse_only) end_typelib();
                                                }
-#line 2929 "parser.tab.c" /* yacc.c:1646  */
+#line 3078 "parser.tab.c"
     break;
 
   case 57:
-#line 468 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 2935 "parser.tab.c" /* yacc.c:1646  */
+#line 469 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 3084 "parser.tab.c"
     break;
 
   case 59:
-#line 472 "parser.y" /* yacc.c:1646  */
-    { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); }
-#line 2941 "parser.tab.c" /* yacc.c:1646  */
+#line 473 "parser.y"
+                                                { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); }
+#line 3090 "parser.tab.c"
     break;
 
   case 60:
-#line 473 "parser.y" /* yacc.c:1646  */
-    { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); }
-#line 2947 "parser.tab.c" /* yacc.c:1646  */
+#line 474 "parser.y"
+                                                { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); }
+#line 3096 "parser.tab.c"
     break;
 
   case 62:
-#line 477 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), make_var(strdup("...")) ); }
-#line 2953 "parser.tab.c" /* yacc.c:1646  */
+#line 478 "parser.y"
+                                                { (yyval.var_list) = append_var( (yyvsp[-2].var_list), make_var(strdup("...")) ); }
+#line 3102 "parser.tab.c"
     break;
 
   case 63:
-#line 481 "parser.y" /* yacc.c:1646  */
-    { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
+#line 482 "parser.y"
+                                                { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
                                                    error_loc("invalid storage class for function parameter\n");
                                                  (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
                                                  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
                                                }
-#line 2963 "parser.tab.c" /* yacc.c:1646  */
+#line 3112 "parser.tab.c"
     break;
 
   case 64:
-#line 486 "parser.y" /* yacc.c:1646  */
-    { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
+#line 487 "parser.y"
+                                                { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
                                                    error_loc("invalid storage class for function parameter\n");
                                                  (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
                                                  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
                                                }
-#line 2973 "parser.tab.c" /* yacc.c:1646  */
+#line 3122 "parser.tab.c"
     break;
 
   case 65:
-#line 493 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = (yyvsp[-1].expr);
+#line 494 "parser.y"
+                                                { (yyval.expr) = (yyvsp[-1].expr);
                                                  if (!(yyval.expr)->is_const || (yyval.expr)->cval <= 0)
                                                      error_loc("array dimension is not a positive integer constant\n");
                                                }
-#line 2982 "parser.tab.c" /* yacc.c:1646  */
+#line 3131 "parser.tab.c"
     break;
 
   case 66:
-#line 497 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 2988 "parser.tab.c" /* yacc.c:1646  */
+#line 498 "parser.y"
+                                                { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 3137 "parser.tab.c"
     break;
 
   case 67:
-#line 498 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 2994 "parser.tab.c" /* yacc.c:1646  */
+#line 499 "parser.y"
+                                                { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 3143 "parser.tab.c"
     break;
 
   case 68:
-#line 501 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = NULL; }
-#line 3000 "parser.tab.c" /* yacc.c:1646  */
+#line 502 "parser.y"
+                                                { (yyval.attr_list) = NULL; }
+#line 3149 "parser.tab.c"
     break;
 
   case 70:
-#line 506 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = (yyvsp[-1].attr_list); }
-#line 3006 "parser.tab.c" /* yacc.c:1646  */
+#line 507 "parser.y"
+                                                { (yyval.attr_list) = (yyvsp[-1].attr_list); }
+#line 3155 "parser.tab.c"
     break;
 
   case 71:
-#line 509 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); }
-#line 3012 "parser.tab.c" /* yacc.c:1646  */
+#line 510 "parser.y"
+                                                { (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); }
+#line 3161 "parser.tab.c"
     break;
 
   case 72:
-#line 510 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); }
-#line 3018 "parser.tab.c" /* yacc.c:1646  */
+#line 511 "parser.y"
+                                                { (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); }
+#line 3167 "parser.tab.c"
     break;
 
   case 73:
-#line 511 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); }
-#line 3024 "parser.tab.c" /* yacc.c:1646  */
+#line 512 "parser.y"
+                                                { (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); }
+#line 3173 "parser.tab.c"
     break;
 
   case 74:
-#line 514 "parser.y" /* yacc.c:1646  */
-    { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); }
-#line 3030 "parser.tab.c" /* yacc.c:1646  */
+#line 515 "parser.y"
+                                                { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); }
+#line 3179 "parser.tab.c"
     break;
 
   case 75:
-#line 515 "parser.y" /* yacc.c:1646  */
-    { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); }
-#line 3036 "parser.tab.c" /* yacc.c:1646  */
+#line 516 "parser.y"
+                                                { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); }
+#line 3185 "parser.tab.c"
     break;
 
   case 76:
-#line 518 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = NULL; }
-#line 3042 "parser.tab.c" /* yacc.c:1646  */
+#line 519 "parser.y"
+                                                { (yyval.attr) = NULL; }
+#line 3191 "parser.tab.c"
     break;
 
   case 77:
-#line 519 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_AGGREGATABLE); }
-#line 3048 "parser.tab.c" /* yacc.c:1646  */
+#line 520 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_AGGREGATABLE); }
+#line 3197 "parser.tab.c"
     break;
 
   case 78:
-#line 520 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[-1].str)); }
-#line 3054 "parser.tab.c" /* yacc.c:1646  */
+#line 521 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[-1].str)); }
+#line 3203 "parser.tab.c"
     break;
 
   case 79:
-#line 521 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_APPOBJECT); }
-#line 3060 "parser.tab.c" /* yacc.c:1646  */
+#line 522 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_APPOBJECT); }
+#line 3209 "parser.tab.c"
     break;
 
   case 80:
-#line 522 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_ASYNC); }
-#line 3066 "parser.tab.c" /* yacc.c:1646  */
+#line 523 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_ASYNC); }
+#line 3215 "parser.tab.c"
     break;
 
   case 81:
-#line 523 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); }
-#line 3072 "parser.tab.c" /* yacc.c:1646  */
+#line 524 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); }
+#line 3221 "parser.tab.c"
     break;
 
   case 82:
-#line 524 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_BINDABLE); }
-#line 3078 "parser.tab.c" /* yacc.c:1646  */
+#line 525 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_BINDABLE); }
+#line 3227 "parser.tab.c"
     break;
 
   case 83:
-#line 525 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_BROADCAST); }
-#line 3084 "parser.tab.c" /* yacc.c:1646  */
+#line 526 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_BROADCAST); }
+#line 3233 "parser.tab.c"
     break;
 
   case 84:
-#line 526 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[-1].var)); }
-#line 3090 "parser.tab.c" /* yacc.c:1646  */
+#line 527 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[-1].var)); }
+#line 3239 "parser.tab.c"
     break;
 
   case 85:
-#line 527 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[-1].expr_list)); }
-#line 3096 "parser.tab.c" /* yacc.c:1646  */
+#line 528 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[-1].expr_list)); }
+#line 3245 "parser.tab.c"
     break;
 
   case 86:
-#line 528 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_CODE); }
-#line 3102 "parser.tab.c" /* yacc.c:1646  */
+#line 529 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_CODE); }
+#line 3251 "parser.tab.c"
     break;
 
   case 87:
-#line 529 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_COMMSTATUS); }
-#line 3108 "parser.tab.c" /* yacc.c:1646  */
+#line 530 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_COMMSTATUS); }
+#line 3257 "parser.tab.c"
     break;
 
   case 88:
-#line 530 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); }
-#line 3114 "parser.tab.c" /* yacc.c:1646  */
+#line 531 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); }
+#line 3263 "parser.tab.c"
     break;
 
   case 89:
-#line 531 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
-#line 3120 "parser.tab.c" /* yacc.c:1646  */
+#line 532 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
+#line 3269 "parser.tab.c"
     break;
 
   case 90:
-#line 532 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
-#line 3126 "parser.tab.c" /* yacc.c:1646  */
+#line 533 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
+#line 3275 "parser.tab.c"
     break;
 
   case 91:
-#line 533 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_CONTROL); }
-#line 3132 "parser.tab.c" /* yacc.c:1646  */
+#line 534 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_CONTROL); }
+#line 3281 "parser.tab.c"
     break;
 
   case 92:
-#line 534 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DECODE); }
-#line 3138 "parser.tab.c" /* yacc.c:1646  */
+#line 535 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DECODE); }
+#line 3287 "parser.tab.c"
     break;
 
   case 93:
-#line 535 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULT); }
-#line 3144 "parser.tab.c" /* yacc.c:1646  */
+#line 536 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DEFAULT); }
+#line 3293 "parser.tab.c"
     break;
 
   case 94:
-#line 536 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULTBIND); }
-#line 3150 "parser.tab.c" /* yacc.c:1646  */
+#line 537 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DEFAULTBIND); }
+#line 3299 "parser.tab.c"
     break;
 
   case 95:
-#line 537 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); }
-#line 3156 "parser.tab.c" /* yacc.c:1646  */
+#line 538 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); }
+#line 3305 "parser.tab.c"
     break;
 
   case 96:
-#line 538 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[-1].expr)); }
-#line 3162 "parser.tab.c" /* yacc.c:1646  */
+#line 539 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[-1].expr)); }
+#line 3311 "parser.tab.c"
     break;
 
   case 97:
-#line 539 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); }
-#line 3168 "parser.tab.c" /* yacc.c:1646  */
+#line 540 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); }
+#line 3317 "parser.tab.c"
     break;
 
   case 98:
-#line 540 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DISABLECONSISTENCYCHECK); }
-#line 3174 "parser.tab.c" /* yacc.c:1646  */
+#line 541 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DISABLECONSISTENCYCHECK); }
+#line 3323 "parser.tab.c"
     break;
 
   case 99:
-#line 541 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DISPLAYBIND); }
-#line 3180 "parser.tab.c" /* yacc.c:1646  */
+#line 542 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DISPLAYBIND); }
+#line 3329 "parser.tab.c"
     break;
 
   case 100:
-#line 542 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[-1].str)); }
-#line 3186 "parser.tab.c" /* yacc.c:1646  */
+#line 543 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[-1].str)); }
+#line 3335 "parser.tab.c"
     break;
 
   case 101:
-#line 543 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DUAL); }
-#line 3192 "parser.tab.c" /* yacc.c:1646  */
+#line 544 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DUAL); }
+#line 3341 "parser.tab.c"
     break;
 
   case 102:
-#line 544 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_ENABLEALLOCATE); }
-#line 3198 "parser.tab.c" /* yacc.c:1646  */
+#line 545 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_ENABLEALLOCATE); }
+#line 3347 "parser.tab.c"
     break;
 
   case 103:
-#line 545 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_ENCODE); }
-#line 3204 "parser.tab.c" /* yacc.c:1646  */
+#line 546 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_ENCODE); }
+#line 3353 "parser.tab.c"
     break;
 
   case 104:
-#line 546 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[-1].str_list)); }
-#line 3210 "parser.tab.c" /* yacc.c:1646  */
+#line 547 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[-1].str_list)); }
+#line 3359 "parser.tab.c"
     break;
 
   case 105:
-#line 547 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[-1].expr)); }
-#line 3216 "parser.tab.c" /* yacc.c:1646  */
+#line 548 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[-1].expr)); }
+#line 3365 "parser.tab.c"
     break;
 
   case 106:
-#line 548 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
-#line 3222 "parser.tab.c" /* yacc.c:1646  */
+#line 549 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
+#line 3371 "parser.tab.c"
     break;
 
   case 107:
-#line 549 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_FAULTSTATUS); }
-#line 3228 "parser.tab.c" /* yacc.c:1646  */
+#line 550 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_FAULTSTATUS); }
+#line 3377 "parser.tab.c"
     break;
 
   case 108:
-#line 550 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_FORCEALLOCATE); }
-#line 3234 "parser.tab.c" /* yacc.c:1646  */
+#line 551 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_FORCEALLOCATE); }
+#line 3383 "parser.tab.c"
     break;
 
   case 109:
-#line 551 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_HANDLE); }
-#line 3240 "parser.tab.c" /* yacc.c:1646  */
+#line 552 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_HANDLE); }
+#line 3389 "parser.tab.c"
     break;
 
   case 110:
-#line 552 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[-1].expr)); }
-#line 3246 "parser.tab.c" /* yacc.c:1646  */
+#line 553 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[-1].expr)); }
+#line 3395 "parser.tab.c"
     break;
 
   case 111:
-#line 553 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[-1].str)); }
-#line 3252 "parser.tab.c" /* yacc.c:1646  */
+#line 554 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[-1].str)); }
+#line 3401 "parser.tab.c"
     break;
 
   case 112:
-#line 554 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[-1].str)); }
-#line 3258 "parser.tab.c" /* yacc.c:1646  */
+#line 555 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[-1].str)); }
+#line 3407 "parser.tab.c"
     break;
 
   case 113:
-#line 555 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr)); }
-#line 3264 "parser.tab.c" /* yacc.c:1646  */
+#line 556 "parser.y"
+                                                        { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr)); }
+#line 3413 "parser.tab.c"
     break;
 
   case 114:
-#line 556 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[-1].str)); }
-#line 3270 "parser.tab.c" /* yacc.c:1646  */
+#line 557 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[-1].str)); }
+#line 3419 "parser.tab.c"
     break;
 
   case 115:
-#line 557 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_HIDDEN); }
-#line 3276 "parser.tab.c" /* yacc.c:1646  */
+#line 558 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_HIDDEN); }
+#line 3425 "parser.tab.c"
     break;
 
   case 116:
-#line 558 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[-1].expr)); }
-#line 3282 "parser.tab.c" /* yacc.c:1646  */
+#line 559 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[-1].expr)); }
+#line 3431 "parser.tab.c"
     break;
 
   case 117:
-#line 559 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_IDEMPOTENT); }
-#line 3288 "parser.tab.c" /* yacc.c:1646  */
+#line 560 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_IDEMPOTENT); }
+#line 3437 "parser.tab.c"
     break;
 
   case 118:
-#line 560 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_IGNORE); }
-#line 3294 "parser.tab.c" /* yacc.c:1646  */
+#line 561 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_IGNORE); }
+#line 3443 "parser.tab.c"
     break;
 
   case 119:
-#line 561 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[-1].expr)); }
-#line 3300 "parser.tab.c" /* yacc.c:1646  */
+#line 562 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[-1].expr)); }
+#line 3449 "parser.tab.c"
     break;
 
   case 120:
-#line 562 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); }
-#line 3306 "parser.tab.c" /* yacc.c:1646  */
+#line 563 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); }
+#line 3455 "parser.tab.c"
     break;
 
   case 121:
-#line 563 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var)); }
-#line 3312 "parser.tab.c" /* yacc.c:1646  */
+#line 564 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var)); }
+#line 3461 "parser.tab.c"
     break;
 
   case 122:
-#line 564 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_IN); }
-#line 3318 "parser.tab.c" /* yacc.c:1646  */
+#line 565 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_IN); }
+#line 3467 "parser.tab.c"
     break;
 
   case 123:
-#line 565 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_INPUTSYNC); }
-#line 3324 "parser.tab.c" /* yacc.c:1646  */
+#line 566 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_INPUTSYNC); }
+#line 3473 "parser.tab.c"
     break;
 
   case 124:
-#line 566 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[-1].expr_list)); }
-#line 3330 "parser.tab.c" /* yacc.c:1646  */
+#line 567 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[-1].expr_list)); }
+#line 3479 "parser.tab.c"
     break;
 
   case 125:
-#line 567 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[-1].expr)); }
-#line 3336 "parser.tab.c" /* yacc.c:1646  */
+#line 568 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[-1].expr)); }
+#line 3485 "parser.tab.c"
     break;
 
   case 126:
-#line 568 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PARAMLCID); }
-#line 3342 "parser.tab.c" /* yacc.c:1646  */
+#line 569 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PARAMLCID); }
+#line 3491 "parser.tab.c"
     break;
 
   case 127:
-#line 569 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_LICENSED); }
-#line 3348 "parser.tab.c" /* yacc.c:1646  */
+#line 570 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_LICENSED); }
+#line 3497 "parser.tab.c"
     break;
 
   case 128:
-#line 570 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_LOCAL); }
-#line 3354 "parser.tab.c" /* yacc.c:1646  */
+#line 571 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_LOCAL); }
+#line 3503 "parser.tab.c"
     break;
 
   case 129:
-#line 571 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_MAYBE); }
-#line 3360 "parser.tab.c" /* yacc.c:1646  */
+#line 572 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_MAYBE); }
+#line 3509 "parser.tab.c"
     break;
 
   case 130:
-#line 572 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_MESSAGE); }
-#line 3366 "parser.tab.c" /* yacc.c:1646  */
+#line 573 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_MESSAGE); }
+#line 3515 "parser.tab.c"
     break;
 
   case 131:
-#line 573 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NOCODE); }
-#line 3372 "parser.tab.c" /* yacc.c:1646  */
+#line 574 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NOCODE); }
+#line 3521 "parser.tab.c"
     break;
 
   case 132:
-#line 574 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NONBROWSABLE); }
-#line 3378 "parser.tab.c" /* yacc.c:1646  */
+#line 575 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NONBROWSABLE); }
+#line 3527 "parser.tab.c"
     break;
 
   case 133:
-#line 575 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NONCREATABLE); }
-#line 3384 "parser.tab.c" /* yacc.c:1646  */
+#line 576 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NONCREATABLE); }
+#line 3533 "parser.tab.c"
     break;
 
   case 134:
-#line 576 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); }
-#line 3390 "parser.tab.c" /* yacc.c:1646  */
+#line 577 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); }
+#line 3539 "parser.tab.c"
     break;
 
   case 135:
-#line 577 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NOTIFY); }
-#line 3396 "parser.tab.c" /* yacc.c:1646  */
+#line 578 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NOTIFY); }
+#line 3545 "parser.tab.c"
     break;
 
   case 136:
-#line 578 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_NOTIFYFLAG); }
-#line 3402 "parser.tab.c" /* yacc.c:1646  */
+#line 579 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NOTIFYFLAG); }
+#line 3551 "parser.tab.c"
     break;
 
   case 137:
-#line 579 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_OBJECT); }
-#line 3408 "parser.tab.c" /* yacc.c:1646  */
+#line 580 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_OBJECT); }
+#line 3557 "parser.tab.c"
     break;
 
   case 138:
-#line 580 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_ODL); }
-#line 3414 "parser.tab.c" /* yacc.c:1646  */
+#line 581 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_ODL); }
+#line 3563 "parser.tab.c"
     break;
 
   case 139:
-#line 581 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); }
-#line 3420 "parser.tab.c" /* yacc.c:1646  */
+#line 582 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); }
+#line 3569 "parser.tab.c"
     break;
 
   case 140:
-#line 582 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[-1].str)); }
-#line 3426 "parser.tab.c" /* yacc.c:1646  */
+#line 583 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[-1].str)); }
+#line 3575 "parser.tab.c"
     break;
 
   case 141:
-#line 583 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_OPTIONAL); }
-#line 3432 "parser.tab.c" /* yacc.c:1646  */
+#line 584 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_OPTIONAL); }
+#line 3581 "parser.tab.c"
     break;
 
   case 142:
-#line 584 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_OUT); }
-#line 3438 "parser.tab.c" /* yacc.c:1646  */
+#line 585 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_OUT); }
+#line 3587 "parser.tab.c"
     break;
 
   case 143:
-#line 585 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PARTIALIGNORE); }
-#line 3444 "parser.tab.c" /* yacc.c:1646  */
+#line 586 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PARTIALIGNORE); }
+#line 3593 "parser.tab.c"
     break;
 
   case 144:
-#line 586 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[-1].num)); }
-#line 3450 "parser.tab.c" /* yacc.c:1646  */
+#line 587 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[-1].num)); }
+#line 3599 "parser.tab.c"
     break;
 
   case 145:
-#line 587 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[-1].str)); }
-#line 3456 "parser.tab.c" /* yacc.c:1646  */
+#line 588 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[-1].str)); }
+#line 3605 "parser.tab.c"
     break;
 
   case 146:
-#line 588 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PROPGET); }
-#line 3462 "parser.tab.c" /* yacc.c:1646  */
+#line 589 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PROPGET); }
+#line 3611 "parser.tab.c"
     break;
 
   case 147:
-#line 589 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PROPPUT); }
-#line 3468 "parser.tab.c" /* yacc.c:1646  */
+#line 590 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PROPPUT); }
+#line 3617 "parser.tab.c"
     break;
 
   case 148:
-#line 590 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PROPPUTREF); }
-#line 3474 "parser.tab.c" /* yacc.c:1646  */
+#line 591 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PROPPUTREF); }
+#line 3623 "parser.tab.c"
     break;
 
   case 149:
-#line 591 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PROXY); }
-#line 3480 "parser.tab.c" /* yacc.c:1646  */
+#line 592 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PROXY); }
+#line 3629 "parser.tab.c"
     break;
 
   case 150:
-#line 592 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_PUBLIC); }
-#line 3486 "parser.tab.c" /* yacc.c:1646  */
+#line 593 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PUBLIC); }
+#line 3635 "parser.tab.c"
     break;
 
   case 151:
-#line 594 "parser.y" /* yacc.c:1646  */
-    { expr_list_t *list = append_expr( NULL, (yyvsp[-3].expr) );
+#line 595 "parser.y"
+                                                { expr_list_t *list = append_expr( NULL, (yyvsp[-3].expr) );
                                                  list = append_expr( list, (yyvsp[-1].expr) );
                                                  (yyval.attr) = make_attrp(ATTR_RANGE, list); }
-#line 3494 "parser.tab.c" /* yacc.c:1646  */
+#line 3643 "parser.tab.c"
     break;
 
   case 152:
-#line 597 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_READONLY); }
-#line 3500 "parser.tab.c" /* yacc.c:1646  */
+#line 598 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_READONLY); }
+#line 3649 "parser.tab.c"
     break;
 
   case 153:
-#line 598 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[-1].type)); }
-#line 3506 "parser.tab.c" /* yacc.c:1646  */
+#line 599 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[-1].type)); }
+#line 3655 "parser.tab.c"
     break;
 
   case 154:
-#line 599 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_REQUESTEDIT); }
-#line 3512 "parser.tab.c" /* yacc.c:1646  */
+#line 600 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_REQUESTEDIT); }
+#line 3661 "parser.tab.c"
     break;
 
   case 155:
-#line 600 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_RESTRICTED); }
-#line 3518 "parser.tab.c" /* yacc.c:1646  */
+#line 601 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_RESTRICTED); }
+#line 3667 "parser.tab.c"
     break;
 
   case 156:
-#line 601 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_RETVAL); }
-#line 3524 "parser.tab.c" /* yacc.c:1646  */
+#line 602 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_RETVAL); }
+#line 3673 "parser.tab.c"
     break;
 
   case 157:
-#line 602 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[-1].expr_list)); }
-#line 3530 "parser.tab.c" /* yacc.c:1646  */
+#line 603 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[-1].expr_list)); }
+#line 3679 "parser.tab.c"
     break;
 
   case 158:
-#line 603 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_SOURCE); }
-#line 3536 "parser.tab.c" /* yacc.c:1646  */
+#line 604 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_SOURCE); }
+#line 3685 "parser.tab.c"
     break;
 
   case 159:
-#line 604 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); }
-#line 3542 "parser.tab.c" /* yacc.c:1646  */
+#line 605 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); }
+#line 3691 "parser.tab.c"
     break;
 
   case 160:
-#line 605 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_STRING); }
-#line 3548 "parser.tab.c" /* yacc.c:1646  */
+#line 606 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_STRING); }
+#line 3697 "parser.tab.c"
     break;
 
   case 161:
-#line 606 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[-1].expr)); }
-#line 3554 "parser.tab.c" /* yacc.c:1646  */
+#line 607 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[-1].expr)); }
+#line 3703 "parser.tab.c"
     break;
 
   case 162:
-#line 607 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[-1].type)); }
-#line 3560 "parser.tab.c" /* yacc.c:1646  */
+#line 608 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[-1].type)); }
+#line 3709 "parser.tab.c"
     break;
 
   case 163:
-#line 608 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[-1].type)); }
-#line 3566 "parser.tab.c" /* yacc.c:1646  */
+#line 609 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[-1].type)); }
+#line 3715 "parser.tab.c"
     break;
 
   case 164:
-#line 609 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[-1].num)); }
-#line 3572 "parser.tab.c" /* yacc.c:1646  */
+#line 610 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[-1].num)); }
+#line 3721 "parser.tab.c"
     break;
 
   case 165:
-#line 610 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_UIDEFAULT); }
-#line 3578 "parser.tab.c" /* yacc.c:1646  */
+#line 611 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_UIDEFAULT); }
+#line 3727 "parser.tab.c"
     break;
 
   case 166:
-#line 611 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_USESGETLASTERROR); }
-#line 3584 "parser.tab.c" /* yacc.c:1646  */
+#line 612 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_USESGETLASTERROR); }
+#line 3733 "parser.tab.c"
     break;
 
   case 167:
-#line 612 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[-1].type)); }
-#line 3590 "parser.tab.c" /* yacc.c:1646  */
+#line 613 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[-1].type)); }
+#line 3739 "parser.tab.c"
     break;
 
   case 168:
-#line 613 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[-1].uuid)); }
-#line 3596 "parser.tab.c" /* yacc.c:1646  */
+#line 614 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[-1].uuid)); }
+#line 3745 "parser.tab.c"
     break;
 
   case 169:
-#line 614 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[-1].uuid)); }
-#line 3602 "parser.tab.c" /* yacc.c:1646  */
+#line 615 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[-1].uuid)); }
+#line 3751 "parser.tab.c"
     break;
 
   case 170:
-#line 615 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_V1ENUM); }
-#line 3608 "parser.tab.c" /* yacc.c:1646  */
+#line 616 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_V1ENUM); }
+#line 3757 "parser.tab.c"
     break;
 
   case 171:
-#line 616 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_VARARG); }
-#line 3614 "parser.tab.c" /* yacc.c:1646  */
+#line 617 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_VARARG); }
+#line 3763 "parser.tab.c"
     break;
 
   case 172:
-#line 617 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[-1].num)); }
-#line 3620 "parser.tab.c" /* yacc.c:1646  */
+#line 618 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[-1].num)); }
+#line 3769 "parser.tab.c"
     break;
 
   case 173:
-#line 618 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[-1].str)); }
-#line 3626 "parser.tab.c" /* yacc.c:1646  */
+#line 619 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[-1].str)); }
+#line 3775 "parser.tab.c"
     break;
 
   case 174:
-#line 619 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[-1].type)); }
-#line 3632 "parser.tab.c" /* yacc.c:1646  */
+#line 620 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[-1].type)); }
+#line 3781 "parser.tab.c"
     break;
 
   case 175:
-#line 620 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[0].num)); }
-#line 3638 "parser.tab.c" /* yacc.c:1646  */
+#line 621 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[0].num)); }
+#line 3787 "parser.tab.c"
     break;
 
   case 177:
-#line 625 "parser.y" /* yacc.c:1646  */
-    { if (!is_valid_uuid((yyvsp[0].str)))
+#line 626 "parser.y"
+                                                { if (!is_valid_uuid((yyvsp[0].str)))
                                                    error_loc("invalid UUID: %s\n", (yyvsp[0].str));
                                                  (yyval.uuid) = parse_uuid((yyvsp[0].str)); }
-#line 3646 "parser.tab.c" /* yacc.c:1646  */
+#line 3795 "parser.tab.c"
     break;
 
   case 178:
-#line 630 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = xstrdup("__cdecl"); }
-#line 3652 "parser.tab.c" /* yacc.c:1646  */
+#line 631 "parser.y"
+                                                { (yyval.str) = xstrdup("__cdecl"); }
+#line 3801 "parser.tab.c"
     break;
 
   case 179:
-#line 631 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = xstrdup("__fastcall"); }
-#line 3658 "parser.tab.c" /* yacc.c:1646  */
+#line 632 "parser.y"
+                                                { (yyval.str) = xstrdup("__fastcall"); }
+#line 3807 "parser.tab.c"
     break;
 
   case 180:
-#line 632 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = xstrdup("__pascal"); }
-#line 3664 "parser.tab.c" /* yacc.c:1646  */
+#line 633 "parser.y"
+                                                { (yyval.str) = xstrdup("__pascal"); }
+#line 3813 "parser.tab.c"
     break;
 
   case 181:
-#line 633 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = xstrdup("__stdcall"); }
-#line 3670 "parser.tab.c" /* yacc.c:1646  */
+#line 634 "parser.y"
+                                                { (yyval.str) = xstrdup("__stdcall"); }
+#line 3819 "parser.tab.c"
     break;
 
   case 182:
-#line 636 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 3676 "parser.tab.c" /* yacc.c:1646  */
+#line 637 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 3825 "parser.tab.c"
     break;
 
   case 183:
-#line 637 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
-#line 3682 "parser.tab.c" /* yacc.c:1646  */
+#line 638 "parser.y"
+                                                { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
+#line 3831 "parser.tab.c"
     break;
 
   case 184:
-#line 640 "parser.y" /* yacc.c:1646  */
-    { attr_t *a = make_attrp(ATTR_CASE, append_expr( NULL, (yyvsp[-2].expr) ));
+#line 641 "parser.y"
+                                                { attr_t *a = make_attrp(ATTR_CASE, append_expr( NULL, (yyvsp[-2].expr) ));
                                                  (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
                                                  (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
                                                }
-#line 3691 "parser.tab.c" /* yacc.c:1646  */
+#line 3840 "parser.tab.c"
     break;
 
   case 185:
-#line 644 "parser.y" /* yacc.c:1646  */
-    { attr_t *a = make_attr(ATTR_DEFAULT);
+#line 645 "parser.y"
+                                                { attr_t *a = make_attr(ATTR_DEFAULT);
                                                  (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
                                                  (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
                                                }
-#line 3700 "parser.tab.c" /* yacc.c:1646  */
+#line 3849 "parser.tab.c"
     break;
 
   case 186:
-#line 650 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 3706 "parser.tab.c" /* yacc.c:1646  */
+#line 651 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 3855 "parser.tab.c"
     break;
 
   case 187:
-#line 651 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = (yyvsp[-1].var_list); }
-#line 3712 "parser.tab.c" /* yacc.c:1646  */
+#line 652 "parser.y"
+                                                { (yyval.var_list) = (yyvsp[-1].var_list); }
+#line 3861 "parser.tab.c"
     break;
 
   case 189:
-#line 655 "parser.y" /* yacc.c:1646  */
-    { if (!(yyvsp[0].var)->eval)
+#line 656 "parser.y"
+                                                { if (!(yyvsp[0].var)->eval)
                                                    (yyvsp[0].var)->eval = make_exprl(EXPR_NUM, 0 /* default for first enum entry */);
                                                   (yyval.var_list) = append_var( NULL, (yyvsp[0].var) );
                                                }
-#line 3721 "parser.tab.c" /* yacc.c:1646  */
+#line 3870 "parser.tab.c"
     break;
 
   case 190:
-#line 659 "parser.y" /* yacc.c:1646  */
-    { if (!(yyvsp[0].var)->eval)
+#line 660 "parser.y"
+                                                { if (!(yyvsp[0].var)->eval)
                                                   {
                                                     var_t *last = LIST_ENTRY( list_tail((yyval.var_list)), var_t, entry );
                                                     enum expr_type type = EXPR_NUM;
@@ -3732,733 +3881,733 @@ yyreduce:
                                                   }
                                                   (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) );
                                                }
-#line 3736 "parser.tab.c" /* yacc.c:1646  */
+#line 3885 "parser.tab.c"
     break;
 
   case 191:
-#line 671 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = reg_const((yyvsp[-2].var));
+#line 672 "parser.y"
+                                                { (yyval.var) = reg_const((yyvsp[-2].var));
                                                  (yyval.var)->eval = (yyvsp[0].expr);
                                                   (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
                                                }
-#line 3745 "parser.tab.c" /* yacc.c:1646  */
+#line 3894 "parser.tab.c"
     break;
 
   case 192:
-#line 675 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = reg_const((yyvsp[0].var));
+#line 676 "parser.y"
+                                                { (yyval.var) = reg_const((yyvsp[0].var));
                                                   (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
                                                }
-#line 3753 "parser.tab.c" /* yacc.c:1646  */
+#line 3902 "parser.tab.c"
     break;
 
   case 193:
-#line 680 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_enum((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
-#line 3759 "parser.tab.c" /* yacc.c:1646  */
+#line 681 "parser.y"
+                                                { (yyval.type) = type_new_enum((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
+#line 3908 "parser.tab.c"
     break;
 
   case 194:
-#line 683 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
-#line 3765 "parser.tab.c" /* yacc.c:1646  */
+#line 684 "parser.y"
+                                                { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
+#line 3914 "parser.tab.c"
     break;
 
   case 195:
-#line 684 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
-#line 3771 "parser.tab.c" /* yacc.c:1646  */
+#line 685 "parser.y"
+                                                { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
+#line 3920 "parser.tab.c"
     break;
 
   case 196:
-#line 687 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 3777 "parser.tab.c" /* yacc.c:1646  */
+#line 688 "parser.y"
+                                                { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 3926 "parser.tab.c"
     break;
 
   case 198:
-#line 691 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); }
-#line 3783 "parser.tab.c" /* yacc.c:1646  */
+#line 692 "parser.y"
+                                                { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); }
+#line 3932 "parser.tab.c"
     break;
 
   case 199:
-#line 692 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); }
-#line 3789 "parser.tab.c" /* yacc.c:1646  */
+#line 693 "parser.y"
+                                                { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); }
+#line 3938 "parser.tab.c"
     break;
 
   case 200:
-#line 693 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); }
-#line 3795 "parser.tab.c" /* yacc.c:1646  */
+#line 694 "parser.y"
+                                                { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); }
+#line 3944 "parser.tab.c"
     break;
 
   case 201:
-#line 694 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
-#line 3801 "parser.tab.c" /* yacc.c:1646  */
+#line 695 "parser.y"
+                                                { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
+#line 3950 "parser.tab.c"
     break;
 
   case 202:
-#line 695 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprl(EXPR_NUM, 0); }
-#line 3807 "parser.tab.c" /* yacc.c:1646  */
+#line 696 "parser.y"
+                                                { (yyval.expr) = make_exprl(EXPR_NUM, 0); }
+#line 3956 "parser.tab.c"
     break;
 
   case 203:
-#line 696 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
-#line 3813 "parser.tab.c" /* yacc.c:1646  */
+#line 697 "parser.y"
+                                                { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
+#line 3962 "parser.tab.c"
     break;
 
   case 204:
-#line 697 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); }
-#line 3819 "parser.tab.c" /* yacc.c:1646  */
+#line 698 "parser.y"
+                                                { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); }
+#line 3968 "parser.tab.c"
     break;
 
   case 205:
-#line 698 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); }
-#line 3825 "parser.tab.c" /* yacc.c:1646  */
+#line 699 "parser.y"
+                                                { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); }
+#line 3974 "parser.tab.c"
     break;
 
   case 206:
-#line 699 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); }
-#line 3831 "parser.tab.c" /* yacc.c:1646  */
+#line 700 "parser.y"
+                                                { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); }
+#line 3980 "parser.tab.c"
     break;
 
   case 207:
-#line 700 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); }
-#line 3837 "parser.tab.c" /* yacc.c:1646  */
+#line 701 "parser.y"
+                                                { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); }
+#line 3986 "parser.tab.c"
     break;
 
   case 208:
-#line 701 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3843 "parser.tab.c" /* yacc.c:1646  */
+#line 702 "parser.y"
+                                                { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3992 "parser.tab.c"
     break;
 
   case 209:
-#line 702 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3849 "parser.tab.c" /* yacc.c:1646  */
+#line 703 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3998 "parser.tab.c"
     break;
 
   case 210:
-#line 703 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3855 "parser.tab.c" /* yacc.c:1646  */
+#line 704 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4004 "parser.tab.c"
     break;
 
   case 211:
-#line 704 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3861 "parser.tab.c" /* yacc.c:1646  */
+#line 705 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4010 "parser.tab.c"
     break;
 
   case 212:
-#line 705 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3867 "parser.tab.c" /* yacc.c:1646  */
+#line 706 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4016 "parser.tab.c"
     break;
 
   case 213:
-#line 706 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3873 "parser.tab.c" /* yacc.c:1646  */
+#line 707 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4022 "parser.tab.c"
     break;
 
   case 214:
-#line 707 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3879 "parser.tab.c" /* yacc.c:1646  */
+#line 708 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4028 "parser.tab.c"
     break;
 
   case 215:
-#line 708 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3885 "parser.tab.c" /* yacc.c:1646  */
+#line 709 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4034 "parser.tab.c"
     break;
 
   case 216:
-#line 709 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3891 "parser.tab.c" /* yacc.c:1646  */
+#line 710 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4040 "parser.tab.c"
     break;
 
   case 217:
-#line 710 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3897 "parser.tab.c" /* yacc.c:1646  */
+#line 711 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4046 "parser.tab.c"
     break;
 
   case 218:
-#line 711 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3903 "parser.tab.c" /* yacc.c:1646  */
+#line 712 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4052 "parser.tab.c"
     break;
 
   case 219:
-#line 712 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3909 "parser.tab.c" /* yacc.c:1646  */
+#line 713 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4058 "parser.tab.c"
     break;
 
   case 220:
-#line 713 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3915 "parser.tab.c" /* yacc.c:1646  */
+#line 714 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4064 "parser.tab.c"
     break;
 
   case 221:
-#line 714 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3921 "parser.tab.c" /* yacc.c:1646  */
+#line 715 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4070 "parser.tab.c"
     break;
 
   case 222:
-#line 715 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3927 "parser.tab.c" /* yacc.c:1646  */
+#line 716 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4076 "parser.tab.c"
     break;
 
   case 223:
-#line 716 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3933 "parser.tab.c" /* yacc.c:1646  */
+#line 717 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4082 "parser.tab.c"
     break;
 
   case 224:
-#line 717 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3939 "parser.tab.c" /* yacc.c:1646  */
+#line 718 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4088 "parser.tab.c"
     break;
 
   case 225:
-#line 718 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3945 "parser.tab.c" /* yacc.c:1646  */
+#line 719 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4094 "parser.tab.c"
     break;
 
   case 226:
-#line 719 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3951 "parser.tab.c" /* yacc.c:1646  */
+#line 720 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4100 "parser.tab.c"
     break;
 
   case 227:
-#line 720 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); }
-#line 3957 "parser.tab.c" /* yacc.c:1646  */
+#line 721 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); }
+#line 4106 "parser.tab.c"
     break;
 
   case 228:
-#line 721 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); }
-#line 3963 "parser.tab.c" /* yacc.c:1646  */
+#line 722 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); }
+#line 4112 "parser.tab.c"
     break;
 
   case 229:
-#line 722 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); }
-#line 3969 "parser.tab.c" /* yacc.c:1646  */
+#line 723 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); }
+#line 4118 "parser.tab.c"
     break;
 
   case 230:
-#line 723 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); }
-#line 3975 "parser.tab.c" /* yacc.c:1646  */
+#line 724 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); }
+#line 4124 "parser.tab.c"
     break;
 
   case 231:
-#line 724 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); }
-#line 3981 "parser.tab.c" /* yacc.c:1646  */
+#line 725 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); }
+#line 4130 "parser.tab.c"
     break;
 
   case 232:
-#line 725 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); }
-#line 3987 "parser.tab.c" /* yacc.c:1646  */
+#line 726 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); }
+#line 4136 "parser.tab.c"
     break;
 
   case 233:
-#line 726 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[-2].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
-#line 3993 "parser.tab.c" /* yacc.c:1646  */
+#line 727 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[-2].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
+#line 4142 "parser.tab.c"
     break;
 
   case 234:
-#line 727 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
-#line 3999 "parser.tab.c" /* yacc.c:1646  */
+#line 728 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
+#line 4148 "parser.tab.c"
     break;
 
   case 235:
-#line 729 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[-3].declspec), (yyvsp[-2].declarator), 0), (yyvsp[0].expr)); free((yyvsp[-3].declspec)); free((yyvsp[-2].declarator)); }
-#line 4005 "parser.tab.c" /* yacc.c:1646  */
+#line 730 "parser.y"
+                                                { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[-3].declspec), (yyvsp[-2].declarator), 0), (yyvsp[0].expr)); free((yyvsp[-3].declspec)); free((yyvsp[-2].declarator)); }
+#line 4154 "parser.tab.c"
     break;
 
   case 236:
-#line 731 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[-2].declspec), (yyvsp[-1].declarator), 0), NULL); free((yyvsp[-2].declspec)); free((yyvsp[-1].declarator)); }
-#line 4011 "parser.tab.c" /* yacc.c:1646  */
+#line 732 "parser.y"
+                                                { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[-2].declspec), (yyvsp[-1].declarator), 0), NULL); free((yyvsp[-2].declspec)); free((yyvsp[-1].declarator)); }
+#line 4160 "parser.tab.c"
     break;
 
   case 237:
-#line 732 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); }
-#line 4017 "parser.tab.c" /* yacc.c:1646  */
+#line 733 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); }
+#line 4166 "parser.tab.c"
     break;
 
   case 238:
-#line 733 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = (yyvsp[-1].expr); }
-#line 4023 "parser.tab.c" /* yacc.c:1646  */
+#line 734 "parser.y"
+                                                { (yyval.expr) = (yyvsp[-1].expr); }
+#line 4172 "parser.tab.c"
     break;
 
   case 239:
-#line 736 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
-#line 4029 "parser.tab.c" /* yacc.c:1646  */
+#line 737 "parser.y"
+                                                { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
+#line 4178 "parser.tab.c"
     break;
 
   case 240:
-#line 737 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
-#line 4035 "parser.tab.c" /* yacc.c:1646  */
+#line 738 "parser.y"
+                                                        { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
+#line 4184 "parser.tab.c"
     break;
 
   case 241:
-#line 740 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = (yyvsp[0].expr);
+#line 741 "parser.y"
+                                                { (yyval.expr) = (yyvsp[0].expr);
                                                  if (!(yyval.expr)->is_const)
                                                      error_loc("expression is not an integer constant\n");
                                                }
-#line 4044 "parser.tab.c" /* yacc.c:1646  */
+#line 4193 "parser.tab.c"
     break;
 
   case 242:
-#line 746 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = (yyvsp[0].expr);
+#line 747 "parser.y"
+                                                { (yyval.expr) = (yyvsp[0].expr);
                                                  if (!(yyval.expr)->is_const && (yyval.expr)->type != EXPR_STRLIT && (yyval.expr)->type != EXPR_WSTRLIT)
                                                      error_loc("expression is not constant\n");
                                                }
-#line 4053 "parser.tab.c" /* yacc.c:1646  */
+#line 4202 "parser.tab.c"
     break;
 
   case 243:
-#line 752 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 4059 "parser.tab.c" /* yacc.c:1646  */
+#line 753 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 4208 "parser.tab.c"
     break;
 
   case 244:
-#line 753 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var_list((yyvsp[-1].var_list), (yyvsp[0].var_list)); }
-#line 4065 "parser.tab.c" /* yacc.c:1646  */
+#line 754 "parser.y"
+                                                { (yyval.var_list) = append_var_list((yyvsp[-1].var_list), (yyvsp[0].var_list)); }
+#line 4214 "parser.tab.c"
     break;
 
   case 245:
-#line 757 "parser.y" /* yacc.c:1646  */
-    { const char *first = LIST_ENTRY(list_head((yyvsp[-1].declarator_list)), declarator_t, entry)->var->name;
+#line 758 "parser.y"
+                                                { const char *first = LIST_ENTRY(list_head((yyvsp[-1].declarator_list)), declarator_t, entry)->var->name;
                                                  check_field_attrs(first, (yyvsp[-3].attr_list));
                                                  (yyval.var_list) = set_var_types((yyvsp[-3].attr_list), (yyvsp[-2].declspec), (yyvsp[-1].declarator_list));
                                                }
-#line 4074 "parser.tab.c" /* yacc.c:1646  */
+#line 4223 "parser.tab.c"
     break;
 
   case 246:
-#line 761 "parser.y" /* yacc.c:1646  */
-    { var_t *v = make_var(NULL);
+#line 762 "parser.y"
+                                                { var_t *v = make_var(NULL);
                                                  v->type = (yyvsp[-1].type); v->attrs = (yyvsp[-2].attr_list);
                                                  (yyval.var_list) = append_var(NULL, v);
                                                }
-#line 4083 "parser.tab.c" /* yacc.c:1646  */
+#line 4232 "parser.tab.c"
     break;
 
   case 247:
-#line 768 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = (yyvsp[-1].var); }
-#line 4089 "parser.tab.c" /* yacc.c:1646  */
+#line 769 "parser.y"
+                                                { (yyval.var) = (yyvsp[-1].var); }
+#line 4238 "parser.tab.c"
     break;
 
   case 248:
-#line 769 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); }
-#line 4095 "parser.tab.c" /* yacc.c:1646  */
+#line 770 "parser.y"
+                                                { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); }
+#line 4244 "parser.tab.c"
     break;
 
   case 249:
-#line 772 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 4101 "parser.tab.c" /* yacc.c:1646  */
+#line 773 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 4250 "parser.tab.c"
     break;
 
   case 250:
-#line 773 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
-#line 4107 "parser.tab.c" /* yacc.c:1646  */
+#line 774 "parser.y"
+                                                { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
+#line 4256 "parser.tab.c"
     break;
 
   case 251:
-#line 777 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = (yyvsp[-1].var); }
-#line 4113 "parser.tab.c" /* yacc.c:1646  */
+#line 778 "parser.y"
+                                                { (yyval.var) = (yyvsp[-1].var); }
+#line 4262 "parser.tab.c"
     break;
 
   case 252:
-#line 778 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = NULL; }
-#line 4119 "parser.tab.c" /* yacc.c:1646  */
+#line 779 "parser.y"
+                                                { (yyval.var) = NULL; }
+#line 4268 "parser.tab.c"
     break;
 
   case 253:
-#line 781 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = declare_var(check_field_attrs((yyvsp[0].declarator)->var->name, (yyvsp[-2].attr_list)),
+#line 782 "parser.y"
+                                                { (yyval.var) = declare_var(check_field_attrs((yyvsp[0].declarator)->var->name, (yyvsp[-2].attr_list)),
                                                                (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
                                                  free((yyvsp[0].declarator));
                                                }
-#line 4128 "parser.tab.c" /* yacc.c:1646  */
+#line 4277 "parser.tab.c"
     break;
 
   case 254:
-#line 785 "parser.y" /* yacc.c:1646  */
-    { var_t *v = make_var(NULL);
+#line 786 "parser.y"
+                                                { var_t *v = make_var(NULL);
                                                  v->type = (yyvsp[0].type); v->attrs = (yyvsp[-1].attr_list);
                                                  (yyval.var) = v;
                                                }
-#line 4137 "parser.tab.c" /* yacc.c:1646  */
+#line 4286 "parser.tab.c"
     break;
 
   case 255:
-#line 791 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = (yyvsp[0].var);
+#line 792 "parser.y"
+                                                { (yyval.var) = (yyvsp[0].var);
                                                  if (type_get_type((yyval.var)->type) != TYPE_FUNCTION)
                                                    error_loc("only methods may be declared inside the methods section of a dispinterface\n");
                                                  check_function_attrs((yyval.var)->name, (yyval.var)->attrs);
                                                }
-#line 4147 "parser.tab.c" /* yacc.c:1646  */
+#line 4296 "parser.tab.c"
     break;
 
   case 256:
-#line 800 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
+#line 801 "parser.y"
+                                                { (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
                                                  free((yyvsp[0].declarator));
                                                }
-#line 4155 "parser.tab.c" /* yacc.c:1646  */
+#line 4304 "parser.tab.c"
     break;
 
   case 257:
-#line 803 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
+#line 804 "parser.y"
+                                                { (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
                                                  free((yyvsp[0].declarator));
                                                }
-#line 4163 "parser.tab.c" /* yacc.c:1646  */
+#line 4312 "parser.tab.c"
     break;
 
   case 258:
-#line 808 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = NULL; }
-#line 4169 "parser.tab.c" /* yacc.c:1646  */
+#line 809 "parser.y"
+                                                { (yyval.var) = NULL; }
+#line 4318 "parser.tab.c"
     break;
 
   case 260:
-#line 812 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = NULL; }
-#line 4175 "parser.tab.c" /* yacc.c:1646  */
+#line 813 "parser.y"
+                                                { (yyval.str) = NULL; }
+#line 4324 "parser.tab.c"
     break;
 
   case 261:
-#line 813 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 4181 "parser.tab.c" /* yacc.c:1646  */
+#line 814 "parser.y"
+                                                { (yyval.str) = (yyvsp[0].str); }
+#line 4330 "parser.tab.c"
     break;
 
   case 262:
-#line 814 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 4187 "parser.tab.c" /* yacc.c:1646  */
+#line 815 "parser.y"
+                                                { (yyval.str) = (yyvsp[0].str); }
+#line 4336 "parser.tab.c"
     break;
 
   case 263:
-#line 817 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = make_var((yyvsp[0].str)); }
-#line 4193 "parser.tab.c" /* yacc.c:1646  */
+#line 818 "parser.y"
+                                                { (yyval.var) = make_var((yyvsp[0].str)); }
+#line 4342 "parser.tab.c"
     break;
 
   case 264:
-#line 819 "parser.y" /* yacc.c:1646  */
-    { (yyval.var) = make_var((yyvsp[0].str)); }
-#line 4199 "parser.tab.c" /* yacc.c:1646  */
+#line 820 "parser.y"
+                                                { (yyval.var) = make_var((yyvsp[0].str)); }
+#line 4348 "parser.tab.c"
     break;
 
   case 265:
-#line 822 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4205 "parser.tab.c" /* yacc.c:1646  */
+#line 823 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4354 "parser.tab.c"
     break;
 
   case 266:
-#line 823 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4211 "parser.tab.c" /* yacc.c:1646  */
+#line 824 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4360 "parser.tab.c"
     break;
 
   case 268:
-#line 825 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); }
-#line 4217 "parser.tab.c" /* yacc.c:1646  */
+#line 826 "parser.y"
+                                                { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); }
+#line 4366 "parser.tab.c"
     break;
 
   case 269:
-#line 826 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); }
-#line 4223 "parser.tab.c" /* yacc.c:1646  */
+#line 827 "parser.y"
+                                                { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); }
+#line 4372 "parser.tab.c"
     break;
 
   case 270:
-#line 827 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
-#line 4229 "parser.tab.c" /* yacc.c:1646  */
+#line 828 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
+#line 4378 "parser.tab.c"
     break;
 
   case 271:
-#line 828 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4235 "parser.tab.c" /* yacc.c:1646  */
+#line 829 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4384 "parser.tab.c"
     break;
 
   case 272:
-#line 829 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4241 "parser.tab.c" /* yacc.c:1646  */
+#line 830 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4390 "parser.tab.c"
     break;
 
   case 273:
-#line 830 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4247 "parser.tab.c" /* yacc.c:1646  */
+#line 831 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4396 "parser.tab.c"
     break;
 
   case 274:
-#line 831 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4253 "parser.tab.c" /* yacc.c:1646  */
+#line 832 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4402 "parser.tab.c"
     break;
 
   case 275:
-#line 832 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4259 "parser.tab.c" /* yacc.c:1646  */
+#line 833 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4408 "parser.tab.c"
     break;
 
   case 278:
-#line 839 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
-#line 4265 "parser.tab.c" /* yacc.c:1646  */
+#line 840 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
+#line 4414 "parser.tab.c"
     break;
 
   case 279:
-#line 840 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
-#line 4271 "parser.tab.c" /* yacc.c:1646  */
+#line 841 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
+#line 4420 "parser.tab.c"
     break;
 
   case 280:
-#line 841 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
-#line 4277 "parser.tab.c" /* yacc.c:1646  */
+#line 842 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
+#line 4426 "parser.tab.c"
     break;
 
   case 281:
-#line 842 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_LONG, 0); }
-#line 4283 "parser.tab.c" /* yacc.c:1646  */
+#line 843 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_LONG, 0); }
+#line 4432 "parser.tab.c"
     break;
 
   case 282:
-#line 843 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
-#line 4289 "parser.tab.c" /* yacc.c:1646  */
+#line 844 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
+#line 4438 "parser.tab.c"
     break;
 
   case 283:
-#line 844 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
-#line 4295 "parser.tab.c" /* yacc.c:1646  */
+#line 845 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
+#line 4444 "parser.tab.c"
     break;
 
   case 284:
-#line 845 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
-#line 4301 "parser.tab.c" /* yacc.c:1646  */
+#line 846 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
+#line 4450 "parser.tab.c"
     break;
 
   case 285:
-#line 846 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
-#line 4307 "parser.tab.c" /* yacc.c:1646  */
+#line 847 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
+#line 4456 "parser.tab.c"
     break;
 
   case 286:
-#line 847 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); }
-#line 4313 "parser.tab.c" /* yacc.c:1646  */
+#line 848 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); }
+#line 4462 "parser.tab.c"
     break;
 
   case 287:
-#line 850 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_coclass((yyvsp[0].str)); }
-#line 4319 "parser.tab.c" /* yacc.c:1646  */
+#line 851 "parser.y"
+                                                { (yyval.type) = type_new_coclass((yyvsp[0].str)); }
+#line 4468 "parser.tab.c"
     break;
 
   case 288:
-#line 851 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type((yyvsp[0].str), NULL, 0);
+#line 852 "parser.y"
+                                                { (yyval.type) = find_type((yyvsp[0].str), NULL, 0);
                                                  if (type_get_type_detect_alias((yyval.type)) != TYPE_COCLASS)
                                                    error_loc("%s was not declared a coclass at %s:%d\n",
                                                              (yyvsp[0].str), (yyval.type)->loc_info.input_name,
                                                              (yyval.type)->loc_info.line_number);
                                                }
-#line 4330 "parser.tab.c" /* yacc.c:1646  */
+#line 4479 "parser.tab.c"
     break;
 
   case 289:
-#line 859 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type);
+#line 860 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type);
                                                  check_def((yyval.type));
                                                  (yyval.type)->attrs = check_coclass_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
                                                }
-#line 4339 "parser.tab.c" /* yacc.c:1646  */
+#line 4488 "parser.tab.c"
     break;
 
   case 290:
-#line 866 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_coclass_define((yyvsp[-4].type), (yyvsp[-2].ifref_list)); }
-#line 4345 "parser.tab.c" /* yacc.c:1646  */
+#line 867 "parser.y"
+                                                { (yyval.type) = type_coclass_define((yyvsp[-4].type), (yyvsp[-2].ifref_list)); }
+#line 4494 "parser.tab.c"
     break;
 
   case 291:
-#line 869 "parser.y" /* yacc.c:1646  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 4351 "parser.tab.c" /* yacc.c:1646  */
+#line 870 "parser.y"
+                                                { (yyval.str) = (yyvsp[0].str); }
+#line 4500 "parser.tab.c"
     break;
 
   case 292:
-#line 872 "parser.y" /* yacc.c:1646  */
-    { (yyval.ifref_list) = NULL; }
-#line 4357 "parser.tab.c" /* yacc.c:1646  */
+#line 873 "parser.y"
+                                                { (yyval.ifref_list) = NULL; }
+#line 4506 "parser.tab.c"
     break;
 
   case 293:
-#line 873 "parser.y" /* yacc.c:1646  */
-    { (yyval.ifref_list) = append_ifref( (yyvsp[-1].ifref_list), (yyvsp[0].ifref) ); }
-#line 4363 "parser.tab.c" /* yacc.c:1646  */
+#line 874 "parser.y"
+                                                { (yyval.ifref_list) = append_ifref( (yyvsp[-1].ifref_list), (yyvsp[0].ifref) ); }
+#line 4512 "parser.tab.c"
     break;
 
   case 294:
-#line 877 "parser.y" /* yacc.c:1646  */
-    { (yyval.ifref) = make_ifref((yyvsp[0].type)); (yyval.ifref)->attrs = (yyvsp[-1].attr_list); }
-#line 4369 "parser.tab.c" /* yacc.c:1646  */
+#line 878 "parser.y"
+                                                { (yyval.ifref) = make_ifref((yyvsp[0].type)); (yyval.ifref)->attrs = (yyvsp[-1].attr_list); }
+#line 4518 "parser.tab.c"
     break;
 
   case 295:
-#line 880 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4375 "parser.tab.c" /* yacc.c:1646  */
+#line 881 "parser.y"
+                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
+#line 4524 "parser.tab.c"
     break;
 
   case 296:
-#line 881 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4381 "parser.tab.c" /* yacc.c:1646  */
+#line 882 "parser.y"
+                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
+#line 4530 "parser.tab.c"
     break;
 
   case 297:
-#line 884 "parser.y" /* yacc.c:1646  */
-    { attr_t *attrs;
+#line 885 "parser.y"
+                                                { attr_t *attrs;
                                                  (yyval.type) = (yyvsp[0].type);
                                                  check_def((yyval.type));
                                                  attrs = make_attr(ATTR_DISPINTERFACE);
                                                  (yyval.type)->attrs = append_attr( check_dispiface_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list)), attrs );
                                                  (yyval.type)->defined = TRUE;
                                                }
-#line 4393 "parser.tab.c" /* yacc.c:1646  */
+#line 4542 "parser.tab.c"
     break;
 
   case 298:
-#line 893 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 4399 "parser.tab.c" /* yacc.c:1646  */
+#line 894 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 4548 "parser.tab.c"
     break;
 
   case 299:
-#line 894 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
-#line 4405 "parser.tab.c" /* yacc.c:1646  */
+#line 895 "parser.y"
+                                                { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
+#line 4554 "parser.tab.c"
     break;
 
   case 300:
-#line 897 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = NULL; }
-#line 4411 "parser.tab.c" /* yacc.c:1646  */
+#line 898 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 4560 "parser.tab.c"
     break;
 
   case 301:
-#line 898 "parser.y" /* yacc.c:1646  */
-    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
-#line 4417 "parser.tab.c" /* yacc.c:1646  */
+#line 899 "parser.y"
+                                                { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
+#line 4566 "parser.tab.c"
     break;
 
   case 302:
-#line 904 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-4].type);
+#line 905 "parser.y"
+                                                { (yyval.type) = (yyvsp[-4].type);
                                                  type_dispinterface_define((yyval.type), (yyvsp[-2].var_list), (yyvsp[-1].var_list));
                                                }
-#line 4425 "parser.tab.c" /* yacc.c:1646  */
+#line 4574 "parser.tab.c"
     break;
 
   case 303:
-#line 908 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-4].type);
+#line 909 "parser.y"
+                                                { (yyval.type) = (yyvsp[-4].type);
                                                  type_dispinterface_define_from_iface((yyval.type), (yyvsp[-2].type));
                                                }
-#line 4433 "parser.tab.c" /* yacc.c:1646  */
+#line 4582 "parser.tab.c"
     break;
 
   case 304:
-#line 913 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = NULL; }
-#line 4439 "parser.tab.c" /* yacc.c:1646  */
+#line 914 "parser.y"
+                                                { (yyval.type) = NULL; }
+#line 4588 "parser.tab.c"
     break;
 
   case 305:
-#line 914 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error2((yyvsp[0].str), 0); }
-#line 4445 "parser.tab.c" /* yacc.c:1646  */
+#line 915 "parser.y"
+                                                { (yyval.type) = find_type_or_error2((yyvsp[0].str), 0); }
+#line 4594 "parser.tab.c"
     break;
 
   case 306:
-#line 917 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4451 "parser.tab.c" /* yacc.c:1646  */
+#line 918 "parser.y"
+                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
+#line 4600 "parser.tab.c"
     break;
 
   case 307:
-#line 918 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4457 "parser.tab.c" /* yacc.c:1646  */
+#line 919 "parser.y"
+                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
+#line 4606 "parser.tab.c"
     break;
 
   case 308:
-#line 921 "parser.y" /* yacc.c:1646  */
-    { (yyval.ifinfo).interface = (yyvsp[0].type);
+#line 922 "parser.y"
+                                                { (yyval.ifinfo).interface = (yyvsp[0].type);
                                                  (yyval.ifinfo).old_pointer_default = pointer_default;
                                                  if (is_attr((yyvsp[-1].attr_list), ATTR_POINTERDEFAULT))
                                                    pointer_default = get_attrv((yyvsp[-1].attr_list), ATTR_POINTERDEFAULT);
@@ -4466,606 +4615,649 @@ yyreduce:
                                                  (yyvsp[0].type)->attrs = check_iface_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
                                                  (yyvsp[0].type)->defined = TRUE;
                                                }
-#line 4470 "parser.tab.c" /* yacc.c:1646  */
+#line 4619 "parser.tab.c"
     break;
 
   case 309:
-#line 932 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-5].ifinfo).interface;
+#line 933 "parser.y"
+                                                { (yyval.type) = (yyvsp[-5].ifinfo).interface;
                                                  if((yyval.type) == (yyvsp[-4].type))
                                                    error_loc("Interface can't inherit from itself\n");
                                                  type_interface_define((yyval.type), (yyvsp[-4].type), (yyvsp[-2].stmt_list));
                                                  check_async_uuid((yyval.type));
                                                  pointer_default = (yyvsp[-5].ifinfo).old_pointer_default;
                                                }
-#line 4482 "parser.tab.c" /* yacc.c:1646  */
+#line 4631 "parser.tab.c"
     break;
 
   case 310:
-#line 943 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-7].ifinfo).interface;
+#line 944 "parser.y"
+                                                { (yyval.type) = (yyvsp[-7].ifinfo).interface;
                                                  type_interface_define((yyval.type), find_type_or_error2((yyvsp[-5].str), 0), (yyvsp[-2].stmt_list));
                                                  pointer_default = (yyvsp[-7].ifinfo).old_pointer_default;
                                                }
-#line 4491 "parser.tab.c" /* yacc.c:1646  */
+#line 4640 "parser.tab.c"
     break;
 
   case 311:
-#line 947 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-1].type); }
-#line 4497 "parser.tab.c" /* yacc.c:1646  */
+#line 948 "parser.y"
+                                                { (yyval.type) = (yyvsp[-1].type); }
+#line 4646 "parser.tab.c"
     break;
 
   case 312:
-#line 951 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-1].type); }
-#line 4503 "parser.tab.c" /* yacc.c:1646  */
+#line 952 "parser.y"
+                                                { (yyval.type) = (yyvsp[-1].type); }
+#line 4652 "parser.tab.c"
     break;
 
   case 313:
-#line 952 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-1].type); }
-#line 4509 "parser.tab.c" /* yacc.c:1646  */
+#line 953 "parser.y"
+                                                { (yyval.type) = (yyvsp[-1].type); }
+#line 4658 "parser.tab.c"
     break;
 
   case 314:
-#line 955 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_module((yyvsp[0].str)); }
-#line 4515 "parser.tab.c" /* yacc.c:1646  */
+#line 956 "parser.y"
+                                                { (yyval.type) = type_new_module((yyvsp[0].str)); }
+#line 4664 "parser.tab.c"
     break;
 
   case 315:
-#line 956 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_module((yyvsp[0].str)); }
-#line 4521 "parser.tab.c" /* yacc.c:1646  */
+#line 957 "parser.y"
+                                                { (yyval.type) = type_new_module((yyvsp[0].str)); }
+#line 4670 "parser.tab.c"
     break;
 
   case 316:
-#line 959 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type);
+#line 960 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type);
                                                  (yyval.type)->attrs = check_module_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
                                                }
-#line 4529 "parser.tab.c" /* yacc.c:1646  */
+#line 4678 "parser.tab.c"
     break;
 
   case 317:
-#line 965 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[-4].type);
+#line 966 "parser.y"
+                                                { (yyval.type) = (yyvsp[-4].type);
                                                   type_module_define((yyval.type), (yyvsp[-2].stmt_list));
                                                }
-#line 4537 "parser.tab.c" /* yacc.c:1646  */
+#line 4686 "parser.tab.c"
     break;
 
   case 318:
-#line 971 "parser.y" /* yacc.c:1646  */
-    { (yyval.stgclass) = STG_EXTERN; }
-#line 4543 "parser.tab.c" /* yacc.c:1646  */
+#line 972 "parser.y"
+                                                { (yyval.stgclass) = STG_EXTERN; }
+#line 4692 "parser.tab.c"
     break;
 
   case 319:
-#line 972 "parser.y" /* yacc.c:1646  */
-    { (yyval.stgclass) = STG_STATIC; }
-#line 4549 "parser.tab.c" /* yacc.c:1646  */
+#line 973 "parser.y"
+                                                { (yyval.stgclass) = STG_STATIC; }
+#line 4698 "parser.tab.c"
     break;
 
   case 320:
-#line 973 "parser.y" /* yacc.c:1646  */
-    { (yyval.stgclass) = STG_REGISTER; }
-#line 4555 "parser.tab.c" /* yacc.c:1646  */
+#line 974 "parser.y"
+                                                { (yyval.stgclass) = STG_REGISTER; }
+#line 4704 "parser.tab.c"
     break;
 
   case 321:
-#line 977 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_INLINE); }
-#line 4561 "parser.tab.c" /* yacc.c:1646  */
+#line 978 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_INLINE); }
+#line 4710 "parser.tab.c"
     break;
 
   case 322:
-#line 981 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_CONST); }
-#line 4567 "parser.tab.c" /* yacc.c:1646  */
+#line 982 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_CONST); }
+#line 4716 "parser.tab.c"
     break;
 
   case 323:
-#line 984 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = NULL; }
-#line 4573 "parser.tab.c" /* yacc.c:1646  */
+#line 985 "parser.y"
+                                                { (yyval.attr_list) = NULL; }
+#line 4722 "parser.tab.c"
     break;
 
   case 324:
-#line 985 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = append_attr((yyvsp[-1].attr_list), (yyvsp[0].attr)); }
-#line 4579 "parser.tab.c" /* yacc.c:1646  */
+#line 986 "parser.y"
+                                                { (yyval.attr_list) = append_attr((yyvsp[-1].attr_list), (yyvsp[0].attr)); }
+#line 4728 "parser.tab.c"
     break;
 
   case 325:
-#line 988 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, NULL, STG_NONE); }
-#line 4585 "parser.tab.c" /* yacc.c:1646  */
+#line 989 "parser.y"
+                                                { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, NULL, STG_NONE); }
+#line 4734 "parser.tab.c"
     break;
 
   case 326:
-#line 990 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), NULL, STG_NONE); }
-#line 4591 "parser.tab.c" /* yacc.c:1646  */
+#line 991 "parser.y"
+                                                { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), NULL, STG_NONE); }
+#line 4740 "parser.tab.c"
     break;
 
   case 327:
-#line 993 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = NULL; }
-#line 4597 "parser.tab.c" /* yacc.c:1646  */
+#line 994 "parser.y"
+                                                { (yyval.declspec) = NULL; }
+#line 4746 "parser.tab.c"
     break;
 
   case 329:
-#line 998 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
-#line 4603 "parser.tab.c" /* yacc.c:1646  */
+#line 999 "parser.y"
+                                                { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
+#line 4752 "parser.tab.c"
     break;
 
   case 330:
-#line 999 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
-#line 4609 "parser.tab.c" /* yacc.c:1646  */
+#line 1000 "parser.y"
+                                                  { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
+#line 4758 "parser.tab.c"
     break;
 
   case 331:
-#line 1000 "parser.y" /* yacc.c:1646  */
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, NULL, (yyvsp[-1].stgclass)); }
-#line 4615 "parser.tab.c" /* yacc.c:1646  */
+#line 1001 "parser.y"
+                                                { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, NULL, (yyvsp[-1].stgclass)); }
+#line 4764 "parser.tab.c"
     break;
 
   case 332:
-#line 1005 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4621 "parser.tab.c" /* yacc.c:1646  */
+#line 1006 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4770 "parser.tab.c"
     break;
 
   case 333:
-#line 1006 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
+#line 1007 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
                                                           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4628 "parser.tab.c" /* yacc.c:1646  */
+#line 4777 "parser.tab.c"
     break;
 
   case 335:
-#line 1012 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
-#line 4634 "parser.tab.c" /* yacc.c:1646  */
+#line 1013 "parser.y"
+                                                { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
+#line 4783 "parser.tab.c"
     break;
 
   case 336:
-#line 1013 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4640 "parser.tab.c" /* yacc.c:1646  */
+#line 1014 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4789 "parser.tab.c"
     break;
 
   case 337:
-#line 1014 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
-#line 4646 "parser.tab.c" /* yacc.c:1646  */
+#line 1015 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
+#line 4795 "parser.tab.c"
     break;
 
   case 338:
-#line 1015 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-3].declarator);
+#line 1016 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-3].declarator);
                                                  (yyval.declarator)->func_type = append_chain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
                                                  (yyval.declarator)->type = NULL;
                                                }
-#line 4655 "parser.tab.c" /* yacc.c:1646  */
+#line 4804 "parser.tab.c"
     break;
 
   case 339:
-#line 1024 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4661 "parser.tab.c" /* yacc.c:1646  */
+#line 1025 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4810 "parser.tab.c"
     break;
 
   case 340:
-#line 1025 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
+#line 1026 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
                                                           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4668 "parser.tab.c" /* yacc.c:1646  */
+#line 4817 "parser.tab.c"
     break;
 
   case 342:
-#line 1033 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4674 "parser.tab.c" /* yacc.c:1646  */
+#line 1034 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4823 "parser.tab.c"
     break;
 
   case 343:
-#line 1034 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
+#line 1035 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str)));
                                                           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4681 "parser.tab.c" /* yacc.c:1646  */
+#line 4830 "parser.tab.c"
     break;
 
   case 344:
-#line 1039 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator(NULL); }
-#line 4687 "parser.tab.c" /* yacc.c:1646  */
+#line 1040 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); }
+#line 4836 "parser.tab.c"
     break;
 
   case 346:
-#line 1045 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4693 "parser.tab.c" /* yacc.c:1646  */
+#line 1046 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4842 "parser.tab.c"
     break;
 
   case 347:
-#line 1046 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
-#line 4699 "parser.tab.c" /* yacc.c:1646  */
+#line 1047 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
+#line 4848 "parser.tab.c"
     break;
 
   case 348:
-#line 1047 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
-#line 4705 "parser.tab.c" /* yacc.c:1646  */
+#line 1048 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
+#line 4854 "parser.tab.c"
     break;
 
   case 349:
-#line 1049 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator(NULL);
+#line 1050 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL);
                                                  (yyval.declarator)->func_type = append_chain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
                                                  (yyval.declarator)->type = NULL;
                                                }
-#line 4714 "parser.tab.c" /* yacc.c:1646  */
+#line 4863 "parser.tab.c"
     break;
 
   case 350:
-#line 1054 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-3].declarator);
+#line 1055 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-3].declarator);
                                                  (yyval.declarator)->func_type = append_chain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
                                                  (yyval.declarator)->type = NULL;
                                                }
-#line 4723 "parser.tab.c" /* yacc.c:1646  */
+#line 4872 "parser.tab.c"
     break;
 
   case 351:
-#line 1063 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4729 "parser.tab.c" /* yacc.c:1646  */
+#line 1064 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4878 "parser.tab.c"
     break;
 
   case 352:
-#line 1064 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4735 "parser.tab.c" /* yacc.c:1646  */
+#line 1065 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
+#line 4884 "parser.tab.c"
     break;
 
   case 354:
-#line 1071 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
-#line 4741 "parser.tab.c" /* yacc.c:1646  */
+#line 1072 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_chain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4890 "parser.tab.c"
     break;
 
   case 355:
-#line 1072 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
-#line 4747 "parser.tab.c" /* yacc.c:1646  */
+#line 1073 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
+#line 4896 "parser.tab.c"
     break;
 
   case 356:
-#line 1076 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator(NULL); }
-#line 4753 "parser.tab.c" /* yacc.c:1646  */
+#line 1077 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); }
+#line 4902 "parser.tab.c"
     break;
 
   case 358:
-#line 1084 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
-#line 4759 "parser.tab.c" /* yacc.c:1646  */
+#line 1085 "parser.y"
+                                                { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
+#line 4908 "parser.tab.c"
     break;
 
   case 359:
-#line 1085 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4765 "parser.tab.c" /* yacc.c:1646  */
+#line 1086 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4914 "parser.tab.c"
     break;
 
   case 360:
-#line 1086 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
-#line 4771 "parser.tab.c" /* yacc.c:1646  */
+#line 1087 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
+#line 4920 "parser.tab.c"
     break;
 
   case 361:
-#line 1087 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
-#line 4777 "parser.tab.c" /* yacc.c:1646  */
+#line 1088 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->type = append_array((yyval.declarator)->type, (yyvsp[0].expr)); }
+#line 4926 "parser.tab.c"
     break;
 
   case 362:
-#line 1089 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = make_declarator(NULL);
+#line 1090 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL);
                                                  (yyval.declarator)->func_type = append_chain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
                                                  (yyval.declarator)->type = NULL;
                                                }
-#line 4786 "parser.tab.c" /* yacc.c:1646  */
+#line 4935 "parser.tab.c"
     break;
 
   case 363:
-#line 1094 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-3].declarator);
+#line 1095 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-3].declarator);
                                                  (yyval.declarator)->func_type = append_chain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
                                                  (yyval.declarator)->type = NULL;
                                                }
-#line 4795 "parser.tab.c" /* yacc.c:1646  */
+#line 4944 "parser.tab.c"
     break;
 
   case 364:
-#line 1101 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
-#line 4801 "parser.tab.c" /* yacc.c:1646  */
+#line 1102 "parser.y"
+                                                { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
+#line 4950 "parser.tab.c"
     break;
 
   case 365:
-#line 1102 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
-#line 4807 "parser.tab.c" /* yacc.c:1646  */
+#line 1103 "parser.y"
+                                                { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
+#line 4956 "parser.tab.c"
     break;
 
   case 366:
-#line 1105 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = NULL; }
-#line 4813 "parser.tab.c" /* yacc.c:1646  */
+#line 1106 "parser.y"
+                                                { (yyval.expr) = NULL; }
+#line 4962 "parser.tab.c"
     break;
 
   case 367:
-#line 1106 "parser.y" /* yacc.c:1646  */
-    { (yyval.expr) = (yyvsp[0].expr); }
-#line 4819 "parser.tab.c" /* yacc.c:1646  */
+#line 1107 "parser.y"
+                                                { (yyval.expr) = (yyvsp[0].expr); }
+#line 4968 "parser.tab.c"
     break;
 
   case 368:
-#line 1109 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->bits = (yyvsp[0].expr);
+#line 1110 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->bits = (yyvsp[0].expr);
                                                  if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name)
                                                    error_loc("unnamed fields are not allowed\n");
                                                }
-#line 4828 "parser.tab.c" /* yacc.c:1646  */
+#line 4977 "parser.tab.c"
     break;
 
   case 369:
-#line 1116 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
-#line 4834 "parser.tab.c" /* yacc.c:1646  */
+#line 1117 "parser.y"
+                                                { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
+#line 4983 "parser.tab.c"
     break;
 
   case 370:
-#line 1118 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
-#line 4840 "parser.tab.c" /* yacc.c:1646  */
+#line 1119 "parser.y"
+                                                { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
+#line 4989 "parser.tab.c"
     break;
 
   case 371:
-#line 1122 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[0].declarator); }
-#line 4846 "parser.tab.c" /* yacc.c:1646  */
+#line 1123 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); }
+#line 4995 "parser.tab.c"
     break;
 
   case 372:
-#line 1123 "parser.y" /* yacc.c:1646  */
-    { (yyval.declarator) = (yyvsp[-2].declarator); (yyvsp[-2].declarator)->var->eval = (yyvsp[0].expr); }
-#line 4852 "parser.tab.c" /* yacc.c:1646  */
+#line 1124 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-2].declarator); (yyvsp[-2].declarator)->var->eval = (yyvsp[0].expr); }
+#line 5001 "parser.tab.c"
     break;
 
   case 373:
-#line 1127 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = THREADING_APARTMENT; }
-#line 4858 "parser.tab.c" /* yacc.c:1646  */
+#line 1128 "parser.y"
+                                                { (yyval.num) = THREADING_APARTMENT; }
+#line 5007 "parser.tab.c"
     break;
 
   case 374:
-#line 1128 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = THREADING_NEUTRAL; }
-#line 4864 "parser.tab.c" /* yacc.c:1646  */
+#line 1129 "parser.y"
+                                                { (yyval.num) = THREADING_NEUTRAL; }
+#line 5013 "parser.tab.c"
     break;
 
   case 375:
-#line 1129 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = THREADING_SINGLE; }
-#line 4870 "parser.tab.c" /* yacc.c:1646  */
+#line 1130 "parser.y"
+                                                { (yyval.num) = THREADING_SINGLE; }
+#line 5019 "parser.tab.c"
     break;
 
   case 376:
-#line 1130 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = THREADING_FREE; }
-#line 4876 "parser.tab.c" /* yacc.c:1646  */
+#line 1131 "parser.y"
+                                                { (yyval.num) = THREADING_FREE; }
+#line 5025 "parser.tab.c"
     break;
 
   case 377:
-#line 1131 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = THREADING_BOTH; }
-#line 4882 "parser.tab.c" /* yacc.c:1646  */
+#line 1132 "parser.y"
+                                                { (yyval.num) = THREADING_BOTH; }
+#line 5031 "parser.tab.c"
     break;
 
   case 378:
-#line 1135 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = FC_RP; }
-#line 4888 "parser.tab.c" /* yacc.c:1646  */
+#line 1136 "parser.y"
+                                                { (yyval.num) = FC_RP; }
+#line 5037 "parser.tab.c"
     break;
 
   case 379:
-#line 1136 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = FC_UP; }
-#line 4894 "parser.tab.c" /* yacc.c:1646  */
+#line 1137 "parser.y"
+                                                { (yyval.num) = FC_UP; }
+#line 5043 "parser.tab.c"
     break;
 
   case 380:
-#line 1137 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = FC_FP; }
-#line 4900 "parser.tab.c" /* yacc.c:1646  */
+#line 1138 "parser.y"
+                                                { (yyval.num) = FC_FP; }
+#line 5049 "parser.tab.c"
     break;
 
   case 381:
-#line 1140 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_struct((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
-#line 4906 "parser.tab.c" /* yacc.c:1646  */
+#line 1141 "parser.y"
+                                                { (yyval.type) = type_new_struct((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
+#line 5055 "parser.tab.c"
     break;
 
   case 382:
-#line 1143 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_void(); }
-#line 4912 "parser.tab.c" /* yacc.c:1646  */
+#line 1144 "parser.y"
+                                                { (yyval.type) = type_new_void(); }
+#line 5061 "parser.tab.c"
     break;
 
   case 383:
-#line 1144 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4918 "parser.tab.c" /* yacc.c:1646  */
+#line 1145 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 5067 "parser.tab.c"
     break;
 
   case 384:
-#line 1145 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4924 "parser.tab.c" /* yacc.c:1646  */
+#line 1146 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 5073 "parser.tab.c"
     break;
 
   case 385:
-#line 1146 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4930 "parser.tab.c" /* yacc.c:1646  */
+#line 1147 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 5079 "parser.tab.c"
     break;
 
   case 386:
-#line 1147 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 4936 "parser.tab.c" /* yacc.c:1646  */
+#line 1148 "parser.y"
+                                                { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 5085 "parser.tab.c"
     break;
 
   case 387:
-#line 1148 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4942 "parser.tab.c" /* yacc.c:1646  */
+#line 1149 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 5091 "parser.tab.c"
     break;
 
   case 388:
-#line 1149 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 4948 "parser.tab.c" /* yacc.c:1646  */
+#line 1150 "parser.y"
+                                                { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 5097 "parser.tab.c"
     break;
 
   case 389:
-#line 1150 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4954 "parser.tab.c" /* yacc.c:1646  */
+#line 1151 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 5103 "parser.tab.c"
     break;
 
   case 390:
-#line 1151 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
-#line 4960 "parser.tab.c" /* yacc.c:1646  */
+#line 1152 "parser.y"
+                                                { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
+#line 5109 "parser.tab.c"
     break;
 
   case 391:
-#line 1152 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = make_safearray((yyvsp[-1].type)); }
-#line 4966 "parser.tab.c" /* yacc.c:1646  */
+#line 1153 "parser.y"
+                                                { (yyval.type) = make_safearray((yyvsp[-1].type)); }
+#line 5115 "parser.tab.c"
     break;
 
   case 392:
-#line 1156 "parser.y" /* yacc.c:1646  */
-    { (yyvsp[-4].attr_list) = append_attribs((yyvsp[-4].attr_list), (yyvsp[-2].attr_list));
+#line 1157 "parser.y"
+                                                { (yyvsp[-4].attr_list) = append_attribs((yyvsp[-4].attr_list), (yyvsp[-2].attr_list));
                                                  reg_typedefs((yyvsp[-1].declspec), (yyvsp[0].declarator_list), check_typedef_attrs((yyvsp[-4].attr_list)));
                                                  (yyval.statement) = make_statement_typedef((yyvsp[0].declarator_list));
                                                }
-#line 4975 "parser.tab.c" /* yacc.c:1646  */
+#line 5124 "parser.tab.c"
     break;
 
   case 393:
-#line 1163 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
-#line 4981 "parser.tab.c" /* yacc.c:1646  */
+#line 1164 "parser.y"
+                                                { (yyval.type) = type_new_nonencapsulated_union((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
+#line 5130 "parser.tab.c"
     break;
 
   case 394:
-#line 1166 "parser.y" /* yacc.c:1646  */
-    { (yyval.type) = type_new_encapsulated_union((yyvsp[-8].str), (yyvsp[-5].var), (yyvsp[-3].var), (yyvsp[-1].var_list)); }
-#line 4987 "parser.tab.c" /* yacc.c:1646  */
+#line 1167 "parser.y"
+                                                { (yyval.type) = type_new_encapsulated_union((yyvsp[-8].str), (yyvsp[-5].var), (yyvsp[-3].var), (yyvsp[-1].var_list)); }
+#line 5136 "parser.tab.c"
     break;
 
   case 395:
-#line 1170 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); }
-#line 4993 "parser.tab.c" /* yacc.c:1646  */
+#line 1171 "parser.y"
+                                                { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); }
+#line 5142 "parser.tab.c"
     break;
 
   case 396:
-#line 1171 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); }
-#line 4999 "parser.tab.c" /* yacc.c:1646  */
+#line 1172 "parser.y"
+                                                { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); }
+#line 5148 "parser.tab.c"
     break;
 
   case 397:
-#line 1172 "parser.y" /* yacc.c:1646  */
-    { (yyval.num) = (yyvsp[0].num); }
-#line 5005 "parser.tab.c" /* yacc.c:1646  */
+#line 1173 "parser.y"
+                                                { (yyval.num) = (yyvsp[0].num); }
+#line 5154 "parser.tab.c"
     break;
 
   case 402:
-#line 1185 "parser.y" /* yacc.c:1646  */
-    { type_t *type = find_type_or_error((yyvsp[-1].str), 0);
+#line 1188 "parser.y"
+                                                { type_t *type = find_type_or_error((yyvsp[-1].str), 0);
                                                   type->attrs = append_attr_list(type->attrs, (yyvsp[-2].attr_list));
                                                 }
-#line 5013 "parser.tab.c" /* yacc.c:1646  */
+#line 5162 "parser.tab.c"
     break;
 
   case 403:
-#line 1190 "parser.y" /* yacc.c:1646  */
-    {  type_t *iface = find_type_or_error2((yyvsp[-3].str), 0);
+#line 1195 "parser.y"
+                                                {  type_t *iface = find_type_or_error2((yyvsp[-3].str), 0);
                                                    if (type_get_type(iface) != TYPE_INTERFACE)
                                                        error_loc("%s is not an interface\n", iface->name);
                                                    iface->attrs = append_attr_list(iface->attrs, (yyvsp[-5].attr_list));
                                                 }
-#line 5023 "parser.tab.c" /* yacc.c:1646  */
+#line 5172 "parser.tab.c"
     break;
 
   case 404:
-#line 1197 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = NULL; }
-#line 5029 "parser.tab.c" /* yacc.c:1646  */
+#line 1203 "parser.y"
+                                                { (yyval.attr_list) = NULL; }
+#line 5178 "parser.tab.c"
     break;
 
   case 405:
-#line 1198 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = (yyvsp[-1].attr_list); }
-#line 5035 "parser.tab.c" /* yacc.c:1646  */
+#line 1204 "parser.y"
+                                                { (yyval.attr_list) = (yyvsp[-1].attr_list); }
+#line 5184 "parser.tab.c"
     break;
 
   case 406:
-#line 1201 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = append_attr(NULL, (yyvsp[0].attr)); }
-#line 5041 "parser.tab.c" /* yacc.c:1646  */
+#line 1208 "parser.y"
+                                                { (yyval.attr_list) = append_attr(NULL, (yyvsp[0].attr)); }
+#line 5190 "parser.tab.c"
     break;
 
   case 407:
-#line 1202 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr_list) = append_attr((yyvsp[-2].attr_list), (yyvsp[0].attr)); }
-#line 5047 "parser.tab.c" /* yacc.c:1646  */
+#line 1209 "parser.y"
+                                                { (yyval.attr_list) = append_attr((yyvsp[-2].attr_list), (yyvsp[0].attr)); }
+#line 5196 "parser.tab.c"
     break;
 
   case 408:
-#line 1205 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_ENCODE); }
-#line 5053 "parser.tab.c" /* yacc.c:1646  */
+#line 1214 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_ALLOCATE, (yyvsp[-1].num)); }
+#line 5202 "parser.tab.c"
     break;
 
   case 409:
-#line 1206 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_DECODE); }
-#line 5059 "parser.tab.c" /* yacc.c:1646  */
+#line 1215 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_ENCODE); }
+#line 5208 "parser.tab.c"
     break;
 
   case 410:
-#line 1207 "parser.y" /* yacc.c:1646  */
-    { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
-#line 5065 "parser.tab.c" /* yacc.c:1646  */
+#line 1216 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DECODE); }
+#line 5214 "parser.tab.c"
+    break;
+
+  case 411:
+#line 1217 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
+#line 5220 "parser.tab.c"
+    break;
+
+  case 412:
+#line 1221 "parser.y"
+                                                { (yyval.num) = (yyvsp[0].num); }
+#line 5226 "parser.tab.c"
+    break;
+
+  case 413:
+#line 1223 "parser.y"
+                                                { (yyval.num) = (yyvsp[-2].num) | (yyvsp[0].num); }
+#line 5232 "parser.tab.c"
+    break;
+
+  case 414:
+#line 1227 "parser.y"
+                                                { (yyval.num) = FC_DONT_FREE; }
+#line 5238 "parser.tab.c"
     break;
 
+  case 415:
+#line 1228 "parser.y"
+                                                { (yyval.num) = 0; }
+#line 5244 "parser.tab.c"
+    break;
+
+  case 416:
+#line 1229 "parser.y"
+                                                { (yyval.num) = FC_ALLOCATE_ALL_NODES; }
+#line 5250 "parser.tab.c"
+    break;
+
+  case 417:
+#line 1230 "parser.y"
+                                                { (yyval.num) = 0; }
+#line 5256 "parser.tab.c"
+    break;
+
+
+#line 5260 "parser.tab.c"
 
-#line 5069 "parser.tab.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -5090,14 +5282,13 @@ yyreduce:
   /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
@@ -5129,7 +5320,7 @@ yyerrlab:
           {
             if (yymsg != yymsgbuf)
               YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
             if (!yymsg)
               {
                 yymsg = yymsgbuf;
@@ -5180,12 +5371,10 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
   /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
@@ -5247,6 +5436,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -5254,6 +5444,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
+
 #if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
@@ -5264,6 +5455,10 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -5280,7 +5475,7 @@ yyreturn:
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp);
+                  yystos[+*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
@@ -5293,7 +5488,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1209 "parser.y" /* yacc.c:1906  */
+#line 1232 "parser.y"
 
 
 static void decl_builtin_basic(const char *name, enum type_basic_type type)
@@ -6281,6 +6476,7 @@ struct allowed_attr allowed_attr[] =
 {
     /* attr                        { D ACF I Fn ARG T En St Un Fi  L  DI M  C  <display name> } */
     /* ATTR_AGGREGATABLE */        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, "aggregatable" },
+    /* ATTR_ALLOCATE */            { 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "allocate" },
     /* ATTR_ANNOTATION */          { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, "annotation" },
     /* ATTR_APPOBJECT */           { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, "appobject" },
     /* ATTR_ASYNC */               { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "async" },
index 39cd683..eebf1e5 100644 (file)
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.  */
+/* A Bison parser, made by GNU Bison 3.5.4.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_PARSER_E_REACTOSSYNC_MSVC_HOST_TOOLS_SDK_TOOLS_WIDL_PARSER_TAB_H_INCLUDED
-# define YY_PARSER_E_REACTOSSYNC_MSVC_HOST_TOOLS_SDK_TOOLS_WIDL_PARSER_TAB_H_INCLUDED
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
+#ifndef YY_PARSER_PARSER_TAB_H_INCLUDED
+# define YY_PARSER_PARSER_TAB_H_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -68,178 +72,180 @@ extern int parser_debug;
     LOGICALAND = 278,
     ELLIPSIS = 279,
     tAGGREGATABLE = 280,
-    tALLOCATE = 281,
-    tANNOTATION = 282,
-    tAPPOBJECT = 283,
-    tASYNC = 284,
-    tASYNCUUID = 285,
-    tAUTOHANDLE = 286,
-    tBINDABLE = 287,
-    tBOOLEAN = 288,
-    tBROADCAST = 289,
-    tBYTE = 290,
-    tBYTECOUNT = 291,
-    tCALLAS = 292,
-    tCALLBACK = 293,
-    tCASE = 294,
-    tCDECL = 295,
-    tCHAR = 296,
-    tCOCLASS = 297,
-    tCODE = 298,
-    tCOMMSTATUS = 299,
-    tCONST = 300,
-    tCONTEXTHANDLE = 301,
-    tCONTEXTHANDLENOSERIALIZE = 302,
-    tCONTEXTHANDLESERIALIZE = 303,
-    tCONTROL = 304,
-    tCPPQUOTE = 305,
-    tDECODE = 306,
-    tDEFAULT = 307,
-    tDEFAULTBIND = 308,
-    tDEFAULTCOLLELEM = 309,
-    tDEFAULTVALUE = 310,
-    tDEFAULTVTABLE = 311,
-    tDISABLECONSISTENCYCHECK = 312,
-    tDISPLAYBIND = 313,
-    tDISPINTERFACE = 314,
-    tDLLNAME = 315,
-    tDOUBLE = 316,
-    tDUAL = 317,
-    tENABLEALLOCATE = 318,
-    tENCODE = 319,
-    tENDPOINT = 320,
-    tENTRY = 321,
-    tENUM = 322,
-    tERRORSTATUST = 323,
-    tEXPLICITHANDLE = 324,
-    tEXTERN = 325,
-    tFALSE = 326,
-    tFASTCALL = 327,
-    tFAULTSTATUS = 328,
-    tFLOAT = 329,
-    tFORCEALLOCATE = 330,
-    tHANDLE = 331,
-    tHANDLET = 332,
-    tHELPCONTEXT = 333,
-    tHELPFILE = 334,
-    tHELPSTRING = 335,
-    tHELPSTRINGCONTEXT = 336,
-    tHELPSTRINGDLL = 337,
-    tHIDDEN = 338,
-    tHYPER = 339,
-    tID = 340,
-    tIDEMPOTENT = 341,
-    tIGNORE = 342,
-    tIIDIS = 343,
-    tIMMEDIATEBIND = 344,
-    tIMPLICITHANDLE = 345,
-    tIMPORT = 346,
-    tIMPORTLIB = 347,
-    tIN = 348,
-    tIN_LINE = 349,
-    tINLINE = 350,
-    tINPUTSYNC = 351,
-    tINT = 352,
-    tINT32 = 353,
-    tINT3264 = 354,
-    tINT64 = 355,
-    tINTERFACE = 356,
-    tLCID = 357,
-    tLENGTHIS = 358,
-    tLIBRARY = 359,
-    tLICENSED = 360,
-    tLOCAL = 361,
-    tLONG = 362,
-    tMAYBE = 363,
-    tMESSAGE = 364,
-    tMETHODS = 365,
-    tMODULE = 366,
-    tNAMESPACE = 367,
-    tNOCODE = 368,
-    tNONBROWSABLE = 369,
-    tNONCREATABLE = 370,
-    tNONEXTENSIBLE = 371,
-    tNOTIFY = 372,
-    tNOTIFYFLAG = 373,
-    tNULL = 374,
-    tOBJECT = 375,
-    tODL = 376,
-    tOLEAUTOMATION = 377,
-    tOPTIMIZE = 378,
-    tOPTIONAL = 379,
-    tOUT = 380,
-    tPARTIALIGNORE = 381,
-    tPASCAL = 382,
-    tPOINTERDEFAULT = 383,
-    tPRAGMA_WARNING = 384,
-    tPROGID = 385,
-    tPROPERTIES = 386,
-    tPROPGET = 387,
-    tPROPPUT = 388,
-    tPROPPUTREF = 389,
-    tPROXY = 390,
-    tPTR = 391,
-    tPUBLIC = 392,
-    tRANGE = 393,
-    tREADONLY = 394,
-    tREF = 395,
-    tREGISTER = 396,
-    tREPRESENTAS = 397,
-    tREQUESTEDIT = 398,
-    tRESTRICTED = 399,
-    tRETVAL = 400,
-    tSAFEARRAY = 401,
-    tSHORT = 402,
-    tSIGNED = 403,
-    tSIZEIS = 404,
-    tSIZEOF = 405,
-    tSMALL = 406,
-    tSOURCE = 407,
-    tSTATIC = 408,
-    tSTDCALL = 409,
-    tSTRICTCONTEXTHANDLE = 410,
-    tSTRING = 411,
-    tSTRUCT = 412,
-    tSWITCH = 413,
-    tSWITCHIS = 414,
-    tSWITCHTYPE = 415,
-    tTHREADING = 416,
-    tTRANSMITAS = 417,
-    tTRUE = 418,
-    tTYPEDEF = 419,
-    tUIDEFAULT = 420,
-    tUNION = 421,
-    tUNIQUE = 422,
-    tUNSIGNED = 423,
-    tUSESGETLASTERROR = 424,
-    tUSERMARSHAL = 425,
-    tUUID = 426,
-    tV1ENUM = 427,
-    tVARARG = 428,
-    tVERSION = 429,
-    tVIPROGID = 430,
-    tVOID = 431,
-    tWCHAR = 432,
-    tWIREMARSHAL = 433,
-    tAPARTMENT = 434,
-    tNEUTRAL = 435,
-    tSINGLE = 436,
-    tFREE = 437,
-    tBOTH = 438,
-    CAST = 439,
-    PPTR = 440,
-    POS = 441,
-    NEG = 442,
-    ADDRESSOF = 443
+    tALLNODES = 281,
+    tALLOCATE = 282,
+    tANNOTATION = 283,
+    tAPPOBJECT = 284,
+    tASYNC = 285,
+    tASYNCUUID = 286,
+    tAUTOHANDLE = 287,
+    tBINDABLE = 288,
+    tBOOLEAN = 289,
+    tBROADCAST = 290,
+    tBYTE = 291,
+    tBYTECOUNT = 292,
+    tCALLAS = 293,
+    tCALLBACK = 294,
+    tCASE = 295,
+    tCDECL = 296,
+    tCHAR = 297,
+    tCOCLASS = 298,
+    tCODE = 299,
+    tCOMMSTATUS = 300,
+    tCONST = 301,
+    tCONTEXTHANDLE = 302,
+    tCONTEXTHANDLENOSERIALIZE = 303,
+    tCONTEXTHANDLESERIALIZE = 304,
+    tCONTROL = 305,
+    tCPPQUOTE = 306,
+    tDECODE = 307,
+    tDEFAULT = 308,
+    tDEFAULTBIND = 309,
+    tDEFAULTCOLLELEM = 310,
+    tDEFAULTVALUE = 311,
+    tDEFAULTVTABLE = 312,
+    tDISABLECONSISTENCYCHECK = 313,
+    tDISPLAYBIND = 314,
+    tDISPINTERFACE = 315,
+    tDLLNAME = 316,
+    tDONTFREE = 317,
+    tDOUBLE = 318,
+    tDUAL = 319,
+    tENABLEALLOCATE = 320,
+    tENCODE = 321,
+    tENDPOINT = 322,
+    tENTRY = 323,
+    tENUM = 324,
+    tERRORSTATUST = 325,
+    tEXPLICITHANDLE = 326,
+    tEXTERN = 327,
+    tFALSE = 328,
+    tFASTCALL = 329,
+    tFAULTSTATUS = 330,
+    tFLOAT = 331,
+    tFORCEALLOCATE = 332,
+    tHANDLE = 333,
+    tHANDLET = 334,
+    tHELPCONTEXT = 335,
+    tHELPFILE = 336,
+    tHELPSTRING = 337,
+    tHELPSTRINGCONTEXT = 338,
+    tHELPSTRINGDLL = 339,
+    tHIDDEN = 340,
+    tHYPER = 341,
+    tID = 342,
+    tIDEMPOTENT = 343,
+    tIGNORE = 344,
+    tIIDIS = 345,
+    tIMMEDIATEBIND = 346,
+    tIMPLICITHANDLE = 347,
+    tIMPORT = 348,
+    tIMPORTLIB = 349,
+    tIN = 350,
+    tIN_LINE = 351,
+    tINLINE = 352,
+    tINPUTSYNC = 353,
+    tINT = 354,
+    tINT32 = 355,
+    tINT3264 = 356,
+    tINT64 = 357,
+    tINTERFACE = 358,
+    tLCID = 359,
+    tLENGTHIS = 360,
+    tLIBRARY = 361,
+    tLICENSED = 362,
+    tLOCAL = 363,
+    tLONG = 364,
+    tMAYBE = 365,
+    tMESSAGE = 366,
+    tMETHODS = 367,
+    tMODULE = 368,
+    tNAMESPACE = 369,
+    tNOCODE = 370,
+    tNONBROWSABLE = 371,
+    tNONCREATABLE = 372,
+    tNONEXTENSIBLE = 373,
+    tNOTIFY = 374,
+    tNOTIFYFLAG = 375,
+    tNULL = 376,
+    tOBJECT = 377,
+    tODL = 378,
+    tOLEAUTOMATION = 379,
+    tOPTIMIZE = 380,
+    tOPTIONAL = 381,
+    tOUT = 382,
+    tPARTIALIGNORE = 383,
+    tPASCAL = 384,
+    tPOINTERDEFAULT = 385,
+    tPRAGMA_WARNING = 386,
+    tPROGID = 387,
+    tPROPERTIES = 388,
+    tPROPGET = 389,
+    tPROPPUT = 390,
+    tPROPPUTREF = 391,
+    tPROXY = 392,
+    tPTR = 393,
+    tPUBLIC = 394,
+    tRANGE = 395,
+    tREADONLY = 396,
+    tREF = 397,
+    tREGISTER = 398,
+    tREPRESENTAS = 399,
+    tREQUESTEDIT = 400,
+    tRESTRICTED = 401,
+    tRETVAL = 402,
+    tSAFEARRAY = 403,
+    tSHORT = 404,
+    tSIGNED = 405,
+    tSINGLENODE = 406,
+    tSIZEIS = 407,
+    tSIZEOF = 408,
+    tSMALL = 409,
+    tSOURCE = 410,
+    tSTATIC = 411,
+    tSTDCALL = 412,
+    tSTRICTCONTEXTHANDLE = 413,
+    tSTRING = 414,
+    tSTRUCT = 415,
+    tSWITCH = 416,
+    tSWITCHIS = 417,
+    tSWITCHTYPE = 418,
+    tTHREADING = 419,
+    tTRANSMITAS = 420,
+    tTRUE = 421,
+    tTYPEDEF = 422,
+    tUIDEFAULT = 423,
+    tUNION = 424,
+    tUNIQUE = 425,
+    tUNSIGNED = 426,
+    tUSESGETLASTERROR = 427,
+    tUSERMARSHAL = 428,
+    tUUID = 429,
+    tV1ENUM = 430,
+    tVARARG = 431,
+    tVERSION = 432,
+    tVIPROGID = 433,
+    tVOID = 434,
+    tWCHAR = 435,
+    tWIREMARSHAL = 436,
+    tAPARTMENT = 437,
+    tNEUTRAL = 438,
+    tSINGLE = 439,
+    tFREE = 440,
+    tBOTH = 441,
+    CAST = 442,
+    PPTR = 443,
+    POS = 444,
+    NEG = 445,
+    ADDRESSOF = 446
   };
 #endif
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 144 "parser.y" /* yacc.c:1909  */
+#line 144 "parser.y"
 
        attr_t *attr;
        attr_list_t *attr_list;
@@ -267,8 +273,10 @@ union YYSTYPE
        struct _decl_spec_t *declspec;
        enum storage_class stgclass;
 
-#line 271 "parser.tab.h" /* yacc.c:1909  */
+#line 277 "parser.tab.h"
+
 };
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -278,4 +286,4 @@ extern YYSTYPE parser_lval;
 
 int parser_parse (void);
 
-#endif /* !YY_PARSER_E_REACTOSSYNC_MSVC_HOST_TOOLS_SDK_TOOLS_WIDL_PARSER_TAB_H_INCLUDED  */
+#endif /* !YY_PARSER_PARSER_TAB_H_INCLUDED  */
index 7b06aa6..622e742 100644 (file)
@@ -182,7 +182,7 @@ static typelib_t *current_typelib;
 %token GREATEREQUAL LESSEQUAL
 %token LOGICALOR LOGICALAND
 %token ELLIPSIS
-%token tAGGREGATABLE tALLOCATE tANNOTATION tAPPOBJECT tASYNC tASYNCUUID
+%token tAGGREGATABLE tALLNODES tALLOCATE tANNOTATION tAPPOBJECT tASYNC tASYNCUUID
 %token tAUTOHANDLE tBINDABLE tBOOLEAN tBROADCAST tBYTE tBYTECOUNT
 %token tCALLAS tCALLBACK tCASE tCDECL tCHAR tCOCLASS tCODE tCOMMSTATUS
 %token tCONST tCONTEXTHANDLE tCONTEXTHANDLENOSERIALIZE
@@ -193,7 +193,7 @@ static typelib_t *current_typelib;
 %token tDEFAULTVTABLE
 %token tDISABLECONSISTENCYCHECK tDISPLAYBIND
 %token tDISPINTERFACE
-%token tDLLNAME tDOUBLE tDUAL
+%token tDLLNAME tDONTFREE tDOUBLE tDUAL
 %token tENABLEALLOCATE tENCODE tENDPOINT
 %token tENTRY tENUM tERRORSTATUST
 %token tEXPLICITHANDLE tEXTERN
@@ -245,7 +245,7 @@ static typelib_t *current_typelib;
 %token tRETVAL
 %token tSAFEARRAY
 %token tSHORT
-%token tSIGNED
+%token tSIGNED tSINGLENODE
 %token tSIZEIS tSIZEOF
 %token tSMALL
 %token tSOURCE
@@ -304,6 +304,7 @@ static typelib_t *current_typelib;
 %type <statement> statement typedef pragma_warning
 %type <stmt_list> gbl_statements imp_statements int_statements
 %type <warning_list> warnings
+%type <num> allocate_option_list allocate_option
 
 %left ','
 %right '?' ':'
@@ -1175,16 +1176,20 @@ version:
 acf_statements
         : /* empty */
         | acf_interface acf_statements
+       ;
 
 acf_int_statements
         : /* empty */
         | acf_int_statement acf_int_statements
+       ;
 
 acf_int_statement
         : tTYPEDEF acf_attributes aKNOWNTYPE ';'
                                                 { type_t *type = find_type_or_error($3, 0);
                                                   type->attrs = append_attr_list(type->attrs, $2);
                                                 }
+       ;
+
 acf_interface
         : acf_attributes tINTERFACE aKNOWNTYPE '{' acf_int_statements '}'
                                                 {  type_t *iface = find_type_or_error2($3, 0);
@@ -1192,20 +1197,38 @@ acf_interface
                                                        error_loc("%s is not an interface\n", iface->name);
                                                    iface->attrs = append_attr_list(iface->attrs, $1);
                                                 }
+       ;
 
 acf_attributes
         : /* empty */                           { $$ = NULL; };
         | '[' acf_attribute_list ']'            { $$ = $2; };
+       ;
 
 acf_attribute_list
         : acf_attribute                         { $$ = append_attr(NULL, $1); }
         | acf_attribute_list ',' acf_attribute  { $$ = append_attr($1, $3); }
+       ;
 
 acf_attribute
-        : tENCODE                               { $$ = make_attr(ATTR_ENCODE); }
+       : tALLOCATE '(' allocate_option_list ')'
+                                               { $$ = make_attrv(ATTR_ALLOCATE, $3); }
+        | tENCODE                               { $$ = make_attr(ATTR_ENCODE); }
         | tDECODE                               { $$ = make_attr(ATTR_DECODE); }
         | tEXPLICITHANDLE                       { $$ = make_attr(ATTR_EXPLICIT_HANDLE); }
+       ;
 
+allocate_option_list
+       : allocate_option                       { $$ = $1; }
+       | allocate_option_list ',' allocate_option
+                                               { $$ = $1 | $3; }
+       ;
+
+allocate_option
+       : tDONTFREE                             { $$ = FC_DONT_FREE; }
+       | tFREE                                 { $$ = 0; }
+       | tALLNODES                             { $$ = FC_ALLOCATE_ALL_NODES; }
+       | tSINGLENODE                           { $$ = 0; }
+       ;
 %%
 
 static void decl_builtin_basic(const char *name, enum type_basic_type type)
@@ -2193,6 +2216,7 @@ struct allowed_attr allowed_attr[] =
 {
     /* attr                        { D ACF I Fn ARG T En St Un Fi  L  DI M  C  <display name> } */
     /* ATTR_AGGREGATABLE */        { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, "aggregatable" },
+    /* ATTR_ALLOCATE */            { 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, "allocate" },
     /* ATTR_ANNOTATION */          { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, "annotation" },
     /* ATTR_APPOBJECT */           { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, "appobject" },
     /* ATTR_ASYNC */               { 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "async" },
index 4ddd9df..0937358 100644 (file)
@@ -8,11 +8,17 @@
 
 #define yy_create_buffer parser__create_buffer
 #define yy_delete_buffer parser__delete_buffer
-#define yy_flex_debug parser__flex_debug
+#define yy_scan_buffer parser__scan_buffer
+#define yy_scan_string parser__scan_string
+#define yy_scan_bytes parser__scan_bytes
 #define yy_init_buffer parser__init_buffer
 #define yy_flush_buffer parser__flush_buffer
 #define yy_load_buffer_state parser__load_buffer_state
 #define yy_switch_to_buffer parser__switch_to_buffer
+#define yypush_buffer_state parser_push_buffer_state
+#define yypop_buffer_state parser_pop_buffer_state
+#define yyensure_buffer_stack parser_ensure_buffer_stack
+#define yy_flex_debug parser__flex_debug
 #define yyin parser_in
 #define yyleng parser_leng
 #define yylex parser_lex
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 37
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 4
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 
-/* First, we deal with  platform-specific or compiler-specific issues. */
+#ifdef yy_create_buffer
+#define parser__create_buffer_ALREADY_DEFINED
+#else
+#define yy_create_buffer parser__create_buffer
+#endif
 
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
+#ifdef yy_delete_buffer
+#define parser__delete_buffer_ALREADY_DEFINED
+#else
+#define yy_delete_buffer parser__delete_buffer
+#endif
 
-/* end standard C headers. */
+#ifdef yy_scan_buffer
+#define parser__scan_buffer_ALREADY_DEFINED
+#else
+#define yy_scan_buffer parser__scan_buffer
+#endif
 
-/* flex integer type definitions */
+#ifdef yy_scan_string
+#define parser__scan_string_ALREADY_DEFINED
+#else
+#define yy_scan_string parser__scan_string
+#endif
 
-#ifndef FLEXINT_H
-#define FLEXINT_H
+#ifdef yy_scan_bytes
+#define parser__scan_bytes_ALREADY_DEFINED
+#else
+#define yy_scan_bytes parser__scan_bytes
+#endif
 
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+#ifdef yy_init_buffer
+#define parser__init_buffer_ALREADY_DEFINED
+#else
+#define yy_init_buffer parser__init_buffer
+#endif
 
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#ifdef yy_flush_buffer
+#define parser__flush_buffer_ALREADY_DEFINED
+#else
+#define yy_flush_buffer parser__flush_buffer
+#endif
 
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
+#ifdef yy_load_buffer_state
+#define parser__load_buffer_state_ALREADY_DEFINED
+#else
+#define yy_load_buffer_state parser__load_buffer_state
 #endif
 
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
+#ifdef yy_switch_to_buffer
+#define parser__switch_to_buffer_ALREADY_DEFINED
 #else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
+#define yy_switch_to_buffer parser__switch_to_buffer
+#endif
 
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
+#ifdef yypush_buffer_state
+#define parser_push_buffer_state_ALREADY_DEFINED
+#else
+#define yypush_buffer_state parser_push_buffer_state
 #endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
+
+#ifdef yypop_buffer_state
+#define parser_pop_buffer_state_ALREADY_DEFINED
+#else
+#define yypop_buffer_state parser_pop_buffer_state
 #endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
+
+#ifdef yyensure_buffer_stack
+#define parser_ensure_buffer_stack_ALREADY_DEFINED
+#else
+#define yyensure_buffer_stack parser_ensure_buffer_stack
 #endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
+
+#ifdef yylex
+#define parser_lex_ALREADY_DEFINED
+#else
+#define yylex parser_lex
 #endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
+
+#ifdef yyrestart
+#define parser_restart_ALREADY_DEFINED
+#else
+#define yyrestart parser_restart
 #endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
+
+#ifdef yylex_init
+#define parser_lex_init_ALREADY_DEFINED
+#else
+#define yylex_init parser_lex_init
 #endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
+
+#ifdef yylex_init_extra
+#define parser_lex_init_extra_ALREADY_DEFINED
+#else
+#define yylex_init_extra parser_lex_init_extra
 #endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
+
+#ifdef yylex_destroy
+#define parser_lex_destroy_ALREADY_DEFINED
+#else
+#define yylex_destroy parser_lex_destroy
 #endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
+
+#ifdef yyget_debug
+#define parser_get_debug_ALREADY_DEFINED
+#else
+#define yyget_debug parser_get_debug
 #endif
 
-#endif /* ! C99 */
+#ifdef yyset_debug
+#define parser_set_debug_ALREADY_DEFINED
+#else
+#define yyset_debug parser_set_debug
+#endif
 
-#endif /* ! FLEXINT_H */
+#ifdef yyget_extra
+#define parser_get_extra_ALREADY_DEFINED
+#else
+#define yyget_extra parser_get_extra
+#endif
 
-#ifdef __cplusplus
+#ifdef yyset_extra
+#define parser_set_extra_ALREADY_DEFINED
+#else
+#define yyset_extra parser_set_extra
+#endif
 
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
+#ifdef yyget_in
+#define parser_get_in_ALREADY_DEFINED
+#else
+#define yyget_in parser_get_in
+#endif
 
-#else  /* ! __cplusplus */
+#ifdef yyset_in
+#define parser_set_in_ALREADY_DEFINED
+#else
+#define yyset_in parser_set_in
+#endif
 
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
+#ifdef yyget_out
+#define parser_get_out_ALREADY_DEFINED
+#else
+#define yyget_out parser_get_out
+#endif
 
-#define YY_USE_CONST
+#ifdef yyset_out
+#define parser_set_out_ALREADY_DEFINED
+#else
+#define yyset_out parser_set_out
+#endif
 
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
+#ifdef yyget_leng
+#define parser_get_leng_ALREADY_DEFINED
+#else
+#define yyget_leng parser_get_leng
+#endif
 
-#ifdef YY_USE_CONST
+#ifdef yyget_text
+#define parser_get_text_ALREADY_DEFINED
+#else
+#define yyget_text parser_get_text
+#endif
+
+#ifdef yyget_lineno
+#define parser_get_lineno_ALREADY_DEFINED
+#else
+#define yyget_lineno parser_get_lineno
+#endif
+
+#ifdef yyset_lineno
+#define parser_set_lineno_ALREADY_DEFINED
+#else
+#define yyset_lineno parser_set_lineno
+#endif
+
+#ifdef yywrap
+#define parser_wrap_ALREADY_DEFINED
+#else
+#define yywrap parser_wrap
+#endif
+
+#ifdef yyalloc
+#define parser_alloc_ALREADY_DEFINED
+#else
+#define yyalloc parser_alloc
+#endif
+
+#ifdef yyrealloc
+#define parser_realloc_ALREADY_DEFINED
+#else
+#define yyrealloc parser_realloc
+#endif
+
+#ifdef yyfree
+#define parser_free_ALREADY_DEFINED
+#else
+#define yyfree parser_free
+#endif
+
+#ifdef yytext
+#define parser_text_ALREADY_DEFINED
+#else
+#define yytext parser_text
+#endif
+
+#ifdef yyleng
+#define parser_leng_ALREADY_DEFINED
+#else
+#define yyleng parser_leng
+#endif
+
+#ifdef yyin
+#define parser_in_ALREADY_DEFINED
+#else
+#define yyin parser_in
+#endif
+
+#ifdef yyout
+#define parser_out_ALREADY_DEFINED
+#else
+#define yyout parser_out
+#endif
+
+#ifdef yy_flex_debug
+#define parser__flex_debug_ALREADY_DEFINED
+#else
+#define yy_flex_debug parser__flex_debug
+#endif
+
+#ifdef yylineno
+#define parser_lineno_ALREADY_DEFINED
+#else
+#define yylineno parser_lineno
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* begin standard C++ headers. */
+
+/* flex integer type definitions */
+
+#ifndef YYFLEX_INTTYPES_DEFINED
+#define YYFLEX_INTTYPES_DEFINED
+
+/* Prefer C99 integer types if available. */
+# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+/* Include <inttypes.h> and not <stdint.h> because Solaris 2.6 has the former
+ * and not the latter.
+ */
+#include <inttypes.h>
+#  define YYFLEX_USE_STDINT
+# else
+#  if defined(_MSC_VER) && _MSC_VER >= 1600
+/* Visual C++ 2010 does not define __STDC_VERSION__ and has <stdint.h> but not
+ * <inttypes.h>.
+ */
+#include <stdint.h>
+#   define YYFLEX_USE_STDINT
+#  endif
+# endif
+# ifdef YYFLEX_USE_STDINT
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+# else
+typedef unsigned char flex_uint8_t;
+typedef short int flex_int16_t;
+typedef unsigned short int flex_uint16_t;
+#  ifdef __STDC__
+typedef signed char flex_int8_t;
+/* ISO C only requires at least 16 bits for int. */
+#include <limits.h>
+#   if UINT_MAX >= 4294967295
+#    define YYFLEX_INT32_DEFINED
+typedef int flex_int32_t;
+typedef unsigned int flex_uint32_t;
+#   endif
+#  else
+typedef char flex_int8_t;
+#  endif
+#  ifndef YYFLEX_INT32_DEFINED
+typedef long int flex_int32_t;
+typedef unsigned long int flex_uint32_t;
+#  endif
+# endif
+#endif /* YYFLEX_INTTYPES_DEFINED */
+
+/* TODO: this is always defined, so inline it */
 #define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
 #else
-#define yyconst
+#define yynoreturn
 #endif
 
 /* Returned upon end-of-file. */
 #define YY_NULL 0
 
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
+/* Promotes a possibly negative, possibly signed char to an
+ *   integer in range [0..255] for use as an array index.
  */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
 
 /* Enter a start condition.  This macro really ought to take a parameter,
  * but we do it the disgusting crufty way forced on us by the ()-less
  * definition of BEGIN.
  */
 #define BEGIN (yy_start) = 1 + 2 *
-
 /* Translate the current start state into a value that can be later handed
  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  * compatibility.
  */
 #define YY_START (((yy_start) - 1) / 2)
 #define YYSTATE YY_START
-
 /* Action number for EOF rule of a given start state. */
 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
 /* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE parser_restart(parser_in  )
-
+#define YY_NEW_FILE yyrestart( yyin  )
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
 #define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
 #endif
 
 /* The state buf must be large enough to hold one state per character in the main buffer.
@@ -178,30 +398,30 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
 typedef size_t yy_size_t;
 #endif
 
-extern yy_size_t parser_leng;
+extern int yyleng;
 
-extern FILE *parser_in, *parser_out;
+extern FILE *yyin, *yyout;
 
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
-
+    
     #define YY_LESS_LINENO(n)
+    #define YY_LINENO_REWIND_TO(ptr)
     
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
        do \
                { \
-               /* Undo effects of setting up parser_text. */ \
+               /* Undo effects of setting up yytext. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
                *yy_cp = (yy_hold_char); \
                YY_RESTORE_YY_MORE_OFFSET \
                (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-               YY_DO_BEFORE_ACTION; /* set up parser_text again */ \
+               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
                } \
        while ( 0 )
-
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
@@ -216,12 +436,12 @@ struct yy_buffer_state
        /* Size of input buffer in bytes, not including room for EOB
         * characters.
         */
-       yy_size_t yy_buf_size;
+       int yy_buf_size;
 
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       yy_size_t yy_n_chars;
+       int yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -244,7 +464,7 @@ struct yy_buffer_state
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-    
+
        /* Whether to try to fill the input buffer when we reach the
         * end of it.
         */
@@ -261,8 +481,8 @@ struct yy_buffer_state
         * possible backing-up.
         *
         * When we actually see the EOF, we change the status to "new"
-        * (via parser_restart()), so that the user can continue scanning by
-        * just pointing parser_in at a new input file.
+        * (via yyrestart()), so that the user can continue scanning by
+        * just pointing yyin at a new input file.
         */
 #define YY_BUFFER_EOF_PENDING 2
 
@@ -272,7 +492,7 @@ struct yy_buffer_state
 /* Stack of input buffers. */
 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 
 /* We provide macros for accessing buffer states in case in the
  * future we want to put the buffer states in a more general
@@ -283,103 +503,98 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                           : NULL)
-
 /* Same as previous macro, but useful when we know that the buffer stack is not
  * NULL or when we need an lvalue. For internal use only.
  */
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
 
-/* yy_hold_char holds the character lost when parser_text is formed. */
+/* yy_hold_char holds the character lost when yytext is formed. */
 static char yy_hold_char;
-static yy_size_t yy_n_chars;           /* number of characters read into yy_ch_buf */
-yy_size_t parser_leng;
+static int yy_n_chars;         /* number of characters read into yy_ch_buf */
+int yyleng;
 
 /* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
+static char *yy_c_buf_p = NULL;
 static int yy_init = 0;                /* whether we need to initialize */
 static int yy_start = 0;       /* start state number */
 
-/* Flag which is used to allow parser_wrap()'s to do buffer switches
- * instead of setting up a fresh parser_in.  A bit of a hack ...
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
  */
 static int yy_did_buffer_switch_on_eof;
 
-void parser_restart (FILE *input_file  );
-void parser__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE parser__create_buffer (FILE *file,int size  );
-void parser__delete_buffer (YY_BUFFER_STATE b  );
-void parser__flush_buffer (YY_BUFFER_STATE b  );
-void parser_push_buffer_state (YY_BUFFER_STATE new_buffer  );
-void parser_pop_buffer_state (void );
-
-static void parser_ensure_buffer_stack (void );
-static void parser__load_buffer_state (void );
-static void parser__init_buffer (YY_BUFFER_STATE b,FILE *file  );
+void yyrestart ( FILE *input_file  );
+void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
+void yy_delete_buffer ( YY_BUFFER_STATE b  );
+void yy_flush_buffer ( YY_BUFFER_STATE b  );
+void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
+void yypop_buffer_state ( void );
 
-#define YY_FLUSH_BUFFER parser__flush_buffer(YY_CURRENT_BUFFER )
+static void yyensure_buffer_stack ( void );
+static void yy_load_buffer_state ( void );
+static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
+#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
 
-YY_BUFFER_STATE parser__scan_buffer (char *base,yy_size_t size  );
-YY_BUFFER_STATE parser__scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE parser__scan_bytes (yyconst char *bytes,yy_size_t len  );
+YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
+YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
+YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
 
-void *parser_alloc (yy_size_t  );
-void *parser_realloc (void *,yy_size_t  );
-void parser_free (void *  );
-
-#define yy_new_buffer parser__create_buffer
+void *yyalloc ( yy_size_t  );
+void *yyrealloc ( void *, yy_size_t  );
+void yyfree ( void *  );
 
+#define yy_new_buffer yy_create_buffer
 #define yy_set_interactive(is_interactive) \
        { \
        if ( ! YY_CURRENT_BUFFER ){ \
-        parser_ensure_buffer_stack (); \
+        yyensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            parser__create_buffer(parser_in,YY_BUF_SIZE ); \
+            yy_create_buffer( yyin, YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
        }
-
 #define yy_set_bol(at_bol) \
        { \
        if ( ! YY_CURRENT_BUFFER ){\
-        parser_ensure_buffer_stack (); \
+        yyensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            parser__create_buffer(parser_in,YY_BUF_SIZE ); \
+            yy_create_buffer( yyin, YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
        }
-
 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
 /* Begin user sect3 */
+typedef flex_uint8_t YY_CHAR;
 
-typedef unsigned char YY_CHAR;
-
-FILE *parser_in = (FILE *) 0, *parser_out = (FILE *) 0;
+FILE *yyin = NULL, *yyout = NULL;
 
 typedef int yy_state_type;
 
-extern int parser_lineno;
-
-int parser_lineno = 1;
+extern int yylineno;
+int yylineno = 1;
 
-extern char *parser_text;
-#define yytext_ptr parser_text
+extern char *yytext;
+#ifdef yytext_ptr
+#undef yytext_ptr
+#endif
+#define yytext_ptr yytext
 
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[]  );
+static yy_state_type yy_get_previous_state ( void );
+static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
+static int yy_get_next_buffer ( void );
+static void yynoreturn yy_fatal_error ( const char* msg  );
 
 /* Done after the current pattern has been matched and before the
- * corresponding action - sets up parser_text.
+ * corresponding action - sets up yytext.
  */
 #define YY_DO_BEFORE_ACTION \
        (yytext_ptr) = yy_bp; \
-       parser_leng = (size_t) (yy_cp - yy_bp); \
+       yyleng = (int) (yy_cp - yy_bp); \
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
-
 #define YY_NUM_RULES 41
 #define YY_END_OF_BUFFER 42
 /* This struct is not used in this scanner,
@@ -389,7 +604,7 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[210] =
+static const flex_int16_t yy_accept[210] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    3,    3,
         6,    6,    0,    0,   42,   40,   29,   28,   40,    8,
@@ -416,7 +631,7 @@ static yyconst flex_int16_t yy_accept[210] =
         0,    0,    0,    0,    0,    0,    0,   22,    0
     } ;
 
-static yyconst flex_int32_t yy_ec[256] =
+static const YY_CHAR yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    2,    2,    1,    1,    1,    1,    1,    1,    1,
@@ -448,7 +663,7 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[51] =
+static const YY_CHAR yy_meta[51] =
     {   0,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    3,    3,    1,    1,    1,    3,    3,    3,
@@ -457,7 +672,7 @@ static yyconst flex_int32_t yy_meta[51] =
         4,    4,    4,    4,    4,    4,    4,    4,    4,    1
     } ;
 
-static yyconst flex_int16_t yy_base[251] =
+static const flex_int16_t yy_base[251] =
     {   0,
         0,   49,   49,   53,   54,   57,   90,   59,  404,  397,
       138,  139,  140,  141,  399,  677,  677,  677,  381,  677,
@@ -488,7 +703,7 @@ static yyconst flex_int16_t yy_base[251] =
       178,  172,  171,  169,  144,   83,   82,   78,   77,   73
     } ;
 
-static yyconst flex_int16_t yy_def[251] =
+static const flex_int16_t yy_def[251] =
     {   0,
       209,    1,  210,  210,  210,  210,  209,    7,  211,  211,
       212,  212,  210,  210,  209,  209,  209,  209,  209,  209,
@@ -519,7 +734,7 @@ static yyconst flex_int16_t yy_def[251] =
       209,  209,  209,  209,  209,  209,  209,  209,  209,  209
     } ;
 
-static yyconst flex_int16_t yy_nxt[728] =
+static const flex_int16_t yy_nxt[728] =
     {   0,
        16,   17,   18,   19,   20,   16,   21,   22,   16,   16,
        23,   24,   25,   26,   27,   28,   29,   30,   30,   30,
@@ -603,7 +818,7 @@ static yyconst flex_int16_t yy_nxt[728] =
       209,  209,  209,  209,  209,  209,  209
     } ;
 
-static yyconst flex_int16_t yy_chk[728] =
+static const flex_int16_t yy_chk[728] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -690,8 +905,8 @@ static yyconst flex_int16_t yy_chk[728] =
 static yy_state_type yy_last_accepting_state;
 static char *yy_last_accepting_cpos;
 
-extern int parser__flex_debug;
-int parser__flex_debug = 0;
+extern int yy_flex_debug;
+int yy_flex_debug = 0;
 
 /* The intent behind this definition is that it'll catch
  * any uses of REJECT which flex missed.
@@ -700,7 +915,7 @@ int parser__flex_debug = 0;
 #define yymore() yymore_used_but_not_detected
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
-char *parser_text;
+char *yytext;
 #line 1 "parser.l"
 /* -*-C-*-
  * IDL Compiler
@@ -810,12 +1025,13 @@ UUID *parse_uuid(const char *u)
   return uuid;
 }
 
+#line 1029 "parser.yy.c"
 /*
  **************************************************************************
  * The flexer starts here
  **************************************************************************
  */
-#line 819 "parser.yy.c"
+#line 1035 "parser.yy.c"
 
 #define INITIAL 0
 #define QUOTE 1
@@ -832,41 +1048,41 @@ UUID *parse_uuid(const char *u)
  */
 #include <unistd.h>
 #endif
-    
+
 #ifndef YY_EXTRA_TYPE
 #define YY_EXTRA_TYPE void *
 #endif
 
-static int yy_init_globals (void );
+static int yy_init_globals ( void );
 
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int parser_lex_destroy (void );
+int yylex_destroy ( void );
 
-int parser_get_debug (void );
+int yyget_debug ( void );
 
-void parser_set_debug (int debug_flag  );
+void yyset_debug ( int debug_flag  );
 
-YY_EXTRA_TYPE parser_get_extra (void );
+YY_EXTRA_TYPE yyget_extra ( void );
 
-void parser_set_extra (YY_EXTRA_TYPE user_defined  );
+void yyset_extra ( YY_EXTRA_TYPE user_defined  );
 
-FILE *parser_get_in (void );
+FILE *yyget_in ( void );
 
-void parser_set_in  (FILE * in_str  );
+void yyset_in  ( FILE * _in_str  );
 
-FILE *parser_get_out (void );
+FILE *yyget_out ( void );
 
-void parser_set_out  (FILE * out_str  );
+void yyset_out  ( FILE * _out_str  );
 
-yy_size_t parser_get_leng (void );
+                       int yyget_leng ( void );
 
-char *parser_get_text (void );
+char *yyget_text ( void );
 
-int parser_get_lineno (void );
+int yyget_lineno ( void );
 
-void parser_set_lineno (int line_number  );
+void yyset_lineno ( int _line_number  );
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -874,26 +1090,29 @@ void parser_set_lineno (int line_number  );
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int parser_wrap (void );
+extern "C" int yywrap ( void );
 #else
-extern int parser_wrap (void );
+extern int yywrap ( void );
 #endif
 #endif
 
+#ifndef YY_NO_UNPUT
+    
+#endif
+
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
+static void yy_flex_strncpy ( char *, const char *, int );
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
+static int yy_flex_strlen ( const char * );
 #endif
 
 #ifndef YY_NO_INPUT
-
 #ifdef __cplusplus
-static int yyinput (void );
+static int yyinput ( void );
 #else
-static int input (void );
+static int input ( void );
 #endif
 
 #endif
@@ -902,13 +1121,18 @@ static int input (void );
         static int yy_start_stack_depth = 0;
         static int *yy_start_stack = NULL;
     
-    static void yy_push_state (int new_state );
+    static void yy_push_state ( int _new_state );
     
-    static void yy_pop_state (void );
+    static void yy_pop_state ( void );
     
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
 #define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
 #endif
 
 /* Copy whatever the last rule matched to the standard output. */
@@ -916,7 +1140,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( parser_text, parser_leng, 1, parser_out )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -927,20 +1151,20 @@ static int input (void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               size_t n; \
+               int n; \
                for ( n = 0; n < max_size && \
-                            (c = getc( parser_in )) != EOF && c != '\n'; ++n ) \
+                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
                if ( c == '\n' ) \
                        buf[n++] = (char) c; \
-               if ( c == EOF && ferror( parser_in ) ) \
+               if ( c == EOF && ferror( yyin ) ) \
                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
                result = n; \
                } \
        else \
                { \
                errno=0; \
-               while ( (result = fread(buf, 1, max_size, parser_in))==0 && ferror(parser_in)) \
+               while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
                        { \
                        if( errno != EINTR) \
                                { \
@@ -948,7 +1172,7 @@ static int input (void );
                                break; \
                                } \
                        errno=0; \
-                       clearerr(parser_in); \
+                       clearerr(yyin); \
                        } \
                }\
 \
@@ -981,12 +1205,12 @@ static int input (void );
 #ifndef YY_DECL
 #define YY_DECL_IS_OURS 1
 
-extern int parser_lex (void);
+extern int yylex (void);
 
-#define YY_DECL int parser_lex (void)
+#define YY_DECL int yylex (void)
 #endif /* !YY_DECL */
 
-/* Code executed at the beginning of each rule, after parser_text and parser_leng
+/* Code executed at the beginning of each rule, after yytext and yyleng
  * have been set up.
  */
 #ifndef YY_USER_ACTION
@@ -995,27 +1219,23 @@ extern int parser_lex (void);
 
 /* Code executed at the end of each rule. */
 #ifndef YY_BREAK
-#define YY_BREAK break;
+#define YY_BREAK /*LINTED*/break;
 #endif
 
 #define YY_RULE_SETUP \
-       if ( parser_leng > 0 ) \
+       if ( yyleng > 0 ) \
                YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
-                               (parser_text[parser_leng - 1] == '\n'); \
+                               (yytext[yyleng - 1] == '\n'); \
        YY_USER_ACTION
 
 /** The main scanner function which does all the work.
  */
 YY_DECL
 {
-       register yy_state_type yy_current_state;
-       register char *yy_cp, *yy_bp;
-       register int yy_act;
+       yy_state_type yy_current_state;
+       char *yy_cp, *yy_bp;
+       int yy_act;
     
-#line 132 "parser.l"
-
-#line 1018 "parser.yy.c"
-
        if ( !(yy_init) )
                {
                (yy_init) = 1;
@@ -1027,26 +1247,31 @@ YY_DECL
                if ( ! (yy_start) )
                        (yy_start) = 1; /* first start state */
 
-               if ( ! parser_in )
-                       parser_in = stdin;
+               if ( ! yyin )
+                       yyin = stdin;
 
-               if ( ! parser_out )
-                       parser_out = stdout;
+               if ( ! yyout )
+                       yyout = stdout;
 
                if ( ! YY_CURRENT_BUFFER ) {
-                       parser_ensure_buffer_stack ();
+                       yyensure_buffer_stack ();
                        YY_CURRENT_BUFFER_LVALUE =
-                               parser__create_buffer(parser_in,YY_BUF_SIZE );
+                               yy_create_buffer( yyin, YY_BUF_SIZE );
                }
 
-               parser__load_buffer_state( );
+               yy_load_buffer_state(  );
                }
 
-       while ( 1 )             /* loops until end-of-file is reached */
+       {
+#line 132 "parser.l"
+
+#line 1269 "parser.yy.c"
+
+       while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
                yy_cp = (yy_c_buf_p);
 
-               /* Support of parser_text. */
+               /* Support of yytext. */
                *yy_cp = (yy_hold_char);
 
                /* yy_bp points to the position in yy_ch_buf of the start of
@@ -1059,7 +1284,7 @@ YY_DECL
 yy_match:
                do
                        {
-                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+                       YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
                        if ( yy_accept[yy_current_state] )
                                {
                                (yy_last_accepting_state) = yy_current_state;
@@ -1069,9 +1294,9 @@ yy_match:
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
                                if ( yy_current_state >= 210 )
-                                       yy_c = yy_meta[(unsigned int) yy_c];
+                                       yy_c = yy_meta[yy_c];
                                }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
                while ( yy_current_state != 209 );
@@ -1111,7 +1336,7 @@ YY_RULE_SETUP
                             int lineno;
                             char *cptr, *fname;
                             yy_pop_state();
-                            lineno = (int)strtol(parser_text, &cptr, 10);
+                            lineno = (int)strtol(yytext, &cptr, 10);
                             if(!lineno)
                                 error_loc("Malformed '#...' line-directive; invalid linenumber\n");
                             fname = strchr(cptr, '"');
@@ -1139,7 +1364,7 @@ YY_RULE_SETUP
                                 if(!winrt_mode)
                                     error_loc("winrt IDL file imported in non-winrt mode\n");
                             }else {
-                                const char *ptr = parser_text+5;
+                                const char *ptr = yytext+5;
 
                                 winrt_mode = TRUE;
 
@@ -1154,7 +1379,7 @@ YY_RULE_SETUP
 case 6:
 YY_RULE_SETUP
 #line 170 "parser.l"
-parser_lval.str = xstrdup(parser_text); yy_pop_state(); return aPRAGMA;
+parser_lval.str = xstrdup(yytext); yy_pop_state(); return aPRAGMA;
        YY_BREAK
 case 7:
 YY_RULE_SETUP
@@ -1208,22 +1433,22 @@ case 14:
 case 15:
 YY_RULE_SETUP
 #line 191 "parser.l"
-addcchar(parser_text[1]);
+addcchar(yytext[1]);
        YY_BREAK
 case 16:
 YY_RULE_SETUP
 #line 192 "parser.l"
-addcchar(parser_text[1]);
+addcchar(yytext[1]);
        YY_BREAK
 case 17:
 YY_RULE_SETUP
 #line 193 "parser.l"
-addcchar('\\'); addcchar(parser_text[1]);
+addcchar('\\'); addcchar(yytext[1]);
        YY_BREAK
 case 18:
 YY_RULE_SETUP
 #line 194 "parser.l"
-addcchar(parser_text[0]);
+addcchar(yytext[0]);
        YY_BREAK
 case 19:
 YY_RULE_SETUP
@@ -1238,13 +1463,13 @@ yy_pop_state(); return ']';
 case 21:
 YY_RULE_SETUP
 #line 197 "parser.l"
-return attr_token(parser_text);
+return attr_token(yytext);
        YY_BREAK
 case 22:
 YY_RULE_SETUP
 #line 198 "parser.l"
 {
-                               parser_lval.uuid = parse_uuid(parser_text);
+                               parser_lval.uuid = parse_uuid(yytext);
                                return aUUID;
                        }
        YY_BREAK
@@ -1252,7 +1477,7 @@ case 23:
 YY_RULE_SETUP
 #line 202 "parser.l"
 {
-                               parser_lval.num = xstrtoul(parser_text, NULL, 0);
+                               parser_lval.num = xstrtoul(yytext, NULL, 0);
                                return aHEXNUM;
                        }
        YY_BREAK
@@ -1260,7 +1485,7 @@ case 24:
 YY_RULE_SETUP
 #line 206 "parser.l"
 {
-                               parser_lval.num = xstrtoul(parser_text, NULL, 0);
+                               parser_lval.num = xstrtoul(yytext, NULL, 0);
                                return aNUM;
                        }
        YY_BREAK
@@ -1268,14 +1493,14 @@ case 25:
 YY_RULE_SETUP
 #line 210 "parser.l"
 {
-                               parser_lval.dbl = strtod(parser_text, NULL);
+                               parser_lval.dbl = strtod(yytext, NULL);
                                return aDOUBLE;
                        }
        YY_BREAK
 case 26:
-*yy_cp = (yy_hold_char); /* undo effects of setting up parser_text */
+*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
 (yy_c_buf_p) = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up parser_text again */
+YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
 #line 214 "parser.l"
 return tSAFEARRAY;
@@ -1283,7 +1508,7 @@ return tSAFEARRAY;
 case 27:
 YY_RULE_SETUP
 #line 215 "parser.l"
-return kw_token(parser_text);
+return kw_token(yytext);
        YY_BREAK
 case 28:
 /* rule 28 can match eol */
@@ -1349,7 +1574,7 @@ return ELLIPSIS;
 case 40:
 YY_RULE_SETUP
 #line 228 "parser.l"
-return parser_text[0];
+return yytext[0];
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(QUOTE):
@@ -1375,7 +1600,7 @@ YY_RULE_SETUP
 #line 239 "parser.l"
 ECHO;
        YY_BREAK
-#line 1379 "parser.yy.c"
+#line 1604 "parser.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -1390,15 +1615,15 @@ ECHO;
                        {
                        /* We're scanning a new file or input source.  It's
                         * possible that this happened because the user
-                        * just pointed parser_in at a new source and called
-                        * parser_lex().  If so, then we have to assure
+                        * just pointed yyin at a new source and called
+                        * yylex().  If so, then we have to assure
                         * consistency between YY_CURRENT_BUFFER and our
                         * globals.  Here is the right place to do so, because
                         * this is the first action (other than possibly a
                         * back-up) that will match for the new input source.
                         */
                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = parser_in;
+                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
                        }
 
@@ -1452,11 +1677,11 @@ ECHO;
                                {
                                (yy_did_buffer_switch_on_eof) = 0;
 
-                               if ( parser_wrap( ) )
+                               if ( yywrap(  ) )
                                        {
                                        /* Note: because we've taken care in
                                         * yy_get_next_buffer() to have set up
-                                        * parser_text, we can now set up
+                                        * yytext, we can now set up
                                         * yy_c_buf_p so that if some total
                                         * hoser (like flex itself) wants to
                                         * call the scanner after we return the
@@ -1505,7 +1730,8 @@ ECHO;
                        "fatal flex scanner internal error--no action found" );
        } /* end of action switch */
                } /* end of scanning one token */
-} /* end of parser_lex */
+       } /* end of user's declarations */
+} /* end of yylex */
 
 /* yy_get_next_buffer - try to read in a new buffer
  *
@@ -1516,9 +1742,9 @@ ECHO;
  */
 static int yy_get_next_buffer (void)
 {
-       register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-       register char *source = (yytext_ptr);
-       register int number_to_move, i;
+       char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+       char *source = (yytext_ptr);
+       int number_to_move, i;
        int ret_val;
 
        if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -1547,7 +1773,7 @@ static int yy_get_next_buffer (void)
        /* Try to read more data. */
 
        /* First move last chars to start of buffer. */
-       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
 
        for ( i = 0; i < number_to_move; ++i )
                *(dest++) = *(source++);
@@ -1560,7 +1786,7 @@ static int yy_get_next_buffer (void)
 
        else
                {
-                       yy_size_t num_to_read =
+                       int num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
                while ( num_to_read <= 0 )
@@ -1574,7 +1800,7 @@ static int yy_get_next_buffer (void)
 
                        if ( b->yy_is_our_buffer )
                                {
-                               yy_size_t new_size = b->yy_buf_size * 2;
+                               int new_size = b->yy_buf_size * 2;
 
                                if ( new_size <= 0 )
                                        b->yy_buf_size += b->yy_buf_size / 8;
@@ -1583,11 +1809,12 @@ static int yy_get_next_buffer (void)
 
                                b->yy_ch_buf = (char *)
                                        /* Include room in for 2 EOB chars. */
-                                       parser_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+                                       yyrealloc( (void *) b->yy_ch_buf,
+                                                        (yy_size_t) (b->yy_buf_size + 2)  );
                                }
                        else
                                /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = 0;
+                               b->yy_ch_buf = NULL;
 
                        if ( ! b->yy_ch_buf )
                                YY_FATAL_ERROR(
@@ -1615,7 +1842,7 @@ static int yy_get_next_buffer (void)
                if ( number_to_move == YY_MORE_ADJ )
                        {
                        ret_val = EOB_ACT_END_OF_FILE;
-                       parser_restart(parser_in  );
+                       yyrestart( yyin  );
                        }
 
                else
@@ -1629,12 +1856,15 @@ static int yy_get_next_buffer (void)
        else
                ret_val = EOB_ACT_CONTINUE_SCAN;
 
-       if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+       if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
                /* Extend the array by 50%, plus the number we really need. */
-               yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) parser_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+               int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
+                       (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+               /* "- 2" to take care of EOB's */
+               YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
        }
 
        (yy_n_chars) += number_to_move;
@@ -1650,15 +1880,15 @@ static int yy_get_next_buffer (void)
 
     static yy_state_type yy_get_previous_state (void)
 {
-       register yy_state_type yy_current_state;
-       register char *yy_cp;
+       yy_state_type yy_current_state;
+       char *yy_cp;
     
        yy_current_state = (yy_start);
        yy_current_state += YY_AT_BOL();
 
        for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
                {
-               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
                if ( yy_accept[yy_current_state] )
                        {
                        (yy_last_accepting_state) = yy_current_state;
@@ -1668,9 +1898,9 @@ static int yy_get_next_buffer (void)
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
                        if ( yy_current_state >= 210 )
-                               yy_c = yy_meta[(unsigned int) yy_c];
+                               yy_c = yy_meta[yy_c];
                        }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                }
 
        return yy_current_state;
@@ -1683,10 +1913,10 @@ static int yy_get_next_buffer (void)
  */
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 {
-       register int yy_is_jam;
-       register char *yy_cp = (yy_c_buf_p);
+       int yy_is_jam;
+       char *yy_cp = (yy_c_buf_p);
 
-       register YY_CHAR yy_c = 1;
+       YY_CHAR yy_c = 1;
        if ( yy_accept[yy_current_state] )
                {
                (yy_last_accepting_state) = yy_current_state;
@@ -1696,14 +1926,18 @@ static int yy_get_next_buffer (void)
                {
                yy_current_state = (int) yy_def[yy_current_state];
                if ( yy_current_state >= 210 )
-                       yy_c = yy_meta[(unsigned int) yy_c];
+                       yy_c = yy_meta[yy_c];
                }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
        yy_is_jam = (yy_current_state == 209);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
 
+#ifndef YY_NO_UNPUT
+
+#endif
+
 #ifndef YY_NO_INPUT
 #ifdef __cplusplus
     static int yyinput (void)
@@ -1728,7 +1962,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
+                       int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -1745,14 +1979,14 @@ static int yy_get_next_buffer (void)
                                         */
 
                                        /* Reset buffer status. */
-                                       parser_restart(parser_in );
+                                       yyrestart( yyin );
 
                                        /*FALLTHROUGH*/
 
                                case EOB_ACT_END_OF_FILE:
                                        {
-                                       if ( parser_wrap( ) )
-                                               return EOF;
+                                       if ( yywrap(  ) )
+                                               return 0;
 
                                        if ( ! (yy_did_buffer_switch_on_eof) )
                                                YY_NEW_FILE;
@@ -1771,7 +2005,7 @@ static int yy_get_next_buffer (void)
                }
 
        c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
-       *(yy_c_buf_p) = '\0';   /* preserve parser_text */
+       *(yy_c_buf_p) = '\0';   /* preserve yytext */
        (yy_hold_char) = *++(yy_c_buf_p);
 
        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
@@ -1785,32 +2019,32 @@ static int yy_get_next_buffer (void)
  * 
  * @note This function does not reset the start condition to @c INITIAL .
  */
-    void parser_restart  (FILE * input_file )
+    void yyrestart  (FILE * input_file )
 {
     
        if ( ! YY_CURRENT_BUFFER ){
-        parser_ensure_buffer_stack ();
+        yyensure_buffer_stack ();
                YY_CURRENT_BUFFER_LVALUE =
-            parser__create_buffer(parser_in,YY_BUF_SIZE );
+            yy_create_buffer( yyin, YY_BUF_SIZE );
        }
 
-       parser__init_buffer(YY_CURRENT_BUFFER,input_file );
-       parser__load_buffer_state( );
+       yy_init_buffer( YY_CURRENT_BUFFER, input_file );
+       yy_load_buffer_state(  );
 }
 
 /** Switch to a different input buffer.
  * @param new_buffer The new input buffer.
  * 
  */
-    void parser__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
 {
     
        /* TODO. We should be able to replace this entire function body
         * with
-        *              parser_pop_buffer_state();
-        *              parser_push_buffer_state(new_buffer);
+        *              yypop_buffer_state();
+        *              yypush_buffer_state(new_buffer);
      */
-       parser_ensure_buffer_stack ();
+       yyensure_buffer_stack ();
        if ( YY_CURRENT_BUFFER == new_buffer )
                return;
 
@@ -1823,21 +2057,21 @@ static int yy_get_next_buffer (void)
                }
 
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
-       parser__load_buffer_state( );
+       yy_load_buffer_state(  );
 
        /* We don't actually know whether we did this switch during
-        * EOF (parser_wrap()) processing, but the only time this flag
-        * is looked at is after parser_wrap() is called, so it's safe
+        * EOF (yywrap()) processing, but the only time this flag
+        * is looked at is after yywrap() is called, so it's safe
         * to go ahead and always set it.
         */
        (yy_did_buffer_switch_on_eof) = 1;
 }
 
-static void parser__load_buffer_state  (void)
+static void yy_load_buffer_state  (void)
 {
        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
        (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-       parser_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+       yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
        (yy_hold_char) = *(yy_c_buf_p);
 }
 
@@ -1847,35 +2081,35 @@ static void parser__load_buffer_state  (void)
  * 
  * @return the allocated buffer state.
  */
-    YY_BUFFER_STATE parser__create_buffer  (FILE * file, int  size )
+    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
 {
        YY_BUFFER_STATE b;
     
-       b = (YY_BUFFER_STATE) parser_alloc(sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
        if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in parser__create_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
        b->yy_buf_size = size;
 
        /* yy_ch_buf has to be 2 characters longer than the size given because
         * we need to put in 2 end-of-buffer characters.
         */
-       b->yy_ch_buf = (char *) parser_alloc(b->yy_buf_size + 2  );
+       b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
        if ( ! b->yy_ch_buf )
-               YY_FATAL_ERROR( "out of dynamic memory in parser__create_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
        b->yy_is_our_buffer = 1;
 
-       parser__init_buffer(b,file );
+       yy_init_buffer( b, file );
 
        return b;
 }
 
 /** Destroy the buffer.
- * @param b a buffer created with parser__create_buffer()
+ * @param b a buffer created with yy_create_buffer()
  * 
  */
-    void parser__delete_buffer (YY_BUFFER_STATE  b )
+    void yy_delete_buffer (YY_BUFFER_STATE  b )
 {
     
        if ( ! b )
@@ -1885,27 +2119,27 @@ static void parser__load_buffer_state  (void)
                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
        if ( b->yy_is_our_buffer )
-               parser_free((void *) b->yy_ch_buf  );
+               yyfree( (void *) b->yy_ch_buf  );
 
-       parser_free((void *) b  );
+       yyfree( (void *) b  );
 }
 
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
- * such as during a parser_restart() or at EOF.
+ * such as during a yyrestart() or at EOF.
  */
-    static void parser__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
 
 {
        int oerrno = errno;
     
-       parser__flush_buffer(b );
+       yy_flush_buffer( b );
 
        b->yy_input_file = file;
        b->yy_fill_buffer = 1;
 
-    /* If b is the current buffer, then parser__init_buffer was _probably_
-     * called from parser_restart() or through yy_get_next_buffer.
+    /* If b is the current buffer, then yy_init_buffer was _probably_
+     * called from yyrestart() or through yy_get_next_buffer.
      * In that case, we don't want to reset the lineno or column.
      */
     if (b != YY_CURRENT_BUFFER){
@@ -1922,7 +2156,7 @@ static void parser__load_buffer_state  (void)
  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
  * 
  */
-    void parser__flush_buffer (YY_BUFFER_STATE  b )
+    void yy_flush_buffer (YY_BUFFER_STATE  b )
 {
        if ( ! b )
                return;
@@ -1942,7 +2176,7 @@ static void parser__load_buffer_state  (void)
        b->yy_buffer_status = YY_BUFFER_NEW;
 
        if ( b == YY_CURRENT_BUFFER )
-               parser__load_buffer_state( );
+               yy_load_buffer_state(  );
 }
 
 /** Pushes the new state onto the stack. The new state becomes
@@ -1951,14 +2185,14 @@ static void parser__load_buffer_state  (void)
  *  @param new_buffer The new state.
  *  
  */
-void parser_push_buffer_state (YY_BUFFER_STATE new_buffer )
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
 {
        if (new_buffer == NULL)
                return;
 
-       parser_ensure_buffer_stack();
+       yyensure_buffer_stack();
 
-       /* This block is copied from parser__switch_to_buffer. */
+       /* This block is copied from yy_switch_to_buffer. */
        if ( YY_CURRENT_BUFFER )
                {
                /* Flush out information for old buffer. */
@@ -1972,8 +2206,8 @@ void parser_push_buffer_state (YY_BUFFER_STATE new_buffer )
                (yy_buffer_stack_top)++;
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
-       /* copied from parser__switch_to_buffer. */
-       parser__load_buffer_state( );
+       /* copied from yy_switch_to_buffer. */
+       yy_load_buffer_state(  );
        (yy_did_buffer_switch_on_eof) = 1;
 }
 
@@ -1981,18 +2215,18 @@ void parser_push_buffer_state (YY_BUFFER_STATE new_buffer )
  *  The next element becomes the new top.
  *  
  */
-void parser_pop_buffer_state (void)
+void yypop_buffer_state (void)
 {
        if (!YY_CURRENT_BUFFER)
                return;
 
-       parser__delete_buffer(YY_CURRENT_BUFFER );
+       yy_delete_buffer(YY_CURRENT_BUFFER );
        YY_CURRENT_BUFFER_LVALUE = NULL;
        if ((yy_buffer_stack_top) > 0)
                --(yy_buffer_stack_top);
 
        if (YY_CURRENT_BUFFER) {
-               parser__load_buffer_state( );
+               yy_load_buffer_state(  );
                (yy_did_buffer_switch_on_eof) = 1;
        }
 }
@@ -2000,7 +2234,7 @@ void parser_pop_buffer_state (void)
 /* Allocates the stack if it does not exist.
  *  Guarantees space for at least one push.
  */
-static void parser_ensure_buffer_stack (void)
+static void yyensure_buffer_stack (void)
 {
        yy_size_t num_to_alloc;
     
@@ -2010,15 +2244,15 @@ static void parser_ensure_buffer_stack (void)
                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
                 * immediate realloc on the next call.
          */
-               num_to_alloc = 1;
-               (yy_buffer_stack) = (struct yy_buffer_state**)parser_alloc
+      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
+               (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
                if ( ! (yy_buffer_stack) )
-                       YY_FATAL_ERROR( "out of dynamic memory in parser_ensure_buffer_stack()" );
-                                                                 
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-                               
+
                (yy_buffer_stack_max) = num_to_alloc;
                (yy_buffer_stack_top) = 0;
                return;
@@ -2027,15 +2261,15 @@ static void parser_ensure_buffer_stack (void)
        if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 
                /* Increase the buffer to prepare for a possible push. */
-               int grow_size = 8 /* arbitrary grow size */;
+               yy_size_t grow_size = 8 /* arbitrary grow size */;
 
                num_to_alloc = (yy_buffer_stack_max) + grow_size;
-               (yy_buffer_stack) = (struct yy_buffer_state**)parser_realloc
+               (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
                                                                ((yy_buffer_stack),
                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
                if ( ! (yy_buffer_stack) )
-                       YY_FATAL_ERROR( "out of dynamic memory in parser_ensure_buffer_stack()" );
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
                /* zero only the new slots.*/
                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -2047,9 +2281,9 @@ static void parser_ensure_buffer_stack (void)
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * 
- * @return the newly allocated buffer state object. 
+ * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE parser__scan_buffer  (char * base, yy_size_t  size )
+YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 {
        YY_BUFFER_STATE b;
     
@@ -2057,69 +2291,69 @@ YY_BUFFER_STATE parser__scan_buffer  (char * base, yy_size_t  size )
             base[size-2] != YY_END_OF_BUFFER_CHAR ||
             base[size-1] != YY_END_OF_BUFFER_CHAR )
                /* They forgot to leave room for the EOB's. */
-               return 0;
+               return NULL;
 
-       b = (YY_BUFFER_STATE) parser_alloc(sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
        if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in parser__scan_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
 
-       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
+       b->yy_buf_size = (int) (size - 2);      /* "- 2" to take care of EOB's */
        b->yy_buf_pos = b->yy_ch_buf = base;
        b->yy_is_our_buffer = 0;
-       b->yy_input_file = 0;
+       b->yy_input_file = NULL;
        b->yy_n_chars = b->yy_buf_size;
        b->yy_is_interactive = 0;
        b->yy_at_bol = 1;
        b->yy_fill_buffer = 0;
        b->yy_buffer_status = YY_BUFFER_NEW;
 
-       parser__switch_to_buffer(b  );
+       yy_switch_to_buffer( b  );
 
        return b;
 }
 
-/** Setup the input buffer state to scan a string. The next call to parser_lex() will
+/** Setup the input buffer state to scan a string. The next call to yylex() will
  * scan from a @e copy of @a str.
  * @param yystr a NUL-terminated string to scan
  * 
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
- *       parser__scan_bytes() instead.
+ *       yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE parser__scan_string (yyconst char * yystr )
+YY_BUFFER_STATE yy_scan_string (const char * yystr )
 {
     
-       return parser__scan_bytes(yystr,strlen(yystr) );
+       return yy_scan_bytes( yystr, (int) strlen(yystr) );
 }
 
-/** Setup the input buffer state to scan the given bytes. The next call to parser_lex() will
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
  * scan from a @e copy of @a bytes.
  * @param yybytes the byte buffer to scan
  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE parser__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
        yy_size_t n;
-       yy_size_t i;
+       int i;
     
        /* Get memory for full buffer, including space for trailing EOB's. */
-       n = _yybytes_len + 2;
-       buf = (char *) parser_alloc(n  );
+       n = (yy_size_t) (_yybytes_len + 2);
+       buf = (char *) yyalloc( n  );
        if ( ! buf )
-               YY_FATAL_ERROR( "out of dynamic memory in parser__scan_bytes()" );
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
 
        for ( i = 0; i < _yybytes_len; ++i )
                buf[i] = yybytes[i];
 
        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
-       b = parser__scan_buffer(buf,n );
+       b = yy_scan_buffer( buf, n );
        if ( ! b )
-               YY_FATAL_ERROR( "bad buffer in parser__scan_bytes()" );
+               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
 
        /* It's okay to grow etc. this buffer, and we should throw it
         * away when we're done.
@@ -2129,20 +2363,21 @@ YY_BUFFER_STATE parser__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes
        return b;
 }
 
-    static void yy_push_state (int  new_state )
+    static void yy_push_state (int  _new_state )
 {
        if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
                {
                yy_size_t new_size;
 
                (yy_start_stack_depth) += YY_START_STACK_INCR;
-               new_size = (yy_start_stack_depth) * sizeof( int );
+               new_size = (yy_size_t) (yy_start_stack_depth) * sizeof( int );
 
                if ( ! (yy_start_stack) )
-                       (yy_start_stack) = (int *) parser_alloc(new_size  );
+                       (yy_start_stack) = (int *) yyalloc( new_size  );
 
                else
-                       (yy_start_stack) = (int *) parser_realloc((void *) (yy_start_stack),new_size  );
+                       (yy_start_stack) = (int *) yyrealloc(
+                                       (void *) (yy_start_stack), new_size  );
 
                if ( ! (yy_start_stack) )
                        YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
@@ -2150,7 +2385,7 @@ YY_BUFFER_STATE parser__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes
 
        (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
 
-       BEGIN(new_state);
+       BEGIN(_new_state);
 }
 
     static void yy_pop_state  (void)
@@ -2165,9 +2400,9 @@ YY_BUFFER_STATE parser__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yy_fatal_error (yyconst char* msg )
+static void yynoreturn yy_fatal_error (const char* msg )
 {
-       (void) fprintf( stderr, "%s\n", msg );
+                       fprintf( stderr, "%s\n", msg );
        exit( YY_EXIT_FAILURE );
 }
 
@@ -2177,14 +2412,14 @@ static void yy_fatal_error (yyconst char* msg )
 #define yyless(n) \
        do \
                { \
-               /* Undo effects of setting up parser_text. */ \
+               /* Undo effects of setting up yytext. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
-               parser_text[parser_leng] = (yy_hold_char); \
-               (yy_c_buf_p) = parser_text + yyless_macro_arg; \
+               yytext[yyleng] = (yy_hold_char); \
+               (yy_c_buf_p) = yytext + yyless_macro_arg; \
                (yy_hold_char) = *(yy_c_buf_p); \
                *(yy_c_buf_p) = '\0'; \
-               parser_leng = yyless_macro_arg; \
+               yyleng = yyless_macro_arg; \
                } \
        while ( 0 )
 
@@ -2193,91 +2428,91 @@ static void yy_fatal_error (yyconst char* msg )
 /** Get the current line number.
  * 
  */
-int parser_get_lineno  (void)
+int yyget_lineno  (void)
 {
-        
-    return parser_lineno;
+    
+    return yylineno;
 }
 
 /** Get the input stream.
  * 
  */
-FILE *parser_get_in  (void)
+FILE *yyget_in  (void)
 {
-        return parser_in;
+        return yyin;
 }
 
 /** Get the output stream.
  * 
  */
-FILE *parser_get_out  (void)
+FILE *yyget_out  (void)
 {
-        return parser_out;
+        return yyout;
 }
 
 /** Get the length of the current token.
  * 
  */
-yy_size_t parser_get_leng  (void)
+int yyget_leng  (void)
 {
-        return parser_leng;
+        return yyleng;
 }
 
 /** Get the current token.
  * 
  */
 
-char *parser_get_text  (void)
+char *yyget_text  (void)
 {
-        return parser_text;
+        return yytext;
 }
 
 /** Set the current line number.
- * @param line_number
+ * @param _line_number line number
  * 
  */
-void parser_set_lineno (int  line_number )
+void yyset_lineno (int  _line_number )
 {
     
-    parser_lineno = line_number;
+    yylineno = _line_number;
 }
 
 /** Set the input stream. This does not discard the current
  * input buffer.
- * @param in_str A readable stream.
+ * @param _in_str A readable stream.
  * 
- * @see parser__switch_to_buffer
+ * @see yy_switch_to_buffer
  */
-void parser_set_in (FILE *  in_str )
+void yyset_in (FILE *  _in_str )
 {
-        parser_in = in_str ;
+        yyin = _in_str ;
 }
 
-void parser_set_out (FILE *  out_str )
+void yyset_out (FILE *  _out_str )
 {
-        parser_out = out_str ;
+        yyout = _out_str ;
 }
 
-int parser_get_debug  (void)
+int yyget_debug  (void)
 {
-        return parser__flex_debug;
+        return yy_flex_debug;
 }
 
-void parser_set_debug (int  bdebug )
+void yyset_debug (int  _bdebug )
 {
-        parser__flex_debug = bdebug ;
+        yy_flex_debug = _bdebug ;
 }
 
 static int yy_init_globals (void)
 {
         /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from parser_lex_destroy(), so don't allocate here.
+     * This function is called from yylex_destroy(), so don't allocate here.
      */
 
-    (yy_buffer_stack) = 0;
+    (yy_buffer_stack) = NULL;
     (yy_buffer_stack_top) = 0;
     (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
+    (yy_c_buf_p) = NULL;
     (yy_init) = 0;
     (yy_start) = 0;
 
@@ -2287,40 +2522,40 @@ static int yy_init_globals (void)
 
 /* Defined in main.c */
 #ifdef YY_STDINIT
-    parser_in = stdin;
-    parser_out = stdout;
+    yyin = stdin;
+    yyout = stdout;
 #else
-    parser_in = (FILE *) 0;
-    parser_out = (FILE *) 0;
+    yyin = NULL;
+    yyout = NULL;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
-     * parser_lex_init()
+     * yylex_init()
      */
     return 0;
 }
 
-/* parser_lex_destroy is for both reentrant and non-reentrant scanners. */
-int parser_lex_destroy  (void)
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy  (void)
 {
     
     /* Pop the buffer stack, destroying each element. */
        while(YY_CURRENT_BUFFER){
-               parser__delete_buffer(YY_CURRENT_BUFFER  );
+               yy_delete_buffer( YY_CURRENT_BUFFER  );
                YY_CURRENT_BUFFER_LVALUE = NULL;
-               parser_pop_buffer_state();
+               yypop_buffer_state();
        }
 
        /* Destroy the stack itself. */
-       parser_free((yy_buffer_stack) );
+       yyfree((yy_buffer_stack) );
        (yy_buffer_stack) = NULL;
 
     /* Destroy the start condition stack. */
-        parser_free((yy_start_stack)  );
+        yyfree( (yy_start_stack)  );
         (yy_start_stack) = NULL;
 
     /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * parser_lex() is called, initialization will occur. */
+     * yylex() is called, initialization will occur. */
     yy_init_globals( );
 
     return 0;
@@ -2331,18 +2566,19 @@ int parser_lex_destroy  (void)
  */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+static void yy_flex_strncpy (char* s1, const char * s2, int n )
 {
-       register int i;
+               
+       int i;
        for ( i = 0; i < n; ++i )
                s1[i] = s2[i];
 }
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
+static int yy_flex_strlen (const char * s )
 {
-       register int n;
+       int n;
        for ( n = 0; s[n]; ++n )
                ;
 
@@ -2350,13 +2586,14 @@ static int yy_flex_strlen (yyconst char * s )
 }
 #endif
 
-void *parser_alloc (yy_size_t  size )
+void *yyalloc (yy_size_t  size )
 {
-       return (void *) malloc( size );
+                       return malloc(size);
 }
 
-void *parser_realloc  (void * ptr, yy_size_t  size )
+void *yyrealloc  (void * ptr, yy_size_t  size )
 {
+               
        /* The cast to (char *) in the following accommodates both
         * implementations that use char* generic pointers, and those
         * that use void* generic pointers.  It works with the latter
@@ -2364,18 +2601,15 @@ void *parser_realloc  (void * ptr, yy_size_t  size )
         * any pointer type to void*, and deal with argument conversions
         * as though doing an assignment.
         */
-       return (void *) realloc( (char *) ptr, size );
+       return realloc(ptr, size);
 }
 
-void parser_free (void * ptr )
+void yyfree (void * ptr )
 {
-       free( (char *) ptr );   /* see parser_realloc() for (char *) cast */
+                       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
 }
 
-#define YYTABLES_NAME "yytables"
-
-#line 238 "parser.l"
-
+#line 239 "parser.l"
 
 
 #ifndef parser_wrap
@@ -2458,6 +2692,7 @@ static const struct keyword keywords[] = {
 static const struct keyword attr_keywords[] =
 {
         {"aggregatable",                tAGGREGATABLE},
+        {"all_nodes",                   tALLNODES},
         {"allocate",                    tALLOCATE},
         {"annotation",                  tANNOTATION},
         {"apartment",                   tAPARTMENT},
@@ -2485,6 +2720,7 @@ static const struct keyword attr_keywords[] =
         {"disable_consistency_check",   tDISABLECONSISTENCYCHECK},
         {"displaybind",                 tDISPLAYBIND},
         {"dllname",                     tDLLNAME},
+        {"dont_free",                   tDONTFREE},
         {"dual",                        tDUAL},
         {"enable_allocate",             tENABLEALLOCATE},
         {"encode",                      tENCODE},
@@ -2546,6 +2782,7 @@ static const struct keyword attr_keywords[] =
         {"restricted",                  tRESTRICTED},
         {"retval",                      tRETVAL},
         {"single",                      tSINGLE},
+        {"single_node",                 tSINGLENODE},
         {"size_is",                     tSIZEIS},
         {"source",                      tSOURCE},
         {"strict_context_handle",       tSTRICTCONTEXTHANDLE},
@@ -2629,9 +2866,9 @@ void pop_import(void)
 {
        int ptr = import_stack_ptr-1;
 
-       fclose(parser_in);
-       parser__delete_buffer(YY_CURRENT_BUFFER );
-       parser__switch_to_buffer(import_stack[ptr].state );
+       fclose(yyin);
+       yy_delete_buffer( YY_CURRENT_BUFFER );
+       yy_switch_to_buffer( import_stack[ptr].state );
        if (temp_name) {
                unlink(temp_name);
                free(temp_name);
@@ -2698,7 +2935,7 @@ int do_import(char *fname)
         error_loc("Unable to open %s\n", temp_name);
 
     import_stack[ptr].state = YY_CURRENT_BUFFER;
-    parser__switch_to_buffer(parser__create_buffer(f,YY_BUF_SIZE));
+    yy_switch_to_buffer(yy_create_buffer(f, YY_BUF_SIZE));
     return 1;
 }
 
@@ -2739,7 +2976,7 @@ static void switch_to_acf(void)
         error_loc("Unable to open %s\n", temp_name);
 
     import_stack[ptr].state = YY_CURRENT_BUFFER;
-    parser__switch_to_buffer(parser__create_buffer(f,YY_BUF_SIZE));
+    yy_switch_to_buffer(yy_create_buffer(f, YY_BUF_SIZE));
 }
 
 static void warning_disable(int warning)
index bfff33f..1cc3c57 100644 (file)
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 37
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 4
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 
-/* First, we deal with  platform-specific or compiler-specific issues. */
+#ifdef yy_create_buffer
+#define parser__create_buffer_ALREADY_DEFINED
+#else
+#define yy_create_buffer parser__create_buffer
+#endif
 
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
+#ifdef yy_delete_buffer
+#define parser__delete_buffer_ALREADY_DEFINED
+#else
+#define yy_delete_buffer parser__delete_buffer
+#endif
 
-/* end standard C headers. */
+#ifdef yy_scan_buffer
+#define parser__scan_buffer_ALREADY_DEFINED
+#else
+#define yy_scan_buffer parser__scan_buffer
+#endif
 
-/* flex integer type definitions */
+#ifdef yy_scan_string
+#define parser__scan_string_ALREADY_DEFINED
+#else
+#define yy_scan_string parser__scan_string
+#endif
 
-#ifndef FLEXINT_H
-#define FLEXINT_H
+#ifdef yy_scan_bytes
+#define parser__scan_bytes_ALREADY_DEFINED
+#else
+#define yy_scan_bytes parser__scan_bytes
+#endif
 
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+#ifdef yy_init_buffer
+#define parser__init_buffer_ALREADY_DEFINED
+#else
+#define yy_init_buffer parser__init_buffer
+#endif
 
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#ifdef yy_flush_buffer
+#define parser__flush_buffer_ALREADY_DEFINED
+#else
+#define yy_flush_buffer parser__flush_buffer
+#endif
 
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
+#ifdef yy_load_buffer_state
+#define parser__load_buffer_state_ALREADY_DEFINED
+#else
+#define yy_load_buffer_state parser__load_buffer_state
 #endif
 
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
+#ifdef yy_switch_to_buffer
+#define parser__switch_to_buffer_ALREADY_DEFINED
 #else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
+#define yy_switch_to_buffer parser__switch_to_buffer
+#endif
+
+#ifdef yypush_buffer_state
+#define parser_push_buffer_state_ALREADY_DEFINED
+#else
+#define yypush_buffer_state parser_push_buffer_state
+#endif
+
+#ifdef yypop_buffer_state
+#define parser_pop_buffer_state_ALREADY_DEFINED
+#else
+#define yypop_buffer_state parser_pop_buffer_state
+#endif
+
+#ifdef yyensure_buffer_stack
+#define parser_ensure_buffer_stack_ALREADY_DEFINED
+#else
+#define yyensure_buffer_stack parser_ensure_buffer_stack
+#endif
+
+#ifdef yylex
+#define parser_lex_ALREADY_DEFINED
+#else
+#define yylex parser_lex
+#endif
 
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
+#ifdef yyrestart
+#define parser_restart_ALREADY_DEFINED
+#else
+#define yyrestart parser_restart
 #endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
+
+#ifdef yylex_init
+#define parser_lex_init_ALREADY_DEFINED
+#else
+#define yylex_init parser_lex_init
 #endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
+
+#ifdef yylex_init_extra
+#define parser_lex_init_extra_ALREADY_DEFINED
+#else
+#define yylex_init_extra parser_lex_init_extra
 #endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
+
+#ifdef yylex_destroy
+#define parser_lex_destroy_ALREADY_DEFINED
+#else
+#define yylex_destroy parser_lex_destroy
 #endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
+
+#ifdef yyget_debug
+#define parser_get_debug_ALREADY_DEFINED
+#else
+#define yyget_debug parser_get_debug
 #endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
+
+#ifdef yyset_debug
+#define parser_set_debug_ALREADY_DEFINED
+#else
+#define yyset_debug parser_set_debug
 #endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
+
+#ifdef yyget_extra
+#define parser_get_extra_ALREADY_DEFINED
+#else
+#define yyget_extra parser_get_extra
 #endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
+
+#ifdef yyset_extra
+#define parser_set_extra_ALREADY_DEFINED
+#else
+#define yyset_extra parser_set_extra
 #endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
+
+#ifdef yyget_in
+#define parser_get_in_ALREADY_DEFINED
+#else
+#define yyget_in parser_get_in
 #endif
 
-#endif /* ! C99 */
+#ifdef yyset_in
+#define parser_set_in_ALREADY_DEFINED
+#else
+#define yyset_in parser_set_in
+#endif
 
-#endif /* ! FLEXINT_H */
+#ifdef yyget_out
+#define parser_get_out_ALREADY_DEFINED
+#else
+#define yyget_out parser_get_out
+#endif
 
-#ifdef __cplusplus
+#ifdef yyset_out
+#define parser_set_out_ALREADY_DEFINED
+#else
+#define yyset_out parser_set_out
+#endif
 
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
+#ifdef yyget_leng
+#define parser_get_leng_ALREADY_DEFINED
+#else
+#define yyget_leng parser_get_leng
+#endif
+
+#ifdef yyget_text
+#define parser_get_text_ALREADY_DEFINED
+#else
+#define yyget_text parser_get_text
+#endif
+
+#ifdef yyget_lineno
+#define parser_get_lineno_ALREADY_DEFINED
+#else
+#define yyget_lineno parser_get_lineno
+#endif
+
+#ifdef yyset_lineno
+#define parser_set_lineno_ALREADY_DEFINED
+#else
+#define yyset_lineno parser_set_lineno
+#endif
+
+#ifdef yywrap
+#define parser_wrap_ALREADY_DEFINED
+#else
+#define yywrap parser_wrap
+#endif
+
+#ifdef yyalloc
+#define parser_alloc_ALREADY_DEFINED
+#else
+#define yyalloc parser_alloc
+#endif
 
-#else  /* ! __cplusplus */
+#ifdef yyrealloc
+#define parser_realloc_ALREADY_DEFINED
+#else
+#define yyrealloc parser_realloc
+#endif
 
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
+#ifdef yyfree
+#define parser_free_ALREADY_DEFINED
+#else
+#define yyfree parser_free
+#endif
 
-#define YY_USE_CONST
+#ifdef yytext
+#define parser_text_ALREADY_DEFINED
+#else
+#define yytext parser_text
+#endif
 
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
+#ifdef yyleng
+#define parser_leng_ALREADY_DEFINED
+#else
+#define yyleng parser_leng
+#endif
 
-#ifdef YY_USE_CONST
+#ifdef yyin
+#define parser_in_ALREADY_DEFINED
+#else
+#define yyin parser_in
+#endif
+
+#ifdef yyout
+#define parser_out_ALREADY_DEFINED
+#else
+#define yyout parser_out
+#endif
+
+#ifdef yy_flex_debug
+#define parser__flex_debug_ALREADY_DEFINED
+#else
+#define yy_flex_debug parser__flex_debug
+#endif
+
+#ifdef yylineno
+#define parser_lineno_ALREADY_DEFINED
+#else
+#define yylineno parser_lineno
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* begin standard C++ headers. */
+
+/* flex integer type definitions */
+
+#ifndef YYFLEX_INTTYPES_DEFINED
+#define YYFLEX_INTTYPES_DEFINED
+
+/* Prefer C99 integer types if available. */
+# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+/* Include <inttypes.h> and not <stdint.h> because Solaris 2.6 has the former
+ * and not the latter.
+ */
+#include <inttypes.h>
+#  define YYFLEX_USE_STDINT
+# else
+#  if defined(_MSC_VER) && _MSC_VER >= 1600
+/* Visual C++ 2010 does not define __STDC_VERSION__ and has <stdint.h> but not
+ * <inttypes.h>.
+ */
+#include <stdint.h>
+#   define YYFLEX_USE_STDINT
+#  endif
+# endif
+# ifdef YYFLEX_USE_STDINT
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+# else
+typedef unsigned char flex_uint8_t;
+typedef short int flex_int16_t;
+typedef unsigned short int flex_uint16_t;
+#  ifdef __STDC__
+typedef signed char flex_int8_t;
+/* ISO C only requires at least 16 bits for int. */
+#include <limits.h>
+#   if UINT_MAX >= 4294967295
+#    define YYFLEX_INT32_DEFINED
+typedef int flex_int32_t;
+typedef unsigned int flex_uint32_t;
+#   endif
+#  else
+typedef char flex_int8_t;
+#  endif
+#  ifndef YYFLEX_INT32_DEFINED
+typedef long int flex_int32_t;
+typedef unsigned long int flex_uint32_t;
+#  endif
+# endif
+#endif /* YYFLEX_INTTYPES_DEFINED */
+
+/* TODO: this is always defined, so inline it */
 #define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
 #else
-#define yyconst
+#define yynoreturn
 #endif
 
 /* Size of default input buffer. */
 #ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
 #define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
 #endif
 
 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
@@ -128,9 +348,9 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
 typedef size_t yy_size_t;
 #endif
 
-extern yy_size_t parser_leng;
+extern int yyleng;
 
-extern FILE *parser_in, *parser_out;
+extern FILE *yyin, *yyout;
 
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
@@ -144,12 +364,12 @@ struct yy_buffer_state
        /* Size of input buffer in bytes, not including room for EOB
         * characters.
         */
-       yy_size_t yy_buf_size;
+       int yy_buf_size;
 
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       yy_size_t yy_n_chars;
+       int yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -172,7 +392,7 @@ struct yy_buffer_state
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-    
+
        /* Whether to try to fill the input buffer when we reach the
         * end of it.
         */
@@ -183,28 +403,31 @@ struct yy_buffer_state
        };
 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
 
-void parser_restart (FILE *input_file  );
-void parser__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE parser__create_buffer (FILE *file,int size  );
-void parser__delete_buffer (YY_BUFFER_STATE b  );
-void parser__flush_buffer (YY_BUFFER_STATE b  );
-void parser_push_buffer_state (YY_BUFFER_STATE new_buffer  );
-void parser_pop_buffer_state (void );
+void yyrestart ( FILE *input_file  );
+void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
+void yy_delete_buffer ( YY_BUFFER_STATE b  );
+void yy_flush_buffer ( YY_BUFFER_STATE b  );
+void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
+void yypop_buffer_state ( void );
 
-YY_BUFFER_STATE parser__scan_buffer (char *base,yy_size_t size  );
-YY_BUFFER_STATE parser__scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE parser__scan_bytes (yyconst char *bytes,yy_size_t len  );
+YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
+YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
+YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
 
-void *parser_alloc (yy_size_t  );
-void *parser_realloc (void *,yy_size_t  );
-void parser_free (void *  );
+void *yyalloc ( yy_size_t  );
+void *yyrealloc ( void *, yy_size_t  );
+void yyfree ( void *  );
 
 /* Begin user sect3 */
 
-extern int parser_lineno;
+extern int yylineno;
 
-extern char *parser_text;
-#define yytext_ptr parser_text
+extern char *yytext;
+#ifdef yytext_ptr
+#undef yytext_ptr
+#endif
+#define yytext_ptr yytext
 
 #ifdef YY_HEADER_EXPORT_START_CONDITIONS
 #define INITIAL 0
@@ -224,7 +447,7 @@ extern char *parser_text;
  */
 #include <unistd.h>
 #endif
-    
+
 #ifndef YY_EXTRA_TYPE
 #define YY_EXTRA_TYPE void *
 #endif
@@ -232,31 +455,31 @@ extern char *parser_text;
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int parser_lex_destroy (void );
+int yylex_destroy ( void );
 
-int parser_get_debug (void );
+int yyget_debug ( void );
 
-void parser_set_debug (int debug_flag  );
+void yyset_debug ( int debug_flag  );
 
-YY_EXTRA_TYPE parser_get_extra (void );
+YY_EXTRA_TYPE yyget_extra ( void );
 
-void parser_set_extra (YY_EXTRA_TYPE user_defined  );
+void yyset_extra ( YY_EXTRA_TYPE user_defined  );
 
-FILE *parser_get_in (void );
+FILE *yyget_in ( void );
 
-void parser_set_in  (FILE * in_str  );
+void yyset_in  ( FILE * _in_str  );
 
-FILE *parser_get_out (void );
+FILE *yyget_out ( void );
 
-void parser_set_out  (FILE * out_str  );
+void yyset_out  ( FILE * _out_str  );
 
-yy_size_t parser_get_leng (void );
+                       int yyget_leng ( void );
 
-char *parser_get_text (void );
+char *yyget_text ( void );
 
-int parser_get_lineno (void );
+int yyget_lineno ( void );
 
-void parser_set_lineno (int line_number  );
+void yyset_lineno ( int _line_number  );
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -264,18 +487,18 @@ void parser_set_lineno (int line_number  );
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int parser_wrap (void );
+extern "C" int yywrap ( void );
 #else
-extern int parser_wrap (void );
+extern int yywrap ( void );
 #endif
 #endif
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
+static void yy_flex_strncpy ( char *, const char *, int );
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
+static int yy_flex_strlen ( const char * );
 #endif
 
 #ifndef YY_NO_INPUT
@@ -284,7 +507,12 @@ static int yy_flex_strlen (yyconst char * );
 
 /* Amount of stuff to slurp up with each read. */
 #ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
 #define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
 #endif
 
 /* Number of entries by which start-condition stack grows. */
@@ -298,9 +526,9 @@ static int yy_flex_strlen (yyconst char * );
 #ifndef YY_DECL
 #define YY_DECL_IS_OURS 1
 
-extern int parser_lex (void);
+extern int yylex (void);
 
-#define YY_DECL int parser_lex (void)
+#define YY_DECL int yylex (void)
 #endif /* !YY_DECL */
 
 /* yy_get_previous_state - get the state just before the EOB char was reached */
@@ -317,9 +545,154 @@ extern int parser_lex (void);
 #undef YY_DECL
 #endif
 
-#line 238 "parser.l"
+#ifndef parser__create_buffer_ALREADY_DEFINED
+#undef yy_create_buffer
+#endif
+#ifndef parser__delete_buffer_ALREADY_DEFINED
+#undef yy_delete_buffer
+#endif
+#ifndef parser__scan_buffer_ALREADY_DEFINED
+#undef yy_scan_buffer
+#endif
+#ifndef parser__scan_string_ALREADY_DEFINED
+#undef yy_scan_string
+#endif
+#ifndef parser__scan_bytes_ALREADY_DEFINED
+#undef yy_scan_bytes
+#endif
+#ifndef parser__init_buffer_ALREADY_DEFINED
+#undef yy_init_buffer
+#endif
+#ifndef parser__flush_buffer_ALREADY_DEFINED
+#undef yy_flush_buffer
+#endif
+#ifndef parser__load_buffer_state_ALREADY_DEFINED
+#undef yy_load_buffer_state
+#endif
+#ifndef parser__switch_to_buffer_ALREADY_DEFINED
+#undef yy_switch_to_buffer
+#endif
+#ifndef parser_push_buffer_state_ALREADY_DEFINED
+#undef yypush_buffer_state
+#endif
+#ifndef parser_pop_buffer_state_ALREADY_DEFINED
+#undef yypop_buffer_state
+#endif
+#ifndef parser_ensure_buffer_stack_ALREADY_DEFINED
+#undef yyensure_buffer_stack
+#endif
+#ifndef parser_lex_ALREADY_DEFINED
+#undef yylex
+#endif
+#ifndef parser_restart_ALREADY_DEFINED
+#undef yyrestart
+#endif
+#ifndef parser_lex_init_ALREADY_DEFINED
+#undef yylex_init
+#endif
+#ifndef parser_lex_init_extra_ALREADY_DEFINED
+#undef yylex_init_extra
+#endif
+#ifndef parser_lex_destroy_ALREADY_DEFINED
+#undef yylex_destroy
+#endif
+#ifndef parser_get_debug_ALREADY_DEFINED
+#undef yyget_debug
+#endif
+#ifndef parser_set_debug_ALREADY_DEFINED
+#undef yyset_debug
+#endif
+#ifndef parser_get_extra_ALREADY_DEFINED
+#undef yyget_extra
+#endif
+#ifndef parser_set_extra_ALREADY_DEFINED
+#undef yyset_extra
+#endif
+#ifndef parser_get_in_ALREADY_DEFINED
+#undef yyget_in
+#endif
+#ifndef parser_set_in_ALREADY_DEFINED
+#undef yyset_in
+#endif
+#ifndef parser_get_out_ALREADY_DEFINED
+#undef yyget_out
+#endif
+#ifndef parser_set_out_ALREADY_DEFINED
+#undef yyset_out
+#endif
+#ifndef parser_get_leng_ALREADY_DEFINED
+#undef yyget_leng
+#endif
+#ifndef parser_get_text_ALREADY_DEFINED
+#undef yyget_text
+#endif
+#ifndef parser_get_lineno_ALREADY_DEFINED
+#undef yyget_lineno
+#endif
+#ifndef parser_set_lineno_ALREADY_DEFINED
+#undef yyset_lineno
+#endif
+#ifndef parser_get_column_ALREADY_DEFINED
+#undef yyget_column
+#endif
+#ifndef parser_set_column_ALREADY_DEFINED
+#undef yyset_column
+#endif
+#ifndef parser_wrap_ALREADY_DEFINED
+#undef yywrap
+#endif
+#ifndef parser_get_lval_ALREADY_DEFINED
+#undef yyget_lval
+#endif
+#ifndef parser_set_lval_ALREADY_DEFINED
+#undef yyset_lval
+#endif
+#ifndef parser_get_lloc_ALREADY_DEFINED
+#undef yyget_lloc
+#endif
+#ifndef parser_set_lloc_ALREADY_DEFINED
+#undef yyset_lloc
+#endif
+#ifndef parser_alloc_ALREADY_DEFINED
+#undef yyalloc
+#endif
+#ifndef parser_realloc_ALREADY_DEFINED
+#undef yyrealloc
+#endif
+#ifndef parser_free_ALREADY_DEFINED
+#undef yyfree
+#endif
+#ifndef parser_text_ALREADY_DEFINED
+#undef yytext
+#endif
+#ifndef parser_leng_ALREADY_DEFINED
+#undef yyleng
+#endif
+#ifndef parser_in_ALREADY_DEFINED
+#undef yyin
+#endif
+#ifndef parser_out_ALREADY_DEFINED
+#undef yyout
+#endif
+#ifndef parser__flex_debug_ALREADY_DEFINED
+#undef yy_flex_debug
+#endif
+#ifndef parser_lineno_ALREADY_DEFINED
+#undef yylineno
+#endif
+#ifndef parser_tables_fload_ALREADY_DEFINED
+#undef yytables_fload
+#endif
+#ifndef parser_tables_destroy_ALREADY_DEFINED
+#undef yytables_destroy
+#endif
+#ifndef parser_TABLES_NAME_ALREADY_DEFINED
+#undef yyTABLES_NAME
+#endif
+
+#line 239 "parser.l"
 
 
-#line 324 "parser.yy.h"
+#line 697 "parser.yy.h"
 #undef parser_IN_HEADER
 #endif /* parser_HEADER_H */
index 4a79146..baa2b18 100644 (file)
@@ -2137,6 +2137,9 @@ static unsigned int write_nonsimple_pointer(FILE *file, const attr_list_t *attrs
         type_t *ref = type_pointer_get_ref(type);
         if(is_declptr(ref) && !is_user_type(ref))
             flags |= FC_POINTER_DEREF;
+        if (pointer_type != FC_RP) {
+            flags |= get_attrv(type->attrs, ATTR_ALLOCATE);
+        }
     }
 
     print_file(file, 2, "0x%x, 0x%x,\t\t/* %s",
@@ -2149,6 +2152,10 @@ static unsigned int write_nonsimple_pointer(FILE *file, const attr_list_t *attrs
             fprintf(file, " [allocated_on_stack]");
         if (flags & FC_POINTER_DEREF)
             fprintf(file, " [pointer_deref]");
+        if (flags & FC_DONT_FREE)
+            fprintf(file, " [dont_free]");
+        if (flags & FC_ALLOCATE_ALL_NODES)
+            fprintf(file, " [all_nodes]");
         fprintf(file, " */\n");
     }
 
index 37792b2..53a24e4 100644 (file)
@@ -68,6 +68,7 @@ typedef struct list warning_list_t;
 enum attr_type
 {
     ATTR_AGGREGATABLE,
+    ATTR_ALLOCATE,
     ATTR_ANNOTATION,
     ATTR_APPOBJECT,
     ATTR_ASYNC,