/* 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_MT_MTGRAMMAR_H_INCLUDED
# define YY_MT_MTGRAMMAR_H_INCLUDED
/* Debug traces.  */
#ifndef MTDEBUG
# if defined YYDEBUG
#if YYDEBUG
#   define MTDEBUG 1
#  else
#   define MTDEBUG 0
#  endif
# else /* ! defined YYDEBUG */
#  define MTDEBUG 0
# endif /* ! defined YYDEBUG */
#endif  /* ! defined MTDEBUG */
#if MTDEBUG
extern int mtdebug;
#endif

/* Token kinds.  */
#ifndef MTTOKENTYPE
# define MTTOKENTYPE
  enum mttokentype
  {
    MTEMPTY = -2,
    MTEOF = 0,                     /* "end of file"  */
    MTerror = 256,                 /* error  */
    MTUNDEF = 257,                 /* "invalid token"  */
    MT_BADTOK = 258,               /* MT_BADTOK  */
    MT_END = 259,                  /* MT_END  */
    MT_STATE = 260,                /* MT_STATE  */
    MT_GLOBAL = 261,               /* MT_GLOBAL  */
    MT_CONTEXT = 262,              /* MT_CONTEXT  */
    MT_ONEOF = 263,                /* MT_ONEOF  */
    MT_DEFAULTS = 264,             /* MT_DEFAULTS  */
    MT_DEFAULT = 265,              /* MT_DEFAULT  */
    MT_REFERENCE = 266,            /* MT_REFERENCE  */
    MT_PARAMETER = 267,            /* MT_PARAMETER  */
    MT_RESULT = 268,               /* MT_RESULT  */
    MT_CLAUSE = 269,               /* MT_CLAUSE  */
    MT_LITERAL = 270,              /* MT_LITERAL  */
    MT_NULL = 271,                 /* MT_NULL  */
    MT_ANNOTATIONS = 272,          /* MT_ANNOTATIONS  */
    MT_ARROW = 273,                /* MT_ARROW  */
    MT_MERGE = 274,                /* MT_MERGE  */
    MT_TRANSFERS = 275,            /* MT_TRANSFERS  */
    MT_PRECONDITIONS = 276,        /* MT_PRECONDITIONS  */
    MT_POSTCONDITIONS = 277,       /* MT_POSTCONDITIONS  */
    MT_LOSEREFERENCE = 278,        /* MT_LOSEREFERENCE  */
    MT_AS = 279,                   /* MT_AS  */
    MT_ERROR = 280,                /* MT_ERROR  */
    MT_PLUS = 281,                 /* MT_PLUS  */
    MT_STAR = 282,                 /* MT_STAR  */
    MT_BAR = 283,                  /* MT_BAR  */
    MT_LPAREN = 284,               /* MT_LPAREN  */
    MT_RPAREN = 285,               /* MT_RPAREN  */
    MT_LBRACKET = 286,             /* MT_LBRACKET  */
    MT_RBRACKET = 287,             /* MT_RBRACKET  */
    MT_LBRACE = 288,               /* MT_LBRACE  */
    MT_RBRACE = 289,               /* MT_RBRACE  */
    MT_COMMA = 290,                /* MT_COMMA  */
    MT_CHAR = 291,                 /* MT_CHAR  */
    MT_INT = 292,                  /* MT_INT  */
    MT_FLOAT = 293,                /* MT_FLOAT  */
    MT_DOUBLE = 294,               /* MT_DOUBLE  */
    MT_VOID = 295,                 /* MT_VOID  */
    MT_ANYTYPE = 296,              /* MT_ANYTYPE  */
    MT_INTEGRALTYPE = 297,         /* MT_INTEGRALTYPE  */
    MT_UNSIGNEDINTEGRALTYPE = 298, /* MT_UNSIGNEDINTEGRALTYPE  */
    MT_SIGNEDINTEGRALTYPE = 299,   /* MT_SIGNEDINTEGRALTYPE  */
    MT_CONST = 300,                /* MT_CONST  */
    MT_VOLATILE = 301,             /* MT_VOLATILE  */
    MT_RESTRICT = 302,             /* MT_RESTRICT  */
    MT_STRINGLIT = 303,            /* MT_STRINGLIT  */
    MT_IDENT = 304                 /* MT_IDENT  */
  };
  typedef enum mttokentype mttoken_kind_t;
#endif
/* Token kinds.  */
#define MTEMPTY -2
#define MTEOF 0
#define MTerror 256
#define MTUNDEF 257
#define MT_BADTOK 258
#define MT_END 259
#define MT_STATE 260
#define MT_GLOBAL 261
#define MT_CONTEXT 262
#define MT_ONEOF 263
#define MT_DEFAULTS 264
#define MT_DEFAULT 265
#define MT_REFERENCE 266
#define MT_PARAMETER 267
#define MT_RESULT 268
#define MT_CLAUSE 269
#define MT_LITERAL 270
#define MT_NULL 271
#define MT_ANNOTATIONS 272
#define MT_ARROW 273
#define MT_MERGE 274
#define MT_TRANSFERS 275
#define MT_PRECONDITIONS 276
#define MT_POSTCONDITIONS 277
#define MT_LOSEREFERENCE 278
#define MT_AS 279
#define MT_ERROR 280
#define MT_PLUS 281
#define MT_STAR 282
#define MT_BAR 283
#define MT_LPAREN 284
#define MT_RPAREN 285
#define MT_LBRACKET 286
#define MT_RBRACKET 287
#define MT_LBRACE 288
#define MT_RBRACE 289
#define MT_COMMA 290
#define MT_CHAR 291
#define MT_INT 292
#define MT_FLOAT 293
#define MT_DOUBLE 294
#define MT_VOID 295
#define MT_ANYTYPE 296
#define MT_INTEGRALTYPE 297
#define MT_UNSIGNEDINTEGRALTYPE 298
#define MT_SIGNEDINTEGRALTYPE 299
#define MT_CONST 300
#define MT_VOLATILE 301
#define MT_RESTRICT 302
#define MT_STRINGLIT 303
#define MT_IDENT 304

/* Value type.  */
#if ! defined MTSTYPE && ! defined MTSTYPE_IS_DECLARED
union MTSTYPE
{
#line 50 "mtgrammar.y"

  mttok tok; 
  mtDeclarationNode mtdecl;
  mtDeclarationPiece mtpiece;
  mtDeclarationPieces mtpieces;
  mtContextNode mtcontext;
  mtValuesNode mtvalues;
  mtDefaultsNode mtdefaults;
  mtDefaultsDeclList mtdeflist;
  mtAnnotationsNode mtannotations;
  mtAnnotationList mtannotlist;
  mtAnnotationDecl mtannotdecl;
  mtMergeNode mtmerge;
  mtMergeItem mtmergeitem;
  mtMergeClauseList mtmergeclauselist;
  mtMergeClause mtmergeclause;
  mtTransferClauseList mttransferclauselist;
  mtTransferClause mttransferclause;
  mtTransferAction mttransferaction;
  mtLoseReferenceList mtlosereferencelist;
  mtLoseReference mtlosereference;
  pointers pointers;
  /*@only@*/ cstringList cstringlist;
  ctype ctyp;
  /*@only@*/ qtype qtyp;
  qual qual;
  qualList quals;

#line 202 "mtgrammar.h"

};
typedef union MTSTYPE MTSTYPE;
# define MTSTYPE_IS_TRIVIAL 1
# define MTSTYPE_IS_DECLARED 1
#endif




int mtparse (void);


#endif /* !YY_MT_MTGRAMMAR_H_INCLUDED  */
