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

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

#ifndef YY_YY_PARSER_HPP_INCLUDED
# define YY_YY_PARSER_HPP_INCLUDED
/* Enabling traces.  */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
#if YYDEBUG
extern int yydebug;
#endif

/* Tokens.  */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
   /* Put the tokens into the symbol table, so that GDB and other debuggers
      know about them.  */
   enum yytokentype {
     TOK_RETURN = 258,
     TOK_RETURNS = 259,
     TOK_MY = 260,
     TOK_DO = 261,
     TOK_TRY = 262,
     TOK_THROW = 263,
     TOK_CATCH = 264,
     TOK_WHERE = 265,
     TOK_WHILE = 266,
     TOK_IF = 267,
     TOK_FOR = 268,
     TOK_SUB = 269,
     TOK_THREAD_EXIT = 270,
     TOK_BREAK = 271,
     TOK_CONTINUE = 272,
     TOK_CONTEXT_ROW = 273,
     TOK_FIND = 274,
     TOK_FOREACH = 275,
     TOK_IN = 276,
     TOK_DELETE = 277,
     TOK_REMOVE = 278,
     TOK_PRIVATE = 279,
     TOK_PUBLIC = 280,
     TOK_SYNCHRONIZED = 281,
     TOK_DEPRECATED = 282,
     TOK_CONTEXT = 283,
     TOK_SORT_BY = 284,
     TOK_SORT_DESCENDING_BY = 285,
     TOK_SUB_CONTEXT = 286,
     TOK_CONST = 287,
     TOK_SUMMARIZE = 288,
     TOK_BY = 289,
     TOK_OUR = 290,
     TOK_RETHROW = 291,
     TOK_SWITCH = 292,
     TOK_CASE = 293,
     TOK_DEFAULT = 294,
     TOK_INHERITS = 295,
     TOK_ELSE = 296,
     TOK_STATIC = 297,
     TOK_NAMESPACE = 298,
     TOK_MODULE = 299,
     TOK_FINAL = 300,
     TOK_ABSTRACT = 301,
     TOK_UNREFERENCE = 302,
     P_INCREMENT = 303,
     P_DECREMENT = 304,
     PLUS_EQUALS = 305,
     MINUS_EQUALS = 306,
     AND_EQUALS = 307,
     OR_EQUALS = 308,
     MODULA_EQUALS = 309,
     MULTIPLY_EQUALS = 310,
     DIVIDE_EQUALS = 311,
     XOR_EQUALS = 312,
     SHIFT_LEFT_EQUALS = 313,
     SHIFT_RIGHT_EQUALS = 314,
     TOK_UNSHIFT = 315,
     TOK_PUSH = 316,
     TOK_POP = 317,
     TOK_SHIFT = 318,
     TOK_CHOMP = 319,
     TOK_TRIM = 320,
     LOGICAL_AND = 321,
     LOGICAL_OR = 322,
     LOGICAL_EQ = 323,
     LOGICAL_NE = 324,
     LOGICAL_LE = 325,
     LOGICAL_GE = 326,
     LOGICAL_CMP = 327,
     ABSOLUTE_EQ = 328,
     ABSOLUTE_NE = 329,
     REGEX_MATCH = 330,
     REGEX_NMATCH = 331,
     TOK_EXISTS = 332,
     TOK_INSTANCEOF = 333,
     SHIFT_RIGHT = 334,
     SHIFT_LEFT = 335,
     TOK_ELEMENTS = 336,
     TOK_KEYS = 337,
     TOK_NEW = 338,
     TOK_BACKGROUND = 339,
     TOK_ON_EXIT = 340,
     TOK_ON_SUCCESS = 341,
     TOK_ON_ERROR = 342,
     TOK_MAP = 343,
     TOK_FOLDR = 344,
     TOK_FOLDL = 345,
     TOK_SELECT = 346,
     TOK_SPLICE = 347,
     TOK_EXTRACT = 348,
     IMPLICIT_ELEMENT = 349,
     INTEGER = 350,
     QFLOAT = 351,
     NUMBER = 352,
     IDENTIFIER = 353,
     VAR_REF = 354,
     BACKQUOTE = 355,
     SELF_REF = 356,
     KW_IDENTIFIER_OPENPAREN = 357,
     SCOPED_REF = 358,
     SCOPED_VREF = 359,
     CONTEXT_REF = 360,
     COMPLEX_CONTEXT_REF = 361,
     QORE_CAST = 362,
     CLASS_STRING = 363,
     DATETIME = 364,
     QUOTED_WORD = 365,
     BINARY = 366,
     REGEX_SUBST = 367,
     REGEX_TRANS = 368,
     CLASS_SCOPED_REF = 369,
     BASE_CLASS_CALL = 370,
     REGEX = 371,
     REGEX_EXTRACT = 372,
     IMPLICIT_ARG_REF = 373,
     DOT_KW_IDENTIFIER = 374,
     TRY_MODULE_ERROR = 375,
     IFX = 376,
     NEG = 377
   };
