/* 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_YL_LLGRAMMAR_H_INCLUDED
# define YY_YL_LLGRAMMAR_H_INCLUDED
/* Debug traces.  */
#ifndef YLDEBUG
# if defined YYDEBUG
#if YYDEBUG
#   define YLDEBUG 1
#  else
#   define YLDEBUG 0
#  endif
# else /* ! defined YYDEBUG */
#  define YLDEBUG 0
# endif /* ! defined YYDEBUG */
#endif  /* ! defined YLDEBUG */
#if YLDEBUG
extern int yldebug;
#endif

/* Token kinds.  */
#ifndef YLTOKENTYPE
# define YLTOKENTYPE
  enum yltokentype
  {
    YLEMPTY = -2,
    YLEOF = 0,                     /* "end of file"  */
    YLerror = 256,                 /* error  */
    YLUNDEF = 257,                 /* "invalid token"  */
    PREFIX_OP = 258,               /* PREFIX_OP  */
    POSTFIX_OP = 259,              /* POSTFIX_OP  */
    ITERATION_OP = 260,            /* ITERATION_OP  */
    LLT_IF_THEN_ELSE = 261,        /* LLT_IF_THEN_ELSE  */
    eqSepSym = 262,                /* eqSepSym  */
    equationSym = 263,             /* equationSym  */
    commentSym = 264,              /* commentSym  */
    LLT_WHITESPACE = 265,          /* LLT_WHITESPACE  */
    LLT_EOL = 266,                 /* LLT_EOL  */
    LLT_TYPEDEF_NAME = 267,        /* LLT_TYPEDEF_NAME  */
    quantifierSym = 268,           /* quantifierSym  */
    logicalOp = 269,               /* logicalOp  */
    selectSym = 270,               /* selectSym  */
    openSym = 271,                 /* openSym  */
    closeSym = 272,                /* closeSym  */
    sepSym = 273,                  /* sepSym  */
    simpleId = 274,                /* simpleId  */
    mapSym = 275,                  /* mapSym  */
    markerSym = 276,               /* markerSym  */
    preSym = 277,                  /* preSym  */
    postSym = 278,                 /* postSym  */
    anySym = 279,                  /* anySym  */
    simpleOp = 280,                /* simpleOp  */
    LLT_COLON = 281,               /* LLT_COLON  */
    LLT_COMMA = 282,               /* LLT_COMMA  */
    LLT_EQUALS = 283,              /* LLT_EQUALS  */
    LLT_LBRACE = 284,              /* LLT_LBRACE  */
    LLT_RBRACE = 285,              /* LLT_RBRACE  */
    LLT_LBRACKET = 286,            /* LLT_LBRACKET  */
    LLT_RBRACKET = 287,            /* LLT_RBRACKET  */
    LLT_LPAR = 288,                /* LLT_LPAR  */
    LLT_RPAR = 289,                /* LLT_RPAR  */
    LLT_QUOTE = 290,               /* LLT_QUOTE  */
    LLT_SEMI = 291,                /* LLT_SEMI  */
    LLT_VERTICALBAR = 292,         /* LLT_VERTICALBAR  */
    eqOp = 293,                    /* eqOp  */
    LLT_MULOP = 294,               /* LLT_MULOP  */
    LLT_CCHAR = 295,               /* LLT_CCHAR  */
    LLT_CFLOAT = 296,              /* LLT_CFLOAT  */
    LLT_CINTEGER = 297,            /* LLT_CINTEGER  */
    LLT_LCSTRING = 298,            /* LLT_LCSTRING  */
    LLT_ALL = 299,                 /* LLT_ALL  */
    LLT_ANYTHING = 300,            /* LLT_ANYTHING  */
    LLT_BE = 301,                  /* LLT_BE  */
    LLT_BODY = 302,                /* LLT_BODY  */
    LLT_CLAIMS = 303,              /* LLT_CLAIMS  */
    LLT_CHECKS = 304,              /* LLT_CHECKS  */
    LLT_CONSTANT = 305,            /* LLT_CONSTANT  */
    LLT_ELSE = 306,                /* LLT_ELSE  */
    LLT_ENSURES = 307,             /* LLT_ENSURES  */
    LLT_FOR = 308,                 /* LLT_FOR  */
    LLT_FRESH = 309,               /* LLT_FRESH  */
    LLT_IF = 310,                  /* LLT_IF  */
    LLT_IMMUTABLE = 311,           /* LLT_IMMUTABLE  */
    LLT_IMPORTS = 312,             /* LLT_IMPORTS  */
    LLT_CONSTRAINT = 313,          /* LLT_CONSTRAINT  */
    LLT_ISSUB = 314,               /* LLT_ISSUB  */
    LLT_LET = 315,                 /* LLT_LET  */
    LLT_MODIFIES = 316,            /* LLT_MODIFIES  */
    LLT_MUTABLE = 317,             /* LLT_MUTABLE  */
    LLT_NOTHING = 318,             /* LLT_NOTHING  */
    LLT_INTERNAL = 319,            /* LLT_INTERNAL  */
    LLT_FILESYS = 320,             /* LLT_FILESYS  */
    LLT_OBJ = 321,                 /* LLT_OBJ  */
    LLT_OUT = 322,                 /* LLT_OUT  */
    LLT_SEF = 323,                 /* LLT_SEF  */
    LLT_ONLY = 324,                /* LLT_ONLY  */
    LLT_PARTIAL = 325,             /* LLT_PARTIAL  */
    LLT_OWNED = 326,               /* LLT_OWNED  */
    LLT_DEPENDENT = 327,           /* LLT_DEPENDENT  */
    LLT_KEEP = 328,                /* LLT_KEEP  */
    LLT_KEPT = 329,                /* LLT_KEPT  */
    LLT_TEMP = 330,                /* LLT_TEMP  */
    LLT_SHARED = 331,              /* LLT_SHARED  */
    LLT_UNIQUE = 332,              /* LLT_UNIQUE  */
    LLT_UNUSED = 333,              /* LLT_UNUSED  */
    LLT_EXITS = 334,               /* LLT_EXITS  */
    LLT_MAYEXIT = 335,             /* LLT_MAYEXIT  */
    LLT_NEVEREXIT = 336,           /* LLT_NEVEREXIT  */
    LLT_TRUEEXIT = 337,            /* LLT_TRUEEXIT  */
    LLT_FALSEEXIT = 338,           /* LLT_FALSEEXIT  */
    LLT_UNDEF = 339,               /* LLT_UNDEF  */
    LLT_KILLED = 340,              /* LLT_KILLED  */
    LLT_CHECKMOD = 341,            /* LLT_CHECKMOD  */
    LLT_CHECKED = 342,             /* LLT_CHECKED  */
    LLT_UNCHECKED = 343,           /* LLT_UNCHECKED  */
    LLT_CHECKEDSTRICT = 344,       /* LLT_CHECKEDSTRICT  */
    LLT_TRUENULL = 345,            /* LLT_TRUENULL  */
    LLT_FALSENULL = 346,           /* LLT_FALSENULL  */
    LLT_LNULL = 347,               /* LLT_LNULL  */
    LLT_LNOTNULL = 348,            /* LLT_LNOTNULL  */
    LLT_RETURNED = 349,            /* LLT_RETURNED  */
    LLT_OBSERVER = 350,            /* LLT_OBSERVER  */
    LLT_EXPOSED = 351,             /* LLT_EXPOSED  */
    LLT_REFCOUNTED = 352,          /* LLT_REFCOUNTED  */
    LLT_REFS = 353,                /* LLT_REFS  */
    LLT_RELNULL = 354,             /* LLT_RELNULL  */
    LLT_RELDEF = 355,              /* LLT_RELDEF  */
    LLT_KILLREF = 356,             /* LLT_KILLREF  */
    LLT_NULLTERMINATED = 357,      /* LLT_NULLTERMINATED  */
    LLT_TEMPREF = 358,             /* LLT_TEMPREF  */
    LLT_NEWREF = 359,              /* LLT_NEWREF  */
    LLT_PRIVATE = 360,             /* LLT_PRIVATE  */
    LLT_REQUIRES = 361,            /* LLT_REQUIRES  */
    LLT_RESULT = 362,              /* LLT_RESULT  */
    LLT_SIZEOF = 363,              /* LLT_SIZEOF  */
    LLT_SPEC = 364,                /* LLT_SPEC  */
    LLT_TAGGEDUNION = 365,         /* LLT_TAGGEDUNION  */
    LLT_THEN = 366,                /* LLT_THEN  */
    LLT_TYPE = 367,                /* LLT_TYPE  */
    LLT_TYPEDEF = 368,             /* LLT_TYPEDEF  */
    LLT_UNCHANGED = 369,           /* LLT_UNCHANGED  */
    LLT_USES = 370,                /* LLT_USES  */
    LLT_CHAR = 371,                /* LLT_CHAR  */
    LLT_CONST = 372,               /* LLT_CONST  */
    LLT_DOUBLE = 373,              /* LLT_DOUBLE  */
    LLT_ENUM = 374,                /* LLT_ENUM  */
    LLT_FLOAT = 375,               /* LLT_FLOAT  */
    LLT_INT = 376,                 /* LLT_INT  */
    LLT_ITER = 377,                /* LLT_ITER  */
    LLT_YIELD = 378,               /* LLT_YIELD  */
    LLT_LONG = 379,                /* LLT_LONG  */
    LLT_SHORT = 380,               /* LLT_SHORT  */
    LLT_SIGNED = 381,              /* LLT_SIGNED  */
    LLT_UNKNOWN = 382,             /* LLT_UNKNOWN  */
    LLT_STRUCT = 383,              /* LLT_STRUCT  */
    LLT_TELIPSIS = 384,            /* LLT_TELIPSIS  */
    LLT_UNION = 385,               /* LLT_UNION  */
    LLT_UNSIGNED = 386,            /* LLT_UNSIGNED  */
    LLT_VOID = 387,                /* LLT_VOID  */
    LLT_VOLATILE = 388,            /* LLT_VOLATILE  */
    LLT_PRINTFLIKE = 389,          /* LLT_PRINTFLIKE  */
    LLT_SCANFLIKE = 390,           /* LLT_SCANFLIKE  */
    LLT_MESSAGELIKE = 391          /* LLT_MESSAGELIKE  */
  };
  typedef enum yltokentype yltoken_kind_t;
