From 68485a414f2edc538ca4f4f292caea86b58acce3 Mon Sep 17 00:00:00 2001
From: Xin Wang <wangxin03@loongson.cn>
Date: Wed, 30 Oct 2024 19:47:55 +0800
Subject: [PATCH 122/123] remove file produced by bison

---
 gas/config/loongarch-parse.c | 1901 ----------------------------------
 1 file changed, 1901 deletions(-)
 delete mode 100644 gas/config/loongarch-parse.c

diff --git a/gas/config/loongarch-parse.c b/gas/config/loongarch-parse.c
deleted file mode 100644
index 2fad9e0b..00000000
--- a/gas/config/loongarch-parse.c
+++ /dev/null
@@ -1,1901 +0,0 @@
-/* A Bison parser, made by GNU Bison 3.8.2.  */
-
-/* Bison implementation 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.  */
-
-/* C LALR(1) parser skeleton written by Richard Stallman, by
-   simplifying the original so-called "semantic" parser.  */
-
-/* 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.  */
-
-/* All symbols defined below should begin with yy or YY, to avoid
-   infringing on user name space.  This should be done even for local
-   variables, as they might otherwise be expanded by user macros.
-   There are some unavoidable exceptions within include files to
-   define necessary library symbols; they are noted "INFRINGES ON
-   USER NAME SPACE" below.  */
-
-/* Identify Bison output, and Bison version.  */
-#define YYBISON 30802
-
-/* Bison version string.  */
-#define YYBISON_VERSION "3.8.2"
-
-/* Skeleton name.  */
-#define YYSKELETON_NAME "yacc.c"
-
-/* Pure parsers.  */
-#define YYPURE 0
-
-/* Push parsers.  */
-#define YYPUSH 0
-
-/* Pull parsers.  */
-#define YYPULL 1
-
-
-
-
-/* First part of user prologue.  */
-#line 19 "./config/loongarch-parse.y"
-
-#include "as.h"
-#include "loongarch-lex.h"
-#include "loongarch-parse.h"
-static void yyerror (const char *s ATTRIBUTE_UNUSED)
-{
-};
-int yylex (void);
-
-
-static struct reloc_info *top, *end;
-
-static expressionS const_0 =
-{
-  .X_op = O_constant,
-  .X_add_number = 0
-};
-
-static int
-is_const (struct reloc_info *info)
-{
-  return (info->type == BFD_RELOC_LARCH_SOP_PUSH_ABSOLUTE
-	  && info->value.X_op == O_constant);
-}
-
-int
-loongarch_parse_expr (const char *expr,
-		      struct reloc_info *reloc_stack_top,
-		      size_t max_reloc_num,
-		      size_t *reloc_num,
-		      offsetT *imm)
-{
-  int ret;
-  struct yy_buffer_state *buffstate;
-  top = reloc_stack_top;
-  end = top + max_reloc_num;
-  buffstate = yy_scan_string (expr);
-  ret = yyparse ();
-
-  if (ret == 0)
-    {
-      if (is_const (top - 1))
-	*imm = (--top)->value.X_add_number;
-      else
-	*imm = 0;
-      *reloc_num = top - reloc_stack_top;
-    }
-  yy_delete_buffer (buffstate);
-
-  return ret;
-}
-
-static void
-emit_const (offsetT imm)
-{
-  if (end <= top)
-    as_fatal (_("expr too huge"));
-  top->type = BFD_RELOC_LARCH_SOP_PUSH_ABSOLUTE;
-  top->value.X_op = O_constant;
-  top->value.X_add_number = imm;
-  top++;
-}
-
-static const char *
-my_getExpression (expressionS *ep, const char *str)
-{
-  char *save_in, *ret;
-
-  if (*str == ':')
-    {
-      unsigned long j;
-      char *str_1 = (char *) str;
-      j = strtol (str_1, &str_1, 10);
-      get_internal_label (ep, j, *str_1 == 'f');
-      return NULL;
-    }
-  save_in = input_line_pointer;
-  input_line_pointer = (char *)str;
-  expression (ep);
-  ret = input_line_pointer;
-  input_line_pointer = save_in;
-  return ret;
-}
-
-static void
-emit_const_var (const char *op)
-{
-  expressionS ep;
-
-  if (end <= top)
-    as_fatal (_("expr too huge"));
-
-  my_getExpression (&ep, op);
-
-  if (ep.X_op != O_constant)
-    as_bad ("illegal operand: %s", op);
-
-  top->value.X_op = O_constant;
-  top->value.X_add_number = ep.X_add_number;
-  top->type = BFD_RELOC_LARCH_SOP_PUSH_ABSOLUTE;
-  top++;
-}
-
-static void
-reloc (const char *op_c_str, const char *id_c_str, offsetT addend)
-{
-  expressionS id_sym_expr;
-  bfd_reloc_code_real_type btype;
-
-  if (end <= top)
-    as_fatal (_("expr too huge"));
-
-  /* For compatible old asm code.  */
-  if (0 == strcmp (op_c_str, "plt"))
-    btype = BFD_RELOC_LARCH_B26;
-  else
-    btype = loongarch_larch_reloc_name_lookup (NULL, op_c_str);
-
-  if (id_c_str)
-  {
-    my_getExpression (&id_sym_expr, id_c_str);
-    id_sym_expr.X_add_number += addend;
-  }
-  else
-  {
-    id_sym_expr.X_op = O_constant;
-    id_sym_expr.X_add_number = addend;
-  }
-
-  top->value = id_sym_expr;
-  top->type = btype;
-  top++;
-}
-
-static void
-emit_unary (char op)
-{
-  struct reloc_info *s_top = top - 1;
-  if (is_const (s_top))
-    {
-      offsetT opr = s_top->value.X_add_number;
-      switch (op)
-	{
-	case '+':
-	  break;
-	case '-':
-	  opr = -opr;
-	  break;
-	case '~':
-	  opr = ~opr;
-	  break;
-	case '!':
-	  opr = !opr;
-	  break;
-	default:
-	  abort ();
-	}
-      s_top->value.X_add_number = opr;
-    }
-  else
-    {
-      if (end <= top)
-	as_fatal (_("expr too huge"));
-      switch (op)
-	{
-	case '!':
-	  top->type = BFD_RELOC_LARCH_SOP_NOT;
-	  break;
-	default:
-	  abort ();
-	}
-      top->value = const_0;
-      top++;
-    }
-}
-
-static void
-emit_bin (int op)
-{
-  struct reloc_info *last_1st = top - 1, *last_2nd = top - 2;
-  if (is_const (last_1st) && is_const (last_2nd))
-    {
-      offsetT opr1 = last_2nd->value.X_add_number;
-      offsetT opr2 = last_1st->value.X_add_number;
-      switch (op)
-	{
-	case '*':
-	  opr1 = opr1 * opr2;
-	  break;
-	case '/':
-	  opr1 = opr1 / opr2;
-	  break;
-	case '%':
-	  opr1 = opr1 % opr2;
-	  break;
-	case '+':
-	  opr1 = opr1 + opr2;
-	  break;
-	case '-':
-	  opr1 = opr1 - opr2;
-	  break;
-	case LEFT_OP:
-	  opr1 = opr1 << opr2;
-	  break;
-	case RIGHT_OP:
-	  /* Algorithm right shift.  */
-	  opr1 = (offsetT)opr1 >> (offsetT)opr2;
-	  break;
-	case '<':
-	  opr1 = opr1 < opr2;
-	  break;
-	case '>':
-	  opr1 = opr1 > opr2;
-	  break;
-	case LE_OP:
-	  opr1 = opr1 <= opr2;
-	  break;
-	case GE_OP:
-	  opr1 = opr1 >= opr2;
-	  break;
-	case EQ_OP:
-	  opr1 = opr1 == opr2;
-	  break;
-	case NE_OP:
-	  opr1 = opr1 != opr2;
-	  break;
-	case '&':
-	  opr1 = opr1 & opr2;
-	  break;
-	case '^':
-	  opr1 = opr1 ^ opr2;
-	  break;
-	case '|':
-	  opr1 = opr1 | opr2;
-	  break;
-	case AND_OP:
-	  opr1 = opr1 && opr2;
-	  break;
-	case OR_OP:
-	  opr1 = opr1 || opr2;
-	  break;
-	default:
-	  abort ();
-	}
-      last_2nd->value.X_add_number = opr1;
-      last_1st->type = 0;
-      top--;
-    }
-  else
-    {
-      if (end <= top)
-	as_fatal (_("expr too huge"));
-      switch (op)
-	{
-	case '+':
-	  top->type = BFD_RELOC_LARCH_SOP_ADD;
-	  break;
-	case '-':
-	  top->type = BFD_RELOC_LARCH_SOP_SUB;
-	  break;
-	case LEFT_OP:
-	  top->type = BFD_RELOC_LARCH_SOP_SL;
-	  break;
-	case RIGHT_OP:
-	  top->type = BFD_RELOC_LARCH_SOP_SR;
-	  break;
-	case '&':
-	  top->type = BFD_RELOC_LARCH_SOP_AND;
-	  break;
-	default:
-	  abort ();
-	}
-      top->value = const_0;
-      top++;
-    }
-}
-
-static void
-emit_if_else (void)
-{
-  struct reloc_info *last_1st = top - 1;
-  struct reloc_info *last_2nd = top - 2;
-  struct reloc_info *last_3rd = top - 3;
-  if (is_const (last_1st) && is_const (last_2nd) && is_const (last_3rd))
-    {
-      offsetT opr1 = last_3rd->value.X_add_number;
-      offsetT opr2 = last_2nd->value.X_add_number;
-      offsetT opr3 = last_1st->value.X_add_number;
-      opr1 = opr1 ? opr2 : opr3;
-      last_3rd->value.X_add_number = opr1;
-      last_2nd->type = 0;
-      last_1st->type = 0;
-      top -= 2;
-    }
-  else
-    {
-      if (end <= top)
-	as_fatal (_("expr too huge"));
-      top->type = BFD_RELOC_LARCH_SOP_IF_ELSE;
-      top->value = const_0;
-      top++;
-    }
-}
-
-
-#line 377 "config/loongarch-parse.c"
-
-# ifndef YY_CAST
-#  ifdef __cplusplus
-#   define YY_CAST(Type, Val) static_cast<Type> (Val)
-#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
-#  else
-#   define YY_CAST(Type, Val) ((Type) (Val))
-#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
-#  endif
-# endif
-# ifndef YY_NULLPTR
-#  if defined __cplusplus
-#   if 201103L <= __cplusplus
-#    define YY_NULLPTR nullptr
-#   else
-#    define YY_NULLPTR 0
-#   endif
-#  else
-#   define YY_NULLPTR ((void*)0)
-#  endif
-# endif
-
-/* Use api.header.include to #include this header
-   instead of duplicating it here.  */
-#ifndef YY_YY_CONFIG_LOONGARCH_PARSE_H_INCLUDED
-# define YY_YY_CONFIG_LOONGARCH_PARSE_H_INCLUDED
-/* Debug traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-#if YYDEBUG
-extern int yydebug;
-#endif
-
-/* Token kinds.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
-  enum yytokentype
-  {
-    YYEMPTY = -2,
-    YYEOF = 0,                     /* "end of file"  */
-    YYerror = 256,                 /* error  */
-    YYUNDEF = 257,                 /* "invalid token"  */
-    INTEGER = 258,                 /* INTEGER  */
-    IDENTIFIER = 259,              /* IDENTIFIER  */
-    LEFT_OP = 260,                 /* LEFT_OP  */
-    RIGHT_OP = 261,                /* RIGHT_OP  */
-    LE_OP = 262,                   /* LE_OP  */
-    GE_OP = 263,                   /* GE_OP  */
-    EQ_OP = 264,                   /* EQ_OP  */
-    NE_OP = 265,                   /* NE_OP  */
-    AND_OP = 266,                  /* AND_OP  */
-    OR_OP = 267                    /* OR_OP  */
-  };
-  typedef enum yytokentype yytoken_kind_t;
-#endif
-/* Token kinds.  */
-#define YYEMPTY -2
-#define YYEOF 0
-#define YYerror 256
-#define YYUNDEF 257
-#define INTEGER 258
-#define IDENTIFIER 259
-#define LEFT_OP 260
-#define RIGHT_OP 261
-#define LE_OP 262
-#define GE_OP 263
-#define EQ_OP 264
-#define NE_OP 265
-#define AND_OP 266
-#define OR_OP 267
-
-/* Value type.  */
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-union YYSTYPE
-{
-#line 325 "./config/loongarch-parse.y"
-
-char *c_str;
-offsetT imm;
-
-#line 459 "config/loongarch-parse.c"
-
-};
-typedef union YYSTYPE YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define YYSTYPE_IS_DECLARED 1
-#endif
-
-
-extern YYSTYPE yylval;
-
-
-int yyparse (void);
-
-
-#endif /* !YY_YY_CONFIG_LOONGARCH_PARSE_H_INCLUDED  */
-/* Symbol kind.  */
-enum yysymbol_kind_t
-{
-  YYSYMBOL_YYEMPTY = -2,
-  YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
-  YYSYMBOL_YYerror = 1,                    /* error  */
-  YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
-  YYSYMBOL_INTEGER = 3,                    /* INTEGER  */
-  YYSYMBOL_IDENTIFIER = 4,                 /* IDENTIFIER  */
-  YYSYMBOL_LEFT_OP = 5,                    /* LEFT_OP  */
-  YYSYMBOL_RIGHT_OP = 6,                   /* RIGHT_OP  */
-  YYSYMBOL_LE_OP = 7,                      /* LE_OP  */
-  YYSYMBOL_GE_OP = 8,                      /* GE_OP  */
-  YYSYMBOL_EQ_OP = 9,                      /* EQ_OP  */
-  YYSYMBOL_NE_OP = 10,                     /* NE_OP  */
-  YYSYMBOL_AND_OP = 11,                    /* AND_OP  */
-  YYSYMBOL_OR_OP = 12,                     /* OR_OP  */
-  YYSYMBOL_13_ = 13,                       /* '('  */
-  YYSYMBOL_14_ = 14,                       /* ')'  */
-  YYSYMBOL_15_ = 15,                       /* '%'  */
-  YYSYMBOL_16_ = 16,                       /* '-'  */
-  YYSYMBOL_17_ = 17,                       /* '+'  */
-  YYSYMBOL_18_ = 18,                       /* '~'  */
-  YYSYMBOL_19_ = 19,                       /* '!'  */
-  YYSYMBOL_20_ = 20,                       /* '*'  */
-  YYSYMBOL_21_ = 21,                       /* '/'  */
-  YYSYMBOL_22_ = 22,                       /* '<'  */
-  YYSYMBOL_23_ = 23,                       /* '>'  */
-  YYSYMBOL_24_ = 24,                       /* '&'  */
-  YYSYMBOL_25_ = 25,                       /* '^'  */
-  YYSYMBOL_26_ = 26,                       /* '|'  */
-  YYSYMBOL_27_ = 27,                       /* '?'  */
-  YYSYMBOL_28_ = 28,                       /* ':'  */
-  YYSYMBOL_YYACCEPT = 29,                  /* $accept  */
-  YYSYMBOL_primary_expression = 30,        /* primary_expression  */
-  YYSYMBOL_addend = 31,                    /* addend  */
-  YYSYMBOL_unary_expression = 32,          /* unary_expression  */
-  YYSYMBOL_multiplicative_expression = 33, /* multiplicative_expression  */
-  YYSYMBOL_additive_expression = 34,       /* additive_expression  */
-  YYSYMBOL_shift_expression = 35,          /* shift_expression  */
-  YYSYMBOL_relational_expression = 36,     /* relational_expression  */
-  YYSYMBOL_equality_expression = 37,       /* equality_expression  */
-  YYSYMBOL_and_expression = 38,            /* and_expression  */
-  YYSYMBOL_exclusive_or_expression = 39,   /* exclusive_or_expression  */
-  YYSYMBOL_inclusive_or_expression = 40,   /* inclusive_or_expression  */
-  YYSYMBOL_logical_and_expression = 41,    /* logical_and_expression  */
-  YYSYMBOL_logical_or_expression = 42,     /* logical_or_expression  */
-  YYSYMBOL_conditional_expression = 43,    /* conditional_expression  */
-  YYSYMBOL_expression = 44                 /* expression  */
-};
-typedef enum yysymbol_kind_t yysymbol_kind_t;
-
-
-
-
-#ifdef short
-# undef short
-#endif
-
-/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
-   <limits.h> and (if available) <stdint.h> are included
-   so that the code can choose integer types of a good width.  */
-
-#ifndef __PTRDIFF_MAX__
-# include <limits.h> /* INFRINGES ON USER NAME SPACE */
-# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
-#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
-#  define YY_STDINT_H
-# endif
-#endif
-
-/* Narrow types that promote to a signed type and that can represent a
-   signed or unsigned integer of at least N bits.  In tables they can
-   save space and decrease cache pressure.  Promoting to a signed type
-   helps avoid bugs in integer arithmetic.  */
-
-#ifdef __INT_LEAST8_MAX__
-typedef __INT_LEAST8_TYPE__ yytype_int8;
-#elif defined YY_STDINT_H
-typedef int_least8_t yytype_int8;
-#else
-typedef signed char yytype_int8;
-#endif
-
-#ifdef __INT_LEAST16_MAX__
-typedef __INT_LEAST16_TYPE__ yytype_int16;
-#elif defined YY_STDINT_H
-typedef int_least16_t yytype_int16;
-#else
-typedef short yytype_int16;
-#endif
-
-/* Work around bug in HP-UX 11.23, which defines these macros
-   incorrectly for preprocessor constants.  This workaround can likely
-   be removed in 2023, as HPE has promised support for HP-UX 11.23
-   (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
-   <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
-#ifdef __hpux
-# undef UINT_LEAST8_MAX
-# undef UINT_LEAST16_MAX
-# define UINT_LEAST8_MAX 255
-# define UINT_LEAST16_MAX 65535
-#endif
-
-#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
-typedef __UINT_LEAST8_TYPE__ yytype_uint8;
-#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
-       && UINT_LEAST8_MAX <= INT_MAX)
-typedef uint_least8_t yytype_uint8;
-#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
-typedef unsigned char yytype_uint8;
-#else
-typedef short yytype_uint8;
-#endif
-
-#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
-typedef __UINT_LEAST16_TYPE__ yytype_uint16;
-#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
-       && UINT_LEAST16_MAX <= INT_MAX)
-typedef uint_least16_t yytype_uint16;
-#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
-typedef unsigned short yytype_uint16;
-#else
-typedef int yytype_uint16;
-#endif
-
-#ifndef YYPTRDIFF_T
-# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
-#  define YYPTRDIFF_T __PTRDIFF_TYPE__
-#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
-# elif defined PTRDIFF_MAX
-#  ifndef ptrdiff_t
-#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  endif
-#  define YYPTRDIFF_T ptrdiff_t
-#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
-# else
-#  define YYPTRDIFF_T long
-#  define YYPTRDIFF_MAXIMUM LONG_MAX
-# endif
-#endif
-
-#ifndef YYSIZE_T
-# ifdef __SIZE_TYPE__
-#  define YYSIZE_T __SIZE_TYPE__
-# elif defined size_t
-#  define YYSIZE_T size_t
-# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# else
-#  define YYSIZE_T unsigned
-# endif
-#endif
-
-#define YYSIZE_MAXIMUM                                  \
-  YY_CAST (YYPTRDIFF_T,                                 \
-           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
-            ? YYPTRDIFF_MAXIMUM                         \
-            : YY_CAST (YYSIZE_T, -1)))
-
-#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
-
-
-/* Stored state numbers (used for stacks). */
-typedef yytype_int8 yy_state_t;
-
-/* State numbers in computations.  */
-typedef int yy_state_fast_t;
-
-#ifndef YY_
-# if defined YYENABLE_NLS && YYENABLE_NLS
-#  if ENABLE_NLS
-#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
-#  endif
-# endif
-# ifndef YY_
-#  define YY_(Msgid) Msgid
-# endif
-#endif
-
-
-#ifndef YY_ATTRIBUTE_PURE
-# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
-#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
-# else
-#  define YY_ATTRIBUTE_PURE
-# endif
-#endif
-
-#ifndef YY_ATTRIBUTE_UNUSED
-# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
-#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
-# else
-#  define YY_ATTRIBUTE_UNUSED
-# endif
-#endif
-
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YY_USE(E) ((void) (E))
-#else
-# define YY_USE(E) /* empty */
-#endif
-
-/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
-# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
-#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
-    _Pragma ("GCC diagnostic push")                                     \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
-# else
-#  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
-    _Pragma ("GCC diagnostic push")                                     \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
-    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# endif
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
-    _Pragma ("GCC diagnostic pop")
-#else
-# define YY_INITIAL_VALUE(Value) Value
-#endif
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
-#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
-# define YY_IGNORE_USELESS_CAST_BEGIN                          \
-    _Pragma ("GCC diagnostic push")                            \
-    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
-# define YY_IGNORE_USELESS_CAST_END            \
-    _Pragma ("GCC diagnostic pop")
-#endif
-#ifndef YY_IGNORE_USELESS_CAST_BEGIN
-# define YY_IGNORE_USELESS_CAST_BEGIN
-# define YY_IGNORE_USELESS_CAST_END
-#endif
-
-
-#define YY_ASSERT(E) ((void) (0 && (E)))
-
-#if !defined yyoverflow
-
-/* The parser invokes alloca or malloc; define the necessary symbols.  */
-
-# ifdef YYSTACK_USE_ALLOCA
-#  if YYSTACK_USE_ALLOCA
-#   ifdef __GNUC__
-#    define YYSTACK_ALLOC __builtin_alloca
-#   elif defined __BUILTIN_VA_ARG_INCR
-#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
-#   elif defined _AIX
-#    define YYSTACK_ALLOC __alloca
-#   elif defined _MSC_VER
-#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
-#    define alloca _alloca
-#   else
-#    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
-#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
-#     ifndef EXIT_SUCCESS
-#      define EXIT_SUCCESS 0
-#     endif
-#    endif
-#   endif
-#  endif
-# endif
-
-# ifdef YYSTACK_ALLOC
-   /* Pacify GCC's 'empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-    /* The OS might guarantee only one guard page at the bottom of the stack,
-       and a page size can be as small as 4096 bytes.  So we cannot safely
-       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
-       to allow for a few compiler-allocated temporary stack slots.  */
-#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
-#  endif
-# else
-#  define YYSTACK_ALLOC YYMALLOC
-#  define YYSTACK_FREE YYFREE
-#  ifndef YYSTACK_ALLOC_MAXIMUM
-#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
-#  endif
-#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
-       && ! ((defined YYMALLOC || defined malloc) \
-             && (defined YYFREE || defined free)))
-#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   ifndef EXIT_SUCCESS
-#    define EXIT_SUCCESS 0
-#   endif
-#  endif
-#  ifndef YYMALLOC
-#   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS
-void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-#  ifndef YYFREE
-#   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS
-void free (void *); /* INFRINGES ON USER NAME SPACE */
-#   endif
-#  endif
-# endif
-#endif /* !defined yyoverflow */
-
-#if (! defined yyoverflow \
-     && (! defined __cplusplus \
-         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
-
-/* A type that is properly aligned for any stack member.  */
-union yyalloc
-{
-  yy_state_t yyss_alloc;
-  YYSTYPE yyvs_alloc;
-};
-
-/* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
-
-/* The size of an array large to enough to hold all stacks, each with
-   N elements.  */
-# define YYSTACK_BYTES(N) \
-     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
-      + YYSTACK_GAP_MAXIMUM)
-
-# define YYCOPY_NEEDED 1
-
-/* Relocate STACK from its old location to the new one.  The
-   local variables YYSIZE and YYSTACKSIZE give the old and new number of
-   elements in the stack, and YYPTR gives the new location of the
-   stack.  Advance YYPTR to a properly aligned location for the next
-   stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
-    do                                                                  \
-      {                                                                 \
-        YYPTRDIFF_T yynewbytes;                                         \
-        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
-        Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
-      }                                                                 \
-    while (0)
-
-#endif
-
-#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
-/* Copy COUNT objects from SRC to DST.  The source and destination do
-   not overlap.  */
-# ifndef YYCOPY
-#  if defined __GNUC__ && 1 < __GNUC__
-#   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
-#  else
-#   define YYCOPY(Dst, Src, Count)              \
-      do                                        \
-        {                                       \
-          YYPTRDIFF_T yyi;                      \
-          for (yyi = 0; yyi < (Count); yyi++)   \
-            (Dst)[yyi] = (Src)[yyi];            \
-        }                                       \
-      while (0)
-#  endif
-# endif
-#endif /* !YYCOPY_NEEDED */
-
-/* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  48
-/* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   74
-
-/* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  29
-/* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  16
-/* YYNRULES -- Number of rules.  */
-#define YYNRULES  45
-/* YYNSTATES -- Number of states.  */
-#define YYNSTATES  82
-
-/* YYMAXUTOK -- Last valid token kind.  */
-#define YYMAXUTOK   267
-
-
-/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, with out-of-bounds checking.  */
-#define YYTRANSLATE(YYX)                                \
-  (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
-   ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
-   : YYSYMBOL_YYUNDEF)
-
-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex.  */
-static const yytype_int8 yytranslate[] =
-{
-       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    19,     2,     2,     2,    15,    24,     2,
-      13,    14,    20,    17,     2,    16,     2,    21,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    28,     2,
-      22,     2,    23,    27,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,    25,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,    26,     2,    18,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
-       5,     6,     7,     8,     9,    10,    11,    12
-};
-
-#if YYDEBUG
-/* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-static const yytype_int16 yyrline[] =
-{
-       0,   339,   339,   340,   341,   342,   343,   347,   348,   349,
-     353,   354,   355,   356,   357,   361,   362,   363,   364,   368,
-     369,   370,   374,   375,   376,   380,   381,   382,   383,   384,
-     388,   389,   390,   394,   395,   399,   400,   404,   405,   409,
-     410,   414,   415,   419,   420,   424
-};
-#endif
-
-/** Accessing symbol of state STATE.  */
-#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
-
-#if YYDEBUG || 0
-/* The user-facing name of the symbol whose (internal) number is
-   YYSYMBOL.  No bounds checking.  */
-static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
-
-/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
-static const char *const yytname[] =
-{
-  "\"end of file\"", "error", "\"invalid token\"", "INTEGER",
-  "IDENTIFIER", "LEFT_OP", "RIGHT_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP",
-  "AND_OP", "OR_OP", "'('", "')'", "'%'", "'-'", "'+'", "'~'", "'!'",
-  "'*'", "'/'", "'<'", "'>'", "'&'", "'^'", "'|'", "'?'", "':'", "$accept",
-  "primary_expression", "addend", "unary_expression",
-  "multiplicative_expression", "additive_expression", "shift_expression",
-  "relational_expression", "equality_expression", "and_expression",
-  "exclusive_or_expression", "inclusive_or_expression",
-  "logical_and_expression", "logical_or_expression",
-  "conditional_expression", "expression", YY_NULLPTR
-};
-
-static const char *
-yysymbol_name (yysymbol_kind_t yysymbol)
-{
-  return yytname[yysymbol];
-}
-#endif
-
-#define YYPACT_NINF (-28)
-
-#define yypact_value_is_default(Yyn) \
-  ((Yyn) == YYPACT_NINF)
-
-#define YYTABLE_NINF (-1)
-
-#define yytable_value_is_error(Yyn) \
-  0
-
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-static const yytype_int8 yypact[] =
-{
-       2,   -28,   -28,     2,    10,     2,     2,     2,     2,   -28,
-     -28,     9,    23,    36,     0,    37,    -8,     7,    26,    25,
-       1,   -28,    43,    31,    44,   -28,   -28,   -28,   -28,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   -28,   -28,
-      45,   -28,   -28,   -28,     9,     9,    23,    23,    36,    36,
-      36,    36,     0,     0,    37,    -8,     7,    26,    25,    30,
-     -28,   -28,     2,    17,    21,   -28,   -28,    56,    57,   -28,
-     -28,   -28
-};
-
-/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
-   Performed when YYTABLE does not specify something else to do.  Zero
-   means the default is an error.  */
-static const yytype_int8 yydefact[] =
-{
-       0,     2,     3,     0,     0,     0,     0,     0,     0,    10,
-      15,    19,    22,    25,    30,    33,    35,    37,    39,    41,
-      43,    45,     0,     0,     0,    12,    11,    13,    14,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     1,     4,
-       0,    18,    16,    17,    21,    20,    23,    24,    28,    29,
-      26,    27,    31,    32,    34,    36,    38,    40,    42,     0,
-       9,     9,     0,     0,     0,    44,     6,     0,     0,     5,
-       7,     8
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int8 yypgoto[] =
-{
-     -28,   -28,   -10,    -4,    18,    19,   -27,    15,    20,    22,
-      24,    27,    28,   -28,    -9,    -3
-};
-
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int8 yydefgoto[] =
-{
-       0,     9,    73,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule whose
-   number is the opposite.  If YYTABLE_NINF, syntax error.  */
-static const yytype_int8 yytable[] =
-{
-      23,    25,    26,    27,    28,     1,     2,    36,    37,    58,
-      59,    60,    61,    46,    24,     3,    42,     4,     5,     6,
-       7,     8,    38,    39,    29,    51,    52,    53,    47,    30,
-      31,    76,    43,    77,    78,    79,    45,    77,    78,    32,
-      33,    34,    35,    48,    69,    49,    40,    41,    70,    71,
-      54,    55,    44,    56,    57,    62,    63,    50,    72,    80,
-      81,    74,    64,    75,     0,    65,     0,     0,    66,     0,
-       0,     0,    67,     0,    68
-};
-
-static const yytype_int8 yycheck[] =
-{
-       3,     5,     6,     7,     8,     3,     4,     7,     8,    36,
-      37,    38,    39,    12,     4,    13,    24,    15,    16,    17,
-      18,    19,    22,    23,    15,    29,    30,    31,    27,    20,
-      21,    14,    25,    16,    17,    14,    11,    16,    17,    16,
-      17,     5,     6,     0,    47,    14,     9,    10,     3,     4,
-      32,    33,    26,    34,    35,    40,    41,    13,    28,     3,
-       3,    71,    42,    72,    -1,    43,    -1,    -1,    44,    -1,
-      -1,    -1,    45,    -1,    46
-};
-
-/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
-   state STATE-NUM.  */
-static const yytype_int8 yystos[] =
-{
-       0,     3,     4,    13,    15,    16,    17,    18,    19,    30,
-      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
-      42,    43,    44,    44,     4,    32,    32,    32,    32,    15,
-      20,    21,    16,    17,     5,     6,     7,     8,    22,    23,
-       9,    10,    24,    25,    26,    11,    12,    27,     0,    14,
-      13,    32,    32,    32,    33,    33,    34,    34,    35,    35,
-      35,    35,    36,    36,    37,    38,    39,    40,    41,    44,
-       3,     4,    28,    31,    31,    43,    14,    16,    17,    14,
-       3,     3
-};
-
-/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
-static const yytype_int8 yyr1[] =
-{
-       0,    29,    30,    30,    30,    30,    30,    31,    31,    31,
-      32,    32,    32,    32,    32,    33,    33,    33,    33,    34,
-      34,    34,    35,    35,    35,    36,    36,    36,    36,    36,
-      37,    37,    37,    38,    38,    39,    39,    40,    40,    41,
-      41,    42,    42,    43,    43,    44
-};
-
-/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
-static const yytype_int8 yyr2[] =
-{
-       0,     2,     1,     1,     3,     6,     6,     3,     3,     0,
-       1,     2,     2,     2,     2,     1,     3,     3,     3,     1,
-       3,     3,     1,     3,     3,     1,     3,     3,     3,     3,
-       1,     3,     3,     1,     3,     1,     3,     1,     3,     1,
-       3,     1,     3,     1,     5,     1
-};
-
-
-enum { YYENOMEM = -2 };
-
-#define yyerrok         (yyerrstatus = 0)
-#define yyclearin       (yychar = YYEMPTY)
-
-#define YYACCEPT        goto yyacceptlab
-#define YYABORT         goto yyabortlab
-#define YYERROR         goto yyerrorlab
-#define YYNOMEM         goto yyexhaustedlab
-
-
-#define YYRECOVERING()  (!!yyerrstatus)
-
-#define YYBACKUP(Token, Value)                                    \
-  do                                                              \
-    if (yychar == YYEMPTY)                                        \
-      {                                                           \
-        yychar = (Token);                                         \
-        yylval = (Value);                                         \
-        YYPOPSTACK (yylen);                                       \
-        yystate = *yyssp;                                         \
-        goto yybackup;                                            \
-      }                                                           \
-    else                                                          \
-      {                                                           \
-        yyerror (YY_("syntax error: cannot back up")); \
-        YYERROR;                                                  \
-      }                                                           \
-  while (0)
-
-/* Backward compatibility with an undocumented macro.
-   Use YYerror or YYUNDEF. */
-#define YYERRCODE YYUNDEF
-
-
-/* Enable debugging if requested.  */
-#if YYDEBUG
-
-# ifndef YYFPRINTF
-#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYFPRINTF fprintf
-# endif
-
-# define YYDPRINTF(Args)                        \
-do {                                            \
-  if (yydebug)                                  \
-    YYFPRINTF Args;                             \
-} while (0)
-
-
-
-
-# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
-do {                                                                      \
-  if (yydebug)                                                            \
-    {                                                                     \
-      YYFPRINTF (stderr, "%s ", Title);                                   \
-      yy_symbol_print (stderr,                                            \
-                  Kind, Value); \
-      YYFPRINTF (stderr, "\n");                                           \
-    }                                                                     \
-} while (0)
-
-
-/*-----------------------------------.
-| Print this symbol's value on YYO.  |
-`-----------------------------------*/
-
-static void
-yy_symbol_value_print (FILE *yyo,
-                       yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
-{
-  FILE *yyoutput = yyo;
-  YY_USE (yyoutput);
-  if (!yyvaluep)
-    return;
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YY_USE (yykind);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-}
-
-
-/*---------------------------.
-| Print this symbol on YYO.  |
-`---------------------------*/
-
-static void
-yy_symbol_print (FILE *yyo,
-                 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
-{
-  YYFPRINTF (yyo, "%s %s (",
-             yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
-
-  yy_symbol_value_print (yyo, yykind, yyvaluep);
-  YYFPRINTF (yyo, ")");
-}
-
-/*------------------------------------------------------------------.
-| yy_stack_print -- Print the state stack from its BOTTOM up to its |
-| TOP (included).                                                   |
-`------------------------------------------------------------------*/
-
-static void
-yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
-{
-  YYFPRINTF (stderr, "Stack now");
-  for (; yybottom <= yytop; yybottom++)
-    {
-      int yybot = *yybottom;
-      YYFPRINTF (stderr, " %d", yybot);
-    }
-  YYFPRINTF (stderr, "\n");
-}
-
-# define YY_STACK_PRINT(Bottom, Top)                            \
-do {                                                            \
-  if (yydebug)                                                  \
-    yy_stack_print ((Bottom), (Top));                           \
-} while (0)
-
-
-/*------------------------------------------------.
-| Report that the YYRULE is going to be reduced.  |
-`------------------------------------------------*/
-
-static void
-yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
-                 int yyrule)
-{
-  int yylno = yyrline[yyrule];
-  int yynrhs = yyr2[yyrule];
-  int yyi;
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
-             yyrule - 1, yylno);
-  /* The symbols being reduced.  */
-  for (yyi = 0; yyi < yynrhs; yyi++)
-    {
-      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr,
-                       YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
-                       &yyvsp[(yyi + 1) - (yynrhs)]);
-      YYFPRINTF (stderr, "\n");
-    }
-}
-
-# define YY_REDUCE_PRINT(Rule)          \
-do {                                    \
-  if (yydebug)                          \
-    yy_reduce_print (yyssp, yyvsp, Rule); \
-} while (0)
-
-/* Nonzero means print parse trace.  It is left uninitialized so that
-   multiple parsers can coexist.  */
-int yydebug;
-#else /* !YYDEBUG */
-# define YYDPRINTF(Args) ((void) 0)
-# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
-# define YY_STACK_PRINT(Bottom, Top)
-# define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
-
-
-/* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef YYINITDEPTH
-# define YYINITDEPTH 200
-#endif
-
-/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
-   if the built-in stack extension method is used).
-
-   Do not make this value too large; the results are undefined if
-   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
-   evaluated with infinite-precision integer arithmetic.  */
-
-#ifndef YYMAXDEPTH
-# define YYMAXDEPTH 10000
-#endif
-
-
-
-
-
-
-/*-----------------------------------------------.
-| Release the memory associated to this symbol.  |
-`-----------------------------------------------*/
-
-static void
-yydestruct (const char *yymsg,
-            yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
-{
-  YY_USE (yyvaluep);
-  if (!yymsg)
-    yymsg = "Deleting";
-  YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
-
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  YY_USE (yykind);
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-}
-
-
-/* Lookahead token kind.  */
-int yychar;
-
-/* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval;
-/* Number of syntax errors so far.  */
-int yynerrs;
-
-
-
-
-/*----------.
-| yyparse.  |
-`----------*/
-
-int
-yyparse (void)
-{
-    yy_state_fast_t yystate = 0;
-    /* Number of tokens to shift before error messages enabled.  */
-    int yyerrstatus = 0;
-
-    /* Refer to the stacks through separate pointers, to allow yyoverflow
-       to reallocate them elsewhere.  */
-
-    /* Their size.  */
-    YYPTRDIFF_T yystacksize = YYINITDEPTH;
-
-    /* The state stack: array, bottom, top.  */
-    yy_state_t yyssa[YYINITDEPTH];
-    yy_state_t *yyss = yyssa;
-    yy_state_t *yyssp = yyss;
-
-    /* The semantic value stack: array, bottom, top.  */
-    YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs = yyvsa;
-    YYSTYPE *yyvsp = yyvs;
-
-  int yyn;
-  /* The return value of yyparse.  */
-  int yyresult;
-  /* Lookahead symbol kind.  */
-  yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
-  /* The variables used to return semantic value and location from the
-     action routines.  */
-  YYSTYPE yyval;
-
-
-
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
-  /* The number of symbols on the RHS of the reduced rule.
-     Keep to zero when no symbol should be popped.  */
-  int yylen = 0;
-
-  YYDPRINTF ((stderr, "Starting parse\n"));
-
-  yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  goto yysetstate;
-
-
-/*------------------------------------------------------------.
-| yynewstate -- push a new state, which is found in yystate.  |
-`------------------------------------------------------------*/
-yynewstate:
-  /* In all cases, when you get here, the value and location stacks
-     have just been pushed.  So pushing a state here evens the stacks.  */
-  yyssp++;
-
-
-/*--------------------------------------------------------------------.
-| yysetstate -- set current state (the top of the stack) to yystate.  |
-`--------------------------------------------------------------------*/
-yysetstate:
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
-  YY_IGNORE_USELESS_CAST_BEGIN
-  *yyssp = YY_CAST (yy_state_t, yystate);
-  YY_IGNORE_USELESS_CAST_END
-  YY_STACK_PRINT (yyss, yyssp);
-
-  if (yyss + yystacksize - 1 <= yyssp)
-#if !defined yyoverflow && !defined YYSTACK_RELOCATE
-    YYNOMEM;
-#else
-    {
-      /* Get the current used size of the three stacks, in elements.  */
-      YYPTRDIFF_T yysize = yyssp - yyss + 1;
-
-# if defined yyoverflow
-      {
-        /* Give user a chance to reallocate the stack.  Use copies of
-           these so that the &'s don't force the real ones into
-           memory.  */
-        yy_state_t *yyss1 = yyss;
-        YYSTYPE *yyvs1 = yyvs;
-
-        /* Each stack pointer address is followed by the size of the
-           data in use in that stack, in bytes.  This used to be a
-           conditional around just the two extra args, but that might
-           be undefined if yyoverflow is a macro.  */
-        yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * YYSIZEOF (*yyssp),
-                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
-                    &yystacksize);
-        yyss = yyss1;
-        yyvs = yyvs1;
-      }
-# else /* defined YYSTACK_RELOCATE */
-      /* Extend the stack our own way.  */
-      if (YYMAXDEPTH <= yystacksize)
-        YYNOMEM;
-      yystacksize *= 2;
-      if (YYMAXDEPTH < yystacksize)
-        yystacksize = YYMAXDEPTH;
-
-      {
-        yy_state_t *yyss1 = yyss;
-        union yyalloc *yyptr =
-          YY_CAST (union yyalloc *,
-                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
-        if (! yyptr)
-          YYNOMEM;
-        YYSTACK_RELOCATE (yyss_alloc, yyss);
-        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-#  undef YYSTACK_RELOCATE
-        if (yyss1 != yyssa)
-          YYSTACK_FREE (yyss1);
-      }
-# endif
-
-      yyssp = yyss + yysize - 1;
-      yyvsp = yyvs + yysize - 1;
-
-      YY_IGNORE_USELESS_CAST_BEGIN
-      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
-                  YY_CAST (long, yystacksize)));
-      YY_IGNORE_USELESS_CAST_END
-
-      if (yyss + yystacksize - 1 <= yyssp)
-        YYABORT;
-    }
-#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
-
-
-  if (yystate == YYFINAL)
-    YYACCEPT;
-
-  goto yybackup;
-
-
-/*-----------.
-| yybackup.  |
-`-----------*/
-yybackup:
-  /* Do appropriate processing given the current state.  Read a
-     lookahead token if we need one and don't already have one.  */
-
-  /* First try to decide what to do without reference to lookahead token.  */
-  yyn = yypact[yystate];
-  if (yypact_value_is_default (yyn))
-    goto yydefault;
-
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
-  if (yychar == YYEMPTY)
-    {
-      YYDPRINTF ((stderr, "Reading a token\n"));
-      yychar = yylex ();
-    }
-
-  if (yychar <= YYEOF)
-    {
-      yychar = YYEOF;
-      yytoken = YYSYMBOL_YYEOF;
-      YYDPRINTF ((stderr, "Now at end of input.\n"));
-    }
-  else if (yychar == YYerror)
-    {
-      /* The scanner already issued an error message, process directly
-         to error recovery.  But do not keep the error token as
-         lookahead, it is too special and may lead us to an endless
-         loop in error recovery. */
-      yychar = YYUNDEF;
-      yytoken = YYSYMBOL_YYerror;
-      goto yyerrlab1;
-    }
-  else
-    {
-      yytoken = YYTRANSLATE (yychar);
-      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
-    }
-
-  /* If the proper action on seeing token YYTOKEN is to reduce or to
-     detect an error, take that action.  */
-  yyn += yytoken;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
-    goto yydefault;
-  yyn = yytable[yyn];
-  if (yyn <= 0)
-    {
-      if (yytable_value_is_error (yyn))
-        goto yyerrlab;
-      yyn = -yyn;
-      goto yyreduce;
-    }
-
-  /* Count tokens shifted since error; after three, turn off error
-     status.  */
-  if (yyerrstatus)
-    yyerrstatus--;
-
-  /* Shift the lookahead token.  */
-  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-  yystate = yyn;
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-  goto yynewstate;
-
-
-/*-----------------------------------------------------------.
-| yydefault -- do the default action for the current state.  |
-`-----------------------------------------------------------*/
-yydefault:
-  yyn = yydefact[yystate];
-  if (yyn == 0)
-    goto yyerrlab;
-  goto yyreduce;
-
-
-/*-----------------------------.
-| yyreduce -- do a reduction.  |
-`-----------------------------*/
-yyreduce:
-  /* yyn is the number of a rule to reduce with.  */
-  yylen = yyr2[yyn];
-
-  /* If YYLEN is nonzero, implement the default value of the action:
-     '$$ = $1'.
-
-     Otherwise, the following line sets YYVAL to garbage.
-     This behavior is undocumented and Bison
-     users should not rely upon it.  Assigning to YYVAL
-     unconditionally makes the parser a bit smaller, and it avoids a
-     GCC warning that YYVAL may be used uninitialized.  */
-  yyval = yyvsp[1-yylen];
-
-
-  YY_REDUCE_PRINT (yyn);
-  switch (yyn)
-    {
-  case 2: /* primary_expression: INTEGER  */
-#line 339 "./config/loongarch-parse.y"
-                  {emit_const ((yyvsp[0].imm));}
-#line 1529 "config/loongarch-parse.c"
-    break;
-
-  case 3: /* primary_expression: IDENTIFIER  */
-#line 340 "./config/loongarch-parse.y"
-                     {emit_const_var ((yyvsp[0].c_str));}
-#line 1535 "config/loongarch-parse.c"
-    break;
-
-  case 5: /* primary_expression: '%' IDENTIFIER '(' IDENTIFIER addend ')'  */
-#line 342 "./config/loongarch-parse.y"
-                                                   {reloc ((yyvsp[-4].c_str), (yyvsp[-2].c_str), (yyvsp[-1].imm)); free ((yyvsp[-4].c_str)); free ((yyvsp[-2].c_str));}
-#line 1541 "config/loongarch-parse.c"
-    break;
-
-  case 6: /* primary_expression: '%' IDENTIFIER '(' INTEGER addend ')'  */
-#line 343 "./config/loongarch-parse.y"
-                                                {reloc ((yyvsp[-4].c_str), NULL, (yyvsp[-2].imm) + (yyvsp[-1].imm)); free ((yyvsp[-4].c_str));}
-#line 1547 "config/loongarch-parse.c"
-    break;
-
-  case 7: /* addend: addend '-' INTEGER  */
-#line 347 "./config/loongarch-parse.y"
-                             {(yyval.imm) -= (yyvsp[0].imm);}
-#line 1553 "config/loongarch-parse.c"
-    break;
-
-  case 8: /* addend: addend '+' INTEGER  */
-#line 348 "./config/loongarch-parse.y"
-                             {(yyval.imm) += (yyvsp[0].imm);}
-#line 1559 "config/loongarch-parse.c"
-    break;
-
-  case 9: /* addend: %empty  */
-#line 349 "./config/loongarch-parse.y"
-          {(yyval.imm) = 0;}
-#line 1565 "config/loongarch-parse.c"
-    break;
-
-  case 11: /* unary_expression: '+' unary_expression  */
-#line 354 "./config/loongarch-parse.y"
-                               {emit_unary ('+');}
-#line 1571 "config/loongarch-parse.c"
-    break;
-
-  case 12: /* unary_expression: '-' unary_expression  */
-#line 355 "./config/loongarch-parse.y"
-                               {emit_unary ('-');}
-#line 1577 "config/loongarch-parse.c"
-    break;
-
-  case 13: /* unary_expression: '~' unary_expression  */
-#line 356 "./config/loongarch-parse.y"
-                               {emit_unary ('~');}
-#line 1583 "config/loongarch-parse.c"
-    break;
-
-  case 14: /* unary_expression: '!' unary_expression  */
-#line 357 "./config/loongarch-parse.y"
-                               {emit_unary ('!');}
-#line 1589 "config/loongarch-parse.c"
-    break;
-
-  case 16: /* multiplicative_expression: multiplicative_expression '*' unary_expression  */
-#line 362 "./config/loongarch-parse.y"
-                                                         {emit_bin ('*');}
-#line 1595 "config/loongarch-parse.c"
-    break;
-
-  case 17: /* multiplicative_expression: multiplicative_expression '/' unary_expression  */
-#line 363 "./config/loongarch-parse.y"
-                                                         {emit_bin ('/');}
-#line 1601 "config/loongarch-parse.c"
-    break;
-
-  case 18: /* multiplicative_expression: multiplicative_expression '%' unary_expression  */
-#line 364 "./config/loongarch-parse.y"
-                                                         {emit_bin ('%');}
-#line 1607 "config/loongarch-parse.c"
-    break;
-
-  case 20: /* additive_expression: additive_expression '+' multiplicative_expression  */
-#line 369 "./config/loongarch-parse.y"
-                                                            {emit_bin ('+');}
-#line 1613 "config/loongarch-parse.c"
-    break;
-
-  case 21: /* additive_expression: additive_expression '-' multiplicative_expression  */
-#line 370 "./config/loongarch-parse.y"
-                                                            {emit_bin ('-');}
-#line 1619 "config/loongarch-parse.c"
-    break;
-
-  case 23: /* shift_expression: shift_expression LEFT_OP additive_expression  */
-#line 375 "./config/loongarch-parse.y"
-                                                       {emit_bin (LEFT_OP);}
-#line 1625 "config/loongarch-parse.c"
-    break;
-
-  case 24: /* shift_expression: shift_expression RIGHT_OP additive_expression  */
-#line 376 "./config/loongarch-parse.y"
-                                                        {emit_bin (RIGHT_OP);}
-#line 1631 "config/loongarch-parse.c"
-    break;
-
-  case 26: /* relational_expression: relational_expression '<' shift_expression  */
-#line 381 "./config/loongarch-parse.y"
-                                                     {emit_bin ('<');}
-#line 1637 "config/loongarch-parse.c"
-    break;
-
-  case 27: /* relational_expression: relational_expression '>' shift_expression  */
-#line 382 "./config/loongarch-parse.y"
-                                                     {emit_bin ('>');}
-#line 1643 "config/loongarch-parse.c"
-    break;
-
-  case 28: /* relational_expression: relational_expression LE_OP shift_expression  */
-#line 383 "./config/loongarch-parse.y"
-                                                       {emit_bin (LE_OP);}
-#line 1649 "config/loongarch-parse.c"
-    break;
-
-  case 29: /* relational_expression: relational_expression GE_OP shift_expression  */
-#line 384 "./config/loongarch-parse.y"
-                                                       {emit_bin (GE_OP);}
-#line 1655 "config/loongarch-parse.c"
-    break;
-
-  case 31: /* equality_expression: equality_expression EQ_OP relational_expression  */
-#line 389 "./config/loongarch-parse.y"
-                                                          {emit_bin (EQ_OP);}
-#line 1661 "config/loongarch-parse.c"
-    break;
-
-  case 32: /* equality_expression: equality_expression NE_OP relational_expression  */
-#line 390 "./config/loongarch-parse.y"
-                                                          {emit_bin (NE_OP);}
-#line 1667 "config/loongarch-parse.c"
-    break;
-
-  case 34: /* and_expression: and_expression '&' equality_expression  */
-#line 395 "./config/loongarch-parse.y"
-                                                 {emit_bin ('&');}
-#line 1673 "config/loongarch-parse.c"
-    break;
-
-  case 36: /* exclusive_or_expression: exclusive_or_expression '^' and_expression  */
-#line 400 "./config/loongarch-parse.y"
-                                                     {emit_bin ('^');}
-#line 1679 "config/loongarch-parse.c"
-    break;
-
-  case 38: /* inclusive_or_expression: inclusive_or_expression '|' exclusive_or_expression  */
-#line 405 "./config/loongarch-parse.y"
-                                                              {emit_bin ('|');}
-#line 1685 "config/loongarch-parse.c"
-    break;
-
-  case 40: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression  */
-#line 410 "./config/loongarch-parse.y"
-                                                                {emit_bin (AND_OP);}
-#line 1691 "config/loongarch-parse.c"
-    break;
-
-  case 42: /* logical_or_expression: logical_or_expression OR_OP logical_and_expression  */
-#line 415 "./config/loongarch-parse.y"
-                                                             {emit_bin (OR_OP);}
-#line 1697 "config/loongarch-parse.c"
-    break;
-
-  case 44: /* conditional_expression: logical_or_expression '?' expression ':' conditional_expression  */
-#line 420 "./config/loongarch-parse.y"
-                                                                          {emit_if_else ();}
-#line 1703 "config/loongarch-parse.c"
-    break;
-
-
-#line 1707 "config/loongarch-parse.c"
-
-      default: break;
-    }
-  /* User semantic actions sometimes alter yychar, and that requires
-     that yytoken be updated with the new translation.  We take the
-     approach of translating immediately before every use of yytoken.
-     One alternative is translating here after every semantic action,
-     but that translation would be missed if the semantic action invokes
-     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
-     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
-     incorrect destructor might then be invoked immediately.  In the
-     case of YYERROR or YYBACKUP, subsequent parser actions might lead
-     to an incorrect destructor call or verbose syntax error message
-     before the lookahead is translated.  */
-  YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
-
-  YYPOPSTACK (yylen);
-  yylen = 0;
-
-  *++yyvsp = yyval;
-
-  /* Now 'shift' the result of the reduction.  Determine what state
-     that goes to, based on the state we popped back to and the rule
-     number reduced by.  */
-  {
-    const int yylhs = yyr1[yyn] - YYNTOKENS;
-    const int yyi = yypgoto[yylhs] + *yyssp;
-    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
-               ? yytable[yyi]
-               : yydefgoto[yylhs]);
-  }
-
-  goto yynewstate;
-
-
-/*--------------------------------------.
-| yyerrlab -- here on detecting error.  |
-`--------------------------------------*/
-yyerrlab:
-  /* Make sure we have latest lookahead translation.  See comments at
-     user semantic actions for why this is necessary.  */
-  yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
-  /* If not already recovering from an error, report this error.  */
-  if (!yyerrstatus)
-    {
-      ++yynerrs;
-      yyerror (YY_("syntax error"));
-    }
-
-  if (yyerrstatus == 3)
-    {
-      /* If just tried and failed to reuse lookahead token after an
-         error, discard it.  */
-
-      if (yychar <= YYEOF)
-        {
-          /* Return failure if at end of input.  */
-          if (yychar == YYEOF)
-            YYABORT;
-        }
-      else
-        {
-          yydestruct ("Error: discarding",
-                      yytoken, &yylval);
-          yychar = YYEMPTY;
-        }
-    }
-
-  /* Else will try to reuse lookahead token after shifting the error
-     token.  */
-  goto yyerrlab1;
-
-
-/*---------------------------------------------------.
-| yyerrorlab -- error raised explicitly by YYERROR.  |
-`---------------------------------------------------*/
-yyerrorlab:
-  /* Pacify compilers when the user code never invokes YYERROR and the
-     label yyerrorlab therefore never appears in user code.  */
-  if (0)
-    YYERROR;
-  ++yynerrs;
-
-  /* Do not reclaim the symbols of the rule whose action triggered
-     this YYERROR.  */
-  YYPOPSTACK (yylen);
-  yylen = 0;
-  YY_STACK_PRINT (yyss, yyssp);
-  yystate = *yyssp;
-  goto yyerrlab1;
-
-
-/*-------------------------------------------------------------.
-| yyerrlab1 -- common code for both syntax error and YYERROR.  |
-`-------------------------------------------------------------*/
-yyerrlab1:
-  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
-
-  /* Pop stack until we find a state that shifts the error token.  */
-  for (;;)
-    {
-      yyn = yypact[yystate];
-      if (!yypact_value_is_default (yyn))
-        {
-          yyn += YYSYMBOL_YYerror;
-          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
-            {
-              yyn = yytable[yyn];
-              if (0 < yyn)
-                break;
-            }
-        }
-
-      /* Pop the current state because it cannot handle the error token.  */
-      if (yyssp == yyss)
-        YYABORT;
-
-
-      yydestruct ("Error: popping",
-                  YY_ACCESSING_SYMBOL (yystate), yyvsp);
-      YYPOPSTACK (1);
-      yystate = *yyssp;
-      YY_STACK_PRINT (yyss, yyssp);
-    }
-
-  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-  *++yyvsp = yylval;
-  YY_IGNORE_MAYBE_UNINITIALIZED_END
-
-
-  /* Shift the error token.  */
-  YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
-
-  yystate = yyn;
-  goto yynewstate;
-
-
-/*-------------------------------------.
-| yyacceptlab -- YYACCEPT comes here.  |
-`-------------------------------------*/
-yyacceptlab:
-  yyresult = 0;
-  goto yyreturnlab;
-
-
-/*-----------------------------------.
-| yyabortlab -- YYABORT comes here.  |
-`-----------------------------------*/
-yyabortlab:
-  yyresult = 1;
-  goto yyreturnlab;
-
-
-/*-----------------------------------------------------------.
-| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
-`-----------------------------------------------------------*/
-yyexhaustedlab:
-  yyerror (YY_("memory exhausted"));
-  yyresult = 2;
-  goto yyreturnlab;
-
-
-/*----------------------------------------------------------.
-| yyreturnlab -- parsing is finished, clean up and return.  |
-`----------------------------------------------------------*/
-yyreturnlab:
-  if (yychar != YYEMPTY)
-    {
-      /* Make sure we have latest lookahead translation.  See comments at
-         user semantic actions for why this is necessary.  */
-      yytoken = YYTRANSLATE (yychar);
-      yydestruct ("Cleanup: discarding lookahead",
-                  yytoken, &yylval);
-    }
-  /* Do not reclaim the symbols of the rule whose action triggered
-     this YYABORT or YYACCEPT.  */
-  YYPOPSTACK (yylen);
-  YY_STACK_PRINT (yyss, yyssp);
-  while (yyssp != yyss)
-    {
-      yydestruct ("Cleanup: popping",
-                  YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
-      YYPOPSTACK (1);
-    }
-#ifndef yyoverflow
-  if (yyss != yyssa)
-    YYSTACK_FREE (yyss);
-#endif
-
-  return yyresult;
-}
-
-#line 426 "./config/loongarch-parse.y"
-
-
-- 
2.33.0

