/* 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_YY_PARSE_HH_INCLUDED
# define YY_YY_PARSE_HH_INCLUDED
/* Debug traces.  */
#ifndef YYDEBUG
# define YYDEBUG 1
#endif
#if YYDEBUG
extern int yydebug;
#endif

/* Token type.  */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
  enum yytokentype
  {
    K_A = 258,
    K_ALIAS = 259,
    K_ALIAS_R = 260,
    K_APV = 261,
    K_ARITH_ABS = 262,
    K_ARITH_DIV = 263,
    K_ARITH_DIV_R = 264,
    K_ARITH_DIV_S = 265,
    K_ARITH_MOD = 266,
    K_ARITH_MOD_R = 267,
    K_ARITH_MOD_S = 268,
    K_ARITH_MULT = 269,
    K_ARITH_MULT_R = 270,
    K_ARITH_SUB = 271,
    K_ARITH_SUB_R = 272,
    K_ARITH_SUM = 273,
    K_ARITH_SUM_R = 274,
    K_ARITH_POW = 275,
    K_ARITH_POW_R = 276,
    K_ARITH_POW_S = 277,
    K_ARRAY = 278,
    K_ARRAY_2U = 279,
    K_ARRAY_2S = 280,
    K_ARRAY_I = 281,
    K_ARRAY_OBJ = 282,
    K_ARRAY_R = 283,
    K_ARRAY_S = 284,
    K_ARRAY_STR = 285,
    K_ARRAY_PORT = 286,
    K_CAST_INT = 287,
    K_CAST_REAL = 288,
    K_CAST_REAL_S = 289,
    K_CAST_2 = 290,
    K_CLASS = 291,
    K_CMP_EEQ = 292,
    K_CMP_EQ = 293,
    K_CMP_EQX = 294,
    K_CMP_EQZ = 295,
    K_CMP_EQ_R = 296,
    K_CMP_NEE = 297,
    K_CMP_NE = 298,
    K_CMP_NE_R = 299,
    K_CMP_GE = 300,
    K_CMP_GE_R = 301,
    K_CMP_GE_S = 302,
    K_CMP_GT = 303,
    K_CMP_GT_R = 304,
    K_CMP_GT_S = 305,
    K_CONCAT = 306,
    K_CONCAT8 = 307,
    K_DEBUG = 308,
    K_DELAY = 309,
    K_DFF_N = 310,
    K_DFF_N_ACLR = 311,
    K_DFF_N_ASET = 312,
    K_DFF_P = 313,
    K_DFF_P_ACLR = 314,
    K_DFF_P_ASET = 315,
    K_ENUM2 = 316,
    K_ENUM2_S = 317,
    K_ENUM4 = 318,
    K_ENUM4_S = 319,
    K_EVENT = 320,
    K_EVENT_OR = 321,
    K_EXPORT = 322,
    K_EXTEND_S = 323,
    K_FUNCTOR = 324,
    K_IMPORT = 325,
    K_ISLAND = 326,
    K_MODPATH = 327,
    K_NET = 328,
    K_NET_S = 329,
    K_NET_R = 330,
    K_NET_2S = 331,
    K_NET_2U = 332,
    K_NET8 = 333,
    K_NET8_2S = 334,
    K_NET8_2U = 335,
    K_NET8_S = 336,
    K_PARAM_STR = 337,
    K_PARAM_L = 338,
    K_PARAM_REAL = 339,
    K_PART = 340,
    K_PART_PV = 341,
    K_PART_V = 342,
    K_PART_V_S = 343,
    K_PORT = 344,
    K_PORT_INFO = 345,
    K_PV = 346,
    K_REDUCE_AND = 347,
    K_REDUCE_OR = 348,
    K_REDUCE_XOR = 349,
    K_REDUCE_NAND = 350,
    K_REDUCE_NOR = 351,
    K_REDUCE_XNOR = 352,
    K_REPEAT = 353,
    K_RESOLV = 354,
    K_SCOPE = 355,
    K_SFUNC = 356,
    K_SFUNC_E = 357,
    K_SHIFTL = 358,
    K_SHIFTR = 359,
    K_SHIFTRS = 360,
    K_SUBSTITUTE = 361,
    K_THREAD = 362,
    K_TIMESCALE = 363,
    K_TRAN = 364,
    K_TRANIF0 = 365,
    K_TRANIF1 = 366,
    K_TRANVP = 367,
    K_UFUNC = 368,
    K_UFUNC_E = 369,
    K_UDP = 370,
    K_UDP_C = 371,
    K_UDP_S = 372,
    K_VAR = 373,
    K_VAR_COBJECT = 374,
    K_VAR_DARRAY = 375,
    K_VAR_QUEUE = 376,
    K_VAR_S = 377,
    K_VAR_STR = 378,
    K_VAR_I = 379,
    K_VAR_R = 380,
    K_VAR_2S = 381,
    K_VAR_2U = 382,
    K_vpi_call = 383,
    K_vpi_call_w = 384,
    K_vpi_call_i = 385,
    K_vpi_func = 386,
    K_vpi_func_r = 387,
    K_disable = 388,
    K_fork = 389,
    K_ivl_version = 390,
    K_ivl_delay_selection = 391,
    K_vpi_module = 392,
    K_vpi_time_precision = 393,
    K_file_names = 394,
    K_file_line = 395,
    K_PORT_INPUT = 396,
    K_PORT_OUTPUT = 397,
    K_PORT_INOUT = 398,
    K_PORT_MIXED = 399,
    K_PORT_NODIR = 400,
    T_INSTR = 401,
    T_LABEL = 402,
    T_NUMBER = 403,
    T_STRING = 404,
    T_SYMBOL = 405,
    T_VECTOR = 406
  };
