itbl-parse.c revision 1.1.1.5 1 /* A Bison parser, made by GNU Bison 3.0.4. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015 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.4"
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_NULLPTR
328 # if defined __cplusplus && 201103L <= __cplusplus
329 # define YY_NULLPTR nullptr
330 # else
331 # define YY_NULLPTR 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
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
400 typedef union YYSTYPE YYSTYPE;
401 # define YYSTYPE_IS_TRIVIAL 1
402 # define YYSTYPE_IS_DECLARED 1
403 #endif
404
405
406 extern YYSTYPE yylval;
407
408 int yyparse (void);
409
410 #endif /* !YY_YY_ITBL_PARSE_H_INCLUDED */
411
412 /* Copy the second part of user declarations. */
413
414 #line 415 "itbl-parse.c" /* yacc.c:358 */
415
416 #ifdef short
417 # undef short
418 #endif
419
420 #ifdef YYTYPE_UINT8
421 typedef YYTYPE_UINT8 yytype_uint8;
422 #else
423 typedef unsigned char yytype_uint8;
424 #endif
425
426 #ifdef YYTYPE_INT8
427 typedef YYTYPE_INT8 yytype_int8;
428 #else
429 typedef signed char yytype_int8;
430 #endif
431
432 #ifdef YYTYPE_UINT16
433 typedef YYTYPE_UINT16 yytype_uint16;
434 #else
435 typedef unsigned short int yytype_uint16;
436 #endif
437
438 #ifdef YYTYPE_INT16
439 typedef YYTYPE_INT16 yytype_int16;
440 #else
441 typedef short int yytype_int16;
442 #endif
443
444 #ifndef YYSIZE_T
445 # ifdef __SIZE_TYPE__
446 # define YYSIZE_T __SIZE_TYPE__
447 # elif defined size_t
448 # define YYSIZE_T size_t
449 # elif ! defined YYSIZE_T
450 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
451 # define YYSIZE_T size_t
452 # else
453 # define YYSIZE_T unsigned int
454 # endif
455 #endif
456
457 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
458
459 #ifndef YY_
460 # if defined YYENABLE_NLS && YYENABLE_NLS
461 # if ENABLE_NLS
462 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
463 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
464 # endif
465 # endif
466 # ifndef YY_
467 # define YY_(Msgid) Msgid
468 # endif
469 #endif
470
471 #ifndef YY_ATTRIBUTE
472 # if (defined __GNUC__ \
473 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
474 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
475 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
476 # else
477 # define YY_ATTRIBUTE(Spec) /* empty */
478 # endif
479 #endif
480
481 #ifndef YY_ATTRIBUTE_PURE
482 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
483 #endif
484
485 #ifndef YY_ATTRIBUTE_UNUSED
486 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
487 #endif
488
489 #if !defined _Noreturn \
490 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
491 # if defined _MSC_VER && 1200 <= _MSC_VER
492 # define _Noreturn __declspec (noreturn)
493 # else
494 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
495 # endif
496 #endif
497
498 /* Suppress unused-variable warnings by "using" E. */
499 #if ! defined lint || defined __GNUC__
500 # define YYUSE(E) ((void) (E))
501 #else
502 # define YYUSE(E) /* empty */
503 #endif
504
505 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
506 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
507 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
508 _Pragma ("GCC diagnostic push") \
509 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
510 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
511 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
512 _Pragma ("GCC diagnostic pop")
513 #else
514 # define YY_INITIAL_VALUE(Value) Value
515 #endif
516 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
517 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
518 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
519 #endif
520 #ifndef YY_INITIAL_VALUE
521 # define YY_INITIAL_VALUE(Value) /* Nothing. */
522 #endif
523
524
525 #if ! defined yyoverflow || YYERROR_VERBOSE
526
527 /* The parser invokes alloca or malloc; define the necessary symbols. */
528
529 # ifdef YYSTACK_USE_ALLOCA
530 # if YYSTACK_USE_ALLOCA
531 # ifdef __GNUC__
532 # define YYSTACK_ALLOC __builtin_alloca
533 # elif defined __BUILTIN_VA_ARG_INCR
534 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
535 # elif defined _AIX
536 # define YYSTACK_ALLOC __alloca
537 # elif defined _MSC_VER
538 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
539 # define alloca _alloca
540 # else
541 # define YYSTACK_ALLOC alloca
542 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
543 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
544 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
545 # ifndef EXIT_SUCCESS
546 # define EXIT_SUCCESS 0
547 # endif
548 # endif
549 # endif
550 # endif
551 # endif
552
553 # ifdef YYSTACK_ALLOC
554 /* Pacify GCC's 'empty if-body' warning. */
555 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
556 # ifndef YYSTACK_ALLOC_MAXIMUM
557 /* The OS might guarantee only one guard page at the bottom of the stack,
558 and a page size can be as small as 4096 bytes. So we cannot safely
559 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
560 to allow for a few compiler-allocated temporary stack slots. */
561 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
562 # endif
563 # else
564 # define YYSTACK_ALLOC YYMALLOC
565 # define YYSTACK_FREE YYFREE
566 # ifndef YYSTACK_ALLOC_MAXIMUM
567 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
568 # endif
569 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
570 && ! ((defined YYMALLOC || defined malloc) \
571 && (defined YYFREE || defined free)))
572 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
573 # ifndef EXIT_SUCCESS
574 # define EXIT_SUCCESS 0
575 # endif
576 # endif
577 # ifndef YYMALLOC
578 # define YYMALLOC malloc
579 # if ! defined malloc && ! defined EXIT_SUCCESS
580 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
581 # endif
582 # endif
583 # ifndef YYFREE
584 # define YYFREE free
585 # if ! defined free && ! defined EXIT_SUCCESS
586 void free (void *); /* INFRINGES ON USER NAME SPACE */
587 # endif
588 # endif
589 # endif
590 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
591
592
593 #if (! defined yyoverflow \
594 && (! defined __cplusplus \
595 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
596
597 /* A type that is properly aligned for any stack member. */
598 union yyalloc
599 {
600 yytype_int16 yyss_alloc;
601 YYSTYPE yyvs_alloc;
602 };
603
604 /* The size of the maximum gap between one aligned stack and the next. */
605 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
606
607 /* The size of an array large to enough to hold all stacks, each with
608 N elements. */
609 # define YYSTACK_BYTES(N) \
610 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
611 + YYSTACK_GAP_MAXIMUM)
612
613 # define YYCOPY_NEEDED 1
614
615 /* Relocate STACK from its old location to the new one. The
616 local variables YYSIZE and YYSTACKSIZE give the old and new number of
617 elements in the stack, and YYPTR gives the new location of the
618 stack. Advance YYPTR to a properly aligned location for the next
619 stack. */
620 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
621 do \
622 { \
623 YYSIZE_T yynewbytes; \
624 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
625 Stack = &yyptr->Stack_alloc; \
626 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
627 yyptr += yynewbytes / sizeof (*yyptr); \
628 } \
629 while (0)
630
631 #endif
632
633 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
634 /* Copy COUNT objects from SRC to DST. The source and destination do
635 not overlap. */
636 # ifndef YYCOPY
637 # if defined __GNUC__ && 1 < __GNUC__
638 # define YYCOPY(Dst, Src, Count) \
639 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
640 # else
641 # define YYCOPY(Dst, Src, Count) \
642 do \
643 { \
644 YYSIZE_T yyi; \
645 for (yyi = 0; yyi < (Count); yyi++) \
646 (Dst)[yyi] = (Src)[yyi]; \
647 } \
648 while (0)
649 # endif
650 # endif
651 #endif /* !YYCOPY_NEEDED */
652
653 /* YYFINAL -- State number of the termination state. */
654 #define YYFINAL 9
655 /* YYLAST -- Last index in YYTABLE. */
656 #define YYLAST 46
657
658 /* YYNTOKENS -- Number of terminals. */
659 #define YYNTOKENS 20
660 /* YYNNTS -- Number of nonterminals. */
661 #define YYNNTS 15
662 /* YYNRULES -- Number of rules. */
663 #define YYNRULES 29
664 /* YYNSTATES -- Number of states. */
665 #define YYNSTATES 51
666
667 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
668 by yylex, with out-of-bounds checking. */
669 #define YYUNDEFTOK 2
670 #define YYMAXUTOK 267
671
672 #define YYTRANSLATE(YYX) \
673 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
674
675 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
676 as returned by yylex, without out-of-bounds checking. */
677 static const yytype_uint8 yytranslate[] =
678 {
679 0, 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, 17, 2, 13, 19, 2, 2, 2, 2,
684 2, 2, 2, 2, 2, 2, 2, 2, 18, 2,
685 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
686 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
687 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
688 2, 15, 2, 16, 2, 2, 2, 2, 2, 2,
689 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
690 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
691 2, 2, 2, 2, 14, 2, 2, 2, 2, 2,
692 2, 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, 2, 2, 2, 2, 2,
696 2, 2, 2, 2, 2, 2, 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, 2, 2, 2, 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, 1, 2, 3, 4,
705 5, 6, 7, 8, 9, 10, 11, 12
706 };
707
708 #if YYDEBUG
709 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
710 static const yytype_uint16 yyrline[] =
711 {
712 0, 299, 299, 303, 304, 308, 315, 314, 323, 324,
713 328, 329, 330, 334, 339, 344, 352, 361, 365, 369,
714 376, 382, 388, 395, 402, 410, 415, 420, 428, 444
715 };
716 #endif
717
718 #if YYDEBUG || YYERROR_VERBOSE || 0
719 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
720 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
721 static const char *const yytname[] =
722 {
723 "$end", "error", "$undefined", "DREG", "CREG", "GREG", "IMMED", "ADDR",
724 "INSN", "NUM", "ID", "NL", "PNUM", "','", "'|'", "'['", "']'", "'*'",
725 "':'", "'-'", "$accept", "insntbl", "entrys", "entry", "$@1",
726 "fieldspecs", "ftype", "fieldspec", "flagexpr", "flags", "range", "pnum",
727 "regtype", "name", "value", YY_NULLPTR
728 };
729 #endif
730
731 # ifdef YYPRINT
732 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
733 (internal) symbol number NUM (which must be that of a token). */
734 static const yytype_uint16 yytoknum[] =
735 {
736 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
737 265, 266, 267, 44, 124, 91, 93, 42, 58, 45
738 };
739 # endif
740
741 #define YYPACT_NINF -16
742
743 #define yypact_value_is_default(Yystate) \
744 (!!((Yystate) == (-16)))
745
746 #define YYTABLE_NINF -5
747
748 #define yytable_value_is_error(Yytable_value) \
749 0
750
751 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
752 STATE-NUM. */
753 static const yytype_int8 yypact[] =
754 {
755 0, -9, -16, -16, 10, -16, 0, 12, -16, -16,
756 -16, -16, -16, -16, 3, 3, -16, 9, 9, -16,
757 11, 8, 19, 15, -16, 14, -6, -16, 25, 21,
758 -6, -16, 1, -16, -6, 20, -16, -16, 18, 26,
759 11, 1, -16, -16, -16, 1, -16, 15, -16, -16,
760 -16
761 };
762
763 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
764 Performed when YYTABLE does not specify something else to do. Zero
765 means the default is an error. */
766 static const yytype_uint8 yydefact[] =
767 {
768 0, 0, 8, 24, 0, 2, 0, 0, 9, 1,
769 3, 25, 26, 27, 0, 0, 28, 0, 0, 29,
770 23, 0, 0, 21, 5, 0, 0, 6, 0, 19,
771 0, 20, 12, 22, 0, 0, 15, 14, 0, 0,
772 23, 12, 13, 17, 18, 12, 7, 21, 11, 10,
773 16
774 };
775
776 /* YYPGOTO[NTERM-NUM]. */
777 static const yytype_int8 yypgoto[] =
778 {
779 -16, -16, 32, -16, -16, -15, -16, 2, -3, -8,
780 4, -16, 34, 27, 28
781 };
782
783 /* YYDEFGOTO[NTERM-NUM]. */
784 static const yytype_int8 yydefgoto[] =
785 {
786 -1, 4, 5, 6, 32, 39, 40, 41, 31, 27,
787 23, 7, 42, 17, 20
788 };
789
790 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
791 positive, shift that token. If negative, reduce the rule whose
792 number is the opposite. If YYTABLE_NINF, syntax error. */
793 static const yytype_int8 yytable[] =
794 {
795 -4, 1, 8, 29, 11, 12, 13, 36, 37, 30,
796 9, 2, 3, 16, 38, 11, 12, 13, 19, 24,
797 14, 11, 12, 13, 36, 37, 48, 35, 25, 22,
798 49, 43, 26, 28, 33, 34, 44, 46, 10, 50,
799 45, 15, 18, 0, 47, 0, 21
800 };
801
802 static const yytype_int8 yycheck[] =
803 {
804 0, 1, 11, 9, 3, 4, 5, 6, 7, 15,
805 0, 11, 12, 10, 13, 3, 4, 5, 9, 11,
806 8, 3, 4, 5, 6, 7, 41, 30, 9, 18,
807 45, 34, 17, 19, 9, 14, 16, 11, 6, 47,
808 38, 7, 15, -1, 40, -1, 18
809 };
810
811 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
812 symbol of state STATE-NUM. */
813 static const yytype_uint8 yystos[] =
814 {
815 0, 1, 11, 12, 21, 22, 23, 31, 11, 0,
816 22, 3, 4, 5, 8, 32, 10, 33, 33, 9,
817 34, 34, 18, 30, 11, 9, 17, 29, 19, 9,
818 15, 28, 24, 9, 14, 28, 6, 7, 13, 25,
819 26, 27, 32, 28, 16, 27, 11, 30, 25, 25,
820 29
821 };
822
823 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
824 static const yytype_uint8 yyr1[] =
825 {
826 0, 20, 21, 22, 22, 23, 24, 23, 23, 23,
827 25, 25, 25, 26, 26, 26, 27, 28, 28, 28,
828 29, 29, 30, 30, 31, 32, 32, 32, 33, 34
829 };
830
831 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
832 static const yytype_uint8 yyr2[] =
833 {
834 0, 2, 1, 2, 0, 5, 0, 9, 1, 2,
835 3, 2, 0, 1, 1, 1, 3, 3, 3, 1,
836 2, 0, 4, 0, 1, 1, 1, 1, 1, 1
837 };
838
839
840 #define yyerrok (yyerrstatus = 0)
841 #define yyclearin (yychar = YYEMPTY)
842 #define YYEMPTY (-2)
843 #define YYEOF 0
844
845 #define YYACCEPT goto yyacceptlab
846 #define YYABORT goto yyabortlab
847 #define YYERROR goto yyerrorlab
848
849
850 #define YYRECOVERING() (!!yyerrstatus)
851
852 #define YYBACKUP(Token, Value) \
853 do \
854 if (yychar == YYEMPTY) \
855 { \
856 yychar = (Token); \
857 yylval = (Value); \
858 YYPOPSTACK (yylen); \
859 yystate = *yyssp; \
860 goto yybackup; \
861 } \
862 else \
863 { \
864 yyerror (YY_("syntax error: cannot back up")); \
865 YYERROR; \
866 } \
867 while (0)
868
869 /* Error token number */
870 #define YYTERROR 1
871 #define YYERRCODE 256
872
873
874
875 /* Enable debugging if requested. */
876 #if YYDEBUG
877
878 # ifndef YYFPRINTF
879 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
880 # define YYFPRINTF fprintf
881 # endif
882
883 # define YYDPRINTF(Args) \
884 do { \
885 if (yydebug) \
886 YYFPRINTF Args; \
887 } while (0)
888
889 /* This macro is provided for backward compatibility. */
890 #ifndef YY_LOCATION_PRINT
891 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
892 #endif
893
894
895 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
896 do { \
897 if (yydebug) \
898 { \
899 YYFPRINTF (stderr, "%s ", Title); \
900 yy_symbol_print (stderr, \
901 Type, Value); \
902 YYFPRINTF (stderr, "\n"); \
903 } \
904 } while (0)
905
906
907 /*----------------------------------------.
908 | Print this symbol's value on YYOUTPUT. |
909 `----------------------------------------*/
910
911 static void
912 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
913 {
914 FILE *yyo = yyoutput;
915 YYUSE (yyo);
916 if (!yyvaluep)
917 return;
918 # ifdef YYPRINT
919 if (yytype < YYNTOKENS)
920 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
921 # endif
922 YYUSE (yytype);
923 }
924
925
926 /*--------------------------------.
927 | Print this symbol on YYOUTPUT. |
928 `--------------------------------*/
929
930 static void
931 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
932 {
933 YYFPRINTF (yyoutput, "%s %s (",
934 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
935
936 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
937 YYFPRINTF (yyoutput, ")");
938 }
939
940 /*------------------------------------------------------------------.
941 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
942 | TOP (included). |
943 `------------------------------------------------------------------*/
944
945 static void
946 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
947 {
948 YYFPRINTF (stderr, "Stack now");
949 for (; yybottom <= yytop; yybottom++)
950 {
951 int yybot = *yybottom;
952 YYFPRINTF (stderr, " %d", yybot);
953 }
954 YYFPRINTF (stderr, "\n");
955 }
956
957 # define YY_STACK_PRINT(Bottom, Top) \
958 do { \
959 if (yydebug) \
960 yy_stack_print ((Bottom), (Top)); \
961 } while (0)
962
963
964 /*------------------------------------------------.
965 | Report that the YYRULE is going to be reduced. |
966 `------------------------------------------------*/
967
968 static void
969 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
970 {
971 unsigned long int yylno = yyrline[yyrule];
972 int yynrhs = yyr2[yyrule];
973 int yyi;
974 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
975 yyrule - 1, yylno);
976 /* The symbols being reduced. */
977 for (yyi = 0; yyi < yynrhs; yyi++)
978 {
979 YYFPRINTF (stderr, " $%d = ", yyi + 1);
980 yy_symbol_print (stderr,
981 yystos[yyssp[yyi + 1 - yynrhs]],
982 &(yyvsp[(yyi + 1) - (yynrhs)])
983 );
984 YYFPRINTF (stderr, "\n");
985 }
986 }
987
988 # define YY_REDUCE_PRINT(Rule) \
989 do { \
990 if (yydebug) \
991 yy_reduce_print (yyssp, yyvsp, Rule); \
992 } while (0)
993
994 /* Nonzero means print parse trace. It is left uninitialized so that
995 multiple parsers can coexist. */
996 int yydebug;
997 #else /* !YYDEBUG */
998 # define YYDPRINTF(Args)
999 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1000 # define YY_STACK_PRINT(Bottom, Top)
1001 # define YY_REDUCE_PRINT(Rule)
1002 #endif /* !YYDEBUG */
1003
1004
1005 /* YYINITDEPTH -- initial size of the parser's stacks. */
1006 #ifndef YYINITDEPTH
1007 # define YYINITDEPTH 200
1008 #endif
1009
1010 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1011 if the built-in stack extension method is used).
1012
1013 Do not make this value too large; the results are undefined if
1014 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1015 evaluated with infinite-precision integer arithmetic. */
1016
1017 #ifndef YYMAXDEPTH
1018 # define YYMAXDEPTH 10000
1019 #endif
1020
1021
1022 #if YYERROR_VERBOSE
1023
1024 # ifndef yystrlen
1025 # if defined __GLIBC__ && defined _STRING_H
1026 # define yystrlen strlen
1027 # else
1028 /* Return the length of YYSTR. */
1029 static YYSIZE_T
1030 yystrlen (const char *yystr)
1031 {
1032 YYSIZE_T yylen;
1033 for (yylen = 0; yystr[yylen]; yylen++)
1034 continue;
1035 return yylen;
1036 }
1037 # endif
1038 # endif
1039
1040 # ifndef yystpcpy
1041 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1042 # define yystpcpy stpcpy
1043 # else
1044 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1045 YYDEST. */
1046 static char *
1047 yystpcpy (char *yydest, const char *yysrc)
1048 {
1049 char *yyd = yydest;
1050 const char *yys = yysrc;
1051
1052 while ((*yyd++ = *yys++) != '\0')
1053 continue;
1054
1055 return yyd - 1;
1056 }
1057 # endif
1058 # endif
1059
1060 # ifndef yytnamerr
1061 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1062 quotes and backslashes, so that it's suitable for yyerror. The
1063 heuristic is that double-quoting is unnecessary unless the string
1064 contains an apostrophe, a comma, or backslash (other than
1065 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1066 null, do not copy; instead, return the length of what the result
1067 would have been. */
1068 static YYSIZE_T
1069 yytnamerr (char *yyres, const char *yystr)
1070 {
1071 if (*yystr == '"')
1072 {
1073 YYSIZE_T yyn = 0;
1074 char const *yyp = yystr;
1075
1076 for (;;)
1077 switch (*++yyp)
1078 {
1079 case '\'':
1080 case ',':
1081 goto do_not_strip_quotes;
1082
1083 case '\\':
1084 if (*++yyp != '\\')
1085 goto do_not_strip_quotes;
1086 /* Fall through. */
1087 default:
1088 if (yyres)
1089 yyres[yyn] = *yyp;
1090 yyn++;
1091 break;
1092
1093 case '"':
1094 if (yyres)
1095 yyres[yyn] = '\0';
1096 return yyn;
1097 }
1098 do_not_strip_quotes: ;
1099 }
1100
1101 if (! yyres)
1102 return yystrlen (yystr);
1103
1104 return yystpcpy (yyres, yystr) - yyres;
1105 }
1106 # endif
1107
1108 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1109 about the unexpected token YYTOKEN for the state stack whose top is
1110 YYSSP.
1111
1112 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
1113 not large enough to hold the message. In that case, also set
1114 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
1115 required number of bytes is too large to store. */
1116 static int
1117 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1118 yytype_int16 *yyssp, int yytoken)
1119 {
1120 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1121 YYSIZE_T yysize = yysize0;
1122 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1123 /* Internationalized format string. */
1124 const char *yyformat = YY_NULLPTR;
1125 /* Arguments of yyformat. */
1126 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1127 /* Number of reported tokens (one for the "unexpected", one per
1128 "expected"). */
1129 int yycount = 0;
1130
1131 /* There are many possibilities here to consider:
1132 - If this state is a consistent state with a default action, then
1133 the only way this function was invoked is if the default action
1134 is an error action. In that case, don't check for expected
1135 tokens because there are none.
1136 - The only way there can be no lookahead present (in yychar) is if
1137 this state is a consistent state with a default action. Thus,
1138 detecting the absence of a lookahead is sufficient to determine
1139 that there is no unexpected or expected token to report. In that
1140 case, just report a simple "syntax error".
1141 - Don't assume there isn't a lookahead just because this state is a
1142 consistent state with a default action. There might have been a
1143 previous inconsistent state, consistent state with a non-default
1144 action, or user semantic action that manipulated yychar.
1145 - Of course, the expected token list depends on states to have
1146 correct lookahead information, and it depends on the parser not
1147 to perform extra reductions after fetching a lookahead from the
1148 scanner and before detecting a syntax error. Thus, state merging
1149 (from LALR or IELR) and default reductions corrupt the expected
1150 token list. However, the list is correct for canonical LR with
1151 one exception: it will still contain any token that will not be
1152 accepted due to an error action in a later state.
1153 */
1154 if (yytoken != YYEMPTY)
1155 {
1156 int yyn = yypact[*yyssp];
1157 yyarg[yycount++] = yytname[yytoken];
1158 if (!yypact_value_is_default (yyn))
1159 {
1160 /* Start YYX at -YYN if negative to avoid negative indexes in
1161 YYCHECK. In other words, skip the first -YYN actions for
1162 this state because they are default actions. */
1163 int yyxbegin = yyn < 0 ? -yyn : 0;
1164 /* Stay within bounds of both yycheck and yytname. */
1165 int yychecklim = YYLAST - yyn + 1;
1166 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1167 int yyx;
1168
1169 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1170 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1171 && !yytable_value_is_error (yytable[yyx + yyn]))
1172 {
1173 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1174 {
1175 yycount = 1;
1176 yysize = yysize0;
1177 break;
1178 }
1179 yyarg[yycount++] = yytname[yyx];
1180 {
1181 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1182 if (! (yysize <= yysize1
1183 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1184 return 2;
1185 yysize = yysize1;
1186 }
1187 }
1188 }
1189 }
1190
1191 switch (yycount)
1192 {
1193 # define YYCASE_(N, S) \
1194 case N: \
1195 yyformat = S; \
1196 break
1197 YYCASE_(0, YY_("syntax error"));
1198 YYCASE_(1, YY_("syntax error, unexpected %s"));
1199 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1200 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1201 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1202 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1203 # undef YYCASE_
1204 }
1205
1206 {
1207 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1208 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1209 return 2;
1210 yysize = yysize1;
1211 }
1212
1213 if (*yymsg_alloc < yysize)
1214 {
1215 *yymsg_alloc = 2 * yysize;
1216 if (! (yysize <= *yymsg_alloc
1217 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1218 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1219 return 1;
1220 }
1221
1222 /* Avoid sprintf, as that infringes on the user's name space.
1223 Don't have undefined behavior even if the translation
1224 produced a string with the wrong number of "%s"s. */
1225 {
1226 char *yyp = *yymsg;
1227 int yyi = 0;
1228 while ((*yyp = *yyformat) != '\0')
1229 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1230 {
1231 yyp += yytnamerr (yyp, yyarg[yyi++]);
1232 yyformat += 2;
1233 }
1234 else
1235 {
1236 yyp++;
1237 yyformat++;
1238 }
1239 }
1240 return 0;
1241 }
1242 #endif /* YYERROR_VERBOSE */
1243
1244 /*-----------------------------------------------.
1245 | Release the memory associated to this symbol. |
1246 `-----------------------------------------------*/
1247
1248 static void
1249 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1250 {
1251 YYUSE (yyvaluep);
1252 if (!yymsg)
1253 yymsg = "Deleting";
1254 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1255
1256 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1257 YYUSE (yytype);
1258 YY_IGNORE_MAYBE_UNINITIALIZED_END
1259 }
1260
1261
1262
1263
1264 /* The lookahead symbol. */
1265 int yychar;
1266
1267 /* The semantic value of the lookahead symbol. */
1268 YYSTYPE yylval;
1269 /* Number of syntax errors so far. */
1270 int yynerrs;
1271
1272
1273 /*----------.
1274 | yyparse. |
1275 `----------*/
1276
1277 int
1278 yyparse (void)
1279 {
1280 int yystate;
1281 /* Number of tokens to shift before error messages enabled. */
1282 int yyerrstatus;
1283
1284 /* The stacks and their tools:
1285 'yyss': related to states.
1286 'yyvs': related to semantic values.
1287
1288 Refer to the stacks through separate pointers, to allow yyoverflow
1289 to reallocate them elsewhere. */
1290
1291 /* The state stack. */
1292 yytype_int16 yyssa[YYINITDEPTH];
1293 yytype_int16 *yyss;
1294 yytype_int16 *yyssp;
1295
1296 /* The semantic value stack. */
1297 YYSTYPE yyvsa[YYINITDEPTH];
1298 YYSTYPE *yyvs;
1299 YYSTYPE *yyvsp;
1300
1301 YYSIZE_T yystacksize;
1302
1303 int yyn;
1304 int yyresult;
1305 /* Lookahead token as an internal (translated) token number. */
1306 int yytoken = 0;
1307 /* The variables used to return semantic value and location from the
1308 action routines. */
1309 YYSTYPE yyval;
1310
1311 #if YYERROR_VERBOSE
1312 /* Buffer for error messages, and its allocated size. */
1313 char yymsgbuf[128];
1314 char *yymsg = yymsgbuf;
1315 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1316 #endif
1317
1318 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
1319
1320 /* The number of symbols on the RHS of the reduced rule.
1321 Keep to zero when no symbol should be popped. */
1322 int yylen = 0;
1323
1324 yyssp = yyss = yyssa;
1325 yyvsp = yyvs = yyvsa;
1326 yystacksize = YYINITDEPTH;
1327
1328 YYDPRINTF ((stderr, "Starting parse\n"));
1329
1330 yystate = 0;
1331 yyerrstatus = 0;
1332 yynerrs = 0;
1333 yychar = YYEMPTY; /* Cause a token to be read. */
1334 goto yysetstate;
1335
1336 /*------------------------------------------------------------.
1337 | yynewstate -- Push a new state, which is found in yystate. |
1338 `------------------------------------------------------------*/
1339 yynewstate:
1340 /* In all cases, when you get here, the value and location stacks
1341 have just been pushed. So pushing a state here evens the stacks. */
1342 yyssp++;
1343
1344 yysetstate:
1345 *yyssp = yystate;
1346
1347 if (yyss + yystacksize - 1 <= yyssp)
1348 {
1349 /* Get the current used size of the three stacks, in elements. */
1350 YYSIZE_T yysize = yyssp - yyss + 1;
1351
1352 #ifdef yyoverflow
1353 {
1354 /* Give user a chance to reallocate the stack. Use copies of
1355 these so that the &'s don't force the real ones into
1356 memory. */
1357 YYSTYPE *yyvs1 = yyvs;
1358 yytype_int16 *yyss1 = yyss;
1359
1360 /* Each stack pointer address is followed by the size of the
1361 data in use in that stack, in bytes. This used to be a
1362 conditional around just the two extra args, but that might
1363 be undefined if yyoverflow is a macro. */
1364 yyoverflow (YY_("memory exhausted"),
1365 &yyss1, yysize * sizeof (*yyssp),
1366 &yyvs1, yysize * sizeof (*yyvsp),
1367 &yystacksize);
1368
1369 yyss = yyss1;
1370 yyvs = yyvs1;
1371 }
1372 #else /* no yyoverflow */
1373 # ifndef YYSTACK_RELOCATE
1374 goto yyexhaustedlab;
1375 # else
1376 /* Extend the stack our own way. */
1377 if (YYMAXDEPTH <= yystacksize)
1378 goto yyexhaustedlab;
1379 yystacksize *= 2;
1380 if (YYMAXDEPTH < yystacksize)
1381 yystacksize = YYMAXDEPTH;
1382
1383 {
1384 yytype_int16 *yyss1 = yyss;
1385 union yyalloc *yyptr =
1386 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1387 if (! yyptr)
1388 goto yyexhaustedlab;
1389 YYSTACK_RELOCATE (yyss_alloc, yyss);
1390 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1391 # undef YYSTACK_RELOCATE
1392 if (yyss1 != yyssa)
1393 YYSTACK_FREE (yyss1);
1394 }
1395 # endif
1396 #endif /* no yyoverflow */
1397
1398 yyssp = yyss + yysize - 1;
1399 yyvsp = yyvs + yysize - 1;
1400
1401 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1402 (unsigned long int) yystacksize));
1403
1404 if (yyss + yystacksize - 1 <= yyssp)
1405 YYABORT;
1406 }
1407
1408 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1409
1410 if (yystate == YYFINAL)
1411 YYACCEPT;
1412
1413 goto yybackup;
1414
1415 /*-----------.
1416 | yybackup. |
1417 `-----------*/
1418 yybackup:
1419
1420 /* Do appropriate processing given the current state. Read a
1421 lookahead token if we need one and don't already have one. */
1422
1423 /* First try to decide what to do without reference to lookahead token. */
1424 yyn = yypact[yystate];
1425 if (yypact_value_is_default (yyn))
1426 goto yydefault;
1427
1428 /* Not known => get a lookahead token if don't already have one. */
1429
1430 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1431 if (yychar == YYEMPTY)
1432 {
1433 YYDPRINTF ((stderr, "Reading a token: "));
1434 yychar = yylex ();
1435 }
1436
1437 if (yychar <= YYEOF)
1438 {
1439 yychar = yytoken = YYEOF;
1440 YYDPRINTF ((stderr, "Now at end of input.\n"));
1441 }
1442 else
1443 {
1444 yytoken = YYTRANSLATE (yychar);
1445 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1446 }
1447
1448 /* If the proper action on seeing token YYTOKEN is to reduce or to
1449 detect an error, take that action. */
1450 yyn += yytoken;
1451 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1452 goto yydefault;
1453 yyn = yytable[yyn];
1454 if (yyn <= 0)
1455 {
1456 if (yytable_value_is_error (yyn))
1457 goto yyerrlab;
1458 yyn = -yyn;
1459 goto yyreduce;
1460 }
1461
1462 /* Count tokens shifted since error; after three, turn off error
1463 status. */
1464 if (yyerrstatus)
1465 yyerrstatus--;
1466
1467 /* Shift the lookahead token. */
1468 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1469
1470 /* Discard the shifted token. */
1471 yychar = YYEMPTY;
1472
1473 yystate = yyn;
1474 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1475 *++yyvsp = yylval;
1476 YY_IGNORE_MAYBE_UNINITIALIZED_END
1477
1478 goto yynewstate;
1479
1480
1481 /*-----------------------------------------------------------.
1482 | yydefault -- do the default action for the current state. |
1483 `-----------------------------------------------------------*/
1484 yydefault:
1485 yyn = yydefact[yystate];
1486 if (yyn == 0)
1487 goto yyerrlab;
1488 goto yyreduce;
1489
1490
1491 /*-----------------------------.
1492 | yyreduce -- Do a reduction. |
1493 `-----------------------------*/
1494 yyreduce:
1495 /* yyn is the number of a rule to reduce with. */
1496 yylen = yyr2[yyn];
1497
1498 /* If YYLEN is nonzero, implement the default value of the action:
1499 '$$ = $1'.
1500
1501 Otherwise, the following line sets YYVAL to garbage.
1502 This behavior is undocumented and Bison
1503 users should not rely upon it. Assigning to YYVAL
1504 unconditionally makes the parser a bit smaller, and it avoids a
1505 GCC warning that YYVAL may be used uninitialized. */
1506 yyval = yyvsp[1-yylen];
1507
1508
1509 YY_REDUCE_PRINT (yyn);
1510 switch (yyn)
1511 {
1512 case 5:
1513 #line 309 "./itbl-parse.y" /* yacc.c:1646 */
1514 {
1515 DBG (("line %d: entry pnum=%d type=%d name=%s value=x%x\n",
1516 insntbl_line, (yyvsp[-4].num), (yyvsp[-3].num), (yyvsp[-2].str), (yyvsp[-1].val)));
1517 itbl_add_reg ((yyvsp[-4].num), (yyvsp[-3].num), (yyvsp[-2].str), (yyvsp[-1].val));
1518 }
1519 #line 1520 "itbl-parse.c" /* yacc.c:1646 */
1520 break;
1521
1522 case 6:
1523 #line 315 "./itbl-parse.y" /* yacc.c:1646 */
1524 {
1525 DBG (("line %d: entry pnum=%d type=INSN name=%s value=x%x",
1526 insntbl_line, (yyvsp[-5].num), (yyvsp[-3].str), (yyvsp[-2].val)));
1527 DBG ((" sbit=%d ebit=%d flags=0x%x\n", sbit, ebit, (yyvsp[0].val)));
1528 insn=itbl_add_insn ((yyvsp[-5].num), (yyvsp[-3].str), (yyvsp[-2].val), sbit, ebit, (yyvsp[0].val));
1529 }
1530 #line 1531 "itbl-parse.c" /* yacc.c:1646 */
1531 break;
1532
1533 case 7:
1534 #line 322 "./itbl-parse.y" /* yacc.c:1646 */
1535 {}
1536 #line 1537 "itbl-parse.c" /* yacc.c:1646 */
1537 break;
1538
1539 case 13:
1540 #line 335 "./itbl-parse.y" /* yacc.c:1646 */
1541 {
1542 DBGL2 (("ftype\n"));
1543 (yyval.num) = (yyvsp[0].num);
1544 }
1545 #line 1546 "itbl-parse.c" /* yacc.c:1646 */
1546 break;
1547
1548 case 14:
1549 #line 340 "./itbl-parse.y" /* yacc.c:1646 */
1550 {
1551 DBGL2 (("addr\n"));
1552 (yyval.num) = ADDR;
1553 }
1554 #line 1555 "itbl-parse.c" /* yacc.c:1646 */
1555 break;
1556
1557 case 15:
1558 #line 345 "./itbl-parse.y" /* yacc.c:1646 */
1559 {
1560 DBGL2 (("immed\n"));
1561 (yyval.num) = IMMED;
1562 }
1563 #line 1564 "itbl-parse.c" /* yacc.c:1646 */
1564 break;
1565
1566 case 16:
1567 #line 353 "./itbl-parse.y" /* yacc.c:1646 */
1568 {
1569 DBG (("line %d: field type=%d sbit=%d ebit=%d, flags=0x%x\n",
1570 insntbl_line, (yyvsp[-2].num), sbit, ebit, (yyvsp[0].val)));
1571 itbl_add_operand (insn, (yyvsp[-2].num), sbit, ebit, (yyvsp[0].val));
1572 }
1573 #line 1574 "itbl-parse.c" /* yacc.c:1646 */
1574 break;
1575
1576 case 17:
1577 #line 362 "./itbl-parse.y" /* yacc.c:1646 */
1578 {
1579 (yyval.val) = (yyvsp[-2].num) | (yyvsp[0].val);
1580 }
1581 #line 1582 "itbl-parse.c" /* yacc.c:1646 */
1582 break;
1583
1584 case 18:
1585 #line 366 "./itbl-parse.y" /* yacc.c:1646 */
1586 {
1587 (yyval.val) = (yyvsp[-1].val);
1588 }
1589 #line 1590 "itbl-parse.c" /* yacc.c:1646 */
1590 break;
1591
1592 case 19:
1593 #line 370 "./itbl-parse.y" /* yacc.c:1646 */
1594 {
1595 (yyval.val) = (yyvsp[0].num);
1596 }
1597 #line 1598 "itbl-parse.c" /* yacc.c:1646 */
1598 break;
1599
1600 case 20:
1601 #line 377 "./itbl-parse.y" /* yacc.c:1646 */
1602 {
1603 DBGL2 (("flags=%d\n", (yyvsp[0].val)));
1604 (yyval.val) = (yyvsp[0].val);
1605 }
1606 #line 1607 "itbl-parse.c" /* yacc.c:1646 */
1607 break;
1608
1609 case 21:
1610 #line 382 "./itbl-parse.y" /* yacc.c:1646 */
1611 {
1612 (yyval.val) = 0;
1613 }
1614 #line 1615 "itbl-parse.c" /* yacc.c:1646 */
1615 break;
1616
1617 case 22:
1618 #line 389 "./itbl-parse.y" /* yacc.c:1646 */
1619 {
1620 DBGL2 (("range %d %d\n", (yyvsp[-2].num), (yyvsp[0].num)));
1621 sbit = (yyvsp[-2].num);
1622 ebit = (yyvsp[0].num);
1623 }
1624 #line 1625 "itbl-parse.c" /* yacc.c:1646 */
1625 break;
1626
1627 case 23:
1628 #line 395 "./itbl-parse.y" /* yacc.c:1646 */
1629 {
1630 sbit = 31;
1631 ebit = 0;
1632 }
1633 #line 1634 "itbl-parse.c" /* yacc.c:1646 */
1634 break;
1635
1636 case 24:
1637 #line 403 "./itbl-parse.y" /* yacc.c:1646 */
1638 {
1639 DBGL2 (("pnum=%d\n",(yyvsp[0].num)));
1640 (yyval.num) = (yyvsp[0].num);
1641 }
1642 #line 1643 "itbl-parse.c" /* yacc.c:1646 */
1643 break;
1644
1645 case 25:
1646 #line 411 "./itbl-parse.y" /* yacc.c:1646 */
1647 {
1648 DBGL2 (("dreg\n"));
1649 (yyval.num) = DREG;
1650 }
1651 #line 1652 "itbl-parse.c" /* yacc.c:1646 */
1652 break;
1653
1654 case 26:
1655 #line 416 "./itbl-parse.y" /* yacc.c:1646 */
1656 {
1657 DBGL2 (("creg\n"));
1658 (yyval.num) = CREG;
1659 }
1660 #line 1661 "itbl-parse.c" /* yacc.c:1646 */
1661 break;
1662
1663 case 27:
1664 #line 421 "./itbl-parse.y" /* yacc.c:1646 */
1665 {
1666 DBGL2 (("greg\n"));
1667 (yyval.num) = GREG;
1668 }
1669 #line 1670 "itbl-parse.c" /* yacc.c:1646 */
1670 break;
1671
1672 case 28:
1673 #line 429 "./itbl-parse.y" /* yacc.c:1646 */
1674 {
1675 DBGL2 (("name=%s\n",(yyvsp[0].str)));
1676 (yyval.str) = (yyvsp[0].str);
1677 }
1678 #line 1679 "itbl-parse.c" /* yacc.c:1646 */
1679 break;
1680
1681 case 29:
1682 #line 445 "./itbl-parse.y" /* yacc.c:1646 */
1683 {
1684 DBGL2 (("val=x%x\n",(yyvsp[0].num)));
1685 (yyval.val) = (yyvsp[0].num);
1686 }
1687 #line 1688 "itbl-parse.c" /* yacc.c:1646 */
1688 break;
1689
1690
1691 #line 1692 "itbl-parse.c" /* yacc.c:1646 */
1692 default: break;
1693 }
1694 /* User semantic actions sometimes alter yychar, and that requires
1695 that yytoken be updated with the new translation. We take the
1696 approach of translating immediately before every use of yytoken.
1697 One alternative is translating here after every semantic action,
1698 but that translation would be missed if the semantic action invokes
1699 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
1700 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
1701 incorrect destructor might then be invoked immediately. In the
1702 case of YYERROR or YYBACKUP, subsequent parser actions might lead
1703 to an incorrect destructor call or verbose syntax error message
1704 before the lookahead is translated. */
1705 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1706
1707 YYPOPSTACK (yylen);
1708 yylen = 0;
1709 YY_STACK_PRINT (yyss, yyssp);
1710
1711 *++yyvsp = yyval;
1712
1713 /* Now 'shift' the result of the reduction. Determine what state
1714 that goes to, based on the state we popped back to and the rule
1715 number reduced by. */
1716
1717 yyn = yyr1[yyn];
1718
1719 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1720 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1721 yystate = yytable[yystate];
1722 else
1723 yystate = yydefgoto[yyn - YYNTOKENS];
1724
1725 goto yynewstate;
1726
1727
1728 /*--------------------------------------.
1729 | yyerrlab -- here on detecting error. |
1730 `--------------------------------------*/
1731 yyerrlab:
1732 /* Make sure we have latest lookahead translation. See comments at
1733 user semantic actions for why this is necessary. */
1734 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
1735
1736 /* If not already recovering from an error, report this error. */
1737 if (!yyerrstatus)
1738 {
1739 ++yynerrs;
1740 #if ! YYERROR_VERBOSE
1741 yyerror (YY_("syntax error"));
1742 #else
1743 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
1744 yyssp, yytoken)
1745 {
1746 char const *yymsgp = YY_("syntax error");
1747 int yysyntax_error_status;
1748 yysyntax_error_status = YYSYNTAX_ERROR;
1749 if (yysyntax_error_status == 0)
1750 yymsgp = yymsg;
1751 else if (yysyntax_error_status == 1)
1752 {
1753 if (yymsg != yymsgbuf)
1754 YYSTACK_FREE (yymsg);
1755 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
1756 if (!yymsg)
1757 {
1758 yymsg = yymsgbuf;
1759 yymsg_alloc = sizeof yymsgbuf;
1760 yysyntax_error_status = 2;
1761 }
1762 else
1763 {
1764 yysyntax_error_status = YYSYNTAX_ERROR;
1765 yymsgp = yymsg;
1766 }
1767 }
1768 yyerror (yymsgp);
1769 if (yysyntax_error_status == 2)
1770 goto yyexhaustedlab;
1771 }
1772 # undef YYSYNTAX_ERROR
1773 #endif
1774 }
1775
1776
1777
1778 if (yyerrstatus == 3)
1779 {
1780 /* If just tried and failed to reuse lookahead token after an
1781 error, discard it. */
1782
1783 if (yychar <= YYEOF)
1784 {
1785 /* Return failure if at end of input. */
1786 if (yychar == YYEOF)
1787 YYABORT;
1788 }
1789 else
1790 {
1791 yydestruct ("Error: discarding",
1792 yytoken, &yylval);
1793 yychar = YYEMPTY;
1794 }
1795 }
1796
1797 /* Else will try to reuse lookahead token after shifting the error
1798 token. */
1799 goto yyerrlab1;
1800
1801
1802 /*---------------------------------------------------.
1803 | yyerrorlab -- error raised explicitly by YYERROR. |
1804 `---------------------------------------------------*/
1805 yyerrorlab:
1806
1807 /* Pacify compilers like GCC when the user code never invokes
1808 YYERROR and the label yyerrorlab therefore never appears in user
1809 code. */
1810 if (/*CONSTCOND*/ 0)
1811 goto yyerrorlab;
1812
1813 /* Do not reclaim the symbols of the rule whose action triggered
1814 this YYERROR. */
1815 YYPOPSTACK (yylen);
1816 yylen = 0;
1817 YY_STACK_PRINT (yyss, yyssp);
1818 yystate = *yyssp;
1819 goto yyerrlab1;
1820
1821
1822 /*-------------------------------------------------------------.
1823 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1824 `-------------------------------------------------------------*/
1825 yyerrlab1:
1826 yyerrstatus = 3; /* Each real token shifted decrements this. */
1827
1828 for (;;)
1829 {
1830 yyn = yypact[yystate];
1831 if (!yypact_value_is_default (yyn))
1832 {
1833 yyn += YYTERROR;
1834 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1835 {
1836 yyn = yytable[yyn];
1837 if (0 < yyn)
1838 break;
1839 }
1840 }
1841
1842 /* Pop the current state because it cannot handle the error token. */
1843 if (yyssp == yyss)
1844 YYABORT;
1845
1846
1847 yydestruct ("Error: popping",
1848 yystos[yystate], yyvsp);
1849 YYPOPSTACK (1);
1850 yystate = *yyssp;
1851 YY_STACK_PRINT (yyss, yyssp);
1852 }
1853
1854 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1855 *++yyvsp = yylval;
1856 YY_IGNORE_MAYBE_UNINITIALIZED_END
1857
1858
1859 /* Shift the error token. */
1860 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1861
1862 yystate = yyn;
1863 goto yynewstate;
1864
1865
1866 /*-------------------------------------.
1867 | yyacceptlab -- YYACCEPT comes here. |
1868 `-------------------------------------*/
1869 yyacceptlab:
1870 yyresult = 0;
1871 goto yyreturn;
1872
1873 /*-----------------------------------.
1874 | yyabortlab -- YYABORT comes here. |
1875 `-----------------------------------*/
1876 yyabortlab:
1877 yyresult = 1;
1878 goto yyreturn;
1879
1880 #if !defined yyoverflow || YYERROR_VERBOSE
1881 /*-------------------------------------------------.
1882 | yyexhaustedlab -- memory exhaustion comes here. |
1883 `-------------------------------------------------*/
1884 yyexhaustedlab:
1885 yyerror (YY_("memory exhausted"));
1886 yyresult = 2;
1887 /* Fall through. */
1888 #endif
1889
1890 yyreturn:
1891 if (yychar != YYEMPTY)
1892 {
1893 /* Make sure we have latest lookahead translation. See comments at
1894 user semantic actions for why this is necessary. */
1895 yytoken = YYTRANSLATE (yychar);
1896 yydestruct ("Cleanup: discarding lookahead",
1897 yytoken, &yylval);
1898 }
1899 /* Do not reclaim the symbols of the rule whose action triggered
1900 this YYABORT or YYACCEPT. */
1901 YYPOPSTACK (yylen);
1902 YY_STACK_PRINT (yyss, yyssp);
1903 while (yyssp != yyss)
1904 {
1905 yydestruct ("Cleanup: popping",
1906 yystos[*yyssp], yyvsp);
1907 YYPOPSTACK (1);
1908 }
1909 #ifndef yyoverflow
1910 if (yyss != yyssa)
1911 YYSTACK_FREE (yyss);
1912 #endif
1913 #if YYERROR_VERBOSE
1914 if (yymsg != yymsgbuf)
1915 YYSTACK_FREE (yymsg);
1916 #endif
1917 return yyresult;
1918 }
1919 #line 450 "./itbl-parse.y" /* yacc.c:1906 */
1920
1921
1922 static int
1923 yyerror (const char *msg)
1924 {
1925 printf ("line %d: %s\n", insntbl_line, msg);
1926 return 0;
1927 }
1928