1 m4_divert(-1) -*- C
-*-
3 # GLR skeleton for Bison
4 # Copyright (C) 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 of the License, or
9 # (at your option) any later version.
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, Boston, MA
22 ## ---------------- ##
24 ## ---------------- ##
27 m4_define_default([b4_stack_depth_max
], [10000])
28 m4_define_default([b4_stack_depth_init
], [200])
32 ## ------------------------ ##
33 ## Pure/impure interfaces. ##
34 ## ------------------------ ##
39 # Accumule in b4_lex_param all the yylex arguments.
40 # Yes, this is quite ugly...
41 m4_define([b4_lex_param
],
42 m4_dquote(b4_pure_if([[[[YYSTYPE
*]], [[yylvalp]]][]dnl
43 b4_location_if([, [[YYLTYPE
*], [yyllocp
]]])])dnl
44 m4_ifdef([b4_lex_param
], [, ]b4_lex_param
)))
49 m4_define([b4_user_formals
],
50 [m4_ifset([b4_parse_param
], [, b4_c_ansi_formals(b4_parse_param
)])])
55 # Arguments passed to yyerror: user args plus yylloc.
56 m4_define([b4_yyerror_args
],
57 [b4_pure_if([b4_location_if([yylocp
, ])])dnl
58 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])])
63 # Same as above, but on the look-ahead, hence yyllocp instead of yylocp.
64 m4_define([b4_lyyerror_args
],
65 [b4_pure_if([b4_location_if([yyllocp
, ])])dnl
66 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])])
71 # Arguments needed by yyerror: user args plus yylloc.
72 m4_define([b4_pure_args
],
73 [b4_pure_if([b4_location_if([, yylocp
])])[]b4_user_args
])
78 # Arguments passed to yyerror: user formals plus yyllocp.
79 m4_define([b4_pure_formals
],
80 [b4_pure_if([b4_location_if([, YYLTYPE
*yylocp
])])[]b4_user_formals
])
85 # Same as above, but on the look-ahead, hence yyllocp instead of yylocp.
86 m4_define([b4_lpure_args
],
87 [b4_pure_if([b4_location_if([, yyllocp
])])[]b4_user_args
])
92 # Same as above, but on the look-ahead, hence yyllocp instead of yylocp.
93 m4_define([b4_lpure_formals
],
94 [b4_pure_if([b4_location_if([YYLTYPE
*yyllocp
])])[]b4_user_formals
])
97 ## ----------------- ##
98 ## Semantic Values. ##
99 ## ----------------- ##
102 # b4_lhs_value([TYPE])
103 # --------------------
104 # Expansion of $<TYPE>$.
105 m4_define([b4_lhs_value
],
106 [((*yyvalp
)[]m4_ifval([$
1], [.$
1]))])
109 # b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
110 # --------------------------------------
111 # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
113 m4_define([b4_rhs_value
],
114 [(((yyGLRStackItem
const *)yyvsp
)@
{YYFILL (m4_eval([$
2 - $
1]))@
}.yystate
.yysemantics
.yysval
[]m4_ifval([$
3], [.$
3]))])
125 m4_define([b4_lhs_location
],
129 # b4_rhs_location(RULE-LENGTH, NUM)
130 # ---------------------------------
131 # Expansion of @NUM, where the current rule has RULE-LENGTH symbols
133 m4_define([b4_rhs_location
],
134 [(((yyGLRStackItem
const *)yyvsp
)@
{YYFILL (m4_eval([$
2 - $
1]))@
}.yystate
.yyloc
)])
136 # We do want M4 expansion after # for CPP macros.
139 @output @output_parser_name@
140 b4_copyright([Skeleton parser
for GLR parsing with Bison
],
141 [2002, 2003, 2004, 2005])
143 /* This is the parser code for GLR (Generalized LR) parser. */
146 m4_if(b4_prefix
[], [yy
], [],
147 [/* Substitute the variable and function names. */
148 #define yyparse b4_prefix[]parse
149 #define yylex b4_prefix[]lex
150 #define yyerror b4_prefix[]error
151 #define yylval b4_prefix[]lval
152 #define yychar b4_prefix[]char
153 #define yydebug b4_prefix[]debug
154 #define yynerrs b4_prefix[]nerrs
155 #define yylloc b4_prefix[]lloc])
157 b4_token_defines(b4_tokens
)
159 /* Copy the first part of user declarations. */
162 /* Enabling traces. */
164 # define YYDEBUG ]b4_debug[
167 /* Enabling verbose error messages. */
168 #ifdef YYERROR_VERBOSE
169 # undef YYERROR_VERBOSE
170 # define YYERROR_VERBOSE 1
172 # define YYERROR_VERBOSE ]b4_error_verbose[
175 /* Enabling the token table. */
176 #ifndef YYTOKEN_TABLE
177 # define YYTOKEN_TABLE ]b4_token_table[
180 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
181 ]m4_ifdef([b4_stype
],
182 [b4_syncline([b4_stype_line
], [b4_filename
])
183 typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE
])b4_stype YYSTYPE
;
184 /* Line __line__ of glr.c. */
185 b4_syncline([@oline@
], [@ofile@
])],
186 [typedef int YYSTYPE
;])[
187 # define YYSTYPE_IS_DECLARED 1
188 # define YYSTYPE_IS_TRIVIAL 1
191 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
192 typedef struct YYLTYPE
203 # define YYLTYPE_IS_DECLARED 1
204 # define YYLTYPE_IS_TRIVIAL 1
207 /* Default (constant) value used for initialization for null
208 right-hand sides. Unlike the standard yacc.c template,
209 here we set the default value of $$ to a zeroed-out value.
210 Since the default value is undefined, this behavior is
211 technically correct. */
212 static YYSTYPE yyval_default
;
214 /* Copy the second part of user declarations. */
217 ]/* Line __line__ of glr.c. */
218 b4_syncline([@oline@
], [@ofile@
])
229 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
230 # define YY_(msgid) dgettext ("bison-runtime", msgid)
234 # define YY_(msgid) msgid
242 # define YYMALLOC malloc
245 # define YYREALLOC realloc
248 #define YYSIZEMAX ((size_t) -1)
253 typedef unsigned char yybool
;
262 #ifndef __attribute__
263 /* This feature is available in gcc versions 2.5 and later. */
264 # if (!defined (__GNUC__) || __GNUC__ < 2 \
265 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__)
266 # define __attribute__(Spec) /* empty */
270 ]b4_location_if([#define YYOPTIONAL_LOC(Name) Name],[
272 # define YYOPTIONAL_LOC(Name) /* empty */
274 # define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__))
278 # define YYASSERT(condition) ((void) ((condition) || (abort (), 0)))
281 /* YYFINAL -- State number of the termination state. */
282 #define YYFINAL ]b4_final_state_number[
283 /* YYLAST -- Last index in YYTABLE. */
284 #define YYLAST ]b4_last[
286 /* YYNTOKENS -- Number of terminals. */
287 #define YYNTOKENS ]b4_tokens_number[
288 /* YYNNTS -- Number of nonterminals. */
289 #define YYNNTS ]b4_nterms_number[
290 /* YYNRULES -- Number of rules. */
291 #define YYNRULES ]b4_rules_number[
292 /* YYNRULES -- Number of states. */
293 #define YYNSTATES ]b4_states_number[
294 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
295 #define YYMAXRHS ]b4_r2_max[
296 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
297 accessed by $0, $-1, etc., in any rule. */
298 #define YYMAXLEFT ]b4_max_left_semantic_context[
300 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */
301 #define YYUNDEFTOK ]b4_undef_token_number[
302 #define YYMAXUTOK ]b4_user_token_number_max[
304 #define YYTRANSLATE(YYX) \
305 ((YYX <= 0) ? YYEOF : \
306 (unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
308 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
309 static const ]b4_int_type_for([b4_translate
])[ yytranslate
[] =
315 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
317 static const ]b4_int_type_for([b4_prhs
])[ yyprhs
[] =
322 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
323 static const ]b4_int_type_for([b4_rhs
])[ yyrhs
[] =
328 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
329 static const ]b4_int_type_for([b4_rline
])[ yyrline
[] =
335 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
336 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
337 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
338 static const char *const yytname
[] =
344 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
345 static const ]b4_int_type_for([b4_r1
])[ yyr1
[] =
350 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
351 static const ]b4_int_type_for([b4_r2
])[ yyr2
[] =
356 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
357 static const ]b4_int_type_for([b4_dprec
])[ yydprec
[] =
362 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
363 static const ]b4_int_type_for([b4_merger
])[ yymerger
[] =
368 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
369 doesn't specify something else to do. Zero means the default is an
371 static const ]b4_int_type_for([b4_defact
])[ yydefact
[] =
376 /* YYPDEFGOTO[NTERM-NUM]. */
377 static const ]b4_int_type_for([b4_defgoto
])[ yydefgoto
[] =
382 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
384 #define YYPACT_NINF ]b4_pact_ninf[
385 static const ]b4_int_type_for([b4_pact
])[ yypact
[] =
390 /* YYPGOTO[NTERM-NUM]. */
391 static const ]b4_int_type_for([b4_pgoto
])[ yypgoto
[] =
396 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
397 positive, shift that token. If negative, reduce the rule which
398 number is the opposite. If zero, do what YYDEFACT says.
399 If YYTABLE_NINF, syntax error. */
400 #define YYTABLE_NINF ]b4_table_ninf[
401 static const ]b4_int_type_for([b4_table
])[ yytable
[] =
406 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
407 list of conflicting reductions corresponding to action entry for
408 state STATE-NUM in yytable. 0 means no conflicts. The list in
409 yyconfl is terminated by a rule number of 0. */
410 static const ]b4_int_type_for([b4_conflict_list_heads
])[ yyconflp
[] =
412 ]b4_conflict_list_heads
[
415 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
416 0, pointed into by YYCONFLP. */
417 ]dnl Do
not use b4_int_type_for here
, since there are places where
418 dnl pointers onto yyconfl are taken
, which type is
"short int *".
419 dnl We probably ought to introduce a type
for confl
.
420 [static const short int yyconfl
[] =
422 ]b4_conflicting_rules
[
425 static const ]b4_int_type_for([b4_check
])[ yycheck
[] =
430 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
431 symbol of state STATE-NUM. */
432 static const ]b4_int_type_for([b4_stos
])[ yystos
[] =
438 /* Prevent warning if -Wmissing-prototypes. */
439 ]b4_c_ansi_function_decl([yyparse
], [int], b4_parse_param
)[
441 /* Error token number */
444 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
445 If N is 0, then set CURRENT to the empty location which ends
446 the previous symbol: RHS[0] (always defined). */
449 #define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
450 #ifndef YYLLOC_DEFAULT
451 # define YYLLOC_DEFAULT(Current, Rhs, N) \
455 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
456 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
457 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
458 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
462 (Current).first_line = (Current).last_line = \
463 YYRHSLOC (Rhs, 0).last_line; \
464 (Current).first_column = (Current).last_column = \
465 YYRHSLOC (Rhs, 0).last_column; \
469 /* YY_LOCATION_PRINT -- Print the location on the stream.
470 This macro was not mandated originally: define only if we know
471 we won't break user code: when these are the locations we know. */
473 # define YY_LOCATION_PRINT(File, Loc) \
474 fprintf (File, "%d.%d-%d.%d", \
475 (Loc).first_line, (Loc).first_column, \
476 (Loc).last_line, (Loc).last_column)
479 #ifndef YYLLOC_DEFAULT
480 # define YYLLOC_DEFAULT(Current, Rhs, N) ((void) 0)
484 #ifndef YY_LOCATION_PRINT
485 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
489 /* YYLEX -- calling `yylex' with the right arguments. */
490 #define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
495 #define yynerrs (yystack->yyerrcnt)
497 #define yychar (yystack->yyrawchar)],
505 static const int YYEOF
= 0;
506 static const int YYEMPTY
= -2;
508 typedef enum { yyok
, yyaccept
, yyabort
, yyerr
} YYRESULTTAG
;
511 do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; } \
516 #if ! defined (YYFPRINTF)
517 # define YYFPRINTF fprintf
520 # define YYDPRINTF(Args) \
526 ]b4_yysymprint_generate([b4_c_ansi_function_def
])[
528 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
532 YYFPRINTF (stderr, "%s ", Title); \
533 yysymprint (stderr, \
534 Type, Value]b4_location_if([, Location])[); \
535 YYFPRINTF (stderr, "\n"); \
539 /* Nonzero means print parse trace. It is left uninitialized so that
540 multiple parsers can coexist. */
545 # define YYDPRINTF(Args)
546 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
548 #endif /* !YYDEBUG */
550 /* YYINITDEPTH -- initial size of the parser's stacks. */
552 # define YYINITDEPTH ]b4_stack_depth_init[
555 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
556 if the built-in stack extension method is used).
558 Do not make this value too large; the results are undefined if
559 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
560 evaluated with infinite-precision integer arithmetic. */
563 # define YYMAXDEPTH ]b4_stack_depth_max[
566 /* Minimum number of free items on the stack allowed after an
567 allocation. This is to allow allocation and initialization
568 to be completed by functions that call yyexpandGLRStack before the
569 stack is expanded, thus insuring that all necessary pointers get
570 properly redirected to new data. */
573 #ifndef YYSTACKEXPANDABLE
574 # if (! defined (__cplusplus) \
575 || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
576 && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))
577 # define YYSTACKEXPANDABLE 1
579 # define YYSTACKEXPANDABLE 0
586 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
587 # define yystpcpy stpcpy
589 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
592 yystpcpy (char *yydest
, const char *yysrc
)
595 const char *yys
= yysrc
;
597 while ((*yyd
++ = *yys
++) != '\0')
606 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
607 quotes and backslashes, so that it's suitable for yyerror. The
608 heuristic is that double-quoting is unnecessary unless the string
609 contains an apostrophe, a comma, or backslash (other than
610 backslash-backslash). YYSTR is taken from yytname. If YYRES is
611 null, do not copy; instead, return the length of what the result
614 yytnamerr (char *yyres
, const char *yystr
)
619 char const *yyp
= yystr
;
626 goto do_not_strip_quotes
;
630 goto do_not_strip_quotes
;
643 do_not_strip_quotes
: ;
647 return strlen (yystr
);
649 return yystpcpy (yyres
, yystr
) - yyres
;
653 #endif /* !YYERROR_VERBOSE */
655 /** State numbers, as in LALR(1) machine */
656 typedef int yyStateNum
;
658 /** Rule numbers, as in LALR(1) machine */
659 typedef int yyRuleNum
;
661 /** Grammar symbol */
662 typedef short int yySymbol
;
664 /** Item references, as in LALR(1) machine */
665 typedef short int yyItemNum
;
667 typedef struct yyGLRState yyGLRState
;
668 typedef struct yySemanticOption yySemanticOption
;
669 typedef union yyGLRStackItem yyGLRStackItem
;
670 typedef struct yyGLRStack yyGLRStack
;
671 typedef struct yyGLRStateSet yyGLRStateSet
;
674 /** Type tag: always true. */
676 /** Type tag for yysemantics. If true, yysval applies, otherwise
677 * yyfirstVal applies. */
679 /** Number of corresponding LALR(1) machine state. */
680 yyStateNum yylrState
;
681 /** Preceding state in this stack */
683 /** Source position of the first token produced by my symbol */
686 /** First in a chain of alternative reductions producing the
687 * non-terminal corresponding to this state, threaded through
689 yySemanticOption
* yyfirstVal
;
690 /** Semantic value for this state. */
693 /** Source location for this state. */
697 struct yyGLRStateSet
{
698 yyGLRState
** yystates
;
699 size_t yysize
, yycapacity
;
702 struct yySemanticOption
{
703 /** Type tag: always false. */
705 /** Rule number for this reduction */
707 /** The last RHS state in the list of states to be reduced. */
709 /** Next sibling in chain of options. To facilitate merging,
710 * options are chained in decreasing order by address. */
711 yySemanticOption
* yynext
;
714 /** Type of the items in the GLR stack. The yyisState field
715 * indicates which item of the union is valid. */
716 union yyGLRStackItem
{
718 yySemanticOption yyoption
;
723 ]b4_location_if([[ /* To compute the location of the error token. */
724 yyGLRStackItem yyerror_range
[3];]])[
731 jmp_buf yyexception_buffer
;
732 yyGLRStackItem
* yyitems
;
733 yyGLRStackItem
* yynextFree
;
735 yyGLRState
* yysplitPoint
;
736 yyGLRState
* yylastDeleted
;
737 yyGLRStateSet yytops
;
740 static void yyexpandGLRStack (yyGLRStack
* yystack
);
742 static void yyFail (yyGLRStack
* yystack
]b4_pure_formals
[, const char* yymsg
)
743 __attribute__ ((__noreturn__
));
745 yyFail (yyGLRStack
* yystack
]b4_pure_formals
[, const char* yymsg
)
748 yyerror (]b4_yyerror_args
[yymsg
);
749 longjmp (yystack
->yyexception_buffer
, 1);
752 static void yyMemoryExhausted (yyGLRStack
* yystack
)
753 __attribute__ ((__noreturn__
));
755 yyMemoryExhausted (yyGLRStack
* yystack
)
757 longjmp (yystack
->yyexception_buffer
, 2);
760 #if YYDEBUG || YYERROR_VERBOSE
761 /** A printable representation of TOKEN. */
762 static inline const char*
763 yytokenName (yySymbol yytoken
)
765 if (yytoken
== YYEMPTY
)
768 return yytname
[yytoken
];
772 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
773 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
774 * containing the pointer to the next state in the chain. Assumes
775 * YYLOW1 < YYLOW0. */
776 static void yyfillin (yyGLRStackItem
*, int, int) __attribute__ ((__unused__
));
778 yyfillin (yyGLRStackItem
*yyvsp
, int yylow0
, int yylow1
)
782 s
= yyvsp
[yylow0
].yystate
.yypred
;
783 for (i
= yylow0
-1; i
>= yylow1
; i
-= 1)
785 YYASSERT (s
->yyresolved
);
786 yyvsp
[i
].yystate
.yyresolved
= yytrue
;
787 yyvsp
[i
].yystate
.yysemantics
.yysval
= s
->yysemantics
.yysval
;
788 yyvsp
[i
].yystate
.yyloc
= s
->yyloc
;
789 s
= yyvsp
[i
].yystate
.yypred
= s
->yypred
;
793 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
794 YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
795 For convenience, always return YYLOW1. */
796 static inline int yyfill (yyGLRStackItem
*, int *, int, yybool
)
797 __attribute__ ((__unused__
));
799 yyfill (yyGLRStackItem
*yyvsp
, int *yylow
, int yylow1
, yybool yynormal
)
801 if (!yynormal
&& yylow1
< *yylow
)
803 yyfillin (yyvsp
, *yylow
, yylow1
);
809 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
810 * and top stack item YYVSP. YYLVALP points to place to put semantic
811 * value ($$), and yylocp points to place for location information
812 * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT,
813 * yyerr for YYERROR, yyabort for YYABORT. */
815 yyuserAction (yyRuleNum yyn
, int yyrhslen
, yyGLRStackItem
* yyvsp
,
817 YYLTYPE
* YYOPTIONAL_LOC (yylocp
),
821 yybool yynormal
__attribute__ ((__unused__
)) =
822 (yystack
->yysplitPoint
== NULL
);
826 # define yyerrok (yystack->yyerrState = 0)
828 # define YYACCEPT return yyaccept
830 # define YYABORT return yyabort
832 # define YYERROR return yyerrok, yyerr
834 # define YYRECOVERING (yystack->yyerrState != 0)
836 # define yyclearin (yychar = *(yystack->yytokenp) = YYEMPTY)
838 # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal)
840 # define YYBACKUP(Token, Value) \
841 return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \
846 *yyvalp
= yyval_default
;
848 *yyvalp
= yyvsp
[YYFILL (1-yyrhslen
)].yystate
.yysemantics
.yysval
;
849 YYLLOC_DEFAULT (*yylocp
, yyvsp
- yyrhslen
, yyrhslen
);
850 ]b4_location_if([[ yystack
->yyerror_range
[1].yystate
.yyloc
= *yylocp
;
866 /* Line __line__ of glr.c. */
867 b4_syncline([@oline@
], [@ofile@
])
872 yyuserMerge (int yyn
, YYSTYPE
* yy0
, YYSTYPE
* yy1
)
874 /* `Use' the arguments. */
885 /* Bison grammar-table manipulation. */
887 ]b4_yydestruct_generate([b4_c_ansi_function_def
])[
890 yydestroyStackItem (char const *yymsg
, yyGLRState
*yys
)
893 yydestruct (yymsg
, yystos
[yys
->yylrState
],
894 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[);
900 YYFPRINTF (stderr
, "%s unresolved ", yymsg
);
901 yysymprint (stderr
, yystos
[yys
->yylrState
],
902 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[);
903 YYFPRINTF (stderr
, "\n");
909 /** Number of symbols composing the right hand side of rule #RULE. */
911 yyrhsLength (yyRuleNum yyrule
)
916 /** Left-hand-side symbol for rule #RULE. */
917 static inline yySymbol
918 yylhsNonterm (yyRuleNum yyrule
)
923 #define yyis_pact_ninf(yystate) \
924 ]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), 1,
926 ((yystate
) == YYPACT_NINF
))[
928 /** True iff LR state STATE has only a default reduction (regardless
931 yyisDefaultedState (yyStateNum yystate
)
933 return yyis_pact_ninf (yypact
[yystate
]);
936 /** The default reduction for STATE, assuming it has one. */
937 static inline yyRuleNum
938 yydefaultAction (yyStateNum yystate
)
940 return yydefact
[yystate
];
943 #define yyis_table_ninf(yytable_value) \
944 ]m4_if(m4_eval(b4_table_ninf < b4_table_min), 1,
946 ((yytable_value
) == YYTABLE_NINF
))[
948 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
950 * R < 0: Reduce on rule -R.
952 * R > 0: Shift to state R.
953 * Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of
954 * conflicting reductions.
957 yygetLRActions (yyStateNum yystate
, int yytoken
,
958 int* yyaction
, const short int** yyconflicts
)
960 int yyindex
= yypact
[yystate
] + yytoken
;
961 if (yyindex
< 0 || YYLAST
< yyindex
|| yycheck
[yyindex
] != yytoken
)
963 *yyaction
= -yydefact
[yystate
];
964 *yyconflicts
= yyconfl
;
966 else if (! yyis_table_ninf (yytable
[yyindex
]))
968 *yyaction
= yytable
[yyindex
];
969 *yyconflicts
= yyconfl
+ yyconflp
[yyindex
];
974 *yyconflicts
= yyconfl
+ yyconflp
[yyindex
];
978 static inline yyStateNum
979 yyLRgotoState (yyStateNum yystate
, yySymbol yylhs
)
982 yyr
= yypgoto
[yylhs
- YYNTOKENS
] + yystate
;
983 if (0 <= yyr
&& yyr
<= YYLAST
&& yycheck
[yyr
] == yystate
)
986 return yydefgoto
[yylhs
- YYNTOKENS
];
990 yyisShiftAction (int yyaction
)
996 yyisErrorAction (int yyaction
)
998 return yyaction
== 0;
1004 yyaddDeferredAction (yyGLRStack
* yystack
, yyGLRState
* yystate
,
1005 yyGLRState
* rhs
, yyRuleNum yyrule
)
1007 yySemanticOption
* yynewItem
;
1008 yynewItem
= &yystack
->yynextFree
->yyoption
;
1009 yystack
->yyspaceLeft
-= 1;
1010 yystack
->yynextFree
+= 1;
1011 yynewItem
->yyisState
= yyfalse
;
1012 yynewItem
->yystate
= rhs
;
1013 yynewItem
->yyrule
= yyrule
;
1014 yynewItem
->yynext
= yystate
->yysemantics
.yyfirstVal
;
1015 yystate
->yysemantics
.yyfirstVal
= yynewItem
;
1016 if (yystack
->yyspaceLeft
< YYHEADROOM
)
1017 yyexpandGLRStack (yystack
);
1022 /** Initialize SET to a singleton set containing an empty stack. */
1024 yyinitStateSet (yyGLRStateSet
* yyset
)
1027 yyset
->yycapacity
= 16;
1028 yyset
->yystates
= (yyGLRState
**) YYMALLOC (16 * sizeof yyset
->yystates
[0]);
1029 if (! yyset
->yystates
)
1031 yyset
->yystates
[0] = NULL
;
1035 static void yyfreeStateSet (yyGLRStateSet
* yyset
)
1037 YYFREE (yyset
->yystates
);
1040 /** Initialize STACK to a single empty stack, with total maximum
1041 * capacity for all stacks of SIZE. */
1043 yyinitGLRStack (yyGLRStack
* yystack
, size_t yysize
)
1045 yystack
->yyerrState
= 0;
1047 yystack
->yyspaceLeft
= yysize
;
1049 (yyGLRStackItem
*) YYMALLOC (yysize
* sizeof yystack
->yynextFree
[0]);
1050 if (!yystack
->yyitems
)
1052 yystack
->yynextFree
= yystack
->yyitems
;
1053 yystack
->yysplitPoint
= NULL
;
1054 yystack
->yylastDeleted
= NULL
;
1055 return yyinitStateSet (&yystack
->yytops
);
1058 #define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \
1059 &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE
1061 /** If STACK is expandable, extend it. WARNING: Pointers into the
1062 stack from outside should be considered invalid after this call.
1063 We always expand when there are 1 or fewer items left AFTER an
1064 allocation, so that we can avoid having external pointers exist
1065 across an allocation. */
1067 yyexpandGLRStack (yyGLRStack
* yystack
)
1069 #if YYSTACKEXPANDABLE
1070 yyGLRStackItem
* yynewItems
;
1071 yyGLRStackItem
* yyp0
, *yyp1
;
1072 size_t yysize
, yynewSize
;
1074 yysize
= yystack
->yynextFree
- yystack
->yyitems
;
1075 if (YYMAXDEPTH
<= yysize
)
1076 yyMemoryExhausted (yystack
);
1077 yynewSize
= 2*yysize
;
1078 if (YYMAXDEPTH
< yynewSize
)
1079 yynewSize
= YYMAXDEPTH
;
1080 yynewItems
= (yyGLRStackItem
*) YYMALLOC (yynewSize
* sizeof yynewItems
[0]);
1082 yyMemoryExhausted (yystack
);
1083 for (yyp0
= yystack
->yyitems
, yyp1
= yynewItems
, yyn
= yysize
;
1085 yyn
-= 1, yyp0
+= 1, yyp1
+= 1)
1088 if (*(yybool
*) yyp0
)
1090 yyGLRState
* yys0
= &yyp0
->yystate
;
1091 yyGLRState
* yys1
= &yyp1
->yystate
;
1092 if (yys0
->yypred
!= NULL
)
1094 YYRELOC (yyp0
, yyp1
, yys0
->yypred
, yystate
);
1095 if (! yys0
->yyresolved
&& yys0
->yysemantics
.yyfirstVal
!= NULL
)
1096 yys1
->yysemantics
.yyfirstVal
=
1097 YYRELOC(yyp0
, yyp1
, yys0
->yysemantics
.yyfirstVal
, yyoption
);
1101 yySemanticOption
* yyv0
= &yyp0
->yyoption
;
1102 yySemanticOption
* yyv1
= &yyp1
->yyoption
;
1103 if (yyv0
->yystate
!= NULL
)
1104 yyv1
->yystate
= YYRELOC (yyp0
, yyp1
, yyv0
->yystate
, yystate
);
1105 if (yyv0
->yynext
!= NULL
)
1106 yyv1
->yynext
= YYRELOC (yyp0
, yyp1
, yyv0
->yynext
, yyoption
);
1109 if (yystack
->yysplitPoint
!= NULL
)
1110 yystack
->yysplitPoint
= YYRELOC (yystack
->yyitems
, yynewItems
,
1111 yystack
->yysplitPoint
, yystate
);
1113 for (yyn
= 0; yyn
< yystack
->yytops
.yysize
; yyn
+= 1)
1114 if (yystack
->yytops
.yystates
[yyn
] != NULL
)
1115 yystack
->yytops
.yystates
[yyn
] =
1116 YYRELOC (yystack
->yyitems
, yynewItems
,
1117 yystack
->yytops
.yystates
[yyn
], yystate
);
1118 YYFREE (yystack
->yyitems
);
1119 yystack
->yyitems
= yynewItems
;
1120 yystack
->yynextFree
= yynewItems
+ yysize
;
1121 yystack
->yyspaceLeft
= yynewSize
- yysize
;
1124 yyMemoryExhausted (yystack
);
1129 yyfreeGLRStack (yyGLRStack
* yystack
)
1131 YYFREE (yystack
->yyitems
);
1132 yyfreeStateSet (&yystack
->yytops
);
1135 /** Assuming that S is a GLRState somewhere on STACK, update the
1136 * splitpoint of STACK, if needed, so that it is at least as deep as
1139 yyupdateSplit (yyGLRStack
* yystack
, yyGLRState
* yys
)
1141 if (yystack
->yysplitPoint
!= NULL
&& yystack
->yysplitPoint
> yys
)
1142 yystack
->yysplitPoint
= yys
;
1145 /** Invalidate stack #K in STACK. */
1147 yymarkStackDeleted (yyGLRStack
* yystack
, size_t yyk
)
1149 if (yystack
->yytops
.yystates
[yyk
] != NULL
)
1150 yystack
->yylastDeleted
= yystack
->yytops
.yystates
[yyk
];
1151 yystack
->yytops
.yystates
[yyk
] = NULL
;
1154 /** Undelete the last stack that was marked as deleted. Can only be
1155 done once after a deletion, and only when all other stacks have
1158 yyundeleteLastStack (yyGLRStack
* yystack
)
1160 if (yystack
->yylastDeleted
== NULL
|| yystack
->yytops
.yysize
!= 0)
1162 yystack
->yytops
.yystates
[0] = yystack
->yylastDeleted
;
1163 yystack
->yytops
.yysize
= 1;
1164 YYDPRINTF ((stderr
, "Restoring last deleted stack as stack #0.\n"));
1165 yystack
->yylastDeleted
= NULL
;
1169 yyremoveDeletes (yyGLRStack
* yystack
)
1173 while (yyj
< yystack
->yytops
.yysize
)
1175 if (yystack
->yytops
.yystates
[yyi
] == NULL
)
1179 YYDPRINTF ((stderr
, "Removing dead stacks.\n"));
1181 yystack
->yytops
.yysize
-= 1;
1185 yystack
->yytops
.yystates
[yyj
] = yystack
->yytops
.yystates
[yyi
];
1188 YYDPRINTF ((stderr
, "Rename stack %lu -> %lu.\n",
1189 (unsigned long int) yyi
, (unsigned long int) yyj
));
1197 /** Shift to a new state on stack #K of STACK, corresponding to LR state
1198 * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */
1200 yyglrShift (yyGLRStack
* yystack
, size_t yyk
, yyStateNum yylrState
,
1202 YYSTYPE yysval
, YYLTYPE
* yylocp
)
1204 yyGLRStackItem
* yynewItem
;
1206 yynewItem
= yystack
->yynextFree
;
1207 yystack
->yynextFree
+= 1;
1208 yystack
->yyspaceLeft
-= 1;
1209 yynewItem
->yystate
.yyisState
= yytrue
;
1210 yynewItem
->yystate
.yylrState
= yylrState
;
1211 yynewItem
->yystate
.yyposn
= yyposn
;
1212 yynewItem
->yystate
.yyresolved
= yytrue
;
1213 yynewItem
->yystate
.yypred
= yystack
->yytops
.yystates
[yyk
];
1214 yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
;
1215 yynewItem
->yystate
.yysemantics
.yysval
= yysval
;
1216 yynewItem
->yystate
.yyloc
= *yylocp
;
1217 if (yystack
->yyspaceLeft
< YYHEADROOM
)
1218 yyexpandGLRStack (yystack
);
1221 /** Shift stack #K of YYSTACK, to a new state corresponding to LR
1222 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
1223 * semantic value of YYRHS under the action for YYRULE. */
1225 yyglrShiftDefer (yyGLRStack
* yystack
, size_t yyk
, yyStateNum yylrState
,
1226 size_t yyposn
, yyGLRState
* rhs
, yyRuleNum yyrule
)
1228 yyGLRStackItem
* yynewItem
;
1230 yynewItem
= yystack
->yynextFree
;
1231 yynewItem
->yystate
.yyisState
= yytrue
;
1232 yynewItem
->yystate
.yylrState
= yylrState
;
1233 yynewItem
->yystate
.yyposn
= yyposn
;
1234 yynewItem
->yystate
.yyresolved
= yyfalse
;
1235 yynewItem
->yystate
.yypred
= yystack
->yytops
.yystates
[yyk
];
1236 yynewItem
->yystate
.yysemantics
.yyfirstVal
= NULL
;
1237 yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
;
1238 yystack
->yynextFree
+= 1;
1239 yystack
->yyspaceLeft
-= 1;
1240 yyaddDeferredAction (yystack
, &yynewItem
->yystate
, rhs
, yyrule
);
1243 /** Pop the symbols consumed by reduction #RULE from the top of stack
1244 * #K of STACK, and perform the appropriate semantic action on their
1245 * semantic values. Assumes that all ambiguities in semantic values
1246 * have been previously resolved. Set *VALP to the resulting value,
1247 * and *LOCP to the computed location (if any). Return value is as
1248 * for userAction. */
1249 static inline YYRESULTTAG
1250 yydoAction (yyGLRStack
* yystack
, size_t yyk
, yyRuleNum yyrule
,
1251 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1253 int yynrhs
= yyrhsLength (yyrule
);
1255 if (yystack
->yysplitPoint
== NULL
)
1257 /* Standard special case: single stack. */
1258 yyGLRStackItem
* rhs
= (yyGLRStackItem
*) yystack
->yytops
.yystates
[yyk
];
1259 YYASSERT (yyk
== 0);
1260 yystack
->yynextFree
-= yynrhs
;
1261 yystack
->yyspaceLeft
+= yynrhs
;
1262 yystack
->yytops
.yystates
[0] = & yystack
->yynextFree
[-1].yystate
;
1263 return yyuserAction (yyrule
, yynrhs
, rhs
,
1264 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1270 yyGLRStackItem yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
+ 1];
1271 yys
= yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
].yystate
.yypred
1272 = yystack
->yytops
.yystates
[yyk
];
1273 for (yyi
= 0; yyi
< yynrhs
; yyi
+= 1)
1278 yyupdateSplit (yystack
, yys
);
1279 yystack
->yytops
.yystates
[yyk
] = yys
;
1280 return yyuserAction (yyrule
, yynrhs
, yyrhsVals
+ YYMAXRHS
+ YYMAXLEFT
- 1,
1281 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1286 # define YY_REDUCE_PRINT(K, Rule)
1288 # define YY_REDUCE_PRINT(K, Rule) \
1291 yy_reduce_print (K, Rule); \
1294 /*----------------------------------------------------------.
1295 | Report that the RULE is going to be reduced on stack #K. |
1296 `----------------------------------------------------------*/
1299 yy_reduce_print (size_t yyk
, yyRuleNum yyrule
)
1302 YYFPRINTF (stderr
, "Reducing stack %lu by rule %d (line %lu), ",
1303 (unsigned long int) yyk
, yyrule
- 1,
1304 (unsigned long int) yyrline
[yyrule
]);
1305 /* Print the symbols being reduced, and their result. */
1306 for (yyi
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++)
1307 YYFPRINTF (stderr
, "%s ", yytokenName (yyrhs
[yyi
]));
1308 YYFPRINTF (stderr
, "-> %s\n", yytokenName (yyr1
[yyrule
]));
1312 /** Pop items off stack #K of STACK according to grammar rule RULE,
1313 * and push back on the resulting nonterminal symbol. Perform the
1314 * semantic action associated with RULE and store its value with the
1315 * newly pushed state, if FORCEEVAL or if STACK is currently
1316 * unambiguous. Otherwise, store the deferred semantic action with
1317 * the new state. If the new state would have an identical input
1318 * position, LR state, and predecessor to an existing state on the stack,
1319 * it is identified with that existing state, eliminating stack #K from
1320 * the STACK. In this case, the (necessarily deferred) semantic value is
1321 * added to the options for the existing state's semantic value.
1323 static inline YYRESULTTAG
1324 yyglrReduce (yyGLRStack
* yystack
, size_t yyk
, yyRuleNum yyrule
,
1325 yybool yyforceEval
]b4_user_formals
[)
1327 size_t yyposn
= yystack
->yytops
.yystates
[yyk
]->yyposn
;
1329 if (yyforceEval
|| yystack
->yysplitPoint
== NULL
)
1334 YY_REDUCE_PRINT (yyk
, yyrule
);
1335 YYCHK (yydoAction (yystack
, yyk
, yyrule
, &yysval
, &yyloc
]b4_user_args
[));
1336 yyglrShift (yystack
, yyk
,
1337 yyLRgotoState (yystack
->yytops
.yystates
[yyk
]->yylrState
,
1338 yylhsNonterm (yyrule
)),
1339 yyposn
, yysval
, &yyloc
);
1345 yyGLRState
* yys
, *yys0
= yystack
->yytops
.yystates
[yyk
];
1346 yyStateNum yynewLRState
;
1348 for (yys
= yystack
->yytops
.yystates
[yyk
], yyn
= yyrhsLength (yyrule
);
1354 yyupdateSplit (yystack
, yys
);
1355 yynewLRState
= yyLRgotoState (yys
->yylrState
, yylhsNonterm (yyrule
));
1357 "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n",
1358 (unsigned long int) yyk
, yyrule
- 1, yynewLRState
));
1359 for (yyi
= 0; yyi
< yystack
->yytops
.yysize
; yyi
+= 1)
1360 if (yyi
!= yyk
&& yystack
->yytops
.yystates
[yyi
] != NULL
)
1362 yyGLRState
* yyp
, *yysplit
= yystack
->yysplitPoint
;
1363 yyp
= yystack
->yytops
.yystates
[yyi
];
1364 while (yyp
!= yys
&& yyp
!= yysplit
&& yyp
->yyposn
>= yyposn
)
1366 if (yyp
->yylrState
== yynewLRState
&& yyp
->yypred
== yys
)
1368 yyaddDeferredAction (yystack
, yyp
, yys0
, yyrule
);
1369 yymarkStackDeleted (yystack
, yyk
);
1370 YYDPRINTF ((stderr
, "Merging stack %lu into stack %lu.\n",
1371 (unsigned long int) yyk
,
1372 (unsigned long int) yyi
));
1378 yystack
->yytops
.yystates
[yyk
] = yys
;
1379 yyglrShiftDefer (yystack
, yyk
, yynewLRState
, yyposn
, yys0
, yyrule
);
1385 yysplitStack (yyGLRStack
* yystack
, size_t yyk
)
1387 if (yystack
->yysplitPoint
== NULL
)
1389 YYASSERT (yyk
== 0);
1390 yystack
->yysplitPoint
= yystack
->yytops
.yystates
[yyk
];
1392 if (yystack
->yytops
.yysize
>= yystack
->yytops
.yycapacity
)
1394 yyGLRState
** yynewStates
;
1395 if (! ((yystack
->yytops
.yycapacity
1396 <= (YYSIZEMAX
/ (2 * sizeof yynewStates
[0])))
1398 (yyGLRState
**) YYREALLOC (yystack
->yytops
.yystates
,
1399 ((yystack
->yytops
.yycapacity
*= 2)
1400 * sizeof yynewStates
[0])))))
1401 yyMemoryExhausted (yystack
);
1402 yystack
->yytops
.yystates
= yynewStates
;
1404 yystack
->yytops
.yystates
[yystack
->yytops
.yysize
]
1405 = yystack
->yytops
.yystates
[yyk
];
1406 yystack
->yytops
.yysize
+= 1;
1407 return yystack
->yytops
.yysize
-1;
1410 /** True iff Y0 and Y1 represent identical options at the top level.
1411 * That is, they represent the same rule applied to RHS symbols
1412 * that produce the same terminal symbols. */
1414 yyidenticalOptions (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
)
1416 if (yyy0
->yyrule
== yyy1
->yyrule
)
1418 yyGLRState
*yys0
, *yys1
;
1420 for (yys0
= yyy0
->yystate
, yys1
= yyy1
->yystate
,
1421 yyn
= yyrhsLength (yyy0
->yyrule
);
1423 yys0
= yys0
->yypred
, yys1
= yys1
->yypred
, yyn
-= 1)
1424 if (yys0
->yyposn
!= yys1
->yyposn
)
1432 /** Assuming identicalOptions (Y0,Y1), destructively merge the
1433 * alternative semantic values for the RHS-symbols of Y1 and Y0. */
1435 yymergeOptionSets (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
)
1437 yyGLRState
*yys0
, *yys1
;
1439 for (yys0
= yyy0
->yystate
, yys1
= yyy1
->yystate
,
1440 yyn
= yyrhsLength (yyy0
->yyrule
);
1442 yys0
= yys0
->yypred
, yys1
= yys1
->yypred
, yyn
-= 1)
1446 else if (yys0
->yyresolved
)
1448 yys1
->yyresolved
= yytrue
;
1449 yys1
->yysemantics
.yysval
= yys0
->yysemantics
.yysval
;
1451 else if (yys1
->yyresolved
)
1453 yys0
->yyresolved
= yytrue
;
1454 yys0
->yysemantics
.yysval
= yys1
->yysemantics
.yysval
;
1458 yySemanticOption
** yyz0p
;
1459 yySemanticOption
* yyz1
;
1460 yyz0p
= &yys0
->yysemantics
.yyfirstVal
;
1461 yyz1
= yys1
->yysemantics
.yyfirstVal
;
1464 if (yyz1
== *yyz0p
|| yyz1
== NULL
)
1466 else if (*yyz0p
== NULL
)
1471 else if (*yyz0p
< yyz1
)
1473 yySemanticOption
* yyz
= *yyz0p
;
1475 yyz1
= yyz1
->yynext
;
1476 (*yyz0p
)->yynext
= yyz
;
1478 yyz0p
= &(*yyz0p
)->yynext
;
1480 yys1
->yysemantics
.yyfirstVal
= yys0
->yysemantics
.yyfirstVal
;
1485 /** Y0 and Y1 represent two possible actions to take in a given
1486 * parsing state; return 0 if no combination is possible,
1487 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
1489 yypreference (yySemanticOption
* y0
, yySemanticOption
* y1
)
1491 yyRuleNum r0
= y0
->yyrule
, r1
= y1
->yyrule
;
1492 int p0
= yydprec
[r0
], p1
= yydprec
[r1
];
1496 if (yymerger
[r0
] == 0 || yymerger
[r0
] != yymerger
[r1
])
1501 if (p0
== 0 || p1
== 0)
1510 static YYRESULTTAG
yyresolveValue (yySemanticOption
* yyoptionList
,
1511 yyGLRStack
* yystack
, YYSTYPE
* yyvalp
,
1512 YYLTYPE
* yylocp
]b4_user_formals
[);
1515 yyresolveStates (yyGLRState
* yys
, int yyn
, yyGLRStack
* yystack
]b4_user_formals
[)
1520 YYASSERT (yys
->yypred
);
1521 yyflag
= yyresolveStates (yys
->yypred
, yyn
-1, yystack
]b4_user_args
[);
1524 if (! yys
->yyresolved
)
1526 yyflag
= yyresolveValue (yys
->yysemantics
.yyfirstVal
, yystack
,
1527 &yys
->yysemantics
.yysval
, &yys
->yyloc
1531 yys
->yyresolved
= yytrue
;
1538 yyresolveAction (yySemanticOption
* yyopt
, yyGLRStack
* yystack
,
1539 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1541 yyGLRStackItem yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
+ 1];
1544 yynrhs
= yyrhsLength (yyopt
->yyrule
);
1545 YYCHK (yyresolveStates (yyopt
->yystate
, yynrhs
, yystack
]b4_user_args
[));
1546 yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
].yystate
.yypred
= yyopt
->yystate
;
1547 return yyuserAction (yyopt
->yyrule
, yynrhs
,
1548 yyrhsVals
+ YYMAXRHS
+ YYMAXLEFT
- 1,
1549 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1554 yyreportTree (yySemanticOption
* yyx
, int yyindent
)
1556 int yynrhs
= yyrhsLength (yyx
->yyrule
);
1559 yyGLRState
* yystates
[YYMAXRHS
];
1560 yyGLRState yyleftmost_state
;
1562 for (yyi
= yynrhs
, yys
= yyx
->yystate
; 0 < yyi
; yyi
-= 1, yys
= yys
->yypred
)
1563 yystates
[yyi
] = yys
;
1566 yyleftmost_state
.yyposn
= 0;
1567 yystates
[0] = &yyleftmost_state
;
1572 if (yyx
->yystate
->yyposn
< yys
->yyposn
+ 1)
1573 YYFPRINTF (stderr
, "%*s%s -> <Rule %d, empty>\n",
1574 yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)),
1577 YYFPRINTF (stderr
, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
1578 yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)),
1579 yyx
->yyrule
, (unsigned long int) (yys
->yyposn
+ 1),
1580 (unsigned long int) yyx
->yystate
->yyposn
);
1581 for (yyi
= 1; yyi
<= yynrhs
; yyi
+= 1)
1583 if (yystates
[yyi
]->yyresolved
)
1585 if (yystates
[yyi
-1]->yyposn
+1 > yystates
[yyi
]->yyposn
)
1586 YYFPRINTF (stderr
, "%*s%s <empty>\n", yyindent
+2, "",
1587 yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]));
1589 YYFPRINTF (stderr
, "%*s%s <tokens %lu .. %lu>\n", yyindent
+2, "",
1590 yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]),
1591 (unsigned long int) (yystates
[yyi
- 1]->yyposn
+ 1),
1592 (unsigned long int) yystates
[yyi
]->yyposn
);
1595 yyreportTree (yystates
[yyi
]->yysemantics
.yyfirstVal
, yyindent
+2);
1600 static void yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
,
1601 yyGLRStack
* yystack
]b4_pure_formals
[)
1602 __attribute__ ((__noreturn__
));
1604 yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
,
1605 yyGLRStack
* yystack
]b4_pure_formals
[)
1607 /* `Unused' warnings. */
1612 YYFPRINTF (stderr
, "Ambiguity detected.\n");
1613 YYFPRINTF (stderr
, "Option 1,\n");
1614 yyreportTree (yyx0
, 2);
1615 YYFPRINTF (stderr
, "\nOption 2,\n");
1616 yyreportTree (yyx1
, 2);
1617 YYFPRINTF (stderr
, "\n");
1619 yyFail (yystack
][]b4_pure_args
[, YY_("syntax is ambiguous"));
1623 /** Resolve the ambiguity represented by OPTIONLIST, perform the indicated
1624 * actions, and return the result. */
1626 yyresolveValue (yySemanticOption
* yyoptionList
, yyGLRStack
* yystack
,
1627 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1629 yySemanticOption
* yybest
;
1630 yySemanticOption
** yypp
;
1633 yybest
= yyoptionList
;
1635 for (yypp
= &yyoptionList
->yynext
; *yypp
!= NULL
; )
1637 yySemanticOption
* yyp
= *yypp
;
1639 if (yyidenticalOptions (yybest
, yyp
))
1641 yymergeOptionSets (yybest
, yyp
);
1642 *yypp
= yyp
->yynext
;
1646 switch (yypreference (yybest
, yyp
))
1649 yyreportAmbiguity (yybest
, yyp
, yystack
]b4_pure_args
[);
1661 yypp
= &yyp
->yynext
;
1667 yySemanticOption
* yyp
;
1668 int yyprec
= yydprec
[yybest
->yyrule
];
1669 YYCHK (yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[));
1670 for (yyp
= yybest
->yynext
; yyp
!= NULL
; yyp
= yyp
->yynext
)
1672 if (yyprec
== yydprec
[yyp
->yyrule
])
1676 YYCHK (yyresolveAction (yyp
, yystack
, &yyval1
, &yydummy
]b4_user_args
[));
1677 yyuserMerge (yymerger
[yyp
->yyrule
], yyvalp
, &yyval1
);
1683 return yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[);
1687 yyresolveStack (yyGLRStack
* yystack
]b4_user_formals
[)
1689 if (yystack
->yysplitPoint
!= NULL
)
1694 for (yyn
= 0, yys
= yystack
->yytops
.yystates
[0];
1695 yys
!= yystack
->yysplitPoint
;
1696 yys
= yys
->yypred
, yyn
+= 1)
1698 YYCHK (yyresolveStates (yystack
->yytops
.yystates
[0], yyn
, yystack
1705 yycompressStack (yyGLRStack
* yystack
)
1707 yyGLRState
* yyp
, *yyq
, *yyr
;
1709 if (yystack
->yytops
.yysize
!= 1 || yystack
->yysplitPoint
== NULL
)
1712 for (yyp
= yystack
->yytops
.yystates
[0], yyq
= yyp
->yypred
, yyr
= NULL
;
1713 yyp
!= yystack
->yysplitPoint
;
1714 yyr
= yyp
, yyp
= yyq
, yyq
= yyp
->yypred
)
1717 yystack
->yyspaceLeft
+= yystack
->yynextFree
- yystack
->yyitems
;
1718 yystack
->yynextFree
= ((yyGLRStackItem
*) yystack
->yysplitPoint
) + 1;
1719 yystack
->yyspaceLeft
-= yystack
->yynextFree
- yystack
->yyitems
;
1720 yystack
->yysplitPoint
= NULL
;
1721 yystack
->yylastDeleted
= NULL
;
1725 yystack
->yynextFree
->yystate
= *yyr
;
1727 yystack
->yynextFree
->yystate
.yypred
= & yystack
->yynextFree
[-1].yystate
;
1728 yystack
->yytops
.yystates
[0] = &yystack
->yynextFree
->yystate
;
1729 yystack
->yynextFree
+= 1;
1730 yystack
->yyspaceLeft
-= 1;
1735 yyprocessOneStack (yyGLRStack
* yystack
, size_t yyk
,
1736 size_t yyposn
, YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
1740 const short int* yyconflicts
;
1742 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1744 while (yystack
->yytops
.yystates
[yyk
] != NULL
)
1746 yyStateNum yystate
= yystack
->yytops
.yystates
[yyk
]->yylrState
;
1747 YYDPRINTF ((stderr
, "Stack %lu Entering state %d\n",
1748 (unsigned long int) yyk
, yystate
));
1750 YYASSERT (yystate
!= YYFINAL
);
1752 if (yyisDefaultedState (yystate
))
1754 yyrule
= yydefaultAction (yystate
);
1757 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1758 (unsigned long int) yyk
));
1759 yymarkStackDeleted (yystack
, yyk
);
1762 YYCHK (yyglrReduce (yystack
, yyk
, yyrule
, yyfalse
]b4_user_args
[));
1766 if (*yytokenp
== YYEMPTY
)
1768 YYDPRINTF ((stderr
, "Reading a token: "));
1770 *yytokenp
= YYTRANSLATE (yychar
);
1771 YY_SYMBOL_PRINT ("Next token is", *yytokenp
, yylvalp
, yyllocp
);
1773 yygetLRActions (yystate
, *yytokenp
, &yyaction
, &yyconflicts
);
1775 while (*yyconflicts
!= 0)
1777 size_t yynewStack
= yysplitStack (yystack
, yyk
);
1778 YYDPRINTF ((stderr
, "Splitting off stack %lu from %lu.\n",
1779 (unsigned long int) yynewStack
,
1780 (unsigned long int) yyk
));
1781 YYCHK (yyglrReduce (yystack
, yynewStack
,
1782 *yyconflicts
, yyfalse
]b4_user_args
[));
1783 YYCHK (yyprocessOneStack (yystack
, yynewStack
, yyposn
,
1784 yylvalp
, yyllocp
]b4_pure_args
[));
1788 if (yyisShiftAction (yyaction
))
1790 YYDPRINTF ((stderr
, "On stack %lu, ", (unsigned long int) yyk
));
1791 YY_SYMBOL_PRINT ("shifting", *yytokenp
, yylvalp
, yyllocp
);
1792 yyglrShift (yystack
, yyk
, yyaction
, yyposn
+1,
1794 YYDPRINTF ((stderr
, "Stack %lu now in state #%d\n",
1795 (unsigned long int) yyk
,
1796 yystack
->yytops
.yystates
[yyk
]->yylrState
));
1799 else if (yyisErrorAction (yyaction
))
1801 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1802 (unsigned long int) yyk
));
1803 yymarkStackDeleted (yystack
, yyk
);
1807 YYCHK (yyglrReduce (yystack
, yyk
, -yyaction
, yyfalse
]b4_user_args
[));
1814 yyreportSyntaxError (yyGLRStack
* yystack
,
1815 YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
]b4_user_formals
[)
1817 /* `Unused' warnings. */
1821 if (yystack
->yyerrState
== 0)
1824 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1826 yyn
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
];
1827 if (YYPACT_NINF
< yyn
&& yyn
< YYLAST
)
1829 size_t yysize0
= yytnamerr (NULL
, yytokenName (*yytokenp
));
1830 size_t yysize
= yysize0
;
1832 yybool yysize_overflow
= yyfalse
;
1834 enum { YYERROR_VERBOSE_ARGS_MAXIMUM
= 5 };
1835 char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
];
1839 static char const yyunexpected
[] = "syntax error, unexpected %s";
1840 static char const yyexpecting
[] = ", expecting %s";
1841 static char const yyor
[] = " or %s";
1842 char yyformat
[sizeof yyunexpected
1843 + sizeof yyexpecting
- 1
1844 + ((YYERROR_VERBOSE_ARGS_MAXIMUM
- 2)
1845 * (sizeof yyor
- 1))];
1846 char const *yyprefix
= yyexpecting
;
1848 /* Start YYX at -YYN if negative to avoid negative indexes in
1850 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
1852 /* Stay within bounds of both yycheck and yytname. */
1853 int yychecklim
= YYLAST
- yyn
;
1854 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
1857 yyarg
[0] = yytokenName (*yytokenp
);
1858 yyfmt
= yystpcpy (yyformat
, yyunexpected
);
1860 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1861 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1863 if (yycount
== YYERROR_VERBOSE_ARGS_MAXIMUM
)
1867 yyformat
[sizeof yyunexpected
- 1] = '\0';
1870 yyarg
[yycount
++] = yytokenName (yyx
);
1871 yysize1
= yysize
+ yytnamerr (NULL
, yytokenName (yyx
));
1872 yysize_overflow
|= yysize1
< yysize
;
1874 yyfmt
= yystpcpy (yyfmt
, yyprefix
);
1878 yyf
= YY_(yyformat
);
1879 yysize1
= yysize
+ strlen (yyf
);
1880 yysize_overflow
|= yysize1
< yysize
;
1883 if (!yysize_overflow
)
1884 yymsg
= (char *) YYMALLOC (yysize
);
1890 while ((*yyp
= *yyf
))
1892 if (*yyp
== '%' && yyf
[1] == 's' && yyi
< yycount
)
1894 yyp
+= yytnamerr (yyp
, yyarg
[yyi
++]);
1903 yyerror (]b4_lyyerror_args
[yymsg
);
1908 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
1909 yyMemoryExhausted (yystack
);
1913 #endif /* YYERROR_VERBOSE */
1914 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
1919 /* Recover from a syntax error on YYSTACK, assuming that YYTOKENP,
1920 YYLVALP, and YYLLOCP point to the syntactic category, semantic
1921 value, and location of the look-ahead. */
1923 yyrecoverSyntaxError (yyGLRStack
* yystack
,
1925 YYLTYPE
* YYOPTIONAL_LOC (yyllocp
)
1928 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1932 if (yystack
->yyerrState
== 3)
1933 /* We just shifted the error token and (perhaps) took some
1934 reductions. Skip tokens until we can proceed. */
1937 if (*yytokenp
== YYEOF
)
1938 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1939 if (*yytokenp
!= YYEMPTY
)
1941 /* We throw away the lookahead, but the error range
1942 of the shifted error token must take it into account. */
1943 yyGLRState
*yys
= yystack
->yytops
.yystates
[0];
1944 yyGLRStackItem yyerror_range
[3];
1945 yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;
1946 yyerror_range
[2].yystate
.yyloc
= *yyllocp
;
1947 YYLLOC_DEFAULT (yys
->yyloc
, yyerror_range
, 2);]])[
1948 yydestruct ("Error: discarding",
1949 *yytokenp
, yylvalp
]b4_location_if([, yyllocp
])[);
1951 YYDPRINTF ((stderr
, "Reading a token: "));
1953 *yytokenp
= YYTRANSLATE (yychar
);
1954 YY_SYMBOL_PRINT ("Next token is", *yytokenp
, yylvalp
, yyllocp
);
1955 yyj
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
];
1956 if (yyis_pact_ninf (yyj
))
1959 if (yyj
< 0 || YYLAST
< yyj
|| yycheck
[yyj
] != *yytokenp
)
1961 if (yydefact
[yystack
->yytops
.yystates
[0]->yylrState
] != 0)
1964 else if (yytable
[yyj
] != 0 && ! yyis_table_ninf (yytable
[yyj
]))
1968 /* Reduce to one stack. */
1969 for (yyk
= 0; yyk
< yystack
->yytops
.yysize
; yyk
+= 1)
1970 if (yystack
->yytops
.yystates
[yyk
] != NULL
)
1972 if (yyk
>= yystack
->yytops
.yysize
)
1973 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1974 for (yyk
+= 1; yyk
< yystack
->yytops
.yysize
; yyk
+= 1)
1975 yymarkStackDeleted (yystack
, yyk
);
1976 yyremoveDeletes (yystack
);
1977 yycompressStack (yystack
);
1979 /* Now pop stack until we find a state that shifts the error token. */
1980 yystack
->yyerrState
= 3;
1981 while (yystack
->yytops
.yystates
[0] != NULL
)
1983 yyGLRState
*yys
= yystack
->yytops
.yystates
[0];
1984 yyj
= yypact
[yys
->yylrState
];
1985 if (! yyis_pact_ninf (yyj
))
1988 if (0 <= yyj
&& yyj
<= YYLAST
&& yycheck
[yyj
] == YYTERROR
1989 && yyisShiftAction (yytable
[yyj
]))
1991 /* Shift the error token having adjusted its location. */
1992 YYLTYPE yyerrloc
;]b4_location_if([[
1993 yystack
->yyerror_range
[2].yystate
.yyloc
= *yyllocp
;
1994 YYLLOC_DEFAULT (yyerrloc
, yystack
->yyerror_range
, 2);]])[
1995 YY_SYMBOL_PRINT ("Shifting", yystos
[yytable
[yyj
]],
1996 yylvalp
, &yyerrloc
);
1997 yyglrShift (yystack
, 0, yytable
[yyj
],
1998 yys
->yyposn
, *yylvalp
, &yyerrloc
);
1999 yys
= yystack
->yytops
.yystates
[0];
2003 ]b4_location_if([[ yystack
->yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]])[
2004 yydestroyStackItem ("Error: popping", yys
);
2005 yystack
->yytops
.yystates
[0] = yys
->yypred
;
2006 yystack
->yynextFree
-= 1;
2007 yystack
->yyspaceLeft
+= 1;
2009 if (yystack
->yytops
.yystates
[0] == NULL
)
2010 yyFail (yystack
][]b4_lpure_args
[, NULL
);
2013 #define YYCHK1(YYE) \
2023 goto yyuser_error; \
2032 ]b4_c_ansi_function_def([yyparse
], [int], b4_parse_param
)[
2043 #define yychar (yystack.yyrawchar)
2046 YYSTYPE
* const yylvalp
= &yylval
;
2047 YYLTYPE
* const yyllocp
= &yylloc
;
2049 YYDPRINTF ((stderr
, "Starting parse\n"));
2052 yylval
= yyval_default
;
2054 #if YYLTYPE_IS_TRIVIAL
2055 yylloc
.first_line
= yylloc
.last_line
= 1;
2056 yylloc
.first_column
= yylloc
.last_column
= 0;
2059 m4_ifdef([b4_initial_action
], [
2060 m4_pushdef([b4_at_dollar
], [yylloc
])dnl
2061 m4_pushdef([b4_dollar_dollar
], [yylval
])dnl
2062 /* User initialization code. */
2064 m4_popdef([b4_dollar_dollar
])dnl
2065 m4_popdef([b4_at_dollar
])dnl
2066 /* Line __line__ of glr.c. */
2067 b4_syncline([@oline@
], [@ofile@
])])dnl
2069 if (! yyinitGLRStack (&yystack
, YYINITDEPTH
))
2070 goto yyexhaustedlab
;
2071 switch (setjmp (yystack
.yyexception_buffer
))
2073 case 1: goto yyabortlab
;
2074 case 2: goto yyexhaustedlab
;
2076 yystack
.yytokenp
= &yytoken
;
2077 yyglrShift (&yystack
, 0, 0, 0, yylval
, &yylloc
);
2082 /* For efficiency, we have two loops, the first of which is
2083 specialized to deterministic operation (single stack, no
2084 potential ambiguity). */
2090 const short int* yyconflicts
;
2092 yyStateNum yystate
= yystack
.yytops
.yystates
[0]->yylrState
;
2093 YYDPRINTF ((stderr
, "Entering state %d\n", yystate
));
2094 if (yystate
== YYFINAL
)
2096 if (yyisDefaultedState (yystate
))
2098 yyrule
= yydefaultAction (yystate
);
2101 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2102 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2105 YYCHK1 (yyglrReduce (&yystack
, 0, yyrule
, yytrue
]b4_user_args
[));
2109 if (yytoken
== YYEMPTY
)
2111 YYDPRINTF ((stderr
, "Reading a token: "));
2113 yytoken
= YYTRANSLATE (yychar
);
2114 YY_SYMBOL_PRINT ("Next token is", yytoken
, yylvalp
, yyllocp
);
2116 yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
);
2117 if (*yyconflicts
!= 0)
2119 if (yyisShiftAction (yyaction
))
2121 YY_SYMBOL_PRINT ("Shifting", yytoken
, yylvalp
, yyllocp
);
2122 if (yytoken
!= YYEOF
)
2125 yyglrShift (&yystack
, 0, yyaction
, yyposn
, yylval
, yyllocp
);
2126 if (0 < yystack
.yyerrState
)
2127 yystack
.yyerrState
-= 1;
2129 else if (yyisErrorAction (yyaction
))
2131 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2132 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2136 YYCHK1 (yyglrReduce (&yystack
, 0, -yyaction
, yytrue
]b4_user_args
[));
2143 size_t yyn
= yystack
.yytops
.yysize
;
2144 for (yys
= 0; yys
< yyn
; yys
+= 1)
2145 YYCHK1 (yyprocessOneStack (&yystack
, yys
, yyposn
,
2146 yylvalp
, yyllocp
]b4_lpure_args
[));
2149 yyremoveDeletes (&yystack
);
2150 if (yystack
.yytops
.yysize
== 0)
2152 yyundeleteLastStack (&yystack
);
2153 if (yystack
.yytops
.yysize
== 0)
2154 yyFail (&yystack
][]b4_lpure_args
[, YY_("syntax error"));
2155 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2156 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2157 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2158 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2161 else if (yystack
.yytops
.yysize
== 1)
2163 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2164 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2165 yycompressStack (&yystack
);
2171 yyrecoverSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2172 yyposn
= yystack
.yytops
.yystates
[0]->yyposn
;
2184 yyerror (]b4_lyyerror_args
[YY_("memory exhausted"));
2189 if (yytoken
!= YYEOF
&& yytoken
!= YYEMPTY
)
2190 yydestruct ("Cleanup: discarding lookahead",
2191 yytoken
, yylvalp
]b4_location_if([, yyllocp
])[);
2193 /* If the stack is well-formed, pop the stack until it is empty,
2194 destroying its entries as we go. But free the stack regardless
2195 of whether it is well-formed. */
2196 if (yystack
.yyitems
)
2198 yyGLRState
** yystates
= yystack
.yytops
.yystates
;
2202 yyGLRState
*yys
= yystates
[0];
2203 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]]
2204 )[ yydestroyStackItem ("Cleanup: popping", yys
);
2205 yystates
[0] = yys
->yypred
;
2206 yystack
.yynextFree
-= 1;
2207 yystack
.yyspaceLeft
+= 1;
2209 yyfreeGLRStack (&yystack
);
2215 /* DEBUGGING ONLY */
2217 static void yypstack (yyGLRStack
* yystack
, size_t yyk
)
2218 __attribute__ ((__unused__
));
2219 static void yypdumpstack (yyGLRStack
* yystack
) __attribute__ ((__unused__
));
2222 yy_yypstack (yyGLRState
* yys
)
2226 yy_yypstack (yys
->yypred
);
2227 fprintf (stderr
, " -> ");
2229 fprintf (stderr
, "%d@@%lu", yys
->yylrState
, (unsigned long int) yys
->yyposn
);
2233 yypstates (yyGLRState
* yyst
)
2236 fprintf (stderr
, "<null>");
2239 fprintf (stderr
, "\n");
2243 yypstack (yyGLRStack
* yystack
, size_t yyk
)
2245 yypstates (yystack
->yytops
.yystates
[yyk
]);
2248 #define YYINDEX(YYX) \
2249 ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystack->yyitems)
2253 yypdumpstack (yyGLRStack
* yystack
)
2255 yyGLRStackItem
* yyp
;
2257 for (yyp
= yystack
->yyitems
; yyp
< yystack
->yynextFree
; yyp
+= 1)
2259 fprintf (stderr
, "%3lu. ", (unsigned long int) (yyp
- yystack
->yyitems
));
2260 if (*(yybool
*) yyp
)
2262 fprintf (stderr
, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
2263 yyp
->yystate
.yyresolved
, yyp
->yystate
.yylrState
,
2264 (unsigned long int) yyp
->yystate
.yyposn
,
2265 (long int) YYINDEX (yyp
->yystate
.yypred
));
2266 if (! yyp
->yystate
.yyresolved
)
2267 fprintf (stderr
, ", firstVal: %ld",
2268 (long int) YYINDEX (yyp
->yystate
.yysemantics
.yyfirstVal
));
2272 fprintf (stderr
, "Option. rule: %d, state: %ld, next: %ld",
2273 yyp
->yyoption
.yyrule
,
2274 (long int) YYINDEX (yyp
->yyoption
.yystate
),
2275 (long int) YYINDEX (yyp
->yyoption
.yynext
));
2277 fprintf (stderr
, "\n");
2279 fprintf (stderr
, "Tops:");
2280 for (yyi
= 0; yyi
< yystack
->yytops
.yysize
; yyi
+= 1)
2281 fprintf (stderr
, "%lu: %ld; ", (unsigned long int) yyi
,
2282 (long int) YYINDEX (yystack
->yytops
.yystates
[yyi
]));
2283 fprintf (stderr
, "\n");
2289 m4_if(b4_defines_flag
, 0, [],
2290 [@output @output_header_name@
2291 b4_copyright([Skeleton parser
for GLR parsing with Bison
],
2292 [2002, 2003, 2004, 2005])
2294 b4_token_defines(b4_tokens
)
2296 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
2297 m4_ifdef([b4_stype
],
2298 [b4_syncline([b4_stype_line
], [b4_filename
])
2299 typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE
])b4_stype YYSTYPE
;
2300 /* Line __line__ of glr.c. */
2301 b4_syncline([@oline@
], [@ofile@
])],
2302 [typedef int YYSTYPE
;])
2303 # define YYSTYPE_IS_DECLARED 1
2304 # define YYSTYPE_IS_TRIVIAL 1
2308 [extern YYSTYPE b4_prefix
[]lval
;])
2310 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
2311 typedef struct YYLTYPE
2322 # define YYLTYPE_IS_DECLARED 1
2323 # define YYLTYPE_IS_TRIVIAL 1
2326 b4_location_if([b4_pure_if([],
2327 [extern YYLTYPE b4_prefix
[]lloc
;])