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