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

/* Bison interface for Yacc-like parsers in C

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

/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
   especially those whose name start with YY_ or yy_.  They are
   private implementation details that can be changed or removed.  */

#ifndef YY_LSL_LSLGRAMMAR_H_INCLUDED
# define YY_LSL_LSLGRAMMAR_H_INCLUDED
/* Debug traces.  */
#ifndef LSLDEBUG
# if defined YYDEBUG
#if YYDEBUG
#   define LSLDEBUG 1
#  else
#   define LSLDEBUG 0
#  endif
# else /* ! defined YYDEBUG */
#  define LSLDEBUG 0
# endif /* ! defined YYDEBUG */
#endif  /* ! defined LSLDEBUG */
#if LSLDEBUG
extern int lsldebug;
#endif

/* Token kinds.  */
#ifndef LSLTOKENTYPE
# define LSLTOKENTYPE
  enum lsltokentype
  {
    LSLEMPTY = -2,
    LSLEOF = 0,                    /* "end of file"  */
    LSLerror = 256,                /* error  */
    LSLUNDEF = 257,                /* "invalid token"  */
    LST_SIMPLEID = 258,            /* LST_SIMPLEID  */
    LST_LOGICALOP = 259,           /* LST_LOGICALOP  */
    LST_EQOP = 260,                /* LST_EQOP  */
    LST_SIMPLEOP = 261,            /* LST_SIMPLEOP  */
    LST_MAPSYM = 262,              /* LST_MAPSYM  */
    LST_FIELDMAPSYM = 263,         /* LST_FIELDMAPSYM  */
    LST_MARKERSYM = 264,           /* LST_MARKERSYM  */
    LST_ifTOKEN = 265,             /* LST_ifTOKEN  */
    LST_thenTOKEN = 266,           /* LST_thenTOKEN  */
    LST_elseTOKEN = 267,           /* LST_elseTOKEN  */
    LST_LBRACKET = 268,            /* LST_LBRACKET  */
    LST_RBRACKET = 269,            /* LST_RBRACKET  */
    LST_SELECTSYM = 270,           /* LST_SELECTSYM  */
    LST_SEPSYM = 271,              /* LST_SEPSYM  */
    LST_OPENSYM = 272,             /* LST_OPENSYM  */
    LST_CLOSESYM = 273,            /* LST_CLOSESYM  */
    LST_COLON = 274,               /* LST_COLON  */
    LST_COMMA = 275,               /* LST_COMMA  */
    LST_EOL = 276,                 /* LST_EOL  */
    LST_COMMENTSYM = 277,          /* LST_COMMENTSYM  */
    LST_WHITESPACE = 278,          /* LST_WHITESPACE  */
    LST_QUANTIFIERSYM = 279,       /* LST_QUANTIFIERSYM  */
    LST_EQUATIONSYM = 280,         /* LST_EQUATIONSYM  */
    LST_EQSEPSYM = 281,            /* LST_EQSEPSYM  */
    LST_COMPOSESYM = 282,          /* LST_COMPOSESYM  */
    LST_LPAR = 283,                /* LST_LPAR  */
    LST_RPAR = 284,                /* LST_RPAR  */
    LST_assertsTOKEN = 285,        /* LST_assertsTOKEN  */
    LST_assumesTOKEN = 286,        /* LST_assumesTOKEN  */
    LST_byTOKEN = 287,             /* LST_byTOKEN  */
    LST_convertsTOKEN = 288,       /* LST_convertsTOKEN  */
    LST_enumerationTOKEN = 289,    /* LST_enumerationTOKEN  */
    LST_equationsTOKEN = 290,      /* LST_equationsTOKEN  */
    LST_exemptingTOKEN = 291,      /* LST_exemptingTOKEN  */
    LST_forTOKEN = 292,            /* LST_forTOKEN  */
    LST_generatedTOKEN = 293,      /* LST_generatedTOKEN  */
    LST_impliesTOKEN = 294,        /* LST_impliesTOKEN  */
    LST_includesTOKEN = 295,       /* LST_includesTOKEN  */
    LST_introducesTOKEN = 296,     /* LST_introducesTOKEN  */
    LST_ofTOKEN = 297,             /* LST_ofTOKEN  */
    LST_partitionedTOKEN = 298,    /* LST_partitionedTOKEN  */
    LST_traitTOKEN = 299,          /* LST_traitTOKEN  */
    LST_tupleTOKEN = 300,          /* LST_tupleTOKEN  */
    LST_unionTOKEN = 301,          /* LST_unionTOKEN  */
    LST_BADTOKEN = 302             /* LST_BADTOKEN  */
  };
  typedef enum lsltokentype lsltoken_kind_t;
#endif
/* Token kinds.  */
#define LSLEMPTY -2
#define LSLEOF 0
#define LSLerror 256
#define LSLUNDEF 257
#define LST_SIMPLEID 258
#define LST_LOGICALOP 259
#define LST_EQOP 260
#define LST_SIMPLEOP 261
#define LST_MAPSYM 262
#define LST_FIELDMAPSYM 263
#define LST_MARKERSYM 264
#define LST_ifTOKEN 265
#define LST_thenTOKEN 266
#define LST_elseTOKEN 267
#define LST_LBRACKET 268
#define LST_RBRACKET 269
#define LST_SELECTSYM 270
#define LST_SEPSYM 271
#define LST_OPENSYM 272
#define LST_CLOSESYM 273
#define LST_COLON 274
#define LST_COMMA 275
#define LST_EOL 276
#define LST_COMMENTSYM 277
#define LST_WHITESPACE 278
#define LST_QUANTIFIERSYM 279
#define LST_EQUATIONSYM 280
#define LST_EQSEPSYM 281
#define LST_COMPOSESYM 282
#define LST_LPAR 283
#define LST_RPAR 284
#define LST_assertsTOKEN 285
#define LST_assumesTOKEN 286
#define LST_byTOKEN 287
#define LST_convertsTOKEN 288
#define LST_enumerationTOKEN 289
#define LST_equationsTOKEN 290
#define LST_exemptingTOKEN 291
#define LST_forTOKEN 292
#define LST_generatedTOKEN 293
#define LST_impliesTOKEN 294
#define LST_includesTOKEN 295
#define LST_introducesTOKEN 296
#define LST_ofTOKEN 297
#define LST_partitionedTOKEN 298
#define LST_traitTOKEN 299
#define LST_tupleTOKEN 300
#define LST_unionTOKEN 301
#define LST_BADTOKEN 302

/* Value type.  */
#if ! defined LSLSTYPE && ! defined LSLSTYPE_IS_DECLARED
union LSLSTYPE
{
#line 60 "lslgrammar.y"

  ltoken ltok;  /* a leaf is also an ltoken */
  unsigned int count;
  /*@only@*/  ltokenList ltokenList;
  /*@only@*/  opFormNode opform;
  /*@owned@*/ sigNode signature;
  /*@only@*/  nameNode name;
  /*@owned@*/ lslOp operator;
  /*@only@*/  lslOpList operators;
  /*@-redef@*/ /*@-matchfields@*/ 

#line 181 "lslgrammar.h"

};
typedef union LSLSTYPE LSLSTYPE;
# define LSLSTYPE_IS_TRIVIAL 1
# define LSLSTYPE_IS_DECLARED 1
#endif




int lslparse (void);


#endif /* !YY_LSL_LSLGRAMMAR_H_INCLUDED  */
