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