xref: /netbsd-src/external/gpl3/binutils/dist/gas/itbl-parse.c (revision 212397c69a103ae7e5eafa8731ddfae671d2dee7)
1 /* A Bison parser, made by GNU Bison 3.0.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
6 
7    This program is free software: you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation, either version 3 of the License, or
10    (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19 
20 /* As a special exception, you may create a larger work that contains
21    part or all of the Bison parser skeleton and distribute that work
22    under terms of your choice, so long as that work isn't itself a
23    parser generator using the skeleton or a modified version thereof
24    as a parser skeleton.  Alternatively, if you modify or redistribute
25    the parser skeleton itself, you may (at your option) remove this
26    special exception, which will cause the skeleton and the resulting
27    Bison output files to be licensed under the GNU General Public
28    License without this special exception.
29 
30    This special exception was added by the Free Software Foundation in
31    version 2.2 of Bison.  */
32 
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34    simplifying the original so-called "semantic" parser.  */
35 
36 /* All symbols defined below should begin with yy or YY, to avoid
37    infringing on user name space.  This should be done even for local
38    variables, as they might otherwise be expanded by user macros.
39    There are some unavoidable exceptions within include files to
40    define necessary library symbols; they are noted "INFRINGES ON
41    USER NAME SPACE" below.  */
42 
43 /* Identify Bison output.  */
44 #define YYBISON 1
45 
46 /* Bison version.  */
47 #define YYBISON_VERSION "3.0"
48 
49 /* Skeleton name.  */
50 #define YYSKELETON_NAME "yacc.c"
51 
52 /* Pure parsers.  */
53 #define YYPURE 0
54 
55 /* Push parsers.  */
56 #define YYPUSH 0
57 
58 /* Pull parsers.  */
59 #define YYPULL 1
60 
61 
62 
63 
64 /* Copy the first part of user declarations.  */
65 #line 21 "./itbl-parse.y" /* yacc.c:339  */
66 
67 
68 /*
69 
70 Yacc grammar for instruction table entries.
71 
72 =======================================================================
73 Original Instruction table specification document:
74 
75 	    MIPS Coprocessor Table Specification
76 	    ====================================
77 
78 This document describes the format of the MIPS coprocessor table.  The
79 table specifies a list of valid functions, data registers and control
80 registers that can be used in coprocessor instructions.  This list,
81 together with the coprocessor instruction classes listed below,
82 specifies the complete list of coprocessor instructions that will
83 be recognized and assembled by the GNU assembler.  In effect,
84 this makes the GNU assembler table-driven, where the table is
85 specified by the programmer.
86 
87 The table is an ordinary text file that the GNU assembler reads when
88 it starts.  Using the information in the table, the assembler
89 generates an internal list of valid coprocessor registers and
90 functions.  The assembler uses this internal list in addition to the
91 standard MIPS registers and instructions which are built-in to the
92 assembler during code generation.
93 
94 To specify the coprocessor table when invoking the GNU assembler, use
95 the command line option "--itbl file", where file is the
96 complete name of the table, including path and extension.
97 
98 Examples:
99 
100 	    gas -t cop.tbl test.s -o test.o
101 	    gas -t /usr/local/lib/cop.tbl test.s -o test.o
102 	    gas --itbl d:\gnu\data\cop.tbl test.s -o test.o
103 
104 Only one table may be supplied during a single invocation of
105 the assembler.
106 
107 
108 Instruction classes
109 ===================
110 
111 Below is a list of the valid coprocessor instruction classes for
112 any given coprocessor "z".  These instructions are already recognized
113 by the assembler, and are listed here only for reference.
114 
115 Class   format	    	    	      instructions
116 -------------------------------------------------
117 Class1:
118 	op base rt offset
119 	    	    	    	    	    	    	    LWCz rt,offset (base)
120 	    	    	    	    	    	    	    SWCz rt,offset (base)
121 Class2:
122 	COPz sub rt rd 0
123 	    	    	    	    	    	    	    MTCz rt,rd
124 	    	    	    	    	    	    	    MFCz rt,rd
125 	    	    	    	    	    	    	    CTCz rt,rd
126 	    	    	    	    	    	    	    CFCz rt,rd
127 Class3:
128 	COPz CO cofun
129 	    	    	    	    	    	    	    COPz cofun
130 Class4:
131 	COPz BC br offset
132 	    	    	    	    	    	    	    BCzT offset
133 	    	    	    	    	    	    	    BCzF offset
134 Class5:
135 	COPz sub rt rd 0
136 	    	    	    	    	    	    	    DMFCz rt,rd
137 	    	    	    	    	    	    	    DMTCz rt,rd
138 Class6:
139 	op base rt offset
140 	    	    	    	    	    	    	    LDCz rt,offset (base)
141 	    	    	    	    	    	    	    SDCz rt,offset (base)
142 Class7:
143 	COPz BC br offset
144 	    	    	    	    	    	    	    BCzTL offset
145 	    	    	    	    	    	    	    BCzFL offset
146 
147 The coprocessor table defines coprocessor-specific registers that can
148 be used with all of the above classes of instructions, where
149 appropriate.  It also defines additional coprocessor-specific
150 functions for Class3 (COPz cofun) instructions, Thus, the table allows
151 the programmer to use convenient mnemonics and operands for these
152 functions, instead of the COPz mmenmonic and cofun operand.
153 
154 The names of the MIPS general registers and their aliases are defined
155 by the assembler and will be recognized as valid register names by the
156 assembler when used (where allowed) in coprocessor instructions.
157 However, the names and values of all coprocessor data and control
158 register mnemonics must be specified in the coprocessor table.
159 
160 
161 Table Grammar
162 =============
163 
164 Here is the grammar for the coprocessor table:
165 
166 	    table -> entry*
167 
168 	    entry -> [z entrydef] [comment] '\n'
169 
170 	    entrydef -> type name val
171 	    entrydef -> 'insn' name val funcdef ; type of entry (instruction)
172 
173 	    z -> 'p'['0'..'3']	    	     ; processor number
174 	    type -> ['dreg' | 'creg' | 'greg' ]	     ; type of entry (register)
175 	; 'dreg', 'creg' or 'greg' specifies a data, control, or general
176 	;	    register mnemonic, respectively
177 	    name -> [ltr|dec]*	    	     ; mnemonic of register/function
178 	    val -> [dec|hex]	    	     ; register/function number (integer constant)
179 
180 	    funcdef -> frange flags fields
181 	    	    	    	; bitfield range for opcode
182 	    	    	    	; list of fields' formats
183 	    fields -> field*
184 	    field -> [','] ftype frange flags
185 	    flags -> ['*' flagexpr]
186 	    flagexpr -> '[' flagexpr ']'
187 	    flagexpr -> val '|' flagexpr
188 	    ftype -> [ type | 'immed' | 'addr' ]
189 	; 'immed' specifies an immediate value; see grammar for "val" above
190 	    	; 'addr' specifies a C identifier; name of symbol to be resolved at
191 	;	    link time
192 	    frange -> ':' val '-' val	; starting to ending bit positions, where
193 	    	    	    	; where 0 is least significant bit
194 	    frange -> (null)	    	; default range of 31-0 will be assumed
195 
196 	    comment -> [';'|'#'] [char]*
197 	    char -> any printable character
198 	    ltr -> ['a'..'z'|'A'..'Z']
199 	    dec -> ['0'..'9']*	    	    	    	    	     ; value in decimal
200 	    hex -> '0x'['0'..'9' | 'a'..'f' | 'A'..'F']*	; value in hexadecimal
201 
202 
203 Examples
204 ========
205 
206 Example 1:
207 
208 The table:
209 
210 	    p1 dreg d1 1	     ; data register "d1" for COP1 has value 1
211 	    p1 creg c3 3	     ; ctrl register "c3" for COP1 has value 3
212 	    p3 func fill 0x1f:24-20	      ; function "fill" for COP3 has value 31 and
213 	    	    	; no fields
214 
215 will allow the assembler to accept the following coprocessor instructions:
216 
217 	    LWC1 d1,0x100 ($2)
218 	    fill
219 
220 Here, the general purpose register "$2", and instruction "LWC1", are standard
221 mnemonics built-in to the MIPS assembler.
222 
223 
224 Example 2:
225 
226 The table:
227 
228 	    p3 dreg d3 3	     ; data register "d3" for COP3 has value 3
229 	    p3 creg c2 22	     ; control register "c2" for COP3 has value 22
230 	    p3 func fee 0x1f:24-20 dreg:17-13 creg:12-8 immed:7-0
231 	    	; function "fee" for COP3 has value 31, and 3 fields
232 	    	; consisting of a data register, a control register,
233 	    	; and an immediate value.
234 
235 will allow the assembler to accept the following coprocessor instruction:
236 
237 	    fee d3,c2,0x1
238 
239 and will emit the object code:
240 
241 	    31-26  25 24-20 19-18  17-13 12-8  7-0
242 	    COPz   CO fun	    	      dreg  creg  immed
243 	    010011 1  11111 00	     00011 10110 00000001
244 
245 	    0x4ff07601
246 
247 
248 Example 3:
249 
250 The table:
251 
252 	    p3 dreg d3 3	     ; data register "d3" for COP3 has value 3
253 	    p3 creg c2 22	     ; control register "c2" for COP3 has value 22
254 	    p3 func fuu 0x01f00001 dreg:17-13 creg:12-8
255 
256 will allow the assembler to accept the following coprocessor
257 instruction:
258 
259 	    fuu d3,c2
260 
261 and will emit the object code:
262 
263 	    31-26  25 24-20 19-18  17-13 12-8  7-0
264 	    COPz   CO fun	    	      dreg  creg
265 	    010011 1  11111 00	     00011 10110 00000001
266 
267 	    0x4ff07601
268 
269 In this way, the programmer can force arbitrary bits of an instruction
270 to have predefined values.
271 
272 =======================================================================
273 Additional notes:
274 
275 Encoding of ranges:
276 To handle more than one bit position range within an instruction,
277 use 0s to mask out the ranges which don't apply.
278 May decide to modify the syntax to allow commas separate multiple
279 ranges within an instruction (range','range).
280 
281 Changes in grammar:
282 	The number of parms argument to the function entry
283 was deleted from the original format such that we now count the fields.
284 
285 ----
286 FIXME! should really change lexical analyzer
287 to recognize 'dreg' etc. in context sensitive way.
288 Currently function names or mnemonics may be incorrectly parsed as keywords
289 
290 FIXME! hex is ambiguous with any digit
291 
292 */
293 
294 #include "as.h"
295 #include "itbl-lex.h"
296 #include "itbl-ops.h"
297 
298 /* #define DEBUG */
299 
300 #ifdef DEBUG
301 #ifndef DBG_LVL
302 #define DBG_LVL 1
303 #endif
304 #else
305 #define DBG_LVL 0
306 #endif
307 
308 #if DBG_LVL >= 1
309 #define DBG(x) printf x
310 #else
311 #define DBG(x)
312 #endif
313 
314 #if DBG_LVL >= 2
315 #define DBGL2(x) printf x
316 #else
317 #define DBGL2(x)
318 #endif
319 
320 static int sbit, ebit;
321 static struct itbl_entry *insn=0;
322 static int yyerror (const char *);
323 
324 
325 #line 326 "itbl-parse.c" /* yacc.c:339  */
326 
327 # ifndef YY_NULL
328 #  if defined __cplusplus && 201103L <= __cplusplus
329 #   define YY_NULL nullptr
330 #  else
331 #   define YY_NULL 0
332 #  endif
333 # endif
334 
335 /* Enabling verbose error messages.  */
336 #ifdef YYERROR_VERBOSE
337 # undef YYERROR_VERBOSE
338 # define YYERROR_VERBOSE 1
339 #else
340 # define YYERROR_VERBOSE 0
341 #endif
342 
343 /* In a future release of Bison, this section will be replaced
344    by #include "y.tab.h".  */
345 #ifndef YY_YY_ITBL_PARSE_H_INCLUDED
346 # define YY_YY_ITBL_PARSE_H_INCLUDED
347 /* Debug traces.  */
348 #ifndef YYDEBUG
349 # define YYDEBUG 0
350 #endif
351 #if YYDEBUG
352 extern int yydebug;
353 #endif
354 
355 /* Token type.  */
356 #ifndef YYTOKENTYPE
357 # define YYTOKENTYPE
358   enum yytokentype
359   {
360     DREG = 258,
361     CREG = 259,
362     GREG = 260,
363     IMMED = 261,
364     ADDR = 262,
365     INSN = 263,
366     NUM = 264,
367     ID = 265,
368     NL = 266,
369     PNUM = 267
370   };
371 #endif
372 /* Tokens.  */
373 #define DREG 258
374 #define CREG 259
375 #define GREG 260
376 #define IMMED 261
377 #define ADDR 262
378 #define INSN 263
379 #define NUM 264
380 #define ID 265
381 #define NL 266
382 #define PNUM 267
383 
384 /* Value type.  */
385 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
386 typedef union YYSTYPE YYSTYPE;
387 union YYSTYPE
388 {
389 #line 282 "./itbl-parse.y" /* yacc.c:355  */
390 
391     char *str;
392     int num;
393     int processor;
394     unsigned long val;
395 
396 
397 #line 398 "itbl-parse.c" /* yacc.c:355  */
398 };
399 # define YYSTYPE_IS_TRIVIAL 1
400 # define YYSTYPE_IS_DECLARED 1
401 #endif
402 
403 
404 extern YYSTYPE yylval;
405 
406 int yyparse (void);
407 
408 #endif /* !YY_YY_ITBL_PARSE_H_INCLUDED  */
409 
410 /* Copy the second part of user declarations.  */
411 
412 #line 413 "itbl-parse.c" /* yacc.c:358  */
413 
414 #ifdef short
415 # undef short
416 #endif
417 
418 #ifdef YYTYPE_UINT8
419 typedef YYTYPE_UINT8 yytype_uint8;
420 #else
421 typedef unsigned char yytype_uint8;
422 #endif
423 
424 #ifdef YYTYPE_INT8
425 typedef YYTYPE_INT8 yytype_int8;
426 #else
427 typedef signed char yytype_int8;
428 #endif
429 
430 #ifdef YYTYPE_UINT16
431 typedef YYTYPE_UINT16 yytype_uint16;
432 #else
433 typedef unsigned short int yytype_uint16;
434 #endif
435 
436 #ifdef YYTYPE_INT16
437 typedef YYTYPE_INT16 yytype_int16;
438 #else
439 typedef short int yytype_int16;
440 #endif
441 
442 #ifndef YYSIZE_T
443 # ifdef __SIZE_TYPE__
444 #  define YYSIZE_T __SIZE_TYPE__
445 # elif defined size_t
446 #  define YYSIZE_T size_t
447 # elif ! defined YYSIZE_T
448 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
449 #  define YYSIZE_T size_t
450 # else
451 #  define YYSIZE_T unsigned int
452 # endif
453 #endif
454 
455 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
456 
457 #ifndef YY_
458 # if defined YYENABLE_NLS && YYENABLE_NLS
459 #  if ENABLE_NLS
460 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
461 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
462 #  endif
463 # endif
464 # ifndef YY_
465 #  define YY_(Msgid) Msgid
466 # endif
467 #endif
468 
469 #ifndef __attribute__
470 /* This feature is available in gcc versions 2.5 and later.  */
471 # if (! defined __GNUC__ || __GNUC__ < 2 \
472       || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
473 #  define __attribute__(Spec) /* empty */
474 # endif
475 #endif
476 
477 /* Suppress unused-variable warnings by "using" E.  */
478 #if ! defined lint || defined __GNUC__
479 # define YYUSE(E) ((void) (E))
480 #else
481 # define YYUSE(E) /* empty */
482 #endif
483 
484 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
485 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
486 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
487     _Pragma ("GCC diagnostic push") \
488     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
489     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
490 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
491     _Pragma ("GCC diagnostic pop")
492 #else
493 # define YY_INITIAL_VALUE(Value) Value
494 #endif
495 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
496 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
497 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
498 #endif
499 #ifndef YY_INITIAL_VALUE
500 # define YY_INITIAL_VALUE(Value) /* Nothing. */
501 #endif
502 
503 
504 #if ! defined yyoverflow || YYERROR_VERBOSE
505 
506 /* The parser invokes alloca or malloc; define the necessary symbols.  */
507 
508 # ifdef YYSTACK_USE_ALLOCA
509 #  if YYSTACK_USE_ALLOCA
510 #   ifdef __GNUC__
511 #    define YYSTACK_ALLOC __builtin_alloca
512 #   elif defined __BUILTIN_VA_ARG_INCR
513 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
514 #   elif defined _AIX
515 #    define YYSTACK_ALLOC __alloca
516 #   elif defined _MSC_VER
517 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
518 #    define alloca _alloca
519 #   else
520 #    define YYSTACK_ALLOC alloca
521 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
522 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
523       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
524 #     ifndef EXIT_SUCCESS
525 #      define EXIT_SUCCESS 0
526 #     endif
527 #    endif
528 #   endif
529 #  endif
530 # endif
531 
532 # ifdef YYSTACK_ALLOC
533    /* Pacify GCC's 'empty if-body' warning.  */
534 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
535 #  ifndef YYSTACK_ALLOC_MAXIMUM
536     /* The OS might guarantee only one guard page at the bottom of the stack,
537        and a page size can be as small as 4096 bytes.  So we cannot safely
538        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
539        to allow for a few compiler-allocated temporary stack slots.  */
540 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
541 #  endif
542 # else
543 #  define YYSTACK_ALLOC YYMALLOC
544 #  define YYSTACK_FREE YYFREE
545 #  ifndef YYSTACK_ALLOC_MAXIMUM
546 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
547 #  endif
548 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
549        && ! ((defined YYMALLOC || defined malloc) \
550              && (defined YYFREE || defined free)))
551 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
552 #   ifndef EXIT_SUCCESS
553 #    define EXIT_SUCCESS 0
554 #   endif
555 #  endif
556 #  ifndef YYMALLOC
557 #   define YYMALLOC malloc
558 #   if ! defined malloc && ! defined EXIT_SUCCESS
559 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
560 #   endif
561 #  endif
562 #  ifndef YYFREE
563 #   define YYFREE free
564 #   if ! defined free && ! defined EXIT_SUCCESS
565 void free (void *); /* INFRINGES ON USER NAME SPACE */
566 #   endif
567 #  endif
568 # endif
569 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
570 
571 
572 #if (! defined yyoverflow \
573      && (! defined __cplusplus \
574          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
575 
576 /* A type that is properly aligned for any stack member.  */
577 union yyalloc
578 {
579   yytype_int16 yyss_alloc;
580   YYSTYPE yyvs_alloc;
581 };
582 
583 /* The size of the maximum gap between one aligned stack and the next.  */
584 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
585 
586 /* The size of an array large to enough to hold all stacks, each with
587    N elements.  */
588 # define YYSTACK_BYTES(N) \
589      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
590       + YYSTACK_GAP_MAXIMUM)
591 
592 # define YYCOPY_NEEDED 1
593 
594 /* Relocate STACK from its old location to the new one.  The
595    local variables YYSIZE and YYSTACKSIZE give the old and new number of
596    elements in the stack, and YYPTR gives the new location of the
597    stack.  Advance YYPTR to a properly aligned location for the next
598    stack.  */
599 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
600     do                                                                  \
601       {                                                                 \
602         YYSIZE_T yynewbytes;                                            \
603         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
604         Stack = &yyptr->Stack_alloc;                                    \
605         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
606         yyptr += yynewbytes / sizeof (*yyptr);                          \
607       }                                                                 \
608     while (0)
609 
610 #endif
611 
612 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
613 /* Copy COUNT objects from SRC to DST.  The source and destination do
614    not overlap.  */
615 # ifndef YYCOPY
616 #  if defined __GNUC__ && 1 < __GNUC__
617 #   define YYCOPY(Dst, Src, Count) \
618       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
619 #  else
620 #   define YYCOPY(Dst, Src, Count)              \
621       do                                        \
622         {                                       \
623           YYSIZE_T yyi;                         \
624           for (yyi = 0; yyi < (Count); yyi++)   \
625             (Dst)[yyi] = (Src)[yyi];            \
626         }                                       \
627       while (0)
628 #  endif
629 # endif
630 #endif /* !YYCOPY_NEEDED */
631 
632 /* YYFINAL -- State number of the termination state.  */
633 #define YYFINAL  9
634 /* YYLAST -- Last index in YYTABLE.  */
635 #define YYLAST   46
636 
637 /* YYNTOKENS -- Number of terminals.  */
638 #define YYNTOKENS  20
639 /* YYNNTS -- Number of nonterminals.  */
640 #define YYNNTS  15
641 /* YYNRULES -- Number of rules.  */
642 #define YYNRULES  29
643 /* YYNSTATES -- Number of states.  */
644 #define YYNSTATES  51
645 
646 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
647    by yylex, with out-of-bounds checking.  */
648 #define YYUNDEFTOK  2
649 #define YYMAXUTOK   267
650 
651 #define YYTRANSLATE(YYX)                                                \
652   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
653 
654 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
655    as returned by yylex, without out-of-bounds checking.  */
656 static const yytype_uint8 yytranslate[] =
657 {
658        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
659        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
660        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
661        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
662        2,     2,    17,     2,    13,    19,     2,     2,     2,     2,
663        2,     2,     2,     2,     2,     2,     2,     2,    18,     2,
664        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
665        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
666        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
667        2,    15,     2,    16,     2,     2,     2,     2,     2,     2,
668        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
669        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
670        2,     2,     2,     2,    14,     2,     2,     2,     2,     2,
671        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
672        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
673        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
674        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
675        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
676        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
677        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
678        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
679        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
680        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
681        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
682        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
683        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
684        5,     6,     7,     8,     9,    10,    11,    12
685 };
686 
687 #if YYDEBUG
688   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
689 static const yytype_uint16 yyrline[] =
690 {
691        0,   299,   299,   303,   304,   308,   315,   314,   323,   324,
692      328,   329,   330,   334,   339,   344,   352,   361,   365,   369,
693      376,   382,   388,   395,   402,   410,   415,   420,   428,   444
694 };
695 #endif
696 
697 #if YYDEBUG || YYERROR_VERBOSE || 0
698 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
699    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
700 static const char *const yytname[] =
701 {
702   "$end", "error", "$undefined", "DREG", "CREG", "GREG", "IMMED", "ADDR",
703   "INSN", "NUM", "ID", "NL", "PNUM", "','", "'|'", "'['", "']'", "'*'",
704   "':'", "'-'", "$accept", "insntbl", "entrys", "entry", "$@1",
705   "fieldspecs", "ftype", "fieldspec", "flagexpr", "flags", "range", "pnum",
706   "regtype", "name", "value", YY_NULL
707 };
708 #endif
709 
710 # ifdef YYPRINT
711 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
712    (internal) symbol number NUM (which must be that of a token).  */
713 static const yytype_uint16 yytoknum[] =
714 {
715        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
716      265,   266,   267,    44,   124,    91,    93,    42,    58,    45
717 };
718 # endif
719 
720 #define YYPACT_NINF -16
721 
722 #define yypact_value_is_default(Yystate) \
723   (!!((Yystate) == (-16)))
724 
725 #define YYTABLE_NINF -5
726 
727 #define yytable_value_is_error(Yytable_value) \
728   0
729 
730   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
731      STATE-NUM.  */
732 static const yytype_int8 yypact[] =
733 {
734        0,    -9,   -16,   -16,    10,   -16,     0,    12,   -16,   -16,
735      -16,   -16,   -16,   -16,     3,     3,   -16,     9,     9,   -16,
736       11,     8,    19,    15,   -16,    14,    -6,   -16,    25,    21,
737       -6,   -16,     1,   -16,    -6,    20,   -16,   -16,    18,    26,
738       11,     1,   -16,   -16,   -16,     1,   -16,    15,   -16,   -16,
739      -16
740 };
741 
742   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
743      Performed when YYTABLE does not specify something else to do.  Zero
744      means the default is an error.  */
745 static const yytype_uint8 yydefact[] =
746 {
747        0,     0,     8,    24,     0,     2,     0,     0,     9,     1,
748        3,    25,    26,    27,     0,     0,    28,     0,     0,    29,
749       23,     0,     0,    21,     5,     0,     0,     6,     0,    19,
750        0,    20,    12,    22,     0,     0,    15,    14,     0,     0,
751       23,    12,    13,    17,    18,    12,     7,    21,    11,    10,
752       16
753 };
754 
755   /* YYPGOTO[NTERM-NUM].  */
756 static const yytype_int8 yypgoto[] =
757 {
758      -16,   -16,    32,   -16,   -16,   -15,   -16,     2,    -3,    -8,
759        4,   -16,    34,    27,    28
760 };
761 
762   /* YYDEFGOTO[NTERM-NUM].  */
763 static const yytype_int8 yydefgoto[] =
764 {
765       -1,     4,     5,     6,    32,    39,    40,    41,    31,    27,
766       23,     7,    42,    17,    20
767 };
768 
769   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
770      positive, shift that token.  If negative, reduce the rule whose
771      number is the opposite.  If YYTABLE_NINF, syntax error.  */
772 static const yytype_int8 yytable[] =
773 {
774       -4,     1,     8,    29,    11,    12,    13,    36,    37,    30,
775        9,     2,     3,    16,    38,    11,    12,    13,    19,    24,
776       14,    11,    12,    13,    36,    37,    48,    35,    25,    22,
777       49,    43,    26,    28,    33,    34,    44,    46,    10,    50,
778       45,    15,    18,     0,    47,     0,    21
779 };
780 
781 static const yytype_int8 yycheck[] =
782 {
783        0,     1,    11,     9,     3,     4,     5,     6,     7,    15,
784        0,    11,    12,    10,    13,     3,     4,     5,     9,    11,
785        8,     3,     4,     5,     6,     7,    41,    30,     9,    18,
786       45,    34,    17,    19,     9,    14,    16,    11,     6,    47,
787       38,     7,    15,    -1,    40,    -1,    18
788 };
789 
790   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
791      symbol of state STATE-NUM.  */
792 static const yytype_uint8 yystos[] =
793 {
794        0,     1,    11,    12,    21,    22,    23,    31,    11,     0,
795       22,     3,     4,     5,     8,    32,    10,    33,    33,     9,
796       34,    34,    18,    30,    11,     9,    17,    29,    19,     9,
797       15,    28,    24,     9,    14,    28,     6,     7,    13,    25,
798       26,    27,    32,    28,    16,    27,    11,    30,    25,    25,
799       29
800 };
801 
802   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
803 static const yytype_uint8 yyr1[] =
804 {
805        0,    20,    21,    22,    22,    23,    24,    23,    23,    23,
806       25,    25,    25,    26,    26,    26,    27,    28,    28,    28,
807       29,    29,    30,    30,    31,    32,    32,    32,    33,    34
808 };
809 
810   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
811 static const yytype_uint8 yyr2[] =
812 {
813        0,     2,     1,     2,     0,     5,     0,     9,     1,     2,
814        3,     2,     0,     1,     1,     1,     3,     3,     3,     1,
815        2,     0,     4,     0,     1,     1,     1,     1,     1,     1
816 };
817 
818 
819 #define yyerrok         (yyerrstatus = 0)
820 #define yyclearin       (yychar = YYEMPTY)
821 #define YYEMPTY         (-2)
822 #define YYEOF           0
823 
824 #define YYACCEPT        goto yyacceptlab
825 #define YYABORT         goto yyabortlab
826 #define YYERROR         goto yyerrorlab
827 
828 
829 #define YYRECOVERING()  (!!yyerrstatus)
830 
831 #define YYBACKUP(Token, Value)                                  \
832 do                                                              \
833   if (yychar == YYEMPTY)                                        \
834     {                                                           \
835       yychar = (Token);                                         \
836       yylval = (Value);                                         \
837       YYPOPSTACK (yylen);                                       \
838       yystate = *yyssp;                                         \
839       goto yybackup;                                            \
840     }                                                           \
841   else                                                          \
842     {                                                           \
843       yyerror (YY_("syntax error: cannot back up")); \
844       YYERROR;                                                  \
845     }                                                           \
846 while (0)
847 
848 /* Error token number */
849 #define YYTERROR        1
850 #define YYERRCODE       256
851 
852 
853 
854 /* Enable debugging if requested.  */
855 #if YYDEBUG
856 
857 # ifndef YYFPRINTF
858 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
859 #  define YYFPRINTF fprintf
860 # endif
861 
862 # define YYDPRINTF(Args)                        \
863 do {                                            \
864   if (yydebug)                                  \
865     YYFPRINTF Args;                             \
866 } while (0)
867 
868 /* This macro is provided for backward compatibility. */
869 #ifndef YY_LOCATION_PRINT
870 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
871 #endif
872 
873 
874 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
875 do {                                                                      \
876   if (yydebug)                                                            \
877     {                                                                     \
878       YYFPRINTF (stderr, "%s ", Title);                                   \
879       yy_symbol_print (stderr,                                            \
880                   Type, Value); \
881       YYFPRINTF (stderr, "\n");                                           \
882     }                                                                     \
883 } while (0)
884 
885 
886 /*----------------------------------------.
887 | Print this symbol's value on YYOUTPUT.  |
888 `----------------------------------------*/
889 
890 static void
891 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
892 {
893   FILE *yyo = yyoutput;
894   YYUSE (yyo);
895   if (!yyvaluep)
896     return;
897 # ifdef YYPRINT
898   if (yytype < YYNTOKENS)
899     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
900 # endif
901   YYUSE (yytype);
902 }
903 
904 
905 /*--------------------------------.
906 | Print this symbol on YYOUTPUT.  |
907 `--------------------------------*/
908 
909 static void
910 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
911 {
912   YYFPRINTF (yyoutput, "%s %s (",
913              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
914 
915   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
916   YYFPRINTF (yyoutput, ")");
917 }
918 
919 /*------------------------------------------------------------------.
920 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
921 | TOP (included).                                                   |
922 `------------------------------------------------------------------*/
923 
924 static void
925 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
926 {
927   YYFPRINTF (stderr, "Stack now");
928   for (; yybottom <= yytop; yybottom++)
929     {
930       int yybot = *yybottom;
931       YYFPRINTF (stderr, " %d", yybot);
932     }
933   YYFPRINTF (stderr, "\n");
934 }
935 
936 # define YY_STACK_PRINT(Bottom, Top)                            \
937 do {                                                            \
938   if (yydebug)                                                  \
939     yy_stack_print ((Bottom), (Top));                           \
940 } while (0)
941 
942 
943 /*------------------------------------------------.
944 | Report that the YYRULE is going to be reduced.  |
945 `------------------------------------------------*/
946 
947 static void
948 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
949 {
950   unsigned long int yylno = yyrline[yyrule];
951   int yynrhs = yyr2[yyrule];
952   int yyi;
953   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
954              yyrule - 1, yylno);
955   /* The symbols being reduced.  */
956   for (yyi = 0; yyi < yynrhs; yyi++)
957     {
958       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
959       yy_symbol_print (stderr,
960                        yystos[yyssp[yyi + 1 - yynrhs]],
961                        &(yyvsp[(yyi + 1) - (yynrhs)])
962                                               );
963       YYFPRINTF (stderr, "\n");
964     }
965 }
966 
967 # define YY_REDUCE_PRINT(Rule)          \
968 do {                                    \
969   if (yydebug)                          \
970     yy_reduce_print (yyssp, yyvsp, Rule); \
971 } while (0)
972 
973 /* Nonzero means print parse trace.  It is left uninitialized so that
974    multiple parsers can coexist.  */
975 int yydebug;
976 #else /* !YYDEBUG */
977 # define YYDPRINTF(Args)
978 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
979 # define YY_STACK_PRINT(Bottom, Top)
980 # define YY_REDUCE_PRINT(Rule)
981 #endif /* !YYDEBUG */
982 
983 
984 /* YYINITDEPTH -- initial size of the parser's stacks.  */
985 #ifndef YYINITDEPTH
986 # define YYINITDEPTH 200
987 #endif
988 
989 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
990    if the built-in stack extension method is used).
991 
992    Do not make this value too large; the results are undefined if
993    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
994    evaluated with infinite-precision integer arithmetic.  */
995 
996 #ifndef YYMAXDEPTH
997 # define YYMAXDEPTH 10000
998 #endif
999 
1000 
1001 #if YYERROR_VERBOSE
1002 
1003 # ifndef yystrlen
1004 #  if defined __GLIBC__ && defined _STRING_H
1005 #   define yystrlen strlen
1006 #  else
1007 /* Return the length of YYSTR.  */
1008 static YYSIZE_T
1009 yystrlen (const char *yystr)
1010 {
1011   YYSIZE_T yylen;
1012   for (yylen = 0; yystr[yylen]; yylen++)
1013     continue;
1014   return yylen;
1015 }
1016 #  endif
1017 # endif
1018 
1019 # ifndef yystpcpy
1020 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1021 #   define yystpcpy stpcpy
1022 #  else
1023 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1024    YYDEST.  */
1025 static char *
1026 yystpcpy (char *yydest, const char *yysrc)
1027 {
1028   char *yyd = yydest;
1029   const char *yys = yysrc;
1030 
1031   while ((*yyd++ = *yys++) != '\0')
1032     continue;
1033 
1034   return yyd - 1;
1035 }
1036 #  endif
1037 # endif
1038 
1039 # ifndef yytnamerr
1040 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1041    quotes and backslashes, so that it's suitable for yyerror.  The
1042    heuristic is that double-quoting is unnecessary unless the string
1043    contains an apostrophe, a comma, or backslash (other than
1044    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1045    null, do not copy; instead, return the length of what the result
1046    would have been.  */
1047 static YYSIZE_T
1048 yytnamerr (char *yyres, const char *yystr)
1049 {
1050   if (*yystr == '"')
1051     {
1052       YYSIZE_T yyn = 0;
1053       char const *yyp = yystr;
1054 
1055       for (;;)
1056         switch (*++yyp)
1057           {
1058           case '\'':
1059           case ',':
1060             goto do_not_strip_quotes;
1061 
1062           case '\\':
1063             if (*++yyp != '\\')
1064               goto do_not_strip_quotes;
1065             /* Fall through.  */
1066           default:
1067             if (yyres)
1068               yyres[yyn] = *yyp;
1069             yyn++;
1070             break;
1071 
1072           case '"':
1073             if (yyres)
1074               yyres[yyn] = '\0';
1075             return yyn;
1076           }
1077     do_not_strip_quotes: ;
1078     }
1079 
1080   if (! yyres)
1081     return yystrlen (yystr);
1082 
1083   return yystpcpy (yyres, yystr) - yyres;
1084 }
1085 # endif
1086 
1087 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1088    about the unexpected token YYTOKEN for the state stack whose top is
1089    YYSSP.
1090 
1091    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1092    not large enough to hold the message.  In that case, also set
1093    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1094    required number of bytes is too large to store.  */
1095 static int
1096 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1097                 yytype_int16 *yyssp, int yytoken)
1098 {
1099   YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
1100   YYSIZE_T yysize = yysize0;
1101   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1102   /* Internationalized format string. */
1103   const char *yyformat = YY_NULL;
1104   /* Arguments of yyformat. */
1105   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1106   /* Number of reported tokens (one for the "unexpected", one per
1107      "expected"). */
1108   int yycount = 0;
1109 
1110   /* There are many possibilities here to consider:
1111      - If this state is a consistent state with a default action, then
1112        the only way this function was invoked is if the default action
1113        is an error action.  In that case, don't check for expected
1114        tokens because there are none.
1115      - The only way there can be no lookahead present (in yychar) is if
1116        this state is a consistent state with a default action.  Thus,
1117        detecting the absence of a lookahead is sufficient to determine
1118        that there is no unexpected or expected token to report.  In that
1119        case, just report a simple "syntax error".
1120      - Don't assume there isn't a lookahead just because this state is a
1121        consistent state with a default action.  There might have been a
1122        previous inconsistent state, consistent state with a non-default
1123        action, or user semantic action that manipulated yychar.
1124      - Of course, the expected token list depends on states to have
1125        correct lookahead information, and it depends on the parser not
1126        to perform extra reductions after fetching a lookahead from the
1127        scanner and before detecting a syntax error.  Thus, state merging
1128        (from LALR or IELR) and default reductions corrupt the expected
1129        token list.  However, the list is correct for canonical LR with
1130        one exception: it will still contain any token that will not be
1131        accepted due to an error action in a later state.
1132   */
1133   if (yytoken != YYEMPTY)
1134     {
1135       int yyn = yypact[*yyssp];
1136       yyarg[yycount++] = yytname[yytoken];
1137       if (!yypact_value_is_default (yyn))
1138         {
1139           /* Start YYX at -YYN if negative to avoid negative indexes in
1140              YYCHECK.  In other words, skip the first -YYN actions for
1141              this state because they are default actions.  */
1142           int yyxbegin = yyn < 0 ? -yyn : 0;
1143           /* Stay within bounds of both yycheck and yytname.  */
1144           int yychecklim = YYLAST - yyn + 1;
1145           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1146           int yyx;
1147 
1148           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1149             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1150                 && !yytable_value_is_error (yytable[yyx + yyn]))
1151               {
1152                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1153                   {
1154                     yycount = 1;
1155                     yysize = yysize0;
1156                     break;
1157                   }
1158                 yyarg[yycount++] = yytname[yyx];
1159                 {
1160                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
1161                   if (! (yysize <= yysize1
1162                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1163                     return 2;
1164                   yysize = yysize1;
1165                 }
1166               }
1167         }
1168     }
1169 
1170   switch (yycount)
1171     {
1172 # define YYCASE_(N, S)                      \
1173       case N:                               \
1174         yyformat = S;                       \
1175       break
1176       YYCASE_(0, YY_("syntax error"));
1177       YYCASE_(1, YY_("syntax error, unexpected %s"));
1178       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1179       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1180       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1181       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1182 # undef YYCASE_
1183     }
1184 
1185   {
1186     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1187     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1188       return 2;
1189     yysize = yysize1;
1190   }
1191 
1192   if (*yymsg_alloc < yysize)
1193     {
1194       *yymsg_alloc = 2 * yysize;
1195       if (! (yysize <= *yymsg_alloc
1196              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1197         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1198       return 1;
1199     }
1200 
1201   /* Avoid sprintf, as that infringes on the user's name space.
1202      Don't have undefined behavior even if the translation
1203      produced a string with the wrong number of "%s"s.  */
1204   {
1205     char *yyp = *yymsg;
1206     int yyi = 0;
1207     while ((*yyp = *yyformat) != '\0')
1208       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1209         {
1210           yyp += yytnamerr (yyp, yyarg[yyi++]);
1211           yyformat += 2;
1212         }
1213       else
1214         {
1215           yyp++;
1216           yyformat++;
1217         }
1218   }
1219   return 0;
1220 }
1221 #endif /* YYERROR_VERBOSE */
1222 
1223 /*-----------------------------------------------.
1224 | Release the memory associated to this symbol.  |
1225 `-----------------------------------------------*/
1226 
1227 static void
1228 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1229 {
1230   YYUSE (yyvaluep);
1231   if (!yymsg)
1232     yymsg = "Deleting";
1233   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1234 
1235   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1236   YYUSE (yytype);
1237   YY_IGNORE_MAYBE_UNINITIALIZED_END
1238 }
1239 
1240 
1241 
1242 
1243 /* The lookahead symbol.  */
1244 int yychar;
1245 
1246 /* The semantic value of the lookahead symbol.  */
1247 YYSTYPE yylval;
1248 /* Number of syntax errors so far.  */
1249 int yynerrs;
1250 
1251 
1252 /*----------.
1253 | yyparse.  |
1254 `----------*/
1255 
1256 int
1257 yyparse (void)
1258 {
1259     int yystate;
1260     /* Number of tokens to shift before error messages enabled.  */
1261     int yyerrstatus;
1262 
1263     /* The stacks and their tools:
1264        'yyss': related to states.
1265        'yyvs': related to semantic values.
1266 
1267        Refer to the stacks through separate pointers, to allow yyoverflow
1268        to reallocate them elsewhere.  */
1269 
1270     /* The state stack.  */
1271     yytype_int16 yyssa[YYINITDEPTH];
1272     yytype_int16 *yyss;
1273     yytype_int16 *yyssp;
1274 
1275     /* The semantic value stack.  */
1276     YYSTYPE yyvsa[YYINITDEPTH];
1277     YYSTYPE *yyvs;
1278     YYSTYPE *yyvsp;
1279 
1280     YYSIZE_T yystacksize;
1281 
1282   int yyn;
1283   int yyresult;
1284   /* Lookahead token as an internal (translated) token number.  */
1285   int yytoken = 0;
1286   /* The variables used to return semantic value and location from the
1287      action routines.  */
1288   YYSTYPE yyval;
1289 
1290 #if YYERROR_VERBOSE
1291   /* Buffer for error messages, and its allocated size.  */
1292   char yymsgbuf[128];
1293   char *yymsg = yymsgbuf;
1294   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1295 #endif
1296 
1297 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1298 
1299   /* The number of symbols on the RHS of the reduced rule.
1300      Keep to zero when no symbol should be popped.  */
1301   int yylen = 0;
1302 
1303   yyssp = yyss = yyssa;
1304   yyvsp = yyvs = yyvsa;
1305   yystacksize = YYINITDEPTH;
1306 
1307   YYDPRINTF ((stderr, "Starting parse\n"));
1308 
1309   yystate = 0;
1310   yyerrstatus = 0;
1311   yynerrs = 0;
1312   yychar = YYEMPTY; /* Cause a token to be read.  */
1313   goto yysetstate;
1314 
1315 /*------------------------------------------------------------.
1316 | yynewstate -- Push a new state, which is found in yystate.  |
1317 `------------------------------------------------------------*/
1318  yynewstate:
1319   /* In all cases, when you get here, the value and location stacks
1320      have just been pushed.  So pushing a state here evens the stacks.  */
1321   yyssp++;
1322 
1323  yysetstate:
1324   *yyssp = yystate;
1325 
1326   if (yyss + yystacksize - 1 <= yyssp)
1327     {
1328       /* Get the current used size of the three stacks, in elements.  */
1329       YYSIZE_T yysize = yyssp - yyss + 1;
1330 
1331 #ifdef yyoverflow
1332       {
1333         /* Give user a chance to reallocate the stack.  Use copies of
1334            these so that the &'s don't force the real ones into
1335            memory.  */
1336         YYSTYPE *yyvs1 = yyvs;
1337         yytype_int16 *yyss1 = yyss;
1338 
1339         /* Each stack pointer address is followed by the size of the
1340            data in use in that stack, in bytes.  This used to be a
1341            conditional around just the two extra args, but that might
1342            be undefined if yyoverflow is a macro.  */
1343         yyoverflow (YY_("memory exhausted"),
1344                     &yyss1, yysize * sizeof (*yyssp),
1345                     &yyvs1, yysize * sizeof (*yyvsp),
1346                     &yystacksize);
1347 
1348         yyss = yyss1;
1349         yyvs = yyvs1;
1350       }
1351 #else /* no yyoverflow */
1352 # ifndef YYSTACK_RELOCATE
1353       goto yyexhaustedlab;
1354 # else
1355       /* Extend the stack our own way.  */
1356       if (YYMAXDEPTH <= yystacksize)
1357         goto yyexhaustedlab;
1358       yystacksize *= 2;
1359       if (YYMAXDEPTH < yystacksize)
1360         yystacksize = YYMAXDEPTH;
1361 
1362       {
1363         yytype_int16 *yyss1 = yyss;
1364         union yyalloc *yyptr =
1365           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1366         if (! yyptr)
1367           goto yyexhaustedlab;
1368         YYSTACK_RELOCATE (yyss_alloc, yyss);
1369         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1370 #  undef YYSTACK_RELOCATE
1371         if (yyss1 != yyssa)
1372           YYSTACK_FREE (yyss1);
1373       }
1374 # endif
1375 #endif /* no yyoverflow */
1376 
1377       yyssp = yyss + yysize - 1;
1378       yyvsp = yyvs + yysize - 1;
1379 
1380       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1381                   (unsigned long int) yystacksize));
1382 
1383       if (yyss + yystacksize - 1 <= yyssp)
1384         YYABORT;
1385     }
1386 
1387   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1388 
1389   if (yystate == YYFINAL)
1390     YYACCEPT;
1391 
1392   goto yybackup;
1393 
1394 /*-----------.
1395 | yybackup.  |
1396 `-----------*/
1397 yybackup:
1398 
1399   /* Do appropriate processing given the current state.  Read a
1400      lookahead token if we need one and don't already have one.  */
1401 
1402   /* First try to decide what to do without reference to lookahead token.  */
1403   yyn = yypact[yystate];
1404   if (yypact_value_is_default (yyn))
1405     goto yydefault;
1406 
1407   /* Not known => get a lookahead token if don't already have one.  */
1408 
1409   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1410   if (yychar == YYEMPTY)
1411     {
1412       YYDPRINTF ((stderr, "Reading a token: "));
1413       yychar = yylex ();
1414     }
1415 
1416   if (yychar <= YYEOF)
1417     {
1418       yychar = yytoken = YYEOF;
1419       YYDPRINTF ((stderr, "Now at end of input.\n"));
1420     }
1421   else
1422     {
1423       yytoken = YYTRANSLATE (yychar);
1424       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1425     }
1426 
1427   /* If the proper action on seeing token YYTOKEN is to reduce or to
1428      detect an error, take that action.  */
1429   yyn += yytoken;
1430   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1431     goto yydefault;
1432   yyn = yytable[yyn];
1433   if (yyn <= 0)
1434     {
1435       if (yytable_value_is_error (yyn))
1436         goto yyerrlab;
1437       yyn = -yyn;
1438       goto yyreduce;
1439     }
1440 
1441   /* Count tokens shifted since error; after three, turn off error
1442      status.  */
1443   if (yyerrstatus)
1444     yyerrstatus--;
1445 
1446   /* Shift the lookahead token.  */
1447   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1448 
1449   /* Discard the shifted token.  */
1450   yychar = YYEMPTY;
1451 
1452   yystate = yyn;
1453   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1454   *++yyvsp = yylval;
1455   YY_IGNORE_MAYBE_UNINITIALIZED_END
1456 
1457   goto yynewstate;
1458 
1459 
1460 /*-----------------------------------------------------------.
1461 | yydefault -- do the default action for the current state.  |
1462 `-----------------------------------------------------------*/
1463 yydefault:
1464   yyn = yydefact[yystate];
1465   if (yyn == 0)
1466     goto yyerrlab;
1467   goto yyreduce;
1468 
1469 
1470 /*-----------------------------.
1471 | yyreduce -- Do a reduction.  |
1472 `-----------------------------*/
1473 yyreduce:
1474   /* yyn is the number of a rule to reduce with.  */
1475   yylen = yyr2[yyn];
1476 
1477   /* If YYLEN is nonzero, implement the default value of the action:
1478      '$$ = $1'.
1479 
1480      Otherwise, the following line sets YYVAL to garbage.
1481      This behavior is undocumented and Bison
1482      users should not rely upon it.  Assigning to YYVAL
1483      unconditionally makes the parser a bit smaller, and it avoids a
1484      GCC warning that YYVAL may be used uninitialized.  */
1485   yyval = yyvsp[1-yylen];
1486 
1487 
1488   YY_REDUCE_PRINT (yyn);
1489   switch (yyn)
1490     {
1491         case 5:
1492 #line 309 "./itbl-parse.y" /* yacc.c:1661  */
1493     {
1494 	    DBG (("line %d: entry pnum=%d type=%d name=%s value=x%x\n",
1495 	    	    insntbl_line, (yyvsp[-4].num), (yyvsp[-3].num), (yyvsp[-2].str), (yyvsp[-1].val)));
1496 	    itbl_add_reg ((yyvsp[-4].num), (yyvsp[-3].num), (yyvsp[-2].str), (yyvsp[-1].val));
1497 	  }
1498 #line 1499 "itbl-parse.c" /* yacc.c:1661  */
1499     break;
1500 
1501   case 6:
1502 #line 315 "./itbl-parse.y" /* yacc.c:1661  */
1503     {
1504 	    DBG (("line %d: entry pnum=%d type=INSN name=%s value=x%x",
1505 	    	    insntbl_line, (yyvsp[-5].num), (yyvsp[-3].str), (yyvsp[-2].val)));
1506 	    DBG ((" sbit=%d ebit=%d flags=0x%x\n", sbit, ebit, (yyvsp[0].val)));
1507 	    insn=itbl_add_insn ((yyvsp[-5].num), (yyvsp[-3].str), (yyvsp[-2].val), sbit, ebit, (yyvsp[0].val));
1508 	  }
1509 #line 1510 "itbl-parse.c" /* yacc.c:1661  */
1510     break;
1511 
1512   case 7:
1513 #line 322 "./itbl-parse.y" /* yacc.c:1661  */
1514     {}
1515 #line 1516 "itbl-parse.c" /* yacc.c:1661  */
1516     break;
1517 
1518   case 13:
1519 #line 335 "./itbl-parse.y" /* yacc.c:1661  */
1520     {
1521 	    DBGL2 (("ftype\n"));
1522 	    (yyval.num) = (yyvsp[0].num);
1523 	  }
1524 #line 1525 "itbl-parse.c" /* yacc.c:1661  */
1525     break;
1526 
1527   case 14:
1528 #line 340 "./itbl-parse.y" /* yacc.c:1661  */
1529     {
1530 	    DBGL2 (("addr\n"));
1531 	    (yyval.num) = ADDR;
1532 	  }
1533 #line 1534 "itbl-parse.c" /* yacc.c:1661  */
1534     break;
1535 
1536   case 15:
1537 #line 345 "./itbl-parse.y" /* yacc.c:1661  */
1538     {
1539 	    DBGL2 (("immed\n"));
1540 	    (yyval.num) = IMMED;
1541 	  }
1542 #line 1543 "itbl-parse.c" /* yacc.c:1661  */
1543     break;
1544 
1545   case 16:
1546 #line 353 "./itbl-parse.y" /* yacc.c:1661  */
1547     {
1548 	    DBG (("line %d: field type=%d sbit=%d ebit=%d, flags=0x%x\n",
1549 	    	    insntbl_line, (yyvsp[-2].num), sbit, ebit, (yyvsp[0].val)));
1550 	    itbl_add_operand (insn, (yyvsp[-2].num), sbit, ebit, (yyvsp[0].val));
1551 	  }
1552 #line 1553 "itbl-parse.c" /* yacc.c:1661  */
1553     break;
1554 
1555   case 17:
1556 #line 362 "./itbl-parse.y" /* yacc.c:1661  */
1557     {
1558 	    (yyval.val) = (yyvsp[-2].num) | (yyvsp[0].val);
1559 	  }
1560 #line 1561 "itbl-parse.c" /* yacc.c:1661  */
1561     break;
1562 
1563   case 18:
1564 #line 366 "./itbl-parse.y" /* yacc.c:1661  */
1565     {
1566 	    (yyval.val) = (yyvsp[-1].val);
1567 	  }
1568 #line 1569 "itbl-parse.c" /* yacc.c:1661  */
1569     break;
1570 
1571   case 19:
1572 #line 370 "./itbl-parse.y" /* yacc.c:1661  */
1573     {
1574 	    (yyval.val) = (yyvsp[0].num);
1575 	  }
1576 #line 1577 "itbl-parse.c" /* yacc.c:1661  */
1577     break;
1578 
1579   case 20:
1580 #line 377 "./itbl-parse.y" /* yacc.c:1661  */
1581     {
1582 	    DBGL2 (("flags=%d\n", (yyvsp[0].val)));
1583 	    (yyval.val) = (yyvsp[0].val);
1584 	  }
1585 #line 1586 "itbl-parse.c" /* yacc.c:1661  */
1586     break;
1587 
1588   case 21:
1589 #line 382 "./itbl-parse.y" /* yacc.c:1661  */
1590     {
1591 	    (yyval.val) = 0;
1592 	  }
1593 #line 1594 "itbl-parse.c" /* yacc.c:1661  */
1594     break;
1595 
1596   case 22:
1597 #line 389 "./itbl-parse.y" /* yacc.c:1661  */
1598     {
1599 	    DBGL2 (("range %d %d\n", (yyvsp[-2].num), (yyvsp[0].num)));
1600 	    sbit = (yyvsp[-2].num);
1601 	    ebit = (yyvsp[0].num);
1602 	  }
1603 #line 1604 "itbl-parse.c" /* yacc.c:1661  */
1604     break;
1605 
1606   case 23:
1607 #line 395 "./itbl-parse.y" /* yacc.c:1661  */
1608     {
1609 	    sbit = 31;
1610 	    ebit = 0;
1611 	  }
1612 #line 1613 "itbl-parse.c" /* yacc.c:1661  */
1613     break;
1614 
1615   case 24:
1616 #line 403 "./itbl-parse.y" /* yacc.c:1661  */
1617     {
1618 	    DBGL2 (("pnum=%d\n",(yyvsp[0].num)));
1619 	    (yyval.num) = (yyvsp[0].num);
1620 	  }
1621 #line 1622 "itbl-parse.c" /* yacc.c:1661  */
1622     break;
1623 
1624   case 25:
1625 #line 411 "./itbl-parse.y" /* yacc.c:1661  */
1626     {
1627 	    DBGL2 (("dreg\n"));
1628 	    (yyval.num) = DREG;
1629 	  }
1630 #line 1631 "itbl-parse.c" /* yacc.c:1661  */
1631     break;
1632 
1633   case 26:
1634 #line 416 "./itbl-parse.y" /* yacc.c:1661  */
1635     {
1636 	    DBGL2 (("creg\n"));
1637 	    (yyval.num) = CREG;
1638 	  }
1639 #line 1640 "itbl-parse.c" /* yacc.c:1661  */
1640     break;
1641 
1642   case 27:
1643 #line 421 "./itbl-parse.y" /* yacc.c:1661  */
1644     {
1645 	    DBGL2 (("greg\n"));
1646 	    (yyval.num) = GREG;
1647 	  }
1648 #line 1649 "itbl-parse.c" /* yacc.c:1661  */
1649     break;
1650 
1651   case 28:
1652 #line 429 "./itbl-parse.y" /* yacc.c:1661  */
1653     {
1654 	    DBGL2 (("name=%s\n",(yyvsp[0].str)));
1655 	    (yyval.str) = (yyvsp[0].str);
1656 	  }
1657 #line 1658 "itbl-parse.c" /* yacc.c:1661  */
1658     break;
1659 
1660   case 29:
1661 #line 445 "./itbl-parse.y" /* yacc.c:1661  */
1662     {
1663 	    DBGL2 (("val=x%x\n",(yyvsp[0].num)));
1664 	    (yyval.val) = (yyvsp[0].num);
1665 	  }
1666 #line 1667 "itbl-parse.c" /* yacc.c:1661  */
1667     break;
1668 
1669 
1670 #line 1671 "itbl-parse.c" /* yacc.c:1661  */
1671       default: break;
1672     }
1673   /* User semantic actions sometimes alter yychar, and that requires
1674      that yytoken be updated with the new translation.  We take the
1675      approach of translating immediately before every use of yytoken.
1676      One alternative is translating here after every semantic action,
1677      but that translation would be missed if the semantic action invokes
1678      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
1679      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
1680      incorrect destructor might then be invoked immediately.  In the
1681      case of YYERROR or YYBACKUP, subsequent parser actions might lead
1682      to an incorrect destructor call or verbose syntax error message
1683      before the lookahead is translated.  */
1684   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1685 
1686   YYPOPSTACK (yylen);
1687   yylen = 0;
1688   YY_STACK_PRINT (yyss, yyssp);
1689 
1690   *++yyvsp = yyval;
1691 
1692   /* Now 'shift' the result of the reduction.  Determine what state
1693      that goes to, based on the state we popped back to and the rule
1694      number reduced by.  */
1695 
1696   yyn = yyr1[yyn];
1697 
1698   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1699   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1700     yystate = yytable[yystate];
1701   else
1702     yystate = yydefgoto[yyn - YYNTOKENS];
1703 
1704   goto yynewstate;
1705 
1706 
1707 /*--------------------------------------.
1708 | yyerrlab -- here on detecting error.  |
1709 `--------------------------------------*/
1710 yyerrlab:
1711   /* Make sure we have latest lookahead translation.  See comments at
1712      user semantic actions for why this is necessary.  */
1713   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
1714 
1715   /* If not already recovering from an error, report this error.  */
1716   if (!yyerrstatus)
1717     {
1718       ++yynerrs;
1719 #if ! YYERROR_VERBOSE
1720       yyerror (YY_("syntax error"));
1721 #else
1722 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
1723                                         yyssp, yytoken)
1724       {
1725         char const *yymsgp = YY_("syntax error");
1726         int yysyntax_error_status;
1727         yysyntax_error_status = YYSYNTAX_ERROR;
1728         if (yysyntax_error_status == 0)
1729           yymsgp = yymsg;
1730         else if (yysyntax_error_status == 1)
1731           {
1732             if (yymsg != yymsgbuf)
1733               YYSTACK_FREE (yymsg);
1734             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
1735             if (!yymsg)
1736               {
1737                 yymsg = yymsgbuf;
1738                 yymsg_alloc = sizeof yymsgbuf;
1739                 yysyntax_error_status = 2;
1740               }
1741             else
1742               {
1743                 yysyntax_error_status = YYSYNTAX_ERROR;
1744                 yymsgp = yymsg;
1745               }
1746           }
1747         yyerror (yymsgp);
1748         if (yysyntax_error_status == 2)
1749           goto yyexhaustedlab;
1750       }
1751 # undef YYSYNTAX_ERROR
1752 #endif
1753     }
1754 
1755 
1756 
1757   if (yyerrstatus == 3)
1758     {
1759       /* If just tried and failed to reuse lookahead token after an
1760          error, discard it.  */
1761 
1762       if (yychar <= YYEOF)
1763         {
1764           /* Return failure if at end of input.  */
1765           if (yychar == YYEOF)
1766             YYABORT;
1767         }
1768       else
1769         {
1770           yydestruct ("Error: discarding",
1771                       yytoken, &yylval);
1772           yychar = YYEMPTY;
1773         }
1774     }
1775 
1776   /* Else will try to reuse lookahead token after shifting the error
1777      token.  */
1778   goto yyerrlab1;
1779 
1780 
1781 /*---------------------------------------------------.
1782 | yyerrorlab -- error raised explicitly by YYERROR.  |
1783 `---------------------------------------------------*/
1784 yyerrorlab:
1785 
1786   /* Pacify compilers like GCC when the user code never invokes
1787      YYERROR and the label yyerrorlab therefore never appears in user
1788      code.  */
1789   if (/*CONSTCOND*/ 0)
1790      goto yyerrorlab;
1791 
1792   /* Do not reclaim the symbols of the rule whose action triggered
1793      this YYERROR.  */
1794   YYPOPSTACK (yylen);
1795   yylen = 0;
1796   YY_STACK_PRINT (yyss, yyssp);
1797   yystate = *yyssp;
1798   goto yyerrlab1;
1799 
1800 
1801 /*-------------------------------------------------------------.
1802 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
1803 `-------------------------------------------------------------*/
1804 yyerrlab1:
1805   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
1806 
1807   for (;;)
1808     {
1809       yyn = yypact[yystate];
1810       if (!yypact_value_is_default (yyn))
1811         {
1812           yyn += YYTERROR;
1813           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1814             {
1815               yyn = yytable[yyn];
1816               if (0 < yyn)
1817                 break;
1818             }
1819         }
1820 
1821       /* Pop the current state because it cannot handle the error token.  */
1822       if (yyssp == yyss)
1823         YYABORT;
1824 
1825 
1826       yydestruct ("Error: popping",
1827                   yystos[yystate], yyvsp);
1828       YYPOPSTACK (1);
1829       yystate = *yyssp;
1830       YY_STACK_PRINT (yyss, yyssp);
1831     }
1832 
1833   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1834   *++yyvsp = yylval;
1835   YY_IGNORE_MAYBE_UNINITIALIZED_END
1836 
1837 
1838   /* Shift the error token.  */
1839   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1840 
1841   yystate = yyn;
1842   goto yynewstate;
1843 
1844 
1845 /*-------------------------------------.
1846 | yyacceptlab -- YYACCEPT comes here.  |
1847 `-------------------------------------*/
1848 yyacceptlab:
1849   yyresult = 0;
1850   goto yyreturn;
1851 
1852 /*-----------------------------------.
1853 | yyabortlab -- YYABORT comes here.  |
1854 `-----------------------------------*/
1855 yyabortlab:
1856   yyresult = 1;
1857   goto yyreturn;
1858 
1859 #if !defined yyoverflow || YYERROR_VERBOSE
1860 /*-------------------------------------------------.
1861 | yyexhaustedlab -- memory exhaustion comes here.  |
1862 `-------------------------------------------------*/
1863 yyexhaustedlab:
1864   yyerror (YY_("memory exhausted"));
1865   yyresult = 2;
1866   /* Fall through.  */
1867 #endif
1868 
1869 yyreturn:
1870   if (yychar != YYEMPTY)
1871     {
1872       /* Make sure we have latest lookahead translation.  See comments at
1873          user semantic actions for why this is necessary.  */
1874       yytoken = YYTRANSLATE (yychar);
1875       yydestruct ("Cleanup: discarding lookahead",
1876                   yytoken, &yylval);
1877     }
1878   /* Do not reclaim the symbols of the rule whose action triggered
1879      this YYABORT or YYACCEPT.  */
1880   YYPOPSTACK (yylen);
1881   YY_STACK_PRINT (yyss, yyssp);
1882   while (yyssp != yyss)
1883     {
1884       yydestruct ("Cleanup: popping",
1885                   yystos[*yyssp], yyvsp);
1886       YYPOPSTACK (1);
1887     }
1888 #ifndef yyoverflow
1889   if (yyss != yyssa)
1890     YYSTACK_FREE (yyss);
1891 #endif
1892 #if YYERROR_VERBOSE
1893   if (yymsg != yymsgbuf)
1894     YYSTACK_FREE (yymsg);
1895 #endif
1896   return yyresult;
1897 }
1898 #line 450 "./itbl-parse.y" /* yacc.c:1906  */
1899 
1900 
1901 static int
1902 yyerror (msg)
1903      const char *msg;
1904 {
1905   printf ("line %d: %s\n", insntbl_line, msg);
1906   return 0;
1907 }
1908