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