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
** yypp
;
1612 yybest
= yyoptionList
;
1614 for (yypp
= &yyoptionList
->yynext
; *yypp
!= NULL
; )
1616 yySemanticOption
* yyp
= *yypp
;
1618 if (yyidenticalOptions (yybest
, yyp
))
1620 yymergeOptionSets (yybest
, yyp
);
1621 *yypp
= yyp
->yynext
;
1625 switch (yypreference (yybest
, yyp
))
1628 yyreportAmbiguity (yybest
, yyp
, yystack
]b4_pure_args
[);
1640 yypp
= &yyp
->yynext
;
1646 yySemanticOption
* yyp
;
1647 int yyprec
= yydprec
[yybest
->yyrule
];
1648 YYCHK (yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[));
1649 for (yyp
= yybest
->yynext
; yyp
!= NULL
; yyp
= yyp
->yynext
)
1651 if (yyprec
== yydprec
[yyp
->yyrule
])
1655 YYCHK (yyresolveAction (yyp
, yystack
, &yyval1
, &yydummy
]b4_user_args
[));
1656 yyuserMerge (yymerger
[yyp
->yyrule
], yyvalp
, &yyval1
);
1662 return yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[);
1666 yyresolveStack (yyGLRStack
* yystack
]b4_user_formals
[)
1668 if (yystack
->yysplitPoint
!= NULL
)
1673 for (yyn
= 0, yys
= yystack
->yytops
.yystates
[0];
1674 yys
!= yystack
->yysplitPoint
;
1675 yys
= yys
->yypred
, yyn
+= 1)
1677 YYCHK (yyresolveStates (yystack
->yytops
.yystates
[0], yyn
, yystack
1684 yycompressStack (yyGLRStack
* yystack
)
1686 yyGLRState
* yyp
, *yyq
, *yyr
;
1688 if (yystack
->yytops
.yysize
!= 1 || yystack
->yysplitPoint
== NULL
)
1691 for (yyp
= yystack
->yytops
.yystates
[0], yyq
= yyp
->yypred
, yyr
= NULL
;
1692 yyp
!= yystack
->yysplitPoint
;
1693 yyr
= yyp
, yyp
= yyq
, yyq
= yyp
->yypred
)
1696 yystack
->yyspaceLeft
+= yystack
->yynextFree
- yystack
->yyitems
;
1697 yystack
->yynextFree
= ((yyGLRStackItem
*) yystack
->yysplitPoint
) + 1;
1698 yystack
->yyspaceLeft
-= yystack
->yynextFree
- yystack
->yyitems
;
1699 yystack
->yysplitPoint
= NULL
;
1700 yystack
->yylastDeleted
= NULL
;
1704 yystack
->yynextFree
->yystate
= *yyr
;
1706 yystack
->yynextFree
->yystate
.yypred
= & yystack
->yynextFree
[-1].yystate
;
1707 yystack
->yytops
.yystates
[0] = &yystack
->yynextFree
->yystate
;
1708 yystack
->yynextFree
+= 1;
1709 yystack
->yyspaceLeft
-= 1;
1714 yyprocessOneStack (yyGLRStack
* yystack
, size_t yyk
,
1715 size_t yyposn
, YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
1719 const short int* yyconflicts
;
1721 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1723 while (yystack
->yytops
.yystates
[yyk
] != NULL
)
1725 yyStateNum yystate
= yystack
->yytops
.yystates
[yyk
]->yylrState
;
1726 YYDPRINTF ((stderr
, "Stack %lu Entering state %d\n",
1727 (unsigned long int) yyk
, yystate
));
1729 YYASSERT (yystate
!= YYFINAL
);
1731 if (yyisDefaultedState (yystate
))
1733 yyrule
= yydefaultAction (yystate
);
1736 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1737 (unsigned long int) yyk
));
1738 yymarkStackDeleted (yystack
, yyk
);
1741 YYCHK (yyglrReduce (yystack
, yyk
, yyrule
, yyfalse
]b4_user_args
[));
1745 if (*yytokenp
== YYEMPTY
)
1747 YYDPRINTF ((stderr
, "Reading a token: "));
1749 *yytokenp
= YYTRANSLATE (yychar
);
1750 YY_SYMBOL_PRINT ("Next token is", *yytokenp
, yylvalp
, yyllocp
);
1751 YYDPRINTF ((stderr
, "\n"));
1753 yygetLRActions (yystate
, *yytokenp
, &yyaction
, &yyconflicts
);
1755 while (*yyconflicts
!= 0)
1757 size_t yynewStack
= yysplitStack (yystack
, yyk
);
1758 YYDPRINTF ((stderr
, "Splitting off stack %lu from %lu.\n",
1759 (unsigned long int) yynewStack
,
1760 (unsigned long int) yyk
));
1761 YYCHK (yyglrReduce (yystack
, yynewStack
,
1762 *yyconflicts
, yyfalse
]b4_user_args
[));
1763 YYCHK (yyprocessOneStack (yystack
, yynewStack
, yyposn
,
1764 yylvalp
, yyllocp
]b4_pure_args
[));
1768 if (yyisShiftAction (yyaction
))
1770 YYDPRINTF ((stderr
, "On stack %lu, ", (unsigned long int) yyk
));
1771 YY_SYMBOL_PRINT ("shifting", *yytokenp
, yylvalp
, yyllocp
);
1772 yyglrShift (yystack
, yyk
, yyaction
, yyposn
+1,
1774 YYDPRINTF ((stderr
, ", now in state #%d\n",
1775 yystack
->yytops
.yystates
[yyk
]->yylrState
));
1778 else if (yyisErrorAction (yyaction
))
1780 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1781 (unsigned long int) yyk
));
1782 yymarkStackDeleted (yystack
, yyk
);
1786 YYCHK (yyglrReduce (yystack
, yyk
, -yyaction
, yyfalse
]b4_user_args
[));
1793 yyreportSyntaxError (yyGLRStack
* yystack
,
1794 YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
]b4_user_formals
[)
1796 /* `Unused' warnings. */
1800 if (yystack
->yyerrState
== 0)
1803 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1805 yyn
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
];
1806 if (YYPACT_NINF
< yyn
&& yyn
< YYLAST
)
1808 size_t yysize0
= yytnamerr (NULL
, yytokenName (*yytokenp
));
1809 size_t yysize
= yysize0
;
1811 yybool yysize_overflow
= yyfalse
;
1813 enum { YYERROR_VERBOSE_ARGS_MAXIMUM
= 5 };
1814 char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
];
1818 static char const yyunexpected
[] = "syntax error, unexpected %s";
1819 static char const yyexpecting
[] = ", expecting %s";
1820 static char const yyor
[] = " or %s";
1821 char yyformat
[sizeof yyunexpected
1822 + sizeof yyexpecting
- 1
1823 + ((YYERROR_VERBOSE_ARGS_MAXIMUM
- 2)
1824 * (sizeof yyor
- 1))];
1825 char const *yyprefix
= yyexpecting
;
1827 /* Start YYX at -YYN if negative to avoid negative indexes in
1829 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
1831 /* Stay within bounds of both yycheck and yytname. */
1832 int yychecklim
= YYLAST
- yyn
;
1833 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
1836 yyarg
[0] = yytokenName (*yytokenp
);
1837 yyfmt
= yystpcpy (yyformat
, yyunexpected
);
1839 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1840 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1842 if (yycount
== YYERROR_VERBOSE_ARGS_MAXIMUM
)
1846 yyformat
[sizeof yyunexpected
- 1] = '\0';
1849 yyarg
[yycount
++] = yytokenName (yyx
);
1850 yysize1
= yysize
+ yytnamerr (NULL
, yytokenName (yyx
));
1851 yysize_overflow
|= yysize1
< yysize
;
1853 yyfmt
= yystpcpy (yyfmt
, yyprefix
);
1857 yyf
= YY_(yyformat
);
1858 yysize1
= yysize
+ strlen (yyf
);
1859 yysize_overflow
|= yysize1
< yysize
;
1862 if (!yysize_overflow
)
1863 yymsg
= (char *) YYMALLOC (yysize
);
1869 while ((*yyp
= *yyf
))
1871 if (*yyp
== '%' && yyf
[1] == 's' && yyi
< yycount
)
1873 yyp
+= yytnamerr (yyp
, yyarg
[yyi
++]);
1882 yyerror (]b4_lyyerror_args
[yymsg
);
1887 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
1888 yyMemoryExhausted (yystack
);
1892 #endif /* YYERROR_VERBOSE */
1893 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
1898 /* Recover from a syntax error on YYSTACK, assuming that YYTOKENP,
1899 YYLVALP, and YYLLOCP point to the syntactic category, semantic
1900 value, and location of the look-ahead. */
1902 yyrecoverSyntaxError (yyGLRStack
* yystack
,
1904 YYLTYPE
* YYOPTIONAL_LOC (yyllocp
)
1907 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1911 if (yystack
->yyerrState
== 3)
1912 /* We just shifted the error token and (perhaps) took some
1913 reductions. Skip tokens until we can proceed. */
1916 if (*yytokenp
== YYEOF
)
1917 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1918 if (*yytokenp
!= YYEMPTY
)
1920 /* We throw away the lookahead, but the error range
1921 of the shifted error token must take it into account. */
1922 yyGLRState
*yys
= yystack
->yytops
.yystates
[0];
1923 yyGLRStackItem yyerror_range
[3];
1924 yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;
1925 yyerror_range
[2].yystate
.yyloc
= *yyllocp
;
1926 YYLLOC_DEFAULT (yys
->yyloc
, yyerror_range
, 2);]])[
1927 yydestruct ("Error: discarding",
1928 *yytokenp
, yylvalp
]b4_location_if([, yyllocp
])[);
1930 YYDPRINTF ((stderr
, "Reading a token: "));
1932 *yytokenp
= YYTRANSLATE (yychar
);
1933 YY_SYMBOL_PRINT ("Next token is", *yytokenp
, yylvalp
, yyllocp
);
1934 YYDPRINTF ((stderr
, "\n"));
1935 yyj
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
];
1936 if (yyis_pact_ninf (yyj
))
1939 if (yyj
< 0 || YYLAST
< yyj
|| yycheck
[yyj
] != *yytokenp
)
1941 if (yydefact
[yystack
->yytops
.yystates
[0]->yylrState
] != 0)
1944 else if (yytable
[yyj
] != 0 && ! yyis_table_ninf (yytable
[yyj
]))
1948 /* Reduce to one stack. */
1949 for (yyk
= 0; yyk
< yystack
->yytops
.yysize
; yyk
+= 1)
1950 if (yystack
->yytops
.yystates
[yyk
] != NULL
)
1952 if (yyk
>= yystack
->yytops
.yysize
)
1953 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1954 for (yyk
+= 1; yyk
< yystack
->yytops
.yysize
; yyk
+= 1)
1955 yymarkStackDeleted (yystack
, yyk
);
1956 yyremoveDeletes (yystack
);
1957 yycompressStack (yystack
);
1959 /* Now pop stack until we find a state that shifts the error token. */
1960 yystack
->yyerrState
= 3;
1961 while (yystack
->yytops
.yystates
[0] != NULL
)
1963 yyGLRState
*yys
= yystack
->yytops
.yystates
[0];
1964 yyj
= yypact
[yys
->yylrState
];
1965 if (! yyis_pact_ninf (yyj
))
1968 if (0 <= yyj
&& yyj
<= YYLAST
&& yycheck
[yyj
] == YYTERROR
1969 && yyisShiftAction (yytable
[yyj
]))
1971 /* Shift the error token having adjusted its location. */
1972 YYLTYPE yyerrloc
;]b4_location_if([[
1973 yystack
->yyerror_range
[2].yystate
.yyloc
= *yyllocp
;
1974 YYLLOC_DEFAULT (yyerrloc
, yystack
->yyerror_range
, 2);]])[
1975 YY_SYMBOL_PRINT ("Shifting", yystos
[yytable
[yyj
]],
1976 yylvalp
, &yyerrloc
);
1977 YYDPRINTF ((stderr
, "\n"));
1978 yyglrShift (yystack
, 0, yytable
[yyj
],
1979 yys
->yyposn
, *yylvalp
, &yyerrloc
);
1980 yys
= yystack
->yytops
.yystates
[0];
1984 ]b4_location_if([[ yystack
->yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]])[
1985 yydestruct ("Error: popping",
1986 yystos
[yys
->yylrState
],
1987 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[);
1988 yystack
->yytops
.yystates
[0] = yys
->yypred
;
1989 yystack
->yynextFree
-= 1;
1990 yystack
->yyspaceLeft
+= 1;
1992 if (yystack
->yytops
.yystates
[0] == NULL
)
1993 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1996 #define YYCHK1(YYE) \
2006 goto yyuser_error; \
2015 ]b4_c_ansi_function_def([yyparse
], [int], b4_parse_param
)[
2026 #define yychar (yystack.yyrawchar)
2029 YYSTYPE
* const yylvalp
= &yylval
;
2030 YYLTYPE
* const yyllocp
= &yylloc
;
2032 YYDPRINTF ((stderr
, "Starting parse\n"));
2035 yylval
= yyval_default
;
2037 #if YYLTYPE_IS_TRIVIAL
2038 yylloc
.first_line
= yylloc
.last_line
= 1;
2039 yylloc
.first_column
= yylloc
.last_column
= 0;
2042 m4_ifdef([b4_initial_action
], [
2043 m4_pushdef([b4_at_dollar
], [yylloc
])dnl
2044 m4_pushdef([b4_dollar_dollar
], [yylval
])dnl
2045 /* User initialization code. */
2047 m4_popdef([b4_dollar_dollar
])dnl
2048 m4_popdef([b4_at_dollar
])dnl
2049 /* Line __line__ of glr.c. */
2050 b4_syncline([@oline@
], [@ofile@
])])dnl
2052 if (! yyinitGLRStack (&yystack
, YYINITDEPTH
))
2053 goto yyexhaustedlab
;
2054 switch (setjmp (yystack
.yyexception_buffer
))
2056 case 1: goto yyabortlab
;
2057 case 2: goto yyexhaustedlab
;
2059 yystack
.yytokenp
= &yytoken
;
2060 yyglrShift (&yystack
, 0, 0, 0, yylval
, &yylloc
);
2065 /* For efficiency, we have two loops, the first of which is
2066 specialized to deterministic operation (single stack, no
2067 potential ambiguity). */
2073 const short int* yyconflicts
;
2075 yyStateNum yystate
= yystack
.yytops
.yystates
[0]->yylrState
;
2076 YYDPRINTF ((stderr
, "Entering state %d\n", yystate
));
2077 if (yystate
== YYFINAL
)
2079 if (yyisDefaultedState (yystate
))
2081 yyrule
= yydefaultAction (yystate
);
2084 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2085 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2088 YYCHK1 (yyglrReduce (&yystack
, 0, yyrule
, yytrue
]b4_user_args
[));
2092 if (yytoken
== YYEMPTY
)
2094 YYDPRINTF ((stderr
, "Reading a token: "));
2096 yytoken
= YYTRANSLATE (yychar
);
2097 YY_SYMBOL_PRINT ("Next token is", yytoken
, yylvalp
, yyllocp
);
2098 YYDPRINTF ((stderr
, "\n"));
2100 yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
);
2101 if (*yyconflicts
!= 0)
2103 if (yyisShiftAction (yyaction
))
2105 YY_SYMBOL_PRINT ("Shifting", yytoken
, yylvalp
, yyllocp
);
2106 YYDPRINTF ((stderr
, "\n"));
2107 if (yytoken
!= YYEOF
)
2110 yyglrShift (&yystack
, 0, yyaction
, yyposn
, yylval
, yyllocp
);
2111 if (0 < yystack
.yyerrState
)
2112 yystack
.yyerrState
-= 1;
2114 else if (yyisErrorAction (yyaction
))
2116 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2117 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2121 YYCHK1 (yyglrReduce (&yystack
, 0, -yyaction
, yytrue
]b4_user_args
[));
2128 size_t yyn
= yystack
.yytops
.yysize
;
2129 for (yys
= 0; yys
< yyn
; yys
+= 1)
2130 YYCHK1 (yyprocessOneStack (&yystack
, yys
, yyposn
,
2131 yylvalp
, yyllocp
]b4_lpure_args
[));
2134 yyremoveDeletes (&yystack
);
2135 if (yystack
.yytops
.yysize
== 0)
2137 yyundeleteLastStack (&yystack
);
2138 if (yystack
.yytops
.yysize
== 0)
2139 yyFail (&yystack
][]b4_lpure_args
[, YY_("syntax error"));
2140 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2141 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2142 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2143 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2146 else if (yystack
.yytops
.yysize
== 1)
2148 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2149 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2150 yycompressStack (&yystack
);
2156 yyrecoverSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2157 yyposn
= yystack
.yytops
.yystates
[0]->yyposn
;
2169 yyerror (]b4_lyyerror_args
[YY_("memory exhausted"));
2174 if (yytoken
!= YYEOF
&& yytoken
!= YYEMPTY
)
2175 yydestruct ("Error: discarding lookahead",
2176 yytoken
, yylvalp
]b4_location_if([, yyllocp
])[);
2178 /* If the stack is well-formed, pop the stack until it is empty,
2179 destroying its entries as we go. But free the stack regardless
2180 of whether it is well-formed. */
2181 if (yystack
.yyitems
)
2183 yyGLRState
** yystates
= yystack
.yytops
.yystates
;
2187 yyGLRState
*yys
= yystates
[0];
2188 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]]
2189 )[ yydestruct ("Error: popping",
2190 yystos
[yys
->yylrState
],
2191 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[);
2192 yystates
[0] = yys
->yypred
;
2193 yystack
.yynextFree
-= 1;
2194 yystack
.yyspaceLeft
+= 1;
2196 yyfreeGLRStack (&yystack
);
2202 /* DEBUGGING ONLY */
2204 static void yypstack (yyGLRStack
* yystack
, size_t yyk
)
2205 __attribute__ ((__unused__
));
2206 static void yypdumpstack (yyGLRStack
* yystack
) __attribute__ ((__unused__
));
2209 yy_yypstack (yyGLRState
* yys
)
2213 yy_yypstack (yys
->yypred
);
2214 fprintf (stderr
, " -> ");
2216 fprintf (stderr
, "%d@@%lu", yys
->yylrState
, (unsigned long int) yys
->yyposn
);
2220 yypstates (yyGLRState
* yyst
)
2223 fprintf (stderr
, "<null>");
2226 fprintf (stderr
, "\n");
2230 yypstack (yyGLRStack
* yystack
, size_t yyk
)
2232 yypstates (yystack
->yytops
.yystates
[yyk
]);
2235 #define YYINDEX(YYX) \
2236 ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystack->yyitems)
2240 yypdumpstack (yyGLRStack
* yystack
)
2242 yyGLRStackItem
* yyp
;
2244 for (yyp
= yystack
->yyitems
; yyp
< yystack
->yynextFree
; yyp
+= 1)
2246 fprintf (stderr
, "%3lu. ", (unsigned long int) (yyp
- yystack
->yyitems
));
2247 if (*(yybool
*) yyp
)
2249 fprintf (stderr
, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
2250 yyp
->yystate
.yyresolved
, yyp
->yystate
.yylrState
,
2251 (unsigned long int) yyp
->yystate
.yyposn
,
2252 (long int) YYINDEX (yyp
->yystate
.yypred
));
2253 if (! yyp
->yystate
.yyresolved
)
2254 fprintf (stderr
, ", firstVal: %ld",
2255 (long int) YYINDEX (yyp
->yystate
.yysemantics
.yyfirstVal
));
2259 fprintf (stderr
, "Option. rule: %d, state: %ld, next: %ld",
2260 yyp
->yyoption
.yyrule
,
2261 (long int) YYINDEX (yyp
->yyoption
.yystate
),
2262 (long int) YYINDEX (yyp
->yyoption
.yynext
));
2264 fprintf (stderr
, "\n");
2266 fprintf (stderr
, "Tops:");
2267 for (yyi
= 0; yyi
< yystack
->yytops
.yysize
; yyi
+= 1)
2268 fprintf (stderr
, "%lu: %ld; ", (unsigned long int) yyi
,
2269 (long int) YYINDEX (yystack
->yytops
.yystates
[yyi
]));
2270 fprintf (stderr
, "\n");
2276 m4_if(b4_defines_flag
, 0, [],
2277 [@output @output_header_name@
2278 b4_copyright([Skeleton parser
for GLR parsing with Bison
],
2279 [2002, 2003, 2004, 2005])
2281 b4_token_defines(b4_tokens
)
2283 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
2284 m4_ifdef([b4_stype
],
2285 [b4_syncline([b4_stype_line
], [b4_filename
])
2286 typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE
])b4_stype YYSTYPE
;
2287 /* Line __line__ of glr.c. */
2288 b4_syncline([@oline@
], [@ofile@
])],
2289 [typedef int YYSTYPE
;])
2290 # define YYSTYPE_IS_DECLARED 1
2291 # define YYSTYPE_IS_TRIVIAL 1
2295 [extern YYSTYPE b4_prefix
[]lval
;])
2297 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
2298 typedef struct YYLTYPE
2309 # define YYLTYPE_IS_DECLARED 1
2310 # define YYLTYPE_IS_TRIVIAL 1
2313 b4_location_if([b4_pure_if([],
2314 [extern YYLTYPE b4_prefix
[]lloc
;])