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