fixes for host gcc 4.6.1
[zpugcc/jano.git] / toolchain / binutils / gas / itbl-parse.c
blob1974a7a2c15e16ad0ab16d2382a3f900bae5adb7
1 /* A Bison parser, made from itbl-parse.y
2 by GNU bison 1.35. */
4 #define YYBISON 1 /* Identify Bison output. */
6 # define DREG 257
7 # define CREG 258
8 # define GREG 259
9 # define IMMED 260
10 # define ADDR 261
11 # define INSN 262
12 # define NUM 263
13 # define ID 264
14 # define NL 265
15 # define PNUM 266
17 #line 21 "itbl-parse.y"
20 /*
22 Yacc grammar for instruction table entries.
24 =======================================================================
25 Original Instruction table specification document:
27 MIPS Coprocessor Table Specification
28 ====================================
30 This document describes the format of the MIPS coprocessor table. The
31 table specifies a list of valid functions, data registers and control
32 registers that can be used in coprocessor instructions. This list,
33 together with the coprocessor instruction classes listed below,
34 specifies the complete list of coprocessor instructions that will
35 be recognized and assembled by the GNU assembler. In effect,
36 this makes the GNU assembler table-driven, where the table is
37 specified by the programmer.
39 The table is an ordinary text file that the GNU assembler reads when
40 it starts. Using the information in the table, the assembler
41 generates an internal list of valid coprocessor registers and
42 functions. The assembler uses this internal list in addition to the
43 standard MIPS registers and instructions which are built-in to the
44 assembler during code generation.
46 To specify the coprocessor table when invoking the GNU assembler, use
47 the command line option "--itbl file", where file is the
48 complete name of the table, including path and extension.
50 Examples:
52 gas -t cop.tbl test.s -o test.o
53 gas -t /usr/local/lib/cop.tbl test.s -o test.o
54 gas --itbl d:\gnu\data\cop.tbl test.s -o test.o
56 Only one table may be supplied during a single invocation of
57 the assembler.
60 Instruction classes
61 ===================
63 Below is a list of the valid coprocessor instruction classes for
64 any given coprocessor "z". These instructions are already recognized
65 by the assembler, and are listed here only for reference.
67 Class format instructions
68 -------------------------------------------------
69 Class1:
70 op base rt offset
71 LWCz rt,offset (base)
72 SWCz rt,offset (base)
73 Class2:
74 COPz sub rt rd 0
75 MTCz rt,rd
76 MFCz rt,rd
77 CTCz rt,rd
78 CFCz rt,rd
79 Class3:
80 COPz CO cofun
81 COPz cofun
82 Class4:
83 COPz BC br offset
84 BCzT offset
85 BCzF offset
86 Class5:
87 COPz sub rt rd 0
88 DMFCz rt,rd
89 DMTCz rt,rd
90 Class6:
91 op base rt offset
92 LDCz rt,offset (base)
93 SDCz rt,offset (base)
94 Class7:
95 COPz BC br offset
96 BCzTL offset
97 BCzFL offset
99 The coprocessor table defines coprocessor-specific registers that can
100 be used with all of the above classes of instructions, where
101 appropriate. It also defines additional coprocessor-specific
102 functions for Class3 (COPz cofun) instructions, Thus, the table allows
103 the programmer to use convenient mnemonics and operands for these
104 functions, instead of the COPz mmenmonic and cofun operand.
106 The names of the MIPS general registers and their aliases are defined
107 by the assembler and will be recognized as valid register names by the
108 assembler when used (where allowed) in coprocessor instructions.
109 However, the names and values of all coprocessor data and control
110 register mnemonics must be specified in the coprocessor table.
113 Table Grammar
114 =============
116 Here is the grammar for the coprocessor table:
118 table -> entry*
120 entry -> [z entrydef] [comment] '\n'
122 entrydef -> type name val
123 entrydef -> 'insn' name val funcdef ; type of entry (instruction)
125 z -> 'p'['0'..'3'] ; processor number
126 type -> ['dreg' | 'creg' | 'greg' ] ; type of entry (register)
127 ; 'dreg', 'creg' or 'greg' specifies a data, control, or general
128 ; register mnemonic, respectively
129 name -> [ltr|dec]* ; mnemonic of register/function
130 val -> [dec|hex] ; register/function number (integer constant)
132 funcdef -> frange flags fields
133 ; bitfield range for opcode
134 ; list of fields' formats
135 fields -> field*
136 field -> [','] ftype frange flags
137 flags -> ['*' flagexpr]
138 flagexpr -> '[' flagexpr ']'
139 flagexpr -> val '|' flagexpr
140 ftype -> [ type | 'immed' | 'addr' ]
141 ; 'immed' specifies an immediate value; see grammar for "val" above
142 ; 'addr' specifies a C identifier; name of symbol to be resolved at
143 ; link time
144 frange -> ':' val '-' val ; starting to ending bit positions, where
145 ; where 0 is least significant bit
146 frange -> (null) ; default range of 31-0 will be assumed
148 comment -> [';'|'#'] [char]*
149 char -> any printable character
150 ltr -> ['a'..'z'|'A'..'Z']
151 dec -> ['0'..'9']* ; value in decimal
152 hex -> '0x'['0'..'9' | 'a'..'f' | 'A'..'F']* ; value in hexadecimal
155 Examples
156 ========
158 Example 1:
160 The table:
162 p1 dreg d1 1 ; data register "d1" for COP1 has value 1
163 p1 creg c3 3 ; ctrl register "c3" for COP1 has value 3
164 p3 func fill 0x1f:24-20 ; function "fill" for COP3 has value 31 and
165 ; no fields
167 will allow the assembler to accept the following coprocessor instructions:
169 LWC1 d1,0x100 ($2)
170 fill
172 Here, the general purpose register "$2", and instruction "LWC1", are standard
173 mnemonics built-in to the MIPS assembler.
176 Example 2:
178 The table:
180 p3 dreg d3 3 ; data register "d3" for COP3 has value 3
181 p3 creg c2 22 ; control register "c2" for COP3 has value 22
182 p3 func fee 0x1f:24-20 dreg:17-13 creg:12-8 immed:7-0
183 ; function "fee" for COP3 has value 31, and 3 fields
184 ; consisting of a data register, a control register,
185 ; and an immediate value.
187 will allow the assembler to accept the following coprocessor instruction:
189 fee d3,c2,0x1
191 and will emit the object code:
193 31-26 25 24-20 19-18 17-13 12-8 7-0
194 COPz CO fun dreg creg immed
195 010011 1 11111 00 00011 10110 00000001
197 0x4ff07601
200 Example 3:
202 The table:
204 p3 dreg d3 3 ; data register "d3" for COP3 has value 3
205 p3 creg c2 22 ; control register "c2" for COP3 has value 22
206 p3 func fuu 0x01f00001 dreg:17-13 creg:12-8
208 will allow the assembler to accept the following coprocessor
209 instruction:
211 fuu d3,c2
213 and will emit the object code:
215 31-26 25 24-20 19-18 17-13 12-8 7-0
216 COPz CO fun dreg creg
217 010011 1 11111 00 00011 10110 00000001
219 0x4ff07601
221 In this way, the programmer can force arbitrary bits of an instruction
222 to have predefined values.
224 =======================================================================
225 Additional notes:
227 Encoding of ranges:
228 To handle more than one bit position range within an instruction,
229 use 0s to mask out the ranges which don't apply.
230 May decide to modify the syntax to allow commas separate multiple
231 ranges within an instruction (range','range).
233 Changes in grammar:
234 The number of parms argument to the function entry
235 was deleted from the original format such that we now count the fields.
237 ----
238 FIXME! should really change lexical analyzer
239 to recognize 'dreg' etc. in context sensitive way.
240 Currently function names or mnemonics may be incorrectly parsed as keywords
242 FIXME! hex is ambiguous with any digit
246 #include <stdio.h>
247 #include "itbl-ops.h"
249 /* #define DEBUG */
251 #ifdef DEBUG
252 #ifndef DBG_LVL
253 #define DBG_LVL 1
254 #endif
255 #else
256 #define DBG_LVL 0
257 #endif
259 #if DBG_LVL >= 1
260 #define DBG(x) printf x
261 #else
262 #define DBG(x)
263 #endif
265 #if DBG_LVL >= 2
266 #define DBGL2(x) printf x
267 #else
268 #define DBGL2(x)
269 #endif
271 static int sbit, ebit;
272 static struct itbl_entry *insn=0;
273 extern int insntbl_line;
274 int yyparse PARAMS ((void));
275 int yylex PARAMS ((void));
276 static int yyerror PARAMS ((const char *));
279 #line 283 "itbl-parse.y"
280 #ifndef YYSTYPE
281 typedef union
283 char *str;
284 int num;
285 int processor;
286 unsigned long val;
287 } yystype;
288 # define YYSTYPE yystype
289 # define YYSTYPE_IS_TRIVIAL 1
290 #endif
291 #ifndef YYDEBUG
292 # define YYDEBUG 0
293 #endif
297 #define YYFINAL 51
298 #define YYFLAG -32768
299 #define YYNTBASE 20
301 /* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */
302 #define YYTRANSLATE(x) ((unsigned)(x) <= 266 ? yytranslate[x] : 34)
304 /* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */
305 static const char yytranslate[] =
307 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
308 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
309 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
310 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
311 2, 2, 17, 2, 13, 19, 2, 2, 2, 2,
312 2, 2, 2, 2, 2, 2, 2, 2, 18, 2,
313 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
314 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
315 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
316 2, 15, 2, 16, 2, 2, 2, 2, 2, 2,
317 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
318 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
319 2, 2, 2, 2, 14, 2, 2, 2, 2, 2,
320 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
321 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
322 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
323 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
324 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
325 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
326 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
327 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
328 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
329 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
330 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
331 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
332 2, 2, 2, 2, 2, 2, 1, 3, 4, 5,
333 6, 7, 8, 9, 10, 11, 12
336 #if YYDEBUG
337 static const short yyprhs[] =
339 0, 0, 2, 5, 6, 12, 13, 23, 25, 28,
340 32, 35, 36, 38, 40, 42, 46, 50, 54, 56,
341 59, 60, 65, 66, 68, 70, 72, 74, 76, 78
343 static const short yyrhs[] =
345 21, 0, 22, 21, 0, 0, 30, 31, 32, 33,
346 11, 0, 0, 30, 8, 32, 33, 29, 28, 23,
347 24, 11, 0, 11, 0, 1, 11, 0, 13, 26,
348 24, 0, 26, 24, 0, 0, 31, 0, 7, 0,
349 6, 0, 25, 29, 28, 0, 9, 14, 27, 0,
350 15, 27, 16, 0, 9, 0, 17, 27, 0, 0,
351 18, 9, 19, 9, 0, 0, 12, 0, 3, 0,
352 4, 0, 5, 0, 10, 0, 9, 0, 9, 0
355 #endif
357 #if YYDEBUG
358 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
359 static const short yyrline[] =
361 0, 300, 304, 306, 309, 316, 316, 325, 326, 329,
362 331, 332, 335, 341, 346, 353, 362, 367, 371, 377,
363 383, 389, 396, 403, 411, 417, 422, 429, 437, 445
365 #endif
368 #if (YYDEBUG) || defined YYERROR_VERBOSE
370 /* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */
371 static const char *const yytname[] =
373 "$", "error", "$undefined.", "DREG", "CREG", "GREG", "IMMED", "ADDR",
374 "INSN", "NUM", "ID", "NL", "PNUM", "','", "'|'", "'['", "']'", "'*'",
375 "':'", "'-'", "insntbl", "entrys", "entry", "@1", "fieldspecs", "ftype",
376 "fieldspec", "flagexpr", "flags", "range", "pnum", "regtype", "name",
377 "value", 0
379 #endif
381 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
382 static const short yyr1[] =
384 0, 20, 21, 21, 22, 23, 22, 22, 22, 24,
385 24, 24, 25, 25, 25, 26, 27, 27, 27, 28,
386 28, 29, 29, 30, 31, 31, 31, 32, 34, 33
389 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
390 static const short yyr2[] =
392 0, 1, 2, 0, 5, 0, 9, 1, 2, 3,
393 2, 0, 1, 1, 1, 3, 3, 3, 1, 2,
394 0, 4, 0, 1, 1, 1, 1, 1, 1, 1
397 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
398 doesn't specify something else to do. Zero means the default is an
399 error. */
400 static const short yydefact[] =
402 0, 0, 7, 23, 1, 0, 0, 8, 2, 24,
403 25, 26, 0, 0, 27, 0, 0, 29, 22, 0,
404 0, 20, 4, 0, 0, 5, 0, 18, 0, 19,
405 11, 21, 0, 0, 14, 13, 0, 0, 22, 11,
406 12, 16, 17, 11, 6, 20, 10, 9, 15, 0,
407 0, 0
410 static const short yydefgoto[] =
412 49, 4, 5, 30, 37, 38, 39, 29, 25, 21,
413 6, 40, 15, 18
416 static const short yypact[] =
418 0, -9,-32768,-32768,-32768, 0, 12,-32768,-32768,-32768,
419 -32768,-32768, 3, 3,-32768, 9, 9,-32768, -8, 8,
420 19, 15,-32768, 10, -6,-32768, 24, 20, -6,-32768,
421 1,-32768, -6, 21,-32768,-32768, 18, 25, -8, 1,
422 -32768,-32768,-32768, 1,-32768, 15,-32768,-32768,-32768, 35,
423 38,-32768
426 static const short yypgoto[] =
428 -32768, 34,-32768,-32768, -13,-32768, 4, -1, -4, 5,
429 -32768, 36, 31, 29
433 #define YYLAST 45
436 static const short yytable[] =
438 -3, 1, 7, 27, 9, 10, 11, 34, 35, 28,
439 20, 2, 3, 14, 36, 9, 10, 11, 17, 22,
440 12, 9, 10, 11, 34, 35, 46, 33, 23, 26,
441 47, 41, 24, 31, 32, 50, 44, 42, 51, 8,
442 43, 48, 13, 45, 16, 19
445 static const short yycheck[] =
447 0, 1, 11, 9, 3, 4, 5, 6, 7, 15,
448 18, 11, 12, 10, 13, 3, 4, 5, 9, 11,
449 8, 3, 4, 5, 6, 7, 39, 28, 9, 19,
450 43, 32, 17, 9, 14, 0, 11, 16, 0, 5,
451 36, 45, 6, 38, 13, 16
453 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
454 #line 3 "/usr/share/bison-1.35/bison.simple"
456 /* Skeleton output parser for bison,
458 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software
459 Foundation, Inc.
461 This program is free software; you can redistribute it and/or modify
462 it under the terms of the GNU General Public License as published by
463 the Free Software Foundation; either version 2, or (at your option)
464 any later version.
466 This program is distributed in the hope that it will be useful,
467 but WITHOUT ANY WARRANTY; without even the implied warranty of
468 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
469 GNU General Public License for more details.
471 You should have received a copy of the GNU General Public License
472 along with this program; if not, write to the Free Software
473 Foundation, Inc., 59 Temple Place - Suite 330,
474 Boston, MA 02111-1307, USA. */
476 /* As a special exception, when this file is copied by Bison into a
477 Bison output file, you may use that output file without restriction.
478 This special exception was added by the Free Software Foundation
479 in version 1.24 of Bison. */
481 /* This is the parser code that is written into each bison parser when
482 the %semantic_parser declaration is not specified in the grammar.
483 It was written by Richard Stallman by simplifying the hairy parser
484 used when %semantic_parser is specified. */
486 /* All symbols defined below should begin with yy or YY, to avoid
487 infringing on user name space. This should be done even for local
488 variables, as they might otherwise be expanded by user macros.
489 There are some unavoidable exceptions within include files to
490 define necessary library symbols; they are noted "INFRINGES ON
491 USER NAME SPACE" below. */
493 #if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
495 /* The parser invokes alloca or malloc; define the necessary symbols. */
497 # if YYSTACK_USE_ALLOCA
498 # define YYSTACK_ALLOC alloca
499 # else
500 # ifndef YYSTACK_USE_ALLOCA
501 # if defined (alloca) || defined (_ALLOCA_H)
502 # define YYSTACK_ALLOC alloca
503 # else
504 # ifdef __GNUC__
505 # define YYSTACK_ALLOC __builtin_alloca
506 # endif
507 # endif
508 # endif
509 # endif
511 # ifdef YYSTACK_ALLOC
512 /* Pacify GCC's `empty if-body' warning. */
513 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
514 # else
515 # if defined (__STDC__) || defined (__cplusplus)
516 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
517 # define YYSIZE_T size_t
518 # endif
519 # define YYSTACK_ALLOC malloc
520 # define YYSTACK_FREE free
521 # endif
522 #endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */
525 #if (! defined (yyoverflow) \
526 && (! defined (__cplusplus) \
527 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
529 /* A type that is properly aligned for any stack member. */
530 union yyalloc
532 short yyss;
533 YYSTYPE yyvs;
534 # if YYLSP_NEEDED
535 YYLTYPE yyls;
536 # endif
539 /* The size of the maximum gap between one aligned stack and the next. */
540 # define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
542 /* The size of an array large to enough to hold all stacks, each with
543 N elements. */
544 # if YYLSP_NEEDED
545 # define YYSTACK_BYTES(N) \
546 ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
547 + 2 * YYSTACK_GAP_MAX)
548 # else
549 # define YYSTACK_BYTES(N) \
550 ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
551 + YYSTACK_GAP_MAX)
552 # endif
554 /* Copy COUNT objects from FROM to TO. The source and destination do
555 not overlap. */
556 # ifndef YYCOPY
557 # if 1 < __GNUC__
558 # define YYCOPY(To, From, Count) \
559 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
560 # else
561 # define YYCOPY(To, From, Count) \
562 do \
564 register YYSIZE_T yyi; \
565 for (yyi = 0; yyi < (Count); yyi++) \
566 (To)[yyi] = (From)[yyi]; \
568 while (0)
569 # endif
570 # endif
572 /* Relocate STACK from its old location to the new one. The
573 local variables YYSIZE and YYSTACKSIZE give the old and new number of
574 elements in the stack, and YYPTR gives the new location of the
575 stack. Advance YYPTR to a properly aligned location for the next
576 stack. */
577 # define YYSTACK_RELOCATE(Stack) \
578 do \
580 YYSIZE_T yynewbytes; \
581 YYCOPY (&yyptr->Stack, Stack, yysize); \
582 Stack = &yyptr->Stack; \
583 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
584 yyptr += yynewbytes / sizeof (*yyptr); \
586 while (0)
588 #endif
591 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
592 # define YYSIZE_T __SIZE_TYPE__
593 #endif
594 #if ! defined (YYSIZE_T) && defined (size_t)
595 # define YYSIZE_T size_t
596 #endif
597 #if ! defined (YYSIZE_T)
598 # if defined (__STDC__) || defined (__cplusplus)
599 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
600 # define YYSIZE_T size_t
601 # endif
602 #endif
603 #if ! defined (YYSIZE_T)
604 # define YYSIZE_T unsigned int
605 #endif
607 #define yyerrok (yyerrstatus = 0)
608 #define yyclearin (yychar = YYEMPTY)
609 #define YYEMPTY -2
610 #define YYEOF 0
611 #define YYACCEPT goto yyacceptlab
612 #define YYABORT goto yyabortlab
613 #define YYERROR goto yyerrlab1
614 /* Like YYERROR except do call yyerror. This remains here temporarily
615 to ease the transition to the new meaning of YYERROR, for GCC.
616 Once GCC version 2 has supplanted version 1, this can go. */
617 #define YYFAIL goto yyerrlab
618 #define YYRECOVERING() (!!yyerrstatus)
619 #define YYBACKUP(Token, Value) \
620 do \
621 if (yychar == YYEMPTY && yylen == 1) \
623 yychar = (Token); \
624 yylval = (Value); \
625 yychar1 = YYTRANSLATE (yychar); \
626 YYPOPSTACK; \
627 goto yybackup; \
629 else \
631 yyerror ("syntax error: cannot back up"); \
632 YYERROR; \
634 while (0)
636 #define YYTERROR 1
637 #define YYERRCODE 256
640 /* YYLLOC_DEFAULT -- Compute the default location (before the actions
641 are run).
643 When YYLLOC_DEFAULT is run, CURRENT is set the location of the
644 first token. By default, to implement support for ranges, extend
645 its range to the last symbol. */
647 #ifndef YYLLOC_DEFAULT
648 # define YYLLOC_DEFAULT(Current, Rhs, N) \
649 Current.last_line = Rhs[N].last_line; \
650 Current.last_column = Rhs[N].last_column;
651 #endif
654 /* YYLEX -- calling `yylex' with the right arguments. */
656 #if YYPURE
657 # if YYLSP_NEEDED
658 # ifdef YYLEX_PARAM
659 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
660 # else
661 # define YYLEX yylex (&yylval, &yylloc)
662 # endif
663 # else /* !YYLSP_NEEDED */
664 # ifdef YYLEX_PARAM
665 # define YYLEX yylex (&yylval, YYLEX_PARAM)
666 # else
667 # define YYLEX yylex (&yylval)
668 # endif
669 # endif /* !YYLSP_NEEDED */
670 #else /* !YYPURE */
671 # define YYLEX yylex ()
672 #endif /* !YYPURE */
675 /* Enable debugging if requested. */
676 #if YYDEBUG
678 # ifndef YYFPRINTF
679 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
680 # define YYFPRINTF fprintf
681 # endif
683 # define YYDPRINTF(Args) \
684 do { \
685 if (yydebug) \
686 YYFPRINTF Args; \
687 } while (0)
688 /* Nonzero means print parse trace. It is left uninitialized so that
689 multiple parsers can coexist. */
690 int yydebug;
691 #else /* !YYDEBUG */
692 # define YYDPRINTF(Args)
693 #endif /* !YYDEBUG */
695 /* YYINITDEPTH -- initial size of the parser's stacks. */
696 #ifndef YYINITDEPTH
697 # define YYINITDEPTH 200
698 #endif
700 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
701 if the built-in stack extension method is used).
703 Do not make this value too large; the results are undefined if
704 SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
705 evaluated with infinite-precision integer arithmetic. */
707 #if YYMAXDEPTH == 0
708 # undef YYMAXDEPTH
709 #endif
711 #ifndef YYMAXDEPTH
712 # define YYMAXDEPTH 10000
713 #endif
715 #ifdef YYERROR_VERBOSE
717 # ifndef yystrlen
718 # if defined (__GLIBC__) && defined (_STRING_H)
719 # define yystrlen strlen
720 # else
721 /* Return the length of YYSTR. */
722 static YYSIZE_T
723 # if defined (__STDC__) || defined (__cplusplus)
724 yystrlen (const char *yystr)
725 # else
726 yystrlen (yystr)
727 const char *yystr;
728 # endif
730 register const char *yys = yystr;
732 while (*yys++ != '\0')
733 continue;
735 return yys - yystr - 1;
737 # endif
738 # endif
740 # ifndef yystpcpy
741 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
742 # define yystpcpy stpcpy
743 # else
744 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
745 YYDEST. */
746 static char *
747 # if defined (__STDC__) || defined (__cplusplus)
748 yystpcpy (char *yydest, const char *yysrc)
749 # else
750 yystpcpy (yydest, yysrc)
751 char *yydest;
752 const char *yysrc;
753 # endif
755 register char *yyd = yydest;
756 register const char *yys = yysrc;
758 while ((*yyd++ = *yys++) != '\0')
759 continue;
761 return yyd - 1;
763 # endif
764 # endif
765 #endif
767 #line 315 "/usr/share/bison-1.35/bison.simple"
770 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
771 into yyparse. The argument should have type void *.
772 It should actually point to an object.
773 Grammar actions can access the variable by casting it
774 to the proper pointer type. */
776 #ifdef YYPARSE_PARAM
777 # if defined (__STDC__) || defined (__cplusplus)
778 # define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
779 # define YYPARSE_PARAM_DECL
780 # else
781 # define YYPARSE_PARAM_ARG YYPARSE_PARAM
782 # define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
783 # endif
784 #else /* !YYPARSE_PARAM */
785 # define YYPARSE_PARAM_ARG
786 # define YYPARSE_PARAM_DECL
787 #endif /* !YYPARSE_PARAM */
789 /* Prevent warning if -Wstrict-prototypes. */
790 #ifdef __GNUC__
791 # ifdef YYPARSE_PARAM
792 int yyparse (void *);
793 # else
794 int yyparse (void);
795 # endif
796 #endif
798 /* YY_DECL_VARIABLES -- depending whether we use a pure parser,
799 variables are global, or local to YYPARSE. */
801 #define YY_DECL_NON_LSP_VARIABLES \
802 /* The lookahead symbol. */ \
803 int yychar; \
805 /* The semantic value of the lookahead symbol. */ \
806 YYSTYPE yylval; \
808 /* Number of parse errors so far. */ \
809 int yynerrs;
811 #if YYLSP_NEEDED
812 # define YY_DECL_VARIABLES \
813 YY_DECL_NON_LSP_VARIABLES \
815 /* Location data for the lookahead symbol. */ \
816 YYLTYPE yylloc;
817 #else
818 # define YY_DECL_VARIABLES \
819 YY_DECL_NON_LSP_VARIABLES
820 #endif
823 /* If nonreentrant, generate the variables here. */
825 #if !YYPURE
826 YY_DECL_VARIABLES
827 #endif /* !YYPURE */
830 yyparse (YYPARSE_PARAM_ARG)
831 YYPARSE_PARAM_DECL
833 /* If reentrant, generate the variables here. */
834 #if YYPURE
835 YY_DECL_VARIABLES
836 #endif /* !YYPURE */
838 register int yystate;
839 register int yyn;
840 int yyresult;
841 /* Number of tokens to shift before error messages enabled. */
842 int yyerrstatus;
843 /* Lookahead token as an internal (translated) token number. */
844 int yychar1 = 0;
846 /* Three stacks and their tools:
847 `yyss': related to states,
848 `yyvs': related to semantic values,
849 `yyls': related to locations.
851 Refer to the stacks thru separate pointers, to allow yyoverflow
852 to reallocate them elsewhere. */
854 /* The state stack. */
855 short yyssa[YYINITDEPTH];
856 short *yyss = yyssa;
857 register short *yyssp;
859 /* The semantic value stack. */
860 YYSTYPE yyvsa[YYINITDEPTH];
861 YYSTYPE *yyvs = yyvsa;
862 register YYSTYPE *yyvsp;
864 #if YYLSP_NEEDED
865 /* The location stack. */
866 YYLTYPE yylsa[YYINITDEPTH];
867 YYLTYPE *yyls = yylsa;
868 YYLTYPE *yylsp;
869 #endif
871 #if YYLSP_NEEDED
872 # define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
873 #else
874 # define YYPOPSTACK (yyvsp--, yyssp--)
875 #endif
877 YYSIZE_T yystacksize = YYINITDEPTH;
880 /* The variables used to return semantic value and location from the
881 action routines. */
882 YYSTYPE yyval;
883 #if YYLSP_NEEDED
884 YYLTYPE yyloc;
885 #endif
887 /* When reducing, the number of symbols on the RHS of the reduced
888 rule. */
889 int yylen;
891 YYDPRINTF ((stderr, "Starting parse\n"));
893 yystate = 0;
894 yyerrstatus = 0;
895 yynerrs = 0;
896 yychar = YYEMPTY; /* Cause a token to be read. */
898 /* Initialize stack pointers.
899 Waste one element of value and location stack
900 so that they stay on the same level as the state stack.
901 The wasted elements are never initialized. */
903 yyssp = yyss;
904 yyvsp = yyvs;
905 #if YYLSP_NEEDED
906 yylsp = yyls;
907 #endif
908 goto yysetstate;
910 /*------------------------------------------------------------.
911 | yynewstate -- Push a new state, which is found in yystate. |
912 `------------------------------------------------------------*/
913 yynewstate:
914 /* In all cases, when you get here, the value and location stacks
915 have just been pushed. so pushing a state here evens the stacks.
917 yyssp++;
919 yysetstate:
920 *yyssp = yystate;
922 if (yyssp >= yyss + yystacksize - 1)
924 /* Get the current used size of the three stacks, in elements. */
925 YYSIZE_T yysize = yyssp - yyss + 1;
927 #ifdef yyoverflow
929 /* Give user a chance to reallocate the stack. Use copies of
930 these so that the &'s don't force the real ones into
931 memory. */
932 YYSTYPE *yyvs1 = yyvs;
933 short *yyss1 = yyss;
935 /* Each stack pointer address is followed by the size of the
936 data in use in that stack, in bytes. */
937 # if YYLSP_NEEDED
938 YYLTYPE *yyls1 = yyls;
939 /* This used to be a conditional around just the two extra args,
940 but that might be undefined if yyoverflow is a macro. */
941 yyoverflow ("parser stack overflow",
942 &yyss1, yysize * sizeof (*yyssp),
943 &yyvs1, yysize * sizeof (*yyvsp),
944 &yyls1, yysize * sizeof (*yylsp),
945 &yystacksize);
946 yyls = yyls1;
947 # else
948 yyoverflow ("parser stack overflow",
949 &yyss1, yysize * sizeof (*yyssp),
950 &yyvs1, yysize * sizeof (*yyvsp),
951 &yystacksize);
952 # endif
953 yyss = yyss1;
954 yyvs = yyvs1;
956 #else /* no yyoverflow */
957 # ifndef YYSTACK_RELOCATE
958 goto yyoverflowlab;
959 # else
960 /* Extend the stack our own way. */
961 if (yystacksize >= YYMAXDEPTH)
962 goto yyoverflowlab;
963 yystacksize *= 2;
964 if (yystacksize > YYMAXDEPTH)
965 yystacksize = YYMAXDEPTH;
968 short *yyss1 = yyss;
969 union yyalloc *yyptr =
970 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
971 if (! yyptr)
972 goto yyoverflowlab;
973 YYSTACK_RELOCATE (yyss);
974 YYSTACK_RELOCATE (yyvs);
975 # if YYLSP_NEEDED
976 YYSTACK_RELOCATE (yyls);
977 # endif
978 # undef YYSTACK_RELOCATE
979 if (yyss1 != yyssa)
980 YYSTACK_FREE (yyss1);
982 # endif
983 #endif /* no yyoverflow */
985 yyssp = yyss + yysize - 1;
986 yyvsp = yyvs + yysize - 1;
987 #if YYLSP_NEEDED
988 yylsp = yyls + yysize - 1;
989 #endif
991 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
992 (unsigned long int) yystacksize));
994 if (yyssp >= yyss + yystacksize - 1)
995 YYABORT;
998 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1000 goto yybackup;
1003 /*-----------.
1004 | yybackup. |
1005 `-----------*/
1006 yybackup:
1008 /* Do appropriate processing given the current state. */
1009 /* Read a lookahead token if we need one and don't already have one. */
1010 /* yyresume: */
1012 /* First try to decide what to do without reference to lookahead token. */
1014 yyn = yypact[yystate];
1015 if (yyn == YYFLAG)
1016 goto yydefault;
1018 /* Not known => get a lookahead token if don't already have one. */
1020 /* yychar is either YYEMPTY or YYEOF
1021 or a valid token in external form. */
1023 if (yychar == YYEMPTY)
1025 YYDPRINTF ((stderr, "Reading a token: "));
1026 yychar = YYLEX;
1029 /* Convert token to internal form (in yychar1) for indexing tables with */
1031 if (yychar <= 0) /* This means end of input. */
1033 yychar1 = 0;
1034 yychar = YYEOF; /* Don't call YYLEX any more */
1036 YYDPRINTF ((stderr, "Now at end of input.\n"));
1038 else
1040 yychar1 = YYTRANSLATE (yychar);
1042 #if YYDEBUG
1043 /* We have to keep this `#if YYDEBUG', since we use variables
1044 which are defined only if `YYDEBUG' is set. */
1045 if (yydebug)
1047 YYFPRINTF (stderr, "Next token is %d (%s",
1048 yychar, yytname[yychar1]);
1049 /* Give the individual parser a way to print the precise
1050 meaning of a token, for further debugging info. */
1051 # ifdef YYPRINT
1052 YYPRINT (stderr, yychar, yylval);
1053 # endif
1054 YYFPRINTF (stderr, ")\n");
1056 #endif
1059 yyn += yychar1;
1060 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
1061 goto yydefault;
1063 yyn = yytable[yyn];
1065 /* yyn is what to do for this token type in this state.
1066 Negative => reduce, -yyn is rule number.
1067 Positive => shift, yyn is new state.
1068 New state is final state => don't bother to shift,
1069 just return success.
1070 0, or most negative number => error. */
1072 if (yyn < 0)
1074 if (yyn == YYFLAG)
1075 goto yyerrlab;
1076 yyn = -yyn;
1077 goto yyreduce;
1079 else if (yyn == 0)
1080 goto yyerrlab;
1082 if (yyn == YYFINAL)
1083 YYACCEPT;
1085 /* Shift the lookahead token. */
1086 YYDPRINTF ((stderr, "Shifting token %d (%s), ",
1087 yychar, yytname[yychar1]));
1089 /* Discard the token being shifted unless it is eof. */
1090 if (yychar != YYEOF)
1091 yychar = YYEMPTY;
1093 *++yyvsp = yylval;
1094 #if YYLSP_NEEDED
1095 *++yylsp = yylloc;
1096 #endif
1098 /* Count tokens shifted since error; after three, turn off error
1099 status. */
1100 if (yyerrstatus)
1101 yyerrstatus--;
1103 yystate = yyn;
1104 goto yynewstate;
1107 /*-----------------------------------------------------------.
1108 | yydefault -- do the default action for the current state. |
1109 `-----------------------------------------------------------*/
1110 yydefault:
1111 yyn = yydefact[yystate];
1112 if (yyn == 0)
1113 goto yyerrlab;
1114 goto yyreduce;
1117 /*-----------------------------.
1118 | yyreduce -- Do a reduction. |
1119 `-----------------------------*/
1120 yyreduce:
1121 /* yyn is the number of a rule to reduce with. */
1122 yylen = yyr2[yyn];
1124 /* If YYLEN is nonzero, implement the default value of the action:
1125 `$$ = $1'.
1127 Otherwise, the following line sets YYVAL to the semantic value of
1128 the lookahead token. This behavior is undocumented and Bison
1129 users should not rely upon it. Assigning to YYVAL
1130 unconditionally makes the parser a bit smaller, and it avoids a
1131 GCC warning that YYVAL may be used uninitialized. */
1132 yyval = yyvsp[1-yylen];
1134 #if YYLSP_NEEDED
1135 /* Similarly for the default location. Let the user run additional
1136 commands if for instance locations are ranges. */
1137 yyloc = yylsp[1-yylen];
1138 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
1139 #endif
1141 #if YYDEBUG
1142 /* We have to keep this `#if YYDEBUG', since we use variables which
1143 are defined only if `YYDEBUG' is set. */
1144 if (yydebug)
1146 int yyi;
1148 YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
1149 yyn, yyrline[yyn]);
1151 /* Print the symbols being reduced, and their result. */
1152 for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
1153 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
1154 YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
1156 #endif
1158 switch (yyn) {
1160 case 4:
1161 #line 311 "itbl-parse.y"
1163 DBG (("line %d: entry pnum=%d type=%d name=%s value=x%x\n",
1164 insntbl_line, yyvsp[-4].num, yyvsp[-3].num, yyvsp[-2].str, yyvsp[-1].val));
1165 itbl_add_reg (yyvsp[-4].num, yyvsp[-3].num, yyvsp[-2].str, yyvsp[-1].val);
1167 break;
1168 case 5:
1169 #line 317 "itbl-parse.y"
1171 DBG (("line %d: entry pnum=%d type=INSN name=%s value=x%x",
1172 insntbl_line, yyvsp[-5].num, yyvsp[-3].str, yyvsp[-2].val));
1173 DBG ((" sbit=%d ebit=%d flags=0x%x\n", sbit, ebit, yyvsp[0].val));
1174 insn=itbl_add_insn (yyvsp[-5].num, yyvsp[-3].str, yyvsp[-2].val, sbit, ebit, yyvsp[0].val);
1176 break;
1177 case 6:
1178 #line 324 "itbl-parse.y"
1180 break;
1181 case 12:
1182 #line 337 "itbl-parse.y"
1184 DBGL2 (("ftype\n"));
1185 yyval.num = yyvsp[0].num;
1187 break;
1188 case 13:
1189 #line 342 "itbl-parse.y"
1191 DBGL2 (("addr\n"));
1192 yyval.num = ADDR;
1194 break;
1195 case 14:
1196 #line 347 "itbl-parse.y"
1198 DBGL2 (("immed\n"));
1199 yyval.num = IMMED;
1201 break;
1202 case 15:
1203 #line 355 "itbl-parse.y"
1205 DBG (("line %d: field type=%d sbit=%d ebit=%d, flags=0x%x\n",
1206 insntbl_line, yyvsp[-2].num, sbit, ebit, yyvsp[0].val));
1207 itbl_add_operand (insn, yyvsp[-2].num, sbit, ebit, yyvsp[0].val);
1209 break;
1210 case 16:
1211 #line 364 "itbl-parse.y"
1213 yyval.val = yyvsp[-2].num | yyvsp[0].val;
1215 break;
1216 case 17:
1217 #line 368 "itbl-parse.y"
1219 yyval.val = yyvsp[-1].val;
1221 break;
1222 case 18:
1223 #line 372 "itbl-parse.y"
1225 yyval.val = yyvsp[0].num;
1227 break;
1228 case 19:
1229 #line 379 "itbl-parse.y"
1231 DBGL2 (("flags=%d\n", yyvsp[0].val));
1232 yyval.val = yyvsp[0].val;
1234 break;
1235 case 20:
1236 #line 384 "itbl-parse.y"
1238 yyval.val = 0;
1240 break;
1241 case 21:
1242 #line 391 "itbl-parse.y"
1244 DBGL2 (("range %d %d\n", yyvsp[-2].num, yyvsp[0].num));
1245 sbit = yyvsp[-2].num;
1246 ebit = yyvsp[0].num;
1248 break;
1249 case 22:
1250 #line 397 "itbl-parse.y"
1252 sbit = 31;
1253 ebit = 0;
1255 break;
1256 case 23:
1257 #line 405 "itbl-parse.y"
1259 DBGL2 (("pnum=%d\n",yyvsp[0].num));
1260 yyval.num = yyvsp[0].num;
1262 break;
1263 case 24:
1264 #line 413 "itbl-parse.y"
1266 DBGL2 (("dreg\n"));
1267 yyval.num = DREG;
1269 break;
1270 case 25:
1271 #line 418 "itbl-parse.y"
1273 DBGL2 (("creg\n"));
1274 yyval.num = CREG;
1276 break;
1277 case 26:
1278 #line 423 "itbl-parse.y"
1280 DBGL2 (("greg\n"));
1281 yyval.num = GREG;
1283 break;
1284 case 27:
1285 #line 431 "itbl-parse.y"
1287 DBGL2 (("name=%s\n",yyvsp[0].str));
1288 yyval.str = yyvsp[0].str;
1290 break;
1291 case 28:
1292 #line 439 "itbl-parse.y"
1294 DBGL2 (("num=%d\n",yyvsp[0].num));
1295 yyval.num = yyvsp[0].num;
1297 break;
1298 case 29:
1299 #line 447 "itbl-parse.y"
1301 DBGL2 (("val=x%x\n",yyvsp[0].num));
1302 yyval.val = yyvsp[0].num;
1304 break;
1307 #line 705 "/usr/share/bison-1.35/bison.simple"
1310 yyvsp -= yylen;
1311 yyssp -= yylen;
1312 #if YYLSP_NEEDED
1313 yylsp -= yylen;
1314 #endif
1316 #if YYDEBUG
1317 if (yydebug)
1319 short *yyssp1 = yyss - 1;
1320 YYFPRINTF (stderr, "state stack now");
1321 while (yyssp1 != yyssp)
1322 YYFPRINTF (stderr, " %d", *++yyssp1);
1323 YYFPRINTF (stderr, "\n");
1325 #endif
1327 *++yyvsp = yyval;
1328 #if YYLSP_NEEDED
1329 *++yylsp = yyloc;
1330 #endif
1332 /* Now `shift' the result of the reduction. Determine what state
1333 that goes to, based on the state we popped back to and the rule
1334 number reduced by. */
1336 yyn = yyr1[yyn];
1338 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
1339 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1340 yystate = yytable[yystate];
1341 else
1342 yystate = yydefgoto[yyn - YYNTBASE];
1344 goto yynewstate;
1347 /*------------------------------------.
1348 | yyerrlab -- here on detecting error |
1349 `------------------------------------*/
1350 yyerrlab:
1351 /* If not already recovering from an error, report this error. */
1352 if (!yyerrstatus)
1354 ++yynerrs;
1356 #ifdef YYERROR_VERBOSE
1357 yyn = yypact[yystate];
1359 if (yyn > YYFLAG && yyn < YYLAST)
1361 YYSIZE_T yysize = 0;
1362 char *yymsg;
1363 int yyx, yycount;
1365 yycount = 0;
1366 /* Start YYX at -YYN if negative to avoid negative indexes in
1367 YYCHECK. */
1368 for (yyx = yyn < 0 ? -yyn : 0;
1369 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
1370 if (yycheck[yyx + yyn] == yyx)
1371 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
1372 yysize += yystrlen ("parse error, unexpected ") + 1;
1373 yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
1374 yymsg = (char *) YYSTACK_ALLOC (yysize);
1375 if (yymsg != 0)
1377 char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
1378 yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
1380 if (yycount < 5)
1382 yycount = 0;
1383 for (yyx = yyn < 0 ? -yyn : 0;
1384 yyx < (int) (sizeof (yytname) / sizeof (char *));
1385 yyx++)
1386 if (yycheck[yyx + yyn] == yyx)
1388 const char *yyq = ! yycount ? ", expecting " : " or ";
1389 yyp = yystpcpy (yyp, yyq);
1390 yyp = yystpcpy (yyp, yytname[yyx]);
1391 yycount++;
1394 yyerror (yymsg);
1395 YYSTACK_FREE (yymsg);
1397 else
1398 yyerror ("parse error; also virtual memory exhausted");
1400 else
1401 #endif /* defined (YYERROR_VERBOSE) */
1402 yyerror ("parse error");
1404 goto yyerrlab1;
1407 /*--------------------------------------------------.
1408 | yyerrlab1 -- error raised explicitly by an action |
1409 `--------------------------------------------------*/
1410 yyerrlab1:
1411 if (yyerrstatus == 3)
1413 /* If just tried and failed to reuse lookahead token after an
1414 error, discard it. */
1416 /* return failure if at end of input */
1417 if (yychar == YYEOF)
1418 YYABORT;
1419 YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
1420 yychar, yytname[yychar1]));
1421 yychar = YYEMPTY;
1424 /* Else will try to reuse lookahead token after shifting the error
1425 token. */
1427 yyerrstatus = 3; /* Each real token shifted decrements this */
1429 goto yyerrhandle;
1432 /*-------------------------------------------------------------------.
1433 | yyerrdefault -- current state does not do anything special for the |
1434 | error token. |
1435 `-------------------------------------------------------------------*/
1436 yyerrdefault:
1437 #if 0
1438 /* This is wrong; only states that explicitly want error tokens
1439 should shift them. */
1441 /* If its default is to accept any token, ok. Otherwise pop it. */
1442 yyn = yydefact[yystate];
1443 if (yyn)
1444 goto yydefault;
1445 #endif
1448 /*---------------------------------------------------------------.
1449 | yyerrpop -- pop the current state because it cannot handle the |
1450 | error token |
1451 `---------------------------------------------------------------*/
1452 yyerrpop:
1453 if (yyssp == yyss)
1454 YYABORT;
1455 yyvsp--;
1456 yystate = *--yyssp;
1457 #if YYLSP_NEEDED
1458 yylsp--;
1459 #endif
1461 #if YYDEBUG
1462 if (yydebug)
1464 short *yyssp1 = yyss - 1;
1465 YYFPRINTF (stderr, "Error: state stack now");
1466 while (yyssp1 != yyssp)
1467 YYFPRINTF (stderr, " %d", *++yyssp1);
1468 YYFPRINTF (stderr, "\n");
1470 #endif
1472 /*--------------.
1473 | yyerrhandle. |
1474 `--------------*/
1475 yyerrhandle:
1476 yyn = yypact[yystate];
1477 if (yyn == YYFLAG)
1478 goto yyerrdefault;
1480 yyn += YYTERROR;
1481 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1482 goto yyerrdefault;
1484 yyn = yytable[yyn];
1485 if (yyn < 0)
1487 if (yyn == YYFLAG)
1488 goto yyerrpop;
1489 yyn = -yyn;
1490 goto yyreduce;
1492 else if (yyn == 0)
1493 goto yyerrpop;
1495 if (yyn == YYFINAL)
1496 YYACCEPT;
1498 YYDPRINTF ((stderr, "Shifting error token, "));
1500 *++yyvsp = yylval;
1501 #if YYLSP_NEEDED
1502 *++yylsp = yylloc;
1503 #endif
1505 yystate = yyn;
1506 goto yynewstate;
1509 /*-------------------------------------.
1510 | yyacceptlab -- YYACCEPT comes here. |
1511 `-------------------------------------*/
1512 yyacceptlab:
1513 yyresult = 0;
1514 goto yyreturn;
1516 /*-----------------------------------.
1517 | yyabortlab -- YYABORT comes here. |
1518 `-----------------------------------*/
1519 yyabortlab:
1520 yyresult = 1;
1521 goto yyreturn;
1523 /*---------------------------------------------.
1524 | yyoverflowab -- parser overflow comes here. |
1525 `---------------------------------------------*/
1526 yyoverflowlab:
1527 yyerror ("parser stack overflow");
1528 yyresult = 2;
1529 /* Fall through. */
1531 yyreturn:
1532 #ifndef yyoverflow
1533 if (yyss != yyssa)
1534 YYSTACK_FREE (yyss);
1535 #endif
1536 return yyresult;
1538 #line 452 "itbl-parse.y"
1541 static int
1542 yyerror (msg)
1543 const char *msg;
1545 printf ("line %d: %s\n", insntbl_line, msg);
1546 return 0;