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