diff --git a/mingw-w64-tools/widl/src/parser.tab.c b/mingw-w64-tools/widl/src/parser.tab.c
index 2e076d6..d191f89 100644
--- a/mingw-w64-tools/widl/src/parser.tab.c
+++ b/mingw-w64-tools/widl/src/parser.tab.c
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
+/* A Bison parser, made by GNU Bison 3.0.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 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
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -26,7 +26,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.7.12-4996"
+#define YYBISON_VERSION "3.0.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -63,14 +63,14 @@
 #define yyparse         parser_parse
 #define yylex           parser_lex
 #define yyerror         parser_error
-#define yylval          parser_lval
-#define yychar          parser_char
 #define yydebug         parser_debug
 #define yynerrs         parser_nerrs
 
+#define yylval          parser_lval
+#define yychar          parser_char
+
 /* Copy the first part of user declarations.  */
-/* Line 371 of yacc.c  */
-#line 1 "parser.y"
+#line 1 "parser.y" /* yacc.c:339  */
 
 /*
  * IDL Compiler
@@ -199,14 +199,13 @@
 static attr_list_t *append_attribs(attr_list_t *, attr_list_t *);
 
 
-/* Line 371 of yacc.c  */
-#line 204 "parser.tab.c"
+#line 203 "parser.tab.c" /* yacc.c:339  */
 
-# ifndef YY_NULL
+# ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULL nullptr
+#   define YY_NULLPTR nullptr
 #  else
-#   define YY_NULL 0
+#   define YY_NULLPTR 0
 #  endif
 # endif
 
@@ -218,11 +217,8 @@
 # define YYERROR_VERBOSE 1
 #endif
 
-/* In a future release of Bison, this section will be replaced
-   by #include "parser.tab.h".  */
-#ifndef YY_PARSER_PARSER_TAB_H_INCLUDED
-# define YY_PARSER_PARSER_TAB_H_INCLUDED
-/* Enabling traces.  */
+
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
@@ -230,204 +226,203 @@
 extern int parser_debug;
 #endif
 
-/* Tokens.  */
+/* Token type.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     aIDENTIFIER = 258,
-     aPRAGMA = 259,
-     aKNOWNTYPE = 260,
-     aNUM = 261,
-     aHEXNUM = 262,
-     aDOUBLE = 263,
-     aSTRING = 264,
-     aWSTRING = 265,
-     aSQSTRING = 266,
-     aUUID = 267,
-     aEOF = 268,
-     SHL = 269,
-     SHR = 270,
-     MEMBERPTR = 271,
-     EQUALITY = 272,
-     INEQUALITY = 273,
-     GREATEREQUAL = 274,
-     LESSEQUAL = 275,
-     LOGICALOR = 276,
-     LOGICALAND = 277,
-     ELLIPSIS = 278,
-     tAGGREGATABLE = 279,
-     tALLOCATE = 280,
-     tANNOTATION = 281,
-     tAPPOBJECT = 282,
-     tASYNC = 283,
-     tASYNCUUID = 284,
-     tAUTOHANDLE = 285,
-     tBINDABLE = 286,
-     tBOOLEAN = 287,
-     tBROADCAST = 288,
-     tBYTE = 289,
-     tBYTECOUNT = 290,
-     tCALLAS = 291,
-     tCALLBACK = 292,
-     tCASE = 293,
-     tCDECL = 294,
-     tCHAR = 295,
-     tCOCLASS = 296,
-     tCODE = 297,
-     tCOMMSTATUS = 298,
-     tCONST = 299,
-     tCONTEXTHANDLE = 300,
-     tCONTEXTHANDLENOSERIALIZE = 301,
-     tCONTEXTHANDLESERIALIZE = 302,
-     tCONTROL = 303,
-     tCPPQUOTE = 304,
-     tDECODE = 305,
-     tDEFAULT = 306,
-     tDEFAULTBIND = 307,
-     tDEFAULTCOLLELEM = 308,
-     tDEFAULTVALUE = 309,
-     tDEFAULTVTABLE = 310,
-     tDISABLECONSISTENCYCHECK = 311,
-     tDISPLAYBIND = 312,
-     tDISPINTERFACE = 313,
-     tDLLNAME = 314,
-     tDOUBLE = 315,
-     tDUAL = 316,
-     tENABLEALLOCATE = 317,
-     tENCODE = 318,
-     tENDPOINT = 319,
-     tENTRY = 320,
-     tENUM = 321,
-     tERRORSTATUST = 322,
-     tEXPLICITHANDLE = 323,
-     tEXTERN = 324,
-     tFALSE = 325,
-     tFASTCALL = 326,
-     tFAULTSTATUS = 327,
-     tFLOAT = 328,
-     tFORCEALLOCATE = 329,
-     tHANDLE = 330,
-     tHANDLET = 331,
-     tHELPCONTEXT = 332,
-     tHELPFILE = 333,
-     tHELPSTRING = 334,
-     tHELPSTRINGCONTEXT = 335,
-     tHELPSTRINGDLL = 336,
-     tHIDDEN = 337,
-     tHYPER = 338,
-     tID = 339,
-     tIDEMPOTENT = 340,
-     tIGNORE = 341,
-     tIIDIS = 342,
-     tIMMEDIATEBIND = 343,
-     tIMPLICITHANDLE = 344,
-     tIMPORT = 345,
-     tIMPORTLIB = 346,
-     tIN = 347,
-     tIN_LINE = 348,
-     tINLINE = 349,
-     tINPUTSYNC = 350,
-     tINT = 351,
-     tINT3264 = 352,
-     tINT64 = 353,
-     tINTERFACE = 354,
-     tLCID = 355,
-     tLENGTHIS = 356,
-     tLIBRARY = 357,
-     tLICENSED = 358,
-     tLOCAL = 359,
-     tLONG = 360,
-     tMAYBE = 361,
-     tMESSAGE = 362,
-     tMETHODS = 363,
-     tMODULE = 364,
-     tNAMESPACE = 365,
-     tNOCODE = 366,
-     tNONBROWSABLE = 367,
-     tNONCREATABLE = 368,
-     tNONEXTENSIBLE = 369,
-     tNOTIFY = 370,
-     tNOTIFYFLAG = 371,
-     tNULL = 372,
-     tOBJECT = 373,
-     tODL = 374,
-     tOLEAUTOMATION = 375,
-     tOPTIMIZE = 376,
-     tOPTIONAL = 377,
-     tOUT = 378,
-     tPARTIALIGNORE = 379,
-     tPASCAL = 380,
-     tPOINTERDEFAULT = 381,
-     tPROGID = 382,
-     tPROPERTIES = 383,
-     tPROPGET = 384,
-     tPROPPUT = 385,
-     tPROPPUTREF = 386,
-     tPROXY = 387,
-     tPTR = 388,
-     tPUBLIC = 389,
-     tRANGE = 390,
-     tREADONLY = 391,
-     tREF = 392,
-     tREGISTER = 393,
-     tREPRESENTAS = 394,
-     tREQUESTEDIT = 395,
-     tRESTRICTED = 396,
-     tRETVAL = 397,
-     tSAFEARRAY = 398,
-     tSHORT = 399,
-     tSIGNED = 400,
-     tSIZEIS = 401,
-     tSIZEOF = 402,
-     tSMALL = 403,
-     tSOURCE = 404,
-     tSTATIC = 405,
-     tSTDCALL = 406,
-     tSTRICTCONTEXTHANDLE = 407,
-     tSTRING = 408,
-     tSTRUCT = 409,
-     tSWITCH = 410,
-     tSWITCHIS = 411,
-     tSWITCHTYPE = 412,
-     tTHREADING = 413,
-     tTRANSMITAS = 414,
-     tTRUE = 415,
-     tTYPEDEF = 416,
-     tUIDEFAULT = 417,
-     tUNION = 418,
-     tUNIQUE = 419,
-     tUNSIGNED = 420,
-     tUSESGETLASTERROR = 421,
-     tUSERMARSHAL = 422,
-     tUUID = 423,
-     tV1ENUM = 424,
-     tVARARG = 425,
-     tVERSION = 426,
-     tVIPROGID = 427,
-     tVOID = 428,
-     tWCHAR = 429,
-     tWIREMARSHAL = 430,
-     tAPARTMENT = 431,
-     tNEUTRAL = 432,
-     tSINGLE = 433,
-     tFREE = 434,
-     tBOTH = 435,
-     ADDRESSOF = 436,
-     NEG = 437,
-     POS = 438,
-     PPTR = 439,
-     CAST = 440
-   };
+  enum yytokentype
+  {
+    aIDENTIFIER = 258,
+    aPRAGMA = 259,
+    aKNOWNTYPE = 260,
+    aNUM = 261,
+    aHEXNUM = 262,
+    aDOUBLE = 263,
+    aSTRING = 264,
+    aWSTRING = 265,
+    aSQSTRING = 266,
+    aUUID = 267,
+    aEOF = 268,
+    SHL = 269,
+    SHR = 270,
+    MEMBERPTR = 271,
+    EQUALITY = 272,
+    INEQUALITY = 273,
+    GREATEREQUAL = 274,
+    LESSEQUAL = 275,
+    LOGICALOR = 276,
+    LOGICALAND = 277,
+    ELLIPSIS = 278,
+    tAGGREGATABLE = 279,
+    tALLOCATE = 280,
+    tANNOTATION = 281,
+    tAPPOBJECT = 282,
+    tASYNC = 283,
+    tASYNCUUID = 284,
+    tAUTOHANDLE = 285,
+    tBINDABLE = 286,
+    tBOOLEAN = 287,
+    tBROADCAST = 288,
+    tBYTE = 289,
+    tBYTECOUNT = 290,
+    tCALLAS = 291,
+    tCALLBACK = 292,
+    tCASE = 293,
+    tCDECL = 294,
+    tCHAR = 295,
+    tCOCLASS = 296,
+    tCODE = 297,
+    tCOMMSTATUS = 298,
+    tCONST = 299,
+    tCONTEXTHANDLE = 300,
+    tCONTEXTHANDLENOSERIALIZE = 301,
+    tCONTEXTHANDLESERIALIZE = 302,
+    tCONTROL = 303,
+    tCPPQUOTE = 304,
+    tDECODE = 305,
+    tDEFAULT = 306,
+    tDEFAULTBIND = 307,
+    tDEFAULTCOLLELEM = 308,
+    tDEFAULTVALUE = 309,
+    tDEFAULTVTABLE = 310,
+    tDISABLECONSISTENCYCHECK = 311,
+    tDISPLAYBIND = 312,
+    tDISPINTERFACE = 313,
+    tDLLNAME = 314,
+    tDOUBLE = 315,
+    tDUAL = 316,
+    tENABLEALLOCATE = 317,
+    tENCODE = 318,
+    tENDPOINT = 319,
+    tENTRY = 320,
+    tENUM = 321,
+    tERRORSTATUST = 322,
+    tEXPLICITHANDLE = 323,
+    tEXTERN = 324,
+    tFALSE = 325,
+    tFASTCALL = 326,
+    tFAULTSTATUS = 327,
+    tFLOAT = 328,
+    tFORCEALLOCATE = 329,
+    tHANDLE = 330,
+    tHANDLET = 331,
+    tHELPCONTEXT = 332,
+    tHELPFILE = 333,
+    tHELPSTRING = 334,
+    tHELPSTRINGCONTEXT = 335,
+    tHELPSTRINGDLL = 336,
+    tHIDDEN = 337,
+    tHYPER = 338,
+    tID = 339,
+    tIDEMPOTENT = 340,
+    tIGNORE = 341,
+    tIIDIS = 342,
+    tIMMEDIATEBIND = 343,
+    tIMPLICITHANDLE = 344,
+    tIMPORT = 345,
+    tIMPORTLIB = 346,
+    tIN = 347,
+    tIN_LINE = 348,
+    tINLINE = 349,
+    tINPUTSYNC = 350,
+    tINT = 351,
+    tINT3264 = 352,
+    tINT64 = 353,
+    tINTERFACE = 354,
+    tLCID = 355,
+    tLENGTHIS = 356,
+    tLIBRARY = 357,
+    tLICENSED = 358,
+    tLOCAL = 359,
+    tLONG = 360,
+    tMAYBE = 361,
+    tMESSAGE = 362,
+    tMETHODS = 363,
+    tMODULE = 364,
+    tNAMESPACE = 365,
+    tNOCODE = 366,
+    tNONBROWSABLE = 367,
+    tNONCREATABLE = 368,
+    tNONEXTENSIBLE = 369,
+    tNOTIFY = 370,
+    tNOTIFYFLAG = 371,
+    tNULL = 372,
+    tOBJECT = 373,
+    tODL = 374,
+    tOLEAUTOMATION = 375,
+    tOPTIMIZE = 376,
+    tOPTIONAL = 377,
+    tOUT = 378,
+    tPARTIALIGNORE = 379,
+    tPASCAL = 380,
+    tPOINTERDEFAULT = 381,
+    tPROGID = 382,
+    tPROPERTIES = 383,
+    tPROPGET = 384,
+    tPROPPUT = 385,
+    tPROPPUTREF = 386,
+    tPROXY = 387,
+    tPTR = 388,
+    tPUBLIC = 389,
+    tRANGE = 390,
+    tREADONLY = 391,
+    tREF = 392,
+    tREGISTER = 393,
+    tREPRESENTAS = 394,
+    tREQUESTEDIT = 395,
+    tRESTRICTED = 396,
+    tRETVAL = 397,
+    tSAFEARRAY = 398,
+    tSHORT = 399,
+    tSIGNED = 400,
+    tSIZEIS = 401,
+    tSIZEOF = 402,
+    tSMALL = 403,
+    tSOURCE = 404,
+    tSTATIC = 405,
+    tSTDCALL = 406,
+    tSTRICTCONTEXTHANDLE = 407,
+    tSTRING = 408,
+    tSTRUCT = 409,
+    tSWITCH = 410,
+    tSWITCHIS = 411,
+    tSWITCHTYPE = 412,
+    tTHREADING = 413,
+    tTRANSMITAS = 414,
+    tTRUE = 415,
+    tTYPEDEF = 416,
+    tUIDEFAULT = 417,
+    tUNION = 418,
+    tUNIQUE = 419,
+    tUNSIGNED = 420,
+    tUSESGETLASTERROR = 421,
+    tUSERMARSHAL = 422,
+    tUUID = 423,
+    tV1ENUM = 424,
+    tVARARG = 425,
+    tVERSION = 426,
+    tVIPROGID = 427,
+    tVOID = 428,
+    tWCHAR = 429,
+    tWIREMARSHAL = 430,
+    tAPARTMENT = 431,
+    tNEUTRAL = 432,
+    tSINGLE = 433,
+    tFREE = 434,
+    tBOTH = 435,
+    CAST = 436,
+    PPTR = 437,
+    POS = 438,
+    NEG = 439,
+    ADDRESSOF = 440
+  };
 #endif
 
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+
+union YYSTYPE
 {
-/* Line 387 of yacc.c  */
-#line 129 "parser.y"
+#line 129 "parser.y" /* yacc.c:355  */
 
 	attr_t *attr;
 	attr_list_t *attr_list;
@@ -454,37 +449,24 @@
 	struct _decl_spec_t *declspec;
 	enum storage_class stgclass;
 
+#line 453 "parser.tab.c" /* yacc.c:355  */
+};
 
-/* Line 387 of yacc.c  */
-#line 460 "parser.tab.c"
-} YYSTYPE;
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
+
 extern YYSTYPE parser_lval;
 
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int parser_parse (void *YYPARSE_PARAM);
-#else
-int parser_parse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
 int parser_parse (void);
-#else
-int parser_parse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
-#endif /* !YY_PARSER_PARSER_TAB_H_INCLUDED  */
+
 
 /* Copy the second part of user declarations.  */
 
-/* Line 390 of yacc.c  */
-#line 488 "parser.tab.c"
+#line 470 "parser.tab.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -498,11 +480,8 @@
 
 #ifdef YYTYPE_INT8
 typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
 #ifdef YYTYPE_UINT16
@@ -522,8 +501,7 @@
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif ! defined YYSIZE_T
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
@@ -545,11 +523,30 @@
 # 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
+# if (defined __GNUC__                                               \
+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+#  define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
 # endif
 #endif
 
@@ -560,24 +557,25 @@
 # define YYUSE(E) /* empty */
 #endif
 
+#if defined __GNUC__ && 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\"")\
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma ("GCC diagnostic pop")
+#else
+# define YY_INITIAL_VALUE(Value) Value
+#endif
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
 
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(N) (N)
-#else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
-#else
-static int
-YYID (yyi)
-    int yyi;
-#endif
-{
-  return yyi;
-}
-#endif
 
 #if ! defined yyoverflow || YYERROR_VERBOSE
 
@@ -596,8 +594,7 @@
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
 #     ifndef EXIT_SUCCESS
@@ -609,8 +606,8 @@
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -626,7 +623,7 @@
 #  endif
 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined malloc) \
-	     && (defined YYFREE || defined free)))
+             && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 #   ifndef EXIT_SUCCESS
 #    define EXIT_SUCCESS 0
@@ -634,15 +631,13 @@
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined malloc && ! defined EXIT_SUCCESS
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined free && ! defined EXIT_SUCCESS
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
@@ -652,7 +647,7 @@
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
@@ -677,16 +672,16 @@
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
-    do									\
-      {									\
-	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
-	Stack = &yyptr->Stack_alloc;					\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-	yyptr += yynewbytes / sizeof (*yyptr);				\
-      }									\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYSIZE_T yynewbytes;                                            \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                 \
+    while (0)
 
 #endif
 
@@ -705,7 +700,7 @@
           for (yyi = 0; yyi < (Count); yyi++)   \
             (Dst)[yyi] = (Src)[yyi];            \
         }                                       \
-      while (YYID (0))
+      while (0)
 #  endif
 # endif
 #endif /* !YYCOPY_NEEDED */
@@ -721,17 +716,19 @@
 #define YYNNTS  101
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  387
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  679
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   440
 
