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

/* Bison interface for Yacc-like parsers in C

   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 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.  */

/* Undocumented macros, especially those whose name start with YY_,
   are private implementation details.  Do not rely on them.  */

#ifndef YY_SDF_SDF_PARSE_H_INCLUDED
# define YY_SDF_SDF_PARSE_H_INCLUDED
/* Debug traces.  */
#ifndef YYDEBUG
# define YYDEBUG 1
#endif
#if YYDEBUG
extern int sdfdebug;
#endif

/* Token type.  */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
  enum yytokentype
  {
    K_ABSOLUTE = 258,
    K_CELL = 259,
    K_CELLTYPE = 260,
    K_COND = 261,
    K_CONDELSE = 262,
    K_DATE = 263,
    K_DELAYFILE = 264,
    K_DELAY = 265,
    K_DESIGN = 266,
    K_DIVIDER = 267,
    K_HOLD = 268,
    K_INCREMENT = 269,
    K_INSTANCE = 270,
    K_INTERCONNECT = 271,
    K_IOPATH = 272,
    K_NEGEDGE = 273,
    K_POSEDGE = 274,
    K_PROCESS = 275,
    K_PROGRAM = 276,
    K_RECREM = 277,
    K_RECOVERY = 278,
    K_REMOVAL = 279,
    K_SDFVERSION = 280,
    K_SETUP = 281,
    K_SETUPHOLD = 282,
    K_TEMPERATURE = 283,
    K_TIMESCALE = 284,
    K_TIMINGCHECK = 285,
    K_VENDOR = 286,
    K_VERSION = 287,
    K_VOLTAGE = 288,
    K_WIDTH = 289,
    K_01 = 290,
    K_10 = 291,
    K_0Z = 292,
    K_Z1 = 293,
    K_1Z = 294,
    K_Z0 = 295,
    K_EQ = 296,
    K_NE = 297,
    K_CEQ = 298,
    K_CNE = 299,
    K_LOGICAL_ONE = 300,
    K_LOGICAL_ZERO = 301,
    K_LAND = 302,
    K_LOR = 303,
    HCHAR = 304,
    QSTRING = 305,
    IDENTIFIER = 306,
    REAL_NUMBER = 307,
    INTEGER = 308
  };
#endif
/* Tokens.  */
#define K_ABSOLUTE 258
#define K_CELL 259
#define K_CELLTYPE 260
#define K_COND 261
#define K_CONDELSE 262
#define K_DATE 263
#define K_DELAYFILE 264
#define K_DELAY 265
#define K_DESIGN 266
#define K_DIVIDER 267
#define K_HOLD 268
#define K_INCREMENT 269
#define K_INSTANCE 270
#define K_INTERCONNECT 271
#define K_IOPATH 272
#define K_NEGEDGE 273
#define K_POSEDGE 274
#define K_PROCESS 275
#define K_PROGRAM 276
#define K_RECREM 277
#define K_RECOVERY 278
#define K_REMOVAL 279
#define K_SDFVERSION 280
#define K_SETUP 281
#define K_SETUPHOLD 282
#define K_TEMPERATURE 283
#define K_TIMESCALE 284
#define K_TIMINGCHECK 285
#define K_VENDOR 286
#define K_VERSION 287
#define K_VOLTAGE 288
#define K_WIDTH 289
#define K_01 290
#define K_10 291
#define K_0Z 292
#define K_Z1 293
#define K_1Z 294
#define K_Z0 295
#define K_EQ 296
#define K_NE 297
#define K_CEQ 298
#define K_CNE 299
#define K_LOGICAL_ONE 300
#define K_LOGICAL_ZERO 301
#define K_LAND 302
#define K_LOR 303
#define HCHAR 304
#define QSTRING 305
#define IDENTIFIER 306
#define REAL_NUMBER 307
#define INTEGER 308

/* Value type.  */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
#line 37 "sdf_parse.y"

      unsigned long int_val;
      double real_val;
      char*  string_val;

      struct sdf_delay_s delay;
      struct port_with_edge_s port_with_edge;
      struct sdf_delval_list_s delval_list;

#line 173 "sdf_parse.h"

};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif

/* Location type.  */
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
typedef struct YYLTYPE YYLTYPE;
struct YYLTYPE
{
  int first_line;
  int first_column;
  int last_line;
  int last_column;
};
# define YYLTYPE_IS_DECLARED 1
# define YYLTYPE_IS_TRIVIAL 1
#endif


extern YYSTYPE sdflval;
extern YYLTYPE sdflloc;
int sdfparse (void);

#endif /* !YY_SDF_SDF_PARSE_H_INCLUDED  */