#endif
/* Tokens.  */
#define TOK_RETURN 258
#define TOK_RETURNS 259
#define TOK_MY 260
#define TOK_DO 261
#define TOK_TRY 262
#define TOK_THROW 263
#define TOK_CATCH 264
#define TOK_WHERE 265
#define TOK_WHILE 266
#define TOK_IF 267
#define TOK_FOR 268
#define TOK_SUB 269
#define TOK_THREAD_EXIT 270
#define TOK_BREAK 271
#define TOK_CONTINUE 272
#define TOK_CONTEXT_ROW 273
#define TOK_FIND 274
#define TOK_FOREACH 275
#define TOK_IN 276
#define TOK_DELETE 277
#define TOK_REMOVE 278
#define TOK_PRIVATE 279
#define TOK_PUBLIC 280
#define TOK_SYNCHRONIZED 281
#define TOK_DEPRECATED 282
#define TOK_CONTEXT 283
#define TOK_SORT_BY 284
#define TOK_SORT_DESCENDING_BY 285
#define TOK_SUB_CONTEXT 286
#define TOK_CONST 287
#define TOK_SUMMARIZE 288
#define TOK_BY 289
#define TOK_OUR 290
#define TOK_RETHROW 291
#define TOK_SWITCH 292
#define TOK_CASE 293
#define TOK_DEFAULT 294
#define TOK_INHERITS 295
#define TOK_ELSE 296
#define TOK_STATIC 297
#define TOK_NAMESPACE 298
#define TOK_MODULE 299
#define TOK_FINAL 300
#define TOK_ABSTRACT 301
#define TOK_UNREFERENCE 302
#define P_INCREMENT 303
#define P_DECREMENT 304
#define PLUS_EQUALS 305
#define MINUS_EQUALS 306
#define AND_EQUALS 307
#define OR_EQUALS 308
#define MODULA_EQUALS 309
#define MULTIPLY_EQUALS 310
#define DIVIDE_EQUALS 311
#define XOR_EQUALS 312
#define SHIFT_LEFT_EQUALS 313
#define SHIFT_RIGHT_EQUALS 314
#define TOK_UNSHIFT 315
#define TOK_PUSH 316
#define TOK_POP 317
#define TOK_SHIFT 318
#define TOK_CHOMP 319
#define TOK_TRIM 320
#define LOGICAL_AND 321
#define LOGICAL_OR 322
#define LOGICAL_EQ 323
#define LOGICAL_NE 324
#define LOGICAL_LE 325
#define LOGICAL_GE 326
#define LOGICAL_CMP 327
#define ABSOLUTE_EQ 328
#define ABSOLUTE_NE 329
#define REGEX_MATCH 330
#define REGEX_NMATCH 331
#define TOK_EXISTS 332
#define TOK_INSTANCEOF 333
#define SHIFT_RIGHT 334
#define SHIFT_LEFT 335
#define TOK_ELEMENTS 336
#define TOK_KEYS 337
#define TOK_NEW 338
#define TOK_BACKGROUND 339
#define TOK_ON_EXIT 340
#define TOK_ON_SUCCESS 341
#define TOK_ON_ERROR 342
#define TOK_MAP 343
#define TOK_FOLDR 344
#define TOK_FOLDL 345
#define TOK_SELECT 346
#define TOK_SPLICE 347
#define TOK_EXTRACT 348
#define IMPLICIT_ELEMENT 349
#define INTEGER 350
#define QFLOAT 351
#define NUMBER 352
#define IDENTIFIER 353
#define VAR_REF 354
#define BACKQUOTE 355
#define SELF_REF 356
#define KW_IDENTIFIER_OPENPAREN 357
#define SCOPED_REF 358
#define SCOPED_VREF 359
#define CONTEXT_REF 360
#define COMPLEX_CONTEXT_REF 361
#define QORE_CAST 362
#define CLASS_STRING 363
#define DATETIME 364
#define QUOTED_WORD 365
#define BINARY 366
#define REGEX_SUBST 367
#define REGEX_TRANS 368
#define CLASS_SCOPED_REF 369
#define BASE_CLASS_CALL 370
#define REGEX 371
#define REGEX_EXTRACT 372
#define IMPLICIT_ARG_REF 373
#define DOT_KW_IDENTIFIER 374
#define TRY_MODULE_ERROR 375
#define IFX 376
#define NEG 377