-#define YYTRANSLATE(YYX)						\
+#define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, without out-of-bounds checking.  */
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -782,174 +779,7 @@
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     5,     6,    12,    15,    18,    22,    25,
-      28,    31,    34,    35,    38,    44,    47,    51,    54,    57,
-      60,    63,    66,    67,    70,    71,    73,    75,    78,    81,
-      83,    86,    88,    90,    93,    95,    98,   100,   103,   106,
-     109,   112,   117,   121,   125,   131,   134,   138,   143,   144,
-     146,   148,   152,   154,   158,   162,   165,   169,   173,   176,
-     177,   179,   183,   185,   189,   194,   196,   200,   201,   203,
-     208,   210,   212,   214,   216,   218,   223,   228,   230,   232,
-     234,   236,   238,   240,   242,   244,   246,   248,   253,   255,
-     257,   259,   264,   266,   268,   270,   275,   280,   282,   284,
-     286,   288,   293,   298,   303,   308,   313,   315,   320,   322,
-     324,   329,   331,   336,   338,   340,   345,   350,   352,   354,
-     356,   358,   360,   362,   364,   366,   368,   370,   372,   374,
-     376,   378,   383,   385,   387,   389,   394,   399,   401,   403,
-     405,   407,   409,   416,   418,   423,   425,   427,   429,   434,
-     436,   438,   440,   445,   450,   455,   460,   462,   464,   469,
-     474,   479,   481,   483,   488,   493,   498,   500,   502,   504,
-     506,   508,   510,   512,   513,   516,   521,   525,   526,   529,
-     531,   533,   537,   541,   543,   549,   551,   555,   556,   558,
-     560,   562,   564,   566,   568,   570,   572,   574,   576,   578,
-     584,   588,   592,   596,   600,   604,   608,   612,   616,   620,
-     624,   628,   632,   636,   640,   644,   648,   652,   656,   659,
-     662,   665,   668,   671,   674,   678,   682,   688,   694,   699,
-     703,   705,   709,   711,   713,   714,   717,   722,   726,   729,
-     732,   733,   736,   739,   741,   745,   748,   750,   754,   757,
-     758,   760,   761,   763,   765,   767,   769,   771,   773,   775,
-     778,   781,   783,   785,   787,   789,   791,   793,   794,   796,
-     798,   801,   803,   806,   809,   811,   813,   815,   818,   821,
-     824,   830,   833,   834,   837,   840,   843,   846,   849,   852,
-     856,   859,   863,   869,   875,   876,   879,   882,   885,   888,
-     895,   904,   907,   910,   913,   916,   919,   922,   928,   930,
-     932,   934,   936,   938,   939,   942,   945,   949,   950,   952,
-     955,   958,   961,   965,   968,   970,   972,   976,   979,   984,
-     988,   991,   993,   997,  1000,  1001,  1003,  1007,  1010,  1012,
-    1016,  1021,  1025,  1028,  1030,  1034,  1037,  1038,  1040,  1042,
-    1046,  1049,  1051,  1055,  1060,  1062,  1066,  1067,  1070,  1073,
-    1075,  1079,  1081,  1085,  1087,  1089,  1091,  1093,  1095,  1097,
-    1099,  1101,  1107,  1109,  1111,  1113,  1115,  1118,  1120,  1123,
-    1125,  1128,  1133,  1139,  1145,  1156,  1158,  1162
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
-{
-     211,     0,    -1,   212,    -1,    -1,   212,   266,   204,   212,
-     205,    -1,   212,   278,    -1,   212,   277,    -1,   212,   263,
-     206,    -1,   212,   265,    -1,   212,   281,    -1,   212,   224,
-      -1,   212,   216,    -1,    -1,   213,   278,    -1,   213,   266,
-     204,   213,   205,    -1,   213,   277,    -1,   213,   263,   206,
-      -1,   213,   265,    -1,   213,   281,    -1,   213,   216,    -1,
-     213,   221,    -1,   213,   224,    -1,    -1,   214,   216,    -1,
-      -1,   206,    -1,   218,    -1,   217,   206,    -1,   256,   206,
-      -1,   220,    -1,   308,   206,    -1,     4,    -1,   242,    -1,
-      66,     3,    -1,   306,    -1,   154,     3,    -1,   309,    -1,
-     163,     3,    -1,   231,   242,    -1,   231,   306,    -1,   231,
-     309,    -1,    49,   207,     9,   208,    -1,    90,     9,   206,
-      -1,   219,   213,    13,    -1,    91,   207,     9,   208,   215,
-      -1,   102,     3,    -1,   231,   222,   204,    -1,   223,   213,
-     205,   215,    -1,    -1,   227,    -1,   228,    -1,   226,   181,
-     228,    -1,   226,    -1,   226,   181,    23,    -1,   231,   286,
-     297,    -1,   286,   297,    -1,   202,   245,   203,    -1,   202,
-     191,   203,    -1,   202,   203,    -1,    -1,   231,    -1,   202,
-     232,   203,    -1,   234,    -1,   232,   181,   234,    -1,   232,
-     203,   202,   234,    -1,     9,    -1,   233,   181,     9,    -1,
-      -1,    24,    -1,    26,   207,     9,   208,    -1,    27,    -1,
-      28,    -1,    30,    -1,    31,    -1,    33,    -1,    36,   207,
-     259,   208,    -1,    38,   207,   246,   208,    -1,    42,    -1,
-      43,    -1,    45,    -1,    46,    -1,    47,    -1,    48,    -1,
-      50,    -1,    51,    -1,    52,    -1,    53,    -1,    54,   207,
-     248,   208,    -1,    55,    -1,    56,    -1,    57,    -1,    59,
-     207,     9,   208,    -1,    61,    -1,    62,    -1,    63,    -1,
-      64,   207,   233,   208,    -1,    65,   207,   248,   208,    -1,
-      68,    -1,    72,    -1,    74,    -1,    75,    -1,    77,   207,
-     247,   208,    -1,    78,   207,     9,   208,    -1,    79,   207,
-       9,   208,    -1,    80,   207,   247,   208,    -1,    81,   207,
-       9,   208,    -1,    82,    -1,    84,   207,   247,   208,    -1,
-      85,    -1,    86,    -1,    87,   207,   245,   208,    -1,    88,
-      -1,    89,   207,   228,   208,    -1,    92,    -1,    95,    -1,
-     101,   207,   243,   208,    -1,   100,   207,   247,   208,    -1,
-     100,    -1,   103,    -1,   104,    -1,   106,    -1,   107,    -1,
-     111,    -1,   112,    -1,   113,    -1,   114,    -1,   115,    -1,
-     116,    -1,   118,    -1,   119,    -1,   120,    -1,   121,   207,
-       9,   208,    -1,   122,    -1,   123,    -1,   124,    -1,   126,
-     207,   305,   208,    -1,   127,   207,     9,   208,    -1,   129,
-      -1,   130,    -1,   131,    -1,   132,    -1,   134,    -1,   135,
-     207,   247,   181,   247,   208,    -1,   136,    -1,   139,   207,
-     307,   208,    -1,   140,    -1,   141,    -1,   142,    -1,   146,
-     207,   243,   208,    -1,   149,    -1,   152,    -1,   153,    -1,
-     156,   207,   245,   208,    -1,   157,   207,   307,   208,    -1,
-     159,   207,   307,   208,    -1,   158,   207,   304,   208,    -1,
-     162,    -1,   166,    -1,   167,   207,   307,   208,    -1,   168,
-     207,   235,   208,    -1,    29,   207,   235,   208,    -1,   169,
-      -1,   170,    -1,   171,   207,   310,   208,    -1,   172,   207,
-       9,   208,    -1,   175,   207,   307,   208,    -1,   305,    -1,
-      12,    -1,     9,    -1,    39,    -1,    71,    -1,   125,    -1,
-     151,    -1,    -1,   237,   238,    -1,    38,   247,   183,   253,
-      -1,    51,   183,   253,    -1,    -1,   240,   181,    -1,   240,
-      -1,   241,    -1,   240,   181,   241,    -1,   259,   209,   247,
-      -1,   259,    -1,    66,   258,   204,   239,   205,    -1,   244,
-      -1,   243,   181,   244,    -1,    -1,   245,    -1,     6,    -1,
-       7,    -1,     8,    -1,    70,    -1,   117,    -1,   160,    -1,
-       9,    -1,    10,    -1,    11,    -1,     3,    -1,   245,   182,
-     245,   183,   245,    -1,   245,    21,   245,    -1,   245,    22,
-     245,    -1,   245,   184,   245,    -1,   245,   185,   245,    -1,
-     245,   186,   245,    -1,   245,    17,   245,    -1,   245,    18,
-     245,    -1,   245,   188,   245,    -1,   245,   187,   245,    -1,
-     245,    19,   245,    -1,   245,    20,   245,    -1,   245,    14,
-     245,    -1,   245,    15,   245,    -1,   245,   190,   245,    -1,
-     245,   189,   245,    -1,   245,   193,   245,    -1,   245,   191,
-     245,    -1,   245,   192,   245,    -1,   194,   245,    -1,   195,
-     245,    -1,   190,   245,    -1,   189,   245,    -1,   186,   245,
-      -1,   191,   245,    -1,   245,    16,     3,    -1,   245,   201,
-       3,    -1,   207,   286,   293,   208,   245,    -1,   147,   207,
-     286,   293,   208,    -1,   245,   202,   245,   203,    -1,   207,
-     245,   208,    -1,   247,    -1,   246,   181,   247,    -1,   245,
-      -1,   245,    -1,    -1,   249,   250,    -1,   230,   286,   302,
-     206,    -1,   230,   309,   206,    -1,   254,   206,    -1,   231,
-     206,    -1,    -1,   252,   251,    -1,   254,   206,    -1,   206,
-      -1,   230,   286,   289,    -1,   230,   306,    -1,   256,    -1,
-     231,   286,   303,    -1,   286,   303,    -1,    -1,   259,    -1,
-      -1,     3,    -1,     5,    -1,     3,    -1,     5,    -1,    34,
-      -1,   174,    -1,   262,    -1,   145,   262,    -1,   165,   262,
-      -1,   165,    -1,    73,    -1,    60,    -1,    32,    -1,    67,
-      -1,    76,    -1,    -1,    96,    -1,    96,    -1,   144,   261,
-      -1,   148,    -1,   105,   261,    -1,    83,   261,    -1,    98,
-      -1,    40,    -1,    97,    -1,    41,     3,    -1,    41,     5,
-      -1,   231,   263,    -1,   264,   204,   267,   205,   215,    -1,
-     110,     3,    -1,    -1,   267,   268,    -1,   230,   278,    -1,
-      58,     3,    -1,    58,     5,    -1,   231,   269,    -1,   128,
-     183,    -1,   271,   254,   206,    -1,   108,   183,    -1,   272,
-     255,   206,    -1,   270,   204,   271,   272,   205,    -1,   270,
-     204,   275,   206,   205,    -1,    -1,   183,     5,    -1,    99,
-       3,    -1,    99,     5,    -1,   231,   275,    -1,   276,   274,
-     204,   214,   205,   215,    -1,   276,   183,     3,   204,   220,
-     214,   205,   215,    -1,   273,   215,    -1,   275,   206,    -1,
-     269,   206,    -1,   109,     3,    -1,   109,     5,    -1,   231,
-     279,    -1,   280,   204,   214,   205,   215,    -1,    69,    -1,
-     150,    -1,   138,    -1,    94,    -1,    44,    -1,    -1,   285,
-     284,    -1,   307,   287,    -1,   288,   307,   287,    -1,    -1,
-     288,    -1,   284,   287,    -1,   283,   287,    -1,   282,   287,
-      -1,   191,   285,   289,    -1,   236,   289,    -1,   290,    -1,
-     259,    -1,   207,   289,   208,    -1,   290,   229,    -1,   290,
-     207,   225,   208,    -1,   191,   285,   293,    -1,   236,   293,
-      -1,   294,    -1,   191,   285,   297,    -1,   236,   297,    -1,
-      -1,   291,    -1,   207,   292,   208,    -1,   294,   229,    -1,
-     229,    -1,   207,   225,   208,    -1,   294,   207,   225,   208,
-      -1,   191,   285,   297,    -1,   236,   297,    -1,   298,    -1,
-     191,   285,   297,    -1,   236,   297,    -1,    -1,   295,    -1,
-     259,    -1,   207,   296,   208,    -1,   298,   229,    -1,   229,
-      -1,   207,   225,   208,    -1,   298,   207,   225,   208,    -1,
-     289,    -1,   299,   181,   289,    -1,    -1,   183,   248,    -1,
-     295,   300,    -1,   301,    -1,   302,   181,   301,    -1,   289,
-      -1,   289,   209,   248,    -1,   176,    -1,   177,    -1,   178,
-      -1,   179,    -1,   180,    -1,   137,    -1,   164,    -1,   133,
-      -1,   154,   258,   204,   249,   205,    -1,   173,    -1,     5,
-      -1,   260,    -1,   242,    -1,    66,     3,    -1,   306,    -1,
-     154,     3,    -1,   309,    -1,   163,     3,    -1,   143,   207,
-     307,   208,    -1,   230,   161,   230,   286,   299,    -1,   163,
-     258,   204,   252,   205,    -1,   163,   258,   155,   207,   254,
-     208,   257,   204,   237,   205,    -1,     6,    -1,     6,   201,
-       6,    -1,     7,    -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
        0,   308,   308,   322,   323,   325,   326,   327,   330,   333,
@@ -1034,7 +864,7 @@
   "tVERSION", "tVIPROGID", "tVOID", "tWCHAR", "tWIREMARSHAL", "tAPARTMENT",
   "tNEUTRAL", "tSINGLE", "tFREE", "tBOTH", "','", "'?'", "':'", "'|'",
   "'^'", "'&'", "'<'", "'>'", "'-'", "'+'", "'*'", "'/'", "'%'", "'!'",
-  "'~'", "ADDRESSOF", "NEG", "POS", "PPTR", "CAST", "'.'", "'['", "']'",
+  "'~'", "CAST", "PPTR", "POS", "NEG", "ADDRESSOF", "'.'", "'['", "']'",
   "'{'", "'}'", "';'", "'('", "')'", "'='", "$accept", "input",
   "gbl_statements", "imp_statements", "int_statements", "semicolon_opt",
   "statement", "typedecl", "cppquote", "import_start", "import",
@@ -1058,13 +888,13 @@
   "any_declarator_no_direct", "m_any_declarator", "any_direct_declarator",
   "declarator_list", "m_bitfield", "struct_declarator",
   "struct_declarator_list", "init_declarator", "threading_type",
-  "pointer_type", "structdef", "type", "typedef", "uniondef", "version", YY_NULL
+  "pointer_type", "structdef", "type", "typedef", "uniondef", "version", YY_NULLPTR
 };
 #endif
 
 # ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
 static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
@@ -1091,188 +921,18 @@
 };
 # endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
-{
-       0,   210,   211,   212,   212,   212,   212,   212,   212,   212,
-     212,   212,   213,   213,   213,   213,   213,   213,   213,   213,
-     213,   213,   214,   214,   215,   215,   216,   216,   216,   216,
-     216,   216,   217,   217,   217,   217,   217,   217,   217,   217,
-     217,   218,   219,   220,   221,   222,   223,   224,   225,   225,
-     226,   226,   227,   227,   228,   228,   229,   229,   229,   230,
-     230,   231,   232,   232,   232,   233,   233,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
-     234,   234,   234,   234,   234,   234,   234,   235,   235,   236,
-     236,   236,   236,   237,   237,   238,   238,   239,   239,   239,
-     240,   240,   241,   241,   242,   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,
-     246,   246,   247,   248,   249,   249,   250,   250,   251,   251,
-     252,   252,   253,   253,   254,   254,   255,   256,   256,   257,
-     257,   258,   258,   258,   259,   259,   260,   260,   260,   260,
-     260,   260,   260,   260,   260,   260,   260,   261,   261,   262,
-     262,   262,   262,   262,   262,   262,   262,   263,   263,   264,
-     265,   266,   267,   267,   268,   269,   269,   270,   271,   271,
-     272,   272,   273,   273,   274,   274,   275,   275,   276,   277,
-     277,   277,   278,   278,   279,   279,   280,   281,   282,   282,
-     282,   283,   284,   285,   285,   286,   286,   287,   287,   288,
-     288,   288,   289,   289,   289,   290,   290,   290,   290,   291,
-     291,   291,   292,   292,   293,   293,   294,   294,   294,   294,
-     294,   295,   295,   295,   296,   296,   297,   297,   298,   298,
-     298,   298,   298,   298,   299,   299,   300,   300,   301,   302,
-     302,   303,   303,   304,   304,   304,   304,   304,   305,   305,
-     305,   306,   307,   307,   307,   307,   307,   307,   307,   307,
-     307,   307,   308,   309,   309,   310,   310,   310
-};
-
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
-{
-       0,     2,     1,     0,     5,     2,     2,     3,     2,     2,
-       2,     2,     0,     2,     5,     2,     3,     2,     2,     2,
-       2,     2,     0,     2,     0,     1,     1,     2,     2,     1,
-       2,     1,     1,     2,     1,     2,     1,     2,     2,     2,
-       2,     4,     3,     3,     5,     2,     3,     4,     0,     1,
-       1,     3,     1,     3,     3,     2,     3,     3,     2,     0,
-       1,     3,     1,     3,     4,     1,     3,     0,     1,     4,
-       1,     1,     1,     1,     1,     4,     4,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     4,     1,     1,
-       1,     4,     1,     1,     1,     4,     4,     1,     1,     1,
-       1,     4,     4,     4,     4,     4,     1,     4,     1,     1,
-       4,     1,     4,     1,     1,     4,     4,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     4,     1,     1,     1,     4,     4,     1,     1,     1,
-       1,     1,     6,     1,     4,     1,     1,     1,     4,     1,
-       1,     1,     4,     4,     4,     4,     1,     1,     4,     4,
-       4,     1,     1,     4,     4,     4,     1,     1,     1,     1,
-       1,     1,     1,     0,     2,     4,     3,     0,     2,     1,
-       1,     3,     3,     1,     5,     1,     3,     0,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     5,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     2,     2,
-       2,     2,     2,     2,     3,     3,     5,     5,     4,     3,
-       1,     3,     1,     1,     0,     2,     4,     3,     2,     2,
-       0,     2,     2,     1,     3,     2,     1,     3,     2,     0,
-       1,     0,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     1,     1,     1,     1,     1,     1,     0,     1,     1,
-       2,     1,     2,     2,     1,     1,     1,     2,     2,     2,
-       5,     2,     0,     2,     2,     2,     2,     2,     2,     3,
-       2,     3,     5,     5,     0,     2,     2,     2,     2,     6,
-       8,     2,     2,     2,     2,     2,     2,     5,     1,     1,
-       1,     1,     1,     0,     2,     2,     3,     0,     1,     2,
-       2,     2,     3,     2,     1,     1,     3,     2,     4,     3,
-       2,     1,     3,     2,     0,     1,     3,     2,     1,     3,
-       4,     3,     2,     1,     3,     2,     0,     1,     1,     3,
-       2,     1,     3,     4,     1,     3,     0,     2,     2,     1,
-       3,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       1,     5,     1,     1,     1,     1,     2,     1,     2,     1,
-       2,     4,     5,     5,    10,     1,     3,     1
-};
-
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
-   Performed when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_uint16 yydefact[] =
-{
-       3,     0,     2,     1,    31,   373,   264,   256,   275,     0,
-     312,     0,     0,   263,   251,   265,   308,   262,   266,   267,
-       0,   311,   269,   276,   274,     0,   267,     0,   310,     0,
-     267,     0,   271,   309,   251,   251,   261,   372,   257,    67,
-      11,     0,    26,    12,    29,    12,    10,     0,    60,   375,
-       0,   374,   258,     0,     0,     8,     0,     0,     0,    24,
-       0,   294,     6,     5,     0,     9,   317,   317,   317,     0,
-       0,   377,   317,     0,   379,   277,   278,     0,   285,   286,
-     376,   253,     0,   268,   273,     0,   296,   297,   272,   281,
-       0,   270,   259,   378,     0,   380,     0,   260,    68,     0,
-      70,    71,     0,    72,    73,    74,     0,     0,    77,    78,
-      79,    80,    81,    82,    83,    84,    85,    86,     0,    88,
-      89,    90,     0,    92,    93,    94,     0,     0,    97,    98,
-      99,   100,     0,     0,     0,     0,     0,   106,     0,   108,
-     109,     0,   111,     0,   113,   114,   117,     0,   118,   119,
-     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
-     130,     0,   132,   133,   134,     0,     0,   137,   138,   139,
-     140,   370,   141,     0,   143,   368,     0,   145,   146,   147,
-       0,   149,   150,   151,     0,     0,     0,     0,   156,   369,
-     157,     0,     0,   161,   162,     0,     0,     0,     0,    62,
-     166,    27,    59,    59,    59,   251,     0,     0,   251,   251,
-       0,   375,   279,   287,   298,   306,     0,   377,   379,    28,
-       7,   282,     3,   303,     0,    25,   301,   302,     0,     0,
-      22,   321,   318,   320,   319,   254,   255,   169,   170,   171,
-     172,   313,     0,     0,   325,   361,   324,   248,   375,   377,
-     317,   379,   315,    30,     0,   177,    42,     0,   234,     0,
-     240,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   187,     0,
-       0,     0,     0,     0,   187,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    67,    61,    43,     0,    19,    20,
-      21,     0,    17,     0,    15,    13,    18,    24,     0,    60,
-     376,    45,   304,   305,   378,   380,    46,   247,    59,    59,
-       0,    59,     0,     0,   295,    22,    59,     0,     0,   323,
-       0,     0,    48,   327,   316,    41,     0,   179,   180,   183,
-     381,    59,    59,    59,     0,   168,   167,     0,     0,   198,
-     189,   190,   191,   195,   196,   197,   192,   193,     0,   194,
-       0,     0,     0,     0,     0,     0,     0,   232,     0,   230,
-     233,     0,     0,    65,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   346,     0,     0,   185,   188,
-       0,     0,     0,     0,     0,     0,     0,     0,   363,   364,
-     365,   366,   367,     0,     0,     0,     0,   385,   387,     0,
-       0,     0,    63,    67,     0,    16,    12,    47,     0,    24,
-       0,   283,     4,   288,     0,     0,     0,     0,     0,     0,
-      59,    24,    23,    60,   314,   322,   326,   362,     0,    58,
-       0,     0,    52,    49,    50,   184,   178,     0,   371,     0,
-     235,     0,   383,    60,   241,     0,    69,   160,    75,     0,
-     222,   221,   220,   223,   218,   219,     0,   334,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    76,    87,    91,     0,    95,    96,   101,   102,   103,
-     104,   105,   107,   110,   112,   346,   313,    48,   351,   346,
-     348,   347,    55,   343,   116,   187,   115,   131,   135,   136,
-       0,   144,   148,   152,   153,   155,   154,   158,   159,     0,
-     163,   164,   165,    64,     0,    59,   354,   382,   280,   284,
-     290,     0,   377,   289,   292,     0,     0,   246,   293,    22,
-      24,   307,    57,    56,   328,     0,   181,   182,     0,   379,
-     249,   239,   238,   334,   229,   313,    48,   338,   334,   335,
-       0,   331,   211,   212,   224,   205,   206,   209,   210,   200,
-     201,     0,   202,   203,   204,   208,   207,   214,   213,   216,
-     217,   215,   225,     0,   231,    66,    54,   346,   313,     0,
-     346,     0,   342,    48,   350,   186,     0,   386,    24,    14,
-       0,   244,   291,    59,   299,    53,    51,   356,   359,     0,
-     237,     0,   250,     0,   334,   313,     0,   346,     0,   330,
-       0,    48,   337,     0,   228,   341,   346,   352,   345,   349,
-       0,   142,    44,   355,    24,     0,   358,     0,   236,   173,
-     227,   329,   346,   339,   333,   336,   226,     0,   199,   344,
-     353,   300,   357,   360,     0,   332,   340,     0,     0,   384,
-     174,     0,    59,    59,   243,   176,     0,   175,   242
-};
-
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
-{
-      -1,     1,     2,   202,   326,   226,   298,    41,    42,    43,
-      44,   299,   210,    45,   300,   441,   442,   443,   444,   508,
-      47,   309,   198,   374,   199,   347,   509,   664,   670,   336,
-     337,   338,   248,   387,   388,   367,   368,   369,   371,   341,
-     450,   454,   343,   675,   676,   546,    50,   621,    82,   510,
-      51,    84,    52,   301,    54,   302,   303,   318,   421,    57,
-      58,   321,   427,    59,   229,    60,    61,   304,   305,   215,
-      64,   306,    66,    67,    68,   327,    69,   231,    70,   245,
-     246,   569,   628,   570,   571,   511,   601,   512,   513,   537,
-     646,   618,   619,   247,   403,   200,   249,    72,    73,   251,
-     409
-};
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
 #define YYPACT_NINF -526
