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