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