]> git.saurik.com Git - bison.git/blame - src/parse-gram.c
* data/glr.c (yyreturn): Use "Cleanup:" rather than "Error:"
[bison.git] / src / parse-gram.c
CommitLineData
19e251af 1/* A Bison parser, made by GNU Bison 2.0c. */
e9955c83 2
c76e14da 3/* Skeleton parser for Yacc-like parsing with Bison,
bd134904 4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
1921f1d7
AD
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
0fb669f9
PE
18 Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA. */
1921f1d7
AD
20
21/* As a special exception, when this file is copied by Bison into a
22 Bison output file, you may use that output file without restriction.
23 This special exception was added by the Free Software Foundation
24 in version 1.24 of Bison. */
25
c76e14da
AD
26/* Written by Richard Stallman by simplifying the original so called
27 ``semantic'' parser. */
1921f1d7
AD
28
29/* All symbols defined below should begin with yy or YY, to avoid
30 infringing on user name space. This should be done even for local
31 variables, as they might otherwise be expanded by user macros.
32 There are some unavoidable exceptions within include files to
33 define necessary library symbols; they are noted "INFRINGES ON
34 USER NAME SPACE" below. */
35
36/* Identify Bison output. */
62ddaef6
PE
37#define YYBISON 1
38
39/* Skeleton name. */
40#define YYSKELETON_NAME "yacc.c"
1921f1d7
AD
41
42/* Pure parsers. */
62ddaef6 43#define YYPURE 1
1921f1d7
AD
44
45/* Using locations. */
46#define YYLSP_NEEDED 1
e96c9728 47
76dcf299 48/* Substitute the variable and function names. */
e9955c83 49#define yyparse gram_parse
1921f1d7 50#define yylex gram_lex
e9955c83 51#define yyerror gram_error
1921f1d7
AD
52#define yylval gram_lval
53#define yychar gram_char
e9955c83
AD
54#define yydebug gram_debug
55#define yynerrs gram_nerrs
366eea36 56#define yylloc gram_lloc
e9955c83 57
ae7453f2
AD
58/* Tokens. */
59#ifndef YYTOKENTYPE
60# define YYTOKENTYPE
61 /* Put the tokens into the symbol table, so that GDB and other debuggers
62 know about them. */
63 enum yytokentype {
64 GRAM_EOF = 0,
65 STRING = 258,
62ddaef6
PE
66 INT = 259,
67 PERCENT_TOKEN = 260,
68 PERCENT_NTERM = 261,
69 PERCENT_TYPE = 262,
70 PERCENT_DESTRUCTOR = 263,
71 PERCENT_PRINTER = 264,
72 PERCENT_UNION = 265,
73 PERCENT_LEFT = 266,
74 PERCENT_RIGHT = 267,
75 PERCENT_NONASSOC = 268,
76 PERCENT_PREC = 269,
77 PERCENT_DPREC = 270,
78 PERCENT_MERGE = 271,
79 PERCENT_DEBUG = 272,
92f5e991
AD
80 PERCENT_DEFAULT_PREC = 273,
81 PERCENT_DEFINE = 274,
82 PERCENT_DEFINES = 275,
83 PERCENT_ERROR_VERBOSE = 276,
84 PERCENT_EXPECT = 277,
d6328241
PH
85 PERCENT_EXPECT_RR = 278,
86 PERCENT_FILE_PREFIX = 279,
87 PERCENT_GLR_PARSER = 280,
88 PERCENT_INITIAL_ACTION = 281,
89 PERCENT_LEX_PARAM = 282,
90 PERCENT_LOCATIONS = 283,
91 PERCENT_NAME_PREFIX = 284,
92 PERCENT_NO_DEFAULT_PREC = 285,
93 PERCENT_NO_LINES = 286,
94 PERCENT_NONDETERMINISTIC_PARSER = 287,
95 PERCENT_OUTPUT = 288,
96 PERCENT_PARSE_PARAM = 289,
97 PERCENT_PURE_PARSER = 290,
98 PERCENT_SKELETON = 291,
99 PERCENT_START = 292,
100 PERCENT_TOKEN_TABLE = 293,
101 PERCENT_VERBOSE = 294,
102 PERCENT_YACC = 295,
103 TYPE = 296,
104 EQUAL = 297,
105 SEMICOLON = 298,
106 PIPE = 299,
107 ID = 300,
108 ID_COLON = 301,
109 PERCENT_PERCENT = 302,
110 PROLOGUE = 303,
111 EPILOGUE = 304,
112 BRACED_CODE = 305
ae7453f2
AD
113 };
114#endif
115#define GRAM_EOF 0
116#define STRING 258
62ddaef6
PE
117#define INT 259
118#define PERCENT_TOKEN 260
119#define PERCENT_NTERM 261
120#define PERCENT_TYPE 262
121#define PERCENT_DESTRUCTOR 263
122#define PERCENT_PRINTER 264
123#define PERCENT_UNION 265
124#define PERCENT_LEFT 266
125#define PERCENT_RIGHT 267
126#define PERCENT_NONASSOC 268
127#define PERCENT_PREC 269
128#define PERCENT_DPREC 270
129#define PERCENT_MERGE 271
130#define PERCENT_DEBUG 272
92f5e991
AD
131#define PERCENT_DEFAULT_PREC 273
132#define PERCENT_DEFINE 274
133#define PERCENT_DEFINES 275
134#define PERCENT_ERROR_VERBOSE 276
135#define PERCENT_EXPECT 277
d6328241
PH
136#define PERCENT_EXPECT_RR 278
137#define PERCENT_FILE_PREFIX 279
138#define PERCENT_GLR_PARSER 280
139#define PERCENT_INITIAL_ACTION 281
140#define PERCENT_LEX_PARAM 282
141#define PERCENT_LOCATIONS 283
142#define PERCENT_NAME_PREFIX 284
143#define PERCENT_NO_DEFAULT_PREC 285
144#define PERCENT_NO_LINES 286
145#define PERCENT_NONDETERMINISTIC_PARSER 287
146#define PERCENT_OUTPUT 288
147#define PERCENT_PARSE_PARAM 289
148#define PERCENT_PURE_PARSER 290
149#define PERCENT_SKELETON 291
150#define PERCENT_START 292
151#define PERCENT_TOKEN_TABLE 293
152#define PERCENT_VERBOSE 294
153#define PERCENT_YACC 295
154#define TYPE 296
155#define EQUAL 297
156#define SEMICOLON 298
157#define PIPE 299
158#define ID 300
159#define ID_COLON 301
160#define PERCENT_PERCENT 302
161#define PROLOGUE 303
162#define EPILOGUE 304
163#define BRACED_CODE 305
ae7453f2
AD
164
165
166
167
1921f1d7 168/* Copy the first part of user declarations. */
6088a2a0 169#line 1 "parse-gram.y"
a76ca263
PE
170/* Bison Grammar Parser -*- C -*-
171
2ce37586 172 Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
a76ca263
PE
173
174 This file is part of Bison, the GNU Compiler Compiler.
175
176 This program is free software; you can redistribute it and/or modify
177 it under the terms of the GNU General Public License as published by
178 the Free Software Foundation; either version 2 of the License, or
179 (at your option) any later version.
180
181 This program is distributed in the hope that it will be useful,
182 but WITHOUT ANY WARRANTY; without even the implied warranty of
183 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
184 GNU General Public License for more details.
185
186 You should have received a copy of the GNU General Public License
187 along with this program; if not, write to the Free Software
0fb669f9
PE
188 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
189 02110-1301 USA
a76ca263 190*/
e9955c83
AD
191
192#include "system.h"
05d18c24 193
b275314e 194#include "complain.h"
05d18c24 195#include "conflicts.h"
e9955c83
AD
196#include "files.h"
197#include "getargs.h"
e9955c83 198#include "gram.h"
05d18c24
PE
199#include "muscle_tab.h"
200#include "output.h"
2ce37586 201#include "quotearg.h"
e9955c83 202#include "reader.h"
05d18c24 203#include "symlist.h"
e9955c83 204
05d18c24
PE
205#define YYLLOC_DEFAULT(Current, Rhs, N) (Current) = lloc_default (Rhs, N)
206static YYLTYPE lloc_default (YYLTYPE const *, int);
e9955c83 207
8a8dc872
AD
208#define YY_LOCATION_PRINT(File, Loc) \
209 location_print (File, Loc)
210
f0616f0b 211/* Request detailed syntax error messages, and pass them to GRAM_ERROR.
05d18c24 212 FIXME: depends on the undocumented availability of YYLLOC. */
e9955c83
AD
213#undef yyerror
214#define yyerror(Msg) \
fc5734fe 215 gram_error (&yylloc, Msg)
05d18c24 216static void gram_error (location const *, char const *);
e9955c83 217
73521d9f 218static void add_param (char const *, char *, location);
e9955c83 219
5f3df396
PE
220static symbol_class current_class = unknown_sym;
221static uniqstr current_type = 0;
05d18c24
PE
222symbol *current_lhs;
223location current_lhs_location;
224assoc current_assoc;
5f3df396 225static int current_prec = 0;
e9955c83 226
1921f1d7 227
1921f1d7
AD
228/* Enabling traces. */
229#ifndef YYDEBUG
230# define YYDEBUG 1
231#endif
232
233/* Enabling verbose error messages. */
234#ifdef YYERROR_VERBOSE
235# undef YYERROR_VERBOSE
236# define YYERROR_VERBOSE 1
237#else
cd3684cf 238# define YYERROR_VERBOSE 1
1921f1d7
AD
239#endif
240
5f3df396
PE
241/* Enabling the token table. */
242#ifndef YYTOKEN_TABLE
243# define YYTOKEN_TABLE 0
244#endif
245
73521d9f 246#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
6088a2a0 247#line 79 "parse-gram.y"
73521d9f 248typedef union YYSTYPE {
05d18c24
PE
249 symbol *symbol;
250 symbol_list *list;
e9955c83 251 int integer;
05d18c24
PE
252 char *chars;
253 assoc assoc;
254 uniqstr uniqstr;
73521d9f 255} YYSTYPE;
5f3df396
PE
256/* Line 196 of yacc.c. */
257#line 258 "parse-gram.c"
73521d9f
PE
258# define yystype YYSTYPE /* obsolescent; will be withdrawn */
259# define YYSTYPE_IS_DECLARED 1
e9955c83
AD
260# define YYSTYPE_IS_TRIVIAL 1
261#endif
262
73521d9f
PE
263#if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
264typedef struct YYLTYPE
e9955c83
AD
265{
266 int first_line;
267 int first_column;
268 int last_line;
269 int last_column;
73521d9f
PE
270} YYLTYPE;
271# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
272# define YYLTYPE_IS_DECLARED 1
e9955c83
AD
273# define YYLTYPE_IS_TRIVIAL 1
274#endif
275
73521d9f 276
1921f1d7 277/* Copy the second part of user declarations. */
0c15323d 278
0c15323d 279
5f3df396
PE
280/* Line 219 of yacc.c. */
281#line 282 "parse-gram.c"
0c15323d 282
4b43d402
PE
283#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
284# define YYSIZE_T __SIZE_TYPE__
285#endif
286#if ! defined (YYSIZE_T) && defined (size_t)
287# define YYSIZE_T size_t
288#endif
289#if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
290# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
291# define YYSIZE_T size_t
292#endif
293#if ! defined (YYSIZE_T)
294# define YYSIZE_T unsigned int
295#endif
e9955c83 296
6088a2a0
PE
297#ifndef YY_
298# if YYENABLE_NLS
299# if ENABLE_NLS
300# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
301# define YY_(msgid) dgettext ("bison-runtime", msgid)
302# endif
303# endif
304# ifndef YY_
305# define YY_(msgid) msgid
306# endif
307#endif
308
4b43d402 309#if ! defined (yyoverflow) || YYERROR_VERBOSE
cd3684cf 310
e9955c83
AD
311/* The parser invokes alloca or malloc; define the necessary symbols. */
312
eae34f44
PE
313# ifdef YYSTACK_USE_ALLOCA
314# if YYSTACK_USE_ALLOCA
eae34f44
PE
315# ifdef __GNUC__
316# define YYSTACK_ALLOC __builtin_alloca
da436e43
PE
317# else
318# define YYSTACK_ALLOC alloca
4b43d402
PE
319# if defined (__STDC__) || defined (__cplusplus)
320# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
321# define YYINCLUDED_STDLIB_H
322# endif
e9955c83
AD
323# endif
324# endif
325# endif
326
327# ifdef YYSTACK_ALLOC
328 /* Pacify GCC's `empty if-body' warning. */
329# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
2ce37586 330# ifndef YYSTACK_ALLOC_MAXIMUM
7768896a
PE
331 /* The OS might guarantee only one guard page at the bottom of the stack,
332 and a page size can be as small as 4096 bytes. So we cannot safely
333 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
334 to allow for a few compiler-allocated temporary stack slots. */
2ce37586
PE
335# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
336# endif
e9955c83 337# else
cd3684cf
AD
338# define YYSTACK_ALLOC YYMALLOC
339# define YYSTACK_FREE YYFREE
2ce37586
PE
340# ifndef YYSTACK_ALLOC_MAXIMUM
341# define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
342# endif
0925ebb4
PE
343# ifdef __cplusplus
344extern "C" {
345# endif
4b43d402
PE
346# ifndef YYMALLOC
347# define YYMALLOC malloc
348# if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
349 && (defined (__STDC__) || defined (__cplusplus)))
350void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
351# endif
352# endif
353# ifndef YYFREE
354# define YYFREE free
355# if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
356 && (defined (__STDC__) || defined (__cplusplus)))
357void free (void *); /* INFRINGES ON USER NAME SPACE */
358# endif
359# endif
0925ebb4
PE
360# ifdef __cplusplus
361}
362# endif
e9955c83 363# endif
1921f1d7 364#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
e9955c83
AD
365
366
367#if (! defined (yyoverflow) \
368 && (! defined (__cplusplus) \
465b4444
PE
369 || (defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
370 && defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
e9955c83
AD
371
372/* A type that is properly aligned for any stack member. */
373union yyalloc
374{
584bbcd8 375 short int yyss;
e9955c83 376 YYSTYPE yyvs;
366eea36 377 YYLTYPE yyls;
e9955c83
AD
378};
379
380/* The size of the maximum gap between one aligned stack and the next. */
05d18c24 381# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
e9955c83
AD
382
383/* The size of an array large to enough to hold all stacks, each with
384 N elements. */
366eea36 385# define YYSTACK_BYTES(N) \
584bbcd8 386 ((N) * (sizeof (short int) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
05d18c24 387 + 2 * YYSTACK_GAP_MAXIMUM)
e9955c83
AD
388
389/* Copy COUNT objects from FROM to TO. The source and destination do
390 not overlap. */
391# ifndef YYCOPY
465b4444 392# if defined (__GNUC__) && 1 < __GNUC__
e9955c83
AD
393# define YYCOPY(To, From, Count) \
394 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
395# else
396# define YYCOPY(To, From, Count) \
397 do \
398 { \
b4fb989f 399 YYSIZE_T yyi; \
e9955c83 400 for (yyi = 0; yyi < (Count); yyi++) \
f0616f0b 401 (To)[yyi] = (From)[yyi]; \
e9955c83
AD
402 } \
403 while (0)
404# endif
405# endif
406
407/* Relocate STACK from its old location to the new one. The
408 local variables YYSIZE and YYSTACKSIZE give the old and new number of
409 elements in the stack, and YYPTR gives the new location of the
410 stack. Advance YYPTR to a properly aligned location for the next
411 stack. */
412# define YYSTACK_RELOCATE(Stack) \
413 do \
414 { \
415 YYSIZE_T yynewbytes; \
416 YYCOPY (&yyptr->Stack, Stack, yysize); \
417 Stack = &yyptr->Stack; \
05d18c24 418 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
e9955c83
AD
419 yyptr += yynewbytes / sizeof (*yyptr); \
420 } \
421 while (0)
422
423#endif
424
ae7453f2
AD
425#if defined (__STDC__) || defined (__cplusplus)
426 typedef signed char yysigned_char;
427#else
584bbcd8 428 typedef short int yysigned_char;
ae7453f2
AD
429#endif
430
1921f1d7
AD
431/* YYFINAL -- State number of the termination state. */
432#define YYFINAL 3
d33cb3ae 433/* YYLAST -- Last index in YYTABLE. */
d6328241 434#define YYLAST 158
1921f1d7
AD
435
436/* YYNTOKENS -- Number of terminals. */
d6328241 437#define YYNTOKENS 51
1921f1d7 438/* YYNNTS -- Number of nonterminals. */
73521d9f 439#define YYNNTS 25
1921f1d7 440/* YYNRULES -- Number of rules. */
d6328241 441#define YYNRULES 79
1921f1d7 442/* YYNRULES -- Number of states. */
d6328241 443#define YYNSTATES 108
1921f1d7
AD
444
445/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
446#define YYUNDEFTOK 2
d6328241 447#define YYMAXUTOK 305
1921f1d7 448
5f3df396 449#define YYTRANSLATE(YYX) \
73521d9f 450 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1921f1d7
AD
451
452/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
453static const unsigned char yytranslate[] =
454{
455 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
456 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
457 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
458 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
459 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
460 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
461 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
462 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
463 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
464 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
465 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
466 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
467 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
468 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
469 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
470 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
471 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
472 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
473 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
474 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
475 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
476 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
477 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
478 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
479 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
480 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
481 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
482 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
483 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
ae7453f2 484 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
d6328241 485 45, 46, 47, 48, 49, 50
1921f1d7
AD
486};
487
488#if YYDEBUG
489/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
490 YYRHS. */
491static const unsigned char yyprhs[] =
492{
05d18c24 493 0, 0, 3, 8, 9, 12, 14, 16, 18, 22,
d6328241
PH
494 24, 26, 29, 32, 36, 38, 40, 42, 44, 48,
495 50, 52, 56, 58, 60, 63, 65, 67, 69, 71,
496 73, 75, 78, 80, 83, 86, 88, 90, 91, 95,
497 96, 100, 104, 108, 110, 112, 114, 115, 117, 119,
498 122, 124, 126, 129, 132, 136, 138, 141, 143, 146,
499 148, 151, 154, 155, 159, 161, 165, 168, 169, 172,
500 175, 179, 183, 187, 189, 191, 193, 195, 197, 198
1921f1d7
AD
501};
502
503/* YYRHS -- A `-1'-separated list of the rules' RHS. */
ae7453f2 504static const yysigned_char yyrhs[] =
1921f1d7 505{
d6328241
PH
506 52, 0, -1, 53, 47, 65, 75, -1, -1, 53,
507 54, -1, 55, -1, 48, -1, 17, -1, 19, 74,
508 74, -1, 20, -1, 21, -1, 22, 4, -1, 23,
509 4, -1, 24, 42, 74, -1, 25, -1, 26, -1,
510 27, -1, 28, -1, 29, 42, 74, -1, 31, -1,
511 32, -1, 33, 42, 74, -1, 34, -1, 35, -1,
512 36, 74, -1, 38, -1, 39, -1, 40, -1, 43,
513 -1, 59, -1, 56, -1, 37, 71, -1, 10, -1,
514 8, 62, -1, 9, 62, -1, 18, -1, 30, -1,
515 -1, 6, 57, 64, -1, -1, 5, 58, 64, -1,
516 7, 41, 62, -1, 60, 61, 62, -1, 11, -1,
517 12, -1, 13, -1, -1, 41, -1, 71, -1, 62,
518 71, -1, 41, -1, 45, -1, 45, 4, -1, 45,
519 73, -1, 45, 4, 73, -1, 63, -1, 64, 63,
520 -1, 66, -1, 65, 66, -1, 67, -1, 55, 43,
521 -1, 1, 43, -1, -1, 46, 68, 69, -1, 70,
522 -1, 69, 44, 70, -1, 69, 43, -1, -1, 70,
523 71, -1, 70, 72, -1, 70, 14, 71, -1, 70,
524 15, 4, -1, 70, 16, 41, -1, 45, -1, 73,
525 -1, 50, -1, 3, -1, 3, -1, -1, 47, 49,
526 -1
1921f1d7
AD
527};
528
529/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
584bbcd8 530static const unsigned short int yyrline[] =
1921f1d7 531{
82b248ad
AD
532 0, 188, 188, 196, 198, 202, 203, 204, 205, 206,
533 207, 208, 209, 210, 211, 216, 220, 221, 222, 223,
534 224, 225, 226, 227, 228, 229, 230, 231, 232, 236,
535 237, 238, 242, 248, 255, 262, 266, 273, 273, 278,
536 278, 283, 293, 308, 309, 310, 314, 315, 321, 322,
537 327, 331, 336, 342, 348, 359, 360, 369, 370, 376,
538 377, 382, 389, 389, 393, 394, 395, 400, 401, 403,
539 405, 407, 409, 414, 415, 419, 425, 434, 439, 441
1921f1d7
AD
540};
541#endif
542
5f3df396 543#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
9cbfdc9e 544/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1921f1d7
AD
545 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
546static const char *const yytname[] =
547{
9cbfdc9e
PE
548 "\"end of file\"", "error", "$undefined", "\"string\"", "\"integer\"",
549 "\"%token\"", "\"%nterm\"", "\"%type\"", "\"%destructor {...}\"",
550 "\"%printer {...}\"", "\"%union {...}\"", "\"%left\"", "\"%right\"",
551 "\"%nonassoc\"", "\"%prec\"", "\"%dprec\"", "\"%merge\"", "\"%debug\"",
552 "\"%default-prec\"", "\"%define\"", "\"%defines\"", "\"%error-verbose\"",
553 "\"%expect\"", "\"%expect-rr\"", "\"%file-prefix\"", "\"%glr-parser\"",
554 "\"%initial-action {...}\"", "\"%lex-param {...}\"", "\"%locations\"",
555 "\"%name-prefix\"", "\"%no-default-prec\"", "\"%no-lines\"",
556 "\"%nondeterministic-parser\"", "\"%output\"", "\"%parse-param {...}\"",
557 "\"%pure-parser\"", "\"%skeleton\"", "\"%start\"", "\"%token-table\"",
558 "\"%verbose\"", "\"%yacc\"", "\"type\"", "\"=\"", "\";\"", "\"|\"",
559 "\"identifier\"", "\"identifier:\"", "\"%%\"", "\"%{...%}\"",
560 "\"epilogue\"", "\"{...}\"", "$accept", "input", "declarations",
66ef8b9d
PE
561 "declaration", "grammar_declaration", "symbol_declaration", "@1", "@2",
562 "precedence_declaration", "precedence_declarator", "type.opt",
563 "symbols.1", "symbol_def", "symbol_defs.1", "grammar",
564 "rules_or_grammar_declaration", "rules", "@3", "rhses.1", "rhs",
565 "symbol", "action", "string_as_id", "string_content", "epilogue.opt", 0
1921f1d7
AD
566};
567#endif
568
3d38c03a 569# ifdef YYPRINT
1921f1d7
AD
570/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
571 token YYLEX-NUM. */
584bbcd8 572static const unsigned short int yytoknum[] =
1921f1d7
AD
573{
574 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
575 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
576 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
577 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
d6328241
PH
578 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
579 305
1921f1d7 580};
3d38c03a 581# endif
1921f1d7
AD
582
583/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
584static const unsigned char yyr1[] =
585{
d6328241
PH
586 0, 51, 52, 53, 53, 54, 54, 54, 54, 54,
587 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
588 54, 54, 54, 54, 54, 54, 54, 54, 54, 55,
589 55, 55, 55, 55, 55, 55, 55, 57, 56, 58,
590 56, 56, 59, 60, 60, 60, 61, 61, 62, 62,
591 63, 63, 63, 63, 63, 64, 64, 65, 65, 66,
592 66, 66, 68, 67, 69, 69, 69, 70, 70, 70,
593 70, 70, 70, 71, 71, 72, 73, 74, 75, 75
1921f1d7
AD
594};
595
596/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
597static const unsigned char yyr2[] =
598{
05d18c24 599 0, 2, 4, 0, 2, 1, 1, 1, 3, 1,
d6328241
PH
600 1, 2, 2, 3, 1, 1, 1, 1, 3, 1,
601 1, 3, 1, 1, 2, 1, 1, 1, 1, 1,
602 1, 2, 1, 2, 2, 1, 1, 0, 3, 0,
603 3, 3, 3, 1, 1, 1, 0, 1, 1, 2,
604 1, 1, 2, 2, 3, 1, 2, 1, 2, 1,
605 2, 2, 0, 3, 1, 3, 2, 0, 2, 2,
606 3, 3, 3, 1, 1, 1, 1, 1, 0, 2
1921f1d7
AD
607};
608
609/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
610 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
611 means the default is an error. */
04b6e11e 612static const unsigned char yydefact[] =
1921f1d7 613{
d6328241
PH
614 3, 0, 0, 1, 39, 37, 0, 0, 0, 32,
615 43, 44, 45, 7, 35, 0, 9, 10, 0, 0,
616 0, 14, 15, 16, 17, 0, 36, 19, 20, 0,
617 22, 23, 0, 0, 25, 26, 27, 28, 0, 6,
618 4, 5, 30, 29, 46, 0, 0, 0, 76, 73,
619 33, 48, 74, 34, 77, 0, 11, 12, 0, 0,
620 0, 24, 31, 0, 62, 0, 0, 57, 59, 47,
621 0, 50, 51, 55, 40, 38, 41, 49, 8, 13,
622 18, 21, 61, 67, 60, 0, 58, 2, 42, 52,
623 53, 56, 63, 64, 79, 54, 66, 67, 0, 0,
624 0, 75, 68, 69, 65, 70, 71, 72
1921f1d7
AD
625};
626
04b6e11e 627/* YYDEFGOTO[NTERM-NUM]. */
ae7453f2 628static const yysigned_char yydefgoto[] =
1921f1d7 629{
d6328241
PH
630 -1, 1, 2, 40, 65, 42, 46, 45, 43, 44,
631 70, 50, 73, 74, 66, 67, 68, 83, 92, 93,
632 51, 103, 52, 55, 87
1921f1d7
AD
633};
634
635/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
636 STATE-NUM. */
66ef8b9d 637#define YYPACT_NINF -67
ae7453f2 638static const yysigned_char yypact[] =
1921f1d7 639{
d6328241
PH
640 -67, 5, 110, -67, -67, -67, -34, 0, 0, -67,
641 -67, -67, -67, -67, -67, 13, -67, -67, 20, 31,
642 -17, -67, -67, -67, -67, -6, -67, -67, -67, -5,
643 -67, -67, 13, 0, -67, -67, -67, -67, 68, -67,
644 -67, -67, -67, -67, -3, -37, -37, 0, -67, -67,
645 0, -67, -67, 0, -67, 13, -67, -67, 13, 13,
646 13, -67, -67, -2, -67, 3, 21, -67, -67, -67,
647 0, -67, 6, -67, -37, -37, 0, -67, -67, -67,
648 -67, -67, -67, -67, -67, 1, -67, -67, 0, 39,
649 -67, -67, -32, -1, -67, -67, -67, -67, 0, 43,
650 7, -67, -67, -67, -1, -67, -67, -67
1921f1d7
AD
651};
652
653/* YYPGOTO[NTERM-NUM]. */
ae7453f2 654static const yysigned_char yypgoto[] =
1921f1d7 655{
d6328241
PH
656 -67, -67, -67, -67, 50, -67, -67, -67, -67, -67,
657 -67, -7, -56, 8, -67, -13, -67, -67, -67, -41,
658 -33, -67, -66, 29, -67
1921f1d7
AD
659};
660
661/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
662 positive, shift that token. If negative, reduce the rule which
ae7453f2 663 number is the opposite. If zero, do what YYDEFACT says.
f0616f0b 664 If YYTABLE_NINF, syntax error. */
d6328241 665#define YYTABLE_NINF -79
ae7453f2 666static const yysigned_char yytable[] =
1921f1d7 667{
d6328241
PH
668 62, 53, 48, 48, 71, 3, 90, 47, 72, 48,
669 89, 96, 97, 98, 99, 100, 54, 77, 91, 91,
670 77, -78, 63, 95, 56, 58, 4, 5, 6, 7,
671 8, 9, 10, 11, 12, 57, 59, 60, 69, 14,
672 76, 82, 48, 77, 49, 49, 84, 106, 107, 101,
673 94, 26, 41, 86, 75, 77, 104, 0, 33, 0,
674 102, 61, 0, 88, 0, 105, 0, 64, 85, 63,
675 0, 102, 0, 4, 5, 6, 7, 8, 9, 10,
676 11, 12, 0, 0, 78, 0, 14, 79, 80, 81,
677 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,
678 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
679 0, 0, 0, 0, 64, 4, 5, 6, 7, 8,
680 9, 10, 11, 12, 0, 0, 0, 13, 14, 15,
681 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
682 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
683 36, 0, 0, 37, 0, 0, 0, 38, 39
1921f1d7
AD
684};
685
ae7453f2 686static const yysigned_char yycheck[] =
1921f1d7 687{
d6328241
PH
688 33, 8, 3, 3, 41, 0, 72, 41, 45, 3,
689 4, 43, 44, 14, 15, 16, 3, 50, 74, 75,
690 53, 0, 1, 89, 4, 42, 5, 6, 7, 8,
691 9, 10, 11, 12, 13, 4, 42, 42, 41, 18,
692 47, 43, 3, 76, 45, 45, 43, 4, 41, 50,
693 49, 30, 2, 66, 46, 88, 97, -1, 37, -1,
694 93, 32, -1, 70, -1, 98, -1, 46, 47, 1,
695 -1, 104, -1, 5, 6, 7, 8, 9, 10, 11,
696 12, 13, -1, -1, 55, -1, 18, 58, 59, 60,
697 -1, -1, -1, -1, -1, -1, -1, -1, 30, -1,
698 -1, -1, -1, -1, -1, 37, -1, -1, -1, -1,
699 -1, -1, -1, -1, 46, 5, 6, 7, 8, 9,
700 10, 11, 12, 13, -1, -1, -1, 17, 18, 19,
701 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
702 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
703 40, -1, -1, 43, -1, -1, -1, 47, 48
1921f1d7
AD
704};
705
1921f1d7
AD
706/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
707 symbol of state STATE-NUM. */
708static const unsigned char yystos[] =
709{
d6328241 710 0, 52, 53, 0, 5, 6, 7, 8, 9, 10,
62ddaef6
PE
711 11, 12, 13, 17, 18, 19, 20, 21, 22, 23,
712 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
d6328241
PH
713 34, 35, 36, 37, 38, 39, 40, 43, 47, 48,
714 54, 55, 56, 59, 60, 58, 57, 41, 3, 45,
715 62, 71, 73, 62, 3, 74, 4, 4, 42, 42,
716 42, 74, 71, 1, 46, 55, 65, 66, 67, 41,
717 61, 41, 45, 63, 64, 64, 62, 71, 74, 74,
718 74, 74, 43, 68, 43, 47, 66, 75, 62, 4,
719 73, 63, 69, 70, 49, 73, 43, 44, 14, 15,
720 16, 50, 71, 72, 70, 71, 4, 41
1921f1d7 721};
e9955c83 722
e9955c83 723#define yyerrok (yyerrstatus = 0)
73521d9f
PE
724#define yyclearin (yychar = YYEMPTY)
725#define YYEMPTY (-2)
e9955c83 726#define YYEOF 0
1921f1d7 727
e9955c83 728#define YYACCEPT goto yyacceptlab
1921f1d7 729#define YYABORT goto yyabortlab
465b4444 730#define YYERROR goto yyerrorlab
6d5aa694 731
1921f1d7 732
e9955c83
AD
733/* Like YYERROR except do call yyerror. This remains here temporarily
734 to ease the transition to the new meaning of YYERROR, for GCC.
735 Once GCC version 2 has supplanted version 1, this can go. */
1921f1d7 736
e9955c83 737#define YYFAIL goto yyerrlab
1921f1d7 738
e9955c83 739#define YYRECOVERING() (!!yyerrstatus)
1921f1d7 740
e9955c83
AD
741#define YYBACKUP(Token, Value) \
742do \
73521d9f 743 if (yychar == YYEMPTY && yylen == 1) \
e9955c83
AD
744 { \
745 yychar = (Token); \
746 yylval = (Value); \
886b69d1 747 yytoken = YYTRANSLATE (yychar); \
e9955c83
AD
748 YYPOPSTACK; \
749 goto yybackup; \
750 } \
751 else \
5f3df396 752 { \
6088a2a0 753 yyerror (YY_("syntax error: cannot back up")); \
e9955c83
AD
754 YYERROR; \
755 } \
756while (0)
757
8a8dc872 758
e9955c83
AD
759#define YYTERROR 1
760#define YYERRCODE 256
761
8a8dc872
AD
762
763/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
764 If N is 0, then set CURRENT to the empty location which ends
765 the previous symbol: RHS[0] (always defined). */
e9955c83 766
bbd3fa0c 767#define YYRHSLOC(Rhs, K) ((Rhs)[K])
e9955c83 768#ifndef YYLLOC_DEFAULT
bbd3fa0c
PE
769# define YYLLOC_DEFAULT(Current, Rhs, N) \
770 do \
771 if (N) \
772 { \
da436e43
PE
773 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
774 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
775 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
776 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
bbd3fa0c
PE
777 } \
778 else \
779 { \
780 (Current).first_line = (Current).last_line = \
da436e43 781 YYRHSLOC (Rhs, 0).last_line; \
bbd3fa0c 782 (Current).first_column = (Current).last_column = \
da436e43 783 YYRHSLOC (Rhs, 0).last_column; \
bbd3fa0c
PE
784 } \
785 while (0)
8a8dc872
AD
786#endif
787
788
789/* YY_LOCATION_PRINT -- Print the location on the stream.
790 This macro was not mandated originally: define only if we know
791 we won't break user code: when these are the locations we know. */
792
793#ifndef YY_LOCATION_PRINT
794# if YYLTYPE_IS_TRIVIAL
795# define YY_LOCATION_PRINT(File, Loc) \
796 fprintf (File, "%d.%d-%d.%d", \
797 (Loc).first_line, (Loc).first_column, \
798 (Loc).last_line, (Loc).last_column)
799# else
800# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
801# endif
e9955c83
AD
802#endif
803
8a8dc872 804
e9955c83
AD
805/* YYLEX -- calling `yylex' with the right arguments. */
806
366eea36 807#ifdef YYLEX_PARAM
d33cb3ae 808# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
366eea36 809#else
d33cb3ae 810# define YYLEX yylex (&yylval, &yylloc)
366eea36 811#endif
e9955c83
AD
812
813/* Enable debugging if requested. */
814#if YYDEBUG
815
816# ifndef YYFPRINTF
817# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
818# define YYFPRINTF fprintf
819# endif
820
821# define YYDPRINTF(Args) \
822do { \
823 if (yydebug) \
824 YYFPRINTF Args; \
825} while (0)
05d18c24 826
8a8dc872 827# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
f0616f0b
PE
828do { \
829 if (yydebug) \
830 { \
831 YYFPRINTF (stderr, "%s ", Title); \
5f3df396 832 yysymprint (stderr, \
8a8dc872 833 Type, Value, Location); \
f0616f0b
PE
834 YYFPRINTF (stderr, "\n"); \
835 } \
836} while (0)
837
05d18c24
PE
838/*------------------------------------------------------------------.
839| yy_stack_print -- Print the state stack from its BOTTOM up to its |
cd3684cf 840| TOP (included). |
05d18c24
PE
841`------------------------------------------------------------------*/
842
843#if defined (__STDC__) || defined (__cplusplus)
844static void
584bbcd8 845yy_stack_print (short int *bottom, short int *top)
05d18c24
PE
846#else
847static void
848yy_stack_print (bottom, top)
584bbcd8
PE
849 short int *bottom;
850 short int *top;
05d18c24
PE
851#endif
852{
6088a2a0 853 YYFPRINTF (stderr, "Stack now");
05d18c24
PE
854 for (/* Nothing. */; bottom <= top; ++bottom)
855 YYFPRINTF (stderr, " %d", *bottom);
856 YYFPRINTF (stderr, "\n");
857}
858
859# define YY_STACK_PRINT(Bottom, Top) \
860do { \
861 if (yydebug) \
862 yy_stack_print ((Bottom), (Top)); \
863} while (0)
864
865
866/*------------------------------------------------.
867| Report that the YYRULE is going to be reduced. |
868`------------------------------------------------*/
869
870#if defined (__STDC__) || defined (__cplusplus)
871static void
872yy_reduce_print (int yyrule)
873#else
874static void
875yy_reduce_print (yyrule)
876 int yyrule;
877#endif
878{
879 int yyi;
6088a2a0
PE
880 unsigned long int yylno = yyrline[yyrule];
881 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu), ",
6d5aa694 882 yyrule - 1, yylno);
05d18c24
PE
883 /* Print the symbols being reduced, and their result. */
884 for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
9cbfdc9e
PE
885 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
886 YYFPRINTF (stderr, "-> %s\n", yytname[yyr1[yyrule]]);
05d18c24
PE
887}
888
889# define YY_REDUCE_PRINT(Rule) \
890do { \
891 if (yydebug) \
892 yy_reduce_print (Rule); \
893} while (0)
894
e9955c83
AD
895/* Nonzero means print parse trace. It is left uninitialized so that
896 multiple parsers can coexist. */
897int yydebug;
898#else /* !YYDEBUG */
899# define YYDPRINTF(Args)
8a8dc872 900# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
05d18c24
PE
901# define YY_STACK_PRINT(Bottom, Top)
902# define YY_REDUCE_PRINT(Rule)
e9955c83
AD
903#endif /* !YYDEBUG */
904
05d18c24 905
e9955c83
AD
906/* YYINITDEPTH -- initial size of the parser's stacks. */
907#ifndef YYINITDEPTH
908# define YYINITDEPTH 200
909#endif
910
911/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
912 if the built-in stack extension method is used).
913
914 Do not make this value too large; the results are undefined if
2ce37586 915 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
e9955c83
AD
916 evaluated with infinite-precision integer arithmetic. */
917
e9955c83
AD
918#ifndef YYMAXDEPTH
919# define YYMAXDEPTH 10000
920#endif
1921f1d7 921
e9955c83 922\f
1921f1d7
AD
923
924#if YYERROR_VERBOSE
e9955c83
AD
925
926# ifndef yystrlen
927# if defined (__GLIBC__) && defined (_STRING_H)
928# define yystrlen strlen
929# else
930/* Return the length of YYSTR. */
931static YYSIZE_T
932# if defined (__STDC__) || defined (__cplusplus)
933yystrlen (const char *yystr)
934# else
935yystrlen (yystr)
936 const char *yystr;
937# endif
938{
b4fb989f 939 const char *yys = yystr;
e9955c83
AD
940
941 while (*yys++ != '\0')
942 continue;
943
944 return yys - yystr - 1;
945}
946# endif
947# endif
948
949# ifndef yystpcpy
950# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
951# define yystpcpy stpcpy
952# else
953/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
954 YYDEST. */
955static char *
956# if defined (__STDC__) || defined (__cplusplus)
957yystpcpy (char *yydest, const char *yysrc)
958# else
959yystpcpy (yydest, yysrc)
960 char *yydest;
961 const char *yysrc;
962# endif
963{
b4fb989f
PE
964 char *yyd = yydest;
965 const char *yys = yysrc;
e9955c83
AD
966
967 while ((*yyd++ = *yys++) != '\0')
968 continue;
969
970 return yyd - 1;
971}
972# endif
973# endif
0c15323d 974
9cbfdc9e
PE
975# ifndef yytnamerr
976/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
977 quotes and backslashes, so that it's suitable for yyerror. The
978 heuristic is that double-quoting is unnecessary unless the string
979 contains an apostrophe, a comma, or backslash (other than
980 backslash-backslash). YYSTR is taken from yytname. If YYRES is
981 null, do not copy; instead, return the length of what the result
982 would have been. */
983static YYSIZE_T
984yytnamerr (char *yyres, const char *yystr)
985{
986 if (*yystr == '"')
987 {
988 size_t yyn = 0;
989 char const *yyp = yystr;
990
991 for (;;)
992 switch (*++yyp)
993 {
994 case '\'':
995 case ',':
996 goto do_not_strip_quotes;
997
998 case '\\':
999 if (*++yyp != '\\')
1000 goto do_not_strip_quotes;
1001 /* Fall through. */
1002 default:
1003 if (yyres)
1004 yyres[yyn] = *yyp;
1005 yyn++;
1006 break;
1007
1008 case '"':
1009 if (yyres)
1010 yyres[yyn] = '\0';
1011 return yyn;
1012 }
1013 do_not_strip_quotes: ;
1014 }
1015
1016 if (! yyres)
1017 return yystrlen (yystr);
1018
1019 return yystpcpy (yyres, yystr) - yyres;
1020}
1021# endif
1022
1023#endif /* YYERROR_VERBOSE */
1921f1d7
AD
1024
1025\f
e9955c83 1026
04b6e11e 1027#if YYDEBUG
05d18c24
PE
1028/*--------------------------------.
1029| Print this symbol on YYOUTPUT. |
1030`--------------------------------*/
04b6e11e 1031
04b6e11e 1032#if defined (__STDC__) || defined (__cplusplus)
d33cb3ae 1033static void
05d18c24 1034yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
04b6e11e 1035#else
d33cb3ae 1036static void
05d18c24
PE
1037yysymprint (yyoutput, yytype, yyvaluep, yylocationp)
1038 FILE *yyoutput;
04b6e11e 1039 int yytype;
886b69d1
AD
1040 YYSTYPE *yyvaluep;
1041 YYLTYPE *yylocationp;
04b6e11e
PE
1042#endif
1043{
1044 /* Pacify ``unused variable'' warnings. */
886b69d1
AD
1045 (void) yyvaluep;
1046 (void) yylocationp;
04b6e11e
PE
1047
1048 if (yytype < YYNTOKENS)
8a8dc872 1049 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
04b6e11e 1050 else
05d18c24 1051 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
04b6e11e 1052
8a8dc872 1053 YY_LOCATION_PRINT (yyoutput, *yylocationp);
6088a2a0 1054 YYFPRINTF (yyoutput, ": ");
8a8dc872
AD
1055
1056# ifdef YYPRINT
1057 if (yytype < YYNTOKENS)
1058 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1059# endif
04b6e11e
PE
1060 switch (yytype)
1061 {
82b248ad 1062 case 3: /* "\"string\"" */
6088a2a0 1063#line 165 "parse-gram.y"
82b248ad 1064 { fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
5f3df396 1065#line 1066 "parse-gram.c"
82b248ad
AD
1066 break;
1067 case 4: /* "\"integer\"" */
6088a2a0 1068#line 178 "parse-gram.y"
82b248ad 1069 { fprintf (stderr, "%d", (yyvaluep->integer)); };
5f3df396 1070#line 1071 "parse-gram.c"
82b248ad
AD
1071 break;
1072 case 8: /* "\"%destructor {...}\"" */
6088a2a0 1073#line 167 "parse-gram.y"
82b248ad 1074 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
5f3df396 1075#line 1076 "parse-gram.c"
82b248ad
AD
1076 break;
1077 case 9: /* "\"%printer {...}\"" */
6088a2a0 1078#line 171 "parse-gram.y"
82b248ad 1079 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
5f3df396 1080#line 1081 "parse-gram.c"
82b248ad
AD
1081 break;
1082 case 10: /* "\"%union {...}\"" */
6088a2a0 1083#line 172 "parse-gram.y"
82b248ad 1084 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
5f3df396 1085#line 1086 "parse-gram.c"
82b248ad
AD
1086 break;
1087 case 26: /* "\"%initial-action {...}\"" */
6088a2a0 1088#line 168 "parse-gram.y"
82b248ad 1089 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
5f3df396 1090#line 1091 "parse-gram.c"
82b248ad
AD
1091 break;
1092 case 27: /* "\"%lex-param {...}\"" */
6088a2a0 1093#line 169 "parse-gram.y"
82b248ad 1094 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
5f3df396 1095#line 1096 "parse-gram.c"
82b248ad
AD
1096 break;
1097 case 34: /* "\"%parse-param {...}\"" */
6088a2a0 1098#line 170 "parse-gram.y"
82b248ad 1099 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
5f3df396 1100#line 1101 "parse-gram.c"
82b248ad
AD
1101 break;
1102 case 41: /* "\"type\"" */
6088a2a0 1103#line 176 "parse-gram.y"
82b248ad 1104 { fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
5f3df396 1105#line 1106 "parse-gram.c"
82b248ad
AD
1106 break;
1107 case 45: /* "\"identifier\"" */
6088a2a0 1108#line 180 "parse-gram.y"
82b248ad 1109 { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
5f3df396 1110#line 1111 "parse-gram.c"
82b248ad
AD
1111 break;
1112 case 46: /* "\"identifier:\"" */
6088a2a0 1113#line 182 "parse-gram.y"
82b248ad 1114 { fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
5f3df396 1115#line 1116 "parse-gram.c"
82b248ad
AD
1116 break;
1117 case 48: /* "\"%{...%}\"" */
6088a2a0 1118#line 174 "parse-gram.y"
82b248ad 1119 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
5f3df396 1120#line 1121 "parse-gram.c"
82b248ad
AD
1121 break;
1122 case 49: /* "\"epilogue\"" */
6088a2a0 1123#line 174 "parse-gram.y"
82b248ad 1124 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
5f3df396 1125#line 1126 "parse-gram.c"
82b248ad
AD
1126 break;
1127 case 50: /* "\"{...}\"" */
6088a2a0 1128#line 173 "parse-gram.y"
82b248ad 1129 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
5f3df396 1130#line 1131 "parse-gram.c"
82b248ad
AD
1131 break;
1132 case 71: /* "symbol" */
6088a2a0 1133#line 180 "parse-gram.y"
82b248ad 1134 { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
5f3df396 1135#line 1136 "parse-gram.c"
82b248ad
AD
1136 break;
1137 case 72: /* "action" */
6088a2a0 1138#line 173 "parse-gram.y"
82b248ad 1139 { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
5f3df396 1140#line 1141 "parse-gram.c"
82b248ad
AD
1141 break;
1142 case 73: /* "string_as_id" */
6088a2a0 1143#line 180 "parse-gram.y"
82b248ad 1144 { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
5f3df396 1145#line 1146 "parse-gram.c"
82b248ad
AD
1146 break;
1147 case 74: /* "string_content" */
6088a2a0 1148#line 165 "parse-gram.y"
82b248ad 1149 { fprintf (stderr, "\"%s\"", (yyvaluep->chars)); };
5f3df396 1150#line 1151 "parse-gram.c"
82b248ad 1151 break;
04b6e11e
PE
1152 default:
1153 break;
1154 }
05d18c24 1155 YYFPRINTF (yyoutput, ")");
04b6e11e 1156}
04b6e11e 1157
05d18c24 1158#endif /* ! YYDEBUG */
04b6e11e
PE
1159/*-----------------------------------------------.
1160| Release the memory associated to this symbol. |
1161`-----------------------------------------------*/
1162
04b6e11e 1163#if defined (__STDC__) || defined (__cplusplus)
d33cb3ae 1164static void
8a8dc872 1165yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
04b6e11e 1166#else
d33cb3ae 1167static void
8a8dc872
AD
1168yydestruct (yymsg, yytype, yyvaluep, yylocationp)
1169 const char *yymsg;
04b6e11e 1170 int yytype;
886b69d1
AD
1171 YYSTYPE *yyvaluep;
1172 YYLTYPE *yylocationp;
04b6e11e
PE
1173#endif
1174{
1175 /* Pacify ``unused variable'' warnings. */
886b69d1
AD
1176 (void) yyvaluep;
1177 (void) yylocationp;
04b6e11e 1178
8a8dc872
AD
1179 if (!yymsg)
1180 yymsg = "Deleting";
1181 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1182
04b6e11e
PE
1183 switch (yytype)
1184 {
886b69d1 1185
04b6e11e
PE
1186 default:
1187 break;
1188 }
1189}
04b6e11e
PE
1190\f
1191
d33cb3ae 1192/* Prevent warnings from -Wmissing-prototypes. */
e9955c83
AD
1193
1194#ifdef YYPARSE_PARAM
1195# if defined (__STDC__) || defined (__cplusplus)
d33cb3ae 1196int yyparse (void *YYPARSE_PARAM);
e9955c83 1197# else
d33cb3ae 1198int yyparse ();
e9955c83 1199# endif
d33cb3ae
PE
1200#else /* ! YYPARSE_PARAM */
1201#if defined (__STDC__) || defined (__cplusplus)
e9955c83 1202int yyparse (void);
d33cb3ae
PE
1203#else
1204int yyparse ();
1205#endif
05d18c24 1206#endif /* ! YYPARSE_PARAM */
e776192e 1207
e9955c83 1208
e9955c83 1209
e9955c83 1210
d33cb3ae
PE
1211
1212
1213/*----------.
1214| yyparse. |
1215`----------*/
1216
1217#ifdef YYPARSE_PARAM
1218# if defined (__STDC__) || defined (__cplusplus)
1219int yyparse (void *YYPARSE_PARAM)
1220# else
1221int yyparse (YYPARSE_PARAM)
1222 void *YYPARSE_PARAM;
1223# endif
1224#else /* ! YYPARSE_PARAM */
1225#if defined (__STDC__) || defined (__cplusplus)
1226int
1227yyparse (void)
1228#else
e9955c83 1229int
d33cb3ae 1230yyparse ()
5f3df396 1231 ;
d33cb3ae
PE
1232#endif
1233#endif
e9955c83 1234{
85f23fae 1235 /* The look-ahead symbol. */
366eea36
AD
1236int yychar;
1237
85f23fae 1238/* The semantic value of the look-ahead symbol. */
366eea36
AD
1239YYSTYPE yylval;
1240
f0616f0b 1241/* Number of syntax errors so far. */
366eea36 1242int yynerrs;
85f23fae 1243/* Location data for the look-ahead symbol. */
366eea36 1244YYLTYPE yylloc;
e9955c83 1245
b4fb989f
PE
1246 int yystate;
1247 int yyn;
e9955c83
AD
1248 int yyresult;
1249 /* Number of tokens to shift before error messages enabled. */
1250 int yyerrstatus;
85f23fae 1251 /* Look-ahead token as an internal (translated) token number. */
886b69d1 1252 int yytoken = 0;
e9955c83
AD
1253
1254 /* Three stacks and their tools:
1255 `yyss': related to states,
1256 `yyvs': related to semantic values,
1257 `yyls': related to locations.
1258
1259 Refer to the stacks thru separate pointers, to allow yyoverflow
1260 to reallocate them elsewhere. */
1261
1921f1d7 1262 /* The state stack. */
584bbcd8
PE
1263 short int yyssa[YYINITDEPTH];
1264 short int *yyss = yyssa;
b4fb989f 1265 short int *yyssp;
e9955c83
AD
1266
1267 /* The semantic value stack. */
1268 YYSTYPE yyvsa[YYINITDEPTH];
1269 YYSTYPE *yyvs = yyvsa;
b4fb989f 1270 YYSTYPE *yyvsp;
e9955c83 1271
e9955c83
AD
1272 /* The location stack. */
1273 YYLTYPE yylsa[YYINITDEPTH];
1274 YYLTYPE *yyls = yylsa;
1275 YYLTYPE *yylsp;
8a8dc872
AD
1276 /* The locations where the error started and ended. */
1277 YYLTYPE yyerror_range[2];
e9955c83 1278
366eea36 1279#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
e9955c83
AD
1280
1281 YYSIZE_T yystacksize = YYINITDEPTH;
1282
1283 /* The variables used to return semantic value and location from the
1284 action routines. */
1285 YYSTYPE yyval;
e9955c83 1286 YYLTYPE yyloc;
e9955c83
AD
1287
1288 /* When reducing, the number of symbols on the RHS of the reduced
1921f1d7 1289 rule. */
e9955c83
AD
1290 int yylen;
1291
1292 YYDPRINTF ((stderr, "Starting parse\n"));
1293
1294 yystate = 0;
1295 yyerrstatus = 0;
1296 yynerrs = 0;
73521d9f 1297 yychar = YYEMPTY; /* Cause a token to be read. */
e9955c83
AD
1298
1299 /* Initialize stack pointers.
1300 Waste one element of value and location stack
1301 so that they stay on the same level as the state stack.
1302 The wasted elements are never initialized. */
1303
1304 yyssp = yyss;
1305 yyvsp = yyvs;
e9955c83 1306 yylsp = yyls;
8a8dc872
AD
1307#if YYLTYPE_IS_TRIVIAL
1308 /* Initialize the default location before parsing starts. */
1309 yylloc.first_line = yylloc.last_line = 1;
1310 yylloc.first_column = yylloc.last_column = 0;
1311#endif
1312
cd3684cf
AD
1313
1314 /* User initialization code. */
6088a2a0 1315#line 69 "parse-gram.y"
cd3684cf
AD
1316{
1317 /* Bison's grammar can initial empty locations, hence a default
1318 location is needed. */
8a8dc872
AD
1319 yylloc.start.file = yylloc.end.file = current_file;
1320 yylloc.start.line = yylloc.end.line = 1;
1321 yylloc.start.column = yylloc.end.column = 0;
cd3684cf 1322}
5f3df396
PE
1323/* Line 930 of yacc.c. */
1324#line 1325 "parse-gram.c"
5f6da1c0 1325 yylsp[0] = yylloc;
e9955c83
AD
1326 goto yysetstate;
1327
1328/*------------------------------------------------------------.
1329| yynewstate -- Push a new state, which is found in yystate. |
1330`------------------------------------------------------------*/
1331 yynewstate:
1332 /* In all cases, when you get here, the value and location stacks
1333 have just been pushed. so pushing a state here evens the stacks.
1334 */
1335 yyssp++;
1336
1337 yysetstate:
1338 *yyssp = yystate;
1339
d33cb3ae 1340 if (yyss + yystacksize - 1 <= yyssp)
e9955c83
AD
1341 {
1342 /* Get the current used size of the three stacks, in elements. */
1343 YYSIZE_T yysize = yyssp - yyss + 1;
1344
1345#ifdef yyoverflow
1346 {
1347 /* Give user a chance to reallocate the stack. Use copies of
1348 these so that the &'s don't force the real ones into
1349 memory. */
1350 YYSTYPE *yyvs1 = yyvs;
584bbcd8 1351 short int *yyss1 = yyss;
366eea36 1352 YYLTYPE *yyls1 = yyls;
e9955c83
AD
1353
1354 /* Each stack pointer address is followed by the size of the
366eea36
AD
1355 data in use in that stack, in bytes. This used to be a
1356 conditional around just the two extra args, but that might
1357 be undefined if yyoverflow is a macro. */
6088a2a0 1358 yyoverflow (YY_("memory exhausted"),
e9955c83
AD
1359 &yyss1, yysize * sizeof (*yyssp),
1360 &yyvs1, yysize * sizeof (*yyvsp),
1361 &yyls1, yysize * sizeof (*yylsp),
1362 &yystacksize);
1363 yyls = yyls1;
e9955c83
AD
1364 yyss = yyss1;
1365 yyvs = yyvs1;
1366 }
1367#else /* no yyoverflow */
1368# ifndef YYSTACK_RELOCATE
6088a2a0 1369 goto yyexhaustedlab;
e9955c83
AD
1370# else
1371 /* Extend the stack our own way. */
d33cb3ae 1372 if (YYMAXDEPTH <= yystacksize)
6088a2a0 1373 goto yyexhaustedlab;
e9955c83 1374 yystacksize *= 2;
d33cb3ae 1375 if (YYMAXDEPTH < yystacksize)
e9955c83
AD
1376 yystacksize = YYMAXDEPTH;
1377
1378 {
584bbcd8 1379 short int *yyss1 = yyss;
e9955c83
AD
1380 union yyalloc *yyptr =
1381 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1382 if (! yyptr)
6088a2a0 1383 goto yyexhaustedlab;
e9955c83
AD
1384 YYSTACK_RELOCATE (yyss);
1385 YYSTACK_RELOCATE (yyvs);
e9955c83 1386 YYSTACK_RELOCATE (yyls);
1921f1d7 1387# undef YYSTACK_RELOCATE
e9955c83
AD
1388 if (yyss1 != yyssa)
1389 YYSTACK_FREE (yyss1);
1390 }
1391# endif
1392#endif /* no yyoverflow */
1393
1394 yyssp = yyss + yysize - 1;
1395 yyvsp = yyvs + yysize - 1;
e9955c83 1396 yylsp = yyls + yysize - 1;
e9955c83 1397
6088a2a0 1398 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
e9955c83
AD
1399 (unsigned long int) yystacksize));
1400
d33cb3ae 1401 if (yyss + yystacksize - 1 <= yyssp)
e9955c83
AD
1402 YYABORT;
1403 }
1404
6088a2a0 1405 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
e9955c83
AD
1406
1407 goto yybackup;
1408
1409/*-----------.
1410| yybackup. |
1411`-----------*/
1412yybackup:
1413
1414/* Do appropriate processing given the current state. */
85f23fae 1415/* Read a look-ahead token if we need one and don't already have one. */
e9955c83
AD
1416/* yyresume: */
1417
85f23fae 1418 /* First try to decide what to do without reference to look-ahead token. */
e9955c83
AD
1419
1420 yyn = yypact[yystate];
04b6e11e 1421 if (yyn == YYPACT_NINF)
e9955c83
AD
1422 goto yydefault;
1423
85f23fae 1424 /* Not known => get a look-ahead token if don't already have one. */
e9955c83 1425
85f23fae 1426 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
73521d9f 1427 if (yychar == YYEMPTY)
e9955c83 1428 {
6088a2a0 1429 YYDPRINTF ((stderr, "Reading a token: "));
e9955c83
AD
1430 yychar = YYLEX;
1431 }
1432
73521d9f 1433 if (yychar <= YYEOF)
e9955c83 1434 {
73521d9f 1435 yychar = yytoken = YYEOF;
6088a2a0 1436 YYDPRINTF ((stderr, "Now at end of input.\n"));
e9955c83
AD
1437 }
1438 else
1439 {
73521d9f 1440 yytoken = YYTRANSLATE (yychar);
6088a2a0 1441 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
e9955c83
AD
1442 }
1443
886b69d1 1444 /* If the proper action on seeing token YYTOKEN is to reduce or to
ae7453f2 1445 detect an error, take that action. */
886b69d1
AD
1446 yyn += yytoken;
1447 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
e9955c83 1448 goto yydefault;
e9955c83 1449 yyn = yytable[yyn];
ae7453f2 1450 if (yyn <= 0)
e9955c83 1451 {
ae7453f2 1452 if (yyn == 0 || yyn == YYTABLE_NINF)
e9955c83
AD
1453 goto yyerrlab;
1454 yyn = -yyn;
1455 goto yyreduce;
1456 }
e9955c83
AD
1457
1458 if (yyn == YYFINAL)
1459 YYACCEPT;
1460
85f23fae 1461 /* Shift the look-ahead token. */
6088a2a0 1462 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
e9955c83
AD
1463
1464 /* Discard the token being shifted unless it is eof. */
73521d9f
PE
1465 if (yychar != YYEOF)
1466 yychar = YYEMPTY;
e9955c83
AD
1467
1468 *++yyvsp = yylval;
e9955c83 1469 *++yylsp = yylloc;
e9955c83
AD
1470
1471 /* Count tokens shifted since error; after three, turn off error
1472 status. */
1473 if (yyerrstatus)
1474 yyerrstatus--;
1475
1476 yystate = yyn;
1477 goto yynewstate;
1478
1479
1480/*-----------------------------------------------------------.
1481| yydefault -- do the default action for the current state. |
1482`-----------------------------------------------------------*/
1483yydefault:
1484 yyn = yydefact[yystate];
1485 if (yyn == 0)
1486 goto yyerrlab;
1487 goto yyreduce;
1488
1489
1490/*-----------------------------.
1491| yyreduce -- Do a reduction. |
1492`-----------------------------*/
1493yyreduce:
1494 /* yyn is the number of a rule to reduce with. */
1495 yylen = yyr2[yyn];
1496
1497 /* If YYLEN is nonzero, implement the default value of the action:
1498 `$$ = $1'.
1499
04b6e11e
PE
1500 Otherwise, the following line sets YYVAL to garbage.
1501 This behavior is undocumented and Bison
e9955c83
AD
1502 users should not rely upon it. Assigning to YYVAL
1503 unconditionally makes the parser a bit smaller, and it avoids a
1504 GCC warning that YYVAL may be used uninitialized. */
1505 yyval = yyvsp[1-yylen];
1506
1921f1d7 1507 /* Default location. */
cd3684cf 1508 YYLLOC_DEFAULT (yyloc, yylsp - yylen, yylen);
05d18c24 1509 YY_REDUCE_PRINT (yyn);
1921f1d7
AD
1510 switch (yyn)
1511 {
05d18c24 1512 case 6:
6088a2a0 1513#line 203 "parse-gram.y"
76dcf299 1514 { prologue_augment ((yyvsp[0].chars), (yylsp[0])); }
1921f1d7
AD
1515 break;
1516
8efe435c 1517 case 7:
6088a2a0 1518#line 204 "parse-gram.y"
83a457be 1519 { debug_flag = true; }
1921f1d7
AD
1520 break;
1521
8efe435c 1522 case 8:
6088a2a0 1523#line 205 "parse-gram.y"
76dcf299 1524 { muscle_insert ((yyvsp[-1].chars), (yyvsp[0].chars)); }
1921f1d7
AD
1525 break;
1526
8efe435c 1527 case 9:
6088a2a0 1528#line 206 "parse-gram.y"
83a457be 1529 { defines_flag = true; }
e9955c83 1530 break;
1921f1d7 1531
8efe435c 1532 case 10:
6088a2a0 1533#line 207 "parse-gram.y"
83a457be 1534 { error_verbose = true; }
e9955c83 1535 break;
1921f1d7 1536
8efe435c 1537 case 11:
6088a2a0 1538#line 208 "parse-gram.y"
76dcf299 1539 { expected_sr_conflicts = (yyvsp[0].integer); }
e9955c83 1540 break;
1921f1d7 1541
8efe435c 1542 case 12:
6088a2a0 1543#line 209 "parse-gram.y"
76dcf299 1544 { expected_rr_conflicts = (yyvsp[0].integer); }
e9955c83 1545 break;
1921f1d7 1546
8efe435c 1547 case 13:
6088a2a0 1548#line 210 "parse-gram.y"
76dcf299 1549 { spec_file_prefix = (yyvsp[0].chars); }
d6328241
PH
1550 break;
1551
1552 case 14:
6088a2a0 1553#line 212 "parse-gram.y"
cd3684cf
AD
1554 {
1555 nondeterministic_parser = true;
1556 glr_parser = true;
1557 }
e9955c83 1558 break;
1921f1d7 1559
d6328241 1560 case 15:
6088a2a0 1561#line 217 "parse-gram.y"
cd3684cf 1562 {
76dcf299 1563 muscle_code_grow ("initial_action", (yyvsp[0].chars), (yylsp[0]));
cd3684cf 1564 }
e9955c83 1565 break;
1921f1d7 1566
d6328241 1567 case 16:
6088a2a0 1568#line 220 "parse-gram.y"
76dcf299 1569 { add_param ("lex_param", (yyvsp[0].chars), (yylsp[0])); }
e9955c83 1570 break;
1921f1d7 1571
d6328241 1572 case 17:
6088a2a0 1573#line 221 "parse-gram.y"
cd3684cf 1574 { locations_flag = true; }
e9955c83 1575 break;
1921f1d7 1576
d6328241 1577 case 18:
6088a2a0 1578#line 222 "parse-gram.y"
76dcf299 1579 { spec_name_prefix = (yyvsp[0].chars); }
e9955c83 1580 break;
1921f1d7 1581
d6328241 1582 case 19:
6088a2a0 1583#line 223 "parse-gram.y"
cd3684cf 1584 { no_lines_flag = true; }
4cdb01db 1585 break;
1921f1d7 1586
d6328241 1587 case 20:
6088a2a0 1588#line 224 "parse-gram.y"
cd3684cf 1589 { nondeterministic_parser = true; }
4cdb01db 1590 break;
1921f1d7 1591
d6328241 1592 case 21:
6088a2a0 1593#line 225 "parse-gram.y"
76dcf299 1594 { spec_outfile = (yyvsp[0].chars); }
4cdb01db 1595 break;
1921f1d7 1596
d6328241 1597 case 22:
6088a2a0 1598#line 226 "parse-gram.y"
76dcf299 1599 { add_param ("parse_param", (yyvsp[0].chars), (yylsp[0])); }
676385e2
PH
1600 break;
1601
d6328241 1602 case 23:
6088a2a0 1603#line 227 "parse-gram.y"
cd3684cf 1604 { pure_parser = true; }
ae7453f2
AD
1605 break;
1606
d6328241 1607 case 24:
6088a2a0 1608#line 228 "parse-gram.y"
76dcf299 1609 { skeleton = (yyvsp[0].chars); }
ae7453f2
AD
1610 break;
1611
d6328241 1612 case 25:
6088a2a0 1613#line 229 "parse-gram.y"
cd3684cf 1614 { token_table_flag = true; }
916708d5
AD
1615 break;
1616
d6328241 1617 case 26:
6088a2a0 1618#line 230 "parse-gram.y"
cd3684cf
AD
1619 { report_flag = report_states; }
1620 break;
1621
d6328241 1622 case 27:
6088a2a0 1623#line 231 "parse-gram.y"
83a457be 1624 { yacc_flag = true; }
4cdb01db 1625 break;
1921f1d7 1626
d6328241 1627 case 31:
6088a2a0 1628#line 239 "parse-gram.y"
1921f1d7 1629 {
76dcf299 1630 grammar_start_symbol_set ((yyvsp[0].symbol), (yylsp[0]));
4cdb01db 1631 }
e9955c83 1632 break;
1921f1d7 1633
d6328241 1634 case 32:
6088a2a0 1635#line 243 "parse-gram.y"
1921f1d7 1636 {
83a457be 1637 typed = true;
76dcf299
PE
1638 MUSCLE_INSERT_INT ("stype_line", (yylsp[0]).start.line);
1639 muscle_insert ("stype", (yyvsp[0].chars));
4cdb01db 1640 }
e9955c83 1641 break;
1921f1d7 1642
d6328241 1643 case 33:
6088a2a0 1644#line 249 "parse-gram.y"
1921f1d7 1645 {
05d18c24 1646 symbol_list *list;
76dcf299
PE
1647 for (list = (yyvsp[0].list); list; list = list->next)
1648 symbol_destructor_set (list->sym, (yyvsp[-1].chars), (yylsp[-1]));
1649 symbol_list_free ((yyvsp[0].list));
4cdb01db 1650 }
e9955c83 1651 break;
1921f1d7 1652
d6328241 1653 case 34:
6088a2a0 1654#line 256 "parse-gram.y"
1921f1d7 1655 {
05d18c24 1656 symbol_list *list;
76dcf299
PE
1657 for (list = (yyvsp[0].list); list; list = list->next)
1658 symbol_printer_set (list->sym, (yyvsp[-1].chars), list->location);
1659 symbol_list_free ((yyvsp[0].list));
4cdb01db 1660 }
e9955c83 1661 break;
1921f1d7 1662
d6328241 1663 case 35:
6088a2a0 1664#line 263 "parse-gram.y"
92f5e991 1665 {
66ef8b9d 1666 default_prec = true;
92f5e991 1667 }
9280d3ef
AD
1668 break;
1669
d6328241 1670 case 36:
6088a2a0 1671#line 267 "parse-gram.y"
66ef8b9d
PE
1672 {
1673 default_prec = false;
1674 }
92f5e991
AD
1675 break;
1676
d6328241 1677 case 37:
6088a2a0 1678#line 273 "parse-gram.y"
66ef8b9d
PE
1679 { current_class = nterm_sym; }
1680 break;
1681
d6328241 1682 case 38:
6088a2a0 1683#line 274 "parse-gram.y"
9280d3ef
AD
1684 {
1685 current_class = unknown_sym;
1686 current_type = NULL;
1687 }
1688 break;
1689
d6328241 1690 case 39:
6088a2a0 1691#line 278 "parse-gram.y"
366eea36
AD
1692 { current_class = token_sym; }
1693 break;
1694
d6328241 1695 case 40:
6088a2a0 1696#line 279 "parse-gram.y"
366eea36
AD
1697 {
1698 current_class = unknown_sym;
1699 current_type = NULL;
1700 }
1701 break;
1702
d6328241 1703 case 41:
6088a2a0 1704#line 284 "parse-gram.y"
1e0bab92 1705 {
05d18c24 1706 symbol_list *list;
76dcf299
PE
1707 for (list = (yyvsp[0].list); list; list = list->next)
1708 symbol_type_set (list->sym, (yyvsp[-1].uniqstr), (yylsp[-1]));
1709 symbol_list_free ((yyvsp[0].list));
1e0bab92 1710 }
e9955c83 1711 break;
1921f1d7 1712
d6328241 1713 case 42:
6088a2a0 1714#line 294 "parse-gram.y"
1921f1d7 1715 {
05d18c24 1716 symbol_list *list;
1e0bab92 1717 ++current_prec;
76dcf299 1718 for (list = (yyvsp[0].list); list; list = list->next)
1e0bab92 1719 {
76dcf299
PE
1720 symbol_type_set (list->sym, current_type, (yylsp[-1]));
1721 symbol_precedence_set (list->sym, current_prec, (yyvsp[-2].assoc), (yylsp[-2]));
1e0bab92 1722 }
76dcf299 1723 symbol_list_free ((yyvsp[0].list));
2c569025
AD
1724 current_type = NULL;
1725 }
e9955c83 1726 break;
1921f1d7 1727
d6328241 1728 case 43:
6088a2a0 1729#line 308 "parse-gram.y"
76dcf299 1730 { (yyval.assoc) = left_assoc; }
e9955c83 1731 break;
1921f1d7 1732
d6328241 1733 case 44:
6088a2a0 1734#line 309 "parse-gram.y"
76dcf299 1735 { (yyval.assoc) = right_assoc; }
e9955c83 1736 break;
1921f1d7 1737
d6328241 1738 case 45:
6088a2a0 1739#line 310 "parse-gram.y"
76dcf299 1740 { (yyval.assoc) = non_assoc; }
4cdb01db 1741 break;
1921f1d7 1742
d6328241 1743 case 46:
6088a2a0 1744#line 314 "parse-gram.y"
62ddaef6 1745 { current_type = NULL; }
e9955c83 1746 break;
1921f1d7 1747
d6328241 1748 case 47:
6088a2a0 1749#line 315 "parse-gram.y"
76dcf299 1750 { current_type = (yyvsp[0].uniqstr); }
e9955c83 1751 break;
1921f1d7 1752
d6328241 1753 case 48:
6088a2a0 1754#line 321 "parse-gram.y"
76dcf299 1755 { (yyval.list) = symbol_list_new ((yyvsp[0].symbol), (yylsp[0])); }
4cdb01db 1756 break;
1921f1d7 1757
d6328241 1758 case 49:
6088a2a0 1759#line 322 "parse-gram.y"
76dcf299 1760 { (yyval.list) = symbol_list_prepend ((yyvsp[-1].list), (yyvsp[0].symbol), (yylsp[0])); }
4cdb01db 1761 break;
1921f1d7 1762
d6328241 1763 case 50:
6088a2a0 1764#line 328 "parse-gram.y"
1921f1d7 1765 {
76dcf299 1766 current_type = (yyvsp[0].uniqstr);
4cdb01db 1767 }
e9955c83 1768 break;
1921f1d7 1769
d6328241 1770 case 51:
6088a2a0 1771#line 332 "parse-gram.y"
1921f1d7 1772 {
76dcf299
PE
1773 symbol_class_set ((yyvsp[0].symbol), current_class, (yylsp[0]));
1774 symbol_type_set ((yyvsp[0].symbol), current_type, (yylsp[0]));
4cdb01db 1775 }
e9955c83 1776 break;
1921f1d7 1777
d6328241 1778 case 52:
6088a2a0 1779#line 337 "parse-gram.y"
1921f1d7 1780 {
76dcf299
PE
1781 symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]));
1782 symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
1783 symbol_user_token_number_set ((yyvsp[-1].symbol), (yyvsp[0].integer), (yylsp[0]));
4cdb01db 1784 }
e9955c83 1785 break;
1921f1d7 1786
d6328241 1787 case 53:
6088a2a0 1788#line 343 "parse-gram.y"
1921f1d7 1789 {
76dcf299
PE
1790 symbol_class_set ((yyvsp[-1].symbol), current_class, (yylsp[-1]));
1791 symbol_type_set ((yyvsp[-1].symbol), current_type, (yylsp[-1]));
1792 symbol_make_alias ((yyvsp[-1].symbol), (yyvsp[0].symbol), (yyloc));
4cdb01db 1793 }
e9955c83 1794 break;
1921f1d7 1795
d6328241 1796 case 54:
6088a2a0 1797#line 349 "parse-gram.y"
1921f1d7 1798 {
76dcf299
PE
1799 symbol_class_set ((yyvsp[-2].symbol), current_class, (yylsp[-2]));
1800 symbol_type_set ((yyvsp[-2].symbol), current_type, (yylsp[-2]));
1801 symbol_user_token_number_set ((yyvsp[-2].symbol), (yyvsp[-1].integer), (yylsp[-1]));
1802 symbol_make_alias ((yyvsp[-2].symbol), (yyvsp[0].symbol), (yyloc));
4cdb01db 1803 }
e9955c83 1804 break;
1921f1d7 1805
d6328241 1806 case 60:
6088a2a0 1807#line 378 "parse-gram.y"
b275314e
AD
1808 {
1809 if (yacc_flag)
76dcf299 1810 complain_at ((yyloc), _("POSIX forbids declarations in the grammar"));
b275314e
AD
1811 }
1812 break;
1813
d6328241 1814 case 61:
6088a2a0 1815#line 383 "parse-gram.y"
b275314e
AD
1816 {
1817 yyerrok;
1818 }
e9955c83 1819 break;
1921f1d7 1820
d6328241 1821 case 62:
6088a2a0 1822#line 389 "parse-gram.y"
76dcf299 1823 { current_lhs = (yyvsp[0].symbol); current_lhs_location = (yylsp[0]); }
e9955c83 1824 break;
1921f1d7 1825
d6328241 1826 case 64:
6088a2a0 1827#line 393 "parse-gram.y"
76dcf299 1828 { grammar_rule_end ((yylsp[0])); }
e9955c83 1829 break;
1921f1d7 1830
d6328241 1831 case 65:
6088a2a0 1832#line 394 "parse-gram.y"
76dcf299 1833 { grammar_rule_end ((yylsp[0])); }
4cdb01db 1834 break;
1921f1d7 1835
d6328241 1836 case 67:
6088a2a0 1837#line 400 "parse-gram.y"
66ef8b9d 1838 { grammar_rule_begin (current_lhs, current_lhs_location); }
e9955c83 1839 break;
1921f1d7 1840
d6328241 1841 case 68:
6088a2a0 1842#line 402 "parse-gram.y"
76dcf299 1843 { grammar_current_rule_symbol_append ((yyvsp[0].symbol), (yylsp[0])); }
4cdb01db 1844 break;
1921f1d7 1845
d6328241 1846 case 69:
6088a2a0 1847#line 404 "parse-gram.y"
76dcf299 1848 { grammar_current_rule_action_append ((yyvsp[0].chars), (yylsp[0])); }
0c15323d 1849 break;
1921f1d7 1850
d6328241 1851 case 70:
6088a2a0 1852#line 406 "parse-gram.y"
76dcf299 1853 { grammar_current_rule_prec_set ((yyvsp[0].symbol), (yylsp[0])); }
2c569025 1854 break;
1921f1d7 1855
d6328241 1856 case 71:
6088a2a0 1857#line 408 "parse-gram.y"
76dcf299 1858 { grammar_current_rule_dprec_set ((yyvsp[0].integer), (yylsp[0])); }
676385e2
PH
1859 break;
1860
d6328241 1861 case 72:
6088a2a0 1862#line 410 "parse-gram.y"
76dcf299 1863 { grammar_current_rule_merge_set ((yyvsp[0].uniqstr), (yylsp[0])); }
676385e2
PH
1864 break;
1865
d6328241 1866 case 73:
6088a2a0 1867#line 414 "parse-gram.y"
76dcf299 1868 { (yyval.symbol) = (yyvsp[0].symbol); }
b275314e
AD
1869 break;
1870
d6328241 1871 case 74:
6088a2a0 1872#line 415 "parse-gram.y"
76dcf299 1873 { (yyval.symbol) = (yyvsp[0].symbol); }
916708d5
AD
1874 break;
1875
d6328241 1876 case 75:
6088a2a0 1877#line 420 "parse-gram.y"
76dcf299 1878 { (yyval.chars) = (yyvsp[0].chars); }
66ef8b9d
PE
1879 break;
1880
d6328241 1881 case 76:
6088a2a0 1882#line 426 "parse-gram.y"
1921f1d7 1883 {
2ce37586 1884 (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[0].chars)), (yylsp[0]));
76dcf299 1885 symbol_class_set ((yyval.symbol), token_sym, (yylsp[0]));
4cdb01db 1886 }
e9955c83 1887 break;
1921f1d7 1888
d6328241 1889 case 77:
6088a2a0 1890#line 435 "parse-gram.y"
2ce37586 1891 { (yyval.chars) = (yyvsp[0].chars); }
e9955c83 1892 break;
1921f1d7 1893
d6328241 1894 case 79:
6088a2a0 1895#line 442 "parse-gram.y"
1921f1d7 1896 {
76dcf299 1897 muscle_code_grow ("epilogue", (yyvsp[0].chars), (yylsp[0]));
7ec2d4cd 1898 scanner_last_string_free ();
4cdb01db 1899 }
e9955c83
AD
1900 break;
1901
1902
e1054895 1903 default: break;
1921f1d7
AD
1904 }
1905
5f3df396
PE
1906/* Line 1126 of yacc.c. */
1907#line 1908 "parse-gram.c"
e9955c83
AD
1908\f
1909 yyvsp -= yylen;
1910 yyssp -= yylen;
e9955c83 1911 yylsp -= yylen;
e9955c83 1912
05d18c24 1913 YY_STACK_PRINT (yyss, yyssp);
e9955c83
AD
1914
1915 *++yyvsp = yyval;
e9955c83 1916 *++yylsp = yyloc;
e9955c83
AD
1917
1918 /* Now `shift' the result of the reduction. Determine what state
1919 that goes to, based on the state we popped back to and the rule
1920 number reduced by. */
1921
1922 yyn = yyr1[yyn];
1923
1921f1d7 1924 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
04b6e11e 1925 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
e9955c83
AD
1926 yystate = yytable[yystate];
1927 else
1921f1d7 1928 yystate = yydefgoto[yyn - YYNTOKENS];
e9955c83
AD
1929
1930 goto yynewstate;
1931
1932
1933/*------------------------------------.
1934| yyerrlab -- here on detecting error |
1935`------------------------------------*/
1936yyerrlab:
1937 /* If not already recovering from an error, report this error. */
1938 if (!yyerrstatus)
1939 {
1940 ++yynerrs;
ae7453f2
AD
1941#if YYERROR_VERBOSE
1942 yyn = yypact[yystate];
1943
1944 if (YYPACT_NINF < yyn && yyn < YYLAST)
1945 {
ae7453f2 1946 int yytype = YYTRANSLATE (yychar);
9cbfdc9e 1947 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2ce37586
PE
1948 YYSIZE_T yysize = yysize0;
1949 YYSIZE_T yysize1;
1950 int yysize_overflow = 0;
1951 char *yymsg = 0;
1952# define YYERROR_VERBOSE_ARGS_MAXIMUM 5
1953 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
6d5aa694 1954 int yyx;
ae7453f2 1955
2ce37586
PE
1956#if 0
1957 /* This is so xgettext sees the translatable formats that are
1958 constructed on the fly. */
6088a2a0
PE
1959 YY_("syntax error, unexpected %s");
1960 YY_("syntax error, unexpected %s, expecting %s");
1961 YY_("syntax error, unexpected %s, expecting %s or %s");
1962 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1963 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2ce37586
PE
1964#endif
1965 char *yyfmt;
1966 char const *yyf;
1967 static char const yyunexpected[] = "syntax error, unexpected %s";
1968 static char const yyexpecting[] = ", expecting %s";
1969 static char const yyor[] = " or %s";
1970 char yyformat[sizeof yyunexpected
1971 + sizeof yyexpecting - 1
1972 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1973 * (sizeof yyor - 1))];
1974 char const *yyprefix = yyexpecting;
1975
ae7453f2
AD
1976 /* Start YYX at -YYN if negative to avoid negative indexes in
1977 YYCHECK. */
650aa2cf 1978 int yyxbegin = yyn < 0 ? -yyn : 0;
6d5aa694
AD
1979
1980 /* Stay within bounds of both yycheck and yytname. */
1981 int yychecklim = YYLAST - yyn;
650aa2cf 1982 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2ce37586
PE
1983 int yycount = 1;
1984
1985 yyarg[0] = yytname[yytype];
1986 yyfmt = yystpcpy (yyformat, yyunexpected);
6d5aa694 1987
650aa2cf 1988 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
ae7453f2 1989 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
6d5aa694 1990 {
2ce37586 1991 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
6d5aa694 1992 {
2ce37586
PE
1993 yycount = 1;
1994 yysize = yysize0;
1995 yyformat[sizeof yyunexpected - 1] = '\0';
6d5aa694 1996 break;
650aa2cf 1997 }
2ce37586 1998 yyarg[yycount++] = yytname[yyx];
9cbfdc9e 1999 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2ce37586
PE
2000 yysize_overflow |= yysize1 < yysize;
2001 yysize = yysize1;
2002 yyfmt = yystpcpy (yyfmt, yyprefix);
2003 yyprefix = yyor;
6d5aa694 2004 }
ae7453f2 2005
6088a2a0 2006 yyf = YY_(yyformat);
73e561d5 2007 yysize1 = yysize + yystrlen (yyf);
2ce37586
PE
2008 yysize_overflow |= yysize1 < yysize;
2009 yysize = yysize1;
2010
2011 if (!yysize_overflow && yysize <= YYSTACK_ALLOC_MAXIMUM)
2012 yymsg = (char *) YYSTACK_ALLOC (yysize);
2013 if (yymsg)
2014 {
2015 /* Avoid sprintf, as that infringes on the user's name space.
2016 Don't have undefined behavior even if the translation
2017 produced a string with the wrong number of "%s"s. */
2018 char *yyp = yymsg;
2019 int yyi = 0;
2020 while ((*yyp = *yyf))
ae7453f2 2021 {
2ce37586
PE
2022 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
2023 {
9cbfdc9e 2024 yyp += yytnamerr (yyp, yyarg[yyi++]);
2ce37586
PE
2025 yyf += 2;
2026 }
2027 else
2028 {
2029 yyp++;
2030 yyf++;
2031 }
ae7453f2
AD
2032 }
2033 yyerror (yymsg);
2034 YYSTACK_FREE (yymsg);
2035 }
2036 else
6088a2a0
PE
2037 {
2038 yyerror (YY_("syntax error"));
2039 goto yyexhaustedlab;
2040 }
ae7453f2
AD
2041 }
2042 else
2043#endif /* YYERROR_VERBOSE */
6088a2a0 2044 yyerror (YY_("syntax error"));
e9955c83 2045 }
e9955c83 2046
8a8dc872 2047 yyerror_range[0] = yylloc;
78a00b7d 2048
e9955c83
AD
2049 if (yyerrstatus == 3)
2050 {
85f23fae 2051 /* If just tried and failed to reuse look-ahead token after an
e9955c83
AD
2052 error, discard it. */
2053
465b4444 2054 if (yychar <= YYEOF)
366eea36 2055 {
d11e0cfa 2056 /* Return failure if at end of input. */
465b4444 2057 if (yychar == YYEOF)
7768896a 2058 YYABORT;
366eea36 2059 }
465b4444
PE
2060 else
2061 {
6088a2a0 2062 yydestruct ("Error: discarding", yytoken, &yylval, &yylloc);
465b4444 2063 yychar = YYEMPTY;
465b4444 2064 }
e9955c83
AD
2065 }
2066
85f23fae 2067 /* Else will try to reuse look-ahead token after shifting the error
e9955c83 2068 token. */
6d5aa694 2069 goto yyerrlab1;
e9955c83 2070
05d18c24 2071
465b4444
PE
2072/*---------------------------------------------------.
2073| yyerrorlab -- error raised explicitly by YYERROR. |
2074`---------------------------------------------------*/
2075yyerrorlab:
2076
e1054895
PE
2077 /* Pacify compilers like GCC when the user code never invokes
2078 YYERROR and the label yyerrorlab therefore never appears in user
2079 code. */
465b4444
PE
2080 if (0)
2081 goto yyerrorlab;
465b4444 2082
8a8dc872
AD
2083 yyerror_range[0] = yylsp[1-yylen];
2084 yylsp -= yylen;
465b4444
PE
2085 yyvsp -= yylen;
2086 yyssp -= yylen;
2087 yystate = *yyssp;
465b4444
PE
2088 goto yyerrlab1;
2089
2090
2091/*-------------------------------------------------------------.
2092| yyerrlab1 -- common code for both syntax error and YYERROR. |
2093`-------------------------------------------------------------*/
05d18c24 2094yyerrlab1:
1921f1d7 2095 yyerrstatus = 3; /* Each real token shifted decrements this. */
e9955c83 2096
1921f1d7
AD
2097 for (;;)
2098 {
2099 yyn = yypact[yystate];
04b6e11e 2100 if (yyn != YYPACT_NINF)
1921f1d7
AD
2101 {
2102 yyn += YYTERROR;
2103 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2104 {
2105 yyn = yytable[yyn];
2106 if (0 < yyn)
2107 break;
2108 }
2109 }
4cdb01db 2110
1921f1d7
AD
2111 /* Pop the current state because it cannot handle the error token. */
2112 if (yyssp == yyss)
2113 YYABORT;
0c15323d 2114
8a8dc872 2115 yyerror_range[0] = *yylsp;
6088a2a0 2116 yydestruct ("Error: popping", yystos[yystate], yyvsp, yylsp);
465b4444
PE
2117 YYPOPSTACK;
2118 yystate = *yyssp;
05d18c24 2119 YY_STACK_PRINT (yyss, yyssp);
e9955c83
AD
2120 }
2121
2122 if (yyn == YYFINAL)
2123 YYACCEPT;
2124
e9955c83 2125 *++yyvsp = yylval;
8a8dc872
AD
2126
2127 yyerror_range[1] = yylloc;
2128 /* Using YYLLOC is tempting, but would change the location of
2129 the look-ahead. YYLOC is available though. */
2130 YYLLOC_DEFAULT (yyloc, yyerror_range - 1, 2);
78a00b7d 2131 *++yylsp = yyloc;
e9955c83 2132
8a8dc872 2133 /* Shift the error token. */
6088a2a0 2134 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8a8dc872 2135
e9955c83
AD
2136 yystate = yyn;
2137 goto yynewstate;
2138
2139
2140/*-------------------------------------.
2141| yyacceptlab -- YYACCEPT comes here. |
2142`-------------------------------------*/
2143yyacceptlab:
2144 yyresult = 0;
2145 goto yyreturn;
2146
2147/*-----------------------------------.
2148| yyabortlab -- YYABORT comes here. |
2149`-----------------------------------*/
2150yyabortlab:
2151 yyresult = 1;
2152 goto yyreturn;
2153
366eea36 2154#ifndef yyoverflow
6088a2a0
PE
2155/*-------------------------------------------------.
2156| yyexhaustedlab -- memory exhaustion comes here. |
2157`-------------------------------------------------*/
2158yyexhaustedlab:
2159 yyerror (YY_("memory exhausted"));
e9955c83
AD
2160 yyresult = 2;
2161 /* Fall through. */
366eea36 2162#endif
e9955c83
AD
2163
2164yyreturn:
bd134904 2165 if (yychar != YYEOF && yychar != YYEMPTY)
6088a2a0 2166 yydestruct ("Error: discarding lookahead",
bd134904 2167 yytoken, &yylval, &yylloc);
d11e0cfa
PE
2168 while (yyssp != yyss)
2169 {
2170 yydestruct ("Error: popping",
2171 yystos[*yyssp], yyvsp, yylsp);
2172 YYPOPSTACK;
2173 }
e9955c83
AD
2174#ifndef yyoverflow
2175 if (yyss != yyssa)
2176 YYSTACK_FREE (yyss);
2177#endif
2178 return yyresult;
2179}
1921f1d7 2180
366eea36 2181
6088a2a0 2182#line 448 "parse-gram.y"
05d18c24
PE
2183
2184
2185
2186/* Return the location of the left-hand side of a rule whose
2187 right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
2188 the right-hand side, and return an empty location equal to the end
2189 boundary of RHS[0] if the right-hand side is empty. */
2190
2191static YYLTYPE
2192lloc_default (YYLTYPE const *rhs, int n)
2193{
2194 int i;
1d64f0ba 2195 YYLTYPE loc;
329d23c5
PE
2196
2197 /* SGI MIPSpro 7.4.1m miscompiles "loc.start = loc.end = rhs[n].end;".
2198 The bug is fixed in 7.4.2m, but play it safe for now. */
2199 loc.start = rhs[n].end;
2200 loc.end = rhs[n].end;
05d18c24 2201
73521d9f
PE
2202 /* Ignore empty nonterminals the start of the the right-hand side.
2203 Do not bother to ignore them at the end of the right-hand side,
2204 since empty nonterminals have the same end as their predecessors. */
05d18c24
PE
2205 for (i = 1; i <= n; i++)
2206 if (! equal_boundaries (rhs[i].start, rhs[i].end))
2207 {
1d64f0ba 2208 loc.start = rhs[i].start;
05d18c24
PE
2209 break;
2210 }
2211
1d64f0ba 2212 return loc;
05d18c24
PE
2213}
2214
2215
2216/* Add a lex-param or a parse-param (depending on TYPE) with
2217 declaration DECL and location LOC. */
2218
2219static void
73521d9f 2220add_param (char const *type, char *decl, location loc)
05d18c24 2221{
8a8dc872 2222 static char const alphanum[26 + 26 + 1 + 10] =
05d18c24
PE
2223 "abcdefghijklmnopqrstuvwxyz"
2224 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
8a8dc872
AD
2225 "_"
2226 "0123456789";
05d18c24 2227 char const *name_start = NULL;
73521d9f 2228 char *p;
05d18c24 2229
2ed24dd8 2230 /* Stop on last actual character. */
e503aa60 2231 for (p = decl; p[1]; p++)
8a8dc872
AD
2232 if ((p == decl
2233 || ! memchr (alphanum, p[-1], sizeof alphanum))
2234 && memchr (alphanum, p[0], sizeof alphanum - 10))
05d18c24 2235 name_start = p;
2ed24dd8 2236
8a8dc872
AD
2237 /* Strip the surrounding '{' and '}', and any blanks just inside
2238 the braces. */
2239 while (*--p == ' ' || *p == '\t')
2240 continue;
e503aa60 2241 p[1] = '\0';
8a8dc872
AD
2242 while (*++decl == ' ' || *decl == '\t')
2243 continue;
73521d9f 2244
05d18c24
PE
2245 if (! name_start)
2246 complain_at (loc, _("missing identifier in parameter declaration"));
2247 else
2248 {
2249 char *name;
2250 size_t name_len;
2251
2252 for (name_len = 1;
8a8dc872 2253 memchr (alphanum, name_start[name_len], sizeof alphanum);
05d18c24
PE
2254 name_len++)
2255 continue;
2256
2257 name = xmalloc (name_len + 1);
2258 memcpy (name, name_start, name_len);
2259 name[name_len] = '\0';
2260 muscle_pair_list_grow (type, decl, name);
2261 free (name);
2262 }
2263
2264 scanner_last_string_free ();
2265}
e9955c83 2266
05d18c24
PE
2267static void
2268gram_error (location const *loc, char const *msg)
e9955c83 2269{
05d18c24 2270 complain_at (*loc, "%s", msg);
e9955c83 2271}
1921f1d7 2272
73521d9f
PE
2273char const *
2274token_name (int type)
2275{
e0045d49 2276 return yytname[YYTRANSLATE (type)];
73521d9f
PE
2277}
2278