1 /* A Bison parser, made by GNU Bison 2.3+. */
3 /* Skeleton implementation for Bison's Yacc-like parsers in C
5 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6 Free Software Foundation, Inc.
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)
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.
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. */
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.
33 This special exception was added by the Free Software Foundation in
34 version 2.2 of Bison. */
36 /* C LALR(1) parser skeleton written by Richard Stallman, by
37 simplifying the original so-called "semantic" parser. */
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. */
46 /* Identify Bison output. */
50 #define YYBISON_VERSION "2.3+"
53 #define YYSKELETON_NAME "yacc.c"
58 /* Using locations. */
59 #define YYLSP_NEEDED 1
61 /* Substitute the variable and function names. */
62 #define yyparse gram_parse
63 #define yylex gram_lex
64 #define yyerror gram_error
65 #define yylval gram_lval
66 #define yychar gram_char
67 #define yydebug gram_debug
68 #define yynerrs gram_nerrs
69 #define yylloc gram_lloc
71 /* Copy the first part of user declarations. */
72 /* Line 164 of yacc.c. */
73 #line 1 "parse-gram.y"
74 /* Bison Grammar Parser -*- C -*-
76 Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
78 This file is part of Bison, the GNU Compiler Compiler.
80 This program is free software; you can redistribute it and/or modify
81 it under the terms of the GNU General Public License as published by
82 the Free Software Foundation; either version 2 of the License, or
83 (at your option) any later version.
85 This program is distributed in the hope that it will be useful,
86 but WITHOUT ANY WARRANTY; without even the implied warranty of
87 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
88 GNU General Public License for more details.
90 You should have received a copy of the GNU General Public License
91 along with this program; if not, write to the Free Software
92 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
99 #include <strverscmp.h>
101 #include "complain.h"
102 #include "conflicts.h"
106 #include "muscle_tab.h"
107 #include "quotearg.h"
110 #include "scan-gram.h"
111 #include "scan-code.h"
113 #define YYLLOC_DEFAULT(Current, Rhs, N) (Current) = lloc_default (Rhs, N)
114 static YYLTYPE
lloc_default (YYLTYPE
const *, int);
116 #define YY_LOCATION_PRINT(File, Loc) \
117 location_print (File, Loc)
119 static void version_check (location
const *loc
, char const *version
);
121 /* Request detailed syntax error messages, and pass them to GRAM_ERROR.
122 FIXME: depends on the undocumented availability of YYLLOC. */
124 #define yyerror(Msg) \
125 gram_error (&yylloc, Msg)
126 static void gram_error (location
const *, char const *);
128 static char const *char_name (char);
130 static void add_param (char const *, char *, location
);
132 static symbol_class current_class
= unknown_sym
;
133 static uniqstr current_type
= 0;
134 static symbol
*current_lhs
;
135 static location current_lhs_location
;
136 static int current_prec
= 0;
138 #define YYTYPE_INT16 int_fast16_t
139 #define YYTYPE_INT8 int_fast8_t
140 #define YYTYPE_UINT16 uint_fast16_t
141 #define YYTYPE_UINT8 uint_fast8_t
144 /* Enabling traces. */
149 /* Enabling verbose error messages. */
150 #ifdef YYERROR_VERBOSE
151 # undef YYERROR_VERBOSE
152 # define YYERROR_VERBOSE 1
154 # define YYERROR_VERBOSE 1
157 /* Enabling the token table. */
158 #ifndef YYTOKEN_TABLE
159 # define YYTOKEN_TABLE 0
166 /* Put the tokens into the symbol table, so that GDB and other debuggers
175 PERCENT_DESTRUCTOR
= 263,
176 PERCENT_PRINTER
= 264,
179 PERCENT_NONASSOC
= 267,
183 PERCENT_AFTER_HEADER
= 271,
184 PERCENT_BEFORE_HEADER
= 272,
186 PERCENT_DEFAULT_PREC
= 274,
187 PERCENT_DEFINE
= 275,
188 PERCENT_DEFINES
= 276,
189 PERCENT_END_HEADER
= 277,
190 PERCENT_ERROR_VERBOSE
= 278,
191 PERCENT_EXPECT
= 279,
192 PERCENT_EXPECT_RR
= 280,
193 PERCENT_FILE_PREFIX
= 281,
194 PERCENT_GLR_PARSER
= 282,
195 PERCENT_INITIAL_ACTION
= 283,
196 PERCENT_LEX_PARAM
= 284,
197 PERCENT_LOCATIONS
= 285,
198 PERCENT_NAME_PREFIX
= 286,
199 PERCENT_NO_DEFAULT_PREC
= 287,
200 PERCENT_NO_LINES
= 288,
201 PERCENT_NONDETERMINISTIC_PARSER
= 289,
202 PERCENT_OUTPUT
= 290,
203 PERCENT_PARSE_PARAM
= 291,
204 PERCENT_PURE_PARSER
= 292,
205 PERCENT_REQUIRE
= 293,
206 PERCENT_SKELETON
= 294,
208 PERCENT_START_HEADER
= 296,
209 PERCENT_TOKEN_TABLE
= 297,
210 PERCENT_VERBOSE
= 298,
218 PERCENT_PERCENT
= 306,
229 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
230 typedef union YYSTYPE
231 /* Line 195 of yacc.c. */
232 #line 90 "parse-gram.y"
240 unsigned char character
;
242 /* Line 195 of yacc.c. */
243 #line 244 "parse-gram.c"
245 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
246 # define YYSTYPE_IS_DECLARED 1
247 # define YYSTYPE_IS_TRIVIAL 1
250 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
251 typedef struct YYLTYPE
258 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
259 # define YYLTYPE_IS_DECLARED 1
260 # define YYLTYPE_IS_TRIVIAL 1
264 /* Copy the second part of user declarations. */
266 /* Line 219 of yacc.c. */
267 #line 268 "parse-gram.c"
274 typedef YYTYPE_UINT8 yytype_uint8
;
276 typedef unsigned char yytype_uint8
;
280 typedef YYTYPE_INT8 yytype_int8
;
281 #elif (defined __STDC__ || defined __C99__FUNC__ \
282 || defined __cplusplus || defined _MSC_VER)
283 typedef signed char yytype_int8
;
285 typedef short int yytype_int8
;
289 typedef YYTYPE_UINT16 yytype_uint16
;
291 typedef unsigned short int yytype_uint16
;
295 typedef YYTYPE_INT16 yytype_int16
;
297 typedef short int yytype_int16
;
301 # ifdef __SIZE_TYPE__
302 # define YYSIZE_T __SIZE_TYPE__
303 # elif defined size_t
304 # define YYSIZE_T size_t
305 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
306 || defined __cplusplus || defined _MSC_VER)
307 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
308 # define YYSIZE_T size_t
310 # define YYSIZE_T unsigned int
314 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
319 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
320 # define YY_(msgid) dgettext ("bison-runtime", msgid)
324 # define YY_(msgid) msgid
328 /* Suppress unused-variable warnings by "using" E. */
329 #if ! defined lint || defined __GNUC__
330 # define YYUSE(e) ((void) (e))
332 # define YYUSE(e) /* empty */
335 /* Identity function, used to suppress warnings about constant conditions. */
339 #if (defined __STDC__ || defined __C99__FUNC__ \
340 || defined __cplusplus || defined _MSC_VER)
353 #if ! defined yyoverflow || YYERROR_VERBOSE
355 /* The parser invokes alloca or malloc; define the necessary symbols. */
357 # ifdef YYSTACK_USE_ALLOCA
358 # if YYSTACK_USE_ALLOCA
360 # define YYSTACK_ALLOC __builtin_alloca
361 # elif defined __BUILTIN_VA_ARG_INCR
362 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
364 # define YYSTACK_ALLOC __alloca
365 # elif defined _MSC_VER
366 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
367 # define alloca _alloca
369 # define YYSTACK_ALLOC alloca
370 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
371 || defined __cplusplus || defined _MSC_VER)
372 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
381 # ifdef YYSTACK_ALLOC
382 /* Pacify GCC's `empty if-body' warning. */
383 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
384 # ifndef YYSTACK_ALLOC_MAXIMUM
385 /* The OS might guarantee only one guard page at the bottom of the stack,
386 and a page size can be as small as 4096 bytes. So we cannot safely
387 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
388 to allow for a few compiler-allocated temporary stack slots. */
389 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
392 # define YYSTACK_ALLOC YYMALLOC
393 # define YYSTACK_FREE YYFREE
394 # ifndef YYSTACK_ALLOC_MAXIMUM
395 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
397 # if (defined __cplusplus && ! defined _STDLIB_H \
398 && ! ((defined YYMALLOC || defined malloc) \
399 && (defined YYFREE || defined free)))
400 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
406 # define YYMALLOC malloc
407 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
408 || defined __cplusplus || defined _MSC_VER)
409 void *malloc (YYSIZE_T
); /* INFRINGES ON USER NAME SPACE */
414 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
415 || defined __cplusplus || defined _MSC_VER)
416 void free (void *); /* INFRINGES ON USER NAME SPACE */
420 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
423 #if (! defined yyoverflow \
424 && (! defined __cplusplus \
425 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
426 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
428 /* A type that is properly aligned for any stack member. */
436 /* The size of the maximum gap between one aligned stack and the next. */
437 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
439 /* The size of an array large to enough to hold all stacks, each with
441 # define YYSTACK_BYTES(N) \
442 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
443 + 2 * YYSTACK_GAP_MAXIMUM)
445 /* Copy COUNT objects from FROM to TO. The source and destination do
448 # if defined __GNUC__ && 1 < __GNUC__
449 # define YYCOPY(To, From, Count) \
450 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
452 # define YYCOPY(To, From, Count) \
456 for (yyi = 0; yyi < (Count); yyi++) \
457 (To)[yyi] = (From)[yyi]; \
463 /* Relocate STACK from its old location to the new one. The
464 local variables YYSIZE and YYSTACKSIZE give the old and new number of
465 elements in the stack, and YYPTR gives the new location of the
466 stack. Advance YYPTR to a properly aligned location for the next
468 # define YYSTACK_RELOCATE(Stack) \
471 YYSIZE_T yynewbytes; \
472 YYCOPY (&yyptr->Stack, Stack, yysize); \
473 Stack = &yyptr->Stack; \
474 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
475 yyptr += yynewbytes / sizeof (*yyptr); \
481 /* YYFINAL -- State number of the termination state. */
483 /* YYLAST -- Last index in YYTABLE. */
486 /* YYNTOKENS -- Number of terminals. */
488 /* YYNNTS -- Number of nonterminals. */
490 /* YYNRULES -- Number of rules. */
492 /* YYNRULES -- Number of states. */
493 #define YYNSTATES 128
495 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
497 #define YYMAXUTOK 311
499 #define YYTRANSLATE(YYX) \
500 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
502 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
503 static const yytype_uint8 yytranslate
[] =
505 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
506 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
507 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
508 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
509 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
512 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
513 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
516 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
517 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
518 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
519 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
520 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
521 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
522 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
523 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
524 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
525 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
526 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
527 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
528 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
529 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
530 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
531 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
532 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
533 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
534 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
535 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
540 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
542 static const yytype_uint8 yyprhs
[] =
544 0, 0, 3, 8, 9, 12, 14, 16, 19, 22,
545 24, 27, 31, 33, 36, 38, 41, 44, 48, 50,
546 53, 56, 58, 62, 64, 66, 70, 73, 75, 78,
547 81, 84, 86, 88, 90, 92, 94, 96, 99, 103,
548 107, 109, 111, 112, 114, 118, 119, 123, 124, 128,
549 132, 136, 138, 140, 142, 143, 145, 147, 150, 152,
550 154, 157, 160, 164, 166, 169, 171, 174, 176, 179,
551 182, 183, 187, 189, 193, 196, 197, 200, 203, 207,
552 211, 215, 217, 219, 221, 223, 225, 227, 229, 230
555 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
556 static const yytype_int8 yyrhs
[] =
558 58, 0, -1, 59, 51, 72, 83, -1, -1, 59,
559 60, -1, 61, -1, 53, -1, 16, 45, -1, 17,
560 45, -1, 18, -1, 20, 82, -1, 20, 82, 82,
561 -1, 21, -1, 22, 45, -1, 23, -1, 24, 4,
562 -1, 25, 4, -1, 26, 48, 82, -1, 27, -1,
563 28, 45, -1, 29, 45, -1, 30, -1, 31, 48,
564 82, -1, 33, -1, 34, -1, 35, 48, 82, -1,
565 36, 45, -1, 37, -1, 38, 82, -1, 39, 82,
566 -1, 41, 45, -1, 42, -1, 43, -1, 44, -1,
567 54, -1, 66, -1, 63, -1, 40, 80, -1, 8,
568 45, 69, -1, 9, 45, 69, -1, 19, -1, 32,
569 -1, -1, 49, -1, 56, 62, 45, -1, -1, 6,
570 64, 71, -1, -1, 5, 65, 71, -1, 7, 55,
571 69, -1, 67, 68, 69, -1, 10, -1, 11, -1,
572 12, -1, -1, 55, -1, 80, -1, 69, 80, -1,
573 55, -1, 78, -1, 78, 4, -1, 78, 81, -1,
574 78, 4, 81, -1, 70, -1, 71, 70, -1, 73,
575 -1, 72, 73, -1, 74, -1, 61, 54, -1, 1,
576 54, -1, -1, 79, 75, 76, -1, 77, -1, 76,
577 52, 77, -1, 76, 54, -1, -1, 77, 80, -1,
578 77, 45, -1, 77, 13, 80, -1, 77, 14, 4,
579 -1, 77, 15, 55, -1, 49, -1, 46, -1, 50,
580 -1, 78, -1, 81, -1, 3, -1, 3, -1, -1,
584 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
585 static const yytype_uint16 yyrline
[] =
587 0, 195, 195, 203, 205, 209, 210, 214, 220, 226,
588 227, 232, 233, 234, 240, 241, 242, 243, 244, 249,
589 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
590 263, 269, 270, 271, 272, 276, 277, 278, 282, 290,
591 298, 302, 316, 317, 321, 343, 343, 348, 348, 353,
592 363, 378, 379, 380, 384, 385, 390, 391, 396, 400,
593 405, 411, 417, 428, 429, 438, 439, 445, 446, 447,
594 454, 454, 458, 459, 460, 465, 466, 468, 470, 472,
595 474, 487, 489, 498, 503, 504, 509, 518, 523, 525
599 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
600 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
601 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
602 static const char *const yytname
[] =
604 "\"end of file\"", "error", "$undefined", "\"string\"", "\"integer\"",
605 "\"%token\"", "\"%nterm\"", "\"%type\"", "\"%destructor\"",
606 "\"%printer\"", "\"%left\"", "\"%right\"", "\"%nonassoc\"", "\"%prec\"",
607 "\"%dprec\"", "\"%merge\"", "\"%after-header\"", "\"%before-header\"",
608 "\"%debug\"", "\"%default-prec\"", "\"%define\"", "\"%defines\"",
609 "\"%end-header\"", "\"%error-verbose\"", "\"%expect\"", "\"%expect-rr\"",
610 "\"%file-prefix\"", "\"%glr-parser\"", "\"%initial-action\"",
611 "\"%lex-param\"", "\"%locations\"", "\"%name-prefix\"",
612 "\"%no-default-prec\"", "\"%no-lines\"", "\"%nondeterministic-parser\"",
613 "\"%output\"", "\"%parse-param\"", "\"%pure-parser\"", "\"%require\"",
614 "\"%skeleton\"", "\"%start\"", "\"%start-header\"", "\"%token-table\"",
615 "\"%verbose\"", "\"%yacc\"", "\"{...}\"", "\"char\"", "\"epilogue\"",
616 "\"=\"", "\"identifier\"", "\"identifier:\"", "\"%%\"", "\"|\"",
617 "\"%{...%}\"", "\";\"", "\"type\"", "\"%union\"", "$accept", "input",
618 "declarations", "declaration", "grammar_declaration", "union_name",
619 "symbol_declaration", "@1", "@2", "precedence_declaration",
620 "precedence_declarator", "type.opt", "symbols.1", "symbol_def",
621 "symbol_defs.1", "grammar", "rules_or_grammar_declaration", "rules",
622 "@3", "rhses.1", "rhs", "id", "id_colon", "symbol", "string_as_id",
623 "string_content", "epilogue.opt", 0
628 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
630 static const yytype_uint16 yytoknum
[] =
632 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
633 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
634 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
635 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
636 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
637 305, 306, 307, 308, 309, 310, 311
641 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
642 static const yytype_uint8 yyr1
[] =
644 0, 57, 58, 59, 59, 60, 60, 60, 60, 60,
645 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
646 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
647 60, 60, 60, 60, 60, 61, 61, 61, 61, 61,
648 61, 61, 62, 62, 61, 64, 63, 65, 63, 63,
649 66, 67, 67, 67, 68, 68, 69, 69, 70, 70,
650 70, 70, 70, 71, 71, 72, 72, 73, 73, 73,
651 75, 74, 76, 76, 76, 77, 77, 77, 77, 77,
652 77, 78, 78, 79, 80, 80, 81, 82, 83, 83
655 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
656 static const yytype_uint8 yyr2
[] =
658 0, 2, 4, 0, 2, 1, 1, 2, 2, 1,
659 2, 3, 1, 2, 1, 2, 2, 3, 1, 2,
660 2, 1, 3, 1, 1, 3, 2, 1, 2, 2,
661 2, 1, 1, 1, 1, 1, 1, 2, 3, 3,
662 1, 1, 0, 1, 3, 0, 3, 0, 3, 3,
663 3, 1, 1, 1, 0, 1, 1, 2, 1, 1,
664 2, 2, 3, 1, 2, 1, 2, 1, 2, 2,
665 0, 3, 1, 3, 2, 0, 2, 2, 3, 3,
666 3, 1, 1, 1, 1, 1, 1, 1, 0, 2
669 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
670 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
671 means the default is an error. */
672 static const yytype_uint8 yydefact
[] =
674 3, 0, 0, 1, 47, 45, 0, 0, 0, 51,
675 52, 53, 0, 0, 9, 40, 0, 12, 0, 14,
676 0, 0, 0, 18, 0, 0, 21, 0, 41, 23,
677 24, 0, 0, 27, 0, 0, 0, 0, 31, 32,
678 33, 0, 6, 34, 42, 4, 5, 36, 35, 54,
679 0, 0, 0, 0, 0, 7, 8, 87, 10, 13,
680 15, 16, 0, 19, 20, 0, 0, 26, 28, 29,
681 86, 82, 81, 84, 37, 85, 30, 0, 83, 0,
682 0, 65, 67, 70, 43, 0, 55, 0, 58, 63,
683 48, 59, 46, 49, 56, 38, 39, 11, 17, 22,
684 25, 69, 68, 0, 66, 2, 75, 44, 50, 64,
685 60, 61, 57, 89, 71, 72, 62, 75, 74, 0,
686 0, 0, 77, 76, 73, 78, 79, 80
689 /* YYDEFGOTO[NTERM-NUM]. */
690 static const yytype_int8 yydefgoto
[] =
692 -1, 1, 2, 45, 79, 85, 47, 51, 50, 48,
693 49, 87, 93, 89, 90, 80, 81, 82, 106, 114,
694 115, 73, 83, 94, 75, 58, 105
697 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
699 #define YYPACT_NINF -76
700 static const yytype_int16 yypact
[] =
702 -76, 6, 136, -76, -76, -76, -40, -12, -9, -76,
703 -76, -76, -5, 1, -76, -76, 40, -76, 5, -76,
704 47, 50, 7, -76, 11, 18, -76, 19, -76, -76,
705 -76, 20, 25, -76, 40, 40, -2, 26, -76, -76,
706 -76, 84, -76, -76, 27, -76, -76, -76, -76, 14,
707 -23, -23, -2, -2, -2, -76, -76, -76, 40, -76,
708 -76, -76, 40, -76, -76, 40, 40, -76, -76, -76,
709 -76, -76, -76, -76, -76, -76, -76, 21, -76, 23,
710 2, -76, -76, -76, -76, 28, -76, -2, -76, -76,
711 -23, 24, -23, -2, -76, -2, -2, -76, -76, -76,
712 -76, -76, -76, 31, -76, -76, -76, -76, -2, -76,
713 71, -76, -76, -76, -32, 16, -76, -76, -76, -2,
714 76, 29, -76, -76, 16, -76, -76, -76
717 /* YYPGOTO[NTERM-NUM]. */
718 static const yytype_int8 yypgoto
[] =
720 -76, -76, -76, -76, 79, -76, -76, -76, -76, -76,
721 -76, -76, -49, -53, 35, -76, 17, -76, -76, -76,
722 -35, -26, -76, -36, -75, -17, -76
725 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
726 positive, shift that token. If negative, reduce the rule which
727 number is the opposite. If zero, do what YYDEFACT says.
728 If YYTABLE_NINF, syntax error. */
729 #define YYTABLE_NINF -89
730 static const yytype_int8 yytable
[] =
732 74, 70, -88, 77, 95, 96, 3, 4, 5, 6,
733 7, 8, 9, 10, 11, 52, 111, 68, 69, 70,
734 117, 15, 118, 71, 91, 91, 72, 70, 110, 119,
735 120, 121, 88, 53, 28, 116, 54, 109, 108, 109,
736 55, 97, 36, 57, 71, 98, 56, 72, 99, 100,
737 59, 60, 78, 103, 61, 62, 63, 112, 44, 112,
738 112, 122, 71, 64, 91, 72, 91, 65, 66, 86,
739 67, 76, 112, 107, 70, 101, 84, 102, 113, 123,
740 126, 46, 124, 125, 127, 77, 92, 0, 123, 4,
741 5, 6, 7, 8, 9, 10, 11, 104, 0, 0,
742 0, 0, 0, 15, 0, 0, 0, 0, 0, 0,
743 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,
744 0, 0, 0, 0, 36, 0, 0, 0, 0, 0,
745 0, 0, 0, 0, 78, 0, 0, 0, 0, 0,
746 44, 4, 5, 6, 7, 8, 9, 10, 11, 0,
747 0, 0, 12, 13, 14, 15, 16, 17, 18, 19,
748 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
749 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
750 40, 0, 0, 0, 0, 0, 0, 41, 0, 42,
754 static const yytype_int8 yycheck
[] =
756 36, 3, 0, 1, 53, 54, 0, 5, 6, 7,
757 8, 9, 10, 11, 12, 55, 91, 34, 35, 3,
758 52, 19, 54, 46, 50, 51, 49, 3, 4, 13,
759 14, 15, 55, 45, 32, 110, 45, 90, 87, 92,
760 45, 58, 40, 3, 46, 62, 45, 49, 65, 66,
761 45, 4, 50, 51, 4, 48, 45, 93, 56, 95,
762 96, 45, 46, 45, 90, 49, 92, 48, 48, 55,
763 45, 45, 108, 45, 3, 54, 49, 54, 47, 115,
764 4, 2, 117, 119, 55, 1, 51, -1, 124, 5,
765 6, 7, 8, 9, 10, 11, 12, 80, -1, -1,
766 -1, -1, -1, 19, -1, -1, -1, -1, -1, -1,
767 -1, -1, -1, -1, -1, -1, 32, -1, -1, -1,
768 -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
769 -1, -1, -1, -1, 50, -1, -1, -1, -1, -1,
770 56, 5, 6, 7, 8, 9, 10, 11, 12, -1,
771 -1, -1, 16, 17, 18, 19, 20, 21, 22, 23,
772 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
773 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
774 44, -1, -1, -1, -1, -1, -1, 51, -1, 53,
778 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
779 symbol of state STATE-NUM. */
780 static const yytype_uint8 yystos
[] =
782 0, 58, 59, 0, 5, 6, 7, 8, 9, 10,
783 11, 12, 16, 17, 18, 19, 20, 21, 22, 23,
784 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
785 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
786 44, 51, 53, 54, 56, 60, 61, 63, 66, 67,
787 65, 64, 55, 45, 45, 45, 45, 3, 82, 45,
788 4, 4, 48, 45, 45, 48, 48, 45, 82, 82,
789 3, 46, 49, 78, 80, 81, 45, 1, 50, 61,
790 72, 73, 74, 79, 49, 62, 55, 68, 55, 70,
791 71, 78, 71, 69, 80, 69, 69, 82, 82, 82,
792 82, 54, 54, 51, 73, 83, 75, 45, 69, 70,
793 4, 81, 80, 47, 76, 77, 81, 52, 54, 13,
794 14, 15, 45, 80, 77, 80, 4, 55
797 #define yyerrok (yyerrstatus = 0)
798 #define yyclearin (yychar = YYEMPTY)
802 #define YYACCEPT goto yyacceptlab
803 #define YYABORT goto yyabortlab
804 #define YYERROR goto yyerrorlab
807 /* Like YYERROR except do call yyerror. This remains here temporarily
808 to ease the transition to the new meaning of YYERROR, for GCC.
809 Once GCC version 2 has supplanted version 1, this can go. */
811 #define YYFAIL goto yyerrlab
813 #define YYRECOVERING() (!!yyerrstatus)
815 #define YYBACKUP(Token, Value) \
817 if (yychar == YYEMPTY && yylen == 1) \
821 yytoken = YYTRANSLATE (yychar); \
827 yyerror (YY_("syntax error: cannot back up")); \
834 #define YYERRCODE 256
837 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
838 If N is 0, then set CURRENT to the empty location which ends
839 the previous symbol: RHS[0] (always defined). */
841 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
842 #ifndef YYLLOC_DEFAULT
843 # define YYLLOC_DEFAULT(Current, Rhs, N) \
847 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
848 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
849 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
850 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
854 (Current).first_line = (Current).last_line = \
855 YYRHSLOC (Rhs, 0).last_line; \
856 (Current).first_column = (Current).last_column = \
857 YYRHSLOC (Rhs, 0).last_column; \
863 /* YY_LOCATION_PRINT -- Print the location on the stream.
864 This macro was not mandated originally: define only if we know
865 we won't break user code: when these are the locations we know. */
867 #ifndef YY_LOCATION_PRINT
868 # if YYLTYPE_IS_TRIVIAL
869 # define YY_LOCATION_PRINT(File, Loc) \
870 fprintf (File, "%d.%d-%d.%d", \
871 (Loc).first_line, (Loc).first_column, \
872 (Loc).last_line, (Loc).last_column)
874 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
879 /* YYLEX -- calling `yylex' with the right arguments. */
882 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
884 # define YYLEX yylex (&yylval, &yylloc)
887 /* Enable debugging if requested. */
891 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
892 # define YYFPRINTF fprintf
895 # define YYDPRINTF(Args) \
901 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
905 YYFPRINTF (stderr, "%s ", Title); \
906 yy_symbol_print (stderr, \
907 Type, Value, Location); \
908 YYFPRINTF (stderr, "\n"); \
913 /*--------------------------------.
914 | Print this symbol on YYOUTPUT. |
915 `--------------------------------*/
918 #if (defined __STDC__ || defined __C99__FUNC__ \
919 || defined __cplusplus || defined _MSC_VER)
921 yy_symbol_value_print (FILE *yyoutput
, int yytype
, YYSTYPE
const * const yyvaluep
, YYLTYPE
const * const yylocationp
)
924 yy_symbol_value_print (yyoutput
, yytype
, yyvaluep
, yylocationp
)
927 YYSTYPE
const * const yyvaluep
;
928 YYLTYPE
const * const yylocationp
;
935 if (yytype
< YYNTOKENS
)
936 YYPRINT (yyoutput
, yytoknum
[yytype
], *yyvaluep
);
942 case 3: /* "\"string\"" */
943 /* Line 668 of yacc.c. */
944 #line 174 "parse-gram.y"
945 { fputs (quotearg_style (c_quoting_style
, (yyvaluep
->chars
)), stderr
); };
946 /* Line 668 of yacc.c. */
947 #line 948 "parse-gram.c"
949 case 4: /* "\"integer\"" */
950 /* Line 668 of yacc.c. */
951 #line 184 "parse-gram.y"
952 { fprintf (stderr
, "%d", (yyvaluep
->integer
)); };
953 /* Line 668 of yacc.c. */
954 #line 955 "parse-gram.c"
956 case 45: /* "\"{...}\"" */
957 /* Line 668 of yacc.c. */
958 #line 176 "parse-gram.y"
959 { fprintf (stderr
, "{\n%s\n}", (yyvaluep
->chars
)); };
960 /* Line 668 of yacc.c. */
961 #line 962 "parse-gram.c"
963 case 46: /* "\"char\"" */
964 /* Line 668 of yacc.c. */
965 #line 171 "parse-gram.y"
966 { fputs (char_name ((yyvaluep
->character
)), stderr
); };
967 /* Line 668 of yacc.c. */
968 #line 969 "parse-gram.c"
970 case 47: /* "\"epilogue\"" */
971 /* Line 668 of yacc.c. */
972 #line 176 "parse-gram.y"
973 { fprintf (stderr
, "{\n%s\n}", (yyvaluep
->chars
)); };
974 /* Line 668 of yacc.c. */
975 #line 976 "parse-gram.c"
977 case 49: /* "\"identifier\"" */
978 /* Line 668 of yacc.c. */
979 #line 180 "parse-gram.y"
980 { fputs ((yyvaluep
->uniqstr
), stderr
); };
981 /* Line 668 of yacc.c. */
982 #line 983 "parse-gram.c"
984 case 50: /* "\"identifier:\"" */
985 /* Line 668 of yacc.c. */
986 #line 181 "parse-gram.y"
987 { fprintf (stderr
, "%s:", (yyvaluep
->uniqstr
)); };
988 /* Line 668 of yacc.c. */
989 #line 990 "parse-gram.c"
991 case 53: /* "\"%{...%}\"" */
992 /* Line 668 of yacc.c. */
993 #line 176 "parse-gram.y"
994 { fprintf (stderr
, "{\n%s\n}", (yyvaluep
->chars
)); };
995 /* Line 668 of yacc.c. */
996 #line 997 "parse-gram.c"
998 case 55: /* "\"type\"" */
999 /* Line 668 of yacc.c. */
1000 #line 179 "parse-gram.y"
1001 { fprintf (stderr
, "<%s>", (yyvaluep
->uniqstr
)); };
1002 /* Line 668 of yacc.c. */
1003 #line 1004 "parse-gram.c"
1006 /* Line 668 of yacc.c. */
1007 #line 187 "parse-gram.y"
1008 { fprintf (stderr
, "%s", (yyvaluep
->symbol
)->tag
); };
1009 /* Line 668 of yacc.c. */
1010 #line 1011 "parse-gram.c"
1012 case 79: /* "id_colon" */
1013 /* Line 668 of yacc.c. */
1014 #line 188 "parse-gram.y"
1015 { fprintf (stderr
, "%s:", (yyvaluep
->symbol
)->tag
); };
1016 /* Line 668 of yacc.c. */
1017 #line 1018 "parse-gram.c"
1019 case 80: /* "symbol" */
1020 /* Line 668 of yacc.c. */
1021 #line 187 "parse-gram.y"
1022 { fprintf (stderr
, "%s", (yyvaluep
->symbol
)->tag
); };
1023 /* Line 668 of yacc.c. */
1024 #line 1025 "parse-gram.c"
1026 case 81: /* "string_as_id" */
1027 /* Line 668 of yacc.c. */
1028 #line 187 "parse-gram.y"
1029 { fprintf (stderr
, "%s", (yyvaluep
->symbol
)->tag
); };
1030 /* Line 668 of yacc.c. */
1031 #line 1032 "parse-gram.c"
1033 case 82: /* "string_content" */
1034 /* Line 668 of yacc.c. */
1035 #line 174 "parse-gram.y"
1036 { fputs (quotearg_style (c_quoting_style
, (yyvaluep
->chars
)), stderr
); };
1037 /* Line 668 of yacc.c. */
1038 #line 1039 "parse-gram.c"
1046 /*--------------------------------.
1047 | Print this symbol on YYOUTPUT. |
1048 `--------------------------------*/
1050 #if (defined __STDC__ || defined __C99__FUNC__ \
1051 || defined __cplusplus || defined _MSC_VER)
1053 yy_symbol_print (FILE *yyoutput
, int yytype
, YYSTYPE
const * const yyvaluep
, YYLTYPE
const * const yylocationp
)
1056 yy_symbol_print (yyoutput
, yytype
, yyvaluep
, yylocationp
)
1059 YYSTYPE
const * const yyvaluep
;
1060 YYLTYPE
const * const yylocationp
;
1063 if (yytype
< YYNTOKENS
)
1064 YYFPRINTF (yyoutput
, "token %s (", yytname
[yytype
]);
1066 YYFPRINTF (yyoutput
, "nterm %s (", yytname
[yytype
]);
1068 YY_LOCATION_PRINT (yyoutput
, *yylocationp
);
1069 YYFPRINTF (yyoutput
, ": ");
1070 yy_symbol_value_print (yyoutput
, yytype
, yyvaluep
, yylocationp
);
1071 YYFPRINTF (yyoutput
, ")");
1074 /*------------------------------------------------------------------.
1075 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1077 `------------------------------------------------------------------*/
1079 #if (defined __STDC__ || defined __C99__FUNC__ \
1080 || defined __cplusplus || defined _MSC_VER)
1082 yy_stack_print (yytype_int16
*yybottom
, yytype_int16
*yytop
)
1085 yy_stack_print (yybottom
, yytop
)
1086 yytype_int16
*yybottom
;
1087 yytype_int16
*yytop
;
1090 YYFPRINTF (stderr
, "Stack now");
1091 for (; yybottom
<= yytop
; yybottom
++)
1093 int yybot
= *yybottom
;
1094 YYFPRINTF (stderr
, " %d", yybot
);
1096 YYFPRINTF (stderr
, "\n");
1099 # define YY_STACK_PRINT(Bottom, Top) \
1102 yy_stack_print ((Bottom), (Top)); \
1106 /*------------------------------------------------.
1107 | Report that the YYRULE is going to be reduced. |
1108 `------------------------------------------------*/
1110 #if (defined __STDC__ || defined __C99__FUNC__ \
1111 || defined __cplusplus || defined _MSC_VER)
1113 yy_reduce_print (YYSTYPE
*yyvsp
, YYLTYPE
*yylsp
, int yyrule
)
1116 yy_reduce_print (yyvsp
, yylsp
, yyrule
)
1122 int yynrhs
= yyr2
[yyrule
];
1124 unsigned long int yylno
= yyrline
[yyrule
];
1125 YYFPRINTF (stderr
, "Reducing stack by rule %d (line %lu):\n",
1127 /* The symbols being reduced. */
1128 for (yyi
= 0; yyi
< yynrhs
; yyi
++)
1130 fprintf (stderr
, " $%d = ", yyi
+ 1);
1131 yy_symbol_print (stderr
, yyrhs
[yyprhs
[yyrule
] + yyi
],
1132 &(yyvsp
[(yyi
+ 1) - (yynrhs
)])
1133 , &(yylsp
[(yyi
+ 1) - (yynrhs
)]) );
1134 fprintf (stderr
, "\n");
1138 # define YY_REDUCE_PRINT(Rule) \
1141 yy_reduce_print (yyvsp, yylsp, Rule); \
1144 /* Nonzero means print parse trace. It is left uninitialized so that
1145 multiple parsers can coexist. */
1147 #else /* !YYDEBUG */
1148 # define YYDPRINTF(Args)
1149 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1150 # define YY_STACK_PRINT(Bottom, Top)
1151 # define YY_REDUCE_PRINT(Rule)
1152 #endif /* !YYDEBUG */
1155 /* YYINITDEPTH -- initial size of the parser's stacks. */
1157 # define YYINITDEPTH 200
1160 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1161 if the built-in stack extension method is used).
1163 Do not make this value too large; the results are undefined if
1164 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1165 evaluated with infinite-precision integer arithmetic. */
1168 # define YYMAXDEPTH 10000
1176 # if defined __GLIBC__ && defined _STRING_H
1177 # define yystrlen strlen
1179 /* Return the length of YYSTR. */
1180 #if (defined __STDC__ || defined __C99__FUNC__ \
1181 || defined __cplusplus || defined _MSC_VER)
1183 yystrlen (const char *yystr
)
1191 for (yylen
= 0; yystr
[yylen
]; yylen
++)
1199 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1200 # define yystpcpy stpcpy
1202 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1204 #if (defined __STDC__ || defined __C99__FUNC__ \
1205 || defined __cplusplus || defined _MSC_VER)
1207 yystpcpy (char *yydest
, const char *yysrc
)
1210 yystpcpy (yydest
, yysrc
)
1216 const char *yys
= yysrc
;
1218 while ((*yyd
++ = *yys
++) != '\0')
1227 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1228 quotes and backslashes, so that it's suitable for yyerror. The
1229 heuristic is that double-quoting is unnecessary unless the string
1230 contains an apostrophe, a comma, or backslash (other than
1231 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1232 null, do not copy; instead, return the length of what the result
1235 yytnamerr (char *yyres
, const char *yystr
)
1240 char const *yyp
= yystr
;
1247 goto do_not_strip_quotes
;
1251 goto do_not_strip_quotes
;
1264 do_not_strip_quotes
: ;
1268 return yystrlen (yystr
);
1270 return yystpcpy (yyres
, yystr
) - yyres
;
1274 /* Copy into YYRESULT an error message about the unexpected token
1275 YYCHAR while in state YYSTATE. Return the number of bytes copied,
1276 including the terminating null byte. If YYRESULT is null, do not
1277 copy anything; just return the number of bytes that would be
1278 copied. As a special case, return 0 if an ordinary "syntax error"
1279 message will do. Return YYSIZE_MAXIMUM if overflow occurs during
1280 size calculation. */
1282 yysyntax_error (char *yyresult
, int yystate
, int yychar
)
1284 int yyn
= yypact
[yystate
];
1286 if (! (YYPACT_NINF
< yyn
&& yyn
<= YYLAST
))
1290 int yytype
= YYTRANSLATE (yychar
);
1291 YYSIZE_T yysize0
= yytnamerr (0, yytname
[yytype
]);
1292 YYSIZE_T yysize
= yysize0
;
1294 int yysize_overflow
= 0;
1295 enum { YYERROR_VERBOSE_ARGS_MAXIMUM
= 5 };
1296 char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
];
1300 /* This is so xgettext sees the translatable formats that are
1301 constructed on the fly. */
1302 YY_("syntax error, unexpected %s");
1303 YY_("syntax error, unexpected %s, expecting %s");
1304 YY_("syntax error, unexpected %s, expecting %s or %s");
1305 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1306 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1310 static char const yyunexpected
[] = "syntax error, unexpected %s";
1311 static char const yyexpecting
[] = ", expecting %s";
1312 static char const yyor
[] = " or %s";
1313 char yyformat
[sizeof yyunexpected
1314 + sizeof yyexpecting
- 1
1315 + ((YYERROR_VERBOSE_ARGS_MAXIMUM
- 2)
1316 * (sizeof yyor
- 1))];
1317 char const *yyprefix
= yyexpecting
;
1319 /* Start YYX at -YYN if negative to avoid negative indexes in
1321 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
1323 /* Stay within bounds of both yycheck and yytname. */
1324 int yychecklim
= YYLAST
- yyn
+ 1;
1325 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
1328 yyarg
[0] = yytname
[yytype
];
1329 yyfmt
= yystpcpy (yyformat
, yyunexpected
);
1331 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1332 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1334 if (yycount
== YYERROR_VERBOSE_ARGS_MAXIMUM
)
1338 yyformat
[sizeof yyunexpected
- 1] = '\0';
1341 yyarg
[yycount
++] = yytname
[yyx
];
1342 yysize1
= yysize
+ yytnamerr (0, yytname
[yyx
]);
1343 yysize_overflow
|= (yysize1
< yysize
);
1345 yyfmt
= yystpcpy (yyfmt
, yyprefix
);
1349 yyf
= YY_(yyformat
);
1350 yysize1
= yysize
+ yystrlen (yyf
);
1351 yysize_overflow
|= (yysize1
< yysize
);
1354 if (yysize_overflow
)
1355 return YYSIZE_MAXIMUM
;
1359 /* Avoid sprintf, as that infringes on the user's name space.
1360 Don't have undefined behavior even if the translation
1361 produced a string with the wrong number of "%s"s. */
1362 char *yyp
= yyresult
;
1364 while ((*yyp
= *yyf
) != '\0')
1366 if (*yyp
== '%' && yyf
[1] == 's' && yyi
< yycount
)
1368 yyp
+= yytnamerr (yyp
, yyarg
[yyi
++]);
1381 #endif /* YYERROR_VERBOSE */
1384 /*-----------------------------------------------.
1385 | Release the memory associated to this symbol. |
1386 `-----------------------------------------------*/
1389 #if (defined __STDC__ || defined __C99__FUNC__ \
1390 || defined __cplusplus || defined _MSC_VER)
1392 yydestruct (const char *yymsg
, int yytype
, YYSTYPE
*yyvaluep
, YYLTYPE
*yylocationp
)
1395 yydestruct (yymsg
, yytype
, yyvaluep
, yylocationp
)
1399 YYLTYPE
*yylocationp
;
1403 YYUSE (yylocationp
);
1407 YY_SYMBOL_PRINT (yymsg
, yytype
, yyvaluep
, yylocationp
);
1418 /* Prevent warnings from -Wmissing-prototypes. */
1420 #ifdef YYPARSE_PARAM
1421 #if defined __STDC__ || defined __cplusplus
1422 int yyparse (void *YYPARSE_PARAM
);
1426 #else /* ! YYPARSE_PARAM */
1427 #if defined __STDC__ || defined __cplusplus
1432 #endif /* ! YYPARSE_PARAM */
1443 #ifdef YYPARSE_PARAM
1444 #if (defined __STDC__ || defined __C99__FUNC__ \
1445 || defined __cplusplus || defined _MSC_VER)
1447 yyparse (void *YYPARSE_PARAM
)
1450 yyparse (YYPARSE_PARAM
)
1451 void *YYPARSE_PARAM
;
1453 #else /* ! YYPARSE_PARAM */
1454 #if (defined __STDC__ || defined __C99__FUNC__ \
1455 || defined __cplusplus || defined _MSC_VER)
1465 /* The lookahead symbol. */
1468 /* The semantic value of the lookahead symbol. */
1471 /* Number of syntax errors so far. */
1473 /* Location data for the lookahead symbol. */
1479 /* Number of tokens to shift before error messages enabled. */
1481 /* Lookahead token as an internal (translated) token number. */
1484 /* Buffer for error messages, and its allocated size. */
1486 char *yymsg
= yymsgbuf
;
1487 YYSIZE_T yymsg_alloc
= sizeof yymsgbuf
;
1490 /* Three stacks and their tools:
1491 `yyss': related to states,
1492 `yyvs': related to semantic values,
1493 `yyls': related to locations.
1495 Refer to the stacks thru separate pointers, to allow yyoverflow
1496 to reallocate them elsewhere. */
1498 /* The state stack. */
1499 yytype_int16 yyssa
[YYINITDEPTH
];
1500 yytype_int16
*yyss
= yyssa
;
1501 yytype_int16
*yyssp
;
1503 /* The semantic value stack. */
1504 YYSTYPE yyvsa
[YYINITDEPTH
];
1505 YYSTYPE
*yyvs
= yyvsa
;
1508 /* The location stack. */
1509 YYLTYPE yylsa
[YYINITDEPTH
];
1510 YYLTYPE
*yyls
= yylsa
;
1512 /* The locations where the error started and ended. */
1513 YYLTYPE yyerror_range
[2];
1515 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
1517 YYSIZE_T yystacksize
= YYINITDEPTH
;
1519 /* The variables used to return semantic value and location from the
1524 /* The number of symbols on the RHS of the reduced rule.
1525 Keep to zero when no symbol should be popped. */
1528 YYDPRINTF ((stderr
, "Starting parse\n"));
1533 yychar
= YYEMPTY
; /* Cause a token to be read. */
1535 /* Initialize stack pointers.
1536 Waste one element of value and location stack
1537 so that they stay on the same level as the state stack.
1538 The wasted elements are never initialized. */
1543 #if YYLTYPE_IS_TRIVIAL
1544 /* Initialize the default location before parsing starts. */
1545 yylloc
.first_line
= yylloc
.last_line
= 1;
1546 yylloc
.first_column
= yylloc
.last_column
= 1;
1550 /* User initialization code. */
1551 /* Line 1080 of yacc.c. */
1552 #line 81 "parse-gram.y"
1554 /* Bison's grammar can initial empty locations, hence a default
1555 location is needed. */
1556 boundary_set (&yylloc
.start
, current_file
, 1, 1);
1557 boundary_set (&yylloc
.end
, current_file
, 1, 1);
1559 /* Line 1080 of yacc.c. */
1560 #line 1561 "parse-gram.c"
1564 /*------------------------------------------------------------.
1565 | yynewstate -- Push a new state, which is found in yystate. |
1566 `------------------------------------------------------------*/
1568 /* In all cases, when you get here, the value and location stacks
1569 have just been pushed. So pushing a state here evens the stacks. */
1575 if (yyss
+ yystacksize
- 1 <= yyssp
)
1577 /* Get the current used size of the three stacks, in elements. */
1578 YYSIZE_T yysize
= yyssp
- yyss
+ 1;
1582 /* Give user a chance to reallocate the stack. Use copies of
1583 these so that the &'s don't force the real ones into
1585 YYSTYPE
*yyvs1
= yyvs
;
1586 yytype_int16
*yyss1
= yyss
;
1587 YYLTYPE
*yyls1
= yyls
;
1589 /* Each stack pointer address is followed by the size of the
1590 data in use in that stack, in bytes. This used to be a
1591 conditional around just the two extra args, but that might
1592 be undefined if yyoverflow is a macro. */
1593 yyoverflow (YY_("memory exhausted"),
1594 &yyss1
, yysize
* sizeof (*yyssp
),
1595 &yyvs1
, yysize
* sizeof (*yyvsp
),
1596 &yyls1
, yysize
* sizeof (*yylsp
),
1602 #else /* no yyoverflow */
1603 # ifndef YYSTACK_RELOCATE
1604 goto yyexhaustedlab
;
1606 /* Extend the stack our own way. */
1607 if (YYMAXDEPTH
<= yystacksize
)
1608 goto yyexhaustedlab
;
1610 if (YYMAXDEPTH
< yystacksize
)
1611 yystacksize
= YYMAXDEPTH
;
1614 yytype_int16
*yyss1
= yyss
;
1615 union yyalloc
*yyptr
=
1616 (union yyalloc
*) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize
));
1618 goto yyexhaustedlab
;
1619 YYSTACK_RELOCATE (yyss
);
1620 YYSTACK_RELOCATE (yyvs
);
1621 YYSTACK_RELOCATE (yyls
);
1622 # undef YYSTACK_RELOCATE
1624 YYSTACK_FREE (yyss1
);
1627 #endif /* no yyoverflow */
1629 yyssp
= yyss
+ yysize
- 1;
1630 yyvsp
= yyvs
+ yysize
- 1;
1631 yylsp
= yyls
+ yysize
- 1;
1633 YYDPRINTF ((stderr
, "Stack size increased to %lu\n",
1634 (unsigned long int) yystacksize
));
1636 if (yyss
+ yystacksize
- 1 <= yyssp
)
1640 YYDPRINTF ((stderr
, "Entering state %d\n", yystate
));
1649 /* Do appropriate processing given the current state. Read a
1650 lookahead token if we need one and don't already have one. */
1652 /* First try to decide what to do without reference to lookahead token. */
1653 yyn
= yypact
[yystate
];
1654 if (yyn
== YYPACT_NINF
)
1657 /* Not known => get a lookahead token if don't already have one. */
1659 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1660 if (yychar
== YYEMPTY
)
1662 YYDPRINTF ((stderr
, "Reading a token: "));
1666 if (yychar
<= YYEOF
)
1668 yychar
= yytoken
= YYEOF
;
1669 YYDPRINTF ((stderr
, "Now at end of input.\n"));
1673 yytoken
= YYTRANSLATE (yychar
);
1674 YY_SYMBOL_PRINT ("Next token is", yytoken
, &yylval
, &yylloc
);
1677 /* If the proper action on seeing token YYTOKEN is to reduce or to
1678 detect an error, take that action. */
1680 if (yyn
< 0 || YYLAST
< yyn
|| yycheck
[yyn
] != yytoken
)
1685 if (yyn
== 0 || yyn
== YYTABLE_NINF
)
1694 /* Count tokens shifted since error; after three, turn off error
1699 /* Shift the lookahead token. */
1700 YY_SYMBOL_PRINT ("Shifting", yytoken
, &yylval
, &yylloc
);
1702 /* Discard the shifted token unless it is eof. */
1703 if (yychar
!= YYEOF
)
1712 /*-----------------------------------------------------------.
1713 | yydefault -- do the default action for the current state. |
1714 `-----------------------------------------------------------*/
1716 yyn
= yydefact
[yystate
];
1722 /*-----------------------------.
1723 | yyreduce -- Do a reduction. |
1724 `-----------------------------*/
1726 /* yyn is the number of a rule to reduce with. */
1729 /* If YYLEN is nonzero, implement the default value of the action:
1732 Otherwise, the following line sets YYVAL to garbage.
1733 This behavior is undocumented and Bison
1734 users should not rely upon it. Assigning to YYVAL
1735 unconditionally makes the parser a bit smaller, and it avoids a
1736 GCC warning that YYVAL may be used uninitialized. */
1737 yyval
= yyvsp
[1-yylen
];
1739 /* Default location. */
1740 YYLLOC_DEFAULT (yyloc
, (yylsp
- yylen
), yylen
);
1741 YY_REDUCE_PRINT (yyn
);
1745 /* Line 1268 of yacc.c. */
1746 #line 211 "parse-gram.y"
1748 prologue_augment (translate_code ((yyvsp
[(1) - (1)].chars
), (yylsp
[(1) - (1)])), (yylsp
[(1) - (1)]), typed
);
1753 /* Line 1268 of yacc.c. */
1754 #line 215 "parse-gram.y"
1756 /* Remove the '{', and replace the '}' with '\n'. */
1757 (yyvsp
[(2) - (2)].chars
)[strlen ((yyvsp
[(2) - (2)].chars
)) - 1] = '\n';
1758 prologue_augment (translate_code ((yyvsp
[(2) - (2)].chars
)+1, (yylsp
[(2) - (2)])), (yylsp
[(2) - (2)]), true);
1763 /* Line 1268 of yacc.c. */
1764 #line 221 "parse-gram.y"
1766 /* Remove the '{', and replace the '}' with '\n'. */
1767 (yyvsp
[(2) - (2)].chars
)[strlen ((yyvsp
[(2) - (2)].chars
)) - 1] = '\n';
1768 prologue_augment (translate_code ((yyvsp
[(2) - (2)].chars
)+1, (yylsp
[(2) - (2)])), (yylsp
[(2) - (2)]), false);
1773 /* Line 1268 of yacc.c. */
1774 #line 226 "parse-gram.y"
1775 { debug_flag
= true; }
1779 /* Line 1268 of yacc.c. */
1780 #line 228 "parse-gram.y"
1782 static char one
[] = "1";
1783 muscle_insert ((yyvsp
[(2) - (2)].chars
), one
);
1788 /* Line 1268 of yacc.c. */
1789 #line 232 "parse-gram.y"
1790 { muscle_insert ((yyvsp
[(2) - (3)].chars
), (yyvsp
[(3) - (3)].chars
)); }
1794 /* Line 1268 of yacc.c. */
1795 #line 233 "parse-gram.y"
1796 { defines_flag
= true; }
1800 /* Line 1268 of yacc.c. */
1801 #line 235 "parse-gram.y"
1803 /* Remove the '{', and replace the '}' with '\n'. */
1804 (yyvsp
[(2) - (2)].chars
)[strlen ((yyvsp
[(2) - (2)].chars
)) - 1] = '\n';
1805 muscle_code_grow ("end_header", translate_code ((yyvsp
[(2) - (2)].chars
)+1, (yylsp
[(2) - (2)])), (yylsp
[(2) - (2)]));
1810 /* Line 1268 of yacc.c. */
1811 #line 240 "parse-gram.y"
1812 { error_verbose
= true; }
1816 /* Line 1268 of yacc.c. */
1817 #line 241 "parse-gram.y"
1818 { expected_sr_conflicts
= (yyvsp
[(2) - (2)].integer
); }
1822 /* Line 1268 of yacc.c. */
1823 #line 242 "parse-gram.y"
1824 { expected_rr_conflicts
= (yyvsp
[(2) - (2)].integer
); }
1828 /* Line 1268 of yacc.c. */
1829 #line 243 "parse-gram.y"
1830 { spec_file_prefix
= (yyvsp
[(3) - (3)].chars
); }
1834 /* Line 1268 of yacc.c. */
1835 #line 245 "parse-gram.y"
1837 nondeterministic_parser
= true;
1843 /* Line 1268 of yacc.c. */
1844 #line 250 "parse-gram.y"
1846 muscle_code_grow ("initial_action", translate_symbol_action ((yyvsp
[(2) - (2)].chars
), (yylsp
[(2) - (2)])), (yylsp
[(2) - (2)]));
1851 /* Line 1268 of yacc.c. */
1852 #line 253 "parse-gram.y"
1853 { add_param ("lex_param", (yyvsp
[(2) - (2)].chars
), (yylsp
[(2) - (2)])); }
1857 /* Line 1268 of yacc.c. */
1858 #line 254 "parse-gram.y"
1859 { locations_flag
= true; }
1863 /* Line 1268 of yacc.c. */
1864 #line 255 "parse-gram.y"
1865 { spec_name_prefix
= (yyvsp
[(3) - (3)].chars
); }
1869 /* Line 1268 of yacc.c. */
1870 #line 256 "parse-gram.y"
1871 { no_lines_flag
= true; }
1875 /* Line 1268 of yacc.c. */
1876 #line 257 "parse-gram.y"
1877 { nondeterministic_parser
= true; }
1881 /* Line 1268 of yacc.c. */
1882 #line 258 "parse-gram.y"
1883 { spec_outfile
= (yyvsp
[(3) - (3)].chars
); }
1887 /* Line 1268 of yacc.c. */
1888 #line 259 "parse-gram.y"
1889 { add_param ("parse_param", (yyvsp
[(2) - (2)].chars
), (yylsp
[(2) - (2)])); }
1893 /* Line 1268 of yacc.c. */
1894 #line 260 "parse-gram.y"
1895 { pure_parser
= true; }
1899 /* Line 1268 of yacc.c. */
1900 #line 261 "parse-gram.y"
1901 { version_check (&(yylsp
[(2) - (2)]), (yyvsp
[(2) - (2)].chars
)); }
1905 /* Line 1268 of yacc.c. */
1906 #line 262 "parse-gram.y"
1907 { skeleton
= (yyvsp
[(2) - (2)].chars
); }
1911 /* Line 1268 of yacc.c. */
1912 #line 264 "parse-gram.y"
1914 /* Remove the '{', and replace the '}' with '\n'. */
1915 (yyvsp
[(2) - (2)].chars
)[strlen ((yyvsp
[(2) - (2)].chars
)) - 1] = '\n';
1916 muscle_code_grow ("start_header", translate_code ((yyvsp
[(2) - (2)].chars
)+1, (yylsp
[(2) - (2)])), (yylsp
[(2) - (2)]));
1921 /* Line 1268 of yacc.c. */
1922 #line 269 "parse-gram.y"
1923 { token_table_flag
= true; }
1927 /* Line 1268 of yacc.c. */
1928 #line 270 "parse-gram.y"
1929 { report_flag
= report_states
; }
1933 /* Line 1268 of yacc.c. */
1934 #line 271 "parse-gram.y"
1935 { yacc_flag
= true; }
1939 /* Line 1268 of yacc.c. */
1940 #line 279 "parse-gram.y"
1942 grammar_start_symbol_set ((yyvsp
[(2) - (2)].symbol
), (yylsp
[(2) - (2)]));
1947 /* Line 1268 of yacc.c. */
1948 #line 283 "parse-gram.y"
1951 const char *action
= translate_symbol_action ((yyvsp
[(2) - (3)].chars
), (yylsp
[(2) - (3)]));
1952 for (list
= (yyvsp
[(3) - (3)].list
); list
; list
= list
->next
)
1953 symbol_destructor_set (list
->sym
, action
, (yylsp
[(2) - (3)]));
1954 symbol_list_free ((yyvsp
[(3) - (3)].list
));
1959 /* Line 1268 of yacc.c. */
1960 #line 291 "parse-gram.y"
1963 const char *action
= translate_symbol_action ((yyvsp
[(2) - (3)].chars
), (yylsp
[(2) - (3)]));
1964 for (list
= (yyvsp
[(3) - (3)].list
); list
; list
= list
->next
)
1965 symbol_printer_set (list
->sym
, action
, (yylsp
[(2) - (3)]));
1966 symbol_list_free ((yyvsp
[(3) - (3)].list
));
1971 /* Line 1268 of yacc.c. */
1972 #line 299 "parse-gram.y"
1974 default_prec
= true;
1979 /* Line 1268 of yacc.c. */
1980 #line 303 "parse-gram.y"
1982 default_prec
= false;
1987 /* Line 1268 of yacc.c. */
1988 #line 316 "parse-gram.y"
1993 /* Line 1268 of yacc.c. */
1994 #line 317 "parse-gram.y"
1995 { muscle_code_grow ("union_name", (yyvsp
[(1) - (1)].uniqstr
), (yylsp
[(1) - (1)])); }
1999 /* Line 1268 of yacc.c. */
2000 #line 322 "parse-gram.y"
2002 char const *body
= (yyvsp
[(3) - (3)].chars
);
2006 /* Concatenate the union bodies, turning the first one's
2007 trailing '}' into '\n', and omitting the second one's '{'. */
2008 char *code
= muscle_find ("stype");
2009 code
[strlen (code
) - 1] = '\n';
2014 muscle_code_grow ("stype", body
, (yylsp
[(3) - (3)]));
2019 /* Line 1268 of yacc.c. */
2020 #line 343 "parse-gram.y"
2021 { current_class
= nterm_sym
; }
2025 /* Line 1268 of yacc.c. */
2026 #line 344 "parse-gram.y"
2028 current_class
= unknown_sym
;
2029 current_type
= NULL
;
2034 /* Line 1268 of yacc.c. */
2035 #line 348 "parse-gram.y"
2036 { current_class
= token_sym
; }
2040 /* Line 1268 of yacc.c. */
2041 #line 349 "parse-gram.y"
2043 current_class
= unknown_sym
;
2044 current_type
= NULL
;
2049 /* Line 1268 of yacc.c. */
2050 #line 354 "parse-gram.y"
2053 for (list
= (yyvsp
[(3) - (3)].list
); list
; list
= list
->next
)
2054 symbol_type_set (list
->sym
, (yyvsp
[(2) - (3)].uniqstr
), (yylsp
[(2) - (3)]));
2055 symbol_list_free ((yyvsp
[(3) - (3)].list
));
2060 /* Line 1268 of yacc.c. */
2061 #line 364 "parse-gram.y"
2065 for (list
= (yyvsp
[(3) - (3)].list
); list
; list
= list
->next
)
2067 symbol_type_set (list
->sym
, current_type
, (yylsp
[(2) - (3)]));
2068 symbol_precedence_set (list
->sym
, current_prec
, (yyvsp
[(1) - (3)].assoc
), (yylsp
[(1) - (3)]));
2070 symbol_list_free ((yyvsp
[(3) - (3)].list
));
2071 current_type
= NULL
;
2076 /* Line 1268 of yacc.c. */
2077 #line 378 "parse-gram.y"
2078 { (yyval
.assoc
) = left_assoc
; }
2082 /* Line 1268 of yacc.c. */
2083 #line 379 "parse-gram.y"
2084 { (yyval
.assoc
) = right_assoc
; }
2088 /* Line 1268 of yacc.c. */
2089 #line 380 "parse-gram.y"
2090 { (yyval
.assoc
) = non_assoc
; }
2094 /* Line 1268 of yacc.c. */
2095 #line 384 "parse-gram.y"
2096 { current_type
= NULL
; }
2100 /* Line 1268 of yacc.c. */
2101 #line 385 "parse-gram.y"
2102 { current_type
= (yyvsp
[(1) - (1)].uniqstr
); }
2106 /* Line 1268 of yacc.c. */
2107 #line 390 "parse-gram.y"
2108 { (yyval
.list
) = symbol_list_new ((yyvsp
[(1) - (1)].symbol
), (yylsp
[(1) - (1)])); }
2112 /* Line 1268 of yacc.c. */
2113 #line 391 "parse-gram.y"
2114 { (yyval
.list
) = symbol_list_prepend ((yyvsp
[(1) - (2)].list
), (yyvsp
[(2) - (2)].symbol
), (yylsp
[(2) - (2)])); }
2118 /* Line 1268 of yacc.c. */
2119 #line 397 "parse-gram.y"
2121 current_type
= (yyvsp
[(1) - (1)].uniqstr
);
2126 /* Line 1268 of yacc.c. */
2127 #line 401 "parse-gram.y"
2129 symbol_class_set ((yyvsp
[(1) - (1)].symbol
), current_class
, (yylsp
[(1) - (1)]), true);
2130 symbol_type_set ((yyvsp
[(1) - (1)].symbol
), current_type
, (yylsp
[(1) - (1)]));
2135 /* Line 1268 of yacc.c. */
2136 #line 406 "parse-gram.y"
2138 symbol_class_set ((yyvsp
[(1) - (2)].symbol
), current_class
, (yylsp
[(1) - (2)]), true);
2139 symbol_type_set ((yyvsp
[(1) - (2)].symbol
), current_type
, (yylsp
[(1) - (2)]));
2140 symbol_user_token_number_set ((yyvsp
[(1) - (2)].symbol
), (yyvsp
[(2) - (2)].integer
), (yylsp
[(2) - (2)]));
2145 /* Line 1268 of yacc.c. */
2146 #line 412 "parse-gram.y"
2148 symbol_class_set ((yyvsp
[(1) - (2)].symbol
), current_class
, (yylsp
[(1) - (2)]), true);
2149 symbol_type_set ((yyvsp
[(1) - (2)].symbol
), current_type
, (yylsp
[(1) - (2)]));
2150 symbol_make_alias ((yyvsp
[(1) - (2)].symbol
), (yyvsp
[(2) - (2)].symbol
), (yyloc
));
2155 /* Line 1268 of yacc.c. */
2156 #line 418 "parse-gram.y"
2158 symbol_class_set ((yyvsp
[(1) - (3)].symbol
), current_class
, (yylsp
[(1) - (3)]), true);
2159 symbol_type_set ((yyvsp
[(1) - (3)].symbol
), current_type
, (yylsp
[(1) - (3)]));
2160 symbol_user_token_number_set ((yyvsp
[(1) - (3)].symbol
), (yyvsp
[(2) - (3)].integer
), (yylsp
[(2) - (3)]));
2161 symbol_make_alias ((yyvsp
[(1) - (3)].symbol
), (yyvsp
[(3) - (3)].symbol
), (yyloc
));
2166 /* Line 1268 of yacc.c. */
2167 #line 448 "parse-gram.y"
2174 /* Line 1268 of yacc.c. */
2175 #line 454 "parse-gram.y"
2176 { current_lhs
= (yyvsp
[(1) - (1)].symbol
); current_lhs_location
= (yylsp
[(1) - (1)]); }
2180 /* Line 1268 of yacc.c. */
2181 #line 458 "parse-gram.y"
2182 { grammar_current_rule_end ((yylsp
[(1) - (1)])); }
2186 /* Line 1268 of yacc.c. */
2187 #line 459 "parse-gram.y"
2188 { grammar_current_rule_end ((yylsp
[(3) - (3)])); }
2192 /* Line 1268 of yacc.c. */
2193 #line 465 "parse-gram.y"
2194 { grammar_current_rule_begin (current_lhs
, current_lhs_location
); }
2198 /* Line 1268 of yacc.c. */
2199 #line 467 "parse-gram.y"
2200 { grammar_current_rule_symbol_append ((yyvsp
[(2) - (2)].symbol
), (yylsp
[(2) - (2)])); }
2204 /* Line 1268 of yacc.c. */
2205 #line 469 "parse-gram.y"
2206 { grammar_current_rule_action_append ((yyvsp
[(2) - (2)].chars
), (yylsp
[(2) - (2)])); }
2210 /* Line 1268 of yacc.c. */
2211 #line 471 "parse-gram.y"
2212 { grammar_current_rule_prec_set ((yyvsp
[(3) - (3)].symbol
), (yylsp
[(3) - (3)])); }
2216 /* Line 1268 of yacc.c. */
2217 #line 473 "parse-gram.y"
2218 { grammar_current_rule_dprec_set ((yyvsp
[(3) - (3)].integer
), (yylsp
[(3) - (3)])); }
2222 /* Line 1268 of yacc.c. */
2223 #line 475 "parse-gram.y"
2224 { grammar_current_rule_merge_set ((yyvsp
[(3) - (3)].uniqstr
), (yylsp
[(3) - (3)])); }
2228 /* Line 1268 of yacc.c. */
2229 #line 488 "parse-gram.y"
2230 { (yyval
.symbol
) = symbol_from_uniqstr ((yyvsp
[(1) - (1)].uniqstr
), (yylsp
[(1) - (1)])); }
2234 /* Line 1268 of yacc.c. */
2235 #line 490 "parse-gram.y"
2237 (yyval
.symbol
) = symbol_get (char_name ((yyvsp
[(1) - (1)].character
)), (yylsp
[(1) - (1)]));
2238 symbol_class_set ((yyval
.symbol
), token_sym
, (yylsp
[(1) - (1)]), false);
2239 symbol_user_token_number_set ((yyval
.symbol
), (yyvsp
[(1) - (1)].character
), (yylsp
[(1) - (1)]));
2244 /* Line 1268 of yacc.c. */
2245 #line 498 "parse-gram.y"
2246 { (yyval
.symbol
) = symbol_from_uniqstr ((yyvsp
[(1) - (1)].uniqstr
), (yylsp
[(1) - (1)])); }
2250 /* Line 1268 of yacc.c. */
2251 #line 510 "parse-gram.y"
2253 (yyval
.symbol
) = symbol_get (quotearg_style (c_quoting_style
, (yyvsp
[(1) - (1)].chars
)), (yylsp
[(1) - (1)]));
2254 symbol_class_set ((yyval
.symbol
), token_sym
, (yylsp
[(1) - (1)]), false);
2259 /* Line 1268 of yacc.c. */
2260 #line 519 "parse-gram.y"
2261 { (yyval
.chars
) = (yyvsp
[(1) - (1)].chars
); }
2265 /* Line 1268 of yacc.c. */
2266 #line 526 "parse-gram.y"
2268 muscle_code_grow ("epilogue", translate_code ((yyvsp
[(2) - (2)].chars
), (yylsp
[(2) - (2)])), (yylsp
[(2) - (2)]));
2269 gram_scanner_last_string_free ();
2274 /* Line 1268 of yacc.c. */
2275 #line 2276 "parse-gram.c"
2278 YY_SYMBOL_PRINT ("-> $$ =", yyr1
[yyn
], &yyval
, &yyloc
);
2282 YY_STACK_PRINT (yyss
, yyssp
);
2287 /* Now `shift' the result of the reduction. Determine what state
2288 that goes to, based on the state we popped back to and the rule
2289 number reduced by. */
2293 yystate
= yypgoto
[yyn
- YYNTOKENS
] + *yyssp
;
2294 if (0 <= yystate
&& yystate
<= YYLAST
&& yycheck
[yystate
] == *yyssp
)
2295 yystate
= yytable
[yystate
];
2297 yystate
= yydefgoto
[yyn
- YYNTOKENS
];
2302 /*------------------------------------.
2303 | yyerrlab -- here on detecting error |
2304 `------------------------------------*/
2306 /* If not already recovering from an error, report this error. */
2310 #if ! YYERROR_VERBOSE
2311 yyerror (YY_("syntax error"));
2314 YYSIZE_T yysize
= yysyntax_error (0, yystate
, yychar
);
2315 if (yymsg_alloc
< yysize
&& yymsg_alloc
< YYSTACK_ALLOC_MAXIMUM
)
2317 YYSIZE_T yyalloc
= 2 * yysize
;
2318 if (! (yysize
<= yyalloc
&& yyalloc
<= YYSTACK_ALLOC_MAXIMUM
))
2319 yyalloc
= YYSTACK_ALLOC_MAXIMUM
;
2320 if (yymsg
!= yymsgbuf
)
2321 YYSTACK_FREE (yymsg
);
2322 yymsg
= (char *) YYSTACK_ALLOC (yyalloc
);
2324 yymsg_alloc
= yyalloc
;
2328 yymsg_alloc
= sizeof yymsgbuf
;
2332 if (0 < yysize
&& yysize
<= yymsg_alloc
)
2334 (void) yysyntax_error (yymsg
, yystate
, yychar
);
2339 yyerror (YY_("syntax error"));
2341 goto yyexhaustedlab
;
2347 yyerror_range
[0] = yylloc
;
2349 if (yyerrstatus
== 3)
2351 /* If just tried and failed to reuse lookahead token after an
2352 error, discard it. */
2354 if (yychar
<= YYEOF
)
2356 /* Return failure if at end of input. */
2357 if (yychar
== YYEOF
)
2362 yydestruct ("Error: discarding",
2363 yytoken
, &yylval
, &yylloc
);
2368 /* Else will try to reuse lookahead token after shifting the error
2373 /*---------------------------------------------------.
2374 | yyerrorlab -- error raised explicitly by YYERROR. |
2375 `---------------------------------------------------*/
2378 /* Pacify compilers like GCC when the user code never invokes
2379 YYERROR and the label yyerrorlab therefore never appears in user
2381 if (/*CONSTCOND*/ 0)
2384 yyerror_range
[0] = yylsp
[1-yylen
];
2385 /* Do not reclaim the symbols of the rule which action triggered
2389 YY_STACK_PRINT (yyss
, yyssp
);
2394 /*-------------------------------------------------------------.
2395 | yyerrlab1 -- common code for both syntax error and YYERROR. |
2396 `-------------------------------------------------------------*/
2398 yyerrstatus
= 3; /* Each real token shifted decrements this. */
2402 yyn
= yypact
[yystate
];
2403 if (yyn
!= YYPACT_NINF
)
2406 if (0 <= yyn
&& yyn
<= YYLAST
&& yycheck
[yyn
] == YYTERROR
)
2414 /* Pop the current state because it cannot handle the error token. */
2418 yyerror_range
[0] = *yylsp
;
2419 yydestruct ("Error: popping",
2420 yystos
[yystate
], yyvsp
, yylsp
);
2423 YY_STACK_PRINT (yyss
, yyssp
);
2431 yyerror_range
[1] = yylloc
;
2432 /* Using YYLLOC is tempting, but would change the location of
2433 the lookahead. YYLOC is available though. */
2434 YYLLOC_DEFAULT (yyloc
, (yyerror_range
- 1), 2);
2437 /* Shift the error token. */
2438 YY_SYMBOL_PRINT ("Shifting", yystos
[yyn
], yyvsp
, yylsp
);
2444 /*-------------------------------------.
2445 | yyacceptlab -- YYACCEPT comes here. |
2446 `-------------------------------------*/
2451 /*-----------------------------------.
2452 | yyabortlab -- YYABORT comes here. |
2453 `-----------------------------------*/
2459 /*-------------------------------------------------.
2460 | yyexhaustedlab -- memory exhaustion comes here. |
2461 `-------------------------------------------------*/
2463 yyerror (YY_("memory exhausted"));
2469 if (yychar
!= YYEOF
&& yychar
!= YYEMPTY
)
2470 yydestruct ("Cleanup: discarding lookahead",
2471 yytoken
, &yylval
, &yylloc
);
2472 /* Do not reclaim the symbols of the rule which action triggered
2473 this YYABORT or YYACCEPT. */
2475 YY_STACK_PRINT (yyss
, yyssp
);
2476 while (yyssp
!= yyss
)
2478 yydestruct ("Cleanup: popping",
2479 yystos
[*yyssp
], yyvsp
, yylsp
);
2484 YYSTACK_FREE (yyss
);
2487 if (yymsg
!= yymsgbuf
)
2488 YYSTACK_FREE (yymsg
);
2490 /* Make sure YYID is used. */
2491 return YYID (yyresult
);
2495 /* Line 1488 of yacc.c. */
2496 #line 532 "parse-gram.y"
2500 /* Return the location of the left-hand side of a rule whose
2501 right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
2502 the right-hand side, and return an empty location equal to the end
2503 boundary of RHS[0] if the right-hand side is empty. */
2506 lloc_default (YYLTYPE
const *rhs
, int n
)
2511 /* SGI MIPSpro 7.4.1m miscompiles "loc.start = loc.end = rhs[n].end;".
2512 The bug is fixed in 7.4.2m, but play it safe for now. */
2513 loc
.start
= rhs
[n
].end
;
2514 loc
.end
= rhs
[n
].end
;
2516 /* Ignore empty nonterminals the start of the the right-hand side.
2517 Do not bother to ignore them at the end of the right-hand side,
2518 since empty nonterminals have the same end as their predecessors. */
2519 for (i
= 1; i
<= n
; i
++)
2520 if (! equal_boundaries (rhs
[i
].start
, rhs
[i
].end
))
2522 loc
.start
= rhs
[i
].start
;
2530 /* Add a lex-param or a parse-param (depending on TYPE) with
2531 declaration DECL and location LOC. */
2534 add_param (char const *type
, char *decl
, location loc
)
2536 static char const alphanum
[26 + 26 + 1 + 10] =
2537 "abcdefghijklmnopqrstuvwxyz"
2538 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
2541 char const *name_start
= NULL
;
2544 /* Stop on last actual character. */
2545 for (p
= decl
; p
[1]; p
++)
2547 || ! memchr (alphanum
, p
[-1], sizeof alphanum
))
2548 && memchr (alphanum
, p
[0], sizeof alphanum
- 10))
2551 /* Strip the surrounding '{' and '}', and any blanks just inside
2553 while (*--p
== ' ' || *p
== '\t')
2556 while (*++decl
== ' ' || *decl
== '\t')
2560 complain_at (loc
, _("missing identifier in parameter declaration"));
2567 memchr (alphanum
, name_start
[name_len
], sizeof alphanum
);
2571 name
= xmalloc (name_len
+ 1);
2572 memcpy (name
, name_start
, name_len
);
2573 name
[name_len
] = '\0';
2574 muscle_pair_list_grow (type
, decl
, name
);
2578 gram_scanner_last_string_free ();
2582 version_check (location
const *loc
, char const *version
)
2584 if (strverscmp (version
, PACKAGE_VERSION
) > 0)
2586 complain_at (*loc
, "require bison %s, but have %s",
2587 version
, PACKAGE_VERSION
);
2593 gram_error (location
const *loc
, char const *msg
)
2595 complain_at (*loc
, "%s", msg
);
2599 token_name (int type
)
2601 return yytname
[YYTRANSLATE (type
)];
2612 buf
[0] = '\''; buf
[1] = c
; buf
[2] = '\''; buf
[3] = '\0';
2613 return quotearg_style (escape_quoting_style
, buf
);