1 /* A Bison parser, made by GNU Bison 1.875e. */
3 /* Skeleton parser for Yacc-like parsing with Bison,
4 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004 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., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, 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 /* If NAME_PREFIX is specified substitute the variables and functions
50 #define yyparse gram_parse
51 #define yylex gram_lex
52 #define yyerror gram_error
53 #define yylval gram_lval
54 #define yychar gram_char
55 #define yydebug gram_debug
56 #define yynerrs gram_nerrs
57 #define yylloc gram_lloc
62 /* Put the tokens into the symbol table, so that GDB and other debuggers
71 PERCENT_DESTRUCTOR
= 263,
72 PERCENT_PRINTER
= 264,
76 PERCENT_NONASSOC
= 268,
81 PERCENT_DEFAULT_PREC
= 273,
83 PERCENT_DEFINES
= 275,
84 PERCENT_ERROR_VERBOSE
= 276,
86 PERCENT_EXPECT_RR
= 278,
87 PERCENT_FILE_PREFIX
= 279,
88 PERCENT_GLR_PARSER
= 280,
89 PERCENT_INITIAL_ACTION
= 281,
90 PERCENT_LEX_PARAM
= 282,
91 PERCENT_LOCATIONS
= 283,
92 PERCENT_NAME_PREFIX
= 284,
93 PERCENT_NO_DEFAULT_PREC
= 285,
94 PERCENT_NO_LINES
= 286,
95 PERCENT_NONDETERMINISTIC_PARSER
= 287,
97 PERCENT_PARSE_PARAM
= 289,
98 PERCENT_PURE_PARSER
= 290,
99 PERCENT_SKELETON
= 291,
101 PERCENT_TOKEN_TABLE
= 293,
102 PERCENT_VERBOSE
= 294,
110 PERCENT_PERCENT
= 302,
119 #define PERCENT_TOKEN 260
120 #define PERCENT_NTERM 261
121 #define PERCENT_TYPE 262
122 #define PERCENT_DESTRUCTOR 263
123 #define PERCENT_PRINTER 264
124 #define PERCENT_UNION 265
125 #define PERCENT_LEFT 266
126 #define PERCENT_RIGHT 267
127 #define PERCENT_NONASSOC 268
128 #define PERCENT_PREC 269
129 #define PERCENT_DPREC 270
130 #define PERCENT_MERGE 271
131 #define PERCENT_DEBUG 272
132 #define PERCENT_DEFAULT_PREC 273
133 #define PERCENT_DEFINE 274
134 #define PERCENT_DEFINES 275
135 #define PERCENT_ERROR_VERBOSE 276
136 #define PERCENT_EXPECT 277
137 #define PERCENT_EXPECT_RR 278
138 #define PERCENT_FILE_PREFIX 279
139 #define PERCENT_GLR_PARSER 280
140 #define PERCENT_INITIAL_ACTION 281
141 #define PERCENT_LEX_PARAM 282
142 #define PERCENT_LOCATIONS 283
143 #define PERCENT_NAME_PREFIX 284
144 #define PERCENT_NO_DEFAULT_PREC 285
145 #define PERCENT_NO_LINES 286
146 #define PERCENT_NONDETERMINISTIC_PARSER 287
147 #define PERCENT_OUTPUT 288
148 #define PERCENT_PARSE_PARAM 289
149 #define PERCENT_PURE_PARSER 290
150 #define PERCENT_SKELETON 291
151 #define PERCENT_START 292
152 #define PERCENT_TOKEN_TABLE 293
153 #define PERCENT_VERBOSE 294
154 #define PERCENT_YACC 295
157 #define SEMICOLON 298
161 #define PERCENT_PERCENT 302
164 #define BRACED_CODE 305
169 /* Copy the first part of user declarations. */
170 #line 1 "parse-gram.y"
171 /* Bison Grammar Parser -*- C -*-
173 Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
175 This file is part of Bison, the GNU Compiler Compiler.
177 This program is free software; you can redistribute it and/or modify
178 it under the terms of the GNU General Public License as published by
179 the Free Software Foundation; either version 2 of the License, or
180 (at your option) any later version.
182 This program is distributed in the hope that it will be useful,
183 but WITHOUT ANY WARRANTY; without even the implied warranty of
184 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
185 GNU General Public License for more details.
187 You should have received a copy of the GNU General Public License
188 along with this program; if not, write to the Free Software
189 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
195 #include "complain.h"
196 #include "conflicts.h"
200 #include "muscle_tab.h"
205 #define YYLLOC_DEFAULT(Current, Rhs, N) (Current) = lloc_default (Rhs, N)
206 static YYLTYPE
lloc_default (YYLTYPE
const *, int);
208 /* Request detailed syntax error messages, and pass them to GRAM_ERROR.
209 FIXME: depends on the undocumented availability of YYLLOC. */
211 #define yyerror(Msg) \
212 gram_error (&yylloc, Msg)
213 static void gram_error (location
const *, char const *);
215 #define YYPRINT(File, Type, Value) \
216 print_token_value (File, Type, &Value)
217 static void print_token_value (FILE *, int, YYSTYPE
const *);
219 static void add_param (char const *, char *, location
);
221 symbol_class current_class
= unknown_sym
;
222 uniqstr current_type
= 0;
224 location current_lhs_location
;
226 int current_prec
= 0;
229 /* Enabling traces. */
234 /* Enabling verbose error messages. */
235 #ifdef YYERROR_VERBOSE
236 # undef YYERROR_VERBOSE
237 # define YYERROR_VERBOSE 1
239 # define YYERROR_VERBOSE 1
242 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
243 #line 78 "parse-gram.y"
244 typedef union YYSTYPE
{
252 /* Line 191 of yacc.c. */
253 #line 254 "parse-gram.c"
254 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
255 # define YYSTYPE_IS_DECLARED 1
256 # define YYSTYPE_IS_TRIVIAL 1
259 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
260 typedef struct YYLTYPE
267 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
268 # define YYLTYPE_IS_DECLARED 1
269 # define YYLTYPE_IS_TRIVIAL 1
273 /* Copy the second part of user declarations. */
276 /* Line 214 of yacc.c. */
277 #line 278 "parse-gram.c"
279 #if ! defined (yyoverflow) || YYERROR_VERBOSE
285 # define YYMALLOC malloc
288 /* The parser invokes alloca or malloc; define the necessary symbols. */
290 # ifdef YYSTACK_USE_ALLOCA
291 # if YYSTACK_USE_ALLOCA
292 # define YYSTACK_ALLOC alloca
295 # if defined (alloca) || defined (_ALLOCA_H)
296 # define YYSTACK_ALLOC alloca
299 # define YYSTACK_ALLOC __builtin_alloca
304 # ifdef YYSTACK_ALLOC
305 /* Pacify GCC's `empty if-body' warning. */
306 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
308 # if defined (__STDC__) || defined (__cplusplus)
309 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
310 # define YYSIZE_T size_t
312 # define YYSTACK_ALLOC YYMALLOC
313 # define YYSTACK_FREE YYFREE
315 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
318 #if (! defined (yyoverflow) \
319 && (! defined (__cplusplus) \
320 || (defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
321 && defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
323 /* A type that is properly aligned for any stack member. */
331 /* The size of the maximum gap between one aligned stack and the next. */
332 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
334 /* The size of an array large to enough to hold all stacks, each with
336 # define YYSTACK_BYTES(N) \
337 ((N) * (sizeof (short int) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
338 + 2 * YYSTACK_GAP_MAXIMUM)
340 /* Copy COUNT objects from FROM to TO. The source and destination do
343 # if defined (__GNUC__) && 1 < __GNUC__
344 # define YYCOPY(To, From, Count) \
345 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
347 # define YYCOPY(To, From, Count) \
350 register YYSIZE_T yyi; \
351 for (yyi = 0; yyi < (Count); yyi++) \
352 (To)[yyi] = (From)[yyi]; \
358 /* Relocate STACK from its old location to the new one. The
359 local variables YYSIZE and YYSTACKSIZE give the old and new number of
360 elements in the stack, and YYPTR gives the new location of the
361 stack. Advance YYPTR to a properly aligned location for the next
363 # define YYSTACK_RELOCATE(Stack) \
366 YYSIZE_T yynewbytes; \
367 YYCOPY (&yyptr->Stack, Stack, yysize); \
368 Stack = &yyptr->Stack; \
369 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
370 yyptr += yynewbytes / sizeof (*yyptr); \
376 #if defined (__STDC__) || defined (__cplusplus)
377 typedef signed char yysigned_char
;
379 typedef short int yysigned_char
;
382 /* YYFINAL -- State number of the termination state. */
384 /* YYLAST -- Last index in YYTABLE. */
387 /* YYNTOKENS -- Number of terminals. */
389 /* YYNNTS -- Number of nonterminals. */
391 /* YYNRULES -- Number of rules. */
393 /* YYNRULES -- Number of states. */
394 #define YYNSTATES 108
396 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
398 #define YYMAXUTOK 305
400 #define YYTRANSLATE(YYX) \
401 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
403 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
404 static const unsigned char yytranslate
[] =
406 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
407 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
408 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
409 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
410 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
411 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
412 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
413 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
414 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
415 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
416 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
417 2, 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, 1, 2, 3, 4,
432 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
433 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
434 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
435 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
436 45, 46, 47, 48, 49, 50
440 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
442 static const unsigned char yyprhs
[] =
444 0, 0, 3, 8, 9, 12, 14, 16, 18, 22,
445 24, 26, 29, 32, 36, 38, 40, 42, 44, 48,
446 50, 52, 56, 58, 60, 63, 65, 67, 69, 71,
447 73, 75, 78, 80, 83, 86, 88, 90, 91, 95,
448 96, 100, 104, 108, 110, 112, 114, 115, 117, 119,
449 122, 124, 126, 129, 132, 136, 138, 141, 143, 146,
450 148, 151, 154, 155, 159, 161, 165, 168, 169, 172,
451 175, 179, 183, 187, 189, 191, 193, 195, 197, 198
454 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
455 static const yysigned_char yyrhs
[] =
457 52, 0, -1, 53, 47, 65, 75, -1, -1, 53,
458 54, -1, 55, -1, 48, -1, 17, -1, 19, 74,
459 74, -1, 20, -1, 21, -1, 22, 4, -1, 23,
460 4, -1, 24, 42, 74, -1, 25, -1, 26, -1,
461 27, -1, 28, -1, 29, 42, 74, -1, 31, -1,
462 32, -1, 33, 42, 74, -1, 34, -1, 35, -1,
463 36, 74, -1, 38, -1, 39, -1, 40, -1, 43,
464 -1, 59, -1, 56, -1, 37, 71, -1, 10, -1,
465 8, 62, -1, 9, 62, -1, 18, -1, 30, -1,
466 -1, 6, 57, 64, -1, -1, 5, 58, 64, -1,
467 7, 41, 62, -1, 60, 61, 62, -1, 11, -1,
468 12, -1, 13, -1, -1, 41, -1, 71, -1, 62,
469 71, -1, 41, -1, 45, -1, 45, 4, -1, 45,
470 73, -1, 45, 4, 73, -1, 63, -1, 64, 63,
471 -1, 66, -1, 65, 66, -1, 67, -1, 55, 43,
472 -1, 1, 43, -1, -1, 46, 68, 69, -1, 70,
473 -1, 69, 44, 70, -1, 69, 43, -1, -1, 70,
474 71, -1, 70, 72, -1, 70, 14, 71, -1, 70,
475 15, 4, -1, 70, 16, 41, -1, 45, -1, 73,
476 -1, 50, -1, 3, -1, 3, -1, -1, 47, 49,
480 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
481 static const unsigned short int yyrline
[] =
483 0, 171, 171, 179, 181, 185, 186, 187, 188, 189,
484 190, 191, 192, 193, 194, 199, 203, 204, 205, 206,
485 207, 208, 209, 210, 211, 212, 213, 214, 215, 219,
486 220, 221, 225, 231, 238, 245, 249, 256, 256, 261,
487 261, 266, 276, 291, 292, 293, 297, 298, 304, 305,
488 310, 314, 319, 325, 331, 342, 343, 352, 353, 359,
489 360, 365, 372, 372, 376, 377, 378, 383, 384, 386,
490 388, 390, 392, 397, 398, 402, 408, 417, 424, 426
494 #if YYDEBUG || YYERROR_VERBOSE
495 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
496 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
497 static const char *const yytname
[] =
499 "\"end of file\"", "error", "$undefined", "\"string\"", "\"integer\"",
500 "\"%token\"", "\"%nterm\"", "\"%type\"", "\"%destructor {...}\"",
501 "\"%printer {...}\"", "\"%union {...}\"", "\"%left\"", "\"%right\"",
502 "\"%nonassoc\"", "\"%prec\"", "\"%dprec\"", "\"%merge\"", "\"%debug\"",
503 "\"%default-prec\"", "\"%define\"", "\"%defines\"", "\"%error-verbose\"",
504 "\"%expect\"", "\"%expect-rr\"", "\"%file-prefix\"", "\"%glr-parser\"",
505 "\"%initial-action {...}\"", "\"%lex-param {...}\"", "\"%locations\"",
506 "\"%name-prefix\"", "\"%no-default-prec\"", "\"%no-lines\"",
507 "\"%nondeterministic-parser\"", "\"%output\"", "\"%parse-param {...}\"",
508 "\"%pure-parser\"", "\"%skeleton\"", "\"%start\"", "\"%token-table\"",
509 "\"%verbose\"", "\"%yacc\"", "\"type\"", "\"=\"", "\";\"", "\"|\"",
510 "\"identifier\"", "\"identifier:\"", "\"%%\"", "\"%{...%}\"",
511 "\"epilogue\"", "\"{...}\"", "$accept", "input", "declarations",
512 "declaration", "grammar_declaration", "symbol_declaration", "@1", "@2",
513 "precedence_declaration", "precedence_declarator", "type.opt",
514 "symbols.1", "symbol_def", "symbol_defs.1", "grammar",
515 "rules_or_grammar_declaration", "rules", "@3", "rhses.1", "rhs",
516 "symbol", "action", "string_as_id", "string_content", "epilogue.opt", 0
521 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
523 static const unsigned short int yytoknum
[] =
525 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
526 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
527 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
528 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
529 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
534 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
535 static const unsigned char yyr1
[] =
537 0, 51, 52, 53, 53, 54, 54, 54, 54, 54,
538 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
539 54, 54, 54, 54, 54, 54, 54, 54, 54, 55,
540 55, 55, 55, 55, 55, 55, 55, 57, 56, 58,
541 56, 56, 59, 60, 60, 60, 61, 61, 62, 62,
542 63, 63, 63, 63, 63, 64, 64, 65, 65, 66,
543 66, 66, 68, 67, 69, 69, 69, 70, 70, 70,
544 70, 70, 70, 71, 71, 72, 73, 74, 75, 75
547 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
548 static const unsigned char yyr2
[] =
550 0, 2, 4, 0, 2, 1, 1, 1, 3, 1,
551 1, 2, 2, 3, 1, 1, 1, 1, 3, 1,
552 1, 3, 1, 1, 2, 1, 1, 1, 1, 1,
553 1, 2, 1, 2, 2, 1, 1, 0, 3, 0,
554 3, 3, 3, 1, 1, 1, 0, 1, 1, 2,
555 1, 1, 2, 2, 3, 1, 2, 1, 2, 1,
556 2, 2, 0, 3, 1, 3, 2, 0, 2, 2,
557 3, 3, 3, 1, 1, 1, 1, 1, 0, 2
560 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
561 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
562 means the default is an error. */
563 static const unsigned char yydefact
[] =
565 3, 0, 0, 1, 39, 37, 0, 0, 0, 32,
566 43, 44, 45, 7, 35, 0, 9, 10, 0, 0,
567 0, 14, 15, 16, 17, 0, 36, 19, 20, 0,
568 22, 23, 0, 0, 25, 26, 27, 28, 0, 6,
569 4, 5, 30, 29, 46, 0, 0, 0, 76, 73,
570 33, 48, 74, 34, 77, 0, 11, 12, 0, 0,
571 0, 24, 31, 0, 62, 0, 0, 57, 59, 47,
572 0, 50, 51, 55, 40, 38, 41, 49, 8, 13,
573 18, 21, 61, 67, 60, 0, 58, 2, 42, 52,
574 53, 56, 63, 64, 79, 54, 66, 67, 0, 0,
575 0, 75, 68, 69, 65, 70, 71, 72
578 /* YYDEFGOTO[NTERM-NUM]. */
579 static const yysigned_char yydefgoto
[] =
581 -1, 1, 2, 40, 65, 42, 46, 45, 43, 44,
582 70, 50, 73, 74, 66, 67, 68, 83, 92, 93,
586 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
588 #define YYPACT_NINF -67
589 static const yysigned_char yypact
[] =
591 -67, 5, 110, -67, -67, -67, -34, 0, 0, -67,
592 -67, -67, -67, -67, -67, 13, -67, -67, 20, 31,
593 -17, -67, -67, -67, -67, -6, -67, -67, -67, -5,
594 -67, -67, 13, 0, -67, -67, -67, -67, 68, -67,
595 -67, -67, -67, -67, -3, -37, -37, 0, -67, -67,
596 0, -67, -67, 0, -67, 13, -67, -67, 13, 13,
597 13, -67, -67, -2, -67, 3, 21, -67, -67, -67,
598 0, -67, 6, -67, -37, -37, 0, -67, -67, -67,
599 -67, -67, -67, -67, -67, 1, -67, -67, 0, 39,
600 -67, -67, -32, -1, -67, -67, -67, -67, 0, 43,
601 7, -67, -67, -67, -1, -67, -67, -67
604 /* YYPGOTO[NTERM-NUM]. */
605 static const yysigned_char yypgoto
[] =
607 -67, -67, -67, -67, 50, -67, -67, -67, -67, -67,
608 -67, -7, -56, 8, -67, -13, -67, -67, -67, -41,
609 -33, -67, -66, 29, -67
612 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
613 positive, shift that token. If negative, reduce the rule which
614 number is the opposite. If zero, do what YYDEFACT says.
615 If YYTABLE_NINF, syntax error. */
616 #define YYTABLE_NINF -79
617 static const yysigned_char yytable
[] =
619 62, 53, 48, 48, 71, 3, 90, 47, 72, 48,
620 89, 96, 97, 98, 99, 100, 54, 77, 91, 91,
621 77, -78, 63, 95, 56, 58, 4, 5, 6, 7,
622 8, 9, 10, 11, 12, 57, 59, 60, 69, 14,
623 76, 82, 48, 77, 49, 49, 84, 106, 107, 101,
624 94, 26, 41, 86, 75, 77, 104, 0, 33, 0,
625 102, 61, 0, 88, 0, 105, 0, 64, 85, 63,
626 0, 102, 0, 4, 5, 6, 7, 8, 9, 10,
627 11, 12, 0, 0, 78, 0, 14, 79, 80, 81,
628 0, 0, 0, 0, 0, 0, 0, 0, 26, 0,
629 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
630 0, 0, 0, 0, 64, 4, 5, 6, 7, 8,
631 9, 10, 11, 12, 0, 0, 0, 13, 14, 15,
632 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
633 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
634 36, 0, 0, 37, 0, 0, 0, 38, 39
637 static const yysigned_char yycheck
[] =
639 33, 8, 3, 3, 41, 0, 72, 41, 45, 3,
640 4, 43, 44, 14, 15, 16, 3, 50, 74, 75,
641 53, 0, 1, 89, 4, 42, 5, 6, 7, 8,
642 9, 10, 11, 12, 13, 4, 42, 42, 41, 18,
643 47, 43, 3, 76, 45, 45, 43, 4, 41, 50,
644 49, 30, 2, 66, 46, 88, 97, -1, 37, -1,
645 93, 32, -1, 70, -1, 98, -1, 46, 47, 1,
646 -1, 104, -1, 5, 6, 7, 8, 9, 10, 11,
647 12, 13, -1, -1, 55, -1, 18, 58, 59, 60,
648 -1, -1, -1, -1, -1, -1, -1, -1, 30, -1,
649 -1, -1, -1, -1, -1, 37, -1, -1, -1, -1,
650 -1, -1, -1, -1, 46, 5, 6, 7, 8, 9,
651 10, 11, 12, 13, -1, -1, -1, 17, 18, 19,
652 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
653 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
654 40, -1, -1, 43, -1, -1, -1, 47, 48
657 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
658 symbol of state STATE-NUM. */
659 static const unsigned char yystos
[] =
661 0, 52, 53, 0, 5, 6, 7, 8, 9, 10,
662 11, 12, 13, 17, 18, 19, 20, 21, 22, 23,
663 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
664 34, 35, 36, 37, 38, 39, 40, 43, 47, 48,
665 54, 55, 56, 59, 60, 58, 57, 41, 3, 45,
666 62, 71, 73, 62, 3, 74, 4, 4, 42, 42,
667 42, 74, 71, 1, 46, 55, 65, 66, 67, 41,
668 61, 41, 45, 63, 64, 64, 62, 71, 74, 74,
669 74, 74, 43, 68, 43, 47, 66, 75, 62, 4,
670 73, 63, 69, 70, 49, 73, 43, 44, 14, 15,
671 16, 50, 71, 72, 70, 71, 4, 41
674 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
675 # define YYSIZE_T __SIZE_TYPE__
677 #if ! defined (YYSIZE_T) && defined (size_t)
678 # define YYSIZE_T size_t
680 #if ! defined (YYSIZE_T)
681 # if defined (__STDC__) || defined (__cplusplus)
682 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
683 # define YYSIZE_T size_t
686 #if ! defined (YYSIZE_T)
687 # define YYSIZE_T unsigned int
690 #define yyerrok (yyerrstatus = 0)
691 #define yyclearin (yychar = YYEMPTY)
695 #define YYACCEPT goto yyacceptlab
696 #define YYABORT goto yyabortlab
697 #define YYERROR goto yyerrorlab
700 /* Like YYERROR except do call yyerror. This remains here temporarily
701 to ease the transition to the new meaning of YYERROR, for GCC.
702 Once GCC version 2 has supplanted version 1, this can go. */
704 #define YYFAIL goto yyerrlab
706 #define YYRECOVERING() (!!yyerrstatus)
708 #define YYBACKUP(Token, Value) \
710 if (yychar == YYEMPTY && yylen == 1) \
714 yytoken = YYTRANSLATE (yychar); \
720 yyerror ("syntax error: cannot back up");\
726 #define YYERRCODE 256
728 /* YYLLOC_DEFAULT -- Compute the default location (before the actions
731 #ifndef YYLLOC_DEFAULT
732 # define YYLLOC_DEFAULT(Current, Rhs, N) \
733 ((Current).first_line = (Rhs)[1].first_line, \
734 (Current).first_column = (Rhs)[1].first_column, \
735 (Current).last_line = (Rhs)[N].last_line, \
736 (Current).last_column = (Rhs)[N].last_column)
739 /* YYLEX -- calling `yylex' with the right arguments. */
742 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
744 # define YYLEX yylex (&yylval, &yylloc)
747 /* Enable debugging if requested. */
751 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
752 # define YYFPRINTF fprintf
755 # define YYDPRINTF(Args) \
761 # define YYDSYMPRINT(Args) \
767 # define YYDSYMPRINTF(Title, Token, Value, Location) \
771 YYFPRINTF (stderr, "%s ", Title); \
772 yysymprint (stderr, \
773 Token, Value, Location); \
774 YYFPRINTF (stderr, "\n"); \
778 /*------------------------------------------------------------------.
779 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
781 `------------------------------------------------------------------*/
783 #if defined (__STDC__) || defined (__cplusplus)
785 yy_stack_print (short int *bottom
, short int *top
)
788 yy_stack_print (bottom
, top
)
793 YYFPRINTF (stderr
, "Stack now");
794 for (/* Nothing. */; bottom
<= top
; ++bottom
)
795 YYFPRINTF (stderr
, " %d", *bottom
);
796 YYFPRINTF (stderr
, "\n");
799 # define YY_STACK_PRINT(Bottom, Top) \
802 yy_stack_print ((Bottom), (Top)); \
806 /*------------------------------------------------.
807 | Report that the YYRULE is going to be reduced. |
808 `------------------------------------------------*/
810 #if defined (__STDC__) || defined (__cplusplus)
812 yy_reduce_print (int yyrule
)
815 yy_reduce_print (yyrule
)
820 unsigned int yylno
= yyrline
[yyrule
];
821 YYFPRINTF (stderr
, "Reducing stack by rule %d (line %u), ",
823 /* Print the symbols being reduced, and their result. */
824 for (yyi
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++)
825 YYFPRINTF (stderr
, "%s ", yytname
[yyrhs
[yyi
]]);
826 YYFPRINTF (stderr
, "-> %s\n", yytname
[yyr1
[yyrule
]]);
829 # define YY_REDUCE_PRINT(Rule) \
832 yy_reduce_print (Rule); \
835 /* Nonzero means print parse trace. It is left uninitialized so that
836 multiple parsers can coexist. */
839 # define YYDPRINTF(Args)
840 # define YYDSYMPRINT(Args)
841 # define YYDSYMPRINTF(Title, Token, Value, Location)
842 # define YY_STACK_PRINT(Bottom, Top)
843 # define YY_REDUCE_PRINT(Rule)
844 #endif /* !YYDEBUG */
847 /* YYINITDEPTH -- initial size of the parser's stacks. */
849 # define YYINITDEPTH 200
852 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
853 if the built-in stack extension method is used).
855 Do not make this value too large; the results are undefined if
856 SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
857 evaluated with infinite-precision integer arithmetic. */
859 #if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
864 # define YYMAXDEPTH 10000
872 # if defined (__GLIBC__) && defined (_STRING_H)
873 # define yystrlen strlen
875 /* Return the length of YYSTR. */
877 # if defined (__STDC__) || defined (__cplusplus)
878 yystrlen (const char *yystr
)
884 register const char *yys
= yystr
;
886 while (*yys
++ != '\0')
889 return yys
- yystr
- 1;
895 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
896 # define yystpcpy stpcpy
898 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
901 # if defined (__STDC__) || defined (__cplusplus)
902 yystpcpy (char *yydest
, const char *yysrc
)
904 yystpcpy (yydest
, yysrc
)
909 register char *yyd
= yydest
;
910 register const char *yys
= yysrc
;
912 while ((*yyd
++ = *yys
++) != '\0')
920 #endif /* !YYERROR_VERBOSE */
925 /*--------------------------------.
926 | Print this symbol on YYOUTPUT. |
927 `--------------------------------*/
929 #if defined (__STDC__) || defined (__cplusplus)
931 yysymprint (FILE *yyoutput
, int yytype
, YYSTYPE
*yyvaluep
, YYLTYPE
*yylocationp
)
934 yysymprint (yyoutput
, yytype
, yyvaluep
, yylocationp
)
938 YYLTYPE
*yylocationp
;
941 /* Pacify ``unused variable'' warnings. */
945 if (yytype
< YYNTOKENS
)
947 YYFPRINTF (yyoutput
, "token %s (", yytname
[yytype
]);
949 YYPRINT (yyoutput
, yytoknum
[yytype
], *yyvaluep
);
953 YYFPRINTF (yyoutput
, "nterm %s (", yytname
[yytype
]);
960 YYFPRINTF (yyoutput
, ")");
963 #endif /* ! YYDEBUG */
964 /*-----------------------------------------------.
965 | Release the memory associated to this symbol. |
966 `-----------------------------------------------*/
968 #if defined (__STDC__) || defined (__cplusplus)
970 yydestruct (int yytype
, YYSTYPE
*yyvaluep
, YYLTYPE
*yylocationp
)
973 yydestruct (yytype
, yyvaluep
, yylocationp
)
976 YYLTYPE
*yylocationp
;
979 /* Pacify ``unused variable'' warnings. */
992 /* Prevent warnings from -Wmissing-prototypes. */
995 # if defined (__STDC__) || defined (__cplusplus)
996 int yyparse (void *YYPARSE_PARAM
);
1000 #else /* ! YYPARSE_PARAM */
1001 #if defined (__STDC__) || defined (__cplusplus)
1006 #endif /* ! YYPARSE_PARAM */
1017 #ifdef YYPARSE_PARAM
1018 # if defined (__STDC__) || defined (__cplusplus)
1019 int yyparse (void *YYPARSE_PARAM
)
1021 int yyparse (YYPARSE_PARAM
)
1022 void *YYPARSE_PARAM
;
1024 #else /* ! YYPARSE_PARAM */
1025 #if defined (__STDC__) || defined (__cplusplus)
1035 /* The look-ahead symbol. */
1038 /* The semantic value of the look-ahead symbol. */
1041 /* Number of syntax errors so far. */
1043 /* Location data for the look-ahead symbol. */
1046 register int yystate
;
1049 /* Number of tokens to shift before error messages enabled. */
1051 /* Look-ahead token as an internal (translated) token number. */
1054 /* Three stacks and their tools:
1055 `yyss': related to states,
1056 `yyvs': related to semantic values,
1057 `yyls': related to locations.
1059 Refer to the stacks thru separate pointers, to allow yyoverflow
1060 to reallocate them elsewhere. */
1062 /* The state stack. */
1063 short int yyssa
[YYINITDEPTH
];
1064 short int *yyss
= yyssa
;
1065 register short int *yyssp
;
1067 /* The semantic value stack. */
1068 YYSTYPE yyvsa
[YYINITDEPTH
];
1069 YYSTYPE
*yyvs
= yyvsa
;
1070 register YYSTYPE
*yyvsp
;
1072 /* The location stack. */
1073 YYLTYPE yylsa
[YYINITDEPTH
];
1074 YYLTYPE
*yyls
= yylsa
;
1078 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1080 YYSIZE_T yystacksize
= YYINITDEPTH
;
1082 /* The variables used to return semantic value and location from the
1087 /* When reducing, the number of symbols on the RHS of the reduced
1091 YYDPRINTF ((stderr
, "Starting parse\n"));
1096 yychar
= YYEMPTY
; /* Cause a token to be read. */
1098 /* Initialize stack pointers.
1099 Waste one element of value and location stack
1100 so that they stay on the same level as the state stack.
1101 The wasted elements are never initialized. */
1107 /* User initialization code. */
1108 #line 68 "parse-gram.y"
1110 /* Bison's grammar can initial empty locations, hence a default
1111 location is needed. */
1112 (*yylsp
).start
.file
= (*yylsp
).end
.file
= current_file
;
1113 (*yylsp
).start
.line
= (*yylsp
).end
.line
= 1;
1114 (*yylsp
).start
.column
= (*yylsp
).end
.column
= 0;
1116 /* Line 818 of yacc.c. */
1117 #line 1118 "parse-gram.c"
1120 /*------------------------------------------------------------.
1121 | yynewstate -- Push a new state, which is found in yystate. |
1122 `------------------------------------------------------------*/
1124 /* In all cases, when you get here, the value and location stacks
1125 have just been pushed. so pushing a state here evens the stacks.
1132 if (yyss
+ yystacksize
- 1 <= yyssp
)
1134 /* Get the current used size of the three stacks, in elements. */
1135 YYSIZE_T yysize
= yyssp
- yyss
+ 1;
1139 /* Give user a chance to reallocate the stack. Use copies of
1140 these so that the &'s don't force the real ones into
1142 YYSTYPE
*yyvs1
= yyvs
;
1143 short int *yyss1
= yyss
;
1144 YYLTYPE
*yyls1
= yyls
;
1146 /* Each stack pointer address is followed by the size of the
1147 data in use in that stack, in bytes. This used to be a
1148 conditional around just the two extra args, but that might
1149 be undefined if yyoverflow is a macro. */
1150 yyoverflow ("parser stack overflow",
1151 &yyss1
, yysize
* sizeof (*yyssp
),
1152 &yyvs1
, yysize
* sizeof (*yyvsp
),
1153 &yyls1
, yysize
* sizeof (*yylsp
),
1159 #else /* no yyoverflow */
1160 # ifndef YYSTACK_RELOCATE
1163 /* Extend the stack our own way. */
1164 if (YYMAXDEPTH
<= yystacksize
)
1167 if (YYMAXDEPTH
< yystacksize
)
1168 yystacksize
= YYMAXDEPTH
;
1171 short int *yyss1
= yyss
;
1172 union yyalloc
*yyptr
=
1173 (union yyalloc
*) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize
));
1176 YYSTACK_RELOCATE (yyss
);
1177 YYSTACK_RELOCATE (yyvs
);
1178 YYSTACK_RELOCATE (yyls
);
1179 # undef YYSTACK_RELOCATE
1181 YYSTACK_FREE (yyss1
);
1184 #endif /* no yyoverflow */
1186 yyssp
= yyss
+ yysize
- 1;
1187 yyvsp
= yyvs
+ yysize
- 1;
1188 yylsp
= yyls
+ yysize
- 1;
1190 YYDPRINTF ((stderr
, "Stack size increased to %lu\n",
1191 (unsigned long int) yystacksize
));
1193 if (yyss
+ yystacksize
- 1 <= yyssp
)
1197 YYDPRINTF ((stderr
, "Entering state %d\n", yystate
));
1206 /* Do appropriate processing given the current state. */
1207 /* Read a look-ahead token if we need one and don't already have one. */
1210 /* First try to decide what to do without reference to look-ahead token. */
1212 yyn
= yypact
[yystate
];
1213 if (yyn
== YYPACT_NINF
)
1216 /* Not known => get a look-ahead token if don't already have one. */
1218 /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
1219 if (yychar
== YYEMPTY
)
1221 YYDPRINTF ((stderr
, "Reading a token: "));
1225 if (yychar
<= YYEOF
)
1227 yychar
= yytoken
= YYEOF
;
1228 YYDPRINTF ((stderr
, "Now at end of input.\n"));
1232 yytoken
= YYTRANSLATE (yychar
);
1233 YYDSYMPRINTF ("Next token is", yytoken
, &yylval
, &yylloc
);
1236 /* If the proper action on seeing token YYTOKEN is to reduce or to
1237 detect an error, take that action. */
1239 if (yyn
< 0 || YYLAST
< yyn
|| yycheck
[yyn
] != yytoken
)
1244 if (yyn
== 0 || yyn
== YYTABLE_NINF
)
1253 /* Shift the look-ahead token. */
1254 YYDPRINTF ((stderr
, "Shifting token %s, ", yytname
[yytoken
]));
1256 /* Discard the token being shifted unless it is eof. */
1257 if (yychar
!= YYEOF
)
1263 /* Count tokens shifted since error; after three, turn off error
1272 /*-----------------------------------------------------------.
1273 | yydefault -- do the default action for the current state. |
1274 `-----------------------------------------------------------*/
1276 yyn
= yydefact
[yystate
];
1282 /*-----------------------------.
1283 | yyreduce -- Do a reduction. |
1284 `-----------------------------*/
1286 /* yyn is the number of a rule to reduce with. */
1289 /* If YYLEN is nonzero, implement the default value of the action:
1292 Otherwise, the following line sets YYVAL to garbage.
1293 This behavior is undocumented and Bison
1294 users should not rely upon it. Assigning to YYVAL
1295 unconditionally makes the parser a bit smaller, and it avoids a
1296 GCC warning that YYVAL may be used uninitialized. */
1297 yyval
= yyvsp
[1-yylen
];
1299 /* Default location. */
1300 YYLLOC_DEFAULT (yyloc
, yylsp
- yylen
, yylen
);
1301 YY_REDUCE_PRINT (yyn
);
1305 #line 186 "parse-gram.y"
1306 { prologue_augment (yyvsp
[0].chars
, yylsp
[0]); }
1310 #line 187 "parse-gram.y"
1311 { debug_flag
= true; }
1315 #line 188 "parse-gram.y"
1316 { muscle_insert (yyvsp
[-1].chars
, yyvsp
[0].chars
); }
1320 #line 189 "parse-gram.y"
1321 { defines_flag
= true; }
1325 #line 190 "parse-gram.y"
1326 { error_verbose
= true; }
1330 #line 191 "parse-gram.y"
1331 { expected_sr_conflicts
= yyvsp
[0].integer
; }
1335 #line 192 "parse-gram.y"
1336 { expected_rr_conflicts
= yyvsp
[0].integer
; }
1340 #line 193 "parse-gram.y"
1341 { spec_file_prefix
= yyvsp
[0].chars
; }
1345 #line 195 "parse-gram.y"
1347 nondeterministic_parser
= true;
1353 #line 200 "parse-gram.y"
1355 muscle_code_grow ("initial_action", yyvsp
[0].chars
, yylsp
[0]);
1360 #line 203 "parse-gram.y"
1361 { add_param ("lex_param", yyvsp
[0].chars
, yylsp
[0]); }
1365 #line 204 "parse-gram.y"
1366 { locations_flag
= true; }
1370 #line 205 "parse-gram.y"
1371 { spec_name_prefix
= yyvsp
[0].chars
; }
1375 #line 206 "parse-gram.y"
1376 { no_lines_flag
= true; }
1380 #line 207 "parse-gram.y"
1381 { nondeterministic_parser
= true; }
1385 #line 208 "parse-gram.y"
1386 { spec_outfile
= yyvsp
[0].chars
; }
1390 #line 209 "parse-gram.y"
1391 { add_param ("parse_param", yyvsp
[0].chars
, yylsp
[0]); }
1395 #line 210 "parse-gram.y"
1396 { pure_parser
= true; }
1400 #line 211 "parse-gram.y"
1401 { skeleton
= yyvsp
[0].chars
; }
1405 #line 212 "parse-gram.y"
1406 { token_table_flag
= true; }
1410 #line 213 "parse-gram.y"
1411 { report_flag
= report_states
; }
1415 #line 214 "parse-gram.y"
1416 { yacc_flag
= true; }
1420 #line 222 "parse-gram.y"
1422 grammar_start_symbol_set (yyvsp
[0].symbol
, yylsp
[0]);
1427 #line 226 "parse-gram.y"
1430 MUSCLE_INSERT_INT ("stype_line", yylsp
[0].start
.line
);
1431 muscle_insert ("stype", yyvsp
[0].chars
);
1436 #line 232 "parse-gram.y"
1439 for (list
= yyvsp
[0].list
; list
; list
= list
->next
)
1440 symbol_destructor_set (list
->sym
, yyvsp
[-1].chars
, yylsp
[-1]);
1441 symbol_list_free (yyvsp
[0].list
);
1446 #line 239 "parse-gram.y"
1449 for (list
= yyvsp
[0].list
; list
; list
= list
->next
)
1450 symbol_printer_set (list
->sym
, yyvsp
[-1].chars
, list
->location
);
1451 symbol_list_free (yyvsp
[0].list
);
1456 #line 246 "parse-gram.y"
1458 default_prec
= true;
1463 #line 250 "parse-gram.y"
1465 default_prec
= false;
1470 #line 256 "parse-gram.y"
1471 { current_class
= nterm_sym
; }
1475 #line 257 "parse-gram.y"
1477 current_class
= unknown_sym
;
1478 current_type
= NULL
;
1483 #line 261 "parse-gram.y"
1484 { current_class
= token_sym
; }
1488 #line 262 "parse-gram.y"
1490 current_class
= unknown_sym
;
1491 current_type
= NULL
;
1496 #line 267 "parse-gram.y"
1499 for (list
= yyvsp
[0].list
; list
; list
= list
->next
)
1500 symbol_type_set (list
->sym
, yyvsp
[-1].uniqstr
, yylsp
[-1]);
1501 symbol_list_free (yyvsp
[0].list
);
1506 #line 277 "parse-gram.y"
1510 for (list
= yyvsp
[0].list
; list
; list
= list
->next
)
1512 symbol_type_set (list
->sym
, current_type
, yylsp
[-1]);
1513 symbol_precedence_set (list
->sym
, current_prec
, yyvsp
[-2].assoc
, yylsp
[-2]);
1515 symbol_list_free (yyvsp
[0].list
);
1516 current_type
= NULL
;
1521 #line 291 "parse-gram.y"
1522 { yyval
.assoc
= left_assoc
; }
1526 #line 292 "parse-gram.y"
1527 { yyval
.assoc
= right_assoc
; }
1531 #line 293 "parse-gram.y"
1532 { yyval
.assoc
= non_assoc
; }
1536 #line 297 "parse-gram.y"
1537 { current_type
= NULL
; }
1541 #line 298 "parse-gram.y"
1542 { current_type
= yyvsp
[0].uniqstr
; }
1546 #line 304 "parse-gram.y"
1547 { yyval
.list
= symbol_list_new (yyvsp
[0].symbol
, yylsp
[0]); }
1551 #line 305 "parse-gram.y"
1552 { yyval
.list
= symbol_list_prepend (yyvsp
[-1].list
, yyvsp
[0].symbol
, yylsp
[0]); }
1556 #line 311 "parse-gram.y"
1558 current_type
= yyvsp
[0].uniqstr
;
1563 #line 315 "parse-gram.y"
1565 symbol_class_set (yyvsp
[0].symbol
, current_class
, yylsp
[0]);
1566 symbol_type_set (yyvsp
[0].symbol
, current_type
, yylsp
[0]);
1571 #line 320 "parse-gram.y"
1573 symbol_class_set (yyvsp
[-1].symbol
, current_class
, yylsp
[-1]);
1574 symbol_type_set (yyvsp
[-1].symbol
, current_type
, yylsp
[-1]);
1575 symbol_user_token_number_set (yyvsp
[-1].symbol
, yyvsp
[0].integer
, yylsp
[0]);
1580 #line 326 "parse-gram.y"
1582 symbol_class_set (yyvsp
[-1].symbol
, current_class
, yylsp
[-1]);
1583 symbol_type_set (yyvsp
[-1].symbol
, current_type
, yylsp
[-1]);
1584 symbol_make_alias (yyvsp
[-1].symbol
, yyvsp
[0].symbol
, yyloc
);
1589 #line 332 "parse-gram.y"
1591 symbol_class_set (yyvsp
[-2].symbol
, current_class
, yylsp
[-2]);
1592 symbol_type_set (yyvsp
[-2].symbol
, current_type
, yylsp
[-2]);
1593 symbol_user_token_number_set (yyvsp
[-2].symbol
, yyvsp
[-1].integer
, yylsp
[-1]);
1594 symbol_make_alias (yyvsp
[-2].symbol
, yyvsp
[0].symbol
, yyloc
);
1599 #line 361 "parse-gram.y"
1602 complain_at (yyloc
, _("POSIX forbids declarations in the grammar"));
1607 #line 366 "parse-gram.y"
1614 #line 372 "parse-gram.y"
1615 { current_lhs
= yyvsp
[0].symbol
; current_lhs_location
= yylsp
[0]; }
1619 #line 376 "parse-gram.y"
1620 { grammar_rule_end (yylsp
[0]); }
1624 #line 377 "parse-gram.y"
1625 { grammar_rule_end (yylsp
[0]); }
1629 #line 383 "parse-gram.y"
1630 { grammar_rule_begin (current_lhs
, current_lhs_location
); }
1634 #line 385 "parse-gram.y"
1635 { grammar_current_rule_symbol_append (yyvsp
[0].symbol
, yylsp
[0]); }
1639 #line 387 "parse-gram.y"
1640 { grammar_current_rule_action_append (yyvsp
[0].chars
, yylsp
[0]); }
1644 #line 389 "parse-gram.y"
1645 { grammar_current_rule_prec_set (yyvsp
[0].symbol
, yylsp
[0]); }
1649 #line 391 "parse-gram.y"
1650 { grammar_current_rule_dprec_set (yyvsp
[0].integer
, yylsp
[0]); }
1654 #line 393 "parse-gram.y"
1655 { grammar_current_rule_merge_set (yyvsp
[0].uniqstr
, yylsp
[0]); }
1659 #line 397 "parse-gram.y"
1660 { yyval
.symbol
= yyvsp
[0].symbol
; }
1664 #line 398 "parse-gram.y"
1665 { yyval
.symbol
= yyvsp
[0].symbol
; }
1669 #line 403 "parse-gram.y"
1670 { yyval
.chars
= yyvsp
[0].chars
; }
1674 #line 409 "parse-gram.y"
1676 yyval
.symbol
= symbol_get (yyvsp
[0].chars
, yylsp
[0]);
1677 symbol_class_set (yyval
.symbol
, token_sym
, yylsp
[0]);
1682 #line 418 "parse-gram.y"
1684 yyval
.chars
= yyvsp
[0].chars
+ 1;
1685 yyval
.chars
[strlen (yyval
.chars
) - 1] = '\0';
1690 #line 427 "parse-gram.y"
1692 muscle_code_grow ("epilogue", yyvsp
[0].chars
, yylsp
[0]);
1693 scanner_last_string_free ();
1700 /* Line 1010 of yacc.c. */
1701 #line 1702 "parse-gram.c"
1707 YY_STACK_PRINT (yyss
, yyssp
);
1712 /* Now `shift' the result of the reduction. Determine what state
1713 that goes to, based on the state we popped back to and the rule
1714 number reduced by. */
1718 yystate
= yypgoto
[yyn
- YYNTOKENS
] + *yyssp
;
1719 if (0 <= yystate
&& yystate
<= YYLAST
&& yycheck
[yystate
] == *yyssp
)
1720 yystate
= yytable
[yystate
];
1722 yystate
= yydefgoto
[yyn
- YYNTOKENS
];
1727 /*------------------------------------.
1728 | yyerrlab -- here on detecting error |
1729 `------------------------------------*/
1731 /* If not already recovering from an error, report this error. */
1736 yyn
= yypact
[yystate
];
1738 if (YYPACT_NINF
< yyn
&& yyn
< YYLAST
)
1740 YYSIZE_T yysize
= 0;
1741 int yytype
= YYTRANSLATE (yychar
);
1742 const char* yyprefix
;
1746 /* Start YYX at -YYN if negative to avoid negative indexes in
1748 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
1750 /* Stay within bounds of both yycheck and yytname. */
1751 int yychecklim
= YYLAST
- yyn
;
1752 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
1755 yyprefix
= ", expecting ";
1756 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1757 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1759 yysize
+= yystrlen (yyprefix
) + yystrlen (yytname
[yyx
]);
1767 yysize
+= (sizeof ("syntax error, unexpected ")
1768 + yystrlen (yytname
[yytype
]));
1769 yymsg
= (char *) YYSTACK_ALLOC (yysize
);
1772 char *yyp
= yystpcpy (yymsg
, "syntax error, unexpected ");
1773 yyp
= yystpcpy (yyp
, yytname
[yytype
]);
1777 yyprefix
= ", expecting ";
1778 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1779 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1781 yyp
= yystpcpy (yyp
, yyprefix
);
1782 yyp
= yystpcpy (yyp
, yytname
[yyx
]);
1787 YYSTACK_FREE (yymsg
);
1790 yyerror ("syntax error; also virtual memory exhausted");
1793 #endif /* YYERROR_VERBOSE */
1794 yyerror ("syntax error");
1799 if (yyerrstatus
== 3)
1801 /* If just tried and failed to reuse look-ahead token after an
1802 error, discard it. */
1804 if (yychar
<= YYEOF
)
1806 /* If at end of input, pop the error token,
1807 then the rest of the stack, then return failure. */
1808 if (yychar
== YYEOF
)
1814 YYDSYMPRINTF ("Error: popping", yystos
[*yyssp
], yyvsp
, yylsp
);
1815 yydestruct (yystos
[*yyssp
], yyvsp
, yylsp
);
1820 YYDSYMPRINTF ("Error: discarding", yytoken
, &yylval
, &yylloc
);
1821 yydestruct (yytoken
, &yylval
, &yylloc
);
1823 *++yylerrsp
= yylloc
;
1827 /* Else will try to reuse look-ahead token after shifting the error
1832 /*---------------------------------------------------.
1833 | yyerrorlab -- error raised explicitly by YYERROR. |
1834 `---------------------------------------------------*/
1838 /* Pacify GCC when the user code never invokes YYERROR and the label
1839 yyerrorlab therefore never appears in user code. */
1848 *++yylerrsp
= yyloc
;
1853 /*-------------------------------------------------------------.
1854 | yyerrlab1 -- common code for both syntax error and YYERROR. |
1855 `-------------------------------------------------------------*/
1857 yyerrstatus
= 3; /* Each real token shifted decrements this. */
1861 yyn
= yypact
[yystate
];
1862 if (yyn
!= YYPACT_NINF
)
1865 if (0 <= yyn
&& yyn
<= YYLAST
&& yycheck
[yyn
] == YYTERROR
)
1873 /* Pop the current state because it cannot handle the error token. */
1877 YYDSYMPRINTF ("Error: popping", yystos
[*yyssp
], yyvsp
, yylsp
);
1878 yydestruct (yystos
[yystate
], yyvsp
, yylsp
);
1881 YY_STACK_PRINT (yyss
, yyssp
);
1887 YYDPRINTF ((stderr
, "Shifting error token, "));
1890 YYLLOC_DEFAULT (yyloc
, yylsp
, yylerrsp
- yylsp
);
1897 /*-------------------------------------.
1898 | yyacceptlab -- YYACCEPT comes here. |
1899 `-------------------------------------*/
1904 /*-----------------------------------.
1905 | yyabortlab -- YYABORT comes here. |
1906 `-----------------------------------*/
1912 /*----------------------------------------------.
1913 | yyoverflowlab -- parser overflow comes here. |
1914 `----------------------------------------------*/
1916 yyerror ("parser stack overflow");
1924 YYSTACK_FREE (yyss
);
1930 #line 433 "parse-gram.y"
1934 /* Return the location of the left-hand side of a rule whose
1935 right-hand side is RHS[1] ... RHS[N]. Ignore empty nonterminals in
1936 the right-hand side, and return an empty location equal to the end
1937 boundary of RHS[0] if the right-hand side is empty. */
1940 lloc_default (YYLTYPE
const *rhs
, int n
)
1945 /* SGI MIPSpro 7.4.1m miscompiles "loc.start = loc.end = rhs[n].end;".
1946 The bug is fixed in 7.4.2m, but play it safe for now. */
1947 loc
.start
= rhs
[n
].end
;
1948 loc
.end
= rhs
[n
].end
;
1950 /* Ignore empty nonterminals the start of the the right-hand side.
1951 Do not bother to ignore them at the end of the right-hand side,
1952 since empty nonterminals have the same end as their predecessors. */
1953 for (i
= 1; i
<= n
; i
++)
1954 if (! equal_boundaries (rhs
[i
].start
, rhs
[i
].end
))
1956 loc
.start
= rhs
[i
].start
;
1964 /* Add a lex-param or a parse-param (depending on TYPE) with
1965 declaration DECL and location LOC. */
1968 add_param (char const *type
, char *decl
, location loc
)
1970 static char const alphanum
[] =
1972 "abcdefghijklmnopqrstuvwxyz"
1973 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
1975 char const *alpha
= alphanum
+ 10;
1976 char const *name_start
= NULL
;
1979 for (p
= decl
; *p
; p
++)
1980 if ((p
== decl
|| ! strchr (alphanum
, p
[-1])) && strchr (alpha
, p
[0]))
1983 /* Strip the surrounding '{' and '}'. */
1988 complain_at (loc
, _("missing identifier in parameter declaration"));
1995 name_start
[name_len
] && strchr (alphanum
, name_start
[name_len
]);
1999 name
= xmalloc (name_len
+ 1);
2000 memcpy (name
, name_start
, name_len
);
2001 name
[name_len
] = '\0';
2002 muscle_pair_list_grow (type
, decl
, name
);
2006 scanner_last_string_free ();
2009 /*----------------------------------------------------.
2010 | When debugging the parser, display tokens' values. |
2011 `----------------------------------------------------*/
2014 print_token_value (FILE *file
, int type
, YYSTYPE
const *value
)
2020 fprintf (file
, " = %s", value
->symbol
->tag
);
2024 fprintf (file
, " = %d", value
->integer
);
2028 fprintf (file
, " = \"%s\"", value
->chars
);
2032 fprintf (file
, " = <%s>", value
->uniqstr
);
2036 case PERCENT_DESTRUCTOR
:
2037 case PERCENT_LEX_PARAM
:
2038 case PERCENT_PARSE_PARAM
:
2039 case PERCENT_PRINTER
:
2043 fprintf (file
, " = {{ %s }}", value
->chars
);
2047 fprintf (file
, "unknown token type");
2053 gram_error (location
const *loc
, char const *msg
)
2055 complain_at (*loc
, "%s", msg
);
2059 token_name (int type
)
2061 return yytname
[type
];