/* 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 {
     VAR = 258,
     EXPR = 259,
     ARRAY = 260,
     STRUCT = 261,
     UNION = 262,
     ENUM = 263,
     COMP = 264,
     HASH = 265,
     SEMI = 266,
     MOD = 267,
     OC = 268,
     CC = 269,
     DOLLAR = 270,
     DOTDOTDOT = 271,
     ENDFILE = 272,
     GLOBAL = 273,
     AUTO = 274,
     STATIC = 275,
     CONST = 276,
     POLY = 277,
     INTEGER = 278,
     NATURAL = 279,
     RATIONAL = 280,
     REAL = 281,
     STRING = 282,
     FOREIGN = 283,
     FILET = 284,
     MUTEX = 285,
     SEMAPHORE = 286,
     CONTINUATION = 287,
     THREAD = 288,
     VOID = 289,
     BOOL = 290,
     FUNCTION = 291,
     FUNC = 292,
     EXCEPTION = 293,
     RAISE = 294,
     TYPEDEF = 295,
     IMPORT = 296,
     NEW = 297,
     ANONINIT = 298,
     NAMESPACE = 299,
     PUBLIC = 300,
     PROTECTED = 301,
     EXTEND = 302,
     WHILE = 303,
     DO = 304,
     FOR = 305,
     SWITCH = 306,
     BREAK = 307,
     CONTINUE = 308,
     RETURNTOK = 309,
     FORK = 310,
     CASE = 311,
     DEFAULT = 312,
     TWIXT = 313,
     NAME = 314,
     TYPENAME = 315,
     NAMESPACENAME = 316,
     COMMAND = 317,
     NAMECOMMAND = 318,
     TEN_NUM = 319,
     OCTAL0_NUM = 320,
     OCTAL_NUM = 321,
     BINARY_NUM = 322,
     HEX_NUM = 323,
     TEN_FLOAT = 324,
     OCTAL0_FLOAT = 325,
     OCTAL_FLOAT = 326,
     BINARY_FLOAT = 327,
     HEX_FLOAT = 328,
     CHAR_CONST = 329,
     STRING_CONST = 330,
     POLY_CONST = 331,
     THREAD_CONST = 332,
     COMMENT_CONST = 333,
     VOIDVAL = 334,
     BOOLVAL = 335,
     DARROW = 336,
     ISTYPE = 337,
     HASMEMBER = 338,
     POUND = 339,
     COMMA = 340,
     ASSIGNAND = 341,
     ASSIGNOR = 342,
     ASSIGNLOR = 343,
     ASSIGNLAND = 344,
     ASSIGNLXOR = 345,
     ASSIGNSHIFTR = 346,
     ASSIGNSHIFTL = 347,
     ASSIGNPOW = 348,
     ASSIGNMOD = 349,
     ASSIGNDIV = 350,
     ASSIGNDIVIDE = 351,
     ASSIGNTIMES = 352,
     ASSIGNMINUS = 353,
     ASSIGNPLUS = 354,
     ASSIGN = 355,
     COLON = 356,
     QUEST = 357,
     OR = 358,
     AND = 359,
     LOR = 360,
     LXOR = 361,
     LAND = 362,
     NE = 363,
     EQ = 364,
     GE = 365,
     LE = 366,
     GT = 367,
     LT = 368,
     SHIFTR = 369,
     SHIFTL = 370,
     MINUS = 371,
     PLUS = 372,
     DIV = 373,
     DIVIDE = 374,
     TIMES = 375,
     POW3 = 376,
     POW2 = 377,
     STARSTAR = 378,
     POW = 379,
     UNIONCAST = 380,
     THREADID = 381,
     AMPER = 382,
     STAR = 383,
     DEC = 384,
     INC = 385,
     LNOT = 386,
     FACT = 387,
     BANG = 388,
     UMINUS = 389,
     CP = 390,
     OP = 391,
     CALL = 392,
     STAROS = 393,
     ARROW = 394,
     DOT = 395,
     CS = 396,
     OS = 397,
     POINTER = 398,
     COLONCOLON = 399,
     NONL = 400,
     TRY = 401,
     IF = 402,
     NL = 403,
     CATCH = 404,
     ELSE = 405
   };
#endif
/* Tokens.  */
#define VAR 258
#define EXPR 259
#define ARRAY 260
#define STRUCT 261
#define UNION 262
#define ENUM 263
#define COMP 264
#define HASH 265
#define SEMI 266
#define MOD 267
#define OC 268
#define CC 269
#define DOLLAR 270
#define DOTDOTDOT 271
#define ENDFILE 272
#define GLOBAL 273
#define AUTO 274
#define STATIC 275
#define CONST 276
#define POLY 277
#define INTEGER 278
#define NATURAL 279
#define RATIONAL 280
#define REAL 281
#define STRING 282
#define FOREIGN 283
#define FILET 284
#define MUTEX 285
#define SEMAPHORE 286
#define CONTINUATION 287
#define THREAD 288
#define VOID 289
#define BOOL 290
#define FUNCTION 291
#define FUNC 292
#define EXCEPTION 293
#define RAISE 294
#define TYPEDEF 295
#define IMPORT 296
#define NEW 297
#define ANONINIT 298
#define NAMESPACE 299
#define PUBLIC 300
#define PROTECTED 301
#define EXTEND 302
#define WHILE 303
#define DO 304
#define FOR 305
#define SWITCH 306
#define BREAK 307
#define CONTINUE 308
#define RETURNTOK 309
#define FORK 310
#define CASE 311
#define DEFAULT 312
#define TWIXT 313
#define NAME 314
#define TYPENAME 315
#define NAMESPACENAME 316
#define COMMAND 317
#define NAMECOMMAND 318
#define TEN_NUM 319
#define OCTAL0_NUM 320
#define OCTAL_NUM 321
#define BINARY_NUM 322
#define HEX_NUM 323
#define TEN_FLOAT 324
#define OCTAL0_FLOAT 325
#define OCTAL_FLOAT 326
#define BINARY_FLOAT 327
#define HEX_FLOAT 328
#define CHAR_CONST 329
#define STRING_CONST 330
#define POLY_CONST 331
#define THREAD_CONST 332
#define COMMENT_CONST 333
#define VOIDVAL 334
#define BOOLVAL 335
#define DARROW 336
#define ISTYPE 337
#define HASMEMBER 338
#define POUND 339
#define COMMA 340
#define ASSIGNAND 341
#define ASSIGNOR 342
#define ASSIGNLOR 343
#define ASSIGNLAND 344
#define ASSIGNLXOR 345
#define ASSIGNSHIFTR 346
#define ASSIGNSHIFTL 347
#define ASSIGNPOW 348
#define ASSIGNMOD 349
#define ASSIGNDIV 350
#define ASSIGNDIVIDE 351
#define ASSIGNTIMES 352
#define ASSIGNMINUS 353
#define ASSIGNPLUS 354
#define ASSIGN 355
#define COLON 356
#define QUEST 357
#define OR 358
#define AND 359
#define LOR 360
#define LXOR 361
#define LAND 362
#define NE 363
#define EQ 364
#define GE 365
#define LE 366
#define GT 367
#define LT 368
#define SHIFTR 369
#define SHIFTL 370
#define MINUS 371
#define PLUS 372
#define DIV 373
#define DIVIDE 374
#define TIMES 375
#define POW3 376
#define POW2 377
#define STARSTAR 378
#define POW 379
#define UNIONCAST 380
#define THREADID 381
#define AMPER 382
#define STAR 383
#define DEC 384
#define INC 385
#define LNOT 386
#define FACT 387
#define BANG 388
#define UMINUS 389
#define CP 390
#define OP 391
#define CALL 392
#define STAROS 393
#define ARROW 394
#define DOT 395
#define CS 396
#define OS 397
#define POINTER 398
#define COLONCOLON 399
#define NONL 400
#define TRY 401
#define IF 402
#define NL 403
#define CATCH 404
#define ELSE 405




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

/* Line 2068 of yacc.c  */
#line 72 "gram.y"

    int		    ints;
    Value	    value;
    Class	    class;
    ArgType	    *argType;
    Type	    *type;
    Publish	    publish;
    ExprPtr	    expr;
    Atom	    atom;
    DeclListPtr	    declList;
    MemListPtr	    memList;
    Fulltype	    fulltype;
    ArgDecl	    argDecl;
    SymbolPtr	    symbol;
    NamespacePtr    namespace;
    CodePtr	    code;
    Bool	    bool;
    AtomListPtr	    atomList;
    FuncDecl	    funcDecl;



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

extern YYSTYPE yylval;


