/* 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_C_CGRAMMAR_H_INCLUDED
# define YY_C_CGRAMMAR_H_INCLUDED
/* Debug traces.  */
#ifndef C_DEBUG
# if defined YYDEBUG
#if YYDEBUG
#   define C_DEBUG 1
#  else
#   define C_DEBUG 0
#  endif
# else /* ! defined YYDEBUG */
#  define C_DEBUG 0
# endif /* ! defined YYDEBUG */
#endif  /* ! defined C_DEBUG */
#if C_DEBUG
extern int c_debug;
#endif

/* Token kinds.  */
#ifndef C_TOKENTYPE
# define C_TOKENTYPE
  enum c_tokentype
  {
    C_EMPTY = -2,
    C_EOF = 0,                     /* "end of file"  */
    C_error = 256,                 /* error  */
    C_UNDEF = 257,                 /* "invalid token"  */
    BADTOK = 258,                  /* BADTOK  */
    SKIPTOK = 259,                 /* SKIPTOK  */
    CTOK_ELIPSIS = 260,            /* CTOK_ELIPSIS  */
    CASE = 261,                    /* CASE  */
    DEFAULT = 262,                 /* DEFAULT  */
    CIF = 263,                     /* CIF  */
    CELSE = 264,                   /* CELSE  */
    SWITCH = 265,                  /* SWITCH  */
    WHILE = 266,                   /* WHILE  */
    DO = 267,                      /* DO  */
    CFOR = 268,                    /* CFOR  */
    GOTO = 269,                    /* GOTO  */
    CONTINUE = 270,                /* CONTINUE  */
    BREAK = 271,                   /* BREAK  */
    RETURN = 272,                  /* RETURN  */
    TSEMI = 273,                   /* TSEMI  */
    TLBRACE = 274,                 /* TLBRACE  */
    TRBRACE = 275,                 /* TRBRACE  */
    TCOMMA = 276,                  /* TCOMMA  */
    TCOLON = 277,                  /* TCOLON  */
    TASSIGN = 278,                 /* TASSIGN  */
    TLPAREN = 279,                 /* TLPAREN  */
    TRPAREN = 280,                 /* TRPAREN  */
    TLSQBR = 281,                  /* TLSQBR  */
    TRSQBR = 282,                  /* TRSQBR  */
    TDOT = 283,                    /* TDOT  */
    TAMPERSAND = 284,              /* TAMPERSAND  */
    TEXCL = 285,                   /* TEXCL  */
    TTILDE = 286,                  /* TTILDE  */
    TMINUS = 287,                  /* TMINUS  */
    TPLUS = 288,                   /* TPLUS  */
    TMULT = 289,                   /* TMULT  */
    TDIV = 290,                    /* TDIV  */
    TPERCENT = 291,                /* TPERCENT  */
    TLT = 292,                     /* TLT  */
    TGT = 293,                     /* TGT  */
    TCIRC = 294,                   /* TCIRC  */
    TBAR = 295,                    /* TBAR  */
    TQUEST = 296,                  /* TQUEST  */
    CSIZEOF = 297,                 /* CSIZEOF  */
    CALIGNOF = 298,                /* CALIGNOF  */
    CTYPEOF = 299,                 /* CTYPEOF  */
    ARROW_OP = 300,                /* ARROW_OP  */
    CTYPEDEF = 301,                /* CTYPEDEF  */
    COFFSETOF = 302,               /* COFFSETOF  */
    INC_OP = 303,                  /* INC_OP  */
    DEC_OP = 304,                  /* DEC_OP  */
    LEFT_OP = 305,                 /* LEFT_OP  */
    RIGHT_OP = 306,                /* RIGHT_OP  */
    LE_OP = 307,                   /* LE_OP  */
    GE_OP = 308,                   /* GE_OP  */
    EQ_OP = 309,                   /* EQ_OP  */
    NE_OP = 310,                   /* NE_OP  */
    AND_OP = 311,                  /* AND_OP  */
    OR_OP = 312,                   /* OR_OP  */
    MUL_ASSIGN = 313,              /* MUL_ASSIGN  */
    DIV_ASSIGN = 314,              /* DIV_ASSIGN  */
    MOD_ASSIGN = 315,              /* MOD_ASSIGN  */
    ADD_ASSIGN = 316,              /* ADD_ASSIGN  */
    SUB_ASSIGN = 317,              /* SUB_ASSIGN  */
    LEFT_ASSIGN = 318,             /* LEFT_ASSIGN  */
    RIGHT_ASSIGN = 319,            /* RIGHT_ASSIGN  */
    AND_ASSIGN = 320,              /* AND_ASSIGN  */
    XOR_ASSIGN = 321,              /* XOR_ASSIGN  */
    OR_ASSIGN = 322,               /* OR_ASSIGN  */
    CSTRUCT = 323,                 /* CSTRUCT  */
    CUNION = 324,                  /* CUNION  */
    CENUM = 325,                   /* CENUM  */
    VA_ARG = 326,                  /* VA_ARG  */
    VA_DCL = 327,                  /* VA_DCL  */
    QWARN = 328,                   /* QWARN  */
    QGLOBALS = 329,                /* QGLOBALS  */
    QMODIFIES = 330,               /* QMODIFIES  */
    QNOMODS = 331,                 /* QNOMODS  */
    QCONSTANT = 332,               /* QCONSTANT  */
    QFUNCTION = 333,               /* QFUNCTION  */
    QITER = 334,                   /* QITER  */
    QDEFINES = 335,                /* QDEFINES  */
    QUSES = 336,                   /* QUSES  */
    QALLOCATES = 337,              /* QALLOCATES  */
    QSETS = 338,                   /* QSETS  */
    QRELEASES = 339,               /* QRELEASES  */
    QPRECLAUSE = 340,              /* QPRECLAUSE  */
    QPOSTCLAUSE = 341,             /* QPOSTCLAUSE  */
    QALT = 342,                    /* QALT  */
    QUNDEF = 343,                  /* QUNDEF  */
    QKILLED = 344,                 /* QKILLED  */
    QENDMACRO = 345,               /* QENDMACRO  */
    LLMACRO = 346,                 /* LLMACRO  */
    LLMACROITER = 347,             /* LLMACROITER  */
    LLMACROEND = 348,              /* LLMACROEND  */
    TENDMACRO = 349,               /* TENDMACRO  */
    QDREVEALSTATE = 350,           /* QDREVEALSTATE  */
    QSWITCHBREAK = 351,            /* QSWITCHBREAK  */
    QLOOPBREAK = 352,              /* QLOOPBREAK  */
    QINNERBREAK = 353,             /* QINNERBREAK  */
    QSAFEBREAK = 354,              /* QSAFEBREAK  */
    QINNERCONTINUE = 355,          /* QINNERCONTINUE  */
    QFALLTHROUGH = 356,            /* QFALLTHROUGH  */
    QLINTNOTREACHED = 357,         /* QLINTNOTREACHED  */
    QLINTFALLTHROUGH = 358,        /* QLINTFALLTHROUGH  */
    QLINTFALLTHRU = 359,           /* QLINTFALLTHRU  */
    QARGSUSED = 360,               /* QARGSUSED  */
    QPRINTFLIKE = 361,             /* QPRINTFLIKE  */
    QLINTPRINTFLIKE = 362,         /* QLINTPRINTFLIKE  */
    QSCANFLIKE = 363,              /* QSCANFLIKE  */
    QMESSAGELIKE = 364,            /* QMESSAGELIKE  */
    QNOTREACHED = 365,             /* QNOTREACHED  */
    QCONST = 366,                  /* QCONST  */
    QRESTRICT = 367,               /* QRESTRICT  */
    QVOLATILE = 368,               /* QVOLATILE  */
    QINLINE = 369,                 /* QINLINE  */
    QEXTENSION = 370,              /* QEXTENSION  */
    QEXTERN = 371,                 /* QEXTERN  */
    QSTATIC = 372,                 /* QSTATIC  */
    QAUTO = 373,                   /* QAUTO  */
    QREGISTER = 374,               /* QREGISTER  */
    QOUT = 375,                    /* QOUT  */
    QIN = 376,                     /* QIN  */
    QYIELD = 377,                  /* QYIELD  */
    QONLY = 378,                   /* QONLY  */
    QTEMP = 379,                   /* QTEMP  */
    QSHARED = 380,                 /* QSHARED  */
    QREF = 381,                    /* QREF  */
    QUNIQUE = 382,                 /* QUNIQUE  */
    QCHECKED = 383,                /* QCHECKED  */
    QUNCHECKED = 384,              /* QUNCHECKED  */
    QCHECKEDSTRICT = 385,          /* QCHECKEDSTRICT  */
    QCHECKMOD = 386,               /* QCHECKMOD  */
    QKEEP = 387,                   /* QKEEP  */
    QKEPT = 388,                   /* QKEPT  */
    QPARTIAL = 389,                /* QPARTIAL  */
    QSPECIAL = 390,                /* QSPECIAL  */
    QOWNED = 391,                  /* QOWNED  */
    QDEPENDENT = 392,              /* QDEPENDENT  */
    QRETURNED = 393,               /* QRETURNED  */
    QEXPOSED = 394,                /* QEXPOSED  */
    QNULL = 395,                   /* QNULL  */
    QOBSERVER = 396,               /* QOBSERVER  */
    QISNULL = 397,                 /* QISNULL  */
    QEXITS = 398,                  /* QEXITS  */
    QMAYEXIT = 399,                /* QMAYEXIT  */
    QNEVEREXIT = 400,              /* QNEVEREXIT  */
    QTRUEEXIT = 401,               /* QTRUEEXIT  */
    QFALSEEXIT = 402,              /* QFALSEEXIT  */
    QLONG = 403,                   /* QLONG  */
    QSIGNED = 404,                 /* QSIGNED  */
    QUNSIGNED = 405,               /* QUNSIGNED  */
    QSHORT = 406,                  /* QSHORT  */
    QUNUSED = 407,                 /* QUNUSED  */
    QSEF = 408,                    /* QSEF  */
    QNOTNULL = 409,                /* QNOTNULL  */
    QRELNULL = 410,                /* QRELNULL  */
    QABSTRACT = 411,               /* QABSTRACT  */
    QNUMABSTRACT = 412,            /* QNUMABSTRACT  */
    QCONCRETE = 413,               /* QCONCRETE  */
    QMUTABLE = 414,                /* QMUTABLE  */
    QIMMUTABLE = 415,              /* QIMMUTABLE  */
    QTRUENULL = 416,               /* QTRUENULL  */
    QFALSENULL = 417,              /* QFALSENULL  */
    QEXTERNAL = 418,               /* QEXTERNAL  */
    QREFCOUNTED = 419,             /* QREFCOUNTED  */
    QREFS = 420,                   /* QREFS  */
    QNEWREF = 421,                 /* QNEWREF  */
    QTEMPREF = 422,                /* QTEMPREF  */
    QKILLREF = 423,                /* QKILLREF  */
    QRELDEF = 424,                 /* QRELDEF  */
    CGCHAR = 425,                  /* CGCHAR  */
    CBOOL = 426,                   /* CBOOL  */
    CINT = 427,                    /* CINT  */
    CGFLOAT = 428,                 /* CGFLOAT  */
    CDOUBLE = 429,                 /* CDOUBLE  */
    CVOID = 430,                   /* CVOID  */
    QANYTYPE = 431,                /* QANYTYPE  */
    QINTEGRALTYPE = 432,           /* QINTEGRALTYPE  */
    QUNSIGNEDINTEGRALTYPE = 433,   /* QUNSIGNEDINTEGRALTYPE  */
    QSIGNEDINTEGRALTYPE = 434,     /* QSIGNEDINTEGRALTYPE  */
    QNULLTERMINATED = 435,         /* QNULLTERMINATED  */
    QMAXSET = 436,                 /* QMAXSET  */
    QMAXREAD = 437,                /* QMAXREAD  */
    TCAND = 438,                   /* TCAND  */
    IDENTIFIER = 439,              /* IDENTIFIER  */
    NEW_IDENTIFIER = 440,          /* NEW_IDENTIFIER  */
    CANNOTATION = 441,             /* CANNOTATION  */
    CCONSTANT = 442,               /* CCONSTANT  */
    ITER_NAME = 443,               /* ITER_NAME  */
    ITER_ENDNAME = 444,            /* ITER_ENDNAME  */
    TYPE_NAME = 445,               /* TYPE_NAME  */
    METASTATE_NAME = 446           /* METASTATE_NAME  */
  };
  typedef enum c_tokentype c_token_kind_t;