#endif
/* Tokens.  */
#define K_A 258
#define K_ALIAS 259
#define K_ALIAS_R 260
#define K_APV 261
#define K_ARITH_ABS 262
#define K_ARITH_DIV 263
#define K_ARITH_DIV_R 264
#define K_ARITH_DIV_S 265
#define K_ARITH_MOD 266
#define K_ARITH_MOD_R 267
#define K_ARITH_MOD_S 268
#define K_ARITH_MULT 269
#define K_ARITH_MULT_R 270
#define K_ARITH_SUB 271
#define K_ARITH_SUB_R 272
#define K_ARITH_SUM 273
#define K_ARITH_SUM_R 274
#define K_ARITH_POW 275
#define K_ARITH_POW_R 276
#define K_ARITH_POW_S 277
#define K_ARRAY 278
#define K_ARRAY_2U 279
#define K_ARRAY_2S 280
#define K_ARRAY_I 281
#define K_ARRAY_OBJ 282
#define K_ARRAY_R 283
#define K_ARRAY_S 284
#define K_ARRAY_STR 285
#define K_ARRAY_PORT 286
#define K_CAST_INT 287
#define K_CAST_REAL 288
#define K_CAST_REAL_S 289
#define K_CAST_2 290
#define K_CLASS 291
#define K_CMP_EEQ 292
#define K_CMP_EQ 293
#define K_CMP_EQX 294
#define K_CMP_EQZ 295
#define K_CMP_EQ_R 296
#define K_CMP_NEE 297
#define K_CMP_NE 298
#define K_CMP_NE_R 299
#define K_CMP_GE 300
#define K_CMP_GE_R 301
#define K_CMP_GE_S 302
#define K_CMP_GT 303
#define K_CMP_GT_R 304
#define K_CMP_GT_S 305
#define K_CONCAT 306
#define K_CONCAT8 307
#define K_DEBUG 308
#define K_DELAY 309
#define K_DFF_N 310
#define K_DFF_N_ACLR 311
#define K_DFF_N_ASET 312
#define K_DFF_P 313
#define K_DFF_P_ACLR 314
#define K_DFF_P_ASET 315
#define K_ENUM2 316
#define K_ENUM2_S 317
#define K_ENUM4 318
#define K_ENUM4_S 319
#define K_EVENT 320
#define K_EVENT_OR 321
#define K_EXPORT 322
#define K_EXTEND_S 323
#define K_FUNCTOR 324
#define K_IMPORT 325
#define K_ISLAND 326
#define K_MODPATH 327
#define K_NET 328
#define K_NET_S 329
#define K_NET_R 330
#define K_NET_2S 331
#define K_NET_2U 332
#define K_NET8 333
#define K_NET8_2S 334
#define K_NET8_2U 335
#define K_NET8_S 336
#define K_PARAM_STR 337
#define K_PARAM_L 338
#define K_PARAM_REAL 339
#define K_PART 340
#define K_PART_PV 341
#define K_PART_V 342
#define K_PART_V_S 343
#define K_PORT 344
#define K_PORT_INFO 345
#define K_PV 346
#define K_REDUCE_AND 347
#define K_REDUCE_OR 348
#define K_REDUCE_XOR 349
#define K_REDUCE_NAND 350
#define K_REDUCE_NOR 351
#define K_REDUCE_XNOR 352
#define K_REPEAT 353
#define K_RESOLV 354
#define K_SCOPE 355
#define K_SFUNC 356
#define K_SFUNC_E 357
#define K_SHIFTL 358
#define K_SHIFTR 359
#define K_SHIFTRS 360
#define K_SUBSTITUTE 361
#define K_THREAD 362
#define K_TIMESCALE 363
#define K_TRAN 364
#define K_TRANIF0 365
#define K_TRANIF1 366
#define K_TRANVP 367
#define K_UFUNC 368
#define K_UFUNC_E 369
#define K_UDP 370
#define K_UDP_C 371
#define K_UDP_S 372
#define K_VAR 373
#define K_VAR_COBJECT 374
#define K_VAR_DARRAY 375
#define K_VAR_QUEUE 376
#define K_VAR_S 377
#define K_VAR_STR 378
#define K_VAR_I 379
#define K_VAR_R 380
#define K_VAR_2S 381
#define K_VAR_2U 382
#define K_vpi_call 383
#define K_vpi_call_w 384
#define K_vpi_call_i 385
#define K_vpi_func 386
#define K_vpi_func_r 387
#define K_disable 388
#define K_fork 389
#define K_ivl_version 390
#define K_ivl_delay_selection 391
#define K_vpi_module 392
#define K_vpi_time_precision 393
#define K_file_names 394
#define K_file_line 395
#define K_PORT_INPUT 396
#define K_PORT_OUTPUT 397
#define K_PORT_INOUT 398
#define K_PORT_MIXED 399
#define K_PORT_NODIR 400
#define T_INSTR 401
#define T_LABEL 402
#define T_NUMBER 403
#define T_STRING 404
#define T_SYMBOL 405
#define T_VECTOR 406

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

      char*text;
      char **table;
      uint64_t numb;
      bool flag;

      comp_operands_t opa;

      struct symb_s  symb;
      struct symbv_s symbv;

      struct numbv_s numbv;

      struct enum_name_s enum_name;
      std::list<struct enum_name_s>*enum_namev;

      struct symb_s vect;

      struct argv_s argv;
      vpiHandle vpi;

      vvp_delay_t*cdelay;

      int      vpi_enum;

#line 385 "parse.hh"

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


extern YYSTYPE yylval;

int yyparse (void);

#endif /* !YY_YY_PARSE_HH_INCLUDED  */