#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
/* Line 2058 of yacc.c  */
#line 1144 "parser.ypp"

   bool b;
   int i4;
   int64 integer;
   double decimal;
   QoreStringNode* String;
   char* string;
   BinaryNode* binary;
   AbstractQoreNode* node;
   QoreHashNode* hash;
   QoreListNode* list;
   AbstractStatement *statement;
   struct MemberInfo* memberinfo;
   struct ClassVarInfo* classvarinfo;
   StatementBlock *sblock;
   ContextModList* cmods;
   ContextMod *cmod;
   class HashElement *hashelement;
   QoreFunction *userfunc;	
   struct MethodNode* methodnode;
   class MemberList* memberlist;
   QoreClass *qoreclass;
   class ConstNode* constnode;
   QoreNamespace *ns;
   struct NSNodeList* nsnlist;
   struct NSNode* nsn;
   class ObjClassDef *classdef;
   DateTimeNode* datetime;
   RegexSubstNode* RegexSubst;
   RegexTransNode* RegexTrans;
   SwitchStatement *switchstmt;
   CaseNode* casenode;
   BCList* sclist;
   class BCNode* sclnode;
   BCAList* bcalist;
   BCANode* bcanode;
   NamedScope *nscope;
   QoreRegexNode* Regex;
   QoreImplicitArgumentNode* implicit_arg;
   RetTypeInfo* returnTypeInfo;
   struct ParserTypeStruct *parsertype;
   class ParseUserFunction* parsefunc;
   class ParseScopedUserFunction* sparsefunc;
   struct GVarDecl* gv;
   QoreNumberNode* num;
   TryModuleError* trymod;


/* Line 2058 of yacc.c  */
#line 350 "parser.hpp"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif

#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
typedef struct YYLTYPE
{
  int first_line;
  int first_column;
  int last_line;
  int last_column;
} YYLTYPE;
# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
# define YYLTYPE_IS_DECLARED 1
# define YYLTYPE_IS_TRIVIAL 1
#endif


#ifdef YYPARSE_PARAM
#if defined __STDC__ || defined __cplusplus
int yyparse (void *YYPARSE_PARAM);
#else
int yyparse ();
#endif
#else /* ! YYPARSE_PARAM */
#if defined __STDC__ || defined __cplusplus
int yyparse (yyscan_t yyscanner);
#else
int yyparse ();
#endif
#endif /* ! YYPARSE_PARAM */

#endif /* !YY_YY_PARSER_HPP_INCLUDED  */
