1 /* A Bison parser, made by GNU Bison 2.0a. */
3 /* Skeleton parser for Yacc-like parsing with Bison,
4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 Boston, MA 02110-1301, USA. */
21 /* As a special exception, when this file is copied by Bison into a
22 Bison output file, you may use that output file without restriction.
23 This special exception was added by the Free Software Foundation
24 in version 1.24 of Bison. */
26 /* Written by Richard Stallman by simplifying the original so called
27 ``semantic'' parser. */
29 /* All symbols defined below should begin with yy or YY, to avoid
30 infringing on user name space. This should be done even for local
31 variables, as they might otherwise be expanded by user macros.
32 There are some unavoidable exceptions within include files to
33 define necessary library symbols; they are noted "INFRINGES ON
34 USER NAME SPACE" below. */
36 /* Identify Bison output. */
40 #define YYSKELETON_NAME "yacc.c"
45 /* Using locations. */
46 #define YYLSP_NEEDED 1
48 /* Substitute the variable and function names. */
49 #define yyparse gram_parse
50 #define yylex gram_lex
51 #define yyerror gram_error
52 #define yylval gram_lval
53 #define yychar gram_char
54 #define yydebug gram_debug
55 #define yynerrs gram_nerrs
56 #define yylloc gram_lloc
61 /* Put the tokens into the symbol table, so that GDB and other debuggers
70 PERCENT_DESTRUCTOR
= 263,
71 PERCENT_PRINTER
= 264,
75 PERCENT_NONASSOC
= 268,
80 PERCENT_DEFAULT_PREC
= 273,
82 PERCENT_DEFINES
= 275,
83 PERCENT_ERROR_VERBOSE
= 276,
85 PERCENT_EXPECT_RR
= 278,
86 PERCENT_FILE_PREFIX
= 279,
87 PERCENT_GLR_PARSER
= 280,
88 PERCENT_INITIAL_ACTION
= 281,
89 PERCENT_LEX_PARAM
= 282,
90 PERCENT_LOCATIONS
= 283,
91 PERCENT_NAME_PREFIX
= 284,
92 PERCENT_NO_DEFAULT_PREC
= 285,
93 PERCENT_NO_LINES
= 286,
94 PERCENT_NONDETERMINISTIC_PARSER
= 287,
96 PERCENT_PARSE_PARAM
= 289,
97 PERCENT_PURE_PARSER
= 290,
98 PERCENT_SKELETON
= 291,
100 PERCENT_TOKEN_TABLE
= 293,
101 PERCENT_VERBOSE
= 294,
109 PERCENT_PERCENT
= 302,
118 #define PERCENT_TOKEN 260
119 #define PERCENT_NTERM 261
120 #define PERCENT_TYPE 262
121 #define PERCENT_DESTRUCTOR 263
122 #define PERCENT_PRINTER 264
123 #define PERCENT_UNION 265
124 #define PERCENT_LEFT 266
125 #define PERCENT_RIGHT 267
126 #define PERCENT_NONASSOC 268
127 #define PERCENT_PREC 269
128 #define PERCENT_DPREC 270
129 #define PERCENT_MERGE 271
130 #define PERCENT_DEBUG 272
131 #define PERCENT_DEFAULT_PREC 273
132 #define PERCENT_DEFINE 274
133 #define PERCENT_DEFINES 275
134 #define PERCENT_ERROR_VERBOSE 276
135 #define PERCENT_EXPECT 277
136 #define PERCENT_EXPECT_RR 278
137 #define PERCENT_FILE_PREFIX 279
138 #define PERCENT_GLR_PARSER 280
139 #define PERCENT_INITIAL_ACTION 281
140 #define PERCENT_LEX_PARAM 282
141 #define PERCENT_LOCATIONS 283
142 #define PERCENT_NAME_PREFIX 284
143 #define PERCENT_NO_DEFAULT_PREC 285
144 #define PERCENT_NO_LINES 286
145 #define PERCENT_NONDETERMINISTIC_PARSER 287
146 #define PERCENT_OUTPUT 288
147 #define PERCENT_PARSE_PARAM 289
148 #define PERCENT_PURE_PARSER 290
149 #define PERCENT_SKELETON 291
150 #define PERCENT_START 292
151 #define PERCENT_TOKEN_TABLE 293
152 #define PERCENT_VERBOSE 294
153 #define PERCENT_YACC 295
156 #define SEMICOLON 298
160 #define PERCENT_PERCENT 302
163 #define BRACED_CODE 305
168 /* Copy the first part of user declarations. */
169 #line 1 "parse-gram.y"
170 /* Bison Grammar Parser -*- C -*-
172 Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
174 This file is part of Bison, the GNU Compiler Compiler.
176 This program is free software; you can redistribute it and/or modify
177 it under the terms of the GNU General Public License as published by
178 the Free Software Foundation; either version 2 of the License, or
179 (at your option) any later version.
181 This program is distributed in the hope that it will be useful,
182 but WITHOUT ANY WARRANTY; without even the implied warranty of
183 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
184 GNU General Public License for more details.
186 You should have received a copy of the GNU General Public License
187 along with this program; if not, write to the Free Software
188 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
194 #include "complain.h"
195 #include "conflicts.h"
199 #include "muscle_tab.h"
201 #include "quotearg.h"
205 #define YYLLOC_DEFAULT(Current, Rhs, N) (Current) = lloc_default (Rhs, N)
206 static YYLTYPE
lloc_default (YYLTYPE
const *, int);
208 #define YY_LOCATION_PRINT(File, Loc) \
209 location_print (File, Loc)
211 /* Request detailed syntax error messages, and pass them to GRAM_ERROR.
212 FIXME: depends on the undocumented availability of YYLLOC. */
214 #define yyerror(Msg) \
215 gram_error (&yylloc, Msg)
216 static void gram_error (location
const *, char const *);
218 #define YYPRINT(File, Type, Value) \
219 print_token_value (File, Type, &Value)
220 static void print_token_value (FILE *, int, YYSTYPE
const *);
222 static void add_param (char const *, char *, location
);
224 symbol_class current_class
= unknown_sym
;
225 uniqstr current_type
= 0;
227 location current_lhs_location
;
229 int current_prec
= 0;
232 /* Enabling traces. */
237 /* Enabling verbose error messages. */
238 #ifdef YYERROR_VERBOSE
239 # undef YYERROR_VERBOSE
240 # define YYERROR_VERBOSE 1
242 # define YYERROR_VERBOSE 1
245 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
246 #line 82 "parse-gram.y"
247 typedef union YYSTYPE
{
255 /* Line 191 of yacc.c. */
256 #line 257 "parse-gram.c"
257 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
258 # define YYSTYPE_IS_DECLARED 1
259 # define YYSTYPE_IS_TRIVIAL 1
262 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
263 typedef struct YYLTYPE
270 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
271 # define YYLTYPE_IS_DECLARED 1
272 # define YYLTYPE_IS_TRIVIAL 1
276 /* Copy the second part of user declarations. */
279 /* Line 214 of yacc.c. */
280 #line 281 "parse-gram.c"
282 #if ! defined (yyoverflow) || YYERROR_VERBOSE
288 # define YYMALLOC malloc
291 /* The parser invokes alloca or malloc; define the necessary symbols. */
293 # ifdef YYSTACK_USE_ALLOCA
294 # if YYSTACK_USE_ALLOCA
296 # define YYSTACK_ALLOC __builtin_alloca
298 # define YYSTACK_ALLOC alloca
303 # ifdef YYSTACK_ALLOC
304 /* Pacify GCC's `empty if-body' warning. */
305 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
306 # ifndef YYSTACK_ALLOC_MAXIMUM
307 /* The OS might guarantee only one guard page at the bottom of the stack,
308 and a page size can be as small as 4096 bytes. So we cannot safely
309 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
310 to allow for a few compiler-allocated temporary stack slots. */
311 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
314 # if defined (__STDC__) || defined (__cplusplus)
315 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
316 # define YYSIZE_T size_t
318 # define YYSIZE_T unsigned long int
320 # define YYSTACK_ALLOC YYMALLOC
321 # define YYSTACK_FREE YYFREE
322 # ifndef YYSTACK_ALLOC_MAXIMUM
323 # define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
326 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
329 #if (! defined (yyoverflow) \
330 && (! defined (__cplusplus) \
331 || (defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
332 && defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
334 /* A type that is properly aligned for any stack member. */
342 /* The size of the maximum gap between one aligned stack and the next. */
343 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
345 /* The size of an array large to enough to hold all stacks, each with
347 # define YYSTACK_BYTES(N) \
348 ((N) * (sizeof (short int) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
349 + 2 * YYSTACK_GAP_MAXIMUM)
351 /* Copy COUNT objects from FROM to TO. The source and destination do
354 # if defined (__GNUC__) && 1 < __GNUC__
355 # define YYCOPY(To, From, Count) \
356 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
358 # define YYCOPY(To, From, Count) \
362 for (yyi = 0; yyi < (Count); yyi++) \
363 (To)[yyi] = (From)[yyi]; \
369 /* Relocate STACK from its old location to the new one. The
370 local variables YYSIZE and YYSTACKSIZE give the old and new number of
371 elements in the stack, and YYPTR gives the new location of the
372 stack. Advance YYPTR to a properly aligned location for the next
374 # define YYSTACK_RELOCATE(Stack) \
377 YYSIZE_T yynewbytes; \
378 YYCOPY (&yyptr->Stack, Stack, yysize); \
379 Stack = &yyptr->Stack; \
380 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
381 yyptr += yynewbytes / sizeof (*yyptr); \
387 #if defined (__STDC__) || defined (__cplusplus)
388 typedef signed char yysigned_char
;
390 typedef short int yysigned_char
;
393 /* YYFINAL -- State number of the termination state. */
395 /* YYLAST -- Last index in YYTABLE. */
398 /* YYNTOKENS -- Number of terminals. */
400 /* YYNNTS -- Number of nonterminals. */
402 /* YYNRULES -- Number of rules. */
404 /* YYNRULES -- Number of states. */
405 #define YYNSTATES 108
407 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
409 #define YYMAXUTOK 305
411 #define YYTRANSLATE(YYX) \
412 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
414 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
415 static const unsigned char yytranslate
[] =
417 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
418 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
419 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
421 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
422 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
423 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
424 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
425 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
426 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
427 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
428 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
429 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
430 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
431 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
432 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
433 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
434 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
435 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
436 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
437 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
439 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
442 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
443 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
444 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
445 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
446 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
447 45, 46, 47, 48, 49, 50
451 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
453 static const unsigned char yyprhs
[] =
455 0, 0, 3, 8, 9, 12, 14, 16, 18, 22,
456 24, 26, 29, 32, 36, 38, 40, 42, 44, 48,
457 50, 52, 56, 58, 60, 63, 65, 67, 69, 71,
458 73, 75, 78, 80, 83, 86, 88, 90, 91, 95,
459 96, 100, 104, 108, 110, 112, 114, 115, 117, 119,
460 122, 124, 126, 129, 132, 136, 138, 141, 143, 146,
461 148, 151, 154, 155, 159, 161, 165, 168, 169, 172,
462 175, 179, 183, 187, 189, 191, 193, 195, 197, 198
465 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
466 static const yysigned_char yyrhs
[] =
468 52, 0, -1, 53, 47, 65, 75, -1, -1, 53,
469 54, -1, 55, -1, 48, -1, 17, -1, 19, 74,
470 74, -1, 20, -1, 21, -1, 22, 4, -1, 23,
471 4, -1, 24, 42, 74, -1, 25, -1, 26, -1,
472 27, -1, 28, -1, 29, 42, 74, -1, 31, -1,
473 32, -1, 33, 42, 74, -1, 34, -1, 35, -1,
474 36, 74, -1, 38, -1, 39, -1, 40, -1, 43,
475 -1, 59, -1, 56, -1, 37, 71, -1, 10, -1,
476 8, 62, -1, 9, 62, -1, 18, -1, 30, -1,
477 -1, 6, 57, 64, -1, -1, 5, 58, 64, -1,
478 7, 41, 62, -1, 60, 61, 62, -1, 11, -1,
479 12, -1, 13, -1, -1, 41, -1, 71, -1, 62,
480 71, -1, 41, -1, 45, -1, 45, 4, -1, 45,
481 73, -1, 45, 4, 73, -1, 63, -1, 64, 63,
482 -1, 66, -1, 65, 66, -1, 67, -1, 55, 43,
483 -1, 1, 43, -1, -1, 46, 68, 69, -1, 70,
484 -1, 69, 44, 70, -1, 69, 43, -1, -1, 70,
485 71, -1, 70, 72, -1, 70, 14, 71, -1, 70,
486 15, 4, -1, 70, 16, 41, -1, 45, -1, 73,
487 -1, 50, -1, 3, -1, 3, -1, -1, 47, 49,
491 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
492 static const unsigned short int yyrline
[] =
494 0, 175, 175, 183, 185, 189, 190, 191, 192, 193,
495 194, 195, 196, 197, 198, 203, 207, 208, 209, 210,
496 211, 212, 213, 214, 215, 216, 217, 218, 219, 223,
497 224, 225, 229, 235, 242, 249, 253, 260, 260, 265,
498 265, 270, 280, 295, 296, 297, 301, 302, 308, 309,
499 314, 318, 323, 329, 335, 346, 347, 356, 357, 363,
500 364, 369, 376, 376, 380, 381, 382, 387, 388, 390,
501 392, 394, 396, 401, 402, 406, 412, 421, 426, 428
505 #if YYDEBUG || YYERROR_VERBOSE
506 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
507 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
508 static const char *const yytname
[] =
510 "end of file", "error", "$undefined", "string", "integer", "%token",
511 "%nterm", "%type", "%destructor {...}", "%printer {...}", "%union {...}",
512 "%left", "%right", "%nonassoc", "%prec", "%dprec", "%merge", "%debug",
513 "%default-prec", "%define", "%defines", "%error-verbose", "%expect",
514 "%expect-rr", "%file-prefix", "%glr-parser", "%initial-action {...}",
515 "%lex-param {...}", "%locations", "%name-prefix", "%no-default-prec",
516 "%no-lines", "%nondeterministic-parser", "%output", "%parse-param {...}",
517 "%pure-parser", "%skeleton", "%start", "%token-table", "%verbose",
518 "%yacc", "type", "=", ";", "|", "identifier", "identifier:", "%%",
519 "%{...%}", "epilogue", "{...}", "$accept", "input", "declarations",
520 "declaration", "grammar_declaration", "symbol_declaration", "@1", "@2",
521 "precedence_declaration", "precedence_declarator", "type.opt",
522 "symbols.1", "symbol_def", "symbol_defs.1", "grammar",
523 "rules_or_grammar_declaration", "rules", "@3", "rhses.1", "rhs",
524 "symbol", "action", "string_as_id", "string_content", "epilogue.opt", 0
528 /* INFRINGES ON USER NAME SPACE */
530 # define _(msgid) msgid
534 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
536 static const unsigned short int yytoknum
[] =
538 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
539 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
540 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
541 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
542 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
547 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
548 static const unsigned char yyr1
[] =
550 0, 51, 52, 53, 53, 54, 54, 54, 54, 54,
551 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
552 54, 54, 54, 54, 54, 54, 54, 54, 54, 55,
553 55, 55, 55, 55, 55, 55, 55, 57, 56, 58,
554 56, 56, 59, 60, 60, 60, 61, 61, 62, 62,
555 63, 63, 63, 63, 63, 64, 64, 65, 65, 66,
556 66, 66, 68, 67, 69, 69, 69, 70, 70, 70,
557 70, 70, 70, 71, 71, 72, 73, 74, 75, 75
560 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
561 static const unsigned char yyr2
[] =
563 0, 2, 4, 0, 2, 1, 1, 1, 3, 1,
564 1, 2, 2, 3, 1, 1, 1, 1, 3, 1,
565 1, 3, 1, 1, 2, 1, 1, 1, 1, 1,
566 1, 2, 1, 2, 2, 1, 1, 0, 3, 0,
567 3, 3, 3, 1, 1, 1, 0, 1, 1, 2,
568 1, 1, 2, 2, 3, 1, 2, 1, 2, 1,
569 2, 2, 0, 3, 1, 3, 2, 0, 2, 2,
570 3, 3, 3, 1, 1, 1, 1, 1, 0, 2
573 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
574 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
575 means the default is an error. */
576 static const unsigned char yydefact
[] =
578 3, 0, 0, 1, 39, 37, 0, 0, 0, 32,
579 43, 44, 45, 7, 35, 0, 9, 10, 0, 0,
580 0, 14, 15, 16, 17, 0, 36, 19, 20, 0,
581 22, 23, 0, 0, 25, 26, 27, 28, 0, 6,
582 4, 5, 30, 29, 46, 0, 0, 0, 76, 73,
583 33, 48, 74, 34, 77, 0, 11, 12, 0, 0,
584 0, 24, 31, 0, 62, 0, 0, 57, 59, 47,
585 0, 50, 51, 55, 40, 38, 41, 49, 8, 13,
586 18, 21, 61, 67, 60, 0, 58, 2, 42, 52,
587 53, 56, 63, 64, 79, 54, 66, 67, 0, 0,
588 0, 75, 68, 69, 65, 70, 71, 72
591 /* YYDEFGOTO[NTERM-NUM]. */
592 static const yysigned_char yydefgoto
[] =
594 -1, 1, 2, 40, 65, 42, 46, 45, 43, 44,
595 70, 50, 73, 74, 66, 67, 68, 83, 92, 93,
599 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
601 #define YYPACT_NINF -67
602 static const yysigned_char yypact
[] =
604 -67, 5, 110, -67, -67, -67, -34, 0, 0, -67,
605 -67, -67, -67, -67, -67, 13, -67, -67, 20, 31,
606 -17, -67, -67, -67, -67, -6, -67, -67, -67, -5,
607 -67, -67, 13, 0, -67, -67, -67, -67, 68, -67,
608 -67, -67, -67, -67, -3, -37, -37, 0, -67, -67,
609 0, -67, -67, 0, -67, 13, -67, -67, 13, 13,
610 13, -67, -67, -2, -67, 3, 21, -67, -67, -67,
611 0, -67, 6, -67, -37, -37, 0, -67, -67, -67,
612 -67, -67, -67, -67, -67, 1, -67, -67, 0, 39,
613 -67, -67, -32, -1, -67, -67, -67, -67, 0, 43,
614 7, -67, -67, -67, -1, -67, -67, -67
617 /* YYPGOTO[NTERM-NUM]. */
618 static const yysigned_char yypgoto
[] =
620 -67, -67, -67, -67, 50, -67, -67, -67, -67, -67,
621 -67, -7, -56, 8, -67, -13, -67, -67, -67, -41,
622 -33, -67, -66, 29, -67
625 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
626 positive, shift that token. If negative, reduce the rule which
627 number is the opposite. If zero, do what YYDEFACT says.
628 If YYTABLE_NINF, syntax error. */
629 #define YYTABLE_NINF -79
630 static const yysigned_char yytable
[] =
632 62, 53, 48, 48, 71, 3, 90, 47, 72, 48,
633 89, 96, 97, 98, 99, 100, 54, 77, 91, 91,
634 77, -78, 63, 95, 56, 58, 4, 5, 6, 7,
635 8, 9, 10, 11, 12, 57, 59, 60, 69, 14,
636 76, 82, 48, 77, 49, 49, 84, 106, 107, 101,
637 94, 26, 41, 86, 75, 77, 104, 0, 33, 0,
638 102, 61, 0, 88, 0, 105, 0, 64, 85, 63,
639 0, 102, 0, 4, 5, 6, 7, 8, 9, 10,
640 11, 12, 0, 0, 78, 0, 14, 79, 80, 81,
641 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,
642 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
643 0, 0, 0, 0, 64, 4, 5, 6, 7, 8,
644 9, 10, 11, 12, 0, 0, 0, 13, 14, 15,
645 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
646 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
647 36, 0, 0, 37, 0, 0, 0, 38, 39
650 static const yysigned_char yycheck
[] =
652 33, 8, 3, 3, 41, 0, 72, 41, 45, 3,
653 4, 43, 44, 14, 15, 16, 3, 50, 74, 75,
654 53, 0, 1, 89, 4, 42, 5, 6, 7, 8,
655 9, 10, 11, 12, 13, 4, 42, 42, 41, 18,
656 47, 43, 3, 76, 45, 45, 43, 4, 41, 50,
657 49, 30, 2, 66, 46, 88, 97, -1, 37, -1,
658 93, 32, -1, 70, -1, 98, -1, 46, 47, 1,
659 -1, 104, -1, 5, 6, 7, 8, 9, 10, 11,
660 12, 13, -1, -1, 55, -1, 18, 58, 59, 60,
661 -1, -1, -1, -1, -1, -1, -1, -1, 30, -1,
662 -1, -1, -1, -1, -1, 37, -1, -1, -1, -1,
663 -1, -1, -1, -1, 46, 5, 6, 7, 8, 9,
664 10, 11, 12, 13, -1, -1, -1, 17, 18, 19,
665 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
666 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
667 40, -1, -1, 43, -1, -1, -1, 47, 48
670 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
671 symbol of state STATE-NUM. */
672 static const unsigned char yystos
[] =
674 0, 52, 53, 0, 5, 6, 7, 8, 9, 10,
675 11, 12, 13, 17, 18, 19, 20, 21, 22, 23,
676 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
677 34, 35, 36, 37, 38, 39, 40, 43, 47, 48,
678 54, 55, 56, 59, 60, 58, 57, 41, 3, 45,
679 62, 71, 73, 62, 3, 74, 4, 4, 42, 42,
680 42, 74, 71, 1, 46, 55, 65, 66, 67, 41,
681 61, 41, 45, 63, 64, 64, 62, 71, 74, 74,
682 74, 74, 43, 68, 43, 47, 66, 75, 62, 4,
683 73, 63, 69, 70, 49, 73, 43, 44, 14, 15,
684 16, 50, 71, 72, 70, 71, 4, 41
687 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
688 # define YYSIZE_T __SIZE_TYPE__
690 #if ! defined (YYSIZE_T) && defined (size_t)
691 # define YYSIZE_T size_t
693 #if ! defined (YYSIZE_T)
694 # if defined (__STDC__) || defined (__cplusplus)
695 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
696 # define YYSIZE_T size_t
699 #if ! defined (YYSIZE_T)
700 # define YYSIZE_T unsigned int
703 #define yyerrok (yyerrstatus = 0)
704 #define yyclearin (yychar = YYEMPTY)
708 #define YYACCEPT goto yyacceptlab
709 #define YYABORT goto yyabortlab
710 #define YYERROR goto yyerrorlab
713 /* Like YYERROR except do call yyerror. This remains here temporarily
714 to ease the transition to the new meaning of YYERROR, for GCC.
715 Once GCC version 2 has supplanted version 1, this can go. */
717 #define YYFAIL goto yyerrlab
719 #define YYRECOVERING() (!!yyerrstatus)
721 #define YYBACKUP(Token, Value) \
723 if (yychar == YYEMPTY && yylen == 1) \
727 yytoken = YYTRANSLATE (yychar); \
733 yyerror (_("syntax error: cannot back up")); \
740 #define YYERRCODE 256
743 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
744 If N is 0, then set CURRENT to the empty location which ends
745 the previous symbol: RHS[0] (always defined). */
747 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
748 #ifndef YYLLOC_DEFAULT
749 # define YYLLOC_DEFAULT(Current, Rhs, N) \
753 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
754 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
755 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
756 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
760 (Current).first_line = (Current).last_line = \
761 YYRHSLOC (Rhs, 0).last_line; \
762 (Current).first_column = (Current).last_column = \
763 YYRHSLOC (Rhs, 0).last_column; \
769 /* YY_LOCATION_PRINT -- Print the location on the stream.
770 This macro was not mandated originally: define only if we know
771 we won't break user code: when these are the locations we know. */
773 #ifndef YY_LOCATION_PRINT
774 # if YYLTYPE_IS_TRIVIAL
775 # define YY_LOCATION_PRINT(File, Loc) \
776 fprintf (File, "%d.%d-%d.%d", \
777 (Loc).first_line, (Loc).first_column, \
778 (Loc).last_line, (Loc).last_column)
780 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
785 /* YYLEX -- calling `yylex' with the right arguments. */
788 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
790 # define YYLEX yylex (&yylval, &yylloc)
793 /* Enable debugging if requested. */
797 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
798 # define YYFPRINTF fprintf
801 # define YYDPRINTF(Args) \
807 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
811 YYFPRINTF (stderr, "%s ", Title); \
812 yysymprint (stderr, \
813 Type, Value, Location); \
814 YYFPRINTF (stderr, "\n"); \
818 /*------------------------------------------------------------------.
819 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
821 `------------------------------------------------------------------*/
823 #if defined (__STDC__) || defined (__cplusplus)
825 yy_stack_print (short int *bottom
, short int *top
)
828 yy_stack_print (bottom
, top
)
833 YYFPRINTF (stderr
, _("Stack now"));
834 for (/* Nothing. */; bottom
<= top
; ++bottom
)
835 YYFPRINTF (stderr
, " %d", *bottom
);
836 YYFPRINTF (stderr
, "\n");
839 # define YY_STACK_PRINT(Bottom, Top) \
842 yy_stack_print ((Bottom), (Top)); \
846 /*------------------------------------------------.
847 | Report that the YYRULE is going to be reduced. |
848 `------------------------------------------------*/
850 #if defined (__STDC__) || defined (__cplusplus)
852 yy_reduce_print (int yyrule
)
855 yy_reduce_print (yyrule
)
860 unsigned int yylno
= yyrline
[yyrule
];
861 YYFPRINTF (stderr
, _("Reducing stack by rule %d (line %u), "),
863 /* Print the symbols being reduced, and their result. */
864 for (yyi
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++)
865 YYFPRINTF (stderr
, "%s ", yytname
[yyrhs
[yyi
]]);
866 YYFPRINTF (stderr
, "-> %s\n", yytname
[yyr1
[yyrule
]]);
869 # define YY_REDUCE_PRINT(Rule) \
872 yy_reduce_print (Rule); \
875 /* Nonzero means print parse trace. It is left uninitialized so that
876 multiple parsers can coexist. */
879 # define YYDPRINTF(Args)
880 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
881 # define YY_STACK_PRINT(Bottom, Top)
882 # define YY_REDUCE_PRINT(Rule)
883 #endif /* !YYDEBUG */
886 /* YYINITDEPTH -- initial size of the parser's stacks. */
888 # define YYINITDEPTH 200
891 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
892 if the built-in stack extension method is used).
894 Do not make this value too large; the results are undefined if
895 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
896 evaluated with infinite-precision integer arithmetic. */
899 # define YYMAXDEPTH 10000
907 # if defined (__GLIBC__) && defined (_STRING_H)
908 # define yystrlen strlen
910 /* Return the length of YYSTR. */
912 # if defined (__STDC__) || defined (__cplusplus)
913 yystrlen (const char *yystr
)
919 const char *yys
= yystr
;
921 while (*yys
++ != '\0')
924 return yys
- yystr
- 1;
930 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
931 # define yystpcpy stpcpy
933 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
936 # if defined (__STDC__) || defined (__cplusplus)
937 yystpcpy (char *yydest
, const char *yysrc
)
939 yystpcpy (yydest
, yysrc
)
945 const char *yys
= yysrc
;
947 while ((*yyd
++ = *yys
++) != '\0')
955 #endif /* !YYERROR_VERBOSE */
960 /*--------------------------------.
961 | Print this symbol on YYOUTPUT. |
962 `--------------------------------*/
964 #if defined (__STDC__) || defined (__cplusplus)
966 yysymprint (FILE *yyoutput
, int yytype
, YYSTYPE
*yyvaluep
, YYLTYPE
*yylocationp
)
969 yysymprint (yyoutput
, yytype
, yyvaluep
, yylocationp
)
973 YYLTYPE
*yylocationp
;
976 /* Pacify ``unused variable'' warnings. */
980 if (yytype
< YYNTOKENS
)
981 YYFPRINTF (yyoutput
, "token %s (", yytname
[yytype
]);
983 YYFPRINTF (yyoutput
, "nterm %s (", yytname
[yytype
]);
985 YY_LOCATION_PRINT (yyoutput
, *yylocationp
);
986 fprintf (yyoutput
, ": ");
989 if (yytype
< YYNTOKENS
)
990 YYPRINT (yyoutput
, yytoknum
[yytype
], *yyvaluep
);
997 YYFPRINTF (yyoutput
, ")");
1000 #endif /* ! YYDEBUG */
1001 /*-----------------------------------------------.
1002 | Release the memory associated to this symbol. |
1003 `-----------------------------------------------*/
1005 #if defined (__STDC__) || defined (__cplusplus)
1007 yydestruct (const char *yymsg
, int yytype
, YYSTYPE
*yyvaluep
, YYLTYPE
*yylocationp
)
1010 yydestruct (yymsg
, yytype
, yyvaluep
, yylocationp
)
1014 YYLTYPE
*yylocationp
;
1017 /* Pacify ``unused variable'' warnings. */
1023 YY_SYMBOL_PRINT (yymsg
, yytype
, yyvaluep
, yylocationp
);
1034 /* Prevent warnings from -Wmissing-prototypes. */
1036 #ifdef YYPARSE_PARAM
1037 # if defined (__STDC__) || defined (__cplusplus)
1038 int yyparse (void *YYPARSE_PARAM
);
1042 #else /* ! YYPARSE_PARAM */
1043 #if defined (__STDC__) || defined (__cplusplus)
1048 #endif /* ! YYPARSE_PARAM */
1059 #ifdef YYPARSE_PARAM
1060 # if defined (__STDC__) || defined (__cplusplus)
1061 int yyparse (void *YYPARSE_PARAM
)
1063 int yyparse (YYPARSE_PARAM
)
1064 void *YYPARSE_PARAM
;
1066 #else /* ! YYPARSE_PARAM */
1067 #if defined (__STDC__) || defined (__cplusplus)
1077 /* The look-ahead symbol. */
1080 /* The semantic value of the look-ahead symbol. */
1083 /* Number of syntax errors so far. */
1085 /* Location data for the look-ahead symbol. */
1091 /* Number of tokens to shift before error messages enabled. */
1093 /* Look-ahead token as an internal (translated) token number. */
1096 /* Three stacks and their tools:
1097 `yyss': related to states,
1098 `yyvs': related to semantic values,
1099 `yyls': related to locations.
1101 Refer to the stacks thru separate pointers, to allow yyoverflow
1102 to reallocate them elsewhere. */
1104 /* The state stack. */
1105 short int yyssa
[YYINITDEPTH
];
1106 short int *yyss
= yyssa
;
1109 /* The semantic value stack. */
1110 YYSTYPE yyvsa
[YYINITDEPTH
];
1111 YYSTYPE
*yyvs
= yyvsa
;
1114 /* The location stack. */
1115 YYLTYPE yylsa
[YYINITDEPTH
];
1116 YYLTYPE
*yyls
= yylsa
;
1118 /* The locations where the error started and ended. */
1119 YYLTYPE yyerror_range
[2];
1121 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1123 YYSIZE_T yystacksize
= YYINITDEPTH
;
1125 /* The variables used to return semantic value and location from the
1130 /* When reducing, the number of symbols on the RHS of the reduced
1134 YYDPRINTF ((stderr
, "Starting parse\n"));
1139 yychar
= YYEMPTY
; /* Cause a token to be read. */
1141 /* Initialize stack pointers.
1142 Waste one element of value and location stack
1143 so that they stay on the same level as the state stack.
1144 The wasted elements are never initialized. */
1149 #if YYLTYPE_IS_TRIVIAL
1150 /* Initialize the default location before parsing starts. */
1151 yylloc
.first_line
= yylloc
.last_line
= 1;
1152 yylloc
.first_column
= yylloc
.last_column
= 0;
1156 /* User initialization code. */
1157 #line 72 "parse-gram.y"
1159 /* Bison's grammar can initial empty locations, hence a default
1160 location is needed. */
1161 yylloc
.start
.file
= yylloc
.end
.file
= current_file
;
1162 yylloc
.start
.line
= yylloc
.end
.line
= 1;
1163 yylloc
.start
.column
= yylloc
.end
.column
= 0;
1165 /* Line 860 of yacc.c. */
1166 #line 1167 "parse-gram.c"
1172 /*------------------------------------------------------------.
1173 | yynewstate -- Push a new state, which is found in yystate. |
1174 `------------------------------------------------------------*/
1176 /* In all cases, when you get here, the value and location stacks
1177 have just been pushed. so pushing a state here evens the stacks.
1184 if (yyss
+ yystacksize
- 1 <= yyssp
)
1186 /* Get the current used size of the three stacks, in elements. */
1187 YYSIZE_T yysize
= yyssp
- yyss
+ 1;
1191 /* Give user a chance to reallocate the stack. Use copies of
1192 these so that the &'s don't force the real ones into
1194 YYSTYPE
*yyvs1
= yyvs
;
1195 short int *yyss1
= yyss
;
1196 YYLTYPE
*yyls1
= yyls
;
1198 /* Each stack pointer address is followed by the size of the
1199 data in use in that stack, in bytes. This used to be a
1200 conditional around just the two extra args, but that might
1201 be undefined if yyoverflow is a macro. */
1202 yyoverflow (_("parser stack overflow"),
1203 &yyss1
, yysize
* sizeof (*yyssp
),
1204 &yyvs1
, yysize
* sizeof (*yyvsp
),
1205 &yyls1
, yysize
* sizeof (*yylsp
),
1211 #else /* no yyoverflow */
1212 # ifndef YYSTACK_RELOCATE
1215 /* Extend the stack our own way. */
1216 if (YYMAXDEPTH
<= yystacksize
)
1219 if (YYMAXDEPTH
< yystacksize
)
1220 yystacksize
= YYMAXDEPTH
;
1223 short int *yyss1
= yyss
;
1224 union yyalloc
*yyptr
=
1225 (union yyalloc
*) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize
));
1228 YYSTACK_RELOCATE (yyss
);
1229 YYSTACK_RELOCATE (yyvs
);
1230 YYSTACK_RELOCATE (yyls
);
1231 # undef YYSTACK_RELOCATE
1233 YYSTACK_FREE (yyss1
);
1236 #endif /* no yyoverflow */
1238 yyssp
= yyss
+ yysize
- 1;
1239 yyvsp
= yyvs
+ yysize
- 1;
1240 yylsp
= yyls
+ yysize
- 1;
1242 YYDPRINTF ((stderr
, _("Stack size increased to %lu\n"),
1243 (unsigned long int) yystacksize
));
1245 if (yyss
+ yystacksize
- 1 <= yyssp
)
1249 YYDPRINTF ((stderr
, _("Entering state %d\n"), yystate
));
1258 /* Do appropriate processing given the current state. */
1259 /* Read a look-ahead token if we need one and don't already have one. */
1262 /* First try to decide what to do without reference to look-ahead token. */
1264 yyn
= yypact
[yystate
];
1265 if (yyn
== YYPACT_NINF
)
1268 /* Not known => get a look-ahead token if don't already have one. */
1270 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1271 if (yychar
== YYEMPTY
)
1273 YYDPRINTF ((stderr
, _("Reading a token: ")));
1277 if (yychar
<= YYEOF
)
1279 yychar
= yytoken
= YYEOF
;
1280 YYDPRINTF ((stderr
, _("Now at end of input.\n")));
1284 yytoken
= YYTRANSLATE (yychar
);
1285 YY_SYMBOL_PRINT (_("Next token is"), yytoken
, &yylval
, &yylloc
);
1288 /* If the proper action on seeing token YYTOKEN is to reduce or to
1289 detect an error, take that action. */
1291 if (yyn
< 0 || YYLAST
< yyn
|| yycheck
[yyn
] != yytoken
)
1296 if (yyn
== 0 || yyn
== YYTABLE_NINF
)
1305 /* Shift the look-ahead token. */
1306 YY_SYMBOL_PRINT (_("Shifting"), yytoken
, &yylval
, &yylloc
);
1308 /* Discard the token being shifted unless it is eof. */
1309 if (yychar
!= YYEOF
)
1315 /* Count tokens shifted since error; after three, turn off error
1324 /*-----------------------------------------------------------.
1325 | yydefault -- do the default action for the current state. |
1326 `-----------------------------------------------------------*/
1328 yyn
= yydefact
[yystate
];
1334 /*-----------------------------.
1335 | yyreduce -- Do a reduction. |
1336 `-----------------------------*/
1338 /* yyn is the number of a rule to reduce with. */
1341 /* If YYLEN is nonzero, implement the default value of the action:
1344 Otherwise, the following line sets YYVAL to garbage.
1345 This behavior is undocumented and Bison
1346 users should not rely upon it. Assigning to YYVAL
1347 unconditionally makes the parser a bit smaller, and it avoids a
1348 GCC warning that YYVAL may be used uninitialized. */
1349 yyval
= yyvsp
[1-yylen
];
1351 /* Default location. */
1352 YYLLOC_DEFAULT (yyloc
, yylsp
- yylen
, yylen
);
1353 YY_REDUCE_PRINT (yyn
);
1357 #line 190 "parse-gram.y"
1358 { prologue_augment ((yyvsp
[0].chars
), (yylsp
[0])); }
1362 #line 191 "parse-gram.y"
1363 { debug_flag
= true; }
1367 #line 192 "parse-gram.y"
1368 { muscle_insert ((yyvsp
[-1].chars
), (yyvsp
[0].chars
)); }
1372 #line 193 "parse-gram.y"
1373 { defines_flag
= true; }
1377 #line 194 "parse-gram.y"
1378 { error_verbose
= true; }
1382 #line 195 "parse-gram.y"
1383 { expected_sr_conflicts
= (yyvsp
[0].integer
); }
1387 #line 196 "parse-gram.y"
1388 { expected_rr_conflicts
= (yyvsp
[0].integer
); }
1392 #line 197 "parse-gram.y"
1393 { spec_file_prefix
= (yyvsp
[0].chars
); }
1397 #line 199 "parse-gram.y"
1399 nondeterministic_parser
= true;
1405 #line 204 "parse-gram.y"
1407 muscle_code_grow ("initial_action", (yyvsp
[0].chars
), (yylsp
[0]));
1412 #line 207 "parse-gram.y"
1413 { add_param ("lex_param", (yyvsp
[0].chars
), (yylsp
[0])); }
1417 #line 208 "parse-gram.y"
1418 { locations_flag
= true; }
1422 #line 209 "parse-gram.y"
1423 { spec_name_prefix
= (yyvsp
[0].chars
); }
1427 #line 210 "parse-gram.y"
1428 { no_lines_flag
= true; }
1432 #line 211 "parse-gram.y"
1433 { nondeterministic_parser
= true; }
1437 #line 212 "parse-gram.y"
1438 { spec_outfile
= (yyvsp
[0].chars
); }
1442 #line 213 "parse-gram.y"
1443 { add_param ("parse_param", (yyvsp
[0].chars
), (yylsp
[0])); }
1447 #line 214 "parse-gram.y"
1448 { pure_parser
= true; }
1452 #line 215 "parse-gram.y"
1453 { skeleton
= (yyvsp
[0].chars
); }
1457 #line 216 "parse-gram.y"
1458 { token_table_flag
= true; }
1462 #line 217 "parse-gram.y"
1463 { report_flag
= report_states
; }
1467 #line 218 "parse-gram.y"
1468 { yacc_flag
= true; }
1472 #line 226 "parse-gram.y"
1474 grammar_start_symbol_set ((yyvsp
[0].symbol
), (yylsp
[0]));
1479 #line 230 "parse-gram.y"
1482 MUSCLE_INSERT_INT ("stype_line", (yylsp
[0]).start
.line
);
1483 muscle_insert ("stype", (yyvsp
[0].chars
));
1488 #line 236 "parse-gram.y"
1491 for (list
= (yyvsp
[0].list
); list
; list
= list
->next
)
1492 symbol_destructor_set (list
->sym
, (yyvsp
[-1].chars
), (yylsp
[-1]));
1493 symbol_list_free ((yyvsp
[0].list
));
1498 #line 243 "parse-gram.y"
1501 for (list
= (yyvsp
[0].list
); list
; list
= list
->next
)
1502 symbol_printer_set (list
->sym
, (yyvsp
[-1].chars
), list
->location
);
1503 symbol_list_free ((yyvsp
[0].list
));
1508 #line 250 "parse-gram.y"
1510 default_prec
= true;
1515 #line 254 "parse-gram.y"
1517 default_prec
= false;
1522 #line 260 "parse-gram.y"
1523 { current_class
= nterm_sym
; }
1527 #line 261 "parse-gram.y"
1529 current_class
= unknown_sym
;
1530 current_type
= NULL
;
1535 #line 265 "parse-gram.y"
1536 { current_class
= token_sym
; }
1540 #line 266 "parse-gram.y"
1542 current_class
= unknown_sym
;
1543 current_type
= NULL
;
1548 #line 271 "parse-gram.y"
1551 for (list
= (yyvsp
[0].list
); list
; list
= list
->next
)
1552 symbol_type_set (list
->sym
, (yyvsp
[-1].uniqstr
), (yylsp
[-1]));
1553 symbol_list_free ((yyvsp
[0].list
));
1558 #line 281 "parse-gram.y"
1562 for (list
= (yyvsp
[0].list
); list
; list
= list
->next
)
1564 symbol_type_set (list
->sym
, current_type
, (yylsp
[-1]));
1565 symbol_precedence_set (list
->sym
, current_prec
, (yyvsp
[-2].assoc
), (yylsp
[-2]));
1567 symbol_list_free ((yyvsp
[0].list
));
1568 current_type
= NULL
;
1573 #line 295 "parse-gram.y"
1574 { (yyval
.assoc
) = left_assoc
; }
1578 #line 296 "parse-gram.y"
1579 { (yyval
.assoc
) = right_assoc
; }
1583 #line 297 "parse-gram.y"
1584 { (yyval
.assoc
) = non_assoc
; }
1588 #line 301 "parse-gram.y"
1589 { current_type
= NULL
; }
1593 #line 302 "parse-gram.y"
1594 { current_type
= (yyvsp
[0].uniqstr
); }
1598 #line 308 "parse-gram.y"
1599 { (yyval
.list
) = symbol_list_new ((yyvsp
[0].symbol
), (yylsp
[0])); }
1603 #line 309 "parse-gram.y"
1604 { (yyval
.list
) = symbol_list_prepend ((yyvsp
[-1].list
), (yyvsp
[0].symbol
), (yylsp
[0])); }
1608 #line 315 "parse-gram.y"
1610 current_type
= (yyvsp
[0].uniqstr
);
1615 #line 319 "parse-gram.y"
1617 symbol_class_set ((yyvsp
[0].symbol
), current_class
, (yylsp
[0]));
1618 symbol_type_set ((yyvsp
[0].symbol
), current_type
, (yylsp
[0]));
1623 #line 324 "parse-gram.y"
1625 symbol_class_set ((yyvsp
[-1].symbol
), current_class
, (yylsp
[-1]));
1626 symbol_type_set ((yyvsp
[-1].symbol
), current_type
, (yylsp
[-1]));
1627 symbol_user_token_number_set ((yyvsp
[-1].symbol
), (yyvsp
[0].integer
), (yylsp
[0]));
1632 #line 330 "parse-gram.y"
1634 symbol_class_set ((yyvsp
[-1].symbol
), current_class
, (yylsp
[-1]));
1635 symbol_type_set ((yyvsp
[-1].symbol
), current_type
, (yylsp
[-1]));
1636 symbol_make_alias ((yyvsp
[-1].symbol
), (yyvsp
[0].symbol
), (yyloc
));
1641 #line 336 "parse-gram.y"
1643 symbol_class_set ((yyvsp
[-2].symbol
), current_class
, (yylsp
[-2]));
1644 symbol_type_set ((yyvsp
[-2].symbol
), current_type
, (yylsp
[-2]));
1645 symbol_user_token_number_set ((yyvsp
[-2].symbol
), (yyvsp
[-1].integer
), (yylsp
[-1]));
1646 symbol_make_alias ((yyvsp
[-2].symbol
), (yyvsp
[0].symbol
), (yyloc
));
1651 #line 365 "parse-gram.y"
1654 complain_at ((yyloc
), _("POSIX forbids declarations in the grammar"));
1659 #line 370 "parse-gram.y"
1666 #line 376 "parse-gram.y"
1667 { current_lhs
= (yyvsp
[0].symbol
); current_lhs_location
= (yylsp
[0]); }
1671 #line 380 "parse-gram.y"
1672 { grammar_rule_end ((yylsp
[0])); }
1676 #line 381 "parse-gram.y"
1677 { grammar_rule_end ((yylsp
[0])); }
1681 #line 387 "parse-gram.y"
1682 { grammar_rule_begin (current_lhs
, current_lhs_location
); }
1686 #line 389 "parse-gram.y"
1687 { grammar_current_rule_symbol_append ((yyvsp
[0].symbol
), (yylsp
[0])); }
1691 #line 391 "parse-gram.y"
1692 { grammar_current_rule_action_append ((yyvsp
[0].chars
), (yylsp
[0])); }
1696 #line 393 "parse-gram.y"
1697 { grammar_current_rule_prec_set ((yyvsp
[0].symbol
), (yylsp
[0])); }
1701 #line 395 "parse-gram.y"
1702 { grammar_current_rule_dprec_set ((yyvsp
[0].integer
), (yylsp
[0])); }
1706 #line 397 "parse-gram.y"
1707 { grammar_current_rule_merge_set ((yyvsp
[0].uniqstr
), (yylsp
[0])); }
1711 #line 401 "parse-gram.y"
1712 { (yyval
.symbol
) = (yyvsp
[0].symbol
); }
1716 #line 402 "parse-gram.y"
1717 { (yyval
.symbol
) = (yyvsp
[0].symbol
); }
1721 #line 407 "parse-gram.y"
1722 { (yyval
.chars
) = (yyvsp
[0].chars
); }
1726 #line 413 "parse-gram.y"
1728 (yyval
.symbol
) = symbol_get (quotearg_style (c_quoting_style
, (yyvsp
[0].chars
)), (yylsp
[0]));
1729 symbol_class_set ((yyval
.symbol
), token_sym
, (yylsp
[0]));
1734 #line 422 "parse-gram.y"
1735 { (yyval
.chars
) = (yyvsp
[0].chars
); }
1739 #line 429 "parse-gram.y"
1741 muscle_code_grow ("epilogue", (yyvsp
[0].chars
), (yylsp
[0]));
1742 scanner_last_string_free ();
1750 /* Line 1056 of yacc.c. */
1751 #line 1752 "parse-gram.c"
1757 YY_STACK_PRINT (yyss
, yyssp
);
1762 /* Now `shift' the result of the reduction. Determine what state
1763 that goes to, based on the state we popped back to and the rule
1764 number reduced by. */
1768 yystate
= yypgoto
[yyn
- YYNTOKENS
] + *yyssp
;
1769 if (0 <= yystate
&& yystate
<= YYLAST
&& yycheck
[yystate
] == *yyssp
)
1770 yystate
= yytable
[yystate
];
1772 yystate
= yydefgoto
[yyn
- YYNTOKENS
];
1777 /*------------------------------------.
1778 | yyerrlab -- here on detecting error |
1779 `------------------------------------*/
1781 /* If not already recovering from an error, report this error. */
1786 yyn
= yypact
[yystate
];
1788 if (YYPACT_NINF
< yyn
&& yyn
< YYLAST
)
1790 int yytype
= YYTRANSLATE (yychar
);
1791 YYSIZE_T yysize0
= yystrlen (yytname
[yytype
]);
1792 YYSIZE_T yysize
= yysize0
;
1794 int yysize_overflow
= 0;
1796 # define YYERROR_VERBOSE_ARGS_MAXIMUM 5
1797 char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
];
1801 /* This is so xgettext sees the translatable formats that are
1802 constructed on the fly. */
1803 _("syntax error, unexpected %s");
1804 _("syntax error, unexpected %s, expecting %s");
1805 _("syntax error, unexpected %s, expecting %s or %s");
1806 _("syntax error, unexpected %s, expecting %s or %s or %s");
1807 _("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1811 static char const yyunexpected
[] = "syntax error, unexpected %s";
1812 static char const yyexpecting
[] = ", expecting %s";
1813 static char const yyor
[] = " or %s";
1814 char yyformat
[sizeof yyunexpected
1815 + sizeof yyexpecting
- 1
1816 + ((YYERROR_VERBOSE_ARGS_MAXIMUM
- 2)
1817 * (sizeof yyor
- 1))];
1818 char const *yyprefix
= yyexpecting
;
1820 /* Start YYX at -YYN if negative to avoid negative indexes in
1822 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
1824 /* Stay within bounds of both yycheck and yytname. */
1825 int yychecklim
= YYLAST
- yyn
;
1826 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
1829 yyarg
[0] = yytname
[yytype
];
1830 yyfmt
= yystpcpy (yyformat
, yyunexpected
);
1832 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1833 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1835 if (yycount
== YYERROR_VERBOSE_ARGS_MAXIMUM
)
1839 yyformat
[sizeof yyunexpected
- 1] = '\0';
1842 yyarg
[yycount
++] = yytname
[yyx
];
1843 yysize1
= yysize
+ yystrlen (yytname
[yyx
]);
1844 yysize_overflow
|= yysize1
< yysize
;
1846 yyfmt
= yystpcpy (yyfmt
, yyprefix
);
1851 yysize1
= yysize
+ strlen (yyf
);
1852 yysize_overflow
|= yysize1
< yysize
;
1855 if (!yysize_overflow
&& yysize
<= YYSTACK_ALLOC_MAXIMUM
)
1856 yymsg
= (char *) YYSTACK_ALLOC (yysize
);
1859 /* Avoid sprintf, as that infringes on the user's name space.
1860 Don't have undefined behavior even if the translation
1861 produced a string with the wrong number of "%s"s. */
1864 while ((*yyp
= *yyf
))
1866 if (*yyp
== '%' && yyf
[1] == 's' && yyi
< yycount
)
1868 yyp
= yystpcpy (yyp
, yyarg
[yyi
++]);
1878 YYSTACK_FREE (yymsg
);
1881 yyerror (_("syntax error; also memory exhausted"));
1884 #endif /* YYERROR_VERBOSE */
1885 yyerror (_("syntax error"));
1888 yyerror_range
[0] = yylloc
;
1890 if (yyerrstatus
== 3)
1892 /* If just tried and failed to reuse look-ahead token after an
1893 error, discard it. */
1895 if (yychar
<= YYEOF
)
1897 /* If at end of input, pop the error token,
1898 then the rest of the stack, then return failure. */
1899 if (yychar
== YYEOF
)
1904 yydestruct (_("Error: discarding"), yytoken
, &yylval
, &yylloc
);
1909 /* Else will try to reuse look-ahead token after shifting the error
1914 /*---------------------------------------------------.
1915 | yyerrorlab -- error raised explicitly by YYERROR. |
1916 `---------------------------------------------------*/
1919 /* Pacify compilers like GCC when the user code never invokes
1920 YYERROR and the label yyerrorlab therefore never appears in user
1925 yyerror_range
[0] = yylsp
[1-yylen
];
1933 /*-------------------------------------------------------------.
1934 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1935 `-------------------------------------------------------------*/
1937 yyerrstatus
= 3; /* Each real token shifted decrements this. */
1941 yyn
= yypact
[yystate
];
1942 if (yyn
!= YYPACT_NINF
)
1945 if (0 <= yyn
&& yyn
<= YYLAST
&& yycheck
[yyn
] == YYTERROR
)
1953 /* Pop the current state because it cannot handle the error token. */
1957 yyerror_range
[0] = *yylsp
;
1958 yydestruct (_("Error: popping"), yystos
[yystate
], yyvsp
, yylsp
);
1961 YY_STACK_PRINT (yyss
, yyssp
);
1969 yyerror_range
[1] = yylloc
;
1970 /* Using YYLLOC is tempting, but would change the location of
1971 the look-ahead. YYLOC is available though. */
1972 YYLLOC_DEFAULT (yyloc
, yyerror_range
- 1, 2);
1975 /* Shift the error token. */
1976 YY_SYMBOL_PRINT (_("Shifting"), yystos
[yyn
], yyvsp
, yylsp
);
1982 /*-------------------------------------.
1983 | yyacceptlab -- YYACCEPT comes here. |
1984 `-------------------------------------*/
1989 /*-----------------------------------.
1990 | yyabortlab -- YYABORT comes here. |
1991 `-----------------------------------*/
1997 /*----------------------------------------------.
1998 | yyoverflowlab -- parser overflow comes here. |
1999 `----------------------------------------------*/
2001 yyerror (_("parser stack overflow"));
2007 if (yychar
!= YYEOF
&& yychar
!= YYEMPTY
)
2008 yydestruct (_("Error: discarding lookahead"),
2009 yytoken
, &yylval
, &yylloc
);
2013 yyerror_range
[0] = *yylsp
;
2017 yydestruct (_("Error: popping"),
2018 yystos
[*yyssp
], yyvsp
, yylsp
);
2022 YYSTACK_FREE (yyss
);
2028 #line 435 "parse-gram.y"
2032 /* Return the location of the left-hand side of a rule whose
2033 right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
2034 the right-hand side, and return an empty location equal to the end
2035 boundary of RHS[0] if the right-hand side is empty. */
2038 lloc_default (YYLTYPE
const *rhs
, int n
)
2043 /* SGI MIPSpro 7.4.1m miscompiles "loc.start = loc.end = rhs[n].end;".
2044 The bug is fixed in 7.4.2m, but play it safe for now. */
2045 loc
.start
= rhs
[n
].end
;
2046 loc
.end
= rhs
[n
].end
;
2048 /* Ignore empty nonterminals the start of the the right-hand side.
2049 Do not bother to ignore them at the end of the right-hand side,
2050 since empty nonterminals have the same end as their predecessors. */
2051 for (i
= 1; i
<= n
; i
++)
2052 if (! equal_boundaries (rhs
[i
].start
, rhs
[i
].end
))
2054 loc
.start
= rhs
[i
].start
;
2062 /* Add a lex-param or a parse-param (depending on TYPE) with
2063 declaration DECL and location LOC. */
2066 add_param (char const *type
, char *decl
, location loc
)
2068 static char const alphanum
[26 + 26 + 1 + 10] =
2069 "abcdefghijklmnopqrstuvwxyz"
2070 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
2073 char const *name_start
= NULL
;
2076 /* Stop on last actual character. */
2077 for (p
= decl
; p
[1]; p
++)
2079 || ! memchr (alphanum
, p
[-1], sizeof alphanum
))
2080 && memchr (alphanum
, p
[0], sizeof alphanum
- 10))
2083 /* Strip the surrounding '{' and '}', and any blanks just inside
2085 while (*--p
== ' ' || *p
== '\t')
2088 while (*++decl
== ' ' || *decl
== '\t')
2092 complain_at (loc
, _("missing identifier in parameter declaration"));
2099 memchr (alphanum
, name_start
[name_len
], sizeof alphanum
);
2103 name
= xmalloc (name_len
+ 1);
2104 memcpy (name
, name_start
, name_len
);
2105 name
[name_len
] = '\0';
2106 muscle_pair_list_grow (type
, decl
, name
);
2110 scanner_last_string_free ();
2113 /*----------------------------------------------------.
2114 | When debugging the parser, display tokens' values. |
2115 `----------------------------------------------------*/
2118 print_token_value (FILE *file
, int type
, YYSTYPE
const *value
)
2124 fprintf (file
, " = %s", value
->symbol
->tag
);
2128 fprintf (file
, " = %d", value
->integer
);
2132 fprintf (file
, " = \"%s\"", value
->chars
);
2136 fprintf (file
, " = <%s>", value
->uniqstr
);
2140 case PERCENT_DESTRUCTOR
:
2141 case PERCENT_LEX_PARAM
:
2142 case PERCENT_PARSE_PARAM
:
2143 case PERCENT_PRINTER
:
2147 fprintf (file
, " = {{ %s }}", value
->chars
);
2151 fprintf (file
, "unknown token type");
2157 gram_error (location
const *loc
, char const *msg
)
2159 complain_at (*loc
, "%s", msg
);
2163 token_name (int type
)
2165 return yytname
[type
];