1/* A Bison parser, made by GNU Bison 3.0.  */
2
3/* Bison implementation for Yacc-like parsers in C
4
5   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6
7   This program is free software: you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation, either version 3 of the License, or
10   (at your option) any later version.
11
12   This program is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU General Public License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20/* As a special exception, you may create a larger work that contains
21   part or all of the Bison parser skeleton and distribute that work
22   under terms of your choice, so long as that work isn't itself a
23   parser generator using the skeleton or a modified version thereof
24   as a parser skeleton.  Alternatively, if you modify or redistribute
25   the parser skeleton itself, you may (at your option) remove this
26   special exception, which will cause the skeleton and the resulting
27   Bison output files to be licensed under the GNU General Public
28   License without this special exception.
29
30   This special exception was added by the Free Software Foundation in
31   version 2.2 of Bison.  */
32
33/* C LALR(1) parser skeleton written by Richard Stallman, by
34   simplifying the original so-called "semantic" parser.  */
35
36/* All symbols defined below should begin with yy or YY, to avoid
37   infringing on user name space.  This should be done even for local
38   variables, as they might otherwise be expanded by user macros.
39   There are some unavoidable exceptions within include files to
40   define necessary library symbols; they are noted "INFRINGES ON
41   USER NAME SPACE" below.  */
42
43/* Identify Bison output.  */
44#define YYBISON 1
45
46/* Bison version.  */
47#define YYBISON_VERSION "3.0"
48
49/* Skeleton name.  */
50#define YYSKELETON_NAME "yacc.c"
51
52/* Pure parsers.  */
53#define YYPURE 0
54
55/* Push parsers.  */
56#define YYPUSH 0
57
58/* Pull parsers.  */
59#define YYPULL 1
60
61
62/* Substitute the variable and function names.  */
63#define yyparse         rl78_parse
64#define yylex           rl78_lex
65#define yyerror         rl78_error
66#define yydebug         rl78_debug
67#define yynerrs         rl78_nerrs
68
69#define yylval          rl78_lval
70#define yychar          rl78_char
71
72/* Copy the first part of user declarations.  */
73#line 20 "./config/rl78-parse.y" /* yacc.c:339  */
74
75
76#include "as.h"
77#include "safe-ctype.h"
78#include "rl78-defs.h"
79
80static int rl78_lex (void);
81
82/* Ok, here are the rules for using these macros...
83
84   B*() is used to specify the base opcode bytes.  Fields to be filled
85        in later, leave zero.  Call this first.
86
87   F() and FE() are used to fill in fields within the base opcode bytes.  You MUST
88        call B*() before any F() or FE().
89
90   [UN]*O*(), PC*() appends operands to the end of the opcode.  You
91        must call P() and B*() before any of these, so that the fixups
92        have the right byte location.
93        O = signed, UO = unsigned, NO = negated, PC = pcrel
94
95   IMM() adds an immediate and fills in the field for it.
96   NIMM() same, but negates the immediate.
97   NBIMM() same, but negates the immediate, for sbb.
98   DSP() adds a displacement, and fills in the field for it.
99
100   Note that order is significant for the O, IMM, and DSP macros, as
101   they append their data to the operand buffer in the order that you
102   call them.
103
104   Use "disp" for displacements whenever possible; this handles the
105   "0" case properly.  */
106
107#define B1(b1)             rl78_base1 (b1)
108#define B2(b1, b2)         rl78_base2 (b1, b2)
109#define B3(b1, b2, b3)     rl78_base3 (b1, b2, b3)
110#define B4(b1, b2, b3, b4) rl78_base4 (b1, b2, b3, b4)
111
112/* POS is bits from the MSB of the first byte to the LSB of the last byte.  */
113#define F(val,pos,sz)      rl78_field (val, pos, sz)
114#define FE(exp,pos,sz)	   rl78_field (exp_val (exp), pos, sz);
115
116#define O1(v)              rl78_op (v, 1, RL78REL_DATA)
117#define O2(v)              rl78_op (v, 2, RL78REL_DATA)
118#define O3(v)              rl78_op (v, 3, RL78REL_DATA)
119#define O4(v)              rl78_op (v, 4, RL78REL_DATA)
120
121#define PC1(v)             rl78_op (v, 1, RL78REL_PCREL)
122#define PC2(v)             rl78_op (v, 2, RL78REL_PCREL)
123#define PC3(v)             rl78_op (v, 3, RL78REL_PCREL)
124
125#define IMM(v,pos)	   F (immediate (v, RL78REL_SIGNED, pos), pos, 2); \
126			   if (v.X_op != O_constant && v.X_op != O_big) rl78_linkrelax_imm (pos)
127#define NIMM(v,pos)	   F (immediate (v, RL78REL_NEGATIVE, pos), pos, 2)
128#define NBIMM(v,pos)	   F (immediate (v, RL78REL_NEGATIVE_BORROW, pos), pos, 2)
129#define DSP(v,pos,msz)	   if (!v.X_md) rl78_relax (RL78_RELAX_DISP, pos); \
130			   else rl78_linkrelax_dsp (pos); \
131			   F (displacement (v, msz), pos, 2)
132
133#define id24(a,b2,b3)	   B3 (0xfb+a, b2, b3)
134
135static int         expr_is_sfr (expressionS);
136static int         expr_is_saddr (expressionS);
137static int         expr_is_word_aligned (expressionS);
138static int         exp_val (expressionS exp);
139
140static int    need_flag = 0;
141static int    rl78_in_brackets = 0;
142static int    rl78_last_token = 0;
143static char * rl78_init_start;
144static char * rl78_last_exp_start = 0;
145static int    rl78_bit_insn = 0;
146
147#define YYDEBUG 1
148#define YYERROR_VERBOSE 1
149
150#define NOT_SADDR  rl78_error ("Expression not 0xFFE20 to 0xFFF1F")
151#define SA(e) if (!expr_is_saddr (e)) NOT_SADDR;
152
153#define SET_SA(e) e.X_md = BFD_RELOC_RL78_SADDR
154
155#define NOT_SFR  rl78_error ("Expression not 0xFFF00 to 0xFFFFF")
156#define SFR(e) if (!expr_is_sfr (e)) NOT_SFR;
157
158#define NOT_SFR_OR_SADDR  rl78_error ("Expression not 0xFFE20 to 0xFFFFF")
159
160#define NOT_ES if (rl78_has_prefix()) rl78_error ("ES: prefix not allowed here");
161
162#define WA(x) if (!expr_is_word_aligned (x)) rl78_error ("Expression not word-aligned");
163
164#define ISA_G10(s) if (!rl78_isa_g10()) rl78_error (s " is only supported on the G10")
165#define ISA_G13(s) if (!rl78_isa_g13()) rl78_error (s " is only supported on the G13")
166#define ISA_G14(s) if (!rl78_isa_g14()) rl78_error (s " is only supported on the G14")
167
168static void check_expr_is_bit_index (expressionS);
169#define Bit(e) check_expr_is_bit_index (e);
170
171/* Returns TRUE (non-zero) if the expression is a constant in the
172   given range.  */
173static int check_expr_is_const (expressionS, int vmin, int vmax);
174
175/* Convert a "regb" value to a "reg_xbc" value.  Error if other
176   registers are passed.  Needed to avoid reduce-reduce conflicts.  */
177static int
178reg_xbc (int reg)
179{
180  switch (reg)
181    {
182      case 0: /* X */
183        return 0x10;
184      case 3: /* B */
185        return 0x20;
186      case 2: /* C */
187        return 0x30;
188      default:
189        rl78_error ("Only X, B, or C allowed here");
190	return 0;
191    }
192}
193
194
195#line 196 "rl78-parse.c" /* yacc.c:339  */
196
197# ifndef YY_NULL
198#  if defined __cplusplus && 201103L <= __cplusplus
199#   define YY_NULL nullptr
200#  else
201#   define YY_NULL 0
202#  endif
203# endif
204
205/* Enabling verbose error messages.  */
206#ifdef YYERROR_VERBOSE
207# undef YYERROR_VERBOSE
208# define YYERROR_VERBOSE 1
209#else
210# define YYERROR_VERBOSE 0
211#endif
212
213/* In a future release of Bison, this section will be replaced
214   by #include "y.tab.h".  */
215#ifndef YY_RL78_RL_PARSE_H_INCLUDED
216# define YY_RL78_RL_PARSE_H_INCLUDED
217/* Debug traces.  */
218#ifndef YYDEBUG
219# define YYDEBUG 0
220#endif
221#if YYDEBUG
222extern int rl78_debug;
223#endif
224
225/* Token type.  */
226#ifndef YYTOKENTYPE
227# define YYTOKENTYPE
228  enum yytokentype
229  {
230    A = 258,
231    X = 259,
232    B = 260,
233    C = 261,
234    D = 262,
235    E = 263,
236    H = 264,
237    L = 265,
238    AX = 266,
239    BC = 267,
240    DE = 268,
241    HL = 269,
242    SPL = 270,
243    SPH = 271,
244    PSW = 272,
245    CS = 273,
246    ES = 274,
247    PMC = 275,
248    MEM = 276,
249    FLAG = 277,
250    SP = 278,
251    CY = 279,
252    RB0 = 280,
253    RB1 = 281,
254    RB2 = 282,
255    RB3 = 283,
256    EXPR = 284,
257    UNKNOWN_OPCODE = 285,
258    IS_OPCODE = 286,
259    DOT_S = 287,
260    DOT_B = 288,
261    DOT_W = 289,
262    DOT_L = 290,
263    DOT_A = 291,
264    DOT_UB = 292,
265    DOT_UW = 293,
266    ADD = 294,
267    ADDC = 295,
268    ADDW = 296,
269    AND_ = 297,
270    AND1 = 298,
271    BF = 299,
272    BH = 300,
273    BNC = 301,
274    BNH = 302,
275    BNZ = 303,
276    BR = 304,
277    BRK = 305,
278    BRK1 = 306,
279    BT = 307,
280    BTCLR = 308,
281    BZ = 309,
282    CALL = 310,
283    CALLT = 311,
284    CLR1 = 312,
285    CLRB = 313,
286    CLRW = 314,
287    CMP = 315,
288    CMP0 = 316,
289    CMPS = 317,
290    CMPW = 318,
291    DEC = 319,
292    DECW = 320,
293    DI = 321,
294    DIVHU = 322,
295    DIVWU = 323,
296    EI = 324,
297    HALT = 325,
298    INC = 326,
299    INCW = 327,
300    MACH = 328,
301    MACHU = 329,
302    MOV = 330,
303    MOV1 = 331,
304    MOVS = 332,
305    MOVW = 333,
306    MULH = 334,
307    MULHU = 335,
308    MULU = 336,
309    NOP = 337,
310    NOT1 = 338,
311    ONEB = 339,
312    ONEW = 340,
313    OR = 341,
314    OR1 = 342,
315    POP = 343,
316    PUSH = 344,
317    RET = 345,
318    RETI = 346,
319    RETB = 347,
320    ROL = 348,
321    ROLC = 349,
322    ROLWC = 350,
323    ROR = 351,
324    RORC = 352,
325    SAR = 353,
326    SARW = 354,
327    SEL = 355,
328    SET1 = 356,
329    SHL = 357,
330    SHLW = 358,
331    SHR = 359,
332    SHRW = 360,
333    SKC = 361,
334    SKH = 362,
335    SKNC = 363,
336    SKNH = 364,
337    SKNZ = 365,
338    SKZ = 366,
339    STOP = 367,
340    SUB = 368,
341    SUBC = 369,
342    SUBW = 370,
343    XCH = 371,
344    XCHW = 372,
345    XOR = 373,
346    XOR1 = 374
347  };
348#endif
349/* Tokens.  */
350#define A 258
351#define X 259
352#define B 260
353#define C 261
354#define D 262
355#define E 263
356#define H 264
357#define L 265
358#define AX 266
359#define BC 267
360#define DE 268
361#define HL 269
362#define SPL 270
363#define SPH 271
364#define PSW 272
365#define CS 273
366#define ES 274
367#define PMC 275
368#define MEM 276
369#define FLAG 277
370#define SP 278
371#define CY 279
372#define RB0 280
373#define RB1 281
374#define RB2 282
375#define RB3 283
376#define EXPR 284
377#define UNKNOWN_OPCODE 285
378#define IS_OPCODE 286
379#define DOT_S 287
380#define DOT_B 288
381#define DOT_W 289
382#define DOT_L 290
383#define DOT_A 291
384#define DOT_UB 292
385#define DOT_UW 293
386#define ADD 294
387#define ADDC 295
388#define ADDW 296
389#define AND_ 297
390#define AND1 298
391#define BF 299
392#define BH 300
393#define BNC 301
394#define BNH 302
395#define BNZ 303
396#define BR 304
397#define BRK 305
398#define BRK1 306
399#define BT 307
400#define BTCLR 308
401#define BZ 309
402#define CALL 310
403#define CALLT 311
404#define CLR1 312
405#define CLRB 313
406#define CLRW 314
407#define CMP 315
408#define CMP0 316
409#define CMPS 317
410#define CMPW 318
411#define DEC 319
412#define DECW 320
413#define DI 321
414#define DIVHU 322
415#define DIVWU 323
416#define EI 324
417#define HALT 325
418#define INC 326
419#define INCW 327
420#define MACH 328
421#define MACHU 329
422#define MOV 330
423#define MOV1 331
424#define MOVS 332
425#define MOVW 333
426#define MULH 334
427#define MULHU 335
428#define MULU 336
429#define NOP 337
430#define NOT1 338
431#define ONEB 339
432#define ONEW 340
433#define OR 341
434#define OR1 342
435#define POP 343
436#define PUSH 344
437#define RET 345
438#define RETI 346
439#define RETB 347
440#define ROL 348
441#define ROLC 349
442#define ROLWC 350
443#define ROR 351
444#define RORC 352
445#define SAR 353
446#define SARW 354
447#define SEL 355
448#define SET1 356
449#define SHL 357
450#define SHLW 358
451#define SHR 359
452#define SHRW 360
453#define SKC 361
454#define SKH 362
455#define SKNC 363
456#define SKNH 364
457#define SKNZ 365
458#define SKZ 366
459#define STOP 367
460#define SUB 368
461#define SUBC 369
462#define SUBW 370
463#define XCH 371
464#define XCHW 372
465#define XOR 373
466#define XOR1 374
467
468/* Value type.  */
469#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
470typedef union YYSTYPE YYSTYPE;
471union YYSTYPE
472{
473#line 144 "./config/rl78-parse.y" /* yacc.c:355  */
474
475  int regno;
476  expressionS exp;
477
478#line 479 "rl78-parse.c" /* yacc.c:355  */
479};
480# define YYSTYPE_IS_TRIVIAL 1
481# define YYSTYPE_IS_DECLARED 1
482#endif
483
484
485extern YYSTYPE rl78_lval;
486
487int rl78_parse (void);
488
489#endif /* !YY_RL78_RL_PARSE_H_INCLUDED  */
490
491/* Copy the second part of user declarations.  */
492
493#line 494 "rl78-parse.c" /* yacc.c:358  */
494
495#ifdef short
496# undef short
497#endif
498
499#ifdef YYTYPE_UINT8
500typedef YYTYPE_UINT8 yytype_uint8;
501#else
502typedef unsigned char yytype_uint8;
503#endif
504
505#ifdef YYTYPE_INT8
506typedef YYTYPE_INT8 yytype_int8;
507#else
508typedef signed char yytype_int8;
509#endif
510
511#ifdef YYTYPE_UINT16
512typedef YYTYPE_UINT16 yytype_uint16;
513#else
514typedef unsigned short int yytype_uint16;
515#endif
516
517#ifdef YYTYPE_INT16
518typedef YYTYPE_INT16 yytype_int16;
519#else
520typedef short int yytype_int16;
521#endif
522
523#ifndef YYSIZE_T
524# ifdef __SIZE_TYPE__
525#  define YYSIZE_T __SIZE_TYPE__
526# elif defined size_t
527#  define YYSIZE_T size_t
528# elif ! defined YYSIZE_T
529#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
530#  define YYSIZE_T size_t
531# else
532#  define YYSIZE_T unsigned int
533# endif
534#endif
535
536#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
537
538#ifndef YY_
539# if defined YYENABLE_NLS && YYENABLE_NLS
540#  if ENABLE_NLS
541#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
542#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
543#  endif
544# endif
545# ifndef YY_
546#  define YY_(Msgid) Msgid
547# endif
548#endif
549
550#ifndef __attribute__
551/* This feature is available in gcc versions 2.5 and later.  */
552# if (! defined __GNUC__ || __GNUC__ < 2 \
553      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
554#  define __attribute__(Spec) /* empty */
555# endif
556#endif
557
558/* Suppress unused-variable warnings by "using" E.  */
559#if ! defined lint || defined __GNUC__
560# define YYUSE(E) ((void) (E))
561#else
562# define YYUSE(E) /* empty */
563#endif
564
565#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
566/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
567# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
568    _Pragma ("GCC diagnostic push") \
569    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
570    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
571# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
572    _Pragma ("GCC diagnostic pop")
573#else
574# define YY_INITIAL_VALUE(Value) Value
575#endif
576#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
577# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
578# define YY_IGNORE_MAYBE_UNINITIALIZED_END
579#endif
580#ifndef YY_INITIAL_VALUE
581# define YY_INITIAL_VALUE(Value) /* Nothing. */
582#endif
583
584
585#if ! defined yyoverflow || YYERROR_VERBOSE
586
587/* The parser invokes alloca or malloc; define the necessary symbols.  */
588
589# ifdef YYSTACK_USE_ALLOCA
590#  if YYSTACK_USE_ALLOCA
591#   ifdef __GNUC__
592#    define YYSTACK_ALLOC __builtin_alloca
593#   elif defined __BUILTIN_VA_ARG_INCR
594#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
595#   elif defined _AIX
596#    define YYSTACK_ALLOC __alloca
597#   elif defined _MSC_VER
598#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
599#    define alloca _alloca
600#   else
601#    define YYSTACK_ALLOC alloca
602#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
603#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
604      /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
605#     ifndef EXIT_SUCCESS
606#      define EXIT_SUCCESS 0
607#     endif
608#    endif
609#   endif
610#  endif
611# endif
612
613# ifdef YYSTACK_ALLOC
614   /* Pacify GCC's 'empty if-body' warning.  */
615#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
616#  ifndef YYSTACK_ALLOC_MAXIMUM
617    /* The OS might guarantee only one guard page at the bottom of the stack,
618       and a page size can be as small as 4096 bytes.  So we cannot safely
619       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
620       to allow for a few compiler-allocated temporary stack slots.  */
621#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
622#  endif
623# else
624#  define YYSTACK_ALLOC YYMALLOC
625#  define YYSTACK_FREE YYFREE
626#  ifndef YYSTACK_ALLOC_MAXIMUM
627#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
628#  endif
629#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
630       && ! ((defined YYMALLOC || defined malloc) \
631             && (defined YYFREE || defined free)))
632#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
633#   ifndef EXIT_SUCCESS
634#    define EXIT_SUCCESS 0
635#   endif
636#  endif
637#  ifndef YYMALLOC
638#   define YYMALLOC malloc
639#   if ! defined malloc && ! defined EXIT_SUCCESS
640void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
641#   endif
642#  endif
643#  ifndef YYFREE
644#   define YYFREE free
645#   if ! defined free && ! defined EXIT_SUCCESS
646void free (void *); /* INFRINGES ON USER NAME SPACE */
647#   endif
648#  endif
649# endif
650#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
651
652
653#if (! defined yyoverflow \
654     && (! defined __cplusplus \
655         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
656
657/* A type that is properly aligned for any stack member.  */
658union yyalloc
659{
660  yytype_int16 yyss_alloc;
661  YYSTYPE yyvs_alloc;
662};
663
664/* The size of the maximum gap between one aligned stack and the next.  */
665# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
666
667/* The size of an array large to enough to hold all stacks, each with
668   N elements.  */
669# define YYSTACK_BYTES(N) \
670     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
671      + YYSTACK_GAP_MAXIMUM)
672
673# define YYCOPY_NEEDED 1
674
675/* Relocate STACK from its old location to the new one.  The
676   local variables YYSIZE and YYSTACKSIZE give the old and new number of
677   elements in the stack, and YYPTR gives the new location of the
678   stack.  Advance YYPTR to a properly aligned location for the next
679   stack.  */
680# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
681    do                                                                  \
682      {                                                                 \
683        YYSIZE_T yynewbytes;                                            \
684        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
685        Stack = &yyptr->Stack_alloc;                                    \
686        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
687        yyptr += yynewbytes / sizeof (*yyptr);                          \
688      }                                                                 \
689    while (0)
690
691#endif
692
693#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
694/* Copy COUNT objects from SRC to DST.  The source and destination do
695   not overlap.  */
696# ifndef YYCOPY
697#  if defined __GNUC__ && 1 < __GNUC__
698#   define YYCOPY(Dst, Src, Count) \
699      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
700#  else
701#   define YYCOPY(Dst, Src, Count)              \
702      do                                        \
703        {                                       \
704          YYSIZE_T yyi;                         \
705          for (yyi = 0; yyi < (Count); yyi++)   \
706            (Dst)[yyi] = (Src)[yyi];            \
707        }                                       \
708      while (0)
709#  endif
710# endif
711#endif /* !YYCOPY_NEEDED */
712
713/* YYFINAL -- State number of the termination state.  */
714#define YYFINAL  180
715/* YYLAST -- Last index in YYTABLE.  */
716#define YYLAST   844
717
718/* YYNTOKENS -- Number of terminals.  */
719#define YYNTOKENS  129
720/* YYNNTS -- Number of nonterminals.  */
721#define YYNNTS  56
722/* YYNRULES -- Number of rules.  */
723#define YYNRULES  324
724/* YYNSTATES -- Number of states.  */
725#define YYNSTATES  744
726
727/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
728   by yylex, with out-of-bounds checking.  */
729#define YYUNDEFTOK  2
730#define YYMAXUTOK   374
731
732#define YYTRANSLATE(YYX)                                                \
733  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
734
735/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
736   as returned by yylex, without out-of-bounds checking.  */
737static const yytype_uint8 yytranslate[] =
738{
739       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
740       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
741       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
742       2,     2,     2,   122,     2,   121,   127,     2,     2,     2,
743       2,     2,     2,   125,   120,     2,   126,     2,     2,     2,
744       2,     2,     2,     2,     2,     2,     2,     2,   128,     2,
745       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
746       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
747       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
748       2,   123,     2,   124,     2,     2,     2,     2,     2,     2,
749       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
750       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
751       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
752       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
753       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
754       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
755       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
756       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
757       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
758       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
759       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
760       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
761       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
762       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
763       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
764       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
765       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
766      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
767      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
768      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
769      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
770      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
771      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
772      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
773      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
774      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
775     105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
776     115,   116,   117,   118,   119
777};
778
779#if YYDEBUG
780  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
781static const yytype_uint16 yyrline[] =
782{
783       0,   187,   187,   208,   211,   211,   214,   217,   220,   223,
784     223,   226,   229,   232,   235,   238,   241,   250,   253,   256,
785     256,   259,   262,   265,   268,   276,   276,   279,   279,   288,
786     288,   291,   291,   296,   299,   302,   305,   308,   311,   316,
787     319,   328,   331,   336,   339,   342,   345,   348,   353,   356,
788     361,   364,   367,   370,   373,   394,   397,   400,   409,   412,
789     415,   420,   422,   424,   426,   429,   429,   432,   437,   439,
790     444,   447,   450,   453,   456,   456,   459,   464,   469,   472,
791     472,   474,   476,   478,   480,   485,   488,   488,   491,   494,
792     499,   502,   507,   507,   510,   510,   513,   516,   516,   524,
793     524,   527,   527,   530,   530,   535,   543,   545,   548,   555,
794     555,   564,   567,   570,   573,   576,   576,   585,   588,   591,
795     594,   597,   597,   606,   606,   606,   609,   612,   619,   619,
796     619,   626,   629,   632,   635,   638,   641,   644,   647,   650,
797     653,   656,   659,   662,   665,   668,   671,   674,   677,   680,
798     683,   686,   689,   692,   695,   698,   701,   704,   704,   707,
799     707,   710,   710,   713,   713,   716,   716,   719,   719,   724,
800     733,   736,   739,   742,   751,   754,   757,   762,   767,   770,
801     773,   773,   782,   782,   791,   791,   800,   803,   806,   809,
802     812,   815,   818,   821,   824,   827,   830,   833,   836,   839,
803     842,   845,   848,   851,   854,   857,   860,   860,   863,   863,
804     866,   866,   869,   869,   872,   872,   875,   878,   881,   884,
805     887,   892,   897,   902,   905,   908,   911,   916,   919,   922,
806     927,   932,   937,   942,   947,   952,   959,   964,   971,   974,
807     977,   980,   985,   990,   995,  1000,  1005,  1012,  1017,  1024,
808    1027,  1030,  1033,  1036,  1039,  1044,  1049,  1056,  1059,  1062,
809    1065,  1068,  1071,  1074,  1077,  1088,  1097,  1098,  1102,  1103,
810    1104,  1105,  1106,  1107,  1108,  1109,  1112,  1113,  1114,  1115,
811    1116,  1117,  1118,  1121,  1122,  1123,  1124,  1127,  1128,  1129,
812    1132,  1133,  1134,  1135,  1136,  1137,  1138,  1144,  1145,  1146,
813    1147,  1148,  1149,  1150,  1151,  1154,  1155,  1156,  1159,  1160,
814    1161,  1164,  1165,  1166,  1169,  1170,  1173,  1174,  1177,  1178,
815    1181,  1182,  1185,  1186,  1189
816};
817#endif
818
819#if YYDEBUG || YYERROR_VERBOSE || 0
820/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
821   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
822static const char *const yytname[] =
823{
824  "$end", "error", "$undefined", "A", "X", "B", "C", "D", "E", "H", "L",
825  "AX", "BC", "DE", "HL", "SPL", "SPH", "PSW", "CS", "ES", "PMC", "MEM",
826  "FLAG", "SP", "CY", "RB0", "RB1", "RB2", "RB3", "EXPR", "UNKNOWN_OPCODE",
827  "IS_OPCODE", "DOT_S", "DOT_B", "DOT_W", "DOT_L", "DOT_A", "DOT_UB",
828  "DOT_UW", "ADD", "ADDC", "ADDW", "AND_", "AND1", "BF", "BH", "BNC",
829  "BNH", "BNZ", "BR", "BRK", "BRK1", "BT", "BTCLR", "BZ", "CALL", "CALLT",
830  "CLR1", "CLRB", "CLRW", "CMP", "CMP0", "CMPS", "CMPW", "DEC", "DECW",
831  "DI", "DIVHU", "DIVWU", "EI", "HALT", "INC", "INCW", "MACH", "MACHU",
832  "MOV", "MOV1", "MOVS", "MOVW", "MULH", "MULHU", "MULU", "NOP", "NOT1",
833  "ONEB", "ONEW", "OR", "OR1", "POP", "PUSH", "RET", "RETI", "RETB", "ROL",
834  "ROLC", "ROLWC", "ROR", "RORC", "SAR", "SARW", "SEL", "SET1", "SHL",
835  "SHLW", "SHR", "SHRW", "SKC", "SKH", "SKNC", "SKNH", "SKNZ", "SKZ",
836  "STOP", "SUB", "SUBC", "SUBW", "XCH", "XCHW", "XOR", "XOR1", "','",
837  "'#'", "'!'", "'['", "']'", "'+'", "'.'", "'$'", "':'", "$accept",
838  "statement", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8",
839  "$@9", "$@10", "$@11", "$@12", "$@13", "$@14", "$@15", "$@16", "$@17",
840  "$@18", "$@19", "$@20", "$@21", "$@22", "$@23", "$@24", "$@25", "$@26",
841  "$@27", "$@28", "$@29", "$@30", "$@31", "$@32", "$@33", "$@34", "$@35",
842  "$@36", "$@37", "$@38", "opt_es", "regb", "regb_na", "regw", "regw_na",
843  "sfr", "addsub", "addsubw", "andor1", "bt_bf", "setclr1", "oneclrb",
844  "oneclrw", "incdec", "incdecw", "mov1", YY_NULL
845};
846#endif
847
848# ifdef YYPRINT
849/* YYTOKNUM[NUM] -- (External) token number corresponding to the
850   (internal) symbol number NUM (which must be that of a token).  */
851static const yytype_uint16 yytoknum[] =
852{
853       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
854     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
855     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
856     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
857     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
858     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
859     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
860     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
861     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
862     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
863     355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
864     365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
865      44,    35,    33,    91,    93,    43,    46,    36,    58
866};
867# endif
868
869#define YYPACT_NINF -212
870
871#define yypact_value_is_default(Yystate) \
872  (!!((Yystate) == (-212)))
873
874#define YYTABLE_NINF -1
875
876#define yytable_value_is_error(Yytable_value) \
877  0
878
879  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
880     STATE-NUM.  */
881static const yytype_int16 yypact[] =
882{
883     226,   -44,  -212,  -212,  -212,  -212,  -212,  -212,  -212,   -34,
884     -15,    14,    20,    42,  -212,  -212,  -212,  -212,    45,    91,
885     -80,  -212,  -212,  -212,  -212,   347,   134,  -212,  -212,  -212,
886    -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,    53,
887    -212,   136,   430,  -212,  -212,   153,  -212,   150,  -212,  -212,
888    -212,  -212,   413,   451,  -212,  -212,  -212,   181,   186,   198,
889     192,   212,   214,   225,   232,  -212,   368,   210,   236,   231,
890    -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
891     242,   244,  -212,  -212,   261,   221,   107,   325,   162,   343,
892     403,   222,    10,   235,   362,   328,   341,   385,   394,   402,
893    -212,    38,    81,   411,  -212,  -212,  -212,  -212,    82,   263,
894    -212,   428,  -212,  -212,  -212,  -212,   300,  -212,   273,   351,
895    -212,  -212,  -212,  -212,   367,  -212,  -212,  -212,  -212,  -212,
896    -212,  -212,  -212,  -212,  -212,  -212,   376,  -212,  -212,   457,
897      11,   372,   383,   384,   386,  -212,  -212,  -212,   388,    36,
898     389,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,   390,
899     391,   392,   393,   395,   396,   397,   398,  -212,  -212,  -212,
900    -212,   401,   404,   405,   406,   407,   408,   409,   410,   412,
901    -212,   414,  -212,   415,   416,   418,   419,   420,   379,   300,
902     417,   421,   422,   423,  -212,   424,     0,   425,  -212,  -212,
903    -212,  -212,  -212,   431,  -212,  -212,  -212,  -212,  -212,  -212,
904    -212,  -212,  -212,  -212,   426,  -212,   485,   505,  -212,  -212,
905     233,  -212,   432,   427,   434,   436,   435,  -212,  -212,  -212,
906    -212,  -212,  -212,   491,  -212,   493,  -212,  -212,   494,   502,
907     439,  -212,  -212,   504,   136,    80,   440,   437,   -79,   184,
908      29,    72,   521,   123,    41,    79,   512,   239,   102,   513,
909     516,   517,   523,   526,   527,   535,   536,   537,   538,   539,
910     540,   541,   542,   543,   429,   399,    18,   453,   545,   572,
911      95,   455,   381,   548,   549,   565,   551,   552,   553,   554,
912     570,   556,  -212,   557,   267,  -212,  -212,   462,  -212,   559,
913     575,   561,   400,   562,   578,   564,  -212,  -212,  -212,  -212,
914    -212,  -212,   471,   566,    63,  -212,  -212,   567,     5,     6,
915     161,   473,   268,   280,   330,  -212,   569,    86,   571,   573,
916    -212,   474,  -212,   574,    65,  -212,  -212,   576,    55,   342,
917     481,   480,   335,   345,   348,  -212,  -212,  -212,   577,   486,
918    -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
919    -212,  -212,  -212,  -212,  -212,  -212,   344,  -212,  -212,  -212,
920    -212,   580,   352,  -212,   489,   487,  -212,  -212,   582,   354,
921    -212,   583,   488,   490,   492,   495,   497,   498,   496,   499,
922    -212,  -212,   500,   501,  -212,  -212,   584,   608,   594,  -212,
923     503,   507,   506,   508,   510,   509,   511,   514,   519,   610,
924    -212,   518,   600,   433,   520,  -212,   601,  -212,   607,   522,
925     524,   525,   530,   531,   613,   532,   111,   533,   614,  -212,
926    -212,   615,  -212,  -212,   616,  -212,   534,   618,   438,  -212,
927    -212,   625,   544,   546,   547,   626,   555,   558,   627,   560,
928     629,   563,   630,  -212,  -212,   631,   632,   465,  -212,  -212,
929     633,   641,   634,   568,  -212,  -212,   635,   651,  -212,   637,
930     638,   655,   643,   550,   579,   581,   585,   644,   587,  -212,
931     586,   590,   645,   652,   650,   653,   667,   656,   660,   589,
932     662,   591,   363,  -212,  -212,   593,   356,   358,   360,     7,
933    -212,  -212,  -212,   588,   598,   599,     8,   684,   596,   685,
934     597,   602,   603,    27,   604,  -212,  -212,  -212,   605,   382,
935    -212,  -212,   606,   364,   366,   369,  -212,  -212,   611,   612,
936     617,  -212,   679,   680,   609,   681,   619,   682,   620,  -212,
937    -212,   371,   373,  -212,   375,  -212,   665,  -212,   377,  -212,
938    -212,   621,  -212,   666,   668,   669,   670,  -212,   671,   672,
939    -212,   622,  -212,  -212,  -212,   623,  -212,  -212,   673,  -212,
940     674,   624,   628,   636,  -212,  -212,   675,  -212,   114,  -212,
941     676,  -212,   693,  -212,    28,    30,    31,  -212,   694,  -212,
942     639,  -212,   642,   646,   647,  -212,   695,   648,  -212,  -212,
943     649,   640,   654,   657,  -212,  -212,   696,  -212,   705,  -212,
944     706,  -212,   698,   699,   725,  -212,  -212,   659,  -212,   663,
945    -212,   664,  -212,   709,  -212,   139,  -212,   165,  -212,  -212,
946     710,  -212,  -212,   661,  -212,  -212,  -212,   677,  -212,  -212,
947     658,  -212,   678,   683,   686,  -212,  -212,  -212,   687,   688,
948     689,   690,  -212,   691,  -212,  -212,   711,  -212,   712,  -212,
949     713,  -212,    32,   746,   747,    33,  -212,  -212,    35,   692,
950    -212,  -212,  -212,   697,   700,  -212,   701,  -212,  -212,  -212,
951     740,   742,  -212,   743,   702,   703,   704,   707,   708,   714,
952     715,   716,   726,   717,  -212,   727,   733,  -212,  -212,  -212,
953    -212,  -212,  -212,  -212,  -212,  -212,  -212,   729,  -212,  -212,
954    -212,   732,  -212,  -212,   734,  -212,  -212,  -212,  -212,  -212,
955    -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
956    -212,   736,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
957    -212,  -212,  -212,  -212
958};
959
960  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
961     Performed when YYTABLE does not specify something else to do.  Zero
962     means the default is an error.  */
963static const yytype_uint16 yydefact[] =
964{
965       0,     0,     2,   297,   298,   305,   302,   308,   312,     0,
966       0,     0,     0,     0,    48,    49,   311,   313,     0,     0,
967       0,   315,   317,   319,   301,   266,     0,   307,   321,   323,
968      90,    97,    99,    91,   105,   320,   322,   103,   101,   266,
969     324,   266,   266,    94,    92,     0,   221,     0,   316,   318,
970     303,   309,     0,     0,   227,   228,   229,     0,     0,     0,
971       0,     0,     0,     0,     0,   314,     0,     0,     0,     0,
972     249,   250,   251,   252,   253,   254,   255,   299,   300,   306,
973       0,     0,   304,   310,     0,   266,     0,     0,   266,   266,
974     266,     0,     0,   266,   266,     0,     0,     0,     0,     0,
975      43,     0,     0,     0,   283,   284,   285,   286,     0,     0,
976      50,     0,    70,    71,    72,    73,     0,    74,     0,     0,
977      98,   100,   104,   102,     0,   276,   278,   277,   280,   279,
978     282,   281,   290,   291,   292,   293,   294,   295,   296,     0,
979       0,     0,     0,     0,     0,   287,   288,   289,     0,     0,
980       0,    95,    93,    96,   222,   224,   223,   226,   225,     0,
981       0,     0,     0,     0,     0,     0,     0,   238,   239,   240,
982     241,     0,     0,     0,     0,     0,     0,     0,     0,     0,
983       1,     0,     4,     0,     0,     0,     0,     0,     0,   294,
984       0,     0,     0,     0,    55,     0,     0,     0,    61,    62,
985      63,    64,    65,     0,    68,    69,   269,   268,   271,   270,
986     273,   272,   275,   274,     0,    79,     0,     0,    78,    86,
987       0,    85,     0,     0,     0,     0,     0,    33,    37,    34,
988      38,    36,    46,     0,    44,     0,    35,    52,     0,     0,
989       0,   267,    75,     0,   266,   266,   267,     0,     0,     0,
990     266,   266,     0,   266,     0,     0,     0,     0,   266,     0,
991       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
992       0,     0,     0,     0,   266,     0,   266,     0,     0,     0,
993     266,     0,   266,     0,     0,     0,     0,     0,     0,     0,
994       0,     0,    66,     0,     0,    80,    81,     0,    87,     0,
995       0,     0,   266,     0,     0,     0,    47,    45,    53,    51,
996      54,    76,     0,     0,     0,   114,   126,     0,     0,     0,
997       0,     0,     0,     0,     0,   113,     0,     0,     0,     0,
998     127,     0,   219,     0,     0,   186,   218,     0,     0,     0,
999       0,     0,     0,     0,     0,   187,   220,   214,     0,     0,
1000     230,   231,   232,   233,   234,   235,   236,   237,   242,   243,
1001     244,   245,   246,   247,   248,   264,     0,   256,   265,     6,
1002       9,     0,     0,     7,     0,     0,     8,    19,     0,     0,
1003      18,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1004      58,    57,     0,     0,    56,    67,     0,     0,     0,    88,
1005       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1006     106,   121,     0,     0,     0,   118,     0,   115,     0,     0,
1007       0,     0,     0,     0,     0,     0,     0,     0,     0,   107,
1008     123,     0,   108,   128,     0,   178,   182,     0,     0,   217,
1009     184,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1010       0,     0,     0,   215,   179,     0,     0,     0,    10,     3,
1011       0,     0,     0,     0,    20,    17,     0,     0,    24,     0,
1012       0,     0,     0,     0,     0,     0,     0,     0,     0,    82,
1013       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1014       0,     0,     0,   122,   117,     0,     0,     0,     0,     0,
1015     111,   116,   109,     0,     0,     0,     0,     0,     0,     0,
1016       0,     0,     0,     0,     0,   124,   120,   129,     0,     0,
1017     183,   188,     0,     0,     0,     0,   185,   180,     0,     0,
1018       0,   189,     0,     0,     0,     0,     0,     0,     0,   216,
1019     257,     0,     0,    11,     0,     5,     0,    21,     0,    29,
1020      27,     0,    25,     0,     0,     0,     0,    59,     0,     0,
1021      83,     0,   174,   170,   169,     0,   171,   173,     0,   175,
1022       0,     0,     0,     0,   154,   131,     0,   136,     0,   163,
1023       0,   119,     0,   110,     0,     0,     0,   156,     0,   132,
1024       0,   137,     0,     0,     0,   167,     0,     0,   125,   130,
1025       0,     0,     0,     0,   203,   190,     0,   194,     0,   208,
1026       0,   181,     0,     0,     0,   205,   191,     0,   195,     0,
1027     212,     0,   258,     0,   260,     0,    12,     0,    16,    23,
1028       0,    30,    28,     0,    26,    41,    40,     0,    39,    60,
1029       0,    89,     0,     0,     0,   146,   149,   153,     0,     0,
1030       0,     0,   164,     0,   112,   147,     0,   150,     0,   155,
1031       0,   152,     0,     0,     0,     0,   168,   159,     0,     0,
1032     198,   200,   202,     0,     0,   209,     0,   199,   201,   204,
1033       0,     0,   213,     0,     0,     0,     0,     0,     0,     0,
1034       0,     0,     0,     0,    84,     0,     0,    77,   134,   141,
1035     143,   139,   161,   145,   148,   151,   135,     0,   142,   144,
1036     140,     0,   160,   165,     0,   177,   192,   196,   206,   193,
1037     197,   210,   259,   262,   263,   261,    14,    15,    13,    22,
1038      31,     0,   172,   176,   162,   133,   138,   166,   157,   207,
1039     211,    32,    42,   158
1040};
1041
1042  /* YYPGOTO[NTERM-NUM].  */
1043static const yytype_int16 yypgoto[] =
1044{
1045    -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
1046    -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
1047    -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
1048    -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
1049     -39,   529,   -84,   -48,  -211,   -82,  -212,  -212,  -212,  -212,
1050    -212,  -212,  -212,  -212,  -212,  -212
1051};
1052
1053  /* YYDEFGOTO[NTERM-NUM].  */
1054static const yytype_int16 yydefgoto[] =
1055{
1056      -1,    84,   277,   458,   464,   634,   632,   631,   741,   292,
1057     242,   295,   298,   152,   151,   120,   121,   123,   122,   583,
1058     501,   493,   515,   598,   517,   599,   743,   712,   734,   652,
1059     737,   666,   611,   520,   526,   739,   675,   740,   682,   453,
1060     118,   218,   141,   110,   150,   142,    85,    86,    87,    88,
1061      89,    90,    91,    92,    93,    94
1062};
1063
1064  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1065     positive, shift that token.  If negative, reduce the rule whose
1066     number is the opposite.  If YYTABLE_NINF, syntax error.  */
1067static const yytype_uint16 yytable[] =
1068{
1069     140,   184,   143,   149,   156,   158,   192,   197,   415,   417,
1070     581,   587,   226,   206,   207,   208,   209,   210,   211,   212,
1071     213,   369,   125,   126,   127,   128,   129,   130,   131,   214,
1072     595,   655,   325,   657,   659,   706,   710,   116,   713,   215,
1073     248,   319,   335,   111,   320,   221,   183,   370,   116,   191,
1074     196,   203,   336,   100,   220,   225,   124,   125,   126,   127,
1075     128,   129,   130,   131,   368,   255,   440,   232,   132,   133,
1076     134,   135,   136,   137,   138,   206,   207,   208,   209,   210,
1077     211,   212,   213,    95,   125,   126,   127,   128,   129,   130,
1078     131,   116,   411,    96,   436,   132,   133,   134,   135,   189,
1079     137,   138,   104,   105,   106,   107,   104,   105,   106,   107,
1080     234,   237,    97,   345,   116,   430,   510,   511,   185,   649,
1081     650,   116,   289,   290,   377,   346,   416,   418,   582,   588,
1082     186,   347,   216,   217,   249,   145,   146,   147,   119,   371,
1083     512,    98,   116,   651,   685,   686,   332,    99,   596,   656,
1084     326,   658,   660,   707,   711,   116,   714,   153,   256,   257,
1085     233,   315,   337,   316,   101,   188,   419,   420,   687,   102,
1086     688,   689,   103,   421,   154,   139,   441,   132,   133,   134,
1087     135,   189,   137,   138,   159,   412,   413,   437,   438,   160,
1088     367,   190,   373,   328,   690,   163,   321,   322,   323,   338,
1089     385,   313,   339,   235,   238,   312,   314,   324,   431,   161,
1090     162,   327,   329,   108,   334,   164,   378,   165,   109,   349,
1091     405,   174,   175,   348,   181,   125,   126,   127,   128,   129,
1092     130,   131,   380,   204,   205,   366,   166,   372,     1,   176,
1093     116,   379,   177,   384,   333,   178,   104,   105,   106,   107,
1094     182,   341,   342,   343,   116,   179,     2,   167,   168,   169,
1095     170,   180,   344,   404,   219,     3,     4,     5,     6,     7,
1096       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
1097      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
1098      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
1099      38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
1100      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
1101      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
1102      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
1103      78,    79,    80,    81,    82,    83,   193,   442,   443,   187,
1104     112,   113,   114,   115,   444,   299,   300,   227,   132,   133,
1105     134,   135,   189,   137,   138,   222,   116,   194,   571,   572,
1106     228,   171,   195,   172,   173,   573,   117,   132,   133,   134,
1107     135,   189,   137,   138,   382,   239,   223,   601,   602,   396,
1108     397,   224,   423,   424,   603,   243,   132,   133,   134,   135,
1109     189,   137,   138,   402,   425,   426,   198,   199,   200,   201,
1110     383,   145,   146,   147,   229,   132,   133,   134,   135,   189,
1111     137,   138,   116,   230,   104,   105,   106,   107,   241,   403,
1112     155,   231,   202,   125,   126,   127,   128,   129,   130,   131,
1113     236,   144,   145,   146,   147,   495,   496,   497,   116,   116,
1114     522,   523,   524,   148,   427,   428,   498,   240,   365,   447,
1115     448,   525,   104,   105,   106,   107,   456,   457,   157,   449,
1116     450,   244,   451,   452,   460,   461,   466,   467,   541,   542,
1117     575,   576,   577,   578,   579,   580,   247,   245,   605,   606,
1118     607,   608,   250,   609,   610,   622,   623,   624,   625,   626,
1119     627,   629,   630,   251,   246,   283,   253,   252,   254,   258,
1120     259,   260,   261,   262,   296,   263,   264,   265,   266,   297,
1121     306,   267,   307,   308,   268,   269,   270,   271,   272,   273,
1122     274,   309,   275,   311,   276,   331,   279,   278,   280,   281,
1123     282,   340,   350,   284,   285,   351,   352,   302,   286,   287,
1124     288,   291,   353,   293,   294,   354,   355,   318,   301,   304,
1125     303,   305,   317,   310,   356,   357,   358,   359,   360,   361,
1126     362,   363,   364,   374,   375,   376,   381,   386,   387,   388,
1127     389,   390,   391,   392,   393,   394,   395,   398,   399,   400,
1128     401,   406,   407,   408,   409,   410,   414,   422,   429,   434,
1129     432,   445,   433,   435,   446,   439,   454,   463,   455,   459,
1130     462,   465,   468,   479,   469,   471,   470,   473,   474,   476,
1131     475,   472,   480,   481,   491,   478,   477,   483,   482,   494,
1132     500,   488,   484,   486,   485,   487,   502,   531,   489,   490,
1133     499,   492,   508,   514,   516,   518,   503,   521,   504,   505,
1134     506,   507,   509,   513,   527,   544,   534,   519,   536,   538,
1135     539,   540,   543,   545,   547,   548,   549,   550,   528,   551,
1136     529,   530,   552,   557,   561,   532,   562,   553,   533,   563,
1137     535,   565,   564,   537,   567,   566,   569,   589,   591,   546,
1138     615,   616,   618,   620,   628,   635,   715,   636,   637,   638,
1139     639,   640,   643,   644,   648,   653,   554,   555,   584,   677,
1140     678,   559,   556,   558,   560,   568,   570,   574,   585,   586,
1141     590,   592,   654,   661,   667,   673,   593,   594,   597,   600,
1142     604,   612,   613,   617,   674,   676,   679,   614,   684,   691,
1143     703,   704,   705,   619,   621,   633,   641,   642,   645,   708,
1144     709,   719,   646,   720,   721,   730,   732,   733,   735,   662,
1145     647,   736,   663,   738,   670,   742,   664,   665,   668,   669,
1146       0,     0,     0,     0,     0,     0,     0,     0,   671,   680,
1147     330,   672,   694,   681,   683,     0,     0,   692,     0,     0,
1148       0,     0,     0,     0,     0,     0,     0,   693,     0,     0,
1149       0,     0,     0,   696,   695,     0,     0,     0,     0,     0,
1150     697,   698,   699,   700,   701,   702,     0,     0,     0,     0,
1151       0,   716,     0,     0,   717,   718,   722,   723,   724,     0,
1152       0,   725,   726,     0,     0,     0,     0,     0,   727,   728,
1153     729,     0,     0,     0,   731
1154};
1155
1156static const yytype_int16 yycheck[] =
1157{
1158      39,    85,    41,    42,    52,    53,    88,    89,     3,     3,
1159       3,     3,    94,     3,     4,     5,     6,     7,     8,     9,
1160      10,     3,     4,     5,     6,     7,     8,     9,    10,    19,
1161       3,     3,     3,     3,     3,     3,     3,    19,     3,    29,
1162      29,   120,   253,   123,   123,    93,    85,    29,    19,    88,
1163      89,    90,    11,    11,    93,    94,     3,     4,     5,     6,
1164       7,     8,     9,    10,   275,    29,    11,    29,    15,    16,
1165      17,    18,    19,    20,    21,     3,     4,     5,     6,     7,
1166       8,     9,    10,   127,     4,     5,     6,     7,     8,     9,
1167      10,    19,    29,   127,    29,    15,    16,    17,    18,    19,
1168      20,    21,    11,    12,    13,    14,    11,    12,    13,    14,
1169      29,    29,   127,    11,    19,    29,     5,     6,    11,     5,
1170       6,    19,   122,   123,    29,    23,   121,   121,   121,   121,
1171      23,    29,   122,   123,   123,    12,    13,    14,     4,   121,
1172      29,   127,    19,    29,     5,     6,    23,   127,   121,   121,
1173     121,   121,   121,   121,   121,    19,   121,     4,   122,   123,
1174     122,   245,   121,   245,   122,     3,     5,     6,    29,   127,
1175       5,     6,   127,    12,    24,   122,   121,    15,    16,    17,
1176      18,    19,    20,    21,     3,   122,   123,   122,   123,     3,
1177     274,    29,   276,   121,    29,     3,    12,    13,    14,   120,
1178     282,   121,   123,   122,   122,   244,   245,    23,   122,    11,
1179      12,   250,   251,   122,   253,     3,   121,     3,   127,   258,
1180     302,    11,    12,   121,     3,     4,     5,     6,     7,     8,
1181       9,    10,   280,    11,    12,   274,    11,   276,    12,     3,
1182      19,   280,    11,   282,   121,     3,    11,    12,    13,    14,
1183      29,    12,    13,    14,    19,    11,    30,    25,    26,    27,
1184      28,     0,    23,   302,    29,    39,    40,    41,    42,    43,
1185      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
1186      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
1187      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
1188      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
1189      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
1190      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
1191     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
1192     114,   115,   116,   117,   118,   119,     3,     5,     6,    24,
1193       3,     4,     5,     6,    12,   122,   123,    29,    15,    16,
1194      17,    18,    19,    20,    21,     3,    19,    24,     5,     6,
1195      29,     3,    29,     5,     6,    12,    29,    15,    16,    17,
1196      18,    19,    20,    21,     3,   122,    24,     5,     6,   122,
1197     123,    29,   124,   125,    12,   122,    15,    16,    17,    18,
1198      19,    20,    21,     3,   124,   125,     3,     4,     5,     6,
1199      29,    12,    13,    14,    29,    15,    16,    17,    18,    19,
1200      20,    21,    19,    29,    11,    12,    13,    14,   128,    29,
1201      17,    29,    29,     4,     5,     6,     7,     8,     9,    10,
1202      29,    11,    12,    13,    14,    12,    13,    14,    19,    19,
1203      12,    13,    14,    23,   124,   125,    23,    29,    29,   124,
1204     125,    23,    11,    12,    13,    14,   122,   123,    17,   124,
1205     125,   120,   124,   125,   122,   123,   122,   123,    13,    14,
1206     124,   125,   124,   125,   124,   125,    29,   120,   124,   125,
1207     124,   125,   120,   124,   125,   124,   125,   124,   125,   124,
1208     125,   124,   125,   120,   128,   126,   120,   123,   120,   120,
1209     120,   120,   120,   120,    29,   120,   120,   120,   120,    14,
1210      29,   120,    29,    29,   120,   120,   120,   120,   120,   120,
1211     120,    29,   120,    29,   120,    14,   120,   122,   120,   120,
1212     120,    29,    29,   126,   123,    29,    29,   120,   126,   126,
1213     126,   126,    29,   122,   128,    29,    29,   120,   126,   123,
1214     126,   126,   122,   124,    29,    29,    29,    29,    29,    29,
1215      29,    29,    29,   120,    29,     3,   121,    29,    29,    14,
1216      29,    29,    29,    29,    14,    29,    29,   125,    29,    14,
1217      29,    29,    14,    29,   123,    29,    29,   124,    29,   125,
1218      29,   120,    29,    29,   124,    29,    29,   120,   122,    29,
1219     121,    29,    29,    29,   126,   123,   126,   120,   120,   120,
1220     124,   126,    14,    29,    14,   124,   126,   120,   125,    29,
1221      29,   120,   126,   123,   126,   126,    29,    11,   124,   120,
1222     120,   123,    29,    29,    29,    29,   124,    29,   124,   124,
1223     120,   120,   120,   120,    29,    14,    29,   123,    29,    29,
1224      29,    29,    29,    29,    29,    14,    29,    29,   124,    14,
1225     124,   124,    29,    29,    29,   120,    24,   127,   120,    29,
1226     120,    14,    29,   120,    24,    29,    24,     3,     3,   121,
1227      11,    11,    11,    11,    29,    29,     4,    29,    29,    29,
1228      29,    29,    29,    29,    29,    29,   127,   126,   120,    11,
1229      11,   125,   127,   126,   124,   126,   125,   124,   120,   120,
1230     124,   124,    29,    29,    29,    29,   124,   124,   124,   124,
1231     124,   120,   120,   124,    29,    29,    11,   120,    29,    29,
1232      29,    29,    29,   124,   124,   124,   124,   124,   124,     3,
1233       3,    11,   124,    11,    11,    29,    29,    24,    29,   120,
1234     124,    29,   120,    29,   124,    29,   120,   120,   120,   120,
1235      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,   120,
1236     251,   124,   124,   120,   120,    -1,    -1,   126,    -1,    -1,
1237      -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,
1238      -1,    -1,    -1,   120,   126,    -1,    -1,    -1,    -1,    -1,
1239     124,   124,   124,   124,   124,   124,    -1,    -1,    -1,    -1,
1240      -1,   124,    -1,    -1,   124,   124,   124,   124,   124,    -1,
1241      -1,   124,   124,    -1,    -1,    -1,    -1,    -1,   124,   124,
1242     124,    -1,    -1,    -1,   127
1243};
1244
1245  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1246     symbol of state STATE-NUM.  */
1247static const yytype_uint8 yystos[] =
1248{
1249       0,    12,    30,    39,    40,    41,    42,    43,    44,    45,
1250      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
1251      56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
1252      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
1253      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
1254      86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
1255      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
1256     106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
1257     116,   117,   118,   119,   130,   175,   176,   177,   178,   179,
1258     180,   181,   182,   183,   184,   127,   127,   127,   127,   127,
1259      11,   122,   127,   127,    11,    12,    13,    14,   122,   127,
1260     172,   123,     3,     4,     5,     6,    19,    29,   169,     4,
1261     144,   145,   147,   146,     3,     4,     5,     6,     7,     8,
1262       9,    10,    15,    16,    17,    18,    19,    20,    21,   122,
1263     169,   171,   174,   169,    11,    12,    13,    14,    23,   169,
1264     173,   143,   142,     4,    24,    17,   172,    17,   172,     3,
1265       3,    11,    12,     3,     3,     3,    11,    25,    26,    27,
1266      28,     3,     5,     6,    11,    12,     3,    11,     3,    11,
1267       0,     3,    29,   169,   171,    11,    23,    24,     3,    19,
1268      29,   169,   174,     3,    24,    29,   169,   174,     3,     4,
1269       5,     6,    29,   169,    11,    12,     3,     4,     5,     6,
1270       7,     8,     9,    10,    19,    29,   122,   123,   170,    29,
1271     169,   172,     3,    24,    29,   169,   174,    29,    29,    29,
1272      29,    29,    29,   122,    29,   122,    29,    29,   122,   122,
1273      29,   128,   139,   122,   120,   120,   128,    29,    29,   123,
1274     120,   120,   123,   120,   120,    29,   122,   123,   120,   120,
1275     120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
1276     120,   120,   120,   120,   120,   120,   120,   131,   122,   120,
1277     120,   120,   120,   126,   126,   123,   126,   126,   126,   122,
1278     123,   126,   138,   122,   128,   140,    29,    14,   141,   122,
1279     123,   126,   120,   126,   123,   126,    29,    29,    29,    29,
1280     124,    29,   169,   121,   169,   171,   174,   122,   120,   120,
1281     123,    12,    13,    14,    23,     3,   121,   169,   121,   169,
1282     170,    14,    23,   121,   169,   173,    11,   121,   120,   123,
1283      29,    12,    13,    14,    23,    11,    23,    29,   121,   169,
1284      29,    29,    29,    29,    29,    29,    29,    29,    29,    29,
1285      29,    29,    29,    29,    29,    29,   169,   171,   173,     3,
1286      29,   121,   169,   171,   120,    29,     3,    29,   121,   169,
1287     172,   121,     3,    29,   169,   174,    29,    29,    14,    29,
1288      29,    29,    29,    14,    29,    29,   122,   123,   125,    29,
1289      14,    29,     3,    29,   169,   174,    29,    14,    29,   123,
1290      29,    29,   122,   123,    29,     3,   121,     3,   121,     5,
1291       6,    12,   124,   124,   125,   124,   125,   124,   125,    29,
1292      29,   122,    29,    29,   125,    29,    29,   122,   123,    29,
1293      11,   121,     5,     6,    12,   120,   124,   124,   125,   124,
1294     125,   124,   125,   168,    29,   122,   122,   123,   132,    29,
1295     122,   123,   121,   120,   133,    29,   122,   123,    29,   126,
1296     126,   123,   126,   120,   120,   124,   120,   126,   124,    29,
1297      14,    29,   125,   120,   126,   126,   123,   126,   120,   124,
1298     120,    14,   123,   150,    29,    12,    13,    14,    23,   120,
1299      29,   149,    29,   124,   124,   124,   120,   120,    29,   120,
1300       5,     6,    29,   120,    29,   151,    29,   153,    29,   123,
1301     162,    29,    12,    13,    14,    23,   163,    29,   124,   124,
1302     124,    11,   120,   120,    29,   120,    29,   120,    29,    29,
1303      29,    13,    14,    29,    14,    29,   121,    29,    14,    29,
1304      29,    14,    29,   127,   127,   126,   127,    29,   126,   125,
1305     124,    29,    24,    29,    29,    14,    29,    24,   126,    24,
1306     125,     5,     6,    12,   124,   124,   125,   124,   125,   124,
1307     125,     3,   121,   148,   120,   120,   120,     3,   121,     3,
1308     124,     3,   124,   124,   124,     3,   121,   124,   152,   154,
1309     124,     5,     6,    12,   124,   124,   125,   124,   125,   124,
1310     125,   161,   120,   120,   120,    11,    11,   124,    11,   124,
1311      11,   124,   124,   125,   124,   125,   124,   125,    29,   124,
1312     125,   136,   135,   124,   134,    29,    29,    29,    29,    29,
1313      29,   124,   124,    29,    29,   124,   124,   124,    29,     5,
1314       6,    29,   158,    29,    29,     3,   121,     3,   121,     3,
1315     121,    29,   120,   120,   120,   120,   160,    29,   120,   120,
1316     124,   124,   124,    29,    29,   165,    29,    11,    11,    11,
1317     120,   120,   167,   120,    29,     5,     6,    29,     5,     6,
1318      29,    29,   126,   120,   124,   126,   120,   124,   124,   124,
1319     124,   124,   124,    29,    29,    29,     3,   121,     3,     3,
1320       3,   121,   156,     3,   121,     4,   124,   124,   124,    11,
1321      11,    11,   124,   124,   124,   124,   124,   124,   124,   124,
1322      29,   127,    29,    24,   157,    29,    29,   159,    29,   164,
1323     166,   137,    29,   155
1324};
1325
1326  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1327static const yytype_uint8 yyr1[] =
1328{
1329       0,   129,   130,   130,   131,   130,   130,   130,   130,   132,
1330     130,   130,   130,   130,   130,   130,   130,   130,   130,   133,
1331     130,   130,   130,   130,   130,   134,   130,   135,   130,   136,
1332     130,   137,   130,   130,   130,   130,   130,   130,   130,   130,
1333     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1334     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1335     130,   130,   130,   130,   130,   138,   130,   130,   130,   130,
1336     130,   130,   130,   130,   139,   130,   130,   130,   130,   140,
1337     130,   130,   130,   130,   130,   130,   141,   130,   130,   130,
1338     130,   130,   142,   130,   143,   130,   130,   144,   130,   145,
1339     130,   146,   130,   147,   130,   130,   130,   130,   130,   148,
1340     130,   130,   130,   130,   130,   149,   130,   130,   130,   130,
1341     130,   150,   130,   151,   152,   130,   130,   130,   153,   154,
1342     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1343     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1344     130,   130,   130,   130,   130,   130,   130,   155,   130,   156,
1345     130,   157,   130,   158,   130,   159,   130,   160,   130,   130,
1346     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1347     161,   130,   162,   130,   163,   130,   130,   130,   130,   130,
1348     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1349     130,   130,   130,   130,   130,   130,   164,   130,   165,   130,
1350     166,   130,   167,   130,   168,   130,   130,   130,   130,   130,
1351     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1352     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1353     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1354     130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1355     130,   130,   130,   130,   130,   130,   169,   169,   170,   170,
1356     170,   170,   170,   170,   170,   170,   171,   171,   171,   171,
1357     171,   171,   171,   172,   172,   172,   172,   173,   173,   173,
1358     174,   174,   174,   174,   174,   174,   174,   175,   175,   175,
1359     175,   175,   175,   175,   175,   176,   176,   176,   177,   177,
1360     177,   178,   178,   178,   179,   179,   180,   180,   181,   181,
1361     182,   182,   183,   183,   184
1362};
1363
1364  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
1365static const yytype_uint8 yyr2[] =
1366{
1367       0,     2,     1,     5,     0,     6,     4,     4,     4,     0,
1368       5,     6,     7,     9,     9,     9,     7,     5,     4,     0,
1369       5,     6,     9,     7,     5,     0,     7,     0,     7,     0,
1370       7,     0,    10,     3,     3,     3,     3,     3,     3,     7,
1371       7,     7,    10,     2,     3,     4,     3,     4,     1,     1,
1372       2,     4,     3,     4,     4,     2,     4,     4,     4,     6,
1373       7,     2,     2,     2,     2,     0,     3,     4,     2,     2,
1374       2,     2,     2,     2,     0,     3,     4,     9,     2,     0,
1375       3,     3,     5,     6,     8,     2,     0,     3,     4,     7,
1376       1,     1,     0,     2,     0,     2,     2,     0,     2,     0,
1377       2,     0,     2,     0,     2,     1,     5,     5,     5,     0,
1378       7,     6,     8,     4,     4,     0,     6,     6,     5,     7,
1379       6,     0,     6,     0,     0,     7,     4,     4,     0,     0,
1380       7,     7,     7,    10,     9,     9,     7,     7,    10,     9,
1381       9,     9,     9,     9,     9,     9,     8,     8,     9,     8,
1382       8,     9,     8,     8,     7,     8,     7,     0,    11,     0,
1383       9,     0,    10,     0,     8,     0,    10,     0,     8,     6,
1384       6,     6,     9,     6,     6,     6,     9,     9,     5,     5,
1385       0,     7,     0,     6,     0,     6,     4,     4,     6,     6,
1386       7,     7,     9,     9,     7,     7,     9,     9,     8,     8,
1387       8,     8,     8,     7,     8,     7,     0,    10,     0,     8,
1388       0,    10,     0,     8,     0,     5,     6,     5,     4,     4,
1389       4,     1,     2,     2,     2,     2,     2,     1,     1,     1,
1390       4,     4,     4,     4,     4,     4,     4,     4,     2,     2,
1391       2,     2,     4,     4,     4,     4,     4,     4,     4,     1,
1392       1,     1,     1,     1,     1,     1,     4,     6,     7,     9,
1393       7,     9,     9,     9,     4,     4,     0,     2,     1,     1,
1394       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1395       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1396       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1397       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1398       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1399       1,     1,     1,     1,     1
1400};
1401
1402
1403#define yyerrok         (yyerrstatus = 0)
1404#define yyclearin       (yychar = YYEMPTY)
1405#define YYEMPTY         (-2)
1406#define YYEOF           0
1407
1408#define YYACCEPT        goto yyacceptlab
1409#define YYABORT         goto yyabortlab
1410#define YYERROR         goto yyerrorlab
1411
1412
1413#define YYRECOVERING()  (!!yyerrstatus)
1414
1415#define YYBACKUP(Token, Value)                                  \
1416do                                                              \
1417  if (yychar == YYEMPTY)                                        \
1418    {                                                           \
1419      yychar = (Token);                                         \
1420      yylval = (Value);                                         \
1421      YYPOPSTACK (yylen);                                       \
1422      yystate = *yyssp;                                         \
1423      goto yybackup;                                            \
1424    }                                                           \
1425  else                                                          \
1426    {                                                           \
1427      yyerror (YY_("syntax error: cannot back up")); \
1428      YYERROR;                                                  \
1429    }                                                           \
1430while (0)
1431
1432/* Error token number */
1433#define YYTERROR        1
1434#define YYERRCODE       256
1435
1436
1437
1438/* Enable debugging if requested.  */
1439#if YYDEBUG
1440
1441# ifndef YYFPRINTF
1442#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1443#  define YYFPRINTF fprintf
1444# endif
1445
1446# define YYDPRINTF(Args)                        \
1447do {                                            \
1448  if (yydebug)                                  \
1449    YYFPRINTF Args;                             \
1450} while (0)
1451
1452/* This macro is provided for backward compatibility. */
1453#ifndef YY_LOCATION_PRINT
1454# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1455#endif
1456
1457
1458# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1459do {                                                                      \
1460  if (yydebug)                                                            \
1461    {                                                                     \
1462      YYFPRINTF (stderr, "%s ", Title);                                   \
1463      yy_symbol_print (stderr,                                            \
1464                  Type, Value); \
1465      YYFPRINTF (stderr, "\n");                                           \
1466    }                                                                     \
1467} while (0)
1468
1469
1470/*----------------------------------------.
1471| Print this symbol's value on YYOUTPUT.  |
1472`----------------------------------------*/
1473
1474static void
1475yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1476{
1477  FILE *yyo = yyoutput;
1478  YYUSE (yyo);
1479  if (!yyvaluep)
1480    return;
1481# ifdef YYPRINT
1482  if (yytype < YYNTOKENS)
1483    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1484# endif
1485  YYUSE (yytype);
1486}
1487
1488
1489/*--------------------------------.
1490| Print this symbol on YYOUTPUT.  |
1491`--------------------------------*/
1492
1493static void
1494yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1495{
1496  YYFPRINTF (yyoutput, "%s %s (",
1497             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1498
1499  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1500  YYFPRINTF (yyoutput, ")");
1501}
1502
1503/*------------------------------------------------------------------.
1504| yy_stack_print -- Print the state stack from its BOTTOM up to its |
1505| TOP (included).                                                   |
1506`------------------------------------------------------------------*/
1507
1508static void
1509yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1510{
1511  YYFPRINTF (stderr, "Stack now");
1512  for (; yybottom <= yytop; yybottom++)
1513    {
1514      int yybot = *yybottom;
1515      YYFPRINTF (stderr, " %d", yybot);
1516    }
1517  YYFPRINTF (stderr, "\n");
1518}
1519
1520# define YY_STACK_PRINT(Bottom, Top)                            \
1521do {                                                            \
1522  if (yydebug)                                                  \
1523    yy_stack_print ((Bottom), (Top));                           \
1524} while (0)
1525
1526
1527/*------------------------------------------------.
1528| Report that the YYRULE is going to be reduced.  |
1529`------------------------------------------------*/
1530
1531static void
1532yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1533{
1534  unsigned long int yylno = yyrline[yyrule];
1535  int yynrhs = yyr2[yyrule];
1536  int yyi;
1537  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1538             yyrule - 1, yylno);
1539  /* The symbols being reduced.  */
1540  for (yyi = 0; yyi < yynrhs; yyi++)
1541    {
1542      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1543      yy_symbol_print (stderr,
1544                       yystos[yyssp[yyi + 1 - yynrhs]],
1545                       &(yyvsp[(yyi + 1) - (yynrhs)])
1546                                              );
1547      YYFPRINTF (stderr, "\n");
1548    }
1549}
1550
1551# define YY_REDUCE_PRINT(Rule)          \
1552do {                                    \
1553  if (yydebug)                          \
1554    yy_reduce_print (yyssp, yyvsp, Rule); \
1555} while (0)
1556
1557/* Nonzero means print parse trace.  It is left uninitialized so that
1558   multiple parsers can coexist.  */
1559int yydebug;
1560#else /* !YYDEBUG */
1561# define YYDPRINTF(Args)
1562# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1563# define YY_STACK_PRINT(Bottom, Top)
1564# define YY_REDUCE_PRINT(Rule)
1565#endif /* !YYDEBUG */
1566
1567
1568/* YYINITDEPTH -- initial size of the parser's stacks.  */
1569#ifndef YYINITDEPTH
1570# define YYINITDEPTH 200
1571#endif
1572
1573/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1574   if the built-in stack extension method is used).
1575
1576   Do not make this value too large; the results are undefined if
1577   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1578   evaluated with infinite-precision integer arithmetic.  */
1579
1580#ifndef YYMAXDEPTH
1581# define YYMAXDEPTH 10000
1582#endif
1583
1584
1585#if YYERROR_VERBOSE
1586
1587# ifndef yystrlen
1588#  if defined __GLIBC__ && defined _STRING_H
1589#   define yystrlen strlen
1590#  else
1591/* Return the length of YYSTR.  */
1592static YYSIZE_T
1593yystrlen (const char *yystr)
1594{
1595  YYSIZE_T yylen;
1596  for (yylen = 0; yystr[yylen]; yylen++)
1597    continue;
1598  return yylen;
1599}
1600#  endif
1601# endif
1602
1603# ifndef yystpcpy
1604#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1605#   define yystpcpy stpcpy
1606#  else
1607/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1608   YYDEST.  */
1609static char *
1610yystpcpy (char *yydest, const char *yysrc)
1611{
1612  char *yyd = yydest;
1613  const char *yys = yysrc;
1614
1615  while ((*yyd++ = *yys++) != '\0')
1616    continue;
1617
1618  return yyd - 1;
1619}
1620#  endif
1621# endif
1622
1623# ifndef yytnamerr
1624/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1625   quotes and backslashes, so that it's suitable for yyerror.  The
1626   heuristic is that double-quoting is unnecessary unless the string
1627   contains an apostrophe, a comma, or backslash (other than
1628   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1629   null, do not copy; instead, return the length of what the result
1630   would have been.  */
1631static YYSIZE_T
1632yytnamerr (char *yyres, const char *yystr)
1633{
1634  if (*yystr == '"')
1635    {
1636      YYSIZE_T yyn = 0;
1637      char const *yyp = yystr;
1638
1639      for (;;)
1640        switch (*++yyp)
1641          {
1642          case '\'':
1643          case ',':
1644            goto do_not_strip_quotes;
1645
1646          case '\\':
1647            if (*++yyp != '\\')
1648              goto do_not_strip_quotes;
1649            /* Fall through.  */
1650          default:
1651            if (yyres)
1652              yyres[yyn] = *yyp;
1653            yyn++;
1654            break;
1655
1656          case '"':
1657            if (yyres)
1658              yyres[yyn] = '\0';
1659            return yyn;
1660          }
1661    do_not_strip_quotes: ;
1662    }
1663
1664  if (! yyres)
1665    return yystrlen (yystr);
1666
1667  return yystpcpy (yyres, yystr) - yyres;
1668}
1669# endif
1670
1671/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1672   about the unexpected token YYTOKEN for the state stack whose top is
1673   YYSSP.
1674
1675   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1676   not large enough to hold the message.  In that case, also set
1677   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1678   required number of bytes is too large to store.  */
1679static int
1680yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1681                yytype_int16 *yyssp, int yytoken)
1682{
1683  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
1684  YYSIZE_T yysize = yysize0;
1685  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1686  /* Internationalized format string. */
1687  const char *yyformat = YY_NULL;
1688  /* Arguments of yyformat. */
1689  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1690  /* Number of reported tokens (one for the "unexpected", one per
1691     "expected"). */
1692  int yycount = 0;
1693
1694  /* There are many possibilities here to consider:
1695     - If this state is a consistent state with a default action, then
1696       the only way this function was invoked is if the default action
1697       is an error action.  In that case, don't check for expected
1698       tokens because there are none.
1699     - The only way there can be no lookahead present (in yychar) is if
1700       this state is a consistent state with a default action.  Thus,
1701       detecting the absence of a lookahead is sufficient to determine
1702       that there is no unexpected or expected token to report.  In that
1703       case, just report a simple "syntax error".
1704     - Don't assume there isn't a lookahead just because this state is a
1705       consistent state with a default action.  There might have been a
1706       previous inconsistent state, consistent state with a non-default
1707       action, or user semantic action that manipulated yychar.
1708     - Of course, the expected token list depends on states to have
1709       correct lookahead information, and it depends on the parser not
1710       to perform extra reductions after fetching a lookahead from the
1711       scanner and before detecting a syntax error.  Thus, state merging
1712       (from LALR or IELR) and default reductions corrupt the expected
1713       token list.  However, the list is correct for canonical LR with
1714       one exception: it will still contain any token that will not be
1715       accepted due to an error action in a later state.
1716  */
1717  if (yytoken != YYEMPTY)
1718    {
1719      int yyn = yypact[*yyssp];
1720      yyarg[yycount++] = yytname[yytoken];
1721      if (!yypact_value_is_default (yyn))
1722        {
1723          /* Start YYX at -YYN if negative to avoid negative indexes in
1724             YYCHECK.  In other words, skip the first -YYN actions for
1725             this state because they are default actions.  */
1726          int yyxbegin = yyn < 0 ? -yyn : 0;
1727          /* Stay within bounds of both yycheck and yytname.  */
1728          int yychecklim = YYLAST - yyn + 1;
1729          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1730          int yyx;
1731
1732          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1733            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1734                && !yytable_value_is_error (yytable[yyx + yyn]))
1735              {
1736                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1737                  {
1738                    yycount = 1;
1739                    yysize = yysize0;
1740                    break;
1741                  }
1742                yyarg[yycount++] = yytname[yyx];
1743                {
1744                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
1745                  if (! (yysize <= yysize1
1746                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1747                    return 2;
1748                  yysize = yysize1;
1749                }
1750              }
1751        }
1752    }
1753
1754  switch (yycount)
1755    {
1756# define YYCASE_(N, S)                      \
1757      case N:                               \
1758        yyformat = S;                       \
1759      break
1760      YYCASE_(0, YY_("syntax error"));
1761      YYCASE_(1, YY_("syntax error, unexpected %s"));
1762      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1763      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1764      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1765      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1766# undef YYCASE_
1767    }
1768
1769  {
1770    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1771    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1772      return 2;
1773    yysize = yysize1;
1774  }
1775
1776  if (*yymsg_alloc < yysize)
1777    {
1778      *yymsg_alloc = 2 * yysize;
1779      if (! (yysize <= *yymsg_alloc
1780             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1781        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1782      return 1;
1783    }
1784
1785  /* Avoid sprintf, as that infringes on the user's name space.
1786     Don't have undefined behavior even if the translation
1787     produced a string with the wrong number of "%s"s.  */
1788  {
1789    char *yyp = *yymsg;
1790    int yyi = 0;
1791    while ((*yyp = *yyformat) != '\0')
1792      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1793        {
1794          yyp += yytnamerr (yyp, yyarg[yyi++]);
1795          yyformat += 2;
1796        }
1797      else
1798        {
1799          yyp++;
1800          yyformat++;
1801        }
1802  }
1803  return 0;
1804}
1805#endif /* YYERROR_VERBOSE */
1806
1807/*-----------------------------------------------.
1808| Release the memory associated to this symbol.  |
1809`-----------------------------------------------*/
1810
1811static void
1812yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1813{
1814  YYUSE (yyvaluep);
1815  if (!yymsg)
1816    yymsg = "Deleting";
1817  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1818
1819  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1820  YYUSE (yytype);
1821  YY_IGNORE_MAYBE_UNINITIALIZED_END
1822}
1823
1824
1825
1826
1827/* The lookahead symbol.  */
1828int yychar;
1829
1830/* The semantic value of the lookahead symbol.  */
1831YYSTYPE yylval;
1832/* Number of syntax errors so far.  */
1833int yynerrs;
1834
1835
1836/*----------.
1837| yyparse.  |
1838`----------*/
1839
1840int
1841yyparse (void)
1842{
1843    int yystate;
1844    /* Number of tokens to shift before error messages enabled.  */
1845    int yyerrstatus;
1846
1847    /* The stacks and their tools:
1848       'yyss': related to states.
1849       'yyvs': related to semantic values.
1850
1851       Refer to the stacks through separate pointers, to allow yyoverflow
1852       to reallocate them elsewhere.  */
1853
1854    /* The state stack.  */
1855    yytype_int16 yyssa[YYINITDEPTH];
1856    yytype_int16 *yyss;
1857    yytype_int16 *yyssp;
1858
1859    /* The semantic value stack.  */
1860    YYSTYPE yyvsa[YYINITDEPTH];
1861    YYSTYPE *yyvs;
1862    YYSTYPE *yyvsp;
1863
1864    YYSIZE_T yystacksize;
1865
1866  int yyn;
1867  int yyresult;
1868  /* Lookahead token as an internal (translated) token number.  */
1869  int yytoken = 0;
1870  /* The variables used to return semantic value and location from the
1871     action routines.  */
1872  YYSTYPE yyval;
1873
1874#if YYERROR_VERBOSE
1875  /* Buffer for error messages, and its allocated size.  */
1876  char yymsgbuf[128];
1877  char *yymsg = yymsgbuf;
1878  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1879#endif
1880
1881#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1882
1883  /* The number of symbols on the RHS of the reduced rule.
1884     Keep to zero when no symbol should be popped.  */
1885  int yylen = 0;
1886
1887  yyssp = yyss = yyssa;
1888  yyvsp = yyvs = yyvsa;
1889  yystacksize = YYINITDEPTH;
1890
1891  YYDPRINTF ((stderr, "Starting parse\n"));
1892
1893  yystate = 0;
1894  yyerrstatus = 0;
1895  yynerrs = 0;
1896  yychar = YYEMPTY; /* Cause a token to be read.  */
1897  goto yysetstate;
1898
1899/*------------------------------------------------------------.
1900| yynewstate -- Push a new state, which is found in yystate.  |
1901`------------------------------------------------------------*/
1902 yynewstate:
1903  /* In all cases, when you get here, the value and location stacks
1904     have just been pushed.  So pushing a state here evens the stacks.  */
1905  yyssp++;
1906
1907 yysetstate:
1908  *yyssp = yystate;
1909
1910  if (yyss + yystacksize - 1 <= yyssp)
1911    {
1912      /* Get the current used size of the three stacks, in elements.  */
1913      YYSIZE_T yysize = yyssp - yyss + 1;
1914
1915#ifdef yyoverflow
1916      {
1917        /* Give user a chance to reallocate the stack.  Use copies of
1918           these so that the &'s don't force the real ones into
1919           memory.  */
1920        YYSTYPE *yyvs1 = yyvs;
1921        yytype_int16 *yyss1 = yyss;
1922
1923        /* Each stack pointer address is followed by the size of the
1924           data in use in that stack, in bytes.  This used to be a
1925           conditional around just the two extra args, but that might
1926           be undefined if yyoverflow is a macro.  */
1927        yyoverflow (YY_("memory exhausted"),
1928                    &yyss1, yysize * sizeof (*yyssp),
1929                    &yyvs1, yysize * sizeof (*yyvsp),
1930                    &yystacksize);
1931
1932        yyss = yyss1;
1933        yyvs = yyvs1;
1934      }
1935#else /* no yyoverflow */
1936# ifndef YYSTACK_RELOCATE
1937      goto yyexhaustedlab;
1938# else
1939      /* Extend the stack our own way.  */
1940      if (YYMAXDEPTH <= yystacksize)
1941        goto yyexhaustedlab;
1942      yystacksize *= 2;
1943      if (YYMAXDEPTH < yystacksize)
1944        yystacksize = YYMAXDEPTH;
1945
1946      {
1947        yytype_int16 *yyss1 = yyss;
1948        union yyalloc *yyptr =
1949          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1950        if (! yyptr)
1951          goto yyexhaustedlab;
1952        YYSTACK_RELOCATE (yyss_alloc, yyss);
1953        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1954#  undef YYSTACK_RELOCATE
1955        if (yyss1 != yyssa)
1956          YYSTACK_FREE (yyss1);
1957      }
1958# endif
1959#endif /* no yyoverflow */
1960
1961      yyssp = yyss + yysize - 1;
1962      yyvsp = yyvs + yysize - 1;
1963
1964      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1965                  (unsigned long int) yystacksize));
1966
1967      if (yyss + yystacksize - 1 <= yyssp)
1968        YYABORT;
1969    }
1970
1971  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1972
1973  if (yystate == YYFINAL)
1974    YYACCEPT;
1975
1976  goto yybackup;
1977
1978/*-----------.
1979| yybackup.  |
1980`-----------*/
1981yybackup:
1982
1983  /* Do appropriate processing given the current state.  Read a
1984     lookahead token if we need one and don't already have one.  */
1985
1986  /* First try to decide what to do without reference to lookahead token.  */
1987  yyn = yypact[yystate];
1988  if (yypact_value_is_default (yyn))
1989    goto yydefault;
1990
1991  /* Not known => get a lookahead token if don't already have one.  */
1992
1993  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1994  if (yychar == YYEMPTY)
1995    {
1996      YYDPRINTF ((stderr, "Reading a token: "));
1997      yychar = yylex ();
1998    }
1999
2000  if (yychar <= YYEOF)
2001    {
2002      yychar = yytoken = YYEOF;
2003      YYDPRINTF ((stderr, "Now at end of input.\n"));
2004    }
2005  else
2006    {
2007      yytoken = YYTRANSLATE (yychar);
2008      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2009    }
2010
2011  /* If the proper action on seeing token YYTOKEN is to reduce or to
2012     detect an error, take that action.  */
2013  yyn += yytoken;
2014  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2015    goto yydefault;
2016  yyn = yytable[yyn];
2017  if (yyn <= 0)
2018    {
2019      if (yytable_value_is_error (yyn))
2020        goto yyerrlab;
2021      yyn = -yyn;
2022      goto yyreduce;
2023    }
2024
2025  /* Count tokens shifted since error; after three, turn off error
2026     status.  */
2027  if (yyerrstatus)
2028    yyerrstatus--;
2029
2030  /* Shift the lookahead token.  */
2031  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2032
2033  /* Discard the shifted token.  */
2034  yychar = YYEMPTY;
2035
2036  yystate = yyn;
2037  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2038  *++yyvsp = yylval;
2039  YY_IGNORE_MAYBE_UNINITIALIZED_END
2040
2041  goto yynewstate;
2042
2043
2044/*-----------------------------------------------------------.
2045| yydefault -- do the default action for the current state.  |
2046`-----------------------------------------------------------*/
2047yydefault:
2048  yyn = yydefact[yystate];
2049  if (yyn == 0)
2050    goto yyerrlab;
2051  goto yyreduce;
2052
2053
2054/*-----------------------------.
2055| yyreduce -- Do a reduction.  |
2056`-----------------------------*/
2057yyreduce:
2058  /* yyn is the number of a rule to reduce with.  */
2059  yylen = yyr2[yyn];
2060
2061  /* If YYLEN is nonzero, implement the default value of the action:
2062     '$$ = $1'.
2063
2064     Otherwise, the following line sets YYVAL to garbage.
2065     This behavior is undocumented and Bison
2066     users should not rely upon it.  Assigning to YYVAL
2067     unconditionally makes the parser a bit smaller, and it avoids a
2068     GCC warning that YYVAL may be used uninitialized.  */
2069  yyval = yyvsp[1-yylen];
2070
2071
2072  YY_REDUCE_PRINT (yyn);
2073  switch (yyn)
2074    {
2075        case 2:
2076#line 188 "./config/rl78-parse.y" /* yacc.c:1661  */
2077    { as_bad (_("Unknown opcode: %s"), rl78_init_start); }
2078#line 2079 "rl78-parse.c" /* yacc.c:1661  */
2079    break;
2080
2081  case 3:
2082#line 209 "./config/rl78-parse.y" /* yacc.c:1661  */
2083    { B1 (0x0c|(yyvsp[-4].regno)); O1 ((yyvsp[0].exp)); }
2084#line 2085 "rl78-parse.c" /* yacc.c:1661  */
2085    break;
2086
2087  case 4:
2088#line 211 "./config/rl78-parse.y" /* yacc.c:1661  */
2089    {SA((yyvsp[0].exp))}
2090#line 2091 "rl78-parse.c" /* yacc.c:1661  */
2091    break;
2092
2093  case 5:
2094#line 212 "./config/rl78-parse.y" /* yacc.c:1661  */
2095    { B1 (0x0a|(yyvsp[-5].regno)); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); }
2096#line 2097 "rl78-parse.c" /* yacc.c:1661  */
2097    break;
2098
2099  case 6:
2100#line 215 "./config/rl78-parse.y" /* yacc.c:1661  */
2101    { B2 (0x61, 0x01|(yyvsp[-3].regno)); }
2102#line 2103 "rl78-parse.c" /* yacc.c:1661  */
2103    break;
2104
2105  case 7:
2106#line 218 "./config/rl78-parse.y" /* yacc.c:1661  */
2107    { B2 (0x61, 0x08|(yyvsp[-3].regno)); F ((yyvsp[0].regno), 13, 3); }
2108#line 2109 "rl78-parse.c" /* yacc.c:1661  */
2109    break;
2110
2111  case 8:
2112#line 221 "./config/rl78-parse.y" /* yacc.c:1661  */
2113    { B2 (0x61, 0x00|(yyvsp[-3].regno)); F ((yyvsp[-2].regno), 13, 3); }
2114#line 2115 "rl78-parse.c" /* yacc.c:1661  */
2115    break;
2116
2117  case 9:
2118#line 223 "./config/rl78-parse.y" /* yacc.c:1661  */
2119    {SA((yyvsp[0].exp))}
2120#line 2121 "rl78-parse.c" /* yacc.c:1661  */
2121    break;
2122
2123  case 10:
2124#line 224 "./config/rl78-parse.y" /* yacc.c:1661  */
2125    { B1 (0x0b|(yyvsp[-4].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2126#line 2127 "rl78-parse.c" /* yacc.c:1661  */
2127    break;
2128
2129  case 11:
2130#line 227 "./config/rl78-parse.y" /* yacc.c:1661  */
2131    { B1 (0x0f|(yyvsp[-5].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2132#line 2133 "rl78-parse.c" /* yacc.c:1661  */
2133    break;
2134
2135  case 12:
2136#line 230 "./config/rl78-parse.y" /* yacc.c:1661  */
2137    { B1 (0x0d|(yyvsp[-6].regno)); }
2138#line 2139 "rl78-parse.c" /* yacc.c:1661  */
2139    break;
2140
2141  case 13:
2142#line 233 "./config/rl78-parse.y" /* yacc.c:1661  */
2143    { B1 (0x0e|(yyvsp[-8].regno)); O1 ((yyvsp[-1].exp)); }
2144#line 2145 "rl78-parse.c" /* yacc.c:1661  */
2145    break;
2146
2147  case 14:
2148#line 236 "./config/rl78-parse.y" /* yacc.c:1661  */
2149    { B2 (0x61, 0x80|(yyvsp[-8].regno)); }
2150#line 2151 "rl78-parse.c" /* yacc.c:1661  */
2151    break;
2152
2153  case 15:
2154#line 239 "./config/rl78-parse.y" /* yacc.c:1661  */
2155    { B2 (0x61, 0x82|(yyvsp[-8].regno)); }
2156#line 2157 "rl78-parse.c" /* yacc.c:1661  */
2157    break;
2158
2159  case 16:
2160#line 242 "./config/rl78-parse.y" /* yacc.c:1661  */
2161    { if ((yyvsp[-6].regno) != 0x40)
2162	      { rl78_error ("Only CMP takes these operands"); }
2163	    else
2164	      { B1 (0x00|(yyvsp[-6].regno)); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2165	  }
2166#line 2167 "rl78-parse.c" /* yacc.c:1661  */
2167    break;
2168
2169  case 17:
2170#line 251 "./config/rl78-parse.y" /* yacc.c:1661  */
2171    { B1 (0x04|(yyvsp[-4].regno)); O2 ((yyvsp[0].exp)); }
2172#line 2173 "rl78-parse.c" /* yacc.c:1661  */
2173    break;
2174
2175  case 18:
2176#line 254 "./config/rl78-parse.y" /* yacc.c:1661  */
2177    { B1 (0x01|(yyvsp[-3].regno)); F ((yyvsp[0].regno), 5, 2); }
2178#line 2179 "rl78-parse.c" /* yacc.c:1661  */
2179    break;
2180
2181  case 19:
2182#line 256 "./config/rl78-parse.y" /* yacc.c:1661  */
2183    {SA((yyvsp[0].exp))}
2184#line 2185 "rl78-parse.c" /* yacc.c:1661  */
2185    break;
2186
2187  case 20:
2188#line 257 "./config/rl78-parse.y" /* yacc.c:1661  */
2189    { B1 (0x06|(yyvsp[-4].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2190#line 2191 "rl78-parse.c" /* yacc.c:1661  */
2191    break;
2192
2193  case 21:
2194#line 260 "./config/rl78-parse.y" /* yacc.c:1661  */
2195    { B1 (0x02|(yyvsp[-5].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2196#line 2197 "rl78-parse.c" /* yacc.c:1661  */
2197    break;
2198
2199  case 22:
2200#line 263 "./config/rl78-parse.y" /* yacc.c:1661  */
2201    { B2 (0x61, 0x09|(yyvsp[-8].regno)); O1 ((yyvsp[-1].exp)); }
2202#line 2203 "rl78-parse.c" /* yacc.c:1661  */
2203    break;
2204
2205  case 23:
2206#line 266 "./config/rl78-parse.y" /* yacc.c:1661  */
2207    { B3 (0x61, 0x09|(yyvsp[-6].regno), 0); }
2208#line 2209 "rl78-parse.c" /* yacc.c:1661  */
2209    break;
2210
2211  case 24:
2212#line 269 "./config/rl78-parse.y" /* yacc.c:1661  */
2213    { B1 ((yyvsp[-4].regno) ? 0x20 : 0x10); O1 ((yyvsp[0].exp));
2214	    if ((yyvsp[-4].regno) == 0x40)
2215	      rl78_error ("CMPW SP,#imm not allowed");
2216	  }
2217#line 2218 "rl78-parse.c" /* yacc.c:1661  */
2218    break;
2219
2220  case 25:
2221#line 276 "./config/rl78-parse.y" /* yacc.c:1661  */
2222    {Bit((yyvsp[0].exp))}
2223#line 2224 "rl78-parse.c" /* yacc.c:1661  */
2224    break;
2225
2226  case 26:
2227#line 277 "./config/rl78-parse.y" /* yacc.c:1661  */
2228    { B3 (0x71, 0x08|(yyvsp[-6].regno), (yyvsp[-3].regno)); FE ((yyvsp[-1].exp), 9, 3); }
2229#line 2230 "rl78-parse.c" /* yacc.c:1661  */
2230    break;
2231
2232  case 27:
2233#line 279 "./config/rl78-parse.y" /* yacc.c:1661  */
2234    {Bit((yyvsp[0].exp))}
2235#line 2236 "rl78-parse.c" /* yacc.c:1661  */
2236    break;
2237
2238  case 28:
2239#line 280 "./config/rl78-parse.y" /* yacc.c:1661  */
2240    { if (expr_is_sfr ((yyvsp[-3].exp)))
2241	      { B2 (0x71, 0x08|(yyvsp[-6].regno)); FE ((yyvsp[-1].exp), 9, 3); O1 ((yyvsp[-3].exp)); }
2242	    else if (expr_is_saddr ((yyvsp[-3].exp)))
2243	      { B2 (0x71, 0x00|(yyvsp[-6].regno)); FE ((yyvsp[-1].exp), 9, 3); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); }
2244	    else
2245	      NOT_SFR_OR_SADDR;
2246	  }
2247#line 2248 "rl78-parse.c" /* yacc.c:1661  */
2248    break;
2249
2250  case 29:
2251#line 288 "./config/rl78-parse.y" /* yacc.c:1661  */
2252    {Bit((yyvsp[0].exp))}
2253#line 2254 "rl78-parse.c" /* yacc.c:1661  */
2254    break;
2255
2256  case 30:
2257#line 289 "./config/rl78-parse.y" /* yacc.c:1661  */
2258    { B2 (0x71, 0x88|(yyvsp[-6].regno));  FE ((yyvsp[-1].exp), 9, 3); }
2259#line 2260 "rl78-parse.c" /* yacc.c:1661  */
2260    break;
2261
2262  case 31:
2263#line 291 "./config/rl78-parse.y" /* yacc.c:1661  */
2264    {Bit((yyvsp[0].exp))}
2265#line 2266 "rl78-parse.c" /* yacc.c:1661  */
2266    break;
2267
2268  case 32:
2269#line 292 "./config/rl78-parse.y" /* yacc.c:1661  */
2270    { B2 (0x71, 0x80|(yyvsp[-9].regno));  FE ((yyvsp[-1].exp), 9, 3); }
2271#line 2272 "rl78-parse.c" /* yacc.c:1661  */
2272    break;
2273
2274  case 33:
2275#line 297 "./config/rl78-parse.y" /* yacc.c:1661  */
2276    { B1 (0xdc); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2277#line 2278 "rl78-parse.c" /* yacc.c:1661  */
2278    break;
2279
2280  case 34:
2281#line 300 "./config/rl78-parse.y" /* yacc.c:1661  */
2282    { B1 (0xde); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2283#line 2284 "rl78-parse.c" /* yacc.c:1661  */
2284    break;
2285
2286  case 35:
2287#line 303 "./config/rl78-parse.y" /* yacc.c:1661  */
2288    { B1 (0xdd); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2289#line 2290 "rl78-parse.c" /* yacc.c:1661  */
2290    break;
2291
2292  case 36:
2293#line 306 "./config/rl78-parse.y" /* yacc.c:1661  */
2294    { B1 (0xdf); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2295#line 2296 "rl78-parse.c" /* yacc.c:1661  */
2296    break;
2297
2298  case 37:
2299#line 309 "./config/rl78-parse.y" /* yacc.c:1661  */
2300    { B2 (0x61, 0xc3); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2301#line 2302 "rl78-parse.c" /* yacc.c:1661  */
2302    break;
2303
2304  case 38:
2305#line 312 "./config/rl78-parse.y" /* yacc.c:1661  */
2306    { B2 (0x61, 0xd3); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2307#line 2308 "rl78-parse.c" /* yacc.c:1661  */
2308    break;
2309
2310  case 39:
2311#line 317 "./config/rl78-parse.y" /* yacc.c:1661  */
2312    { B3 (0x31, 0x80|(yyvsp[-6].regno), (yyvsp[-5].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); }
2313#line 2314 "rl78-parse.c" /* yacc.c:1661  */
2314    break;
2315
2316  case 40:
2317#line 320 "./config/rl78-parse.y" /* yacc.c:1661  */
2318    { if (expr_is_sfr ((yyvsp[-5].exp)))
2319	      { B2 (0x31, 0x80|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); O1 ((yyvsp[-5].exp)); PC1 ((yyvsp[0].exp)); }
2320	    else if (expr_is_saddr ((yyvsp[-5].exp)))
2321	      { B2 (0x31, 0x00|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); SET_SA ((yyvsp[-5].exp)); O1 ((yyvsp[-5].exp)); PC1 ((yyvsp[0].exp)); }
2322	    else
2323	      NOT_SFR_OR_SADDR;
2324	  }
2325#line 2326 "rl78-parse.c" /* yacc.c:1661  */
2326    break;
2327
2328  case 41:
2329#line 329 "./config/rl78-parse.y" /* yacc.c:1661  */
2330    { B2 (0x31, 0x01|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); }
2331#line 2332 "rl78-parse.c" /* yacc.c:1661  */
2332    break;
2333
2334  case 42:
2335#line 332 "./config/rl78-parse.y" /* yacc.c:1661  */
2336    { B2 (0x31, 0x81|(yyvsp[-9].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); }
2337#line 2338 "rl78-parse.c" /* yacc.c:1661  */
2338    break;
2339
2340  case 43:
2341#line 337 "./config/rl78-parse.y" /* yacc.c:1661  */
2342    { B2 (0x61, 0xcb); }
2343#line 2344 "rl78-parse.c" /* yacc.c:1661  */
2344    break;
2345
2346  case 44:
2347#line 340 "./config/rl78-parse.y" /* yacc.c:1661  */
2348    { B1 (0xef); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2349#line 2350 "rl78-parse.c" /* yacc.c:1661  */
2350    break;
2351
2352  case 45:
2353#line 343 "./config/rl78-parse.y" /* yacc.c:1661  */
2354    { B1 (0xee); PC2 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2355#line 2356 "rl78-parse.c" /* yacc.c:1661  */
2356    break;
2357
2358  case 46:
2359#line 346 "./config/rl78-parse.y" /* yacc.c:1661  */
2360    { B1 (0xed); O2 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2361#line 2362 "rl78-parse.c" /* yacc.c:1661  */
2362    break;
2363
2364  case 47:
2365#line 349 "./config/rl78-parse.y" /* yacc.c:1661  */
2366    { B1 (0xec); O3 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2367#line 2368 "rl78-parse.c" /* yacc.c:1661  */
2368    break;
2369
2370  case 48:
2371#line 354 "./config/rl78-parse.y" /* yacc.c:1661  */
2372    { B2 (0x61, 0xcc); }
2373#line 2374 "rl78-parse.c" /* yacc.c:1661  */
2374    break;
2375
2376  case 49:
2377#line 357 "./config/rl78-parse.y" /* yacc.c:1661  */
2378    { B1 (0xff); }
2379#line 2380 "rl78-parse.c" /* yacc.c:1661  */
2380    break;
2381
2382  case 50:
2383#line 362 "./config/rl78-parse.y" /* yacc.c:1661  */
2384    { B2 (0x61, 0xca); F ((yyvsp[0].regno), 10, 2); }
2385#line 2386 "rl78-parse.c" /* yacc.c:1661  */
2386    break;
2387
2388  case 51:
2389#line 365 "./config/rl78-parse.y" /* yacc.c:1661  */
2390    { B1 (0xfe); PC2 ((yyvsp[0].exp)); }
2391#line 2392 "rl78-parse.c" /* yacc.c:1661  */
2392    break;
2393
2394  case 52:
2395#line 368 "./config/rl78-parse.y" /* yacc.c:1661  */
2396    { B1 (0xfd); O2 ((yyvsp[0].exp)); }
2397#line 2398 "rl78-parse.c" /* yacc.c:1661  */
2398    break;
2399
2400  case 53:
2401#line 371 "./config/rl78-parse.y" /* yacc.c:1661  */
2402    { B1 (0xfc); O3 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2403#line 2404 "rl78-parse.c" /* yacc.c:1661  */
2404    break;
2405
2406  case 54:
2407#line 374 "./config/rl78-parse.y" /* yacc.c:1661  */
2408    { if ((yyvsp[-1].exp).X_op != O_constant)
2409	      rl78_error ("CALLT requires a numeric address");
2410	    else
2411	      {
2412	        int i = (yyvsp[-1].exp).X_add_number;
2413		if (i < 0x80 || i > 0xbe)
2414		  rl78_error ("CALLT address not 0x80..0xbe");
2415		else if (i & 1)
2416		  rl78_error ("CALLT address not even");
2417		else
2418		  {
2419		    B2 (0x61, 0x84);
2420	    	    F ((i >> 1) & 7, 9, 3);
2421	    	    F ((i >> 4) & 7, 14, 2);
2422		  }
2423	      }
2424	  }
2425#line 2426 "rl78-parse.c" /* yacc.c:1661  */
2426    break;
2427
2428  case 55:
2429#line 395 "./config/rl78-parse.y" /* yacc.c:1661  */
2430    { B2 (0x71, (yyvsp[-1].regno) ? 0x88 : 0x80); }
2431#line 2432 "rl78-parse.c" /* yacc.c:1661  */
2432    break;
2433
2434  case 56:
2435#line 398 "./config/rl78-parse.y" /* yacc.c:1661  */
2436    { B3 (0x71, 0x0a|(yyvsp[-3].regno), (yyvsp[-2].regno)); FE ((yyvsp[0].exp), 9, 3); }
2437#line 2438 "rl78-parse.c" /* yacc.c:1661  */
2438    break;
2439
2440  case 57:
2441#line 401 "./config/rl78-parse.y" /* yacc.c:1661  */
2442    { if (expr_is_sfr ((yyvsp[-2].exp)))
2443	      { B2 (0x71, 0x0a|(yyvsp[-3].regno)); FE ((yyvsp[0].exp), 9, 3); O1 ((yyvsp[-2].exp)); }
2444	    else if (expr_is_saddr ((yyvsp[-2].exp)))
2445	      { B2 (0x71, 0x02|(yyvsp[-3].regno)); FE ((yyvsp[0].exp), 9, 3); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); }
2446	    else
2447	      NOT_SFR_OR_SADDR;
2448	  }
2449#line 2450 "rl78-parse.c" /* yacc.c:1661  */
2450    break;
2451
2452  case 58:
2453#line 410 "./config/rl78-parse.y" /* yacc.c:1661  */
2454    { B2 (0x71, 0x8a|(yyvsp[-3].regno));  FE ((yyvsp[0].exp), 9, 3); }
2455#line 2456 "rl78-parse.c" /* yacc.c:1661  */
2456    break;
2457
2458  case 59:
2459#line 413 "./config/rl78-parse.y" /* yacc.c:1661  */
2460    { B2 (0x71, 0x00+(yyvsp[-5].regno)*0x08); FE ((yyvsp[0].exp), 9, 3); O2 ((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); }
2461#line 2462 "rl78-parse.c" /* yacc.c:1661  */
2462    break;
2463
2464  case 60:
2465#line 416 "./config/rl78-parse.y" /* yacc.c:1661  */
2466    { B2 (0x71, 0x82|(yyvsp[-6].regno)); FE ((yyvsp[0].exp), 9, 3); }
2467#line 2468 "rl78-parse.c" /* yacc.c:1661  */
2468    break;
2469
2470  case 61:
2471#line 421 "./config/rl78-parse.y" /* yacc.c:1661  */
2472    { B1 (0xe1|(yyvsp[-1].regno)); }
2473#line 2474 "rl78-parse.c" /* yacc.c:1661  */
2474    break;
2475
2476  case 62:
2477#line 423 "./config/rl78-parse.y" /* yacc.c:1661  */
2478    { B1 (0xe0|(yyvsp[-1].regno)); }
2479#line 2480 "rl78-parse.c" /* yacc.c:1661  */
2480    break;
2481
2482  case 63:
2483#line 425 "./config/rl78-parse.y" /* yacc.c:1661  */
2484    { B1 (0xe3|(yyvsp[-1].regno)); }
2485#line 2486 "rl78-parse.c" /* yacc.c:1661  */
2486    break;
2487
2488  case 64:
2489#line 427 "./config/rl78-parse.y" /* yacc.c:1661  */
2490    { B1 (0xe2|(yyvsp[-1].regno)); }
2491#line 2492 "rl78-parse.c" /* yacc.c:1661  */
2492    break;
2493
2494  case 65:
2495#line 429 "./config/rl78-parse.y" /* yacc.c:1661  */
2496    {SA((yyvsp[0].exp))}
2497#line 2498 "rl78-parse.c" /* yacc.c:1661  */
2498    break;
2499
2500  case 66:
2501#line 430 "./config/rl78-parse.y" /* yacc.c:1661  */
2502    { B1 (0xe4|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2503#line 2504 "rl78-parse.c" /* yacc.c:1661  */
2504    break;
2505
2506  case 67:
2507#line 433 "./config/rl78-parse.y" /* yacc.c:1661  */
2508    { B1 (0xe5|(yyvsp[-3].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2509#line 2510 "rl78-parse.c" /* yacc.c:1661  */
2510    break;
2511
2512  case 68:
2513#line 438 "./config/rl78-parse.y" /* yacc.c:1661  */
2514    { B1 (0xe6|(yyvsp[-1].regno)); }
2515#line 2516 "rl78-parse.c" /* yacc.c:1661  */
2516    break;
2517
2518  case 69:
2519#line 440 "./config/rl78-parse.y" /* yacc.c:1661  */
2520    { B1 (0xe7|(yyvsp[-1].regno)); }
2521#line 2522 "rl78-parse.c" /* yacc.c:1661  */
2522    break;
2523
2524  case 70:
2525#line 445 "./config/rl78-parse.y" /* yacc.c:1661  */
2526    { B1 (0xd1); }
2527#line 2528 "rl78-parse.c" /* yacc.c:1661  */
2528    break;
2529
2530  case 71:
2531#line 448 "./config/rl78-parse.y" /* yacc.c:1661  */
2532    { B1 (0xd0); }
2533#line 2534 "rl78-parse.c" /* yacc.c:1661  */
2534    break;
2535
2536  case 72:
2537#line 451 "./config/rl78-parse.y" /* yacc.c:1661  */
2538    { B1 (0xd3); }
2539#line 2540 "rl78-parse.c" /* yacc.c:1661  */
2540    break;
2541
2542  case 73:
2543#line 454 "./config/rl78-parse.y" /* yacc.c:1661  */
2544    { B1 (0xd2); }
2545#line 2546 "rl78-parse.c" /* yacc.c:1661  */
2546    break;
2547
2548  case 74:
2549#line 456 "./config/rl78-parse.y" /* yacc.c:1661  */
2550    {SA((yyvsp[0].exp))}
2551#line 2552 "rl78-parse.c" /* yacc.c:1661  */
2552    break;
2553
2554  case 75:
2555#line 457 "./config/rl78-parse.y" /* yacc.c:1661  */
2556    { B1 (0xd4); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2557#line 2558 "rl78-parse.c" /* yacc.c:1661  */
2558    break;
2559
2560  case 76:
2561#line 460 "./config/rl78-parse.y" /* yacc.c:1661  */
2562    { B1 (0xd5); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2563#line 2564 "rl78-parse.c" /* yacc.c:1661  */
2564    break;
2565
2566  case 77:
2567#line 465 "./config/rl78-parse.y" /* yacc.c:1661  */
2568    { B2 (0x61, 0xde); O1 ((yyvsp[-1].exp)); }
2569#line 2570 "rl78-parse.c" /* yacc.c:1661  */
2570    break;
2571
2572  case 78:
2573#line 470 "./config/rl78-parse.y" /* yacc.c:1661  */
2574    { B1 (0x80|(yyvsp[-1].regno)); F ((yyvsp[0].regno), 5, 3); }
2575#line 2576 "rl78-parse.c" /* yacc.c:1661  */
2576    break;
2577
2578  case 79:
2579#line 472 "./config/rl78-parse.y" /* yacc.c:1661  */
2580    {SA((yyvsp[0].exp))}
2581#line 2582 "rl78-parse.c" /* yacc.c:1661  */
2582    break;
2583
2584  case 80:
2585#line 473 "./config/rl78-parse.y" /* yacc.c:1661  */
2586    { B1 (0xa4|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2587#line 2588 "rl78-parse.c" /* yacc.c:1661  */
2588    break;
2589
2590  case 81:
2591#line 475 "./config/rl78-parse.y" /* yacc.c:1661  */
2592    { B1 (0xa0|(yyvsp[-2].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2593#line 2594 "rl78-parse.c" /* yacc.c:1661  */
2594    break;
2595
2596  case 82:
2597#line 477 "./config/rl78-parse.y" /* yacc.c:1661  */
2598    { B2 (0x11, 0xa0|(yyvsp[-4].regno)); O2 ((yyvsp[0].exp)); }
2599#line 2600 "rl78-parse.c" /* yacc.c:1661  */
2600    break;
2601
2602  case 83:
2603#line 479 "./config/rl78-parse.y" /* yacc.c:1661  */
2604    { B2 (0x61, 0x59+(yyvsp[-5].regno)); O1 ((yyvsp[-1].exp)); }
2605#line 2606 "rl78-parse.c" /* yacc.c:1661  */
2606    break;
2607
2608  case 84:
2609#line 481 "./config/rl78-parse.y" /* yacc.c:1661  */
2610    { B3 (0x11, 0x61, 0x59+(yyvsp[-7].regno)); O1 ((yyvsp[-1].exp)); }
2611#line 2612 "rl78-parse.c" /* yacc.c:1661  */
2612    break;
2613
2614  case 85:
2615#line 486 "./config/rl78-parse.y" /* yacc.c:1661  */
2616    { B1 (0xa1|(yyvsp[-1].regno)); F ((yyvsp[0].regno), 5, 2); }
2617#line 2618 "rl78-parse.c" /* yacc.c:1661  */
2618    break;
2619
2620  case 86:
2621#line 488 "./config/rl78-parse.y" /* yacc.c:1661  */
2622    {SA((yyvsp[0].exp))}
2623#line 2624 "rl78-parse.c" /* yacc.c:1661  */
2624    break;
2625
2626  case 87:
2627#line 489 "./config/rl78-parse.y" /* yacc.c:1661  */
2628    { B1 (0xa6|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2629#line 2630 "rl78-parse.c" /* yacc.c:1661  */
2630    break;
2631
2632  case 88:
2633#line 492 "./config/rl78-parse.y" /* yacc.c:1661  */
2634    { B1 (0xa2|(yyvsp[-3].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2635#line 2636 "rl78-parse.c" /* yacc.c:1661  */
2636    break;
2637
2638  case 89:
2639#line 495 "./config/rl78-parse.y" /* yacc.c:1661  */
2640    { B2 (0x61, 0x79+(yyvsp[-6].regno)); O1 ((yyvsp[-1].exp)); }
2641#line 2642 "rl78-parse.c" /* yacc.c:1661  */
2642    break;
2643
2644  case 90:
2645#line 500 "./config/rl78-parse.y" /* yacc.c:1661  */
2646    { B3 (0x71, 0x7b, 0xfa); }
2647#line 2648 "rl78-parse.c" /* yacc.c:1661  */
2648    break;
2649
2650  case 91:
2651#line 503 "./config/rl78-parse.y" /* yacc.c:1661  */
2652    { B3 (0x71, 0x7a, 0xfa); }
2653#line 2654 "rl78-parse.c" /* yacc.c:1661  */
2654    break;
2655
2656  case 92:
2657#line 507 "./config/rl78-parse.y" /* yacc.c:1661  */
2658    { ISA_G14 ("MULHU"); }
2659#line 2660 "rl78-parse.c" /* yacc.c:1661  */
2660    break;
2661
2662  case 93:
2663#line 508 "./config/rl78-parse.y" /* yacc.c:1661  */
2664    { B3 (0xce, 0xfb, 0x01); }
2665#line 2666 "rl78-parse.c" /* yacc.c:1661  */
2666    break;
2667
2668  case 94:
2669#line 510 "./config/rl78-parse.y" /* yacc.c:1661  */
2670    { ISA_G14 ("MULH"); }
2671#line 2672 "rl78-parse.c" /* yacc.c:1661  */
2672    break;
2673
2674  case 95:
2675#line 511 "./config/rl78-parse.y" /* yacc.c:1661  */
2676    { B3 (0xce, 0xfb, 0x02); }
2677#line 2678 "rl78-parse.c" /* yacc.c:1661  */
2678    break;
2679
2680  case 96:
2681#line 514 "./config/rl78-parse.y" /* yacc.c:1661  */
2682    { B1 (0xd6); }
2683#line 2684 "rl78-parse.c" /* yacc.c:1661  */
2684    break;
2685
2686  case 97:
2687#line 516 "./config/rl78-parse.y" /* yacc.c:1661  */
2688    { ISA_G14 ("DIVHU"); }
2689#line 2690 "rl78-parse.c" /* yacc.c:1661  */
2690    break;
2691
2692  case 98:
2693#line 517 "./config/rl78-parse.y" /* yacc.c:1661  */
2694    { B3 (0xce, 0xfb, 0x03); }
2695#line 2696 "rl78-parse.c" /* yacc.c:1661  */
2696    break;
2697
2698  case 99:
2699#line 524 "./config/rl78-parse.y" /* yacc.c:1661  */
2700    { ISA_G14 ("DIVWU"); }
2701#line 2702 "rl78-parse.c" /* yacc.c:1661  */
2702    break;
2703
2704  case 100:
2705#line 525 "./config/rl78-parse.y" /* yacc.c:1661  */
2706    { B3 (0xce, 0xfb, 0x0b); }
2707#line 2708 "rl78-parse.c" /* yacc.c:1661  */
2708    break;
2709
2710  case 101:
2711#line 527 "./config/rl78-parse.y" /* yacc.c:1661  */
2712    { ISA_G14 ("MACHU"); }
2713#line 2714 "rl78-parse.c" /* yacc.c:1661  */
2714    break;
2715
2716  case 102:
2717#line 528 "./config/rl78-parse.y" /* yacc.c:1661  */
2718    { B3 (0xce, 0xfb, 0x05); }
2719#line 2720 "rl78-parse.c" /* yacc.c:1661  */
2720    break;
2721
2722  case 103:
2723#line 530 "./config/rl78-parse.y" /* yacc.c:1661  */
2724    { ISA_G14 ("MACH"); }
2725#line 2726 "rl78-parse.c" /* yacc.c:1661  */
2726    break;
2727
2728  case 104:
2729#line 531 "./config/rl78-parse.y" /* yacc.c:1661  */
2730    { B3 (0xce, 0xfb, 0x06); }
2731#line 2732 "rl78-parse.c" /* yacc.c:1661  */
2732    break;
2733
2734  case 105:
2735#line 536 "./config/rl78-parse.y" /* yacc.c:1661  */
2736    { B2 (0x61, 0xed); }
2737#line 2738 "rl78-parse.c" /* yacc.c:1661  */
2738    break;
2739
2740  case 106:
2741#line 544 "./config/rl78-parse.y" /* yacc.c:1661  */
2742    { B1 (0x51); O1 ((yyvsp[0].exp)); }
2743#line 2744 "rl78-parse.c" /* yacc.c:1661  */
2744    break;
2745
2746  case 107:
2747#line 546 "./config/rl78-parse.y" /* yacc.c:1661  */
2748    { B1 (0x50); F((yyvsp[-3].regno), 5, 3); O1 ((yyvsp[0].exp)); }
2749#line 2750 "rl78-parse.c" /* yacc.c:1661  */
2750    break;
2751
2752  case 108:
2753#line 549 "./config/rl78-parse.y" /* yacc.c:1661  */
2754    { if ((yyvsp[-3].regno) != 0xfd)
2755	      { B2 (0xce, (yyvsp[-3].regno)); O1 ((yyvsp[0].exp)); }
2756	    else
2757	      { B1 (0x41); O1 ((yyvsp[0].exp)); }
2758	  }
2759#line 2760 "rl78-parse.c" /* yacc.c:1661  */
2760    break;
2761
2762  case 109:
2763#line 555 "./config/rl78-parse.y" /* yacc.c:1661  */
2764    {NOT_ES}
2765#line 2766 "rl78-parse.c" /* yacc.c:1661  */
2766    break;
2767
2768  case 110:
2769#line 556 "./config/rl78-parse.y" /* yacc.c:1661  */
2770    { if (expr_is_sfr ((yyvsp[-4].exp)))
2771	      { B1 (0xce); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[-1].exp)); }
2772	    else if (expr_is_saddr ((yyvsp[-4].exp)))
2773	      { B1 (0xcd); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[-1].exp)); }
2774	    else
2775	      NOT_SFR_OR_SADDR;
2776	  }
2777#line 2778 "rl78-parse.c" /* yacc.c:1661  */
2778    break;
2779
2780  case 111:
2781#line 565 "./config/rl78-parse.y" /* yacc.c:1661  */
2782    { B1 (0xcf); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2783#line 2784 "rl78-parse.c" /* yacc.c:1661  */
2784    break;
2785
2786  case 112:
2787#line 568 "./config/rl78-parse.y" /* yacc.c:1661  */
2788    { B2 (0x11, 0xcf); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); }
2789#line 2790 "rl78-parse.c" /* yacc.c:1661  */
2790    break;
2791
2792  case 113:
2793#line 571 "./config/rl78-parse.y" /* yacc.c:1661  */
2794    { B1 (0x70); F ((yyvsp[-2].regno), 5, 3); }
2795#line 2796 "rl78-parse.c" /* yacc.c:1661  */
2796    break;
2797
2798  case 114:
2799#line 574 "./config/rl78-parse.y" /* yacc.c:1661  */
2800    { B1 (0x60); F ((yyvsp[0].regno), 5, 3); }
2801#line 2802 "rl78-parse.c" /* yacc.c:1661  */
2802    break;
2803
2804  case 115:
2805#line 576 "./config/rl78-parse.y" /* yacc.c:1661  */
2806    {NOT_ES}
2807#line 2808 "rl78-parse.c" /* yacc.c:1661  */
2808    break;
2809
2810  case 116:
2811#line 577 "./config/rl78-parse.y" /* yacc.c:1661  */
2812    { if (expr_is_sfr ((yyvsp[-3].exp)))
2813	      { B1 (0x9e); O1 ((yyvsp[-3].exp)); }
2814	    else if (expr_is_saddr ((yyvsp[-3].exp)))
2815	      { B1 (0x9d); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); }
2816	    else
2817	      NOT_SFR_OR_SADDR;
2818	  }
2819#line 2820 "rl78-parse.c" /* yacc.c:1661  */
2820    break;
2821
2822  case 117:
2823#line 586 "./config/rl78-parse.y" /* yacc.c:1661  */
2824    { B1 (0x8f); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2825#line 2826 "rl78-parse.c" /* yacc.c:1661  */
2826    break;
2827
2828  case 118:
2829#line 589 "./config/rl78-parse.y" /* yacc.c:1661  */
2830    { B1 (0x9f); O2 ((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); }
2831#line 2832 "rl78-parse.c" /* yacc.c:1661  */
2832    break;
2833
2834  case 119:
2835#line 592 "./config/rl78-parse.y" /* yacc.c:1661  */
2836    { B2 (0x11, 0x9f); O2 ((yyvsp[-2].exp)); }
2837#line 2838 "rl78-parse.c" /* yacc.c:1661  */
2838    break;
2839
2840  case 120:
2841#line 595 "./config/rl78-parse.y" /* yacc.c:1661  */
2842    { B1 (0xc9|reg_xbc((yyvsp[-4].regno))); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2843#line 2844 "rl78-parse.c" /* yacc.c:1661  */
2844    break;
2845
2846  case 121:
2847#line 597 "./config/rl78-parse.y" /* yacc.c:1661  */
2848    {NOT_ES}
2849#line 2850 "rl78-parse.c" /* yacc.c:1661  */
2850    break;
2851
2852  case 122:
2853#line 598 "./config/rl78-parse.y" /* yacc.c:1661  */
2854    { if (expr_is_saddr ((yyvsp[-1].exp)))
2855	      { B1 (0x8d); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2856	    else if (expr_is_sfr ((yyvsp[-1].exp)))
2857	      { B1 (0x8e); O1 ((yyvsp[-1].exp)); }
2858	    else
2859	      NOT_SFR_OR_SADDR;
2860	  }
2861#line 2862 "rl78-parse.c" /* yacc.c:1661  */
2862    break;
2863
2864  case 123:
2865#line 606 "./config/rl78-parse.y" /* yacc.c:1661  */
2866    {SA((yyvsp[0].exp))}
2867#line 2868 "rl78-parse.c" /* yacc.c:1661  */
2868    break;
2869
2870  case 124:
2871#line 606 "./config/rl78-parse.y" /* yacc.c:1661  */
2872    {NOT_ES}
2873#line 2874 "rl78-parse.c" /* yacc.c:1661  */
2874    break;
2875
2876  case 125:
2877#line 607 "./config/rl78-parse.y" /* yacc.c:1661  */
2878    { B1 (0xc8|reg_xbc((yyvsp[-5].regno))); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); }
2879#line 2880 "rl78-parse.c" /* yacc.c:1661  */
2880    break;
2881
2882  case 126:
2883#line 610 "./config/rl78-parse.y" /* yacc.c:1661  */
2884    { B2 (0x8e, (yyvsp[0].regno)); }
2885#line 2886 "rl78-parse.c" /* yacc.c:1661  */
2886    break;
2887
2888  case 127:
2889#line 613 "./config/rl78-parse.y" /* yacc.c:1661  */
2890    { if ((yyvsp[0].regno) != 1)
2891	      rl78_error ("Only A allowed here");
2892	    else
2893	      { B2 (0x9e, (yyvsp[-2].regno)); }
2894	  }
2895#line 2896 "rl78-parse.c" /* yacc.c:1661  */
2896    break;
2897
2898  case 128:
2899#line 619 "./config/rl78-parse.y" /* yacc.c:1661  */
2900    {SA((yyvsp[0].exp))}
2901#line 2902 "rl78-parse.c" /* yacc.c:1661  */
2902    break;
2903
2904  case 129:
2905#line 619 "./config/rl78-parse.y" /* yacc.c:1661  */
2906    {NOT_ES}
2907#line 2908 "rl78-parse.c" /* yacc.c:1661  */
2908    break;
2909
2910  case 130:
2911#line 620 "./config/rl78-parse.y" /* yacc.c:1661  */
2912    { if ((yyvsp[-5].regno) != 0xfd)
2913	      rl78_error ("Only ES allowed here");
2914	    else
2915	      { B2 (0x61, 0xb8); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); }
2916	  }
2917#line 2918 "rl78-parse.c" /* yacc.c:1661  */
2918    break;
2919
2920  case 131:
2921#line 627 "./config/rl78-parse.y" /* yacc.c:1661  */
2922    { B1 (0x89); }
2923#line 2924 "rl78-parse.c" /* yacc.c:1661  */
2924    break;
2925
2926  case 132:
2927#line 630 "./config/rl78-parse.y" /* yacc.c:1661  */
2928    { B1 (0x99); }
2929#line 2930 "rl78-parse.c" /* yacc.c:1661  */
2930    break;
2931
2932  case 133:
2933#line 633 "./config/rl78-parse.y" /* yacc.c:1661  */
2934    { B1 (0xca); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); }
2935#line 2936 "rl78-parse.c" /* yacc.c:1661  */
2936    break;
2937
2938  case 134:
2939#line 636 "./config/rl78-parse.y" /* yacc.c:1661  */
2940    { B1 (0x8a); O1 ((yyvsp[-1].exp)); }
2941#line 2942 "rl78-parse.c" /* yacc.c:1661  */
2942    break;
2943
2944  case 135:
2945#line 639 "./config/rl78-parse.y" /* yacc.c:1661  */
2946    { B1 (0x9a); O1 ((yyvsp[-3].exp)); }
2947#line 2948 "rl78-parse.c" /* yacc.c:1661  */
2948    break;
2949
2950  case 136:
2951#line 642 "./config/rl78-parse.y" /* yacc.c:1661  */
2952    { B1 (0x8b); }
2953#line 2954 "rl78-parse.c" /* yacc.c:1661  */
2954    break;
2955
2956  case 137:
2957#line 645 "./config/rl78-parse.y" /* yacc.c:1661  */
2958    { B1 (0x9b); }
2959#line 2960 "rl78-parse.c" /* yacc.c:1661  */
2960    break;
2961
2962  case 138:
2963#line 648 "./config/rl78-parse.y" /* yacc.c:1661  */
2964    { B1 (0xcc); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); }
2965#line 2966 "rl78-parse.c" /* yacc.c:1661  */
2966    break;
2967
2968  case 139:
2969#line 651 "./config/rl78-parse.y" /* yacc.c:1661  */
2970    { B1 (0x8c); O1 ((yyvsp[-1].exp)); }
2971#line 2972 "rl78-parse.c" /* yacc.c:1661  */
2972    break;
2973
2974  case 140:
2975#line 654 "./config/rl78-parse.y" /* yacc.c:1661  */
2976    { B1 (0x9c); O1 ((yyvsp[-3].exp)); }
2977#line 2978 "rl78-parse.c" /* yacc.c:1661  */
2978    break;
2979
2980  case 141:
2981#line 657 "./config/rl78-parse.y" /* yacc.c:1661  */
2982    { B2 (0x61, 0xc9); }
2983#line 2984 "rl78-parse.c" /* yacc.c:1661  */
2984    break;
2985
2986  case 142:
2987#line 660 "./config/rl78-parse.y" /* yacc.c:1661  */
2988    { B2 (0x61, 0xd9); }
2989#line 2990 "rl78-parse.c" /* yacc.c:1661  */
2990    break;
2991
2992  case 143:
2993#line 663 "./config/rl78-parse.y" /* yacc.c:1661  */
2994    { B2 (0x61, 0xe9); }
2995#line 2996 "rl78-parse.c" /* yacc.c:1661  */
2996    break;
2997
2998  case 144:
2999#line 666 "./config/rl78-parse.y" /* yacc.c:1661  */
3000    { B2 (0x61, 0xf9); }
3001#line 3002 "rl78-parse.c" /* yacc.c:1661  */
3002    break;
3003
3004  case 145:
3005#line 669 "./config/rl78-parse.y" /* yacc.c:1661  */
3006    { B1 (0x19); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); }
3007#line 3008 "rl78-parse.c" /* yacc.c:1661  */
3008    break;
3009
3010  case 146:
3011#line 672 "./config/rl78-parse.y" /* yacc.c:1661  */
3012    { B1 (0x09); O2 ((yyvsp[-3].exp)); }
3013#line 3014 "rl78-parse.c" /* yacc.c:1661  */
3014    break;
3015
3016  case 147:
3017#line 675 "./config/rl78-parse.y" /* yacc.c:1661  */
3018    { B1 (0x18); O2 ((yyvsp[-5].exp)); }
3019#line 3020 "rl78-parse.c" /* yacc.c:1661  */
3020    break;
3021
3022  case 148:
3023#line 678 "./config/rl78-parse.y" /* yacc.c:1661  */
3024    { B1 (0x38); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); }
3025#line 3026 "rl78-parse.c" /* yacc.c:1661  */
3026    break;
3027
3028  case 149:
3029#line 681 "./config/rl78-parse.y" /* yacc.c:1661  */
3030    { B1 (0x29); O2 ((yyvsp[-3].exp)); }
3031#line 3032 "rl78-parse.c" /* yacc.c:1661  */
3032    break;
3033
3034  case 150:
3035#line 684 "./config/rl78-parse.y" /* yacc.c:1661  */
3036    { B1 (0x28); O2 ((yyvsp[-5].exp)); }
3037#line 3038 "rl78-parse.c" /* yacc.c:1661  */
3038    break;
3039
3040  case 151:
3041#line 687 "./config/rl78-parse.y" /* yacc.c:1661  */
3042    { B1 (0x39); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); }
3043#line 3044 "rl78-parse.c" /* yacc.c:1661  */
3044    break;
3045
3046  case 152:
3047#line 690 "./config/rl78-parse.y" /* yacc.c:1661  */
3048    { B3 (0x39, 0, 0); O1 ((yyvsp[0].exp)); }
3049#line 3050 "rl78-parse.c" /* yacc.c:1661  */
3050    break;
3051
3052  case 153:
3053#line 693 "./config/rl78-parse.y" /* yacc.c:1661  */
3054    { B1 (0x49); O2 ((yyvsp[-3].exp)); }
3055#line 3056 "rl78-parse.c" /* yacc.c:1661  */
3056    break;
3057
3058  case 154:
3059#line 696 "./config/rl78-parse.y" /* yacc.c:1661  */
3060    { B3 (0x49, 0, 0); }
3061#line 3062 "rl78-parse.c" /* yacc.c:1661  */
3062    break;
3063
3064  case 155:
3065#line 699 "./config/rl78-parse.y" /* yacc.c:1661  */
3066    { B1 (0x48); O2 ((yyvsp[-5].exp)); }
3067#line 3068 "rl78-parse.c" /* yacc.c:1661  */
3068    break;
3069
3070  case 156:
3071#line 702 "./config/rl78-parse.y" /* yacc.c:1661  */
3072    { B3 (0x48, 0, 0); }
3073#line 3074 "rl78-parse.c" /* yacc.c:1661  */
3074    break;
3075
3076  case 157:
3077#line 704 "./config/rl78-parse.y" /* yacc.c:1661  */
3078    {NOT_ES}
3079#line 3080 "rl78-parse.c" /* yacc.c:1661  */
3080    break;
3081
3082  case 158:
3083#line 705 "./config/rl78-parse.y" /* yacc.c:1661  */
3084    { B1 (0xc8); O1 ((yyvsp[-5].exp)); O1 ((yyvsp[-1].exp)); }
3085#line 3086 "rl78-parse.c" /* yacc.c:1661  */
3086    break;
3087
3088  case 159:
3089#line 707 "./config/rl78-parse.y" /* yacc.c:1661  */
3090    {NOT_ES}
3091#line 3092 "rl78-parse.c" /* yacc.c:1661  */
3092    break;
3093
3094  case 160:
3095#line 708 "./config/rl78-parse.y" /* yacc.c:1661  */
3096    { B2 (0xc8, 0); O1 ((yyvsp[-1].exp)); }
3097#line 3098 "rl78-parse.c" /* yacc.c:1661  */
3098    break;
3099
3100  case 161:
3101#line 710 "./config/rl78-parse.y" /* yacc.c:1661  */
3102    {NOT_ES}
3103#line 3104 "rl78-parse.c" /* yacc.c:1661  */
3104    break;
3105
3106  case 162:
3107#line 711 "./config/rl78-parse.y" /* yacc.c:1661  */
3108    { B1 (0x88); O1 ((yyvsp[-2].exp)); }
3109#line 3110 "rl78-parse.c" /* yacc.c:1661  */
3110    break;
3111
3112  case 163:
3113#line 713 "./config/rl78-parse.y" /* yacc.c:1661  */
3114    {NOT_ES}
3115#line 3116 "rl78-parse.c" /* yacc.c:1661  */
3116    break;
3117
3118  case 164:
3119#line 714 "./config/rl78-parse.y" /* yacc.c:1661  */
3120    { B2 (0x88, 0); }
3121#line 3122 "rl78-parse.c" /* yacc.c:1661  */
3122    break;
3123
3124  case 165:
3125#line 716 "./config/rl78-parse.y" /* yacc.c:1661  */
3126    {NOT_ES}
3127#line 3128 "rl78-parse.c" /* yacc.c:1661  */
3128    break;
3129
3130  case 166:
3131#line 717 "./config/rl78-parse.y" /* yacc.c:1661  */
3132    { B1 (0x98); O1 ((yyvsp[-4].exp)); }
3133#line 3134 "rl78-parse.c" /* yacc.c:1661  */
3134    break;
3135
3136  case 167:
3137#line 719 "./config/rl78-parse.y" /* yacc.c:1661  */
3138    {NOT_ES}
3139#line 3140 "rl78-parse.c" /* yacc.c:1661  */
3140    break;
3141
3142  case 168:
3143#line 720 "./config/rl78-parse.y" /* yacc.c:1661  */
3144    { B2 (0x98, 0); }
3145#line 3146 "rl78-parse.c" /* yacc.c:1661  */
3146    break;
3147
3148  case 169:
3149#line 725 "./config/rl78-parse.y" /* yacc.c:1661  */
3150    { if (expr_is_saddr ((yyvsp[-2].exp)))
3151	      { B2 (0x71, 0x04); FE ((yyvsp[0].exp), 9, 3); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); }
3152	    else if (expr_is_sfr ((yyvsp[-2].exp)))
3153	      { B2 (0x71, 0x0c); FE ((yyvsp[0].exp), 9, 3); O1 ((yyvsp[-2].exp)); }
3154	    else
3155	      NOT_SFR_OR_SADDR;
3156	  }
3157#line 3158 "rl78-parse.c" /* yacc.c:1661  */
3158    break;
3159
3160  case 170:
3161#line 734 "./config/rl78-parse.y" /* yacc.c:1661  */
3162    { B2 (0x71, 0x8c); FE ((yyvsp[0].exp), 9, 3); }
3163#line 3164 "rl78-parse.c" /* yacc.c:1661  */
3164    break;
3165
3166  case 171:
3167#line 737 "./config/rl78-parse.y" /* yacc.c:1661  */
3168    { B3 (0x71, 0x0c, (yyvsp[-2].regno)); FE ((yyvsp[0].exp), 9, 3); }
3169#line 3170 "rl78-parse.c" /* yacc.c:1661  */
3170    break;
3171
3172  case 172:
3173#line 740 "./config/rl78-parse.y" /* yacc.c:1661  */
3174    { B2 (0x71, 0x84); FE ((yyvsp[0].exp), 9, 3); }
3175#line 3176 "rl78-parse.c" /* yacc.c:1661  */
3176    break;
3177
3178  case 173:
3179#line 743 "./config/rl78-parse.y" /* yacc.c:1661  */
3180    { if (expr_is_saddr ((yyvsp[-4].exp)))
3181	      { B2 (0x71, 0x01); FE ((yyvsp[-2].exp), 9, 3); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); }
3182	    else if (expr_is_sfr ((yyvsp[-4].exp)))
3183	      { B2 (0x71, 0x09); FE ((yyvsp[-2].exp), 9, 3); O1 ((yyvsp[-4].exp)); }
3184	    else
3185	      NOT_SFR_OR_SADDR;
3186	  }
3187#line 3188 "rl78-parse.c" /* yacc.c:1661  */
3188    break;
3189
3190  case 174:
3191#line 752 "./config/rl78-parse.y" /* yacc.c:1661  */
3192    { B2 (0x71, 0x89); FE ((yyvsp[-2].exp), 9, 3); }
3193#line 3194 "rl78-parse.c" /* yacc.c:1661  */
3194    break;
3195
3196  case 175:
3197#line 755 "./config/rl78-parse.y" /* yacc.c:1661  */
3198    { B3 (0x71, 0x09, (yyvsp[-4].regno)); FE ((yyvsp[-2].exp), 9, 3); }
3199#line 3200 "rl78-parse.c" /* yacc.c:1661  */
3200    break;
3201
3202  case 176:
3203#line 758 "./config/rl78-parse.y" /* yacc.c:1661  */
3204    { B2 (0x71, 0x81); FE ((yyvsp[-2].exp), 9, 3); }
3205#line 3206 "rl78-parse.c" /* yacc.c:1661  */
3206    break;
3207
3208  case 177:
3209#line 763 "./config/rl78-parse.y" /* yacc.c:1661  */
3210    { B2 (0x61, 0xce); O1 ((yyvsp[-3].exp)); }
3211#line 3212 "rl78-parse.c" /* yacc.c:1661  */
3212    break;
3213
3214  case 178:
3215#line 768 "./config/rl78-parse.y" /* yacc.c:1661  */
3216    { B1 (0x30); O2 ((yyvsp[0].exp)); }
3217#line 3218 "rl78-parse.c" /* yacc.c:1661  */
3218    break;
3219
3220  case 179:
3221#line 771 "./config/rl78-parse.y" /* yacc.c:1661  */
3222    { B1 (0x30); F ((yyvsp[-3].regno), 5, 2); O2 ((yyvsp[0].exp)); }
3223#line 3224 "rl78-parse.c" /* yacc.c:1661  */
3224    break;
3225
3226  case 180:
3227#line 773 "./config/rl78-parse.y" /* yacc.c:1661  */
3228    {NOT_ES}
3229#line 3230 "rl78-parse.c" /* yacc.c:1661  */
3230    break;
3231
3232  case 181:
3233#line 774 "./config/rl78-parse.y" /* yacc.c:1661  */
3234    { if (expr_is_saddr ((yyvsp[-4].exp)))
3235	      { B1 (0xc9); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O2 ((yyvsp[-1].exp)); }
3236	    else if (expr_is_sfr ((yyvsp[-4].exp)))
3237	      { B1 (0xcb); O1 ((yyvsp[-4].exp)); O2 ((yyvsp[-1].exp)); }
3238	    else
3239	      NOT_SFR_OR_SADDR;
3240	  }
3241#line 3242 "rl78-parse.c" /* yacc.c:1661  */
3242    break;
3243
3244  case 182:
3245#line 782 "./config/rl78-parse.y" /* yacc.c:1661  */
3246    {NOT_ES}
3247#line 3248 "rl78-parse.c" /* yacc.c:1661  */
3248    break;
3249
3250  case 183:
3251#line 783 "./config/rl78-parse.y" /* yacc.c:1661  */
3252    { if (expr_is_saddr ((yyvsp[-1].exp)))
3253	      { B1 (0xad); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); }
3254	    else if (expr_is_sfr ((yyvsp[-1].exp)))
3255	      { B1 (0xae); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); }
3256	    else
3257	      NOT_SFR_OR_SADDR;
3258	  }
3259#line 3260 "rl78-parse.c" /* yacc.c:1661  */
3260    break;
3261
3262  case 184:
3263#line 791 "./config/rl78-parse.y" /* yacc.c:1661  */
3264    {NOT_ES}
3265#line 3266 "rl78-parse.c" /* yacc.c:1661  */
3266    break;
3267
3268  case 185:
3269#line 792 "./config/rl78-parse.y" /* yacc.c:1661  */
3270    { if (expr_is_saddr ((yyvsp[-3].exp)))
3271	      { B1 (0xbd); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); WA((yyvsp[-3].exp)); }
3272	    else if (expr_is_sfr ((yyvsp[-3].exp)))
3273	      { B1 (0xbe); O1 ((yyvsp[-3].exp)); WA((yyvsp[-3].exp)); }
3274	    else
3275	      NOT_SFR_OR_SADDR;
3276	  }
3277#line 3278 "rl78-parse.c" /* yacc.c:1661  */
3278    break;
3279
3280  case 186:
3281#line 801 "./config/rl78-parse.y" /* yacc.c:1661  */
3282    { B1 (0x11); F ((yyvsp[0].regno), 5, 2); }
3283#line 3284 "rl78-parse.c" /* yacc.c:1661  */
3284    break;
3285
3286  case 187:
3287#line 804 "./config/rl78-parse.y" /* yacc.c:1661  */
3288    { B1 (0x10); F ((yyvsp[-2].regno), 5, 2); }
3289#line 3290 "rl78-parse.c" /* yacc.c:1661  */
3290    break;
3291
3292  case 188:
3293#line 807 "./config/rl78-parse.y" /* yacc.c:1661  */
3294    { B1 (0xaf); O2 ((yyvsp[0].exp)); WA((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
3295#line 3296 "rl78-parse.c" /* yacc.c:1661  */
3296    break;
3297
3298  case 189:
3299#line 810 "./config/rl78-parse.y" /* yacc.c:1661  */
3300    { B1 (0xbf); O2 ((yyvsp[-2].exp)); WA((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); }
3301#line 3302 "rl78-parse.c" /* yacc.c:1661  */
3302    break;
3303
3304  case 190:
3305#line 813 "./config/rl78-parse.y" /* yacc.c:1661  */
3306    { B1 (0xa9); }
3307#line 3308 "rl78-parse.c" /* yacc.c:1661  */
3308    break;
3309
3310  case 191:
3311#line 816 "./config/rl78-parse.y" /* yacc.c:1661  */
3312    { B1 (0xb9); }
3313#line 3314 "rl78-parse.c" /* yacc.c:1661  */
3314    break;
3315
3316  case 192:
3317#line 819 "./config/rl78-parse.y" /* yacc.c:1661  */
3318    { B1 (0xaa); O1 ((yyvsp[-1].exp)); }
3319#line 3320 "rl78-parse.c" /* yacc.c:1661  */
3320    break;
3321
3322  case 193:
3323#line 822 "./config/rl78-parse.y" /* yacc.c:1661  */
3324    { B1 (0xba); O1 ((yyvsp[-3].exp)); }
3325#line 3326 "rl78-parse.c" /* yacc.c:1661  */
3326    break;
3327
3328  case 194:
3329#line 825 "./config/rl78-parse.y" /* yacc.c:1661  */
3330    { B1 (0xab); }
3331#line 3332 "rl78-parse.c" /* yacc.c:1661  */
3332    break;
3333
3334  case 195:
3335#line 828 "./config/rl78-parse.y" /* yacc.c:1661  */
3336    { B1 (0xbb); }
3337#line 3338 "rl78-parse.c" /* yacc.c:1661  */
3338    break;
3339
3340  case 196:
3341#line 831 "./config/rl78-parse.y" /* yacc.c:1661  */
3342    { B1 (0xac); O1 ((yyvsp[-1].exp)); }
3343#line 3344 "rl78-parse.c" /* yacc.c:1661  */
3344    break;
3345
3346  case 197:
3347#line 834 "./config/rl78-parse.y" /* yacc.c:1661  */
3348    { B1 (0xbc); O1 ((yyvsp[-3].exp)); }
3349#line 3350 "rl78-parse.c" /* yacc.c:1661  */
3350    break;
3351
3352  case 198:
3353#line 837 "./config/rl78-parse.y" /* yacc.c:1661  */
3354    { B1 (0x59); O2 ((yyvsp[-3].exp)); }
3355#line 3356 "rl78-parse.c" /* yacc.c:1661  */
3356    break;
3357
3358  case 199:
3359#line 840 "./config/rl78-parse.y" /* yacc.c:1661  */
3360    { B1 (0x58); O2 ((yyvsp[-5].exp)); }
3361#line 3362 "rl78-parse.c" /* yacc.c:1661  */
3362    break;
3363
3364  case 200:
3365#line 843 "./config/rl78-parse.y" /* yacc.c:1661  */
3366    { B1 (0x69); O2 ((yyvsp[-3].exp)); }
3367#line 3368 "rl78-parse.c" /* yacc.c:1661  */
3368    break;
3369
3370  case 201:
3371#line 846 "./config/rl78-parse.y" /* yacc.c:1661  */
3372    { B1 (0x68); O2 ((yyvsp[-5].exp)); }
3373#line 3374 "rl78-parse.c" /* yacc.c:1661  */
3374    break;
3375
3376  case 202:
3377#line 849 "./config/rl78-parse.y" /* yacc.c:1661  */
3378    { B1 (0x79); O2 ((yyvsp[-3].exp)); }
3379#line 3380 "rl78-parse.c" /* yacc.c:1661  */
3380    break;
3381
3382  case 203:
3383#line 852 "./config/rl78-parse.y" /* yacc.c:1661  */
3384    { B3 (0x79, 0, 0); }
3385#line 3386 "rl78-parse.c" /* yacc.c:1661  */
3386    break;
3387
3388  case 204:
3389#line 855 "./config/rl78-parse.y" /* yacc.c:1661  */
3390    { B1 (0x78); O2 ((yyvsp[-5].exp)); }
3391#line 3392 "rl78-parse.c" /* yacc.c:1661  */
3392    break;
3393
3394  case 205:
3395#line 858 "./config/rl78-parse.y" /* yacc.c:1661  */
3396    { B3 (0x78, 0, 0); }
3397#line 3398 "rl78-parse.c" /* yacc.c:1661  */
3398    break;
3399
3400  case 206:
3401#line 860 "./config/rl78-parse.y" /* yacc.c:1661  */
3402    {NOT_ES}
3403#line 3404 "rl78-parse.c" /* yacc.c:1661  */
3404    break;
3405
3406  case 207:
3407#line 861 "./config/rl78-parse.y" /* yacc.c:1661  */
3408    { B1 (0xa8); O1 ((yyvsp[-2].exp));  WA((yyvsp[-2].exp));}
3409#line 3410 "rl78-parse.c" /* yacc.c:1661  */
3410    break;
3411
3412  case 208:
3413#line 863 "./config/rl78-parse.y" /* yacc.c:1661  */
3414    {NOT_ES}
3415#line 3416 "rl78-parse.c" /* yacc.c:1661  */
3416    break;
3417
3418  case 209:
3419#line 864 "./config/rl78-parse.y" /* yacc.c:1661  */
3420    { B2 (0xa8, 0); }
3421#line 3422 "rl78-parse.c" /* yacc.c:1661  */
3422    break;
3423
3424  case 210:
3425#line 866 "./config/rl78-parse.y" /* yacc.c:1661  */
3426    {NOT_ES}
3427#line 3428 "rl78-parse.c" /* yacc.c:1661  */
3428    break;
3429
3430  case 211:
3431#line 867 "./config/rl78-parse.y" /* yacc.c:1661  */
3432    { B1 (0xb8); O1 ((yyvsp[-4].exp)); WA((yyvsp[-4].exp)); }
3433#line 3434 "rl78-parse.c" /* yacc.c:1661  */
3434    break;
3435
3436  case 212:
3437#line 869 "./config/rl78-parse.y" /* yacc.c:1661  */
3438    {NOT_ES}
3439#line 3440 "rl78-parse.c" /* yacc.c:1661  */
3440    break;
3441
3442  case 213:
3443#line 870 "./config/rl78-parse.y" /* yacc.c:1661  */
3444    { B2 (0xb8, 0); }
3445#line 3446 "rl78-parse.c" /* yacc.c:1661  */
3446    break;
3447
3448  case 214:
3449#line 872 "./config/rl78-parse.y" /* yacc.c:1661  */
3450    {SA((yyvsp[0].exp))}
3451#line 3452 "rl78-parse.c" /* yacc.c:1661  */
3452    break;
3453
3454  case 215:
3455#line 873 "./config/rl78-parse.y" /* yacc.c:1661  */
3456    { B1 (0xca); F ((yyvsp[-3].regno), 2, 2); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); }
3457#line 3458 "rl78-parse.c" /* yacc.c:1661  */
3458    break;
3459
3460  case 216:
3461#line 876 "./config/rl78-parse.y" /* yacc.c:1661  */
3462    { B1 (0xcb); F ((yyvsp[-4].regno), 2, 2); O2 ((yyvsp[0].exp)); WA((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
3463#line 3464 "rl78-parse.c" /* yacc.c:1661  */
3464    break;
3465
3466  case 217:
3467#line 879 "./config/rl78-parse.y" /* yacc.c:1661  */
3468    { B2 (0xcb, 0xf8); O2 ((yyvsp[0].exp)); }
3469#line 3470 "rl78-parse.c" /* yacc.c:1661  */
3470    break;
3471
3472  case 218:
3473#line 882 "./config/rl78-parse.y" /* yacc.c:1661  */
3474    { B2 (0xbe, 0xf8); }
3475#line 3476 "rl78-parse.c" /* yacc.c:1661  */
3476    break;
3477
3478  case 219:
3479#line 885 "./config/rl78-parse.y" /* yacc.c:1661  */
3480    { B2 (0xae, 0xf8); }
3481#line 3482 "rl78-parse.c" /* yacc.c:1661  */
3482    break;
3483
3484  case 220:
3485#line 888 "./config/rl78-parse.y" /* yacc.c:1661  */
3486    { B3 (0xcb, 0xf8, 0xff); F ((yyvsp[-2].regno), 2, 2); }
3487#line 3488 "rl78-parse.c" /* yacc.c:1661  */
3488    break;
3489
3490  case 221:
3491#line 893 "./config/rl78-parse.y" /* yacc.c:1661  */
3492    { B1 (0x00); }
3493#line 3494 "rl78-parse.c" /* yacc.c:1661  */
3494    break;
3495
3496  case 222:
3497#line 898 "./config/rl78-parse.y" /* yacc.c:1661  */
3498    { B2 (0x71, 0xc0); }
3499#line 3500 "rl78-parse.c" /* yacc.c:1661  */
3500    break;
3501
3502  case 223:
3503#line 903 "./config/rl78-parse.y" /* yacc.c:1661  */
3504    { B1 (0xc0); F ((yyvsp[0].regno), 5, 2); }
3505#line 3506 "rl78-parse.c" /* yacc.c:1661  */
3506    break;
3507
3508  case 224:
3509#line 906 "./config/rl78-parse.y" /* yacc.c:1661  */
3510    { B2 (0x61, 0xcd); }
3511#line 3512 "rl78-parse.c" /* yacc.c:1661  */
3512    break;
3513
3514  case 225:
3515#line 909 "./config/rl78-parse.y" /* yacc.c:1661  */
3516    { B1 (0xc1); F ((yyvsp[0].regno), 5, 2); }
3517#line 3518 "rl78-parse.c" /* yacc.c:1661  */
3518    break;
3519
3520  case 226:
3521#line 912 "./config/rl78-parse.y" /* yacc.c:1661  */
3522    { B2 (0x61, 0xdd); }
3523#line 3524 "rl78-parse.c" /* yacc.c:1661  */
3524    break;
3525
3526  case 227:
3527#line 917 "./config/rl78-parse.y" /* yacc.c:1661  */
3528    { B1 (0xd7); }
3529#line 3530 "rl78-parse.c" /* yacc.c:1661  */
3530    break;
3531
3532  case 228:
3533#line 920 "./config/rl78-parse.y" /* yacc.c:1661  */
3534    { B2 (0x61, 0xfc); }
3535#line 3536 "rl78-parse.c" /* yacc.c:1661  */
3536    break;
3537
3538  case 229:
3539#line 923 "./config/rl78-parse.y" /* yacc.c:1661  */
3540    { B2 (0x61, 0xec); }
3541#line 3542 "rl78-parse.c" /* yacc.c:1661  */
3542    break;
3543
3544  case 230:
3545#line 928 "./config/rl78-parse.y" /* yacc.c:1661  */
3546    { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3547	      { B2 (0x61, 0xeb); }
3548	  }
3549#line 3550 "rl78-parse.c" /* yacc.c:1661  */
3550    break;
3551
3552  case 231:
3553#line 933 "./config/rl78-parse.y" /* yacc.c:1661  */
3554    { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3555	      { B2 (0x61, 0xdc); }
3556	  }
3557#line 3558 "rl78-parse.c" /* yacc.c:1661  */
3558    break;
3559
3560  case 232:
3561#line 938 "./config/rl78-parse.y" /* yacc.c:1661  */
3562    { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3563	      { B2 (0x61, 0xee); }
3564	  }
3565#line 3566 "rl78-parse.c" /* yacc.c:1661  */
3566    break;
3567
3568  case 233:
3569#line 943 "./config/rl78-parse.y" /* yacc.c:1661  */
3570    { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3571	      { B2 (0x61, 0xfe); }
3572	  }
3573#line 3574 "rl78-parse.c" /* yacc.c:1661  */
3574    break;
3575
3576  case 234:
3577#line 948 "./config/rl78-parse.y" /* yacc.c:1661  */
3578    { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3579	      { B2 (0x61, 0xdb); }
3580	  }
3581#line 3582 "rl78-parse.c" /* yacc.c:1661  */
3582    break;
3583
3584  case 235:
3585#line 953 "./config/rl78-parse.y" /* yacc.c:1661  */
3586    { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3587	      { B2 (0x61, 0xfb);}
3588	  }
3589#line 3590 "rl78-parse.c" /* yacc.c:1661  */
3590    break;
3591
3592  case 236:
3593#line 960 "./config/rl78-parse.y" /* yacc.c:1661  */
3594    { if (check_expr_is_const ((yyvsp[0].exp), 1, 7))
3595	      { B2 (0x31, 0x0b); FE ((yyvsp[0].exp), 9, 3); }
3596	  }
3597#line 3598 "rl78-parse.c" /* yacc.c:1661  */
3598    break;
3599
3600  case 237:
3601#line 965 "./config/rl78-parse.y" /* yacc.c:1661  */
3602    { if (check_expr_is_const ((yyvsp[0].exp), 1, 15))
3603	      { B2 (0x31, 0x0f); FE ((yyvsp[0].exp), 8, 4); }
3604	  }
3605#line 3606 "rl78-parse.c" /* yacc.c:1661  */
3606    break;
3607
3608  case 238:
3609#line 972 "./config/rl78-parse.y" /* yacc.c:1661  */
3610    { B2 (0x61, 0xcf); }
3611#line 3612 "rl78-parse.c" /* yacc.c:1661  */
3612    break;
3613
3614  case 239:
3615#line 975 "./config/rl78-parse.y" /* yacc.c:1661  */
3616    { B2 (0x61, 0xdf); }
3617#line 3618 "rl78-parse.c" /* yacc.c:1661  */
3618    break;
3619
3620  case 240:
3621#line 978 "./config/rl78-parse.y" /* yacc.c:1661  */
3622    { B2 (0x61, 0xef); }
3623#line 3624 "rl78-parse.c" /* yacc.c:1661  */
3624    break;
3625
3626  case 241:
3627#line 981 "./config/rl78-parse.y" /* yacc.c:1661  */
3628    { B2 (0x61, 0xff); }
3629#line 3630 "rl78-parse.c" /* yacc.c:1661  */
3630    break;
3631
3632  case 242:
3633#line 986 "./config/rl78-parse.y" /* yacc.c:1661  */
3634    { if (check_expr_is_const ((yyvsp[0].exp), 1, 7))
3635	      { B2 (0x31, 0x09); FE ((yyvsp[0].exp), 9, 3); }
3636	  }
3637#line 3638 "rl78-parse.c" /* yacc.c:1661  */
3638    break;
3639
3640  case 243:
3641#line 991 "./config/rl78-parse.y" /* yacc.c:1661  */
3642    { if (check_expr_is_const ((yyvsp[0].exp), 1, 7))
3643	      { B2 (0x31, 0x08); FE ((yyvsp[0].exp), 9, 3); }
3644	  }
3645#line 3646 "rl78-parse.c" /* yacc.c:1661  */
3646    break;
3647
3648  case 244:
3649#line 996 "./config/rl78-parse.y" /* yacc.c:1661  */
3650    { if (check_expr_is_const ((yyvsp[0].exp), 1, 7))
3651	      { B2 (0x31, 0x07); FE ((yyvsp[0].exp), 9, 3); }
3652	  }
3653#line 3654 "rl78-parse.c" /* yacc.c:1661  */
3654    break;
3655
3656  case 245:
3657#line 1001 "./config/rl78-parse.y" /* yacc.c:1661  */
3658    { if (check_expr_is_const ((yyvsp[0].exp), 1, 15))
3659	      { B2 (0x31, 0x0d); FE ((yyvsp[0].exp), 8, 4); }
3660	  }
3661#line 3662 "rl78-parse.c" /* yacc.c:1661  */
3662    break;
3663
3664  case 246:
3665#line 1006 "./config/rl78-parse.y" /* yacc.c:1661  */
3666    { if (check_expr_is_const ((yyvsp[0].exp), 1, 15))
3667	      { B2 (0x31, 0x0c); FE ((yyvsp[0].exp), 8, 4); }
3668	  }
3669#line 3670 "rl78-parse.c" /* yacc.c:1661  */
3670    break;
3671
3672  case 247:
3673#line 1013 "./config/rl78-parse.y" /* yacc.c:1661  */
3674    { if (check_expr_is_const ((yyvsp[0].exp), 1, 7))
3675	      { B2 (0x31, 0x0a); FE ((yyvsp[0].exp), 9, 3); }
3676	  }
3677#line 3678 "rl78-parse.c" /* yacc.c:1661  */
3678    break;
3679
3680  case 248:
3681#line 1018 "./config/rl78-parse.y" /* yacc.c:1661  */
3682    { if (check_expr_is_const ((yyvsp[0].exp), 1, 15))
3683	      { B2 (0x31, 0x0e); FE ((yyvsp[0].exp), 8, 4); }
3684	  }
3685#line 3686 "rl78-parse.c" /* yacc.c:1661  */
3686    break;
3687
3688  case 249:
3689#line 1025 "./config/rl78-parse.y" /* yacc.c:1661  */
3690    { B2 (0x61, 0xc8); rl78_relax (RL78_RELAX_BRANCH, 0); }
3691#line 3692 "rl78-parse.c" /* yacc.c:1661  */
3692    break;
3693
3694  case 250:
3695#line 1028 "./config/rl78-parse.y" /* yacc.c:1661  */
3696    { B2 (0x61, 0xe3); rl78_relax (RL78_RELAX_BRANCH, 0); }
3697#line 3698 "rl78-parse.c" /* yacc.c:1661  */
3698    break;
3699
3700  case 251:
3701#line 1031 "./config/rl78-parse.y" /* yacc.c:1661  */
3702    { B2 (0x61, 0xd8); rl78_relax (RL78_RELAX_BRANCH, 0); }
3703#line 3704 "rl78-parse.c" /* yacc.c:1661  */
3704    break;
3705
3706  case 252:
3707#line 1034 "./config/rl78-parse.y" /* yacc.c:1661  */
3708    { B2 (0x61, 0xf3); rl78_relax (RL78_RELAX_BRANCH, 0); }
3709#line 3710 "rl78-parse.c" /* yacc.c:1661  */
3710    break;
3711
3712  case 253:
3713#line 1037 "./config/rl78-parse.y" /* yacc.c:1661  */
3714    { B2 (0x61, 0xf8); rl78_relax (RL78_RELAX_BRANCH, 0); }
3715#line 3716 "rl78-parse.c" /* yacc.c:1661  */
3716    break;
3717
3718  case 254:
3719#line 1040 "./config/rl78-parse.y" /* yacc.c:1661  */
3720    { B2 (0x61, 0xe8); rl78_relax (RL78_RELAX_BRANCH, 0); }
3721#line 3722 "rl78-parse.c" /* yacc.c:1661  */
3722    break;
3723
3724  case 255:
3725#line 1045 "./config/rl78-parse.y" /* yacc.c:1661  */
3726    { B2 (0x61, 0xfd); }
3727#line 3728 "rl78-parse.c" /* yacc.c:1661  */
3728    break;
3729
3730  case 256:
3731#line 1050 "./config/rl78-parse.y" /* yacc.c:1661  */
3732    { if ((yyvsp[0].regno) == 0) /* X */
3733	      { B1 (0x08); }
3734	    else
3735	      { B2 (0x61, 0x88); F ((yyvsp[0].regno), 13, 3); }
3736	  }
3737#line 3738 "rl78-parse.c" /* yacc.c:1661  */
3738    break;
3739
3740  case 257:
3741#line 1057 "./config/rl78-parse.y" /* yacc.c:1661  */
3742    { B2 (0x61, 0xaa); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
3743#line 3744 "rl78-parse.c" /* yacc.c:1661  */
3744    break;
3745
3746  case 258:
3747#line 1060 "./config/rl78-parse.y" /* yacc.c:1661  */
3748    { B2 (0x61, 0xae); }
3749#line 3750 "rl78-parse.c" /* yacc.c:1661  */
3750    break;
3751
3752  case 259:
3753#line 1063 "./config/rl78-parse.y" /* yacc.c:1661  */
3754    { B2 (0x61, 0xaf); O1 ((yyvsp[-1].exp)); }
3755#line 3756 "rl78-parse.c" /* yacc.c:1661  */
3756    break;
3757
3758  case 260:
3759#line 1066 "./config/rl78-parse.y" /* yacc.c:1661  */
3760    { B2 (0x61, 0xac); }
3761#line 3762 "rl78-parse.c" /* yacc.c:1661  */
3762    break;
3763
3764  case 261:
3765#line 1069 "./config/rl78-parse.y" /* yacc.c:1661  */
3766    { B2 (0x61, 0xad); O1 ((yyvsp[-1].exp)); }
3767#line 3768 "rl78-parse.c" /* yacc.c:1661  */
3768    break;
3769
3770  case 262:
3771#line 1072 "./config/rl78-parse.y" /* yacc.c:1661  */
3772    { B2 (0x61, 0xb9); }
3773#line 3774 "rl78-parse.c" /* yacc.c:1661  */
3774    break;
3775
3776  case 263:
3777#line 1075 "./config/rl78-parse.y" /* yacc.c:1661  */
3778    { B2 (0x61, 0xa9); }
3779#line 3780 "rl78-parse.c" /* yacc.c:1661  */
3780    break;
3781
3782  case 264:
3783#line 1078 "./config/rl78-parse.y" /* yacc.c:1661  */
3784    { if (expr_is_sfr ((yyvsp[0].exp)))
3785	      { B2 (0x61, 0xab); O1 ((yyvsp[0].exp)); }
3786	    else if (expr_is_saddr ((yyvsp[0].exp)))
3787	      { B2 (0x61, 0xa8); SET_SA ((yyvsp[0].exp)); O1 ((yyvsp[0].exp)); }
3788	    else
3789	      NOT_SFR_OR_SADDR;
3790	  }
3791#line 3792 "rl78-parse.c" /* yacc.c:1661  */
3792    break;
3793
3794  case 265:
3795#line 1089 "./config/rl78-parse.y" /* yacc.c:1661  */
3796    { B1 (0x31); F ((yyvsp[0].regno), 5, 2); }
3797#line 3798 "rl78-parse.c" /* yacc.c:1661  */
3798    break;
3799
3800  case 267:
3801#line 1099 "./config/rl78-parse.y" /* yacc.c:1661  */
3802    { rl78_prefix (0x11); }
3803#line 3804 "rl78-parse.c" /* yacc.c:1661  */
3804    break;
3805
3806  case 268:
3807#line 1102 "./config/rl78-parse.y" /* yacc.c:1661  */
3808    { (yyval.regno) = 0; }
3809#line 3810 "rl78-parse.c" /* yacc.c:1661  */
3810    break;
3811
3812  case 269:
3813#line 1103 "./config/rl78-parse.y" /* yacc.c:1661  */
3814    { (yyval.regno) = 1; }
3815#line 3816 "rl78-parse.c" /* yacc.c:1661  */
3816    break;
3817
3818  case 270:
3819#line 1104 "./config/rl78-parse.y" /* yacc.c:1661  */
3820    { (yyval.regno) = 2; }
3821#line 3822 "rl78-parse.c" /* yacc.c:1661  */
3822    break;
3823
3824  case 271:
3825#line 1105 "./config/rl78-parse.y" /* yacc.c:1661  */
3826    { (yyval.regno) = 3; }
3827#line 3828 "rl78-parse.c" /* yacc.c:1661  */
3828    break;
3829
3830  case 272:
3831#line 1106 "./config/rl78-parse.y" /* yacc.c:1661  */
3832    { (yyval.regno) = 4; }
3833#line 3834 "rl78-parse.c" /* yacc.c:1661  */
3834    break;
3835
3836  case 273:
3837#line 1107 "./config/rl78-parse.y" /* yacc.c:1661  */
3838    { (yyval.regno) = 5; }
3839#line 3840 "rl78-parse.c" /* yacc.c:1661  */
3840    break;
3841
3842  case 274:
3843#line 1108 "./config/rl78-parse.y" /* yacc.c:1661  */
3844    { (yyval.regno) = 6; }
3845#line 3846 "rl78-parse.c" /* yacc.c:1661  */
3846    break;
3847
3848  case 275:
3849#line 1109 "./config/rl78-parse.y" /* yacc.c:1661  */
3850    { (yyval.regno) = 7; }
3851#line 3852 "rl78-parse.c" /* yacc.c:1661  */
3852    break;
3853
3854  case 276:
3855#line 1112 "./config/rl78-parse.y" /* yacc.c:1661  */
3856    { (yyval.regno) = 0; }
3857#line 3858 "rl78-parse.c" /* yacc.c:1661  */
3858    break;
3859
3860  case 277:
3861#line 1113 "./config/rl78-parse.y" /* yacc.c:1661  */
3862    { (yyval.regno) = 2; }
3863#line 3864 "rl78-parse.c" /* yacc.c:1661  */
3864    break;
3865
3866  case 278:
3867#line 1114 "./config/rl78-parse.y" /* yacc.c:1661  */
3868    { (yyval.regno) = 3; }
3869#line 3870 "rl78-parse.c" /* yacc.c:1661  */
3870    break;
3871
3872  case 279:
3873#line 1115 "./config/rl78-parse.y" /* yacc.c:1661  */
3874    { (yyval.regno) = 4; }
3875#line 3876 "rl78-parse.c" /* yacc.c:1661  */
3876    break;
3877
3878  case 280:
3879#line 1116 "./config/rl78-parse.y" /* yacc.c:1661  */
3880    { (yyval.regno) = 5; }
3881#line 3882 "rl78-parse.c" /* yacc.c:1661  */
3882    break;
3883
3884  case 281:
3885#line 1117 "./config/rl78-parse.y" /* yacc.c:1661  */
3886    { (yyval.regno) = 6; }
3887#line 3888 "rl78-parse.c" /* yacc.c:1661  */
3888    break;
3889
3890  case 282:
3891#line 1118 "./config/rl78-parse.y" /* yacc.c:1661  */
3892    { (yyval.regno) = 7; }
3893#line 3894 "rl78-parse.c" /* yacc.c:1661  */
3894    break;
3895
3896  case 283:
3897#line 1121 "./config/rl78-parse.y" /* yacc.c:1661  */
3898    { (yyval.regno) = 0; }
3899#line 3900 "rl78-parse.c" /* yacc.c:1661  */
3900    break;
3901
3902  case 284:
3903#line 1122 "./config/rl78-parse.y" /* yacc.c:1661  */
3904    { (yyval.regno) = 1; }
3905#line 3906 "rl78-parse.c" /* yacc.c:1661  */
3906    break;
3907
3908  case 285:
3909#line 1123 "./config/rl78-parse.y" /* yacc.c:1661  */
3910    { (yyval.regno) = 2; }
3911#line 3912 "rl78-parse.c" /* yacc.c:1661  */
3912    break;
3913
3914  case 286:
3915#line 1124 "./config/rl78-parse.y" /* yacc.c:1661  */
3916    { (yyval.regno) = 3; }
3917#line 3918 "rl78-parse.c" /* yacc.c:1661  */
3918    break;
3919
3920  case 287:
3921#line 1127 "./config/rl78-parse.y" /* yacc.c:1661  */
3922    { (yyval.regno) = 1; }
3923#line 3924 "rl78-parse.c" /* yacc.c:1661  */
3924    break;
3925
3926  case 288:
3927#line 1128 "./config/rl78-parse.y" /* yacc.c:1661  */
3928    { (yyval.regno) = 2; }
3929#line 3930 "rl78-parse.c" /* yacc.c:1661  */
3930    break;
3931
3932  case 289:
3933#line 1129 "./config/rl78-parse.y" /* yacc.c:1661  */
3934    { (yyval.regno) = 3; }
3935#line 3936 "rl78-parse.c" /* yacc.c:1661  */
3936    break;
3937
3938  case 290:
3939#line 1132 "./config/rl78-parse.y" /* yacc.c:1661  */
3940    { (yyval.regno) = 0xf8; }
3941#line 3942 "rl78-parse.c" /* yacc.c:1661  */
3942    break;
3943
3944  case 291:
3945#line 1133 "./config/rl78-parse.y" /* yacc.c:1661  */
3946    { (yyval.regno) = 0xf9; }
3947#line 3948 "rl78-parse.c" /* yacc.c:1661  */
3948    break;
3949
3950  case 292:
3951#line 1134 "./config/rl78-parse.y" /* yacc.c:1661  */
3952    { (yyval.regno) = 0xfa; }
3953#line 3954 "rl78-parse.c" /* yacc.c:1661  */
3954    break;
3955
3956  case 293:
3957#line 1135 "./config/rl78-parse.y" /* yacc.c:1661  */
3958    { (yyval.regno) = 0xfc; }
3959#line 3960 "rl78-parse.c" /* yacc.c:1661  */
3960    break;
3961
3962  case 294:
3963#line 1136 "./config/rl78-parse.y" /* yacc.c:1661  */
3964    { (yyval.regno) = 0xfd; }
3965#line 3966 "rl78-parse.c" /* yacc.c:1661  */
3966    break;
3967
3968  case 295:
3969#line 1137 "./config/rl78-parse.y" /* yacc.c:1661  */
3970    { (yyval.regno) = 0xfe; }
3971#line 3972 "rl78-parse.c" /* yacc.c:1661  */
3972    break;
3973
3974  case 296:
3975#line 1138 "./config/rl78-parse.y" /* yacc.c:1661  */
3976    { (yyval.regno) = 0xff; }
3977#line 3978 "rl78-parse.c" /* yacc.c:1661  */
3978    break;
3979
3980  case 297:
3981#line 1144 "./config/rl78-parse.y" /* yacc.c:1661  */
3982    { (yyval.regno) = 0x00; }
3983#line 3984 "rl78-parse.c" /* yacc.c:1661  */
3984    break;
3985
3986  case 298:
3987#line 1145 "./config/rl78-parse.y" /* yacc.c:1661  */
3988    { (yyval.regno) = 0x10; }
3989#line 3990 "rl78-parse.c" /* yacc.c:1661  */
3990    break;
3991
3992  case 299:
3993#line 1146 "./config/rl78-parse.y" /* yacc.c:1661  */
3994    { (yyval.regno) = 0x20; }
3995#line 3996 "rl78-parse.c" /* yacc.c:1661  */
3996    break;
3997
3998  case 300:
3999#line 1147 "./config/rl78-parse.y" /* yacc.c:1661  */
4000    { (yyval.regno) = 0x30; }
4001#line 4002 "rl78-parse.c" /* yacc.c:1661  */
4002    break;
4003
4004  case 301:
4005#line 1148 "./config/rl78-parse.y" /* yacc.c:1661  */
4006    { (yyval.regno) = 0x40; }
4007#line 4008 "rl78-parse.c" /* yacc.c:1661  */
4008    break;
4009
4010  case 302:
4011#line 1149 "./config/rl78-parse.y" /* yacc.c:1661  */
4012    { (yyval.regno) = 0x50; }
4013#line 4014 "rl78-parse.c" /* yacc.c:1661  */
4014    break;
4015
4016  case 303:
4017#line 1150 "./config/rl78-parse.y" /* yacc.c:1661  */
4018    { (yyval.regno) = 0x60; }
4019#line 4020 "rl78-parse.c" /* yacc.c:1661  */
4020    break;
4021
4022  case 304:
4023#line 1151 "./config/rl78-parse.y" /* yacc.c:1661  */
4024    { (yyval.regno) = 0x70; }
4025#line 4026 "rl78-parse.c" /* yacc.c:1661  */
4026    break;
4027
4028  case 305:
4029#line 1154 "./config/rl78-parse.y" /* yacc.c:1661  */
4030    { (yyval.regno) = 0x00; }
4031#line 4032 "rl78-parse.c" /* yacc.c:1661  */
4032    break;
4033
4034  case 306:
4035#line 1155 "./config/rl78-parse.y" /* yacc.c:1661  */
4036    { (yyval.regno) = 0x20; }
4037#line 4038 "rl78-parse.c" /* yacc.c:1661  */
4038    break;
4039
4040  case 307:
4041#line 1156 "./config/rl78-parse.y" /* yacc.c:1661  */
4042    { (yyval.regno) = 0x40; }
4043#line 4044 "rl78-parse.c" /* yacc.c:1661  */
4044    break;
4045
4046  case 308:
4047#line 1159 "./config/rl78-parse.y" /* yacc.c:1661  */
4048    { (yyval.regno) = 0x05; rl78_bit_insn = 1; }
4049#line 4050 "rl78-parse.c" /* yacc.c:1661  */
4050    break;
4051
4052  case 309:
4053#line 1160 "./config/rl78-parse.y" /* yacc.c:1661  */
4054    { (yyval.regno) = 0x06; rl78_bit_insn = 1; }
4055#line 4056 "rl78-parse.c" /* yacc.c:1661  */
4056    break;
4057
4058  case 310:
4059#line 1161 "./config/rl78-parse.y" /* yacc.c:1661  */
4060    { (yyval.regno) = 0x07; rl78_bit_insn = 1; }
4061#line 4062 "rl78-parse.c" /* yacc.c:1661  */
4062    break;
4063
4064  case 311:
4065#line 1164 "./config/rl78-parse.y" /* yacc.c:1661  */
4066    { (yyval.regno) = 0x02;    rl78_bit_insn = 1; rl78_linkrelax_branch (); }
4067#line 4068 "rl78-parse.c" /* yacc.c:1661  */
4068    break;
4069
4070  case 312:
4071#line 1165 "./config/rl78-parse.y" /* yacc.c:1661  */
4072    { (yyval.regno) = 0x04;    rl78_bit_insn = 1; rl78_linkrelax_branch (); }
4073#line 4074 "rl78-parse.c" /* yacc.c:1661  */
4074    break;
4075
4076  case 313:
4077#line 1166 "./config/rl78-parse.y" /* yacc.c:1661  */
4078    { (yyval.regno) = 0x00; rl78_bit_insn = 1; }
4079#line 4080 "rl78-parse.c" /* yacc.c:1661  */
4080    break;
4081
4082  case 314:
4083#line 1169 "./config/rl78-parse.y" /* yacc.c:1661  */
4084    { (yyval.regno) = 0; rl78_bit_insn = 1; }
4085#line 4086 "rl78-parse.c" /* yacc.c:1661  */
4086    break;
4087
4088  case 315:
4089#line 1170 "./config/rl78-parse.y" /* yacc.c:1661  */
4090    { (yyval.regno) = 1; rl78_bit_insn = 1; }
4091#line 4092 "rl78-parse.c" /* yacc.c:1661  */
4092    break;
4093
4094  case 316:
4095#line 1173 "./config/rl78-parse.y" /* yacc.c:1661  */
4096    { (yyval.regno) = 0x00; }
4097#line 4098 "rl78-parse.c" /* yacc.c:1661  */
4098    break;
4099
4100  case 317:
4101#line 1174 "./config/rl78-parse.y" /* yacc.c:1661  */
4102    { (yyval.regno) = 0x10; }
4103#line 4104 "rl78-parse.c" /* yacc.c:1661  */
4104    break;
4105
4106  case 318:
4107#line 1177 "./config/rl78-parse.y" /* yacc.c:1661  */
4108    { (yyval.regno) = 0x00; }
4109#line 4110 "rl78-parse.c" /* yacc.c:1661  */
4110    break;
4111
4112  case 319:
4113#line 1178 "./config/rl78-parse.y" /* yacc.c:1661  */
4114    { (yyval.regno) = 0x10; }
4115#line 4116 "rl78-parse.c" /* yacc.c:1661  */
4116    break;
4117
4118  case 320:
4119#line 1181 "./config/rl78-parse.y" /* yacc.c:1661  */
4120    { (yyval.regno) = 0x00; }
4121#line 4122 "rl78-parse.c" /* yacc.c:1661  */
4122    break;
4123
4124  case 321:
4125#line 1182 "./config/rl78-parse.y" /* yacc.c:1661  */
4126    { (yyval.regno) = 0x10; }
4127#line 4128 "rl78-parse.c" /* yacc.c:1661  */
4128    break;
4129
4130  case 322:
4131#line 1185 "./config/rl78-parse.y" /* yacc.c:1661  */
4132    { (yyval.regno) = 0x00; }
4133#line 4134 "rl78-parse.c" /* yacc.c:1661  */
4134    break;
4135
4136  case 323:
4137#line 1186 "./config/rl78-parse.y" /* yacc.c:1661  */
4138    { (yyval.regno) = 0x10; }
4139#line 4140 "rl78-parse.c" /* yacc.c:1661  */
4140    break;
4141
4142  case 324:
4143#line 1189 "./config/rl78-parse.y" /* yacc.c:1661  */
4144    { rl78_bit_insn = 1; }
4145#line 4146 "rl78-parse.c" /* yacc.c:1661  */
4146    break;
4147
4148
4149#line 4150 "rl78-parse.c" /* yacc.c:1661  */
4150      default: break;
4151    }
4152  /* User semantic actions sometimes alter yychar, and that requires
4153     that yytoken be updated with the new translation.  We take the
4154     approach of translating immediately before every use of yytoken.
4155     One alternative is translating here after every semantic action,
4156     but that translation would be missed if the semantic action invokes
4157     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
4158     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
4159     incorrect destructor might then be invoked immediately.  In the
4160     case of YYERROR or YYBACKUP, subsequent parser actions might lead
4161     to an incorrect destructor call or verbose syntax error message
4162     before the lookahead is translated.  */
4163  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
4164
4165  YYPOPSTACK (yylen);
4166  yylen = 0;
4167  YY_STACK_PRINT (yyss, yyssp);
4168
4169  *++yyvsp = yyval;
4170
4171  /* Now 'shift' the result of the reduction.  Determine what state
4172     that goes to, based on the state we popped back to and the rule
4173     number reduced by.  */
4174
4175  yyn = yyr1[yyn];
4176
4177  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
4178  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
4179    yystate = yytable[yystate];
4180  else
4181    yystate = yydefgoto[yyn - YYNTOKENS];
4182
4183  goto yynewstate;
4184
4185
4186/*--------------------------------------.
4187| yyerrlab -- here on detecting error.  |
4188`--------------------------------------*/
4189yyerrlab:
4190  /* Make sure we have latest lookahead translation.  See comments at
4191     user semantic actions for why this is necessary.  */
4192  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
4193
4194  /* If not already recovering from an error, report this error.  */
4195  if (!yyerrstatus)
4196    {
4197      ++yynerrs;
4198#if ! YYERROR_VERBOSE
4199      yyerror (YY_("syntax error"));
4200#else
4201# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
4202                                        yyssp, yytoken)
4203      {
4204        char const *yymsgp = YY_("syntax error");
4205        int yysyntax_error_status;
4206        yysyntax_error_status = YYSYNTAX_ERROR;
4207        if (yysyntax_error_status == 0)
4208          yymsgp = yymsg;
4209        else if (yysyntax_error_status == 1)
4210          {
4211            if (yymsg != yymsgbuf)
4212              YYSTACK_FREE (yymsg);
4213            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
4214            if (!yymsg)
4215              {
4216                yymsg = yymsgbuf;
4217                yymsg_alloc = sizeof yymsgbuf;
4218                yysyntax_error_status = 2;
4219              }
4220            else
4221              {
4222                yysyntax_error_status = YYSYNTAX_ERROR;
4223                yymsgp = yymsg;
4224              }
4225          }
4226        yyerror (yymsgp);
4227        if (yysyntax_error_status == 2)
4228          goto yyexhaustedlab;
4229      }
4230# undef YYSYNTAX_ERROR
4231#endif
4232    }
4233
4234
4235
4236  if (yyerrstatus == 3)
4237    {
4238      /* If just tried and failed to reuse lookahead token after an
4239         error, discard it.  */
4240
4241      if (yychar <= YYEOF)
4242        {
4243          /* Return failure if at end of input.  */
4244          if (yychar == YYEOF)
4245            YYABORT;
4246        }
4247      else
4248        {
4249          yydestruct ("Error: discarding",
4250                      yytoken, &yylval);
4251          yychar = YYEMPTY;
4252        }
4253    }
4254
4255  /* Else will try to reuse lookahead token after shifting the error
4256     token.  */
4257  goto yyerrlab1;
4258
4259
4260/*---------------------------------------------------.
4261| yyerrorlab -- error raised explicitly by YYERROR.  |
4262`---------------------------------------------------*/
4263yyerrorlab:
4264
4265  /* Pacify compilers like GCC when the user code never invokes
4266     YYERROR and the label yyerrorlab therefore never appears in user
4267     code.  */
4268  if (/*CONSTCOND*/ 0)
4269     goto yyerrorlab;
4270
4271  /* Do not reclaim the symbols of the rule whose action triggered
4272     this YYERROR.  */
4273  YYPOPSTACK (yylen);
4274  yylen = 0;
4275  YY_STACK_PRINT (yyss, yyssp);
4276  yystate = *yyssp;
4277  goto yyerrlab1;
4278
4279
4280/*-------------------------------------------------------------.
4281| yyerrlab1 -- common code for both syntax error and YYERROR.  |
4282`-------------------------------------------------------------*/
4283yyerrlab1:
4284  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
4285
4286  for (;;)
4287    {
4288      yyn = yypact[yystate];
4289      if (!yypact_value_is_default (yyn))
4290        {
4291          yyn += YYTERROR;
4292          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
4293            {
4294              yyn = yytable[yyn];
4295              if (0 < yyn)
4296                break;
4297            }
4298        }
4299
4300      /* Pop the current state because it cannot handle the error token.  */
4301      if (yyssp == yyss)
4302        YYABORT;
4303
4304
4305      yydestruct ("Error: popping",
4306                  yystos[yystate], yyvsp);
4307      YYPOPSTACK (1);
4308      yystate = *yyssp;
4309      YY_STACK_PRINT (yyss, yyssp);
4310    }
4311
4312  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4313  *++yyvsp = yylval;
4314  YY_IGNORE_MAYBE_UNINITIALIZED_END
4315
4316
4317  /* Shift the error token.  */
4318  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
4319
4320  yystate = yyn;
4321  goto yynewstate;
4322
4323
4324/*-------------------------------------.
4325| yyacceptlab -- YYACCEPT comes here.  |
4326`-------------------------------------*/
4327yyacceptlab:
4328  yyresult = 0;
4329  goto yyreturn;
4330
4331/*-----------------------------------.
4332| yyabortlab -- YYABORT comes here.  |
4333`-----------------------------------*/
4334yyabortlab:
4335  yyresult = 1;
4336  goto yyreturn;
4337
4338#if !defined yyoverflow || YYERROR_VERBOSE
4339/*-------------------------------------------------.
4340| yyexhaustedlab -- memory exhaustion comes here.  |
4341`-------------------------------------------------*/
4342yyexhaustedlab:
4343  yyerror (YY_("memory exhausted"));
4344  yyresult = 2;
4345  /* Fall through.  */
4346#endif
4347
4348yyreturn:
4349  if (yychar != YYEMPTY)
4350    {
4351      /* Make sure we have latest lookahead translation.  See comments at
4352         user semantic actions for why this is necessary.  */
4353      yytoken = YYTRANSLATE (yychar);
4354      yydestruct ("Cleanup: discarding lookahead",
4355                  yytoken, &yylval);
4356    }
4357  /* Do not reclaim the symbols of the rule whose action triggered
4358     this YYABORT or YYACCEPT.  */
4359  YYPOPSTACK (yylen);
4360  YY_STACK_PRINT (yyss, yyssp);
4361  while (yyssp != yyss)
4362    {
4363      yydestruct ("Cleanup: popping",
4364                  yystos[*yyssp], yyvsp);
4365      YYPOPSTACK (1);
4366    }
4367#ifndef yyoverflow
4368  if (yyss != yyssa)
4369    YYSTACK_FREE (yyss);
4370#endif
4371#if YYERROR_VERBOSE
4372  if (yymsg != yymsgbuf)
4373    YYSTACK_FREE (yymsg);
4374#endif
4375  return yyresult;
4376}
4377#line 1192 "./config/rl78-parse.y" /* yacc.c:1906  */
4378
4379/* ====================================================================== */
4380
4381static struct
4382{
4383  const char * string;
4384  int          token;
4385  int          val;
4386}
4387token_table[] =
4388{
4389  { "r0", X, 0 },
4390  { "r1", A, 1 },
4391  { "r2", C, 2 },
4392  { "r3", B, 3 },
4393  { "r4", E, 4 },
4394  { "r5", D, 5 },
4395  { "r6", L, 6 },
4396  { "r7", H, 7 },
4397  { "x", X, 0 },
4398  { "a", A, 1 },
4399  { "c", C, 2 },
4400  { "b", B, 3 },
4401  { "e", E, 4 },
4402  { "d", D, 5 },
4403  { "l", L, 6 },
4404  { "h", H, 7 },
4405
4406  { "rp0", AX, 0 },
4407  { "rp1", BC, 1 },
4408  { "rp2", DE, 2 },
4409  { "rp3", HL, 3 },
4410  { "ax", AX, 0 },
4411  { "bc", BC, 1 },
4412  { "de", DE, 2 },
4413  { "hl", HL, 3 },
4414
4415  { "RB0", RB0, 0 },
4416  { "RB1", RB1, 1 },
4417  { "RB2", RB2, 2 },
4418  { "RB3", RB3, 3 },
4419
4420  { "sp", SP, 0 },
4421  { "cy", CY, 0 },
4422
4423  { "spl", SPL, 0xf8 },
4424  { "sph", SPH, 0xf9 },
4425  { "psw", PSW, 0xfa },
4426  { "cs", CS, 0xfc },
4427  { "es", ES, 0xfd },
4428  { "pmc", PMC, 0xfe },
4429  { "mem", MEM, 0xff },
4430
4431  { ".s", DOT_S, 0 },
4432  { ".b", DOT_B, 0 },
4433  { ".w", DOT_W, 0 },
4434  { ".l", DOT_L, 0 },
4435  { ".a", DOT_A , 0},
4436  { ".ub", DOT_UB, 0 },
4437  { ".uw", DOT_UW , 0},
4438
4439  { "c", FLAG, 0 },
4440  { "z", FLAG, 1 },
4441  { "s", FLAG, 2 },
4442  { "o", FLAG, 3 },
4443  { "i", FLAG, 8 },
4444  { "u", FLAG, 9 },
4445
4446#define OPC(x) { #x, x, IS_OPCODE }
4447
4448  OPC(ADD),
4449  OPC(ADDC),
4450  OPC(ADDW),
4451  { "and", AND_, IS_OPCODE },
4452  OPC(AND1),
4453  OPC(BC),
4454  OPC(BF),
4455  OPC(BH),
4456  OPC(BNC),
4457  OPC(BNH),
4458  OPC(BNZ),
4459  OPC(BR),
4460  OPC(BRK),
4461  OPC(BRK1),
4462  OPC(BT),
4463  OPC(BTCLR),
4464  OPC(BZ),
4465  OPC(CALL),
4466  OPC(CALLT),
4467  OPC(CLR1),
4468  OPC(CLRB),
4469  OPC(CLRW),
4470  OPC(CMP),
4471  OPC(CMP0),
4472  OPC(CMPS),
4473  OPC(CMPW),
4474  OPC(DEC),
4475  OPC(DECW),
4476  OPC(DI),
4477  OPC(DIVHU),
4478  OPC(DIVWU),
4479  OPC(EI),
4480  OPC(HALT),
4481  OPC(INC),
4482  OPC(INCW),
4483  OPC(MACH),
4484  OPC(MACHU),
4485  OPC(MOV),
4486  OPC(MOV1),
4487  OPC(MOVS),
4488  OPC(MOVW),
4489  OPC(MULH),
4490  OPC(MULHU),
4491  OPC(MULU),
4492  OPC(NOP),
4493  OPC(NOT1),
4494  OPC(ONEB),
4495  OPC(ONEW),
4496  OPC(OR),
4497  OPC(OR1),
4498  OPC(POP),
4499  OPC(PUSH),
4500  OPC(RET),
4501  OPC(RETI),
4502  OPC(RETB),
4503  OPC(ROL),
4504  OPC(ROLC),
4505  OPC(ROLWC),
4506  OPC(ROR),
4507  OPC(RORC),
4508  OPC(SAR),
4509  OPC(SARW),
4510  OPC(SEL),
4511  OPC(SET1),
4512  OPC(SHL),
4513  OPC(SHLW),
4514  OPC(SHR),
4515  OPC(SHRW),
4516  OPC(SKC),
4517  OPC(SKH),
4518  OPC(SKNC),
4519  OPC(SKNH),
4520  OPC(SKNZ),
4521  OPC(SKZ),
4522  OPC(STOP),
4523  OPC(SUB),
4524  OPC(SUBC),
4525  OPC(SUBW),
4526  OPC(XCH),
4527  OPC(XCHW),
4528  OPC(XOR),
4529  OPC(XOR1),
4530};
4531
4532#define NUM_TOKENS (sizeof (token_table) / sizeof (token_table[0]))
4533
4534void
4535rl78_lex_init (char * beginning, char * ending)
4536{
4537  rl78_init_start = beginning;
4538  rl78_lex_start = beginning;
4539  rl78_lex_end = ending;
4540  rl78_in_brackets = 0;
4541  rl78_last_token = 0;
4542
4543  rl78_bit_insn = 0;
4544
4545  setbuf (stdout, 0);
4546}
4547
4548/* Return a pointer to the '.' in a bit index expression (like
4549   foo.5), or NULL if none is found.  */
4550static char *
4551find_bit_index (char *tok)
4552{
4553  char *last_dot = NULL;
4554  char *last_digit = NULL;
4555  while (*tok && *tok != ',')
4556    {
4557      if (*tok == '.')
4558	{
4559	  last_dot = tok;
4560	  last_digit = NULL;
4561	}
4562      else if (*tok >= '0' && *tok <= '7'
4563	       && last_dot != NULL
4564	       && last_digit == NULL)
4565	{
4566	  last_digit = tok;
4567	}
4568      else if (ISSPACE (*tok))
4569	{
4570	  /* skip */
4571	}
4572      else
4573	{
4574	  last_dot = NULL;
4575	  last_digit = NULL;
4576	}
4577      tok ++;
4578    }
4579  if (last_dot != NULL
4580      && last_digit != NULL)
4581    return last_dot;
4582  return NULL;
4583}
4584
4585static int
4586rl78_lex (void)
4587{
4588  /*unsigned int ci;*/
4589  char * save_input_pointer;
4590  char * bit = NULL;
4591
4592  while (ISSPACE (*rl78_lex_start)
4593	 && rl78_lex_start != rl78_lex_end)
4594    rl78_lex_start ++;
4595
4596  rl78_last_exp_start = rl78_lex_start;
4597
4598  if (rl78_lex_start == rl78_lex_end)
4599    return 0;
4600
4601  if (ISALPHA (*rl78_lex_start)
4602      || (*rl78_lex_start == '.' && ISALPHA (rl78_lex_start[1])))
4603    {
4604      unsigned int i;
4605      char * e;
4606      char save;
4607
4608      for (e = rl78_lex_start + 1;
4609	   e < rl78_lex_end && ISALNUM (*e);
4610	   e ++)
4611	;
4612      save = *e;
4613      *e = 0;
4614
4615      for (i = 0; i < NUM_TOKENS; i++)
4616	if (strcasecmp (rl78_lex_start, token_table[i].string) == 0
4617	    && !(token_table[i].val == IS_OPCODE && rl78_last_token != 0)
4618	    && !(token_table[i].token == FLAG && !need_flag))
4619	  {
4620	    rl78_lval.regno = token_table[i].val;
4621	    *e = save;
4622	    rl78_lex_start = e;
4623	    rl78_last_token = token_table[i].token;
4624	    return token_table[i].token;
4625	  }
4626      *e = save;
4627    }
4628
4629  if (rl78_last_token == 0)
4630    {
4631      rl78_last_token = UNKNOWN_OPCODE;
4632      return UNKNOWN_OPCODE;
4633    }
4634
4635  if (rl78_last_token == UNKNOWN_OPCODE)
4636    return 0;
4637
4638  if (*rl78_lex_start == '[')
4639    rl78_in_brackets = 1;
4640  if (*rl78_lex_start == ']')
4641    rl78_in_brackets = 0;
4642
4643  /* '.' is funny - the syntax includes it for bitfields, but only for
4644      bitfields.  We check for it specially so we can allow labels
4645      with '.' in them.  */
4646
4647  if (rl78_bit_insn
4648      && *rl78_lex_start == '.'
4649      && find_bit_index (rl78_lex_start) == rl78_lex_start)
4650    {
4651      rl78_last_token = *rl78_lex_start;
4652      return *rl78_lex_start ++;
4653    }
4654
4655  if ((rl78_in_brackets && *rl78_lex_start == '+')
4656      || strchr ("[],#!$:", *rl78_lex_start))
4657    {
4658      rl78_last_token = *rl78_lex_start;
4659      return *rl78_lex_start ++;
4660    }
4661
4662  /* Again, '.' is funny.  Look for '.<digit>' at the end of the line
4663     or before a comma, which is a bitfield, not an expression.  */
4664
4665  if (rl78_bit_insn)
4666    {
4667      bit = find_bit_index (rl78_lex_start);
4668      if (bit)
4669	*bit = 0;
4670      else
4671	bit = NULL;
4672    }
4673
4674  save_input_pointer = input_line_pointer;
4675  input_line_pointer = rl78_lex_start;
4676  rl78_lval.exp.X_md = 0;
4677  expression (&rl78_lval.exp);
4678
4679  if (bit)
4680    *bit = '.';
4681
4682  rl78_lex_start = input_line_pointer;
4683  input_line_pointer = save_input_pointer;
4684  rl78_last_token = EXPR;
4685  return EXPR;
4686}
4687
4688int
4689rl78_error (const char * str)
4690{
4691  int len;
4692
4693  len = rl78_last_exp_start - rl78_init_start;
4694
4695  as_bad ("%s", rl78_init_start);
4696  as_bad ("%*s^ %s", len, "", str);
4697  return 0;
4698}
4699
4700static int
4701expr_is_sfr (expressionS exp)
4702{
4703  unsigned long v;
4704
4705  if (exp.X_op != O_constant)
4706    return 0;
4707
4708  v = exp.X_add_number;
4709  if (0xFFF00 <= v && v <= 0xFFFFF)
4710    return 1;
4711  return 0;
4712}
4713
4714static int
4715expr_is_saddr (expressionS exp)
4716{
4717  unsigned long v;
4718
4719  if (exp.X_op != O_constant)
4720    return 1;
4721
4722  v = exp.X_add_number;
4723  if (0xFFE20 <= v && v <= 0xFFF1F)
4724    return 1;
4725  return 0;
4726}
4727
4728static int
4729expr_is_word_aligned (expressionS exp)
4730{
4731  unsigned long v;
4732
4733  if (exp.X_op != O_constant)
4734    return 1;
4735
4736  v = exp.X_add_number;
4737  if (v & 1)
4738    return 0;
4739  return 1;
4740
4741}
4742
4743static void
4744check_expr_is_bit_index (expressionS exp)
4745{
4746  int val;
4747
4748  if (exp.X_op != O_constant)
4749    {
4750      rl78_error (_("bit index must be a constant"));
4751      return;
4752    }
4753  val = exp.X_add_number;
4754
4755  if (val < 0 || val > 7)
4756    rl78_error (_("rtsd size must be 0..7"));
4757}
4758
4759static int
4760exp_val (expressionS exp)
4761{
4762  if (exp.X_op != O_constant)
4763  {
4764    rl78_error (_("constant expected"));
4765    return 0;
4766  }
4767  return exp.X_add_number;
4768}
4769
4770static int
4771check_expr_is_const (expressionS e, int vmin, int vmax)
4772{
4773  static char buf[100];
4774  if (e.X_op != O_constant
4775      || e.X_add_number < vmin
4776      || e.X_add_number > vmax)
4777    {
4778      if (vmin == vmax)
4779	sprintf (buf, "%d expected here", vmin);
4780      else
4781	sprintf (buf, "%d..%d expected here", vmin, vmax);
4782      rl78_error(buf);
4783      return 0;
4784    }
4785  return 1;
4786}
4787