#endif
/* Token kinds.  */
#define C_EMPTY -2
#define C_EOF 0
#define C_error 256
#define C_UNDEF 257
#define BADTOK 258
#define SKIPTOK 259
#define CTOK_ELIPSIS 260
#define CASE 261
#define DEFAULT 262
#define CIF 263
#define CELSE 264
#define SWITCH 265
#define WHILE 266
#define DO 267
#define CFOR 268
#define GOTO 269
#define CONTINUE 270
#define BREAK 271
#define RETURN 272
#define TSEMI 273
#define TLBRACE 274
#define TRBRACE 275
#define TCOMMA 276
#define TCOLON 277
#define TASSIGN 278
#define TLPAREN 279
#define TRPAREN 280
#define TLSQBR 281
#define TRSQBR 282
#define TDOT 283
#define TAMPERSAND 284
#define TEXCL 285
#define TTILDE 286
#define TMINUS 287
#define TPLUS 288
#define TMULT 289
#define TDIV 290
#define TPERCENT 291
#define TLT 292
#define TGT 293
#define TCIRC 294
#define TBAR 295
#define TQUEST 296
#define CSIZEOF 297
#define CALIGNOF 298
#define CTYPEOF 299
#define ARROW_OP 300
#define CTYPEDEF 301
#define COFFSETOF 302
#define INC_OP 303
#define DEC_OP 304
#define LEFT_OP 305
#define RIGHT_OP 306
#define LE_OP 307
#define GE_OP 308
#define EQ_OP 309
#define NE_OP 310
#define AND_OP 311
#define OR_OP 312
#define MUL_ASSIGN 313
#define DIV_ASSIGN 314
#define MOD_ASSIGN 315
#define ADD_ASSIGN 316
#define SUB_ASSIGN 317
#define LEFT_ASSIGN 318
#define RIGHT_ASSIGN 319
#define AND_ASSIGN 320
#define XOR_ASSIGN 321
#define OR_ASSIGN 322
#define CSTRUCT 323
#define CUNION 324
#define CENUM 325
#define VA_ARG 326
#define VA_DCL 327
#define QWARN 328
#define QGLOBALS 329
#define QMODIFIES 330
#define QNOMODS 331
#define QCONSTANT 332
#define QFUNCTION 333
#define QITER 334
#define QDEFINES 335
#define QUSES 336
#define QALLOCATES 337
#define QSETS 338
#define QRELEASES 339
#define QPRECLAUSE 340
#define QPOSTCLAUSE 341
#define QALT 342
#define QUNDEF 343
#define QKILLED 344
#define QENDMACRO 345
#define LLMACRO 346
#define LLMACROITER 347
#define LLMACROEND 348
#define TENDMACRO 349
#define QDREVEALSTATE 350
#define QSWITCHBREAK 351
#define QLOOPBREAK 352
#define QINNERBREAK 353
#define QSAFEBREAK 354
#define QINNERCONTINUE 355
#define QFALLTHROUGH 356
#define QLINTNOTREACHED 357
#define QLINTFALLTHROUGH 358
#define QLINTFALLTHRU 359
#define QARGSUSED 360
#define QPRINTFLIKE 361
#define QLINTPRINTFLIKE 362
#define QSCANFLIKE 363
#define QMESSAGELIKE 364
#define QNOTREACHED 365
#define QCONST 366
#define QRESTRICT 367
#define QVOLATILE 368
#define QINLINE 369
#define QEXTENSION 370
#define QEXTERN 371
#define QSTATIC 372
#define QAUTO 373
#define QREGISTER 374
#define QOUT 375
#define QIN 376
#define QYIELD 377
#define QONLY 378
#define QTEMP 379
#define QSHARED 380
#define QREF 381
#define QUNIQUE 382
#define QCHECKED 383
#define QUNCHECKED 384
#define QCHECKEDSTRICT 385
#define QCHECKMOD 386
#define QKEEP 387
#define QKEPT 388
#define QPARTIAL 389
#define QSPECIAL 390
#define QOWNED 391
#define QDEPENDENT 392
#define QRETURNED 393
#define QEXPOSED 394
#define QNULL 395
#define QOBSERVER 396
#define QISNULL 397
#define QEXITS 398
#define QMAYEXIT 399
#define QNEVEREXIT 400
#define QTRUEEXIT 401
#define QFALSEEXIT 402
#define QLONG 403
#define QSIGNED 404
#define QUNSIGNED 405
#define QSHORT 406
#define QUNUSED 407
#define QSEF 408
#define QNOTNULL 409
#define QRELNULL 410
#define QABSTRACT 411
#define QNUMABSTRACT 412
#define QCONCRETE 413
#define QMUTABLE 414
#define QIMMUTABLE 415
#define QTRUENULL 416
#define QFALSENULL 417
#define QEXTERNAL 418
#define QREFCOUNTED 419
#define QREFS 420
#define QNEWREF 421
#define QTEMPREF 422
#define QKILLREF 423
#define QRELDEF 424
#define CGCHAR 425
#define CBOOL 426
#define CINT 427
#define CGFLOAT 428
#define CDOUBLE 429
#define CVOID 430
#define QANYTYPE 431
#define QINTEGRALTYPE 432
#define QUNSIGNEDINTEGRALTYPE 433
#define QSIGNEDINTEGRALTYPE 434
#define QNULLTERMINATED 435
#define QMAXSET 436
#define QMAXREAD 437
#define TCAND 438
#define IDENTIFIER 439
#define NEW_IDENTIFIER 440
#define CANNOTATION 441
#define CCONSTANT 442
#define ITER_NAME 443
#define ITER_ENDNAME 444
#define TYPE_NAME 445
#define METASTATE_NAME 446

