OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.20.1/] [gas/] [itbl-parse.c] - Blame information for rev 438

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.