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