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