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