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