+
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-526)))
+
+#define YYTABLE_NINF -253
+
+#define yytable_value_is_error(Yytable_value) \
+  0
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
     -526,    59,  1737,  -526,  -526,  -526,  -526,  -526,  -526,   163,
@@ -1345,7 +1005,82 @@
     -526,   412,   -86,   -86,  -526,  -526,   390,  -526,  -526
 };
 
-/* YYPGOTO[NTERM-NUM].  */
+  /* 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[] =
+{
+       3,     0,     2,     1,    31,   373,   264,   256,   275,     0,
+     312,     0,     0,   263,   251,   265,   308,   262,   266,   267,
+       0,   311,   269,   276,   274,     0,   267,     0,   310,     0,
+     267,     0,   271,   309,   251,   251,   261,   372,   257,    67,
+      11,     0,    26,    12,    29,    12,    10,     0,    60,   375,
+       0,   374,   258,     0,     0,     8,     0,     0,     0,    24,
+       0,   294,     6,     5,     0,     9,   317,   317,   317,     0,
+       0,   377,   317,     0,   379,   277,   278,     0,   285,   286,
+     376,   253,     0,   268,   273,     0,   296,   297,   272,   281,
+       0,   270,   259,   378,     0,   380,     0,   260,    68,     0,
+      70,    71,     0,    72,    73,    74,     0,     0,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,     0,    88,
+      89,    90,     0,    92,    93,    94,     0,     0,    97,    98,
+      99,   100,     0,     0,     0,     0,     0,   106,     0,   108,
+     109,     0,   111,     0,   113,   114,   117,     0,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+     130,     0,   132,   133,   134,     0,     0,   137,   138,   139,
+     140,   370,   141,     0,   143,   368,     0,   145,   146,   147,
+       0,   149,   150,   151,     0,     0,     0,     0,   156,   369,
+     157,     0,     0,   161,   162,     0,     0,     0,     0,    62,
+     166,    27,    59,    59,    59,   251,     0,     0,   251,   251,
+       0,   375,   279,   287,   298,   306,     0,   377,   379,    28,
+       7,   282,     3,   303,     0,    25,   301,   302,     0,     0,
+      22,   321,   318,   320,   319,   254,   255,   169,   170,   171,
+     172,   313,     0,     0,   325,   361,   324,   248,   375,   377,
+     317,   379,   315,    30,     0,   177,    42,     0,   234,     0,
+     240,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   187,     0,
+       0,     0,     0,     0,   187,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    67,    61,    43,     0,    19,    20,
+      21,     0,    17,     0,    15,    13,    18,    24,     0,    60,
+     376,    45,   304,   305,   378,   380,    46,   247,    59,    59,
+       0,    59,     0,     0,   295,    22,    59,     0,     0,   323,
+       0,     0,    48,   327,   316,    41,     0,   179,   180,   183,
+     381,    59,    59,    59,     0,   168,   167,     0,     0,   198,
+     189,   190,   191,   195,   196,   197,   192,   193,     0,   194,
+       0,     0,     0,     0,     0,     0,     0,   232,     0,   230,
+     233,     0,     0,    65,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   346,     0,     0,   185,   188,
+       0,     0,     0,     0,     0,     0,     0,     0,   363,   364,
+     365,   366,   367,     0,     0,     0,     0,   385,   387,     0,
+       0,     0,    63,    67,     0,    16,    12,    47,     0,    24,
+       0,   283,     4,   288,     0,     0,     0,     0,     0,     0,
+      59,    24,    23,    60,   314,   322,   326,   362,     0,    58,
+       0,     0,    52,    49,    50,   184,   178,     0,   371,     0,
+     235,     0,   383,    60,   241,     0,    69,   160,    75,     0,
+     222,   221,   220,   223,   218,   219,     0,   334,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    76,    87,    91,     0,    95,    96,   101,   102,   103,
+     104,   105,   107,   110,   112,   346,   313,    48,   351,   346,
+     348,   347,    55,   343,   116,   187,   115,   131,   135,   136,
+       0,   144,   148,   152,   153,   155,   154,   158,   159,     0,
+     163,   164,   165,    64,     0,    59,   354,   382,   280,   284,
+     290,     0,   377,   289,   292,     0,     0,   246,   293,    22,
+      24,   307,    57,    56,   328,     0,   181,   182,     0,   379,
+     249,   239,   238,   334,   229,   313,    48,   338,   334,   335,
+       0,   331,   211,   212,   224,   205,   206,   209,   210,   200,
+     201,     0,   202,   203,   204,   208,   207,   214,   213,   216,
+     217,   215,   225,     0,   231,    66,    54,   346,   313,     0,
+     346,     0,   342,    48,   350,   186,     0,   386,    24,    14,
+       0,   244,   291,    59,   299,    53,    51,   356,   359,     0,
+     237,     0,   250,     0,   334,   313,     0,   346,     0,   330,
+       0,    48,   337,     0,   228,   341,   346,   352,   345,   349,
+       0,   142,    44,   355,    24,     0,   358,     0,   236,   173,
+     227,   329,   346,   339,   333,   336,   226,     0,   199,   344,
+     353,   300,   357,   360,     0,   332,   340,     0,     0,   384,
+     174,     0,    59,    59,   243,   176,     0,   175,   242
+};
+
+  /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
     -526,  -526,   359,   -28,  -305,  -300,    -1,  -526,  -526,  -526,
@@ -1361,10 +1096,25 @@
     -526
 };
 
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -253
+  /* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+      -1,     1,     2,   202,   326,   226,   298,    41,    42,    43,
+      44,   299,   210,    45,   300,   441,   442,   443,   444,   508,
+      47,   309,   198,   374,   199,   347,   509,   664,   670,   336,
+     337,   338,   248,   387,   388,   367,   368,   369,   371,   341,
+     450,   454,   343,   675,   676,   546,    50,   621,    82,   510,
+      51,    84,    52,   301,    54,   302,   303,   318,   421,    57,
+      58,   321,   427,    59,   229,    60,    61,   304,   305,   215,
+      64,   306,    66,    67,    68,   327,    69,   231,    70,   245,
+     246,   569,   628,   570,   571,   511,   601,   512,   513,   537,
+     646,   618,   619,   247,   403,   200,   249,    72,    73,   251,
+     409
+};
+
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
       48,    40,   244,    71,   243,    74,    63,   417,   376,    49,
@@ -1677,12 +1427,6 @@
      192,   193,   194,   195,   196,     0,     0,   197
 };
 
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-526)))
-
-#define yytable_value_is_error(Yytable_value) \
-  YYID (0)
-
 static const yytype_int16 yycheck[] =
 {
        2,     2,    69,     2,    69,     2,     2,   307,   269,     2,
@@ -1995,8 +1739,8 @@
      168,   169,   170,   171,   172,    -1,    -1,   175
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
        0,   211,   212,     0,     4,     5,    32,    34,    40,    41,
@@ -2069,30 +1813,104 @@
      238,   247,   183,   183,   206,   253,   254,   253,   206
 };
 
-#define yyerrok		(yyerrstatus = 0)
-#define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		(-2)
-#define YYEOF		0
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint16 yyr1[] =
+{
+       0,   210,   211,   212,   212,   212,   212,   212,   212,   212,
+     212,   212,   213,   213,   213,   213,   213,   213,   213,   213,
+     213,   213,   214,   214,   215,   215,   216,   216,   216,   216,
+     216,   216,   217,   217,   217,   217,   217,   217,   217,   217,
+     217,   218,   219,   220,   221,   222,   223,   224,   225,   225,
+     226,   226,   227,   227,   228,   228,   229,   229,   229,   230,
+     230,   231,   232,   232,   232,   233,   233,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   234,   234,   234,
+     234,   234,   234,   234,   234,   234,   234,   235,   235,   236,
+     236,   236,   236,   237,   237,   238,   238,   239,   239,   239,
+     240,   240,   241,   241,   242,   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,
+     246,   246,   247,   248,   249,   249,   250,   250,   251,   251,
+     252,   252,   253,   253,   254,   254,   255,   256,   256,   257,
+     257,   258,   258,   258,   259,   259,   260,   260,   260,   260,
+     260,   260,   260,   260,   260,   260,   260,   261,   261,   262,
+     262,   262,   262,   262,   262,   262,   262,   263,   263,   264,
+     265,   266,   267,   267,   268,   269,   269,   270,   271,   271,
+     272,   272,   273,   273,   274,   274,   275,   275,   276,   277,
+     277,   277,   278,   278,   279,   279,   280,   281,   282,   282,
+     282,   283,   284,   285,   285,   286,   286,   287,   287,   288,
+     288,   288,   289,   289,   289,   290,   290,   290,   290,   291,
+     291,   291,   292,   292,   293,   293,   294,   294,   294,   294,
+     294,   295,   295,   295,   296,   296,   297,   297,   298,   298,
+     298,   298,   298,   298,   299,   299,   300,   300,   301,   302,
+     302,   303,   303,   304,   304,   304,   304,   304,   305,   305,
+     305,   306,   307,   307,   307,   307,   307,   307,   307,   307,
+     307,   307,   308,   309,   309,   310,   310,   310
+};
 
-#define YYACCEPT	goto yyacceptlab
-#define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrorlab
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     1,     0,     5,     2,     2,     3,     2,     2,
+       2,     2,     0,     2,     5,     2,     3,     2,     2,     2,
+       2,     2,     0,     2,     0,     1,     1,     2,     2,     1,
+       2,     1,     1,     2,     1,     2,     1,     2,     2,     2,
+       2,     4,     3,     3,     5,     2,     3,     4,     0,     1,
+       1,     3,     1,     3,     3,     2,     3,     3,     2,     0,
+       1,     3,     1,     3,     4,     1,     3,     0,     1,     4,
+       1,     1,     1,     1,     1,     4,     4,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     4,     1,     1,
+       1,     4,     1,     1,     1,     4,     4,     1,     1,     1,
+       1,     4,     4,     4,     4,     4,     1,     4,     1,     1,
+       4,     1,     4,     1,     1,     4,     4,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     4,     1,     1,     1,     4,     4,     1,     1,     1,
+       1,     1,     6,     1,     4,     1,     1,     1,     4,     1,
+       1,     1,     4,     4,     4,     4,     1,     1,     4,     4,
+       4,     1,     1,     4,     4,     4,     1,     1,     1,     1,
+       1,     1,     1,     0,     2,     4,     3,     0,     2,     1,
+       1,     3,     3,     1,     5,     1,     3,     0,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     5,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     2,     2,
+       2,     2,     2,     2,     3,     3,     5,     5,     4,     3,
+       1,     3,     1,     1,     0,     2,     4,     3,     2,     2,
+       0,     2,     2,     1,     3,     2,     1,     3,     2,     0,
+       1,     0,     1,     1,     1,     1,     1,     1,     1,     2,
+       2,     1,     1,     1,     1,     1,     1,     0,     1,     1,
+       2,     1,     2,     2,     1,     1,     1,     2,     2,     2,
+       5,     2,     0,     2,     2,     2,     2,     2,     2,     3,
+       2,     3,     5,     5,     0,     2,     2,     2,     2,     6,
+       8,     2,     2,     2,     2,     2,     2,     5,     1,     1,
+       1,     1,     1,     0,     2,     2,     3,     0,     1,     2,
+       2,     2,     3,     2,     1,     1,     3,     2,     4,     3,
+       2,     1,     3,     2,     0,     1,     3,     2,     1,     3,
+       4,     3,     2,     1,     3,     2,     0,     1,     1,     3,
+       2,     1,     3,     4,     1,     3,     0,     2,     2,     1,
+       3,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     5,     1,     1,     1,     1,     2,     1,     2,     1,
+       2,     4,     5,     5,    10,     1,     3,     1
+};
 
 
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  However,
-   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
-   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
-   discussed.  */
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
+#define YYEMPTY         (-2)
+#define YYEOF           0
 
-#define YYFAIL		goto yyerrlab
-#if defined YYFAIL
-  /* This is here to suppress warnings from the GCC cpp's
-     -Wunused-macros.  Normally we don't worry about that warning, but
-     some users do, and we want to make it easy for users to remove
-     YYFAIL uses, which will produce warnings from Bison 2.5.  */
-#endif
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
+
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -2109,27 +1927,15 @@
   else                                                          \
     {                                                           \
       yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;							\
-    }								\
-while (YYID (0))
+      YYERROR;                                                  \
+    }                                                           \
+while (0)
 
 /* Error token number */
-#define YYTERROR	1
-#define YYERRCODE	256
+#define YYTERROR        1
+#define YYERRCODE       256
 
 
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
-
-
-/* YYLEX -- calling `yylex' with the right arguments.  */
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -2139,40 +1945,36 @@
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)			\
-do {						\
-  if (yydebug)					\
-    YYFPRINTF Args;				\
-} while (YYID (0))
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
-do {									  \
-  if (yydebug)								  \
-    {									  \
-      YYFPRINTF (stderr, "%s ", Title);					  \
-      yy_symbol_print (stderr,						  \
-		  Type, Value); \
-      YYFPRINTF (stderr, "\n");						  \
-    }									  \
-} while (YYID (0))
+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Type, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT.  |
+`----------------------------------------*/
+
 static void
 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
 {
   FILE *yyo = yyoutput;
   YYUSE (yyo);
@@ -2181,8 +1983,6 @@
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
 # endif
   YYUSE (yytype);
 }
@@ -2192,22 +1992,11 @@
 | Print this symbol on YYOUTPUT.  |
 `--------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyoutput, "%s %s (",
+             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
   YYFPRINTF (yyoutput, ")");
@@ -2218,16 +2007,8 @@
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -2238,49 +2019,42 @@
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)				\
-do {								\
-  if (yydebug)							\
-    yy_stack_print ((Bottom), (Top));				\
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
+  unsigned long int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-	     yyrule - 1, yylno);
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-		       &(yyvsp[(yyi + 1) - (yynrhs)])
-		       		       );
+      yy_symbol_print (stderr,
+                       yystos[yyssp[yyi + 1 - yynrhs]],
+                       &(yyvsp[(yyi + 1) - (yynrhs)])
+                                              );
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)		\
-do {					\
-  if (yydebug)				\
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
@@ -2294,7 +2068,7 @@
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -2317,15 +2091,8 @@
 #   define yystrlen strlen
 #  else
 /* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static YYSIZE_T
 yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
 {
   YYSIZE_T yylen;
   for (yylen = 0; yystr[yylen]; yylen++)
@@ -2341,16 +2108,8 @@
 #  else
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static char *
 yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
 {
   char *yyd = yydest;
   const char *yys = yysrc;
@@ -2380,27 +2139,27 @@
       char const *yyp = yystr;
 
       for (;;)
-	switch (*++yyp)
-	  {
-	  case '\'':
-	  case ',':
-	    goto do_not_strip_quotes;
+        switch (*++yyp)
+          {
+          case '\'':
+          case ',':
+            goto do_not_strip_quotes;
 
-	  case '\\':
-	    if (*++yyp != '\\')
-	      goto do_not_strip_quotes;
-	    /* Fall through.  */
-	  default:
-	    if (yyres)
-	      yyres[yyn] = *yyp;
-	    yyn++;
-	    break;
+          case '\\':
+            if (*++yyp != '\\')
+              goto do_not_strip_quotes;
+            /* Fall through.  */
+          default:
+            if (yyres)
+              yyres[yyn] = *yyp;
+            yyn++;
+            break;
 
-	  case '"':
-	    if (yyres)
-	      yyres[yyn] = '\0';
-	    return yyn;
-	  }
+          case '"':
+            if (yyres)
+              yyres[yyn] = '\0';
+            return yyn;
+          }
     do_not_strip_quotes: ;
     }
 
@@ -2423,11 +2182,11 @@
 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                 yytype_int16 *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
-  const char *yyformat = YY_NULL;
+  const char *yyformat = YY_NULLPTR;
   /* Arguments of yyformat. */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   /* Number of reported tokens (one for the "unexpected", one per
@@ -2435,10 +2194,6 @@
   int yycount = 0;
 
   /* There are many possibilities here to consider:
-     - Assume YYFAIL is not used.  It's too flawed to consider.  See
-       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
-       for details.  YYERROR is fine as it does not invoke this
-       function.
      - If this state is a consistent state with a default action, then
        the only way this function was invoked is if the default action
        is an error action.  In that case, don't check for expected
@@ -2488,7 +2243,7 @@
                   }
                 yyarg[yycount++] = yytname[yyx];
                 {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
                   if (! (yysize <= yysize1
                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
                     return 2;
@@ -2555,26 +2310,17 @@
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   YYUSE (yytype);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
@@ -2583,18 +2329,8 @@
 /* The lookahead symbol.  */
 int yychar;
 
-
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
 /* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
-
+YYSTYPE yylval;
 /* Number of syntax errors so far.  */
 int yynerrs;
 
