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