#endif
/* Token kinds.  */
#define YLEMPTY -2
#define YLEOF 0
#define YLerror 256
#define YLUNDEF 257
#define PREFIX_OP 258
#define POSTFIX_OP 259
#define ITERATION_OP 260
#define LLT_IF_THEN_ELSE 261
#define eqSepSym 262
#define equationSym 263
#define commentSym 264
#define LLT_WHITESPACE 265
#define LLT_EOL 266
#define LLT_TYPEDEF_NAME 267
#define quantifierSym 268
#define logicalOp 269
#define selectSym 270
#define openSym 271
#define closeSym 272
#define sepSym 273
#define simpleId 274
#define mapSym 275
#define markerSym 276
#define preSym 277
#define postSym 278
#define anySym 279
#define simpleOp 280
#define LLT_COLON 281
#define LLT_COMMA 282
#define LLT_EQUALS 283
#define LLT_LBRACE 284
#define LLT_RBRACE 285
#define LLT_LBRACKET 286
#define LLT_RBRACKET 287
#define LLT_LPAR 288
#define LLT_RPAR 289
#define LLT_QUOTE 290
#define LLT_SEMI 291
#define LLT_VERTICALBAR 292
#define eqOp 293
#define LLT_MULOP 294
#define LLT_CCHAR 295
#define LLT_CFLOAT 296
#define LLT_CINTEGER 297
#define LLT_LCSTRING 298
#define LLT_ALL 299
#define LLT_ANYTHING 300
#define LLT_BE 301
#define LLT_BODY 302
#define LLT_CLAIMS 303
#define LLT_CHECKS 304
#define LLT_CONSTANT 305
#define LLT_ELSE 306
#define LLT_ENSURES 307
#define LLT_FOR 308
#define LLT_FRESH 309
#define LLT_IF 310
#define LLT_IMMUTABLE 311
#define LLT_IMPORTS 312
#define LLT_CONSTRAINT 313
#define LLT_ISSUB 314
#define LLT_LET 315
#define LLT_MODIFIES 316
#define LLT_MUTABLE 317
#define LLT_NOTHING 318
#define LLT_INTERNAL 319
#define LLT_FILESYS 320
#define LLT_OBJ 321
#define LLT_OUT 322
#define LLT_SEF 323
#define LLT_ONLY 324
#define LLT_PARTIAL 325
#define LLT_OWNED 326
#define LLT_DEPENDENT 327
#define LLT_KEEP 328
#define LLT_KEPT 329
#define LLT_TEMP 330
#define LLT_SHARED 331
#define LLT_UNIQUE 332
#define LLT_UNUSED 333
#define LLT_EXITS 334
#define LLT_MAYEXIT 335
#define LLT_NEVEREXIT 336
#define LLT_TRUEEXIT 337
#define LLT_FALSEEXIT 338
#define LLT_UNDEF 339
#define LLT_KILLED 340
#define LLT_CHECKMOD 341
#define LLT_CHECKED 342
#define LLT_UNCHECKED 343
#define LLT_CHECKEDSTRICT 344
#define LLT_TRUENULL 345
#define LLT_FALSENULL 346
#define LLT_LNULL 347
#define LLT_LNOTNULL 348
#define LLT_RETURNED 349
#define LLT_OBSERVER 350
#define LLT_EXPOSED 351
#define LLT_REFCOUNTED 352
#define LLT_REFS 353
#define LLT_RELNULL 354
#define LLT_RELDEF 355
#define LLT_KILLREF 356
#define LLT_NULLTERMINATED 357
#define LLT_TEMPREF 358
#define LLT_NEWREF 359
#define LLT_PRIVATE 360
#define LLT_REQUIRES 361
#define LLT_RESULT 362
#define LLT_SIZEOF 363
#define LLT_SPEC 364
#define LLT_TAGGEDUNION 365
#define LLT_THEN 366
#define LLT_TYPE 367
#define LLT_TYPEDEF 368
#define LLT_UNCHANGED 369
#define LLT_USES 370
#define LLT_CHAR 371
#define LLT_CONST 372
#define LLT_DOUBLE 373
#define LLT_ENUM 374
#define LLT_FLOAT 375
#define LLT_INT 376
#define LLT_ITER 377
#define LLT_YIELD 378
#define LLT_LONG 379
#define LLT_SHORT 380
#define LLT_SIGNED 381
#define LLT_UNKNOWN 382
#define LLT_STRUCT 383
#define LLT_TELIPSIS 384
#define LLT_UNION 385
#define LLT_UNSIGNED 386
#define LLT_VOID 387
#define LLT_VOLATILE 388
#define LLT_PRINTFLIKE 389
#define LLT_SCANFLIKE 390
#define LLT_MESSAGELIKE 391

