Initialize Tizen 2.3
[external/binutils.git] / gas / rx-parse.c
1 /* A Bison parser, made by GNU Bison 2.3.  */
2
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
4
5    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6    Free Software Foundation, Inc.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2, or (at your option)
11    any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 51 Franklin Street, Fifth Floor,
21    Boston, MA 02110-1301, USA.  */
22
23 /* As a special exception, you may create a larger work that contains
24    part or all of the Bison parser skeleton and distribute that work
25    under terms of your choice, so long as that work isn't itself a
26    parser generator using the skeleton or a modified version thereof
27    as a parser skeleton.  Alternatively, if you modify or redistribute
28    the parser skeleton itself, you may (at your option) remove this
29    special exception, which will cause the skeleton and the resulting
30    Bison output files to be licensed under the GNU General Public
31    License without this special exception.
32
33    This special exception was added by the Free Software Foundation in
34    version 2.2 of Bison.  */
35
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37    simplifying the original so-called "semantic" parser.  */
38
39 /* All symbols defined below should begin with yy or YY, to avoid
40    infringing on user name space.  This should be done even for local
41    variables, as they might otherwise be expanded by user macros.
42    There are some unavoidable exceptions within include files to
43    define necessary library symbols; they are noted "INFRINGES ON
44    USER NAME SPACE" below.  */
45
46 /* Identify Bison output.  */
47 #define YYBISON 1
48
49 /* Bison version.  */
50 #define YYBISON_VERSION "2.3"
51
52 /* Skeleton name.  */
53 #define YYSKELETON_NAME "yacc.c"
54
55 /* Pure parsers.  */
56 #define YYPURE 0
57
58 /* Using locations.  */
59 #define YYLSP_NEEDED 0
60
61 /* Substitute the variable and function names.  */
62 #define yyparse rx_parse
63 #define yylex   rx_lex
64 #define yyerror rx_error
65 #define yylval  rx_lval
66 #define yychar  rx_char
67 #define yydebug rx_debug
68 #define yynerrs rx_nerrs
69
70
71 /* Tokens.  */
72 #ifndef YYTOKENTYPE
73 # define YYTOKENTYPE
74    /* Put the tokens into the symbol table, so that GDB and other debuggers
75       know about them.  */
76    enum yytokentype {
77      REG = 258,
78      FLAG = 259,
79      CREG = 260,
80      EXPR = 261,
81      UNKNOWN_OPCODE = 262,
82      IS_OPCODE = 263,
83      DOT_S = 264,
84      DOT_B = 265,
85      DOT_W = 266,
86      DOT_L = 267,
87      DOT_A = 268,
88      DOT_UB = 269,
89      DOT_UW = 270,
90      ABS = 271,
91      ADC = 272,
92      ADD = 273,
93      AND_ = 274,
94      BCLR = 275,
95      BCND = 276,
96      BMCND = 277,
97      BNOT = 278,
98      BRA = 279,
99      BRK = 280,
100      BSET = 281,
101      BSR = 282,
102      BTST = 283,
103      CLRPSW = 284,
104      CMP = 285,
105      DBT = 286,
106      DIV = 287,
107      DIVU = 288,
108      EDIV = 289,
109      EDIVU = 290,
110      EMUL = 291,
111      EMULU = 292,
112      FADD = 293,
113      FCMP = 294,
114      FDIV = 295,
115      FMUL = 296,
116      FREIT = 297,
117      FSUB = 298,
118      FTOI = 299,
119      INT = 300,
120      ITOF = 301,
121      JMP = 302,
122      JSR = 303,
123      MACHI = 304,
124      MACLO = 305,
125      MAX = 306,
126      MIN = 307,
127      MOV = 308,
128      MOVU = 309,
129      MUL = 310,
130      MULHI = 311,
131      MULLO = 312,
132      MULU = 313,
133      MVFACHI = 314,
134      MVFACMI = 315,
135      MVFACLO = 316,
136      MVFC = 317,
137      MVTACHI = 318,
138      MVTACLO = 319,
139      MVTC = 320,
140      MVTIPL = 321,
141      NEG = 322,
142      NOP = 323,
143      NOT = 324,
144      OR = 325,
145      POP = 326,
146      POPC = 327,
147      POPM = 328,
148      PUSH = 329,
149      PUSHA = 330,
150      PUSHC = 331,
151      PUSHM = 332,
152      RACW = 333,
153      REIT = 334,
154      REVL = 335,
155      REVW = 336,
156      RMPA = 337,
157      ROLC = 338,
158      RORC = 339,
159      ROTL = 340,
160      ROTR = 341,
161      ROUND = 342,
162      RTE = 343,
163      RTFI = 344,
164      RTS = 345,
165      RTSD = 346,
166      SAT = 347,
167      SATR = 348,
168      SBB = 349,
169      SCCND = 350,
170      SCMPU = 351,
171      SETPSW = 352,
172      SHAR = 353,
173      SHLL = 354,
174      SHLR = 355,
175      SMOVB = 356,
176      SMOVF = 357,
177      SMOVU = 358,
178      SSTR = 359,
179      STNZ = 360,
180      STOP = 361,
181      STZ = 362,
182      SUB = 363,
183      SUNTIL = 364,
184      SWHILE = 365,
185      TST = 366,
186      WAIT = 367,
187      XCHG = 368,
188      XOR = 369
189    };
190 #endif
191 /* Tokens.  */
192 #define REG 258
193 #define FLAG 259
194 #define CREG 260
195 #define EXPR 261
196 #define UNKNOWN_OPCODE 262
197 #define IS_OPCODE 263
198 #define DOT_S 264
199 #define DOT_B 265
200 #define DOT_W 266
201 #define DOT_L 267
202 #define DOT_A 268
203 #define DOT_UB 269
204 #define DOT_UW 270
205 #define ABS 271
206 #define ADC 272
207 #define ADD 273
208 #define AND_ 274
209 #define BCLR 275
210 #define BCND 276
211 #define BMCND 277
212 #define BNOT 278
213 #define BRA 279
214 #define BRK 280
215 #define BSET 281
216 #define BSR 282
217 #define BTST 283
218 #define CLRPSW 284
219 #define CMP 285
220 #define DBT 286
221 #define DIV 287
222 #define DIVU 288
223 #define EDIV 289
224 #define EDIVU 290
225 #define EMUL 291
226 #define EMULU 292
227 #define FADD 293
228 #define FCMP 294
229 #define FDIV 295
230 #define FMUL 296
231 #define FREIT 297
232 #define FSUB 298
233 #define FTOI 299
234 #define INT 300
235 #define ITOF 301
236 #define JMP 302
237 #define JSR 303
238 #define MACHI 304
239 #define MACLO 305
240 #define MAX 306
241 #define MIN 307
242 #define MOV 308
243 #define MOVU 309
244 #define MUL 310
245 #define MULHI 311
246 #define MULLO 312
247 #define MULU 313
248 #define MVFACHI 314
249 #define MVFACMI 315
250 #define MVFACLO 316
251 #define MVFC 317
252 #define MVTACHI 318
253 #define MVTACLO 319
254 #define MVTC 320
255 #define MVTIPL 321
256 #define NEG 322
257 #define NOP 323
258 #define NOT 324
259 #define OR 325
260 #define POP 326
261 #define POPC 327
262 #define POPM 328
263 #define PUSH 329
264 #define PUSHA 330
265 #define PUSHC 331
266 #define PUSHM 332
267 #define RACW 333
268 #define REIT 334
269 #define REVL 335
270 #define REVW 336
271 #define RMPA 337
272 #define ROLC 338
273 #define RORC 339
274 #define ROTL 340
275 #define ROTR 341
276 #define ROUND 342
277 #define RTE 343
278 #define RTFI 344
279 #define RTS 345
280 #define RTSD 346
281 #define SAT 347
282 #define SATR 348
283 #define SBB 349
284 #define SCCND 350
285 #define SCMPU 351
286 #define SETPSW 352
287 #define SHAR 353
288 #define SHLL 354
289 #define SHLR 355
290 #define SMOVB 356
291 #define SMOVF 357
292 #define SMOVU 358
293 #define SSTR 359
294 #define STNZ 360
295 #define STOP 361
296 #define STZ 362
297 #define SUB 363
298 #define SUNTIL 364
299 #define SWHILE 365
300 #define TST 366
301 #define WAIT 367
302 #define XCHG 368
303 #define XOR 369
304
305
306
307
308 /* Copy the first part of user declarations.  */
309 #line 21 "rx-parse.y"
310
311
312 #include "as.h"
313 #include "safe-ctype.h"
314 #include "rx-defs.h"
315
316 static int rx_lex (void);
317
318 #define COND_EQ 0
319 #define COND_NE 1
320
321 #define MEMEX 0x06
322
323 #define BSIZE 0
324 #define WSIZE 1
325 #define LSIZE 2
326
327 /*                       .sb    .sw    .l     .uw   */
328 static int sizemap[] = { BSIZE, WSIZE, LSIZE, WSIZE };
329
330 /* Ok, here are the rules for using these macros...
331
332    B*() is used to specify the base opcode bytes.  Fields to be filled
333         in later, leave zero.  Call this first.
334
335    F() and FE() are used to fill in fields within the base opcode bytes.  You MUST
336         call B*() before any F() or FE().
337
338    [UN]*O*(), PC*() appends operands to the end of the opcode.  You
339         must call P() and B*() before any of these, so that the fixups
340         have the right byte location.
341         O = signed, UO = unsigned, NO = negated, PC = pcrel
342
343    IMM() adds an immediate and fills in the field for it.
344    NIMM() same, but negates the immediate.
345    NBIMM() same, but negates the immediate, for sbb.
346    DSP() adds a displacement, and fills in the field for it.
347
348    Note that order is significant for the O, IMM, and DSP macros, as
349    they append their data to the operand buffer in the order that you
350    call them.
351
352    Use "disp" for displacements whenever possible; this handles the
353    "0" case properly.  */
354
355 #define B1(b1)             rx_base1 (b1)
356 #define B2(b1, b2)         rx_base2 (b1, b2)
357 #define B3(b1, b2, b3)     rx_base3 (b1, b2, b3)
358 #define B4(b1, b2, b3, b4) rx_base4 (b1, b2, b3, b4)
359
360 /* POS is bits from the MSB of the first byte to the LSB of the last byte.  */
361 #define F(val,pos,sz)      rx_field (val, pos, sz)
362 #define FE(exp,pos,sz)     rx_field (exp_val (exp), pos, sz);
363
364 #define O1(v)              rx_op (v, 1, RXREL_SIGNED)
365 #define O2(v)              rx_op (v, 2, RXREL_SIGNED)
366 #define O3(v)              rx_op (v, 3, RXREL_SIGNED)
367 #define O4(v)              rx_op (v, 4, RXREL_SIGNED)
368
369 #define UO1(v)             rx_op (v, 1, RXREL_UNSIGNED)
370 #define UO2(v)             rx_op (v, 2, RXREL_UNSIGNED)
371 #define UO3(v)             rx_op (v, 3, RXREL_UNSIGNED)
372 #define UO4(v)             rx_op (v, 4, RXREL_UNSIGNED)
373
374 #define NO1(v)             rx_op (v, 1, RXREL_NEGATIVE)
375 #define NO2(v)             rx_op (v, 2, RXREL_NEGATIVE)
376 #define NO3(v)             rx_op (v, 3, RXREL_NEGATIVE)
377 #define NO4(v)             rx_op (v, 4, RXREL_NEGATIVE)
378
379 #define PC1(v)             rx_op (v, 1, RXREL_PCREL)
380 #define PC2(v)             rx_op (v, 2, RXREL_PCREL)
381 #define PC3(v)             rx_op (v, 3, RXREL_PCREL)
382
383 #define IMM(v,pos)         F (immediate (v, RXREL_SIGNED, pos), pos, 2); \
384                            if (v.X_op != O_constant && v.X_op != O_big) rx_linkrelax_imm (pos)
385 #define NIMM(v,pos)        F (immediate (v, RXREL_NEGATIVE, pos), pos, 2)
386 #define NBIMM(v,pos)       F (immediate (v, RXREL_NEGATIVE_BORROW, pos), pos, 2)
387 #define DSP(v,pos,msz)     if (!v.X_md) rx_relax (RX_RELAX_DISP, pos); \
388                            else rx_linkrelax_dsp (pos); \
389                            F (displacement (v, msz), pos, 2)
390
391 #define id24(a,b2,b3)      B3 (0xfb+a, b2, b3)
392
393 static int         rx_intop (expressionS, int);
394 static int         rx_uintop (expressionS, int);
395 static int         rx_disp3op (expressionS);
396 static int         rx_disp5op (expressionS *, int);
397 static int         rx_disp5op0 (expressionS *, int);
398 static int         exp_val (expressionS exp);
399 static expressionS zero_expr (void);
400 static int         immediate (expressionS, int, int);
401 static int         displacement (expressionS, int);
402 static void        rtsd_immediate (expressionS);
403
404 static int    need_flag = 0;
405 static int    rx_in_brackets = 0;
406 static int    rx_last_token = 0;
407 static char * rx_init_start;
408 static char * rx_last_exp_start = 0;
409 static int    sub_op;
410 static int    sub_op2;
411
412 #define YYDEBUG 1
413 #define YYERROR_VERBOSE 1
414
415
416
417 /* Enabling traces.  */
418 #ifndef YYDEBUG
419 # define YYDEBUG 0
420 #endif
421
422 /* Enabling verbose error messages.  */
423 #ifdef YYERROR_VERBOSE
424 # undef YYERROR_VERBOSE
425 # define YYERROR_VERBOSE 1
426 #else
427 # define YYERROR_VERBOSE 0
428 #endif
429
430 /* Enabling the token table.  */
431 #ifndef YYTOKEN_TABLE
432 # define YYTOKEN_TABLE 0
433 #endif
434
435 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
436 typedef union YYSTYPE
437 #line 130 "rx-parse.y"
438 {
439   int regno;
440   expressionS exp;
441 }
442 /* Line 193 of yacc.c.  */
443 #line 444 "rx-parse.c"
444         YYSTYPE;
445 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
446 # define YYSTYPE_IS_DECLARED 1
447 # define YYSTYPE_IS_TRIVIAL 1
448 #endif
449
450
451
452 /* Copy the second part of user declarations.  */
453
454
455 /* Line 216 of yacc.c.  */
456 #line 457 "rx-parse.c"
457
458 #ifdef short
459 # undef short
460 #endif
461
462 #ifdef YYTYPE_UINT8
463 typedef YYTYPE_UINT8 yytype_uint8;
464 #else
465 typedef unsigned char yytype_uint8;
466 #endif
467
468 #ifdef YYTYPE_INT8
469 typedef YYTYPE_INT8 yytype_int8;
470 #elif (defined __STDC__ || defined __C99__FUNC__ \
471      || defined __cplusplus || defined _MSC_VER)
472 typedef signed char yytype_int8;
473 #else
474 typedef short int yytype_int8;
475 #endif
476
477 #ifdef YYTYPE_UINT16
478 typedef YYTYPE_UINT16 yytype_uint16;
479 #else
480 typedef unsigned short int yytype_uint16;
481 #endif
482
483 #ifdef YYTYPE_INT16
484 typedef YYTYPE_INT16 yytype_int16;
485 #else
486 typedef short int yytype_int16;
487 #endif
488
489 #ifndef YYSIZE_T
490 # ifdef __SIZE_TYPE__
491 #  define YYSIZE_T __SIZE_TYPE__
492 # elif defined size_t
493 #  define YYSIZE_T size_t
494 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
495      || defined __cplusplus || defined _MSC_VER)
496 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
497 #  define YYSIZE_T size_t
498 # else
499 #  define YYSIZE_T unsigned int
500 # endif
501 #endif
502
503 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
504
505 #ifndef YY_
506 # if defined YYENABLE_NLS && YYENABLE_NLS
507 #  if ENABLE_NLS
508 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
509 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
510 #  endif
511 # endif
512 # ifndef YY_
513 #  define YY_(msgid) msgid
514 # endif
515 #endif
516
517 /* Suppress unused-variable warnings by "using" E.  */
518 #if ! defined lint || defined __GNUC__
519 # define YYUSE(e) ((void) (e))
520 #else
521 # define YYUSE(e) /* empty */
522 #endif
523
524 /* Identity function, used to suppress warnings about constant conditions.  */
525 #ifndef lint
526 # define YYID(n) (n)
527 #else
528 #if (defined __STDC__ || defined __C99__FUNC__ \
529      || defined __cplusplus || defined _MSC_VER)
530 static int
531 YYID (int i)
532 #else
533 static int
534 YYID (i)
535     int i;
536 #endif
537 {
538   return i;
539 }
540 #endif
541
542 #if ! defined yyoverflow || YYERROR_VERBOSE
543
544 /* The parser invokes alloca or malloc; define the necessary symbols.  */
545
546 # ifdef YYSTACK_USE_ALLOCA
547 #  if YYSTACK_USE_ALLOCA
548 #   ifdef __GNUC__
549 #    define YYSTACK_ALLOC __builtin_alloca
550 #   elif defined __BUILTIN_VA_ARG_INCR
551 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
552 #   elif defined _AIX
553 #    define YYSTACK_ALLOC __alloca
554 #   elif defined _MSC_VER
555 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
556 #    define alloca _alloca
557 #   else
558 #    define YYSTACK_ALLOC alloca
559 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
560      || defined __cplusplus || defined _MSC_VER)
561 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
562 #     ifndef _STDLIB_H
563 #      define _STDLIB_H 1
564 #     endif
565 #    endif
566 #   endif
567 #  endif
568 # endif
569
570 # ifdef YYSTACK_ALLOC
571    /* Pacify GCC's `empty if-body' warning.  */
572 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
573 #  ifndef YYSTACK_ALLOC_MAXIMUM
574     /* The OS might guarantee only one guard page at the bottom of the stack,
575        and a page size can be as small as 4096 bytes.  So we cannot safely
576        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
577        to allow for a few compiler-allocated temporary stack slots.  */
578 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
579 #  endif
580 # else
581 #  define YYSTACK_ALLOC YYMALLOC
582 #  define YYSTACK_FREE YYFREE
583 #  ifndef YYSTACK_ALLOC_MAXIMUM
584 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
585 #  endif
586 #  if (defined __cplusplus && ! defined _STDLIB_H \
587        && ! ((defined YYMALLOC || defined malloc) \
588              && (defined YYFREE || defined free)))
589 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
590 #   ifndef _STDLIB_H
591 #    define _STDLIB_H 1
592 #   endif
593 #  endif
594 #  ifndef YYMALLOC
595 #   define YYMALLOC malloc
596 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
597      || defined __cplusplus || defined _MSC_VER)
598 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
599 #   endif
600 #  endif
601 #  ifndef YYFREE
602 #   define YYFREE free
603 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
604      || defined __cplusplus || defined _MSC_VER)
605 void free (void *); /* INFRINGES ON USER NAME SPACE */
606 #   endif
607 #  endif
608 # endif
609 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
610
611
612 #if (! defined yyoverflow \
613      && (! defined __cplusplus \
614          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
615
616 /* A type that is properly aligned for any stack member.  */
617 union yyalloc
618 {
619   yytype_int16 yyss;
620   YYSTYPE yyvs;
621   };
622
623 /* The size of the maximum gap between one aligned stack and the next.  */
624 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
625
626 /* The size of an array large to enough to hold all stacks, each with
627    N elements.  */
628 # define YYSTACK_BYTES(N) \
629      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
630       + YYSTACK_GAP_MAXIMUM)
631
632 /* Copy COUNT objects from FROM to TO.  The source and destination do
633    not overlap.  */
634 # ifndef YYCOPY
635 #  if defined __GNUC__ && 1 < __GNUC__
636 #   define YYCOPY(To, From, Count) \
637       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
638 #  else
639 #   define YYCOPY(To, From, Count)              \
640       do                                        \
641         {                                       \
642           YYSIZE_T yyi;                         \
643           for (yyi = 0; yyi < (Count); yyi++)   \
644             (To)[yyi] = (From)[yyi];            \
645         }                                       \
646       while (YYID (0))
647 #  endif
648 # endif
649
650 /* Relocate STACK from its old location to the new one.  The
651    local variables YYSIZE and YYSTACKSIZE give the old and new number of
652    elements in the stack, and YYPTR gives the new location of the
653    stack.  Advance YYPTR to a properly aligned location for the next
654    stack.  */
655 # define YYSTACK_RELOCATE(Stack)                                        \
656     do                                                                  \
657       {                                                                 \
658         YYSIZE_T yynewbytes;                                            \
659         YYCOPY (&yyptr->Stack, Stack, yysize);                          \
660         Stack = &yyptr->Stack;                                          \
661         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
662         yyptr += yynewbytes / sizeof (*yyptr);                          \
663       }                                                                 \
664     while (YYID (0))
665
666 #endif
667
668 /* YYFINAL -- State number of the termination state.  */
669 #define YYFINAL  216
670 /* YYLAST -- Last index in YYTABLE.  */
671 #define YYLAST   602
672
673 /* YYNTOKENS -- Number of terminals.  */
674 #define YYNTOKENS  121
675 /* YYNNTS -- Number of nonterminals.  */
676 #define YYNNTS  57
677 /* YYNRULES -- Number of rules.  */
678 #define YYNRULES  237
679 /* YYNRULES -- Number of states.  */
680 #define YYNSTATES  594
681
682 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
683 #define YYUNDEFTOK  2
684 #define YYMAXUTOK   369
685
686 #define YYTRANSLATE(YYX)                                                \
687   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
688
689 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
690 static const yytype_uint8 yytranslate[] =
691 {
692        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
693        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
694        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
695        2,     2,     2,     2,     2,   115,     2,     2,     2,     2,
696        2,     2,     2,   120,   116,   119,     2,     2,     2,     2,
697        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
698        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
699        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
700        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
701        2,   117,     2,   118,     2,     2,     2,     2,     2,     2,
702        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
703        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
704        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
705        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
706        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
707        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
708        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
709        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
710        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
711        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
712        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
713        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
714        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
715        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
716        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
717        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
718        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
719       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
720       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
721       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
722       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
723       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
724       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
725       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
726       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
727       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
728      105,   106,   107,   108,   109,   110,   111,   112,   113,   114
729 };
730
731 #if YYDEBUG
732 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
733    YYRHS.  */
734 static const yytype_uint16 yyprhs[] =
735 {
736        0,     0,     3,     5,     7,     9,    11,    13,    16,    20,
737       24,    27,    31,    35,    39,    43,    47,    51,    55,    58,
738       68,    78,    88,    96,   101,   110,   119,   125,   133,   142,
739      148,   154,   160,   166,   172,   178,   185,   191,   195,   196,
740      200,   201,   205,   206,   210,   215,   220,   228,   232,   238,
741      244,   250,   253,   256,   259,   263,   266,   269,   272,   275,
742      278,   281,   284,   288,   292,   294,   296,   298,   300,   303,
743      306,   309,   312,   314,   316,   318,   320,   324,   333,   342,
744      350,   361,   373,   379,   387,   397,   407,   417,   424,   425,
745      429,   430,   434,   435,   439,   440,   444,   445,   449,   450,
746      454,   455,   459,   460,   464,   465,   469,   470,   474,   475,
747      479,   480,   484,   485,   489,   490,   494,   495,   499,   500,
748      504,   505,   509,   510,   514,   515,   519,   524,   529,   534,
749      539,   548,   557,   566,   575,   576,   580,   581,   585,   586,
750      590,   591,   595,   596,   600,   601,   605,   606,   610,   614,
751      621,   631,   641,   646,   651,   656,   661,   664,   667,   670,
752      673,   676,   680,   689,   698,   707,   716,   725,   734,   735,
753      739,   740,   744,   745,   749,   750,   754,   759,   764,   770,
754      776,   782,   788,   794,   804,   814,   824,   825,   829,   830,
755      834,   835,   839,   840,   844,   845,   849,   855,   859,   867,
756      875,   881,   885,   893,   901,   906,   908,   910,   912,   914,
757      918,   926,   934,   938,   943,   950,   952,   957,   959,   963,
758      971,   972,   974,   975,   978,   980,   982,   983,   985,   987,
759      988,   990,   992,   994,   995,   997,   999,  1000
760 };
761
762 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
763 static const yytype_int16 yyrhs[] =
764 {
765      122,     0,    -1,     7,    -1,    25,    -1,    31,    -1,    90,
766       -1,    68,    -1,    24,     6,    -1,    24,    13,     6,    -1,
767       24,     9,     6,    -1,    27,     6,    -1,    27,    13,     6,
768       -1,    21,     9,     6,    -1,    21,    10,     6,    -1,    24,
769       10,     6,    -1,    24,    11,     6,    -1,    27,    11,     6,
770       -1,    21,    11,     6,    -1,    21,     6,    -1,    53,    10,
771      115,     6,   116,   171,   117,     3,   118,    -1,    53,    11,
772      115,     6,   116,   171,   117,     3,   118,    -1,    53,    12,
773      115,     6,   116,   171,   117,     3,   118,    -1,    91,   115,
774        6,   116,     3,   119,     3,    -1,    30,     3,   116,     3,
775       -1,    30,   171,   117,     3,   118,    14,   116,     3,    -1,
776       30,   171,   117,     3,   118,   174,   116,     3,    -1,    54,
777      176,     3,   116,     3,    -1,    54,   176,   117,     3,   118,
778      116,     3,    -1,    54,   176,     6,   117,     3,   118,   116,
779        3,    -1,   108,   115,     6,   116,     3,    -1,    30,   115,
780        6,   116,     3,    -1,    18,   115,     6,   116,     3,    -1,
781       55,   115,     6,   116,     3,    -1,    19,   115,     6,   116,
782        3,    -1,    70,   115,     6,   116,     3,    -1,    53,    12,
783      115,     6,   116,     3,    -1,    53,   115,     6,   116,     3,
784       -1,    91,   115,     6,    -1,    -1,   100,   123,   168,    -1,
785       -1,    98,   124,   168,    -1,    -1,    99,   125,   168,    -1,
786       77,     3,   119,     3,    -1,    73,     3,   119,     3,    -1,
787       18,   115,     6,   116,     3,   116,     3,    -1,    45,   115,
788        6,    -1,    26,   115,     6,   116,     3,    -1,    20,   115,
789        6,   116,     3,    -1,    28,   115,     6,   116,     3,    -1,
790       92,     3,    -1,    84,     3,    -1,    83,     3,    -1,    74,
791      175,     3,    -1,    71,     3,    -1,    76,     5,    -1,    72,
792        5,    -1,    97,   172,    -1,    29,   172,    -1,    47,     3,
793       -1,    48,     3,    -1,    24,   177,     3,    -1,    27,   177,
794        3,    -1,    96,    -1,   103,    -1,   101,    -1,   102,    -1,
795      109,   175,    -1,   110,   175,    -1,   104,   175,    -1,    82,
796      175,    -1,    89,    -1,    88,    -1,   112,    -1,    93,    -1,
797       66,   115,     6,    -1,    53,   175,     3,   116,     6,   117,
798        3,   118,    -1,    53,   175,     6,   117,     3,   118,   116,
799        3,    -1,    53,   175,     3,   116,   117,     3,   118,    -1,
800       53,   175,   117,     3,   118,   116,   171,   117,     3,   118,
801       -1,    53,   175,     6,   117,     3,   118,   116,   171,   117,
802        3,   118,    -1,    53,   175,     3,   116,     3,    -1,    53,
803      175,   117,     3,   118,   116,     3,    -1,    26,   115,     6,
804      116,   171,   117,     3,   118,    10,    -1,    20,   115,     6,
805      116,   171,   117,     3,   118,    10,    -1,    28,   115,     6,
806      116,   171,   117,     3,   118,    10,    -1,    74,   175,   171,
807      117,     3,   118,    -1,    -1,    94,   126,   162,    -1,    -1,
808       67,   127,   165,    -1,    -1,    17,   128,   164,    -1,    -1,
809       16,   129,   165,    -1,    -1,    51,   130,   164,    -1,    -1,
810       52,   131,   164,    -1,    -1,    36,   132,   163,    -1,    -1,
811       37,   133,   163,    -1,    -1,    32,   134,   164,    -1,    -1,
812       33,   135,   164,    -1,    -1,   111,   136,   164,    -1,    -1,
813      114,   137,   164,    -1,    -1,    69,   138,   165,    -1,    -1,
814      107,   139,   163,    -1,    -1,   105,   140,   163,    -1,    -1,
815       36,   141,   166,    -1,    -1,    37,   142,   166,    -1,    -1,
816      113,   143,   166,    -1,    -1,    46,   144,   166,    -1,    26,
817        3,   116,     3,    -1,    20,     3,   116,     3,    -1,    28,
818        3,   116,     3,    -1,    23,     3,   116,     3,    -1,    26,
819        3,   116,   171,   117,     3,   118,    10,    -1,    20,     3,
820      116,   171,   117,     3,   118,    10,    -1,    28,     3,   116,
821      171,   117,     3,   118,    10,    -1,    23,     3,   116,   171,
822      117,     3,   118,    10,    -1,    -1,    43,   145,   169,    -1,
823       -1,    39,   146,   169,    -1,    -1,    38,   147,   169,    -1,
824       -1,    41,   148,   169,    -1,    -1,    40,   149,   169,    -1,
825       -1,    44,   150,   170,    -1,    -1,    87,   151,   170,    -1,
826       95,    12,     3,    -1,    95,   175,   171,   117,     3,   118,
827       -1,    22,   115,     6,   116,   171,   117,     3,   118,    10,
828       -1,    23,   115,     6,   116,   171,   117,     3,   118,    10,
829       -1,    56,     3,   116,     3,    -1,    57,     3,   116,     3,
830       -1,    49,     3,   116,     3,    -1,    50,     3,   116,     3,
831       -1,    63,     3,    -1,    64,     3,    -1,    59,     3,    -1,
832       60,     3,    -1,    61,     3,    -1,    78,   115,     6,    -1,
833       53,   175,     3,   116,   117,     3,   120,   118,    -1,    53,
834      175,     3,   116,   117,   119,     3,   118,    -1,    53,   175,
835      117,     3,   120,   118,   116,     3,    -1,    53,   175,   117,
836      119,     3,   118,   116,     3,    -1,    54,   176,   117,     3,
837      120,   118,   116,     3,    -1,    54,   176,   117,   119,     3,
838      118,   116,     3,    -1,    -1,    85,   152,   167,    -1,    -1,
839       86,   153,   167,    -1,    -1,    81,   154,   167,    -1,    -1,
840       80,   155,   167,    -1,    65,     3,   116,     5,    -1,    62,
841        5,   116,     3,    -1,    85,   115,     6,   116,     3,    -1,
842       86,   115,     6,   116,     3,    -1,    65,   115,     6,   116,
843        5,    -1,    22,   115,     6,   116,     3,    -1,    23,   115,
844        6,   116,     3,    -1,    53,   175,     3,   116,   117,     3,
845      116,     3,   118,    -1,    53,   175,   117,     3,   116,     3,
846      118,   116,     3,    -1,    54,   176,   117,     3,   116,     3,
847      118,   116,     3,    -1,    -1,   108,   156,   161,    -1,    -1,
848       18,   157,   161,    -1,    -1,    55,   158,   161,    -1,    -1,
849       19,   159,   161,    -1,    -1,    70,   160,   161,    -1,    94,
850      115,     6,   116,     3,    -1,     3,   116,     3,    -1,   171,
851      117,     3,   118,    14,   116,     3,    -1,   171,   117,     3,
852      118,   174,   116,     3,    -1,     3,   116,     3,   116,     3,
853       -1,     3,   116,     3,    -1,   171,   117,     3,   118,    14,
854      116,     3,    -1,   171,   117,     3,   118,   174,   116,     3,
855       -1,   115,     6,   116,     3,    -1,   162,    -1,   163,    -1,
856      162,    -1,     3,    -1,     3,   116,     3,    -1,   171,   117,
857        3,   118,    14,   116,     3,    -1,   171,   117,     3,   118,
858      174,   116,     3,    -1,     3,   116,     3,    -1,   115,     6,
859      116,     3,    -1,   115,     6,   116,     3,   116,     3,    -1,
860      167,    -1,   115,     6,   116,     3,    -1,   170,    -1,     3,
861      116,     3,    -1,   171,   117,     3,   118,   177,   116,     3,
862       -1,    -1,     6,    -1,    -1,   173,     4,    -1,    10,    -1,
863       11,    -1,    -1,    12,    -1,    15,    -1,    -1,    10,    -1,
864       11,    -1,    12,    -1,    -1,    10,    -1,    11,    -1,    -1,
865       12,    -1
866 };
867
868 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
869 static const yytype_uint16 yyrline[] =
870 {
871        0,   170,   170,   175,   178,   181,   184,   189,   204,   207,
872      212,   221,   226,   234,   237,   242,   244,   246,   251,   269,
873      277,   283,   291,   300,   305,   308,   313,   318,   321,   329,
874      336,   344,   350,   356,   362,   368,   376,   386,   391,   391,
875      392,   392,   393,   393,   397,   410,   423,   428,   433,   435,
876      440,   445,   447,   449,   454,   459,   464,   472,   480,   482,
877      487,   489,   491,   493,   498,   500,   502,   504,   509,   511,
878      513,   518,   523,   525,   527,   529,   534,   540,   548,   562,
879      567,   572,   577,   582,   587,   589,   591,   596,   601,   601,
880      602,   602,   603,   603,   604,   604,   605,   605,   606,   606,
881      607,   607,   608,   608,   609,   609,   610,   610,   611,   611,
882      612,   612,   613,   613,   614,   614,   615,   615,   619,   619,
883      620,   620,   621,   621,   622,   622,   626,   628,   630,   632,
884      635,   637,   639,   641,   646,   646,   647,   647,   648,   648,
885      649,   649,   650,   650,   651,   651,   652,   652,   656,   658,
886      663,   669,   675,   677,   679,   681,   687,   689,   691,   693,
887      695,   698,   709,   711,   716,   718,   723,   725,   730,   730,
888      731,   731,   732,   732,   733,   733,   737,   743,   748,   750,
889      755,   760,   766,   771,   774,   777,   782,   782,   783,   783,
890      784,   784,   785,   785,   786,   786,   791,   801,   803,   805,
891      807,   814,   816,   818,   824,   829,   830,   834,   835,   841,
892      843,   845,   852,   856,   858,   860,   866,   868,   871,   873,
893      879,   880,   883,   883,   888,   889,   890,   891,   892,   895,
894      896,   897,   898,   901,   902,   903,   906,   907
895 };
896 #endif
897
898 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
899 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
900    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
901 static const char *const yytname[] =
902 {
903   "$end", "error", "$undefined", "REG", "FLAG", "CREG", "EXPR",
904   "UNKNOWN_OPCODE", "IS_OPCODE", "DOT_S", "DOT_B", "DOT_W", "DOT_L",
905   "DOT_A", "DOT_UB", "DOT_UW", "ABS", "ADC", "ADD", "AND_", "BCLR", "BCND",
906   "BMCND", "BNOT", "BRA", "BRK", "BSET", "BSR", "BTST", "CLRPSW", "CMP",
907   "DBT", "DIV", "DIVU", "EDIV", "EDIVU", "EMUL", "EMULU", "FADD", "FCMP",
908   "FDIV", "FMUL", "FREIT", "FSUB", "FTOI", "INT", "ITOF", "JMP", "JSR",
909   "MACHI", "MACLO", "MAX", "MIN", "MOV", "MOVU", "MUL", "MULHI", "MULLO",
910   "MULU", "MVFACHI", "MVFACMI", "MVFACLO", "MVFC", "MVTACHI", "MVTACLO",
911   "MVTC", "MVTIPL", "NEG", "NOP", "NOT", "OR", "POP", "POPC", "POPM",
912   "PUSH", "PUSHA", "PUSHC", "PUSHM", "RACW", "REIT", "REVL", "REVW",
913   "RMPA", "ROLC", "RORC", "ROTL", "ROTR", "ROUND", "RTE", "RTFI", "RTS",
914   "RTSD", "SAT", "SATR", "SBB", "SCCND", "SCMPU", "SETPSW", "SHAR", "SHLL",
915   "SHLR", "SMOVB", "SMOVF", "SMOVU", "SSTR", "STNZ", "STOP", "STZ", "SUB",
916   "SUNTIL", "SWHILE", "TST", "WAIT", "XCHG", "XOR", "'#'", "','", "'['",
917   "']'", "'-'", "'+'", "$accept", "statement", "@1", "@2", "@3", "@4",
918   "@5", "@6", "@7", "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15",
919   "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23", "@24", "@25",
920   "@26", "@27", "@28", "@29", "@30", "@31", "@32", "@33", "@34", "@35",
921   "@36", "@37", "@38", "op_subadd", "op_dp20_rm", "op_dp20_i",
922   "op_dp20_rim", "op_dp20_rms", "op_xchg", "op_shift_rot", "op_shift",
923   "float2_op", "float2_op_ni", "disp", "flag", "@39", "memex", "bwl", "bw",
924   "opt_l", 0
925 };
926 #endif
927
928 # ifdef YYPRINT
929 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
930    token YYLEX-NUM.  */
931 static const yytype_uint16 yytoknum[] =
932 {
933        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
934      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
935      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
936      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
937      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
938      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
939      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
940      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
941      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
942      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
943      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
944      365,   366,   367,   368,   369,    35,    44,    91,    93,    45,
945       43
946 };
947 # endif
948
949 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
950 static const yytype_uint8 yyr1[] =
951 {
952        0,   121,   122,   122,   122,   122,   122,   122,   122,   122,
953      122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
954      122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
955      122,   122,   122,   122,   122,   122,   122,   122,   123,   122,
956      124,   122,   125,   122,   122,   122,   122,   122,   122,   122,
957      122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
958      122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
959      122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
960      122,   122,   122,   122,   122,   122,   122,   122,   126,   122,
961      127,   122,   128,   122,   129,   122,   130,   122,   131,   122,
962      132,   122,   133,   122,   134,   122,   135,   122,   136,   122,
963      137,   122,   138,   122,   139,   122,   140,   122,   141,   122,
964      142,   122,   143,   122,   144,   122,   122,   122,   122,   122,
965      122,   122,   122,   122,   145,   122,   146,   122,   147,   122,
966      148,   122,   149,   122,   150,   122,   151,   122,   122,   122,
967      122,   122,   122,   122,   122,   122,   122,   122,   122,   122,
968      122,   122,   122,   122,   122,   122,   122,   122,   152,   122,
969      153,   122,   154,   122,   155,   122,   122,   122,   122,   122,
970      122,   122,   122,   122,   122,   122,   156,   122,   157,   122,
971      158,   122,   159,   122,   160,   122,   122,   161,   161,   161,
972      161,   162,   162,   162,   163,   164,   164,   165,   165,   166,
973      166,   166,   167,   168,   168,   168,   169,   169,   170,   170,
974      171,   171,   173,   172,   174,   174,   174,   174,   174,   175,
975      175,   175,   175,   176,   176,   176,   177,   177
976 };
977
978 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
979 static const yytype_uint8 yyr2[] =
980 {
981        0,     2,     1,     1,     1,     1,     1,     2,     3,     3,
982        2,     3,     3,     3,     3,     3,     3,     3,     2,     9,
983        9,     9,     7,     4,     8,     8,     5,     7,     8,     5,
984        5,     5,     5,     5,     5,     6,     5,     3,     0,     3,
985        0,     3,     0,     3,     4,     4,     7,     3,     5,     5,
986        5,     2,     2,     2,     3,     2,     2,     2,     2,     2,
987        2,     2,     3,     3,     1,     1,     1,     1,     2,     2,
988        2,     2,     1,     1,     1,     1,     3,     8,     8,     7,
989       10,    11,     5,     7,     9,     9,     9,     6,     0,     3,
990        0,     3,     0,     3,     0,     3,     0,     3,     0,     3,
991        0,     3,     0,     3,     0,     3,     0,     3,     0,     3,
992        0,     3,     0,     3,     0,     3,     0,     3,     0,     3,
993        0,     3,     0,     3,     0,     3,     4,     4,     4,     4,
994        8,     8,     8,     8,     0,     3,     0,     3,     0,     3,
995        0,     3,     0,     3,     0,     3,     0,     3,     3,     6,
996        9,     9,     4,     4,     4,     4,     2,     2,     2,     2,
997        2,     3,     8,     8,     8,     8,     8,     8,     0,     3,
998        0,     3,     0,     3,     0,     3,     4,     4,     5,     5,
999        5,     5,     5,     9,     9,     9,     0,     3,     0,     3,
1000        0,     3,     0,     3,     0,     3,     5,     3,     7,     7,
1001        5,     3,     7,     7,     4,     1,     1,     1,     1,     3,
1002        7,     7,     3,     4,     6,     1,     4,     1,     3,     7,
1003        0,     1,     0,     2,     1,     1,     0,     1,     1,     0,
1004        1,     1,     1,     0,     1,     1,     0,     1
1005 };
1006
1007 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1008    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
1009    means the default is an error.  */
1010 static const yytype_uint8 yydefact[] =
1011 {
1012        0,     2,    94,    92,   188,   192,     0,     0,     0,     0,
1013      236,     3,     0,   236,     0,   222,   220,     4,   104,   106,
1014      118,   120,   138,   136,   142,   140,   134,   144,     0,   124,
1015        0,     0,     0,     0,    96,    98,   229,   233,   190,     0,
1016        0,     0,     0,     0,     0,     0,     0,     0,     0,    90,
1017        6,   112,   194,     0,     0,     0,   229,     0,     0,     0,
1018      174,   172,   229,     0,     0,   168,   170,   146,    73,    72,
1019        5,     0,     0,    75,    88,   229,    64,   222,    40,    42,
1020       38,    66,    67,    65,   229,   116,   114,   186,   229,   229,
1021      108,    74,   122,   110,     0,   220,   220,     0,   220,     0,
1022      220,     0,     0,    18,     0,     0,     0,     0,     0,     0,
1023        7,     0,     0,     0,   237,     0,     0,     0,     0,    10,
1024        0,     0,     0,     0,     0,    59,     0,     0,   221,     0,
1025        0,   220,   220,     0,   220,     0,   220,   220,   220,   220,
1026      220,   220,   220,     0,   220,    60,    61,     0,     0,   220,
1027      220,   230,   231,   232,     0,     0,   234,   235,     0,     0,
1028      220,     0,     0,   158,   159,   160,     0,   156,   157,     0,
1029        0,     0,   220,   220,     0,   220,    55,    57,     0,   230,
1030      231,   232,   220,    56,     0,     0,     0,     0,    71,    53,
1031       52,     0,     0,     0,     0,   220,     0,    51,     0,   220,
1032      232,   220,    58,     0,     0,     0,    70,     0,     0,     0,
1033      220,    68,    69,   220,   220,   220,     1,   208,   207,    95,
1034        0,     0,     0,   205,   206,    93,     0,     0,   189,     0,
1035        0,   193,   220,     0,    12,    13,    17,     0,   220,     0,
1036        9,    14,    15,     8,    62,   220,     0,    16,    11,    63,
1037      220,     0,   223,     0,     0,     0,   105,   107,   101,     0,
1038      119,     0,   103,   121,     0,     0,   139,   217,     0,   137,
1039      143,   141,   135,   145,    47,   125,     0,     0,    97,    99,
1040        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1041        0,   191,     0,     0,     0,     0,     0,    76,    91,   113,
1042        0,   195,     0,    54,     0,     0,   161,     0,   175,   173,
1043        0,   169,     0,   171,   147,    37,     0,    89,   148,     0,
1044        0,   215,    41,    43,    39,   117,   115,     0,   187,   109,
1045      123,   111,     0,     0,     0,     0,     0,     0,     0,   127,
1046        0,   220,   220,   129,     0,   220,   126,     0,   220,   128,
1047        0,   220,    23,     0,     0,     0,     0,     0,     0,     0,
1048      154,   155,     0,     0,     0,     0,     0,     0,     0,     0,
1049        0,     0,     0,     0,     0,   152,   153,   177,   176,     0,
1050        0,    45,     0,    44,     0,     0,     0,     0,     0,     0,
1051        0,     0,   201,     0,     0,    31,   197,     0,    33,     0,
1052       49,     0,   181,     0,     0,   182,     0,     0,    48,     0,
1053        0,    50,     0,    30,   226,   209,     0,   218,     0,     0,
1054      220,   220,   220,    36,    82,     0,     0,     0,     0,     0,
1055        0,     0,    26,     0,     0,     0,     0,     0,    32,   180,
1056       34,     0,   212,   178,   179,     0,   196,     0,     0,    29,
1057      226,   204,     0,     0,   226,     0,     0,     0,     0,     0,
1058        0,     0,     0,     0,   224,   225,   227,     0,   228,     0,
1059      226,   216,   236,     0,     0,    35,     0,     0,     0,     0,
1060        0,     0,   220,     0,     0,     0,     0,     0,     0,     0,
1061       87,     0,   149,   213,     0,     0,    46,   200,     0,     0,
1062        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1063        0,     0,     0,     0,     0,     0,     0,     0,     0,    79,
1064        0,     0,   220,     0,    83,     0,     0,     0,     0,     0,
1065       27,     0,     0,    22,     0,     0,     0,     0,     0,   131,
1066        0,     0,   133,     0,   130,     0,   132,     0,    24,    25,
1067        0,     0,     0,     0,     0,     0,    77,     0,   162,   163,
1068       78,     0,     0,     0,   164,   165,    28,     0,   166,   167,
1069      214,   202,   203,   198,   199,    85,   150,   151,    84,    86,
1070      210,   211,   219,    19,    20,    21,   183,     0,   184,     0,
1071      185,     0,    80,    81
1072 };
1073
1074 /* YYDEFGOTO[NTERM-NUM].  */
1075 static const yytype_int16 yydefgoto[] =
1076 {
1077       -1,    94,   205,   203,   204,   199,   172,    96,    95,   149,
1078      150,   133,   135,   131,   132,   213,   215,   173,   208,   207,
1079      134,   136,   214,   144,   141,   138,   137,   140,   139,   142,
1080      195,   192,   194,   187,   186,   210,    98,   160,   100,   175,
1081      228,   223,   224,   225,   219,   260,   321,   322,   266,   267,
1082      220,   125,   126,   469,   155,   158,   116
1083 };
1084
1085 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1086    STATE-NUM.  */
1087 #define YYPACT_NINF -415
1088 static const yytype_int16 yypact[] =
1089 {
1090      464,  -415,  -415,  -415,   -67,   -62,    24,    94,   -54,    25,
1091       83,  -415,    26,    39,    27,  -415,    18,  -415,  -415,  -415,
1092      -32,   -30,  -415,  -415,  -415,  -415,  -415,  -415,    -6,  -415,
1093      112,   114,   129,   134,  -415,  -415,    -4,     4,    34,   150,
1094      154,   173,   179,   192,   203,   200,   206,    28,    95,  -415,
1095     -415,  -415,    96,   209,   208,   211,    57,   210,   214,   103,
1096     -415,  -415,    57,   216,   217,   106,   108,  -415,  -415,  -415,
1097     -415,   109,   222,  -415,   111,   195,  -415,  -415,  -415,  -415,
1098     -415,  -415,  -415,  -415,    57,  -415,  -415,   113,    57,    57,
1099     -415,  -415,  -415,  -415,   227,    40,    19,   224,   152,   225,
1100      152,   116,   229,  -415,   230,   231,   232,   233,   117,   234,
1101     -415,   235,   236,   237,  -415,   238,   242,   130,   241,  -415,
1102      243,   244,   245,   135,   246,  -415,   249,   138,  -415,   250,
1103      140,    19,    19,   143,   161,   143,   161,    20,    20,    20,
1104       20,    20,   162,   253,   161,  -415,  -415,   139,   144,    19,
1105       19,   146,   147,   148,   258,    -1,  -415,  -415,    13,   259,
1106      152,   151,   153,  -415,  -415,  -415,   155,  -415,  -415,   156,
1107      260,   262,    40,    40,   264,   152,  -415,  -415,   157,  -415,
1108     -415,  -415,   166,  -415,   158,   267,   271,   271,  -415,  -415,
1109     -415,   269,   271,   272,   271,   162,   273,  -415,   274,   167,
1110      278,   276,  -415,    30,    30,    30,  -415,   143,   143,   277,
1111      152,  -415,  -415,    19,   161,    19,  -415,   169,  -415,  -415,
1112      170,   169,   280,  -415,  -415,  -415,   175,   176,  -415,   171,
1113      177,  -415,   168,   181,  -415,  -415,  -415,   182,   172,   183,
1114     -415,  -415,  -415,  -415,  -415,   174,   187,  -415,  -415,  -415,
1115      178,   188,  -415,   281,   189,   286,  -415,  -415,  -415,   191,
1116     -415,   193,  -415,  -415,   197,   284,  -415,  -415,   199,  -415,
1117     -415,  -415,  -415,  -415,  -415,  -415,   291,   292,  -415,  -415,
1118      290,   294,   295,   201,   202,   204,     0,   207,   205,     8,
1119      212,  -415,   299,   303,   305,   304,   215,  -415,  -415,  -415,
1120      218,  -415,   308,  -415,   213,   309,  -415,   220,  -415,  -415,
1121      221,  -415,   223,  -415,  -415,   226,   228,  -415,  -415,   239,
1122      313,  -415,  -415,  -415,  -415,  -415,  -415,   247,  -415,  -415,
1123     -415,  -415,   311,   312,   248,   317,   321,   324,   330,  -415,
1124      240,   180,   184,  -415,   251,   185,  -415,   252,   186,  -415,
1125      254,   190,  -415,   335,   255,   337,   338,   340,   256,   342,
1126     -415,  -415,   261,   263,   265,   343,    14,   344,   -81,   345,
1127      346,   347,    -8,   348,   349,  -415,  -415,  -415,  -415,   350,
1128      351,  -415,   355,  -415,   356,   357,   358,   359,   362,   363,
1129      266,   364,  -415,   257,   367,   268,   270,   275,  -415,   371,
1130     -415,   279,  -415,   282,   373,  -415,   283,   375,  -415,   285,
1131      377,  -415,   293,  -415,    48,  -415,   289,  -415,   380,   296,
1132      276,   276,   194,  -415,  -415,   298,    10,   300,   382,   287,
1133      301,   302,  -415,   306,   384,   297,   307,   310,  -415,  -415,
1134     -415,   314,  -415,  -415,  -415,   315,  -415,   318,   385,  -415,
1135       66,  -415,   386,   387,    87,   319,   388,   389,   320,   391,
1136      322,   392,   323,   394,  -415,  -415,  -415,   326,  -415,   327,
1137      136,  -415,   341,   316,   328,  -415,   329,   395,    36,   398,
1138      331,   332,   196,   333,   336,   339,   352,   405,   353,   360,
1139     -415,   406,  -415,   361,   383,   423,  -415,  -415,   427,   454,
1140      401,   354,   404,   402,   461,   407,   462,   411,   463,   413,
1141      419,   466,   467,   468,   420,   424,   426,   469,   428,  -415,
1142      470,   471,   198,   474,  -415,   334,   432,   436,   441,   475,
1143     -415,   445,   450,  -415,   451,   453,   455,   456,   458,  -415,
1144      416,   447,  -415,   452,  -415,   457,  -415,   465,  -415,  -415,
1145      460,   476,   495,   477,   478,   479,  -415,   480,  -415,  -415,
1146     -415,   482,   582,   583,  -415,  -415,  -415,   589,  -415,  -415,
1147     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
1148     -415,  -415,  -415,  -415,  -415,  -415,  -415,   590,  -415,   483,
1149     -415,   484,  -415,  -415
1150 };
1151
1152 /* YYPGOTO[NTERM-NUM].  */
1153 static const yytype_int16 yypgoto[] =
1154 {
1155     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
1156     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
1157     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
1158     -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,  -415,
1159      -96,   -86,  -101,   -77,   -98,  -126,  -145,  -114,    22,  -130,
1160      -16,   396,  -415,  -414,   -18,  -415,   -12
1161 };
1162
1163 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
1164    positive, shift that token.  If negative, reduce the rule which
1165    number is the opposite.  If zero, do what YYDEFACT says.
1166    If YYTABLE_NINF, syntax error.  */
1167 #define YYTABLE_NINF -103
1168 static const yytype_int16 yytable[] =
1169 {
1170      130,   122,   284,   368,   231,   285,   151,   152,   153,   218,
1171      263,   372,   273,   478,   156,   157,   287,   424,   275,   288,
1172      425,   127,   221,   264,   128,   128,   128,   101,   108,   117,
1173      123,   169,   258,   307,   262,   428,   495,   429,   182,   430,
1174      499,   308,   309,   217,   188,   119,   128,   311,    97,   313,
1175      120,   114,   121,    99,   256,   257,   512,   201,   464,   465,
1176      466,   107,   467,   468,   291,   314,   206,   179,   180,   181,
1177      211,   212,   278,   279,   298,   299,   464,   465,   466,   301,
1178      494,   468,   229,  -100,   229,  -102,   218,   218,   330,   110,
1179      323,   324,   111,   112,   113,   114,   115,   464,   465,   466,
1180      103,   498,   468,   104,   105,   106,   325,   326,   434,   143,
1181      435,   154,   436,   317,   328,   145,   286,   146,   261,   369,
1182      261,   268,   268,   268,   268,   268,   268,   373,   261,   479,
1183      289,   426,   147,   129,   222,   265,   329,   148,   331,   102,
1184      109,   118,   124,   170,   229,   320,   464,   465,   466,   159,
1185      511,   468,   518,   161,   519,   227,   520,   162,   128,   229,
1186      269,   270,   271,   272,   259,   264,   304,   128,   128,   303,
1187      221,   339,   128,   128,   128,   343,   163,   346,   128,   268,
1188      128,   349,   164,   400,   128,   319,   128,   402,   405,   408,
1189      128,   128,   128,   411,   229,   165,   128,   475,   261,   524,
1190      128,   560,   128,   167,   128,   179,   180,   200,   166,   168,
1191      171,   174,   176,   177,   178,   183,   340,   184,   185,   189,
1192      190,   191,   344,   193,   196,   197,   198,   216,   209,   347,
1193      226,   230,   232,   238,   350,   233,   234,   235,   236,   237,
1194      239,   240,   241,   242,   243,   244,   245,   246,   249,   247,
1195      248,   250,   251,   252,   253,   276,   254,   255,   222,   274,
1196      277,   280,   281,   282,   283,   290,   296,   292,   297,   293,
1197      300,   294,   295,   306,   307,   310,   302,   305,   312,   315,
1198      316,   318,   128,   327,   352,   332,   334,   333,   337,   354,
1199      358,   335,   336,   338,   360,   361,   362,   341,   342,   345,
1200      363,   364,   375,   348,   351,   353,   376,   355,   377,   378,
1201      356,   381,   383,   357,   392,   393,   359,   365,   366,   390,
1202      395,   367,   371,   370,   396,   401,   403,   397,   374,   406,
1203      382,   379,   409,   398,   380,   412,   384,   385,   413,   386,
1204      415,   416,   387,   417,   388,   419,   423,   427,   431,   432,
1205      433,   437,   438,   114,   440,   439,   389,   399,   441,   442,
1206      443,   444,   445,   391,   394,   446,   447,   449,   404,   407,
1207      451,   410,   418,   414,   455,   450,   458,   420,   460,   421,
1208      462,   422,   448,   471,   452,   481,   453,   486,   493,   496,
1209      497,   501,   502,   454,   504,   506,   456,   508,   517,   457,
1210      459,   521,   461,   482,   473,   474,   476,   470,   530,   533,
1211      463,   539,   542,   487,   472,   477,   548,   544,   480,   483,
1212      484,   546,   549,   553,   485,   488,   575,   554,   489,   555,
1213        0,   557,   490,   514,   491,   564,   492,   500,   503,   565,
1214      505,   507,   509,   510,   566,   515,   516,   522,   568,   526,
1215      523,   563,   527,   569,   570,   528,   571,   576,   572,   573,
1216      513,   574,   577,   580,     0,     0,   525,   578,     0,   531,
1217      529,     1,   540,   202,     0,   579,   532,   534,     0,   581,
1218        2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
1219       12,    13,    14,    15,    16,    17,    18,    19,   582,   535,
1220       20,    21,    22,    23,    24,    25,   561,    26,    27,    28,
1221       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
1222       39,    40,   541,    41,    42,    43,    44,    45,    46,    47,
1223       48,    49,    50,    51,    52,    53,    54,    55,    56,   536,
1224       57,    58,    59,   537,    60,    61,    62,    63,    64,    65,
1225       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
1226       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
1227      538,    86,    87,    88,    89,    90,    91,    92,    93,   543,
1228      545,   547,   550,   551,   552,   588,   589,   556,   558,   559,
1229      562,   567,   590,   591,     0,   583,   584,   585,   586,   587,
1230        0,   592,   593
1231 };
1232
1233 static const yytype_int16 yycheck[] =
1234 {
1235       16,    13,     3,     3,   100,     6,    10,    11,    12,    95,
1236      136,     3,   142,     3,    10,    11,     3,     3,   144,     6,
1237        6,     3,     3,     3,     6,     6,     6,     3,     3,     3,
1238        3,     3,   133,     3,   135,   116,   450,   118,    56,   120,
1239      454,   186,   187,     3,    62,     6,     6,   192,   115,   194,
1240       11,    12,    13,   115,   131,   132,   470,    75,    10,    11,
1241       12,   115,    14,    15,   160,   195,    84,    10,    11,    12,
1242       88,    89,   149,   150,   172,   173,    10,    11,    12,   175,
1243       14,    15,    98,   115,   100,   115,   172,   173,   214,     6,
1244      204,   205,     9,    10,    11,    12,    13,    10,    11,    12,
1245        6,    14,    15,     9,    10,    11,   207,   208,   116,   115,
1246      118,   115,   120,   199,   210,     3,   117,     3,   134,   119,
1247      136,   137,   138,   139,   140,   141,   142,   119,   144,   119,
1248      117,   117,     3,   115,   115,   115,   213,     3,   215,   115,
1249      115,   115,   115,   115,   160,   115,    10,    11,    12,   115,
1250       14,    15,   116,     3,   118,     3,   120,     3,     6,   175,
1251      138,   139,   140,   141,     3,     3,   182,     6,     6,     3,
1252        3,     3,     6,     6,     6,     3,     3,     3,     6,   195,
1253        6,     3,     3,     3,     6,   201,     6,     3,     3,     3,
1254        6,     6,     6,     3,   210,     3,     6,     3,   214,     3,
1255        6,     3,     6,     3,     6,    10,    11,    12,     5,     3,
1256      115,   115,     3,     5,     3,     5,   232,     3,   115,     3,
1257        3,   115,   238,   115,   115,     3,   115,     0,   115,   245,
1258        6,     6,   116,   116,   250,     6,     6,     6,     6,     6,
1259        6,     6,     6,     6,     6,     3,   116,     6,     3,     6,
1260        6,   116,     6,     4,   116,   116,     6,   117,   115,     6,
1261      116,   115,   115,   115,     6,     6,     6,   116,     6,   116,
1262        6,   116,   116,     6,     3,     6,   119,   119,     6,     6,
1263        6,     3,     6,     6,     3,   116,     6,   117,   117,     3,
1264        6,   116,   116,   116,     3,     3,     6,   116,   116,   116,
1265        6,     6,     3,   116,   116,   116,     3,   116,     3,     5,
1266      117,     3,     3,   116,     3,     3,   117,   116,   116,     6,
1267        3,   117,   117,   116,     3,   341,   342,     3,   116,   345,
1268      117,   116,   348,     3,   116,   351,   116,   116,     3,   116,
1269        3,     3,   116,     3,   116,     3,     3,     3,     3,     3,
1270        3,     3,     3,    12,     3,     5,   117,   117,     3,     3,
1271        3,     3,     3,   116,   116,     3,     3,     3,   117,   117,
1272        3,   117,   116,   118,     3,   118,     3,   116,     3,   116,
1273        3,   116,   116,     3,   116,     3,   116,     3,     3,     3,
1274        3,     3,     3,   118,     3,     3,   117,     3,     3,   117,
1275      117,     3,   117,   116,   420,   421,   422,   118,     3,     3,
1276      117,    10,    10,   116,   118,   117,     3,    10,   118,   118,
1277      118,    10,     3,     3,   118,   118,    10,     3,   118,     3,
1278       -1,     3,   118,   117,   119,     3,   118,   118,   118,     3,
1279      118,   118,   116,   116,     3,   117,   117,   116,     3,   116,
1280      118,   117,   116,     3,     3,   116,     3,    10,     3,     3,
1281      472,     3,    10,     3,    -1,    -1,   482,    10,    -1,   116,
1282      118,     7,   118,    77,    -1,    10,   116,   116,    -1,     3,
1283       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
1284       26,    27,    28,    29,    30,    31,    32,    33,     3,   116,
1285       36,    37,    38,    39,    40,    41,   522,    43,    44,    45,
1286       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
1287       56,    57,   118,    59,    60,    61,    62,    63,    64,    65,
1288       66,    67,    68,    69,    70,    71,    72,    73,    74,   116,
1289       76,    77,    78,   116,    80,    81,    82,    83,    84,    85,
1290       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
1291       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
1292      116,   107,   108,   109,   110,   111,   112,   113,   114,   118,
1293      118,   118,   116,   116,   116,     3,     3,   118,   118,   118,
1294      116,   116,     3,     3,    -1,   118,   118,   118,   118,   117,
1295       -1,   118,   118
1296 };
1297
1298 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1299    symbol of state STATE-NUM.  */
1300 static const yytype_uint8 yystos[] =
1301 {
1302        0,     7,    16,    17,    18,    19,    20,    21,    22,    23,
1303       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
1304       36,    37,    38,    39,    40,    41,    43,    44,    45,    46,
1305       47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
1306       57,    59,    60,    61,    62,    63,    64,    65,    66,    67,
1307       68,    69,    70,    71,    72,    73,    74,    76,    77,    78,
1308       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
1309       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
1310      100,   101,   102,   103,   104,   105,   107,   108,   109,   110,
1311      111,   112,   113,   114,   122,   129,   128,   115,   157,   115,
1312      159,     3,   115,     6,     9,    10,    11,   115,     3,   115,
1313        6,     9,    10,    11,    12,    13,   177,     3,   115,     6,
1314       11,    13,   177,     3,   115,   172,   173,     3,     6,   115,
1315      171,   134,   135,   132,   141,   133,   142,   147,   146,   149,
1316      148,   145,   150,   115,   144,     3,     3,     3,     3,   130,
1317      131,    10,    11,    12,   115,   175,    10,    11,   176,   115,
1318      158,     3,     3,     3,     3,     3,     5,     3,     3,     3,
1319      115,   115,   127,   138,   115,   160,     3,     5,     3,    10,
1320       11,    12,   175,     5,     3,   115,   155,   154,   175,     3,
1321        3,   115,   152,   115,   153,   151,   115,     3,   115,   126,
1322       12,   175,   172,   124,   125,   123,   175,   140,   139,   115,
1323      156,   175,   175,   136,   143,   137,     0,     3,   162,   165,
1324      171,     3,   115,   162,   163,   164,     6,     3,   161,   171,
1325        6,   161,   116,     6,     6,     6,     6,     6,   116,     6,
1326        6,     6,     6,     6,     3,   116,     6,     6,     6,     3,
1327      116,     6,     4,   116,     6,   117,   164,   164,   163,     3,
1328      166,   171,   163,   166,     3,   115,   169,   170,   171,   169,
1329      169,   169,   169,   170,     6,   166,   116,   116,   164,   164,
1330      115,   115,   115,     6,     3,     6,   117,     3,     6,   117,
1331        6,   161,   116,   116,   116,   116,     6,     6,   165,   165,
1332        6,   161,   119,     3,   171,   119,     6,     3,   167,   167,
1333        6,   167,     6,   167,   170,     6,     6,   162,     3,   171,
1334      115,   167,   168,   168,   168,   163,   163,     6,   161,   164,
1335      166,   164,   116,   117,     6,   116,   116,   117,   116,     3,
1336      171,   116,   116,     3,   171,   116,     3,   171,   116,     3,
1337      171,   116,     3,   116,     3,   116,   117,   116,     6,   117,
1338        3,     3,     6,     6,     6,   116,   116,   117,     3,   119,
1339      116,   117,     3,   119,   116,     3,     3,     3,     5,   116,
1340      116,     3,   117,     3,   116,   116,   116,   116,   116,   117,
1341        6,   116,     3,     3,   116,     3,     3,     3,     3,   117,
1342        3,   171,     3,   171,   117,     3,   171,   117,     3,   171,
1343      117,     3,   171,     3,   118,     3,     3,     3,   116,     3,
1344      116,   116,   116,     3,     3,     6,   117,     3,   116,   118,
1345      120,     3,     3,     3,   116,   118,   120,     3,     3,     5,
1346        3,     3,     3,     3,     3,     3,     3,     3,   116,     3,
1347      118,     3,   116,   116,   118,     3,   117,   117,     3,   117,
1348        3,   117,     3,   117,    10,    11,    12,    14,    15,   174,
1349      118,     3,   118,   171,   171,     3,   171,   117,     3,   119,
1350      118,     3,   116,   118,   118,   118,     3,   116,   118,   118,
1351      118,   119,   118,     3,    14,   174,     3,     3,    14,   174,
1352      118,     3,     3,   118,     3,   118,     3,   118,     3,   116,
1353      116,    14,   174,   177,   117,   117,   117,     3,   116,   118,
1354      120,     3,   116,   118,     3,   171,   116,   116,   116,   118,
1355        3,   116,   116,     3,   116,   116,   116,   116,   116,    10,
1356      118,   118,    10,   118,    10,   118,    10,   118,     3,     3,
1357      116,   116,   116,     3,     3,     3,   118,     3,   118,   118,
1358        3,   171,   116,   117,     3,     3,     3,   116,     3,     3,
1359        3,     3,     3,     3,     3,    10,    10,    10,    10,    10,
1360        3,     3,     3,   118,   118,   118,   118,   117,     3,     3,
1361        3,     3,   118,   118
1362 };
1363
1364 #define yyerrok         (yyerrstatus = 0)
1365 #define yyclearin       (yychar = YYEMPTY)
1366 #define YYEMPTY         (-2)
1367 #define YYEOF           0
1368
1369 #define YYACCEPT        goto yyacceptlab
1370 #define YYABORT         goto yyabortlab
1371 #define YYERROR         goto yyerrorlab
1372
1373
1374 /* Like YYERROR except do call yyerror.  This remains here temporarily
1375    to ease the transition to the new meaning of YYERROR, for GCC.
1376    Once GCC version 2 has supplanted version 1, this can go.  */
1377
1378 #define YYFAIL          goto yyerrlab
1379
1380 #define YYRECOVERING()  (!!yyerrstatus)
1381
1382 #define YYBACKUP(Token, Value)                                  \
1383 do                                                              \
1384   if (yychar == YYEMPTY && yylen == 1)                          \
1385     {                                                           \
1386       yychar = (Token);                                         \
1387       yylval = (Value);                                         \
1388       yytoken = YYTRANSLATE (yychar);                           \
1389       YYPOPSTACK (1);                                           \
1390       goto yybackup;                                            \
1391     }                                                           \
1392   else                                                          \
1393     {                                                           \
1394       yyerror (YY_("syntax error: cannot back up")); \
1395       YYERROR;                                                  \
1396     }                                                           \
1397 while (YYID (0))
1398
1399
1400 #define YYTERROR        1
1401 #define YYERRCODE       256
1402
1403
1404 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1405    If N is 0, then set CURRENT to the empty location which ends
1406    the previous symbol: RHS[0] (always defined).  */
1407
1408 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1409 #ifndef YYLLOC_DEFAULT
1410 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
1411     do                                                                  \
1412       if (YYID (N))                                                    \
1413         {                                                               \
1414           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
1415           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
1416           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
1417           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
1418         }                                                               \
1419       else                                                              \
1420         {                                                               \
1421           (Current).first_line   = (Current).last_line   =              \
1422             YYRHSLOC (Rhs, 0).last_line;                                \
1423           (Current).first_column = (Current).last_column =              \
1424             YYRHSLOC (Rhs, 0).last_column;                              \
1425         }                                                               \
1426     while (YYID (0))
1427 #endif
1428
1429
1430 /* YY_LOCATION_PRINT -- Print the location on the stream.
1431    This macro was not mandated originally: define only if we know
1432    we won't break user code: when these are the locations we know.  */
1433
1434 #ifndef YY_LOCATION_PRINT
1435 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1436 #  define YY_LOCATION_PRINT(File, Loc)                  \
1437      fprintf (File, "%d.%d-%d.%d",                      \
1438               (Loc).first_line, (Loc).first_column,     \
1439               (Loc).last_line,  (Loc).last_column)
1440 # else
1441 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1442 # endif
1443 #endif
1444
1445
1446 /* YYLEX -- calling `yylex' with the right arguments.  */
1447
1448 #ifdef YYLEX_PARAM
1449 # define YYLEX yylex (YYLEX_PARAM)
1450 #else
1451 # define YYLEX yylex ()
1452 #endif
1453
1454 /* Enable debugging if requested.  */
1455 #if YYDEBUG
1456
1457 # ifndef YYFPRINTF
1458 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1459 #  define YYFPRINTF fprintf
1460 # endif
1461
1462 # define YYDPRINTF(Args)                        \
1463 do {                                            \
1464   if (yydebug)                                  \
1465     YYFPRINTF Args;                             \
1466 } while (YYID (0))
1467
1468 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1469 do {                                                                      \
1470   if (yydebug)                                                            \
1471     {                                                                     \
1472       YYFPRINTF (stderr, "%s ", Title);                                   \
1473       yy_symbol_print (stderr,                                            \
1474                   Type, Value); \
1475       YYFPRINTF (stderr, "\n");                                           \
1476     }                                                                     \
1477 } while (YYID (0))
1478
1479
1480 /*--------------------------------.
1481 | Print this symbol on YYOUTPUT.  |
1482 `--------------------------------*/
1483
1484 /*ARGSUSED*/
1485 #if (defined __STDC__ || defined __C99__FUNC__ \
1486      || defined __cplusplus || defined _MSC_VER)
1487 static void
1488 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1489 #else
1490 static void
1491 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
1492     FILE *yyoutput;
1493     int yytype;
1494     YYSTYPE const * const yyvaluep;
1495 #endif
1496 {
1497   if (!yyvaluep)
1498     return;
1499 # ifdef YYPRINT
1500   if (yytype < YYNTOKENS)
1501     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1502 # else
1503   YYUSE (yyoutput);
1504 # endif
1505   switch (yytype)
1506     {
1507       default:
1508         break;
1509     }
1510 }
1511
1512
1513 /*--------------------------------.
1514 | Print this symbol on YYOUTPUT.  |
1515 `--------------------------------*/
1516
1517 #if (defined __STDC__ || defined __C99__FUNC__ \
1518      || defined __cplusplus || defined _MSC_VER)
1519 static void
1520 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1521 #else
1522 static void
1523 yy_symbol_print (yyoutput, yytype, yyvaluep)
1524     FILE *yyoutput;
1525     int yytype;
1526     YYSTYPE const * const yyvaluep;
1527 #endif
1528 {
1529   if (yytype < YYNTOKENS)
1530     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1531   else
1532     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1533
1534   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1535   YYFPRINTF (yyoutput, ")");
1536 }
1537
1538 /*------------------------------------------------------------------.
1539 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1540 | TOP (included).                                                   |
1541 `------------------------------------------------------------------*/
1542
1543 #if (defined __STDC__ || defined __C99__FUNC__ \
1544      || defined __cplusplus || defined _MSC_VER)
1545 static void
1546 yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
1547 #else
1548 static void
1549 yy_stack_print (bottom, top)
1550     yytype_int16 *bottom;
1551     yytype_int16 *top;
1552 #endif
1553 {
1554   YYFPRINTF (stderr, "Stack now");
1555   for (; bottom <= top; ++bottom)
1556     YYFPRINTF (stderr, " %d", *bottom);
1557   YYFPRINTF (stderr, "\n");
1558 }
1559
1560 # define YY_STACK_PRINT(Bottom, Top)                            \
1561 do {                                                            \
1562   if (yydebug)                                                  \
1563     yy_stack_print ((Bottom), (Top));                           \
1564 } while (YYID (0))
1565
1566
1567 /*------------------------------------------------.
1568 | Report that the YYRULE is going to be reduced.  |
1569 `------------------------------------------------*/
1570
1571 #if (defined __STDC__ || defined __C99__FUNC__ \
1572      || defined __cplusplus || defined _MSC_VER)
1573 static void
1574 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1575 #else
1576 static void
1577 yy_reduce_print (yyvsp, yyrule)
1578     YYSTYPE *yyvsp;
1579     int yyrule;
1580 #endif
1581 {
1582   int yynrhs = yyr2[yyrule];
1583   int yyi;
1584   unsigned long int yylno = yyrline[yyrule];
1585   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1586              yyrule - 1, yylno);
1587   /* The symbols being reduced.  */
1588   for (yyi = 0; yyi < yynrhs; yyi++)
1589     {
1590       fprintf (stderr, "   $%d = ", yyi + 1);
1591       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1592                        &(yyvsp[(yyi + 1) - (yynrhs)])
1593                                        );
1594       fprintf (stderr, "\n");
1595     }
1596 }
1597
1598 # define YY_REDUCE_PRINT(Rule)          \
1599 do {                                    \
1600   if (yydebug)                          \
1601     yy_reduce_print (yyvsp, Rule); \
1602 } while (YYID (0))
1603
1604 /* Nonzero means print parse trace.  It is left uninitialized so that
1605    multiple parsers can coexist.  */
1606 int yydebug;
1607 #else /* !YYDEBUG */
1608 # define YYDPRINTF(Args)
1609 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1610 # define YY_STACK_PRINT(Bottom, Top)
1611 # define YY_REDUCE_PRINT(Rule)
1612 #endif /* !YYDEBUG */
1613
1614
1615 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1616 #ifndef YYINITDEPTH
1617 # define YYINITDEPTH 200
1618 #endif
1619
1620 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1621    if the built-in stack extension method is used).
1622
1623    Do not make this value too large; the results are undefined if
1624    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1625    evaluated with infinite-precision integer arithmetic.  */
1626
1627 #ifndef YYMAXDEPTH
1628 # define YYMAXDEPTH 10000
1629 #endif
1630
1631 \f
1632
1633 #if YYERROR_VERBOSE
1634
1635 # ifndef yystrlen
1636 #  if defined __GLIBC__ && defined _STRING_H
1637 #   define yystrlen strlen
1638 #  else
1639 /* Return the length of YYSTR.  */
1640 #if (defined __STDC__ || defined __C99__FUNC__ \
1641      || defined __cplusplus || defined _MSC_VER)
1642 static YYSIZE_T
1643 yystrlen (const char *yystr)
1644 #else
1645 static YYSIZE_T
1646 yystrlen (yystr)
1647     const char *yystr;
1648 #endif
1649 {
1650   YYSIZE_T yylen;
1651   for (yylen = 0; yystr[yylen]; yylen++)
1652     continue;
1653   return yylen;
1654 }
1655 #  endif
1656 # endif
1657
1658 # ifndef yystpcpy
1659 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1660 #   define yystpcpy stpcpy
1661 #  else
1662 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1663    YYDEST.  */
1664 #if (defined __STDC__ || defined __C99__FUNC__ \
1665      || defined __cplusplus || defined _MSC_VER)
1666 static char *
1667 yystpcpy (char *yydest, const char *yysrc)
1668 #else
1669 static char *
1670 yystpcpy (yydest, yysrc)
1671     char *yydest;
1672     const char *yysrc;
1673 #endif
1674 {
1675   char *yyd = yydest;
1676   const char *yys = yysrc;
1677
1678   while ((*yyd++ = *yys++) != '\0')
1679     continue;
1680
1681   return yyd - 1;
1682 }
1683 #  endif
1684 # endif
1685
1686 # ifndef yytnamerr
1687 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1688    quotes and backslashes, so that it's suitable for yyerror.  The
1689    heuristic is that double-quoting is unnecessary unless the string
1690    contains an apostrophe, a comma, or backslash (other than
1691    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1692    null, do not copy; instead, return the length of what the result
1693    would have been.  */
1694 static YYSIZE_T
1695 yytnamerr (char *yyres, const char *yystr)
1696 {
1697   if (*yystr == '"')
1698     {
1699       YYSIZE_T yyn = 0;
1700       char const *yyp = yystr;
1701
1702       for (;;)
1703         switch (*++yyp)
1704           {
1705           case '\'':
1706           case ',':
1707             goto do_not_strip_quotes;
1708
1709           case '\\':
1710             if (*++yyp != '\\')
1711               goto do_not_strip_quotes;
1712             /* Fall through.  */
1713           default:
1714             if (yyres)
1715               yyres[yyn] = *yyp;
1716             yyn++;
1717             break;
1718
1719           case '"':
1720             if (yyres)
1721               yyres[yyn] = '\0';
1722             return yyn;
1723           }
1724     do_not_strip_quotes: ;
1725     }
1726
1727   if (! yyres)
1728     return yystrlen (yystr);
1729
1730   return yystpcpy (yyres, yystr) - yyres;
1731 }
1732 # endif
1733
1734 /* Copy into YYRESULT an error message about the unexpected token
1735    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1736    including the terminating null byte.  If YYRESULT is null, do not
1737    copy anything; just return the number of bytes that would be
1738    copied.  As a special case, return 0 if an ordinary "syntax error"
1739    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1740    size calculation.  */
1741 static YYSIZE_T
1742 yysyntax_error (char *yyresult, int yystate, int yychar)
1743 {
1744   int yyn = yypact[yystate];
1745
1746   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1747     return 0;
1748   else
1749     {
1750       int yytype = YYTRANSLATE (yychar);
1751       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1752       YYSIZE_T yysize = yysize0;
1753       YYSIZE_T yysize1;
1754       int yysize_overflow = 0;
1755       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1756       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1757       int yyx;
1758
1759 # if 0
1760       /* This is so xgettext sees the translatable formats that are
1761          constructed on the fly.  */
1762       YY_("syntax error, unexpected %s");
1763       YY_("syntax error, unexpected %s, expecting %s");
1764       YY_("syntax error, unexpected %s, expecting %s or %s");
1765       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1766       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1767 # endif
1768       char *yyfmt;
1769       char const *yyf;
1770       static char const yyunexpected[] = "syntax error, unexpected %s";
1771       static char const yyexpecting[] = ", expecting %s";
1772       static char const yyor[] = " or %s";
1773       char yyformat[sizeof yyunexpected
1774                     + sizeof yyexpecting - 1
1775                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1776                        * (sizeof yyor - 1))];
1777       char const *yyprefix = yyexpecting;
1778
1779       /* Start YYX at -YYN if negative to avoid negative indexes in
1780          YYCHECK.  */
1781       int yyxbegin = yyn < 0 ? -yyn : 0;
1782
1783       /* Stay within bounds of both yycheck and yytname.  */
1784       int yychecklim = YYLAST - yyn + 1;
1785       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1786       int yycount = 1;
1787
1788       yyarg[0] = yytname[yytype];
1789       yyfmt = yystpcpy (yyformat, yyunexpected);
1790
1791       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1792         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1793           {
1794             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1795               {
1796                 yycount = 1;
1797                 yysize = yysize0;
1798                 yyformat[sizeof yyunexpected - 1] = '\0';
1799                 break;
1800               }
1801             yyarg[yycount++] = yytname[yyx];
1802             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1803             yysize_overflow |= (yysize1 < yysize);
1804             yysize = yysize1;
1805             yyfmt = yystpcpy (yyfmt, yyprefix);
1806             yyprefix = yyor;
1807           }
1808
1809       yyf = YY_(yyformat);
1810       yysize1 = yysize + yystrlen (yyf);
1811       yysize_overflow |= (yysize1 < yysize);
1812       yysize = yysize1;
1813
1814       if (yysize_overflow)
1815         return YYSIZE_MAXIMUM;
1816
1817       if (yyresult)
1818         {
1819           /* Avoid sprintf, as that infringes on the user's name space.
1820              Don't have undefined behavior even if the translation
1821              produced a string with the wrong number of "%s"s.  */
1822           char *yyp = yyresult;
1823           int yyi = 0;
1824           while ((*yyp = *yyf) != '\0')
1825             {
1826               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1827                 {
1828                   yyp += yytnamerr (yyp, yyarg[yyi++]);
1829                   yyf += 2;
1830                 }
1831               else
1832                 {
1833                   yyp++;
1834                   yyf++;
1835                 }
1836             }
1837         }
1838       return yysize;
1839     }
1840 }
1841 #endif /* YYERROR_VERBOSE */
1842 \f
1843
1844 /*-----------------------------------------------.
1845 | Release the memory associated to this symbol.  |
1846 `-----------------------------------------------*/
1847
1848 /*ARGSUSED*/
1849 #if (defined __STDC__ || defined __C99__FUNC__ \
1850      || defined __cplusplus || defined _MSC_VER)
1851 static void
1852 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1853 #else
1854 static void
1855 yydestruct (yymsg, yytype, yyvaluep)
1856     const char *yymsg;
1857     int yytype;
1858     YYSTYPE *yyvaluep;
1859 #endif
1860 {
1861   YYUSE (yyvaluep);
1862
1863   if (!yymsg)
1864     yymsg = "Deleting";
1865   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1866
1867   switch (yytype)
1868     {
1869
1870       default:
1871         break;
1872     }
1873 }
1874 \f
1875
1876 /* Prevent warnings from -Wmissing-prototypes.  */
1877
1878 #ifdef YYPARSE_PARAM
1879 #if defined __STDC__ || defined __cplusplus
1880 int yyparse (void *YYPARSE_PARAM);
1881 #else
1882 int yyparse ();
1883 #endif
1884 #else /* ! YYPARSE_PARAM */
1885 #if defined __STDC__ || defined __cplusplus
1886 int yyparse (void);
1887 #else
1888 int yyparse ();
1889 #endif
1890 #endif /* ! YYPARSE_PARAM */
1891
1892
1893
1894 /* The look-ahead symbol.  */
1895 int yychar;
1896
1897 /* The semantic value of the look-ahead symbol.  */
1898 YYSTYPE yylval;
1899
1900 /* Number of syntax errors so far.  */
1901 int yynerrs;
1902
1903
1904
1905 /*----------.
1906 | yyparse.  |
1907 `----------*/
1908
1909 #ifdef YYPARSE_PARAM
1910 #if (defined __STDC__ || defined __C99__FUNC__ \
1911      || defined __cplusplus || defined _MSC_VER)
1912 int
1913 yyparse (void *YYPARSE_PARAM)
1914 #else
1915 int
1916 yyparse (YYPARSE_PARAM)
1917     void *YYPARSE_PARAM;
1918 #endif
1919 #else /* ! YYPARSE_PARAM */
1920 #if (defined __STDC__ || defined __C99__FUNC__ \
1921      || defined __cplusplus || defined _MSC_VER)
1922 int
1923 yyparse (void)
1924 #else
1925 int
1926 yyparse ()
1927
1928 #endif
1929 #endif
1930 {
1931   
1932   int yystate;
1933   int yyn;
1934   int yyresult;
1935   /* Number of tokens to shift before error messages enabled.  */
1936   int yyerrstatus;
1937   /* Look-ahead token as an internal (translated) token number.  */
1938   int yytoken = 0;
1939 #if YYERROR_VERBOSE
1940   /* Buffer for error messages, and its allocated size.  */
1941   char yymsgbuf[128];
1942   char *yymsg = yymsgbuf;
1943   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1944 #endif
1945
1946   /* Three stacks and their tools:
1947      `yyss': related to states,
1948      `yyvs': related to semantic values,
1949      `yyls': related to locations.
1950
1951      Refer to the stacks thru separate pointers, to allow yyoverflow
1952      to reallocate them elsewhere.  */
1953
1954   /* The state stack.  */
1955   yytype_int16 yyssa[YYINITDEPTH];
1956   yytype_int16 *yyss = yyssa;
1957   yytype_int16 *yyssp;
1958
1959   /* The semantic value stack.  */
1960   YYSTYPE yyvsa[YYINITDEPTH];
1961   YYSTYPE *yyvs = yyvsa;
1962   YYSTYPE *yyvsp;
1963
1964
1965
1966 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1967
1968   YYSIZE_T yystacksize = YYINITDEPTH;
1969
1970   /* The variables used to return semantic value and location from the
1971      action routines.  */
1972   YYSTYPE yyval;
1973
1974
1975   /* The number of symbols on the RHS of the reduced rule.
1976      Keep to zero when no symbol should be popped.  */
1977   int yylen = 0;
1978
1979   YYDPRINTF ((stderr, "Starting parse\n"));
1980
1981   yystate = 0;
1982   yyerrstatus = 0;
1983   yynerrs = 0;
1984   yychar = YYEMPTY;             /* Cause a token to be read.  */
1985
1986   /* Initialize stack pointers.
1987      Waste one element of value and location stack
1988      so that they stay on the same level as the state stack.
1989      The wasted elements are never initialized.  */
1990
1991   yyssp = yyss;
1992   yyvsp = yyvs;
1993
1994   goto yysetstate;
1995
1996 /*------------------------------------------------------------.
1997 | yynewstate -- Push a new state, which is found in yystate.  |
1998 `------------------------------------------------------------*/
1999  yynewstate:
2000   /* In all cases, when you get here, the value and location stacks
2001      have just been pushed.  So pushing a state here evens the stacks.  */
2002   yyssp++;
2003
2004  yysetstate:
2005   *yyssp = yystate;
2006
2007   if (yyss + yystacksize - 1 <= yyssp)
2008     {
2009       /* Get the current used size of the three stacks, in elements.  */
2010       YYSIZE_T yysize = yyssp - yyss + 1;
2011
2012 #ifdef yyoverflow
2013       {
2014         /* Give user a chance to reallocate the stack.  Use copies of
2015            these so that the &'s don't force the real ones into
2016            memory.  */
2017         YYSTYPE *yyvs1 = yyvs;
2018         yytype_int16 *yyss1 = yyss;
2019
2020
2021         /* Each stack pointer address is followed by the size of the
2022            data in use in that stack, in bytes.  This used to be a
2023            conditional around just the two extra args, but that might
2024            be undefined if yyoverflow is a macro.  */
2025         yyoverflow (YY_("memory exhausted"),
2026                     &yyss1, yysize * sizeof (*yyssp),
2027                     &yyvs1, yysize * sizeof (*yyvsp),
2028
2029                     &yystacksize);
2030
2031         yyss = yyss1;
2032         yyvs = yyvs1;
2033       }
2034 #else /* no yyoverflow */
2035 # ifndef YYSTACK_RELOCATE
2036       goto yyexhaustedlab;
2037 # else
2038       /* Extend the stack our own way.  */
2039       if (YYMAXDEPTH <= yystacksize)
2040         goto yyexhaustedlab;
2041       yystacksize *= 2;
2042       if (YYMAXDEPTH < yystacksize)
2043         yystacksize = YYMAXDEPTH;
2044
2045       {
2046         yytype_int16 *yyss1 = yyss;
2047         union yyalloc *yyptr =
2048           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2049         if (! yyptr)
2050           goto yyexhaustedlab;
2051         YYSTACK_RELOCATE (yyss);
2052         YYSTACK_RELOCATE (yyvs);
2053
2054 #  undef YYSTACK_RELOCATE
2055         if (yyss1 != yyssa)
2056           YYSTACK_FREE (yyss1);
2057       }
2058 # endif
2059 #endif /* no yyoverflow */
2060
2061       yyssp = yyss + yysize - 1;
2062       yyvsp = yyvs + yysize - 1;
2063
2064
2065       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2066                   (unsigned long int) yystacksize));
2067
2068       if (yyss + yystacksize - 1 <= yyssp)
2069         YYABORT;
2070     }
2071
2072   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2073
2074   goto yybackup;
2075
2076 /*-----------.
2077 | yybackup.  |
2078 `-----------*/
2079 yybackup:
2080
2081   /* Do appropriate processing given the current state.  Read a
2082      look-ahead token if we need one and don't already have one.  */
2083
2084   /* First try to decide what to do without reference to look-ahead token.  */
2085   yyn = yypact[yystate];
2086   if (yyn == YYPACT_NINF)
2087     goto yydefault;
2088
2089   /* Not known => get a look-ahead token if don't already have one.  */
2090
2091   /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
2092   if (yychar == YYEMPTY)
2093     {
2094       YYDPRINTF ((stderr, "Reading a token: "));
2095       yychar = YYLEX;
2096     }
2097
2098   if (yychar <= YYEOF)
2099     {
2100       yychar = yytoken = YYEOF;
2101       YYDPRINTF ((stderr, "Now at end of input.\n"));
2102     }
2103   else
2104     {
2105       yytoken = YYTRANSLATE (yychar);
2106       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2107     }
2108
2109   /* If the proper action on seeing token YYTOKEN is to reduce or to
2110      detect an error, take that action.  */
2111   yyn += yytoken;
2112   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2113     goto yydefault;
2114   yyn = yytable[yyn];
2115   if (yyn <= 0)
2116     {
2117       if (yyn == 0 || yyn == YYTABLE_NINF)
2118         goto yyerrlab;
2119       yyn = -yyn;
2120       goto yyreduce;
2121     }
2122
2123   if (yyn == YYFINAL)
2124     YYACCEPT;
2125
2126   /* Count tokens shifted since error; after three, turn off error
2127      status.  */
2128   if (yyerrstatus)
2129     yyerrstatus--;
2130
2131   /* Shift the look-ahead token.  */
2132   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2133
2134   /* Discard the shifted token unless it is eof.  */
2135   if (yychar != YYEOF)
2136     yychar = YYEMPTY;
2137
2138   yystate = yyn;
2139   *++yyvsp = yylval;
2140
2141   goto yynewstate;
2142
2143
2144 /*-----------------------------------------------------------.
2145 | yydefault -- do the default action for the current state.  |
2146 `-----------------------------------------------------------*/
2147 yydefault:
2148   yyn = yydefact[yystate];
2149   if (yyn == 0)
2150     goto yyerrlab;
2151   goto yyreduce;
2152
2153
2154 /*-----------------------------.
2155 | yyreduce -- Do a reduction.  |
2156 `-----------------------------*/
2157 yyreduce:
2158   /* yyn is the number of a rule to reduce with.  */
2159   yylen = yyr2[yyn];
2160
2161   /* If YYLEN is nonzero, implement the default value of the action:
2162      `$$ = $1'.
2163
2164      Otherwise, the following line sets YYVAL to garbage.
2165      This behavior is undocumented and Bison
2166      users should not rely upon it.  Assigning to YYVAL
2167      unconditionally makes the parser a bit smaller, and it avoids a
2168      GCC warning that YYVAL may be used uninitialized.  */
2169   yyval = yyvsp[1-yylen];
2170
2171
2172   YY_REDUCE_PRINT (yyn);
2173   switch (yyn)
2174     {
2175         case 2:
2176 #line 171 "rx-parse.y"
2177     { as_bad (_("Unknown opcode: %s"), rx_init_start); }
2178     break;
2179
2180   case 3:
2181 #line 176 "rx-parse.y"
2182     { B1 (0x00); }
2183     break;
2184
2185   case 4:
2186 #line 179 "rx-parse.y"
2187     { B1 (0x01); }
2188     break;
2189
2190   case 5:
2191 #line 182 "rx-parse.y"
2192     { B1 (0x02); }
2193     break;
2194
2195   case 6:
2196 #line 185 "rx-parse.y"
2197     { B1 (0x03); }
2198     break;
2199
2200   case 7:
2201 #line 190 "rx-parse.y"
2202     { if (rx_disp3op ((yyvsp[(2) - (2)].exp)))
2203               { B1 (0x08); rx_disp3 ((yyvsp[(2) - (2)].exp), 5); }
2204             else if (rx_intop ((yyvsp[(2) - (2)].exp), 8))
2205               { B1 (0x2e); PC1 ((yyvsp[(2) - (2)].exp)); }
2206             else if (rx_intop ((yyvsp[(2) - (2)].exp), 16))
2207               { B1 (0x38); PC2 ((yyvsp[(2) - (2)].exp)); }
2208             else if (rx_intop ((yyvsp[(2) - (2)].exp), 24))
2209               { B1 (0x04); PC3 ((yyvsp[(2) - (2)].exp)); }
2210             else
2211               { rx_relax (RX_RELAX_BRANCH, 0);
2212                 rx_linkrelax_branch ();
2213                 /* We'll convert this to a longer one later if needed.  */
2214                 B1 (0x08); rx_disp3 ((yyvsp[(2) - (2)].exp), 5); } }
2215     break;
2216
2217   case 8:
2218 #line 205 "rx-parse.y"
2219     { B1 (0x04); PC3 ((yyvsp[(3) - (3)].exp)); }
2220     break;
2221
2222   case 9:
2223 #line 208 "rx-parse.y"
2224     { B1 (0x08); rx_disp3 ((yyvsp[(3) - (3)].exp), 5); }
2225     break;
2226
2227   case 10:
2228 #line 213 "rx-parse.y"
2229     { if (rx_intop ((yyvsp[(2) - (2)].exp), 16))
2230               { B1 (0x39); PC2 ((yyvsp[(2) - (2)].exp)); }
2231             else if (rx_intop ((yyvsp[(2) - (2)].exp), 24))
2232               { B1 (0x05); PC3 ((yyvsp[(2) - (2)].exp)); }
2233             else
2234               { rx_relax (RX_RELAX_BRANCH, 0);
2235                 rx_linkrelax_branch ();
2236                 B1 (0x39); PC2 ((yyvsp[(2) - (2)].exp)); } }
2237     break;
2238
2239   case 11:
2240 #line 222 "rx-parse.y"
2241     { B1 (0x05), PC3 ((yyvsp[(3) - (3)].exp)); }
2242     break;
2243
2244   case 12:
2245 #line 227 "rx-parse.y"
2246     { if ((yyvsp[(1) - (3)].regno) == COND_EQ || (yyvsp[(1) - (3)].regno) == COND_NE)
2247               { B1 ((yyvsp[(1) - (3)].regno) == COND_EQ ? 0x10 : 0x18); rx_disp3 ((yyvsp[(3) - (3)].exp), 5); }
2248             else
2249               as_bad (_("Only BEQ and BNE may have .S")); }
2250     break;
2251
2252   case 13:
2253 #line 235 "rx-parse.y"
2254     { B1 (0x20); F ((yyvsp[(1) - (3)].regno), 4, 4); PC1 ((yyvsp[(3) - (3)].exp)); }
2255     break;
2256
2257   case 14:
2258 #line 238 "rx-parse.y"
2259     { B1 (0x2e), PC1 ((yyvsp[(3) - (3)].exp)); }
2260     break;
2261
2262   case 15:
2263 #line 243 "rx-parse.y"
2264     { B1 (0x38), PC2 ((yyvsp[(3) - (3)].exp)); }
2265     break;
2266
2267   case 16:
2268 #line 245 "rx-parse.y"
2269     { B1 (0x39), PC2 ((yyvsp[(3) - (3)].exp)); }
2270     break;
2271
2272   case 17:
2273 #line 247 "rx-parse.y"
2274     { if ((yyvsp[(1) - (3)].regno) == COND_EQ || (yyvsp[(1) - (3)].regno) == COND_NE)
2275               { B1 ((yyvsp[(1) - (3)].regno) == COND_EQ ? 0x3a : 0x3b); PC2 ((yyvsp[(3) - (3)].exp)); }
2276             else
2277               as_bad (_("Only BEQ and BNE may have .W")); }
2278     break;
2279
2280   case 18:
2281 #line 252 "rx-parse.y"
2282     { if ((yyvsp[(1) - (2)].regno) == COND_EQ || (yyvsp[(1) - (2)].regno) == COND_NE)
2283               {
2284                 rx_relax (RX_RELAX_BRANCH, 0);
2285                 rx_linkrelax_branch ();
2286                 B1 ((yyvsp[(1) - (2)].regno) == COND_EQ ? 0x10 : 0x18); rx_disp3 ((yyvsp[(2) - (2)].exp), 5);
2287               }
2288             else
2289               {
2290                 rx_relax (RX_RELAX_BRANCH, 0);
2291                 /* This is because we might turn it into a
2292                    jump-over-jump long branch.  */
2293                 rx_linkrelax_branch ();
2294                 B1 (0x20); F ((yyvsp[(1) - (2)].regno), 4, 4); PC1 ((yyvsp[(2) - (2)].exp));
2295               } }
2296     break;
2297
2298   case 19:
2299 #line 271 "rx-parse.y"
2300     { if ((yyvsp[(8) - (9)].regno) <= 7 && rx_uintop ((yyvsp[(4) - (9)].exp), 8) && rx_disp5op0 (&(yyvsp[(6) - (9)].exp), BSIZE))
2301               { B2 (0x3c, 0); rx_field5s2 ((yyvsp[(6) - (9)].exp)); F ((yyvsp[(8) - (9)].regno), 9, 3); O1 ((yyvsp[(4) - (9)].exp)); }
2302             else
2303               { B2 (0xf8, 0x04); F ((yyvsp[(8) - (9)].regno), 8, 4); DSP ((yyvsp[(6) - (9)].exp), 6, BSIZE); O1 ((yyvsp[(4) - (9)].exp));
2304               if ((yyvsp[(4) - (9)].exp).X_op != O_constant && (yyvsp[(4) - (9)].exp).X_op != O_big) rx_linkrelax_imm (12); } }
2305     break;
2306
2307   case 20:
2308 #line 278 "rx-parse.y"
2309     { if ((yyvsp[(8) - (9)].regno) <= 7 && rx_uintop ((yyvsp[(4) - (9)].exp), 8) && rx_disp5op0 (&(yyvsp[(6) - (9)].exp), WSIZE))
2310               { B2 (0x3d, 0); rx_field5s2 ((yyvsp[(6) - (9)].exp)); F ((yyvsp[(8) - (9)].regno), 9, 3); O1 ((yyvsp[(4) - (9)].exp)); }
2311             else
2312               { B2 (0xf8, 0x01); F ((yyvsp[(8) - (9)].regno), 8, 4); DSP ((yyvsp[(6) - (9)].exp), 6, WSIZE); IMM ((yyvsp[(4) - (9)].exp), 12); } }
2313     break;
2314
2315   case 21:
2316 #line 284 "rx-parse.y"
2317     { if ((yyvsp[(8) - (9)].regno) <= 7 && rx_uintop ((yyvsp[(4) - (9)].exp), 8) && rx_disp5op0 (&(yyvsp[(6) - (9)].exp), LSIZE))
2318               { B2 (0x3e, 0); rx_field5s2 ((yyvsp[(6) - (9)].exp)); F ((yyvsp[(8) - (9)].regno), 9, 3); O1 ((yyvsp[(4) - (9)].exp)); }
2319             else
2320               { B2 (0xf8, 0x02); F ((yyvsp[(8) - (9)].regno), 8, 4); DSP ((yyvsp[(6) - (9)].exp), 6, LSIZE); IMM ((yyvsp[(4) - (9)].exp), 12); } }
2321     break;
2322
2323   case 22:
2324 #line 292 "rx-parse.y"
2325     { B2 (0x3f, 0); F ((yyvsp[(5) - (7)].regno), 8, 4); F ((yyvsp[(7) - (7)].regno), 12, 4); rtsd_immediate ((yyvsp[(3) - (7)].exp));
2326             if ((yyvsp[(5) - (7)].regno) == 0)
2327               rx_error (_("RTSD cannot pop R0"));
2328             if ((yyvsp[(5) - (7)].regno) > (yyvsp[(7) - (7)].regno))
2329               rx_error (_("RTSD first reg must be <= second reg")); }
2330     break;
2331
2332   case 23:
2333 #line 301 "rx-parse.y"
2334     { B2 (0x47, 0); F ((yyvsp[(2) - (4)].regno), 8, 4); F ((yyvsp[(4) - (4)].regno), 12, 4); }
2335     break;
2336
2337   case 24:
2338 #line 306 "rx-parse.y"
2339     { B2 (0x44, 0); F ((yyvsp[(4) - (8)].regno), 8, 4); F ((yyvsp[(8) - (8)].regno), 12, 4); DSP ((yyvsp[(2) - (8)].exp), 6, BSIZE); }
2340     break;
2341
2342   case 25:
2343 #line 309 "rx-parse.y"
2344     { B3 (MEMEX, 0x04, 0); F ((yyvsp[(6) - (8)].regno), 8, 2);  F ((yyvsp[(4) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); DSP ((yyvsp[(2) - (8)].exp), 14, sizemap[(yyvsp[(6) - (8)].regno)]); }
2345     break;
2346
2347   case 26:
2348 #line 314 "rx-parse.y"
2349     { B2 (0x5b, 0x00); F ((yyvsp[(2) - (5)].regno), 5, 1); F ((yyvsp[(3) - (5)].regno), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2350     break;
2351
2352   case 27:
2353 #line 319 "rx-parse.y"
2354     { B2 (0x58, 0x00); F ((yyvsp[(2) - (7)].regno), 5, 1); F ((yyvsp[(4) - (7)].regno), 8, 4); F ((yyvsp[(7) - (7)].regno), 12, 4); }
2355     break;
2356
2357   case 28:
2358 #line 322 "rx-parse.y"
2359     { if ((yyvsp[(5) - (8)].regno) <= 7 && (yyvsp[(8) - (8)].regno) <= 7 && rx_disp5op (&(yyvsp[(3) - (8)].exp), (yyvsp[(2) - (8)].regno)))
2360               { B2 (0xb0, 0); F ((yyvsp[(2) - (8)].regno), 4, 1); F ((yyvsp[(5) - (8)].regno), 9, 3); F ((yyvsp[(8) - (8)].regno), 13, 3); rx_field5s ((yyvsp[(3) - (8)].exp)); }
2361             else
2362               { B2 (0x58, 0x00); F ((yyvsp[(2) - (8)].regno), 5, 1); F ((yyvsp[(5) - (8)].regno), 8, 4); F ((yyvsp[(8) - (8)].regno), 12, 4); DSP ((yyvsp[(3) - (8)].exp), 6, (yyvsp[(2) - (8)].regno)); } }
2363     break;
2364
2365   case 29:
2366 #line 330 "rx-parse.y"
2367     { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4))
2368               { B2 (0x60, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2369             else
2370               /* This is really an add, but we negate the immediate.  */
2371               { B2 (0x70, 0); F ((yyvsp[(5) - (5)].regno), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); NIMM ((yyvsp[(3) - (5)].exp), 6); } }
2372     break;
2373
2374   case 30:
2375 #line 337 "rx-parse.y"
2376     { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4))
2377               { B2 (0x61, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2378             else if (rx_uintop ((yyvsp[(3) - (5)].exp), 8))
2379               { B2 (0x75, 0x50); F ((yyvsp[(5) - (5)].regno), 12, 4); UO1 ((yyvsp[(3) - (5)].exp)); }
2380             else
2381               { B2 (0x74, 0x00); F ((yyvsp[(5) - (5)].regno), 12, 4); IMM ((yyvsp[(3) - (5)].exp), 6); } }
2382     break;
2383
2384   case 31:
2385 #line 345 "rx-parse.y"
2386     { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4))
2387               { B2 (0x62, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2388             else
2389               { B2 (0x70, 0); F ((yyvsp[(5) - (5)].regno), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); IMM ((yyvsp[(3) - (5)].exp), 6); } }
2390     break;
2391
2392   case 32:
2393 #line 351 "rx-parse.y"
2394     { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4))
2395               { B2 (0x63, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2396             else
2397               { B2 (0x74, 0x10); F ((yyvsp[(5) - (5)].regno), 12, 4); IMM ((yyvsp[(3) - (5)].exp), 6); } }
2398     break;
2399
2400   case 33:
2401 #line 357 "rx-parse.y"
2402     { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4))
2403               { B2 (0x64, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2404             else
2405               { B2 (0x74, 0x20); F ((yyvsp[(5) - (5)].regno), 12, 4); IMM ((yyvsp[(3) - (5)].exp), 6); } }
2406     break;
2407
2408   case 34:
2409 #line 363 "rx-parse.y"
2410     { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4))
2411               { B2 (0x65, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2412             else
2413               { B2 (0x74, 0x30); F ((yyvsp[(5) - (5)].regno), 12, 4); IMM ((yyvsp[(3) - (5)].exp), 6); } }
2414     break;
2415
2416   case 35:
2417 #line 369 "rx-parse.y"
2418     { if (rx_uintop ((yyvsp[(4) - (6)].exp), 4))
2419               { B2 (0x66, 0); FE ((yyvsp[(4) - (6)].exp), 8, 4); F ((yyvsp[(6) - (6)].regno), 12, 4); }
2420             else if (rx_uintop ((yyvsp[(4) - (6)].exp), 8))
2421               { B2 (0x75, 0x40); F ((yyvsp[(6) - (6)].regno), 12, 4); UO1 ((yyvsp[(4) - (6)].exp)); }
2422             else
2423               { B2 (0xfb, 0x02); F ((yyvsp[(6) - (6)].regno), 8, 4); IMM ((yyvsp[(4) - (6)].exp), 12); } }
2424     break;
2425
2426   case 36:
2427 #line 377 "rx-parse.y"
2428     { if (rx_uintop ((yyvsp[(3) - (5)].exp), 4))
2429               { B2 (0x66, 0); FE ((yyvsp[(3) - (5)].exp), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2430             else if (rx_uintop ((yyvsp[(3) - (5)].exp), 8))
2431               { B2 (0x75, 0x40); F ((yyvsp[(5) - (5)].regno), 12, 4); UO1 ((yyvsp[(3) - (5)].exp)); }
2432             else
2433               { B2 (0xfb, 0x02); F ((yyvsp[(5) - (5)].regno), 8, 4); IMM ((yyvsp[(3) - (5)].exp), 12); } }
2434     break;
2435
2436   case 37:
2437 #line 387 "rx-parse.y"
2438     { B1 (0x67); rtsd_immediate ((yyvsp[(3) - (3)].exp)); }
2439     break;
2440
2441   case 38:
2442 #line 391 "rx-parse.y"
2443     { sub_op = 0; }
2444     break;
2445
2446   case 40:
2447 #line 392 "rx-parse.y"
2448     { sub_op = 1; }
2449     break;
2450
2451   case 42:
2452 #line 393 "rx-parse.y"
2453     { sub_op = 2; }
2454     break;
2455
2456   case 44:
2457 #line 398 "rx-parse.y"
2458     {
2459             if ((yyvsp[(2) - (4)].regno) == (yyvsp[(4) - (4)].regno))
2460               { B2 (0x7e, 0x80); F (LSIZE, 10, 2); F ((yyvsp[(2) - (4)].regno), 12, 4); }
2461             else
2462              { B2 (0x6e, 0); F ((yyvsp[(2) - (4)].regno), 8, 4); F ((yyvsp[(4) - (4)].regno), 12, 4); }
2463             if ((yyvsp[(2) - (4)].regno) == 0)
2464               rx_error (_("PUSHM cannot push R0"));
2465             if ((yyvsp[(2) - (4)].regno) > (yyvsp[(4) - (4)].regno))
2466               rx_error (_("PUSHM first reg must be <= second reg")); }
2467     break;
2468
2469   case 45:
2470 #line 411 "rx-parse.y"
2471     {
2472             if ((yyvsp[(2) - (4)].regno) == (yyvsp[(4) - (4)].regno))
2473               { B2 (0x7e, 0xb0); F ((yyvsp[(2) - (4)].regno), 12, 4); }
2474             else
2475               { B2 (0x6f, 0); F ((yyvsp[(2) - (4)].regno), 8, 4); F ((yyvsp[(4) - (4)].regno), 12, 4); }
2476             if ((yyvsp[(2) - (4)].regno) == 0)
2477               rx_error (_("POPM cannot pop R0"));
2478             if ((yyvsp[(2) - (4)].regno) > (yyvsp[(4) - (4)].regno))
2479               rx_error (_("POPM first reg must be <= second reg")); }
2480     break;
2481
2482   case 46:
2483 #line 424 "rx-parse.y"
2484     { B2 (0x70, 0x00); F ((yyvsp[(5) - (7)].regno), 8, 4); F ((yyvsp[(7) - (7)].regno), 12, 4); IMM ((yyvsp[(3) - (7)].exp), 6); }
2485     break;
2486
2487   case 47:
2488 #line 429 "rx-parse.y"
2489     { B2(0x75, 0x60), UO1 ((yyvsp[(3) - (3)].exp)); }
2490     break;
2491
2492   case 48:
2493 #line 434 "rx-parse.y"
2494     { B2 (0x78, 0); FE ((yyvsp[(3) - (5)].exp), 7, 5); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2495     break;
2496
2497   case 49:
2498 #line 436 "rx-parse.y"
2499     { B2 (0x7a, 0); FE ((yyvsp[(3) - (5)].exp), 7, 5); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2500     break;
2501
2502   case 50:
2503 #line 441 "rx-parse.y"
2504     { B2 (0x7c, 0x00); FE ((yyvsp[(3) - (5)].exp), 7, 5); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2505     break;
2506
2507   case 51:
2508 #line 446 "rx-parse.y"
2509     { B2 (0x7e, 0x30); F ((yyvsp[(2) - (2)].regno), 12, 4); }
2510     break;
2511
2512   case 52:
2513 #line 448 "rx-parse.y"
2514     { B2 (0x7e, 0x40); F ((yyvsp[(2) - (2)].regno), 12, 4); }
2515     break;
2516
2517   case 53:
2518 #line 450 "rx-parse.y"
2519     { B2 (0x7e, 0x50); F ((yyvsp[(2) - (2)].regno), 12, 4); }
2520     break;
2521
2522   case 54:
2523 #line 455 "rx-parse.y"
2524     { B2 (0x7e, 0x80); F ((yyvsp[(2) - (3)].regno), 10, 2); F ((yyvsp[(3) - (3)].regno), 12, 4); }
2525     break;
2526
2527   case 55:
2528 #line 460 "rx-parse.y"
2529     { B2 (0x7e, 0xb0); F ((yyvsp[(2) - (2)].regno), 12, 4); }
2530     break;
2531
2532   case 56:
2533 #line 465 "rx-parse.y"
2534     { if ((yyvsp[(2) - (2)].regno) < 16)
2535               { B2 (0x7e, 0xc0); F ((yyvsp[(2) - (2)].regno), 12, 4); }
2536             else
2537               as_bad (_("PUSHC can only push the first 16 control registers")); }
2538     break;
2539
2540   case 57:
2541 #line 473 "rx-parse.y"
2542     { if ((yyvsp[(2) - (2)].regno) < 16)
2543               { B2 (0x7e, 0xe0); F ((yyvsp[(2) - (2)].regno), 12, 4); }
2544             else
2545               as_bad (_("POPC can only pop the first 16 control registers")); }
2546     break;
2547
2548   case 58:
2549 #line 481 "rx-parse.y"
2550     { B2 (0x7f, 0xa0); F ((yyvsp[(2) - (2)].regno), 12, 4); }
2551     break;
2552
2553   case 59:
2554 #line 483 "rx-parse.y"
2555     { B2 (0x7f, 0xb0); F ((yyvsp[(2) - (2)].regno), 12, 4); }
2556     break;
2557
2558   case 60:
2559 #line 488 "rx-parse.y"
2560     { B2 (0x7f, 0x00); F ((yyvsp[(2) - (2)].regno), 12, 4); }
2561     break;
2562
2563   case 61:
2564 #line 490 "rx-parse.y"
2565     { B2 (0x7f, 0x10); F ((yyvsp[(2) - (2)].regno), 12, 4); }
2566     break;
2567
2568   case 62:
2569 #line 492 "rx-parse.y"
2570     { B2 (0x7f, 0x40); F ((yyvsp[(3) - (3)].regno), 12, 4); }
2571     break;
2572
2573   case 63:
2574 #line 494 "rx-parse.y"
2575     { B2 (0x7f, 0x50); F ((yyvsp[(3) - (3)].regno), 12, 4); }
2576     break;
2577
2578   case 64:
2579 #line 499 "rx-parse.y"
2580     { B2 (0x7f, 0x83); }
2581     break;
2582
2583   case 65:
2584 #line 501 "rx-parse.y"
2585     { B2 (0x7f, 0x87); }
2586     break;
2587
2588   case 66:
2589 #line 503 "rx-parse.y"
2590     { B2 (0x7f, 0x8b); }
2591     break;
2592
2593   case 67:
2594 #line 505 "rx-parse.y"
2595     { B2 (0x7f, 0x8f); }
2596     break;
2597
2598   case 68:
2599 #line 510 "rx-parse.y"
2600     { B2 (0x7f, 0x80); F ((yyvsp[(2) - (2)].regno), 14, 2); }
2601     break;
2602
2603   case 69:
2604 #line 512 "rx-parse.y"
2605     { B2 (0x7f, 0x84); F ((yyvsp[(2) - (2)].regno), 14, 2); }
2606     break;
2607
2608   case 70:
2609 #line 514 "rx-parse.y"
2610     { B2 (0x7f, 0x88); F ((yyvsp[(2) - (2)].regno), 14, 2); }
2611     break;
2612
2613   case 71:
2614 #line 519 "rx-parse.y"
2615     { B2 (0x7f, 0x8c); F ((yyvsp[(2) - (2)].regno), 14, 2); }
2616     break;
2617
2618   case 72:
2619 #line 524 "rx-parse.y"
2620     { B2 (0x7f, 0x94); }
2621     break;
2622
2623   case 73:
2624 #line 526 "rx-parse.y"
2625     { B2 (0x7f, 0x95); }
2626     break;
2627
2628   case 74:
2629 #line 528 "rx-parse.y"
2630     { B2 (0x7f, 0x96); }
2631     break;
2632
2633   case 75:
2634 #line 530 "rx-parse.y"
2635     { B2 (0x7f, 0x93); }
2636     break;
2637
2638   case 76:
2639 #line 535 "rx-parse.y"
2640     { B3 (0x75, 0x70, 0x00); FE ((yyvsp[(3) - (3)].exp), 20, 4); }
2641     break;
2642
2643   case 77:
2644 #line 541 "rx-parse.y"
2645     { if ((yyvsp[(3) - (8)].regno) <= 7 && (yyvsp[(7) - (8)].regno) <= 7 && rx_disp5op (&(yyvsp[(5) - (8)].exp), (yyvsp[(2) - (8)].regno)))
2646               { B2 (0x80, 0); F ((yyvsp[(2) - (8)].regno), 2, 2); F ((yyvsp[(7) - (8)].regno), 9, 3); F ((yyvsp[(3) - (8)].regno), 13, 3); rx_field5s ((yyvsp[(5) - (8)].exp)); }
2647             else
2648               { B2 (0xc3, 0x00); F ((yyvsp[(2) - (8)].regno), 2, 2); F ((yyvsp[(7) - (8)].regno), 8, 4); F ((yyvsp[(3) - (8)].regno), 12, 4); DSP ((yyvsp[(5) - (8)].exp), 4, (yyvsp[(2) - (8)].regno)); }}
2649     break;
2650
2651   case 78:
2652 #line 549 "rx-parse.y"
2653     { if ((yyvsp[(5) - (8)].regno) <= 7 && (yyvsp[(8) - (8)].regno) <= 7 && rx_disp5op (&(yyvsp[(3) - (8)].exp), (yyvsp[(2) - (8)].regno)))
2654               { B2 (0x88, 0); F ((yyvsp[(2) - (8)].regno), 2, 2); F ((yyvsp[(5) - (8)].regno), 9, 3); F ((yyvsp[(8) - (8)].regno), 13, 3); rx_field5s ((yyvsp[(3) - (8)].exp)); }
2655             else
2656               { B2 (0xcc, 0x00); F ((yyvsp[(2) - (8)].regno), 2, 2); F ((yyvsp[(5) - (8)].regno), 8, 4); F ((yyvsp[(8) - (8)].regno), 12, 4); DSP ((yyvsp[(3) - (8)].exp), 6, (yyvsp[(2) - (8)].regno)); } }
2657     break;
2658
2659   case 79:
2660 #line 563 "rx-parse.y"
2661     { B2 (0xc3, 0x00); F ((yyvsp[(2) - (7)].regno), 2, 2); F ((yyvsp[(6) - (7)].regno), 8, 4); F ((yyvsp[(3) - (7)].regno), 12, 4); }
2662     break;
2663
2664   case 80:
2665 #line 568 "rx-parse.y"
2666     { B2 (0xc0, 0); F ((yyvsp[(2) - (10)].regno), 2, 2); F ((yyvsp[(4) - (10)].regno), 8, 4); F ((yyvsp[(9) - (10)].regno), 12, 4); DSP ((yyvsp[(7) - (10)].exp), 4, (yyvsp[(2) - (10)].regno)); }
2667     break;
2668
2669   case 81:
2670 #line 573 "rx-parse.y"
2671     { B2 (0xc0, 0x00); F ((yyvsp[(2) - (11)].regno), 2, 2); F ((yyvsp[(5) - (11)].regno), 8, 4); F ((yyvsp[(10) - (11)].regno), 12, 4); DSP ((yyvsp[(3) - (11)].exp), 6, (yyvsp[(2) - (11)].regno)); DSP ((yyvsp[(8) - (11)].exp), 4, (yyvsp[(2) - (11)].regno)); }
2672     break;
2673
2674   case 82:
2675 #line 578 "rx-parse.y"
2676     { B2 (0xcf, 0x00); F ((yyvsp[(2) - (5)].regno), 2, 2); F ((yyvsp[(3) - (5)].regno), 8, 4); F ((yyvsp[(5) - (5)].regno), 12, 4); }
2677     break;
2678
2679   case 83:
2680 #line 583 "rx-parse.y"
2681     { B2 (0xcc, 0x00); F ((yyvsp[(2) - (7)].regno), 2, 2); F ((yyvsp[(4) - (7)].regno), 8, 4); F ((yyvsp[(7) - (7)].regno), 12, 4); }
2682     break;
2683
2684   case 84:
2685 #line 588 "rx-parse.y"
2686     { B2 (0xf0, 0x00); F ((yyvsp[(7) - (9)].regno), 8, 4); FE ((yyvsp[(3) - (9)].exp), 13, 3); DSP ((yyvsp[(5) - (9)].exp), 6, BSIZE); }
2687     break;
2688
2689   case 85:
2690 #line 590 "rx-parse.y"
2691     { B2 (0xf0, 0x08); F ((yyvsp[(7) - (9)].regno), 8, 4); FE ((yyvsp[(3) - (9)].exp), 13, 3); DSP ((yyvsp[(5) - (9)].exp), 6, BSIZE); }
2692     break;
2693
2694   case 86:
2695 #line 592 "rx-parse.y"
2696     { B2 (0xf4, 0x00); F ((yyvsp[(7) - (9)].regno), 8, 4); FE ((yyvsp[(3) - (9)].exp), 13, 3); DSP ((yyvsp[(5) - (9)].exp), 6, BSIZE); }
2697     break;
2698
2699   case 87:
2700 #line 597 "rx-parse.y"
2701     { B2 (0xf4, 0x08); F ((yyvsp[(2) - (6)].regno), 14, 2); F ((yyvsp[(5) - (6)].regno), 8, 4); DSP ((yyvsp[(3) - (6)].exp), 6, (yyvsp[(2) - (6)].regno)); }
2702     break;
2703
2704   case 88:
2705 #line 601 "rx-parse.y"
2706     { sub_op = 0; }
2707     break;
2708
2709   case 90:
2710 #line 602 "rx-parse.y"
2711     { sub_op = 1; sub_op2 = 1; }
2712     break;
2713
2714   case 92:
2715 #line 603 "rx-parse.y"
2716     { sub_op = 2; }
2717     break;
2718
2719   case 94:
2720 #line 604 "rx-parse.y"
2721     { sub_op = 3; sub_op2 = 2; }
2722     break;
2723
2724   case 96:
2725 #line 605 "rx-parse.y"
2726     { sub_op = 4; }
2727     break;
2728
2729   case 98:
2730 #line 606 "rx-parse.y"
2731     { sub_op = 5; }
2732     break;
2733
2734   case 100:
2735 #line 607 "rx-parse.y"
2736     { sub_op = 6; }
2737     break;
2738
2739   case 102:
2740 #line 608 "rx-parse.y"
2741     { sub_op = 7; }
2742     break;
2743
2744   case 104:
2745 #line 609 "rx-parse.y"
2746     { sub_op = 8; }
2747     break;
2748
2749   case 106:
2750 #line 610 "rx-parse.y"
2751     { sub_op = 9; }
2752     break;
2753
2754   case 108:
2755 #line 611 "rx-parse.y"
2756     { sub_op = 12; }
2757     break;
2758
2759   case 110:
2760 #line 612 "rx-parse.y"
2761     { sub_op = 13; }
2762     break;
2763
2764   case 112:
2765 #line 613 "rx-parse.y"
2766     { sub_op = 14; sub_op2 = 0; }
2767     break;
2768
2769   case 114:
2770 #line 614 "rx-parse.y"
2771     { sub_op = 14; }
2772     break;
2773
2774   case 116:
2775 #line 615 "rx-parse.y"
2776     { sub_op = 15; }
2777     break;
2778
2779   case 118:
2780 #line 619 "rx-parse.y"
2781     { sub_op = 6; }
2782     break;
2783
2784   case 120:
2785 #line 620 "rx-parse.y"
2786     { sub_op = 7; }
2787     break;
2788
2789   case 122:
2790 #line 621 "rx-parse.y"
2791     { sub_op = 16; }
2792     break;
2793
2794   case 124:
2795 #line 622 "rx-parse.y"
2796     { sub_op = 17; }
2797     break;
2798
2799   case 126:
2800 #line 627 "rx-parse.y"
2801     { id24 (1, 0x63, 0x00); F ((yyvsp[(4) - (4)].regno), 16, 4); F ((yyvsp[(2) - (4)].regno), 20, 4); }
2802     break;
2803
2804   case 127:
2805 #line 629 "rx-parse.y"
2806     { id24 (1, 0x67, 0x00); F ((yyvsp[(4) - (4)].regno), 16, 4); F ((yyvsp[(2) - (4)].regno), 20, 4); }
2807     break;
2808
2809   case 128:
2810 #line 631 "rx-parse.y"
2811     { id24 (1, 0x6b, 0x00); F ((yyvsp[(4) - (4)].regno), 16, 4); F ((yyvsp[(2) - (4)].regno), 20, 4); }
2812     break;
2813
2814   case 129:
2815 #line 633 "rx-parse.y"
2816     { id24 (1, 0x6f, 0x00); F ((yyvsp[(4) - (4)].regno), 16, 4); F ((yyvsp[(2) - (4)].regno), 20, 4); }
2817     break;
2818
2819   case 130:
2820 #line 636 "rx-parse.y"
2821     { id24 (1, 0x60, 0x00); F ((yyvsp[(6) - (8)].regno), 16, 4); F ((yyvsp[(2) - (8)].regno), 20, 4); DSP ((yyvsp[(4) - (8)].exp), 14, BSIZE); }
2822     break;
2823
2824   case 131:
2825 #line 638 "rx-parse.y"
2826     { id24 (1, 0x64, 0x00); F ((yyvsp[(6) - (8)].regno), 16, 4); F ((yyvsp[(2) - (8)].regno), 20, 4); DSP ((yyvsp[(4) - (8)].exp), 14, BSIZE); }
2827     break;
2828
2829   case 132:
2830 #line 640 "rx-parse.y"
2831     { id24 (1, 0x68, 0x00); F ((yyvsp[(6) - (8)].regno), 16, 4); F ((yyvsp[(2) - (8)].regno), 20, 4); DSP ((yyvsp[(4) - (8)].exp), 14, BSIZE); }
2832     break;
2833
2834   case 133:
2835 #line 642 "rx-parse.y"
2836     { id24 (1, 0x6c, 0x00); F ((yyvsp[(6) - (8)].regno), 16, 4); F ((yyvsp[(2) - (8)].regno), 20, 4); DSP ((yyvsp[(4) - (8)].exp), 14, BSIZE); }
2837     break;
2838
2839   case 134:
2840 #line 646 "rx-parse.y"
2841     { sub_op = 0; }
2842     break;
2843
2844   case 136:
2845 #line 647 "rx-parse.y"
2846     { sub_op = 1; }
2847     break;
2848
2849   case 138:
2850 #line 648 "rx-parse.y"
2851     { sub_op = 2; }
2852     break;
2853
2854   case 140:
2855 #line 649 "rx-parse.y"
2856     { sub_op = 3; }
2857     break;
2858
2859   case 142:
2860 #line 650 "rx-parse.y"
2861     { sub_op = 4; }
2862     break;
2863
2864   case 144:
2865 #line 651 "rx-parse.y"
2866     { sub_op = 5; }
2867     break;
2868
2869   case 146:
2870 #line 652 "rx-parse.y"
2871     { sub_op = 6; }
2872     break;
2873
2874   case 148:
2875 #line 657 "rx-parse.y"
2876     { id24 (1, 0xdb, 0x00); F ((yyvsp[(1) - (3)].regno), 20, 4); F ((yyvsp[(3) - (3)].regno), 16, 4); }
2877     break;
2878
2879   case 149:
2880 #line 659 "rx-parse.y"
2881     { id24 (1, 0xd0, 0x00); F ((yyvsp[(1) - (6)].regno), 20, 4); F ((yyvsp[(2) - (6)].regno), 12, 2); F ((yyvsp[(5) - (6)].regno), 16, 4); DSP ((yyvsp[(3) - (6)].exp), 14, (yyvsp[(2) - (6)].regno)); }
2882     break;
2883
2884   case 150:
2885 #line 664 "rx-parse.y"
2886     { id24 (1, 0xe0, 0x00); F ((yyvsp[(1) - (9)].regno), 20, 4); FE ((yyvsp[(3) - (9)].exp), 11, 3);
2887               F ((yyvsp[(7) - (9)].regno), 16, 4); DSP ((yyvsp[(5) - (9)].exp), 14, BSIZE); }
2888     break;
2889
2890   case 151:
2891 #line 670 "rx-parse.y"
2892     { id24 (1, 0xe0, 0x0f); FE ((yyvsp[(3) - (9)].exp), 11, 3); F ((yyvsp[(7) - (9)].regno), 16, 4);
2893               DSP ((yyvsp[(5) - (9)].exp), 14, BSIZE); }
2894     break;
2895
2896   case 152:
2897 #line 676 "rx-parse.y"
2898     { id24 (2, 0x00, 0x00); F ((yyvsp[(2) - (4)].regno), 16, 4); F ((yyvsp[(4) - (4)].regno), 20, 4); }
2899     break;
2900
2901   case 153:
2902 #line 678 "rx-parse.y"
2903     { id24 (2, 0x01, 0x00); F ((yyvsp[(2) - (4)].regno), 16, 4); F ((yyvsp[(4) - (4)].regno), 20, 4); }
2904     break;
2905
2906   case 154:
2907 #line 680 "rx-parse.y"
2908     { id24 (2, 0x04, 0x00); F ((yyvsp[(2) - (4)].regno), 16, 4); F ((yyvsp[(4) - (4)].regno), 20, 4); }
2909     break;
2910
2911   case 155:
2912 #line 682 "rx-parse.y"
2913     { id24 (2, 0x05, 0x00); F ((yyvsp[(2) - (4)].regno), 16, 4); F ((yyvsp[(4) - (4)].regno), 20, 4); }
2914     break;
2915
2916   case 156:
2917 #line 688 "rx-parse.y"
2918     { id24 (2, 0x17, 0x00); F ((yyvsp[(2) - (2)].regno), 20, 4); }
2919     break;
2920
2921   case 157:
2922 #line 690 "rx-parse.y"
2923     { id24 (2, 0x17, 0x10); F ((yyvsp[(2) - (2)].regno), 20, 4); }
2924     break;
2925
2926   case 158:
2927 #line 692 "rx-parse.y"
2928     { id24 (2, 0x1f, 0x00); F ((yyvsp[(2) - (2)].regno), 20, 4); }
2929     break;
2930
2931   case 159:
2932 #line 694 "rx-parse.y"
2933     { id24 (2, 0x1f, 0x20); F ((yyvsp[(2) - (2)].regno), 20, 4); }
2934     break;
2935
2936   case 160:
2937 #line 696 "rx-parse.y"
2938     { id24 (2, 0x1f, 0x10); F ((yyvsp[(2) - (2)].regno), 20, 4); }
2939     break;
2940
2941   case 161:
2942 #line 699 "rx-parse.y"
2943     { id24 (2, 0x18, 0x00);
2944             if (rx_uintop ((yyvsp[(3) - (3)].exp), 4) && (yyvsp[(3) - (3)].exp).X_add_number == 1)
2945               ;
2946             else if (rx_uintop ((yyvsp[(3) - (3)].exp), 4) && (yyvsp[(3) - (3)].exp).X_add_number == 2)
2947               F (1, 19, 1);
2948             else
2949               as_bad (_("RACW expects #1 or #2"));}
2950     break;
2951
2952   case 162:
2953 #line 710 "rx-parse.y"
2954     { id24 (2, 0x20, 0); F ((yyvsp[(2) - (8)].regno), 14, 2); F ((yyvsp[(6) - (8)].regno), 16, 4); F ((yyvsp[(3) - (8)].regno), 20, 4); }
2955     break;
2956
2957   case 163:
2958 #line 712 "rx-parse.y"
2959     { id24 (2, 0x24, 0); F ((yyvsp[(2) - (8)].regno), 14, 2); F ((yyvsp[(7) - (8)].regno), 16, 4); F ((yyvsp[(3) - (8)].regno), 20, 4); }
2960     break;
2961
2962   case 164:
2963 #line 717 "rx-parse.y"
2964     { id24 (2, 0x28, 0); F ((yyvsp[(2) - (8)].regno), 14, 2); F ((yyvsp[(4) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); }
2965     break;
2966
2967   case 165:
2968 #line 719 "rx-parse.y"
2969     { id24 (2, 0x2c, 0); F ((yyvsp[(2) - (8)].regno), 14, 2); F ((yyvsp[(5) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); }
2970     break;
2971
2972   case 166:
2973 #line 724 "rx-parse.y"
2974     { id24 (2, 0x38, 0); F ((yyvsp[(2) - (8)].regno), 15, 1); F ((yyvsp[(4) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); }
2975     break;
2976
2977   case 167:
2978 #line 726 "rx-parse.y"
2979     { id24 (2, 0x3c, 0); F ((yyvsp[(2) - (8)].regno), 15, 1); F ((yyvsp[(5) - (8)].regno), 16, 4); F ((yyvsp[(8) - (8)].regno), 20, 4); }
2980     break;
2981
2982   case 168:
2983 #line 730 "rx-parse.y"
2984     { sub_op = 6; }
2985     break;
2986
2987   case 170:
2988 #line 731 "rx-parse.y"
2989     { sub_op = 4; }
2990     break;
2991
2992   case 172:
2993 #line 732 "rx-parse.y"
2994     { sub_op = 5; }
2995     break;
2996
2997   case 174:
2998 #line 733 "rx-parse.y"
2999     { sub_op = 7; }
3000     break;
3001
3002   case 176:
3003 #line 738 "rx-parse.y"
3004     { id24 (2, 0x68, 0x00); F ((yyvsp[(4) - (4)].regno) % 16, 20, 4); F ((yyvsp[(4) - (4)].regno) / 16, 15, 1);
3005             F ((yyvsp[(2) - (4)].regno), 16, 4); }
3006     break;
3007
3008   case 177:
3009 #line 744 "rx-parse.y"
3010     { id24 (2, 0x6a, 0); F ((yyvsp[(2) - (4)].regno), 15, 5); F ((yyvsp[(4) - (4)].regno), 20, 4); }
3011     break;
3012
3013   case 178:
3014 #line 749 "rx-parse.y"
3015     { id24 (2, 0x6e, 0); FE ((yyvsp[(3) - (5)].exp), 15, 5); F ((yyvsp[(5) - (5)].regno), 20, 4); }
3016     break;
3017
3018   case 179:
3019 #line 751 "rx-parse.y"
3020     { id24 (2, 0x6c, 0); FE ((yyvsp[(3) - (5)].exp), 15, 5); F ((yyvsp[(5) - (5)].regno), 20, 4); }
3021     break;
3022
3023   case 180:
3024 #line 756 "rx-parse.y"
3025     { id24 (2, 0x73, 0x00); F ((yyvsp[(5) - (5)].regno), 19, 5); IMM ((yyvsp[(3) - (5)].exp), 12); }
3026     break;
3027
3028   case 181:
3029 #line 761 "rx-parse.y"
3030     { id24 (2, 0xe0, 0x00); F ((yyvsp[(1) - (5)].regno), 16, 4); FE ((yyvsp[(3) - (5)].exp), 11, 5);
3031               F ((yyvsp[(5) - (5)].regno), 20, 4); }
3032     break;
3033
3034   case 182:
3035 #line 767 "rx-parse.y"
3036     { id24 (2, 0xe0, 0xf0); FE ((yyvsp[(3) - (5)].exp), 11, 5); F ((yyvsp[(5) - (5)].regno), 20, 4); }
3037     break;
3038
3039   case 183:
3040 #line 772 "rx-parse.y"
3041     { id24 (3, 0x00, 0); F ((yyvsp[(2) - (9)].regno), 10, 2); F ((yyvsp[(6) - (9)].regno), 12, 4); F ((yyvsp[(8) - (9)].regno), 16, 4); F ((yyvsp[(3) - (9)].regno), 20, 4); }
3042     break;
3043
3044   case 184:
3045 #line 775 "rx-parse.y"
3046     { id24 (3, 0x40, 0); F ((yyvsp[(2) - (9)].regno), 10, 2); F ((yyvsp[(4) - (9)].regno), 12, 4); F ((yyvsp[(6) - (9)].regno), 16, 4); F ((yyvsp[(9) - (9)].regno), 20, 4); }
3047     break;
3048
3049   case 185:
3050 #line 778 "rx-parse.y"
3051     { id24 (3, 0xc0, 0); F ((yyvsp[(2) - (9)].regno), 10, 2); F ((yyvsp[(4) - (9)].regno), 12, 4); F ((yyvsp[(6) - (9)].regno), 16, 4); F ((yyvsp[(9) - (9)].regno), 20, 4); }
3052     break;
3053
3054   case 186:
3055 #line 782 "rx-parse.y"
3056     { sub_op = 0; }
3057     break;
3058
3059   case 188:
3060 #line 783 "rx-parse.y"
3061     { sub_op = 2; }
3062     break;
3063
3064   case 190:
3065 #line 784 "rx-parse.y"
3066     { sub_op = 3; }
3067     break;
3068
3069   case 192:
3070 #line 785 "rx-parse.y"
3071     { sub_op = 4; }
3072     break;
3073
3074   case 194:
3075 #line 786 "rx-parse.y"
3076     { sub_op = 5; }
3077     break;
3078
3079   case 196:
3080 #line 792 "rx-parse.y"
3081     { id24 (2, 0x70, 0x20); F ((yyvsp[(5) - (5)].regno), 20, 4); NBIMM ((yyvsp[(3) - (5)].exp), 12); }
3082     break;
3083
3084   case 197:
3085 #line 802 "rx-parse.y"
3086     { B2 (0x43 + (sub_op<<2), 0); F ((yyvsp[(1) - (3)].regno), 8, 4); F ((yyvsp[(3) - (3)].regno), 12, 4); }
3087     break;
3088
3089   case 198:
3090 #line 804 "rx-parse.y"
3091     { B2 (0x40 + (sub_op<<2), 0); F ((yyvsp[(3) - (7)].regno), 8, 4); F ((yyvsp[(7) - (7)].regno), 12, 4); DSP ((yyvsp[(1) - (7)].exp), 6, BSIZE); }
3092     break;
3093
3094   case 199:
3095 #line 806 "rx-parse.y"
3096     { B3 (MEMEX, sub_op<<2, 0); F ((yyvsp[(5) - (7)].regno), 8, 2); F ((yyvsp[(3) - (7)].regno), 16, 4); F ((yyvsp[(7) - (7)].regno), 20, 4); DSP ((yyvsp[(1) - (7)].exp), 14, sizemap[(yyvsp[(5) - (7)].regno)]); }
3097     break;
3098
3099   case 200:
3100 #line 808 "rx-parse.y"
3101     { id24 (4, sub_op<<4, 0), F ((yyvsp[(5) - (5)].regno), 12, 4), F ((yyvsp[(1) - (5)].regno), 16, 4), F ((yyvsp[(3) - (5)].regno), 20, 4); }
3102     break;
3103
3104   case 201:
3105 #line 815 "rx-parse.y"
3106     { id24 (1, 0x03 + (sub_op<<2), 0x00); F ((yyvsp[(1) - (3)].regno), 16, 4); F ((yyvsp[(3) - (3)].regno), 20, 4); }
3107     break;
3108
3109   case 202:
3110 #line 817 "rx-parse.y"
3111     { id24 (1, 0x00 + (sub_op<<2), 0x00); F ((yyvsp[(3) - (7)].regno), 16, 4); F ((yyvsp[(7) - (7)].regno), 20, 4); DSP ((yyvsp[(1) - (7)].exp), 14, BSIZE); }
3112     break;
3113
3114   case 203:
3115 #line 819 "rx-parse.y"
3116     { B4 (MEMEX, 0x20 + ((yyvsp[(5) - (7)].regno) << 6), 0x00 + sub_op, 0x00);
3117           F ((yyvsp[(3) - (7)].regno), 24, 4); F ((yyvsp[(7) - (7)].regno), 28, 4); DSP ((yyvsp[(1) - (7)].exp), 14, sizemap[(yyvsp[(5) - (7)].regno)]); }
3118     break;
3119
3120   case 204:
3121 #line 825 "rx-parse.y"
3122     { id24 (2, 0x70, sub_op<<4); F ((yyvsp[(4) - (4)].regno), 20, 4); IMM ((yyvsp[(2) - (4)].exp), 12); }
3123     break;
3124
3125   case 208:
3126 #line 836 "rx-parse.y"
3127     { B2 (0x7e, sub_op2 << 4); F ((yyvsp[(1) - (1)].regno), 12, 4); }
3128     break;
3129
3130   case 209:
3131 #line 842 "rx-parse.y"
3132     { id24 (1, 0x03 + (sub_op<<2), 0); F ((yyvsp[(1) - (3)].regno), 16, 4); F ((yyvsp[(3) - (3)].regno), 20, 4); }
3133     break;
3134
3135   case 210:
3136 #line 844 "rx-parse.y"
3137     { id24 (1, 0x00 + (sub_op<<2), 0); F ((yyvsp[(3) - (7)].regno), 16, 4); F ((yyvsp[(7) - (7)].regno), 20, 4); DSP ((yyvsp[(1) - (7)].exp), 14, BSIZE); }
3138     break;
3139
3140   case 211:
3141 #line 846 "rx-parse.y"
3142     { B4 (MEMEX, 0x20, 0x00 + sub_op, 0); F ((yyvsp[(5) - (7)].regno), 8, 2); F ((yyvsp[(3) - (7)].regno), 24, 4); F ((yyvsp[(7) - (7)].regno), 28, 4);
3143             DSP ((yyvsp[(1) - (7)].exp), 14, sizemap[(yyvsp[(5) - (7)].regno)]); }
3144     break;
3145
3146   case 212:
3147 #line 853 "rx-parse.y"
3148     { id24 (2, 0x60 + sub_op, 0); F ((yyvsp[(1) - (3)].regno), 16, 4); F ((yyvsp[(3) - (3)].regno), 20, 4); }
3149     break;
3150
3151   case 213:
3152 #line 857 "rx-parse.y"
3153     { B2 (0x68 + (sub_op<<1), 0); FE ((yyvsp[(2) - (4)].exp), 7, 5); F ((yyvsp[(4) - (4)].regno), 12, 4); }
3154     break;
3155
3156   case 214:
3157 #line 859 "rx-parse.y"
3158     { id24 (2, 0x80 + (sub_op << 5), 0); FE ((yyvsp[(2) - (6)].exp), 11, 5); F ((yyvsp[(4) - (6)].regno), 16, 4); F ((yyvsp[(6) - (6)].regno), 20, 4); }
3159     break;
3160
3161   case 216:
3162 #line 867 "rx-parse.y"
3163     { id24 (2, 0x72, sub_op << 4); F ((yyvsp[(4) - (4)].regno), 20, 4); O4 ((yyvsp[(2) - (4)].exp)); }
3164     break;
3165
3166   case 218:
3167 #line 872 "rx-parse.y"
3168     { id24 (1, 0x83 + (sub_op << 2), 0); F ((yyvsp[(1) - (3)].regno), 16, 4); F ((yyvsp[(3) - (3)].regno), 20, 4); }
3169     break;
3170
3171   case 219:
3172 #line 874 "rx-parse.y"
3173     { id24 (1, 0x80 + (sub_op << 2), 0); F ((yyvsp[(3) - (7)].regno), 16, 4); F ((yyvsp[(7) - (7)].regno), 20, 4); DSP ((yyvsp[(1) - (7)].exp), 14, LSIZE); }
3174     break;
3175
3176   case 220:
3177 #line 879 "rx-parse.y"
3178     { (yyval.exp) = zero_expr (); }
3179     break;
3180
3181   case 221:
3182 #line 880 "rx-parse.y"
3183     { (yyval.exp) = (yyvsp[(1) - (1)].exp); }
3184     break;
3185
3186   case 222:
3187 #line 883 "rx-parse.y"
3188     { need_flag = 1; }
3189     break;
3190
3191   case 223:
3192 #line 883 "rx-parse.y"
3193     { need_flag = 0; (yyval.regno) = (yyvsp[(2) - (2)].regno); }
3194     break;
3195
3196   case 224:
3197 #line 888 "rx-parse.y"
3198     { (yyval.regno) = 0; }
3199     break;
3200
3201   case 225:
3202 #line 889 "rx-parse.y"
3203     { (yyval.regno) = 1; }
3204     break;
3205
3206   case 226:
3207 #line 890 "rx-parse.y"
3208     { (yyval.regno) = 2; }
3209     break;
3210
3211   case 227:
3212 #line 891 "rx-parse.y"
3213     { (yyval.regno) = 2; }
3214     break;
3215
3216   case 228:
3217 #line 892 "rx-parse.y"
3218     { (yyval.regno) = 3; }
3219     break;
3220
3221   case 229:
3222 #line 895 "rx-parse.y"
3223     { (yyval.regno) = LSIZE; }
3224     break;
3225
3226   case 230:
3227 #line 896 "rx-parse.y"
3228     { (yyval.regno) = BSIZE; }
3229     break;
3230
3231   case 231:
3232 #line 897 "rx-parse.y"
3233     { (yyval.regno) = WSIZE; }
3234     break;
3235
3236   case 232:
3237 #line 898 "rx-parse.y"
3238     { (yyval.regno) = LSIZE; }
3239     break;
3240
3241   case 233:
3242 #line 901 "rx-parse.y"
3243     { (yyval.regno) = 1; }
3244     break;
3245
3246   case 234:
3247 #line 902 "rx-parse.y"
3248     { (yyval.regno) = 0; }
3249     break;
3250
3251   case 235:
3252 #line 903 "rx-parse.y"
3253     { (yyval.regno) = 1; }
3254     break;
3255
3256   case 236:
3257 #line 906 "rx-parse.y"
3258     {}
3259     break;
3260
3261   case 237:
3262 #line 907 "rx-parse.y"
3263     {}
3264     break;
3265
3266
3267 /* Line 1267 of yacc.c.  */
3268 #line 3269 "rx-parse.c"
3269       default: break;
3270     }
3271   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3272
3273   YYPOPSTACK (yylen);
3274   yylen = 0;
3275   YY_STACK_PRINT (yyss, yyssp);
3276
3277   *++yyvsp = yyval;
3278
3279
3280   /* Now `shift' the result of the reduction.  Determine what state
3281      that goes to, based on the state we popped back to and the rule
3282      number reduced by.  */
3283
3284   yyn = yyr1[yyn];
3285
3286   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3287   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3288     yystate = yytable[yystate];
3289   else
3290     yystate = yydefgoto[yyn - YYNTOKENS];
3291
3292   goto yynewstate;
3293
3294
3295 /*------------------------------------.
3296 | yyerrlab -- here on detecting error |
3297 `------------------------------------*/
3298 yyerrlab:
3299   /* If not already recovering from an error, report this error.  */
3300   if (!yyerrstatus)
3301     {
3302       ++yynerrs;
3303 #if ! YYERROR_VERBOSE
3304       yyerror (YY_("syntax error"));
3305 #else
3306       {
3307         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
3308         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
3309           {
3310             YYSIZE_T yyalloc = 2 * yysize;
3311             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
3312               yyalloc = YYSTACK_ALLOC_MAXIMUM;
3313             if (yymsg != yymsgbuf)
3314               YYSTACK_FREE (yymsg);
3315             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
3316             if (yymsg)
3317               yymsg_alloc = yyalloc;
3318             else
3319               {
3320                 yymsg = yymsgbuf;
3321                 yymsg_alloc = sizeof yymsgbuf;
3322               }
3323           }
3324
3325         if (0 < yysize && yysize <= yymsg_alloc)
3326           {
3327             (void) yysyntax_error (yymsg, yystate, yychar);
3328             yyerror (yymsg);
3329           }
3330         else
3331           {
3332             yyerror (YY_("syntax error"));
3333             if (yysize != 0)
3334               goto yyexhaustedlab;
3335           }
3336       }
3337 #endif
3338     }
3339
3340
3341
3342   if (yyerrstatus == 3)
3343     {
3344       /* If just tried and failed to reuse look-ahead token after an
3345          error, discard it.  */
3346
3347       if (yychar <= YYEOF)
3348         {
3349           /* Return failure if at end of input.  */
3350           if (yychar == YYEOF)
3351             YYABORT;
3352         }
3353       else
3354         {
3355           yydestruct ("Error: discarding",
3356                       yytoken, &yylval);
3357           yychar = YYEMPTY;
3358         }
3359     }
3360
3361   /* Else will try to reuse look-ahead token after shifting the error
3362      token.  */
3363   goto yyerrlab1;
3364
3365
3366 /*---------------------------------------------------.
3367 | yyerrorlab -- error raised explicitly by YYERROR.  |
3368 `---------------------------------------------------*/
3369 yyerrorlab:
3370
3371   /* Pacify compilers like GCC when the user code never invokes
3372      YYERROR and the label yyerrorlab therefore never appears in user
3373      code.  */
3374   if (/*CONSTCOND*/ 0)
3375      goto yyerrorlab;
3376
3377   /* Do not reclaim the symbols of the rule which action triggered
3378      this YYERROR.  */
3379   YYPOPSTACK (yylen);
3380   yylen = 0;
3381   YY_STACK_PRINT (yyss, yyssp);
3382   yystate = *yyssp;
3383   goto yyerrlab1;
3384
3385
3386 /*-------------------------------------------------------------.
3387 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
3388 `-------------------------------------------------------------*/
3389 yyerrlab1:
3390   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
3391
3392   for (;;)
3393     {
3394       yyn = yypact[yystate];
3395       if (yyn != YYPACT_NINF)
3396         {
3397           yyn += YYTERROR;
3398           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3399             {
3400               yyn = yytable[yyn];
3401               if (0 < yyn)
3402                 break;
3403             }
3404         }
3405
3406       /* Pop the current state because it cannot handle the error token.  */
3407       if (yyssp == yyss)
3408         YYABORT;
3409
3410
3411       yydestruct ("Error: popping",
3412                   yystos[yystate], yyvsp);
3413       YYPOPSTACK (1);
3414       yystate = *yyssp;
3415       YY_STACK_PRINT (yyss, yyssp);
3416     }
3417
3418   if (yyn == YYFINAL)
3419     YYACCEPT;
3420
3421   *++yyvsp = yylval;
3422
3423
3424   /* Shift the error token.  */
3425   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3426
3427   yystate = yyn;
3428   goto yynewstate;
3429
3430
3431 /*-------------------------------------.
3432 | yyacceptlab -- YYACCEPT comes here.  |
3433 `-------------------------------------*/
3434 yyacceptlab:
3435   yyresult = 0;
3436   goto yyreturn;
3437
3438 /*-----------------------------------.
3439 | yyabortlab -- YYABORT comes here.  |
3440 `-----------------------------------*/
3441 yyabortlab:
3442   yyresult = 1;
3443   goto yyreturn;
3444
3445 #ifndef yyoverflow
3446 /*-------------------------------------------------.
3447 | yyexhaustedlab -- memory exhaustion comes here.  |
3448 `-------------------------------------------------*/
3449 yyexhaustedlab:
3450   yyerror (YY_("memory exhausted"));
3451   yyresult = 2;
3452   /* Fall through.  */
3453 #endif
3454
3455 yyreturn:
3456   if (yychar != YYEOF && yychar != YYEMPTY)
3457      yydestruct ("Cleanup: discarding lookahead",
3458                  yytoken, &yylval);
3459   /* Do not reclaim the symbols of the rule which action triggered
3460      this YYABORT or YYACCEPT.  */
3461   YYPOPSTACK (yylen);
3462   YY_STACK_PRINT (yyss, yyssp);
3463   while (yyssp != yyss)
3464     {
3465       yydestruct ("Cleanup: popping",
3466                   yystos[*yyssp], yyvsp);
3467       YYPOPSTACK (1);
3468     }
3469 #ifndef yyoverflow
3470   if (yyss != yyssa)
3471     YYSTACK_FREE (yyss);
3472 #endif
3473 #if YYERROR_VERBOSE
3474   if (yymsg != yymsgbuf)
3475     YYSTACK_FREE (yymsg);
3476 #endif
3477   /* Make sure YYID is used.  */
3478   return YYID (yyresult);
3479 }
3480
3481
3482 #line 910 "rx-parse.y"
3483
3484 /* ====================================================================== */
3485
3486 static struct
3487 {
3488   const char * string;
3489   int          token;
3490   int          val;
3491 }
3492 token_table[] =
3493 {
3494   { "r0", REG, 0 },
3495   { "r1", REG, 1 },
3496   { "r2", REG, 2 },
3497   { "r3", REG, 3 },
3498   { "r4", REG, 4 },
3499   { "r5", REG, 5 },
3500   { "r6", REG, 6 },
3501   { "r7", REG, 7 },
3502   { "r8", REG, 8 },
3503   { "r9", REG, 9 },
3504   { "r10", REG, 10 },
3505   { "r11", REG, 11 },
3506   { "r12", REG, 12 },
3507   { "r13", REG, 13 },
3508   { "r14", REG, 14 },
3509   { "r15", REG, 15 },
3510
3511   { "psw", CREG, 0 },
3512   { "pc", CREG, 1 },
3513   { "usp", CREG, 2 },
3514   { "fpsw", CREG, 3 },
3515   /* reserved */
3516   /* reserved */
3517   /* reserved */
3518   { "wr", CREG, 7 },
3519
3520   { "bpsw", CREG, 8 },
3521   { "bpc", CREG, 9 },
3522   { "isp", CREG, 10 },
3523   { "fintv", CREG, 11 },
3524   { "intb", CREG, 12 },
3525
3526   { "pbp", CREG, 16 },
3527   { "pben", CREG, 17 },
3528
3529   { "bbpsw", CREG, 24 },
3530   { "bbpc", CREG, 25 },
3531
3532   { ".s", DOT_S, 0 },
3533   { ".b", DOT_B, 0 },
3534   { ".w", DOT_W, 0 },
3535   { ".l", DOT_L, 0 },
3536   { ".a", DOT_A , 0},
3537   { ".ub", DOT_UB, 0 },
3538   { ".uw", DOT_UW , 0},
3539
3540   { "c", FLAG, 0 },
3541   { "z", FLAG, 1 },
3542   { "s", FLAG, 2 },
3543   { "o", FLAG, 3 },
3544   { "i", FLAG, 8 },
3545   { "u", FLAG, 9 },
3546
3547 #define OPC(x) { #x, x, IS_OPCODE }
3548   OPC(ABS),
3549   OPC(ADC),
3550   OPC(ADD),
3551   { "and", AND_, IS_OPCODE },
3552   OPC(BCLR),
3553   OPC(BCND),
3554   OPC(BMCND),
3555   OPC(BNOT),
3556   OPC(BRA),
3557   OPC(BRK),
3558   OPC(BSET),
3559   OPC(BSR),
3560   OPC(BTST),
3561   OPC(CLRPSW),
3562   OPC(CMP),
3563   OPC(DBT),
3564   OPC(DIV),
3565   OPC(DIVU),
3566   OPC(EDIV),
3567   OPC(EDIVU),
3568   OPC(EMUL),
3569   OPC(EMULU),
3570   OPC(FADD),
3571   OPC(FCMP),
3572   OPC(FDIV),
3573   OPC(FMUL),
3574   OPC(FREIT),
3575   OPC(FSUB),
3576   OPC(FTOI),
3577   OPC(INT),
3578   OPC(ITOF),
3579   OPC(JMP),
3580   OPC(JSR),
3581   OPC(MVFACHI),
3582   OPC(MVFACMI),
3583   OPC(MVFACLO),
3584   OPC(MVFC),
3585   OPC(MVTACHI),
3586   OPC(MVTACLO),
3587   OPC(MVTC),
3588   OPC(MVTIPL),
3589   OPC(MACHI),
3590   OPC(MACLO),
3591   OPC(MAX),
3592   OPC(MIN),
3593   OPC(MOV),
3594   OPC(MOVU),
3595   OPC(MUL),
3596   OPC(MULHI),
3597   OPC(MULLO),
3598   OPC(MULU),
3599   OPC(NEG),
3600   OPC(NOP),
3601   OPC(NOT),
3602   OPC(OR),
3603   OPC(POP),
3604   OPC(POPC),
3605   OPC(POPM),
3606   OPC(PUSH),
3607   OPC(PUSHA),
3608   OPC(PUSHC),
3609   OPC(PUSHM),
3610   OPC(RACW),
3611   OPC(REIT),
3612   OPC(REVL),
3613   OPC(REVW),
3614   OPC(RMPA),
3615   OPC(ROLC),
3616   OPC(RORC),
3617   OPC(ROTL),
3618   OPC(ROTR),
3619   OPC(ROUND),
3620   OPC(RTE),
3621   OPC(RTFI),
3622   OPC(RTS),
3623   OPC(RTSD),
3624   OPC(SAT),
3625   OPC(SATR),
3626   OPC(SBB),
3627   OPC(SCCND),
3628   OPC(SCMPU),
3629   OPC(SETPSW),
3630   OPC(SHAR),
3631   OPC(SHLL),
3632   OPC(SHLR),
3633   OPC(SMOVB),
3634   OPC(SMOVF),
3635   OPC(SMOVU),
3636   OPC(SSTR),
3637   OPC(STNZ),
3638   OPC(STOP),
3639   OPC(STZ),
3640   OPC(SUB),
3641   OPC(SUNTIL),
3642   OPC(SWHILE),
3643   OPC(TST),
3644   OPC(WAIT),
3645   OPC(XCHG),
3646   OPC(XOR),
3647 };
3648
3649 #define NUM_TOKENS (sizeof (token_table) / sizeof (token_table[0]))
3650
3651 static struct
3652 {
3653   char * string;
3654   int    token;
3655 }
3656 condition_opcode_table[] =
3657 {
3658   { "b", BCND },
3659   { "bm", BMCND },
3660   { "sc", SCCND },
3661 };
3662
3663 #define NUM_CONDITION_OPCODES (sizeof (condition_opcode_table) / sizeof (condition_opcode_table[0]))
3664
3665 static struct
3666 {
3667   char * string;
3668   int    val;
3669 }
3670 condition_table[] =
3671 {
3672   { "z", 0 },
3673   { "eq", 0 },
3674   { "geu",  2 },
3675   { "c",  2 },
3676   { "gtu", 4 },
3677   { "pz", 6 },
3678   { "ge", 8 },
3679   { "gt", 10 },
3680   { "o",  12},
3681   /* always = 14 */
3682   { "nz", 1 },
3683   { "ne", 1 },
3684   { "ltu", 3 },
3685   { "nc", 3 },
3686   { "leu", 5 },
3687   { "n", 7 },
3688   { "lt", 9 },
3689   { "le", 11 },
3690   { "no", 13 }
3691   /* never = 15 */
3692 };
3693
3694 #define NUM_CONDITIONS (sizeof (condition_table) / sizeof (condition_table[0]))
3695
3696 void
3697 rx_lex_init (char * beginning, char * ending)
3698 {
3699   rx_init_start = beginning;
3700   rx_lex_start = beginning;
3701   rx_lex_end = ending;
3702   rx_in_brackets = 0;
3703   rx_last_token = 0;
3704
3705   setbuf (stdout, 0);
3706 }
3707
3708 static int
3709 check_condition (char * base)
3710 {
3711   char * cp;
3712   unsigned int i;
3713
3714   if ((unsigned) (rx_lex_end - rx_lex_start) < strlen (base) + 1)
3715     return 0;
3716   if (memcmp (rx_lex_start, base, strlen (base)))
3717     return 0;
3718   cp = rx_lex_start + strlen (base);
3719   for (i = 0; i < NUM_CONDITIONS; i ++)
3720     {
3721       if (strcasecmp (cp, condition_table[i].string) == 0)
3722         {
3723           rx_lval.regno = condition_table[i].val;
3724           return 1;
3725         }
3726     }
3727   return 0;
3728 }
3729
3730 static int
3731 rx_lex (void)
3732 {
3733   unsigned int ci;
3734   char * save_input_pointer;
3735
3736   while (ISSPACE (*rx_lex_start)
3737          && rx_lex_start != rx_lex_end)
3738     rx_lex_start ++;
3739
3740   rx_last_exp_start = rx_lex_start;
3741
3742   if (rx_lex_start == rx_lex_end)
3743     return 0;
3744
3745   if (ISALPHA (*rx_lex_start)
3746       || (*rx_lex_start == '.' && ISALPHA (rx_lex_start[1])))
3747     {
3748       unsigned int i;
3749       char * e;
3750       char save;
3751
3752       for (e = rx_lex_start + 1;
3753            e < rx_lex_end && ISALNUM (*e);
3754            e ++)
3755         ;
3756       save = *e;
3757       *e = 0;
3758
3759       if (rx_last_token == 0)
3760         for (ci = 0; ci < NUM_CONDITION_OPCODES; ci ++)
3761           if (check_condition (condition_opcode_table[ci].string))
3762             {
3763               *e = save;
3764               rx_lex_start = e;
3765               rx_last_token = condition_opcode_table[ci].token;
3766               return condition_opcode_table[ci].token;
3767             }
3768
3769       for (i = 0; i < NUM_TOKENS; i++)
3770         if (strcasecmp (rx_lex_start, token_table[i].string) == 0
3771             && !(token_table[i].val == IS_OPCODE && rx_last_token != 0)
3772             && !(token_table[i].token == FLAG && !need_flag))
3773           {
3774             rx_lval.regno = token_table[i].val;
3775             *e = save;
3776             rx_lex_start = e;
3777             rx_last_token = token_table[i].token;
3778             return token_table[i].token;
3779           }
3780       *e = save;
3781     }
3782
3783   if (rx_last_token == 0)
3784     {
3785       rx_last_token = UNKNOWN_OPCODE;
3786       return UNKNOWN_OPCODE;
3787     }
3788
3789   if (rx_last_token == UNKNOWN_OPCODE)
3790     return 0;
3791
3792   if (*rx_lex_start == '[')
3793     rx_in_brackets = 1;
3794   if (*rx_lex_start == ']')
3795     rx_in_brackets = 0;
3796
3797   if (rx_in_brackets
3798       || rx_last_token == REG
3799       || strchr ("[],#", *rx_lex_start))
3800     {
3801       rx_last_token = *rx_lex_start;
3802       return *rx_lex_start ++;
3803     }
3804
3805   save_input_pointer = input_line_pointer;
3806   input_line_pointer = rx_lex_start;
3807   rx_lval.exp.X_md = 0;
3808   expression (&rx_lval.exp);
3809
3810   /* We parse but ignore any :<size> modifier on expressions.  */
3811   if (*input_line_pointer == ':')
3812     {
3813       char *cp;
3814
3815       for (cp  = input_line_pointer + 1; *cp && cp < rx_lex_end; cp++)
3816         if (!ISDIGIT (*cp))
3817           break;
3818       if (cp > input_line_pointer+1)
3819         input_line_pointer = cp;
3820     }
3821
3822   rx_lex_start = input_line_pointer;
3823   input_line_pointer = save_input_pointer;
3824   rx_last_token = EXPR;
3825   return EXPR;
3826 }
3827
3828 int
3829 rx_error (char * str)
3830 {
3831   int len;
3832
3833   len = rx_last_exp_start - rx_init_start;
3834
3835   as_bad ("%s", rx_init_start);
3836   as_bad ("%*s^ %s", len, "", str);
3837   return 0;
3838 }
3839
3840 static int
3841 rx_intop (expressionS exp, int nbits)
3842 {
3843   long v;
3844
3845   if (exp.X_op == O_big && nbits == 32)
3846       return 1;
3847   if (exp.X_op != O_constant)
3848     return 0;
3849   v = exp.X_add_number;
3850
3851   switch (nbits)
3852     {
3853     case 4:
3854       return -0x8 <= v && v <= 0x7;
3855     case 5:
3856       return -0x10 <= v && v <= 0x17;
3857     case 8:
3858       return -0x80 <= v && v <= 0x7f;
3859     case 16:
3860       return -0x8000 <= v && v <= 0x7fff;
3861     case 24:
3862       return -0x800000 <= v && v <= 0x7fffff;
3863     case 32:
3864       return 1;
3865     default:
3866       printf ("rx_intop passed %d\n", nbits);
3867       abort ();
3868     }
3869   return 1;
3870 }
3871
3872 static int
3873 rx_uintop (expressionS exp, int nbits)
3874 {
3875   unsigned long v;
3876
3877   if (exp.X_op != O_constant)
3878     return 0;
3879   v = exp.X_add_number;
3880
3881   switch (nbits)
3882     {
3883     case 4:
3884       return v <= 0xf;
3885     case 8:
3886       return v <= 0xff;
3887     case 16:
3888       return v <= 0xffff;
3889     case 24:
3890       return v <= 0xffffff;
3891     default:
3892       printf ("rx_uintop passed %d\n", nbits);
3893       abort ();
3894     }
3895   return 1;
3896 }
3897
3898 static int
3899 rx_disp3op (expressionS exp)
3900 {
3901   unsigned long v;
3902
3903   if (exp.X_op != O_constant)
3904     return 0;
3905   v = exp.X_add_number;
3906   if (v < 3 || v > 10)
3907     return 0;
3908   return 1;
3909 }
3910
3911 static int
3912 rx_disp5op (expressionS * exp, int msize)
3913 {
3914   long v;
3915
3916   if (exp->X_op != O_constant)
3917     return 0;
3918   v = exp->X_add_number;
3919
3920   switch (msize)
3921     {
3922     case BSIZE:
3923       if (0 < v && v <= 31)
3924         return 1;
3925       break;
3926     case WSIZE:
3927       if (v & 1)
3928         return 0;
3929       if (0 < v && v <= 63)
3930         {
3931           exp->X_add_number >>= 1;
3932           return 1;
3933         }
3934       break;
3935     case LSIZE:
3936       if (v & 3)
3937         return 0;
3938       if (0 < v && v <= 127)
3939         {
3940           exp->X_add_number >>= 2;
3941           return 1;
3942         }
3943       break;
3944     }
3945   return 0;
3946 }
3947
3948 /* Just like the above, but allows a zero displacement.  */
3949
3950 static int
3951 rx_disp5op0 (expressionS * exp, int msize)
3952 {
3953   if (exp->X_op != O_constant)
3954     return 0;
3955   if (exp->X_add_number == 0)
3956     return 1;
3957   return rx_disp5op (exp, msize);
3958 }
3959
3960 static int
3961 exp_val (expressionS exp)
3962 {
3963   if (exp.X_op != O_constant)
3964   {
3965     rx_error (_("constant expected"));
3966     return 0;
3967   }
3968   return exp.X_add_number;
3969 }
3970
3971 static expressionS
3972 zero_expr (void)
3973 {
3974   /* Static, so program load sets it to all zeros, which is what we want.  */
3975   static expressionS zero;
3976   zero.X_op = O_constant;
3977   return zero;
3978 }
3979
3980 static int
3981 immediate (expressionS exp, int type, int pos)
3982 {
3983   /* We will emit constants ourself here, so negate them.  */
3984   if (type == RXREL_NEGATIVE && exp.X_op == O_constant)
3985     exp.X_add_number = - exp.X_add_number;
3986   if (type == RXREL_NEGATIVE_BORROW)
3987     {
3988       if (exp.X_op == O_constant)
3989         exp.X_add_number = - exp.X_add_number - 1;
3990       else
3991         rx_error (_("sbb cannot use symbolic immediates"));
3992     }
3993
3994   if (rx_intop (exp, 8))
3995     {
3996       rx_op (exp, 1, type);
3997       return 1;
3998     }
3999   else if (rx_intop (exp, 16))
4000     {
4001       rx_op (exp, 2, type);
4002       return 2;
4003     }
4004   else if (rx_intop (exp, 24))
4005     {
4006       rx_op (exp, 3, type);
4007       return 3;
4008     }
4009   else if (rx_intop (exp, 32))
4010     {
4011       rx_op (exp, 4, type);
4012       return 0;
4013     }
4014   else if (type == RXREL_SIGNED)
4015     {
4016       /* This is a symbolic immediate, we will relax it later.  */
4017       rx_relax (RX_RELAX_IMM, pos);
4018       rx_op (exp, linkrelax ? 4 : 1, type);
4019       return 1;
4020     }
4021   else
4022     {
4023       /* Let the linker deal with it.  */
4024       rx_op (exp, 4, type);
4025       return 0;
4026     }
4027 }
4028
4029 static int
4030 displacement (expressionS exp, int msize)
4031 {
4032   int val;
4033   int vshift = 0;
4034
4035   if (exp.X_op == O_symbol
4036       && exp.X_md)
4037     {
4038       switch (exp.X_md)
4039         {
4040         case BFD_RELOC_GPREL16:
4041           switch (msize)
4042             {
4043             case BSIZE:
4044               exp.X_md = BFD_RELOC_RX_GPRELB;
4045               break;
4046             case WSIZE:
4047               exp.X_md = BFD_RELOC_RX_GPRELW;
4048               break;
4049             case LSIZE:
4050               exp.X_md = BFD_RELOC_RX_GPRELL;
4051               break;
4052             }
4053           O2 (exp);
4054           return 2;
4055         }
4056     }
4057
4058   if (exp.X_op != O_constant)
4059     {
4060       rx_error (_("displacements must be constants"));
4061       return -1;
4062     }
4063   val = exp.X_add_number;
4064
4065   if (val == 0)
4066     return 0;
4067
4068   switch (msize)
4069     {
4070     case BSIZE:
4071       break;
4072     case WSIZE:
4073       if (val & 1)
4074         rx_error (_("word displacement not word-aligned"));
4075       vshift = 1;
4076       break;
4077     case LSIZE:
4078       if (val & 3)
4079         rx_error (_("long displacement not long-aligned"));
4080       vshift = 2;
4081       break;
4082     default:
4083       as_bad (_("displacement with unknown size (internal bug?)\n"));
4084       break;
4085     }
4086
4087   val >>= vshift;
4088   exp.X_add_number = val;
4089
4090   if (0 <= val && val <= 255 )
4091     {
4092       O1 (exp);
4093       return 1;
4094     }
4095
4096   if (0 <= val && val <= 65535)
4097     {
4098       O2 (exp);
4099       return 2;
4100     }
4101   if (val < 0)
4102     rx_error (_("negative displacements not allowed"));
4103   else
4104     rx_error (_("displacement too large"));
4105   return -1;
4106 }
4107
4108 static void
4109 rtsd_immediate (expressionS exp)
4110 {
4111   int val;
4112
4113   if (exp.X_op != O_constant)
4114     {
4115       rx_error (_("rtsd size must be constant"));
4116       return;
4117     }
4118   val = exp.X_add_number;
4119   if (val & 3)
4120     rx_error (_("rtsd size must be multiple of 4"));
4121
4122   if (val < 0 || val > 1020)
4123     rx_error (_("rtsd size must be 0..1020"));
4124
4125   val >>= 2;
4126   exp.X_add_number = val;
4127   O1 (exp);
4128 }
4129