Home | History | Annotate | Line # | Download | only in config
m68k-parse.c revision 1.1.1.2
      1 /* A Bison parser, made by GNU Bison 3.8.2.  */
      2 
      3 /* Bison implementation for Yacc-like parsers in C
      4 
      5    Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
      6    Inc.
      7 
      8    This program is free software: you can redistribute it and/or modify
      9    it under the terms of the GNU General Public License as published by
     10    the Free Software Foundation, either version 3 of the License, or
     11    (at your option) any later version.
     12 
     13    This program is distributed in the hope that it will be useful,
     14    but WITHOUT ANY WARRANTY; without even the implied warranty of
     15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16    GNU General Public License for more details.
     17 
     18    You should have received a copy of the GNU General Public License
     19    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
     20 
     21 /* As a special exception, you may create a larger work that contains
     22    part or all of the Bison parser skeleton and distribute that work
     23    under terms of your choice, so long as that work isn't itself a
     24    parser generator using the skeleton or a modified version thereof
     25    as a parser skeleton.  Alternatively, if you modify or redistribute
     26    the parser skeleton itself, you may (at your option) remove this
     27    special exception, which will cause the skeleton and the resulting
     28    Bison output files to be licensed under the GNU General Public
     29    License without this special exception.
     30 
     31    This special exception was added by the Free Software Foundation in
     32    version 2.2 of Bison.  */
     33 
     34 /* C LALR(1) parser skeleton written by Richard Stallman, by
     35    simplifying the original so-called "semantic" parser.  */
     36 
     37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
     38    especially those whose name start with YY_ or yy_.  They are
     39    private implementation details that can be changed or removed.  */
     40 
     41 /* All symbols defined below should begin with yy or YY, to avoid
     42    infringing on user name space.  This should be done even for local
     43    variables, as they might otherwise be expanded by user macros.
     44    There are some unavoidable exceptions within include files to
     45    define necessary library symbols; they are noted "INFRINGES ON
     46    USER NAME SPACE" below.  */
     47 
     48 /* Identify Bison output, and Bison version.  */
     49 #define YYBISON 30802
     50 
     51 /* Bison version string.  */
     52 #define YYBISON_VERSION "3.8.2"
     53 
     54 /* Skeleton name.  */
     55 #define YYSKELETON_NAME "yacc.c"
     56 
     57 /* Pure parsers.  */
     58 #define YYPURE 0
     59 
     60 /* Push parsers.  */
     61 #define YYPUSH 0
     62 
     63 /* Pull parsers.  */
     64 #define YYPULL 1
     65 
     66 
     67 
     68 
     69 /* First part of user prologue.  */
     70 #line 27 "./config/m68k-parse.y"
     71 
     72 
     73 #include "as.h"
     74 #include "tc-m68k.h"
     75 #include "m68k-parse.h"
     76 #include "safe-ctype.h"
     77 
     78 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror,
     79    etc), as well as gratuitously global symbol names If other parser
     80    generators (bison, byacc, etc) produce additional global names that
     81    conflict at link time, then those parser generators need to be
     82    fixed instead of adding those names to this list.  */
     83 
     84 #define	yymaxdepth m68k_maxdepth
     85 #define	yyparse	m68k_parse
     86 #define	yylex	m68k_lex
     87 #define	yyerror	m68k_error
     88 #define	yylval	m68k_lval
     89 #define	yychar	m68k_char
     90 #define	yydebug	m68k_debug
     91 #define	yypact	m68k_pact
     92 #define	yyr1	m68k_r1
     93 #define	yyr2	m68k_r2
     94 #define	yydef	m68k_def
     95 #define	yychk	m68k_chk
     96 #define	yypgo	m68k_pgo
     97 #define	yyact	m68k_act
     98 #define	yyexca	m68k_exca
     99 #define yyerrflag m68k_errflag
    100 #define yynerrs	m68k_nerrs
    101 #define	yyps	m68k_ps
    102 #define	yypv	m68k_pv
    103 #define	yys	m68k_s
    104 #define	yy_yys	m68k_yys
    105 #define	yystate	m68k_state
    106 #define	yytmp	m68k_tmp
    107 #define	yyv	m68k_v
    108 #define	yy_yyv	m68k_yyv
    109 #define	yyval	m68k_val
    110 #define	yylloc	m68k_lloc
    111 #define yyreds	m68k_reds		/* With YYDEBUG defined */
    112 #define yytoks	m68k_toks		/* With YYDEBUG defined */
    113 #define yylhs	m68k_yylhs
    114 #define yylen	m68k_yylen
    115 #define yydefred m68k_yydefred
    116 #define yydgoto	m68k_yydgoto
    117 #define yysindex m68k_yysindex
    118 #define yyrindex m68k_yyrindex
    119 #define yygindex m68k_yygindex
    120 #define yytable	 m68k_yytable
    121 #define yycheck	 m68k_yycheck
    122 
    123 #ifndef YYDEBUG
    124 #define YYDEBUG 1
    125 #endif
    126 
    127 /* Internal functions.  */
    128 
    129 static enum m68k_register m68k_reg_parse (char **);
    130 static int yylex (void);
    131 static void yyerror (const char *);
    132 
    133 /* The parser sets fields pointed to by this global variable.  */
    134 static struct m68k_op *op;
    135 
    136 
    137 #line 138 "config/m68k-parse.c"
    138 
    139 # ifndef YY_CAST
    140 #  ifdef __cplusplus
    141 #   define YY_CAST(Type, Val) static_cast<Type> (Val)
    142 #   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
    143 #  else
    144 #   define YY_CAST(Type, Val) ((Type) (Val))
    145 #   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
    146 #  endif
    147 # endif
    148 # ifndef YY_NULLPTR
    149 #  if defined __cplusplus
    150 #   if 201103L <= __cplusplus
    151 #    define YY_NULLPTR nullptr
    152 #   else
    153 #    define YY_NULLPTR 0
    154 #   endif
    155 #  else
    156 #   define YY_NULLPTR ((void*)0)
    157 #  endif
    158 # endif
    159 
    160 
    161 /* Debug traces.  */
    162 #ifndef YYDEBUG
    163 # define YYDEBUG 0
    164 #endif
    165 #if YYDEBUG
    166 extern int yydebug;
    167 #endif
    168 
    169 /* Token kinds.  */
    170 #ifndef YYTOKENTYPE
    171 # define YYTOKENTYPE
    172   enum yytokentype
    173   {
    174     YYEMPTY = -2,
    175     YYEOF = 0,                     /* "end of file"  */
    176     YYerror = 256,                 /* error  */
    177     YYUNDEF = 257,                 /* "invalid token"  */
    178     DR = 258,                      /* DR  */
    179     AR = 259,                      /* AR  */
    180     FPR = 260,                     /* FPR  */
    181     FPCR = 261,                    /* FPCR  */
    182     LPC = 262,                     /* LPC  */
    183     ZAR = 263,                     /* ZAR  */
    184     ZDR = 264,                     /* ZDR  */
    185     LZPC = 265,                    /* LZPC  */
    186     CREG = 266,                    /* CREG  */
    187     INDEXREG = 267,                /* INDEXREG  */
    188     EXPR = 268                     /* EXPR  */
    189   };
    190   typedef enum yytokentype yytoken_kind_t;
    191 #endif
    192 /* Token kinds.  */
    193 #define YYEMPTY -2
    194 #define YYEOF 0
    195 #define YYerror 256
    196 #define YYUNDEF 257
    197 #define DR 258
    198 #define AR 259
    199 #define FPR 260
    200 #define FPCR 261
    201 #define LPC 262
    202 #define ZAR 263
    203 #define ZDR 264
    204 #define LZPC 265
    205 #define CREG 266
    206 #define INDEXREG 267
    207 #define EXPR 268
    208 
    209 /* Value type.  */
    210 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
    211 union YYSTYPE
    212 {
    213 #line 95 "./config/m68k-parse.y"
    214 
    215   struct m68k_indexreg indexreg;
    216   enum m68k_register reg;
    217   struct m68k_exp exp;
    218   unsigned long mask;
    219   int onereg;
    220   int trailing_ampersand;
    221 
    222 #line 223 "config/m68k-parse.c"
    223 
    224 };
    225 typedef union YYSTYPE YYSTYPE;
    226 # define YYSTYPE_IS_TRIVIAL 1
    227 # define YYSTYPE_IS_DECLARED 1
    228 #endif
    229 
    230 
    231 extern YYSTYPE yylval;
    232 
    233 
    234 int yyparse (void);
    235 
    236 
    237 
    238 /* Symbol kind.  */
    239 enum yysymbol_kind_t
    240 {
    241   YYSYMBOL_YYEMPTY = -2,
    242   YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
    243   YYSYMBOL_YYerror = 1,                    /* error  */
    244   YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
    245   YYSYMBOL_DR = 3,                         /* DR  */
    246   YYSYMBOL_AR = 4,                         /* AR  */
    247   YYSYMBOL_FPR = 5,                        /* FPR  */
    248   YYSYMBOL_FPCR = 6,                       /* FPCR  */
    249   YYSYMBOL_LPC = 7,                        /* LPC  */
    250   YYSYMBOL_ZAR = 8,                        /* ZAR  */
    251   YYSYMBOL_ZDR = 9,                        /* ZDR  */
    252   YYSYMBOL_LZPC = 10,                      /* LZPC  */
    253   YYSYMBOL_CREG = 11,                      /* CREG  */
    254   YYSYMBOL_INDEXREG = 12,                  /* INDEXREG  */
    255   YYSYMBOL_EXPR = 13,                      /* EXPR  */
    256   YYSYMBOL_14_ = 14,                       /* '&'  */
    257   YYSYMBOL_15_ = 15,                       /* '<'  */
    258   YYSYMBOL_16_ = 16,                       /* '>'  */
    259   YYSYMBOL_17_ = 17,                       /* '#'  */
    260   YYSYMBOL_18_ = 18,                       /* '('  */
    261   YYSYMBOL_19_ = 19,                       /* ')'  */
    262   YYSYMBOL_20_ = 20,                       /* '+'  */
    263   YYSYMBOL_21_ = 21,                       /* '-'  */
    264   YYSYMBOL_22_ = 22,                       /* ','  */
    265   YYSYMBOL_23_ = 23,                       /* '['  */
    266   YYSYMBOL_24_ = 24,                       /* ']'  */
    267   YYSYMBOL_25_ = 25,                       /* '@'  */
    268   YYSYMBOL_26_ = 26,                       /* '/'  */
    269   YYSYMBOL_YYACCEPT = 27,                  /* $accept  */
    270   YYSYMBOL_operand = 28,                   /* operand  */
    271   YYSYMBOL_optional_ampersand = 29,        /* optional_ampersand  */
    272   YYSYMBOL_generic_operand = 30,           /* generic_operand  */
    273   YYSYMBOL_motorola_operand = 31,          /* motorola_operand  */
    274   YYSYMBOL_mit_operand = 32,               /* mit_operand  */
    275   YYSYMBOL_zireg = 33,                     /* zireg  */
    276   YYSYMBOL_zdireg = 34,                    /* zdireg  */
    277   YYSYMBOL_zadr = 35,                      /* zadr  */
    278   YYSYMBOL_zdr = 36,                       /* zdr  */
    279   YYSYMBOL_apc = 37,                       /* apc  */
    280   YYSYMBOL_zapc = 38,                      /* zapc  */
    281   YYSYMBOL_optzapc = 39,                   /* optzapc  */
    282   YYSYMBOL_zpc = 40,                       /* zpc  */
    283   YYSYMBOL_optczapc = 41,                  /* optczapc  */
    284   YYSYMBOL_optcexpr = 42,                  /* optcexpr  */
    285   YYSYMBOL_optexprc = 43,                  /* optexprc  */
    286   YYSYMBOL_reglist = 44,                   /* reglist  */
    287   YYSYMBOL_ireglist = 45,                  /* ireglist  */
    288   YYSYMBOL_reglistpair = 46,               /* reglistpair  */
    289   YYSYMBOL_reglistreg = 47                 /* reglistreg  */
    290 };
    291 typedef enum yysymbol_kind_t yysymbol_kind_t;
    292 
    293 
    294 
    295 
    296 #ifdef short
    297 # undef short
    298 #endif
    299 
    300 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
    301    <limits.h> and (if available) <stdint.h> are included
    302    so that the code can choose integer types of a good width.  */
    303 
    304 #ifndef __PTRDIFF_MAX__
    305 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
    306 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
    307 #  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
    308 #  define YY_STDINT_H
    309 # endif
    310 #endif
    311 
    312 /* Narrow types that promote to a signed type and that can represent a
    313    signed or unsigned integer of at least N bits.  In tables they can
    314    save space and decrease cache pressure.  Promoting to a signed type
    315    helps avoid bugs in integer arithmetic.  */
    316 
    317 #ifdef __INT_LEAST8_MAX__
    318 typedef __INT_LEAST8_TYPE__ yytype_int8;
    319 #elif defined YY_STDINT_H
    320 typedef int_least8_t yytype_int8;
    321 #else
    322 typedef signed char yytype_int8;
    323 #endif
    324 
    325 #ifdef __INT_LEAST16_MAX__
    326 typedef __INT_LEAST16_TYPE__ yytype_int16;
    327 #elif defined YY_STDINT_H
    328 typedef int_least16_t yytype_int16;
    329 #else
    330 typedef short yytype_int16;
    331 #endif
    332 
    333 /* Work around bug in HP-UX 11.23, which defines these macros
    334    incorrectly for preprocessor constants.  This workaround can likely
    335    be removed in 2023, as HPE has promised support for HP-UX 11.23
    336    (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
    337    <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>.  */
    338 #ifdef __hpux
    339 # undef UINT_LEAST8_MAX
    340 # undef UINT_LEAST16_MAX
    341 # define UINT_LEAST8_MAX 255
    342 # define UINT_LEAST16_MAX 65535
    343 #endif
    344 
    345 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
    346 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
    347 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
    348        && UINT_LEAST8_MAX <= INT_MAX)
    349 typedef uint_least8_t yytype_uint8;
    350 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
    351 typedef unsigned char yytype_uint8;
    352 #else
    353 typedef short yytype_uint8;
    354 #endif
    355 
    356 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
    357 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
    358 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
    359        && UINT_LEAST16_MAX <= INT_MAX)
    360 typedef uint_least16_t yytype_uint16;
    361 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
    362 typedef unsigned short yytype_uint16;
    363 #else
    364 typedef int yytype_uint16;
    365 #endif
    366 
    367 #ifndef YYPTRDIFF_T
    368 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
    369 #  define YYPTRDIFF_T __PTRDIFF_TYPE__
    370 #  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
    371 # elif defined PTRDIFF_MAX
    372 #  ifndef ptrdiff_t
    373 #   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    374 #  endif
    375 #  define YYPTRDIFF_T ptrdiff_t
    376 #  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
    377 # else
    378 #  define YYPTRDIFF_T long
    379 #  define YYPTRDIFF_MAXIMUM LONG_MAX
    380 # endif
    381 #endif
    382 
    383 #ifndef YYSIZE_T
    384 # ifdef __SIZE_TYPE__
    385 #  define YYSIZE_T __SIZE_TYPE__
    386 # elif defined size_t
    387 #  define YYSIZE_T size_t
    388 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
    389 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
    390 #  define YYSIZE_T size_t
    391 # else
    392 #  define YYSIZE_T unsigned
    393 # endif
    394 #endif
    395 
    396 #define YYSIZE_MAXIMUM                                  \
    397   YY_CAST (YYPTRDIFF_T,                                 \
    398            (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
    399             ? YYPTRDIFF_MAXIMUM                         \
    400             : YY_CAST (YYSIZE_T, -1)))
    401 
    402 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
    403 
    404 
    405 /* Stored state numbers (used for stacks). */
    406 typedef yytype_uint8 yy_state_t;
    407 
    408 /* State numbers in computations.  */
    409 typedef int yy_state_fast_t;
    410 
    411 #ifndef YY_
    412 # if defined YYENABLE_NLS && YYENABLE_NLS
    413 #  if ENABLE_NLS
    414 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
    415 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
    416 #  endif
    417 # endif
    418 # ifndef YY_
    419 #  define YY_(Msgid) Msgid
    420 # endif
    421 #endif
    422 
    423 
    424 #ifndef YY_ATTRIBUTE_PURE
    425 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
    426 #  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
    427 # else
    428 #  define YY_ATTRIBUTE_PURE
    429 # endif
    430 #endif
    431 
    432 #ifndef YY_ATTRIBUTE_UNUSED
    433 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
    434 #  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
    435 # else
    436 #  define YY_ATTRIBUTE_UNUSED
    437 # endif
    438 #endif
    439 
    440 /* Suppress unused-variable warnings by "using" E.  */
    441 #if ! defined lint || defined __GNUC__
    442 # define YY_USE(E) ((void) (E))
    443 #else
    444 # define YY_USE(E) /* empty */
    445 #endif
    446 
    447 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
    448 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
    449 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
    450 #  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
    451     _Pragma ("GCC diagnostic push")                                     \
    452     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
    453 # else
    454 #  define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                           \
    455     _Pragma ("GCC diagnostic push")                                     \
    456     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
    457     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
    458 # endif
    459 # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
    460     _Pragma ("GCC diagnostic pop")
    461 #else
    462 # define YY_INITIAL_VALUE(Value) Value
    463 #endif
    464 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    465 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    466 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
    467 #endif
    468 #ifndef YY_INITIAL_VALUE
    469 # define YY_INITIAL_VALUE(Value) /* Nothing. */
    470 #endif
    471 
    472 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
    473 # define YY_IGNORE_USELESS_CAST_BEGIN                          \
    474     _Pragma ("GCC diagnostic push")                            \
    475     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
    476 # define YY_IGNORE_USELESS_CAST_END            \
    477     _Pragma ("GCC diagnostic pop")
    478 #endif
    479 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
    480 # define YY_IGNORE_USELESS_CAST_BEGIN
    481 # define YY_IGNORE_USELESS_CAST_END
    482 #endif
    483 
    484 
    485 #define YY_ASSERT(E) ((void) (0 && (E)))
    486 
    487 #if !defined yyoverflow
    488 
    489 /* The parser invokes alloca or malloc; define the necessary symbols.  */
    490 
    491 # ifdef YYSTACK_USE_ALLOCA
    492 #  if YYSTACK_USE_ALLOCA
    493 #   ifdef __GNUC__
    494 #    define YYSTACK_ALLOC __builtin_alloca
    495 #   elif defined __BUILTIN_VA_ARG_INCR
    496 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
    497 #   elif defined _AIX
    498 #    define YYSTACK_ALLOC __alloca
    499 #   elif defined _MSC_VER
    500 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
    501 #    define alloca _alloca
    502 #   else
    503 #    define YYSTACK_ALLOC alloca
    504 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
    505 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    506       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
    507 #     ifndef EXIT_SUCCESS
    508 #      define EXIT_SUCCESS 0
    509 #     endif
    510 #    endif
    511 #   endif
    512 #  endif
    513 # endif
    514 
    515 # ifdef YYSTACK_ALLOC
    516    /* Pacify GCC's 'empty if-body' warning.  */
    517 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
    518 #  ifndef YYSTACK_ALLOC_MAXIMUM
    519     /* The OS might guarantee only one guard page at the bottom of the stack,
    520        and a page size can be as small as 4096 bytes.  So we cannot safely
    521        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
    522        to allow for a few compiler-allocated temporary stack slots.  */
    523 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
    524 #  endif
    525 # else
    526 #  define YYSTACK_ALLOC YYMALLOC
    527 #  define YYSTACK_FREE YYFREE
    528 #  ifndef YYSTACK_ALLOC_MAXIMUM
    529 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
    530 #  endif
    531 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
    532        && ! ((defined YYMALLOC || defined malloc) \
    533              && (defined YYFREE || defined free)))
    534 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
    535 #   ifndef EXIT_SUCCESS
    536 #    define EXIT_SUCCESS 0
    537 #   endif
    538 #  endif
    539 #  ifndef YYMALLOC
    540 #   define YYMALLOC malloc
    541 #   if ! defined malloc && ! defined EXIT_SUCCESS
    542 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
    543 #   endif
    544 #  endif
    545 #  ifndef YYFREE
    546 #   define YYFREE free
    547 #   if ! defined free && ! defined EXIT_SUCCESS
    548 void free (void *); /* INFRINGES ON USER NAME SPACE */
    549 #   endif
    550 #  endif
    551 # endif
    552 #endif /* !defined yyoverflow */
    553 
    554 #if (! defined yyoverflow \
    555      && (! defined __cplusplus \
    556          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
    557 
    558 /* A type that is properly aligned for any stack member.  */
    559 union yyalloc
    560 {
    561   yy_state_t yyss_alloc;
    562   YYSTYPE yyvs_alloc;
    563 };
    564 
    565 /* The size of the maximum gap between one aligned stack and the next.  */
    566 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
    567 
    568 /* The size of an array large to enough to hold all stacks, each with
    569    N elements.  */
    570 # define YYSTACK_BYTES(N) \
    571      ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
    572       + YYSTACK_GAP_MAXIMUM)
    573 
    574 # define YYCOPY_NEEDED 1
    575 
    576 /* Relocate STACK from its old location to the new one.  The
    577    local variables YYSIZE and YYSTACKSIZE give the old and new number of
    578    elements in the stack, and YYPTR gives the new location of the
    579    stack.  Advance YYPTR to a properly aligned location for the next
    580    stack.  */
    581 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
    582     do                                                                  \
    583       {                                                                 \
    584         YYPTRDIFF_T yynewbytes;                                         \
    585         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
    586         Stack = &yyptr->Stack_alloc;                                    \
    587         yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
    588         yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
    589       }                                                                 \
    590     while (0)
    591 
    592 #endif
    593 
    594 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
    595 /* Copy COUNT objects from SRC to DST.  The source and destination do
    596    not overlap.  */
    597 # ifndef YYCOPY
    598 #  if defined __GNUC__ && 1 < __GNUC__
    599 #   define YYCOPY(Dst, Src, Count) \
    600       __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
    601 #  else
    602 #   define YYCOPY(Dst, Src, Count)              \
    603       do                                        \
    604         {                                       \
    605           YYPTRDIFF_T yyi;                      \
    606           for (yyi = 0; yyi < (Count); yyi++)   \
    607             (Dst)[yyi] = (Src)[yyi];            \
    608         }                                       \
    609       while (0)
    610 #  endif
    611 # endif
    612 #endif /* !YYCOPY_NEEDED */
    613 
    614 /* YYFINAL -- State number of the termination state.  */
    615 #define YYFINAL  44
    616 /* YYLAST -- Last index in YYTABLE.  */
    617 #define YYLAST   215
    618 
    619 /* YYNTOKENS -- Number of terminals.  */
    620 #define YYNTOKENS  27
    621 /* YYNNTS -- Number of nonterminals.  */
    622 #define YYNNTS  21
    623 /* YYNRULES -- Number of rules.  */
    624 #define YYNRULES  89
    625 /* YYNSTATES -- Number of states.  */
    626 #define YYNSTATES  180
    627 
    628 /* YYMAXUTOK -- Last valid token kind.  */
    629 #define YYMAXUTOK   268
    630 
    631 
    632 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
    633    as returned by yylex, with out-of-bounds checking.  */
    634 #define YYTRANSLATE(YYX)                                \
    635   (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
    636    ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
    637    : YYSYMBOL_YYUNDEF)
    638 
    639 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
    640    as returned by yylex.  */
    641 static const yytype_int8 yytranslate[] =
    642 {
    643        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    644        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    645        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    646        2,     2,     2,     2,     2,    17,     2,     2,    14,     2,
    647       18,    19,     2,    20,    22,    21,     2,    26,     2,     2,
    648        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    649       15,     2,    16,     2,    25,     2,     2,     2,     2,     2,
    650        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    651        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    652        2,    23,     2,    24,     2,     2,     2,     2,     2,     2,
    653        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    654        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    655        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    656        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    657        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    658        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    659        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    660        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    661        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    662        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    663        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    664        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    665        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    666        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    667        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    668        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
    669        5,     6,     7,     8,     9,    10,    11,    12,    13
    670 };
    671 
    672 #if YYDEBUG
    673 /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
    674 static const yytype_int16 yyrline[] =
    675 {
    676        0,   120,   120,   121,   125,   134,   135,   142,   147,   152,
    677      157,   162,   167,   172,   177,   182,   187,   192,   205,   210,
    678      215,   220,   230,   240,   250,   255,   260,   265,   272,   283,
    679      290,   296,   303,   309,   320,   330,   337,   343,   351,   358,
    680      365,   371,   379,   386,   398,   409,   422,   430,   438,   446,
    681      456,   463,   471,   478,   492,   493,   506,   507,   519,   520,
    682      521,   527,   528,   534,   535,   542,   543,   544,   551,   554,
    683      560,   561,   568,   571,   581,   585,   595,   599,   608,   609,
    684      613,   625,   629,   630,   634,   641,   651,   655,   659,   663
    685 };
    686 #endif
    687 
    688 /** Accessing symbol of state STATE.  */
    689 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
    690 
    691 #if YYDEBUG || 0
    692 /* The user-facing name of the symbol whose (internal) number is
    693    YYSYMBOL.  No bounds checking.  */
    694 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
    695 
    696 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    697    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
    698 static const char *const yytname[] =
    699 {
    700   "\"end of file\"", "error", "\"invalid token\"", "DR", "AR", "FPR",
    701   "FPCR", "LPC", "ZAR", "ZDR", "LZPC", "CREG", "INDEXREG", "EXPR", "'&'",
    702   "'<'", "'>'", "'#'", "'('", "')'", "'+'", "'-'", "','", "'['", "']'",
    703   "'@'", "'/'", "$accept", "operand", "optional_ampersand",
    704   "generic_operand", "motorola_operand", "mit_operand", "zireg", "zdireg",
    705   "zadr", "zdr", "apc", "zapc", "optzapc", "zpc", "optczapc", "optcexpr",
    706   "optexprc", "reglist", "ireglist", "reglistpair", "reglistreg", YY_NULLPTR
    707 };
    708 
    709 static const char *
    710 yysymbol_name (yysymbol_kind_t yysymbol)
    711 {
    712   return yytname[yysymbol];
    713 }
    714 #endif
    715 
    716 #define YYPACT_NINF (-98)
    717 
    718 #define yypact_value_is_default(Yyn) \
    719   ((Yyn) == YYPACT_NINF)
    720 
    721 #define YYTABLE_NINF (-64)
    722 
    723 #define yytable_value_is_error(Yyn) \
    724   0
    725 
    726 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    727    STATE-NUM.  */
    728 static const yytype_int16 yypact[] =
    729 {
    730       89,    14,     9,    31,    35,   -98,   -98,   -98,   -98,     0,
    731       36,    42,    28,    56,    63,    67,    90,   -98,    75,    75,
    732      -98,   -98,    86,   -98,    96,   -15,   123,   -98,   -98,   -98,
    733      -98,   -98,    97,   115,   119,   -98,   120,   -98,   122,    16,
    734      126,   -98,   127,   157,   -98,   -98,   -98,   -98,    19,   154,
    735      154,   154,   -98,   140,    29,   144,   -98,   -98,   -98,   123,
    736      141,    99,    18,    70,   147,   105,   148,   152,   -98,   -98,
    737      -98,   -98,   -98,   -98,   -98,   142,   -13,   -98,   -98,   146,
    738      150,   -98,   133,   -98,   140,    60,   146,   149,   133,   153,
    739      140,   151,   -98,   -98,   -98,   -98,   -98,   -98,   -98,   155,
    740      158,   -98,   -98,   159,   -98,    62,   143,   154,   154,   -98,
    741      160,   161,   162,   -98,   133,   163,   164,   165,   166,   116,
    742      168,   167,   -98,   -98,   -98,   -98,   169,   -98,   173,   -98,
    743      -98,   -98,   -98,   -98,   174,   176,   133,   116,   177,   175,
    744      175,   -98,   175,   -98,   175,   170,   178,   -98,   -98,   180,
    745      181,   175,   -98,   171,   179,   182,   183,   187,   186,   189,
    746      175,   175,   190,   -98,   -98,   -98,   -98,    79,   143,   195,
    747      191,   192,   -98,   -98,   193,   194,   -98,   -98,   -98,   -98
    748 };
    749 
    750 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
    751    Performed when YYTABLE does not specify something else to do.  Zero
    752    means the default is an error.  */
    753 static const yytype_int8 yydefact[] =
    754 {
    755       68,    86,    87,    88,    89,    64,    67,    66,    13,    14,
    756        0,     0,     0,     0,     0,     0,     0,     2,     5,     5,
    757       65,    69,     0,    17,    78,     0,     0,    16,     7,     8,
    758       15,    61,    63,    64,    67,    62,    66,    56,     0,    76,
    759       72,    57,     0,     0,     1,     6,     3,     4,    46,     0,
    760        0,     0,    63,    72,     0,    18,    24,    25,    26,     0,
    761       72,     0,     0,     0,     0,     0,     0,    76,    47,    48,
    762       86,    87,    88,    89,    79,    82,    81,    85,    80,     0,
    763        0,    23,     0,    19,    72,     0,    77,     0,     0,    74,
    764       72,     0,    73,    36,    59,    70,    60,    71,    54,     0,
    765        0,    55,    58,     0,    20,     0,     0,     0,     0,    35,
    766        0,     0,     0,    21,     0,    73,    74,     0,     0,     0,
    767        0,     0,    30,    22,    32,    34,    49,    77,     0,    83,
    768       84,    31,    33,    29,     0,     0,     0,     0,     0,    74,
    769       74,    75,    74,    40,    74,     0,    50,    27,    28,     0,
    770        0,    74,    38,     0,     0,     0,     0,     0,    76,     0,
    771       74,    74,     0,    42,    44,    39,    45,     0,     0,     0,
    772        0,     0,    37,    52,     0,     0,    41,    43,    51,    53
    773 };
    774 
    775 /* YYPGOTO[NTERM-NUM].  */
    776 static const yytype_int16 yypgoto[] =
    777 {
    778      -98,   -98,   196,   -98,   -98,   -98,   -81,     6,   -98,    -9,
    779      -98,     2,   -98,   -78,   -38,   -97,   -67,   -98,   -48,   172,
    780       12
    781 };
    782 
    783 /* YYDEFGOTO[NTERM-NUM].  */
    784 static const yytype_int8 yydefgoto[] =
    785 {
    786        0,    16,    46,    17,    18,    19,   100,    40,   101,   102,
    787       20,    92,    22,   103,    64,   120,    62,    23,    74,    75,
    788       76
    789 };
    790 
    791 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
    792    positive, shift that token.  If negative, reduce the rule whose
    793    number is the opposite.  If YYTABLE_NINF, syntax error.  */
    794 static const yytype_int16 yytable[] =
    795 {
    796      106,   110,    21,    78,   111,    41,    50,   117,    50,   -10,
    797      118,    51,    25,   108,    -9,    80,    42,    41,    26,   138,
    798       52,    31,    87,     5,     6,   128,     7,    35,    54,    60,
    799       37,   -11,    53,   134,   -63,   -12,   135,    67,   142,    68,
    800       69,    61,   154,   155,    29,   156,   112,   157,    81,    27,
    801       41,    82,   121,    41,   162,   149,   151,    28,   150,   129,
    802      130,    85,    77,   170,   171,    84,    31,    32,    90,    30,
    803       33,    34,    35,    36,    52,    37,    38,     5,     6,   113,
    804        7,   126,   114,    91,   127,    43,    39,   174,   115,    45,
    805       44,   168,     1,     2,     3,     4,     5,     6,   173,     7,
    806        8,   127,     9,    10,    11,    12,    13,    14,    31,    94,
    807       15,    48,    95,    96,    35,    97,    55,    98,    99,    31,
    808       94,    88,    49,    89,    96,    35,    31,    52,    98,   141,
    809        5,     6,    35,     7,    56,    37,    31,    94,    57,    58,
    810       95,    96,    35,    97,    59,    98,    31,    94,    63,    65,
    811       52,    96,    35,     5,     6,    98,     7,    70,    71,    72,
    812       73,    66,    79,    86,    83,   105,    93,   104,   107,   109,
    813      122,     0,    24,   116,   123,   119,     0,   124,   125,   131,
    814      132,   133,     0,     0,   141,   136,   137,   143,   158,   139,
    815      140,   144,   146,   147,   145,   148,   152,   153,   163,   167,
    816        0,   164,   165,   159,   160,   161,   166,   169,   175,   172,
    817      176,   177,   178,   179,     0,    47
    818 };
    819 
    820 static const yytype_int16 yycheck[] =
    821 {
    822       67,    82,     0,    51,    82,    14,    21,    88,    21,     0,
    823       88,    26,     0,    26,     0,    53,    14,    26,    18,   116,
    824        4,     3,    60,     7,     8,   106,    10,     9,    26,    13,
    825       12,     0,    26,   114,    25,     0,   114,    18,   119,    20,
    826       21,    39,   139,   140,    16,   142,    84,   144,    19,    13,
    827       59,    22,    90,    62,   151,   136,   137,    15,   136,   107,
    828      108,    59,    50,   160,   161,    59,     3,     4,    62,    13,
    829        7,     8,     9,    10,     4,    12,    13,     7,     8,    19,
    830       10,    19,    22,    13,    22,    18,    23,   168,    86,    14,
    831        0,   158,     3,     4,     5,     6,     7,     8,    19,    10,
    832       11,    22,    13,    14,    15,    16,    17,    18,     3,     4,
    833       21,    25,     7,     8,     9,    10,    19,    12,    13,     3,
    834        4,    22,    26,    24,     8,     9,     3,     4,    12,    13,
    835        7,     8,     9,    10,    19,    12,     3,     4,    19,    19,
    836        7,     8,     9,    10,    22,    12,     3,     4,    22,    22,
    837        4,     8,     9,     7,     8,    12,    10,     3,     4,     5,
    838        6,     4,    22,    22,    20,    13,    19,    19,    26,    19,
    839       19,    -1,     0,    24,    19,    22,    -1,    19,    19,    19,
    840       19,    19,    -1,    -1,    13,    22,    22,    19,    18,    24,
    841       24,    24,    19,    19,    25,    19,    19,    22,    19,    13,
    842       -1,    19,    19,    25,    24,    24,    19,    18,    13,    19,
    843       19,    19,    19,    19,    -1,    19
    844 };
    845 
    846 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
    847    state STATE-NUM.  */
    848 static const yytype_int8 yystos[] =
    849 {
    850        0,     3,     4,     5,     6,     7,     8,    10,    11,    13,
    851       14,    15,    16,    17,    18,    21,    28,    30,    31,    32,
    852       37,    38,    39,    44,    46,    47,    18,    13,    15,    16,
    853       13,     3,     4,     7,     8,     9,    10,    12,    13,    23,
    854       34,    36,    38,    18,     0,    14,    29,    29,    25,    26,
    855       21,    26,     4,    34,    38,    19,    19,    19,    19,    22,
    856       13,    38,    43,    22,    41,    22,     4,    18,    20,    21,
    857        3,     4,     5,     6,    45,    46,    47,    47,    45,    22,
    858       41,    19,    22,    20,    34,    38,    22,    41,    22,    24,
    859       34,    13,    38,    19,     4,     7,     8,    10,    12,    13,
    860       33,    35,    36,    40,    19,    13,    43,    26,    26,    19,
    861       33,    40,    41,    19,    22,    38,    24,    33,    40,    22,
    862       42,    41,    19,    19,    19,    19,    19,    22,    33,    45,
    863       45,    19,    19,    19,    33,    40,    22,    22,    42,    24,
    864       24,    13,    33,    19,    24,    25,    19,    19,    19,    33,
    865       40,    33,    19,    22,    42,    42,    42,    42,    18,    25,
    866       24,    24,    42,    19,    19,    19,    19,    13,    43,    18,
    867       42,    42,    19,    19,    33,    13,    19,    19,    19,    19
    868 };
    869 
    870 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
    871 static const yytype_int8 yyr1[] =
    872 {
    873        0,    27,    28,    28,    28,    29,    29,    30,    30,    30,
    874       30,    30,    30,    30,    30,    30,    30,    30,    31,    31,
    875       31,    31,    31,    31,    31,    31,    31,    31,    31,    31,
    876       31,    31,    31,    31,    31,    31,    31,    31,    31,    31,
    877       31,    31,    31,    31,    31,    31,    32,    32,    32,    32,
    878       32,    32,    32,    32,    33,    33,    34,    34,    35,    35,
    879       35,    36,    36,    37,    37,    38,    38,    38,    39,    39,
    880       40,    40,    41,    41,    42,    42,    43,    43,    44,    44,
    881       44,    45,    45,    45,    45,    46,    47,    47,    47,    47
    882 };
    883 
    884 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
    885 static const yytype_int8 yyr2[] =
    886 {
    887        0,     2,     1,     2,     2,     0,     1,     2,     2,     1,
    888        1,     1,     1,     1,     1,     2,     2,     1,     3,     4,
    889        4,     5,     5,     4,     3,     3,     3,     7,     7,     6,
    890        5,     6,     5,     6,     5,     5,     4,     9,     7,     8,
    891        6,    10,     8,    10,     8,     8,     2,     3,     3,     5,
    892        6,    10,     9,    10,     1,     1,     1,     1,     1,     1,
    893        1,     1,     1,     1,     1,     1,     1,     1,     0,     1,
    894        1,     1,     0,     2,     0,     2,     0,     2,     1,     3,
    895        3,     1,     1,     3,     3,     3,     1,     1,     1,     1
    896 };
    897 
    898 
    899 enum { YYENOMEM = -2 };
    900 
    901 #define yyerrok         (yyerrstatus = 0)
    902 #define yyclearin       (yychar = YYEMPTY)
    903 
    904 #define YYACCEPT        goto yyacceptlab
    905 #define YYABORT         goto yyabortlab
    906 #define YYERROR         goto yyerrorlab
    907 #define YYNOMEM         goto yyexhaustedlab
    908 
    909 
    910 #define YYRECOVERING()  (!!yyerrstatus)
    911 
    912 #define YYBACKUP(Token, Value)                                    \
    913   do                                                              \
    914     if (yychar == YYEMPTY)                                        \
    915       {                                                           \
    916         yychar = (Token);                                         \
    917         yylval = (Value);                                         \
    918         YYPOPSTACK (yylen);                                       \
    919         yystate = *yyssp;                                         \
    920         goto yybackup;                                            \
    921       }                                                           \
    922     else                                                          \
    923       {                                                           \
    924         yyerror (YY_("syntax error: cannot back up")); \
    925         YYERROR;                                                  \
    926       }                                                           \
    927   while (0)
    928 
    929 /* Backward compatibility with an undocumented macro.
    930    Use YYerror or YYUNDEF. */
    931 #define YYERRCODE YYUNDEF
    932 
    933 
    934 /* Enable debugging if requested.  */
    935 #if YYDEBUG
    936 
    937 # ifndef YYFPRINTF
    938 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
    939 #  define YYFPRINTF fprintf
    940 # endif
    941 
    942 # define YYDPRINTF(Args)                        \
    943 do {                                            \
    944   if (yydebug)                                  \
    945     YYFPRINTF Args;                             \
    946 } while (0)
    947 
    948 
    949 
    950 
    951 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
    952 do {                                                                      \
    953   if (yydebug)                                                            \
    954     {                                                                     \
    955       YYFPRINTF (stderr, "%s ", Title);                                   \
    956       yy_symbol_print (stderr,                                            \
    957                   Kind, Value); \
    958       YYFPRINTF (stderr, "\n");                                           \
    959     }                                                                     \
    960 } while (0)
    961 
    962 
    963 /*-----------------------------------.
    964 | Print this symbol's value on YYO.  |
    965 `-----------------------------------*/
    966 
    967 static void
    968 yy_symbol_value_print (FILE *yyo,
    969                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
    970 {
    971   FILE *yyoutput = yyo;
    972   YY_USE (yyoutput);
    973   if (!yyvaluep)
    974     return;
    975   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
    976   YY_USE (yykind);
    977   YY_IGNORE_MAYBE_UNINITIALIZED_END
    978 }
    979 
    980 
    981 /*---------------------------.
    982 | Print this symbol on YYO.  |
    983 `---------------------------*/
    984 
    985 static void
    986 yy_symbol_print (FILE *yyo,
    987                  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
    988 {
    989   YYFPRINTF (yyo, "%s %s (",
    990              yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
    991 
    992   yy_symbol_value_print (yyo, yykind, yyvaluep);
    993   YYFPRINTF (yyo, ")");
    994 }
    995 
    996 /*------------------------------------------------------------------.
    997 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
    998 | TOP (included).                                                   |
    999 `------------------------------------------------------------------*/
   1000 
   1001 static void
   1002 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
   1003 {
   1004   YYFPRINTF (stderr, "Stack now");
   1005   for (; yybottom <= yytop; yybottom++)
   1006     {
   1007       int yybot = *yybottom;
   1008       YYFPRINTF (stderr, " %d", yybot);
   1009     }
   1010   YYFPRINTF (stderr, "\n");
   1011 }
   1012 
   1013 # define YY_STACK_PRINT(Bottom, Top)                            \
   1014 do {                                                            \
   1015   if (yydebug)                                                  \
   1016     yy_stack_print ((Bottom), (Top));                           \
   1017 } while (0)
   1018 
   1019 
   1020 /*------------------------------------------------.
   1021 | Report that the YYRULE is going to be reduced.  |
   1022 `------------------------------------------------*/
   1023 
   1024 static void
   1025 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
   1026                  int yyrule)
   1027 {
   1028   int yylno = yyrline[yyrule];
   1029   int yynrhs = yyr2[yyrule];
   1030   int yyi;
   1031   YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
   1032              yyrule - 1, yylno);
   1033   /* The symbols being reduced.  */
   1034   for (yyi = 0; yyi < yynrhs; yyi++)
   1035     {
   1036       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
   1037       yy_symbol_print (stderr,
   1038                        YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
   1039                        &yyvsp[(yyi + 1) - (yynrhs)]);
   1040       YYFPRINTF (stderr, "\n");
   1041     }
   1042 }
   1043 
   1044 # define YY_REDUCE_PRINT(Rule)          \
   1045 do {                                    \
   1046   if (yydebug)                          \
   1047     yy_reduce_print (yyssp, yyvsp, Rule); \
   1048 } while (0)
   1049 
   1050 /* Nonzero means print parse trace.  It is left uninitialized so that
   1051    multiple parsers can coexist.  */
   1052 int yydebug;
   1053 #else /* !YYDEBUG */
   1054 # define YYDPRINTF(Args) ((void) 0)
   1055 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
   1056 # define YY_STACK_PRINT(Bottom, Top)
   1057 # define YY_REDUCE_PRINT(Rule)
   1058 #endif /* !YYDEBUG */
   1059 
   1060 
   1061 /* YYINITDEPTH -- initial size of the parser's stacks.  */
   1062 #ifndef YYINITDEPTH
   1063 # define YYINITDEPTH 200
   1064 #endif
   1065 
   1066 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
   1067    if the built-in stack extension method is used).
   1068 
   1069    Do not make this value too large; the results are undefined if
   1070    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
   1071    evaluated with infinite-precision integer arithmetic.  */
   1072 
   1073 #ifndef YYMAXDEPTH
   1074 # define YYMAXDEPTH 10000
   1075 #endif
   1076 
   1077 
   1078 
   1079 
   1080 
   1081 
   1082 /*-----------------------------------------------.
   1083 | Release the memory associated to this symbol.  |
   1084 `-----------------------------------------------*/
   1085 
   1086 static void
   1087 yydestruct (const char *yymsg,
   1088             yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
   1089 {
   1090   YY_USE (yyvaluep);
   1091   if (!yymsg)
   1092     yymsg = "Deleting";
   1093   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
   1094 
   1095   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1096   YY_USE (yykind);
   1097   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1098 }
   1099 
   1100 
   1101 /* Lookahead token kind.  */
   1102 int yychar;
   1103 
   1104 /* The semantic value of the lookahead symbol.  */
   1105 YYSTYPE yylval;
   1106 /* Number of syntax errors so far.  */
   1107 int yynerrs;
   1108 
   1109 
   1110 
   1111 
   1112 /*----------.
   1113 | yyparse.  |
   1114 `----------*/
   1115 
   1116 int
   1117 yyparse (void)
   1118 {
   1119     yy_state_fast_t yystate = 0;
   1120     /* Number of tokens to shift before error messages enabled.  */
   1121     int yyerrstatus = 0;
   1122 
   1123     /* Refer to the stacks through separate pointers, to allow yyoverflow
   1124        to reallocate them elsewhere.  */
   1125 
   1126     /* Their size.  */
   1127     YYPTRDIFF_T yystacksize = YYINITDEPTH;
   1128 
   1129     /* The state stack: array, bottom, top.  */
   1130     yy_state_t yyssa[YYINITDEPTH];
   1131     yy_state_t *yyss = yyssa;
   1132     yy_state_t *yyssp = yyss;
   1133 
   1134     /* The semantic value stack: array, bottom, top.  */
   1135     YYSTYPE yyvsa[YYINITDEPTH];
   1136     YYSTYPE *yyvs = yyvsa;
   1137     YYSTYPE *yyvsp = yyvs;
   1138 
   1139   int yyn;
   1140   /* The return value of yyparse.  */
   1141   int yyresult;
   1142   /* Lookahead symbol kind.  */
   1143   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
   1144   /* The variables used to return semantic value and location from the
   1145      action routines.  */
   1146   YYSTYPE yyval;
   1147 
   1148 
   1149 
   1150 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
   1151 
   1152   /* The number of symbols on the RHS of the reduced rule.
   1153      Keep to zero when no symbol should be popped.  */
   1154   int yylen = 0;
   1155 
   1156   YYDPRINTF ((stderr, "Starting parse\n"));
   1157 
   1158   yychar = YYEMPTY; /* Cause a token to be read.  */
   1159 
   1160   goto yysetstate;
   1161 
   1162 
   1163 /*------------------------------------------------------------.
   1164 | yynewstate -- push a new state, which is found in yystate.  |
   1165 `------------------------------------------------------------*/
   1166 yynewstate:
   1167   /* In all cases, when you get here, the value and location stacks
   1168      have just been pushed.  So pushing a state here evens the stacks.  */
   1169   yyssp++;
   1170 
   1171 
   1172 /*--------------------------------------------------------------------.
   1173 | yysetstate -- set current state (the top of the stack) to yystate.  |
   1174 `--------------------------------------------------------------------*/
   1175 yysetstate:
   1176   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
   1177   YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
   1178   YY_IGNORE_USELESS_CAST_BEGIN
   1179   *yyssp = YY_CAST (yy_state_t, yystate);
   1180   YY_IGNORE_USELESS_CAST_END
   1181   YY_STACK_PRINT (yyss, yyssp);
   1182 
   1183   if (yyss + yystacksize - 1 <= yyssp)
   1184 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
   1185     YYNOMEM;
   1186 #else
   1187     {
   1188       /* Get the current used size of the three stacks, in elements.  */
   1189       YYPTRDIFF_T yysize = yyssp - yyss + 1;
   1190 
   1191 # if defined yyoverflow
   1192       {
   1193         /* Give user a chance to reallocate the stack.  Use copies of
   1194            these so that the &'s don't force the real ones into
   1195            memory.  */
   1196         yy_state_t *yyss1 = yyss;
   1197         YYSTYPE *yyvs1 = yyvs;
   1198 
   1199         /* Each stack pointer address is followed by the size of the
   1200            data in use in that stack, in bytes.  This used to be a
   1201            conditional around just the two extra args, but that might
   1202            be undefined if yyoverflow is a macro.  */
   1203         yyoverflow (YY_("memory exhausted"),
   1204                     &yyss1, yysize * YYSIZEOF (*yyssp),
   1205                     &yyvs1, yysize * YYSIZEOF (*yyvsp),
   1206                     &yystacksize);
   1207         yyss = yyss1;
   1208         yyvs = yyvs1;
   1209       }
   1210 # else /* defined YYSTACK_RELOCATE */
   1211       /* Extend the stack our own way.  */
   1212       if (YYMAXDEPTH <= yystacksize)
   1213         YYNOMEM;
   1214       yystacksize *= 2;
   1215       if (YYMAXDEPTH < yystacksize)
   1216         yystacksize = YYMAXDEPTH;
   1217 
   1218       {
   1219         yy_state_t *yyss1 = yyss;
   1220         union yyalloc *yyptr =
   1221           YY_CAST (union yyalloc *,
   1222                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
   1223         if (! yyptr)
   1224           YYNOMEM;
   1225         YYSTACK_RELOCATE (yyss_alloc, yyss);
   1226         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
   1227 #  undef YYSTACK_RELOCATE
   1228         if (yyss1 != yyssa)
   1229           YYSTACK_FREE (yyss1);
   1230       }
   1231 # endif
   1232 
   1233       yyssp = yyss + yysize - 1;
   1234       yyvsp = yyvs + yysize - 1;
   1235 
   1236       YY_IGNORE_USELESS_CAST_BEGIN
   1237       YYDPRINTF ((stderr, "Stack size increased to %ld\n",
   1238                   YY_CAST (long, yystacksize)));
   1239       YY_IGNORE_USELESS_CAST_END
   1240 
   1241       if (yyss + yystacksize - 1 <= yyssp)
   1242         YYABORT;
   1243     }
   1244 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
   1245 
   1246 
   1247   if (yystate == YYFINAL)
   1248     YYACCEPT;
   1249 
   1250   goto yybackup;
   1251 
   1252 
   1253 /*-----------.
   1254 | yybackup.  |
   1255 `-----------*/
   1256 yybackup:
   1257   /* Do appropriate processing given the current state.  Read a
   1258      lookahead token if we need one and don't already have one.  */
   1259 
   1260   /* First try to decide what to do without reference to lookahead token.  */
   1261   yyn = yypact[yystate];
   1262   if (yypact_value_is_default (yyn))
   1263     goto yydefault;
   1264 
   1265   /* Not known => get a lookahead token if don't already have one.  */
   1266 
   1267   /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
   1268   if (yychar == YYEMPTY)
   1269     {
   1270       YYDPRINTF ((stderr, "Reading a token\n"));
   1271       yychar = yylex ();
   1272     }
   1273 
   1274   if (yychar <= YYEOF)
   1275     {
   1276       yychar = YYEOF;
   1277       yytoken = YYSYMBOL_YYEOF;
   1278       YYDPRINTF ((stderr, "Now at end of input.\n"));
   1279     }
   1280   else if (yychar == YYerror)
   1281     {
   1282       /* The scanner already issued an error message, process directly
   1283          to error recovery.  But do not keep the error token as
   1284          lookahead, it is too special and may lead us to an endless
   1285          loop in error recovery. */
   1286       yychar = YYUNDEF;
   1287       yytoken = YYSYMBOL_YYerror;
   1288       goto yyerrlab1;
   1289     }
   1290   else
   1291     {
   1292       yytoken = YYTRANSLATE (yychar);
   1293       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
   1294     }
   1295 
   1296   /* If the proper action on seeing token YYTOKEN is to reduce or to
   1297      detect an error, take that action.  */
   1298   yyn += yytoken;
   1299   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
   1300     goto yydefault;
   1301   yyn = yytable[yyn];
   1302   if (yyn <= 0)
   1303     {
   1304       if (yytable_value_is_error (yyn))
   1305         goto yyerrlab;
   1306       yyn = -yyn;
   1307       goto yyreduce;
   1308     }
   1309 
   1310   /* Count tokens shifted since error; after three, turn off error
   1311      status.  */
   1312   if (yyerrstatus)
   1313     yyerrstatus--;
   1314 
   1315   /* Shift the lookahead token.  */
   1316   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
   1317   yystate = yyn;
   1318   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   1319   *++yyvsp = yylval;
   1320   YY_IGNORE_MAYBE_UNINITIALIZED_END
   1321 
   1322   /* Discard the shifted token.  */
   1323   yychar = YYEMPTY;
   1324   goto yynewstate;
   1325 
   1326 
   1327 /*-----------------------------------------------------------.
   1328 | yydefault -- do the default action for the current state.  |
   1329 `-----------------------------------------------------------*/
   1330 yydefault:
   1331   yyn = yydefact[yystate];
   1332   if (yyn == 0)
   1333     goto yyerrlab;
   1334   goto yyreduce;
   1335 
   1336 
   1337 /*-----------------------------.
   1338 | yyreduce -- do a reduction.  |
   1339 `-----------------------------*/
   1340 yyreduce:
   1341   /* yyn is the number of a rule to reduce with.  */
   1342   yylen = yyr2[yyn];
   1343 
   1344   /* If YYLEN is nonzero, implement the default value of the action:
   1345      '$$ = $1'.
   1346 
   1347      Otherwise, the following line sets YYVAL to garbage.
   1348      This behavior is undocumented and Bison
   1349      users should not rely upon it.  Assigning to YYVAL
   1350      unconditionally makes the parser a bit smaller, and it avoids a
   1351      GCC warning that YYVAL may be used uninitialized.  */
   1352   yyval = yyvsp[1-yylen];
   1353 
   1354 
   1355   YY_REDUCE_PRINT (yyn);
   1356   switch (yyn)
   1357     {
   1358   case 3: /* operand: motorola_operand optional_ampersand  */
   1359 #line 122 "./config/m68k-parse.y"
   1360                 {
   1361 		  op->trailing_ampersand = (yyvsp[0].trailing_ampersand);
   1362 		}
   1363 #line 1364 "config/m68k-parse.c"
   1364     break;
   1365 
   1366   case 4: /* operand: mit_operand optional_ampersand  */
   1367 #line 126 "./config/m68k-parse.y"
   1368                 {
   1369 		  op->trailing_ampersand = (yyvsp[0].trailing_ampersand);
   1370 		}
   1371 #line 1372 "config/m68k-parse.c"
   1372     break;
   1373 
   1374   case 5: /* optional_ampersand: %empty  */
   1375 #line 134 "./config/m68k-parse.y"
   1376                 { (yyval.trailing_ampersand) = 0; }
   1377 #line 1378 "config/m68k-parse.c"
   1378     break;
   1379 
   1380   case 6: /* optional_ampersand: '&'  */
   1381 #line 136 "./config/m68k-parse.y"
   1382                 { (yyval.trailing_ampersand) = 1; }
   1383 #line 1384 "config/m68k-parse.c"
   1384     break;
   1385 
   1386   case 7: /* generic_operand: '<' '<'  */
   1387 #line 143 "./config/m68k-parse.y"
   1388                 {
   1389 		  op->mode = LSH;
   1390 		}
   1391 #line 1392 "config/m68k-parse.c"
   1392     break;
   1393 
   1394   case 8: /* generic_operand: '>' '>'  */
   1395 #line 148 "./config/m68k-parse.y"
   1396                 {
   1397 		  op->mode = RSH;
   1398 		}
   1399 #line 1400 "config/m68k-parse.c"
   1400     break;
   1401 
   1402   case 9: /* generic_operand: DR  */
   1403 #line 153 "./config/m68k-parse.y"
   1404                 {
   1405 		  op->mode = DREG;
   1406 		  op->reg = (yyvsp[0].reg);
   1407 		}
   1408 #line 1409 "config/m68k-parse.c"
   1409     break;
   1410 
   1411   case 10: /* generic_operand: AR  */
   1412 #line 158 "./config/m68k-parse.y"
   1413                 {
   1414 		  op->mode = AREG;
   1415 		  op->reg = (yyvsp[0].reg);
   1416 		}
   1417 #line 1418 "config/m68k-parse.c"
   1418     break;
   1419 
   1420   case 11: /* generic_operand: FPR  */
   1421 #line 163 "./config/m68k-parse.y"
   1422                 {
   1423 		  op->mode = FPREG;
   1424 		  op->reg = (yyvsp[0].reg);
   1425 		}
   1426 #line 1427 "config/m68k-parse.c"
   1427     break;
   1428 
   1429   case 12: /* generic_operand: FPCR  */
   1430 #line 168 "./config/m68k-parse.y"
   1431                 {
   1432 		  op->mode = CONTROL;
   1433 		  op->reg = (yyvsp[0].reg);
   1434 		}
   1435 #line 1436 "config/m68k-parse.c"
   1436     break;
   1437 
   1438   case 13: /* generic_operand: CREG  */
   1439 #line 173 "./config/m68k-parse.y"
   1440                 {
   1441 		  op->mode = CONTROL;
   1442 		  op->reg = (yyvsp[0].reg);
   1443 		}
   1444 #line 1445 "config/m68k-parse.c"
   1445     break;
   1446 
   1447   case 14: /* generic_operand: EXPR  */
   1448 #line 178 "./config/m68k-parse.y"
   1449                 {
   1450 		  op->mode = ABSL;
   1451 		  op->disp = (yyvsp[0].exp);
   1452 		}
   1453 #line 1454 "config/m68k-parse.c"
   1454     break;
   1455 
   1456   case 15: /* generic_operand: '#' EXPR  */
   1457 #line 183 "./config/m68k-parse.y"
   1458                 {
   1459 		  op->mode = IMMED;
   1460 		  op->disp = (yyvsp[0].exp);
   1461 		}
   1462 #line 1463 "config/m68k-parse.c"
   1463     break;
   1464 
   1465   case 16: /* generic_operand: '&' EXPR  */
   1466 #line 188 "./config/m68k-parse.y"
   1467                 {
   1468 		  op->mode = IMMED;
   1469 		  op->disp = (yyvsp[0].exp);
   1470 		}
   1471 #line 1472 "config/m68k-parse.c"
   1472     break;
   1473 
   1474   case 17: /* generic_operand: reglist  */
   1475 #line 193 "./config/m68k-parse.y"
   1476                 {
   1477 		  op->mode = REGLST;
   1478 		  op->mask = (yyvsp[0].mask);
   1479 		}
   1480 #line 1481 "config/m68k-parse.c"
   1481     break;
   1482 
   1483   case 18: /* motorola_operand: '(' AR ')'  */
   1484 #line 206 "./config/m68k-parse.y"
   1485                 {
   1486 		  op->mode = AINDR;
   1487 		  op->reg = (yyvsp[-1].reg);
   1488 		}
   1489 #line 1490 "config/m68k-parse.c"
   1490     break;
   1491 
   1492   case 19: /* motorola_operand: '(' AR ')' '+'  */
   1493 #line 211 "./config/m68k-parse.y"
   1494                 {
   1495 		  op->mode = AINC;
   1496 		  op->reg = (yyvsp[-2].reg);
   1497 		}
   1498 #line 1499 "config/m68k-parse.c"
   1499     break;
   1500 
   1501   case 20: /* motorola_operand: '-' '(' AR ')'  */
   1502 #line 216 "./config/m68k-parse.y"
   1503                 {
   1504 		  op->mode = ADEC;
   1505 		  op->reg = (yyvsp[-1].reg);
   1506 		}
   1507 #line 1508 "config/m68k-parse.c"
   1508     break;
   1509 
   1510   case 21: /* motorola_operand: '(' EXPR ',' zapc ')'  */
   1511 #line 221 "./config/m68k-parse.y"
   1512                 {
   1513 		  op->reg = (yyvsp[-1].reg);
   1514 		  op->disp = (yyvsp[-3].exp);
   1515 		  if (((yyvsp[-1].reg) >= ZADDR0 && (yyvsp[-1].reg) <= ZADDR7)
   1516 		      || (yyvsp[-1].reg) == ZPC)
   1517 		    op->mode = BASE;
   1518 		  else
   1519 		    op->mode = DISP;
   1520 		}
   1521 #line 1522 "config/m68k-parse.c"
   1522     break;
   1523 
   1524   case 22: /* motorola_operand: '(' zapc ',' EXPR ')'  */
   1525 #line 231 "./config/m68k-parse.y"
   1526                 {
   1527 		  op->reg = (yyvsp[-3].reg);
   1528 		  op->disp = (yyvsp[-1].exp);
   1529 		  if (((yyvsp[-3].reg) >= ZADDR0 && (yyvsp[-3].reg) <= ZADDR7)
   1530 		      || (yyvsp[-3].reg) == ZPC)
   1531 		    op->mode = BASE;
   1532 		  else
   1533 		    op->mode = DISP;
   1534 		}
   1535 #line 1536 "config/m68k-parse.c"
   1536     break;
   1537 
   1538   case 23: /* motorola_operand: EXPR '(' zapc ')'  */
   1539 #line 241 "./config/m68k-parse.y"
   1540                 {
   1541 		  op->reg = (yyvsp[-1].reg);
   1542 		  op->disp = (yyvsp[-3].exp);
   1543 		  if (((yyvsp[-1].reg) >= ZADDR0 && (yyvsp[-1].reg) <= ZADDR7)
   1544 		      || (yyvsp[-1].reg) == ZPC)
   1545 		    op->mode = BASE;
   1546 		  else
   1547 		    op->mode = DISP;
   1548 		}
   1549 #line 1550 "config/m68k-parse.c"
   1550     break;
   1551 
   1552   case 24: /* motorola_operand: '(' LPC ')'  */
   1553 #line 251 "./config/m68k-parse.y"
   1554                 {
   1555 		  op->mode = DISP;
   1556 		  op->reg = (yyvsp[-1].reg);
   1557 		}
   1558 #line 1559 "config/m68k-parse.c"
   1559     break;
   1560 
   1561   case 25: /* motorola_operand: '(' ZAR ')'  */
   1562 #line 256 "./config/m68k-parse.y"
   1563                 {
   1564 		  op->mode = BASE;
   1565 		  op->reg = (yyvsp[-1].reg);
   1566 		}
   1567 #line 1568 "config/m68k-parse.c"
   1568     break;
   1569 
   1570   case 26: /* motorola_operand: '(' LZPC ')'  */
   1571 #line 261 "./config/m68k-parse.y"
   1572                 {
   1573 		  op->mode = BASE;
   1574 		  op->reg = (yyvsp[-1].reg);
   1575 		}
   1576 #line 1577 "config/m68k-parse.c"
   1577     break;
   1578 
   1579   case 27: /* motorola_operand: '(' EXPR ',' zapc ',' zireg ')'  */
   1580 #line 266 "./config/m68k-parse.y"
   1581                 {
   1582 		  op->mode = BASE;
   1583 		  op->reg = (yyvsp[-3].reg);
   1584 		  op->disp = (yyvsp[-5].exp);
   1585 		  op->index = (yyvsp[-1].indexreg);
   1586 		}
   1587 #line 1588 "config/m68k-parse.c"
   1588     break;
   1589 
   1590   case 28: /* motorola_operand: '(' EXPR ',' zapc ',' zpc ')'  */
   1591 #line 273 "./config/m68k-parse.y"
   1592                 {
   1593 		  if ((yyvsp[-3].reg) == PC || (yyvsp[-3].reg) == ZPC)
   1594 		    yyerror (_("syntax error"));
   1595 		  op->mode = BASE;
   1596 		  op->reg = (yyvsp[-1].reg);
   1597 		  op->disp = (yyvsp[-5].exp);
   1598 		  op->index.reg = (yyvsp[-3].reg);
   1599 		  op->index.size = SIZE_UNSPEC;
   1600 		  op->index.scale = 1;
   1601 		}
   1602 #line 1603 "config/m68k-parse.c"
   1603     break;
   1604 
   1605   case 29: /* motorola_operand: '(' EXPR ',' zdireg optczapc ')'  */
   1606 #line 284 "./config/m68k-parse.y"
   1607                 {
   1608 		  op->mode = BASE;
   1609 		  op->reg = (yyvsp[-1].reg);
   1610 		  op->disp = (yyvsp[-4].exp);
   1611 		  op->index = (yyvsp[-2].indexreg);
   1612 		}
   1613 #line 1614 "config/m68k-parse.c"
   1614     break;
   1615 
   1616   case 30: /* motorola_operand: '(' zdireg ',' EXPR ')'  */
   1617 #line 291 "./config/m68k-parse.y"
   1618                 {
   1619 		  op->mode = BASE;
   1620 		  op->disp = (yyvsp[-1].exp);
   1621 		  op->index = (yyvsp[-3].indexreg);
   1622 		}
   1623 #line 1624 "config/m68k-parse.c"
   1624     break;
   1625 
   1626   case 31: /* motorola_operand: EXPR '(' zapc ',' zireg ')'  */
   1627 #line 297 "./config/m68k-parse.y"
   1628                 {
   1629 		  op->mode = BASE;
   1630 		  op->reg = (yyvsp[-3].reg);
   1631 		  op->disp = (yyvsp[-5].exp);
   1632 		  op->index = (yyvsp[-1].indexreg);
   1633 		}
   1634 #line 1635 "config/m68k-parse.c"
   1635     break;
   1636 
   1637   case 32: /* motorola_operand: '(' zapc ',' zireg ')'  */
   1638 #line 304 "./config/m68k-parse.y"
   1639                 {
   1640 		  op->mode = BASE;
   1641 		  op->reg = (yyvsp[-3].reg);
   1642 		  op->index = (yyvsp[-1].indexreg);
   1643 		}
   1644 #line 1645 "config/m68k-parse.c"
   1645     break;
   1646 
   1647   case 33: /* motorola_operand: EXPR '(' zapc ',' zpc ')'  */
   1648 #line 310 "./config/m68k-parse.y"
   1649                 {
   1650 		  if ((yyvsp[-3].reg) == PC || (yyvsp[-3].reg) == ZPC)
   1651 		    yyerror (_("syntax error"));
   1652 		  op->mode = BASE;
   1653 		  op->reg = (yyvsp[-1].reg);
   1654 		  op->disp = (yyvsp[-5].exp);
   1655 		  op->index.reg = (yyvsp[-3].reg);
   1656 		  op->index.size = SIZE_UNSPEC;
   1657 		  op->index.scale = 1;
   1658 		}
   1659 #line 1660 "config/m68k-parse.c"
   1660     break;
   1661 
   1662   case 34: /* motorola_operand: '(' zapc ',' zpc ')'  */
   1663 #line 321 "./config/m68k-parse.y"
   1664                 {
   1665 		  if ((yyvsp[-3].reg) == PC || (yyvsp[-3].reg) == ZPC)
   1666 		    yyerror (_("syntax error"));
   1667 		  op->mode = BASE;
   1668 		  op->reg = (yyvsp[-1].reg);
   1669 		  op->index.reg = (yyvsp[-3].reg);
   1670 		  op->index.size = SIZE_UNSPEC;
   1671 		  op->index.scale = 1;
   1672 		}
   1673 #line 1674 "config/m68k-parse.c"
   1674     break;
   1675 
   1676   case 35: /* motorola_operand: EXPR '(' zdireg optczapc ')'  */
   1677 #line 331 "./config/m68k-parse.y"
   1678                 {
   1679 		  op->mode = BASE;
   1680 		  op->reg = (yyvsp[-1].reg);
   1681 		  op->disp = (yyvsp[-4].exp);
   1682 		  op->index = (yyvsp[-2].indexreg);
   1683 		}
   1684 #line 1685 "config/m68k-parse.c"
   1685     break;
   1686 
   1687   case 36: /* motorola_operand: '(' zdireg optczapc ')'  */
   1688 #line 338 "./config/m68k-parse.y"
   1689                 {
   1690 		  op->mode = BASE;
   1691 		  op->reg = (yyvsp[-1].reg);
   1692 		  op->index = (yyvsp[-2].indexreg);
   1693 		}
   1694 #line 1695 "config/m68k-parse.c"
   1695     break;
   1696 
   1697   case 37: /* motorola_operand: '(' '[' EXPR optczapc ']' ',' zireg optcexpr ')'  */
   1698 #line 344 "./config/m68k-parse.y"
   1699                 {
   1700 		  op->mode = POST;
   1701 		  op->reg = (yyvsp[-5].reg);
   1702 		  op->disp = (yyvsp[-6].exp);
   1703 		  op->index = (yyvsp[-2].indexreg);
   1704 		  op->odisp = (yyvsp[-1].exp);
   1705 		}
   1706 #line 1707 "config/m68k-parse.c"
   1707     break;
   1708 
   1709   case 38: /* motorola_operand: '(' '[' EXPR optczapc ']' optcexpr ')'  */
   1710 #line 352 "./config/m68k-parse.y"
   1711                 {
   1712 		  op->mode = POST;
   1713 		  op->reg = (yyvsp[-3].reg);
   1714 		  op->disp = (yyvsp[-4].exp);
   1715 		  op->odisp = (yyvsp[-1].exp);
   1716 		}
   1717 #line 1718 "config/m68k-parse.c"
   1718     break;
   1719 
   1720   case 39: /* motorola_operand: '(' '[' zapc ']' ',' zireg optcexpr ')'  */
   1721 #line 359 "./config/m68k-parse.y"
   1722                 {
   1723 		  op->mode = POST;
   1724 		  op->reg = (yyvsp[-5].reg);
   1725 		  op->index = (yyvsp[-2].indexreg);
   1726 		  op->odisp = (yyvsp[-1].exp);
   1727 		}
   1728 #line 1729 "config/m68k-parse.c"
   1729     break;
   1730 
   1731   case 40: /* motorola_operand: '(' '[' zapc ']' optcexpr ')'  */
   1732 #line 366 "./config/m68k-parse.y"
   1733                 {
   1734 		  op->mode = POST;
   1735 		  op->reg = (yyvsp[-3].reg);
   1736 		  op->odisp = (yyvsp[-1].exp);
   1737 		}
   1738 #line 1739 "config/m68k-parse.c"
   1739     break;
   1740 
   1741   case 41: /* motorola_operand: '(' '[' EXPR ',' zapc ',' zireg ']' optcexpr ')'  */
   1742 #line 372 "./config/m68k-parse.y"
   1743                 {
   1744 		  op->mode = PRE;
   1745 		  op->reg = (yyvsp[-5].reg);
   1746 		  op->disp = (yyvsp[-7].exp);
   1747 		  op->index = (yyvsp[-3].indexreg);
   1748 		  op->odisp = (yyvsp[-1].exp);
   1749 		}
   1750 #line 1751 "config/m68k-parse.c"
   1751     break;
   1752 
   1753   case 42: /* motorola_operand: '(' '[' zapc ',' zireg ']' optcexpr ')'  */
   1754 #line 380 "./config/m68k-parse.y"
   1755                 {
   1756 		  op->mode = PRE;
   1757 		  op->reg = (yyvsp[-5].reg);
   1758 		  op->index = (yyvsp[-3].indexreg);
   1759 		  op->odisp = (yyvsp[-1].exp);
   1760 		}
   1761 #line 1762 "config/m68k-parse.c"
   1762     break;
   1763 
   1764   case 43: /* motorola_operand: '(' '[' EXPR ',' zapc ',' zpc ']' optcexpr ')'  */
   1765 #line 387 "./config/m68k-parse.y"
   1766                 {
   1767 		  if ((yyvsp[-5].reg) == PC || (yyvsp[-5].reg) == ZPC)
   1768 		    yyerror (_("syntax error"));
   1769 		  op->mode = PRE;
   1770 		  op->reg = (yyvsp[-3].reg);
   1771 		  op->disp = (yyvsp[-7].exp);
   1772 		  op->index.reg = (yyvsp[-5].reg);
   1773 		  op->index.size = SIZE_UNSPEC;
   1774 		  op->index.scale = 1;
   1775 		  op->odisp = (yyvsp[-1].exp);
   1776 		}
   1777 #line 1778 "config/m68k-parse.c"
   1778     break;
   1779 
   1780   case 44: /* motorola_operand: '(' '[' zapc ',' zpc ']' optcexpr ')'  */
   1781 #line 399 "./config/m68k-parse.y"
   1782                 {
   1783 		  if ((yyvsp[-5].reg) == PC || (yyvsp[-5].reg) == ZPC)
   1784 		    yyerror (_("syntax error"));
   1785 		  op->mode = PRE;
   1786 		  op->reg = (yyvsp[-3].reg);
   1787 		  op->index.reg = (yyvsp[-5].reg);
   1788 		  op->index.size = SIZE_UNSPEC;
   1789 		  op->index.scale = 1;
   1790 		  op->odisp = (yyvsp[-1].exp);
   1791 		}
   1792 #line 1793 "config/m68k-parse.c"
   1793     break;
   1794 
   1795   case 45: /* motorola_operand: '(' '[' optexprc zdireg optczapc ']' optcexpr ')'  */
   1796 #line 410 "./config/m68k-parse.y"
   1797                 {
   1798 		  op->mode = PRE;
   1799 		  op->reg = (yyvsp[-3].reg);
   1800 		  op->disp = (yyvsp[-5].exp);
   1801 		  op->index = (yyvsp[-4].indexreg);
   1802 		  op->odisp = (yyvsp[-1].exp);
   1803 		}
   1804 #line 1805 "config/m68k-parse.c"
   1805     break;
   1806 
   1807   case 46: /* mit_operand: optzapc '@'  */
   1808 #line 423 "./config/m68k-parse.y"
   1809                 {
   1810 		  /* We use optzapc to avoid a shift/reduce conflict.  */
   1811 		  if ((yyvsp[-1].reg) < ADDR0 || (yyvsp[-1].reg) > ADDR7)
   1812 		    yyerror (_("syntax error"));
   1813 		  op->mode = AINDR;
   1814 		  op->reg = (yyvsp[-1].reg);
   1815 		}
   1816 #line 1817 "config/m68k-parse.c"
   1817     break;
   1818 
   1819   case 47: /* mit_operand: optzapc '@' '+'  */
   1820 #line 431 "./config/m68k-parse.y"
   1821                 {
   1822 		  /* We use optzapc to avoid a shift/reduce conflict.  */
   1823 		  if ((yyvsp[-2].reg) < ADDR0 || (yyvsp[-2].reg) > ADDR7)
   1824 		    yyerror (_("syntax error"));
   1825 		  op->mode = AINC;
   1826 		  op->reg = (yyvsp[-2].reg);
   1827 		}
   1828 #line 1829 "config/m68k-parse.c"
   1829     break;
   1830 
   1831   case 48: /* mit_operand: optzapc '@' '-'  */
   1832 #line 439 "./config/m68k-parse.y"
   1833                 {
   1834 		  /* We use optzapc to avoid a shift/reduce conflict.  */
   1835 		  if ((yyvsp[-2].reg) < ADDR0 || (yyvsp[-2].reg) > ADDR7)
   1836 		    yyerror (_("syntax error"));
   1837 		  op->mode = ADEC;
   1838 		  op->reg = (yyvsp[-2].reg);
   1839 		}
   1840 #line 1841 "config/m68k-parse.c"
   1841     break;
   1842 
   1843   case 49: /* mit_operand: optzapc '@' '(' EXPR ')'  */
   1844 #line 447 "./config/m68k-parse.y"
   1845                 {
   1846 		  op->reg = (yyvsp[-4].reg);
   1847 		  op->disp = (yyvsp[-1].exp);
   1848 		  if (((yyvsp[-4].reg) >= ZADDR0 && (yyvsp[-4].reg) <= ZADDR7)
   1849 		      || (yyvsp[-4].reg) == ZPC)
   1850 		    op->mode = BASE;
   1851 		  else
   1852 		    op->mode = DISP;
   1853 		}
   1854 #line 1855 "config/m68k-parse.c"
   1855     break;
   1856 
   1857   case 50: /* mit_operand: optzapc '@' '(' optexprc zireg ')'  */
   1858 #line 457 "./config/m68k-parse.y"
   1859                 {
   1860 		  op->mode = BASE;
   1861 		  op->reg = (yyvsp[-5].reg);
   1862 		  op->disp = (yyvsp[-2].exp);
   1863 		  op->index = (yyvsp[-1].indexreg);
   1864 		}
   1865 #line 1866 "config/m68k-parse.c"
   1866     break;
   1867 
   1868   case 51: /* mit_operand: optzapc '@' '(' EXPR ')' '@' '(' optexprc zireg ')'  */
   1869 #line 464 "./config/m68k-parse.y"
   1870                 {
   1871 		  op->mode = POST;
   1872 		  op->reg = (yyvsp[-9].reg);
   1873 		  op->disp = (yyvsp[-6].exp);
   1874 		  op->index = (yyvsp[-1].indexreg);
   1875 		  op->odisp = (yyvsp[-2].exp);
   1876 		}
   1877 #line 1878 "config/m68k-parse.c"
   1878     break;
   1879 
   1880   case 52: /* mit_operand: optzapc '@' '(' EXPR ')' '@' '(' EXPR ')'  */
   1881 #line 472 "./config/m68k-parse.y"
   1882                 {
   1883 		  op->mode = POST;
   1884 		  op->reg = (yyvsp[-8].reg);
   1885 		  op->disp = (yyvsp[-5].exp);
   1886 		  op->odisp = (yyvsp[-1].exp);
   1887 		}
   1888 #line 1889 "config/m68k-parse.c"
   1889     break;
   1890 
   1891   case 53: /* mit_operand: optzapc '@' '(' optexprc zireg ')' '@' '(' EXPR ')'  */
   1892 #line 479 "./config/m68k-parse.y"
   1893                 {
   1894 		  op->mode = PRE;
   1895 		  op->reg = (yyvsp[-9].reg);
   1896 		  op->disp = (yyvsp[-6].exp);
   1897 		  op->index = (yyvsp[-5].indexreg);
   1898 		  op->odisp = (yyvsp[-1].exp);
   1899 		}
   1900 #line 1901 "config/m68k-parse.c"
   1901     break;
   1902 
   1903   case 55: /* zireg: zadr  */
   1904 #line 494 "./config/m68k-parse.y"
   1905                 {
   1906 		  (yyval.indexreg).reg = (yyvsp[0].reg);
   1907 		  (yyval.indexreg).size = SIZE_UNSPEC;
   1908 		  (yyval.indexreg).scale = 1;
   1909 		}
   1910 #line 1911 "config/m68k-parse.c"
   1911     break;
   1912 
   1913   case 57: /* zdireg: zdr  */
   1914 #line 508 "./config/m68k-parse.y"
   1915                 {
   1916 		  (yyval.indexreg).reg = (yyvsp[0].reg);
   1917 		  (yyval.indexreg).size = SIZE_UNSPEC;
   1918 		  (yyval.indexreg).scale = 1;
   1919 		}
   1920 #line 1921 "config/m68k-parse.c"
   1921     break;
   1922 
   1923   case 68: /* optzapc: %empty  */
   1924 #line 551 "./config/m68k-parse.y"
   1925                 {
   1926 		  (yyval.reg) = ZADDR0;
   1927 		}
   1928 #line 1929 "config/m68k-parse.c"
   1929     break;
   1930 
   1931   case 72: /* optczapc: %empty  */
   1932 #line 568 "./config/m68k-parse.y"
   1933                 {
   1934 		  (yyval.reg) = ZADDR0;
   1935 		}
   1936 #line 1937 "config/m68k-parse.c"
   1937     break;
   1938 
   1939   case 73: /* optczapc: ',' zapc  */
   1940 #line 572 "./config/m68k-parse.y"
   1941                 {
   1942 		  (yyval.reg) = (yyvsp[0].reg);
   1943 		}
   1944 #line 1945 "config/m68k-parse.c"
   1945     break;
   1946 
   1947   case 74: /* optcexpr: %empty  */
   1948 #line 581 "./config/m68k-parse.y"
   1949                 {
   1950 		  (yyval.exp).exp.X_op = O_absent;
   1951 		  (yyval.exp).size = SIZE_UNSPEC;
   1952 		}
   1953 #line 1954 "config/m68k-parse.c"
   1954     break;
   1955 
   1956   case 75: /* optcexpr: ',' EXPR  */
   1957 #line 586 "./config/m68k-parse.y"
   1958                 {
   1959 		  (yyval.exp) = (yyvsp[0].exp);
   1960 		}
   1961 #line 1962 "config/m68k-parse.c"
   1962     break;
   1963 
   1964   case 76: /* optexprc: %empty  */
   1965 #line 595 "./config/m68k-parse.y"
   1966                 {
   1967 		  (yyval.exp).exp.X_op = O_absent;
   1968 		  (yyval.exp).size = SIZE_UNSPEC;
   1969 		}
   1970 #line 1971 "config/m68k-parse.c"
   1971     break;
   1972 
   1973   case 77: /* optexprc: EXPR ','  */
   1974 #line 600 "./config/m68k-parse.y"
   1975                 {
   1976 		  (yyval.exp) = (yyvsp[-1].exp);
   1977 		}
   1978 #line 1979 "config/m68k-parse.c"
   1979     break;
   1980 
   1981   case 79: /* reglist: reglistpair '/' ireglist  */
   1982 #line 610 "./config/m68k-parse.y"
   1983                 {
   1984 		  (yyval.mask) = (yyvsp[-2].mask) | (yyvsp[0].mask);
   1985 		}
   1986 #line 1987 "config/m68k-parse.c"
   1987     break;
   1988 
   1989   case 80: /* reglist: reglistreg '/' ireglist  */
   1990 #line 614 "./config/m68k-parse.y"
   1991                 {
   1992 		  (yyval.mask) = (1 << (yyvsp[-2].onereg)) | (yyvsp[0].mask);
   1993 		}
   1994 #line 1995 "config/m68k-parse.c"
   1995     break;
   1996 
   1997   case 81: /* ireglist: reglistreg  */
   1998 #line 626 "./config/m68k-parse.y"
   1999                 {
   2000 		  (yyval.mask) = 1 << (yyvsp[0].onereg);
   2001 		}
   2002 #line 2003 "config/m68k-parse.c"
   2003     break;
   2004 
   2005   case 83: /* ireglist: reglistpair '/' ireglist  */
   2006 #line 631 "./config/m68k-parse.y"
   2007                 {
   2008 		  (yyval.mask) = (yyvsp[-2].mask) | (yyvsp[0].mask);
   2009 		}
   2010 #line 2011 "config/m68k-parse.c"
   2011     break;
   2012 
   2013   case 84: /* ireglist: reglistreg '/' ireglist  */
   2014 #line 635 "./config/m68k-parse.y"
   2015                 {
   2016 		  (yyval.mask) = (1 << (yyvsp[-2].onereg)) | (yyvsp[0].mask);
   2017 		}
   2018 #line 2019 "config/m68k-parse.c"
   2019     break;
   2020 
   2021   case 85: /* reglistpair: reglistreg '-' reglistreg  */
   2022 #line 642 "./config/m68k-parse.y"
   2023                 {
   2024 		  if ((yyvsp[-2].onereg) <= (yyvsp[0].onereg))
   2025 		    (yyval.mask) = (1 << ((yyvsp[0].onereg) + 1)) - 1 - ((1 << (yyvsp[-2].onereg)) - 1);
   2026 		  else
   2027 		    (yyval.mask) = (1 << ((yyvsp[-2].onereg) + 1)) - 1 - ((1 << (yyvsp[0].onereg)) - 1);
   2028 		}
   2029 #line 2030 "config/m68k-parse.c"
   2030     break;
   2031 
   2032   case 86: /* reglistreg: DR  */
   2033 #line 652 "./config/m68k-parse.y"
   2034                 {
   2035 		  (yyval.onereg) = (yyvsp[0].reg) - DATA0;
   2036 		}
   2037 #line 2038 "config/m68k-parse.c"
   2038     break;
   2039 
   2040   case 87: /* reglistreg: AR  */
   2041 #line 656 "./config/m68k-parse.y"
   2042                 {
   2043 		  (yyval.onereg) = (yyvsp[0].reg) - ADDR0 + 8;
   2044 		}
   2045 #line 2046 "config/m68k-parse.c"
   2046     break;
   2047 
   2048   case 88: /* reglistreg: FPR  */
   2049 #line 660 "./config/m68k-parse.y"
   2050                 {
   2051 		  (yyval.onereg) = (yyvsp[0].reg) - FP0 + 16;
   2052 		}
   2053 #line 2054 "config/m68k-parse.c"
   2054     break;
   2055 
   2056   case 89: /* reglistreg: FPCR  */
   2057 #line 664 "./config/m68k-parse.y"
   2058                 {
   2059 		  if ((yyvsp[0].reg) == FPI)
   2060 		    (yyval.onereg) = 24;
   2061 		  else if ((yyvsp[0].reg) == FPS)
   2062 		    (yyval.onereg) = 25;
   2063 		  else
   2064 		    (yyval.onereg) = 26;
   2065 		}
   2066 #line 2067 "config/m68k-parse.c"
   2067     break;
   2068 
   2069 
   2070 #line 2071 "config/m68k-parse.c"
   2071 
   2072       default: break;
   2073     }
   2074   /* User semantic actions sometimes alter yychar, and that requires
   2075      that yytoken be updated with the new translation.  We take the
   2076      approach of translating immediately before every use of yytoken.
   2077      One alternative is translating here after every semantic action,
   2078      but that translation would be missed if the semantic action invokes
   2079      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
   2080      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
   2081      incorrect destructor might then be invoked immediately.  In the
   2082      case of YYERROR or YYBACKUP, subsequent parser actions might lead
   2083      to an incorrect destructor call or verbose syntax error message
   2084      before the lookahead is translated.  */
   2085   YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
   2086 
   2087   YYPOPSTACK (yylen);
   2088   yylen = 0;
   2089 
   2090   *++yyvsp = yyval;
   2091 
   2092   /* Now 'shift' the result of the reduction.  Determine what state
   2093      that goes to, based on the state we popped back to and the rule
   2094      number reduced by.  */
   2095   {
   2096     const int yylhs = yyr1[yyn] - YYNTOKENS;
   2097     const int yyi = yypgoto[yylhs] + *yyssp;
   2098     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
   2099                ? yytable[yyi]
   2100                : yydefgoto[yylhs]);
   2101   }
   2102 
   2103   goto yynewstate;
   2104 
   2105 
   2106 /*--------------------------------------.
   2107 | yyerrlab -- here on detecting error.  |
   2108 `--------------------------------------*/
   2109 yyerrlab:
   2110   /* Make sure we have latest lookahead translation.  See comments at
   2111      user semantic actions for why this is necessary.  */
   2112   yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
   2113   /* If not already recovering from an error, report this error.  */
   2114   if (!yyerrstatus)
   2115     {
   2116       ++yynerrs;
   2117       yyerror (YY_("syntax error"));
   2118     }
   2119 
   2120   if (yyerrstatus == 3)
   2121     {
   2122       /* If just tried and failed to reuse lookahead token after an
   2123          error, discard it.  */
   2124 
   2125       if (yychar <= YYEOF)
   2126         {
   2127           /* Return failure if at end of input.  */
   2128           if (yychar == YYEOF)
   2129             YYABORT;
   2130         }
   2131       else
   2132         {
   2133           yydestruct ("Error: discarding",
   2134                       yytoken, &yylval);
   2135           yychar = YYEMPTY;
   2136         }
   2137     }
   2138 
   2139   /* Else will try to reuse lookahead token after shifting the error
   2140      token.  */
   2141   goto yyerrlab1;
   2142 
   2143 
   2144 /*---------------------------------------------------.
   2145 | yyerrorlab -- error raised explicitly by YYERROR.  |
   2146 `---------------------------------------------------*/
   2147 yyerrorlab:
   2148   /* Pacify compilers when the user code never invokes YYERROR and the
   2149      label yyerrorlab therefore never appears in user code.  */
   2150   if (0)
   2151     YYERROR;
   2152   ++yynerrs;
   2153 
   2154   /* Do not reclaim the symbols of the rule whose action triggered
   2155      this YYERROR.  */
   2156   YYPOPSTACK (yylen);
   2157   yylen = 0;
   2158   YY_STACK_PRINT (yyss, yyssp);
   2159   yystate = *yyssp;
   2160   goto yyerrlab1;
   2161 
   2162 
   2163 /*-------------------------------------------------------------.
   2164 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
   2165 `-------------------------------------------------------------*/
   2166 yyerrlab1:
   2167   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
   2168 
   2169   /* Pop stack until we find a state that shifts the error token.  */
   2170   for (;;)
   2171     {
   2172       yyn = yypact[yystate];
   2173       if (!yypact_value_is_default (yyn))
   2174         {
   2175           yyn += YYSYMBOL_YYerror;
   2176           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
   2177             {
   2178               yyn = yytable[yyn];
   2179               if (0 < yyn)
   2180                 break;
   2181             }
   2182         }
   2183 
   2184       /* Pop the current state because it cannot handle the error token.  */
   2185       if (yyssp == yyss)
   2186         YYABORT;
   2187 
   2188 
   2189       yydestruct ("Error: popping",
   2190                   YY_ACCESSING_SYMBOL (yystate), yyvsp);
   2191       YYPOPSTACK (1);
   2192       yystate = *yyssp;
   2193       YY_STACK_PRINT (yyss, yyssp);
   2194     }
   2195 
   2196   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   2197   *++yyvsp = yylval;
   2198   YY_IGNORE_MAYBE_UNINITIALIZED_END
   2199 
   2200 
   2201   /* Shift the error token.  */
   2202   YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
   2203 
   2204   yystate = yyn;
   2205   goto yynewstate;
   2206 
   2207 
   2208 /*-------------------------------------.
   2209 | yyacceptlab -- YYACCEPT comes here.  |
   2210 `-------------------------------------*/
   2211 yyacceptlab:
   2212   yyresult = 0;
   2213   goto yyreturnlab;
   2214 
   2215 
   2216 /*-----------------------------------.
   2217 | yyabortlab -- YYABORT comes here.  |
   2218 `-----------------------------------*/
   2219 yyabortlab:
   2220   yyresult = 1;
   2221   goto yyreturnlab;
   2222 
   2223 
   2224 /*-----------------------------------------------------------.
   2225 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
   2226 `-----------------------------------------------------------*/
   2227 yyexhaustedlab:
   2228   yyerror (YY_("memory exhausted"));
   2229   yyresult = 2;
   2230   goto yyreturnlab;
   2231 
   2232 
   2233 /*----------------------------------------------------------.
   2234 | yyreturnlab -- parsing is finished, clean up and return.  |
   2235 `----------------------------------------------------------*/
   2236 yyreturnlab:
   2237   if (yychar != YYEMPTY)
   2238     {
   2239       /* Make sure we have latest lookahead translation.  See comments at
   2240          user semantic actions for why this is necessary.  */
   2241       yytoken = YYTRANSLATE (yychar);
   2242       yydestruct ("Cleanup: discarding lookahead",
   2243                   yytoken, &yylval);
   2244     }
   2245   /* Do not reclaim the symbols of the rule whose action triggered
   2246      this YYABORT or YYACCEPT.  */
   2247   YYPOPSTACK (yylen);
   2248   YY_STACK_PRINT (yyss, yyssp);
   2249   while (yyssp != yyss)
   2250     {
   2251       yydestruct ("Cleanup: popping",
   2252                   YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
   2253       YYPOPSTACK (1);
   2254     }
   2255 #ifndef yyoverflow
   2256   if (yyss != yyssa)
   2257     YYSTACK_FREE (yyss);
   2258 #endif
   2259 
   2260   return yyresult;
   2261 }
   2262 
   2263 #line 674 "./config/m68k-parse.y"
   2264 
   2265 
   2266 /* The string to parse is stored here, and modified by yylex.  */
   2267 
   2268 static char *str;
   2269 
   2270 /* The original string pointer.  */
   2271 
   2272 static char *strorig;
   2273 
   2274 /* If *CCP could be a register, return the register number and advance
   2275    *CCP.  Otherwise don't change *CCP, and return 0.  */
   2276 
   2277 static enum m68k_register
   2278 m68k_reg_parse (char **ccp)
   2279 {
   2280   char *start = *ccp;
   2281   char c;
   2282   char *p;
   2283   symbolS *symbolp;
   2284 
   2285   if (flag_reg_prefix_optional)
   2286     {
   2287       if (*start == REGISTER_PREFIX)
   2288 	start++;
   2289       p = start;
   2290     }
   2291   else
   2292     {
   2293       if (*start != REGISTER_PREFIX)
   2294 	return 0;
   2295       p = start + 1;
   2296     }
   2297 
   2298   if (! is_name_beginner (*p))
   2299     return 0;
   2300 
   2301   p++;
   2302   while (is_part_of_name (*p) && *p != '.' && *p != ':' && *p != '*')
   2303     p++;
   2304 
   2305   c = *p;
   2306   *p = 0;
   2307   symbolp = symbol_find (start);
   2308   *p = c;
   2309 
   2310   if (symbolp != NULL && S_GET_SEGMENT (symbolp) == reg_section)
   2311     {
   2312       *ccp = p;
   2313       return S_GET_VALUE (symbolp);
   2314     }
   2315 
   2316   /* In MRI mode, something like foo.bar can be equated to a register
   2317      name.  */
   2318   while (flag_mri && c == '.')
   2319     {
   2320       ++p;
   2321       while (is_part_of_name (*p) && *p != '.' && *p != ':' && *p != '*')
   2322 	p++;
   2323       c = *p;
   2324       *p = '\0';
   2325       symbolp = symbol_find (start);
   2326       *p = c;
   2327       if (symbolp != NULL && S_GET_SEGMENT (symbolp) == reg_section)
   2328 	{
   2329 	  *ccp = p;
   2330 	  return S_GET_VALUE (symbolp);
   2331 	}
   2332     }
   2333 
   2334   return 0;
   2335 }
   2336 
   2337 /* The lexer.  */
   2338 
   2339 static int
   2340 yylex (void)
   2341 {
   2342   enum m68k_register reg;
   2343   char *s;
   2344   int parens;
   2345   int c = 0;
   2346   int tail = 0;
   2347 
   2348   if (is_whitespace (*str))
   2349     ++str;
   2350 
   2351   if (*str == '\0')
   2352     return 0;
   2353 
   2354   /* Various special characters are just returned directly.  */
   2355   switch (*str)
   2356     {
   2357     case '@':
   2358       /* In MRI mode, this can be the start of an octal number.  */
   2359       if (flag_mri)
   2360 	{
   2361 	  if (ISDIGIT (str[1])
   2362 	      || ((str[1] == '+' || str[1] == '-')
   2363 		  && ISDIGIT (str[2])))
   2364 	    break;
   2365 	}
   2366       /* Fall through.  */
   2367     case '#':
   2368     case '&':
   2369     case ',':
   2370     case ')':
   2371     case '/':
   2372     case '[':
   2373     case ']':
   2374     case '<':
   2375     case '>':
   2376       return *str++;
   2377     case '+':
   2378       /* It so happens that a '+' can only appear at the end of an
   2379 	 operand, or if it is trailed by an '&'(see mac load insn).
   2380 	 If it appears anywhere else, it must be a unary.  */
   2381       if (str[1] == '\0' || (str[1] == '&' && str[2] == '\0'))
   2382 	return *str++;
   2383       break;
   2384     case '-':
   2385       /* A '-' can only appear in -(ar), rn-rn, or ar@-.  If it
   2386          appears anywhere else, it must be a unary minus on an
   2387          expression, unless it it trailed by a '&'(see mac load insn).  */
   2388       if (str[1] == '\0' || (str[1] == '&' && str[2] == '\0'))
   2389 	return *str++;
   2390       s = str + 1;
   2391       if (*s == '(')
   2392 	++s;
   2393       if (m68k_reg_parse (&s) != 0)
   2394 	return *str++;
   2395       break;
   2396     case '(':
   2397       /* A '(' can only appear in `(reg)', `(expr,...', `([', `@(', or
   2398          `)('.  If it appears anywhere else, it must be starting an
   2399          expression.  */
   2400       if (str[1] == '['
   2401 	  || (str > strorig
   2402 	      && (str[-1] == '@'
   2403 		  || str[-1] == ')')))
   2404 	return *str++;
   2405       s = str + 1;
   2406       if (m68k_reg_parse (&s) != 0)
   2407 	return *str++;
   2408       /* Check for the case of '(expr,...' by scanning ahead.  If we
   2409          find a comma outside of balanced parentheses, we return '('.
   2410          If we find an unbalanced right parenthesis, then presumably
   2411          the '(' really starts an expression.  */
   2412       parens = 0;
   2413       for (s = str + 1; *s != '\0'; s++)
   2414 	{
   2415 	  if (*s == '(')
   2416 	    ++parens;
   2417 	  else if (*s == ')')
   2418 	    {
   2419 	      if (parens == 0)
   2420 		break;
   2421 	      --parens;
   2422 	    }
   2423 	  else if (*s == ',' && parens == 0)
   2424 	    {
   2425 	      /* A comma can not normally appear in an expression, so
   2426 		 this is a case of '(expr,...'.  */
   2427 	      return *str++;
   2428 	    }
   2429 	}
   2430     }
   2431 
   2432   /* See if it's a register.  */
   2433 
   2434   reg = m68k_reg_parse (&str);
   2435   if (reg != 0)
   2436     {
   2437       int ret;
   2438 
   2439       yylval.reg = reg;
   2440 
   2441       if (reg >= DATA0 && reg <= DATA7)
   2442 	ret = DR;
   2443       else if (reg >= ADDR0 && reg <= ADDR7)
   2444 	ret = AR;
   2445       else if (reg >= FP0 && reg <= FP7)
   2446 	return FPR;
   2447       else if (reg == FPI
   2448 	       || reg == FPS
   2449 	       || reg == FPC)
   2450 	return FPCR;
   2451       else if (reg == PC)
   2452 	return LPC;
   2453       else if (reg >= ZDATA0 && reg <= ZDATA7)
   2454 	ret = ZDR;
   2455       else if (reg >= ZADDR0 && reg <= ZADDR7)
   2456 	ret = ZAR;
   2457       else if (reg == ZPC)
   2458 	return LZPC;
   2459       else
   2460 	return CREG;
   2461 
   2462       /* If we get here, we have a data or address register.  We
   2463 	 must check for a size or scale; if we find one, we must
   2464 	 return INDEXREG.  */
   2465 
   2466       s = str;
   2467 
   2468       if (*s != '.' && *s != ':' && *s != '*')
   2469 	return ret;
   2470 
   2471       yylval.indexreg.reg = reg;
   2472 
   2473       if (*s != '.' && *s != ':')
   2474 	yylval.indexreg.size = SIZE_UNSPEC;
   2475       else
   2476 	{
   2477 	  ++s;
   2478 	  switch (*s)
   2479 	    {
   2480 	    case 'w':
   2481 	    case 'W':
   2482 	      yylval.indexreg.size = SIZE_WORD;
   2483 	      ++s;
   2484 	      break;
   2485 	    case 'l':
   2486 	    case 'L':
   2487 	      yylval.indexreg.size = SIZE_LONG;
   2488 	      ++s;
   2489 	      break;
   2490 	    default:
   2491 	      yyerror (_("illegal size specification"));
   2492 	      yylval.indexreg.size = SIZE_UNSPEC;
   2493 	      break;
   2494 	    }
   2495 	}
   2496 
   2497       yylval.indexreg.scale = 1;
   2498 
   2499       if (*s == '*' || *s == ':')
   2500 	{
   2501 	  expressionS scale;
   2502 
   2503 	  ++s;
   2504 
   2505 	  temp_ilp (s);
   2506 	  expression (&scale);
   2507 	  s = input_line_pointer;
   2508 	  restore_ilp ();
   2509 
   2510 	  if (scale.X_op != O_constant)
   2511 	    yyerror (_("scale specification must resolve to a number"));
   2512 	  else
   2513 	    {
   2514 	      switch (scale.X_add_number)
   2515 		{
   2516 		case 1:
   2517 		case 2:
   2518 		case 4:
   2519 		case 8:
   2520 		  yylval.indexreg.scale = scale.X_add_number;
   2521 		  break;
   2522 		default:
   2523 		  yyerror (_("invalid scale value"));
   2524 		  break;
   2525 		}
   2526 	    }
   2527 	}
   2528 
   2529       str = s;
   2530 
   2531       return INDEXREG;
   2532     }
   2533 
   2534   /* It must be an expression.  Before we call expression, we need to
   2535      look ahead to see if there is a size specification.  We must do
   2536      that first, because otherwise foo.l will be treated as the symbol
   2537      foo.l, rather than as the symbol foo with a long size
   2538      specification.  The grammar requires that all expressions end at
   2539      the end of the operand, or with ',', '(', ']', ')'.  */
   2540 
   2541   parens = 0;
   2542   for (s = str; *s != '\0'; s++)
   2543     {
   2544       if (*s == '(')
   2545 	{
   2546 	  if (parens == 0
   2547 	      && s > str
   2548 	      && (s[-1] == ')' || ISALNUM (s[-1])))
   2549 	    break;
   2550 	  ++parens;
   2551 	}
   2552       else if (*s == ')')
   2553 	{
   2554 	  if (parens == 0)
   2555 	    break;
   2556 	  --parens;
   2557 	}
   2558       else if (parens == 0
   2559 	       && (*s == ',' || *s == ']'))
   2560 	break;
   2561     }
   2562 
   2563   yylval.exp.size = SIZE_UNSPEC;
   2564   if (s <= str + 2
   2565       || (s[-2] != '.' && s[-2] != ':'))
   2566     tail = 0;
   2567   else
   2568     {
   2569       switch (s[-1])
   2570 	{
   2571 	case 's':
   2572 	case 'S':
   2573 	case 'b':
   2574 	case 'B':
   2575 	  yylval.exp.size = SIZE_BYTE;
   2576 	  break;
   2577 	case 'w':
   2578 	case 'W':
   2579 	  yylval.exp.size = SIZE_WORD;
   2580 	  break;
   2581 	case 'l':
   2582 	case 'L':
   2583 	  yylval.exp.size = SIZE_LONG;
   2584 	  break;
   2585 	default:
   2586 	  break;
   2587 	}
   2588       if (yylval.exp.size != SIZE_UNSPEC)
   2589 	tail = 2;
   2590     }
   2591 
   2592 #ifdef OBJ_ELF
   2593   {
   2594     /* Look for @PLTPC, etc.  */
   2595     char *cp;
   2596 
   2597     yylval.exp.pic_reloc = pic_none;
   2598     cp = s - tail;
   2599     if (cp - 7 > str && cp[-7] == '@')
   2600       {
   2601 	if (startswith (cp - 7, "@TLSLDM"))
   2602 	  {
   2603 	    yylval.exp.pic_reloc = pic_tls_ldm;
   2604 	    tail += 7;
   2605 	  }
   2606 	else if (startswith (cp - 7, "@TLSLDO"))
   2607 	  {
   2608 	    yylval.exp.pic_reloc = pic_tls_ldo;
   2609 	    tail += 7;
   2610 	  }
   2611       }
   2612     else if (cp - 6 > str && cp[-6] == '@')
   2613       {
   2614 	if (startswith (cp - 6, "@PLTPC"))
   2615 	  {
   2616 	    yylval.exp.pic_reloc = pic_plt_pcrel;
   2617 	    tail += 6;
   2618 	  }
   2619 	else if (startswith (cp - 6, "@GOTPC"))
   2620 	  {
   2621 	    yylval.exp.pic_reloc = pic_got_pcrel;
   2622 	    tail += 6;
   2623 	  }
   2624 	else if (startswith (cp - 6, "@TLSGD"))
   2625 	  {
   2626 	    yylval.exp.pic_reloc = pic_tls_gd;
   2627 	    tail += 6;
   2628 	  }
   2629 	else if (startswith (cp - 6, "@TLSIE"))
   2630 	  {
   2631 	    yylval.exp.pic_reloc = pic_tls_ie;
   2632 	    tail += 6;
   2633 	  }
   2634 	else if (startswith (cp - 6, "@TLSLE"))
   2635 	  {
   2636 	    yylval.exp.pic_reloc = pic_tls_le;
   2637 	    tail += 6;
   2638 	  }
   2639       }
   2640     else if (cp - 4 > str && cp[-4] == '@')
   2641       {
   2642 	if (startswith (cp - 4, "@PLT"))
   2643 	  {
   2644 	    yylval.exp.pic_reloc = pic_plt_off;
   2645 	    tail += 4;
   2646 	  }
   2647 	else if (startswith (cp - 4, "@GOT"))
   2648 	  {
   2649 	    yylval.exp.pic_reloc = pic_got_off;
   2650 	    tail += 4;
   2651 	  }
   2652       }
   2653   }
   2654 #endif
   2655 
   2656   if (tail != 0)
   2657     {
   2658       c = s[-tail];
   2659       s[-tail] = 0;
   2660     }
   2661 
   2662   temp_ilp (str);
   2663   expression (&yylval.exp.exp);
   2664   str = input_line_pointer;
   2665   restore_ilp ();
   2666 
   2667   if (tail != 0)
   2668     {
   2669       s[-tail] = c;
   2670       str = s;
   2671     }
   2672 
   2673   return EXPR;
   2674 }
   2675 
   2676 /* Parse an m68k operand.  This is the only function which is called
   2677    from outside this file.  */
   2678 
   2679 int
   2680 m68k_ip_op (char *s, struct m68k_op *oparg)
   2681 {
   2682   memset (oparg, 0, sizeof *oparg);
   2683   oparg->error = NULL;
   2684   oparg->index.reg = ZDATA0;
   2685   oparg->index.scale = 1;
   2686   oparg->disp.exp.X_op = O_absent;
   2687   oparg->odisp.exp.X_op = O_absent;
   2688 
   2689   str = strorig = s;
   2690   op = oparg;
   2691 
   2692   return yyparse ();
   2693 }
   2694 
   2695 /* The error handler.  */
   2696 
   2697 static void
   2698 yyerror (const char *s)
   2699 {
   2700   op->error = s;
   2701 }
   2702