]> git.saurik.com Git - bison.git/blob - src/parse-gram.c
a02e68b669a2a290c415a8c223a3878c48330951
[bison.git] / src / parse-gram.c
1 /* A Bison parser, made by GNU Bison 2.6.4.15-c3a5a-dirty. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34 simplifying the original so-called "semantic" parser. */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37 infringing on user name space. This should be done even for local
38 variables, as they might otherwise be expanded by user macros.
39 There are some unavoidable exceptions within include files to
40 define necessary library symbols; they are noted "INFRINGES ON
41 USER NAME SPACE" below. */
42
43 /* Identify Bison output. */
44 #define YYBISON 1
45
46 /* Bison version. */
47 #define YYBISON_VERSION "2.6.4.15-c3a5a-dirty"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 1
54
55 /* Push parsers. */
56 #define YYPUSH 0
57
58 /* Pull parsers. */
59 #define YYPULL 1
60
61 /* Substitute the type names. */
62 #define YYSTYPE GRAM_STYPE
63 #define YYLTYPE GRAM_LTYPE
64 /* Substitute the variable and function names. */
65 #define yyparse gram_parse
66 #define yylex gram_lex
67 #define yyerror gram_error
68 #define yylval gram_lval
69 #define yychar gram_char
70 #define yydebug gram_debug
71 #define yynerrs gram_nerrs
72 #define yylloc gram_lloc
73
74 /* Copy the first part of user declarations. */
75 /* Line 359 of yacc.c */
76 #line 1 "parse-gram.y"
77 /* Bison Grammar Parser -*- C -*-
78
79 Copyright (C) 2002-2012 Free Software Foundation, Inc.
80
81 This file is part of Bison, the GNU Compiler Compiler.
82
83 This program is free software: you can redistribute it and/or modify
84 it under the terms of the GNU General Public License as published by
85 the Free Software Foundation, either version 3 of the License, or
86 (at your option) any later version.
87
88 This program is distributed in the hope that it will be useful,
89 but WITHOUT ANY WARRANTY; without even the implied warranty of
90 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
91 GNU General Public License for more details.
92
93 You should have received a copy of the GNU General Public License
94 along with this program. If not, see <http://www.gnu.org/licenses/>. */
95
96 #include <config.h>
97 #include "system.h"
98
99 #include "c-ctype.h"
100 #include "complain.h"
101 #include "conflicts.h"
102 #include "files.h"
103 #include "getargs.h"
104 #include "gram.h"
105 #include "muscle-tab.h"
106 #include "named-ref.h"
107 #include "quotearg.h"
108 #include "reader.h"
109 #include "symlist.h"
110 #include "scan-gram.h"
111 #include "scan-code.h"
112 #include "xmemdup0.h"
113
114 #define YYLLOC_DEFAULT(Current, Rhs, N) (Current) = lloc_default (Rhs, N)
115 static YYLTYPE lloc_default (YYLTYPE const *, int);
116
117 #define YY_LOCATION_PRINT(File, Loc) \
118 location_print (File, Loc)
119
120 static void version_check (location const *loc, char const *version);
121
122 /* Request detailed syntax error messages, and pass them to GRAM_ERROR.
123 FIXME: depends on the undocumented availability of YYLLOC. */
124 #undef yyerror
125 #define yyerror(Msg) \
126 gram_error (&yylloc, Msg)
127 static void gram_error (location const *, char const *);
128
129 static char const *char_name (char);
130
131 /** Add a lex-param or a parse-param.
132 *
133 * \param type \a lex_param or \a parse_param
134 * \param decl the formal argument
135 * \param loc the location in the source.
136 */
137 static void add_param (char const *type, char *decl, location loc);
138
139
140 static symbol_class current_class = unknown_sym;
141 static uniqstr current_type = NULL;
142 static symbol *current_lhs_symbol;
143 static location current_lhs_location;
144 static named_ref *current_lhs_named_ref;
145 static int current_prec = 0;
146
147 /** Set the new current left-hand side symbol, possibly common
148 * to several right-hand side parts of rule.
149 */
150 static
151 void
152 current_lhs(symbol *sym, location loc, named_ref *ref)
153 {
154 current_lhs_symbol = sym;
155 current_lhs_location = loc;
156 /* In order to simplify memory management, named references for lhs
157 are always assigned by deep copy into the current symbol_list
158 node. This is because a single named-ref in the grammar may
159 result in several uses when the user factors lhs between several
160 rules using "|". Therefore free the parser's original copy. */
161 free (current_lhs_named_ref);
162 current_lhs_named_ref = ref;
163 }
164
165
166 #define YYTYPE_INT16 int_fast16_t
167 #define YYTYPE_INT8 int_fast8_t
168 #define YYTYPE_UINT16 uint_fast16_t
169 #define YYTYPE_UINT8 uint_fast8_t
170
171 /* Line 359 of yacc.c */
172 #line 173 "parse-gram.c"
173
174 # ifndef YY_NULL
175 # if defined __cplusplus && 201103L <= __cplusplus
176 # define YY_NULL nullptr
177 # else
178 # define YY_NULL 0
179 # endif
180 # endif
181
182 /* Enabling verbose error messages. */
183 #ifdef YYERROR_VERBOSE
184 # undef YYERROR_VERBOSE
185 # define YYERROR_VERBOSE 1
186 #else
187 # define YYERROR_VERBOSE 1
188 #endif
189
190 /* In a future release of Bison, this section will be replaced
191 by #include "parse-gram.h". */
192 #ifndef YY_GRAM_Y_TAB_H_INCLUDED
193 # define YY_GRAM_Y_TAB_H_INCLUDED
194 /* Enabling traces. */
195 #ifndef GRAM_DEBUG
196 # if defined YYDEBUG
197 # if YYDEBUG
198 # define GRAM_DEBUG 1
199 # else
200 # define GRAM_DEBUG 0
201 # endif
202 # else /* ! defined YYDEBUG */
203 # define GRAM_DEBUG 1
204 # endif /* ! defined YYDEBUG */
205 #endif /* ! defined GRAM_DEBUG */
206 #if GRAM_DEBUG
207 extern int gram_debug;
208 #endif
209
210 /* Tokens. */
211 #ifndef GRAM_TOKENTYPE
212 # define GRAM_TOKENTYPE
213 /* Put the tokens into the symbol table, so that GDB and other debuggers
214 know about them. */
215 enum gram_tokentype {
216 GRAM_EOF = 0,
217 STRING = 258,
218 INT = 259,
219 PERCENT_TOKEN = 260,
220 PERCENT_NTERM = 261,
221 PERCENT_TYPE = 262,
222 PERCENT_DESTRUCTOR = 263,
223 PERCENT_PRINTER = 264,
224 PERCENT_LEFT = 265,
225 PERCENT_RIGHT = 266,
226 PERCENT_NONASSOC = 267,
227 PERCENT_PREC = 268,
228 PERCENT_DPREC = 269,
229 PERCENT_MERGE = 270,
230 PERCENT_CODE = 271,
231 PERCENT_DEBUG = 272,
232 PERCENT_DEFAULT_PREC = 273,
233 PERCENT_DEFINE = 274,
234 PERCENT_DEFINES = 275,
235 PERCENT_ERROR_VERBOSE = 276,
236 PERCENT_EXPECT = 277,
237 PERCENT_EXPECT_RR = 278,
238 PERCENT_FILE_PREFIX = 279,
239 PERCENT_GLR_PARSER = 280,
240 PERCENT_INITIAL_ACTION = 281,
241 PERCENT_LANGUAGE = 282,
242 PERCENT_LEX_PARAM = 283,
243 PERCENT_LOCATIONS = 284,
244 PERCENT_NAME_PREFIX = 285,
245 PERCENT_NO_DEFAULT_PREC = 286,
246 PERCENT_NO_LINES = 287,
247 PERCENT_NONDETERMINISTIC_PARSER = 288,
248 PERCENT_OUTPUT = 289,
249 PERCENT_PARSE_PARAM = 290,
250 PERCENT_PURE_PARSER = 291,
251 PERCENT_REQUIRE = 292,
252 PERCENT_SKELETON = 293,
253 PERCENT_START = 294,
254 PERCENT_TOKEN_TABLE = 295,
255 PERCENT_VERBOSE = 296,
256 PERCENT_YACC = 297,
257 BRACED_CODE = 298,
258 BRACKETED_ID = 299,
259 CHAR = 300,
260 EPILOGUE = 301,
261 EQUAL = 302,
262 ID = 303,
263 ID_COLON = 304,
264 PERCENT_PERCENT = 305,
265 PIPE = 306,
266 PROLOGUE = 307,
267 SEMICOLON = 308,
268 TYPE = 309,
269 TYPE_TAG_ANY = 310,
270 TYPE_TAG_NONE = 311,
271 PERCENT_UNION = 312
272 };
273 #endif
274 /* Tokens. */
275 #define GRAM_EOF 0
276 #define STRING 258
277 #define INT 259
278 #define PERCENT_TOKEN 260
279 #define PERCENT_NTERM 261
280 #define PERCENT_TYPE 262
281 #define PERCENT_DESTRUCTOR 263
282 #define PERCENT_PRINTER 264
283 #define PERCENT_LEFT 265
284 #define PERCENT_RIGHT 266
285 #define PERCENT_NONASSOC 267
286 #define PERCENT_PREC 268
287 #define PERCENT_DPREC 269
288 #define PERCENT_MERGE 270
289 #define PERCENT_CODE 271
290 #define PERCENT_DEBUG 272
291 #define PERCENT_DEFAULT_PREC 273
292 #define PERCENT_DEFINE 274
293 #define PERCENT_DEFINES 275
294 #define PERCENT_ERROR_VERBOSE 276
295 #define PERCENT_EXPECT 277
296 #define PERCENT_EXPECT_RR 278
297 #define PERCENT_FILE_PREFIX 279
298 #define PERCENT_GLR_PARSER 280
299 #define PERCENT_INITIAL_ACTION 281
300 #define PERCENT_LANGUAGE 282
301 #define PERCENT_LEX_PARAM 283
302 #define PERCENT_LOCATIONS 284
303 #define PERCENT_NAME_PREFIX 285
304 #define PERCENT_NO_DEFAULT_PREC 286
305 #define PERCENT_NO_LINES 287
306 #define PERCENT_NONDETERMINISTIC_PARSER 288
307 #define PERCENT_OUTPUT 289
308 #define PERCENT_PARSE_PARAM 290
309 #define PERCENT_PURE_PARSER 291
310 #define PERCENT_REQUIRE 292
311 #define PERCENT_SKELETON 293
312 #define PERCENT_START 294
313 #define PERCENT_TOKEN_TABLE 295
314 #define PERCENT_VERBOSE 296
315 #define PERCENT_YACC 297
316 #define BRACED_CODE 298
317 #define BRACKETED_ID 299
318 #define CHAR 300
319 #define EPILOGUE 301
320 #define EQUAL 302
321 #define ID 303
322 #define ID_COLON 304
323 #define PERCENT_PERCENT 305
324 #define PIPE 306
325 #define PROLOGUE 307
326 #define SEMICOLON 308
327 #define TYPE 309
328 #define TYPE_TAG_ANY 310
329 #define TYPE_TAG_NONE 311
330 #define PERCENT_UNION 312
331
332
333
334 #if ! defined GRAM_STYPE && ! defined GRAM_STYPE_IS_DECLARED
335 typedef union GRAM_STYPE
336 {
337 /* Line 375 of yacc.c */
338 #line 115 "parse-gram.y"
339
340 symbol *symbol;
341 symbol_list *list;
342 int integer;
343 char const *chars;
344 char *code;
345 assoc assoc;
346 uniqstr uniqstr;
347 unsigned char character;
348 named_ref *named_ref;
349
350
351 /* Line 375 of yacc.c */
352 #line 353 "parse-gram.c"
353 } GRAM_STYPE;
354 # define GRAM_STYPE_IS_TRIVIAL 1
355 # define gram_stype GRAM_STYPE /* obsolescent; will be withdrawn */
356 # define GRAM_STYPE_IS_DECLARED 1
357 #endif
358
359 #if ! defined GRAM_LTYPE && ! defined GRAM_LTYPE_IS_DECLARED
360 typedef struct GRAM_LTYPE
361 {
362 int first_line;
363 int first_column;
364 int last_line;
365 int last_column;
366 } GRAM_LTYPE;
367 # define gram_ltype GRAM_LTYPE /* obsolescent; will be withdrawn */
368 # define GRAM_LTYPE_IS_DECLARED 1
369 # define GRAM_LTYPE_IS_TRIVIAL 1
370 #endif
371
372
373 #ifdef YYPARSE_PARAM
374 #if defined __STDC__ || defined __cplusplus
375 int gram_parse (void *YYPARSE_PARAM);
376 #else
377 int gram_parse ();
378 #endif
379 #else /* ! YYPARSE_PARAM */
380 #if defined __STDC__ || defined __cplusplus
381 int gram_parse (void);
382 #else
383 int gram_parse ();
384 #endif
385 #endif /* ! YYPARSE_PARAM */
386
387 #endif /* !YY_GRAM_Y_TAB_H_INCLUDED */
388
389 /* Copy the second part of user declarations. */
390
391 /* Line 378 of yacc.c */
392 #line 393 "parse-gram.c"
393
394 #ifdef short
395 # undef short
396 #endif
397
398 #ifdef YYTYPE_UINT8
399 typedef YYTYPE_UINT8 yytype_uint8;
400 #else
401 typedef unsigned char yytype_uint8;
402 #endif
403
404 #ifdef YYTYPE_INT8
405 typedef YYTYPE_INT8 yytype_int8;
406 #elif (defined __STDC__ || defined __C99__FUNC__ \
407 || defined __cplusplus || defined _MSC_VER)
408 typedef signed char yytype_int8;
409 #else
410 typedef short int yytype_int8;
411 #endif
412
413 #ifdef YYTYPE_UINT16
414 typedef YYTYPE_UINT16 yytype_uint16;
415 #else
416 typedef unsigned short int yytype_uint16;
417 #endif
418
419 #ifdef YYTYPE_INT16
420 typedef YYTYPE_INT16 yytype_int16;
421 #else
422 typedef short int yytype_int16;
423 #endif
424
425 #ifndef YYSIZE_T
426 # ifdef __SIZE_TYPE__
427 # define YYSIZE_T __SIZE_TYPE__
428 # elif defined size_t
429 # define YYSIZE_T size_t
430 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
431 || defined __cplusplus || defined _MSC_VER)
432 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
433 # define YYSIZE_T size_t
434 # else
435 # define YYSIZE_T unsigned int
436 # endif
437 #endif
438
439 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
440
441 #ifndef YY_
442 # if defined YYENABLE_NLS && YYENABLE_NLS
443 # if ENABLE_NLS
444 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
445 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
446 # endif
447 # endif
448 # ifndef YY_
449 # define YY_(Msgid) Msgid
450 # endif
451 #endif
452
453 /* Suppress unused-variable warnings by "using" E. */
454 #if ! defined lint || defined __GNUC__
455 # define YYUSE(E) ((void) (E))
456 #else
457 # define YYUSE(E) /* empty */
458 #endif
459
460 /* Identity function, used to suppress warnings about constant conditions. */
461 #ifndef lint
462 # define YYID(N) (N)
463 #else
464 #if (defined __STDC__ || defined __C99__FUNC__ \
465 || defined __cplusplus || defined _MSC_VER)
466 static int
467 YYID (int yyi)
468 #else
469 static int
470 YYID (yyi)
471 int yyi;
472 #endif
473 {
474 return yyi;
475 }
476 #endif
477
478 #if 1
479
480 /* The parser invokes alloca or malloc; define the necessary symbols. */
481
482 # ifdef YYSTACK_ALLOC
483 /* Pacify GCC's `empty if-body' warning. */
484 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
485 # ifndef YYSTACK_ALLOC_MAXIMUM
486 /* The OS might guarantee only one guard page at the bottom of the stack,
487 and a page size can be as small as 4096 bytes. So we cannot safely
488 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
489 to allow for a few compiler-allocated temporary stack slots. */
490 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
491 # endif
492 # else
493 # define YYSTACK_ALLOC YYMALLOC
494 # define YYSTACK_FREE YYFREE
495 # ifndef YYSTACK_ALLOC_MAXIMUM
496 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
497 # endif
498 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
499 && ! ((defined YYMALLOC || defined malloc) \
500 && (defined YYFREE || defined free)))
501 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
502 # ifndef EXIT_SUCCESS
503 # define EXIT_SUCCESS 0
504 # endif
505 # endif
506 # ifndef YYMALLOC
507 # define YYMALLOC malloc
508 # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
509 || defined __cplusplus || defined _MSC_VER)
510 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
511 # endif
512 # endif
513 # ifndef YYFREE
514 # define YYFREE free
515 # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
516 || defined __cplusplus || defined _MSC_VER)
517 void free (void *); /* INFRINGES ON USER NAME SPACE */
518 # endif
519 # endif
520 # endif
521 # define YYCOPY_NEEDED 1
522 #endif
523
524
525 #if (! defined yyoverflow \
526 && (! defined __cplusplus \
527 || (defined GRAM_LTYPE_IS_TRIVIAL && GRAM_LTYPE_IS_TRIVIAL \
528 && defined GRAM_STYPE_IS_TRIVIAL && GRAM_STYPE_IS_TRIVIAL)))
529
530 /* A type that is properly aligned for any stack member. */
531 union yyalloc
532 {
533 yytype_int16 yyss_alloc;
534 YYSTYPE yyvs_alloc;
535 YYLTYPE yyls_alloc;
536 };
537
538 /* The size of the maximum gap between one aligned stack and the next. */
539 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
540
541 /* The size of an array large to enough to hold all stacks, each with
542 N elements. */
543 # define YYSTACK_BYTES(N) \
544 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
545 + 2 * YYSTACK_GAP_MAXIMUM)
546
547 # define YYCOPY_NEEDED 1
548
549 /* Relocate STACK from its old location to the new one. The
550 local variables YYSIZE and YYSTACKSIZE give the old and new number of
551 elements in the stack, and YYPTR gives the new location of the
552 stack. Advance YYPTR to a properly aligned location for the next
553 stack. */
554 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
555 do \
556 { \
557 YYSIZE_T yynewbytes; \
558 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
559 Stack = &yyptr->Stack_alloc; \
560 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
561 yyptr += yynewbytes / sizeof (*yyptr); \
562 } \
563 while (YYID (0))
564
565 #endif
566
567 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
568 /* Copy COUNT objects from SRC to DST. The source and destination do
569 not overlap. */
570 # ifndef YYCOPY
571 # if defined __GNUC__ && 1 < __GNUC__
572 # define YYCOPY(Dst, Src, Count) \
573 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
574 # else
575 # define YYCOPY(Dst, Src, Count) \
576 do \
577 { \
578 YYSIZE_T yyi; \
579 for (yyi = 0; yyi < (Count); yyi++) \
580 (Dst)[yyi] = (Src)[yyi]; \
581 } \
582 while (YYID (0))
583 # endif
584 # endif
585 #endif /* !YYCOPY_NEEDED */
586
587 /* YYFINAL -- State number of the termination state. */
588 #define YYFINAL 3
589 /* YYLAST -- Last index in YYTABLE. */
590 #define YYLAST 160
591
592 /* YYNTOKENS -- Number of terminals. */
593 #define YYNTOKENS 58
594 /* YYNNTS -- Number of nonterminals. */
595 #define YYNNTS 34
596 /* YYNRULES -- Number of rules. */
597 #define YYNRULES 108
598 /* YYNRULES -- Number of states. */
599 #define YYNSTATES 148
600
601 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
602 #define YYUNDEFTOK 2
603 #define YYMAXUTOK 312
604
605 #define YYTRANSLATE(YYX) \
606 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
607
608 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
609 static const yytype_uint8 yytranslate[] =
610 {
611 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
612 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
613 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
614 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
615 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
616 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
617 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
618 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
619 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
620 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
621 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
622 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
623 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
624 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
625 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
626 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
627 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
628 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
629 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
630 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
631 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
632 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
633 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
634 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
635 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
636 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
637 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
638 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
639 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
640 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
641 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
642 55, 56, 57
643 };
644
645 #if GRAM_DEBUG
646 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
647 YYRHS. */
648 static const yytype_uint16 yyprhs[] =
649 {
650 0, 0, 3, 8, 9, 12, 14, 16, 18, 22,
651 24, 27, 29, 32, 35, 38, 42, 44, 47, 50,
652 53, 55, 58, 62, 64, 66, 69, 73, 76, 78,
653 81, 84, 86, 88, 90, 92, 94, 96, 99, 103,
654 107, 109, 111, 114, 118, 119, 121, 125, 126, 130,
655 131, 135, 139, 143, 145, 147, 149, 150, 152, 154,
656 157, 159, 162, 164, 167, 169, 172, 174, 176, 178,
657 180, 182, 184, 187, 190, 194, 196, 199, 201, 204,
658 206, 209, 212, 213, 218, 220, 224, 227, 228, 232,
659 236, 240, 244, 248, 249, 251, 253, 255, 256, 258,
660 260, 262, 264, 266, 268, 270, 272, 274, 275
661 };
662
663 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
664 static const yytype_int8 yyrhs[] =
665 {
666 59, 0, -1, 60, 50, 77, 91, -1, -1, 60,
667 61, -1, 62, -1, 52, -1, 17, -1, 19, 84,
668 85, -1, 20, -1, 20, 3, -1, 21, -1, 22,
669 4, -1, 23, 4, -1, 24, 3, -1, 24, 47,
670 3, -1, 25, -1, 26, 43, -1, 27, 3, -1,
671 28, 43, -1, 29, -1, 30, 3, -1, 30, 47,
672 3, -1, 32, -1, 33, -1, 34, 3, -1, 34,
673 47, 3, -1, 35, 43, -1, 36, -1, 37, 3,
674 -1, 38, 3, -1, 40, -1, 41, -1, 42, -1,
675 53, -1, 67, -1, 64, -1, 39, 89, -1, 8,
676 43, 73, -1, 9, 43, 73, -1, 18, -1, 31,
677 -1, 16, 86, -1, 16, 48, 86, -1, -1, 48,
678 -1, 57, 63, 86, -1, -1, 6, 65, 76, -1,
679 -1, 5, 66, 76, -1, 7, 54, 72, -1, 68,
680 69, 70, -1, 10, -1, 11, -1, 12, -1, -1,
681 54, -1, 71, -1, 70, 71, -1, 89, -1, 89,
682 4, -1, 89, -1, 72, 89, -1, 74, -1, 73,
683 74, -1, 89, -1, 54, -1, 55, -1, 56, -1,
684 54, -1, 87, -1, 87, 4, -1, 87, 90, -1,
685 87, 4, 90, -1, 75, -1, 76, 75, -1, 78,
686 -1, 77, 78, -1, 79, -1, 62, 53, -1, 1,
687 53, -1, -1, 88, 83, 80, 81, -1, 82, -1,
688 81, 51, 82, -1, 81, 53, -1, -1, 82, 89,
689 83, -1, 82, 43, 83, -1, 82, 13, 89, -1,
690 82, 14, 4, -1, 82, 15, 54, -1, -1, 44,
691 -1, 48, -1, 3, -1, -1, 48, -1, 3, -1,
692 43, -1, 48, -1, 45, -1, 49, -1, 87, -1,
693 90, -1, 3, -1, -1, 50, 46, -1
694 };
695
696 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
697 static const yytype_uint16 yyrline[] =
698 {
699 0, 230, 230, 238, 240, 244, 245, 255, 256, 261,
700 262, 267, 268, 269, 270, 271, 272, 277, 286, 287,
701 288, 289, 290, 291, 292, 293, 294, 295, 296, 311,
702 312, 336, 337, 338, 339, 343, 344, 345, 349, 361,
703 373, 377, 381, 388, 403, 404, 408, 420, 420, 425,
704 425, 430, 441, 456, 457, 458, 462, 463, 468, 470,
705 475, 476, 481, 483, 488, 489, 493, 494, 495, 496,
706 501, 506, 511, 517, 523, 534, 535, 544, 545, 551,
707 552, 553, 560, 560, 568, 569, 570, 575, 577, 579,
708 581, 583, 585, 590, 592, 603, 604, 609, 610, 611,
709 620, 640, 642, 651, 656, 657, 662, 669, 671
710 };
711 #endif
712
713 #if GRAM_DEBUG || YYERROR_VERBOSE || 1
714 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
715 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
716 static const char *const yytname[] =
717 {
718 "\"end of file\"", "error", "$undefined", "\"string\"", "\"integer\"",
719 "\"%token\"", "\"%nterm\"", "\"%type\"", "\"%destructor\"",
720 "\"%printer\"", "\"%left\"", "\"%right\"", "\"%nonassoc\"", "\"%prec\"",
721 "\"%dprec\"", "\"%merge\"", "\"%code\"", "\"%debug\"",
722 "\"%default-prec\"", "\"%define\"", "\"%defines\"", "\"%error-verbose\"",
723 "\"%expect\"", "\"%expect-rr\"", "\"%file-prefix\"", "\"%glr-parser\"",
724 "\"%initial-action\"", "\"%language\"", "\"%lex-param\"",
725 "\"%locations\"", "\"%name-prefix\"", "\"%no-default-prec\"",
726 "\"%no-lines\"", "\"%nondeterministic-parser\"", "\"%output\"",
727 "\"%parse-param\"", "\"%pure-parser\"", "\"%require\"", "\"%skeleton\"",
728 "\"%start\"", "\"%token-table\"", "\"%verbose\"", "\"%yacc\"",
729 "\"{...}\"", "\"[identifier]\"", "\"char\"", "\"epilogue\"", "\"=\"",
730 "\"identifier\"", "\"identifier:\"", "\"%%\"", "\"|\"", "\"%{...%}\"",
731 "\";\"", "\"type\"", "\"<*>\"", "\"<>\"", "\"%union\"", "$accept",
732 "input", "prologue_declarations", "prologue_declaration",
733 "grammar_declaration", "union_name", "symbol_declaration", "$@1", "$@2",
734 "precedence_declaration", "precedence_declarator", "type.opt",
735 "symbols.prec", "symbol.prec", "symbols.1", "generic_symlist",
736 "generic_symlist_item", "symbol_def", "symbol_defs.1", "grammar",
737 "rules_or_grammar_declaration", "rules", "$@3", "rhses.1", "rhs",
738 "named_ref.opt", "variable", "content.opt", "braceless", "id",
739 "id_colon", "symbol", "string_as_id", "epilogue.opt", YY_NULL
740 };
741 #endif
742
743 # ifdef YYPRINT
744 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
745 token YYLEX-NUM. */
746 static const yytype_uint16 yytoknum[] =
747 {
748 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
749 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
750 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
751 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
752 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
753 305, 306, 307, 308, 309, 310, 311, 312
754 };
755 # endif
756
757 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
758 static const yytype_uint8 yyr1[] =
759 {
760 0, 58, 59, 60, 60, 61, 61, 61, 61, 61,
761 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
762 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
763 61, 61, 61, 61, 61, 62, 62, 62, 62, 62,
764 62, 62, 62, 62, 63, 63, 62, 65, 64, 66,
765 64, 64, 67, 68, 68, 68, 69, 69, 70, 70,
766 71, 71, 72, 72, 73, 73, 74, 74, 74, 74,
767 75, 75, 75, 75, 75, 76, 76, 77, 77, 78,
768 78, 78, 80, 79, 81, 81, 81, 82, 82, 82,
769 82, 82, 82, 83, 83, 84, 84, 85, 85, 85,
770 86, 87, 87, 88, 89, 89, 90, 91, 91
771 };
772
773 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
774 static const yytype_uint8 yyr2[] =
775 {
776 0, 2, 4, 0, 2, 1, 1, 1, 3, 1,
777 2, 1, 2, 2, 2, 3, 1, 2, 2, 2,
778 1, 2, 3, 1, 1, 2, 3, 2, 1, 2,
779 2, 1, 1, 1, 1, 1, 1, 2, 3, 3,
780 1, 1, 2, 3, 0, 1, 3, 0, 3, 0,
781 3, 3, 3, 1, 1, 1, 0, 1, 1, 2,
782 1, 2, 1, 2, 1, 2, 1, 1, 1, 1,
783 1, 1, 2, 2, 3, 1, 2, 1, 2, 1,
784 2, 2, 0, 4, 1, 3, 2, 0, 3, 3,
785 3, 3, 3, 0, 1, 1, 1, 0, 1, 1,
786 1, 1, 1, 1, 1, 1, 1, 0, 2
787 };
788
789 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
790 Performed when YYTABLE doesn't specify something else to do. Zero
791 means the default is an error. */
792 static const yytype_uint8 yydefact[] =
793 {
794 3, 0, 0, 1, 49, 47, 0, 0, 0, 53,
795 54, 55, 0, 7, 40, 0, 9, 11, 0, 0,
796 0, 16, 0, 0, 0, 20, 0, 41, 23, 24,
797 0, 0, 28, 0, 0, 0, 31, 32, 33, 0,
798 6, 34, 44, 4, 5, 36, 35, 56, 0, 0,
799 0, 0, 0, 100, 0, 42, 96, 95, 97, 10,
800 12, 13, 14, 0, 17, 18, 19, 21, 0, 25,
801 0, 27, 29, 30, 106, 102, 101, 104, 37, 105,
802 0, 103, 0, 0, 77, 79, 93, 45, 0, 57,
803 0, 70, 75, 50, 71, 48, 51, 62, 67, 68,
804 69, 38, 64, 66, 39, 43, 99, 98, 8, 15,
805 22, 26, 81, 80, 0, 78, 2, 94, 82, 46,
806 52, 58, 60, 76, 72, 73, 63, 65, 108, 87,
807 59, 61, 74, 83, 84, 87, 86, 0, 0, 0,
808 93, 93, 85, 90, 91, 92, 89, 88
809 };
810
811 /* YYDEFGOTO[NTERM-NUM]. */
812 static const yytype_int16 yydefgoto[] =
813 {
814 -1, 1, 2, 43, 82, 88, 45, 49, 48, 46,
815 47, 90, 120, 121, 96, 101, 102, 92, 93, 83,
816 84, 85, 129, 133, 134, 118, 58, 108, 55, 77,
817 86, 103, 79, 116
818 };
819
820 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
821 STATE-NUM. */
822 #define YYPACT_NINF -91
823 static const yytype_int16 yypact[] =
824 {
825 -91, 3, 103, -91, -91, -91, -36, 2, 10, -91,
826 -91, -91, 9, -91, -91, 32, 60, -91, 65, 67,
827 27, -91, 41, 73, 51, -91, 39, -91, -91, -91,
828 40, 52, -91, 93, 95, 33, -91, -91, -91, 15,
829 -91, -91, 53, -91, -91, -91, -91, 46, 43, 43,
830 33, 11, 11, -91, 61, -91, -91, -91, 35, -91,
831 -91, -91, -91, 100, -91, -91, -91, -91, 102, -91,
832 113, -91, -91, -91, -91, -91, -91, -91, -91, -91,
833 64, -91, 94, 1, -91, -91, 62, -91, 61, -91,
834 33, -91, -91, 43, 86, 43, 33, -91, -91, -91,
835 -91, 11, -91, -91, 11, -91, -91, -91, -91, -91,
836 -91, -91, -91, -91, 72, -91, -91, -91, -91, -91,
837 33, -91, 142, -91, 145, -91, -91, -91, -91, -91,
838 -91, -91, -91, 17, 34, -91, -91, 33, 146, 97,
839 62, 62, 34, -91, -91, -91, -91, -91
840 };
841
842 /* YYPGOTO[NTERM-NUM]. */
843 static const yytype_int16 yypgoto[] =
844 {
845 -91, -91, -91, -91, 147, -91, -91, -91, -91, -91,
846 -91, -91, -91, 37, -91, 106, -60, -33, 105, -91,
847 69, -91, -91, -91, 24, -48, -91, -91, -49, -20,
848 -91, -35, -90, -91
849 };
850
851 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
852 positive, shift that token. If negative, reduce the rule which
853 number is the opposite. If YYTABLE_NINF, syntax error. */
854 #define YYTABLE_NINF -108
855 static const yytype_int16 yytable[] =
856 {
857 78, -107, 80, 3, 125, 105, 4, 5, 6, 7,
858 8, 9, 10, 11, 74, 97, 80, 12, 50, 14,
859 4, 5, 6, 7, 8, 9, 10, 11, 94, 94,
860 62, 12, 27, 14, 132, 56, 74, 74, 106, 119,
861 35, 127, 67, 69, 127, 51, 27, 137, 138, 139,
862 81, 114, 53, 52, 35, 122, 75, 54, 42, 76,
863 123, 126, 123, 59, 81, 98, 99, 100, 135, 60,
864 136, 61, 42, 94, 63, 94, 65, 140, 75, 75,
865 57, 76, 76, 107, 64, 122, 68, 70, 75, 74,
866 124, 76, 146, 147, 66, 71, 72, 91, 73, 141,
867 89, 87, 143, 109, 53, 110, 117, 141, 4, 5,
868 6, 7, 8, 9, 10, 11, 111, 112, 128, 12,
869 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
870 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
871 33, 34, 35, 36, 37, 38, 131, 113, 74, 44,
872 144, 145, 115, 39, 95, 40, 41, 130, 104, 142,
873 42
874 };
875
876 #define yypact_value_is_default(Yystate) \
877 (!!((Yystate) == (-91)))
878
879 #define yytable_value_is_error(Yytable_value) \
880 YYID (0)
881
882 static const yytype_uint8 yycheck[] =
883 {
884 35, 0, 1, 0, 94, 54, 5, 6, 7, 8,
885 9, 10, 11, 12, 3, 50, 1, 16, 54, 18,
886 5, 6, 7, 8, 9, 10, 11, 12, 48, 49,
887 3, 16, 31, 18, 124, 3, 3, 3, 3, 88,
888 39, 101, 3, 3, 104, 43, 31, 13, 14, 15,
889 49, 50, 43, 43, 39, 90, 45, 48, 57, 48,
890 93, 96, 95, 3, 49, 54, 55, 56, 51, 4,
891 53, 4, 57, 93, 47, 95, 3, 43, 45, 45,
892 48, 48, 48, 48, 43, 120, 47, 47, 45, 3,
893 4, 48, 140, 141, 43, 43, 3, 54, 3, 134,
894 54, 48, 137, 3, 43, 3, 44, 142, 5, 6,
895 7, 8, 9, 10, 11, 12, 3, 53, 46, 16,
896 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
897 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
898 37, 38, 39, 40, 41, 42, 4, 53, 3, 2,
899 4, 54, 83, 50, 49, 52, 53, 120, 52, 135,
900 57
901 };
902
903 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
904 symbol of state STATE-NUM. */
905 static const yytype_uint8 yystos[] =
906 {
907 0, 59, 60, 0, 5, 6, 7, 8, 9, 10,
908 11, 12, 16, 17, 18, 19, 20, 21, 22, 23,
909 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
910 34, 35, 36, 37, 38, 39, 40, 41, 42, 50,
911 52, 53, 57, 61, 62, 64, 67, 68, 66, 65,
912 54, 43, 43, 43, 48, 86, 3, 48, 84, 3,
913 4, 4, 3, 47, 43, 3, 43, 3, 47, 3,
914 47, 43, 3, 3, 3, 45, 48, 87, 89, 90,
915 1, 49, 62, 77, 78, 79, 88, 48, 63, 54,
916 69, 54, 75, 76, 87, 76, 72, 89, 54, 55,
917 56, 73, 74, 89, 73, 86, 3, 48, 85, 3,
918 3, 3, 53, 53, 50, 78, 91, 44, 83, 86,
919 70, 71, 89, 75, 4, 90, 89, 74, 46, 80,
920 71, 4, 90, 81, 82, 51, 53, 13, 14, 15,
921 43, 89, 82, 89, 4, 54, 83, 83
922 };
923
924 #define yyerrok (yyerrstatus = 0)
925 #define yyclearin (yychar = YYEMPTY)
926 #define YYEMPTY (-2)
927 #define YYEOF 0
928
929 #define YYACCEPT goto yyacceptlab
930 #define YYABORT goto yyabortlab
931 #define YYERROR goto yyerrorlab
932
933
934 /* Like YYERROR except do call yyerror. This remains here temporarily
935 to ease the transition to the new meaning of YYERROR, for GCC.
936 Once GCC version 2 has supplanted version 1, this can go. However,
937 YYFAIL appears to be in use. Nevertheless, it is formally deprecated
938 in Bison 2.4.2's NEWS entry, where a plan to phase it out is
939 discussed. */
940
941 #define YYFAIL goto yyerrlab
942 #if defined YYFAIL
943 /* This is here to suppress warnings from the GCC cpp's
944 -Wunused-macros. Normally we don't worry about that warning, but
945 some users do, and we want to make it easy for users to remove
946 YYFAIL uses, which will produce warnings from Bison 2.5. */
947 #endif
948
949 #define YYRECOVERING() (!!yyerrstatus)
950
951 #define YYBACKUP(Token, Value) \
952 do \
953 if (yychar == YYEMPTY) \
954 { \
955 yychar = (Token); \
956 yylval = (Value); \
957 YYPOPSTACK (yylen); \
958 yystate = *yyssp; \
959 YY_LAC_DISCARD ("YYBACKUP"); \
960 goto yybackup; \
961 } \
962 else \
963 { \
964 yyerror (YY_("syntax error: cannot back up")); \
965 YYERROR; \
966 } \
967 while (YYID (0))
968
969
970 #define YYTERROR 1
971 #define YYERRCODE 256
972
973
974 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
975 If N is 0, then set CURRENT to the empty location which ends
976 the previous symbol: RHS[0] (always defined). */
977
978 #ifndef YYLLOC_DEFAULT
979 # define YYLLOC_DEFAULT(Current, Rhs, N) \
980 do \
981 if (YYID (N)) \
982 { \
983 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
984 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
985 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
986 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
987 } \
988 else \
989 { \
990 (Current).first_line = (Current).last_line = \
991 YYRHSLOC (Rhs, 0).last_line; \
992 (Current).first_column = (Current).last_column = \
993 YYRHSLOC (Rhs, 0).last_column; \
994 } \
995 while (YYID (0))
996 #endif
997
998 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
999
1000 /* YY_LOCATION_PRINT -- Print the location on the stream.
1001 This macro was not mandated originally: define only if we know
1002 we won't break user code: when these are the locations we know. */
1003
1004 #ifndef YY_LOCATION_PRINT
1005 # if defined GRAM_LTYPE_IS_TRIVIAL && GRAM_LTYPE_IS_TRIVIAL
1006 # define YY_LOCATION_PRINT(File, Loc) \
1007 fprintf (File, "%d.%d-%d.%d", \
1008 (Loc).first_line, (Loc).first_column, \
1009 (Loc).last_line, (Loc).last_column)
1010 # else
1011 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1012 # endif
1013 #endif
1014
1015
1016 /* YYLEX -- calling `yylex' with the right arguments. */
1017 #ifdef YYLEX_PARAM
1018 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
1019 #else
1020 # define YYLEX yylex (&yylval, &yylloc)
1021 #endif
1022
1023 /* Enable debugging if requested. */
1024 #if GRAM_DEBUG
1025
1026 # ifndef YYFPRINTF
1027 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1028 # define YYFPRINTF fprintf
1029 # endif
1030
1031 # define YYDPRINTF(Args) \
1032 do { \
1033 if (yydebug) \
1034 YYFPRINTF Args; \
1035 } while (YYID (0))
1036
1037 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1038 do { \
1039 if (yydebug) \
1040 { \
1041 YYFPRINTF (stderr, "%s ", Title); \
1042 yy_symbol_print (stderr, \
1043 Type, Value, Location); \
1044 YYFPRINTF (stderr, "\n"); \
1045 } \
1046 } while (YYID (0))
1047
1048
1049 /*--------------------------------.
1050 | Print this symbol on YYOUTPUT. |
1051 `--------------------------------*/
1052
1053 /*ARGSUSED*/
1054 #if (defined __STDC__ || defined __C99__FUNC__ \
1055 || defined __cplusplus || defined _MSC_VER)
1056 static void
1057 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
1058 #else
1059 static void
1060 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
1061 FILE *yyoutput;
1062 int yytype;
1063 YYSTYPE const * const yyvaluep;
1064 YYLTYPE const * const yylocationp;
1065 #endif
1066 {
1067 FILE *yyo = yyoutput;
1068 YYUSE (yyo);
1069 if (!yyvaluep)
1070 return;
1071 YYUSE (yylocationp);
1072 # ifdef YYPRINT
1073 if (yytype < YYNTOKENS)
1074 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1075 # else
1076 YYUSE (yyoutput);
1077 # endif
1078 switch (yytype)
1079 {
1080 case 3: /* "string" */
1081 /* Line 829 of yacc.c */
1082 #line 205 "parse-gram.y"
1083 { fputs (quotearg_style (c_quoting_style, ((*yyvaluep).chars)), stderr); };
1084 /* Line 829 of yacc.c */
1085 #line 1086 "parse-gram.c"
1086 break;
1087 case 4: /* "integer" */
1088 /* Line 829 of yacc.c */
1089 #line 217 "parse-gram.y"
1090 { fprintf (stderr, "%d", ((*yyvaluep).integer)); };
1091 /* Line 829 of yacc.c */
1092 #line 1093 "parse-gram.c"
1093 break;
1094 case 43: /* "{...}" */
1095 /* Line 829 of yacc.c */
1096 #line 207 "parse-gram.y"
1097 { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).code)); };
1098 /* Line 829 of yacc.c */
1099 #line 1100 "parse-gram.c"
1100 break;
1101 case 44: /* "[identifier]" */
1102 /* Line 829 of yacc.c */
1103 #line 212 "parse-gram.y"
1104 { fprintf (stderr, "[%s]", ((*yyvaluep).uniqstr)); };
1105 /* Line 829 of yacc.c */
1106 #line 1107 "parse-gram.c"
1107 break;
1108 case 45: /* "char" */
1109 /* Line 829 of yacc.c */
1110 #line 199 "parse-gram.y"
1111 { fputs (char_name (((*yyvaluep).character)), stderr); };
1112 /* Line 829 of yacc.c */
1113 #line 1114 "parse-gram.c"
1114 break;
1115 case 46: /* "epilogue" */
1116 /* Line 829 of yacc.c */
1117 #line 207 "parse-gram.y"
1118 { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
1119 /* Line 829 of yacc.c */
1120 #line 1121 "parse-gram.c"
1121 break;
1122 case 48: /* "identifier" */
1123 /* Line 829 of yacc.c */
1124 #line 211 "parse-gram.y"
1125 { fputs (((*yyvaluep).uniqstr), stderr); };
1126 /* Line 829 of yacc.c */
1127 #line 1128 "parse-gram.c"
1128 break;
1129 case 49: /* "identifier:" */
1130 /* Line 829 of yacc.c */
1131 #line 213 "parse-gram.y"
1132 { fprintf (stderr, "%s:", ((*yyvaluep).uniqstr)); };
1133 /* Line 829 of yacc.c */
1134 #line 1135 "parse-gram.c"
1135 break;
1136 case 52: /* "%{...%}" */
1137 /* Line 829 of yacc.c */
1138 #line 207 "parse-gram.y"
1139 { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
1140 /* Line 829 of yacc.c */
1141 #line 1142 "parse-gram.c"
1142 break;
1143 case 54: /* "type" */
1144 /* Line 829 of yacc.c */
1145 #line 214 "parse-gram.y"
1146 { fprintf (stderr, "<%s>", ((*yyvaluep).uniqstr)); };
1147 /* Line 829 of yacc.c */
1148 #line 1149 "parse-gram.c"
1149 break;
1150 case 71: /* symbol.prec */
1151 /* Line 829 of yacc.c */
1152 #line 220 "parse-gram.y"
1153 { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
1154 /* Line 829 of yacc.c */
1155 #line 1156 "parse-gram.c"
1156 break;
1157 case 84: /* variable */
1158 /* Line 829 of yacc.c */
1159 #line 211 "parse-gram.y"
1160 { fputs (((*yyvaluep).uniqstr), stderr); };
1161 /* Line 829 of yacc.c */
1162 #line 1163 "parse-gram.c"
1163 break;
1164 case 85: /* content.opt */
1165 /* Line 829 of yacc.c */
1166 #line 207 "parse-gram.y"
1167 { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
1168 /* Line 829 of yacc.c */
1169 #line 1170 "parse-gram.c"
1170 break;
1171 case 86: /* braceless */
1172 /* Line 829 of yacc.c */
1173 #line 207 "parse-gram.y"
1174 { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
1175 /* Line 829 of yacc.c */
1176 #line 1177 "parse-gram.c"
1177 break;
1178 case 87: /* id */
1179 /* Line 829 of yacc.c */
1180 #line 220 "parse-gram.y"
1181 { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
1182 /* Line 829 of yacc.c */
1183 #line 1184 "parse-gram.c"
1184 break;
1185 case 88: /* id_colon */
1186 /* Line 829 of yacc.c */
1187 #line 221 "parse-gram.y"
1188 { fprintf (stderr, "%s:", ((*yyvaluep).symbol)->tag); };
1189 /* Line 829 of yacc.c */
1190 #line 1191 "parse-gram.c"
1191 break;
1192 case 89: /* symbol */
1193 /* Line 829 of yacc.c */
1194 #line 220 "parse-gram.y"
1195 { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
1196 /* Line 829 of yacc.c */
1197 #line 1198 "parse-gram.c"
1198 break;
1199 case 90: /* string_as_id */
1200 /* Line 829 of yacc.c */
1201 #line 220 "parse-gram.y"
1202 { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
1203 /* Line 829 of yacc.c */
1204 #line 1205 "parse-gram.c"
1205 break;
1206 default:
1207 break;
1208 }
1209 }
1210
1211
1212 /*--------------------------------.
1213 | Print this symbol on YYOUTPUT. |
1214 `--------------------------------*/
1215
1216 #if (defined __STDC__ || defined __C99__FUNC__ \
1217 || defined __cplusplus || defined _MSC_VER)
1218 static void
1219 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
1220 #else
1221 static void
1222 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp)
1223 FILE *yyoutput;
1224 int yytype;
1225 YYSTYPE const * const yyvaluep;
1226 YYLTYPE const * const yylocationp;
1227 #endif
1228 {
1229 if (yytype < YYNTOKENS)
1230 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1231 else
1232 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1233
1234 YY_LOCATION_PRINT (yyoutput, *yylocationp);
1235 YYFPRINTF (yyoutput, ": ");
1236 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp);
1237 YYFPRINTF (yyoutput, ")");
1238 }
1239
1240 /*------------------------------------------------------------------.
1241 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1242 | TOP (included). |
1243 `------------------------------------------------------------------*/
1244
1245 #if (defined __STDC__ || defined __C99__FUNC__ \
1246 || defined __cplusplus || defined _MSC_VER)
1247 static void
1248 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1249 #else
1250 static void
1251 yy_stack_print (yybottom, yytop)
1252 yytype_int16 *yybottom;
1253 yytype_int16 *yytop;
1254 #endif
1255 {
1256 YYFPRINTF (stderr, "Stack now");
1257 for (; yybottom <= yytop; yybottom++)
1258 {
1259 int yybot = *yybottom;
1260 YYFPRINTF (stderr, " %d", yybot);
1261 }
1262 YYFPRINTF (stderr, "\n");
1263 }
1264
1265 # define YY_STACK_PRINT(Bottom, Top) \
1266 do { \
1267 if (yydebug) \
1268 yy_stack_print ((Bottom), (Top)); \
1269 } while (YYID (0))
1270
1271
1272 /*------------------------------------------------.
1273 | Report that the YYRULE is going to be reduced. |
1274 `------------------------------------------------*/
1275
1276 #if (defined __STDC__ || defined __C99__FUNC__ \
1277 || defined __cplusplus || defined _MSC_VER)
1278 static void
1279 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
1280 #else
1281 static void
1282 yy_reduce_print (yyvsp, yylsp, yyrule)
1283 YYSTYPE *yyvsp;
1284 YYLTYPE *yylsp;
1285 int yyrule;
1286 #endif
1287 {
1288 int yynrhs = yyr2[yyrule];
1289 int yyi;
1290 unsigned long int yylno = yyrline[yyrule];
1291 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1292 yyrule - 1, yylno);
1293 /* The symbols being reduced. */
1294 for (yyi = 0; yyi < yynrhs; yyi++)
1295 {
1296 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1297 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1298 &(yyvsp[(yyi + 1) - (yynrhs)])
1299 , &(yylsp[(yyi + 1) - (yynrhs)]) );
1300 YYFPRINTF (stderr, "\n");
1301 }
1302 }
1303
1304 # define YY_REDUCE_PRINT(Rule) \
1305 do { \
1306 if (yydebug) \
1307 yy_reduce_print (yyvsp, yylsp, Rule); \
1308 } while (YYID (0))
1309
1310 /* Nonzero means print parse trace. It is left uninitialized so that
1311 multiple parsers can coexist. */
1312 int yydebug;
1313 #else /* !GRAM_DEBUG */
1314 # define YYDPRINTF(Args)
1315 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1316 # define YY_STACK_PRINT(Bottom, Top)
1317 # define YY_REDUCE_PRINT(Rule)
1318 #endif /* !GRAM_DEBUG */
1319
1320
1321 /* YYINITDEPTH -- initial size of the parser's stacks. */
1322 #ifndef YYINITDEPTH
1323 # define YYINITDEPTH 200
1324 #endif
1325
1326 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1327 if the built-in stack extension method is used).
1328
1329 Do not make this value too large; the results are undefined if
1330 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1331 evaluated with infinite-precision integer arithmetic. */
1332
1333 #ifndef YYMAXDEPTH
1334 # define YYMAXDEPTH 10000
1335 #endif
1336
1337 /* Given a state stack such that *YYBOTTOM is its bottom, such that
1338 *YYTOP is either its top or is YYTOP_EMPTY to indicate an empty
1339 stack, and such that *YYCAPACITY is the maximum number of elements it
1340 can hold without a reallocation, make sure there is enough room to
1341 store YYADD more elements. If not, allocate a new stack using
1342 YYSTACK_ALLOC, copy the existing elements, and adjust *YYBOTTOM,
1343 *YYTOP, and *YYCAPACITY to reflect the new capacity and memory
1344 location. If *YYBOTTOM != YYBOTTOM_NO_FREE, then free the old stack
1345 using YYSTACK_FREE. Return 0 if successful or if no reallocation is
1346 required. Return 1 if memory is exhausted. */
1347 static int
1348 yy_lac_stack_realloc (YYSIZE_T *yycapacity, YYSIZE_T yyadd,
1349 #if GRAM_DEBUG
1350 char const *yydebug_prefix,
1351 char const *yydebug_suffix,
1352 #endif
1353 yytype_int16 **yybottom,
1354 yytype_int16 *yybottom_no_free,
1355 yytype_int16 **yytop, yytype_int16 *yytop_empty)
1356 {
1357 YYSIZE_T yysize_old =
1358 *yytop == yytop_empty ? 0 : *yytop - *yybottom + 1;
1359 YYSIZE_T yysize_new = yysize_old + yyadd;
1360 if (*yycapacity < yysize_new)
1361 {
1362 YYSIZE_T yyalloc = 2 * yysize_new;
1363 yytype_int16 *yybottom_new;
1364 /* Use YYMAXDEPTH for maximum stack size given that the stack
1365 should never need to grow larger than the main state stack
1366 needs to grow without LAC. */
1367 if (YYMAXDEPTH < yysize_new)
1368 {
1369 YYDPRINTF ((stderr, "%smax size exceeded%s", yydebug_prefix,
1370 yydebug_suffix));
1371 return 1;
1372 }
1373 if (YYMAXDEPTH < yyalloc)
1374 yyalloc = YYMAXDEPTH;
1375 yybottom_new =
1376 (yytype_int16*) YYSTACK_ALLOC (yyalloc * sizeof *yybottom_new);
1377 if (!yybottom_new)
1378 {
1379 YYDPRINTF ((stderr, "%srealloc failed%s", yydebug_prefix,
1380 yydebug_suffix));
1381 return 1;
1382 }
1383 if (*yytop != yytop_empty)
1384 {
1385 YYCOPY (yybottom_new, *yybottom, yysize_old);
1386 *yytop = yybottom_new + (yysize_old - 1);
1387 }
1388 if (*yybottom != yybottom_no_free)
1389 YYSTACK_FREE (*yybottom);
1390 *yybottom = yybottom_new;
1391 *yycapacity = yyalloc;
1392 }
1393 return 0;
1394 }
1395
1396 /* Establish the initial context for the current lookahead if no initial
1397 context is currently established.
1398
1399 We define a context as a snapshot of the parser stacks. We define
1400 the initial context for a lookahead as the context in which the
1401 parser initially examines that lookahead in order to select a
1402 syntactic action. Thus, if the lookahead eventually proves
1403 syntactically unacceptable (possibly in a later context reached via a
1404 series of reductions), the initial context can be used to determine
1405 the exact set of tokens that would be syntactically acceptable in the
1406 lookahead's place. Moreover, it is the context after which any
1407 further semantic actions would be erroneous because they would be
1408 determined by a syntactically unacceptable token.
1409
1410 YY_LAC_ESTABLISH should be invoked when a reduction is about to be
1411 performed in an inconsistent state (which, for the purposes of LAC,
1412 includes consistent states that don't know they're consistent because
1413 their default reductions have been disabled). Iff there is a
1414 lookahead token, it should also be invoked before reporting a syntax
1415 error. This latter case is for the sake of the debugging output.
1416
1417 For parse.lac=full, the implementation of YY_LAC_ESTABLISH is as
1418 follows. If no initial context is currently established for the
1419 current lookahead, then check if that lookahead can eventually be
1420 shifted if syntactic actions continue from the current context.
1421 Report a syntax error if it cannot. */
1422 #define YY_LAC_ESTABLISH \
1423 do { \
1424 if (!yy_lac_established) \
1425 { \
1426 YYDPRINTF ((stderr, \
1427 "LAC: initial context established for %s\n", \
1428 yytname[yytoken])); \
1429 yy_lac_established = 1; \
1430 { \
1431 int yy_lac_status = \
1432 yy_lac (yyesa, &yyes, &yyes_capacity, yyssp, yytoken); \
1433 if (yy_lac_status == 2) \
1434 goto yyexhaustedlab; \
1435 if (yy_lac_status == 1) \
1436 goto yyerrlab; \
1437 } \
1438 } \
1439 } while (YYID (0))
1440
1441 /* Discard any previous initial lookahead context because of Event,
1442 which may be a lookahead change or an invalidation of the currently
1443 established initial context for the current lookahead.
1444
1445 The most common example of a lookahead change is a shift. An example
1446 of both cases is syntax error recovery. That is, a syntax error
1447 occurs when the lookahead is syntactically erroneous for the
1448 currently established initial context, so error recovery manipulates
1449 the parser stacks to try to find a new initial context in which the
1450 current lookahead is syntactically acceptable. If it fails to find
1451 such a context, it discards the lookahead. */
1452 #if GRAM_DEBUG
1453 # define YY_LAC_DISCARD(Event) \
1454 do { \
1455 if (yy_lac_established) \
1456 { \
1457 if (yydebug) \
1458 YYFPRINTF (stderr, "LAC: initial context discarded due to " \
1459 Event "\n"); \
1460 yy_lac_established = 0; \
1461 } \
1462 } while (YYID (0))
1463 #else
1464 # define YY_LAC_DISCARD(Event) yy_lac_established = 0
1465 #endif
1466
1467 /* Given the stack whose top is *YYSSP, return 0 iff YYTOKEN can
1468 eventually (after perhaps some reductions) be shifted, return 1 if
1469 not, or return 2 if memory is exhausted. As preconditions and
1470 postconditions: *YYES_CAPACITY is the allocated size of the array to
1471 which *YYES points, and either *YYES = YYESA or *YYES points to an
1472 array allocated with YYSTACK_ALLOC. yy_lac may overwrite the
1473 contents of either array, alter *YYES and *YYES_CAPACITY, and free
1474 any old *YYES other than YYESA. */
1475 static int
1476 yy_lac (yytype_int16 *yyesa, yytype_int16 **yyes,
1477 YYSIZE_T *yyes_capacity, yytype_int16 *yyssp, int yytoken)
1478 {
1479 yytype_int16 *yyes_prev = yyssp;
1480 yytype_int16 *yyesp = yyes_prev;
1481 YYDPRINTF ((stderr, "LAC: checking lookahead %s:", yytname[yytoken]));
1482 if (yytoken == YYUNDEFTOK)
1483 {
1484 YYDPRINTF ((stderr, " Always Err\n"));
1485 return 1;
1486 }
1487 while (1)
1488 {
1489 int yyrule = yypact[*yyesp];
1490 if (yypact_value_is_default (yyrule)
1491 || (yyrule += yytoken) < 0 || YYLAST < yyrule
1492 || yycheck[yyrule] != yytoken)
1493 {
1494 yyrule = yydefact[*yyesp];
1495 if (yyrule == 0)
1496 {
1497 YYDPRINTF ((stderr, " Err\n"));
1498 return 1;
1499 }
1500 }
1501 else
1502 {
1503 yyrule = yytable[yyrule];
1504 if (yytable_value_is_error (yyrule))
1505 {
1506 YYDPRINTF ((stderr, " Err\n"));
1507 return 1;
1508 }
1509 if (0 < yyrule)
1510 {
1511 YYDPRINTF ((stderr, " S%d\n", yyrule));
1512 return 0;
1513 }
1514 yyrule = -yyrule;
1515 }
1516 {
1517 YYSIZE_T yylen = yyr2[yyrule];
1518 YYDPRINTF ((stderr, " R%d", yyrule - 1));
1519 if (yyesp != yyes_prev)
1520 {
1521 YYSIZE_T yysize = yyesp - *yyes + 1;
1522 if (yylen < yysize)
1523 {
1524 yyesp -= yylen;
1525 yylen = 0;
1526 }
1527 else
1528 {
1529 yylen -= yysize;
1530 yyesp = yyes_prev;
1531 }
1532 }
1533 if (yylen)
1534 yyesp = yyes_prev -= yylen;
1535 }
1536 {
1537 int yystate;
1538 {
1539 int yylhs = yyr1[yyrule] - YYNTOKENS;
1540 yystate = yypgoto[yylhs] + *yyesp;
1541 if (yystate < 0 || YYLAST < yystate
1542 || yycheck[yystate] != *yyesp)
1543 yystate = yydefgoto[yylhs];
1544 else
1545 yystate = yytable[yystate];
1546 }
1547 if (yyesp == yyes_prev)
1548 {
1549 yyesp = *yyes;
1550 *yyesp = yystate;
1551 }
1552 else
1553 {
1554 if (yy_lac_stack_realloc (yyes_capacity, 1,
1555 #if GRAM_DEBUG
1556 " (", ")",
1557 #endif
1558 yyes, yyesa, &yyesp, yyes_prev))
1559 {
1560 YYDPRINTF ((stderr, "\n"));
1561 return 2;
1562 }
1563 *++yyesp = yystate;
1564 }
1565 YYDPRINTF ((stderr, " G%d", yystate));
1566 }
1567 }
1568 }
1569
1570
1571 #if YYERROR_VERBOSE
1572
1573 # ifndef yystrlen
1574 # if defined __GLIBC__ && defined _STRING_H
1575 # define yystrlen strlen
1576 # else
1577 /* Return the length of YYSTR. */
1578 #if (defined __STDC__ || defined __C99__FUNC__ \
1579 || defined __cplusplus || defined _MSC_VER)
1580 static YYSIZE_T
1581 yystrlen (const char *yystr)
1582 #else
1583 static YYSIZE_T
1584 yystrlen (yystr)
1585 const char *yystr;
1586 #endif
1587 {
1588 YYSIZE_T yylen;
1589 for (yylen = 0; yystr[yylen]; yylen++)
1590 continue;
1591 return yylen;
1592 }
1593 # endif
1594 # endif
1595
1596 # ifndef yystpcpy
1597 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1598 # define yystpcpy stpcpy
1599 # else
1600 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1601 YYDEST. */
1602 #if (defined __STDC__ || defined __C99__FUNC__ \
1603 || defined __cplusplus || defined _MSC_VER)
1604 static char *
1605 yystpcpy (char *yydest, const char *yysrc)
1606 #else
1607 static char *
1608 yystpcpy (yydest, yysrc)
1609 char *yydest;
1610 const char *yysrc;
1611 #endif
1612 {
1613 char *yyd = yydest;
1614 const char *yys = yysrc;
1615
1616 while ((*yyd++ = *yys++) != '\0')
1617 continue;
1618
1619 return yyd - 1;
1620 }
1621 # endif
1622 # endif
1623
1624 # ifndef yytnamerr
1625 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1626 quotes and backslashes, so that it's suitable for yyerror. The
1627 heuristic is that double-quoting is unnecessary unless the string
1628 contains an apostrophe, a comma, or backslash (other than
1629 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1630 null, do not copy; instead, return the length of what the result
1631 would have been. */
1632 static YYSIZE_T
1633 yytnamerr (char *yyres, const char *yystr)
1634 {
1635 if (*yystr == '"')
1636 {
1637 YYSIZE_T yyn = 0;
1638 char const *yyp = yystr;
1639
1640 for (;;)
1641 switch (*++yyp)
1642 {
1643 case '\'':
1644 case ',':
1645 goto do_not_strip_quotes;
1646
1647 case '\\':
1648 if (*++yyp != '\\')
1649 goto do_not_strip_quotes;
1650 /* Fall through. */
1651 default:
1652 if (yyres)
1653 yyres[yyn] = *yyp;
1654 yyn++;
1655 break;
1656
1657 case '"':
1658 if (yyres)
1659 yyres[yyn] = '\0';
1660 return yyn;
1661 }
1662 do_not_strip_quotes: ;
1663 }
1664
1665 if (! yyres)
1666 return yystrlen (yystr);
1667
1668 return yystpcpy (yyres, yystr) - yyres;
1669 }
1670 # endif
1671
1672 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1673 about the unexpected token YYTOKEN for the state stack whose top is
1674 YYSSP. In order to see if a particular token T is a
1675 valid looakhead, invoke yy_lac (YYESA, YYES, YYES_CAPACITY, YYSSP, T).
1676
1677 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
1678 not large enough to hold the message. In that case, also set
1679 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
1680 required number of bytes is too large to store or if
1681 yy_lac returned 2. */
1682 static int
1683 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1684 yytype_int16 *yyesa, yytype_int16 **yyes,
1685 YYSIZE_T *yyes_capacity, yytype_int16 *yyssp, int yytoken)
1686 {
1687 YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
1688 YYSIZE_T yysize = yysize0;
1689 YYSIZE_T yysize1;
1690 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1691 /* Internationalized format string. */
1692 const char *yyformat = YY_NULL;
1693 /* Arguments of yyformat. */
1694 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1695 /* Number of reported tokens (one for the "unexpected", one per
1696 "expected"). */
1697 int yycount = 0;
1698
1699 /* There are many possibilities here to consider:
1700 - Assume YYFAIL is not used. It's too flawed to consider. See
1701 <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
1702 for details. YYERROR is fine as it does not invoke this
1703 function.
1704 - If this state is a consistent state with a default action, then
1705 the only way this function was invoked is if the default action
1706 is an error action. In that case, don't check for expected
1707 tokens because there are none.
1708 - The only way there can be no lookahead present (in yychar) is if
1709 this state is a consistent state with a default action. Thus,
1710 detecting the absence of a lookahead is sufficient to determine
1711 that there is no unexpected or expected token to report. In that
1712 case, just report a simple "syntax error".
1713 - Don't assume there isn't a lookahead just because this state is a
1714 consistent state with a default action. There might have been a
1715 previous inconsistent state, consistent state with a non-default
1716 action, or user semantic action that manipulated yychar.
1717 In the first two cases, it might appear that the current syntax
1718 error should have been detected in the previous state when yy_lac
1719 was invoked. However, at that time, there might have been a
1720 different syntax error that discarded a different initial context
1721 during error recovery, leaving behind the current lookahead.
1722 */
1723 if (yytoken != YYEMPTY)
1724 {
1725 int yyn = yypact[*yyssp];
1726 YYDPRINTF ((stderr, "Constructing syntax error message\n"));
1727 yyarg[yycount++] = yytname[yytoken];
1728 if (!yypact_value_is_default (yyn))
1729 {
1730 int yyx;
1731
1732 for (yyx = 0; yyx < YYNTOKENS; ++yyx)
1733 if (yyx != YYTERROR && yyx != YYUNDEFTOK)
1734 {
1735 {
1736 int yy_lac_status = yy_lac (yyesa, yyes, yyes_capacity,
1737 yyssp, yyx);
1738 if (yy_lac_status == 2)
1739 return 2;
1740 if (yy_lac_status == 1)
1741 continue;
1742 }
1743 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1744 {
1745 yycount = 1;
1746 yysize = yysize0;
1747 break;
1748 }
1749 yyarg[yycount++] = yytname[yyx];
1750 yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
1751 if (! (yysize <= yysize1
1752 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1753 return 2;
1754 yysize = yysize1;
1755 }
1756 }
1757 # if GRAM_DEBUG
1758 else if (yydebug)
1759 YYFPRINTF (stderr, "No expected tokens.\n");
1760 # endif
1761 }
1762
1763 switch (yycount)
1764 {
1765 # define YYCASE_(N, S) \
1766 case N: \
1767 yyformat = S; \
1768 break
1769 YYCASE_(0, YY_("syntax error"));
1770 YYCASE_(1, YY_("syntax error, unexpected %s"));
1771 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1772 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1773 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1774 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1775 # undef YYCASE_
1776 }
1777
1778 yysize1 = yysize + yystrlen (yyformat);
1779 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1780 return 2;
1781 yysize = yysize1;
1782
1783 if (*yymsg_alloc < yysize)
1784 {
1785 *yymsg_alloc = 2 * yysize;
1786 if (! (yysize <= *yymsg_alloc
1787 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1788 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1789 return 1;
1790 }
1791
1792 /* Avoid sprintf, as that infringes on the user's name space.
1793 Don't have undefined behavior even if the translation
1794 produced a string with the wrong number of "%s"s. */
1795 {
1796 char *yyp = *yymsg;
1797 int yyi = 0;
1798 while ((*yyp = *yyformat) != '\0')
1799 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1800 {
1801 yyp += yytnamerr (yyp, yyarg[yyi++]);
1802 yyformat += 2;
1803 }
1804 else
1805 {
1806 yyp++;
1807 yyformat++;
1808 }
1809 }
1810 return 0;
1811 }
1812 #endif /* YYERROR_VERBOSE */
1813
1814 /*-----------------------------------------------.
1815 | Release the memory associated to this symbol. |
1816 `-----------------------------------------------*/
1817
1818 /*ARGSUSED*/
1819 #if (defined __STDC__ || defined __C99__FUNC__ \
1820 || defined __cplusplus || defined _MSC_VER)
1821 static void
1822 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
1823 #else
1824 static void
1825 yydestruct (yymsg, yytype, yyvaluep, yylocationp)
1826 const char *yymsg;
1827 int yytype;
1828 YYSTYPE *yyvaluep;
1829 YYLTYPE *yylocationp;
1830 #endif
1831 {
1832 YYUSE (yyvaluep);
1833 YYUSE (yylocationp);
1834
1835 if (!yymsg)
1836 yymsg = "Deleting";
1837 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1838
1839 switch (yytype)
1840 {
1841
1842 default:
1843 break;
1844 }
1845 }
1846
1847
1848
1849
1850 /*----------.
1851 | yyparse. |
1852 `----------*/
1853
1854 #ifdef YYPARSE_PARAM
1855 #if (defined __STDC__ || defined __C99__FUNC__ \
1856 || defined __cplusplus || defined _MSC_VER)
1857 int
1858 yyparse (void *YYPARSE_PARAM)
1859 #else
1860 int
1861 yyparse (YYPARSE_PARAM)
1862 void *YYPARSE_PARAM;
1863 #endif
1864 #else /* ! YYPARSE_PARAM */
1865 #if (defined __STDC__ || defined __C99__FUNC__ \
1866 || defined __cplusplus || defined _MSC_VER)
1867 int
1868 yyparse (void)
1869 #else
1870 int
1871 yyparse ()
1872
1873 #endif
1874 #endif
1875 {
1876 /* The lookahead symbol. */
1877 int yychar;
1878
1879
1880 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1881 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
1882 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1883 _Pragma ("GCC diagnostic push") \
1884 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1885 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1886 _Pragma ("GCC diagnostic pop")
1887 #else
1888 /* Default value used for initialization, for pacifying older GCCs
1889 or non-GCC compilers. */
1890 static YYSTYPE yyval_default;
1891 static YYLTYPE yyloc_default
1892 # if defined GRAM_LTYPE_IS_TRIVIAL && GRAM_LTYPE_IS_TRIVIAL
1893 = { 1, 1, 1, 1 }
1894 # endif
1895 ;
1896 # define YY_INITIAL_VALUE(Value) = Value
1897 #endif
1898 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1899 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1900 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1901 #endif
1902 #ifndef YY_INITIAL_VALUE
1903 # define YY_INITIAL_VALUE(Value) /* Nothing. */
1904 #endif
1905
1906 /* The semantic value of the lookahead symbol. */
1907 YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
1908
1909 /* Location data for the lookahead symbol. */
1910 YYLTYPE yylloc YY_INITIAL_VALUE(yyloc_default);
1911
1912 /* Number of syntax errors so far. */
1913 int yynerrs;
1914
1915 int yystate;
1916 /* Number of tokens to shift before error messages enabled. */
1917 int yyerrstatus;
1918
1919 /* The stacks and their tools:
1920 `yyss': related to states.
1921 `yyvs': related to semantic values.
1922 `yyls': related to locations.
1923
1924 Refer to the stacks through separate pointers, to allow yyoverflow
1925 to reallocate them elsewhere. */
1926
1927 /* The state stack. */
1928 yytype_int16 yyssa[YYINITDEPTH];
1929 yytype_int16 *yyss;
1930 yytype_int16 *yyssp;
1931
1932 /* The semantic value stack. */
1933 YYSTYPE yyvsa[YYINITDEPTH];
1934 YYSTYPE *yyvs;
1935 YYSTYPE *yyvsp;
1936
1937 /* The location stack. */
1938 YYLTYPE yylsa[YYINITDEPTH];
1939 YYLTYPE *yyls;
1940 YYLTYPE *yylsp;
1941
1942 /* The locations where the error started and ended. */
1943 YYLTYPE yyerror_range[3];
1944
1945 YYSIZE_T yystacksize;
1946
1947 yytype_int16 yyesa[20];
1948 yytype_int16 *yyes;
1949 YYSIZE_T yyes_capacity;
1950
1951 int yy_lac_established = 0;
1952 int yyn;
1953 int yyresult;
1954 /* Lookahead token as an internal (translated) token number. */
1955 int yytoken = 0;
1956 /* The variables used to return semantic value and location from the
1957 action routines. */
1958 YYSTYPE yyval;
1959 YYLTYPE yyloc;
1960
1961 #if YYERROR_VERBOSE
1962 /* Buffer for error messages, and its allocated size. */
1963 char yymsgbuf[128];
1964 char *yymsg = yymsgbuf;
1965 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1966 #endif
1967
1968 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
1969
1970 /* The number of symbols on the RHS of the reduced rule.
1971 Keep to zero when no symbol should be popped. */
1972 int yylen = 0;
1973
1974 yyss = yyssa;
1975 yyvs = yyvsa;
1976 yyls = yylsa;
1977 yystacksize = YYINITDEPTH;
1978
1979 yyes = yyesa;
1980 yyes_capacity = sizeof yyesa / sizeof *yyes;
1981 if (YYMAXDEPTH < yyes_capacity)
1982 yyes_capacity = YYMAXDEPTH;
1983
1984 YYDPRINTF ((stderr, "Starting parse\n"));
1985
1986 yystate = 0;
1987 yyerrstatus = 0;
1988 yynerrs = 0;
1989 yychar = YYEMPTY; /* Cause a token to be read. */
1990
1991 /* Initialize stack pointers.
1992 Waste one element of value and location stack
1993 so that they stay on the same level as the state stack.
1994 The wasted elements are never initialized. */
1995 yyssp = yyss;
1996 yyvsp = yyvs;
1997 yylsp = yyls;
1998
1999 /* User initialization code. */
2000 /* Line 1585 of yacc.c */
2001 #line 107 "parse-gram.y"
2002 {
2003 /* Bison's grammar can initial empty locations, hence a default
2004 location is needed. */
2005 boundary_set (&yylloc.start, current_file, 1, 1);
2006 boundary_set (&yylloc.end, current_file, 1, 1);
2007 }
2008 /* Line 1585 of yacc.c */
2009 #line 2010 "parse-gram.c"
2010 yylsp[0] = yylloc;
2011 goto yysetstate;
2012
2013 /*------------------------------------------------------------.
2014 | yynewstate -- Push a new state, which is found in yystate. |
2015 `------------------------------------------------------------*/
2016 yynewstate:
2017 /* In all cases, when you get here, the value and location stacks
2018 have just been pushed. So pushing a state here evens the stacks. */
2019 yyssp++;
2020
2021 yysetstate:
2022 *yyssp = yystate;
2023
2024 if (yyss + yystacksize - 1 <= yyssp)
2025 {
2026 /* Get the current used size of the three stacks, in elements. */
2027 YYSIZE_T yysize = yyssp - yyss + 1;
2028
2029 #ifdef yyoverflow
2030 {
2031 /* Give user a chance to reallocate the stack. Use copies of
2032 these so that the &'s don't force the real ones into
2033 memory. */
2034 YYSTYPE *yyvs1 = yyvs;
2035 yytype_int16 *yyss1 = yyss;
2036 YYLTYPE *yyls1 = yyls;
2037
2038 /* Each stack pointer address is followed by the size of the
2039 data in use in that stack, in bytes. This used to be a
2040 conditional around just the two extra args, but that might
2041 be undefined if yyoverflow is a macro. */
2042 yyoverflow (YY_("memory exhausted"),
2043 &yyss1, yysize * sizeof (*yyssp),
2044 &yyvs1, yysize * sizeof (*yyvsp),
2045 &yyls1, yysize * sizeof (*yylsp),
2046 &yystacksize);
2047
2048 yyls = yyls1;
2049 yyss = yyss1;
2050 yyvs = yyvs1;
2051 }
2052 #else /* no yyoverflow */
2053 # ifndef YYSTACK_RELOCATE
2054 goto yyexhaustedlab;
2055 # else
2056 /* Extend the stack our own way. */
2057 if (YYMAXDEPTH <= yystacksize)
2058 goto yyexhaustedlab;
2059 yystacksize *= 2;
2060 if (YYMAXDEPTH < yystacksize)
2061 yystacksize = YYMAXDEPTH;
2062
2063 {
2064 yytype_int16 *yyss1 = yyss;
2065 union yyalloc *yyptr =
2066 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2067 if (! yyptr)
2068 goto yyexhaustedlab;
2069 YYSTACK_RELOCATE (yyss_alloc, yyss);
2070 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2071 YYSTACK_RELOCATE (yyls_alloc, yyls);
2072 # undef YYSTACK_RELOCATE
2073 if (yyss1 != yyssa)
2074 YYSTACK_FREE (yyss1);
2075 }
2076 # endif
2077 #endif /* no yyoverflow */
2078
2079 yyssp = yyss + yysize - 1;
2080 yyvsp = yyvs + yysize - 1;
2081 yylsp = yyls + yysize - 1;
2082
2083 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2084 (unsigned long int) yystacksize));
2085
2086 if (yyss + yystacksize - 1 <= yyssp)
2087 YYABORT;
2088 }
2089
2090 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2091
2092 if (yystate == YYFINAL)
2093 YYACCEPT;
2094
2095 goto yybackup;
2096
2097 /*-----------.
2098 | yybackup. |
2099 `-----------*/
2100 yybackup:
2101
2102 /* Do appropriate processing given the current state. Read a
2103 lookahead token if we need one and don't already have one. */
2104
2105 /* First try to decide what to do without reference to lookahead token. */
2106 yyn = yypact[yystate];
2107 if (yypact_value_is_default (yyn))
2108 goto yydefault;
2109
2110 /* Not known => get a lookahead token if don't already have one. */
2111
2112 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
2113 if (yychar == YYEMPTY)
2114 {
2115 YYDPRINTF ((stderr, "Reading a token: "));
2116 yychar = YYLEX;
2117 }
2118
2119 if (yychar <= YYEOF)
2120 {
2121 yychar = yytoken = YYEOF;
2122 YYDPRINTF ((stderr, "Now at end of input.\n"));
2123 }
2124 else
2125 {
2126 yytoken = YYTRANSLATE (yychar);
2127 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2128 }
2129
2130 /* If the proper action on seeing token YYTOKEN is to reduce or to
2131 detect an error, take that action. */
2132 yyn += yytoken;
2133 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2134 {
2135 YY_LAC_ESTABLISH;
2136 goto yydefault;
2137 }
2138 yyn = yytable[yyn];
2139 if (yyn <= 0)
2140 {
2141 if (yytable_value_is_error (yyn))
2142 goto yyerrlab;
2143 YY_LAC_ESTABLISH;
2144 yyn = -yyn;
2145 goto yyreduce;
2146 }
2147
2148 /* Count tokens shifted since error; after three, turn off error
2149 status. */
2150 if (yyerrstatus)
2151 yyerrstatus--;
2152
2153 /* Shift the lookahead token. */
2154 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2155
2156 /* Discard the shifted token. */
2157 yychar = YYEMPTY;
2158 YY_LAC_DISCARD ("shift");
2159
2160 yystate = yyn;
2161 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2162 *++yyvsp = yylval;
2163 YY_IGNORE_MAYBE_UNINITIALIZED_END
2164 *++yylsp = yylloc;
2165 goto yynewstate;
2166
2167
2168 /*-----------------------------------------------------------.
2169 | yydefault -- do the default action for the current state. |
2170 `-----------------------------------------------------------*/
2171 yydefault:
2172 yyn = yydefact[yystate];
2173 if (yyn == 0)
2174 goto yyerrlab;
2175 goto yyreduce;
2176
2177
2178 /*-----------------------------.
2179 | yyreduce -- Do a reduction. |
2180 `-----------------------------*/
2181 yyreduce:
2182 /* yyn is the number of a rule to reduce with. */
2183 yylen = yyr2[yyn];
2184
2185 /* If YYLEN is nonzero, implement the default value of the action:
2186 `$$ = $1'.
2187
2188 Otherwise, the following line sets YYVAL to garbage.
2189 This behavior is undocumented and Bison
2190 users should not rely upon it. Assigning to YYVAL
2191 unconditionally makes the parser a bit smaller, and it avoids a
2192 GCC warning that YYVAL may be used uninitialized. */
2193 yyval = yyvsp[1-yylen];
2194
2195 /* Default location. */
2196 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
2197 YY_REDUCE_PRINT (yyn);
2198 {
2199 int yychar_backup = yychar;
2200 switch (yyn)
2201 {
2202 case 6:
2203 /* Line 1802 of yacc.c */
2204 #line 246 "parse-gram.y"
2205 {
2206 code_props plain_code;
2207 code_props_plain_init (&plain_code, (yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)]));
2208 code_props_translate_code (&plain_code);
2209 gram_scanner_last_string_free ();
2210 muscle_code_grow (union_seen ? "post_prologue" : "pre_prologue",
2211 plain_code.code, (yylsp[(1) - (1)]));
2212 code_scanner_last_string_free ();
2213 }
2214 break;
2215
2216 case 7:
2217 /* Line 1802 of yacc.c */
2218 #line 255 "parse-gram.y"
2219 { debug = true; }
2220 break;
2221
2222 case 8:
2223 /* Line 1802 of yacc.c */
2224 #line 257 "parse-gram.y"
2225 {
2226 muscle_percent_define_insert ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars),
2227 MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE);
2228 }
2229 break;
2230
2231 case 9:
2232 /* Line 1802 of yacc.c */
2233 #line 261 "parse-gram.y"
2234 { defines_flag = true; }
2235 break;
2236
2237 case 10:
2238 /* Line 1802 of yacc.c */
2239 #line 263 "parse-gram.y"
2240 {
2241 defines_flag = true;
2242 spec_defines_file = xstrdup ((yyvsp[(2) - (2)].chars));
2243 }
2244 break;
2245
2246 case 11:
2247 /* Line 1802 of yacc.c */
2248 #line 267 "parse-gram.y"
2249 { error_verbose = true; }
2250 break;
2251
2252 case 12:
2253 /* Line 1802 of yacc.c */
2254 #line 268 "parse-gram.y"
2255 { expected_sr_conflicts = (yyvsp[(2) - (2)].integer); }
2256 break;
2257
2258 case 13:
2259 /* Line 1802 of yacc.c */
2260 #line 269 "parse-gram.y"
2261 { expected_rr_conflicts = (yyvsp[(2) - (2)].integer); }
2262 break;
2263
2264 case 14:
2265 /* Line 1802 of yacc.c */
2266 #line 270 "parse-gram.y"
2267 { spec_file_prefix = (yyvsp[(2) - (2)].chars); }
2268 break;
2269
2270 case 15:
2271 /* Line 1802 of yacc.c */
2272 #line 271 "parse-gram.y"
2273 { spec_file_prefix = (yyvsp[(3) - (3)].chars); }
2274 break;
2275
2276 case 16:
2277 /* Line 1802 of yacc.c */
2278 #line 273 "parse-gram.y"
2279 {
2280 nondeterministic_parser = true;
2281 glr_parser = true;
2282 }
2283 break;
2284
2285 case 17:
2286 /* Line 1802 of yacc.c */
2287 #line 278 "parse-gram.y"
2288 {
2289 code_props action;
2290 code_props_symbol_action_init (&action, (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)]));
2291 code_props_translate_code (&action);
2292 gram_scanner_last_string_free ();
2293 muscle_code_grow ("initial_action", action.code, (yylsp[(2) - (2)]));
2294 code_scanner_last_string_free ();
2295 }
2296 break;
2297
2298 case 18:
2299 /* Line 1802 of yacc.c */
2300 #line 286 "parse-gram.y"
2301 { language_argmatch ((yyvsp[(2) - (2)].chars), grammar_prio, (yylsp[(1) - (2)])); }
2302 break;
2303
2304 case 19:
2305 /* Line 1802 of yacc.c */
2306 #line 287 "parse-gram.y"
2307 { add_param ("lex_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
2308 break;
2309
2310 case 20:
2311 /* Line 1802 of yacc.c */
2312 #line 288 "parse-gram.y"
2313 { locations_flag = true; }
2314 break;
2315
2316 case 21:
2317 /* Line 1802 of yacc.c */
2318 #line 289 "parse-gram.y"
2319 { spec_name_prefix = (yyvsp[(2) - (2)].chars); }
2320 break;
2321
2322 case 22:
2323 /* Line 1802 of yacc.c */
2324 #line 290 "parse-gram.y"
2325 { spec_name_prefix = (yyvsp[(3) - (3)].chars); }
2326 break;
2327
2328 case 23:
2329 /* Line 1802 of yacc.c */
2330 #line 291 "parse-gram.y"
2331 { no_lines_flag = true; }
2332 break;
2333
2334 case 24:
2335 /* Line 1802 of yacc.c */
2336 #line 292 "parse-gram.y"
2337 { nondeterministic_parser = true; }
2338 break;
2339
2340 case 25:
2341 /* Line 1802 of yacc.c */
2342 #line 293 "parse-gram.y"
2343 { spec_outfile = (yyvsp[(2) - (2)].chars); }
2344 break;
2345
2346 case 26:
2347 /* Line 1802 of yacc.c */
2348 #line 294 "parse-gram.y"
2349 { spec_outfile = (yyvsp[(3) - (3)].chars); }
2350 break;
2351
2352 case 27:
2353 /* Line 1802 of yacc.c */
2354 #line 295 "parse-gram.y"
2355 { add_param ("parse_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
2356 break;
2357
2358 case 28:
2359 /* Line 1802 of yacc.c */
2360 #line 297 "parse-gram.y"
2361 {
2362 /* %pure-parser is deprecated in favor of `%define api.pure', so use
2363 `%define api.pure' in a backward-compatible manner here. First, don't
2364 complain if %pure-parser is specified multiple times. */
2365 if (!muscle_find_const ("percent_define(api.pure)"))
2366 muscle_percent_define_insert ("api.pure", (yylsp[(1) - (1)]), "",
2367 MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE);
2368 /* In all cases, use api.pure now so that the backend doesn't complain if
2369 the skeleton ignores api.pure, but do warn now if there's a previous
2370 conflicting definition from an actual %define. */
2371 if (!muscle_percent_define_flag_if ("api.pure"))
2372 muscle_percent_define_insert ("api.pure", (yylsp[(1) - (1)]), "",
2373 MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE);
2374 }
2375 break;
2376
2377 case 29:
2378 /* Line 1802 of yacc.c */
2379 #line 311 "parse-gram.y"
2380 { version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); }
2381 break;
2382
2383 case 30:
2384 /* Line 1802 of yacc.c */
2385 #line 313 "parse-gram.y"
2386 {
2387 char const *skeleton_user = (yyvsp[(2) - (2)].chars);
2388 if (mbschr (skeleton_user, '/'))
2389 {
2390 size_t dir_length = strlen (current_file);
2391 char *skeleton_build;
2392 while (dir_length && current_file[dir_length - 1] != '/')
2393 --dir_length;
2394 while (dir_length && current_file[dir_length - 1] == '/')
2395 --dir_length;
2396 skeleton_build =
2397 xmalloc (dir_length + 1 + strlen (skeleton_user) + 1);
2398 if (dir_length > 0)
2399 {
2400 memcpy (skeleton_build, current_file, dir_length);
2401 skeleton_build[dir_length++] = '/';
2402 }
2403 strcpy (skeleton_build + dir_length, skeleton_user);
2404 skeleton_user = uniqstr_new (skeleton_build);
2405 free (skeleton_build);
2406 }
2407 skeleton_arg (skeleton_user, grammar_prio, (yylsp[(1) - (2)]));
2408 }
2409 break;
2410
2411 case 31:
2412 /* Line 1802 of yacc.c */
2413 #line 336 "parse-gram.y"
2414 { token_table_flag = true; }
2415 break;
2416
2417 case 32:
2418 /* Line 1802 of yacc.c */
2419 #line 337 "parse-gram.y"
2420 { report_flag |= report_states; }
2421 break;
2422
2423 case 33:
2424 /* Line 1802 of yacc.c */
2425 #line 338 "parse-gram.y"
2426 { yacc_flag = true; }
2427 break;
2428
2429 case 37:
2430 /* Line 1802 of yacc.c */
2431 #line 346 "parse-gram.y"
2432 {
2433 grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]));
2434 }
2435 break;
2436
2437 case 38:
2438 /* Line 1802 of yacc.c */
2439 #line 350 "parse-gram.y"
2440 {
2441 code_props code;
2442 code_props_symbol_action_init (&code, (yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
2443 code_props_translate_code (&code);
2444 {
2445 symbol_list *list;
2446 for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
2447 symbol_list_destructor_set (list, &code);
2448 symbol_list_free ((yyvsp[(3) - (3)].list));
2449 }
2450 }
2451 break;
2452
2453 case 39:
2454 /* Line 1802 of yacc.c */
2455 #line 362 "parse-gram.y"
2456 {
2457 code_props code;
2458 code_props_symbol_action_init (&code, (yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
2459 code_props_translate_code (&code);
2460 {
2461 symbol_list *list;
2462 for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
2463 symbol_list_printer_set (list, &code);
2464 symbol_list_free ((yyvsp[(3) - (3)].list));
2465 }
2466 }
2467 break;
2468
2469 case 40:
2470 /* Line 1802 of yacc.c */
2471 #line 374 "parse-gram.y"
2472 {
2473 default_prec = true;
2474 }
2475 break;
2476
2477 case 41:
2478 /* Line 1802 of yacc.c */
2479 #line 378 "parse-gram.y"
2480 {
2481 default_prec = false;
2482 }
2483 break;
2484
2485 case 42:
2486 /* Line 1802 of yacc.c */
2487 #line 382 "parse-gram.y"
2488 {
2489 /* Do not invoke muscle_percent_code_grow here since it invokes
2490 muscle_user_name_list_grow. */
2491 muscle_code_grow ("percent_code()", (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
2492 code_scanner_last_string_free ();
2493 }
2494 break;
2495
2496 case 43:
2497 /* Line 1802 of yacc.c */
2498 #line 389 "parse-gram.y"
2499 {
2500 muscle_percent_code_grow ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars), (yylsp[(3) - (3)]));
2501 code_scanner_last_string_free ();
2502 }
2503 break;
2504
2505 case 44:
2506 /* Line 1802 of yacc.c */
2507 #line 403 "parse-gram.y"
2508 {}
2509 break;
2510
2511 case 45:
2512 /* Line 1802 of yacc.c */
2513 #line 404 "parse-gram.y"
2514 { muscle_code_grow ("union_name", (yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
2515 break;
2516
2517 case 46:
2518 /* Line 1802 of yacc.c */
2519 #line 409 "parse-gram.y"
2520 {
2521 union_seen = true;
2522 muscle_code_grow ("stype", (yyvsp[(3) - (3)].chars), (yylsp[(3) - (3)]));
2523 code_scanner_last_string_free ();
2524 }
2525 break;
2526
2527 case 47:
2528 /* Line 1802 of yacc.c */
2529 #line 420 "parse-gram.y"
2530 { current_class = nterm_sym; }
2531 break;
2532
2533 case 48:
2534 /* Line 1802 of yacc.c */
2535 #line 421 "parse-gram.y"
2536 {
2537 current_class = unknown_sym;
2538 current_type = NULL;
2539 }
2540 break;
2541
2542 case 49:
2543 /* Line 1802 of yacc.c */
2544 #line 425 "parse-gram.y"
2545 { current_class = token_sym; }
2546 break;
2547
2548 case 50:
2549 /* Line 1802 of yacc.c */
2550 #line 426 "parse-gram.y"
2551 {
2552 current_class = unknown_sym;
2553 current_type = NULL;
2554 }
2555 break;
2556
2557 case 51:
2558 /* Line 1802 of yacc.c */
2559 #line 431 "parse-gram.y"
2560 {
2561 symbol_list *list;
2562 tag_seen = true;
2563 for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
2564 symbol_type_set (list->content.sym, (yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]));
2565 symbol_list_free ((yyvsp[(3) - (3)].list));
2566 }
2567 break;
2568
2569 case 52:
2570 /* Line 1802 of yacc.c */
2571 #line 442 "parse-gram.y"
2572 {
2573 symbol_list *list;
2574 ++current_prec;
2575 for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
2576 {
2577 symbol_type_set (list->content.sym, current_type, (yylsp[(2) - (3)]));
2578 symbol_precedence_set (list->content.sym, current_prec, (yyvsp[(1) - (3)].assoc), (yylsp[(1) - (3)]));
2579 }
2580 symbol_list_free ((yyvsp[(3) - (3)].list));
2581 current_type = NULL;
2582 }
2583 break;
2584
2585 case 53:
2586 /* Line 1802 of yacc.c */
2587 #line 456 "parse-gram.y"
2588 { (yyval.assoc) = left_assoc; }
2589 break;
2590
2591 case 54:
2592 /* Line 1802 of yacc.c */
2593 #line 457 "parse-gram.y"
2594 { (yyval.assoc) = right_assoc; }
2595 break;
2596
2597 case 55:
2598 /* Line 1802 of yacc.c */
2599 #line 458 "parse-gram.y"
2600 { (yyval.assoc) = non_assoc; }
2601 break;
2602
2603 case 56:
2604 /* Line 1802 of yacc.c */
2605 #line 462 "parse-gram.y"
2606 { current_type = NULL; }
2607 break;
2608
2609 case 57:
2610 /* Line 1802 of yacc.c */
2611 #line 463 "parse-gram.y"
2612 { current_type = (yyvsp[(1) - (1)].uniqstr); tag_seen = true; }
2613 break;
2614
2615 case 58:
2616 /* Line 1802 of yacc.c */
2617 #line 469 "parse-gram.y"
2618 { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
2619 break;
2620
2621 case 59:
2622 /* Line 1802 of yacc.c */
2623 #line 471 "parse-gram.y"
2624 { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
2625 break;
2626
2627 case 60:
2628 /* Line 1802 of yacc.c */
2629 #line 475 "parse-gram.y"
2630 { (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
2631 break;
2632
2633 case 61:
2634 /* Line 1802 of yacc.c */
2635 #line 476 "parse-gram.y"
2636 { (yyval.symbol) = (yyvsp[(1) - (2)].symbol); symbol_user_token_number_set ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].integer), (yylsp[(2) - (2)])); }
2637 break;
2638
2639 case 62:
2640 /* Line 1802 of yacc.c */
2641 #line 482 "parse-gram.y"
2642 { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
2643 break;
2644
2645 case 63:
2646 /* Line 1802 of yacc.c */
2647 #line 484 "parse-gram.y"
2648 { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
2649 break;
2650
2651 case 64:
2652 /* Line 1802 of yacc.c */
2653 #line 488 "parse-gram.y"
2654 { (yyval.list) = (yyvsp[(1) - (1)].list); }
2655 break;
2656
2657 case 65:
2658 /* Line 1802 of yacc.c */
2659 #line 489 "parse-gram.y"
2660 { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); }
2661 break;
2662
2663 case 66:
2664 /* Line 1802 of yacc.c */
2665 #line 493 "parse-gram.y"
2666 { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
2667 break;
2668
2669 case 67:
2670 /* Line 1802 of yacc.c */
2671 #line 494 "parse-gram.y"
2672 { (yyval.list) = symbol_list_type_new ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
2673 break;
2674
2675 case 68:
2676 /* Line 1802 of yacc.c */
2677 #line 495 "parse-gram.y"
2678 { (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); }
2679 break;
2680
2681 case 69:
2682 /* Line 1802 of yacc.c */
2683 #line 496 "parse-gram.y"
2684 { (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); }
2685 break;
2686
2687 case 70:
2688 /* Line 1802 of yacc.c */
2689 #line 502 "parse-gram.y"
2690 {
2691 current_type = (yyvsp[(1) - (1)].uniqstr);
2692 tag_seen = true;
2693 }
2694 break;
2695
2696 case 71:
2697 /* Line 1802 of yacc.c */
2698 #line 507 "parse-gram.y"
2699 {
2700 symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]), true);
2701 symbol_type_set ((yyvsp[(1) - (1)].symbol), current_type, (yylsp[(1) - (1)]));
2702 }
2703 break;
2704
2705 case 72:
2706 /* Line 1802 of yacc.c */
2707 #line 512 "parse-gram.y"
2708 {
2709 symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
2710 symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
2711 symbol_user_token_number_set ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].integer), (yylsp[(2) - (2)]));
2712 }
2713 break;
2714
2715 case 73:
2716 /* Line 1802 of yacc.c */
2717 #line 518 "parse-gram.y"
2718 {
2719 symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
2720 symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
2721 symbol_make_alias ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].symbol), (yyloc));
2722 }
2723 break;
2724
2725 case 74:
2726 /* Line 1802 of yacc.c */
2727 #line 524 "parse-gram.y"
2728 {
2729 symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]), true);
2730 symbol_type_set ((yyvsp[(1) - (3)].symbol), current_type, (yylsp[(1) - (3)]));
2731 symbol_user_token_number_set ((yyvsp[(1) - (3)].symbol), (yyvsp[(2) - (3)].integer), (yylsp[(2) - (3)]));
2732 symbol_make_alias ((yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol), (yyloc));
2733 }
2734 break;
2735
2736 case 81:
2737 /* Line 1802 of yacc.c */
2738 #line 554 "parse-gram.y"
2739 {
2740 yyerrok;
2741 }
2742 break;
2743
2744 case 82:
2745 /* Line 1802 of yacc.c */
2746 #line 560 "parse-gram.y"
2747 { current_lhs ((yyvsp[(1) - (2)].symbol), (yylsp[(1) - (2)]), (yyvsp[(2) - (2)].named_ref)); }
2748 break;
2749
2750 case 83:
2751 /* Line 1802 of yacc.c */
2752 #line 561 "parse-gram.y"
2753 {
2754 /* Free the current lhs. */
2755 current_lhs (0, (yylsp[(1) - (4)]), 0);
2756 }
2757 break;
2758
2759 case 84:
2760 /* Line 1802 of yacc.c */
2761 #line 568 "parse-gram.y"
2762 { grammar_current_rule_end ((yylsp[(1) - (1)])); }
2763 break;
2764
2765 case 85:
2766 /* Line 1802 of yacc.c */
2767 #line 569 "parse-gram.y"
2768 { grammar_current_rule_end ((yylsp[(3) - (3)])); }
2769 break;
2770
2771 case 87:
2772 /* Line 1802 of yacc.c */
2773 #line 575 "parse-gram.y"
2774 { grammar_current_rule_begin (current_lhs_symbol, current_lhs_location,
2775 current_lhs_named_ref); }
2776 break;
2777
2778 case 88:
2779 /* Line 1802 of yacc.c */
2780 #line 578 "parse-gram.y"
2781 { grammar_current_rule_symbol_append ((yyvsp[(2) - (3)].symbol), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].named_ref)); }
2782 break;
2783
2784 case 89:
2785 /* Line 1802 of yacc.c */
2786 #line 580 "parse-gram.y"
2787 { grammar_current_rule_action_append ((yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].named_ref)); }
2788 break;
2789
2790 case 90:
2791 /* Line 1802 of yacc.c */
2792 #line 582 "parse-gram.y"
2793 { grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
2794 break;
2795
2796 case 91:
2797 /* Line 1802 of yacc.c */
2798 #line 584 "parse-gram.y"
2799 { grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
2800 break;
2801
2802 case 92:
2803 /* Line 1802 of yacc.c */
2804 #line 586 "parse-gram.y"
2805 { grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
2806 break;
2807
2808 case 93:
2809 /* Line 1802 of yacc.c */
2810 #line 590 "parse-gram.y"
2811 { (yyval.named_ref) = 0; }
2812 break;
2813
2814 case 94:
2815 /* Line 1802 of yacc.c */
2816 #line 592 "parse-gram.y"
2817 { (yyval.named_ref) = named_ref_new((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
2818 break;
2819
2820 case 96:
2821 /* Line 1802 of yacc.c */
2822 #line 604 "parse-gram.y"
2823 { (yyval.uniqstr) = uniqstr_new ((yyvsp[(1) - (1)].chars)); }
2824 break;
2825
2826 case 97:
2827 /* Line 1802 of yacc.c */
2828 #line 609 "parse-gram.y"
2829 { (yyval.chars) = ""; }
2830 break;
2831
2832 case 98:
2833 /* Line 1802 of yacc.c */
2834 #line 610 "parse-gram.y"
2835 { (yyval.chars) = (yyvsp[(1) - (1)].uniqstr); }
2836 break;
2837
2838 case 100:
2839 /* Line 1802 of yacc.c */
2840 #line 621 "parse-gram.y"
2841 {
2842 code_props plain_code;
2843 (yyvsp[(1) - (1)].code)[strlen ((yyvsp[(1) - (1)].code)) - 1] = '\n';
2844 code_props_plain_init (&plain_code, (yyvsp[(1) - (1)].code)+1, (yylsp[(1) - (1)]));
2845 code_props_translate_code (&plain_code);
2846 gram_scanner_last_string_free ();
2847 (yyval.chars) = plain_code.code;
2848 }
2849 break;
2850
2851 case 101:
2852 /* Line 1802 of yacc.c */
2853 #line 641 "parse-gram.y"
2854 { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
2855 break;
2856
2857 case 102:
2858 /* Line 1802 of yacc.c */
2859 #line 643 "parse-gram.y"
2860 {
2861 (yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
2862 symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
2863 symbol_user_token_number_set ((yyval.symbol), (yyvsp[(1) - (1)].character), (yylsp[(1) - (1)]));
2864 }
2865 break;
2866
2867 case 103:
2868 /* Line 1802 of yacc.c */
2869 #line 651 "parse-gram.y"
2870 { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
2871 break;
2872
2873 case 106:
2874 /* Line 1802 of yacc.c */
2875 #line 663 "parse-gram.y"
2876 {
2877 (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
2878 symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
2879 }
2880 break;
2881
2882 case 108:
2883 /* Line 1802 of yacc.c */
2884 #line 672 "parse-gram.y"
2885 {
2886 code_props plain_code;
2887 code_props_plain_init (&plain_code, (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
2888 code_props_translate_code (&plain_code);
2889 gram_scanner_last_string_free ();
2890 muscle_code_grow ("epilogue", plain_code.code, (yylsp[(2) - (2)]));
2891 code_scanner_last_string_free ();
2892 }
2893 break;
2894
2895
2896 /* Line 1802 of yacc.c */
2897 #line 2898 "parse-gram.c"
2898 default: break;
2899 }
2900 if (yychar_backup != yychar)
2901 YY_LAC_DISCARD ("yychar change");
2902 }
2903 /* User semantic actions sometimes alter yychar, and that requires
2904 that yytoken be updated with the new translation. We take the
2905 approach of translating immediately before every use of yytoken.
2906 One alternative is translating here after every semantic action,
2907 but that translation would be missed if the semantic action invokes
2908 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
2909 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
2910 incorrect destructor might then be invoked immediately. In the
2911 case of YYERROR or YYBACKUP, subsequent parser actions might lead
2912 to an incorrect destructor call or verbose syntax error message
2913 before the lookahead is translated. */
2914 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2915
2916 YYPOPSTACK (yylen);
2917 yylen = 0;
2918 YY_STACK_PRINT (yyss, yyssp);
2919
2920 *++yyvsp = yyval;
2921 *++yylsp = yyloc;
2922
2923 /* Now `shift' the result of the reduction. Determine what state
2924 that goes to, based on the state we popped back to and the rule
2925 number reduced by. */
2926
2927 yyn = yyr1[yyn];
2928
2929 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2930 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2931 yystate = yytable[yystate];
2932 else
2933 yystate = yydefgoto[yyn - YYNTOKENS];
2934
2935 goto yynewstate;
2936
2937
2938 /*------------------------------------.
2939 | yyerrlab -- here on detecting error |
2940 `------------------------------------*/
2941 yyerrlab:
2942 /* Make sure we have latest lookahead translation. See comments at
2943 user semantic actions for why this is necessary. */
2944 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
2945
2946 /* If not already recovering from an error, report this error. */
2947 if (!yyerrstatus)
2948 {
2949 ++yynerrs;
2950 #if ! YYERROR_VERBOSE
2951 yyerror (YY_("syntax error"));
2952 #else
2953 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
2954 yyesa, &yyes, &yyes_capacity, \
2955 yyssp, yytoken)
2956 {
2957 char const *yymsgp = YY_("syntax error");
2958 int yysyntax_error_status;
2959 if (yychar != YYEMPTY)
2960 YY_LAC_ESTABLISH;
2961 yysyntax_error_status = YYSYNTAX_ERROR;
2962 if (yysyntax_error_status == 0)
2963 yymsgp = yymsg;
2964 else if (yysyntax_error_status == 1)
2965 {
2966 if (yymsg != yymsgbuf)
2967 YYSTACK_FREE (yymsg);
2968 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
2969 if (!yymsg)
2970 {
2971 yymsg = yymsgbuf;
2972 yymsg_alloc = sizeof yymsgbuf;
2973 yysyntax_error_status = 2;
2974 }
2975 else
2976 {
2977 yysyntax_error_status = YYSYNTAX_ERROR;
2978 yymsgp = yymsg;
2979 }
2980 }
2981 yyerror (yymsgp);
2982 if (yysyntax_error_status == 2)
2983 goto yyexhaustedlab;
2984 }
2985 # undef YYSYNTAX_ERROR
2986 #endif
2987 }
2988
2989 yyerror_range[1] = yylloc;
2990
2991 if (yyerrstatus == 3)
2992 {
2993 /* If just tried and failed to reuse lookahead token after an
2994 error, discard it. */
2995
2996 if (yychar <= YYEOF)
2997 {
2998 /* Return failure if at end of input. */
2999 if (yychar == YYEOF)
3000 YYABORT;
3001 }
3002 else
3003 {
3004 yydestruct ("Error: discarding",
3005 yytoken, &yylval, &yylloc);
3006 yychar = YYEMPTY;
3007 }
3008 }
3009
3010 /* Else will try to reuse lookahead token after shifting the error
3011 token. */
3012 goto yyerrlab1;
3013
3014
3015 /*---------------------------------------------------.
3016 | yyerrorlab -- error raised explicitly by YYERROR. |
3017 `---------------------------------------------------*/
3018 yyerrorlab:
3019
3020 /* Pacify compilers like GCC when the user code never invokes
3021 YYERROR and the label yyerrorlab therefore never appears in user
3022 code. */
3023 if (/*CONSTCOND*/ 0)
3024 goto yyerrorlab;
3025
3026 yyerror_range[1] = yylsp[1-yylen];
3027 /* Do not reclaim the symbols of the rule which action triggered
3028 this YYERROR. */
3029 YYPOPSTACK (yylen);
3030 yylen = 0;
3031 YY_STACK_PRINT (yyss, yyssp);
3032 yystate = *yyssp;
3033 goto yyerrlab1;
3034
3035
3036 /*-------------------------------------------------------------.
3037 | yyerrlab1 -- common code for both syntax error and YYERROR. |
3038 `-------------------------------------------------------------*/
3039 yyerrlab1:
3040 yyerrstatus = 3; /* Each real token shifted decrements this. */
3041
3042 for (;;)
3043 {
3044 yyn = yypact[yystate];
3045 if (!yypact_value_is_default (yyn))
3046 {
3047 yyn += YYTERROR;
3048 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3049 {
3050 yyn = yytable[yyn];
3051 if (0 < yyn)
3052 break;
3053 }
3054 }
3055
3056 /* Pop the current state because it cannot handle the error token. */
3057 if (yyssp == yyss)
3058 YYABORT;
3059
3060 yyerror_range[1] = *yylsp;
3061 yydestruct ("Error: popping",
3062 yystos[yystate], yyvsp, yylsp);
3063 YYPOPSTACK (1);
3064 yystate = *yyssp;
3065 YY_STACK_PRINT (yyss, yyssp);
3066 }
3067
3068 /* If the stack popping above didn't lose the initial context for the
3069 current lookahead token, the shift below will for sure. */
3070 YY_LAC_DISCARD ("error recovery");
3071
3072 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3073 *++yyvsp = yylval;
3074 YY_IGNORE_MAYBE_UNINITIALIZED_END
3075
3076 yyerror_range[2] = yylloc;
3077 /* Using YYLLOC is tempting, but would change the location of
3078 the lookahead. YYLOC is available though. */
3079 YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
3080 *++yylsp = yyloc;
3081
3082 /* Shift the error token. */
3083 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3084
3085 yystate = yyn;
3086 goto yynewstate;
3087
3088
3089 /*-------------------------------------.
3090 | yyacceptlab -- YYACCEPT comes here. |
3091 `-------------------------------------*/
3092 yyacceptlab:
3093 yyresult = 0;
3094 goto yyreturn;
3095
3096 /*-----------------------------------.
3097 | yyabortlab -- YYABORT comes here. |
3098 `-----------------------------------*/
3099 yyabortlab:
3100 yyresult = 1;
3101 goto yyreturn;
3102
3103 #if 1
3104 /*-------------------------------------------------.
3105 | yyexhaustedlab -- memory exhaustion comes here. |
3106 `-------------------------------------------------*/
3107 yyexhaustedlab:
3108 yyerror (YY_("memory exhausted"));
3109 yyresult = 2;
3110 /* Fall through. */
3111 #endif
3112
3113 yyreturn:
3114 if (yychar != YYEMPTY)
3115 {
3116 /* Make sure we have latest lookahead translation. See comments at
3117 user semantic actions for why this is necessary. */
3118 yytoken = YYTRANSLATE (yychar);
3119 yydestruct ("Cleanup: discarding lookahead",
3120 yytoken, &yylval, &yylloc);
3121 }
3122 /* Do not reclaim the symbols of the rule which action triggered
3123 this YYABORT or YYACCEPT. */
3124 YYPOPSTACK (yylen);
3125 YY_STACK_PRINT (yyss, yyssp);
3126 while (yyssp != yyss)
3127 {
3128 yydestruct ("Cleanup: popping",
3129 yystos[*yyssp], yyvsp, yylsp);
3130 YYPOPSTACK (1);
3131 }
3132 #ifndef yyoverflow
3133 if (yyss != yyssa)
3134 YYSTACK_FREE (yyss);
3135 #endif
3136 if (yyes != yyesa)
3137 YYSTACK_FREE (yyes);
3138 #if YYERROR_VERBOSE
3139 if (yymsg != yymsgbuf)
3140 YYSTACK_FREE (yymsg);
3141 #endif
3142 /* Make sure YYID is used. */
3143 return YYID (yyresult);
3144 }
3145
3146
3147 /* Line 2065 of yacc.c */
3148 #line 682 "parse-gram.y"
3149
3150
3151
3152 /* Return the location of the left-hand side of a rule whose
3153 right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
3154 the right-hand side, and return an empty location equal to the end
3155 boundary of RHS[0] if the right-hand side is empty. */
3156
3157 static YYLTYPE
3158 lloc_default (YYLTYPE const *rhs, int n)
3159 {
3160 int i;
3161 YYLTYPE loc;
3162
3163 /* SGI MIPSpro 7.4.1m miscompiles "loc.start = loc.end = rhs[n].end;".
3164 The bug is fixed in 7.4.2m, but play it safe for now. */
3165 loc.start = rhs[n].end;
3166 loc.end = rhs[n].end;
3167
3168 /* Ignore empty nonterminals the start of the right-hand side.
3169 Do not bother to ignore them at the end of the right-hand side,
3170 since empty nonterminals have the same end as their predecessors. */
3171 for (i = 1; i <= n; i++)
3172 if (! equal_boundaries (rhs[i].start, rhs[i].end))
3173 {
3174 loc.start = rhs[i].start;
3175 break;
3176 }
3177
3178 return loc;
3179 }
3180
3181
3182 /* Add a lex-param or a parse-param (depending on TYPE) with
3183 declaration DECL and location LOC. */
3184
3185 static void
3186 add_param (char const *type, char *decl, location loc)
3187 {
3188 static char const alphanum[26 + 26 + 1 + 10] =
3189 "abcdefghijklmnopqrstuvwxyz"
3190 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
3191 "_"
3192 "0123456789";
3193 char const *name_start = NULL;
3194 char *p;
3195
3196 /* Stop on last actual character. */
3197 for (p = decl; p[1]; p++)
3198 if ((p == decl
3199 || ! memchr (alphanum, p[-1], sizeof alphanum))
3200 && memchr (alphanum, p[0], sizeof alphanum - 10))
3201 name_start = p;
3202
3203 /* Strip the surrounding '{' and '}', and any blanks just inside
3204 the braces. */
3205 --p;
3206 while (c_isspace ((unsigned char) *p))
3207 --p;
3208 p[1] = '\0';
3209 ++decl;
3210 while (c_isspace ((unsigned char) *decl))
3211 ++decl;
3212
3213 if (! name_start)
3214 complain_at (loc, _("missing identifier in parameter declaration"));
3215 else
3216 {
3217 char *name = xmemdup0 (name_start, strspn (name_start, alphanum));
3218 muscle_pair_list_grow (type, decl, name);
3219 free (name);
3220 }
3221
3222 gram_scanner_last_string_free ();
3223 }
3224
3225
3226 static void
3227 version_check (location const *loc, char const *version)
3228 {
3229 if (strverscmp (version, PACKAGE_VERSION) > 0)
3230 {
3231 complain_at (*loc, "require bison %s, but have %s",
3232 version, PACKAGE_VERSION);
3233 exit (EX_MISMATCH);
3234 }
3235 }
3236
3237 static void
3238 gram_error (location const *loc, char const *msg)
3239 {
3240 complain_at (*loc, "%s", msg);
3241 }
3242
3243 char const *
3244 token_name (int type)
3245 {
3246 return yytname[YYTRANSLATE (type)];
3247 }
3248
3249 static char const *
3250 char_name (char c)
3251 {
3252 if (c == '\'')
3253 return "'\\''";
3254 else
3255 {
3256 char buf[4];
3257 buf[0] = '\''; buf[1] = c; buf[2] = '\''; buf[3] = '\0';
3258 return quotearg_style (escape_quoting_style, buf);
3259 }
3260 }