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