]> git.saurik.com Git - bison.git/blob - src/parse-gram.c
Regenerate.
[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 "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 81 "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 197 of yacc.c. */
266 #line 267 "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 220 of yacc.c. */
290 #line 291 "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, 191, 191, 199, 201, 205, 206, 207, 208, 209,
588 210, 211, 212, 213, 214, 215, 220, 224, 225, 226,
589 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
590 237, 241, 242, 243, 247, 253, 260, 267, 271, 278,
591 278, 283, 283, 288, 298, 313, 314, 315, 319, 320,
592 326, 327, 332, 336, 341, 347, 353, 364, 365, 374,
593 375, 381, 382, 387, 394, 394, 398, 399, 400, 405,
594 406, 408, 410, 412, 414, 419, 420, 424, 430, 439,
595 444, 446
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; \
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 (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 yysymprint (stderr, \
894 Type, Value, Location); \
895 YYFPRINTF (stderr, "\n"); \
896 } \
897 } while (YYID (0))
898
899 /*--------------------------------.
900 | Print this symbol on YYOUTPUT. |
901 `--------------------------------*/
902
903 /*ARGSUSED*/
904 #if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
905 static void
906 yysymprint (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, const YYLTYPE * const yylocationp)
907 #else
908 static void
909 yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
910 FILE *yyoutput;
911 int yytype;
912 const YYSTYPE * const yyvaluep;
913 const YYLTYPE * const yylocationp;
914 #endif
915 {
916 YYUSE (yyvaluep);
917 YYUSE (yylocationp);
918 if (yytype < YYNTOKENS)
919 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
920 else
921 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
922
923 YY_LOCATION_PRINT (yyoutput, *yylocationp);
924 YYFPRINTF (yyoutput, ": ");
925
926 # ifdef YYPRINT
927 if (yytype < YYNTOKENS)
928 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
929 # endif
930 switch (yytype)
931 {
932 case 3: /* "\"string\"" */
933 #line 168 "parse-gram.y"
934 { fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
935 #line 936 "parse-gram.c"
936 break;
937 case 4: /* "\"integer\"" */
938 #line 181 "parse-gram.y"
939 { fprintf (stderr, "%d", (yyvaluep->integer)); };
940 #line 941 "parse-gram.c"
941 break;
942 case 8: /* "\"%destructor {...}\"" */
943 #line 170 "parse-gram.y"
944 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
945 #line 946 "parse-gram.c"
946 break;
947 case 9: /* "\"%printer {...}\"" */
948 #line 174 "parse-gram.y"
949 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
950 #line 951 "parse-gram.c"
951 break;
952 case 10: /* "\"%union {...}\"" */
953 #line 175 "parse-gram.y"
954 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
955 #line 956 "parse-gram.c"
956 break;
957 case 26: /* "\"%initial-action {...}\"" */
958 #line 171 "parse-gram.y"
959 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
960 #line 961 "parse-gram.c"
961 break;
962 case 27: /* "\"%lex-param {...}\"" */
963 #line 172 "parse-gram.y"
964 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
965 #line 966 "parse-gram.c"
966 break;
967 case 34: /* "\"%parse-param {...}\"" */
968 #line 173 "parse-gram.y"
969 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
970 #line 971 "parse-gram.c"
971 break;
972 case 42: /* "\"type\"" */
973 #line 179 "parse-gram.y"
974 { fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
975 #line 976 "parse-gram.c"
976 break;
977 case 46: /* "\"identifier\"" */
978 #line 183 "parse-gram.y"
979 { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
980 #line 981 "parse-gram.c"
981 break;
982 case 47: /* "\"identifier:\"" */
983 #line 185 "parse-gram.y"
984 { fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
985 #line 986 "parse-gram.c"
986 break;
987 case 49: /* "\"%{...%}\"" */
988 #line 177 "parse-gram.y"
989 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
990 #line 991 "parse-gram.c"
991 break;
992 case 50: /* "\"epilogue\"" */
993 #line 177 "parse-gram.y"
994 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
995 #line 996 "parse-gram.c"
996 break;
997 case 51: /* "\"{...}\"" */
998 #line 176 "parse-gram.y"
999 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
1000 #line 1001 "parse-gram.c"
1001 break;
1002 case 72: /* "symbol" */
1003 #line 183 "parse-gram.y"
1004 { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
1005 #line 1006 "parse-gram.c"
1006 break;
1007 case 73: /* "action" */
1008 #line 176 "parse-gram.y"
1009 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
1010 #line 1011 "parse-gram.c"
1011 break;
1012 case 74: /* "string_as_id" */
1013 #line 183 "parse-gram.y"
1014 { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
1015 #line 1016 "parse-gram.c"
1016 break;
1017 case 75: /* "string_content" */
1018 #line 168 "parse-gram.y"
1019 { fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
1020 #line 1021 "parse-gram.c"
1021 break;
1022 default:
1023 break;
1024 }
1025 YYFPRINTF (yyoutput, ")");
1026 }
1027
1028 /*------------------------------------------------------------------.
1029 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1030 | TOP (included). |
1031 `------------------------------------------------------------------*/
1032
1033 #if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
1034 static void
1035 yy_stack_print (short int *bottom, short int *top)
1036 #else
1037 static void
1038 yy_stack_print (bottom, top)
1039 short int *bottom;
1040 short int *top;
1041 #endif
1042 {
1043 YYFPRINTF (stderr, "Stack now");
1044 for (/* Nothing. */; bottom <= top; ++bottom)
1045 YYFPRINTF (stderr, " %d", *bottom);
1046 YYFPRINTF (stderr, "\n");
1047 }
1048
1049 # define YY_STACK_PRINT(Bottom, Top) \
1050 do { \
1051 if (yydebug) \
1052 yy_stack_print ((Bottom), (Top)); \
1053 } while (YYID (0))
1054
1055
1056 /*------------------------------------------------.
1057 | Report that the YYRULE is going to be reduced. |
1058 `------------------------------------------------*/
1059
1060 #if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
1061 static void
1062 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
1063 #else
1064 static void
1065 yy_reduce_print (yyvsp, yylsp, yyrule
1066 )
1067 YYSTYPE *yyvsp;
1068 YYLTYPE *yylsp;
1069 int yyrule;
1070 #endif
1071 {
1072 int yynrhs = yyr2[yyrule];
1073 int yyi;
1074 unsigned long int yylno = yyrline[yyrule];
1075 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1076 yyrule - 1, yylno);
1077 /* The symbols being reduced. */
1078 for (yyi = 0; yyi < yynrhs; yyi++)
1079 {
1080 fprintf (stderr, " $%d = ", yyi + 1);
1081 yysymprint (stderr, yyrhs[yyprhs[yyrule] + yyi],
1082 &(yyvsp[(yyi + 1) - (yynrhs)])
1083 , &(yylsp[(yyi + 1) - (yynrhs)]) );
1084 fprintf (stderr, "\n");
1085 }
1086 }
1087
1088 # define YY_REDUCE_PRINT(Rule) \
1089 do { \
1090 if (yydebug) \
1091 yy_reduce_print (yyvsp, yylsp, Rule); \
1092 } while (YYID (0))
1093
1094 /* Nonzero means print parse trace. It is left uninitialized so that
1095 multiple parsers can coexist. */
1096 int yydebug;
1097 #else /* !YYDEBUG */
1098 # define YYDPRINTF(Args)
1099 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1100 # define YY_STACK_PRINT(Bottom, Top)
1101 # define YY_REDUCE_PRINT(Rule)
1102 #endif /* !YYDEBUG */
1103
1104
1105 /* YYINITDEPTH -- initial size of the parser's stacks. */
1106 #ifndef YYINITDEPTH
1107 # define YYINITDEPTH 200
1108 #endif
1109
1110 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1111 if the built-in stack extension method is used).
1112
1113 Do not make this value too large; the results are undefined if
1114 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1115 evaluated with infinite-precision integer arithmetic. */
1116
1117 #ifndef YYMAXDEPTH
1118 # define YYMAXDEPTH 10000
1119 #endif
1120
1121 \f
1122
1123 #if YYERROR_VERBOSE
1124
1125 # ifndef yystrlen
1126 # if defined (__GLIBC__) && defined (_STRING_H)
1127 # define yystrlen strlen
1128 # else
1129 /* Return the length of YYSTR. */
1130 static YYSIZE_T
1131 # if YYMODERN_C
1132 yystrlen (const char *yystr)
1133 # else
1134 yystrlen (yystr)
1135 const char *yystr;
1136 # endif
1137 {
1138 YYSIZE_T yylen;
1139 for (yylen = 0; yystr[yylen]; yylen++)
1140 continue;
1141 return yylen;
1142 }
1143 # endif
1144 # endif
1145
1146 # ifndef yystpcpy
1147 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1148 # define yystpcpy stpcpy
1149 # else
1150 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1151 YYDEST. */
1152 static char *
1153 # if YYMODERN_C
1154 yystpcpy (char *yydest, const char *yysrc)
1155 # else
1156 yystpcpy (yydest, yysrc)
1157 char *yydest;
1158 const char *yysrc;
1159 # endif
1160 {
1161 char *yyd = yydest;
1162 const char *yys = yysrc;
1163
1164 while ((*yyd++ = *yys++) != '\0')
1165 continue;
1166
1167 return yyd - 1;
1168 }
1169 # endif
1170 # endif
1171
1172 # ifndef yytnamerr
1173 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1174 quotes and backslashes, so that it's suitable for yyerror. The
1175 heuristic is that double-quoting is unnecessary unless the string
1176 contains an apostrophe, a comma, or backslash (other than
1177 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1178 null, do not copy; instead, return the length of what the result
1179 would have been. */
1180 static YYSIZE_T
1181 yytnamerr (char *yyres, const char *yystr)
1182 {
1183 if (*yystr == '"')
1184 {
1185 size_t yyn = 0;
1186 char const *yyp = yystr;
1187
1188 for (;;)
1189 switch (*++yyp)
1190 {
1191 case '\'':
1192 case ',':
1193 goto do_not_strip_quotes;
1194
1195 case '\\':
1196 if (*++yyp != '\\')
1197 goto do_not_strip_quotes;
1198 /* Fall through. */
1199 default:
1200 if (yyres)
1201 yyres[yyn] = *yyp;
1202 yyn++;
1203 break;
1204
1205 case '"':
1206 if (yyres)
1207 yyres[yyn] = '\0';
1208 return yyn;
1209 }
1210 do_not_strip_quotes: ;
1211 }
1212
1213 if (! yyres)
1214 return yystrlen (yystr);
1215
1216 return yystpcpy (yyres, yystr) - yyres;
1217 }
1218 # endif
1219
1220 /* Copy into YYRESULT an error message about the unexpected token
1221 YYCHAR while in state YYSTATE. Return the number of bytes copied,
1222 including the terminating null byte. If YYRESULT is null, do not
1223 copy anything; just return the number of bytes that would be
1224 copied. As a special case, return 0 if an ordinary "syntax error"
1225 message will do. Return YYSIZE_MAXIMUM if overflow occurs during
1226 size calculation. */
1227 static YYSIZE_T
1228 yysyntax_error (char *yyresult, int yystate, int yychar)
1229 {
1230 int yyn = yypact[yystate];
1231
1232 if (! (YYPACT_NINF < yyn && yyn < YYLAST))
1233 return 0;
1234 else
1235 {
1236 int yytype = YYTRANSLATE (yychar);
1237 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1238 YYSIZE_T yysize = yysize0;
1239 YYSIZE_T yysize1;
1240 int yysize_overflow = 0;
1241 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1242 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1243 int yyx;
1244
1245 # if 0
1246 /* This is so xgettext sees the translatable formats that are
1247 constructed on the fly. */
1248 YY_("syntax error, unexpected %s");
1249 YY_("syntax error, unexpected %s, expecting %s");
1250 YY_("syntax error, unexpected %s, expecting %s or %s");
1251 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1252 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1253 # endif
1254 char *yyfmt;
1255 char const *yyf;
1256 static char const yyunexpected[] = "syntax error, unexpected %s";
1257 static char const yyexpecting[] = ", expecting %s";
1258 static char const yyor[] = " or %s";
1259 char yyformat[sizeof yyunexpected
1260 + sizeof yyexpecting - 1
1261 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1262 * (sizeof yyor - 1))];
1263 char const *yyprefix = yyexpecting;
1264
1265 /* Start YYX at -YYN if negative to avoid negative indexes in
1266 YYCHECK. */
1267 int yyxbegin = yyn < 0 ? -yyn : 0;
1268
1269 /* Stay within bounds of both yycheck and yytname. */
1270 int yychecklim = YYLAST - yyn;
1271 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1272 int yycount = 1;
1273
1274 yyarg[0] = yytname[yytype];
1275 yyfmt = yystpcpy (yyformat, yyunexpected);
1276
1277 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1278 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1279 {
1280 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1281 {
1282 yycount = 1;
1283 yysize = yysize0;
1284 yyformat[sizeof yyunexpected - 1] = '\0';
1285 break;
1286 }
1287 yyarg[yycount++] = yytname[yyx];
1288 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1289 yysize_overflow |= (yysize1 < yysize);
1290 yysize = yysize1;
1291 yyfmt = yystpcpy (yyfmt, yyprefix);
1292 yyprefix = yyor;
1293 }
1294
1295 yyf = YY_(yyformat);
1296 yysize1 = yysize + yystrlen (yyf);
1297 yysize_overflow |= (yysize1 < yysize);
1298 yysize = yysize1;
1299
1300 if (yysize_overflow)
1301 return YYSIZE_MAXIMUM;
1302
1303 if (yyresult)
1304 {
1305 /* Avoid sprintf, as that infringes on the user's name space.
1306 Don't have undefined behavior even if the translation
1307 produced a string with the wrong number of "%s"s. */
1308 char *yyp = yyresult;
1309 int yyi = 0;
1310 while ((*yyp = *yyf) != '\0')
1311 {
1312 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1313 {
1314 yyp += yytnamerr (yyp, yyarg[yyi++]);
1315 yyf += 2;
1316 }
1317 else
1318 {
1319 yyp++;
1320 yyf++;
1321 }
1322 }
1323 }
1324 return yysize;
1325 }
1326 }
1327 #endif /* YYERROR_VERBOSE */
1328 \f
1329
1330 /*-----------------------------------------------.
1331 | Release the memory associated to this symbol. |
1332 `-----------------------------------------------*/
1333
1334 /*ARGSUSED*/
1335 #if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
1336 static void
1337 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1338 #else
1339 static void
1340 yydestruct (yymsg, yytype, yyvaluep, yylocationp)
1341 const char *yymsg;
1342 int yytype;
1343 YYSTYPE *yyvaluep;
1344 YYLTYPE *yylocationp;
1345 #endif
1346 {
1347 YYUSE (yyvaluep);
1348 YYUSE (yylocationp);
1349
1350 if (!yymsg)
1351 yymsg = "Deleting";
1352 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1353
1354 switch (yytype)
1355 {
1356
1357 default:
1358 break;
1359 }
1360 }
1361 \f
1362
1363 /* Prevent warnings from -Wmissing-prototypes. */
1364
1365 #ifdef YYPARSE_PARAM
1366 # if YYMODERN_C
1367 int yyparse (void *YYPARSE_PARAM);
1368 # else
1369 int yyparse ();
1370 # endif
1371 #else /* ! YYPARSE_PARAM */
1372 #if defined (__STDC__) || defined (__cplusplus)
1373 int yyparse (void);
1374 #else
1375 int yyparse ();
1376 #endif
1377 #endif /* ! YYPARSE_PARAM */
1378
1379
1380
1381
1382
1383
1384 /*----------.
1385 | yyparse. |
1386 `----------*/
1387
1388 #ifdef YYPARSE_PARAM
1389 # if YYMODERN_C
1390 int yyparse (void *YYPARSE_PARAM)
1391 # else
1392 int yyparse (YYPARSE_PARAM)
1393 void *YYPARSE_PARAM;
1394 # endif
1395 #else /* ! YYPARSE_PARAM */
1396 #if defined (__STDC__) || defined (__C99__FUNC__) || defined (__cplusplus)
1397 int
1398 yyparse (void)
1399 #else
1400 int
1401 yyparse ()
1402
1403 #endif
1404 #endif
1405 {
1406 /* The look-ahead symbol. */
1407 int yychar;
1408
1409 /* The semantic value of the look-ahead symbol. */
1410 YYSTYPE yylval;
1411
1412 /* Number of syntax errors so far. */
1413 int yynerrs;
1414 /* Location data for the look-ahead symbol. */
1415 YYLTYPE yylloc;
1416
1417 int yystate;
1418 int yyn;
1419 int yyresult;
1420 /* Number of tokens to shift before error messages enabled. */
1421 int yyerrstatus;
1422 /* Look-ahead token as an internal (translated) token number. */
1423 int yytoken = 0;
1424 #if YYERROR_VERBOSE
1425 /* Buffer for error messages, and its allocated size. */
1426 char yymsgbuf[128];
1427 char *yymsg = yymsgbuf;
1428 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1429 #endif
1430
1431 /* Three stacks and their tools:
1432 `yyss': related to states,
1433 `yyvs': related to semantic values,
1434 `yyls': related to locations.
1435
1436 Refer to the stacks thru separate pointers, to allow yyoverflow
1437 to reallocate them elsewhere. */
1438
1439 /* The state stack. */
1440 short int yyssa[YYINITDEPTH];
1441 short int *yyss = yyssa;
1442 short int *yyssp;
1443
1444 /* The semantic value stack. */
1445 YYSTYPE yyvsa[YYINITDEPTH];
1446 YYSTYPE *yyvs = yyvsa;
1447 YYSTYPE *yyvsp;
1448
1449 /* The location stack. */
1450 YYLTYPE yylsa[YYINITDEPTH];
1451 YYLTYPE *yyls = yylsa;
1452 YYLTYPE *yylsp;
1453 /* The locations where the error started and ended. */
1454 YYLTYPE yyerror_range[2];
1455
1456 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1457
1458 YYSIZE_T yystacksize = YYINITDEPTH;
1459
1460 /* The variables used to return semantic value and location from the
1461 action routines. */
1462 YYSTYPE yyval;
1463 YYLTYPE yyloc;
1464
1465 /* When reducing, the number of symbols on the RHS of the reduced
1466 rule. */
1467 int yylen;
1468
1469 YYDPRINTF ((stderr, "Starting parse\n"));
1470
1471 yystate = 0;
1472 yyerrstatus = 0;
1473 yynerrs = 0;
1474 yychar = YYEMPTY; /* Cause a token to be read. */
1475
1476 /* Initialize stack pointers.
1477 Waste one element of value and location stack
1478 so that they stay on the same level as the state stack.
1479 The wasted elements are never initialized. */
1480
1481 yyssp = yyss;
1482 yyvsp = yyvs;
1483 yylsp = yyls;
1484 #if YYLTYPE_IS_TRIVIAL
1485 /* Initialize the default location before parsing starts. */
1486 yylloc.first_line = yylloc.last_line = 1;
1487 yylloc.first_column = yylloc.last_column = 0;
1488 #endif
1489
1490
1491 /* User initialization code. */
1492 #line 71 "parse-gram.y"
1493 {
1494 /* Bison's grammar can initial empty locations, hence a default
1495 location is needed. */
1496 yylloc.start.file = yylloc.end.file = current_file;
1497 yylloc.start.line = yylloc.end.line = 1;
1498 yylloc.start.column = yylloc.end.column = 0;
1499 }
1500 /* Line 1088 of yacc.c. */
1501 #line 1502 "parse-gram.c"
1502 yylsp[0] = yylloc;
1503 goto yysetstate;
1504
1505 /*------------------------------------------------------------.
1506 | yynewstate -- Push a new state, which is found in yystate. |
1507 `------------------------------------------------------------*/
1508 yynewstate:
1509 /* In all cases, when you get here, the value and location stacks
1510 have just been pushed. so pushing a state here evens the stacks.
1511 */
1512 yyssp++;
1513
1514 yysetstate:
1515 *yyssp = yystate;
1516
1517 if (yyss + yystacksize - 1 <= yyssp)
1518 {
1519 /* Get the current used size of the three stacks, in elements. */
1520 YYSIZE_T yysize = yyssp - yyss + 1;
1521
1522 #ifdef yyoverflow
1523 {
1524 /* Give user a chance to reallocate the stack. Use copies of
1525 these so that the &'s don't force the real ones into
1526 memory. */
1527 YYSTYPE *yyvs1 = yyvs;
1528 short int *yyss1 = yyss;
1529 YYLTYPE *yyls1 = yyls;
1530
1531 /* Each stack pointer address is followed by the size of the
1532 data in use in that stack, in bytes. This used to be a
1533 conditional around just the two extra args, but that might
1534 be undefined if yyoverflow is a macro. */
1535 yyoverflow (YY_("memory exhausted"),
1536 &yyss1, yysize * sizeof (*yyssp),
1537 &yyvs1, yysize * sizeof (*yyvsp),
1538 &yyls1, yysize * sizeof (*yylsp),
1539 &yystacksize);
1540 yyls = yyls1;
1541 yyss = yyss1;
1542 yyvs = yyvs1;
1543 }
1544 #else /* no yyoverflow */
1545 # ifndef YYSTACK_RELOCATE
1546 goto yyexhaustedlab;
1547 # else
1548 /* Extend the stack our own way. */
1549 if (YYMAXDEPTH <= yystacksize)
1550 goto yyexhaustedlab;
1551 yystacksize *= 2;
1552 if (YYMAXDEPTH < yystacksize)
1553 yystacksize = YYMAXDEPTH;
1554
1555 {
1556 short int *yyss1 = yyss;
1557 union yyalloc *yyptr =
1558 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1559 if (! yyptr)
1560 goto yyexhaustedlab;
1561 YYSTACK_RELOCATE (yyss);
1562 YYSTACK_RELOCATE (yyvs);
1563 YYSTACK_RELOCATE (yyls);
1564 # undef YYSTACK_RELOCATE
1565 if (yyss1 != yyssa)
1566 YYSTACK_FREE (yyss1);
1567 }
1568 # endif
1569 #endif /* no yyoverflow */
1570
1571 yyssp = yyss + yysize - 1;
1572 yyvsp = yyvs + yysize - 1;
1573 yylsp = yyls + yysize - 1;
1574
1575 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1576 (unsigned long int) yystacksize));
1577
1578 if (yyss + yystacksize - 1 <= yyssp)
1579 YYABORT;
1580 }
1581
1582 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1583
1584 goto yybackup;
1585
1586 /*-----------.
1587 | yybackup. |
1588 `-----------*/
1589 yybackup:
1590
1591 /* Do appropriate processing given the current state. */
1592 /* Read a look-ahead token if we need one and don't already have one. */
1593 /* yyresume: */
1594
1595 /* First try to decide what to do without reference to look-ahead token. */
1596
1597 yyn = yypact[yystate];
1598 if (yyn == YYPACT_NINF)
1599 goto yydefault;
1600
1601 /* Not known => get a look-ahead token if don't already have one. */
1602
1603 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1604 if (yychar == YYEMPTY)
1605 {
1606 YYDPRINTF ((stderr, "Reading a token: "));
1607 yychar = YYLEX;
1608 }
1609
1610 if (yychar <= YYEOF)
1611 {
1612 yychar = yytoken = YYEOF;
1613 YYDPRINTF ((stderr, "Now at end of input.\n"));
1614 }
1615 else
1616 {
1617 yytoken = YYTRANSLATE (yychar);
1618 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1619 }
1620
1621 /* If the proper action on seeing token YYTOKEN is to reduce or to
1622 detect an error, take that action. */
1623 yyn += yytoken;
1624 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1625 goto yydefault;
1626 yyn = yytable[yyn];
1627 if (yyn <= 0)
1628 {
1629 if (yyn == 0 || yyn == YYTABLE_NINF)
1630 goto yyerrlab;
1631 yyn = -yyn;
1632 goto yyreduce;
1633 }
1634
1635 if (yyn == YYFINAL)
1636 YYACCEPT;
1637
1638 /* Shift the look-ahead token. */
1639 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1640
1641 /* Discard the token being shifted unless it is eof. */
1642 if (yychar != YYEOF)
1643 yychar = YYEMPTY;
1644
1645 *++yyvsp = yylval;
1646 *++yylsp = yylloc;
1647
1648 /* Count tokens shifted since error; after three, turn off error
1649 status. */
1650 if (yyerrstatus)
1651 yyerrstatus--;
1652
1653 yystate = yyn;
1654 goto yynewstate;
1655
1656
1657 /*-----------------------------------------------------------.
1658 | yydefault -- do the default action for the current state. |
1659 `-----------------------------------------------------------*/
1660 yydefault:
1661 yyn = yydefact[yystate];
1662 if (yyn == 0)
1663 goto yyerrlab;
1664 goto yyreduce;
1665
1666
1667 /*-----------------------------.
1668 | yyreduce -- Do a reduction. |
1669 `-----------------------------*/
1670 yyreduce:
1671 /* yyn is the number of a rule to reduce with. */
1672 yylen = yyr2[yyn];
1673
1674 /* If YYLEN is nonzero, implement the default value of the action:
1675 `$$ = $1'.
1676
1677 Otherwise, the following line sets YYVAL to garbage.
1678 This behavior is undocumented and Bison
1679 users should not rely upon it. Assigning to YYVAL
1680 unconditionally makes the parser a bit smaller, and it avoids a
1681 GCC warning that YYVAL may be used uninitialized. */
1682 yyval = yyvsp[1-yylen];
1683
1684 /* Default location. */
1685 YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);
1686 YY_REDUCE_PRINT (yyn);
1687 switch (yyn)
1688 {
1689 case 6:
1690 #line 206 "parse-gram.y"
1691 { prologue_augment ((yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)])); }
1692 break;
1693
1694 case 7:
1695 #line 207 "parse-gram.y"
1696 { debug_flag = true; }
1697 break;
1698
1699 case 8:
1700 #line 208 "parse-gram.y"
1701 { muscle_insert ((yyvsp[(2) - (2)].chars), "1"); }
1702 break;
1703
1704 case 9:
1705 #line 209 "parse-gram.y"
1706 { muscle_insert ((yyvsp[(2) - (3)].chars), (yyvsp[(3) - (3)].chars)); }
1707 break;
1708
1709 case 10:
1710 #line 210 "parse-gram.y"
1711 { defines_flag = true; }
1712 break;
1713
1714 case 11:
1715 #line 211 "parse-gram.y"
1716 { error_verbose = true; }
1717 break;
1718
1719 case 12:
1720 #line 212 "parse-gram.y"
1721 { expected_sr_conflicts = (yyvsp[(2) - (2)].integer); }
1722 break;
1723
1724 case 13:
1725 #line 213 "parse-gram.y"
1726 { expected_rr_conflicts = (yyvsp[(2) - (2)].integer); }
1727 break;
1728
1729 case 14:
1730 #line 214 "parse-gram.y"
1731 { spec_file_prefix = (yyvsp[(3) - (3)].chars); }
1732 break;
1733
1734 case 15:
1735 #line 216 "parse-gram.y"
1736 {
1737 nondeterministic_parser = true;
1738 glr_parser = true;
1739 }
1740 break;
1741
1742 case 16:
1743 #line 221 "parse-gram.y"
1744 {
1745 muscle_code_grow ("initial_action", (yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)]));
1746 }
1747 break;
1748
1749 case 17:
1750 #line 224 "parse-gram.y"
1751 { add_param ("lex_param", (yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)])); }
1752 break;
1753
1754 case 18:
1755 #line 225 "parse-gram.y"
1756 { locations_flag = true; }
1757 break;
1758
1759 case 19:
1760 #line 226 "parse-gram.y"
1761 { spec_name_prefix = (yyvsp[(3) - (3)].chars); }
1762 break;
1763
1764 case 20:
1765 #line 227 "parse-gram.y"
1766 { no_lines_flag = true; }
1767 break;
1768
1769 case 21:
1770 #line 228 "parse-gram.y"
1771 { nondeterministic_parser = true; }
1772 break;
1773
1774 case 22:
1775 #line 229 "parse-gram.y"
1776 { spec_outfile = (yyvsp[(3) - (3)].chars); }
1777 break;
1778
1779 case 23:
1780 #line 230 "parse-gram.y"
1781 { add_param ("parse_param", (yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)])); }
1782 break;
1783
1784 case 24:
1785 #line 231 "parse-gram.y"
1786 { pure_parser = true; }
1787 break;
1788
1789 case 25:
1790 #line 232 "parse-gram.y"
1791 { version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); }
1792 break;
1793
1794 case 26:
1795 #line 233 "parse-gram.y"
1796 { skeleton = (yyvsp[(2) - (2)].chars); }
1797 break;
1798
1799 case 27:
1800 #line 234 "parse-gram.y"
1801 { token_table_flag = true; }
1802 break;
1803
1804 case 28:
1805 #line 235 "parse-gram.y"
1806 { report_flag = report_states; }
1807 break;
1808
1809 case 29:
1810 #line 236 "parse-gram.y"
1811 { yacc_flag = true; }
1812 break;
1813
1814 case 33:
1815 #line 244 "parse-gram.y"
1816 {
1817 grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]));
1818 }
1819 break;
1820
1821 case 34:
1822 #line 248 "parse-gram.y"
1823 {
1824 typed = true;
1825 MUSCLE_INSERT_INT ("stype_line", (yylsp[(1) - (1)]).start.line);
1826 muscle_insert ("stype", (yyvsp[(1) - (1)].chars));
1827 }
1828 break;
1829
1830 case 35:
1831 #line 254 "parse-gram.y"
1832 {
1833 symbol_list *list;
1834 for (list = (yyvsp[(2) - (2)].list); list; list = list->next)
1835 symbol_destructor_set (list->sym, (yyvsp[(1) - (2)].chars), (yylsp[(1) - (2)]));
1836 symbol_list_free ((yyvsp[(2) - (2)].list));
1837 }
1838 break;
1839
1840 case 36:
1841 #line 261 "parse-gram.y"
1842 {
1843 symbol_list *list;
1844 for (list = (yyvsp[(2) - (2)].list); list; list = list->next)
1845 symbol_printer_set (list->sym, (yyvsp[(1) - (2)].chars), list->location);
1846 symbol_list_free ((yyvsp[(2) - (2)].list));
1847 }
1848 break;
1849
1850 case 37:
1851 #line 268 "parse-gram.y"
1852 {
1853 default_prec = true;
1854 }
1855 break;
1856
1857 case 38:
1858 #line 272 "parse-gram.y"
1859 {
1860 default_prec = false;
1861 }
1862 break;
1863
1864 case 39:
1865 #line 278 "parse-gram.y"
1866 { current_class = nterm_sym; }
1867 break;
1868
1869 case 40:
1870 #line 279 "parse-gram.y"
1871 {
1872 current_class = unknown_sym;
1873 current_type = NULL;
1874 }
1875 break;
1876
1877 case 41:
1878 #line 283 "parse-gram.y"
1879 { current_class = token_sym; }
1880 break;
1881
1882 case 42:
1883 #line 284 "parse-gram.y"
1884 {
1885 current_class = unknown_sym;
1886 current_type = NULL;
1887 }
1888 break;
1889
1890 case 43:
1891 #line 289 "parse-gram.y"
1892 {
1893 symbol_list *list;
1894 for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
1895 symbol_type_set (list->sym, (yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]));
1896 symbol_list_free ((yyvsp[(3) - (3)].list));
1897 }
1898 break;
1899
1900 case 44:
1901 #line 299 "parse-gram.y"
1902 {
1903 symbol_list *list;
1904 ++current_prec;
1905 for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
1906 {
1907 symbol_type_set (list->sym, current_type, (yylsp[(2) - (3)]));
1908 symbol_precedence_set (list->sym, current_prec, (yyvsp[(1) - (3)].assoc), (yylsp[(1) - (3)]));
1909 }
1910 symbol_list_free ((yyvsp[(3) - (3)].list));
1911 current_type = NULL;
1912 }
1913 break;
1914
1915 case 45:
1916 #line 313 "parse-gram.y"
1917 { (yyval.assoc) = left_assoc; }
1918 break;
1919
1920 case 46:
1921 #line 314 "parse-gram.y"
1922 { (yyval.assoc) = right_assoc; }
1923 break;
1924
1925 case 47:
1926 #line 315 "parse-gram.y"
1927 { (yyval.assoc) = non_assoc; }
1928 break;
1929
1930 case 48:
1931 #line 319 "parse-gram.y"
1932 { current_type = NULL; }
1933 break;
1934
1935 case 49:
1936 #line 320 "parse-gram.y"
1937 { current_type = (yyvsp[(1) - (1)].uniqstr); }
1938 break;
1939
1940 case 50:
1941 #line 326 "parse-gram.y"
1942 { (yyval.list) = symbol_list_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
1943 break;
1944
1945 case 51:
1946 #line 327 "parse-gram.y"
1947 { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
1948 break;
1949
1950 case 52:
1951 #line 333 "parse-gram.y"
1952 {
1953 current_type = (yyvsp[(1) - (1)].uniqstr);
1954 }
1955 break;
1956
1957 case 53:
1958 #line 337 "parse-gram.y"
1959 {
1960 symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]));
1961 symbol_type_set ((yyvsp[(1) - (1)].symbol), current_type, (yylsp[(1) - (1)]));
1962 }
1963 break;
1964
1965 case 54:
1966 #line 342 "parse-gram.y"
1967 {
1968 symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]));
1969 symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
1970 symbol_user_token_number_set ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].integer), (yylsp[(2) - (2)]));
1971 }
1972 break;
1973
1974 case 55:
1975 #line 348 "parse-gram.y"
1976 {
1977 symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]));
1978 symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
1979 symbol_make_alias ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].symbol), (yyloc));
1980 }
1981 break;
1982
1983 case 56:
1984 #line 354 "parse-gram.y"
1985 {
1986 symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]));
1987 symbol_type_set ((yyvsp[(1) - (3)].symbol), current_type, (yylsp[(1) - (3)]));
1988 symbol_user_token_number_set ((yyvsp[(1) - (3)].symbol), (yyvsp[(2) - (3)].integer), (yylsp[(2) - (3)]));
1989 symbol_make_alias ((yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol), (yyloc));
1990 }
1991 break;
1992
1993 case 62:
1994 #line 383 "parse-gram.y"
1995 {
1996 if (yacc_flag)
1997 complain_at ((yyloc), _("POSIX forbids declarations in the grammar"));
1998 }
1999 break;
2000
2001 case 63:
2002 #line 388 "parse-gram.y"
2003 {
2004 yyerrok;
2005 }
2006 break;
2007
2008 case 64:
2009 #line 394 "parse-gram.y"
2010 { current_lhs = (yyvsp[(1) - (1)].symbol); current_lhs_location = (yylsp[(1) - (1)]); }
2011 break;
2012
2013 case 66:
2014 #line 398 "parse-gram.y"
2015 { grammar_rule_end ((yylsp[(1) - (1)])); }
2016 break;
2017
2018 case 67:
2019 #line 399 "parse-gram.y"
2020 { grammar_rule_end ((yylsp[(3) - (3)])); }
2021 break;
2022
2023 case 69:
2024 #line 405 "parse-gram.y"
2025 { grammar_rule_begin (current_lhs, current_lhs_location); }
2026 break;
2027
2028 case 70:
2029 #line 407 "parse-gram.y"
2030 { grammar_current_rule_symbol_append ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)])); }
2031 break;
2032
2033 case 71:
2034 #line 409 "parse-gram.y"
2035 { grammar_current_rule_action_append ((yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)])); }
2036 break;
2037
2038 case 72:
2039 #line 411 "parse-gram.y"
2040 { grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
2041 break;
2042
2043 case 73:
2044 #line 413 "parse-gram.y"
2045 { grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
2046 break;
2047
2048 case 74:
2049 #line 415 "parse-gram.y"
2050 { grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
2051 break;
2052
2053 case 75:
2054 #line 419 "parse-gram.y"
2055 { (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
2056 break;
2057
2058 case 76:
2059 #line 420 "parse-gram.y"
2060 { (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
2061 break;
2062
2063 case 77:
2064 #line 425 "parse-gram.y"
2065 { (yyval.chars) = (yyvsp[(1) - (1)].chars); }
2066 break;
2067
2068 case 78:
2069 #line 431 "parse-gram.y"
2070 {
2071 (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
2072 symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]));
2073 }
2074 break;
2075
2076 case 79:
2077 #line 440 "parse-gram.y"
2078 { (yyval.chars) = (yyvsp[(1) - (1)].chars); }
2079 break;
2080
2081 case 81:
2082 #line 447 "parse-gram.y"
2083 {
2084 muscle_code_grow ("epilogue", (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
2085 scanner_last_string_free ();
2086 }
2087 break;
2088
2089
2090 default: break;
2091 }
2092 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2093
2094 /* Line __line__ of yacc.c. */
2095 #line 2096 "parse-gram.c"
2096 \f
2097 yyvsp -= yylen;
2098 yyssp -= yylen;
2099 yylsp -= yylen;
2100
2101 YY_STACK_PRINT (yyss, yyssp);
2102
2103 *++yyvsp = yyval;
2104 *++yylsp = yyloc;
2105
2106 /* Now `shift' the result of the reduction. Determine what state
2107 that goes to, based on the state we popped back to and the rule
2108 number reduced by. */
2109
2110 yyn = yyr1[yyn];
2111
2112 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2113 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2114 yystate = yytable[yystate];
2115 else
2116 yystate = yydefgoto[yyn - YYNTOKENS];
2117
2118 goto yynewstate;
2119
2120
2121 /*------------------------------------.
2122 | yyerrlab -- here on detecting error |
2123 `------------------------------------*/
2124 yyerrlab:
2125 /* If not already recovering from an error, report this error. */
2126 if (!yyerrstatus)
2127 {
2128 ++yynerrs;
2129 #if ! YYERROR_VERBOSE
2130 yyerror (YY_("syntax error"));
2131 #else
2132 {
2133 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2134 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2135 {
2136 YYSIZE_T yyalloc = 2 * yysize;
2137 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2138 yyalloc = YYSTACK_ALLOC_MAXIMUM;
2139 if (yymsg != yymsgbuf)
2140 YYSTACK_FREE (yymsg);
2141 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2142 if (yymsg)
2143 yymsg_alloc = yyalloc;
2144 else
2145 {
2146 yymsg = yymsgbuf;
2147 yymsg_alloc = sizeof yymsgbuf;
2148 }
2149 }
2150
2151 if (0 < yysize && yysize <= yymsg_alloc)
2152 {
2153 (void) yysyntax_error (yymsg, yystate, yychar);
2154 yyerror (yymsg);
2155 }
2156 else
2157 {
2158 yyerror (YY_("syntax error"));
2159 if (yysize != 0)
2160 goto yyexhaustedlab;
2161 }
2162 }
2163 #endif
2164 }
2165
2166 yyerror_range[0] = yylloc;
2167
2168 if (yyerrstatus == 3)
2169 {
2170 /* If just tried and failed to reuse look-ahead token after an
2171 error, discard it. */
2172
2173 if (yychar <= YYEOF)
2174 {
2175 /* Return failure if at end of input. */
2176 if (yychar == YYEOF)
2177 YYABORT;
2178 }
2179 else
2180 {
2181 yydestruct ("Error: discarding",
2182 yytoken, &yylval, &yylloc);
2183 yychar = YYEMPTY;
2184 }
2185 }
2186
2187 /* Else will try to reuse look-ahead token after shifting the error
2188 token. */
2189 goto yyerrlab1;
2190
2191
2192 /*---------------------------------------------------.
2193 | yyerrorlab -- error raised explicitly by YYERROR. |
2194 `---------------------------------------------------*/
2195 yyerrorlab:
2196
2197 /* Pacify compilers like GCC when the user code never invokes
2198 YYERROR and the label yyerrorlab therefore never appears in user
2199 code. */
2200 if (/*CONSTCOND*/ 0)
2201 goto yyerrorlab;
2202
2203 yyerror_range[0] = yylsp[1-yylen];
2204 yylsp -= yylen;
2205 yyvsp -= yylen;
2206 yyssp -= yylen;
2207 yystate = *yyssp;
2208 goto yyerrlab1;
2209
2210
2211 /*-------------------------------------------------------------.
2212 | yyerrlab1 -- common code for both syntax error and YYERROR. |
2213 `-------------------------------------------------------------*/
2214 yyerrlab1:
2215 yyerrstatus = 3; /* Each real token shifted decrements this. */
2216
2217 for (;;)
2218 {
2219 yyn = yypact[yystate];
2220 if (yyn != YYPACT_NINF)
2221 {
2222 yyn += YYTERROR;
2223 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2224 {
2225 yyn = yytable[yyn];
2226 if (0 < yyn)
2227 break;
2228 }
2229 }
2230
2231 /* Pop the current state because it cannot handle the error token. */
2232 if (yyssp == yyss)
2233 YYABORT;
2234
2235 yyerror_range[0] = *yylsp;
2236 yydestruct ("Error: popping",
2237 yystos[yystate], yyvsp, yylsp);
2238 YYPOPSTACK;
2239 yystate = *yyssp;
2240 YY_STACK_PRINT (yyss, yyssp);
2241 }
2242
2243 if (yyn == YYFINAL)
2244 YYACCEPT;
2245
2246 *++yyvsp = yylval;
2247
2248 yyerror_range[1] = yylloc;
2249 /* Using YYLLOC is tempting, but would change the location of
2250 the look-ahead. YYLOC is available though. */
2251 YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
2252 *++yylsp = yyloc;
2253
2254 /* Shift the error token. */
2255 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2256
2257 yystate = yyn;
2258 goto yynewstate;
2259
2260
2261 /*-------------------------------------.
2262 | yyacceptlab -- YYACCEPT comes here. |
2263 `-------------------------------------*/
2264 yyacceptlab:
2265 yyresult = 0;
2266 goto yyreturn;
2267
2268 /*-----------------------------------.
2269 | yyabortlab -- YYABORT comes here. |
2270 `-----------------------------------*/
2271 yyabortlab:
2272 yyresult = 1;
2273 goto yyreturn;
2274
2275 #ifndef yyoverflow
2276 /*-------------------------------------------------.
2277 | yyexhaustedlab -- memory exhaustion comes here. |
2278 `-------------------------------------------------*/
2279 yyexhaustedlab:
2280 yyerror (YY_("memory exhausted"));
2281 yyresult = 2;
2282 /* Fall through. */
2283 #endif
2284
2285 yyreturn:
2286 if (yychar != YYEOF && yychar != YYEMPTY)
2287 yydestruct ("Cleanup: discarding lookahead",
2288 yytoken, &yylval, &yylloc);
2289 while (yyssp != yyss)
2290 {
2291 yydestruct ("Cleanup: popping",
2292 yystos[*yyssp], yyvsp, yylsp);
2293 YYPOPSTACK;
2294 }
2295 #ifndef yyoverflow
2296 if (yyss != yyssa)
2297 YYSTACK_FREE (yyss);
2298 #endif
2299 #if YYERROR_VERBOSE
2300 if (yymsg != yymsgbuf)
2301 YYSTACK_FREE (yymsg);
2302 #endif
2303 return yyresult;
2304 }
2305
2306
2307 #line 453 "parse-gram.y"
2308
2309
2310
2311 /* Return the location of the left-hand side of a rule whose
2312 right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
2313 the right-hand side, and return an empty location equal to the end
2314 boundary of RHS[0] if the right-hand side is empty. */
2315
2316 static YYLTYPE
2317 lloc_default (YYLTYPE const *rhs, int n)
2318 {
2319 int i;
2320 YYLTYPE loc;
2321
2322 /* SGI MIPSpro 7.4.1m miscompiles "loc.start = loc.end = rhs[n].end;".
2323 The bug is fixed in 7.4.2m, but play it safe for now. */
2324 loc.start = rhs[n].end;
2325 loc.end = rhs[n].end;
2326
2327 /* Ignore empty nonterminals the start of the the right-hand side.
2328 Do not bother to ignore them at the end of the right-hand side,
2329 since empty nonterminals have the same end as their predecessors. */
2330 for (i = 1; i <= n; i++)
2331 if (! equal_boundaries (rhs[i].start, rhs[i].end))
2332 {
2333 loc.start = rhs[i].start;
2334 break;
2335 }
2336
2337 return loc;
2338 }
2339
2340
2341 /* Add a lex-param or a parse-param (depending on TYPE) with
2342 declaration DECL and location LOC. */
2343
2344 static void
2345 add_param (char const *type, char *decl, location loc)
2346 {
2347 static char const alphanum[26 + 26 + 1 + 10] =
2348 "abcdefghijklmnopqrstuvwxyz"
2349 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
2350 "_"
2351 "0123456789";
2352 char const *name_start = NULL;
2353 char *p;
2354
2355 /* Stop on last actual character. */
2356 for (p = decl; p[1]; p++)
2357 if ((p == decl
2358 || ! memchr (alphanum, p[-1], sizeof alphanum))
2359 && memchr (alphanum, p[0], sizeof alphanum - 10))
2360 name_start = p;
2361
2362 /* Strip the surrounding '{' and '}', and any blanks just inside
2363 the braces. */
2364 while (*--p == ' ' || *p == '\t')
2365 continue;
2366 p[1] = '\0';
2367 while (*++decl == ' ' || *decl == '\t')
2368 continue;
2369
2370 if (! name_start)
2371 complain_at (loc, _("missing identifier in parameter declaration"));
2372 else
2373 {
2374 char *name;
2375 size_t name_len;
2376
2377 for (name_len = 1;
2378 memchr (alphanum, name_start[name_len], sizeof alphanum);
2379 name_len++)
2380 continue;
2381
2382 name = xmalloc (name_len + 1);
2383 memcpy (name, name_start, name_len);
2384 name[name_len] = '\0';
2385 muscle_pair_list_grow (type, decl, name);
2386 free (name);
2387 }
2388
2389 scanner_last_string_free ();
2390 }
2391
2392 static void
2393 version_check (location const *loc, char const *version)
2394 {
2395 if (strverscmp (version, PACKAGE_VERSION) > 0)
2396 {
2397 complain_at (*loc, "require bison %s, but have %s",
2398 version, PACKAGE_VERSION);
2399 exit (63);
2400 }
2401 }
2402
2403 static void
2404 gram_error (location const *loc, char const *msg)
2405 {
2406 complain_at (*loc, "%s", msg);
2407 }
2408
2409 char const *
2410 token_name (int type)
2411 {
2412 return yytname[YYTRANSLATE (type)];
2413 }
2414