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])[); \
538 /* Nonzero means print parse trace. It is left uninitialized so that
539 multiple parsers can coexist. */
544 # define YYDPRINTF(Args)
545 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
547 #endif /* !YYDEBUG */
549 /* YYINITDEPTH -- initial size of the parser's stacks. */
551 # define YYINITDEPTH ]b4_stack_depth_init[
554 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
555 if the built-in stack extension method is used).
557 Do not make this value too large; the results are undefined if
558 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
559 evaluated with infinite-precision integer arithmetic. */
562 # define YYMAXDEPTH ]b4_stack_depth_max[
565 /* Minimum number of free items on the stack allowed after an
566 allocation. This is to allow allocation and initialization
567 to be completed by functions that call yyexpandGLRStack before the
568 stack is expanded, thus insuring that all necessary pointers get
569 properly redirected to new data. */
572 #ifndef YYSTACKEXPANDABLE
573 # if (! defined (__cplusplus) \
574 || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
575 && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))
576 # define YYSTACKEXPANDABLE 1
578 # define YYSTACKEXPANDABLE 0
585 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
586 # define yystpcpy stpcpy
588 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
591 yystpcpy (char *yydest
, const char *yysrc
)
594 const char *yys
= yysrc
;
596 while ((*yyd
++ = *yys
++) != '\0')
605 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
606 quotes and backslashes, so that it's suitable for yyerror. The
607 heuristic is that double-quoting is unnecessary unless the string
608 contains an apostrophe, a comma, or backslash (other than
609 backslash-backslash). YYSTR is taken from yytname. If YYRES is
610 null, do not copy; instead, return the length of what the result
613 yytnamerr (char *yyres
, const char *yystr
)
618 char const *yyp
= yystr
;
625 goto do_not_strip_quotes
;
629 goto do_not_strip_quotes
;
642 do_not_strip_quotes
: ;
646 return strlen (yystr
);
648 return yystpcpy (yyres
, yystr
) - yyres
;
652 #endif /* !YYERROR_VERBOSE */
654 /** State numbers, as in LALR(1) machine */
655 typedef int yyStateNum
;
657 /** Rule numbers, as in LALR(1) machine */
658 typedef int yyRuleNum
;
660 /** Grammar symbol */
661 typedef short int yySymbol
;
663 /** Item references, as in LALR(1) machine */
664 typedef short int yyItemNum
;
666 typedef struct yyGLRState yyGLRState
;
667 typedef struct yySemanticOption yySemanticOption
;
668 typedef union yyGLRStackItem yyGLRStackItem
;
669 typedef struct yyGLRStack yyGLRStack
;
670 typedef struct yyGLRStateSet yyGLRStateSet
;
673 /** Type tag: always true. */
675 /** Type tag for yysemantics. If true, yysval applies, otherwise
676 * yyfirstVal applies. */
678 /** Number of corresponding LALR(1) machine state. */
679 yyStateNum yylrState
;
680 /** Preceding state in this stack */
682 /** Source position of the first token produced by my symbol */
685 /** First in a chain of alternative reductions producing the
686 * non-terminal corresponding to this state, threaded through
688 yySemanticOption
* yyfirstVal
;
689 /** Semantic value for this state. */
692 /** Source location for this state. */
696 struct yyGLRStateSet
{
697 yyGLRState
** yystates
;
698 size_t yysize
, yycapacity
;
701 struct yySemanticOption
{
702 /** Type tag: always false. */
704 /** Rule number for this reduction */
706 /** The last RHS state in the list of states to be reduced. */
708 /** Next sibling in chain of options. To facilitate merging,
709 * options are chained in decreasing order by address. */
710 yySemanticOption
* yynext
;
713 /** Type of the items in the GLR stack. The yyisState field
714 * indicates which item of the union is valid. */
715 union yyGLRStackItem
{
717 yySemanticOption yyoption
;
722 ]b4_location_if([[ /* To compute the location of the error token. */
723 yyGLRStackItem yyerror_range
[3];]])[
730 jmp_buf yyexception_buffer
;
731 yyGLRStackItem
* yyitems
;
732 yyGLRStackItem
* yynextFree
;
734 yyGLRState
* yysplitPoint
;
735 yyGLRState
* yylastDeleted
;
736 yyGLRStateSet yytops
;
739 static void yyexpandGLRStack (yyGLRStack
* yystack
);
741 static void yyFail (yyGLRStack
* yystack
]b4_pure_formals
[, const char* yymsg
)
742 __attribute__ ((__noreturn__
));
744 yyFail (yyGLRStack
* yystack
]b4_pure_formals
[, const char* yymsg
)
747 yyerror (]b4_yyerror_args
[yymsg
);
748 longjmp (yystack
->yyexception_buffer
, 1);
751 static void yyMemoryExhausted (yyGLRStack
* yystack
)
752 __attribute__ ((__noreturn__
));
754 yyMemoryExhausted (yyGLRStack
* yystack
)
756 longjmp (yystack
->yyexception_buffer
, 2);
759 #if YYDEBUG || YYERROR_VERBOSE
760 /** A printable representation of TOKEN. */
761 static inline const char*
762 yytokenName (yySymbol yytoken
)
764 if (yytoken
== YYEMPTY
)
767 return yytname
[yytoken
];
771 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
772 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
773 * containing the pointer to the next state in the chain. Assumes
774 * YYLOW1 < YYLOW0. */
775 static void yyfillin (yyGLRStackItem
*, int, int) __attribute__ ((__unused__
));
777 yyfillin (yyGLRStackItem
*yyvsp
, int yylow0
, int yylow1
)
781 s
= yyvsp
[yylow0
].yystate
.yypred
;
782 for (i
= yylow0
-1; i
>= yylow1
; i
-= 1)
784 YYASSERT (s
->yyresolved
);
785 yyvsp
[i
].yystate
.yyresolved
= yytrue
;
786 yyvsp
[i
].yystate
.yysemantics
.yysval
= s
->yysemantics
.yysval
;
787 yyvsp
[i
].yystate
.yyloc
= s
->yyloc
;
788 s
= yyvsp
[i
].yystate
.yypred
= s
->yypred
;
792 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
793 YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
794 For convenience, always return YYLOW1. */
795 static inline int yyfill (yyGLRStackItem
*, int *, int, yybool
)
796 __attribute__ ((__unused__
));
798 yyfill (yyGLRStackItem
*yyvsp
, int *yylow
, int yylow1
, yybool yynormal
)
800 if (!yynormal
&& yylow1
< *yylow
)
802 yyfillin (yyvsp
, *yylow
, yylow1
);
808 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
809 * and top stack item YYVSP. YYLVALP points to place to put semantic
810 * value ($$), and yylocp points to place for location information
811 * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT,
812 * yyerr for YYERROR, yyabort for YYABORT. */
814 yyuserAction (yyRuleNum yyn
, int yyrhslen
, yyGLRStackItem
* yyvsp
,
816 YYLTYPE
* YYOPTIONAL_LOC (yylocp
),
820 yybool yynormal
__attribute__ ((__unused__
)) =
821 (yystack
->yysplitPoint
== NULL
);
825 # define yyerrok (yystack->yyerrState = 0)
827 # define YYACCEPT return yyaccept
829 # define YYABORT return yyabort
831 # define YYERROR return yyerrok, yyerr
833 # define YYRECOVERING (yystack->yyerrState != 0)
835 # define yyclearin (yychar = *(yystack->yytokenp) = YYEMPTY)
837 # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal)
839 # define YYBACKUP(Token, Value) \
840 return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \
845 *yyvalp
= yyval_default
;
847 *yyvalp
= yyvsp
[YYFILL (1-yyrhslen
)].yystate
.yysemantics
.yysval
;
848 YYLLOC_DEFAULT (*yylocp
, yyvsp
- yyrhslen
, yyrhslen
);
849 ]b4_location_if([[ yystack
->yyerror_range
[1].yystate
.yyloc
= *yylocp
;
865 /* Line __line__ of glr.c. */
866 b4_syncline([@oline@
], [@ofile@
])
871 yyuserMerge (int yyn
, YYSTYPE
* yy0
, YYSTYPE
* yy1
)
873 /* `Use' the arguments. */
884 /* Bison grammar-table manipulation. */
886 ]b4_yydestruct_generate([b4_c_ansi_function_def
])[
888 /** Number of symbols composing the right hand side of rule #RULE. */
890 yyrhsLength (yyRuleNum yyrule
)
895 /** Left-hand-side symbol for rule #RULE. */
896 static inline yySymbol
897 yylhsNonterm (yyRuleNum yyrule
)
902 #define yyis_pact_ninf(yystate) \
903 ]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), 1,
905 ((yystate
) == YYPACT_NINF
))[
907 /** True iff LR state STATE has only a default reduction (regardless
910 yyisDefaultedState (yyStateNum yystate
)
912 return yyis_pact_ninf (yypact
[yystate
]);
915 /** The default reduction for STATE, assuming it has one. */
916 static inline yyRuleNum
917 yydefaultAction (yyStateNum yystate
)
919 return yydefact
[yystate
];
922 #define yyis_table_ninf(yytable_value) \
923 ]m4_if(m4_eval(b4_table_ninf < b4_table_min), 1,
925 ((yytable_value
) == YYTABLE_NINF
))[
927 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
929 * R < 0: Reduce on rule -R.
931 * R > 0: Shift to state R.
932 * Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of
933 * conflicting reductions.
936 yygetLRActions (yyStateNum yystate
, int yytoken
,
937 int* yyaction
, const short int** yyconflicts
)
939 int yyindex
= yypact
[yystate
] + yytoken
;
940 if (yyindex
< 0 || YYLAST
< yyindex
|| yycheck
[yyindex
] != yytoken
)
942 *yyaction
= -yydefact
[yystate
];
943 *yyconflicts
= yyconfl
;
945 else if (! yyis_table_ninf (yytable
[yyindex
]))
947 *yyaction
= yytable
[yyindex
];
948 *yyconflicts
= yyconfl
+ yyconflp
[yyindex
];
953 *yyconflicts
= yyconfl
+ yyconflp
[yyindex
];
957 static inline yyStateNum
958 yyLRgotoState (yyStateNum yystate
, yySymbol yylhs
)
961 yyr
= yypgoto
[yylhs
- YYNTOKENS
] + yystate
;
962 if (0 <= yyr
&& yyr
<= YYLAST
&& yycheck
[yyr
] == yystate
)
965 return yydefgoto
[yylhs
- YYNTOKENS
];
969 yyisShiftAction (int yyaction
)
975 yyisErrorAction (int yyaction
)
977 return yyaction
== 0;
983 yyaddDeferredAction (yyGLRStack
* yystack
, yyGLRState
* yystate
,
984 yyGLRState
* rhs
, yyRuleNum yyrule
)
986 yySemanticOption
* yynewItem
;
987 yynewItem
= &yystack
->yynextFree
->yyoption
;
988 yystack
->yyspaceLeft
-= 1;
989 yystack
->yynextFree
+= 1;
990 yynewItem
->yyisState
= yyfalse
;
991 yynewItem
->yystate
= rhs
;
992 yynewItem
->yyrule
= yyrule
;
993 yynewItem
->yynext
= yystate
->yysemantics
.yyfirstVal
;
994 yystate
->yysemantics
.yyfirstVal
= yynewItem
;
995 if (yystack
->yyspaceLeft
< YYHEADROOM
)
996 yyexpandGLRStack (yystack
);
1001 /** Initialize SET to a singleton set containing an empty stack. */
1003 yyinitStateSet (yyGLRStateSet
* yyset
)
1006 yyset
->yycapacity
= 16;
1007 yyset
->yystates
= (yyGLRState
**) YYMALLOC (16 * sizeof yyset
->yystates
[0]);
1008 if (! yyset
->yystates
)
1010 yyset
->yystates
[0] = NULL
;
1014 static void yyfreeStateSet (yyGLRStateSet
* yyset
)
1016 YYFREE (yyset
->yystates
);
1019 /** Initialize STACK to a single empty stack, with total maximum
1020 * capacity for all stacks of SIZE. */
1022 yyinitGLRStack (yyGLRStack
* yystack
, size_t yysize
)
1024 yystack
->yyerrState
= 0;
1026 yystack
->yyspaceLeft
= yysize
;
1028 (yyGLRStackItem
*) YYMALLOC (yysize
* sizeof yystack
->yynextFree
[0]);
1029 if (!yystack
->yyitems
)
1031 yystack
->yynextFree
= yystack
->yyitems
;
1032 yystack
->yysplitPoint
= NULL
;
1033 yystack
->yylastDeleted
= NULL
;
1034 return yyinitStateSet (&yystack
->yytops
);
1037 #define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \
1038 &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE
1040 /** If STACK is expandable, extend it. WARNING: Pointers into the
1041 stack from outside should be considered invalid after this call.
1042 We always expand when there are 1 or fewer items left AFTER an
1043 allocation, so that we can avoid having external pointers exist
1044 across an allocation. */
1046 yyexpandGLRStack (yyGLRStack
* yystack
)
1048 #if YYSTACKEXPANDABLE
1049 yyGLRStackItem
* yynewItems
;
1050 yyGLRStackItem
* yyp0
, *yyp1
;
1051 size_t yysize
, yynewSize
;
1053 yysize
= yystack
->yynextFree
- yystack
->yyitems
;
1054 if (YYMAXDEPTH
<= yysize
)
1055 yyMemoryExhausted (yystack
);
1056 yynewSize
= 2*yysize
;
1057 if (YYMAXDEPTH
< yynewSize
)
1058 yynewSize
= YYMAXDEPTH
;
1059 yynewItems
= (yyGLRStackItem
*) YYMALLOC (yynewSize
* sizeof yynewItems
[0]);
1061 yyMemoryExhausted (yystack
);
1062 for (yyp0
= yystack
->yyitems
, yyp1
= yynewItems
, yyn
= yysize
;
1064 yyn
-= 1, yyp0
+= 1, yyp1
+= 1)
1067 if (*(yybool
*) yyp0
)
1069 yyGLRState
* yys0
= &yyp0
->yystate
;
1070 yyGLRState
* yys1
= &yyp1
->yystate
;
1071 if (yys0
->yypred
!= NULL
)
1073 YYRELOC (yyp0
, yyp1
, yys0
->yypred
, yystate
);
1074 if (! yys0
->yyresolved
&& yys0
->yysemantics
.yyfirstVal
!= NULL
)
1075 yys1
->yysemantics
.yyfirstVal
=
1076 YYRELOC(yyp0
, yyp1
, yys0
->yysemantics
.yyfirstVal
, yyoption
);
1080 yySemanticOption
* yyv0
= &yyp0
->yyoption
;
1081 yySemanticOption
* yyv1
= &yyp1
->yyoption
;
1082 if (yyv0
->yystate
!= NULL
)
1083 yyv1
->yystate
= YYRELOC (yyp0
, yyp1
, yyv0
->yystate
, yystate
);
1084 if (yyv0
->yynext
!= NULL
)
1085 yyv1
->yynext
= YYRELOC (yyp0
, yyp1
, yyv0
->yynext
, yyoption
);
1088 if (yystack
->yysplitPoint
!= NULL
)
1089 yystack
->yysplitPoint
= YYRELOC (yystack
->yyitems
, yynewItems
,
1090 yystack
->yysplitPoint
, yystate
);
1092 for (yyn
= 0; yyn
< yystack
->yytops
.yysize
; yyn
+= 1)
1093 if (yystack
->yytops
.yystates
[yyn
] != NULL
)
1094 yystack
->yytops
.yystates
[yyn
] =
1095 YYRELOC (yystack
->yyitems
, yynewItems
,
1096 yystack
->yytops
.yystates
[yyn
], yystate
);
1097 YYFREE (yystack
->yyitems
);
1098 yystack
->yyitems
= yynewItems
;
1099 yystack
->yynextFree
= yynewItems
+ yysize
;
1100 yystack
->yyspaceLeft
= yynewSize
- yysize
;
1103 yyMemoryExhausted (yystack
);
1108 yyfreeGLRStack (yyGLRStack
* yystack
)
1110 YYFREE (yystack
->yyitems
);
1111 yyfreeStateSet (&yystack
->yytops
);
1114 /** Assuming that S is a GLRState somewhere on STACK, update the
1115 * splitpoint of STACK, if needed, so that it is at least as deep as
1118 yyupdateSplit (yyGLRStack
* yystack
, yyGLRState
* yys
)
1120 if (yystack
->yysplitPoint
!= NULL
&& yystack
->yysplitPoint
> yys
)
1121 yystack
->yysplitPoint
= yys
;
1124 /** Invalidate stack #K in STACK. */
1126 yymarkStackDeleted (yyGLRStack
* yystack
, size_t yyk
)
1128 if (yystack
->yytops
.yystates
[yyk
] != NULL
)
1129 yystack
->yylastDeleted
= yystack
->yytops
.yystates
[yyk
];
1130 yystack
->yytops
.yystates
[yyk
] = NULL
;
1133 /** Undelete the last stack that was marked as deleted. Can only be
1134 done once after a deletion, and only when all other stacks have
1137 yyundeleteLastStack (yyGLRStack
* yystack
)
1139 if (yystack
->yylastDeleted
== NULL
|| yystack
->yytops
.yysize
!= 0)
1141 yystack
->yytops
.yystates
[0] = yystack
->yylastDeleted
;
1142 yystack
->yytops
.yysize
= 1;
1143 YYDPRINTF ((stderr
, "Restoring last deleted stack as stack #0.\n"));
1144 yystack
->yylastDeleted
= NULL
;
1148 yyremoveDeletes (yyGLRStack
* yystack
)
1152 while (yyj
< yystack
->yytops
.yysize
)
1154 if (yystack
->yytops
.yystates
[yyi
] == NULL
)
1158 YYDPRINTF ((stderr
, "Removing dead stacks.\n"));
1160 yystack
->yytops
.yysize
-= 1;
1164 yystack
->yytops
.yystates
[yyj
] = yystack
->yytops
.yystates
[yyi
];
1167 YYDPRINTF ((stderr
, "Rename stack %lu -> %lu.\n",
1168 (unsigned long int) yyi
, (unsigned long int) yyj
));
1176 /** Shift to a new state on stack #K of STACK, corresponding to LR state
1177 * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */
1179 yyglrShift (yyGLRStack
* yystack
, size_t yyk
, yyStateNum yylrState
,
1181 YYSTYPE yysval
, YYLTYPE
* yylocp
)
1183 yyGLRStackItem
* yynewItem
;
1185 yynewItem
= yystack
->yynextFree
;
1186 yystack
->yynextFree
+= 1;
1187 yystack
->yyspaceLeft
-= 1;
1188 yynewItem
->yystate
.yyisState
= yytrue
;
1189 yynewItem
->yystate
.yylrState
= yylrState
;
1190 yynewItem
->yystate
.yyposn
= yyposn
;
1191 yynewItem
->yystate
.yyresolved
= yytrue
;
1192 yynewItem
->yystate
.yypred
= yystack
->yytops
.yystates
[yyk
];
1193 yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
;
1194 yynewItem
->yystate
.yysemantics
.yysval
= yysval
;
1195 yynewItem
->yystate
.yyloc
= *yylocp
;
1196 if (yystack
->yyspaceLeft
< YYHEADROOM
)
1197 yyexpandGLRStack (yystack
);
1200 /** Shift stack #K of YYSTACK, to a new state corresponding to LR
1201 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
1202 * semantic value of YYRHS under the action for YYRULE. */
1204 yyglrShiftDefer (yyGLRStack
* yystack
, size_t yyk
, yyStateNum yylrState
,
1205 size_t yyposn
, yyGLRState
* rhs
, yyRuleNum yyrule
)
1207 yyGLRStackItem
* yynewItem
;
1209 yynewItem
= yystack
->yynextFree
;
1210 yynewItem
->yystate
.yyisState
= yytrue
;
1211 yynewItem
->yystate
.yylrState
= yylrState
;
1212 yynewItem
->yystate
.yyposn
= yyposn
;
1213 yynewItem
->yystate
.yyresolved
= yyfalse
;
1214 yynewItem
->yystate
.yypred
= yystack
->yytops
.yystates
[yyk
];
1215 yynewItem
->yystate
.yysemantics
.yyfirstVal
= NULL
;
1216 yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
;
1217 yystack
->yynextFree
+= 1;
1218 yystack
->yyspaceLeft
-= 1;
1219 yyaddDeferredAction (yystack
, &yynewItem
->yystate
, rhs
, yyrule
);
1222 /** Pop the symbols consumed by reduction #RULE from the top of stack
1223 * #K of STACK, and perform the appropriate semantic action on their
1224 * semantic values. Assumes that all ambiguities in semantic values
1225 * have been previously resolved. Set *VALP to the resulting value,
1226 * and *LOCP to the computed location (if any). Return value is as
1227 * for userAction. */
1228 static inline YYRESULTTAG
1229 yydoAction (yyGLRStack
* yystack
, size_t yyk
, yyRuleNum yyrule
,
1230 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1232 int yynrhs
= yyrhsLength (yyrule
);
1234 if (yystack
->yysplitPoint
== NULL
)
1236 /* Standard special case: single stack. */
1237 yyGLRStackItem
* rhs
= (yyGLRStackItem
*) yystack
->yytops
.yystates
[yyk
];
1238 YYASSERT (yyk
== 0);
1239 yystack
->yynextFree
-= yynrhs
;
1240 yystack
->yyspaceLeft
+= yynrhs
;
1241 yystack
->yytops
.yystates
[0] = & yystack
->yynextFree
[-1].yystate
;
1242 return yyuserAction (yyrule
, yynrhs
, rhs
,
1243 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1249 yyGLRStackItem yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
+ 1];
1250 yys
= yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
].yystate
.yypred
1251 = yystack
->yytops
.yystates
[yyk
];
1252 for (yyi
= 0; yyi
< yynrhs
; yyi
+= 1)
1257 yyupdateSplit (yystack
, yys
);
1258 yystack
->yytops
.yystates
[yyk
] = yys
;
1259 return yyuserAction (yyrule
, yynrhs
, yyrhsVals
+ YYMAXRHS
+ YYMAXLEFT
- 1,
1260 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1265 # define YY_REDUCE_PRINT(K, Rule)
1267 # define YY_REDUCE_PRINT(K, Rule) \
1270 yy_reduce_print (K, Rule); \
1273 /*----------------------------------------------------------.
1274 | Report that the RULE is going to be reduced on stack #K. |
1275 `----------------------------------------------------------*/
1278 yy_reduce_print (size_t yyk
, yyRuleNum yyrule
)
1281 YYFPRINTF (stderr
, "Reducing stack %lu by rule %d (line %lu), ",
1282 (unsigned long int) yyk
, yyrule
- 1,
1283 (unsigned long int) yyrline
[yyrule
]);
1284 /* Print the symbols being reduced, and their result. */
1285 for (yyi
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++)
1286 YYFPRINTF (stderr
, "%s ", yytokenName (yyrhs
[yyi
]));
1287 YYFPRINTF (stderr
, "-> %s\n", yytokenName (yyr1
[yyrule
]));
1291 /** Pop items off stack #K of STACK according to grammar rule RULE,
1292 * and push back on the resulting nonterminal symbol. Perform the
1293 * semantic action associated with RULE and store its value with the
1294 * newly pushed state, if FORCEEVAL or if STACK is currently
1295 * unambiguous. Otherwise, store the deferred semantic action with
1296 * the new state. If the new state would have an identical input
1297 * position, LR state, and predecessor to an existing state on the stack,
1298 * it is identified with that existing state, eliminating stack #K from
1299 * the STACK. In this case, the (necessarily deferred) semantic value is
1300 * added to the options for the existing state's semantic value.
1302 static inline YYRESULTTAG
1303 yyglrReduce (yyGLRStack
* yystack
, size_t yyk
, yyRuleNum yyrule
,
1304 yybool yyforceEval
]b4_user_formals
[)
1306 size_t yyposn
= yystack
->yytops
.yystates
[yyk
]->yyposn
;
1308 if (yyforceEval
|| yystack
->yysplitPoint
== NULL
)
1313 YY_REDUCE_PRINT (yyk
, yyrule
);
1314 YYCHK (yydoAction (yystack
, yyk
, yyrule
, &yysval
, &yyloc
]b4_user_args
[));
1315 yyglrShift (yystack
, yyk
,
1316 yyLRgotoState (yystack
->yytops
.yystates
[yyk
]->yylrState
,
1317 yylhsNonterm (yyrule
)),
1318 yyposn
, yysval
, &yyloc
);
1324 yyGLRState
* yys
, *yys0
= yystack
->yytops
.yystates
[yyk
];
1325 yyStateNum yynewLRState
;
1327 for (yys
= yystack
->yytops
.yystates
[yyk
], yyn
= yyrhsLength (yyrule
);
1333 yyupdateSplit (yystack
, yys
);
1334 yynewLRState
= yyLRgotoState (yys
->yylrState
, yylhsNonterm (yyrule
));
1336 "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n",
1337 (unsigned long int) yyk
, yyrule
- 1, yynewLRState
));
1338 for (yyi
= 0; yyi
< yystack
->yytops
.yysize
; yyi
+= 1)
1339 if (yyi
!= yyk
&& yystack
->yytops
.yystates
[yyi
] != NULL
)
1341 yyGLRState
* yyp
, *yysplit
= yystack
->yysplitPoint
;
1342 yyp
= yystack
->yytops
.yystates
[yyi
];
1343 while (yyp
!= yys
&& yyp
!= yysplit
&& yyp
->yyposn
>= yyposn
)
1345 if (yyp
->yylrState
== yynewLRState
&& yyp
->yypred
== yys
)
1347 yyaddDeferredAction (yystack
, yyp
, yys0
, yyrule
);
1348 yymarkStackDeleted (yystack
, yyk
);
1349 YYDPRINTF ((stderr
, "Merging stack %lu into stack %lu.\n",
1350 (unsigned long int) yyk
,
1351 (unsigned long int) yyi
));
1357 yystack
->yytops
.yystates
[yyk
] = yys
;
1358 yyglrShiftDefer (yystack
, yyk
, yynewLRState
, yyposn
, yys0
, yyrule
);
1364 yysplitStack (yyGLRStack
* yystack
, size_t yyk
)
1366 if (yystack
->yysplitPoint
== NULL
)
1368 YYASSERT (yyk
== 0);
1369 yystack
->yysplitPoint
= yystack
->yytops
.yystates
[yyk
];
1371 if (yystack
->yytops
.yysize
>= yystack
->yytops
.yycapacity
)
1373 yyGLRState
** yynewStates
;
1374 if (! ((yystack
->yytops
.yycapacity
1375 <= (YYSIZEMAX
/ (2 * sizeof yynewStates
[0])))
1377 (yyGLRState
**) YYREALLOC (yystack
->yytops
.yystates
,
1378 ((yystack
->yytops
.yycapacity
*= 2)
1379 * sizeof yynewStates
[0])))))
1380 yyMemoryExhausted (yystack
);
1381 yystack
->yytops
.yystates
= yynewStates
;
1383 yystack
->yytops
.yystates
[yystack
->yytops
.yysize
]
1384 = yystack
->yytops
.yystates
[yyk
];
1385 yystack
->yytops
.yysize
+= 1;
1386 return yystack
->yytops
.yysize
-1;
1389 /** True iff Y0 and Y1 represent identical options at the top level.
1390 * That is, they represent the same rule applied to RHS symbols
1391 * that produce the same terminal symbols. */
1393 yyidenticalOptions (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
)
1395 if (yyy0
->yyrule
== yyy1
->yyrule
)
1397 yyGLRState
*yys0
, *yys1
;
1399 for (yys0
= yyy0
->yystate
, yys1
= yyy1
->yystate
,
1400 yyn
= yyrhsLength (yyy0
->yyrule
);
1402 yys0
= yys0
->yypred
, yys1
= yys1
->yypred
, yyn
-= 1)
1403 if (yys0
->yyposn
!= yys1
->yyposn
)
1411 /** Assuming identicalOptions (Y0,Y1), destructively merge the
1412 * alternative semantic values for the RHS-symbols of Y1 and Y0. */
1414 yymergeOptionSets (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
)
1416 yyGLRState
*yys0
, *yys1
;
1418 for (yys0
= yyy0
->yystate
, yys1
= yyy1
->yystate
,
1419 yyn
= yyrhsLength (yyy0
->yyrule
);
1421 yys0
= yys0
->yypred
, yys1
= yys1
->yypred
, yyn
-= 1)
1425 else if (yys0
->yyresolved
)
1427 yys1
->yyresolved
= yytrue
;
1428 yys1
->yysemantics
.yysval
= yys0
->yysemantics
.yysval
;
1430 else if (yys1
->yyresolved
)
1432 yys0
->yyresolved
= yytrue
;
1433 yys0
->yysemantics
.yysval
= yys1
->yysemantics
.yysval
;
1437 yySemanticOption
** yyz0p
;
1438 yySemanticOption
* yyz1
;
1439 yyz0p
= &yys0
->yysemantics
.yyfirstVal
;
1440 yyz1
= yys1
->yysemantics
.yyfirstVal
;
1443 if (yyz1
== *yyz0p
|| yyz1
== NULL
)
1445 else if (*yyz0p
== NULL
)
1450 else if (*yyz0p
< yyz1
)
1452 yySemanticOption
* yyz
= *yyz0p
;
1454 yyz1
= yyz1
->yynext
;
1455 (*yyz0p
)->yynext
= yyz
;
1457 yyz0p
= &(*yyz0p
)->yynext
;
1459 yys1
->yysemantics
.yyfirstVal
= yys0
->yysemantics
.yyfirstVal
;
1464 /** Y0 and Y1 represent two possible actions to take in a given
1465 * parsing state; return 0 if no combination is possible,
1466 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
1468 yypreference (yySemanticOption
* y0
, yySemanticOption
* y1
)
1470 yyRuleNum r0
= y0
->yyrule
, r1
= y1
->yyrule
;
1471 int p0
= yydprec
[r0
], p1
= yydprec
[r1
];
1475 if (yymerger
[r0
] == 0 || yymerger
[r0
] != yymerger
[r1
])
1480 if (p0
== 0 || p1
== 0)
1489 static YYRESULTTAG
yyresolveValue (yySemanticOption
* yyoptionList
,
1490 yyGLRStack
* yystack
, YYSTYPE
* yyvalp
,
1491 YYLTYPE
* yylocp
]b4_user_formals
[);
1494 yyresolveStates (yyGLRState
* yys
, int yyn
, yyGLRStack
* yystack
]b4_user_formals
[)
1499 YYASSERT (yys
->yypred
);
1500 yyflag
= yyresolveStates (yys
->yypred
, yyn
-1, yystack
]b4_user_args
[);
1503 if (! yys
->yyresolved
)
1505 yyflag
= yyresolveValue (yys
->yysemantics
.yyfirstVal
, yystack
,
1506 &yys
->yysemantics
.yysval
, &yys
->yyloc
1510 yys
->yyresolved
= yytrue
;
1517 yyresolveAction (yySemanticOption
* yyopt
, yyGLRStack
* yystack
,
1518 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1520 yyGLRStackItem yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
+ 1];
1523 yynrhs
= yyrhsLength (yyopt
->yyrule
);
1524 YYCHK (yyresolveStates (yyopt
->yystate
, yynrhs
, yystack
]b4_user_args
[));
1525 yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
].yystate
.yypred
= yyopt
->yystate
;
1526 return yyuserAction (yyopt
->yyrule
, yynrhs
,
1527 yyrhsVals
+ YYMAXRHS
+ YYMAXLEFT
- 1,
1528 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1533 yyreportTree (yySemanticOption
* yyx
, int yyindent
)
1535 int yynrhs
= yyrhsLength (yyx
->yyrule
);
1538 yyGLRState
* yystates
[YYMAXRHS
];
1539 yyGLRState yyleftmost_state
;
1541 for (yyi
= yynrhs
, yys
= yyx
->yystate
; 0 < yyi
; yyi
-= 1, yys
= yys
->yypred
)
1542 yystates
[yyi
] = yys
;
1545 yyleftmost_state
.yyposn
= 0;
1546 yystates
[0] = &yyleftmost_state
;
1551 if (yyx
->yystate
->yyposn
< yys
->yyposn
+ 1)
1552 YYFPRINTF (stderr
, "%*s%s -> <Rule %d, empty>\n",
1553 yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)),
1556 YYFPRINTF (stderr
, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
1557 yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)),
1558 yyx
->yyrule
, (unsigned long int) (yys
->yyposn
+ 1),
1559 (unsigned long int) yyx
->yystate
->yyposn
);
1560 for (yyi
= 1; yyi
<= yynrhs
; yyi
+= 1)
1562 if (yystates
[yyi
]->yyresolved
)
1564 if (yystates
[yyi
-1]->yyposn
+1 > yystates
[yyi
]->yyposn
)
1565 YYFPRINTF (stderr
, "%*s%s <empty>\n", yyindent
+2, "",
1566 yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]));
1568 YYFPRINTF (stderr
, "%*s%s <tokens %lu .. %lu>\n", yyindent
+2, "",
1569 yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]),
1570 (unsigned long int) (yystates
[yyi
- 1]->yyposn
+ 1),
1571 (unsigned long int) yystates
[yyi
]->yyposn
);
1574 yyreportTree (yystates
[yyi
]->yysemantics
.yyfirstVal
, yyindent
+2);
1579 static void yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
,
1580 yyGLRStack
* yystack
]b4_pure_formals
[)
1581 __attribute__ ((__noreturn__
));
1583 yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
,
1584 yyGLRStack
* yystack
]b4_pure_formals
[)
1586 /* `Unused' warnings. */
1591 YYFPRINTF (stderr
, "Ambiguity detected.\n");
1592 YYFPRINTF (stderr
, "Option 1,\n");
1593 yyreportTree (yyx0
, 2);
1594 YYFPRINTF (stderr
, "\nOption 2,\n");
1595 yyreportTree (yyx1
, 2);
1596 YYFPRINTF (stderr
, "\n");
1598 yyFail (yystack
][]b4_pure_args
[, YY_("syntax is ambiguous"));
1602 /** Resolve the ambiguity represented by OPTIONLIST, perform the indicated
1603 * actions, and return the result. */
1605 yyresolveValue (yySemanticOption
* yyoptionList
, yyGLRStack
* yystack
,
1606 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1608 yySemanticOption
* yybest
;
1609 yySemanticOption
* yyp
;
1612 yybest
= yyoptionList
;
1614 for (yyp
= yyoptionList
->yynext
; yyp
!= NULL
; yyp
= yyp
->yynext
)
1616 if (yyidenticalOptions (yybest
, yyp
))
1617 yymergeOptionSets (yybest
, yyp
);
1619 switch (yypreference (yybest
, yyp
))
1622 yyreportAmbiguity (yybest
, yyp
, yystack
]b4_pure_args
[);
1638 int yyprec
= yydprec
[yybest
->yyrule
];
1639 YYCHK (yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[));
1640 for (yyp
= yybest
->yynext
; yyp
!= NULL
; yyp
= yyp
->yynext
)
1642 if (yyprec
== yydprec
[yyp
->yyrule
])
1646 YYCHK (yyresolveAction (yyp
, yystack
, &yyval1
, &yydummy
]b4_user_args
[));
1647 yyuserMerge (yymerger
[yyp
->yyrule
], yyvalp
, &yyval1
);
1653 return yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[);
1657 yyresolveStack (yyGLRStack
* yystack
]b4_user_formals
[)
1659 if (yystack
->yysplitPoint
!= NULL
)
1664 for (yyn
= 0, yys
= yystack
->yytops
.yystates
[0];
1665 yys
!= yystack
->yysplitPoint
;
1666 yys
= yys
->yypred
, yyn
+= 1)
1668 YYCHK (yyresolveStates (yystack
->yytops
.yystates
[0], yyn
, yystack
1675 yycompressStack (yyGLRStack
* yystack
)
1677 yyGLRState
* yyp
, *yyq
, *yyr
;
1679 if (yystack
->yytops
.yysize
!= 1 || yystack
->yysplitPoint
== NULL
)
1682 for (yyp
= yystack
->yytops
.yystates
[0], yyq
= yyp
->yypred
, yyr
= NULL
;
1683 yyp
!= yystack
->yysplitPoint
;
1684 yyr
= yyp
, yyp
= yyq
, yyq
= yyp
->yypred
)
1687 yystack
->yyspaceLeft
+= yystack
->yynextFree
- yystack
->yyitems
;
1688 yystack
->yynextFree
= ((yyGLRStackItem
*) yystack
->yysplitPoint
) + 1;
1689 yystack
->yyspaceLeft
-= yystack
->yynextFree
- yystack
->yyitems
;
1690 yystack
->yysplitPoint
= NULL
;
1691 yystack
->yylastDeleted
= NULL
;
1695 yystack
->yynextFree
->yystate
= *yyr
;
1697 yystack
->yynextFree
->yystate
.yypred
= & yystack
->yynextFree
[-1].yystate
;
1698 yystack
->yytops
.yystates
[0] = &yystack
->yynextFree
->yystate
;
1699 yystack
->yynextFree
+= 1;
1700 yystack
->yyspaceLeft
-= 1;
1705 yyprocessOneStack (yyGLRStack
* yystack
, size_t yyk
,
1706 size_t yyposn
, YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
1710 const short int* yyconflicts
;
1712 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1714 while (yystack
->yytops
.yystates
[yyk
] != NULL
)
1716 yyStateNum yystate
= yystack
->yytops
.yystates
[yyk
]->yylrState
;
1717 YYDPRINTF ((stderr
, "Stack %lu Entering state %d\n",
1718 (unsigned long int) yyk
, yystate
));
1720 YYASSERT (yystate
!= YYFINAL
);
1722 if (yyisDefaultedState (yystate
))
1724 yyrule
= yydefaultAction (yystate
);
1727 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1728 (unsigned long int) yyk
));
1729 yymarkStackDeleted (yystack
, yyk
);
1732 YYCHK (yyglrReduce (yystack
, yyk
, yyrule
, yyfalse
]b4_user_args
[));
1736 if (*yytokenp
== YYEMPTY
)
1738 YYDPRINTF ((stderr
, "Reading a token: "));
1740 *yytokenp
= YYTRANSLATE (yychar
);
1741 YY_SYMBOL_PRINT ("Next token is", *yytokenp
, yylvalp
, yyllocp
);
1742 YYDPRINTF ((stderr
, "\n"));
1744 yygetLRActions (yystate
, *yytokenp
, &yyaction
, &yyconflicts
);
1746 while (*yyconflicts
!= 0)
1748 size_t yynewStack
= yysplitStack (yystack
, yyk
);
1749 YYDPRINTF ((stderr
, "Splitting off stack %lu from %lu.\n",
1750 (unsigned long int) yynewStack
,
1751 (unsigned long int) yyk
));
1752 YYCHK (yyglrReduce (yystack
, yynewStack
,
1753 *yyconflicts
, yyfalse
]b4_user_args
[));
1754 YYCHK (yyprocessOneStack (yystack
, yynewStack
, yyposn
,
1755 yylvalp
, yyllocp
]b4_pure_args
[));
1759 if (yyisShiftAction (yyaction
))
1761 YYDPRINTF ((stderr
, "On stack %lu, ", (unsigned long int) yyk
));
1762 YY_SYMBOL_PRINT ("shifting", *yytokenp
, yylvalp
, yyllocp
);
1763 yyglrShift (yystack
, yyk
, yyaction
, yyposn
+1,
1765 YYDPRINTF ((stderr
, ", now in state #%d\n",
1766 yystack
->yytops
.yystates
[yyk
]->yylrState
));
1769 else if (yyisErrorAction (yyaction
))
1771 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1772 (unsigned long int) yyk
));
1773 yymarkStackDeleted (yystack
, yyk
);
1777 YYCHK (yyglrReduce (yystack
, yyk
, -yyaction
, yyfalse
]b4_user_args
[));
1784 yyreportSyntaxError (yyGLRStack
* yystack
,
1785 YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
]b4_user_formals
[)
1787 /* `Unused' warnings. */
1791 if (yystack
->yyerrState
== 0)
1794 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1796 yyn
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
];
1797 if (YYPACT_NINF
< yyn
&& yyn
< YYLAST
)
1799 size_t yysize0
= yytnamerr (NULL
, yytokenName (*yytokenp
));
1800 size_t yysize
= yysize0
;
1802 yybool yysize_overflow
= yyfalse
;
1804 enum { YYERROR_VERBOSE_ARGS_MAXIMUM
= 5 };
1805 char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
];
1809 static char const yyunexpected
[] = "syntax error, unexpected %s";
1810 static char const yyexpecting
[] = ", expecting %s";
1811 static char const yyor
[] = " or %s";
1812 char yyformat
[sizeof yyunexpected
1813 + sizeof yyexpecting
- 1
1814 + ((YYERROR_VERBOSE_ARGS_MAXIMUM
- 2)
1815 * (sizeof yyor
- 1))];
1816 char const *yyprefix
= yyexpecting
;
1818 /* Start YYX at -YYN if negative to avoid negative indexes in
1820 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
1822 /* Stay within bounds of both yycheck and yytname. */
1823 int yychecklim
= YYLAST
- yyn
;
1824 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
1827 yyarg
[0] = yytokenName (*yytokenp
);
1828 yyfmt
= yystpcpy (yyformat
, yyunexpected
);
1830 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1831 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1833 if (yycount
== YYERROR_VERBOSE_ARGS_MAXIMUM
)
1837 yyformat
[sizeof yyunexpected
- 1] = '\0';
1840 yyarg
[yycount
++] = yytokenName (yyx
);
1841 yysize1
= yysize
+ yytnamerr (NULL
, yytokenName (yyx
));
1842 yysize_overflow
|= yysize1
< yysize
;
1844 yyfmt
= yystpcpy (yyfmt
, yyprefix
);
1848 yyf
= YY_(yyformat
);
1849 yysize1
= yysize
+ strlen (yyf
);
1850 yysize_overflow
|= yysize1
< yysize
;
1853 if (!yysize_overflow
)
1854 yymsg
= (char *) YYMALLOC (yysize
);
1860 while ((*yyp
= *yyf
))
1862 if (*yyp
== '%' && yyf
[1] == 's' && yyi
< yycount
)
1864 yyp
+= yytnamerr (yyp
, yyarg
[yyi
++]);
1873 yyerror (]b4_lyyerror_args
[yymsg
);
1878 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
1879 yyMemoryExhausted (yystack
);
1883 #endif /* YYERROR_VERBOSE */
1884 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
1889 /* Recover from a syntax error on YYSTACK, assuming that YYTOKENP,
1890 YYLVALP, and YYLLOCP point to the syntactic category, semantic
1891 value, and location of the look-ahead. */
1893 yyrecoverSyntaxError (yyGLRStack
* yystack
,
1895 YYLTYPE
* YYOPTIONAL_LOC (yyllocp
)
1898 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1902 if (yystack
->yyerrState
== 3)
1903 /* We just shifted the error token and (perhaps) took some
1904 reductions. Skip tokens until we can proceed. */
1907 if (*yytokenp
== YYEOF
)
1908 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1909 if (*yytokenp
!= YYEMPTY
)
1911 /* We throw away the lookahead, but the error range
1912 of the shifted error token must take it into account. */
1913 yyGLRState
*yys
= yystack
->yytops
.yystates
[0];
1914 yyGLRStackItem yyerror_range
[3];
1915 yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;
1916 yyerror_range
[2].yystate
.yyloc
= *yyllocp
;
1917 YYLLOC_DEFAULT (yys
->yyloc
, yyerror_range
, 2);]])[
1918 yydestruct ("Error: discarding",
1919 *yytokenp
, yylvalp
]b4_location_if([, yyllocp
])[);
1921 YYDPRINTF ((stderr
, "Reading a token: "));
1923 *yytokenp
= YYTRANSLATE (yychar
);
1924 YY_SYMBOL_PRINT ("Next token is", *yytokenp
, yylvalp
, yyllocp
);
1925 YYDPRINTF ((stderr
, "\n"));
1926 yyj
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
];
1927 if (yyis_pact_ninf (yyj
))
1930 if (yyj
< 0 || YYLAST
< yyj
|| yycheck
[yyj
] != *yytokenp
)
1932 if (yydefact
[yystack
->yytops
.yystates
[0]->yylrState
] != 0)
1935 else if (yytable
[yyj
] != 0 && ! yyis_table_ninf (yytable
[yyj
]))
1939 /* Reduce to one stack. */
1940 for (yyk
= 0; yyk
< yystack
->yytops
.yysize
; yyk
+= 1)
1941 if (yystack
->yytops
.yystates
[yyk
] != NULL
)
1943 if (yyk
>= yystack
->yytops
.yysize
)
1944 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1945 for (yyk
+= 1; yyk
< yystack
->yytops
.yysize
; yyk
+= 1)
1946 yymarkStackDeleted (yystack
, yyk
);
1947 yyremoveDeletes (yystack
);
1948 yycompressStack (yystack
);
1950 /* Now pop stack until we find a state that shifts the error token. */
1951 yystack
->yyerrState
= 3;
1952 while (yystack
->yytops
.yystates
[0] != NULL
)
1954 yyGLRState
*yys
= yystack
->yytops
.yystates
[0];
1955 yyj
= yypact
[yys
->yylrState
];
1956 if (! yyis_pact_ninf (yyj
))
1959 if (0 <= yyj
&& yyj
<= YYLAST
&& yycheck
[yyj
] == YYTERROR
1960 && yyisShiftAction (yytable
[yyj
]))
1962 /* Shift the error token having adjusted its location. */
1963 YYLTYPE yyerrloc
;]b4_location_if([[
1964 yystack
->yyerror_range
[2].yystate
.yyloc
= *yyllocp
;
1965 YYLLOC_DEFAULT (yyerrloc
, yystack
->yyerror_range
, 2);]])[
1966 YY_SYMBOL_PRINT ("Shifting", yystos
[yytable
[yyj
]],
1967 yylvalp
, &yyerrloc
);
1968 YYDPRINTF ((stderr
, "\n"));
1969 yyglrShift (yystack
, 0, yytable
[yyj
],
1970 yys
->yyposn
, *yylvalp
, &yyerrloc
);
1971 yys
= yystack
->yytops
.yystates
[0];
1975 ]b4_location_if([[ yystack
->yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]])[
1976 yydestruct ("Error: popping",
1977 yystos
[yys
->yylrState
],
1978 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[);
1979 yystack
->yytops
.yystates
[0] = yys
->yypred
;
1980 yystack
->yynextFree
-= 1;
1981 yystack
->yyspaceLeft
+= 1;
1983 if (yystack
->yytops
.yystates
[0] == NULL
)
1984 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1987 #define YYCHK1(YYE) \
1997 goto yyuser_error; \
2006 ]b4_c_ansi_function_def([yyparse
], [int], b4_parse_param
)[
2017 #define yychar (yystack.yyrawchar)
2020 YYSTYPE
* const yylvalp
= &yylval
;
2021 YYLTYPE
* const yyllocp
= &yylloc
;
2023 YYDPRINTF ((stderr
, "Starting parse\n"));
2026 yylval
= yyval_default
;
2028 #if YYLTYPE_IS_TRIVIAL
2029 yylloc
.first_line
= yylloc
.last_line
= 1;
2030 yylloc
.first_column
= yylloc
.last_column
= 0;
2033 m4_ifdef([b4_initial_action
], [
2034 m4_pushdef([b4_at_dollar
], [yylloc
])dnl
2035 m4_pushdef([b4_dollar_dollar
], [yylval
])dnl
2036 /* User initialization code. */
2038 m4_popdef([b4_dollar_dollar
])dnl
2039 m4_popdef([b4_at_dollar
])dnl
2040 /* Line __line__ of glr.c. */
2041 b4_syncline([@oline@
], [@ofile@
])])dnl
2043 if (! yyinitGLRStack (&yystack
, YYINITDEPTH
))
2044 goto yyexhaustedlab
;
2045 switch (setjmp (yystack
.yyexception_buffer
))
2047 case 1: goto yyabortlab
;
2048 case 2: goto yyexhaustedlab
;
2050 yystack
.yytokenp
= &yytoken
;
2051 yyglrShift (&yystack
, 0, 0, 0, yylval
, &yylloc
);
2056 /* For efficiency, we have two loops, the first of which is
2057 specialized to deterministic operation (single stack, no
2058 potential ambiguity). */
2064 const short int* yyconflicts
;
2066 yyStateNum yystate
= yystack
.yytops
.yystates
[0]->yylrState
;
2067 YYDPRINTF ((stderr
, "Entering state %d\n", yystate
));
2068 if (yystate
== YYFINAL
)
2070 if (yyisDefaultedState (yystate
))
2072 yyrule
= yydefaultAction (yystate
);
2075 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2076 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2079 YYCHK1 (yyglrReduce (&yystack
, 0, yyrule
, yytrue
]b4_user_args
[));
2083 if (yytoken
== YYEMPTY
)
2085 YYDPRINTF ((stderr
, "Reading a token: "));
2087 yytoken
= YYTRANSLATE (yychar
);
2088 YY_SYMBOL_PRINT ("Next token is", yytoken
, yylvalp
, yyllocp
);
2089 YYDPRINTF ((stderr
, "\n"));
2091 yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
);
2092 if (*yyconflicts
!= 0)
2094 if (yyisShiftAction (yyaction
))
2096 YY_SYMBOL_PRINT ("Shifting", yytoken
, yylvalp
, yyllocp
);
2097 YYDPRINTF ((stderr
, "\n"));
2098 if (yytoken
!= YYEOF
)
2101 yyglrShift (&yystack
, 0, yyaction
, yyposn
, yylval
, yyllocp
);
2102 if (0 < yystack
.yyerrState
)
2103 yystack
.yyerrState
-= 1;
2105 else if (yyisErrorAction (yyaction
))
2107 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2108 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2112 YYCHK1 (yyglrReduce (&yystack
, 0, -yyaction
, yytrue
]b4_user_args
[));
2119 size_t yyn
= yystack
.yytops
.yysize
;
2120 for (yys
= 0; yys
< yyn
; yys
+= 1)
2121 YYCHK1 (yyprocessOneStack (&yystack
, yys
, yyposn
,
2122 yylvalp
, yyllocp
]b4_lpure_args
[));
2125 yyremoveDeletes (&yystack
);
2126 if (yystack
.yytops
.yysize
== 0)
2128 yyundeleteLastStack (&yystack
);
2129 if (yystack
.yytops
.yysize
== 0)
2130 yyFail (&yystack
][]b4_lpure_args
[, YY_("syntax error"));
2131 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2132 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2133 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2134 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2137 else if (yystack
.yytops
.yysize
== 1)
2139 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2140 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2141 yycompressStack (&yystack
);
2147 yyrecoverSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2148 yyposn
= yystack
.yytops
.yystates
[0]->yyposn
;
2160 yyerror (]b4_lyyerror_args
[YY_("memory exhausted"));
2165 if (yytoken
!= YYEOF
&& yytoken
!= YYEMPTY
)
2166 yydestruct ("Error: discarding lookahead",
2167 yytoken
, yylvalp
]b4_location_if([, yyllocp
])[);
2169 /* If the stack is well-formed, pop the stack until it is empty,
2170 destroying its entries as we go. But free the stack regardless
2171 of whether it is well-formed. */
2172 if (yystack
.yyitems
)
2174 yyGLRState
** yystates
= yystack
.yytops
.yystates
;
2178 yyGLRState
*yys
= yystates
[0];
2179 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]]
2180 )[ yydestruct ("Error: popping",
2181 yystos
[yys
->yylrState
],
2182 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[);
2183 yystates
[0] = yys
->yypred
;
2184 yystack
.yynextFree
-= 1;
2185 yystack
.yyspaceLeft
+= 1;
2187 yyfreeGLRStack (&yystack
);
2193 /* DEBUGGING ONLY */
2195 static void yypstack (yyGLRStack
* yystack
, size_t yyk
)
2196 __attribute__ ((__unused__
));
2197 static void yypdumpstack (yyGLRStack
* yystack
) __attribute__ ((__unused__
));
2200 yy_yypstack (yyGLRState
* yys
)
2204 yy_yypstack (yys
->yypred
);
2205 fprintf (stderr
, " -> ");
2207 fprintf (stderr
, "%d@@%lu", yys
->yylrState
, (unsigned long int) yys
->yyposn
);
2211 yypstates (yyGLRState
* yyst
)
2214 fprintf (stderr
, "<null>");
2217 fprintf (stderr
, "\n");
2221 yypstack (yyGLRStack
* yystack
, size_t yyk
)
2223 yypstates (yystack
->yytops
.yystates
[yyk
]);
2226 #define YYINDEX(YYX) \
2227 ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystack->yyitems)
2231 yypdumpstack (yyGLRStack
* yystack
)
2233 yyGLRStackItem
* yyp
;
2235 for (yyp
= yystack
->yyitems
; yyp
< yystack
->yynextFree
; yyp
+= 1)
2237 fprintf (stderr
, "%3lu. ", (unsigned long int) (yyp
- yystack
->yyitems
));
2238 if (*(yybool
*) yyp
)
2240 fprintf (stderr
, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
2241 yyp
->yystate
.yyresolved
, yyp
->yystate
.yylrState
,
2242 (unsigned long int) yyp
->yystate
.yyposn
,
2243 (long int) YYINDEX (yyp
->yystate
.yypred
));
2244 if (! yyp
->yystate
.yyresolved
)
2245 fprintf (stderr
, ", firstVal: %ld",
2246 (long int) YYINDEX (yyp
->yystate
.yysemantics
.yyfirstVal
));
2250 fprintf (stderr
, "Option. rule: %d, state: %ld, next: %ld",
2251 yyp
->yyoption
.yyrule
,
2252 (long int) YYINDEX (yyp
->yyoption
.yystate
),
2253 (long int) YYINDEX (yyp
->yyoption
.yynext
));
2255 fprintf (stderr
, "\n");
2257 fprintf (stderr
, "Tops:");
2258 for (yyi
= 0; yyi
< yystack
->yytops
.yysize
; yyi
+= 1)
2259 fprintf (stderr
, "%lu: %ld; ", (unsigned long int) yyi
,
2260 (long int) YYINDEX (yystack
->yytops
.yystates
[yyi
]));
2261 fprintf (stderr
, "\n");
2267 m4_if(b4_defines_flag
, 0, [],
2268 [@output @output_header_name@
2269 b4_copyright([Skeleton parser
for GLR parsing with Bison
],
2270 [2002, 2003, 2004, 2005])
2272 b4_token_defines(b4_tokens
)
2274 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
2275 m4_ifdef([b4_stype
],
2276 [b4_syncline([b4_stype_line
], [b4_filename
])
2277 typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE
])b4_stype YYSTYPE
;
2278 /* Line __line__ of glr.c. */
2279 b4_syncline([@oline@
], [@ofile@
])],
2280 [typedef int YYSTYPE
;])
2281 # define YYSTYPE_IS_DECLARED 1
2282 # define YYSTYPE_IS_TRIVIAL 1
2286 [extern YYSTYPE b4_prefix
[]lval
;])
2288 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
2289 typedef struct YYLTYPE
2300 # define YYLTYPE_IS_DECLARED 1
2301 # define YYLTYPE_IS_TRIVIAL 1
2304 b4_location_if([b4_pure_if([],
2305 [extern YYLTYPE b4_prefix
[]lloc
;])