@@ -2603,35 +2339,16 @@
 | yyparse.  |
 `----------*/
 
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
     int yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
        Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
@@ -2699,23 +2416,23 @@
 
 #ifdef 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.  */
-	YYSTYPE *yyvs1 = yyvs;
-	yytype_int16 *yyss1 = yyss;
+        /* Give user a chance to reallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        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),
-		    &yystacksize);
+        /* 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),
+                    &yystacksize);
 
-	yyss = yyss1;
-	yyvs = yyvs1;
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
@@ -2723,22 +2440,22 @@
 # else
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-	goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-	yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-	yytype_int16 *yyss1 = yyss;
-	union yyalloc *yyptr =
-	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-	if (! yyptr)
-	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss_alloc, yyss);
-	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yytype_int16 *yyss1 = yyss;
+        union yyalloc *yyptr =
+          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-	if (yyss1 != yyssa)
-	  YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
 #endif /* no yyoverflow */
@@ -2747,10 +2464,10 @@
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+                  (unsigned long int) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
@@ -2779,7 +2496,7 @@
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
@@ -2844,7 +2561,7 @@
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -2858,2353 +2575,2352 @@
   switch (yyn)
     {
         case 2:
-/* Line 1787 of yacc.c  */
-#line 308 "parser.y"
+#line 308 "parser.y" /* yacc.c:1646  */
     { fix_incomplete();
-						  check_statements((yyvsp[(1) - (1)].stmt_list), FALSE);
-						  check_all_user_types((yyvsp[(1) - (1)].stmt_list));
-						  write_header((yyvsp[(1) - (1)].stmt_list));
-						  write_id_data((yyvsp[(1) - (1)].stmt_list));
-						  write_proxies((yyvsp[(1) - (1)].stmt_list));
-						  write_client((yyvsp[(1) - (1)].stmt_list));
-						  write_server((yyvsp[(1) - (1)].stmt_list));
-						  write_regscript((yyvsp[(1) - (1)].stmt_list));
-						  write_dlldata((yyvsp[(1) - (1)].stmt_list));
-						  write_local_stubs((yyvsp[(1) - (1)].stmt_list));
+						  check_statements((yyvsp[0].stmt_list), FALSE);
+						  check_all_user_types((yyvsp[0].stmt_list));
+						  write_header((yyvsp[0].stmt_list));
+						  write_id_data((yyvsp[0].stmt_list));
+						  write_proxies((yyvsp[0].stmt_list));
+						  write_client((yyvsp[0].stmt_list));
+						  write_server((yyvsp[0].stmt_list));
+						  write_regscript((yyvsp[0].stmt_list));
+						  write_dlldata((yyvsp[0].stmt_list));
+						  write_local_stubs((yyvsp[0].stmt_list));
 						}
+#line 2592 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 3:
-/* Line 1787 of yacc.c  */
-#line 322 "parser.y"
+#line 322 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = NULL; }
+#line 2598 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 4:
-/* Line 1787 of yacc.c  */
-#line 324 "parser.y"
-    { (yyval.stmt_list) = append_statements((yyvsp[(1) - (5)].stmt_list), (yyvsp[(4) - (5)].stmt_list)); }
+#line 324 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statements((yyvsp[-4].stmt_list), (yyvsp[-1].stmt_list)); }
+#line 2604 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 5:
-/* Line 1787 of yacc.c  */
-#line 325 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_reference((yyvsp[(2) - (2)].type))); }
+#line 325 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
+#line 2610 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 6:
-/* Line 1787 of yacc.c  */
-#line 326 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_type_decl((yyvsp[(2) - (2)].type))); }
+#line 326 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
+#line 2616 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 7:
-/* Line 1787 of yacc.c  */
-#line 327 "parser.y"
-    { (yyval.stmt_list) = (yyvsp[(1) - (3)].stmt_list);
-						  reg_type((yyvsp[(2) - (3)].type), (yyvsp[(2) - (3)].type)->name, 0);
+#line 327 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = (yyvsp[-2].stmt_list);
+						  reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, 0);
 						}
+#line 2624 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 8:
-/* Line 1787 of yacc.c  */
-#line 330 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_type_decl((yyvsp[(2) - (2)].type)));
-						  reg_type((yyvsp[(2) - (2)].type), (yyvsp[(2) - (2)].type)->name, 0);
+#line 330 "parser.y" /* yacc.c:1646  */
+    { (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, 0);
 						}
+#line 2632 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 9:
-/* Line 1787 of yacc.c  */
-#line 333 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_module((yyvsp[(2) - (2)].type))); }
+#line 333 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
+#line 2638 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 10:
-/* Line 1787 of yacc.c  */
-#line 334 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_library((yyvsp[(2) - (2)].typelib))); }
+#line 334 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
+#line 2644 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 11:
-/* Line 1787 of yacc.c  */
-#line 335 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), (yyvsp[(2) - (2)].statement)); }
+#line 335 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
+#line 2650 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 12:
-/* Line 1787 of yacc.c  */
-#line 338 "parser.y"
+#line 338 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = NULL; }
+#line 2656 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 13:
-/* Line 1787 of yacc.c  */
-#line 339 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_reference((yyvsp[(2) - (2)].type))); }
+#line 339 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
+#line 2662 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 14:
-/* Line 1787 of yacc.c  */
-#line 341 "parser.y"
-    { (yyval.stmt_list) = append_statements((yyvsp[(1) - (5)].stmt_list), (yyvsp[(4) - (5)].stmt_list)); }
+#line 341 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statements((yyvsp[-4].stmt_list), (yyvsp[-1].stmt_list)); }
+#line 2668 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 15:
-/* Line 1787 of yacc.c  */
-#line 342 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_type_decl((yyvsp[(2) - (2)].type))); }
+#line 342 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
+#line 2674 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 16:
-/* Line 1787 of yacc.c  */
-#line 343 "parser.y"
-    { (yyval.stmt_list) = (yyvsp[(1) - (3)].stmt_list); reg_type((yyvsp[(2) - (3)].type), (yyvsp[(2) - (3)].type)->name, 0); }
+#line 343 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, 0); }
+#line 2680 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 17:
-/* Line 1787 of yacc.c  */
-#line 344 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_type_decl((yyvsp[(2) - (2)].type)));
-						  reg_type((yyvsp[(2) - (2)].type), (yyvsp[(2) - (2)].type)->name, 0);
+#line 344 "parser.y" /* yacc.c:1646  */
+    { (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, 0);
 						}
+#line 2688 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 18:
-/* Line 1787 of yacc.c  */
-#line 347 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_module((yyvsp[(2) - (2)].type))); }
+#line 347 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
+#line 2694 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 19:
-/* Line 1787 of yacc.c  */
-#line 348 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), (yyvsp[(2) - (2)].statement)); }
+#line 348 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
+#line 2700 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 20:
-/* Line 1787 of yacc.c  */
-#line 349 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_importlib((yyvsp[(2) - (2)].str))); }
+#line 349 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_importlib((yyvsp[0].str))); }
+#line 2706 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 21:
-/* Line 1787 of yacc.c  */
-#line 350 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), make_statement_library((yyvsp[(2) - (2)].typelib))); }
+#line 350 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
+#line 2712 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 22:
-/* Line 1787 of yacc.c  */
-#line 353 "parser.y"
+#line 353 "parser.y" /* yacc.c:1646  */
     { (yyval.stmt_list) = NULL; }
+#line 2718 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 23:
-/* Line 1787 of yacc.c  */
-#line 354 "parser.y"
-    { (yyval.stmt_list) = append_statement((yyvsp[(1) - (2)].stmt_list), (yyvsp[(2) - (2)].statement)); }
+#line 354 "parser.y" /* yacc.c:1646  */
+    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
+#line 2724 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 26:
-/* Line 1787 of yacc.c  */
-#line 362 "parser.y"
-    { (yyval.statement) = make_statement_cppquote((yyvsp[(1) - (1)].str)); }
+#line 362 "parser.y" /* yacc.c:1646  */
+    { (yyval.statement) = make_statement_cppquote((yyvsp[0].str)); }
+#line 2730 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 27:
-/* Line 1787 of yacc.c  */
-#line 363 "parser.y"
-    { (yyval.statement) = make_statement_type_decl((yyvsp[(1) - (2)].type)); }
+#line 363 "parser.y" /* yacc.c:1646  */
+    { (yyval.statement) = make_statement_type_decl((yyvsp[-1].type)); }
+#line 2736 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 28:
-/* Line 1787 of yacc.c  */
-#line 364 "parser.y"
-    { (yyval.statement) = make_statement_declaration((yyvsp[(1) - (2)].var)); }
+#line 364 "parser.y" /* yacc.c:1646  */
+    { (yyval.statement) = make_statement_declaration((yyvsp[-1].var)); }
+#line 2742 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 29:
-/* Line 1787 of yacc.c  */
-#line 365 "parser.y"
-    { (yyval.statement) = make_statement_import((yyvsp[(1) - (1)].str)); }
+#line 365 "parser.y" /* yacc.c:1646  */
+    { (yyval.statement) = make_statement_import((yyvsp[0].str)); }
+#line 2748 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 30:
-/* Line 1787 of yacc.c  */
-#line 366 "parser.y"
-    { (yyval.statement) = (yyvsp[(1) - (2)].statement); }
+#line 366 "parser.y" /* yacc.c:1646  */
+    { (yyval.statement) = (yyvsp[-1].statement); }
+#line 2754 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 31:
-/* Line 1787 of yacc.c  */
-#line 367 "parser.y"
-    { (yyval.statement) = make_statement_pragma((yyvsp[(1) - (1)].str)); }
+#line 367 "parser.y" /* yacc.c:1646  */
+    { (yyval.statement) = make_statement_pragma((yyvsp[0].str)); }
+#line 2760 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 33:
-/* Line 1787 of yacc.c  */
-#line 372 "parser.y"
-    { (yyval.type) = type_new_enum((yyvsp[(2) - (2)].str), FALSE, NULL); }
+#line 372 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_enum((yyvsp[0].str), FALSE, NULL); }
+#line 2766 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 35:
-/* Line 1787 of yacc.c  */
-#line 374 "parser.y"
-    { (yyval.type) = type_new_struct((yyvsp[(2) - (2)].str), FALSE, NULL); }
+#line 374 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_struct((yyvsp[0].str), FALSE, NULL); }
+#line 2772 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 37:
-/* Line 1787 of yacc.c  */
-#line 376 "parser.y"
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (2)].str), FALSE, NULL); }
+#line 376 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
+#line 2778 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 38:
-/* Line 1787 of yacc.c  */
-#line 377 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[(1) - (2)].attr_list)); }
+#line 377 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[-1].attr_list)); }
+#line 2784 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 39:
-/* Line 1787 of yacc.c  */
-#line 378 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[(1) - (2)].attr_list)); }
+#line 378 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[-1].attr_list)); }
+#line 2790 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 40:
-/* Line 1787 of yacc.c  */
-#line 379 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type); (yyval.type)->attrs = check_union_attrs((yyvsp[(1) - (2)].attr_list)); }
+#line 379 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_union_attrs((yyvsp[-1].attr_list)); }
+#line 2796 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 41:
-/* Line 1787 of yacc.c  */
-#line 382 "parser.y"
-    { (yyval.str) = (yyvsp[(3) - (4)].str); }
+#line 382 "parser.y" /* yacc.c:1646  */
+    { (yyval.str) = (yyvsp[-1].str); }
+#line 2802 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 42:
-/* Line 1787 of yacc.c  */
-#line 384 "parser.y"
+#line 384 "parser.y" /* yacc.c:1646  */
     { assert(yychar == YYEMPTY);
 						  (yyval.import) = xmalloc(sizeof(struct _import_t));
-						  (yyval.import)->name = (yyvsp[(2) - (3)].str);
-						  (yyval.import)->import_performed = do_import((yyvsp[(2) - (3)].str));
+						  (yyval.import)->name = (yyvsp[-1].str);
+						  (yyval.import)->import_performed = do_import((yyvsp[-1].str));
 						  if (!(yyval.import)->import_performed) yychar = aEOF;
 						}
+#line 2813 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 43:
-/* Line 1787 of yacc.c  */
-#line 392 "parser.y"
-    { (yyval.str) = (yyvsp[(1) - (3)].import)->name;
-						  if ((yyvsp[(1) - (3)].import)->import_performed) pop_import();
-						  free((yyvsp[(1) - (3)].import));
+#line 392 "parser.y" /* yacc.c:1646  */
+    { (yyval.str) = (yyvsp[-2].import)->name;
+						  if ((yyvsp[-2].import)->import_performed) pop_import();
+						  free((yyvsp[-2].import));
 						}
+#line 2822 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 44:
-/* Line 1787 of yacc.c  */
-#line 399 "parser.y"
-    { (yyval.str) = (yyvsp[(3) - (5)].str); if(!parse_only) add_importlib((yyvsp[(3) - (5)].str)); }
+#line 399 "parser.y" /* yacc.c:1646  */
+    { (yyval.str) = (yyvsp[-2].str); if(!parse_only) add_importlib((yyvsp[-2].str)); }
+#line 2828 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 45:
-/* Line 1787 of yacc.c  */
-#line 402 "parser.y"
-    { (yyval.str) = (yyvsp[(2) - (2)].str); }
+#line 402 "parser.y" /* yacc.c:1646  */
+    { (yyval.str) = (yyvsp[0].str); }
+#line 2834 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 46:
-/* Line 1787 of yacc.c  */
-#line 404 "parser.y"
-    { (yyval.typelib) = make_library((yyvsp[(2) - (3)].str), check_library_attrs((yyvsp[(2) - (3)].str), (yyvsp[(1) - (3)].attr_list)));
+#line 404 "parser.y" /* yacc.c:1646  */
+    { (yyval.typelib) = make_library((yyvsp[-1].str), check_library_attrs((yyvsp[-1].str), (yyvsp[-2].attr_list)));
 						  if (!parse_only) start_typelib((yyval.typelib));
 						}
+#line 2842 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 47:
-/* Line 1787 of yacc.c  */
-#line 409 "parser.y"
-    { (yyval.typelib) = (yyvsp[(1) - (4)].typelib);
-						  (yyval.typelib)->stmts = (yyvsp[(2) - (4)].stmt_list);
+#line 409 "parser.y" /* yacc.c:1646  */
+    { (yyval.typelib) = (yyvsp[-3].typelib);
+						  (yyval.typelib)->stmts = (yyvsp[-2].stmt_list);
 						  if (!parse_only) end_typelib();
 						}
+#line 2851 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 48:
-/* Line 1787 of yacc.c  */
-#line 415 "parser.y"
+#line 415 "parser.y" /* yacc.c:1646  */
     { (yyval.var_list) = NULL; }
+#line 2857 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 50:
-/* Line 1787 of yacc.c  */
-#line 419 "parser.y"
-    { check_arg_attrs((yyvsp[(1) - (1)].var)); (yyval.var_list) = append_var( NULL, (yyvsp[(1) - (1)].var) ); }
+#line 419 "parser.y" /* yacc.c:1646  */
+    { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); }
+#line 2863 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 51:
-/* Line 1787 of yacc.c  */
-#line 420 "parser.y"
-    { check_arg_attrs((yyvsp[(3) - (3)].var)); (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(3) - (3)].var) ); }
+#line 420 "parser.y" /* yacc.c:1646  */
+    { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); }
+#line 2869 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 53:
-/* Line 1787 of yacc.c  */
-#line 424 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), make_var(strdup("...")) ); }
+#line 424 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), make_var(strdup("...")) ); }
+#line 2875 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 54:
-/* Line 1787 of yacc.c  */
-#line 428 "parser.y"
-    { if ((yyvsp[(2) - (3)].declspec)->stgclass != STG_NONE && (yyvsp[(2) - (3)].declspec)->stgclass != STG_REGISTER)
+#line 428 "parser.y" /* yacc.c:1646  */
+    { 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[(1) - (3)].attr_list), (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), TRUE);
-						  free((yyvsp[(2) - (3)].declspec)); free((yyvsp[(3) - (3)].declarator));
+						  (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
+						  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
 						}
+#line 2885 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 55:
-/* Line 1787 of yacc.c  */
-#line 433 "parser.y"
-    { if ((yyvsp[(1) - (2)].declspec)->stgclass != STG_NONE && (yyvsp[(1) - (2)].declspec)->stgclass != STG_REGISTER)
+#line 433 "parser.y" /* yacc.c:1646  */
+    { 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) - (2)].declspec), (yyvsp[(2) - (2)].declarator), TRUE);
-						  free((yyvsp[(1) - (2)].declspec)); free((yyvsp[(2) - (2)].declarator));
+						  (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
+						  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
 						}
+#line 2895 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 56:
-/* Line 1787 of yacc.c  */
-#line 440 "parser.y"
-    { (yyval.expr) = (yyvsp[(2) - (3)].expr);
+#line 440 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = (yyvsp[-1].expr);
 						  if (!(yyval.expr)->is_const)
 						      error_loc("array dimension is not an integer constant\n");
 						}
+#line 2904 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 57:
-/* Line 1787 of yacc.c  */
-#line 444 "parser.y"
+#line 444 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 2910 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 58:
-/* Line 1787 of yacc.c  */
-#line 445 "parser.y"
+#line 445 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 2916 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 59:
-/* Line 1787 of yacc.c  */
-#line 448 "parser.y"
+#line 448 "parser.y" /* yacc.c:1646  */
     { (yyval.attr_list) = NULL; }
+#line 2922 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 61:
-/* Line 1787 of yacc.c  */
-#line 453 "parser.y"
-    { (yyval.attr_list) = (yyvsp[(2) - (3)].attr_list); }
+#line 453 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr_list) = (yyvsp[-1].attr_list); }
+#line 2928 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 62:
-/* Line 1787 of yacc.c  */
-#line 456 "parser.y"
-    { (yyval.attr_list) = append_attr( NULL, (yyvsp[(1) - (1)].attr) ); }
+#line 456 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); }
+#line 2934 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 63:
-/* Line 1787 of yacc.c  */
-#line 457 "parser.y"
-    { (yyval.attr_list) = append_attr( (yyvsp[(1) - (3)].attr_list), (yyvsp[(3) - (3)].attr) ); }
+#line 457 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); }
+#line 2940 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 64:
-/* Line 1787 of yacc.c  */
-#line 458 "parser.y"
-    { (yyval.attr_list) = append_attr( (yyvsp[(1) - (4)].attr_list), (yyvsp[(4) - (4)].attr) ); }
+#line 458 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); }
+#line 2946 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 65:
-/* Line 1787 of yacc.c  */
-#line 461 "parser.y"
-    { (yyval.str_list) = append_str( NULL, (yyvsp[(1) - (1)].str) ); }
+#line 461 "parser.y" /* yacc.c:1646  */
+    { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); }
+#line 2952 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 66:
-/* Line 1787 of yacc.c  */
-#line 462 "parser.y"
-    { (yyval.str_list) = append_str( (yyvsp[(1) - (3)].str_list), (yyvsp[(3) - (3)].str) ); }
+#line 462 "parser.y" /* yacc.c:1646  */
+    { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); }
+#line 2958 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 67:
-/* Line 1787 of yacc.c  */
-#line 465 "parser.y"
+#line 465 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = NULL; }
+#line 2964 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 68:
-/* Line 1787 of yacc.c  */
-#line 466 "parser.y"
+#line 466 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_AGGREGATABLE); }
+#line 2970 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 69:
-/* Line 1787 of yacc.c  */
-#line 467 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[(3) - (4)].str)); }
+#line 467 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[-1].str)); }
+#line 2976 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 70:
-/* Line 1787 of yacc.c  */
-#line 468 "parser.y"
+#line 468 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_APPOBJECT); }
+#line 2982 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 71:
-/* Line 1787 of yacc.c  */
-#line 469 "parser.y"
+#line 469 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_ASYNC); }
+#line 2988 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 72:
-/* Line 1787 of yacc.c  */
-#line 470 "parser.y"
+#line 470 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); }
+#line 2994 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 73:
-/* Line 1787 of yacc.c  */
-#line 471 "parser.y"
+#line 471 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_BINDABLE); }
+#line 3000 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 74:
-/* Line 1787 of yacc.c  */
-#line 472 "parser.y"
+#line 472 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_BROADCAST); }
+#line 3006 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 75:
-/* Line 1787 of yacc.c  */
-#line 473 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[(3) - (4)].var)); }
+#line 473 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[-1].var)); }
+#line 3012 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 76:
-/* Line 1787 of yacc.c  */
-#line 474 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[(3) - (4)].expr_list)); }
+#line 474 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[-1].expr_list)); }
+#line 3018 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 77:
-/* Line 1787 of yacc.c  */
-#line 475 "parser.y"
+#line 475 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_CODE); }
+#line 3024 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 78:
-/* Line 1787 of yacc.c  */
-#line 476 "parser.y"
+#line 476 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_COMMSTATUS); }
+#line 3030 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 79:
-/* Line 1787 of yacc.c  */
-#line 477 "parser.y"
+#line 477 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); }
+#line 3036 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 80:
-/* Line 1787 of yacc.c  */
-#line 478 "parser.y"
+#line 478 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
+#line 3042 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 81:
-/* Line 1787 of yacc.c  */
-#line 479 "parser.y"
+#line 479 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
+#line 3048 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 82:
-/* Line 1787 of yacc.c  */
-#line 480 "parser.y"
+#line 480 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_CONTROL); }
+#line 3054 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 83:
-/* Line 1787 of yacc.c  */
-#line 481 "parser.y"
+#line 481 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_DECODE); }
+#line 3060 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 84:
-/* Line 1787 of yacc.c  */
-#line 482 "parser.y"
+#line 482 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_DEFAULT); }
+#line 3066 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 85:
-/* Line 1787 of yacc.c  */
-#line 483 "parser.y"
+#line 483 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_DEFAULTBIND); }
+#line 3072 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 86:
-/* Line 1787 of yacc.c  */
-#line 484 "parser.y"
+#line 484 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); }
+#line 3078 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 87:
-/* Line 1787 of yacc.c  */
-#line 485 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[(3) - (4)].expr)); }
+#line 485 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[-1].expr)); }
+#line 3084 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 88:
-/* Line 1787 of yacc.c  */
-#line 486 "parser.y"
+#line 486 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); }
+#line 3090 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 89:
-/* Line 1787 of yacc.c  */
-#line 487 "parser.y"
+#line 487 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_DISABLECONSISTENCYCHECK); }
+#line 3096 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 90:
-/* Line 1787 of yacc.c  */
-#line 488 "parser.y"
+#line 488 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_DISPLAYBIND); }
+#line 3102 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 91:
-/* Line 1787 of yacc.c  */
-#line 489 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[(3) - (4)].str)); }
+#line 489 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[-1].str)); }
+#line 3108 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 92:
-/* Line 1787 of yacc.c  */
-#line 490 "parser.y"
+#line 490 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_DUAL); }
+#line 3114 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 93:
-/* Line 1787 of yacc.c  */
-#line 491 "parser.y"
+#line 491 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_ENABLEALLOCATE); }
+#line 3120 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 94:
-/* Line 1787 of yacc.c  */
-#line 492 "parser.y"
+#line 492 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_ENCODE); }
+#line 3126 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 95:
-/* Line 1787 of yacc.c  */
-#line 493 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[(3) - (4)].str_list)); }
+#line 493 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[-1].str_list)); }
+#line 3132 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 96:
-/* Line 1787 of yacc.c  */
-#line 494 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[(3) - (4)].expr)); }
+#line 494 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[-1].expr)); }
+#line 3138 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 97:
-/* Line 1787 of yacc.c  */
-#line 495 "parser.y"
+#line 495 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
+#line 3144 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 98:
-/* Line 1787 of yacc.c  */
-#line 496 "parser.y"
+#line 496 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_FAULTSTATUS); }
+#line 3150 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 99:
-/* Line 1787 of yacc.c  */
-#line 497 "parser.y"
+#line 497 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_FORCEALLOCATE); }
+#line 3156 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 100:
-/* Line 1787 of yacc.c  */
-#line 498 "parser.y"
+#line 498 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_HANDLE); }
+#line 3162 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 101:
-/* Line 1787 of yacc.c  */
-#line 499 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[(3) - (4)].expr)); }
+#line 499 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[-1].expr)); }
+#line 3168 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 102:
-/* Line 1787 of yacc.c  */
-#line 500 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[(3) - (4)].str)); }
+#line 500 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[-1].str)); }
+#line 3174 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 103:
-/* Line 1787 of yacc.c  */
-#line 501 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[(3) - (4)].str)); }
+#line 501 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[-1].str)); }
+#line 3180 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 104:
-/* Line 1787 of yacc.c  */
-#line 502 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[(3) - (4)].expr)); }
+#line 502 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr)); }
+#line 3186 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 105:
-/* Line 1787 of yacc.c  */
-#line 503 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[(3) - (4)].str)); }
+#line 503 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[-1].str)); }
+#line 3192 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 106:
-/* Line 1787 of yacc.c  */
-#line 504 "parser.y"
+#line 504 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_HIDDEN); }
+#line 3198 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 107:
-/* Line 1787 of yacc.c  */
-#line 505 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[(3) - (4)].expr)); }
+#line 505 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[-1].expr)); }
+#line 3204 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 108:
-/* Line 1787 of yacc.c  */
-#line 506 "parser.y"
+#line 506 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_IDEMPOTENT); }
+#line 3210 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 109:
-/* Line 1787 of yacc.c  */
-#line 507 "parser.y"
+#line 507 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_IGNORE); }
+#line 3216 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 110:
-/* Line 1787 of yacc.c  */
-#line 508 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[(3) - (4)].expr)); }
+#line 508 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[-1].expr)); }
+#line 3222 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 111:
-/* Line 1787 of yacc.c  */
-#line 509 "parser.y"
+#line 509 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); }
+#line 3228 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 112:
-/* Line 1787 of yacc.c  */
-#line 510 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[(3) - (4)].var)); }
+#line 510 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var)); }
+#line 3234 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 113:
-/* Line 1787 of yacc.c  */
-#line 511 "parser.y"
+#line 511 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_IN); }
+#line 3240 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 114:
-/* Line 1787 of yacc.c  */
-#line 512 "parser.y"
+#line 512 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_INPUTSYNC); }
+#line 3246 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 115:
-/* Line 1787 of yacc.c  */
-#line 513 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[(3) - (4)].expr_list)); }
+#line 513 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[-1].expr_list)); }
+#line 3252 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 116:
-/* Line 1787 of yacc.c  */
-#line 514 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[(3) - (4)].expr)); }
+#line 514 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[-1].expr)); }
+#line 3258 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 117:
-/* Line 1787 of yacc.c  */
-#line 515 "parser.y"
+#line 515 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_PARAMLCID); }
+#line 3264 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 118:
-/* Line 1787 of yacc.c  */
-#line 516 "parser.y"
+#line 516 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_LICENSED); }
+#line 3270 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 119:
-/* Line 1787 of yacc.c  */
-#line 517 "parser.y"
+#line 517 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_LOCAL); }
+#line 3276 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 120:
-/* Line 1787 of yacc.c  */
-#line 518 "parser.y"
+#line 518 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_MAYBE); }
+#line 3282 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 121:
-/* Line 1787 of yacc.c  */
-#line 519 "parser.y"
+#line 519 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_MESSAGE); }
+#line 3288 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 122:
-/* Line 1787 of yacc.c  */
-#line 520 "parser.y"
+#line 520 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_NOCODE); }
+#line 3294 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 123:
-/* Line 1787 of yacc.c  */
-#line 521 "parser.y"
+#line 521 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_NONBROWSABLE); }
+#line 3300 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 124:
-/* Line 1787 of yacc.c  */
-#line 522 "parser.y"
+#line 522 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_NONCREATABLE); }
+#line 3306 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 125:
-/* Line 1787 of yacc.c  */
-#line 523 "parser.y"
+#line 523 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); }
+#line 3312 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 126:
-/* Line 1787 of yacc.c  */
-#line 524 "parser.y"
+#line 524 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_NOTIFY); }
+#line 3318 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 127:
-/* Line 1787 of yacc.c  */
-#line 525 "parser.y"
+#line 525 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_NOTIFYFLAG); }
+#line 3324 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 128:
-/* Line 1787 of yacc.c  */
-#line 526 "parser.y"
+#line 526 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_OBJECT); }
+#line 3330 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 129:
-/* Line 1787 of yacc.c  */
-#line 527 "parser.y"
+#line 527 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_ODL); }
+#line 3336 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 130:
-/* Line 1787 of yacc.c  */
-#line 528 "parser.y"
+#line 528 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); }
+#line 3342 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 131:
-/* Line 1787 of yacc.c  */
-#line 529 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[(3) - (4)].str)); }
+#line 529 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[-1].str)); }
+#line 3348 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 132:
-/* Line 1787 of yacc.c  */
-#line 530 "parser.y"
+#line 530 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_OPTIONAL); }
+#line 3354 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 133:
-/* Line 1787 of yacc.c  */
-#line 531 "parser.y"
+#line 531 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_OUT); }
+#line 3360 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 134:
-/* Line 1787 of yacc.c  */
-#line 532 "parser.y"
+#line 532 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_PARTIALIGNORE); }
+#line 3366 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 135:
-/* Line 1787 of yacc.c  */
-#line 533 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[(3) - (4)].num)); }
+#line 533 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[-1].num)); }
+#line 3372 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 136:
-/* Line 1787 of yacc.c  */
-#line 534 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[(3) - (4)].str)); }
+#line 534 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[-1].str)); }
+#line 3378 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 137:
-/* Line 1787 of yacc.c  */
-#line 535 "parser.y"
+#line 535 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_PROPGET); }
+#line 3384 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 138:
-/* Line 1787 of yacc.c  */
-#line 536 "parser.y"
+#line 536 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_PROPPUT); }
+#line 3390 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 139:
-/* Line 1787 of yacc.c  */
-#line 537 "parser.y"
+#line 537 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_PROPPUTREF); }
+#line 3396 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 140:
-/* Line 1787 of yacc.c  */
-#line 538 "parser.y"
+#line 538 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_PROXY); }
+#line 3402 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 141:
-/* Line 1787 of yacc.c  */
-#line 539 "parser.y"
+#line 539 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_PUBLIC); }
+#line 3408 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 142:
-/* Line 1787 of yacc.c  */
-#line 541 "parser.y"
-    { expr_list_t *list = append_expr( NULL, (yyvsp[(3) - (6)].expr) );
-						  list = append_expr( list, (yyvsp[(5) - (6)].expr) );
+#line 541 "parser.y" /* yacc.c:1646  */
+    { 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 3416 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 143:
-/* Line 1787 of yacc.c  */
-#line 544 "parser.y"
+#line 544 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_READONLY); }
+#line 3422 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 144:
-/* Line 1787 of yacc.c  */
-#line 545 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[(3) - (4)].type)); }
+#line 545 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[-1].type)); }
+#line 3428 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 145:
-/* Line 1787 of yacc.c  */
-#line 546 "parser.y"
+#line 546 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_REQUESTEDIT); }
+#line 3434 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 146:
-/* Line 1787 of yacc.c  */
-#line 547 "parser.y"
+#line 547 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_RESTRICTED); }
+#line 3440 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 147:
-/* Line 1787 of yacc.c  */
-#line 548 "parser.y"
+#line 548 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_RETVAL); }
+#line 3446 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 148:
-/* Line 1787 of yacc.c  */
-#line 549 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[(3) - (4)].expr_list)); }
+#line 549 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[-1].expr_list)); }
+#line 3452 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 149:
-/* Line 1787 of yacc.c  */
-#line 550 "parser.y"
+#line 550 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_SOURCE); }
+#line 3458 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 150:
-/* Line 1787 of yacc.c  */
-#line 551 "parser.y"
+#line 551 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); }
+#line 3464 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 151:
-/* Line 1787 of yacc.c  */
-#line 552 "parser.y"
+#line 552 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_STRING); }
+#line 3470 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 152:
-/* Line 1787 of yacc.c  */
-#line 553 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[(3) - (4)].expr)); }
+#line 553 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[-1].expr)); }
+#line 3476 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 153:
-/* Line 1787 of yacc.c  */
-#line 554 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[(3) - (4)].type)); }
+#line 554 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[-1].type)); }
+#line 3482 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 154:
-/* Line 1787 of yacc.c  */
-#line 555 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[(3) - (4)].type)); }
+#line 555 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[-1].type)); }
+#line 3488 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 155:
-/* Line 1787 of yacc.c  */
-#line 556 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[(3) - (4)].num)); }
+#line 556 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[-1].num)); }
+#line 3494 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 156:
-/* Line 1787 of yacc.c  */
-#line 557 "parser.y"
+#line 557 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_UIDEFAULT); }
+#line 3500 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 157:
-/* Line 1787 of yacc.c  */
-#line 558 "parser.y"
+#line 558 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_USESGETLASTERROR); }
+#line 3506 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 158:
-/* Line 1787 of yacc.c  */
-#line 559 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[(3) - (4)].type)); }
+#line 559 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[-1].type)); }
+#line 3512 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 159:
-/* Line 1787 of yacc.c  */
-#line 560 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[(3) - (4)].uuid)); }
+#line 560 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[-1].uuid)); }
+#line 3518 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 160:
-/* Line 1787 of yacc.c  */
-#line 561 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[(3) - (4)].uuid)); }
+#line 561 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[-1].uuid)); }
+#line 3524 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 161:
-/* Line 1787 of yacc.c  */
-#line 562 "parser.y"
+#line 562 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_V1ENUM); }
+#line 3530 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 162:
-/* Line 1787 of yacc.c  */
-#line 563 "parser.y"
+#line 563 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_VARARG); }
+#line 3536 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 163:
-/* Line 1787 of yacc.c  */
-#line 564 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[(3) - (4)].num)); }
+#line 564 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[-1].num)); }
+#line 3542 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 164:
-/* Line 1787 of yacc.c  */
-#line 565 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[(3) - (4)].str)); }
+#line 565 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[-1].str)); }
+#line 3548 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 165:
-/* Line 1787 of yacc.c  */
-#line 566 "parser.y"
-    { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[(3) - (4)].type)); }
+#line 566 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[-1].type)); }
+#line 3554 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 166:
-/* Line 1787 of yacc.c  */
-#line 567 "parser.y"
-    { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[(1) - (1)].num)); }
+#line 567 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[0].num)); }
+#line 3560 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 168:
-/* Line 1787 of yacc.c  */
-#line 572 "parser.y"
-    { if (!is_valid_uuid((yyvsp[(1) - (1)].str)))
-						    error_loc("invalid UUID: %s\n", (yyvsp[(1) - (1)].str));
-						  (yyval.uuid) = parse_uuid((yyvsp[(1) - (1)].str)); }
+#line 572 "parser.y" /* yacc.c:1646  */
+    { if (!is_valid_uuid((yyvsp[0].str)))
+						    error_loc("invalid UUID: %s\n", (yyvsp[0].str));
+						  (yyval.uuid) = parse_uuid((yyvsp[0].str)); }
+#line 3568 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 169:
-/* Line 1787 of yacc.c  */
-#line 577 "parser.y"
+#line 577 "parser.y" /* yacc.c:1646  */
     { (yyval.str) = xstrdup("__cdecl"); }
+#line 3574 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 170:
-/* Line 1787 of yacc.c  */
-#line 578 "parser.y"
+#line 578 "parser.y" /* yacc.c:1646  */
     { (yyval.str) = xstrdup("__fastcall"); }
+#line 3580 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 171:
-/* Line 1787 of yacc.c  */
-#line 579 "parser.y"
+#line 579 "parser.y" /* yacc.c:1646  */
     { (yyval.str) = xstrdup("__pascal"); }
+#line 3586 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 172:
-/* Line 1787 of yacc.c  */
-#line 580 "parser.y"
+#line 580 "parser.y" /* yacc.c:1646  */
     { (yyval.str) = xstrdup("__stdcall"); }
+#line 3592 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 173:
-/* Line 1787 of yacc.c  */
-#line 583 "parser.y"
+#line 583 "parser.y" /* yacc.c:1646  */
     { (yyval.var_list) = NULL; }
+#line 3598 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 174:
-/* Line 1787 of yacc.c  */
-#line 584 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var) ); }
+#line 584 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
+#line 3604 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 175:
-/* Line 1787 of yacc.c  */
-#line 587 "parser.y"
-    { attr_t *a = make_attrp(ATTR_CASE, append_expr( NULL, (yyvsp[(2) - (4)].expr) ));
-						  (yyval.var) = (yyvsp[(4) - (4)].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
+#line 587 "parser.y" /* yacc.c:1646  */
+    { 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 3613 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 176:
-/* Line 1787 of yacc.c  */
-#line 591 "parser.y"
+#line 591 "parser.y" /* yacc.c:1646  */
     { attr_t *a = make_attr(ATTR_DEFAULT);
-						  (yyval.var) = (yyvsp[(3) - (3)].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
+						  (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
 						  (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
 						}
+#line 3622 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 177:
-/* Line 1787 of yacc.c  */
-#line 597 "parser.y"
+#line 597 "parser.y" /* yacc.c:1646  */
     { (yyval.var_list) = NULL; }
+#line 3628 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 178:
-/* Line 1787 of yacc.c  */
-#line 598 "parser.y"
-    { (yyval.var_list) = (yyvsp[(1) - (2)].var_list); }
+#line 598 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = (yyvsp[-1].var_list); }
+#line 3634 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 180:
-/* Line 1787 of yacc.c  */
-#line 602 "parser.y"
-    { if (!(yyvsp[(1) - (1)].var)->eval)
-						    (yyvsp[(1) - (1)].var)->eval = make_exprl(EXPR_NUM, 0 /* default for first enum entry */);
-                                                  (yyval.var_list) = append_var( NULL, (yyvsp[(1) - (1)].var) );
+#line 602 "parser.y" /* yacc.c:1646  */
+    { 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 3643 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 181:
-/* Line 1787 of yacc.c  */
-#line 606 "parser.y"
-    { if (!(yyvsp[(3) - (3)].var)->eval)
+#line 606 "parser.y" /* yacc.c:1646  */
+    { if (!(yyvsp[0].var)->eval)
                                                   {
                                                     var_t *last = LIST_ENTRY( list_tail((yyval.var_list)), var_t, entry );
                                                     enum expr_type type = EXPR_NUM;
                                                     if (last->eval->type == EXPR_HEXNUM) type = EXPR_HEXNUM;
                                                     if (last->eval->cval + 1 < 0) type = EXPR_HEXNUM;
-                                                    (yyvsp[(3) - (3)].var)->eval = make_exprl(type, last->eval->cval + 1);
+                                                    (yyvsp[0].var)->eval = make_exprl(type, last->eval->cval + 1);
                                                   }
-                                                  (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(3) - (3)].var) );
+                                                  (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) );
 						}
+#line 3658 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 182:
-/* Line 1787 of yacc.c  */
-#line 618 "parser.y"
-    { (yyval.var) = reg_const((yyvsp[(1) - (3)].var));
-						  (yyval.var)->eval = (yyvsp[(3) - (3)].expr);
+#line 618 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = reg_const((yyvsp[-2].var));
+						  (yyval.var)->eval = (yyvsp[0].expr);
                                                   (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
 						}
+#line 3667 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 183:
-/* Line 1787 of yacc.c  */
-#line 622 "parser.y"
-    { (yyval.var) = reg_const((yyvsp[(1) - (1)].var));
+#line 622 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = reg_const((yyvsp[0].var));
                                                   (yyval.var)->type = type_new_int(TYPE_BASIC_INT, 0);
 						}
+#line 3675 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 184:
-/* Line 1787 of yacc.c  */
-#line 627 "parser.y"
-    { (yyval.type) = type_new_enum((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); }
+#line 627 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_enum((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
+#line 3681 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 185:
-/* Line 1787 of yacc.c  */
-#line 630 "parser.y"
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[(1) - (1)].expr) ); }
+#line 630 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
+#line 3687 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 186:
-/* Line 1787 of yacc.c  */
-#line 631 "parser.y"
-    { (yyval.expr_list) = append_expr( (yyvsp[(1) - (3)].expr_list), (yyvsp[(3) - (3)].expr) ); }
+#line 631 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
+#line 3693 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 187:
-/* Line 1787 of yacc.c  */
-#line 634 "parser.y"
+#line 634 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 3699 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 189:
-/* Line 1787 of yacc.c  */
-#line 638 "parser.y"
-    { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[(1) - (1)].num)); }
+#line 638 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); }
+#line 3705 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 190:
-/* Line 1787 of yacc.c  */
-#line 639 "parser.y"
-    { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[(1) - (1)].num)); }
+#line 639 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); }
+#line 3711 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 191:
-/* Line 1787 of yacc.c  */
-#line 640 "parser.y"
-    { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[(1) - (1)].dbl)); }
+#line 640 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); }
+#line 3717 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 192:
-/* Line 1787 of yacc.c  */
-#line 641 "parser.y"
+#line 641 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
+#line 3723 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 193:
-/* Line 1787 of yacc.c  */
-#line 642 "parser.y"
+#line 642 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = make_exprl(EXPR_NUM, 0); }
+#line 3729 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 194:
-/* Line 1787 of yacc.c  */
-#line 643 "parser.y"
+#line 643 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
+#line 3735 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 195:
-/* Line 1787 of yacc.c  */
-#line 644 "parser.y"
-    { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[(1) - (1)].str)); }
+#line 644 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); }
+#line 3741 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 196:
-/* Line 1787 of yacc.c  */
-#line 645 "parser.y"
-    { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[(1) - (1)].str)); }
+#line 645 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); }
+#line 3747 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 197:
-/* Line 1787 of yacc.c  */
-#line 646 "parser.y"
-    { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[(1) - (1)].str)); }
+#line 646 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); }
+#line 3753 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 198:
-/* Line 1787 of yacc.c  */
-#line 647 "parser.y"
-    { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[(1) - (1)].str)); }
+#line 647 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); }
+#line 3759 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 199:
-/* Line 1787 of yacc.c  */
-#line 648 "parser.y"
-    { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[(1) - (5)].expr), (yyvsp[(3) - (5)].expr), (yyvsp[(5) - (5)].expr)); }
+#line 648 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3765 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 200:
-/* Line 1787 of yacc.c  */
-#line 649 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 649 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3771 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 201:
-/* Line 1787 of yacc.c  */
-#line 650 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 650 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3777 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 202:
-/* Line 1787 of yacc.c  */
-#line 651 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 651 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3783 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 203:
-/* Line 1787 of yacc.c  */
-#line 652 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 652 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3789 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 204:
-/* Line 1787 of yacc.c  */
-#line 653 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 653 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3795 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 205:
-/* Line 1787 of yacc.c  */
-#line 654 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 654 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3801 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 206:
-/* Line 1787 of yacc.c  */
-#line 655 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 655 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3807 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 207:
-/* Line 1787 of yacc.c  */
-#line 656 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 656 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3813 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 208:
-/* Line 1787 of yacc.c  */
-#line 657 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 657 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3819 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 209:
-/* Line 1787 of yacc.c  */
-#line 658 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 658 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3825 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 210:
-/* Line 1787 of yacc.c  */
-#line 659 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 659 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3831 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 211:
-/* Line 1787 of yacc.c  */
-#line 660 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 660 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3837 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 212:
-/* Line 1787 of yacc.c  */
-#line 661 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 661 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3843 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 213:
-/* Line 1787 of yacc.c  */
-#line 662 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 662 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3849 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 214:
-/* Line 1787 of yacc.c  */
-#line 663 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 663 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3855 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 215:
-/* Line 1787 of yacc.c  */
-#line 664 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 664 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3861 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 216:
-/* Line 1787 of yacc.c  */
-#line 665 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 665 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3867 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 217:
-/* Line 1787 of yacc.c  */
-#line 666 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); }
+#line 666 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3873 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 218:
-/* Line 1787 of yacc.c  */
-#line 667 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[(2) - (2)].expr)); }
+#line 667 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); }
+#line 3879 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 219:
-/* Line 1787 of yacc.c  */
-#line 668 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[(2) - (2)].expr)); }
+#line 668 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); }
+#line 3885 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 220:
-/* Line 1787 of yacc.c  */
-#line 669 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[(2) - (2)].expr)); }
+#line 669 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); }
+#line 3891 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 221:
-/* Line 1787 of yacc.c  */
-#line 670 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[(2) - (2)].expr)); }
+#line 670 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); }
+#line 3897 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 222:
-/* Line 1787 of yacc.c  */
-#line 671 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[(2) - (2)].expr)); }
+#line 671 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); }
+#line 3903 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 223:
-/* Line 1787 of yacc.c  */
-#line 672 "parser.y"
-    { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[(2) - (2)].expr)); }
+#line 672 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); }
+#line 3909 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 224:
-/* Line 1787 of yacc.c  */
-#line 673 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[(1) - (3)].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); }
+#line 673 "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 3915 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 225:
-/* Line 1787 of yacc.c  */
-#line 674 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[(1) - (3)].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[(3) - (3)].str))); }
+#line 674 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
+#line 3921 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 226:
-/* Line 1787 of yacc.c  */
-#line 676 "parser.y"
-    { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[(2) - (5)].declspec), (yyvsp[(3) - (5)].declarator), 0), (yyvsp[(5) - (5)].expr)); free((yyvsp[(2) - (5)].declspec)); free((yyvsp[(3) - (5)].declarator)); }
+#line 676 "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 3927 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 227:
-/* Line 1787 of yacc.c  */
-#line 678 "parser.y"
-    { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[(3) - (5)].declspec), (yyvsp[(4) - (5)].declarator), 0), NULL); free((yyvsp[(3) - (5)].declspec)); free((yyvsp[(4) - (5)].declarator)); }
+#line 678 "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 3933 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 228:
-/* Line 1787 of yacc.c  */
-#line 679 "parser.y"
-    { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[(1) - (4)].expr), (yyvsp[(3) - (4)].expr)); }
+#line 679 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); }
+#line 3939 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 229:
-/* Line 1787 of yacc.c  */
-#line 680 "parser.y"
-    { (yyval.expr) = (yyvsp[(2) - (3)].expr); }
+#line 680 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = (yyvsp[-1].expr); }
+#line 3945 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 230:
-/* Line 1787 of yacc.c  */
-#line 683 "parser.y"
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[(1) - (1)].expr) ); }
+#line 683 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
+#line 3951 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 231:
-/* Line 1787 of yacc.c  */
-#line 684 "parser.y"
-    { (yyval.expr_list) = append_expr( (yyvsp[(1) - (3)].expr_list), (yyvsp[(3) - (3)].expr) ); }
+#line 684 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
+#line 3957 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 232:
-/* Line 1787 of yacc.c  */
-#line 687 "parser.y"
-    { (yyval.expr) = (yyvsp[(1) - (1)].expr);
+#line 687 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = (yyvsp[0].expr);
 						  if (!(yyval.expr)->is_const)
 						      error_loc("expression is not an integer constant\n");
 						}
+#line 3966 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 233:
-/* Line 1787 of yacc.c  */
-#line 693 "parser.y"
-    { (yyval.expr) = (yyvsp[(1) - (1)].expr);
+#line 693 "parser.y" /* yacc.c:1646  */
+    { (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 3975 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 234:
-/* Line 1787 of yacc.c  */
-#line 699 "parser.y"
+#line 699 "parser.y" /* yacc.c:1646  */
     { (yyval.var_list) = NULL; }
+#line 3981 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 235:
-/* Line 1787 of yacc.c  */
-#line 700 "parser.y"
-    { (yyval.var_list) = append_var_list((yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var_list)); }
+#line 700 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var_list((yyvsp[-1].var_list), (yyvsp[0].var_list)); }
+#line 3987 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 236:
-/* Line 1787 of yacc.c  */
-#line 704 "parser.y"
-    { const char *first = LIST_ENTRY(list_head((yyvsp[(3) - (4)].declarator_list)), declarator_t, entry)->var->name;
-						  check_field_attrs(first, (yyvsp[(1) - (4)].attr_list));
-						  (yyval.var_list) = set_var_types((yyvsp[(1) - (4)].attr_list), (yyvsp[(2) - (4)].declspec), (yyvsp[(3) - (4)].declarator_list));
+#line 704 "parser.y" /* yacc.c:1646  */
+    { 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 3996 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 237:
-/* Line 1787 of yacc.c  */
-#line 708 "parser.y"
+#line 708 "parser.y" /* yacc.c:1646  */
     { var_t *v = make_var(NULL);
-						  v->type = (yyvsp[(2) - (3)].type); v->attrs = (yyvsp[(1) - (3)].attr_list);
+						  v->type = (yyvsp[-1].type); v->attrs = (yyvsp[-2].attr_list);
 						  (yyval.var_list) = append_var(NULL, v);
 						}
+#line 4005 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 238:
-/* Line 1787 of yacc.c  */
-#line 715 "parser.y"
-    { (yyval.var) = (yyvsp[(1) - (2)].var); }
+#line 715 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = (yyvsp[-1].var); }
+#line 4011 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 239:
-/* Line 1787 of yacc.c  */
-#line 716 "parser.y"
-    { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[(1) - (2)].attr_list); }
+#line 716 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); }
+#line 4017 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 240:
-/* Line 1787 of yacc.c  */
-#line 719 "parser.y"
+#line 719 "parser.y" /* yacc.c:1646  */
     { (yyval.var_list) = NULL; }
+#line 4023 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 241:
-/* Line 1787 of yacc.c  */
-#line 720 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (2)].var_list), (yyvsp[(2) - (2)].var) ); }
+#line 720 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
+#line 4029 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 242:
-/* Line 1787 of yacc.c  */
-#line 724 "parser.y"
-    { (yyval.var) = (yyvsp[(1) - (2)].var); }
+#line 724 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = (yyvsp[-1].var); }
+#line 4035 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 243:
-/* Line 1787 of yacc.c  */
-#line 725 "parser.y"
+#line 725 "parser.y" /* yacc.c:1646  */
     { (yyval.var) = NULL; }
+#line 4041 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 244:
-/* Line 1787 of yacc.c  */
-#line 728 "parser.y"
-    { (yyval.var) = declare_var(check_field_attrs((yyvsp[(3) - (3)].declarator)->var->name, (yyvsp[(1) - (3)].attr_list)),
-						                (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE);
-						  free((yyvsp[(3) - (3)].declarator));
+#line 728 "parser.y" /* yacc.c:1646  */
+    { (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 4050 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 245:
-/* Line 1787 of yacc.c  */
-#line 732 "parser.y"
+#line 732 "parser.y" /* yacc.c:1646  */
     { var_t *v = make_var(NULL);
-						  v->type = (yyvsp[(2) - (2)].type); v->attrs = (yyvsp[(1) - (2)].attr_list);
+						  v->type = (yyvsp[0].type); v->attrs = (yyvsp[-1].attr_list);
 						  (yyval.var) = v;
 						}
+#line 4059 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 246:
-/* Line 1787 of yacc.c  */
-#line 738 "parser.y"
-    { (yyval.var) = (yyvsp[(1) - (1)].var);
+#line 738 "parser.y" /* yacc.c:1646  */
+    { (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 4069 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 247:
-/* Line 1787 of yacc.c  */
-#line 747 "parser.y"
-    { (yyval.var) = declare_var((yyvsp[(1) - (3)].attr_list), (yyvsp[(2) - (3)].declspec), (yyvsp[(3) - (3)].declarator), FALSE);
-						  free((yyvsp[(3) - (3)].declarator));
+#line 747 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
+						  free((yyvsp[0].declarator));
 						}
+#line 4077 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 248:
-/* Line 1787 of yacc.c  */
-#line 750 "parser.y"
-    { (yyval.var) = declare_var(NULL, (yyvsp[(1) - (2)].declspec), (yyvsp[(2) - (2)].declarator), FALSE);
-						  free((yyvsp[(2) - (2)].declarator));
+#line 750 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
+						  free((yyvsp[0].declarator));
 						}
+#line 4085 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 249:
-/* Line 1787 of yacc.c  */
-#line 755 "parser.y"
+#line 755 "parser.y" /* yacc.c:1646  */
     { (yyval.var) = NULL; }
+#line 4091 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 251:
-/* Line 1787 of yacc.c  */
-#line 759 "parser.y"
+#line 759 "parser.y" /* yacc.c:1646  */
     { (yyval.str) = NULL; }
+#line 4097 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 252:
-/* Line 1787 of yacc.c  */
-#line 760 "parser.y"
-    { (yyval.str) = (yyvsp[(1) - (1)].str); }
+#line 760 "parser.y" /* yacc.c:1646  */
+    { (yyval.str) = (yyvsp[0].str); }
+#line 4103 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 253:
-/* Line 1787 of yacc.c  */
-#line 761 "parser.y"
-    { (yyval.str) = (yyvsp[(1) - (1)].str); }
+#line 761 "parser.y" /* yacc.c:1646  */
+    { (yyval.str) = (yyvsp[0].str); }
+#line 4109 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 254:
-/* Line 1787 of yacc.c  */
-#line 764 "parser.y"
-    { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); }
+#line 764 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = make_var((yyvsp[0].str)); }
+#line 4115 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 255:
-/* Line 1787 of yacc.c  */
-#line 766 "parser.y"
-    { (yyval.var) = make_var((yyvsp[(1) - (1)].str)); }
+#line 766 "parser.y" /* yacc.c:1646  */
+    { (yyval.var) = make_var((yyvsp[0].str)); }
+#line 4121 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 256:
-/* Line 1787 of yacc.c  */
-#line 769 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
+#line 769 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4127 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 257:
-/* Line 1787 of yacc.c  */
-#line 770 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
+#line 770 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4133 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 259:
-/* Line 1787 of yacc.c  */
-#line 772 "parser.y"
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), -1); }
+#line 772 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); }
+#line 4139 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 260:
-/* Line 1787 of yacc.c  */
-#line 773 "parser.y"
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[(2) - (2)].type)), 1); }
+#line 773 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); }
+#line 4145 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 261:
-/* Line 1787 of yacc.c  */
-#line 774 "parser.y"
+#line 774 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
+#line 4151 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 262:
-/* Line 1787 of yacc.c  */
-#line 775 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
+#line 775 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4157 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 263:
-/* Line 1787 of yacc.c  */
-#line 776 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
+#line 776 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4163 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 264:
-/* Line 1787 of yacc.c  */
-#line 777 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
+#line 777 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4169 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 265:
-/* Line 1787 of yacc.c  */
-#line 778 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
+#line 778 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4175 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 266:
-/* Line 1787 of yacc.c  */
-#line 779 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
+#line 779 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4181 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 269:
-/* Line 1787 of yacc.c  */
-#line 786 "parser.y"
+#line 786 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
+#line 4187 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 270:
-/* Line 1787 of yacc.c  */
-#line 787 "parser.y"
+#line 787 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
+#line 4193 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 271:
-/* Line 1787 of yacc.c  */
-#line 788 "parser.y"
+#line 788 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
+#line 4199 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 272:
-/* Line 1787 of yacc.c  */
-#line 789 "parser.y"
+#line 789 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
+#line 4205 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 273:
-/* Line 1787 of yacc.c  */
-#line 790 "parser.y"
+#line 790 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
+#line 4211 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 274:
-/* Line 1787 of yacc.c  */
-#line 791 "parser.y"
+#line 791 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
+#line 4217 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 275:
-/* Line 1787 of yacc.c  */
-#line 792 "parser.y"
+#line 792 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
+#line 4223 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 276:
-/* Line 1787 of yacc.c  */
-#line 793 "parser.y"
+#line 793 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); }
+#line 4229 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 277:
-/* Line 1787 of yacc.c  */
-#line 796 "parser.y"
-    { (yyval.type) = type_new_coclass((yyvsp[(2) - (2)].str)); }
+#line 796 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_coclass((yyvsp[0].str)); }
+#line 4235 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 278:
-/* Line 1787 of yacc.c  */
-#line 797 "parser.y"
-    { (yyval.type) = find_type((yyvsp[(2) - (2)].str), 0);
+#line 797 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type((yyvsp[0].str), 0);
 						  if (type_get_type_detect_alias((yyval.type)) != TYPE_COCLASS)
 						    error_loc("%s was not declared a coclass at %s:%d\n",
-							      (yyvsp[(2) - (2)].str), (yyval.type)->loc_info.input_name,
+							      (yyvsp[0].str), (yyval.type)->loc_info.input_name,
 							      (yyval.type)->loc_info.line_number);
 						}
+#line 4246 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 279:
-/* Line 1787 of yacc.c  */
-#line 805 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type);
+#line 805 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type);
 						  check_def((yyval.type));
-						  (yyval.type)->attrs = check_coclass_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
+						  (yyval.type)->attrs = check_coclass_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
 						}
+#line 4255 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 280:
-/* Line 1787 of yacc.c  */
-#line 812 "parser.y"
-    { (yyval.type) = type_coclass_define((yyvsp[(1) - (5)].type), (yyvsp[(3) - (5)].ifref_list)); }
+#line 812 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_coclass_define((yyvsp[-4].type), (yyvsp[-2].ifref_list)); }
+#line 4261 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 281:
-/* Line 1787 of yacc.c  */
-#line 815 "parser.y"
+#line 815 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = NULL; }
+#line 4267 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 282:
-/* Line 1787 of yacc.c  */
-#line 818 "parser.y"
+#line 818 "parser.y" /* yacc.c:1646  */
     { (yyval.ifref_list) = NULL; }
+#line 4273 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 283:
-/* Line 1787 of yacc.c  */
-#line 819 "parser.y"
-    { (yyval.ifref_list) = append_ifref( (yyvsp[(1) - (2)].ifref_list), (yyvsp[(2) - (2)].ifref) ); }
+#line 819 "parser.y" /* yacc.c:1646  */
+    { (yyval.ifref_list) = append_ifref( (yyvsp[-1].ifref_list), (yyvsp[0].ifref) ); }
+#line 4279 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 284:
-/* Line 1787 of yacc.c  */
-#line 823 "parser.y"
-    { (yyval.ifref) = make_ifref((yyvsp[(2) - (2)].type)); (yyval.ifref)->attrs = (yyvsp[(1) - (2)].attr_list); }
+#line 823 "parser.y" /* yacc.c:1646  */
+    { (yyval.ifref) = make_ifref((yyvsp[0].type)); (yyval.ifref)->attrs = (yyvsp[-1].attr_list); }
+#line 4285 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 285:
-/* Line 1787 of yacc.c  */
-#line 826 "parser.y"
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); }
+#line 826 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), 0); }
+#line 4291 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 286:
-/* Line 1787 of yacc.c  */
-#line 827 "parser.y"
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); }
+#line 827 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), 0); }
+#line 4297 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 287:
-/* Line 1787 of yacc.c  */
-#line 830 "parser.y"
+#line 830 "parser.y" /* yacc.c:1646  */
     { attr_t *attrs;
-						  (yyval.type) = (yyvsp[(2) - (2)].type);
+						  (yyval.type) = (yyvsp[0].type);
 						  check_def((yyval.type));
 						  attrs = make_attr(ATTR_DISPINTERFACE);
-						  (yyval.type)->attrs = append_attr( check_dispiface_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list)), attrs );
+						  (yyval.type)->attrs = append_attr( check_dispiface_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list)), attrs );
 						  (yyval.type)->defined = TRUE;
 						}
+#line 4309 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 288:
-/* Line 1787 of yacc.c  */
-#line 839 "parser.y"
+#line 839 "parser.y" /* yacc.c:1646  */
     { (yyval.var_list) = NULL; }
+#line 4315 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 289:
-/* Line 1787 of yacc.c  */
-#line 840 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(2) - (3)].var) ); }
+#line 840 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
+#line 4321 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 290:
-/* Line 1787 of yacc.c  */
-#line 843 "parser.y"
+#line 843 "parser.y" /* yacc.c:1646  */
     { (yyval.var_list) = NULL; }
+#line 4327 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 291:
-/* Line 1787 of yacc.c  */
-#line 844 "parser.y"
-    { (yyval.var_list) = append_var( (yyvsp[(1) - (3)].var_list), (yyvsp[(2) - (3)].var) ); }
+#line 844 "parser.y" /* yacc.c:1646  */
+    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
+#line 4333 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 292:
-/* Line 1787 of yacc.c  */
-#line 850 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (5)].type);
-						  type_dispinterface_define((yyval.type), (yyvsp[(3) - (5)].var_list), (yyvsp[(4) - (5)].var_list));
+#line 850 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[-4].type);
+						  type_dispinterface_define((yyval.type), (yyvsp[-2].var_list), (yyvsp[-1].var_list));
 						}
+#line 4341 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 293:
-/* Line 1787 of yacc.c  */
-#line 854 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (5)].type);
-						  type_dispinterface_define_from_iface((yyval.type), (yyvsp[(3) - (5)].type));
+#line 854 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[-4].type);
+						  type_dispinterface_define_from_iface((yyval.type), (yyvsp[-2].type));
 						}
+#line 4349 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 294:
-/* Line 1787 of yacc.c  */
-#line 859 "parser.y"
+#line 859 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = NULL; }
+#line 4355 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 295:
-/* Line 1787 of yacc.c  */
-#line 860 "parser.y"
-    { (yyval.type) = find_type_or_error2((yyvsp[(2) - (2)].str), 0); }
+#line 860 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error2((yyvsp[0].str), 0); }
+#line 4361 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 296:
-/* Line 1787 of yacc.c  */
-#line 863 "parser.y"
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); }
+#line 863 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), 0); }
+#line 4367 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 297:
-/* Line 1787 of yacc.c  */
-#line 864 "parser.y"
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[(2) - (2)].str), 0); }
+#line 864 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), 0); }
+#line 4373 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 298:
-/* Line 1787 of yacc.c  */
-#line 867 "parser.y"
-    { (yyval.ifinfo).interface = (yyvsp[(2) - (2)].type);
+#line 867 "parser.y" /* yacc.c:1646  */
+    { (yyval.ifinfo).interface = (yyvsp[0].type);
 						  (yyval.ifinfo).old_pointer_default = pointer_default;
-						  if (is_attr((yyvsp[(1) - (2)].attr_list), ATTR_POINTERDEFAULT))
-						    pointer_default = get_attrv((yyvsp[(1) - (2)].attr_list), ATTR_POINTERDEFAULT);
-						  check_def((yyvsp[(2) - (2)].type));
-						  (yyvsp[(2) - (2)].type)->attrs = check_iface_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
-						  (yyvsp[(2) - (2)].type)->defined = TRUE;
+						  if (is_attr((yyvsp[-1].attr_list), ATTR_POINTERDEFAULT))
+						    pointer_default = get_attrv((yyvsp[-1].attr_list), ATTR_POINTERDEFAULT);
+						  check_def((yyvsp[0].type));
+						  (yyvsp[0].type)->attrs = check_iface_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
+						  (yyvsp[0].type)->defined = TRUE;
 						}
+#line 4386 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 299:
-/* Line 1787 of yacc.c  */
-#line 878 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (6)].ifinfo).interface;
-						  if((yyval.type) == (yyvsp[(2) - (6)].type))
+#line 878 "parser.y" /* yacc.c:1646  */
+    { (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[(2) - (6)].type), (yyvsp[(4) - (6)].stmt_list));
-						  pointer_default = (yyvsp[(1) - (6)].ifinfo).old_pointer_default;
+						  type_interface_define((yyval.type), (yyvsp[-4].type), (yyvsp[-2].stmt_list));
+						  pointer_default = (yyvsp[-5].ifinfo).old_pointer_default;
 						}
+#line 4397 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 300:
-/* Line 1787 of yacc.c  */
-#line 888 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (8)].ifinfo).interface;
-						  type_interface_define((yyval.type), find_type_or_error2((yyvsp[(3) - (8)].str), 0), (yyvsp[(6) - (8)].stmt_list));
-						  pointer_default = (yyvsp[(1) - (8)].ifinfo).old_pointer_default;
+#line 888 "parser.y" /* yacc.c:1646  */
+    { (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 4406 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 301:
-/* Line 1787 of yacc.c  */
-#line 892 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (2)].type); }
+#line 892 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[-1].type); }
+#line 4412 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 302:
-/* Line 1787 of yacc.c  */
-#line 896 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (2)].type); }
+#line 896 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[-1].type); }
+#line 4418 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 303:
-/* Line 1787 of yacc.c  */
-#line 897 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (2)].type); }
+#line 897 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[-1].type); }
+#line 4424 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 304:
-/* Line 1787 of yacc.c  */
-#line 900 "parser.y"
-    { (yyval.type) = type_new_module((yyvsp[(2) - (2)].str)); }
+#line 900 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_module((yyvsp[0].str)); }
+#line 4430 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 305:
-/* Line 1787 of yacc.c  */
-#line 901 "parser.y"
-    { (yyval.type) = type_new_module((yyvsp[(2) - (2)].str)); }
+#line 901 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_module((yyvsp[0].str)); }
+#line 4436 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 306:
-/* Line 1787 of yacc.c  */
-#line 904 "parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type);
-						  (yyval.type)->attrs = check_module_attrs((yyvsp[(2) - (2)].type)->name, (yyvsp[(1) - (2)].attr_list));
+#line 904 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type);
+						  (yyval.type)->attrs = check_module_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
 						}
+#line 4444 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 307:
-/* Line 1787 of yacc.c  */
-#line 910 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (5)].type);
-                                                  type_module_define((yyval.type), (yyvsp[(3) - (5)].stmt_list));
+#line 910 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[-4].type);
+                                                  type_module_define((yyval.type), (yyvsp[-2].stmt_list));
 						}
+#line 4452 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 308:
-/* Line 1787 of yacc.c  */
-#line 916 "parser.y"
+#line 916 "parser.y" /* yacc.c:1646  */
     { (yyval.stgclass) = STG_EXTERN; }
+#line 4458 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 309:
-/* Line 1787 of yacc.c  */
-#line 917 "parser.y"
+#line 917 "parser.y" /* yacc.c:1646  */
     { (yyval.stgclass) = STG_STATIC; }
+#line 4464 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 310:
-/* Line 1787 of yacc.c  */
-#line 918 "parser.y"
+#line 918 "parser.y" /* yacc.c:1646  */
     { (yyval.stgclass) = STG_REGISTER; }
+#line 4470 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 311:
-/* Line 1787 of yacc.c  */
-#line 922 "parser.y"
+#line 922 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_INLINE); }
+#line 4476 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 312:
-/* Line 1787 of yacc.c  */
-#line 926 "parser.y"
+#line 926 "parser.y" /* yacc.c:1646  */
     { (yyval.attr) = make_attr(ATTR_CONST); }
+#line 4482 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 313:
-/* Line 1787 of yacc.c  */
-#line 929 "parser.y"
+#line 929 "parser.y" /* yacc.c:1646  */
     { (yyval.attr_list) = NULL; }
+#line 4488 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 314:
-/* Line 1787 of yacc.c  */
-#line 930 "parser.y"
-    { (yyval.attr_list) = append_attr((yyvsp[(1) - (2)].attr_list), (yyvsp[(2) - (2)].attr)); }
+#line 930 "parser.y" /* yacc.c:1646  */
+    { (yyval.attr_list) = append_attr((yyvsp[-1].attr_list), (yyvsp[0].attr)); }
+#line 4494 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 315:
-/* Line 1787 of yacc.c  */
-#line 933 "parser.y"
-    { (yyval.declspec) = make_decl_spec((yyvsp[(1) - (2)].type), (yyvsp[(2) - (2)].declspec), NULL, NULL, STG_NONE); }
+#line 933 "parser.y" /* yacc.c:1646  */
+    { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, NULL, STG_NONE); }
+#line 4500 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 316:
-/* Line 1787 of yacc.c  */
-#line 935 "parser.y"
-    { (yyval.declspec) = make_decl_spec((yyvsp[(2) - (3)].type), (yyvsp[(1) - (3)].declspec), (yyvsp[(3) - (3)].declspec), NULL, STG_NONE); }
+#line 935 "parser.y" /* yacc.c:1646  */
+    { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), NULL, STG_NONE); }
+#line 4506 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 317:
-/* Line 1787 of yacc.c  */
-#line 938 "parser.y"
+#line 938 "parser.y" /* yacc.c:1646  */
     { (yyval.declspec) = NULL; }
+#line 4512 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 319:
-/* Line 1787 of yacc.c  */
-#line 943 "parser.y"
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, (yyvsp[(1) - (2)].attr), STG_NONE); }
+#line 943 "parser.y" /* yacc.c:1646  */
+    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
+#line 4518 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 320:
-/* Line 1787 of yacc.c  */
-#line 944 "parser.y"
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, (yyvsp[(1) - (2)].attr), STG_NONE); }
+#line 944 "parser.y" /* yacc.c:1646  */
+    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].attr), STG_NONE); }
+#line 4524 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 321:
-/* Line 1787 of yacc.c  */
-#line 945 "parser.y"
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[(2) - (2)].declspec), NULL, NULL, (yyvsp[(1) - (2)].stgclass)); }
+#line 945 "parser.y" /* yacc.c:1646  */
+    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, NULL, (yyvsp[-1].stgclass)); }
+#line 4530 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 322:
-/* Line 1787 of yacc.c  */
-#line 950 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); }
+#line 950 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4536 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 323:
-/* Line 1787 of yacc.c  */
-#line 951 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str)));
-						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); }
+#line 951 "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)));
+						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
+#line 4543 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 325:
-/* Line 1787 of yacc.c  */
-#line 957 "parser.y"
-    { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); }
+#line 957 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
+#line 4549 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 326:
-/* Line 1787 of yacc.c  */
-#line 958 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); }
+#line 958 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4555 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 327:
-/* Line 1787 of yacc.c  */
-#line 959 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); }
+#line 959 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
+#line 4561 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 328:
-/* Line 1787 of yacc.c  */
-#line 960 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
-						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
+#line 960 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-3].declarator);
+						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
 						  (yyval.declarator)->type = NULL;
 						}
+#line 4570 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 329:
-/* Line 1787 of yacc.c  */
-#line 969 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); }
+#line 969 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4576 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 330:
-/* Line 1787 of yacc.c  */
-#line 970 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str)));
-						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); }
+#line 970 "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)));
+						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
+#line 4583 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 332:
-/* Line 1787 of yacc.c  */
-#line 978 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); }
+#line 978 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4589 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 333:
-/* Line 1787 of yacc.c  */
-#line 979 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); if ((yyval.declarator)->func_type) (yyval.declarator)->func_type->attrs = append_attr((yyval.declarator)->func_type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str)));
-						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); }
+#line 979 "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)));
+						           else if ((yyval.declarator)->type) (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[-1].str))); }
+#line 4596 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 334:
-/* Line 1787 of yacc.c  */
-#line 984 "parser.y"
+#line 984 "parser.y" /* yacc.c:1646  */
     { (yyval.declarator) = make_declarator(NULL); }
+#line 4602 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 336:
-/* Line 1787 of yacc.c  */
-#line 990 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); }
+#line 990 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4608 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 337:
-/* Line 1787 of yacc.c  */
-#line 991 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); }
+#line 991 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
+#line 4614 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 338:
-/* Line 1787 of yacc.c  */
-#line 992 "parser.y"
-    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(1) - (1)].expr)); }
+#line 992 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
+#line 4620 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 339:
-/* Line 1787 of yacc.c  */
-#line 994 "parser.y"
+#line 994 "parser.y" /* yacc.c:1646  */
     { (yyval.declarator) = make_declarator(NULL);
-						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(2) - (3)].var_list)));
+						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
 						  (yyval.declarator)->type = NULL;
 						}
+#line 4629 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 340:
-/* Line 1787 of yacc.c  */
-#line 999 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
-						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
+#line 999 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-3].declarator);
+						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
 						  (yyval.declarator)->type = NULL;
 						}
+#line 4638 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 341:
-/* Line 1787 of yacc.c  */
-#line 1008 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); }
+#line 1008 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4644 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 342:
-/* Line 1787 of yacc.c  */
-#line 1009 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); }
+#line 1009 "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 4650 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 344:
-/* Line 1787 of yacc.c  */
-#line 1016 "parser.y"
-    { (yyval.declarator) = (yyvsp[(3) - (3)].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[(2) - (3)].attr_list))); }
+#line 1016 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); (yyval.declarator)->type = append_ptrchain_type((yyval.declarator)->type, type_new_pointer(pointer_default, NULL, (yyvsp[-1].attr_list))); }
+#line 4656 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 345:
-/* Line 1787 of yacc.c  */
-#line 1017 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (2)].declarator); (yyval.declarator)->type->attrs = append_attr((yyval.declarator)->type->attrs, make_attrp(ATTR_CALLCONV, (yyvsp[(1) - (2)].str))); }
+#line 1017 "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 4662 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 346:
-/* Line 1787 of yacc.c  */
-#line 1021 "parser.y"
+#line 1021 "parser.y" /* yacc.c:1646  */
     { (yyval.declarator) = make_declarator(NULL); }
+#line 4668 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 348:
-/* Line 1787 of yacc.c  */
-#line 1029 "parser.y"
-    { (yyval.declarator) = make_declarator((yyvsp[(1) - (1)].var)); }
+#line 1029 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
+#line 4674 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 349:
-/* Line 1787 of yacc.c  */
-#line 1030 "parser.y"
-    { (yyval.declarator) = (yyvsp[(2) - (3)].declarator); }
+#line 1030 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4680 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 350:
-/* Line 1787 of yacc.c  */
-#line 1031 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(2) - (2)].expr)); }
+#line 1031 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
+#line 4686 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 351:
-/* Line 1787 of yacc.c  */
-#line 1032 "parser.y"
-    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[(1) - (1)].expr)); }
+#line 1032 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = make_declarator(NULL); (yyval.declarator)->array = append_array((yyval.declarator)->array, (yyvsp[0].expr)); }
+#line 4692 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 352:
-/* Line 1787 of yacc.c  */
-#line 1034 "parser.y"
+#line 1034 "parser.y" /* yacc.c:1646  */
     { (yyval.declarator) = make_declarator(NULL);
-						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(2) - (3)].var_list)));
+						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
 						  (yyval.declarator)->type = NULL;
 						}
+#line 4701 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 353:
-/* Line 1787 of yacc.c  */
-#line 1039 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (4)].declarator);
-						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[(3) - (4)].var_list)));
+#line 1039 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-3].declarator);
+						  (yyval.declarator)->func_type = append_ptrchain_type((yyval.declarator)->type, type_new_function((yyvsp[-1].var_list)));
 						  (yyval.declarator)->type = NULL;
 						}
+#line 4710 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 354:
-/* Line 1787 of yacc.c  */
-#line 1046 "parser.y"
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); }
+#line 1046 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
+#line 4716 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 355:
-/* Line 1787 of yacc.c  */
-#line 1047 "parser.y"
-    { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); }
+#line 1047 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
+#line 4722 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 356:
-/* Line 1787 of yacc.c  */
-#line 1050 "parser.y"
+#line 1050 "parser.y" /* yacc.c:1646  */
     { (yyval.expr) = NULL; }
+#line 4728 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 357:
-/* Line 1787 of yacc.c  */
-#line 1051 "parser.y"
-    { (yyval.expr) = (yyvsp[(2) - (2)].expr); }
+#line 1051 "parser.y" /* yacc.c:1646  */
+    { (yyval.expr) = (yyvsp[0].expr); }
+#line 4734 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 358:
-/* Line 1787 of yacc.c  */
-#line 1054 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (2)].declarator); (yyval.declarator)->bits = (yyvsp[(2) - (2)].expr);
+#line 1054 "parser.y" /* yacc.c:1646  */
+    { (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 4743 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 359:
-/* Line 1787 of yacc.c  */
-#line 1061 "parser.y"
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[(1) - (1)].declarator) ); }
+#line 1061 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
+#line 4749 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 360:
-/* Line 1787 of yacc.c  */
-#line 1063 "parser.y"
-    { (yyval.declarator_list) = append_declarator( (yyvsp[(1) - (3)].declarator_list), (yyvsp[(3) - (3)].declarator) ); }
+#line 1063 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
+#line 4755 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 361:
-/* Line 1787 of yacc.c  */
-#line 1067 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (1)].declarator); }
+#line 1067 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[0].declarator); }
+#line 4761 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 362:
-/* Line 1787 of yacc.c  */
-#line 1068 "parser.y"
-    { (yyval.declarator) = (yyvsp[(1) - (3)].declarator); (yyvsp[(1) - (3)].declarator)->var->eval = (yyvsp[(3) - (3)].expr); }
+#line 1068 "parser.y" /* yacc.c:1646  */
+    { (yyval.declarator) = (yyvsp[-2].declarator); (yyvsp[-2].declarator)->var->eval = (yyvsp[0].expr); }
+#line 4767 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 363:
-/* Line 1787 of yacc.c  */
-#line 1072 "parser.y"
+#line 1072 "parser.y" /* yacc.c:1646  */
     { (yyval.num) = THREADING_APARTMENT; }
+#line 4773 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 364:
-/* Line 1787 of yacc.c  */
-#line 1073 "parser.y"
+#line 1073 "parser.y" /* yacc.c:1646  */
     { (yyval.num) = THREADING_NEUTRAL; }
+#line 4779 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 365:
-/* Line 1787 of yacc.c  */
-#line 1074 "parser.y"
+#line 1074 "parser.y" /* yacc.c:1646  */
     { (yyval.num) = THREADING_SINGLE; }
+#line 4785 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 366:
-/* Line 1787 of yacc.c  */
-#line 1075 "parser.y"
+#line 1075 "parser.y" /* yacc.c:1646  */
     { (yyval.num) = THREADING_FREE; }
+#line 4791 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 367:
-/* Line 1787 of yacc.c  */
-#line 1076 "parser.y"
+#line 1076 "parser.y" /* yacc.c:1646  */
     { (yyval.num) = THREADING_BOTH; }
+#line 4797 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 368:
-/* Line 1787 of yacc.c  */
-#line 1080 "parser.y"
+#line 1080 "parser.y" /* yacc.c:1646  */
     { (yyval.num) = RPC_FC_RP; }
+#line 4803 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 369:
-/* Line 1787 of yacc.c  */
-#line 1081 "parser.y"
+#line 1081 "parser.y" /* yacc.c:1646  */
     { (yyval.num) = RPC_FC_UP; }
+#line 4809 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 370:
-/* Line 1787 of yacc.c  */
-#line 1082 "parser.y"
+#line 1082 "parser.y" /* yacc.c:1646  */
     { (yyval.num) = RPC_FC_FP; }
+#line 4815 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 371:
-/* Line 1787 of yacc.c  */
-#line 1085 "parser.y"
-    { (yyval.type) = type_new_struct((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); }
+#line 1085 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_struct((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
+#line 4821 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 372:
-/* Line 1787 of yacc.c  */
-#line 1088 "parser.y"
+#line 1088 "parser.y" /* yacc.c:1646  */
     { (yyval.type) = type_new_void(); }
+#line 4827 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 373:
-/* Line 1787 of yacc.c  */
-#line 1089 "parser.y"
-    { (yyval.type) = find_type_or_error((yyvsp[(1) - (1)].str), 0); }
+#line 1089 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4833 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 374:
-/* Line 1787 of yacc.c  */
-#line 1090 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); }
+#line 1090 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 4839 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 375:
-/* Line 1787 of yacc.c  */
-#line 1091 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); }
+#line 1091 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 4845 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 376:
-/* Line 1787 of yacc.c  */
-#line 1092 "parser.y"
-    { (yyval.type) = type_new_enum((yyvsp[(2) - (2)].str), FALSE, NULL); }
+#line 1092 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_enum((yyvsp[0].str), FALSE, NULL); }
+#line 4851 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 377:
-/* Line 1787 of yacc.c  */
-#line 1093 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); }
+#line 1093 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 4857 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 378:
-/* Line 1787 of yacc.c  */
-#line 1094 "parser.y"
-    { (yyval.type) = type_new_struct((yyvsp[(2) - (2)].str), FALSE, NULL); }
+#line 1094 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_struct((yyvsp[0].str), FALSE, NULL); }
+#line 4863 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 379:
-/* Line 1787 of yacc.c  */
-#line 1095 "parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); }
+#line 1095 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 4869 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 380:
-/* Line 1787 of yacc.c  */
-#line 1096 "parser.y"
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (2)].str), FALSE, NULL); }
+#line 1096 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
+#line 4875 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 381:
-/* Line 1787 of yacc.c  */
-#line 1097 "parser.y"
-    { (yyval.type) = make_safearray((yyvsp[(3) - (4)].type)); }
+#line 1097 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = make_safearray((yyvsp[-1].type)); }
+#line 4881 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 382:
-/* Line 1787 of yacc.c  */
-#line 1101 "parser.y"
-    { (yyvsp[(1) - (5)].attr_list) = append_attribs((yyvsp[(1) - (5)].attr_list), (yyvsp[(3) - (5)].attr_list));
-						  reg_typedefs((yyvsp[(4) - (5)].declspec), (yyvsp[(5) - (5)].declarator_list), check_typedef_attrs((yyvsp[(1) - (5)].attr_list)));
-						  (yyval.statement) = make_statement_typedef((yyvsp[(5) - (5)].declarator_list));
+#line 1101 "parser.y" /* yacc.c:1646  */
+    { (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 4890 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 383:
-/* Line 1787 of yacc.c  */
-#line 1108 "parser.y"
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[(2) - (5)].str), TRUE, (yyvsp[(4) - (5)].var_list)); }
+#line 1108 "parser.y" /* yacc.c:1646  */
+    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
+#line 4896 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 384:
-/* Line 1787 of yacc.c  */
-#line 1111 "parser.y"
-    { (yyval.type) = type_new_encapsulated_union((yyvsp[(2) - (10)].str), (yyvsp[(5) - (10)].var), (yyvsp[(7) - (10)].var), (yyvsp[(9) - (10)].var_list)); }
+#line 1111 "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 4902 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 385:
-/* Line 1787 of yacc.c  */
-#line 1115 "parser.y"
-    { (yyval.num) = MAKEVERSION((yyvsp[(1) - (1)].num), 0); }
+#line 1115 "parser.y" /* yacc.c:1646  */
+    { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); }
+#line 4908 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 386:
-/* Line 1787 of yacc.c  */
-#line 1116 "parser.y"
-    { (yyval.num) = MAKEVERSION((yyvsp[(1) - (3)].num), (yyvsp[(3) - (3)].num)); }
+#line 1116 "parser.y" /* yacc.c:1646  */
+    { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); }
+#line 4914 "parser.tab.c" /* yacc.c:1646  */
     break;
 
   case 387:
-/* Line 1787 of yacc.c  */
-#line 1117 "parser.y"
-    { (yyval.num) = (yyvsp[(1) - (1)].num); }
+#line 1117 "parser.y" /* yacc.c:1646  */
+    { (yyval.num) = (yyvsp[0].num); }
+#line 4920 "parser.tab.c" /* yacc.c:1646  */
     break;
 
 
-/* Line 1787 of yacc.c  */
-#line 5208 "parser.tab.c"
+#line 4924 "parser.tab.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -5226,7 +4942,7 @@
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* 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.  */
 
@@ -5241,9 +4957,9 @@
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
   /* Make sure we have latest lookahead translation.  See comments at
      user semantic actions for why this is necessary.  */
@@ -5294,20 +5010,20 @@
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-	 error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-	{
-	  /* Return failure if at end of input.  */
-	  if (yychar == YYEOF)
-	    YYABORT;
-	}
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-	{
-	  yydestruct ("Error: discarding",
-		      yytoken, &yylval);
-	  yychar = YYEMPTY;
-	}
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -5326,7 +5042,7 @@
   if (/*CONSTCOND*/ 0)
      goto yyerrorlab;
 
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -5339,29 +5055,29 @@
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
   for (;;)
     {
       yyn = yypact[yystate];
       if (!yypact_value_is_default (yyn))
-	{
-	  yyn += YYTERROR;
-	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-	    {
-	      yyn = yytable[yyn];
-	      if (0 < yyn)
-		break;
-	    }
-	}
+        {
+          yyn += YYTERROR;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-	YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-		  yystos[yystate], yyvsp);
+                  yystos[yystate], yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
@@ -5412,14 +5128,14 @@
       yydestruct ("Cleanup: discarding lookahead",
                   yytoken, &yylval);
     }
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-		  yystos[*yyssp], yyvsp);
+                  yystos[*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
@@ -5430,13 +5146,9 @@
   if (yymsg != yymsgbuf)
     YYSTACK_FREE (yymsg);
 #endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
+  return yyresult;
 }
-
-
-/* Line 2050 of yacc.c  */
-#line 1120 "parser.y"
+#line 1120 "parser.y" /* yacc.c:1906  */
 
 
 static void decl_builtin_basic(const char *name, enum type_basic_type type)
diff --git a/mingw-w64-tools/widl/src/parser.tab.h b/mingw-w64-tools/widl/src/parser.tab.h
index 9cb4037..2b88181 100644
--- a/mingw-w64-tools/widl/src/parser.tab.h
+++ b/mingw-w64-tools/widl/src/parser.tab.h
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
+/* A Bison parser, made by GNU Bison 3.0.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 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
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -26,13 +26,13 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
 #ifndef YY_PARSER_PARSER_TAB_H_INCLUDED
 # define YY_PARSER_PARSER_TAB_H_INCLUDED
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
@@ -40,204 +40,203 @@
 extern int parser_debug;
 #endif
 
-/* Tokens.  */
+/* Token type.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     aIDENTIFIER = 258,
-     aPRAGMA = 259,
-     aKNOWNTYPE = 260,
-     aNUM = 261,
-     aHEXNUM = 262,
-     aDOUBLE = 263,
-     aSTRING = 264,
-     aWSTRING = 265,
-     aSQSTRING = 266,
-     aUUID = 267,
-     aEOF = 268,
-     SHL = 269,
-     SHR = 270,
-     MEMBERPTR = 271,
-     EQUALITY = 272,
-     INEQUALITY = 273,
-     GREATEREQUAL = 274,
-     LESSEQUAL = 275,
-     LOGICALOR = 276,
-     LOGICALAND = 277,
-     ELLIPSIS = 278,
-     tAGGREGATABLE = 279,
-     tALLOCATE = 280,
-     tANNOTATION = 281,
-     tAPPOBJECT = 282,
-     tASYNC = 283,
-     tASYNCUUID = 284,
-     tAUTOHANDLE = 285,
-     tBINDABLE = 286,
-     tBOOLEAN = 287,
-     tBROADCAST = 288,
-     tBYTE = 289,
-     tBYTECOUNT = 290,
-     tCALLAS = 291,
-     tCALLBACK = 292,
-     tCASE = 293,
-     tCDECL = 294,
-     tCHAR = 295,
-     tCOCLASS = 296,
-     tCODE = 297,
-     tCOMMSTATUS = 298,
-     tCONST = 299,
-     tCONTEXTHANDLE = 300,
-     tCONTEXTHANDLENOSERIALIZE = 301,
-     tCONTEXTHANDLESERIALIZE = 302,
-     tCONTROL = 303,
-     tCPPQUOTE = 304,
-     tDECODE = 305,
-     tDEFAULT = 306,
-     tDEFAULTBIND = 307,
-     tDEFAULTCOLLELEM = 308,
-     tDEFAULTVALUE = 309,
-     tDEFAULTVTABLE = 310,
-     tDISABLECONSISTENCYCHECK = 311,
-     tDISPLAYBIND = 312,
-     tDISPINTERFACE = 313,
-     tDLLNAME = 314,
-     tDOUBLE = 315,
-     tDUAL = 316,
-     tENABLEALLOCATE = 317,
-     tENCODE = 318,
-     tENDPOINT = 319,
-     tENTRY = 320,
-     tENUM = 321,
-     tERRORSTATUST = 322,
-     tEXPLICITHANDLE = 323,
-     tEXTERN = 324,
-     tFALSE = 325,
-     tFASTCALL = 326,
-     tFAULTSTATUS = 327,
-     tFLOAT = 328,
-     tFORCEALLOCATE = 329,
-     tHANDLE = 330,
-     tHANDLET = 331,
-     tHELPCONTEXT = 332,
-     tHELPFILE = 333,
-     tHELPSTRING = 334,
-     tHELPSTRINGCONTEXT = 335,
-     tHELPSTRINGDLL = 336,
-     tHIDDEN = 337,
-     tHYPER = 338,
-     tID = 339,
-     tIDEMPOTENT = 340,
-     tIGNORE = 341,
-     tIIDIS = 342,
-     tIMMEDIATEBIND = 343,
-     tIMPLICITHANDLE = 344,
-     tIMPORT = 345,
-     tIMPORTLIB = 346,
-     tIN = 347,
-     tIN_LINE = 348,
-     tINLINE = 349,
-     tINPUTSYNC = 350,
-     tINT = 351,
-     tINT3264 = 352,
-     tINT64 = 353,
-     tINTERFACE = 354,
-     tLCID = 355,
-     tLENGTHIS = 356,
-     tLIBRARY = 357,
-     tLICENSED = 358,
-     tLOCAL = 359,
-     tLONG = 360,
-     tMAYBE = 361,
-     tMESSAGE = 362,
-     tMETHODS = 363,
-     tMODULE = 364,
-     tNAMESPACE = 365,
-     tNOCODE = 366,
-     tNONBROWSABLE = 367,
-     tNONCREATABLE = 368,
-     tNONEXTENSIBLE = 369,
-     tNOTIFY = 370,
-     tNOTIFYFLAG = 371,
-     tNULL = 372,
-     tOBJECT = 373,
-     tODL = 374,
-     tOLEAUTOMATION = 375,
-     tOPTIMIZE = 376,
-     tOPTIONAL = 377,
-     tOUT = 378,
-     tPARTIALIGNORE = 379,
-     tPASCAL = 380,
-     tPOINTERDEFAULT = 381,
-     tPROGID = 382,
-     tPROPERTIES = 383,
-     tPROPGET = 384,
-     tPROPPUT = 385,
-     tPROPPUTREF = 386,
-     tPROXY = 387,
-     tPTR = 388,
-     tPUBLIC = 389,
-     tRANGE = 390,
-     tREADONLY = 391,
-     tREF = 392,
-     tREGISTER = 393,
-     tREPRESENTAS = 394,
-     tREQUESTEDIT = 395,
-     tRESTRICTED = 396,
-     tRETVAL = 397,
-     tSAFEARRAY = 398,
-     tSHORT = 399,
-     tSIGNED = 400,
-     tSIZEIS = 401,
-     tSIZEOF = 402,
-     tSMALL = 403,
-     tSOURCE = 404,
-     tSTATIC = 405,
-     tSTDCALL = 406,
-     tSTRICTCONTEXTHANDLE = 407,
-     tSTRING = 408,
-     tSTRUCT = 409,
-     tSWITCH = 410,
-     tSWITCHIS = 411,
-     tSWITCHTYPE = 412,
-     tTHREADING = 413,
-     tTRANSMITAS = 414,
-     tTRUE = 415,
-     tTYPEDEF = 416,
-     tUIDEFAULT = 417,
-     tUNION = 418,
-     tUNIQUE = 419,
-     tUNSIGNED = 420,
-     tUSESGETLASTERROR = 421,
-     tUSERMARSHAL = 422,
-     tUUID = 423,
-     tV1ENUM = 424,
-     tVARARG = 425,
-     tVERSION = 426,
-     tVIPROGID = 427,
-     tVOID = 428,
-     tWCHAR = 429,
-     tWIREMARSHAL = 430,
-     tAPARTMENT = 431,
-     tNEUTRAL = 432,
-     tSINGLE = 433,
-     tFREE = 434,
-     tBOTH = 435,
-     ADDRESSOF = 436,
-     NEG = 437,
-     POS = 438,
-     PPTR = 439,
-     CAST = 440
-   };
+  enum yytokentype
+  {
+    aIDENTIFIER = 258,
+    aPRAGMA = 259,
+    aKNOWNTYPE = 260,
+    aNUM = 261,
+    aHEXNUM = 262,
+    aDOUBLE = 263,
+    aSTRING = 264,
+    aWSTRING = 265,
+    aSQSTRING = 266,
+    aUUID = 267,
+    aEOF = 268,
+    SHL = 269,
+    SHR = 270,
+    MEMBERPTR = 271,
+    EQUALITY = 272,
+    INEQUALITY = 273,
+    GREATEREQUAL = 274,
+    LESSEQUAL = 275,
+    LOGICALOR = 276,
+    LOGICALAND = 277,
+    ELLIPSIS = 278,
+    tAGGREGATABLE = 279,
+    tALLOCATE = 280,
+    tANNOTATION = 281,
+    tAPPOBJECT = 282,
+    tASYNC = 283,
+    tASYNCUUID = 284,
+    tAUTOHANDLE = 285,
+    tBINDABLE = 286,
+    tBOOLEAN = 287,
+    tBROADCAST = 288,
+    tBYTE = 289,
+    tBYTECOUNT = 290,
+    tCALLAS = 291,
+    tCALLBACK = 292,
+    tCASE = 293,
+    tCDECL = 294,
+    tCHAR = 295,
+    tCOCLASS = 296,
+    tCODE = 297,
+    tCOMMSTATUS = 298,
+    tCONST = 299,
+    tCONTEXTHANDLE = 300,
+    tCONTEXTHANDLENOSERIALIZE = 301,
+    tCONTEXTHANDLESERIALIZE = 302,
+    tCONTROL = 303,
+    tCPPQUOTE = 304,
+    tDECODE = 305,
+    tDEFAULT = 306,
+    tDEFAULTBIND = 307,
+    tDEFAULTCOLLELEM = 308,
+    tDEFAULTVALUE = 309,
+    tDEFAULTVTABLE = 310,
+    tDISABLECONSISTENCYCHECK = 311,
+    tDISPLAYBIND = 312,
+    tDISPINTERFACE = 313,
+    tDLLNAME = 314,
+    tDOUBLE = 315,
+    tDUAL = 316,
+    tENABLEALLOCATE = 317,
+    tENCODE = 318,
+    tENDPOINT = 319,
+    tENTRY = 320,
+    tENUM = 321,
+    tERRORSTATUST = 322,
+    tEXPLICITHANDLE = 323,
+    tEXTERN = 324,
+    tFALSE = 325,
+    tFASTCALL = 326,
+    tFAULTSTATUS = 327,
+    tFLOAT = 328,
+    tFORCEALLOCATE = 329,
+    tHANDLE = 330,
+    tHANDLET = 331,
+    tHELPCONTEXT = 332,
+    tHELPFILE = 333,
+    tHELPSTRING = 334,
+    tHELPSTRINGCONTEXT = 335,
+    tHELPSTRINGDLL = 336,
+    tHIDDEN = 337,
+    tHYPER = 338,
+    tID = 339,
+    tIDEMPOTENT = 340,
+    tIGNORE = 341,
+    tIIDIS = 342,
+    tIMMEDIATEBIND = 343,
+    tIMPLICITHANDLE = 344,
+    tIMPORT = 345,
+    tIMPORTLIB = 346,
+    tIN = 347,
+    tIN_LINE = 348,
+    tINLINE = 349,
+    tINPUTSYNC = 350,
+    tINT = 351,
+    tINT3264 = 352,
+    tINT64 = 353,
+    tINTERFACE = 354,
+    tLCID = 355,
+    tLENGTHIS = 356,
+    tLIBRARY = 357,
+    tLICENSED = 358,
+    tLOCAL = 359,
+    tLONG = 360,
+    tMAYBE = 361,
+    tMESSAGE = 362,
+    tMETHODS = 363,
+    tMODULE = 364,
+    tNAMESPACE = 365,
+    tNOCODE = 366,
+    tNONBROWSABLE = 367,
+    tNONCREATABLE = 368,
+    tNONEXTENSIBLE = 369,
+    tNOTIFY = 370,
+    tNOTIFYFLAG = 371,
+    tNULL = 372,
+    tOBJECT = 373,
+    tODL = 374,
+    tOLEAUTOMATION = 375,
+    tOPTIMIZE = 376,
+    tOPTIONAL = 377,
+    tOUT = 378,
+    tPARTIALIGNORE = 379,
+    tPASCAL = 380,
+    tPOINTERDEFAULT = 381,
+    tPROGID = 382,
+    tPROPERTIES = 383,
+    tPROPGET = 384,
+    tPROPPUT = 385,
+    tPROPPUTREF = 386,
+    tPROXY = 387,
+    tPTR = 388,
+    tPUBLIC = 389,
+    tRANGE = 390,
+    tREADONLY = 391,
+    tREF = 392,
+    tREGISTER = 393,
+    tREPRESENTAS = 394,
+    tREQUESTEDIT = 395,
+    tRESTRICTED = 396,
+    tRETVAL = 397,
+    tSAFEARRAY = 398,
+    tSHORT = 399,
+    tSIGNED = 400,
+    tSIZEIS = 401,
+    tSIZEOF = 402,
+    tSMALL = 403,
+    tSOURCE = 404,
+    tSTATIC = 405,
+    tSTDCALL = 406,
+    tSTRICTCONTEXTHANDLE = 407,
+    tSTRING = 408,
+    tSTRUCT = 409,
+    tSWITCH = 410,
+    tSWITCHIS = 411,
+    tSWITCHTYPE = 412,
+    tTHREADING = 413,
+    tTRANSMITAS = 414,
+    tTRUE = 415,
+    tTYPEDEF = 416,
+    tUIDEFAULT = 417,
+    tUNION = 418,
+    tUNIQUE = 419,
+    tUNSIGNED = 420,
+    tUSESGETLASTERROR = 421,
+    tUSERMARSHAL = 422,
+    tUUID = 423,
+    tV1ENUM = 424,
+    tVARARG = 425,
+    tVERSION = 426,
+    tVIPROGID = 427,
+    tVOID = 428,
+    tWCHAR = 429,
+    tWIREMARSHAL = 430,
+    tAPARTMENT = 431,
+    tNEUTRAL = 432,
+    tSINGLE = 433,
+    tFREE = 434,
+    tBOTH = 435,
+    CAST = 436,
+    PPTR = 437,
+    POS = 438,
+    NEG = 439,
+    ADDRESSOF = 440
+  };
 #endif
 
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+
+union YYSTYPE
 {
-/* Line 2053 of yacc.c  */
-#line 129 "parser.y"
+#line 129 "parser.y" /* yacc.c:1909  */
 
 	attr_t *attr;
 	attr_list_t *attr_list;
@@ -264,29 +263,17 @@
 	struct _decl_spec_t *declspec;
 	enum storage_class stgclass;
 
+#line 267 "parser.tab.h" /* yacc.c:1909  */
+};
 
-/* Line 2053 of yacc.c  */
-#line 270 "parser.tab.h"
-} YYSTYPE;
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
+
 extern YYSTYPE parser_lval;
 
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int parser_parse (void *YYPARSE_PARAM);
-#else
-int parser_parse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
 int parser_parse (void);
-#else
-int parser_parse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
 #endif /* !YY_PARSER_PARSER_TAB_H_INCLUDED  */
