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 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
176 ]m4_ifdef([b4_stype
],
177 [b4_syncline([b4_stype_line
], [b4_filename
])
178 typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE
])b4_stype YYSTYPE
;
179 /* Line __line__ of glr.c. */
180 b4_syncline([@oline@
], [@ofile@
])],
181 [typedef int YYSTYPE
;])[
182 # define YYSTYPE_IS_DECLARED 1
183 # define YYSTYPE_IS_TRIVIAL 1
186 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
187 typedef struct YYLTYPE
198 # define YYLTYPE_IS_DECLARED 1
199 # define YYLTYPE_IS_TRIVIAL 1
202 /* Default (constant) value used for initialization for null
203 right-hand sides. Unlike the standard yacc.c template,
204 here we set the default value of $$ to a zeroed-out value.
205 Since the default value is undefined, this behavior is
206 technically correct. */
207 static YYSTYPE yyval_default
;
209 /* Copy the second part of user declarations. */
212 ]/* Line __line__ of glr.c. */
213 b4_syncline([@oline@
], [@ofile@
])
224 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
225 # define YY_(msgid) dgettext ("bison-runtime", msgid)
229 # define YY_(msgid) msgid
237 # define YYMALLOC malloc
240 # define YYREALLOC realloc
243 #define YYSIZEMAX ((size_t) -1)
248 typedef unsigned char yybool
;
257 #ifndef __attribute__
258 /* This feature is available in gcc versions 2.5 and later. */
259 # if !defined (__GNUC__) || __GNUC__ < 2 || \
260 (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
261 # define __attribute__(Spec) /* empty */
263 ]b4_location_if([# define YYOPTIONAL_LOC(Name) Name],[
264 # if defined (__cplusplus)
265 # define YYOPTIONAL_LOC(Name) /* empty */
267 # define YYOPTIONAL_LOC(Name) Name ATTRIBUTE_UNUSED
273 # define YYASSERT(condition) ((void) ((condition) || (abort (), 0)))
276 #ifndef ATTRIBUTE_UNUSED
277 # define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
280 /* YYFINAL -- State number of the termination state. */
281 #define YYFINAL ]b4_final_state_number[
282 /* YYLAST -- Last index in YYTABLE. */
283 #define YYLAST ]b4_last[
285 /* YYNTOKENS -- Number of terminals. */
286 #define YYNTOKENS ]b4_tokens_number[
287 /* YYNNTS -- Number of nonterminals. */
288 #define YYNNTS ]b4_nterms_number[
289 /* YYNRULES -- Number of rules. */
290 #define YYNRULES ]b4_rules_number[
291 /* YYNRULES -- Number of states. */
292 #define YYNSTATES ]b4_states_number[
293 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
294 #define YYMAXRHS ]b4_r2_max[
295 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
296 accessed by $0, $-1, etc., in any rule. */
297 #define YYMAXLEFT ]b4_max_left_semantic_context[
299 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */
300 #define YYUNDEFTOK ]b4_undef_token_number[
301 #define YYMAXUTOK ]b4_user_token_number_max[
303 #define YYTRANSLATE(YYX) \
304 ((YYX <= 0) ? YYEOF : \
305 (unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
307 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
308 static const ]b4_int_type_for([b4_translate
])[ yytranslate
[] =
314 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
316 static const ]b4_int_type_for([b4_prhs
])[ yyprhs
[] =
321 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
322 static const ]b4_int_type_for([b4_rhs
])[ yyrhs
[] =
327 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
328 static const ]b4_int_type_for([b4_rline
])[ yyrline
[] =
334 #if (YYDEBUG) || YYERROR_VERBOSE
335 /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
336 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
337 static const char *const yytname
[] =
343 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
344 static const ]b4_int_type_for([b4_r1
])[ yyr1
[] =
349 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
350 static const ]b4_int_type_for([b4_r2
])[ yyr2
[] =
355 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
356 static const ]b4_int_type_for([b4_dprec
])[ yydprec
[] =
361 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
362 static const ]b4_int_type_for([b4_merger
])[ yymerger
[] =
367 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
368 doesn't specify something else to do. Zero means the default is an
370 static const ]b4_int_type_for([b4_defact
])[ yydefact
[] =
375 /* YYPDEFGOTO[NTERM-NUM]. */
376 static const ]b4_int_type_for([b4_defgoto
])[ yydefgoto
[] =
381 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
383 #define YYPACT_NINF ]b4_pact_ninf[
384 static const ]b4_int_type_for([b4_pact
])[ yypact
[] =
389 /* YYPGOTO[NTERM-NUM]. */
390 static const ]b4_int_type_for([b4_pgoto
])[ yypgoto
[] =
395 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
396 positive, shift that token. If negative, reduce the rule which
397 number is the opposite. If zero, do what YYDEFACT says.
398 If YYTABLE_NINF, syntax error. */
399 #define YYTABLE_NINF ]b4_table_ninf[
400 static const ]b4_int_type_for([b4_table
])[ yytable
[] =
405 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
406 list of conflicting reductions corresponding to action entry for
407 state STATE-NUM in yytable. 0 means no conflicts. The list in
408 yyconfl is terminated by a rule number of 0. */
409 static const ]b4_int_type_for([b4_conflict_list_heads
])[ yyconflp
[] =
411 ]b4_conflict_list_heads
[
414 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
415 0, pointed into by YYCONFLP. */
416 ]dnl Do
not use b4_int_type_for here
, since there are places where
417 dnl pointers onto yyconfl are taken
, which type is
"short int *".
418 dnl We probably ought to introduce a type
for confl
.
419 [static const short int yyconfl
[] =
421 ]b4_conflicting_rules
[
424 static const ]b4_int_type_for([b4_check
])[ yycheck
[] =
429 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
430 symbol of state STATE-NUM. */
431 static const ]b4_int_type_for([b4_stos
])[ yystos
[] =
437 /* Prevent warning if -Wmissing-prototypes. */
438 ]b4_c_ansi_function_decl([yyparse
], [int], b4_parse_param
)[
440 /* Error token number */
443 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
444 If N is 0, then set CURRENT to the empty location which ends
445 the previous symbol: RHS[0] (always defined). */
448 #define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
449 #ifndef YYLLOC_DEFAULT
450 # define YYLLOC_DEFAULT(Current, Rhs, N) \
454 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
455 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
456 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
457 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
461 (Current).first_line = (Current).last_line = \
462 YYRHSLOC (Rhs, 0).last_line; \
463 (Current).first_column = (Current).last_column = \
464 YYRHSLOC (Rhs, 0).last_column; \
468 /* YY_LOCATION_PRINT -- Print the location on the stream.
469 This macro was not mandated originally: define only if we know
470 we won't break user code: when these are the locations we know. */
472 # define YY_LOCATION_PRINT(File, Loc) \
473 fprintf (File, "%d.%d-%d.%d", \
474 (Loc).first_line, (Loc).first_column, \
475 (Loc).last_line, (Loc).last_column)
478 #ifndef YYLLOC_DEFAULT
479 # define YYLLOC_DEFAULT(Current, Rhs, N) ((void) 0)
483 #ifndef YY_LOCATION_PRINT
484 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
488 /* YYLEX -- calling `yylex' with the right arguments. */
489 #define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
494 #define yynerrs (yystack->yyerrcnt)
496 #define yychar (yystack->yyrawchar)],
504 static const int YYEOF
= 0;
505 static const int YYEMPTY
= -2;
507 typedef enum { yyok
, yyaccept
, yyabort
, yyerr
} YYRESULTTAG
;
510 do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; } \
515 #if ! defined (YYFPRINTF)
516 # define YYFPRINTF fprintf
519 # define YYDPRINTF(Args) \
525 ]b4_yysymprint_generate([b4_c_ansi_function_def
])[
527 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
531 YYFPRINTF (stderr, "%s ", Title); \
532 yysymprint (stderr, \
533 Type, Value]b4_location_if([, Location])[); \
537 /* Nonzero means print parse trace. It is left uninitialized so that
538 multiple parsers can coexist. */
543 # define YYDPRINTF(Args)
544 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
546 #endif /* !YYDEBUG */
548 /* YYINITDEPTH -- initial size of the parser's stacks. */
550 # define YYINITDEPTH ]b4_stack_depth_init[
553 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
554 if the built-in stack extension method is used).
556 Do not make this value too large; the results are undefined if
557 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
558 evaluated with infinite-precision integer arithmetic. */
561 # define YYMAXDEPTH ]b4_stack_depth_max[
564 /* Minimum number of free items on the stack allowed after an
565 allocation. This is to allow allocation and initialization
566 to be completed by functions that call yyexpandGLRStack before the
567 stack is expanded, thus insuring that all necessary pointers get
568 properly redirected to new data. */
571 #ifndef YYSTACKEXPANDABLE
572 # if (! defined (__cplusplus) \
573 || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
574 && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))
575 # define YYSTACKEXPANDABLE 1
577 # define YYSTACKEXPANDABLE 0
584 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
585 # define yystpcpy stpcpy
587 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
590 yystpcpy (char *yydest
, const char *yysrc
)
593 const char *yys
= yysrc
;
595 while ((*yyd
++ = *yys
++) != '\0')
603 #endif /* !YYERROR_VERBOSE */
605 /** State numbers, as in LALR(1) machine */
606 typedef int yyStateNum
;
608 /** Rule numbers, as in LALR(1) machine */
609 typedef int yyRuleNum
;
611 /** Grammar symbol */
612 typedef short int yySymbol
;
614 /** Item references, as in LALR(1) machine */
615 typedef short int yyItemNum
;
617 typedef struct yyGLRState yyGLRState
;
618 typedef struct yySemanticOption yySemanticOption
;
619 typedef union yyGLRStackItem yyGLRStackItem
;
620 typedef struct yyGLRStack yyGLRStack
;
621 typedef struct yyGLRStateSet yyGLRStateSet
;
624 /** Type tag: always true. */
626 /** Type tag for yysemantics. If true, yysval applies, otherwise
627 * yyfirstVal applies. */
629 /** Number of corresponding LALR(1) machine state. */
630 yyStateNum yylrState
;
631 /** Preceding state in this stack */
633 /** Source position of the first token produced by my symbol */
636 /** First in a chain of alternative reductions producing the
637 * non-terminal corresponding to this state, threaded through
639 yySemanticOption
* yyfirstVal
;
640 /** Semantic value for this state. */
643 /** Source location for this state. */
647 struct yyGLRStateSet
{
648 yyGLRState
** yystates
;
649 size_t yysize
, yycapacity
;
652 struct yySemanticOption
{
653 /** Type tag: always false. */
655 /** Rule number for this reduction */
657 /** The last RHS state in the list of states to be reduced. */
659 /** Next sibling in chain of options. To facilitate merging,
660 * options are chained in decreasing order by address. */
661 yySemanticOption
* yynext
;
664 /** Type of the items in the GLR stack. The yyisState field
665 * indicates which item of the union is valid. */
666 union yyGLRStackItem
{
668 yySemanticOption yyoption
;
673 ]b4_location_if([[ /* To compute the location of the error token. */
674 yyGLRStackItem yyerror_range
[3];]])[
681 jmp_buf yyexception_buffer
;
682 yyGLRStackItem
* yyitems
;
683 yyGLRStackItem
* yynextFree
;
685 yyGLRState
* yysplitPoint
;
686 yyGLRState
* yylastDeleted
;
687 yyGLRStateSet yytops
;
690 static void yyexpandGLRStack (yyGLRStack
* yystack
);
693 yyFail (yyGLRStack
* yystack
]b4_pure_formals
[, const char* yymsg
)
696 yyerror (]b4_yyerror_args
[yymsg
);
697 longjmp (yystack
->yyexception_buffer
, 1);
701 yyMemoryExhausted (yyGLRStack
* yystack
)
703 longjmp (yystack
->yyexception_buffer
, 2);
706 #if YYDEBUG || YYERROR_VERBOSE
707 /** A printable representation of TOKEN. */
708 static inline const char*
709 yytokenName (yySymbol yytoken
)
711 if (yytoken
== YYEMPTY
)
714 return yytname
[yytoken
];
718 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
719 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
720 * containing the pointer to the next state in the chain. Assumes
721 * YYLOW1 < YYLOW0. */
722 static void yyfillin (yyGLRStackItem
*, int, int) ATTRIBUTE_UNUSED
;
724 yyfillin (yyGLRStackItem
*yyvsp
, int yylow0
, int yylow1
)
728 s
= yyvsp
[yylow0
].yystate
.yypred
;
729 for (i
= yylow0
-1; i
>= yylow1
; i
-= 1)
731 YYASSERT (s
->yyresolved
);
732 yyvsp
[i
].yystate
.yyresolved
= yytrue
;
733 yyvsp
[i
].yystate
.yysemantics
.yysval
= s
->yysemantics
.yysval
;
734 yyvsp
[i
].yystate
.yyloc
= s
->yyloc
;
735 s
= yyvsp
[i
].yystate
.yypred
= s
->yypred
;
739 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
740 YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
741 For convenience, always return YYLOW1. */
742 static inline int yyfill (yyGLRStackItem
*, int *, int, yybool
)
745 yyfill (yyGLRStackItem
*yyvsp
, int *yylow
, int yylow1
, yybool yynormal
)
747 if (!yynormal
&& yylow1
< *yylow
)
749 yyfillin (yyvsp
, *yylow
, yylow1
);
755 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
756 * and top stack item YYVSP. YYLVALP points to place to put semantic
757 * value ($$), and yylocp points to place for location information
758 * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT,
759 * yyerr for YYERROR, yyabort for YYABORT. */
761 yyuserAction (yyRuleNum yyn
, int yyrhslen
, yyGLRStackItem
* yyvsp
,
763 YYLTYPE
* YYOPTIONAL_LOC (yylocp
),
767 yybool yynormal ATTRIBUTE_UNUSED
= (yystack
->yysplitPoint
== NULL
);
771 # define yyerrok (yystack->yyerrState = 0)
773 # define YYACCEPT return yyaccept
775 # define YYABORT return yyabort
777 # define YYERROR return yyerrok, yyerr
779 # define YYRECOVERING (yystack->yyerrState != 0)
781 # define yyclearin (yychar = *(yystack->yytokenp) = YYEMPTY)
783 # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal)
785 # define YYBACKUP(Token, Value) \
786 return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \
791 *yyvalp
= yyval_default
;
793 *yyvalp
= yyvsp
[YYFILL (1-yyrhslen
)].yystate
.yysemantics
.yysval
;
794 YYLLOC_DEFAULT (*yylocp
, yyvsp
- yyrhslen
, yyrhslen
);
795 ]b4_location_if([[ yystack
->yyerror_range
[1].yystate
.yyloc
= *yylocp
;
811 /* Line __line__ of glr.c. */
812 b4_syncline([@oline@
], [@ofile@
])
817 yyuserMerge (int yyn
, YYSTYPE
* yy0
, YYSTYPE
* yy1
)
819 /* `Use' the arguments. */
830 /* Bison grammar-table manipulation. */
832 ]b4_yydestruct_generate([b4_c_ansi_function_def
])[
834 /** Number of symbols composing the right hand side of rule #RULE. */
836 yyrhsLength (yyRuleNum yyrule
)
841 /** Left-hand-side symbol for rule #RULE. */
842 static inline yySymbol
843 yylhsNonterm (yyRuleNum yyrule
)
848 #define yyis_pact_ninf(yystate) \
849 ]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), 1,
851 ((yystate
) == YYPACT_NINF
))[
853 /** True iff LR state STATE has only a default reduction (regardless
856 yyisDefaultedState (yyStateNum yystate
)
858 return yyis_pact_ninf (yypact
[yystate
]);
861 /** The default reduction for STATE, assuming it has one. */
862 static inline yyRuleNum
863 yydefaultAction (yyStateNum yystate
)
865 return yydefact
[yystate
];
868 #define yyis_table_ninf(yytable_value) \
869 ]m4_if(m4_eval(b4_table_ninf < b4_table_min), 1,
871 ((yytable_value
) == YYTABLE_NINF
))[
873 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
875 * R < 0: Reduce on rule -R.
877 * R > 0: Shift to state R.
878 * Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of
879 * conflicting reductions.
882 yygetLRActions (yyStateNum yystate
, int yytoken
,
883 int* yyaction
, const short int** yyconflicts
)
885 int yyindex
= yypact
[yystate
] + yytoken
;
886 if (yyindex
< 0 || YYLAST
< yyindex
|| yycheck
[yyindex
] != yytoken
)
888 *yyaction
= -yydefact
[yystate
];
889 *yyconflicts
= yyconfl
;
891 else if (! yyis_table_ninf (yytable
[yyindex
]))
893 *yyaction
= yytable
[yyindex
];
894 *yyconflicts
= yyconfl
+ yyconflp
[yyindex
];
899 *yyconflicts
= yyconfl
+ yyconflp
[yyindex
];
903 static inline yyStateNum
904 yyLRgotoState (yyStateNum yystate
, yySymbol yylhs
)
907 yyr
= yypgoto
[yylhs
- YYNTOKENS
] + yystate
;
908 if (0 <= yyr
&& yyr
<= YYLAST
&& yycheck
[yyr
] == yystate
)
911 return yydefgoto
[yylhs
- YYNTOKENS
];
915 yyisShiftAction (int yyaction
)
921 yyisErrorAction (int yyaction
)
923 return yyaction
== 0;
929 yyaddDeferredAction (yyGLRStack
* yystack
, yyGLRState
* yystate
,
930 yyGLRState
* rhs
, yyRuleNum yyrule
)
932 yySemanticOption
* yynewItem
;
933 yynewItem
= &yystack
->yynextFree
->yyoption
;
934 yystack
->yyspaceLeft
-= 1;
935 yystack
->yynextFree
+= 1;
936 yynewItem
->yyisState
= yyfalse
;
937 yynewItem
->yystate
= rhs
;
938 yynewItem
->yyrule
= yyrule
;
939 yynewItem
->yynext
= yystate
->yysemantics
.yyfirstVal
;
940 yystate
->yysemantics
.yyfirstVal
= yynewItem
;
941 if (yystack
->yyspaceLeft
< YYHEADROOM
)
942 yyexpandGLRStack (yystack
);
947 /** Initialize SET to a singleton set containing an empty stack. */
949 yyinitStateSet (yyGLRStateSet
* yyset
)
952 yyset
->yycapacity
= 16;
953 yyset
->yystates
= (yyGLRState
**) YYMALLOC (16 * sizeof yyset
->yystates
[0]);
954 if (! yyset
->yystates
)
956 yyset
->yystates
[0] = NULL
;
960 static void yyfreeStateSet (yyGLRStateSet
* yyset
)
962 YYFREE (yyset
->yystates
);
965 /** Initialize STACK to a single empty stack, with total maximum
966 * capacity for all stacks of SIZE. */
968 yyinitGLRStack (yyGLRStack
* yystack
, size_t yysize
)
970 yystack
->yyerrState
= 0;
972 yystack
->yyspaceLeft
= yysize
;
973 yystack
->yynextFree
= yystack
->yyitems
=
974 (yyGLRStackItem
*) YYMALLOC (yysize
* sizeof yystack
->yynextFree
[0]);
975 yystack
->yysplitPoint
= NULL
;
976 yystack
->yylastDeleted
= NULL
;
977 return yyinitStateSet (&yystack
->yytops
) && yystack
->yyitems
;
980 #define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \
981 &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE
983 /** If STACK is expandable, extend it. WARNING: Pointers into the
984 stack from outside should be considered invalid after this call.
985 We always expand when there are 1 or fewer items left AFTER an
986 allocation, so that we can avoid having external pointers exist
987 across an allocation. */
989 yyexpandGLRStack (yyGLRStack
* yystack
)
991 #if YYSTACKEXPANDABLE
992 yyGLRStackItem
* yynewItems
;
993 yyGLRStackItem
* yyp0
, *yyp1
;
994 size_t yysize
, yynewSize
;
996 yysize
= yystack
->yynextFree
- yystack
->yyitems
;
997 if (YYMAXDEPTH
<= yysize
)
998 yyMemoryExhausted (yystack
);
999 yynewSize
= 2*yysize
;
1000 if (YYMAXDEPTH
< yynewSize
)
1001 yynewSize
= YYMAXDEPTH
;
1002 yynewItems
= (yyGLRStackItem
*) YYMALLOC (yynewSize
* sizeof yynewItems
[0]);
1004 yyMemoryExhausted (yystack
);
1005 for (yyp0
= yystack
->yyitems
, yyp1
= yynewItems
, yyn
= yysize
;
1007 yyn
-= 1, yyp0
+= 1, yyp1
+= 1)
1010 if (*(yybool
*) yyp0
)
1012 yyGLRState
* yys0
= &yyp0
->yystate
;
1013 yyGLRState
* yys1
= &yyp1
->yystate
;
1014 if (yys0
->yypred
!= NULL
)
1016 YYRELOC (yyp0
, yyp1
, yys0
->yypred
, yystate
);
1017 if (! yys0
->yyresolved
&& yys0
->yysemantics
.yyfirstVal
!= NULL
)
1018 yys1
->yysemantics
.yyfirstVal
=
1019 YYRELOC(yyp0
, yyp1
, yys0
->yysemantics
.yyfirstVal
, yyoption
);
1023 yySemanticOption
* yyv0
= &yyp0
->yyoption
;
1024 yySemanticOption
* yyv1
= &yyp1
->yyoption
;
1025 if (yyv0
->yystate
!= NULL
)
1026 yyv1
->yystate
= YYRELOC (yyp0
, yyp1
, yyv0
->yystate
, yystate
);
1027 if (yyv0
->yynext
!= NULL
)
1028 yyv1
->yynext
= YYRELOC (yyp0
, yyp1
, yyv0
->yynext
, yyoption
);
1031 if (yystack
->yysplitPoint
!= NULL
)
1032 yystack
->yysplitPoint
= YYRELOC (yystack
->yyitems
, yynewItems
,
1033 yystack
->yysplitPoint
, yystate
);
1035 for (yyn
= 0; yyn
< yystack
->yytops
.yysize
; yyn
+= 1)
1036 if (yystack
->yytops
.yystates
[yyn
] != NULL
)
1037 yystack
->yytops
.yystates
[yyn
] =
1038 YYRELOC (yystack
->yyitems
, yynewItems
,
1039 yystack
->yytops
.yystates
[yyn
], yystate
);
1040 YYFREE (yystack
->yyitems
);
1041 yystack
->yyitems
= yynewItems
;
1042 yystack
->yynextFree
= yynewItems
+ yysize
;
1043 yystack
->yyspaceLeft
= yynewSize
- yysize
;
1046 yyMemoryExhausted (yystack
);
1051 yyfreeGLRStack (yyGLRStack
* yystack
)
1053 YYFREE (yystack
->yyitems
);
1054 yyfreeStateSet (&yystack
->yytops
);
1057 /** Assuming that S is a GLRState somewhere on STACK, update the
1058 * splitpoint of STACK, if needed, so that it is at least as deep as
1061 yyupdateSplit (yyGLRStack
* yystack
, yyGLRState
* yys
)
1063 if (yystack
->yysplitPoint
!= NULL
&& yystack
->yysplitPoint
> yys
)
1064 yystack
->yysplitPoint
= yys
;
1067 /** Invalidate stack #K in STACK. */
1069 yymarkStackDeleted (yyGLRStack
* yystack
, size_t yyk
)
1071 if (yystack
->yytops
.yystates
[yyk
] != NULL
)
1072 yystack
->yylastDeleted
= yystack
->yytops
.yystates
[yyk
];
1073 yystack
->yytops
.yystates
[yyk
] = NULL
;
1076 /** Undelete the last stack that was marked as deleted. Can only be
1077 done once after a deletion, and only when all other stacks have
1080 yyundeleteLastStack (yyGLRStack
* yystack
)
1082 if (yystack
->yylastDeleted
== NULL
|| yystack
->yytops
.yysize
!= 0)
1084 yystack
->yytops
.yystates
[0] = yystack
->yylastDeleted
;
1085 yystack
->yytops
.yysize
= 1;
1086 YYDPRINTF ((stderr
, "Restoring last deleted stack as stack #0.\n"));
1087 yystack
->yylastDeleted
= NULL
;
1091 yyremoveDeletes (yyGLRStack
* yystack
)
1095 while (yyj
< yystack
->yytops
.yysize
)
1097 if (yystack
->yytops
.yystates
[yyi
] == NULL
)
1101 YYDPRINTF ((stderr
, "Removing dead stacks.\n"));
1103 yystack
->yytops
.yysize
-= 1;
1107 yystack
->yytops
.yystates
[yyj
] = yystack
->yytops
.yystates
[yyi
];
1110 YYDPRINTF ((stderr
, "Rename stack %lu -> %lu.\n",
1111 (unsigned long int) yyi
, (unsigned long int) yyj
));
1119 /** Shift to a new state on stack #K of STACK, corresponding to LR state
1120 * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */
1122 yyglrShift (yyGLRStack
* yystack
, size_t yyk
, yyStateNum yylrState
,
1124 YYSTYPE yysval
, YYLTYPE
* yylocp
)
1126 yyGLRStackItem
* yynewItem
;
1128 yynewItem
= yystack
->yynextFree
;
1129 yystack
->yynextFree
+= 1;
1130 yystack
->yyspaceLeft
-= 1;
1131 yynewItem
->yystate
.yyisState
= yytrue
;
1132 yynewItem
->yystate
.yylrState
= yylrState
;
1133 yynewItem
->yystate
.yyposn
= yyposn
;
1134 yynewItem
->yystate
.yyresolved
= yytrue
;
1135 yynewItem
->yystate
.yypred
= yystack
->yytops
.yystates
[yyk
];
1136 yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
;
1137 yynewItem
->yystate
.yysemantics
.yysval
= yysval
;
1138 yynewItem
->yystate
.yyloc
= *yylocp
;
1139 if (yystack
->yyspaceLeft
< YYHEADROOM
)
1140 yyexpandGLRStack (yystack
);
1143 /** Shift stack #K of YYSTACK, to a new state corresponding to LR
1144 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
1145 * semantic value of YYRHS under the action for YYRULE. */
1147 yyglrShiftDefer (yyGLRStack
* yystack
, size_t yyk
, yyStateNum yylrState
,
1148 size_t yyposn
, yyGLRState
* rhs
, yyRuleNum yyrule
)
1150 yyGLRStackItem
* yynewItem
;
1152 yynewItem
= yystack
->yynextFree
;
1153 yynewItem
->yystate
.yyisState
= yytrue
;
1154 yynewItem
->yystate
.yylrState
= yylrState
;
1155 yynewItem
->yystate
.yyposn
= yyposn
;
1156 yynewItem
->yystate
.yyresolved
= yyfalse
;
1157 yynewItem
->yystate
.yypred
= yystack
->yytops
.yystates
[yyk
];
1158 yynewItem
->yystate
.yysemantics
.yyfirstVal
= NULL
;
1159 yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
;
1160 yystack
->yynextFree
+= 1;
1161 yystack
->yyspaceLeft
-= 1;
1162 yyaddDeferredAction (yystack
, &yynewItem
->yystate
, rhs
, yyrule
);
1165 /** Pop the symbols consumed by reduction #RULE from the top of stack
1166 * #K of STACK, and perform the appropriate semantic action on their
1167 * semantic values. Assumes that all ambiguities in semantic values
1168 * have been previously resolved. Set *VALP to the resulting value,
1169 * and *LOCP to the computed location (if any). Return value is as
1170 * for userAction. */
1171 static inline YYRESULTTAG
1172 yydoAction (yyGLRStack
* yystack
, size_t yyk
, yyRuleNum yyrule
,
1173 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1175 int yynrhs
= yyrhsLength (yyrule
);
1177 if (yystack
->yysplitPoint
== NULL
)
1179 /* Standard special case: single stack. */
1180 yyGLRStackItem
* rhs
= (yyGLRStackItem
*) yystack
->yytops
.yystates
[yyk
];
1181 YYASSERT (yyk
== 0);
1182 yystack
->yynextFree
-= yynrhs
;
1183 yystack
->yyspaceLeft
+= yynrhs
;
1184 yystack
->yytops
.yystates
[0] = & yystack
->yynextFree
[-1].yystate
;
1185 return yyuserAction (yyrule
, yynrhs
, rhs
,
1186 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1192 yyGLRStackItem yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
+ 1];
1193 yys
= yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
].yystate
.yypred
1194 = yystack
->yytops
.yystates
[yyk
];
1195 for (yyi
= 0; yyi
< yynrhs
; yyi
+= 1)
1200 yyupdateSplit (yystack
, yys
);
1201 yystack
->yytops
.yystates
[yyk
] = yys
;
1202 return yyuserAction (yyrule
, yynrhs
, yyrhsVals
+ YYMAXRHS
+ YYMAXLEFT
- 1,
1203 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1208 # define YY_REDUCE_PRINT(K, Rule)
1210 # define YY_REDUCE_PRINT(K, Rule) \
1213 yy_reduce_print (K, Rule); \
1216 /*----------------------------------------------------------.
1217 | Report that the RULE is going to be reduced on stack #K. |
1218 `----------------------------------------------------------*/
1221 yy_reduce_print (size_t yyk
, yyRuleNum yyrule
)
1224 YYFPRINTF (stderr
, "Reducing stack %lu by rule %d (line %lu), ",
1225 (unsigned long int) yyk
, yyrule
- 1,
1226 (unsigned long int) yyrline
[yyrule
]);
1227 /* Print the symbols being reduced, and their result. */
1228 for (yyi
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++)
1229 YYFPRINTF (stderr
, "%s ", yytokenName (yyrhs
[yyi
]));
1230 YYFPRINTF (stderr
, "-> %s\n", yytokenName (yyr1
[yyrule
]));
1234 /** Pop items off stack #K of STACK according to grammar rule RULE,
1235 * and push back on the resulting nonterminal symbol. Perform the
1236 * semantic action associated with RULE and store its value with the
1237 * newly pushed state, if FORCEEVAL or if STACK is currently
1238 * unambiguous. Otherwise, store the deferred semantic action with
1239 * the new state. If the new state would have an identical input
1240 * position, LR state, and predecessor to an existing state on the stack,
1241 * it is identified with that existing state, eliminating stack #K from
1242 * the STACK. In this case, the (necessarily deferred) semantic value is
1243 * added to the options for the existing state's semantic value.
1245 static inline YYRESULTTAG
1246 yyglrReduce (yyGLRStack
* yystack
, size_t yyk
, yyRuleNum yyrule
,
1247 yybool yyforceEval
]b4_user_formals
[)
1249 size_t yyposn
= yystack
->yytops
.yystates
[yyk
]->yyposn
;
1251 if (yyforceEval
|| yystack
->yysplitPoint
== NULL
)
1256 YY_REDUCE_PRINT (yyk
, yyrule
);
1257 YYCHK (yydoAction (yystack
, yyk
, yyrule
, &yysval
, &yyloc
]b4_user_args
[));
1258 yyglrShift (yystack
, yyk
,
1259 yyLRgotoState (yystack
->yytops
.yystates
[yyk
]->yylrState
,
1260 yylhsNonterm (yyrule
)),
1261 yyposn
, yysval
, &yyloc
);
1267 yyGLRState
* yys
, *yys0
= yystack
->yytops
.yystates
[yyk
];
1268 yyStateNum yynewLRState
;
1270 for (yys
= yystack
->yytops
.yystates
[yyk
], yyn
= yyrhsLength (yyrule
);
1276 yyupdateSplit (yystack
, yys
);
1277 yynewLRState
= yyLRgotoState (yys
->yylrState
, yylhsNonterm (yyrule
));
1279 "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n",
1280 (unsigned long int) yyk
, yyrule
- 1, yynewLRState
));
1281 for (yyi
= 0; yyi
< yystack
->yytops
.yysize
; yyi
+= 1)
1282 if (yyi
!= yyk
&& yystack
->yytops
.yystates
[yyi
] != NULL
)
1284 yyGLRState
* yyp
, *yysplit
= yystack
->yysplitPoint
;
1285 yyp
= yystack
->yytops
.yystates
[yyi
];
1286 while (yyp
!= yys
&& yyp
!= yysplit
&& yyp
->yyposn
>= yyposn
)
1288 if (yyp
->yylrState
== yynewLRState
&& yyp
->yypred
== yys
)
1290 yyaddDeferredAction (yystack
, yyp
, yys0
, yyrule
);
1291 yymarkStackDeleted (yystack
, yyk
);
1292 YYDPRINTF ((stderr
, "Merging stack %lu into stack %lu.\n",
1293 (unsigned long int) yyk
,
1294 (unsigned long int) yyi
));
1300 yystack
->yytops
.yystates
[yyk
] = yys
;
1301 yyglrShiftDefer (yystack
, yyk
, yynewLRState
, yyposn
, yys0
, yyrule
);
1307 yysplitStack (yyGLRStack
* yystack
, size_t yyk
)
1309 if (yystack
->yysplitPoint
== NULL
)
1311 YYASSERT (yyk
== 0);
1312 yystack
->yysplitPoint
= yystack
->yytops
.yystates
[yyk
];
1314 if (yystack
->yytops
.yysize
>= yystack
->yytops
.yycapacity
)
1316 yyGLRState
** yynewStates
;
1317 if (! ((yystack
->yytops
.yycapacity
1318 <= (YYSIZEMAX
/ (2 * sizeof yynewStates
[0])))
1320 (yyGLRState
**) YYREALLOC (yystack
->yytops
.yystates
,
1321 ((yystack
->yytops
.yycapacity
*= 2)
1322 * sizeof yynewStates
[0])))))
1323 yyMemoryExhausted (yystack
);
1324 yystack
->yytops
.yystates
= yynewStates
;
1326 yystack
->yytops
.yystates
[yystack
->yytops
.yysize
]
1327 = yystack
->yytops
.yystates
[yyk
];
1328 yystack
->yytops
.yysize
+= 1;
1329 return yystack
->yytops
.yysize
-1;
1332 /** True iff Y0 and Y1 represent identical options at the top level.
1333 * That is, they represent the same rule applied to RHS symbols
1334 * that produce the same terminal symbols. */
1336 yyidenticalOptions (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
)
1338 if (yyy0
->yyrule
== yyy1
->yyrule
)
1340 yyGLRState
*yys0
, *yys1
;
1342 for (yys0
= yyy0
->yystate
, yys1
= yyy1
->yystate
,
1343 yyn
= yyrhsLength (yyy0
->yyrule
);
1345 yys0
= yys0
->yypred
, yys1
= yys1
->yypred
, yyn
-= 1)
1346 if (yys0
->yyposn
!= yys1
->yyposn
)
1354 /** Assuming identicalOptions (Y0,Y1), destructively merge the
1355 * alternative semantic values for the RHS-symbols of Y1 and Y0. */
1357 yymergeOptionSets (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
)
1359 yyGLRState
*yys0
, *yys1
;
1361 for (yys0
= yyy0
->yystate
, yys1
= yyy1
->yystate
,
1362 yyn
= yyrhsLength (yyy0
->yyrule
);
1364 yys0
= yys0
->yypred
, yys1
= yys1
->yypred
, yyn
-= 1)
1368 else if (yys0
->yyresolved
)
1370 yys1
->yyresolved
= yytrue
;
1371 yys1
->yysemantics
.yysval
= yys0
->yysemantics
.yysval
;
1373 else if (yys1
->yyresolved
)
1375 yys0
->yyresolved
= yytrue
;
1376 yys0
->yysemantics
.yysval
= yys1
->yysemantics
.yysval
;
1380 yySemanticOption
** yyz0p
;
1381 yySemanticOption
* yyz1
;
1382 yyz0p
= &yys0
->yysemantics
.yyfirstVal
;
1383 yyz1
= yys1
->yysemantics
.yyfirstVal
;
1386 if (yyz1
== *yyz0p
|| yyz1
== NULL
)
1388 else if (*yyz0p
== NULL
)
1393 else if (*yyz0p
< yyz1
)
1395 yySemanticOption
* yyz
= *yyz0p
;
1397 yyz1
= yyz1
->yynext
;
1398 (*yyz0p
)->yynext
= yyz
;
1400 yyz0p
= &(*yyz0p
)->yynext
;
1402 yys1
->yysemantics
.yyfirstVal
= yys0
->yysemantics
.yyfirstVal
;
1407 /** Y0 and Y1 represent two possible actions to take in a given
1408 * parsing state; return 0 if no combination is possible,
1409 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
1411 yypreference (yySemanticOption
* y0
, yySemanticOption
* y1
)
1413 yyRuleNum r0
= y0
->yyrule
, r1
= y1
->yyrule
;
1414 int p0
= yydprec
[r0
], p1
= yydprec
[r1
];
1418 if (yymerger
[r0
] == 0 || yymerger
[r0
] != yymerger
[r1
])
1423 if (p0
== 0 || p1
== 0)
1432 static YYRESULTTAG
yyresolveValue (yySemanticOption
* yyoptionList
,
1433 yyGLRStack
* yystack
, YYSTYPE
* yyvalp
,
1434 YYLTYPE
* yylocp
]b4_user_formals
[);
1437 yyresolveStates (yyGLRState
* yys
, int yyn
, yyGLRStack
* yystack
]b4_user_formals
[)
1442 YYASSERT (yys
->yypred
);
1443 yyflag
= yyresolveStates (yys
->yypred
, yyn
-1, yystack
]b4_user_args
[);
1446 if (! yys
->yyresolved
)
1448 yyflag
= yyresolveValue (yys
->yysemantics
.yyfirstVal
, yystack
,
1449 &yys
->yysemantics
.yysval
, &yys
->yyloc
1453 yys
->yyresolved
= yytrue
;
1460 yyresolveAction (yySemanticOption
* yyopt
, yyGLRStack
* yystack
,
1461 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1463 yyGLRStackItem yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
+ 1];
1466 yynrhs
= yyrhsLength (yyopt
->yyrule
);
1467 YYCHK (yyresolveStates (yyopt
->yystate
, yynrhs
, yystack
]b4_user_args
[));
1468 yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
].yystate
.yypred
= yyopt
->yystate
;
1469 return yyuserAction (yyopt
->yyrule
, yynrhs
,
1470 yyrhsVals
+ YYMAXRHS
+ YYMAXLEFT
- 1,
1471 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1476 yyreportTree (yySemanticOption
* yyx
, int yyindent
)
1478 int yynrhs
= yyrhsLength (yyx
->yyrule
);
1481 yyGLRState
* yystates
[YYMAXRHS
];
1482 yyGLRState yyleftmost_state
;
1484 for (yyi
= yynrhs
, yys
= yyx
->yystate
; 0 < yyi
; yyi
-= 1, yys
= yys
->yypred
)
1485 yystates
[yyi
] = yys
;
1488 yyleftmost_state
.yyposn
= 0;
1489 yystates
[0] = &yyleftmost_state
;
1494 if (yyx
->yystate
->yyposn
< yys
->yyposn
+ 1)
1495 YYFPRINTF (stderr
, "%*s%s -> <Rule %d, empty>\n",
1496 yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)),
1499 YYFPRINTF (stderr
, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
1500 yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)),
1501 yyx
->yyrule
, (unsigned long int) (yys
->yyposn
+ 1),
1502 (unsigned long int) yyx
->yystate
->yyposn
);
1503 for (yyi
= 1; yyi
<= yynrhs
; yyi
+= 1)
1505 if (yystates
[yyi
]->yyresolved
)
1507 if (yystates
[yyi
-1]->yyposn
+1 > yystates
[yyi
]->yyposn
)
1508 YYFPRINTF (stderr
, "%*s%s <empty>\n", yyindent
+2, "",
1509 yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]));
1511 YYFPRINTF (stderr
, "%*s%s <tokens %lu .. %lu>\n", yyindent
+2, "",
1512 yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]),
1513 (unsigned long int) (yystates
[yyi
- 1]->yyposn
+ 1),
1514 (unsigned long int) yystates
[yyi
]->yyposn
);
1517 yyreportTree (yystates
[yyi
]->yysemantics
.yyfirstVal
, yyindent
+2);
1523 yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
,
1524 yyGLRStack
* yystack
]b4_pure_formals
[)
1526 /* `Unused' warnings. */
1531 YYFPRINTF (stderr
, "Ambiguity detected.\n");
1532 YYFPRINTF (stderr
, "Option 1,\n");
1533 yyreportTree (yyx0
, 2);
1534 YYFPRINTF (stderr
, "\nOption 2,\n");
1535 yyreportTree (yyx1
, 2);
1536 YYFPRINTF (stderr
, "\n");
1538 yyFail (yystack
][]b4_pure_args
[, YY_("syntax is ambiguous"));
1542 /** Resolve the ambiguity represented by OPTIONLIST, perform the indicated
1543 * actions, and return the result. */
1545 yyresolveValue (yySemanticOption
* yyoptionList
, yyGLRStack
* yystack
,
1546 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1548 yySemanticOption
* yybest
;
1549 yySemanticOption
* yyp
;
1552 yybest
= yyoptionList
;
1554 for (yyp
= yyoptionList
->yynext
; yyp
!= NULL
; yyp
= yyp
->yynext
)
1556 if (yyidenticalOptions (yybest
, yyp
))
1557 yymergeOptionSets (yybest
, yyp
);
1559 switch (yypreference (yybest
, yyp
))
1562 yyreportAmbiguity (yybest
, yyp
, yystack
]b4_pure_args
[);
1578 int yyprec
= yydprec
[yybest
->yyrule
];
1579 YYCHK (yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[));
1580 for (yyp
= yybest
->yynext
; yyp
!= NULL
; yyp
= yyp
->yynext
)
1582 if (yyprec
== yydprec
[yyp
->yyrule
])
1586 YYCHK (yyresolveAction (yyp
, yystack
, &yyval1
, &yydummy
]b4_user_args
[));
1587 yyuserMerge (yymerger
[yyp
->yyrule
], yyvalp
, &yyval1
);
1593 return yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[);
1597 yyresolveStack (yyGLRStack
* yystack
]b4_user_formals
[)
1599 if (yystack
->yysplitPoint
!= NULL
)
1604 for (yyn
= 0, yys
= yystack
->yytops
.yystates
[0];
1605 yys
!= yystack
->yysplitPoint
;
1606 yys
= yys
->yypred
, yyn
+= 1)
1608 YYCHK (yyresolveStates (yystack
->yytops
.yystates
[0], yyn
, yystack
1615 yycompressStack (yyGLRStack
* yystack
)
1617 yyGLRState
* yyp
, *yyq
, *yyr
;
1619 if (yystack
->yytops
.yysize
!= 1 || yystack
->yysplitPoint
== NULL
)
1622 for (yyp
= yystack
->yytops
.yystates
[0], yyq
= yyp
->yypred
, yyr
= NULL
;
1623 yyp
!= yystack
->yysplitPoint
;
1624 yyr
= yyp
, yyp
= yyq
, yyq
= yyp
->yypred
)
1627 yystack
->yyspaceLeft
+= yystack
->yynextFree
- yystack
->yyitems
;
1628 yystack
->yynextFree
= ((yyGLRStackItem
*) yystack
->yysplitPoint
) + 1;
1629 yystack
->yyspaceLeft
-= yystack
->yynextFree
- yystack
->yyitems
;
1630 yystack
->yysplitPoint
= NULL
;
1631 yystack
->yylastDeleted
= NULL
;
1635 yystack
->yynextFree
->yystate
= *yyr
;
1637 yystack
->yynextFree
->yystate
.yypred
= & yystack
->yynextFree
[-1].yystate
;
1638 yystack
->yytops
.yystates
[0] = &yystack
->yynextFree
->yystate
;
1639 yystack
->yynextFree
+= 1;
1640 yystack
->yyspaceLeft
-= 1;
1645 yyprocessOneStack (yyGLRStack
* yystack
, size_t yyk
,
1646 size_t yyposn
, YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
1650 const short int* yyconflicts
;
1652 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1654 while (yystack
->yytops
.yystates
[yyk
] != NULL
)
1656 yyStateNum yystate
= yystack
->yytops
.yystates
[yyk
]->yylrState
;
1657 YYDPRINTF ((stderr
, "Stack %lu Entering state %d\n",
1658 (unsigned long int) yyk
, yystate
));
1660 YYASSERT (yystate
!= YYFINAL
);
1662 if (yyisDefaultedState (yystate
))
1664 yyrule
= yydefaultAction (yystate
);
1667 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1668 (unsigned long int) yyk
));
1669 yymarkStackDeleted (yystack
, yyk
);
1672 YYCHK (yyglrReduce (yystack
, yyk
, yyrule
, yyfalse
]b4_user_args
[));
1676 if (*yytokenp
== YYEMPTY
)
1678 YYDPRINTF ((stderr
, "Reading a token: "));
1680 *yytokenp
= YYTRANSLATE (yychar
);
1681 YY_SYMBOL_PRINT ("Next token is", *yytokenp
, yylvalp
, yyllocp
);
1682 YYDPRINTF ((stderr
, "\n"));
1684 yygetLRActions (yystate
, *yytokenp
, &yyaction
, &yyconflicts
);
1686 while (*yyconflicts
!= 0)
1688 size_t yynewStack
= yysplitStack (yystack
, yyk
);
1689 YYDPRINTF ((stderr
, "Splitting off stack %lu from %lu.\n",
1690 (unsigned long int) yynewStack
,
1691 (unsigned long int) yyk
));
1692 YYCHK (yyglrReduce (yystack
, yynewStack
,
1693 *yyconflicts
, yyfalse
]b4_user_args
[));
1694 YYCHK (yyprocessOneStack (yystack
, yynewStack
, yyposn
,
1695 yylvalp
, yyllocp
]b4_pure_args
[));
1699 if (yyisShiftAction (yyaction
))
1701 YYDPRINTF ((stderr
, "On stack %lu, ", (unsigned long int) yyk
));
1702 YY_SYMBOL_PRINT ("shifting", *yytokenp
, yylvalp
, yyllocp
);
1703 yyglrShift (yystack
, yyk
, yyaction
, yyposn
+1,
1705 YYDPRINTF ((stderr
, ", now in state #%d\n",
1706 yystack
->yytops
.yystates
[yyk
]->yylrState
));
1709 else if (yyisErrorAction (yyaction
))
1711 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1712 (unsigned long int) yyk
));
1713 yymarkStackDeleted (yystack
, yyk
);
1717 YYCHK (yyglrReduce (yystack
, yyk
, -yyaction
, yyfalse
]b4_user_args
[));
1724 yyreportSyntaxError (yyGLRStack
* yystack
,
1725 YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
]b4_user_formals
[)
1727 /* `Unused' warnings. */
1731 if (yystack
->yyerrState
== 0)
1734 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1736 yyn
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
];
1737 if (YYPACT_NINF
< yyn
&& yyn
< YYLAST
)
1739 size_t yysize0
= strlen (yytokenName (*yytokenp
));
1740 size_t yysize
= yysize0
;
1742 yybool yysize_overflow
= yyfalse
;
1744 enum { YYERROR_VERBOSE_ARGS_MAXIMUM
= 5 };
1745 char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
];
1749 static char const yyunexpected
[] = "syntax error, unexpected %s";
1750 static char const yyexpecting
[] = ", expecting %s";
1751 static char const yyor
[] = " or %s";
1752 char yyformat
[sizeof yyunexpected
1753 + sizeof yyexpecting
- 1
1754 + ((YYERROR_VERBOSE_ARGS_MAXIMUM
- 2)
1755 * (sizeof yyor
- 1))];
1756 char const *yyprefix
= yyexpecting
;
1758 /* Start YYX at -YYN if negative to avoid negative indexes in
1760 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
1762 /* Stay within bounds of both yycheck and yytname. */
1763 int yychecklim
= YYLAST
- yyn
;
1764 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
1767 yyarg
[0] = yytokenName (*yytokenp
);
1768 yyfmt
= yystpcpy (yyformat
, yyunexpected
);
1770 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1771 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1773 if (yycount
== YYERROR_VERBOSE_ARGS_MAXIMUM
)
1777 yyformat
[sizeof yyunexpected
- 1] = '\0';
1780 yyarg
[yycount
++] = yytokenName (yyx
);
1781 yysize1
= yysize
+ strlen (yytokenName (yyx
));
1782 yysize_overflow
|= yysize1
< yysize
;
1784 yyfmt
= yystpcpy (yyfmt
, yyprefix
);
1788 yyf
= YY_(yyformat
);
1789 yysize1
= yysize
+ strlen (yyf
);
1790 yysize_overflow
|= yysize1
< yysize
;
1793 if (!yysize_overflow
)
1794 yymsg
= (char *) YYMALLOC (yysize
);
1800 while ((*yyp
= *yyf
))
1802 if (*yyp
== '%' && yyf
[1] == 's' && yyi
< yycount
)
1804 yyp
= yystpcpy (yyp
, yyarg
[yyi
++]);
1813 yyerror (]b4_lyyerror_args
[yymsg
);
1818 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
1819 yyMemoryExhausted (yystack
);
1823 #endif /* YYERROR_VERBOSE */
1824 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
1829 /* Recover from a syntax error on YYSTACK, assuming that YYTOKENP,
1830 YYLVALP, and YYLLOCP point to the syntactic category, semantic
1831 value, and location of the look-ahead. */
1833 yyrecoverSyntaxError (yyGLRStack
* yystack
,
1835 YYLTYPE
* YYOPTIONAL_LOC (yyllocp
)
1838 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1842 if (yystack
->yyerrState
== 3)
1843 /* We just shifted the error token and (perhaps) took some
1844 reductions. Skip tokens until we can proceed. */
1847 if (*yytokenp
== YYEOF
)
1848 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1849 if (*yytokenp
!= YYEMPTY
)
1851 /* We throw away the lookahead, but the error range
1852 of the shifted error token must take it into account. */
1853 yyGLRState
*yys
= yystack
->yytops
.yystates
[0];
1854 yyGLRStackItem yyerror_range
[3];
1855 yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;
1856 yyerror_range
[2].yystate
.yyloc
= *yyllocp
;
1857 YYLLOC_DEFAULT (yys
->yyloc
, yyerror_range
, 2);]])[
1858 yydestruct ("Error: discarding",
1859 *yytokenp
, yylvalp
]b4_location_if([, yyllocp
])[);
1861 YYDPRINTF ((stderr
, "Reading a token: "));
1863 *yytokenp
= YYTRANSLATE (yychar
);
1864 YY_SYMBOL_PRINT ("Next token is", *yytokenp
, yylvalp
, yyllocp
);
1865 YYDPRINTF ((stderr
, "\n"));
1866 yyj
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
];
1867 if (yyis_pact_ninf (yyj
))
1870 if (yyj
< 0 || YYLAST
< yyj
|| yycheck
[yyj
] != *yytokenp
)
1872 if (yydefact
[yystack
->yytops
.yystates
[0]->yylrState
] != 0)
1875 else if (yytable
[yyj
] != 0 && ! yyis_table_ninf (yytable
[yyj
]))
1879 /* Reduce to one stack. */
1880 for (yyk
= 0; yyk
< yystack
->yytops
.yysize
; yyk
+= 1)
1881 if (yystack
->yytops
.yystates
[yyk
] != NULL
)
1883 if (yyk
>= yystack
->yytops
.yysize
)
1884 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1885 for (yyk
+= 1; yyk
< yystack
->yytops
.yysize
; yyk
+= 1)
1886 yymarkStackDeleted (yystack
, yyk
);
1887 yyremoveDeletes (yystack
);
1888 yycompressStack (yystack
);
1890 /* Now pop stack until we find a state that shifts the error token. */
1891 yystack
->yyerrState
= 3;
1892 while (yystack
->yytops
.yystates
[0] != NULL
)
1894 yyGLRState
*yys
= yystack
->yytops
.yystates
[0];
1895 yyj
= yypact
[yys
->yylrState
];
1896 if (! yyis_pact_ninf (yyj
))
1899 if (0 <= yyj
&& yyj
<= YYLAST
&& yycheck
[yyj
] == YYTERROR
1900 && yyisShiftAction (yytable
[yyj
]))
1902 /* Shift the error token having adjusted its location. */
1903 YYLTYPE yyerrloc
;]b4_location_if([[
1904 yystack
->yyerror_range
[2].yystate
.yyloc
= *yyllocp
;
1905 YYLLOC_DEFAULT (yyerrloc
, yystack
->yyerror_range
, 2);]])[
1906 YY_SYMBOL_PRINT ("Shifting", yystos
[yytable
[yyj
]],
1907 yylvalp
, &yyerrloc
);
1908 YYDPRINTF ((stderr
, "\n"));
1909 yyglrShift (yystack
, 0, yytable
[yyj
],
1910 yys
->yyposn
, *yylvalp
, &yyerrloc
);
1911 yys
= yystack
->yytops
.yystates
[0];
1915 ]b4_location_if([[ yystack
->yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]])[
1916 yydestruct ("Error: popping",
1917 yystos
[yys
->yylrState
],
1918 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[);
1919 yystack
->yytops
.yystates
[0] = yys
->yypred
;
1920 yystack
->yynextFree
-= 1;
1921 yystack
->yyspaceLeft
+= 1;
1923 if (yystack
->yytops
.yystates
[0] == NULL
)
1924 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1927 #define YYCHK1(YYE) \
1937 goto yyuser_error; \
1946 ]b4_c_ansi_function_def([yyparse
], [int], b4_parse_param
)[
1957 #define yychar (yystack.yyrawchar)
1960 YYSTYPE
* const yylvalp
= &yylval
;
1961 YYLTYPE
* const yyllocp
= &yylloc
;
1963 YYDPRINTF ((stderr
, "Starting parse\n"));
1966 yylval
= yyval_default
;
1968 #if YYLTYPE_IS_TRIVIAL
1969 yylloc
.first_line
= yylloc
.last_line
= 1;
1970 yylloc
.first_column
= yylloc
.last_column
= 0;
1973 m4_ifdef([b4_initial_action
], [
1974 m4_pushdef([b4_at_dollar
], [yylloc
])dnl
1975 m4_pushdef([b4_dollar_dollar
], [yylval
])dnl
1976 /* User initialization code. */
1978 m4_popdef([b4_dollar_dollar
])dnl
1979 m4_popdef([b4_at_dollar
])dnl
1980 /* Line __line__ of glr.c. */
1981 b4_syncline([@oline@
], [@ofile@
])])dnl
1983 if (! yyinitGLRStack (&yystack
, YYINITDEPTH
))
1984 goto yyexhaustedlab
;
1985 switch (setjmp (yystack
.yyexception_buffer
))
1987 case 1: goto yyabortlab
;
1988 case 2: goto yyexhaustedlab
;
1990 yystack
.yytokenp
= &yytoken
;
1991 yyglrShift (&yystack
, 0, 0, 0, yylval
, &yylloc
);
1996 /* For efficiency, we have two loops, the first of which is
1997 specialized to deterministic operation (single stack, no
1998 potential ambiguity). */
2004 const short int* yyconflicts
;
2006 yyStateNum yystate
= yystack
.yytops
.yystates
[0]->yylrState
;
2007 YYDPRINTF ((stderr
, "Entering state %d\n", yystate
));
2008 if (yystate
== YYFINAL
)
2010 if (yyisDefaultedState (yystate
))
2012 yyrule
= yydefaultAction (yystate
);
2015 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2016 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2019 YYCHK1 (yyglrReduce (&yystack
, 0, yyrule
, yytrue
]b4_user_args
[));
2023 if (yytoken
== YYEMPTY
)
2025 YYDPRINTF ((stderr
, "Reading a token: "));
2027 yytoken
= YYTRANSLATE (yychar
);
2028 YY_SYMBOL_PRINT ("Next token is", yytoken
, yylvalp
, yyllocp
);
2029 YYDPRINTF ((stderr
, "\n"));
2031 yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
);
2032 if (*yyconflicts
!= 0)
2034 if (yyisShiftAction (yyaction
))
2036 YY_SYMBOL_PRINT ("Shifting", yytoken
, yylvalp
, yyllocp
);
2037 YYDPRINTF ((stderr
, "\n"));
2038 if (yytoken
!= YYEOF
)
2041 yyglrShift (&yystack
, 0, yyaction
, yyposn
, yylval
, yyllocp
);
2042 if (0 < yystack
.yyerrState
)
2043 yystack
.yyerrState
-= 1;
2045 else if (yyisErrorAction (yyaction
))
2047 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2048 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2052 YYCHK1 (yyglrReduce (&yystack
, 0, -yyaction
, yytrue
]b4_user_args
[));
2059 size_t yyn
= yystack
.yytops
.yysize
;
2060 for (yys
= 0; yys
< yyn
; yys
+= 1)
2061 YYCHK1 (yyprocessOneStack (&yystack
, yys
, yyposn
,
2062 yylvalp
, yyllocp
]b4_lpure_args
[));
2065 yyremoveDeletes (&yystack
);
2066 if (yystack
.yytops
.yysize
== 0)
2068 yyundeleteLastStack (&yystack
);
2069 if (yystack
.yytops
.yysize
== 0)
2070 yyFail (&yystack
][]b4_lpure_args
[, YY_("syntax error"));
2071 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2072 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2073 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2074 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2077 else if (yystack
.yytops
.yysize
== 1)
2079 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2080 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2081 yycompressStack (&yystack
);
2087 yyrecoverSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2088 yyposn
= yystack
.yytops
.yystates
[0]->yyposn
;
2100 yyerror (]b4_lyyerror_args
[YY_("memory exhausted"));
2105 if (yytoken
!= YYEOF
&& yytoken
!= YYEMPTY
)
2106 yydestruct ("Error: discarding lookahead",
2107 yytoken
, yylvalp
]b4_location_if([, yyllocp
])[);
2109 /* Now pop stack until empty, destroying its entries as we go. */
2110 while (yystack
.yytops
.yystates
[0] != NULL
)
2112 yyGLRState
*yys
= yystack
.yytops
.yystates
[0];
2113 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]])[
2114 yydestruct ("Error: popping",
2115 yystos
[yys
->yylrState
],
2116 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[);
2117 yystack
.yytops
.yystates
[0] = yys
->yypred
;
2118 yystack
.yynextFree
-= 1;
2119 yystack
.yyspaceLeft
+= 1;
2122 yyfreeGLRStack (&yystack
);
2126 /* DEBUGGING ONLY */
2128 static void yypstack (yyGLRStack
* yystack
, size_t yyk
) ATTRIBUTE_UNUSED
;
2129 static void yypdumpstack (yyGLRStack
* yystack
) ATTRIBUTE_UNUSED
;
2132 yy_yypstack (yyGLRState
* yys
)
2136 yy_yypstack (yys
->yypred
);
2137 fprintf (stderr
, " -> ");
2139 fprintf (stderr
, "%d@@%lu", yys
->yylrState
, (unsigned long int) yys
->yyposn
);
2143 yypstates (yyGLRState
* yyst
)
2146 fprintf (stderr
, "<null>");
2149 fprintf (stderr
, "\n");
2153 yypstack (yyGLRStack
* yystack
, size_t yyk
)
2155 yypstates (yystack
->yytops
.yystates
[yyk
]);
2158 #define YYINDEX(YYX) \
2159 ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystack->yyitems)
2163 yypdumpstack (yyGLRStack
* yystack
)
2165 yyGLRStackItem
* yyp
;
2167 for (yyp
= yystack
->yyitems
; yyp
< yystack
->yynextFree
; yyp
+= 1)
2169 fprintf (stderr
, "%3lu. ", (unsigned long int) (yyp
- yystack
->yyitems
));
2170 if (*(yybool
*) yyp
)
2172 fprintf (stderr
, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
2173 yyp
->yystate
.yyresolved
, yyp
->yystate
.yylrState
,
2174 (unsigned long int) yyp
->yystate
.yyposn
,
2175 (long int) YYINDEX (yyp
->yystate
.yypred
));
2176 if (! yyp
->yystate
.yyresolved
)
2177 fprintf (stderr
, ", firstVal: %ld",
2178 (long int) YYINDEX (yyp
->yystate
.yysemantics
.yyfirstVal
));
2182 fprintf (stderr
, "Option. rule: %d, state: %ld, next: %ld",
2183 yyp
->yyoption
.yyrule
,
2184 (long int) YYINDEX (yyp
->yyoption
.yystate
),
2185 (long int) YYINDEX (yyp
->yyoption
.yynext
));
2187 fprintf (stderr
, "\n");
2189 fprintf (stderr
, "Tops:");
2190 for (yyi
= 0; yyi
< yystack
->yytops
.yysize
; yyi
+= 1)
2191 fprintf (stderr
, "%lu: %ld; ", (unsigned long int) yyi
,
2192 (long int) YYINDEX (yystack
->yytops
.yystates
[yyi
]));
2193 fprintf (stderr
, "\n");
2199 m4_if(b4_defines_flag
, 0, [],
2200 [@output @output_header_name@
2201 b4_copyright([Skeleton parser
for GLR parsing with Bison
],
2202 [2002, 2003, 2004, 2005])
2204 b4_token_defines(b4_tokens
)
2206 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
2207 m4_ifdef([b4_stype
],
2208 [b4_syncline([b4_stype_line
], [b4_filename
])
2209 typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE
])b4_stype YYSTYPE
;
2210 /* Line __line__ of glr.c. */
2211 b4_syncline([@oline@
], [@ofile@
])],
2212 [typedef int YYSTYPE
;])
2213 # define YYSTYPE_IS_DECLARED 1
2214 # define YYSTYPE_IS_TRIVIAL 1
2218 [extern YYSTYPE b4_prefix
[]lval
;])
2220 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
2221 typedef struct YYLTYPE
2232 # define YYLTYPE_IS_DECLARED 1
2233 # define YYLTYPE_IS_TRIVIAL 1
2236 b4_location_if([b4_pure_if([],
2237 [extern YYLTYPE b4_prefix
[]lloc
;])