/* Value type.  */
#if ! defined YLSTYPE && ! defined YLSTYPE_IS_DECLARED
union YLSTYPE
{
#line 61 "llgrammar.y"

  ltoken ltok;  /* a leaf is also an ltoken */
  qual typequal;
  unsigned int count;
  /*@only@*/ ltokenList ltokenList;
  /*@only@*/ abstDeclaratorNode abstDecl; 
  /*@only@*/ declaratorNode declare;
  /*@only@*/ declaratorNodeList declarelist;
  /*@only@*/ typeExpr typeexpr;
  /*@only@*/ arrayQualNode array;
  /*@only@*/ quantifierNode quantifier;
  /*@only@*/ quantifierNodeList quantifiers;
  /*@only@*/ varNode var;
  /*@only@*/ varNodeList vars;
  /*@only@*/ storeRefNode storeref;
  /*@only@*/ storeRefNodeList storereflist;
  /*@only@*/ termNode term;
  /*@only@*/ termNodeList termlist;
  /*@only@*/ programNode program; 
  /*@only@*/ stmtNode stmt;
  /*@only@*/ claimNode claim;
  /*@only@*/ typeNode type;
  /*@only@*/ iterNode iter;
  /*@only@*/ fcnNode fcn;
  /*@only@*/ fcnNodeList fcns;
  /*@only@*/ letDeclNode letdecl;
  /*@only@*/ letDeclNodeList letdecls;
  /*@only@*/ lclPredicateNode lclpredicate;
  /*@only@*/ modifyNode modify;
  /*@only@*/ paramNode param;
  /*@only@*/ paramNodeList paramlist;
  /*@only@*/ declaratorInvNodeList declaratorinvs;	
  /*@only@*/ declaratorInvNode declaratorinv;	
  /*@only@*/ abstBodyNode abstbody;
  /*@only@*/ abstractNode abstract;
  /*@only@*/ exposedNode exposed;
  /*@only@*/ pointers pointers;
  /*    taggedUnionNode taggedunion; */
  /*@only@*/ globalList globals;
  /*@only@*/ constDeclarationNode constdeclaration;
  /*@only@*/ varDeclarationNode vardeclaration;
  /*@only@*/ varDeclarationNodeList vardeclarationlist;
  /*@only@*/ initDeclNodeList initdecls;
  /*@only@*/ initDeclNode initdecl;
  /*@only@*/ stDeclNodeList structdecls;
  /*@only@*/ stDeclNode structdecl;
  /*@only@*/ strOrUnionNode structorunion;
  /*@only@*/ enumSpecNode enumspec; 
  /*@only@*/ lclTypeSpecNode lcltypespec;
  /*@only@*/ typeNameNode typname;
  /*@only@*/ opFormNode opform;
  /*@only@*/ sigNode signature;
  /*@only@*/ nameNode name;
  /*@only@*/ typeNameNodeList namelist;
  /*@only@*/ replaceNode replace;	
  /*@only@*/ replaceNodeList replacelist;
  /*@only@*/ renamingNode renaming;
  /*@only@*/ traitRefNode traitref;
  /*@only@*/ traitRefNodeList traitreflist;
  /*@only@*/ importNode import;
  /*@only@*/ importNodeList importlist;
  /*@only@*/ interfaceNode iface;
  /*@only@*/ interfaceNodeList interfacelist; 
  /*@only@*/ CTypesNode ctypes;
  /*@-redef@*/

#line 414 "llgrammar.h"

};
typedef union YLSTYPE YLSTYPE;
# define YLSTYPE_IS_TRIVIAL 1
# define YLSTYPE_IS_DECLARED 1
#endif


extern YLSTYPE yllval;


int ylparse (void);


#endif /* !YY_YL_LLGRAMMAR_H_INCLUDED  */
