]> git.saurik.com Git - bison.git/blame - src/parse-gram.c
tests: cleanup.
[bison.git] / src / parse-gram.c
CommitLineData
b143f404 1/* A Bison parser, made by GNU Bison 2.4.434-7439c. */
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. */
b143f404 48#define YYBISON_VERSION "2.4.434-7439c"
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
PE
419#ifndef YY_
420# if YYENABLE_NLS
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.
888 Once GCC version 2 has supplanted version 1, this can go. */
1921f1d7 889
e9955c83 890#define YYFAIL goto yyerrlab
1921f1d7 891
e9955c83 892#define YYRECOVERING() (!!yyerrstatus)
1921f1d7 893
e9955c83
AD
894#define YYBACKUP(Token, Value) \
895do \
73521d9f 896 if (yychar == YYEMPTY && yylen == 1) \
e9955c83
AD
897 { \
898 yychar = (Token); \
899 yylval = (Value); \
886b69d1 900 yytoken = YYTRANSLATE (yychar); \
3b0ffc7e 901 YYPOPSTACK (1); \
e9955c83
AD
902 goto yybackup; \
903 } \
904 else \
5f3df396 905 { \
6088a2a0 906 yyerror (YY_("syntax error: cannot back up")); \
e9955c83
AD
907 YYERROR; \
908 } \
7029f892 909while (YYID (0))
e9955c83 910
8a8dc872 911
e9955c83
AD
912#define YYTERROR 1
913#define YYERRCODE 256
914
8a8dc872
AD
915
916/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
917 If N is 0, then set CURRENT to the empty location which ends
918 the previous symbol: RHS[0] (always defined). */
e9955c83 919
bbd3fa0c 920#define YYRHSLOC(Rhs, K) ((Rhs)[K])
e9955c83 921#ifndef YYLLOC_DEFAULT
bbd3fa0c
PE
922# define YYLLOC_DEFAULT(Current, Rhs, N) \
923 do \
3b0ffc7e 924 if (YYID (N)) \
bbd3fa0c 925 { \
da436e43
PE
926 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
927 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
928 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
929 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
bbd3fa0c
PE
930 } \
931 else \
932 { \
933 (Current).first_line = (Current).last_line = \
da436e43 934 YYRHSLOC (Rhs, 0).last_line; \
bbd3fa0c 935 (Current).first_column = (Current).last_column = \
da436e43 936 YYRHSLOC (Rhs, 0).last_column; \
bbd3fa0c 937 } \
7029f892 938 while (YYID (0))
8a8dc872
AD
939#endif
940
941
942/* YY_LOCATION_PRINT -- Print the location on the stream.
943 This macro was not mandated originally: define only if we know
944 we won't break user code: when these are the locations we know. */
945
946#ifndef YY_LOCATION_PRINT
947# if YYLTYPE_IS_TRIVIAL
948# define YY_LOCATION_PRINT(File, Loc) \
949 fprintf (File, "%d.%d-%d.%d", \
bf8b3d98
PE
950 (Loc).first_line, (Loc).first_column, \
951 (Loc).last_line, (Loc).last_column)
8a8dc872
AD
952# else
953# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
954# endif
e9955c83
AD
955#endif
956
8a8dc872 957
e9955c83
AD
958/* YYLEX -- calling `yylex' with the right arguments. */
959
366eea36 960#ifdef YYLEX_PARAM
d33cb3ae 961# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
366eea36 962#else
d33cb3ae 963# define YYLEX yylex (&yylval, &yylloc)
366eea36 964#endif
e9955c83
AD
965
966/* Enable debugging if requested. */
967#if YYDEBUG
968
74e543d2 969# ifndef YYFPRINTF
e9955c83
AD
970# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
971# define YYFPRINTF fprintf
972# endif
973
974# define YYDPRINTF(Args) \
975do { \
976 if (yydebug) \
977 YYFPRINTF Args; \
7029f892 978} while (YYID (0))
05d18c24 979
4b367315
AD
980# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
981do { \
982 if (yydebug) \
983 { \
984 YYFPRINTF (stderr, "%s ", Title); \
3b0ffc7e 985 yy_symbol_print (stderr, \
bf8b3d98 986 Type, Value, Location); \
4b367315
AD
987 YYFPRINTF (stderr, "\n"); \
988 } \
7029f892 989} while (YYID (0))
f0616f0b 990
3b0ffc7e 991
66809587
PE
992/*--------------------------------.
993| Print this symbol on YYOUTPUT. |
994`--------------------------------*/
995
7029f892 996/*ARGSUSED*/
bf8b3d98
PE
997#if (defined __STDC__ || defined __C99__FUNC__ \
998 || defined __cplusplus || defined _MSC_VER)
66809587 999static void
d2a1a60a 1000yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
66809587
PE
1001#else
1002static void
3b0ffc7e 1003yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
66809587
PE
1004 FILE *yyoutput;
1005 int yytype;
d2a1a60a
PE
1006 YYSTYPE const * const yyvaluep;
1007 YYLTYPE const * const yylocationp;
66809587
PE
1008#endif
1009{
bf8b3d98
PE
1010 if (!yyvaluep)
1011 return;
66809587 1012 YYUSE (yylocationp);
66809587
PE
1013# ifdef YYPRINT
1014 if (yytype < YYNTOKENS)
1015 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
bf8b3d98
PE
1016# else
1017 YYUSE (yyoutput);
66809587
PE
1018# endif
1019 switch (yytype)
1020 {
dc450175 1021 case 3: // "string"
136a0f76 1022
bb31eb56 1023/* Line 715 of yacc.c */
b18cdd91 1024#line 175 "src/parse-gram.y"
dc450175 1025 { fputs (quotearg_style (c_quoting_style, ((*yyvaluep).chars)), stderr); }
bb31eb56 1026/* Line 715 of yacc.c */
b143f404 1027#line 1028 "src/parse-gram.c"
dc450175 1028 break;
136a0f76 1029
dc450175 1030 case 4: // "integer"
136a0f76 1031
bb31eb56 1032/* Line 715 of yacc.c */
b18cdd91 1033#line 188 "src/parse-gram.y"
dc450175 1034 { fprintf (stderr, "%d", ((*yyvaluep).integer)); }
bb31eb56 1035/* Line 715 of yacc.c */
b143f404 1036#line 1037 "src/parse-gram.c"
86cfae0a
AD
1037 break;
1038
2f5b478e 1039 case 24: // "%<flag>"
86cfae0a 1040
bb31eb56 1041/* Line 715 of yacc.c */
b18cdd91 1042#line 184 "src/parse-gram.y"
86cfae0a 1043 { fprintf (stderr, "%%%s", ((*yyvaluep).uniqstr)); }
bb31eb56 1044/* Line 715 of yacc.c */
b143f404 1045#line 1046 "src/parse-gram.c"
dc450175 1046 break;
136a0f76 1047
b18cdd91 1048 case 40: // "{...}"
136a0f76 1049
bb31eb56 1050/* Line 715 of yacc.c */
b18cdd91 1051#line 177 "src/parse-gram.y"
dc450175 1052 { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).code)); }
bb31eb56 1053/* Line 715 of yacc.c */
b143f404 1054#line 1055 "src/parse-gram.c"
dc450175 1055 break;
136a0f76 1056
b143f404
JD
1057 case 41: // "[identifier]"
1058
1059/* Line 715 of yacc.c */
1060#line 182 "src/parse-gram.y"
1061 { fprintf (stderr, "[%s]", ((*yyvaluep).uniqstr)); }
1062/* Line 715 of yacc.c */
1063#line 1064 "src/parse-gram.c"
1064 break;
1065
1066 case 42: // "char"
136a0f76 1067
bb31eb56 1068/* Line 715 of yacc.c */
b18cdd91 1069#line 169 "src/parse-gram.y"
dc450175 1070 { fputs (char_name (((*yyvaluep).character)), stderr); }
bb31eb56 1071/* Line 715 of yacc.c */
b143f404 1072#line 1073 "src/parse-gram.c"
dc450175 1073 break;
136a0f76 1074
b143f404 1075 case 43: // "epilogue"
136a0f76 1076
bb31eb56 1077/* Line 715 of yacc.c */
b18cdd91 1078#line 177 "src/parse-gram.y"
dc450175 1079 { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); }
bb31eb56 1080/* Line 715 of yacc.c */
b143f404 1081#line 1082 "src/parse-gram.c"
dc450175 1082 break;
136a0f76 1083
b143f404 1084 case 45: // "identifier"
136a0f76 1085
bb31eb56 1086/* Line 715 of yacc.c */
b143f404 1087#line 181 "src/parse-gram.y"
dc450175 1088 { fputs (((*yyvaluep).uniqstr), stderr); }
bb31eb56 1089/* Line 715 of yacc.c */
b143f404 1090#line 1091 "src/parse-gram.c"
dc450175 1091 break;
136a0f76 1092
b143f404 1093 case 46: // "identifier:"
136a0f76 1094
bb31eb56 1095/* Line 715 of yacc.c */
b18cdd91 1096#line 183 "src/parse-gram.y"
dc450175 1097 { fprintf (stderr, "%s:", ((*yyvaluep).uniqstr)); }
bb31eb56 1098/* Line 715 of yacc.c */
b143f404 1099#line 1100 "src/parse-gram.c"
dc450175 1100 break;
136a0f76 1101
b143f404 1102 case 49: // "%{...%}"
136a0f76 1103
bb31eb56 1104/* Line 715 of yacc.c */
b18cdd91 1105#line 177 "src/parse-gram.y"
dc450175 1106 { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); }
bb31eb56 1107/* Line 715 of yacc.c */
b143f404 1108#line 1109 "src/parse-gram.c"
dc450175 1109 break;
136a0f76 1110
b143f404 1111 case 51: // "<tag>"
136a0f76 1112
bb31eb56 1113/* Line 715 of yacc.c */
b18cdd91 1114#line 185 "src/parse-gram.y"
dc450175 1115 { fprintf (stderr, "<%s>", ((*yyvaluep).uniqstr)); }
bb31eb56 1116/* Line 715 of yacc.c */
b143f404 1117#line 1118 "src/parse-gram.c"
b18cdd91
AD
1118 break;
1119
1120 case 54: // "%param"
1121
bb31eb56 1122/* Line 715 of yacc.c */
b143f404 1123#line 231 "src/parse-gram.y"
b18cdd91
AD
1124 {
1125 switch (((*yyvaluep).param))
1126 {
1127#define CASE(In, Out) \
dd875058 1128 case param_ ## In: fputs ("%" #Out, stderr); break
b18cdd91
AD
1129 CASE(lex, lex-param);
1130 CASE(parse, parse-param);
1131 CASE(both, param);
b18cdd91 1132#undef CASE
2d399888 1133 case param_none: aver (false); break;
dd875058 1134 }
b18cdd91 1135}
bb31eb56 1136/* Line 715 of yacc.c */
b143f404
JD
1137#line 1138 "src/parse-gram.c"
1138 break;
1139
1140 case 71: // symbol.prec
1141
1142/* Line 715 of yacc.c */
1143#line 191 "src/parse-gram.y"
1144 { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); }
1145/* Line 715 of yacc.c */
1146#line 1147 "src/parse-gram.c"
dc450175 1147 break;
136a0f76 1148
dd875058 1149 case 84: // variable
136a0f76 1150
bb31eb56 1151/* Line 715 of yacc.c */
b143f404 1152#line 181 "src/parse-gram.y"
dc450175 1153 { fputs (((*yyvaluep).uniqstr), stderr); }
bb31eb56 1154/* Line 715 of yacc.c */
b143f404 1155#line 1156 "src/parse-gram.c"
dc450175 1156 break;
136a0f76 1157
dd875058 1158 case 85: // content.opt
136a0f76 1159
bb31eb56 1160/* Line 715 of yacc.c */
b18cdd91 1161#line 177 "src/parse-gram.y"
dc450175 1162 { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); }
bb31eb56 1163/* Line 715 of yacc.c */
b143f404 1164#line 1165 "src/parse-gram.c"
dc450175 1165 break;
136a0f76 1166
dd875058 1167 case 86: // braceless
16dc6a9e 1168
bb31eb56 1169/* Line 715 of yacc.c */
b18cdd91 1170#line 177 "src/parse-gram.y"
dc450175 1171 { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); }
bb31eb56 1172/* Line 715 of yacc.c */
b143f404 1173#line 1174 "src/parse-gram.c"
dc450175 1174 break;
16dc6a9e 1175
dd875058 1176 case 87: // id
136a0f76 1177
bb31eb56 1178/* Line 715 of yacc.c */
b18cdd91 1179#line 191 "src/parse-gram.y"
dc450175 1180 { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); }
bb31eb56 1181/* Line 715 of yacc.c */
b143f404 1182#line 1183 "src/parse-gram.c"
dc450175 1183 break;
136a0f76 1184
dd875058 1185 case 88: // id_colon
136a0f76 1186
bb31eb56 1187/* Line 715 of yacc.c */
b18cdd91 1188#line 192 "src/parse-gram.y"
dc450175 1189 { fprintf (stderr, "%s:", ((*yyvaluep).symbol)->tag); }
bb31eb56 1190/* Line 715 of yacc.c */
b143f404 1191#line 1192 "src/parse-gram.c"
dc450175 1192 break;
136a0f76 1193
dd875058 1194 case 89: // symbol
136a0f76 1195
bb31eb56 1196/* Line 715 of yacc.c */
b18cdd91 1197#line 191 "src/parse-gram.y"
dc450175 1198 { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); }
bb31eb56 1199/* Line 715 of yacc.c */
b143f404 1200#line 1201 "src/parse-gram.c"
dc450175 1201 break;
136a0f76 1202
dd875058 1203 case 90: // string_as_id
136a0f76 1204
bb31eb56 1205/* Line 715 of yacc.c */
b18cdd91 1206#line 191 "src/parse-gram.y"
dc450175 1207 { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); }
bb31eb56 1208/* Line 715 of yacc.c */
b143f404 1209#line 1210 "src/parse-gram.c"
dc450175 1210 break;
136a0f76 1211
66809587 1212 default:
bf8b3d98 1213 break;
66809587 1214 }
3b0ffc7e
PE
1215}
1216
1217
1218/*--------------------------------.
1219| Print this symbol on YYOUTPUT. |
1220`--------------------------------*/
1221
bf8b3d98
PE
1222#if (defined __STDC__ || defined __C99__FUNC__ \
1223 || defined __cplusplus || defined _MSC_VER)
3b0ffc7e 1224static void
d2a1a60a 1225yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
3b0ffc7e
PE
1226#else
1227static void
1228yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp)
1229 FILE *yyoutput;
1230 int yytype;
d2a1a60a
PE
1231 YYSTYPE const * const yyvaluep;
1232 YYLTYPE const * const yylocationp;
3b0ffc7e
PE
1233#endif
1234{
1235 if (yytype < YYNTOKENS)
1236 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1237 else
1238 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1239
1240 YY_LOCATION_PRINT (yyoutput, *yylocationp);
1241 YYFPRINTF (yyoutput, ": ");
1242 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp);
66809587
PE
1243 YYFPRINTF (yyoutput, ")");
1244}
1245
05d18c24
PE
1246/*------------------------------------------------------------------.
1247| yy_stack_print -- Print the state stack from its BOTTOM up to its |
cd3684cf 1248| TOP (included). |
05d18c24
PE
1249`------------------------------------------------------------------*/
1250
bf8b3d98
PE
1251#if (defined __STDC__ || defined __C99__FUNC__ \
1252 || defined __cplusplus || defined _MSC_VER)
05d18c24 1253static void
3b452f4e 1254yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
05d18c24
PE
1255#else
1256static void
3b452f4e
JD
1257yy_stack_print (yybottom, yytop)
1258 yytype_int16 *yybottom;
1259 yytype_int16 *yytop;
05d18c24
PE
1260#endif
1261{
74e543d2 1262 YYFPRINTF (stderr, "Stack now");
3b452f4e
JD
1263 for (; yybottom <= yytop; yybottom++)
1264 {
1265 int yybot = *yybottom;
1266 YYFPRINTF (stderr, " %d", yybot);
1267 }
74e543d2 1268 YYFPRINTF (stderr, "\n");
05d18c24
PE
1269}
1270
1271# define YY_STACK_PRINT(Bottom, Top) \
1272do { \
1273 if (yydebug) \
1274 yy_stack_print ((Bottom), (Top)); \
7029f892 1275} while (YYID (0))
05d18c24
PE
1276
1277
1278/*------------------------------------------------.
1279| Report that the YYRULE is going to be reduced. |
1280`------------------------------------------------*/
1281
bf8b3d98
PE
1282#if (defined __STDC__ || defined __C99__FUNC__ \
1283 || defined __cplusplus || defined _MSC_VER)
05d18c24 1284static void
d12f8e49 1285yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
05d18c24
PE
1286#else
1287static void
d12f8e49
AD
1288yy_reduce_print (yyssp, yyvsp, yylsp, yyrule)
1289 yytype_int16 *yyssp;
66809587
PE
1290 YYSTYPE *yyvsp;
1291 YYLTYPE *yylsp;
05d18c24
PE
1292 int yyrule;
1293#endif
1294{
d12f8e49 1295 unsigned long int yylno = yyrline[yyrule];
66809587 1296 int yynrhs = yyr2[yyrule];
05d18c24 1297 int yyi;
66809587 1298 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
d12f8e49 1299 yyrule - 1, yylno);
66809587
PE
1300 /* The symbols being reduced. */
1301 for (yyi = 0; yyi < yynrhs; yyi++)
1302 {
0bf92491 1303 YYFPRINTF (stderr, " $%d = ", yyi + 1);
d12f8e49
AD
1304 yy_symbol_print (stderr,
1305 yystos[yyssp[yyi + 1 - yynrhs]],
1306 &(yyvsp[(yyi + 1) - (yynrhs)])
1307 , &(yylsp[(yyi + 1) - (yynrhs)]) );
0bf92491 1308 YYFPRINTF (stderr, "\n");
66809587 1309 }
05d18c24
PE
1310}
1311
1312# define YY_REDUCE_PRINT(Rule) \
1313do { \
1314 if (yydebug) \
d12f8e49 1315 yy_reduce_print (yyssp, yyvsp, yylsp, Rule); \
7029f892 1316} while (YYID (0))
05d18c24 1317
e9955c83
AD
1318/* Nonzero means print parse trace. It is left uninitialized so that
1319 multiple parsers can coexist. */
1320int yydebug;
1321#else /* !YYDEBUG */
1322# define YYDPRINTF(Args)
8a8dc872 1323# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
05d18c24
PE
1324# define YY_STACK_PRINT(Bottom, Top)
1325# define YY_REDUCE_PRINT(Rule)
e9955c83
AD
1326#endif /* !YYDEBUG */
1327
05d18c24 1328
e9955c83
AD
1329/* YYINITDEPTH -- initial size of the parser's stacks. */
1330#ifndef YYINITDEPTH
1331# define YYINITDEPTH 200
1332#endif
1333
1334/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1335 if the built-in stack extension method is used).
1336
1337 Do not make this value too large; the results are undefined if
2ce37586 1338 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
e9955c83
AD
1339 evaluated with infinite-precision integer arithmetic. */
1340
e9955c83
AD
1341#ifndef YYMAXDEPTH
1342# define YYMAXDEPTH 10000
1343#endif
1921f1d7 1344
e9955c83 1345\f
1921f1d7
AD
1346
1347#if YYERROR_VERBOSE
e9955c83
AD
1348
1349# ifndef yystrlen
bf8b3d98 1350# if defined __GLIBC__ && defined _STRING_H
e9955c83
AD
1351# define yystrlen strlen
1352# else
1353/* Return the length of YYSTR. */
bf8b3d98
PE
1354#if (defined __STDC__ || defined __C99__FUNC__ \
1355 || defined __cplusplus || defined _MSC_VER)
e9955c83 1356static YYSIZE_T
e9955c83 1357yystrlen (const char *yystr)
2e4c30fa
PE
1358#else
1359static YYSIZE_T
e9955c83 1360yystrlen (yystr)
2e4c30fa
PE
1361 const char *yystr;
1362#endif
e9955c83 1363{
7029f892
PE
1364 YYSIZE_T yylen;
1365 for (yylen = 0; yystr[yylen]; yylen++)
e9955c83 1366 continue;
7029f892 1367 return yylen;
e9955c83
AD
1368}
1369# endif
1370# endif
1371
1372# ifndef yystpcpy
bf8b3d98 1373# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
e9955c83
AD
1374# define yystpcpy stpcpy
1375# else
1376/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1377 YYDEST. */
bf8b3d98
PE
1378#if (defined __STDC__ || defined __C99__FUNC__ \
1379 || defined __cplusplus || defined _MSC_VER)
e9955c83 1380static char *
e9955c83 1381yystpcpy (char *yydest, const char *yysrc)
2e4c30fa
PE
1382#else
1383static char *
e9955c83 1384yystpcpy (yydest, yysrc)
2e4c30fa
PE
1385 char *yydest;
1386 const char *yysrc;
1387#endif
e9955c83 1388{
b4fb989f
PE
1389 char *yyd = yydest;
1390 const char *yys = yysrc;
e9955c83
AD
1391
1392 while ((*yyd++ = *yys++) != '\0')
1393 continue;
1394
1395 return yyd - 1;
1396}
1397# endif
1398# endif
0c15323d 1399
9cbfdc9e
PE
1400# ifndef yytnamerr
1401/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1402 quotes and backslashes, so that it's suitable for yyerror. The
1403 heuristic is that double-quoting is unnecessary unless the string
1404 contains an apostrophe, a comma, or backslash (other than
1405 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1406 null, do not copy; instead, return the length of what the result
1407 would have been. */
1408static YYSIZE_T
1409yytnamerr (char *yyres, const char *yystr)
1410{
1411 if (*yystr == '"')
1412 {
d2a1a60a 1413 YYSIZE_T yyn = 0;
9cbfdc9e
PE
1414 char const *yyp = yystr;
1415
1416 for (;;)
1417 switch (*++yyp)
1418 {
1419 case '\'':
1420 case ',':
1421 goto do_not_strip_quotes;
1422
1423 case '\\':
1424 if (*++yyp != '\\')
1425 goto do_not_strip_quotes;
1426 /* Fall through. */
1427 default:
1428 if (yyres)
1429 yyres[yyn] = *yyp;
1430 yyn++;
1431 break;
1432
1433 case '"':
1434 if (yyres)
1435 yyres[yyn] = '\0';
1436 return yyn;
1437 }
1438 do_not_strip_quotes: ;
1439 }
1440
1441 if (! yyres)
1442 return yystrlen (yystr);
1443
1444 return yystpcpy (yyres, yystr) - yyres;
1445}
1446# endif
1447
45319f13
JD
1448/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1449 about the unexpected token YYTOKEN while in state YYSTATE.
1450
1451 Return 0 if *YYMSG was successfully written. Return 1 if an ordinary
1452 "syntax error" message will suffice instead. Return 2 if *YYMSG is
1453 not large enough to hold the message. In the last case, also set
1454 *YYMSG_ALLOC to either (a) the required number of bytes or (b) zero
1455 if the required number of bytes is too large to store. */
1456static int
1457yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1458 int yystate, int yytoken)
2abdfeef
PE
1459{
1460 int yyn = yypact[yystate];
1921f1d7 1461
d2a1a60a 1462 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
45319f13 1463 return 1;
2abdfeef
PE
1464 else
1465 {
dc450175 1466 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
2abdfeef
PE
1467 YYSIZE_T yysize = yysize0;
1468 YYSIZE_T yysize1;
2abdfeef 1469 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
dc450175
AD
1470 /* Internationalized format string. */
1471 const char *yyformat = 0;
1472 /* Arguments of yyformat. */
2abdfeef 1473 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2abdfeef
PE
1474
1475 /* Start YYX at -YYN if negative to avoid negative indexes in
53f036ce
JD
1476 YYCHECK. In other words, skip the first -YYN actions for this
1477 state because they are default actions. */
2abdfeef
PE
1478 int yyxbegin = yyn < 0 ? -yyn : 0;
1479
1480 /* Stay within bounds of both yycheck and yytname. */
d2a1a60a 1481 int yychecklim = YYLAST - yyn + 1;
2abdfeef 1482 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
dc450175
AD
1483 /* Number of reported tokens (one for the "unexpected", one per
1484 "expected"). */
1485 int yycount = 0;
1486 int yyx;
2abdfeef 1487
dc450175 1488 yyarg[yycount++] = yytname[yytoken];
2abdfeef
PE
1489
1490 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
53f036ce 1491 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
f2b30bdf 1492 && !yytable_value_is_error (yytable[yyx + yyn]))
bf8b3d98
PE
1493 {
1494 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1495 {
1496 yycount = 1;
1497 yysize = yysize0;
bf8b3d98
PE
1498 break;
1499 }
1500 yyarg[yycount++] = yytname[yyx];
1501 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
45319f13
JD
1502 if (! (yysize <= yysize1
1503 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1504 {
1505 /* Overflow. */
1506 *yymsg_alloc = 0;
1507 return 2;
1508 }
bf8b3d98 1509 yysize = yysize1;
bf8b3d98 1510 }
2abdfeef 1511
45319f13 1512 switch (yycount)
dc450175
AD
1513 {
1514#define YYCASE_(N, S) \
1515 case N: \
1516 yyformat = S; \
1517 break
1518 YYCASE_(1, YY_("syntax error, unexpected %s"));
1519 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1520 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1521 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1522 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1523#undef YYCASE_
1524 }
1525
1526 yysize1 = yysize + yystrlen (yyformat);
45319f13
JD
1527 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1528 {
1529 /* Overflow. */
1530 *yymsg_alloc = 0;
1531 return 2;
1532 }
2abdfeef
PE
1533 yysize = yysize1;
1534
45319f13
JD
1535 if (*yymsg_alloc < yysize)
1536 {
1537 *yymsg_alloc = 2 * yysize;
1538 if (! (yysize <= *yymsg_alloc
1539 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1540 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1541 return 2;
1542 }
2abdfeef 1543
45319f13
JD
1544 /* Avoid sprintf, as that infringes on the user's name space.
1545 Don't have undefined behavior even if the translation
1546 produced a string with the wrong number of "%s"s. */
1547 {
1548 char *yyp = *yymsg;
1549 int yyi = 0;
1550 while ((*yyp = *yyformat) != '\0')
1551 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1552 {
1553 yyp += yytnamerr (yyp, yyarg[yyi++]);
1554 yyformat += 2;
1555 }
1556 else
1557 {
1558 yyp++;
1559 yyformat++;
1560 }
1561 }
1562 return 0;
2abdfeef
PE
1563 }
1564}
1565#endif /* YYERROR_VERBOSE */
1921f1d7 1566\f
e9955c83 1567
04b6e11e
PE
1568/*-----------------------------------------------.
1569| Release the memory associated to this symbol. |
1570`-----------------------------------------------*/
1571
7029f892 1572/*ARGSUSED*/
bf8b3d98
PE
1573#if (defined __STDC__ || defined __C99__FUNC__ \
1574 || defined __cplusplus || defined _MSC_VER)
d33cb3ae 1575static void
8a8dc872 1576yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
04b6e11e 1577#else
d33cb3ae 1578static void
8a8dc872
AD
1579yydestruct (yymsg, yytype, yyvaluep, yylocationp)
1580 const char *yymsg;
04b6e11e 1581 int yytype;
886b69d1
AD
1582 YYSTYPE *yyvaluep;
1583 YYLTYPE *yylocationp;
04b6e11e
PE
1584#endif
1585{
e764d4df
PE
1586 YYUSE (yyvaluep);
1587 YYUSE (yylocationp);
04b6e11e 1588
8a8dc872
AD
1589 if (!yymsg)
1590 yymsg = "Deleting";
1591 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1592
04b6e11e
PE
1593 switch (yytype)
1594 {
1595 default:
bf8b3d98 1596 break;
04b6e11e
PE
1597 }
1598}
04b6e11e 1599
bb31eb56 1600
d33cb3ae 1601/* Prevent warnings from -Wmissing-prototypes. */
e9955c83 1602#ifdef YYPARSE_PARAM
dc450175
AD
1603#if (defined __STDC__ || defined __C99__FUNC__ \
1604 || defined __cplusplus || defined _MSC_VER)
d33cb3ae 1605int yyparse (void *YYPARSE_PARAM);
2e4c30fa 1606#else
d33cb3ae 1607int yyparse ();
2e4c30fa 1608#endif
d33cb3ae 1609#else /* ! YYPARSE_PARAM */
dc450175
AD
1610#if (defined __STDC__ || defined __C99__FUNC__ \
1611 || defined __cplusplus || defined _MSC_VER)
e9955c83 1612int yyparse (void);
d33cb3ae
PE
1613#else
1614int yyparse ();
1615#endif
05d18c24 1616#endif /* ! YYPARSE_PARAM */
e776192e 1617
e9955c83 1618
bb31eb56
JD
1619/*----------.
1620| yyparse. |
1621`----------*/
d33cb3ae
PE
1622
1623#ifdef YYPARSE_PARAM
bf8b3d98
PE
1624#if (defined __STDC__ || defined __C99__FUNC__ \
1625 || defined __cplusplus || defined _MSC_VER)
2e4c30fa
PE
1626int
1627yyparse (void *YYPARSE_PARAM)
1628#else
1629int
1630yyparse (YYPARSE_PARAM)
1631 void *YYPARSE_PARAM;
1632#endif
d33cb3ae 1633#else /* ! YYPARSE_PARAM */
bf8b3d98
PE
1634#if (defined __STDC__ || defined __C99__FUNC__ \
1635 || defined __cplusplus || defined _MSC_VER)
d33cb3ae
PE
1636int
1637yyparse (void)
1638#else
e9955c83 1639int
d33cb3ae 1640yyparse ()
74e543d2 1641
d33cb3ae
PE
1642#endif
1643#endif
e9955c83 1644{
e021811a 1645/* The lookahead symbol. */
366eea36
AD
1646int yychar;
1647
9bc0dd67 1648/* The semantic value of the lookahead symbol. */
366eea36
AD
1649YYSTYPE yylval;
1650
9bc0dd67 1651/* Location data for the lookahead symbol. */
366eea36 1652YYLTYPE yylloc;
e9955c83 1653
e021811a
JD
1654 /* Number of syntax errors so far. */
1655 int yynerrs;
e9955c83 1656
e021811a
JD
1657 int yystate;
1658 /* Number of tokens to shift before error messages enabled. */
1659 int yyerrstatus;
e9955c83 1660
e021811a
JD
1661 /* The stacks and their tools:
1662 `yyss': related to states.
1663 `yyvs': related to semantic values.
1664 `yyls': related to locations.
e9955c83 1665
e021811a
JD
1666 Refer to the stacks thru separate pointers, to allow yyoverflow
1667 to reallocate them elsewhere. */
e9955c83 1668
e021811a
JD
1669 /* The state stack. */
1670 yytype_int16 yyssa[YYINITDEPTH];
1671 yytype_int16 *yyss;
1672 yytype_int16 *yyssp;
e9955c83 1673
e021811a
JD
1674 /* The semantic value stack. */
1675 YYSTYPE yyvsa[YYINITDEPTH];
1676 YYSTYPE *yyvs;
1677 YYSTYPE *yyvsp;
e9955c83 1678
e021811a
JD
1679 /* The location stack. */
1680 YYLTYPE yylsa[YYINITDEPTH];
1681 YYLTYPE *yyls;
1682 YYLTYPE *yylsp;
1683
1684 /* The locations where the error started and ended. */
1685 YYLTYPE yyerror_range[2];
e9955c83 1686
e021811a 1687 YYSIZE_T yystacksize;
e9955c83 1688
e021811a
JD
1689 int yyn;
1690 int yyresult;
1691 /* Lookahead token as an internal (translated) token number. */
1692 int yytoken;
e9955c83
AD
1693 /* The variables used to return semantic value and location from the
1694 action routines. */
1695 YYSTYPE yyval;
e9955c83 1696 YYLTYPE yyloc;
e9955c83 1697
e021811a
JD
1698#if YYERROR_VERBOSE
1699 /* Buffer for error messages, and its allocated size. */
1700 char yymsgbuf[128];
1701 char *yymsg = yymsgbuf;
1702 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1703#endif
1704
1705#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
1706
3b0ffc7e
PE
1707 /* The number of symbols on the RHS of the reduced rule.
1708 Keep to zero when no symbol should be popped. */
1709 int yylen = 0;
e9955c83 1710
e021811a
JD
1711 yytoken = 0;
1712 yyss = yyssa;
1713 yyvs = yyvsa;
1714 yyls = yylsa;
e021811a
JD
1715 yystacksize = YYINITDEPTH;
1716
74e543d2 1717 YYDPRINTF ((stderr, "Starting parse\n"));
e9955c83
AD
1718
1719 yystate = 0;
1720 yyerrstatus = 0;
1721 yynerrs = 0;
e021811a 1722 yychar = YYEMPTY; /* Cause a token to be read. */
e9955c83
AD
1723
1724 /* Initialize stack pointers.
1725 Waste one element of value and location stack
1726 so that they stay on the same level as the state stack.
1727 The wasted elements are never initialized. */
e9955c83
AD
1728 yyssp = yyss;
1729 yyvsp = yyvs;
e9955c83 1730 yylsp = yyls;
e021811a 1731
8a8dc872
AD
1732#if YYLTYPE_IS_TRIVIAL
1733 /* Initialize the default location before parsing starts. */
1734 yylloc.first_line = yylloc.last_line = 1;
b3d9b5ba 1735 yylloc.first_column = yylloc.last_column = 1;
8a8dc872
AD
1736#endif
1737
e021811a 1738/* User initialization code. */
45319f13 1739/* Line 1200 of yacc.c */
b18cdd91 1740#line 80 "src/parse-gram.y"
cd3684cf
AD
1741{
1742 /* Bison's grammar can initial empty locations, hence a default
1743 location is needed. */
4a678af8
JD
1744 boundary_set (&yylloc.start, current_file, 1, 1);
1745 boundary_set (&yylloc.end, current_file, 1, 1);
cd3684cf 1746}
45319f13 1747/* Line 1200 of yacc.c */
b143f404 1748#line 1749 "src/parse-gram.c"
5f6da1c0 1749 yylsp[0] = yylloc;
e021811a 1750
e9955c83
AD
1751 goto yysetstate;
1752
1753/*------------------------------------------------------------.
1754| yynewstate -- Push a new state, which is found in yystate. |
1755`------------------------------------------------------------*/
1756 yynewstate:
1757 /* In all cases, when you get here, the value and location stacks
3b0ffc7e 1758 have just been pushed. So pushing a state here evens the stacks. */
e9955c83
AD
1759 yyssp++;
1760
1761 yysetstate:
1762 *yyssp = yystate;
1763
d33cb3ae 1764 if (yyss + yystacksize - 1 <= yyssp)
e9955c83
AD
1765 {
1766 /* Get the current used size of the three stacks, in elements. */
1767 YYSIZE_T yysize = yyssp - yyss + 1;
1768
1769#ifdef yyoverflow
1770 {
3b0ffc7e 1771 /* Give user a chance to reallocate the stack. Use copies of
e9955c83
AD
1772 these so that the &'s don't force the real ones into
1773 memory. */
1774 YYSTYPE *yyvs1 = yyvs;
bf8b3d98 1775 yytype_int16 *yyss1 = yyss;
366eea36 1776 YYLTYPE *yyls1 = yyls;
e9955c83
AD
1777
1778 /* Each stack pointer address is followed by the size of the
366eea36
AD
1779 data in use in that stack, in bytes. This used to be a
1780 conditional around just the two extra args, but that might
1781 be undefined if yyoverflow is a macro. */
6088a2a0 1782 yyoverflow (YY_("memory exhausted"),
e9955c83
AD
1783 &yyss1, yysize * sizeof (*yyssp),
1784 &yyvs1, yysize * sizeof (*yyvsp),
1785 &yyls1, yysize * sizeof (*yylsp),
1786 &yystacksize);
e021811a 1787
e9955c83 1788 yyls = yyls1;
e9955c83
AD
1789 yyss = yyss1;
1790 yyvs = yyvs1;
1791 }
1792#else /* no yyoverflow */
1793# ifndef YYSTACK_RELOCATE
6088a2a0 1794 goto yyexhaustedlab;
e9955c83
AD
1795# else
1796 /* Extend the stack our own way. */
d33cb3ae 1797 if (YYMAXDEPTH <= yystacksize)
6088a2a0 1798 goto yyexhaustedlab;
e9955c83 1799 yystacksize *= 2;
d33cb3ae 1800 if (YYMAXDEPTH < yystacksize)
e9955c83
AD
1801 yystacksize = YYMAXDEPTH;
1802
1803 {
bf8b3d98 1804 yytype_int16 *yyss1 = yyss;
e9955c83
AD
1805 union yyalloc *yyptr =
1806 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1807 if (! yyptr)
6088a2a0 1808 goto yyexhaustedlab;
e021811a
JD
1809 YYSTACK_RELOCATE (yyss_alloc, yyss);
1810 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1811 YYSTACK_RELOCATE (yyls_alloc, yyls);
1921f1d7 1812# undef YYSTACK_RELOCATE
e9955c83
AD
1813 if (yyss1 != yyssa)
1814 YYSTACK_FREE (yyss1);
1815 }
1816# endif
1817#endif /* no yyoverflow */
1818
1819 yyssp = yyss + yysize - 1;
1820 yyvsp = yyvs + yysize - 1;
e9955c83 1821 yylsp = yyls + yysize - 1;
e9955c83 1822
6088a2a0 1823 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
e9955c83
AD
1824 (unsigned long int) yystacksize));
1825
d33cb3ae 1826 if (yyss + yystacksize - 1 <= yyssp)
e9955c83
AD
1827 YYABORT;
1828 }
1829
6088a2a0 1830 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
e9955c83 1831
ec5479ce
JD
1832 if (yystate == YYFINAL)
1833 YYACCEPT;
1834
e9955c83
AD
1835 goto yybackup;
1836
1837/*-----------.
1838| yybackup. |
1839`-----------*/
1840yybackup:
1841
3b0ffc7e 1842 /* Do appropriate processing given the current state. Read a
9bc0dd67 1843 lookahead token if we need one and don't already have one. */
e9955c83 1844
9bc0dd67 1845 /* First try to decide what to do without reference to lookahead token. */
e9955c83 1846 yyn = yypact[yystate];
f2b30bdf 1847 if (yypact_value_is_default (yyn))
e9955c83
AD
1848 goto yydefault;
1849
9bc0dd67 1850 /* Not known => get a lookahead token if don't already have one. */
e9955c83 1851
9bc0dd67 1852 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
73521d9f 1853 if (yychar == YYEMPTY)
e9955c83 1854 {
74e543d2 1855 YYDPRINTF ((stderr, "Reading a token: "));
e9955c83
AD
1856 yychar = YYLEX;
1857 }
1858
73521d9f 1859 if (yychar <= YYEOF)
e9955c83 1860 {
73521d9f 1861 yychar = yytoken = YYEOF;
74e543d2 1862 YYDPRINTF ((stderr, "Now at end of input.\n"));
e9955c83
AD
1863 }
1864 else
1865 {
73521d9f 1866 yytoken = YYTRANSLATE (yychar);
6088a2a0 1867 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
e9955c83
AD
1868 }
1869
886b69d1 1870 /* If the proper action on seeing token YYTOKEN is to reduce or to
ae7453f2 1871 detect an error, take that action. */
886b69d1 1872 yyn += yytoken;
219741d8 1873 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
e9955c83 1874 goto yydefault;
e9955c83 1875 yyn = yytable[yyn];
ae7453f2 1876 if (yyn <= 0)
e9955c83 1877 {
f2b30bdf 1878 if (yytable_value_is_error (yyn))
e9955c83
AD
1879 goto yyerrlab;
1880 yyn = -yyn;
1881 goto yyreduce;
1882 }
e9955c83 1883
3b0ffc7e
PE
1884 /* Count tokens shifted since error; after three, turn off error
1885 status. */
1886 if (yyerrstatus)
1887 yyerrstatus--;
1888
9bc0dd67 1889 /* Shift the lookahead token. */
6088a2a0 1890 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
e9955c83 1891
ec5479ce
JD
1892 /* Discard the shifted token. */
1893 yychar = YYEMPTY;
e9955c83 1894
3b0ffc7e 1895 yystate = yyn;
e9955c83 1896 *++yyvsp = yylval;
e9955c83 1897 *++yylsp = yylloc;
e9955c83
AD
1898 goto yynewstate;
1899
1900
1901/*-----------------------------------------------------------.
1902| yydefault -- do the default action for the current state. |
1903`-----------------------------------------------------------*/
1904yydefault:
1905 yyn = yydefact[yystate];
1906 if (yyn == 0)
1907 goto yyerrlab;
1908 goto yyreduce;
1909
1910
1911/*-----------------------------.
1912| yyreduce -- Do a reduction. |
1913`-----------------------------*/
1914yyreduce:
1915 /* yyn is the number of a rule to reduce with. */
1916 yylen = yyr2[yyn];
1917
1918 /* If YYLEN is nonzero, implement the default value of the action:
1919 `$$ = $1'.
1920
04b6e11e
PE
1921 Otherwise, the following line sets YYVAL to garbage.
1922 This behavior is undocumented and Bison
e9955c83
AD
1923 users should not rely upon it. Assigning to YYVAL
1924 unconditionally makes the parser a bit smaller, and it avoids a
1925 GCC warning that YYVAL may be used uninitialized. */
1926 yyval = yyvsp[1-yylen];
1927
3b0ffc7e 1928 /* Default location. */
bf8b3d98 1929 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
05d18c24 1930 YY_REDUCE_PRINT (yyn);
1921f1d7
AD
1931 switch (yyn)
1932 {
05d18c24 1933 case 6:
45319f13 1934/* Line 1413 of yacc.c */
b143f404 1935#line 267 "src/parse-gram.y"
7c0c6181
JD
1936 {
1937 code_props plain_code;
e3dda35c 1938 code_props_plain_init (&plain_code, (yyvsp[0].chars), (yylsp[0]));
7c0c6181
JD
1939 code_props_translate_code (&plain_code);
1940 gram_scanner_last_string_free ();
7ecec4dd 1941 muscle_code_grow (union_seen ? "post_prologue" : "pre_prologue",
e3dda35c 1942 plain_code.code, (yylsp[0]));
7c0c6181
JD
1943 code_scanner_last_string_free ();
1944 }
45319f13 1945/* Line 1413 of yacc.c */
b143f404 1946#line 1947 "src/parse-gram.c"
1921f1d7
AD
1947 break;
1948
8efe435c 1949 case 7:
45319f13 1950/* Line 1413 of yacc.c */
b143f404 1951#line 277 "src/parse-gram.y"
b19ebeb3 1952 {
697c912f 1953 muscle_percent_define_ensure ((yyvsp[0].uniqstr), (yylsp[0]), true);
b19ebeb3 1954 }
45319f13 1955/* Line 1413 of yacc.c */
b143f404 1956#line 1957 "src/parse-gram.c"
9bc0dd67
JD
1957 break;
1958
2cbe6b7f 1959 case 8:
45319f13 1960/* Line 1413 of yacc.c */
b143f404 1961#line 281 "src/parse-gram.y"
7eb8a0bc 1962 {
de5ab940
JD
1963 muscle_percent_define_insert ((yyvsp[-1].uniqstr), (yylsp[-1]), (yyvsp[0].chars),
1964 MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE);
7eb8a0bc 1965 }
45319f13 1966/* Line 1413 of yacc.c */
b143f404 1967#line 1968 "src/parse-gram.c"
1921f1d7
AD
1968 break;
1969
2cbe6b7f 1970 case 9:
45319f13 1971/* Line 1413 of yacc.c */
b143f404 1972#line 285 "src/parse-gram.y"
2ce4ed68 1973 { defines_flag = true; }
45319f13 1974/* Line 1413 of yacc.c */
b143f404 1975#line 1976 "src/parse-gram.c"
e9955c83 1976 break;
1921f1d7 1977
2cbe6b7f 1978 case 10:
45319f13 1979/* Line 1413 of yacc.c */
b143f404 1980#line 287 "src/parse-gram.y"
02975b9a
JD
1981 {
1982 defines_flag = true;
e3dda35c 1983 spec_defines_file = xstrdup ((yyvsp[0].chars));
02975b9a 1984 }
45319f13 1985/* Line 1413 of yacc.c */
b143f404 1986#line 1987 "src/parse-gram.c"
e9955c83 1987 break;
1921f1d7 1988
2cbe6b7f 1989 case 11:
45319f13 1990/* Line 1413 of yacc.c */
b143f404 1991#line 292 "src/parse-gram.y"
2f5b478e
AD
1992 {
1993 muscle_percent_define_insert ("parse.error", (yylsp[0]), "verbose",
1994 MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE);
1995 }
45319f13 1996/* Line 1413 of yacc.c */
b143f404 1997#line 1998 "src/parse-gram.c"
d6328241
PH
1998 break;
1999
2cbe6b7f 2000 case 12:
45319f13 2001/* Line 1413 of yacc.c */
b143f404 2002#line 296 "src/parse-gram.y"
2f5b478e 2003 { expected_sr_conflicts = (yyvsp[0].integer); }
45319f13 2004/* Line 1413 of yacc.c */
b143f404 2005#line 2006 "src/parse-gram.c"
fb9712a9
AD
2006 break;
2007
2cbe6b7f 2008 case 13:
45319f13 2009/* Line 1413 of yacc.c */
b143f404 2010#line 297 "src/parse-gram.y"
2f5b478e 2011 { expected_rr_conflicts = (yyvsp[0].integer); }
45319f13 2012/* Line 1413 of yacc.c */
b143f404 2013#line 2014 "src/parse-gram.c"
34f98f46
JD
2014 break;
2015
2cbe6b7f 2016 case 14:
45319f13 2017/* Line 1413 of yacc.c */
b143f404 2018#line 298 "src/parse-gram.y"
e3dda35c 2019 { spec_file_prefix = (yyvsp[0].chars); }
45319f13 2020/* Line 1413 of yacc.c */
b143f404 2021#line 2022 "src/parse-gram.c"
02975b9a
JD
2022 break;
2023
2024 case 15:
45319f13 2025/* Line 1413 of yacc.c */
b143f404 2026#line 299 "src/parse-gram.y"
2f5b478e 2027 { spec_file_prefix = (yyvsp[0].chars); }
45319f13 2028/* Line 1413 of yacc.c */
b143f404 2029#line 2030 "src/parse-gram.c"
2f5b478e
AD
2030 break;
2031
2032 case 16:
45319f13 2033/* Line 1413 of yacc.c */
b143f404 2034#line 301 "src/parse-gram.y"
cd3684cf 2035 {
bf8b3d98
PE
2036 nondeterministic_parser = true;
2037 glr_parser = true;
2038 }
45319f13 2039/* Line 1413 of yacc.c */
b143f404 2040#line 2041 "src/parse-gram.c"
e9955c83 2041 break;
1921f1d7 2042
2f5b478e 2043 case 17:
45319f13 2044/* Line 1413 of yacc.c */
b143f404 2045#line 306 "src/parse-gram.y"
cd3684cf 2046 {
7c0c6181 2047 code_props action;
e3dda35c 2048 code_props_symbol_action_init (&action, (yyvsp[0].code), (yylsp[0]));
7c0c6181
JD
2049 code_props_translate_code (&action);
2050 gram_scanner_last_string_free ();
e3dda35c 2051 muscle_code_grow ("initial_action", action.code, (yylsp[0]));
7c0c6181 2052 code_scanner_last_string_free ();
bf8b3d98 2053 }
45319f13 2054/* Line 1413 of yacc.c */
b143f404 2055#line 2056 "src/parse-gram.c"
e9955c83 2056 break;
1921f1d7 2057
2f5b478e 2058 case 18:
45319f13 2059/* Line 1413 of yacc.c */
b143f404 2060#line 314 "src/parse-gram.y"
e3dda35c 2061 { language_argmatch ((yyvsp[0].chars), grammar_prio, (yylsp[-1])); }
45319f13 2062/* Line 1413 of yacc.c */
b143f404 2063#line 2064 "src/parse-gram.c"
e9955c83 2064 break;
1921f1d7 2065
2f5b478e 2066 case 19:
45319f13 2067/* Line 1413 of yacc.c */
b143f404 2068#line 315 "src/parse-gram.y"
b18cdd91 2069 { spec_name_prefix = (yyvsp[0].chars); }
45319f13 2070/* Line 1413 of yacc.c */
b143f404 2071#line 2072 "src/parse-gram.c"
e9955c83 2072 break;
1921f1d7 2073
2f5b478e 2074 case 20:
45319f13 2075/* Line 1413 of yacc.c */
b143f404 2076#line 316 "src/parse-gram.y"
3583d96b 2077 { spec_name_prefix = (yyvsp[0].chars); }
45319f13 2078/* Line 1413 of yacc.c */
b143f404 2079#line 2080 "src/parse-gram.c"
02975b9a
JD
2080 break;
2081
2f5b478e 2082 case 21:
45319f13 2083/* Line 1413 of yacc.c */
b143f404 2084#line 317 "src/parse-gram.y"
b18cdd91 2085 { no_lines_flag = true; }
45319f13 2086/* Line 1413 of yacc.c */
b143f404 2087#line 2088 "src/parse-gram.c"
e9955c83 2088 break;
1921f1d7 2089
2f5b478e 2090 case 22:
45319f13 2091/* Line 1413 of yacc.c */
b143f404 2092#line 318 "src/parse-gram.y"
b18cdd91 2093 { nondeterministic_parser = true; }
45319f13 2094/* Line 1413 of yacc.c */
b143f404 2095#line 2096 "src/parse-gram.c"
4cdb01db 2096 break;
1921f1d7 2097
2f5b478e 2098 case 23:
45319f13 2099/* Line 1413 of yacc.c */
b143f404 2100#line 319 "src/parse-gram.y"
b18cdd91 2101 { spec_outfile = (yyvsp[0].chars); }
45319f13 2102/* Line 1413 of yacc.c */
b143f404 2103#line 2104 "src/parse-gram.c"
4cdb01db 2104 break;
1921f1d7 2105
2f5b478e 2106 case 24:
45319f13 2107/* Line 1413 of yacc.c */
b143f404 2108#line 320 "src/parse-gram.y"
3583d96b 2109 { spec_outfile = (yyvsp[0].chars); }
45319f13 2110/* Line 1413 of yacc.c */
b143f404 2111#line 2112 "src/parse-gram.c"
02975b9a
JD
2112 break;
2113
2f5b478e 2114 case 25:
45319f13 2115/* Line 1413 of yacc.c */
b143f404 2116#line 321 "src/parse-gram.y"
dd875058 2117 { current_param = (yyvsp[0].param); }
45319f13 2118/* Line 1413 of yacc.c */
b143f404 2119#line 2120 "src/parse-gram.c"
4cdb01db 2120 break;
1921f1d7 2121
2f5b478e 2122 case 26:
45319f13 2123/* Line 1413 of yacc.c */
b143f404 2124#line 321 "src/parse-gram.y"
dd875058 2125 { current_param = param_none; }
45319f13 2126/* Line 1413 of yacc.c */
b143f404 2127#line 2128 "src/parse-gram.c"
b50d2359
AD
2128 break;
2129
b18cdd91 2130 case 27:
45319f13 2131/* Line 1413 of yacc.c */
b143f404 2132#line 322 "src/parse-gram.y"
dd875058 2133 { version_check (&(yylsp[0]), (yyvsp[0].chars)); }
45319f13 2134/* Line 1413 of yacc.c */
b143f404 2135#line 2136 "src/parse-gram.c"
dd875058
AD
2136 break;
2137
2138 case 28:
45319f13 2139/* Line 1413 of yacc.c */
b143f404 2140#line 324 "src/parse-gram.y"
a7867f53 2141 {
e3dda35c 2142 char const *skeleton_user = (yyvsp[0].chars);
a7867f53
JD
2143 if (strchr (skeleton_user, '/'))
2144 {
2145 size_t dir_length = strlen (current_file);
2146 char *skeleton_build;
2147 while (dir_length && current_file[dir_length - 1] != '/')
2148 --dir_length;
2149 while (dir_length && current_file[dir_length - 1] == '/')
2150 --dir_length;
2151 skeleton_build =
2152 xmalloc (dir_length + 1 + strlen (skeleton_user) + 1);
2153 if (dir_length > 0)
2154 {
2155 strncpy (skeleton_build, current_file, dir_length);
2156 skeleton_build[dir_length++] = '/';
2157 }
2158 strcpy (skeleton_build + dir_length, skeleton_user);
2159 skeleton_user = uniqstr_new (skeleton_build);
2160 free (skeleton_build);
2161 }
e3dda35c 2162 skeleton_arg (skeleton_user, grammar_prio, (yylsp[-1]));
a7867f53 2163 }
45319f13 2164/* Line 1413 of yacc.c */
b143f404 2165#line 2166 "src/parse-gram.c"
3fa3725a
PE
2166 break;
2167
dd875058 2168 case 29:
45319f13 2169/* Line 1413 of yacc.c */
b143f404 2170#line 347 "src/parse-gram.y"
7172e23e 2171 { token_table_flag = true; }
45319f13 2172/* Line 1413 of yacc.c */
b143f404 2173#line 2174 "src/parse-gram.c"
5e6feb86
PE
2174 break;
2175
dd875058 2176 case 30:
45319f13 2177/* Line 1413 of yacc.c */
b143f404 2178#line 348 "src/parse-gram.y"
ef1b4273 2179 { report_flag |= report_states; }
45319f13 2180/* Line 1413 of yacc.c */
b143f404 2181#line 2182 "src/parse-gram.c"
7172e23e
JD
2182 break;
2183
dd875058 2184 case 31:
45319f13 2185/* Line 1413 of yacc.c */
b143f404 2186#line 349 "src/parse-gram.y"
83a457be 2187 { yacc_flag = true; }
45319f13 2188/* Line 1413 of yacc.c */
b143f404 2189#line 2190 "src/parse-gram.c"
dd875058
AD
2190 break;
2191
2192 case 33:
45319f13 2193/* Line 1413 of yacc.c */
b143f404 2194#line 354 "src/parse-gram.y"
dd875058 2195 { add_param (current_param, (yyvsp[0].code), (yylsp[0])); }
45319f13 2196/* Line 1413 of yacc.c */
b143f404 2197#line 2198 "src/parse-gram.c"
4cdb01db 2198 break;
1921f1d7 2199
b18cdd91 2200 case 34:
45319f13 2201/* Line 1413 of yacc.c */
b143f404 2202#line 355 "src/parse-gram.y"
dd875058 2203 { add_param (current_param, (yyvsp[0].code), (yylsp[0])); }
45319f13 2204/* Line 1413 of yacc.c */
b143f404 2205#line 2206 "src/parse-gram.c"
dd875058
AD
2206 break;
2207
2208 case 37:
45319f13 2209/* Line 1413 of yacc.c */
b143f404 2210#line 367 "src/parse-gram.y"
1921f1d7 2211 {
e3dda35c 2212 grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0]));
4cdb01db 2213 }
45319f13 2214/* Line 1413 of yacc.c */
b143f404 2215#line 2216 "src/parse-gram.c"
e9955c83 2216 break;
1921f1d7 2217
dd875058 2218 case 38:
45319f13 2219/* Line 1413 of yacc.c */
b143f404 2220#line 371 "src/parse-gram.y"
1921f1d7 2221 {
05d18c24 2222 symbol_list *list;
e3dda35c
AD
2223 for (list = (yyvsp[0].list); list; list = list->next)
2224 symbol_list_destructor_set (list, (yyvsp[-1].code), (yylsp[-1]));
2225 symbol_list_free ((yyvsp[0].list));
4cdb01db 2226 }
45319f13 2227/* Line 1413 of yacc.c */
b143f404 2228#line 2229 "src/parse-gram.c"
e9955c83 2229 break;
1921f1d7 2230
dd875058 2231 case 39:
45319f13 2232/* Line 1413 of yacc.c */
b143f404 2233#line 378 "src/parse-gram.y"
1921f1d7 2234 {
05d18c24 2235 symbol_list *list;
e3dda35c
AD
2236 for (list = (yyvsp[0].list); list; list = list->next)
2237 symbol_list_printer_set (list, (yyvsp[-1].code), (yylsp[-1]));
2238 symbol_list_free ((yyvsp[0].list));
4cdb01db 2239 }
45319f13 2240/* Line 1413 of yacc.c */
b143f404 2241#line 2242 "src/parse-gram.c"
e9955c83 2242 break;
1921f1d7 2243
dd875058 2244 case 40:
45319f13 2245/* Line 1413 of yacc.c */
b143f404 2246#line 385 "src/parse-gram.y"
92f5e991 2247 {
66ef8b9d 2248 default_prec = true;
92f5e991 2249 }
45319f13 2250/* Line 1413 of yacc.c */
b143f404 2251#line 2252 "src/parse-gram.c"
9280d3ef
AD
2252 break;
2253
dd875058 2254 case 41:
45319f13 2255/* Line 1413 of yacc.c */
b143f404 2256#line 389 "src/parse-gram.y"
66ef8b9d
PE
2257 {
2258 default_prec = false;
2259 }
45319f13 2260/* Line 1413 of yacc.c */
b143f404 2261#line 2262 "src/parse-gram.c"
92f5e991
AD
2262 break;
2263
dd875058 2264 case 42:
45319f13 2265/* Line 1413 of yacc.c */
b143f404 2266#line 393 "src/parse-gram.y"
8e0a5e9e 2267 {
9611cfa2
JD
2268 /* Do not invoke muscle_percent_code_grow here since it invokes
2269 muscle_user_name_list_grow. */
e3dda35c 2270 muscle_code_grow ("percent_code()", (yyvsp[0].chars), (yylsp[0]));
8e0a5e9e
JD
2271 code_scanner_last_string_free ();
2272 }
45319f13 2273/* Line 1413 of yacc.c */
b143f404 2274#line 2275 "src/parse-gram.c"
2cbe6b7f
JD
2275 break;
2276
dd875058 2277 case 43:
45319f13 2278/* Line 1413 of yacc.c */
b143f404 2279#line 400 "src/parse-gram.y"
8e0a5e9e 2280 {
e3dda35c 2281 muscle_percent_code_grow ((yyvsp[-1].uniqstr), (yylsp[-1]), (yyvsp[0].chars), (yylsp[0]));
8e0a5e9e 2282 code_scanner_last_string_free ();
8e0a5e9e 2283 }
45319f13 2284/* Line 1413 of yacc.c */
b143f404 2285#line 2286 "src/parse-gram.c"
58d7a1a1
AD
2286 break;
2287
dd875058 2288 case 44:
45319f13 2289/* Line 1413 of yacc.c */
b143f404 2290#line 414 "src/parse-gram.y"
2cbe6b7f 2291 {}
45319f13 2292/* Line 1413 of yacc.c */
b143f404 2293#line 2294 "src/parse-gram.c"
66ef8b9d
PE
2294 break;
2295
dd875058 2296 case 45:
45319f13 2297/* Line 1413 of yacc.c */
b143f404 2298#line 415 "src/parse-gram.y"
e3dda35c 2299 { muscle_code_grow ("union_name", (yyvsp[0].uniqstr), (yylsp[0])); }
45319f13 2300/* Line 1413 of yacc.c */
b143f404 2301#line 2302 "src/parse-gram.c"
2cbe6b7f
JD
2302 break;
2303
dd875058 2304 case 46:
45319f13 2305/* Line 1413 of yacc.c */
b143f404 2306#line 420 "src/parse-gram.y"
9280d3ef 2307 {
1f4cc0f4 2308 union_seen = true;
e3dda35c 2309 muscle_code_grow ("stype", (yyvsp[0].chars), (yylsp[0]));
7ecec4dd 2310 code_scanner_last_string_free ();
9280d3ef 2311 }
45319f13 2312/* Line 1413 of yacc.c */
b143f404 2313#line 2314 "src/parse-gram.c"
9280d3ef
AD
2314 break;
2315
dd875058 2316 case 47:
45319f13 2317/* Line 1413 of yacc.c */
b143f404 2318#line 431 "src/parse-gram.y"
58d7a1a1 2319 { current_class = nterm_sym; }
45319f13 2320/* Line 1413 of yacc.c */
b143f404 2321#line 2322 "src/parse-gram.c"
366eea36
AD
2322 break;
2323
dd875058 2324 case 48:
45319f13 2325/* Line 1413 of yacc.c */
b143f404 2326#line 432 "src/parse-gram.y"
366eea36
AD
2327 {
2328 current_class = unknown_sym;
2329 current_type = NULL;
2330 }
45319f13 2331/* Line 1413 of yacc.c */
b143f404 2332#line 2333 "src/parse-gram.c"
366eea36
AD
2333 break;
2334
dd875058 2335 case 49:
45319f13 2336/* Line 1413 of yacc.c */
b143f404 2337#line 436 "src/parse-gram.y"
58d7a1a1 2338 { current_class = token_sym; }
45319f13 2339/* Line 1413 of yacc.c */
b143f404 2340#line 2341 "src/parse-gram.c"
58d7a1a1
AD
2341 break;
2342
dd875058 2343 case 50:
45319f13 2344/* Line 1413 of yacc.c */
b143f404 2345#line 437 "src/parse-gram.y"
58d7a1a1
AD
2346 {
2347 current_class = unknown_sym;
2348 current_type = NULL;
2349 }
45319f13 2350/* Line 1413 of yacc.c */
b143f404 2351#line 2352 "src/parse-gram.c"
58d7a1a1
AD
2352 break;
2353
dd875058 2354 case 51:
45319f13 2355/* Line 1413 of yacc.c */
b143f404 2356#line 442 "src/parse-gram.y"
1e0bab92 2357 {
05d18c24 2358 symbol_list *list;
3acc0308 2359 tag_seen = true;
e3dda35c
AD
2360 for (list = (yyvsp[0].list); list; list = list->next)
2361 symbol_type_set (list->content.sym, (yyvsp[-1].uniqstr), (yylsp[-1]));
2362 symbol_list_free ((yyvsp[0].list));
1e0bab92 2363 }
45319f13 2364/* Line 1413 of yacc.c */
b143f404 2365#line 2366 "src/parse-gram.c"
e9955c83 2366 break;
1921f1d7 2367
dd875058 2368 case 52:
45319f13 2369/* Line 1413 of yacc.c */
b143f404 2370#line 453 "src/parse-gram.y"
1921f1d7 2371 {
05d18c24 2372 symbol_list *list;
1e0bab92 2373 ++current_prec;
e3dda35c 2374 for (list = (yyvsp[0].list); list; list = list->next)
1e0bab92 2375 {
e3dda35c
AD
2376 symbol_type_set (list->content.sym, current_type, (yylsp[-1]));
2377 symbol_precedence_set (list->content.sym, current_prec, (yyvsp[-2].assoc), (yylsp[-2]));
1e0bab92 2378 }
e3dda35c 2379 symbol_list_free ((yyvsp[0].list));
2c569025
AD
2380 current_type = NULL;
2381 }
45319f13 2382/* Line 1413 of yacc.c */
b143f404 2383#line 2384 "src/parse-gram.c"
e9955c83 2384 break;
1921f1d7 2385
dd875058 2386 case 53:
45319f13 2387/* Line 1413 of yacc.c */
b143f404 2388#line 467 "src/parse-gram.y"
76dcf299 2389 { (yyval.assoc) = left_assoc; }
45319f13 2390/* Line 1413 of yacc.c */
b143f404 2391#line 2392 "src/parse-gram.c"
e9955c83 2392 break;
1921f1d7 2393
dd875058 2394 case 54:
45319f13 2395/* Line 1413 of yacc.c */
b143f404 2396#line 468 "src/parse-gram.y"
76dcf299 2397 { (yyval.assoc) = right_assoc; }
45319f13 2398/* Line 1413 of yacc.c */
b143f404 2399#line 2400 "src/parse-gram.c"
e9955c83 2400 break;
1921f1d7 2401
dd875058 2402 case 55:
45319f13 2403/* Line 1413 of yacc.c */
b143f404 2404#line 469 "src/parse-gram.y"
76dcf299 2405 { (yyval.assoc) = non_assoc; }
45319f13 2406/* Line 1413 of yacc.c */
b143f404 2407#line 2408 "src/parse-gram.c"
4cdb01db 2408 break;
1921f1d7 2409
dd875058 2410 case 56:
45319f13 2411/* Line 1413 of yacc.c */
b143f404 2412#line 470 "src/parse-gram.y"
f7398526 2413 { (yyval.assoc) = precedence_assoc; }
45319f13 2414/* Line 1413 of yacc.c */
b143f404 2415#line 2416 "src/parse-gram.c"
e9955c83 2416 break;
1921f1d7 2417
dd875058 2418 case 57:
45319f13 2419/* Line 1413 of yacc.c */
b143f404 2420#line 474 "src/parse-gram.y"
f7398526 2421 { current_type = NULL; }
45319f13 2422/* Line 1413 of yacc.c */
b143f404 2423#line 2424 "src/parse-gram.c"
e9955c83 2424 break;
1921f1d7 2425
dd875058 2426 case 58:
45319f13 2427/* Line 1413 of yacc.c */
b143f404 2428#line 475 "src/parse-gram.y"
e3dda35c 2429 { current_type = (yyvsp[0].uniqstr); tag_seen = true; }
45319f13 2430/* Line 1413 of yacc.c */
b143f404 2431#line 2432 "src/parse-gram.c"
3be03b13
JD
2432 break;
2433
dd875058 2434 case 59:
45319f13 2435/* Line 1413 of yacc.c */
b143f404 2436#line 481 "src/parse-gram.y"
e3dda35c 2437 { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); }
45319f13 2438/* Line 1413 of yacc.c */
b143f404 2439#line 2440 "src/parse-gram.c"
3be03b13
JD
2440 break;
2441
dd875058 2442 case 60:
45319f13 2443/* Line 1413 of yacc.c */
b143f404 2444#line 483 "src/parse-gram.y"
e3dda35c 2445 { (yyval.list) = symbol_list_prepend ((yyvsp[-1].list), symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0]))); }
45319f13 2446/* Line 1413 of yacc.c */
b143f404 2447#line 2448 "src/parse-gram.c"
4cdb01db 2448 break;
1921f1d7 2449
dd875058 2450 case 61:
45319f13 2451/* Line 1413 of yacc.c */
b143f404 2452#line 487 "src/parse-gram.y"
e3dda35c 2453 { (yyval.symbol) = (yyvsp[0].symbol); }
45319f13 2454/* Line 1413 of yacc.c */
b143f404 2455#line 2456 "src/parse-gram.c"
4cdb01db 2456 break;
1921f1d7 2457
dd875058 2458 case 62:
45319f13 2459/* Line 1413 of yacc.c */
b143f404 2460#line 488 "src/parse-gram.y"
e3dda35c 2461 { (yyval.symbol) = (yyvsp[-1].symbol); symbol_user_token_number_set ((yyvsp[-1].symbol), (yyvsp[0].integer), (yylsp[0])); }
45319f13 2462/* Line 1413 of yacc.c */
b143f404 2463#line 2464 "src/parse-gram.c"
3be03b13
JD
2464 break;
2465
dd875058 2466 case 63:
45319f13 2467/* Line 1413 of yacc.c */
b143f404 2468#line 494 "src/parse-gram.y"
e3dda35c 2469 { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); }
45319f13 2470/* Line 1413 of yacc.c */
b143f404 2471#line 2472 "src/parse-gram.c"
3be03b13
JD
2472 break;
2473
dd875058 2474 case 64:
45319f13 2475/* Line 1413 of yacc.c */
b143f404 2476#line 496 "src/parse-gram.y"
e3dda35c 2477 { (yyval.list) = symbol_list_prepend ((yyvsp[-1].list), symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0]))); }
45319f13 2478/* Line 1413 of yacc.c */
b143f404 2479#line 2480 "src/parse-gram.c"
3be03b13
JD
2480 break;
2481
dd875058 2482 case 65:
45319f13 2483/* Line 1413 of yacc.c */
b143f404 2484#line 500 "src/parse-gram.y"
e3dda35c 2485 { (yyval.list) = (yyvsp[0].list); }
45319f13 2486/* Line 1413 of yacc.c */
b143f404 2487#line 2488 "src/parse-gram.c"
12e35840
JD
2488 break;
2489
dd875058 2490 case 66:
45319f13 2491/* Line 1413 of yacc.c */
b143f404 2492#line 501 "src/parse-gram.y"
e3dda35c 2493 { (yyval.list) = symbol_list_prepend ((yyvsp[-1].list), (yyvsp[0].list)); }
45319f13 2494/* Line 1413 of yacc.c */
b143f404 2495#line 2496 "src/parse-gram.c"
ab7f29f8
JD
2496 break;
2497
dd875058 2498 case 67:
45319f13 2499/* Line 1413 of yacc.c */
b143f404 2500#line 505 "src/parse-gram.y"
e3dda35c 2501 { (yyval.list) = symbol_list_sym_new ((yyvsp[0].symbol), (yylsp[0])); }
45319f13 2502/* Line 1413 of yacc.c */
b143f404 2503#line 2504 "src/parse-gram.c"
ab7f29f8
JD
2504 break;
2505
dd875058 2506 case 68:
45319f13 2507/* Line 1413 of yacc.c */
b143f404 2508#line 506 "src/parse-gram.y"
e3dda35c 2509 { (yyval.list) = symbol_list_type_new ((yyvsp[0].uniqstr), (yylsp[0])); }
45319f13 2510/* Line 1413 of yacc.c */
b143f404 2511#line 2512 "src/parse-gram.c"
ab7f29f8
JD
2512 break;
2513
dd875058 2514 case 69:
45319f13 2515/* Line 1413 of yacc.c */
b143f404 2516#line 507 "src/parse-gram.y"
e3dda35c 2517 { (yyval.list) = symbol_list_default_tagged_new ((yylsp[0])); }
45319f13 2518/* Line 1413 of yacc.c */
b143f404 2519#line 2520 "src/parse-gram.c"
ab7f29f8
JD
2520 break;
2521
dd875058 2522 case 70:
45319f13 2523/* Line 1413 of yacc.c */
b143f404 2524#line 508 "src/parse-gram.y"
e3dda35c 2525 { (yyval.list) = symbol_list_default_tagless_new ((yylsp[0])); }
45319f13 2526/* Line 1413 of yacc.c */
b143f404 2527#line 2528 "src/parse-gram.c"
f7398526
AD
2528 break;
2529
dd875058 2530 case 71:
45319f13 2531/* Line 1413 of yacc.c */
b143f404 2532#line 514 "src/parse-gram.y"
1921f1d7 2533 {
e3dda35c 2534 current_type = (yyvsp[0].uniqstr);
1f4cc0f4 2535 tag_seen = true;
4cdb01db 2536 }
45319f13 2537/* Line 1413 of yacc.c */
b143f404 2538#line 2539 "src/parse-gram.c"
e9955c83 2539 break;
1921f1d7 2540
dd875058 2541 case 72:
45319f13 2542/* Line 1413 of yacc.c */
b143f404 2543#line 519 "src/parse-gram.y"
1921f1d7 2544 {
e3dda35c
AD
2545 symbol_class_set ((yyvsp[0].symbol), current_class, (yylsp[0]), true);
2546 symbol_type_set ((yyvsp[0].symbol), current_type, (yylsp[0]));
4cdb01db 2547 }
45319f13 2548/* Line 1413 of yacc.c */
b143f404 2549#line 2550 "src/parse-gram.c"
e9955c83 2550 break;
1921f1d7 2551
dd875058 2552 case 73:
45319f13 2553/* Line 1413 of yacc.c */
b143f404 2554#line 524 "src/parse-gram.y"
1921f1d7 2555 {
e3dda35c
AD
2556 symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]), true);
2557 symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
2558 symbol_user_token_number_set ((yyvsp[-1].symbol), (yyvsp[0].integer), (yylsp[0]));
4cdb01db 2559 }
45319f13 2560/* Line 1413 of yacc.c */
b143f404 2561#line 2562 "src/parse-gram.c"
e9955c83 2562 break;
1921f1d7 2563
dd875058 2564 case 74:
45319f13 2565/* Line 1413 of yacc.c */
b143f404 2566#line 530 "src/parse-gram.y"
1921f1d7 2567 {
e3dda35c
AD
2568 symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]), true);
2569 symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
2570 symbol_make_alias ((yyvsp[-1].symbol), (yyvsp[0].symbol), (yyloc));
4cdb01db 2571 }
45319f13 2572/* Line 1413 of yacc.c */
b143f404 2573#line 2574 "src/parse-gram.c"
e9955c83 2574 break;
1921f1d7 2575
dd875058 2576 case 75:
45319f13 2577/* Line 1413 of yacc.c */
b143f404 2578#line 536 "src/parse-gram.y"
1921f1d7 2579 {
e3dda35c
AD
2580 symbol_class_set ((yyvsp[-2].symbol), current_class, (yylsp[-2]), true);
2581 symbol_type_set ((yyvsp[-2].symbol), current_type, (yylsp[-2]));
2582 symbol_user_token_number_set ((yyvsp[-2].symbol), (yyvsp[-1].integer), (yylsp[-1]));
2583 symbol_make_alias ((yyvsp[-2].symbol), (yyvsp[0].symbol), (yyloc));
4cdb01db 2584 }
45319f13 2585/* Line 1413 of yacc.c */
b143f404 2586#line 2587 "src/parse-gram.c"
e9955c83 2587 break;
1921f1d7 2588
dd875058 2589 case 82:
45319f13 2590/* Line 1413 of yacc.c */
b143f404 2591#line 566 "src/parse-gram.y"
b275314e
AD
2592 {
2593 yyerrok;
2594 }
45319f13 2595/* Line 1413 of yacc.c */
b143f404 2596#line 2597 "src/parse-gram.c"
e9955c83 2597 break;
1921f1d7 2598
dd875058 2599 case 83:
45319f13 2600/* Line 1413 of yacc.c */
b143f404 2601#line 572 "src/parse-gram.y"
d70059ec
AR
2602 { current_lhs = (yyvsp[-1].symbol); current_lhs_location = (yylsp[-1]);
2603 current_lhs_named_ref = (yyvsp[0].named_ref); }
45319f13 2604/* Line 1413 of yacc.c */
b143f404 2605#line 2606 "src/parse-gram.c"
e9955c83 2606 break;
1921f1d7 2607
dd875058 2608 case 85:
45319f13 2609/* Line 1413 of yacc.c */
b143f404 2610#line 577 "src/parse-gram.y"
e3dda35c 2611 { grammar_current_rule_end ((yylsp[0])); }
45319f13 2612/* Line 1413 of yacc.c */
b143f404 2613#line 2614 "src/parse-gram.c"
4cdb01db 2614 break;
1921f1d7 2615
dd875058 2616 case 86:
45319f13 2617/* Line 1413 of yacc.c */
b143f404 2618#line 578 "src/parse-gram.y"
e3dda35c 2619 { grammar_current_rule_end ((yylsp[0])); }
45319f13 2620/* Line 1413 of yacc.c */
b143f404 2621#line 2622 "src/parse-gram.c"
e9955c83 2622 break;
1921f1d7 2623
dd875058 2624 case 88:
45319f13 2625/* Line 1413 of yacc.c */
b143f404 2626#line 584 "src/parse-gram.y"
d70059ec
AR
2627 { grammar_current_rule_begin (current_lhs, current_lhs_location,
2628 current_lhs_named_ref); }
45319f13 2629/* Line 1413 of yacc.c */
b143f404 2630#line 2631 "src/parse-gram.c"
e9071366
AD
2631 break;
2632
dd875058 2633 case 89:
45319f13 2634/* Line 1413 of yacc.c */
b143f404 2635#line 587 "src/parse-gram.y"
d70059ec 2636 { grammar_current_rule_symbol_append ((yyvsp[-1].symbol), (yylsp[-1]), (yyvsp[0].named_ref)); }
45319f13 2637/* Line 1413 of yacc.c */
b143f404 2638#line 2639 "src/parse-gram.c"
676385e2
PH
2639 break;
2640
dd875058 2641 case 90:
45319f13 2642/* Line 1413 of yacc.c */
b143f404 2643#line 589 "src/parse-gram.y"
d70059ec 2644 { grammar_current_rule_action_append ((yyvsp[-1].code), (yylsp[-1]), (yyvsp[0].named_ref)); }
45319f13 2645/* Line 1413 of yacc.c */
b143f404 2646#line 2647 "src/parse-gram.c"
676385e2
PH
2647 break;
2648
dd875058 2649 case 91:
45319f13 2650/* Line 1413 of yacc.c */
b143f404 2651#line 591 "src/parse-gram.y"
e3dda35c 2652 { grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); }
45319f13 2653/* Line 1413 of yacc.c */
b143f404 2654#line 2655 "src/parse-gram.c"
3fa3725a
PE
2655 break;
2656
dd875058 2657 case 92:
45319f13 2658/* Line 1413 of yacc.c */
b143f404 2659#line 593 "src/parse-gram.y"
e3dda35c 2660 { grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); }
45319f13 2661/* Line 1413 of yacc.c */
b143f404 2662#line 2663 "src/parse-gram.c"
5e6feb86
PE
2663 break;
2664
dd875058 2665 case 93:
45319f13 2666/* Line 1413 of yacc.c */
b143f404 2667#line 595 "src/parse-gram.y"
e3dda35c 2668 { grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); }
45319f13 2669/* Line 1413 of yacc.c */
b143f404 2670#line 2671 "src/parse-gram.c"
b275314e
AD
2671 break;
2672
dd875058 2673 case 94:
45319f13 2674/* Line 1413 of yacc.c */
b143f404 2675#line 599 "src/parse-gram.y"
d70059ec 2676 { (yyval.named_ref) = 0; }
45319f13 2677/* Line 1413 of yacc.c */
b143f404 2678#line 2679 "src/parse-gram.c"
d70059ec
AR
2679 break;
2680
dd875058 2681 case 95:
45319f13 2682/* Line 1413 of yacc.c */
b143f404 2683#line 601 "src/parse-gram.y"
d70059ec 2684 { (yyval.named_ref) = named_ref_new((yyvsp[0].uniqstr), (yylsp[0])); }
45319f13 2685/* Line 1413 of yacc.c */
b143f404 2686#line 2687 "src/parse-gram.c"
d70059ec
AR
2687 break;
2688
dd875058 2689 case 97:
45319f13 2690/* Line 1413 of yacc.c */
b143f404 2691#line 613 "src/parse-gram.y"
e3dda35c 2692 { (yyval.uniqstr) = uniqstr_new ((yyvsp[0].chars)); }
45319f13 2693/* Line 1413 of yacc.c */
b143f404 2694#line 2695 "src/parse-gram.c"
16dc6a9e
JD
2695 break;
2696
dd875058 2697 case 98:
45319f13 2698/* Line 1413 of yacc.c */
b143f404 2699#line 618 "src/parse-gram.y"
1c729058 2700 { (yyval.chars) = ""; }
45319f13 2701/* Line 1413 of yacc.c */
b143f404 2702#line 2703 "src/parse-gram.c"
2ce4ed68
AD
2703 break;
2704
dd875058 2705 case 99:
45319f13 2706/* Line 1413 of yacc.c */
b143f404 2707#line 619 "src/parse-gram.y"
cf499cff 2708 { (yyval.chars) = (yyvsp[0].uniqstr); }
45319f13 2709/* Line 1413 of yacc.c */
b143f404 2710#line 2711 "src/parse-gram.c"
cf499cff
JD
2711 break;
2712
dd875058 2713 case 101:
45319f13 2714/* Line 1413 of yacc.c */
b143f404 2715#line 630 "src/parse-gram.y"
2ce4ed68 2716 {
7c0c6181 2717 code_props plain_code;
e3dda35c
AD
2718 (yyvsp[0].code)[strlen ((yyvsp[0].code)) - 1] = '\n';
2719 code_props_plain_init (&plain_code, (yyvsp[0].code)+1, (yylsp[0]));
7c0c6181
JD
2720 code_props_translate_code (&plain_code);
2721 gram_scanner_last_string_free ();
2722 (yyval.chars) = plain_code.code;
2ce4ed68 2723 }
45319f13 2724/* Line 1413 of yacc.c */
b143f404 2725#line 2726 "src/parse-gram.c"
2ce4ed68
AD
2726 break;
2727
dd875058 2728 case 102:
45319f13 2729/* Line 1413 of yacc.c */
b143f404 2730#line 650 "src/parse-gram.y"
e3dda35c 2731 { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
45319f13 2732/* Line 1413 of yacc.c */
b143f404 2733#line 2734 "src/parse-gram.c"
916708d5
AD
2734 break;
2735
dd875058 2736 case 103:
45319f13 2737/* Line 1413 of yacc.c */
b143f404 2738#line 652 "src/parse-gram.y"
d2a1a60a 2739 {
e3dda35c
AD
2740 (yyval.symbol) = symbol_get (char_name ((yyvsp[0].character)), (yylsp[0]));
2741 symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]), false);
2742 symbol_user_token_number_set ((yyval.symbol), (yyvsp[0].character), (yylsp[0]));
d2a1a60a 2743 }
45319f13 2744/* Line 1413 of yacc.c */
b143f404 2745#line 2746 "src/parse-gram.c"
66ef8b9d
PE
2746 break;
2747
dd875058 2748 case 104:
45319f13 2749/* Line 1413 of yacc.c */
b143f404 2750#line 660 "src/parse-gram.y"
e3dda35c 2751 { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[0].uniqstr), (yylsp[0])); }
45319f13 2752/* Line 1413 of yacc.c */
b143f404 2753#line 2754 "src/parse-gram.c"
58d7a1a1
AD
2754 break;
2755
dd875058 2756 case 107:
45319f13 2757/* Line 1413 of yacc.c */
b143f404 2758#line 672 "src/parse-gram.y"
1921f1d7 2759 {
e3dda35c
AD
2760 (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[0].chars)), (yylsp[0]));
2761 symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]), false);
4cdb01db 2762 }
45319f13 2763/* Line 1413 of yacc.c */
b143f404 2764#line 2765 "src/parse-gram.c"
e9955c83 2765 break;
1921f1d7 2766
dd875058 2767 case 109:
45319f13 2768/* Line 1413 of yacc.c */
b143f404 2769#line 681 "src/parse-gram.y"
1921f1d7 2770 {
7c0c6181 2771 code_props plain_code;
e3dda35c 2772 code_props_plain_init (&plain_code, (yyvsp[0].chars), (yylsp[0]));
7c0c6181 2773 code_props_translate_code (&plain_code);
e9071366 2774 gram_scanner_last_string_free ();
e3dda35c 2775 muscle_code_grow ("epilogue", plain_code.code, (yylsp[0]));
7c0c6181 2776 code_scanner_last_string_free ();
4cdb01db 2777 }
45319f13 2778/* Line 1413 of yacc.c */
b143f404 2779#line 2780 "src/parse-gram.c"
e9955c83
AD
2780 break;
2781
2782
45319f13 2783/* Line 1413 of yacc.c */
b143f404 2784#line 2785 "src/parse-gram.c"
e1054895 2785 default: break;
1921f1d7 2786 }
66809587 2787 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1921f1d7 2788
3b0ffc7e
PE
2789 YYPOPSTACK (yylen);
2790 yylen = 0;
05d18c24 2791 YY_STACK_PRINT (yyss, yyssp);
e9955c83
AD
2792
2793 *++yyvsp = yyval;
e9955c83 2794 *++yylsp = yyloc;
e9955c83
AD
2795
2796 /* Now `shift' the result of the reduction. Determine what state
2797 that goes to, based on the state we popped back to and the rule
2798 number reduced by. */
2799
2800 yyn = yyr1[yyn];
2801
1921f1d7 2802 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
219741d8 2803 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
e9955c83
AD
2804 yystate = yytable[yystate];
2805 else
1921f1d7 2806 yystate = yydefgoto[yyn - YYNTOKENS];
e9955c83
AD
2807
2808 goto yynewstate;
2809
2810
2811/*------------------------------------.
2812| yyerrlab -- here on detecting error |
2813`------------------------------------*/
2814yyerrlab:
2815 /* If not already recovering from an error, report this error. */
2816 if (!yyerrstatus)
2817 {
2818 ++yynerrs;
2abdfeef
PE
2819#if ! YYERROR_VERBOSE
2820 yyerror (YY_("syntax error"));
2821#else
45319f13
JD
2822 while (1)
2823 {
2824 int yysyntax_error_status =
2825 yysyntax_error (&yymsg_alloc, &yymsg, yystate, yytoken);
2826 if (yysyntax_error_status == 2 && 0 < yymsg_alloc)
2827 {
2828 if (yymsg != yymsgbuf)
2829 YYSTACK_FREE (yymsg);
2830 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
2831 if (yymsg)
2832 continue;
2833 yymsg = yymsgbuf;
2834 yymsg_alloc = sizeof yymsgbuf;
2835 }
2836 if (yysyntax_error_status == 0)
2837 yyerror (yymsg);
2838 else
2839 yyerror (YY_("syntax error"));
2840 if (yysyntax_error_status == 2)
2841 goto yyexhaustedlab;
2842 break;
2843 }
2abdfeef 2844#endif
e9955c83 2845 }
e9955c83 2846
8a8dc872 2847 yyerror_range[0] = yylloc;
78a00b7d 2848
e9955c83
AD
2849 if (yyerrstatus == 3)
2850 {
9bc0dd67 2851 /* If just tried and failed to reuse lookahead token after an
e9955c83
AD
2852 error, discard it. */
2853
465b4444 2854 if (yychar <= YYEOF)
bf8b3d98 2855 {
d11e0cfa 2856 /* Return failure if at end of input. */
465b4444 2857 if (yychar == YYEOF)
7768896a 2858 YYABORT;
bf8b3d98 2859 }
465b4444
PE
2860 else
2861 {
4b367315 2862 yydestruct ("Error: discarding",
bf8b3d98 2863 yytoken, &yylval, &yylloc);
465b4444 2864 yychar = YYEMPTY;
465b4444 2865 }
e9955c83
AD
2866 }
2867
9bc0dd67 2868 /* Else will try to reuse lookahead token after shifting the error
e9955c83 2869 token. */
6d5aa694 2870 goto yyerrlab1;
e9955c83 2871
05d18c24 2872
465b4444
PE
2873/*---------------------------------------------------.
2874| yyerrorlab -- error raised explicitly by YYERROR. |
2875`---------------------------------------------------*/
2876yyerrorlab:
2877
e1054895
PE
2878 /* Pacify compilers like GCC when the user code never invokes
2879 YYERROR and the label yyerrorlab therefore never appears in user
2880 code. */
e764d4df 2881 if (/*CONSTCOND*/ 0)
465b4444 2882 goto yyerrorlab;
465b4444 2883
8a8dc872 2884 yyerror_range[0] = yylsp[1-yylen];
3b0ffc7e
PE
2885 /* Do not reclaim the symbols of the rule which action triggered
2886 this YYERROR. */
2887 YYPOPSTACK (yylen);
2888 yylen = 0;
2889 YY_STACK_PRINT (yyss, yyssp);
465b4444 2890 yystate = *yyssp;
465b4444
PE
2891 goto yyerrlab1;
2892
2893
2894/*-------------------------------------------------------------.
2895| yyerrlab1 -- common code for both syntax error and YYERROR. |
2896`-------------------------------------------------------------*/
05d18c24 2897yyerrlab1:
1921f1d7 2898 yyerrstatus = 3; /* Each real token shifted decrements this. */
e9955c83 2899
1921f1d7
AD
2900 for (;;)
2901 {
2902 yyn = yypact[yystate];
f2b30bdf 2903 if (!yypact_value_is_default (yyn))
1921f1d7
AD
2904 {
2905 yyn += YYTERROR;
2906 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2907 {
2908 yyn = yytable[yyn];
2909 if (0 < yyn)
2910 break;
2911 }
2912 }
4cdb01db 2913
1921f1d7
AD
2914 /* Pop the current state because it cannot handle the error token. */
2915 if (yyssp == yyss)
2916 YYABORT;
0c15323d 2917
8a8dc872 2918 yyerror_range[0] = *yylsp;
4b367315 2919 yydestruct ("Error: popping",
bf8b3d98 2920 yystos[yystate], yyvsp, yylsp);
3b0ffc7e 2921 YYPOPSTACK (1);
465b4444 2922 yystate = *yyssp;
05d18c24 2923 YY_STACK_PRINT (yyss, yyssp);
e9955c83
AD
2924 }
2925
e9955c83 2926 *++yyvsp = yylval;
8a8dc872
AD
2927
2928 yyerror_range[1] = yylloc;
2929 /* Using YYLLOC is tempting, but would change the location of
9bc0dd67 2930 the lookahead. YYLOC is available though. */
bf8b3d98 2931 YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
78a00b7d 2932 *++yylsp = yyloc;
e9955c83 2933
3b0ffc7e 2934 /* Shift the error token. */
6088a2a0 2935 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8a8dc872 2936
e9955c83
AD
2937 yystate = yyn;
2938 goto yynewstate;
2939
2940
2941/*-------------------------------------.
2942| yyacceptlab -- YYACCEPT comes here. |
2943`-------------------------------------*/
2944yyacceptlab:
2945 yyresult = 0;
2946 goto yyreturn;
2947
2948/*-----------------------------------.
2949| yyabortlab -- YYABORT comes here. |
2950`-----------------------------------*/
2951yyabortlab:
2952 yyresult = 1;
2953 goto yyreturn;
2954
f16b0819 2955#if !defined(yyoverflow) || YYERROR_VERBOSE
6088a2a0
PE
2956/*-------------------------------------------------.
2957| yyexhaustedlab -- memory exhaustion comes here. |
2958`-------------------------------------------------*/
2959yyexhaustedlab:
2960 yyerror (YY_("memory exhausted"));
e9955c83
AD
2961 yyresult = 2;
2962 /* Fall through. */
366eea36 2963#endif
e9955c83
AD
2964
2965yyreturn:
ec5479ce 2966 if (yychar != YYEMPTY)
ec5d1a8a 2967 yydestruct ("Cleanup: discarding lookahead",
bd134904 2968 yytoken, &yylval, &yylloc);
3b0ffc7e
PE
2969 /* Do not reclaim the symbols of the rule which action triggered
2970 this YYABORT or YYACCEPT. */
2971 YYPOPSTACK (yylen);
2972 YY_STACK_PRINT (yyss, yyssp);
d11e0cfa
PE
2973 while (yyssp != yyss)
2974 {
ec5d1a8a 2975 yydestruct ("Cleanup: popping",
d11e0cfa 2976 yystos[*yyssp], yyvsp, yylsp);
3b0ffc7e 2977 YYPOPSTACK (1);
d11e0cfa 2978 }
e9955c83
AD
2979#ifndef yyoverflow
2980 if (yyss != yyssa)
2981 YYSTACK_FREE (yyss);
2abdfeef
PE
2982#endif
2983#if YYERROR_VERBOSE
2984 if (yymsg != yymsgbuf)
2985 YYSTACK_FREE (yymsg);
e9955c83 2986#endif
d2a1a60a
PE
2987 /* Make sure YYID is used. */
2988 return YYID (yyresult);
e9955c83 2989}
1921f1d7 2990
45319f13 2991/* Line 1623 of yacc.c */
b143f404 2992#line 691 "src/parse-gram.y"
05d18c24
PE
2993
2994
2995
2996/* Return the location of the left-hand side of a rule whose
2997 right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
2998 the right-hand side, and return an empty location equal to the end
2999 boundary of RHS[0] if the right-hand side is empty. */
3000
3001static YYLTYPE
3002lloc_default (YYLTYPE const *rhs, int n)
3003{
3004 int i;
1d64f0ba 3005 YYLTYPE loc;
329d23c5
PE
3006
3007 /* SGI MIPSpro 7.4.1m miscompiles "loc.start = loc.end = rhs[n].end;".
3008 The bug is fixed in 7.4.2m, but play it safe for now. */
3009 loc.start = rhs[n].end;
3010 loc.end = rhs[n].end;
05d18c24 3011
73521d9f
PE
3012 /* Ignore empty nonterminals the start of the the right-hand side.
3013 Do not bother to ignore them at the end of the right-hand side,
3014 since empty nonterminals have the same end as their predecessors. */
05d18c24
PE
3015 for (i = 1; i <= n; i++)
3016 if (! equal_boundaries (rhs[i].start, rhs[i].end))
3017 {
1d64f0ba 3018 loc.start = rhs[i].start;
05d18c24
PE
3019 break;
3020 }
3021
1d64f0ba 3022 return loc;
05d18c24
PE
3023}
3024
3025
05d18c24 3026static void
b18cdd91 3027add_param (param_type type, char *decl, location loc)
05d18c24 3028{
8a8dc872 3029 static char const alphanum[26 + 26 + 1 + 10] =
05d18c24
PE
3030 "abcdefghijklmnopqrstuvwxyz"
3031 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
8a8dc872
AD
3032 "_"
3033 "0123456789";
dd875058 3034
05d18c24 3035 char const *name_start = NULL;
dd875058
AD
3036 {
3037 char *p;
3038 /* Stop on last actual character. */
3039 for (p = decl; p[1]; p++)
3040 if ((p == decl
3041 || ! memchr (alphanum, p[-1], sizeof alphanum))
3042 && memchr (alphanum, p[0], sizeof alphanum - 10))
3043 name_start = p;
3044
3045 /* Strip the surrounding '{' and '}', and any blanks just inside
3046 the braces. */
3047 while (*--p == ' ' || *p == '\t')
3048 continue;
3049 p[1] = '\0';
3050 while (*++decl == ' ' || *decl == '\t')
3051 continue;
3052 }
73521d9f 3053
05d18c24
PE
3054 if (! name_start)
3055 complain_at (loc, _("missing identifier in parameter declaration"));
3056 else
3057 {
3058 char *name;
3059 size_t name_len;
3060
3061 for (name_len = 1;
8a8dc872 3062 memchr (alphanum, name_start[name_len], sizeof alphanum);
05d18c24
PE
3063 name_len++)
3064 continue;
3065
3066 name = xmalloc (name_len + 1);
3067 memcpy (name, name_start, name_len);
3068 name[name_len] = '\0';
b18cdd91
AD
3069 if (type & param_lex)
3070 muscle_pair_list_grow ("lex_param", decl, name);
3071 if (type & param_parse)
3072 muscle_pair_list_grow ("parse_param", decl, name);
05d18c24
PE
3073 free (name);
3074 }
3075
e9071366 3076 gram_scanner_last_string_free ();
05d18c24 3077}
e9955c83 3078
2ce4ed68 3079
b50d2359
AD
3080static void
3081version_check (location const *loc, char const *version)
3082{
3083 if (strverscmp (version, PACKAGE_VERSION) > 0)
9b8a5ce0
AD
3084 {
3085 complain_at (*loc, "require bison %s, but have %s",
3086 version, PACKAGE_VERSION);
3087 exit (63);
3088 }
b50d2359
AD
3089}
3090
05d18c24
PE
3091static void
3092gram_error (location const *loc, char const *msg)
e9955c83 3093{
05d18c24 3094 complain_at (*loc, "%s", msg);
e9955c83 3095}
1921f1d7 3096
73521d9f
PE
3097char const *
3098token_name (int type)
3099{
e0045d49 3100 return yytname[YYTRANSLATE (type)];
73521d9f
PE
3101}
3102
d2a1a60a
PE
3103static char const *
3104char_name (char c)
3105{
3106 if (c == '\'')
3107 return "'\\''";
3108 else
3109 {
3110 char buf[4];
3111 buf[0] = '\''; buf[1] = c; buf[2] = '\''; buf[3] = '\0';
3112 return quotearg_style (escape_quoting_style, buf);
3113 }
3114}