/* Value type.  */
#if ! defined C_STYPE && ! defined C_STYPE_IS_DECLARED
union C_STYPE
{
#line 87 "cgrammar.y"

  lltok tok;
  int count;
  qual typequal;
  qualList tquallist;
  ctype ctyp;
  /*@dependent@*/ sRef sr;

  /*@only@*/ functionClauseList funcclauselist;
  /*@only@*/ functionClause funcclause;
  /*@only@*/ flagSpec flagspec;
  /*@only@*/ globalsClause globsclause;
  /*@only@*/ modifiesClause modsclause;
  /*@only@*/ warnClause warnclause;
  /*@only@*/ stateClause stateclause;
  /*@only@*/ pointers pointers;
  /*@only@*/ functionConstraint fcnconstraint;

  /*@only@*/ metaStateConstraint msconstraint;
  /*@only@*/ metaStateSpecifier msspec;
  /*@only@*/ metaStateExpression msexpr;
  /*@observer@*/ metaStateInfo msinfo;

  /*@only@*/ globSet globset;
  /*@only@*/ qtype qtyp;
  /*@only@*/ cstring cname;
  /*@observer@*/ annotationInfo annotation;
  /*@only@*/ idDecl ntyp;
  /*@only@*/ idDeclList ntyplist;
  /*@only@*/ uentryList flist;
  /*@owned@*/ uentryList entrylist;
  /*@observer@*/ /*@dependent@*/ uentry entry;
  /*@only@*/ uentry oentry;
  /*@only@*/ exprNode expr;
  /*@only@*/ enumNameList enumnamelist;
  /*@only@*/ exprNodeList exprlist;
  /*@only@*/ sRefSet srset;
  /*@only@*/ cstringList cstringlist;

  constraint con;
  constraintList conL;
  constraintExpr conE;

#line 501 "cgrammar.h"

};
typedef union C_STYPE C_STYPE;
# define C_STYPE_IS_TRIVIAL 1
# define C_STYPE_IS_DECLARED 1
#endif


extern C_STYPE c_lval;


int c_parse (void);


#endif /* !YY_C_CGRAMMAR_H_INCLUDED  */
