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

/* Skeleton parser for Yacc-like parsing with Bison,
   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 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 2, 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, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.  */

/* As a special exception, when this file is copied by Bison into a
   Bison output file, you may use that output file without restriction.
   This special exception was added by the Free Software Foundation
   in version 1.24 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 {
     QSTRING = 258,
     NUM = 259,
     IPADDR = 260,
     ID = 261,
     CHR = 262,
     ADDOP = 263,
     MULOP = 264,
     COMPARISON = 265,
     OROP = 266,
     ANDOP = 267,
     NOTOP = 268,
     VAR = 269,
     CONST = 270,
     TYPE = 271,
     PROCEDURE = 272,
     FUNCTION = 273,
     ARRAY = 274,
     RECORD = 275,
     RETURN = 276,
     RESTART = 277,
     PRINT = 278,
     SELECT = 279,
     IF = 280,
     ELSE = 281,
     FOR = 282,
     TO = 283,
     DOWNTO = 284,
     LOAD = 285,
     GET = 286,
     REPEAT = 287,
     UNTIL = 288,
     AT = 289,
     WITH = 290,
     TRY = 291,
     EXCEPT = 292,
     RAISE = 293,
     THEN = 294,
     WHILE = 295,
     DO = 296,
     BREAK = 297,
     ASSIGN = 298,
     OF = 299,
     LABEL = 300,
     GOTO = 301,
     NEW = 302,
     DISPOSE = 303,
     CBEGIN = 304,
     END = 305,
     DOTS = 306,
     PROGRAM = 307,
     THEN_PREC = 308,
     UMINUS = 309
   };
#endif
#define QSTRING 258
#define NUM 259
#define IPADDR 260
#define ID 261
#define CHR 262
#define ADDOP 263
#define MULOP 264
#define COMPARISON 265
#define OROP 266
#define ANDOP 267
#define NOTOP 268
#define VAR 269
#define CONST 270
#define TYPE 271
#define PROCEDURE 272
#define FUNCTION 273
#define ARRAY 274
#define RECORD 275
#define RETURN 276
#define RESTART 277
#define PRINT 278
#define SELECT 279
#define IF 280
#define ELSE 281
#define FOR 282
#define TO 283
#define DOWNTO 284
#define LOAD 285
#define GET 286
#define REPEAT 287
#define UNTIL 288
#define AT 289
#define WITH 290
#define TRY 291
#define EXCEPT 292
#define RAISE 293
#define THEN 294
#define WHILE 295
#define DO 296
#define BREAK 297
#define ASSIGN 298
#define OF 299
#define LABEL 300
#define GOTO 301
#define NEW 302
#define DISPOSE 303
#define CBEGIN 304
#define END 305
#define DOTS 306
#define PROGRAM 307
#define THEN_PREC 308
#define UMINUS 309




#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
#line 226 "mglparse.y"
typedef union YYSTYPE {
	struct symlist  *symlist;	/* List of symbols in variable decl */
	struct typelist *typelist;	/* List of types in array decl */
	struct typesdef *type;		/* Expression type */
	struct sym      *symbol;	/* Pointer to symbol */
	struct expr     *expr;		/* expression tree */
	short           *ipaddr;	/* IP address */
	pcchar_t        *string;	/* string buffer */
	pcchar_t         chrarg;	/* character argument */
	int              intarg;	/* integer argument */
	int              op;		/* arithmetic operation */
} YYSTYPE;
/* Line 1249 of yacc.c.  */
#line 157 "y.tab.h"
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
#endif

extern YYSTYPE yylval;



