/* A Bison parser, made by GNU Bison 2.5.  */

/* Bison interface for Yacc-like parsers in C
   
      Copyright (C) 1984, 1989-1990, 2000-2011 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/>.  */

/* As a special exception, you may create a larger work that contains
   part or all of the Bison parser skeleton and distribute that work
   under terms of your choice, so long as that work isn't itself a
   parser generator using the skeleton or a modified version thereof
   as a parser skeleton.  Alternatively, if you modify or redistribute
   the parser skeleton itself, you may (at your option) remove this
   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.  */


/* Tokens.  */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
   /* Put the tokens into the symbol table, so that GDB and other debuggers
      know about them.  */
   enum yytokentype {
     TYPEDEF = 258,
     AUTO = 259,
     EXTERN = 260,
     REGISTER = 261,
     STATIC = 262,
     INLINE = 263,
     FORTRAN = 264,
     CONST = 265,
     VOLATILE = 266,
     RESTRICT = 267,
     FORALL = 268,
     LVALUE = 269,
     VOID = 270,
     CHAR = 271,
     SHORT = 272,
     INT = 273,
     LONG = 274,
     FLOAT = 275,
     DOUBLE = 276,
     SIGNED = 277,
     UNSIGNED = 278,
     VALIST = 279,
     BOOL = 280,
     COMPLEX = 281,
     IMAGINARY = 282,
     TYPEOF = 283,
     LABEL = 284,
     ENUM = 285,
     STRUCT = 286,
     UNION = 287,
     OTYPE = 288,
     FTYPE = 289,
     DTYPE = 290,
     TRAIT = 291,
     SIZEOF = 292,
     OFFSETOF = 293,
     ATTRIBUTE = 294,
     EXTENSION = 295,
     IF = 296,
     ELSE = 297,
     SWITCH = 298,
     CASE = 299,
     DEFAULT = 300,
     DO = 301,
     WHILE = 302,
     FOR = 303,
     BREAK = 304,
     CONTINUE = 305,
     GOTO = 306,
     RETURN = 307,
     CHOOSE = 308,
     DISABLE = 309,
     ENABLE = 310,
     FALLTHRU = 311,
     TRY = 312,
     CATCH = 313,
     CATCHRESUME = 314,
     FINALLY = 315,
     THROW = 316,
     THROWRESUME = 317,
     AT = 318,
     ASM = 319,
     ALIGNAS = 320,
     ALIGNOF = 321,
     ATOMIC = 322,
     GENERIC = 323,
     NORETURN = 324,
     STATICASSERT = 325,
     THREADLOCAL = 326,
     IDENTIFIER = 327,
     QUOTED_IDENTIFIER = 328,
     TYPEDEFname = 329,
     TYPEGENname = 330,
     ATTR_IDENTIFIER = 331,
     ATTR_TYPEDEFname = 332,
     ATTR_TYPEGENname = 333,
     INTEGERconstant = 334,
     FLOATINGconstant = 335,
     CHARACTERconstant = 336,
     STRINGliteral = 337,
     ZERO = 338,
     ONE = 339,
     ARROW = 340,
     ICR = 341,
     DECR = 342,
     LS = 343,
     RS = 344,
     LE = 345,
     GE = 346,
     EQ = 347,
     NE = 348,
     ANDAND = 349,
     OROR = 350,
     ELLIPSIS = 351,
     MULTassign = 352,
     DIVassign = 353,
     MODassign = 354,
     PLUSassign = 355,
     MINUSassign = 356,
     LSassign = 357,
     RSassign = 358,
     ANDassign = 359,
     ERassign = 360,
     ORassign = 361,
     ATassign = 362,
     THEN = 363
   };
#endif
/* Tokens.  */
#define TYPEDEF 258
#define AUTO 259
#define EXTERN 260
#define REGISTER 261
#define STATIC 262
#define INLINE 263
#define FORTRAN 264
#define CONST 265
#define VOLATILE 266
#define RESTRICT 267
#define FORALL 268
#define LVALUE 269
#define VOID 270
#define CHAR 271
#define SHORT 272
#define INT 273
#define LONG 274
#define FLOAT 275
#define DOUBLE 276
#define SIGNED 277
#define UNSIGNED 278
#define VALIST 279
#define BOOL 280
#define COMPLEX 281
#define IMAGINARY 282
#define TYPEOF 283
#define LABEL 284
#define ENUM 285
#define STRUCT 286
#define UNION 287
#define OTYPE 288
#define FTYPE 289
#define DTYPE 290
#define TRAIT 291
#define SIZEOF 292
#define OFFSETOF 293
#define ATTRIBUTE 294
#define EXTENSION 295
#define IF 296
#define ELSE 297
#define SWITCH 298
#define CASE 299
#define DEFAULT 300
#define DO 301
#define WHILE 302
#define FOR 303
#define BREAK 304
#define CONTINUE 305
#define GOTO 306
#define RETURN 307
#define CHOOSE 308
#define DISABLE 309
#define ENABLE 310
#define FALLTHRU 311
#define TRY 312
#define CATCH 313
#define CATCHRESUME 314
#define FINALLY 315
#define THROW 316
#define THROWRESUME 317
#define AT 318
#define ASM 319
#define ALIGNAS 320
#define ALIGNOF 321
#define ATOMIC 322
#define GENERIC 323
#define NORETURN 324
#define STATICASSERT 325
#define THREADLOCAL 326
#define IDENTIFIER 327
#define QUOTED_IDENTIFIER 328
#define TYPEDEFname 329
#define TYPEGENname 330
#define ATTR_IDENTIFIER 331
#define ATTR_TYPEDEFname 332
#define ATTR_TYPEGENname 333
#define INTEGERconstant 334
#define FLOATINGconstant 335
#define CHARACTERconstant 336
#define STRINGliteral 337
#define ZERO 338
#define ONE 339
#define ARROW 340
#define ICR 341
#define DECR 342
#define LS 343
#define RS 344
#define LE 345
#define GE 346
#define EQ 347
#define NE 348
#define ANDAND 349
#define OROR 350
#define ELLIPSIS 351
#define MULTassign 352
#define DIVassign 353
#define MODassign 354
#define PLUSassign 355
#define MINUSassign 356
#define LSassign 357
#define RSassign 358
#define ANDassign 359
#define ERassign 360
#define ORassign 361
#define ATassign 362
#define THEN 363




#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{

/* Line 2068 of yacc.c  */
#line 110 "parser.yy"

	Token tok;
	ParseNode *pn;
	ExpressionNode *en;
	DeclarationNode *decl;
	DeclarationNode::Aggregate aggKey;
	DeclarationNode::TypeClass tclass;
	StatementNode *sn;
	ConstantNode *constant;
	LabelNode *label;
	InitializerNode *in;
	bool flag;



/* Line 2068 of yacc.c  */
#line 282 "Parser/parser.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif

extern YYSTYPE yylval;


