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 # This is specific to GLR because it relies on ISO C formal argument
41 m4_define([b4_user_formals
],
42 [m4_ifset([b4_parse_param
], [, b4_c_ansi_formals(b4_parse_param
)])])
47 # Accumule in b4_lex_param all the yylex arguments.
48 # Yes, this is quite ugly...
49 m4_define([b4_lex_param
],
50 m4_dquote(b4_pure_if([[[[YYSTYPE
*]], [[yylvalp]]][]dnl
51 b4_location_if([, [[YYLTYPE
*], [yyllocp
]]])])dnl
52 m4_ifdef([b4_lex_param
], [, ]b4_lex_param
)))
57 # Arguments passed to yyerror: user args plus yylloc.
58 m4_define([b4_yyerror_args
],
59 [b4_pure_if([b4_location_if([yylocp
, ])])dnl
60 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])])
65 # Same as above, but on the look-ahead, hence yyllocp instead of yylocp.
66 m4_define([b4_lyyerror_args
],
67 [b4_pure_if([b4_location_if([yyllocp
, ])])dnl
68 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])])
73 # Arguments needed by yyerror: user args plus yylloc.
74 m4_define([b4_pure_args
],
75 [b4_pure_if([b4_location_if([, yylocp
])])[]b4_user_args
])
80 # Arguments passed to yyerror: user formals plus yyllocp.
81 m4_define([b4_pure_formals
],
82 [b4_pure_if([b4_location_if([, YYLTYPE
*yylocp
])])[]b4_user_formals
])
87 # Same as above, but on the look-ahead, hence yyllocp instead of yylocp.
88 m4_define([b4_lpure_args
],
89 [b4_pure_if([b4_location_if([, yyllocp
])])[]b4_user_args
])
94 # Same as above, but on the look-ahead, hence yyllocp instead of yylocp.
95 m4_define([b4_lpure_formals
],
96 [b4_pure_if([b4_location_if([YYLTYPE
*yyllocp
])])[]b4_user_formals
])
99 ## ----------------- ##
100 ## Semantic Values. ##
101 ## ----------------- ##
104 # b4_lhs_value([TYPE])
105 # --------------------
106 # Expansion of $<TYPE>$.
107 m4_define([b4_lhs_value
],
108 [((*yyvalp
)[]m4_ifval([$
1], [.$
1]))])
111 # b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
112 # --------------------------------------
113 # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
115 m4_define([b4_rhs_value
],
116 [(((yyGLRStackItem
const *)yyvsp
)@
{YYFILL (m4_eval([$
2 - $
1]))@
}.yystate
.yysemantics
.yysval
[]m4_ifval([$
3], [.$
3]))])
127 m4_define([b4_lhs_location
],
131 # b4_rhs_location(RULE-LENGTH, NUM)
132 # ---------------------------------
133 # Expansion of @NUM, where the current rule has RULE-LENGTH symbols
135 m4_define([b4_rhs_location
],
136 [(((yyGLRStackItem
const *)yyvsp
)@
{YYFILL (m4_eval([$
2 - $
1]))@
}.yystate
.yyloc
)])
138 # We do want M4 expansion after # for CPP macros.
141 @output @output_parser_name@
142 b4_copyright([Skeleton parser
for GLR parsing with Bison
],
143 [2002, 2003, 2004, 2005])
145 /* This is the parser code for GLR (Generalized LR) parser. */
148 m4_if(b4_prefix
[], [yy
], [],
149 [/* Substitute the variable and function names. */
150 #define yyparse b4_prefix[]parse
151 #define yylex b4_prefix[]lex
152 #define yyerror b4_prefix[]error
153 #define yylval b4_prefix[]lval
154 #define yychar b4_prefix[]char
155 #define yydebug b4_prefix[]debug
156 #define yynerrs b4_prefix[]nerrs
157 #define yylloc b4_prefix[]lloc])
159 b4_token_enums(b4_tokens
)
161 /* Copy the first part of user declarations. */
164 /* Enabling traces. */
166 # define YYDEBUG ]b4_debug[
169 /* Enabling verbose error messages. */
170 #ifdef YYERROR_VERBOSE
171 # undef YYERROR_VERBOSE
172 # define YYERROR_VERBOSE 1
174 # define YYERROR_VERBOSE ]b4_error_verbose[
177 /* Enabling the token table. */
178 #ifndef YYTOKEN_TABLE
179 # define YYTOKEN_TABLE ]b4_token_table[
182 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
183 ]m4_ifdef([b4_stype
],
184 [b4_syncline([b4_stype_line
], [b4_file_name
])
185 typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE
])b4_stype YYSTYPE
;
186 /* Line __line__ of glr.c. */
187 b4_syncline([@oline@
], [@ofile@
])],
188 [typedef int YYSTYPE
;])[
189 # define YYSTYPE_IS_DECLARED 1
190 # define YYSTYPE_IS_TRIVIAL 1
193 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
194 typedef struct YYLTYPE
205 # define YYLTYPE_IS_DECLARED 1
206 # define YYLTYPE_IS_TRIVIAL 1
209 /* Default (constant) value used for initialization for null
210 right-hand sides. Unlike the standard yacc.c template,
211 here we set the default value of $$ to a zeroed-out value.
212 Since the default value is undefined, this behavior is
213 technically correct. */
214 static YYSTYPE yyval_default
;
216 /* Copy the second part of user declarations. */
219 ]/* Line __line__ of glr.c. */
220 b4_syncline([@oline@
], [@ofile@
])
230 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
231 # define YY_(msgid) dgettext ("bison-runtime", msgid)
235 # define YY_(msgid) msgid
239 /* Suppress unused-variable warnings by "using" E. */
240 #define YYUSE(e) do {;} while (/*CONSTCOND*/ yyfalse && (e))
246 # define YYMALLOC malloc
249 # define YYREALLOC realloc
252 #define YYSIZEMAX ((size_t) -1)
257 typedef unsigned char yybool
;
264 # define YYJMP_BUF jmp_buf
265 # define YYSETJMP(env) setjmp (env)
266 # define YYLONGJMP(env, val) longjmp (env, val)
273 #ifndef __attribute__
274 /* This feature is available in gcc versions 2.5 and later. */
275 # if (!defined (__GNUC__) || __GNUC__ < 2 \
276 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__)
277 # define __attribute__(Spec) /* empty */
281 ]b4_location_if([#define YYOPTIONAL_LOC(Name) Name],[
283 # define YYOPTIONAL_LOC(Name) /* empty */
285 # define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__))
289 # define YYASSERT(condition) ((void) ((condition) || (abort (), 0)))
292 /* YYFINAL -- State number of the termination state. */
293 #define YYFINAL ]b4_final_state_number[
294 /* YYLAST -- Last index in YYTABLE. */
295 #define YYLAST ]b4_last[
297 /* YYNTOKENS -- Number of terminals. */
298 #define YYNTOKENS ]b4_tokens_number[
299 /* YYNNTS -- Number of nonterminals. */
300 #define YYNNTS ]b4_nterms_number[
301 /* YYNRULES -- Number of rules. */
302 #define YYNRULES ]b4_rules_number[
303 /* YYNRULES -- Number of states. */
304 #define YYNSTATES ]b4_states_number[
305 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
306 #define YYMAXRHS ]b4_r2_max[
307 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
308 accessed by $0, $-1, etc., in any rule. */
309 #define YYMAXLEFT ]b4_max_left_semantic_context[
311 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */
312 #define YYUNDEFTOK ]b4_undef_token_number[
313 #define YYMAXUTOK ]b4_user_token_number_max[
315 #define YYTRANSLATE(YYX) \
316 ((YYX <= 0) ? YYEOF : \
317 (unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
319 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
320 static const ]b4_int_type_for([b4_translate
])[ yytranslate
[] =
326 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
328 static const ]b4_int_type_for([b4_prhs
])[ yyprhs
[] =
333 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
334 static const ]b4_int_type_for([b4_rhs
])[ yyrhs
[] =
339 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
340 static const ]b4_int_type_for([b4_rline
])[ yyrline
[] =
346 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
347 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
348 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
349 static const char *const yytname
[] =
355 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
356 static const ]b4_int_type_for([b4_r1
])[ yyr1
[] =
361 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
362 static const ]b4_int_type_for([b4_r2
])[ yyr2
[] =
367 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
368 static const ]b4_int_type_for([b4_dprec
])[ yydprec
[] =
373 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
374 static const ]b4_int_type_for([b4_merger
])[ yymerger
[] =
379 /* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE
380 doesn't specify something else to do. Zero means the default is an
382 static const ]b4_int_type_for([b4_defact
])[ yydefact
[] =
387 /* YYPDEFGOTO[NTERM-NUM]. */
388 static const ]b4_int_type_for([b4_defgoto
])[ yydefgoto
[] =
393 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
395 #define YYPACT_NINF ]b4_pact_ninf[
396 static const ]b4_int_type_for([b4_pact
])[ yypact
[] =
401 /* YYPGOTO[NTERM-NUM]. */
402 static const ]b4_int_type_for([b4_pgoto
])[ yypgoto
[] =
407 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
408 positive, shift that token. If negative, reduce the rule which
409 number is the opposite. If zero, do what YYDEFACT says.
410 If YYTABLE_NINF, syntax error. */
411 #define YYTABLE_NINF ]b4_table_ninf[
412 static const ]b4_int_type_for([b4_table
])[ yytable
[] =
417 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
418 list of conflicting reductions corresponding to action entry for
419 state STATE-NUM in yytable. 0 means no conflicts. The list in
420 yyconfl is terminated by a rule number of 0. */
421 static const ]b4_int_type_for([b4_conflict_list_heads
])[ yyconflp
[] =
423 ]b4_conflict_list_heads
[
426 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
427 0, pointed into by YYCONFLP. */
428 ]dnl Do
not use b4_int_type_for here
, since there are places where
429 dnl pointers onto yyconfl are taken
, which type is
"short int *".
430 dnl We probably ought to introduce a type
for confl
.
431 [static const short int yyconfl
[] =
433 ]b4_conflicting_rules
[
436 static const ]b4_int_type_for([b4_check
])[ yycheck
[] =
441 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
442 symbol of state STATE-NUM. */
443 static const ]b4_int_type_for([b4_stos
])[ yystos
[] =
449 /* Prevent warning if -Wmissing-prototypes. */
450 ]b4_c_ansi_function_decl([yyparse
], [int], b4_parse_param
)[
452 /* Error token number */
455 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
456 If N is 0, then set CURRENT to the empty location which ends
457 the previous symbol: RHS[0] (always defined). */
460 #define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
461 #ifndef YYLLOC_DEFAULT
462 # define YYLLOC_DEFAULT(Current, Rhs, N) \
466 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
467 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
468 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
469 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
473 (Current).first_line = (Current).last_line = \
474 YYRHSLOC (Rhs, 0).last_line; \
475 (Current).first_column = (Current).last_column = \
476 YYRHSLOC (Rhs, 0).last_column; \
478 while (/*CONSTCOND*/ 0)
480 /* YY_LOCATION_PRINT -- Print the location on the stream.
481 This macro was not mandated originally: define only if we know
482 we won't break user code: when these are the locations we know. */
484 # define YY_LOCATION_PRINT(File, Loc) \
485 fprintf (File, "%d.%d-%d.%d", \
486 (Loc).first_line, (Loc).first_column, \
487 (Loc).last_line, (Loc).last_column)
490 #ifndef YYLLOC_DEFAULT
491 # define YYLLOC_DEFAULT(Current, Rhs, N) ((void) 0)
495 #ifndef YY_LOCATION_PRINT
496 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
500 /* YYLEX -- calling `yylex' with the right arguments. */
501 #define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
506 #define yynerrs (yystack->yyerrcnt)
508 #define yychar (yystack->yyrawchar)],
516 static const int YYEOF
= 0;
517 static const int YYEMPTY
= -2;
519 typedef enum { yyok
, yyaccept
, yyabort
, yyerr
} YYRESULTTAG
;
522 do { YYRESULTTAG yyflag = YYE; if (yyflag != yyok) return yyflag; } \
523 while (/*CONSTCOND*/ 0)
527 #if ! defined (YYFPRINTF)
528 # define YYFPRINTF fprintf
531 # define YYDPRINTF(Args) \
535 } while (/*CONSTCOND*/ 0)
537 ]b4_yysymprint_generate([b4_c_ansi_function_def
])[
539 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
543 YYFPRINTF (stderr, "%s ", Title); \
544 yysymprint (stderr, \
545 Type, Value]b4_location_if([, Location])[]b4_user_args[); \
546 YYFPRINTF (stderr, "\n"); \
548 } while (/*CONSTCOND*/ 0)
550 /* Nonzero means print parse trace. It is left uninitialized so that
551 multiple parsers can coexist. */
556 # define YYDPRINTF(Args)
557 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
559 #endif /* !YYDEBUG */
561 /* YYINITDEPTH -- initial size of the parser's stacks. */
563 # define YYINITDEPTH ]b4_stack_depth_init[
566 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
567 if the built-in stack extension method is used).
569 Do not make this value too large; the results are undefined if
570 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
571 evaluated with infinite-precision integer arithmetic. */
574 # define YYMAXDEPTH ]b4_stack_depth_max[
577 /* Minimum number of free items on the stack allowed after an
578 allocation. This is to allow allocation and initialization
579 to be completed by functions that call yyexpandGLRStack before the
580 stack is expanded, thus insuring that all necessary pointers get
581 properly redirected to new data. */
584 #ifndef YYSTACKEXPANDABLE
585 # if (! defined (__cplusplus) \
586 || (]b4_location_if([[defined (YYLTYPE_IS_TRIVIAL) && YYLTYPE_IS_TRIVIAL \
587 && ]])[defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL))
588 # define YYSTACKEXPANDABLE 1
590 # define YYSTACKEXPANDABLE 0
597 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
598 # define yystpcpy stpcpy
600 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
603 yystpcpy (char *yydest
, const char *yysrc
)
606 const char *yys
= yysrc
;
608 while ((*yyd
++ = *yys
++) != '\0')
617 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
618 quotes and backslashes, so that it's suitable for yyerror. The
619 heuristic is that double-quoting is unnecessary unless the string
620 contains an apostrophe, a comma, or backslash (other than
621 backslash-backslash). YYSTR is taken from yytname. If YYRES is
622 null, do not copy; instead, return the length of what the result
625 yytnamerr (char *yyres
, const char *yystr
)
630 char const *yyp
= yystr
;
637 goto do_not_strip_quotes
;
641 goto do_not_strip_quotes
;
654 do_not_strip_quotes
: ;
658 return strlen (yystr
);
660 return yystpcpy (yyres
, yystr
) - yyres
;
664 #endif /* !YYERROR_VERBOSE */
666 /** State numbers, as in LALR(1) machine */
667 typedef int yyStateNum
;
669 /** Rule numbers, as in LALR(1) machine */
670 typedef int yyRuleNum
;
672 /** Grammar symbol */
673 typedef short int yySymbol
;
675 /** Item references, as in LALR(1) machine */
676 typedef short int yyItemNum
;
678 typedef struct yyGLRState yyGLRState
;
679 typedef struct yySemanticOption yySemanticOption
;
680 typedef union yyGLRStackItem yyGLRStackItem
;
681 typedef struct yyGLRStack yyGLRStack
;
682 typedef struct yyGLRStateSet yyGLRStateSet
;
685 /** Type tag: always true. */
687 /** Type tag for yysemantics. If true, yysval applies, otherwise
688 * yyfirstVal applies. */
690 /** Number of corresponding LALR(1) machine state. */
691 yyStateNum yylrState
;
692 /** Preceding state in this stack */
694 /** Source position of the first token produced by my symbol */
697 /** First in a chain of alternative reductions producing the
698 * non-terminal corresponding to this state, threaded through
700 yySemanticOption
* yyfirstVal
;
701 /** Semantic value for this state. */
704 /** Source location for this state. */
708 struct yyGLRStateSet
{
709 yyGLRState
** yystates
;
710 size_t yysize
, yycapacity
;
713 struct yySemanticOption
{
714 /** Type tag: always false. */
716 /** Rule number for this reduction */
718 /** The last RHS state in the list of states to be reduced. */
720 /** Next sibling in chain of options. To facilitate merging,
721 * options are chained in decreasing order by address. */
722 yySemanticOption
* yynext
;
725 /** Type of the items in the GLR stack. The yyisState field
726 * indicates which item of the union is valid. */
727 union yyGLRStackItem
{
729 yySemanticOption yyoption
;
734 ]b4_location_if([[ /* To compute the location of the error token. */
735 yyGLRStackItem yyerror_range
[3];]])[
742 YYJMP_BUF yyexception_buffer
;
743 yyGLRStackItem
* yyitems
;
744 yyGLRStackItem
* yynextFree
;
746 yyGLRState
* yysplitPoint
;
747 yyGLRState
* yylastDeleted
;
748 yyGLRStateSet yytops
;
751 static void yyexpandGLRStack (yyGLRStack
* yystack
);
753 static void yyFail (yyGLRStack
* yystack
]b4_pure_formals
[, const char* yymsg
)
754 __attribute__ ((__noreturn__
));
756 yyFail (yyGLRStack
* yystack
]b4_pure_formals
[, const char* yymsg
)
759 yyerror (]b4_yyerror_args
[yymsg
);
760 YYLONGJMP (yystack
->yyexception_buffer
, 1);
763 static void yyMemoryExhausted (yyGLRStack
* yystack
)
764 __attribute__ ((__noreturn__
));
766 yyMemoryExhausted (yyGLRStack
* yystack
)
768 YYLONGJMP (yystack
->yyexception_buffer
, 2);
771 #if YYDEBUG || YYERROR_VERBOSE
772 /** A printable representation of TOKEN. */
773 static inline const char*
774 yytokenName (yySymbol yytoken
)
776 if (yytoken
== YYEMPTY
)
779 return yytname
[yytoken
];
783 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
784 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
785 * containing the pointer to the next state in the chain. Assumes
786 * YYLOW1 < YYLOW0. */
787 static void yyfillin (yyGLRStackItem
*, int, int) __attribute__ ((__unused__
));
789 yyfillin (yyGLRStackItem
*yyvsp
, int yylow0
, int yylow1
)
793 s
= yyvsp
[yylow0
].yystate
.yypred
;
794 for (i
= yylow0
-1; i
>= yylow1
; i
-= 1)
796 YYASSERT (s
->yyresolved
);
797 yyvsp
[i
].yystate
.yyresolved
= yytrue
;
798 yyvsp
[i
].yystate
.yysemantics
.yysval
= s
->yysemantics
.yysval
;
799 yyvsp
[i
].yystate
.yyloc
= s
->yyloc
;
800 s
= yyvsp
[i
].yystate
.yypred
= s
->yypred
;
804 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
805 YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
806 For convenience, always return YYLOW1. */
807 static inline int yyfill (yyGLRStackItem
*, int *, int, yybool
)
808 __attribute__ ((__unused__
));
810 yyfill (yyGLRStackItem
*yyvsp
, int *yylow
, int yylow1
, yybool yynormal
)
812 if (!yynormal
&& yylow1
< *yylow
)
814 yyfillin (yyvsp
, *yylow
, yylow1
);
820 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
821 * and top stack item YYVSP. YYLVALP points to place to put semantic
822 * value ($$), and yylocp points to place for location information
823 * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT,
824 * yyerr for YYERROR, yyabort for YYABORT. */
826 yyuserAction (yyRuleNum yyn
, int yyrhslen
, yyGLRStackItem
* yyvsp
,
828 YYLTYPE
* YYOPTIONAL_LOC (yylocp
),
832 yybool yynormal
__attribute__ ((__unused__
)) =
833 (yystack
->yysplitPoint
== NULL
);
837 # define yyerrok (yystack->yyerrState = 0)
839 # define YYACCEPT return yyaccept
841 # define YYABORT return yyabort
843 # define YYERROR return yyerrok, yyerr
845 # define YYRECOVERING (yystack->yyerrState != 0)
847 # define yyclearin (yychar = *(yystack->yytokenp) = YYEMPTY)
849 # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal)
851 # define YYBACKUP(Token, Value) \
852 return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \
857 *yyvalp
= yyval_default
;
859 *yyvalp
= yyvsp
[YYFILL (1-yyrhslen
)].yystate
.yysemantics
.yysval
;
860 YYLLOC_DEFAULT (*yylocp
, yyvsp
- yyrhslen
, yyrhslen
);
861 ]b4_location_if([[ yystack
->yyerror_range
[1].yystate
.yyloc
= *yylocp
;
877 /* Line __line__ of glr.c. */
878 b4_syncline([@oline@
], [@ofile@
])
883 yyuserMerge (int yyn
, YYSTYPE
* yy0
, YYSTYPE
* yy1
)
895 /* Bison grammar-table manipulation. */
897 ]b4_yydestruct_generate([b4_c_ansi_function_def
])[
899 /** Number of symbols composing the right hand side of rule #RULE. */
901 yyrhsLength (yyRuleNum yyrule
)
907 yydestroyGLRState (char const *yymsg
, yyGLRState
*yys
]b4_user_formals
[)
910 yydestruct (yymsg
, yystos
[yys
->yylrState
],
911 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[]b4_user_args
[);
917 YYFPRINTF (stderr
, "%s unresolved ", yymsg
);
918 yysymprint (stderr
, yystos
[yys
->yylrState
],
919 &yys
->yysemantics
.yysval
]b4_location_if([, &yys
->yyloc
])[]b4_user_args
[);
920 YYFPRINTF (stderr
, "\n");
924 if (yys
->yysemantics
.yyfirstVal
)
926 yySemanticOption
*yyoption
= yys
->yysemantics
.yyfirstVal
;
929 for (yyrh
= yyoption
->yystate
, yyn
= yyrhsLength (yyoption
->yyrule
);
931 yyrh
= yyrh
->yypred
, yyn
-= 1)
932 yydestroyGLRState (yymsg
, yyrh
]b4_user_args
[);
937 /** Left-hand-side symbol for rule #RULE. */
938 static inline yySymbol
939 yylhsNonterm (yyRuleNum yyrule
)
944 #define yyis_pact_ninf(yystate) \
945 ]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), 1,
947 ((yystate
) == YYPACT_NINF
))[
949 /** True iff LR state STATE has only a default reduction (regardless
952 yyisDefaultedState (yyStateNum yystate
)
954 return yyis_pact_ninf (yypact
[yystate
]);
957 /** The default reduction for STATE, assuming it has one. */
958 static inline yyRuleNum
959 yydefaultAction (yyStateNum yystate
)
961 return yydefact
[yystate
];
964 #define yyis_table_ninf(yytable_value) \
965 ]m4_if(m4_eval(b4_table_ninf < b4_table_min), 1,
967 ((yytable_value
) == YYTABLE_NINF
))[
969 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
971 * R < 0: Reduce on rule -R.
973 * R > 0: Shift to state R.
974 * Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of
975 * conflicting reductions.
978 yygetLRActions (yyStateNum yystate
, int yytoken
,
979 int* yyaction
, const short int** yyconflicts
)
981 int yyindex
= yypact
[yystate
] + yytoken
;
982 if (yyindex
< 0 || YYLAST
< yyindex
|| yycheck
[yyindex
] != yytoken
)
984 *yyaction
= -yydefact
[yystate
];
985 *yyconflicts
= yyconfl
;
987 else if (! yyis_table_ninf (yytable
[yyindex
]))
989 *yyaction
= yytable
[yyindex
];
990 *yyconflicts
= yyconfl
+ yyconflp
[yyindex
];
995 *yyconflicts
= yyconfl
+ yyconflp
[yyindex
];
999 static inline yyStateNum
1000 yyLRgotoState (yyStateNum yystate
, yySymbol yylhs
)
1003 yyr
= yypgoto
[yylhs
- YYNTOKENS
] + yystate
;
1004 if (0 <= yyr
&& yyr
<= YYLAST
&& yycheck
[yyr
] == yystate
)
1005 return yytable
[yyr
];
1007 return yydefgoto
[yylhs
- YYNTOKENS
];
1010 static inline yybool
1011 yyisShiftAction (int yyaction
)
1013 return 0 < yyaction
;
1016 static inline yybool
1017 yyisErrorAction (int yyaction
)
1019 return yyaction
== 0;
1025 yyaddDeferredAction (yyGLRStack
* yystack
, yyGLRState
* yystate
,
1026 yyGLRState
* rhs
, yyRuleNum yyrule
)
1028 yySemanticOption
* yynewItem
;
1029 yynewItem
= &yystack
->yynextFree
->yyoption
;
1030 yystack
->yyspaceLeft
-= 1;
1031 yystack
->yynextFree
+= 1;
1032 yynewItem
->yyisState
= yyfalse
;
1033 yynewItem
->yystate
= rhs
;
1034 yynewItem
->yyrule
= yyrule
;
1035 yynewItem
->yynext
= yystate
->yysemantics
.yyfirstVal
;
1036 yystate
->yysemantics
.yyfirstVal
= yynewItem
;
1037 if (yystack
->yyspaceLeft
< YYHEADROOM
)
1038 yyexpandGLRStack (yystack
);
1043 /** Initialize SET to a singleton set containing an empty stack. */
1045 yyinitStateSet (yyGLRStateSet
* yyset
)
1048 yyset
->yycapacity
= 16;
1049 yyset
->yystates
= (yyGLRState
**) YYMALLOC (16 * sizeof yyset
->yystates
[0]);
1050 if (! yyset
->yystates
)
1052 yyset
->yystates
[0] = NULL
;
1056 static void yyfreeStateSet (yyGLRStateSet
* yyset
)
1058 YYFREE (yyset
->yystates
);
1061 /** Initialize STACK to a single empty stack, with total maximum
1062 * capacity for all stacks of SIZE. */
1064 yyinitGLRStack (yyGLRStack
* yystack
, size_t yysize
)
1066 yystack
->yyerrState
= 0;
1068 yystack
->yyspaceLeft
= yysize
;
1070 (yyGLRStackItem
*) YYMALLOC (yysize
* sizeof yystack
->yynextFree
[0]);
1071 if (!yystack
->yyitems
)
1073 yystack
->yynextFree
= yystack
->yyitems
;
1074 yystack
->yysplitPoint
= NULL
;
1075 yystack
->yylastDeleted
= NULL
;
1076 return yyinitStateSet (&yystack
->yytops
);
1079 #define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \
1080 &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE
1082 /** If STACK is expandable, extend it. WARNING: Pointers into the
1083 stack from outside should be considered invalid after this call.
1084 We always expand when there are 1 or fewer items left AFTER an
1085 allocation, so that we can avoid having external pointers exist
1086 across an allocation. */
1088 yyexpandGLRStack (yyGLRStack
* yystack
)
1090 #if YYSTACKEXPANDABLE
1091 yyGLRStackItem
* yynewItems
;
1092 yyGLRStackItem
* yyp0
, *yyp1
;
1093 size_t yysize
, yynewSize
;
1095 yysize
= yystack
->yynextFree
- yystack
->yyitems
;
1096 if (YYMAXDEPTH
<= yysize
)
1097 yyMemoryExhausted (yystack
);
1098 yynewSize
= 2*yysize
;
1099 if (YYMAXDEPTH
< yynewSize
)
1100 yynewSize
= YYMAXDEPTH
;
1101 yynewItems
= (yyGLRStackItem
*) YYMALLOC (yynewSize
* sizeof yynewItems
[0]);
1103 yyMemoryExhausted (yystack
);
1104 for (yyp0
= yystack
->yyitems
, yyp1
= yynewItems
, yyn
= yysize
;
1106 yyn
-= 1, yyp0
+= 1, yyp1
+= 1)
1109 if (*(yybool
*) yyp0
)
1111 yyGLRState
* yys0
= &yyp0
->yystate
;
1112 yyGLRState
* yys1
= &yyp1
->yystate
;
1113 if (yys0
->yypred
!= NULL
)
1115 YYRELOC (yyp0
, yyp1
, yys0
->yypred
, yystate
);
1116 if (! yys0
->yyresolved
&& yys0
->yysemantics
.yyfirstVal
!= NULL
)
1117 yys1
->yysemantics
.yyfirstVal
=
1118 YYRELOC(yyp0
, yyp1
, yys0
->yysemantics
.yyfirstVal
, yyoption
);
1122 yySemanticOption
* yyv0
= &yyp0
->yyoption
;
1123 yySemanticOption
* yyv1
= &yyp1
->yyoption
;
1124 if (yyv0
->yystate
!= NULL
)
1125 yyv1
->yystate
= YYRELOC (yyp0
, yyp1
, yyv0
->yystate
, yystate
);
1126 if (yyv0
->yynext
!= NULL
)
1127 yyv1
->yynext
= YYRELOC (yyp0
, yyp1
, yyv0
->yynext
, yyoption
);
1130 if (yystack
->yysplitPoint
!= NULL
)
1131 yystack
->yysplitPoint
= YYRELOC (yystack
->yyitems
, yynewItems
,
1132 yystack
->yysplitPoint
, yystate
);
1134 for (yyn
= 0; yyn
< yystack
->yytops
.yysize
; yyn
+= 1)
1135 if (yystack
->yytops
.yystates
[yyn
] != NULL
)
1136 yystack
->yytops
.yystates
[yyn
] =
1137 YYRELOC (yystack
->yyitems
, yynewItems
,
1138 yystack
->yytops
.yystates
[yyn
], yystate
);
1139 YYFREE (yystack
->yyitems
);
1140 yystack
->yyitems
= yynewItems
;
1141 yystack
->yynextFree
= yynewItems
+ yysize
;
1142 yystack
->yyspaceLeft
= yynewSize
- yysize
;
1145 yyMemoryExhausted (yystack
);
1150 yyfreeGLRStack (yyGLRStack
* yystack
)
1152 YYFREE (yystack
->yyitems
);
1153 yyfreeStateSet (&yystack
->yytops
);
1156 /** Assuming that S is a GLRState somewhere on STACK, update the
1157 * splitpoint of STACK, if needed, so that it is at least as deep as
1160 yyupdateSplit (yyGLRStack
* yystack
, yyGLRState
* yys
)
1162 if (yystack
->yysplitPoint
!= NULL
&& yystack
->yysplitPoint
> yys
)
1163 yystack
->yysplitPoint
= yys
;
1166 /** Invalidate stack #K in STACK. */
1168 yymarkStackDeleted (yyGLRStack
* yystack
, size_t yyk
)
1170 if (yystack
->yytops
.yystates
[yyk
] != NULL
)
1171 yystack
->yylastDeleted
= yystack
->yytops
.yystates
[yyk
];
1172 yystack
->yytops
.yystates
[yyk
] = NULL
;
1175 /** Undelete the last stack that was marked as deleted. Can only be
1176 done once after a deletion, and only when all other stacks have
1179 yyundeleteLastStack (yyGLRStack
* yystack
)
1181 if (yystack
->yylastDeleted
== NULL
|| yystack
->yytops
.yysize
!= 0)
1183 yystack
->yytops
.yystates
[0] = yystack
->yylastDeleted
;
1184 yystack
->yytops
.yysize
= 1;
1185 YYDPRINTF ((stderr
, "Restoring last deleted stack as stack #0.\n"));
1186 yystack
->yylastDeleted
= NULL
;
1190 yyremoveDeletes (yyGLRStack
* yystack
)
1194 while (yyj
< yystack
->yytops
.yysize
)
1196 if (yystack
->yytops
.yystates
[yyi
] == NULL
)
1200 YYDPRINTF ((stderr
, "Removing dead stacks.\n"));
1202 yystack
->yytops
.yysize
-= 1;
1206 yystack
->yytops
.yystates
[yyj
] = yystack
->yytops
.yystates
[yyi
];
1209 YYDPRINTF ((stderr
, "Rename stack %lu -> %lu.\n",
1210 (unsigned long int) yyi
, (unsigned long int) yyj
));
1218 /** Shift to a new state on stack #K of STACK, corresponding to LR state
1219 * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */
1221 yyglrShift (yyGLRStack
* yystack
, size_t yyk
, yyStateNum yylrState
,
1223 YYSTYPE yysval
, YYLTYPE
* yylocp
)
1225 yyGLRStackItem
* yynewItem
;
1227 yynewItem
= yystack
->yynextFree
;
1228 yystack
->yynextFree
+= 1;
1229 yystack
->yyspaceLeft
-= 1;
1230 yynewItem
->yystate
.yyisState
= yytrue
;
1231 yynewItem
->yystate
.yylrState
= yylrState
;
1232 yynewItem
->yystate
.yyposn
= yyposn
;
1233 yynewItem
->yystate
.yyresolved
= yytrue
;
1234 yynewItem
->yystate
.yypred
= yystack
->yytops
.yystates
[yyk
];
1235 yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
;
1236 yynewItem
->yystate
.yysemantics
.yysval
= yysval
;
1237 yynewItem
->yystate
.yyloc
= *yylocp
;
1238 if (yystack
->yyspaceLeft
< YYHEADROOM
)
1239 yyexpandGLRStack (yystack
);
1242 /** Shift stack #K of YYSTACK, to a new state corresponding to LR
1243 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
1244 * semantic value of YYRHS under the action for YYRULE. */
1246 yyglrShiftDefer (yyGLRStack
* yystack
, size_t yyk
, yyStateNum yylrState
,
1247 size_t yyposn
, yyGLRState
* rhs
, yyRuleNum yyrule
)
1249 yyGLRStackItem
* yynewItem
;
1251 yynewItem
= yystack
->yynextFree
;
1252 yynewItem
->yystate
.yyisState
= yytrue
;
1253 yynewItem
->yystate
.yylrState
= yylrState
;
1254 yynewItem
->yystate
.yyposn
= yyposn
;
1255 yynewItem
->yystate
.yyresolved
= yyfalse
;
1256 yynewItem
->yystate
.yypred
= yystack
->yytops
.yystates
[yyk
];
1257 yynewItem
->yystate
.yysemantics
.yyfirstVal
= NULL
;
1258 yystack
->yytops
.yystates
[yyk
] = &yynewItem
->yystate
;
1259 yystack
->yynextFree
+= 1;
1260 yystack
->yyspaceLeft
-= 1;
1261 yyaddDeferredAction (yystack
, &yynewItem
->yystate
, rhs
, yyrule
);
1264 /** Pop the symbols consumed by reduction #RULE from the top of stack
1265 * #K of STACK, and perform the appropriate semantic action on their
1266 * semantic values. Assumes that all ambiguities in semantic values
1267 * have been previously resolved. Set *VALP to the resulting value,
1268 * and *LOCP to the computed location (if any). Return value is as
1269 * for userAction. */
1270 static inline YYRESULTTAG
1271 yydoAction (yyGLRStack
* yystack
, size_t yyk
, yyRuleNum yyrule
,
1272 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1274 int yynrhs
= yyrhsLength (yyrule
);
1276 if (yystack
->yysplitPoint
== NULL
)
1278 /* Standard special case: single stack. */
1279 yyGLRStackItem
* rhs
= (yyGLRStackItem
*) yystack
->yytops
.yystates
[yyk
];
1280 YYASSERT (yyk
== 0);
1281 yystack
->yynextFree
-= yynrhs
;
1282 yystack
->yyspaceLeft
+= yynrhs
;
1283 yystack
->yytops
.yystates
[0] = & yystack
->yynextFree
[-1].yystate
;
1284 return yyuserAction (yyrule
, yynrhs
, rhs
,
1285 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1291 yyGLRStackItem yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
+ 1];
1292 yys
= yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
].yystate
.yypred
1293 = yystack
->yytops
.yystates
[yyk
];
1294 for (yyi
= 0; yyi
< yynrhs
; yyi
+= 1)
1299 yyupdateSplit (yystack
, yys
);
1300 yystack
->yytops
.yystates
[yyk
] = yys
;
1301 return yyuserAction (yyrule
, yynrhs
, yyrhsVals
+ YYMAXRHS
+ YYMAXLEFT
- 1,
1302 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1307 # define YY_REDUCE_PRINT(K, Rule)
1309 # define YY_REDUCE_PRINT(K, Rule) \
1312 yy_reduce_print (K, Rule); \
1313 } while (/*CONSTCOND*/ 0)
1315 /*----------------------------------------------------------.
1316 | Report that the RULE is going to be reduced on stack #K. |
1317 `----------------------------------------------------------*/
1320 yy_reduce_print (size_t yyk
, yyRuleNum yyrule
)
1323 YYFPRINTF (stderr
, "Reducing stack %lu by rule %d (line %lu), ",
1324 (unsigned long int) yyk
, yyrule
- 1,
1325 (unsigned long int) yyrline
[yyrule
]);
1326 /* Print the symbols being reduced, and their result. */
1327 for (yyi
= yyprhs
[yyrule
]; 0 <= yyrhs
[yyi
]; yyi
++)
1328 YYFPRINTF (stderr
, "%s ", yytokenName (yyrhs
[yyi
]));
1329 YYFPRINTF (stderr
, "-> %s\n", yytokenName (yyr1
[yyrule
]));
1333 /** Pop items off stack #K of STACK according to grammar rule RULE,
1334 * and push back on the resulting nonterminal symbol. Perform the
1335 * semantic action associated with RULE and store its value with the
1336 * newly pushed state, if FORCEEVAL or if STACK is currently
1337 * unambiguous. Otherwise, store the deferred semantic action with
1338 * the new state. If the new state would have an identical input
1339 * position, LR state, and predecessor to an existing state on the stack,
1340 * it is identified with that existing state, eliminating stack #K from
1341 * the STACK. In this case, the (necessarily deferred) semantic value is
1342 * added to the options for the existing state's semantic value.
1344 static inline YYRESULTTAG
1345 yyglrReduce (yyGLRStack
* yystack
, size_t yyk
, yyRuleNum yyrule
,
1346 yybool yyforceEval
]b4_user_formals
[)
1348 size_t yyposn
= yystack
->yytops
.yystates
[yyk
]->yyposn
;
1350 if (yyforceEval
|| yystack
->yysplitPoint
== NULL
)
1355 YY_REDUCE_PRINT (yyk
, yyrule
);
1356 YYCHK (yydoAction (yystack
, yyk
, yyrule
, &yysval
, &yyloc
]b4_user_args
[));
1357 yyglrShift (yystack
, yyk
,
1358 yyLRgotoState (yystack
->yytops
.yystates
[yyk
]->yylrState
,
1359 yylhsNonterm (yyrule
)),
1360 yyposn
, yysval
, &yyloc
);
1366 yyGLRState
* yys
, *yys0
= yystack
->yytops
.yystates
[yyk
];
1367 yyStateNum yynewLRState
;
1369 for (yys
= yystack
->yytops
.yystates
[yyk
], yyn
= yyrhsLength (yyrule
);
1375 yyupdateSplit (yystack
, yys
);
1376 yynewLRState
= yyLRgotoState (yys
->yylrState
, yylhsNonterm (yyrule
));
1378 "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n",
1379 (unsigned long int) yyk
, yyrule
- 1, yynewLRState
));
1380 for (yyi
= 0; yyi
< yystack
->yytops
.yysize
; yyi
+= 1)
1381 if (yyi
!= yyk
&& yystack
->yytops
.yystates
[yyi
] != NULL
)
1383 yyGLRState
* yyp
, *yysplit
= yystack
->yysplitPoint
;
1384 yyp
= yystack
->yytops
.yystates
[yyi
];
1385 while (yyp
!= yys
&& yyp
!= yysplit
&& yyp
->yyposn
>= yyposn
)
1387 if (yyp
->yylrState
== yynewLRState
&& yyp
->yypred
== yys
)
1389 yyaddDeferredAction (yystack
, yyp
, yys0
, yyrule
);
1390 yymarkStackDeleted (yystack
, yyk
);
1391 YYDPRINTF ((stderr
, "Merging stack %lu into stack %lu.\n",
1392 (unsigned long int) yyk
,
1393 (unsigned long int) yyi
));
1399 yystack
->yytops
.yystates
[yyk
] = yys
;
1400 yyglrShiftDefer (yystack
, yyk
, yynewLRState
, yyposn
, yys0
, yyrule
);
1406 yysplitStack (yyGLRStack
* yystack
, size_t yyk
)
1408 if (yystack
->yysplitPoint
== NULL
)
1410 YYASSERT (yyk
== 0);
1411 yystack
->yysplitPoint
= yystack
->yytops
.yystates
[yyk
];
1413 if (yystack
->yytops
.yysize
>= yystack
->yytops
.yycapacity
)
1415 yyGLRState
** yynewStates
;
1416 if (! ((yystack
->yytops
.yycapacity
1417 <= (YYSIZEMAX
/ (2 * sizeof yynewStates
[0])))
1419 (yyGLRState
**) YYREALLOC (yystack
->yytops
.yystates
,
1420 ((yystack
->yytops
.yycapacity
*= 2)
1421 * sizeof yynewStates
[0])))))
1422 yyMemoryExhausted (yystack
);
1423 yystack
->yytops
.yystates
= yynewStates
;
1425 yystack
->yytops
.yystates
[yystack
->yytops
.yysize
]
1426 = yystack
->yytops
.yystates
[yyk
];
1427 yystack
->yytops
.yysize
+= 1;
1428 return yystack
->yytops
.yysize
-1;
1431 /** True iff Y0 and Y1 represent identical options at the top level.
1432 * That is, they represent the same rule applied to RHS symbols
1433 * that produce the same terminal symbols. */
1435 yyidenticalOptions (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
)
1437 if (yyy0
->yyrule
== yyy1
->yyrule
)
1439 yyGLRState
*yys0
, *yys1
;
1441 for (yys0
= yyy0
->yystate
, yys1
= yyy1
->yystate
,
1442 yyn
= yyrhsLength (yyy0
->yyrule
);
1444 yys0
= yys0
->yypred
, yys1
= yys1
->yypred
, yyn
-= 1)
1445 if (yys0
->yyposn
!= yys1
->yyposn
)
1453 /** Assuming identicalOptions (Y0,Y1), destructively merge the
1454 * alternative semantic values for the RHS-symbols of Y1 and Y0. */
1456 yymergeOptionSets (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
)
1458 yyGLRState
*yys0
, *yys1
;
1460 for (yys0
= yyy0
->yystate
, yys1
= yyy1
->yystate
,
1461 yyn
= yyrhsLength (yyy0
->yyrule
);
1463 yys0
= yys0
->yypred
, yys1
= yys1
->yypred
, yyn
-= 1)
1467 else if (yys0
->yyresolved
)
1469 yys1
->yyresolved
= yytrue
;
1470 yys1
->yysemantics
.yysval
= yys0
->yysemantics
.yysval
;
1472 else if (yys1
->yyresolved
)
1474 yys0
->yyresolved
= yytrue
;
1475 yys0
->yysemantics
.yysval
= yys1
->yysemantics
.yysval
;
1479 yySemanticOption
** yyz0p
;
1480 yySemanticOption
* yyz1
;
1481 yyz0p
= &yys0
->yysemantics
.yyfirstVal
;
1482 yyz1
= yys1
->yysemantics
.yyfirstVal
;
1485 if (yyz1
== *yyz0p
|| yyz1
== NULL
)
1487 else if (*yyz0p
== NULL
)
1492 else if (*yyz0p
< yyz1
)
1494 yySemanticOption
* yyz
= *yyz0p
;
1496 yyz1
= yyz1
->yynext
;
1497 (*yyz0p
)->yynext
= yyz
;
1499 yyz0p
= &(*yyz0p
)->yynext
;
1501 yys1
->yysemantics
.yyfirstVal
= yys0
->yysemantics
.yyfirstVal
;
1506 /** Y0 and Y1 represent two possible actions to take in a given
1507 * parsing state; return 0 if no combination is possible,
1508 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
1510 yypreference (yySemanticOption
* y0
, yySemanticOption
* y1
)
1512 yyRuleNum r0
= y0
->yyrule
, r1
= y1
->yyrule
;
1513 int p0
= yydprec
[r0
], p1
= yydprec
[r1
];
1517 if (yymerger
[r0
] == 0 || yymerger
[r0
] != yymerger
[r1
])
1522 if (p0
== 0 || p1
== 0)
1531 static YYRESULTTAG
yyresolveValue (yySemanticOption
* yyoptionList
,
1532 yyGLRStack
* yystack
, YYSTYPE
* yyvalp
,
1533 YYLTYPE
* yylocp
]b4_user_formals
[);
1536 yyresolveStates (yyGLRState
* yys
, int yyn
, yyGLRStack
* yystack
]b4_user_formals
[)
1541 YYASSERT (yys
->yypred
);
1542 yyflag
= yyresolveStates (yys
->yypred
, yyn
-1, yystack
]b4_user_args
[);
1545 if (! yys
->yyresolved
)
1547 yyflag
= yyresolveValue (yys
->yysemantics
.yyfirstVal
, yystack
,
1548 &yys
->yysemantics
.yysval
, &yys
->yyloc
1552 yys
->yyresolved
= yytrue
;
1559 yyresolveAction (yySemanticOption
* yyopt
, yyGLRStack
* yystack
,
1560 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1562 yyGLRStackItem yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
+ 1];
1565 yynrhs
= yyrhsLength (yyopt
->yyrule
);
1566 YYCHK (yyresolveStates (yyopt
->yystate
, yynrhs
, yystack
]b4_user_args
[));
1567 yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
].yystate
.yypred
= yyopt
->yystate
;
1568 return yyuserAction (yyopt
->yyrule
, yynrhs
,
1569 yyrhsVals
+ YYMAXRHS
+ YYMAXLEFT
- 1,
1570 yyvalp
, yylocp
, yystack
]b4_user_args
[);
1575 yyreportTree (yySemanticOption
* yyx
, int yyindent
)
1577 int yynrhs
= yyrhsLength (yyx
->yyrule
);
1580 yyGLRState
* yystates
[YYMAXRHS
];
1581 yyGLRState yyleftmost_state
;
1583 for (yyi
= yynrhs
, yys
= yyx
->yystate
; 0 < yyi
; yyi
-= 1, yys
= yys
->yypred
)
1584 yystates
[yyi
] = yys
;
1587 yyleftmost_state
.yyposn
= 0;
1588 yystates
[0] = &yyleftmost_state
;
1593 if (yyx
->yystate
->yyposn
< yys
->yyposn
+ 1)
1594 YYFPRINTF (stderr
, "%*s%s -> <Rule %d, empty>\n",
1595 yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)),
1598 YYFPRINTF (stderr
, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
1599 yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)),
1600 yyx
->yyrule
, (unsigned long int) (yys
->yyposn
+ 1),
1601 (unsigned long int) yyx
->yystate
->yyposn
);
1602 for (yyi
= 1; yyi
<= yynrhs
; yyi
+= 1)
1604 if (yystates
[yyi
]->yyresolved
)
1606 if (yystates
[yyi
-1]->yyposn
+1 > yystates
[yyi
]->yyposn
)
1607 YYFPRINTF (stderr
, "%*s%s <empty>\n", yyindent
+2, "",
1608 yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]));
1610 YYFPRINTF (stderr
, "%*s%s <tokens %lu .. %lu>\n", yyindent
+2, "",
1611 yytokenName (yyrhs
[yyprhs
[yyx
->yyrule
]+yyi
-1]),
1612 (unsigned long int) (yystates
[yyi
- 1]->yyposn
+ 1),
1613 (unsigned long int) yystates
[yyi
]->yyposn
);
1616 yyreportTree (yystates
[yyi
]->yysemantics
.yyfirstVal
, yyindent
+2);
1621 static void yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
,
1622 yyGLRStack
* yystack
]b4_pure_formals
[)
1623 __attribute__ ((__noreturn__
));
1625 yyreportAmbiguity (yySemanticOption
* yyx0
, yySemanticOption
* yyx1
,
1626 yyGLRStack
* yystack
]b4_pure_formals
[)
1632 YYFPRINTF (stderr
, "Ambiguity detected.\n");
1633 YYFPRINTF (stderr
, "Option 1,\n");
1634 yyreportTree (yyx0
, 2);
1635 YYFPRINTF (stderr
, "\nOption 2,\n");
1636 yyreportTree (yyx1
, 2);
1637 YYFPRINTF (stderr
, "\n");
1639 yyFail (yystack
][]b4_pure_args
[, YY_("syntax is ambiguous"));
1643 /** Resolve the ambiguity represented by OPTIONLIST, perform the indicated
1644 * actions, and return the result. */
1646 yyresolveValue (yySemanticOption
* yyoptionList
, yyGLRStack
* yystack
,
1647 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1649 yySemanticOption
* yybest
;
1650 yySemanticOption
** yypp
;
1653 yybest
= yyoptionList
;
1655 for (yypp
= &yyoptionList
->yynext
; *yypp
!= NULL
; )
1657 yySemanticOption
* yyp
= *yypp
;
1659 if (yyidenticalOptions (yybest
, yyp
))
1661 yymergeOptionSets (yybest
, yyp
);
1662 *yypp
= yyp
->yynext
;
1666 switch (yypreference (yybest
, yyp
))
1669 yyreportAmbiguity (yybest
, yyp
, yystack
]b4_pure_args
[);
1681 /* This cannot happen so it is not worth a YYASSERT (yyfalse),
1682 but some compilers complain if the default case is
1686 yypp
= &yyp
->yynext
;
1692 yySemanticOption
* yyp
;
1693 int yyprec
= yydprec
[yybest
->yyrule
];
1694 YYCHK (yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[));
1695 for (yyp
= yybest
->yynext
; yyp
!= NULL
; yyp
= yyp
->yynext
)
1697 if (yyprec
== yydprec
[yyp
->yyrule
])
1701 YYCHK (yyresolveAction (yyp
, yystack
, &yyval1
, &yydummy
]b4_user_args
[));
1702 yyuserMerge (yymerger
[yyp
->yyrule
], yyvalp
, &yyval1
);
1708 return yyresolveAction (yybest
, yystack
, yyvalp
, yylocp
]b4_user_args
[);
1712 yyresolveStack (yyGLRStack
* yystack
]b4_user_formals
[)
1714 if (yystack
->yysplitPoint
!= NULL
)
1719 for (yyn
= 0, yys
= yystack
->yytops
.yystates
[0];
1720 yys
!= yystack
->yysplitPoint
;
1721 yys
= yys
->yypred
, yyn
+= 1)
1723 YYCHK (yyresolveStates (yystack
->yytops
.yystates
[0], yyn
, yystack
1730 yycompressStack (yyGLRStack
* yystack
)
1732 yyGLRState
* yyp
, *yyq
, *yyr
;
1734 if (yystack
->yytops
.yysize
!= 1 || yystack
->yysplitPoint
== NULL
)
1737 for (yyp
= yystack
->yytops
.yystates
[0], yyq
= yyp
->yypred
, yyr
= NULL
;
1738 yyp
!= yystack
->yysplitPoint
;
1739 yyr
= yyp
, yyp
= yyq
, yyq
= yyp
->yypred
)
1742 yystack
->yyspaceLeft
+= yystack
->yynextFree
- yystack
->yyitems
;
1743 yystack
->yynextFree
= ((yyGLRStackItem
*) yystack
->yysplitPoint
) + 1;
1744 yystack
->yyspaceLeft
-= yystack
->yynextFree
- yystack
->yyitems
;
1745 yystack
->yysplitPoint
= NULL
;
1746 yystack
->yylastDeleted
= NULL
;
1750 yystack
->yynextFree
->yystate
= *yyr
;
1752 yystack
->yynextFree
->yystate
.yypred
= & yystack
->yynextFree
[-1].yystate
;
1753 yystack
->yytops
.yystates
[0] = &yystack
->yynextFree
->yystate
;
1754 yystack
->yynextFree
+= 1;
1755 yystack
->yyspaceLeft
-= 1;
1760 yyprocessOneStack (yyGLRStack
* yystack
, size_t yyk
,
1761 size_t yyposn
, YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
1765 const short int* yyconflicts
;
1767 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1769 while (yystack
->yytops
.yystates
[yyk
] != NULL
)
1771 yyStateNum yystate
= yystack
->yytops
.yystates
[yyk
]->yylrState
;
1772 YYDPRINTF ((stderr
, "Stack %lu Entering state %d\n",
1773 (unsigned long int) yyk
, yystate
));
1775 YYASSERT (yystate
!= YYFINAL
);
1777 if (yyisDefaultedState (yystate
))
1779 yyrule
= yydefaultAction (yystate
);
1782 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1783 (unsigned long int) yyk
));
1784 yymarkStackDeleted (yystack
, yyk
);
1787 YYCHK (yyglrReduce (yystack
, yyk
, yyrule
, yyfalse
]b4_user_args
[));
1791 if (*yytokenp
== YYEMPTY
)
1793 YYDPRINTF ((stderr
, "Reading a token: "));
1795 *yytokenp
= YYTRANSLATE (yychar
);
1796 YY_SYMBOL_PRINT ("Next token is", *yytokenp
, yylvalp
, yyllocp
);
1798 yygetLRActions (yystate
, *yytokenp
, &yyaction
, &yyconflicts
);
1800 while (*yyconflicts
!= 0)
1802 size_t yynewStack
= yysplitStack (yystack
, yyk
);
1803 YYDPRINTF ((stderr
, "Splitting off stack %lu from %lu.\n",
1804 (unsigned long int) yynewStack
,
1805 (unsigned long int) yyk
));
1806 YYCHK (yyglrReduce (yystack
, yynewStack
,
1807 *yyconflicts
, yyfalse
]b4_user_args
[));
1808 YYCHK (yyprocessOneStack (yystack
, yynewStack
, yyposn
,
1809 yylvalp
, yyllocp
]b4_pure_args
[));
1813 if (yyisShiftAction (yyaction
))
1815 YYDPRINTF ((stderr
, "On stack %lu, ", (unsigned long int) yyk
));
1816 YY_SYMBOL_PRINT ("shifting", *yytokenp
, yylvalp
, yyllocp
);
1817 yyglrShift (yystack
, yyk
, yyaction
, yyposn
+1,
1819 YYDPRINTF ((stderr
, "Stack %lu now in state #%d\n",
1820 (unsigned long int) yyk
,
1821 yystack
->yytops
.yystates
[yyk
]->yylrState
));
1824 else if (yyisErrorAction (yyaction
))
1826 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1827 (unsigned long int) yyk
));
1828 yymarkStackDeleted (yystack
, yyk
);
1832 YYCHK (yyglrReduce (yystack
, yyk
, -yyaction
, yyfalse
]b4_user_args
[));
1839 yyreportSyntaxError (yyGLRStack
* yystack
,
1840 YYSTYPE
* yylvalp
, YYLTYPE
* yyllocp
]b4_user_formals
[)
1845 if (yystack
->yyerrState
== 0)
1848 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1850 yyn
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
];
1851 if (YYPACT_NINF
< yyn
&& yyn
< YYLAST
)
1853 size_t yysize0
= yytnamerr (NULL
, yytokenName (*yytokenp
));
1854 size_t yysize
= yysize0
;
1856 yybool yysize_overflow
= yyfalse
;
1858 enum { YYERROR_VERBOSE_ARGS_MAXIMUM
= 5 };
1859 char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
];
1863 static char const yyunexpected
[] = "syntax error, unexpected %s";
1864 static char const yyexpecting
[] = ", expecting %s";
1865 static char const yyor
[] = " or %s";
1866 char yyformat
[sizeof yyunexpected
1867 + sizeof yyexpecting
- 1
1868 + ((YYERROR_VERBOSE_ARGS_MAXIMUM
- 2)
1869 * (sizeof yyor
- 1))];
1870 char const *yyprefix
= yyexpecting
;
1872 /* Start YYX at -YYN if negative to avoid negative indexes in
1874 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
1876 /* Stay within bounds of both yycheck and yytname. */
1877 int yychecklim
= YYLAST
- yyn
;
1878 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
1881 yyarg
[0] = yytokenName (*yytokenp
);
1882 yyfmt
= yystpcpy (yyformat
, yyunexpected
);
1884 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
1885 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
1887 if (yycount
== YYERROR_VERBOSE_ARGS_MAXIMUM
)
1891 yyformat
[sizeof yyunexpected
- 1] = '\0';
1894 yyarg
[yycount
++] = yytokenName (yyx
);
1895 yysize1
= yysize
+ yytnamerr (NULL
, yytokenName (yyx
));
1896 yysize_overflow
|= yysize1
< yysize
;
1898 yyfmt
= yystpcpy (yyfmt
, yyprefix
);
1902 yyf
= YY_(yyformat
);
1903 yysize1
= yysize
+ strlen (yyf
);
1904 yysize_overflow
|= yysize1
< yysize
;
1907 if (!yysize_overflow
)
1908 yymsg
= (char *) YYMALLOC (yysize
);
1914 while ((*yyp
= *yyf
))
1916 if (*yyp
== '%' && yyf
[1] == 's' && yyi
< yycount
)
1918 yyp
+= yytnamerr (yyp
, yyarg
[yyi
++]);
1927 yyerror (]b4_lyyerror_args
[yymsg
);
1932 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
1933 yyMemoryExhausted (yystack
);
1937 #endif /* YYERROR_VERBOSE */
1938 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
1943 /* Recover from a syntax error on YYSTACK, assuming that YYTOKENP,
1944 YYLVALP, and YYLLOCP point to the syntactic category, semantic
1945 value, and location of the look-ahead. */
1947 yyrecoverSyntaxError (yyGLRStack
* yystack
,
1949 YYLTYPE
* YYOPTIONAL_LOC (yyllocp
)
1952 yySymbol
* const yytokenp
= yystack
->yytokenp
;
1956 if (yystack
->yyerrState
== 3)
1957 /* We just shifted the error token and (perhaps) took some
1958 reductions. Skip tokens until we can proceed. */
1961 if (*yytokenp
== YYEOF
)
1962 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1963 if (*yytokenp
!= YYEMPTY
)
1965 /* We throw away the lookahead, but the error range
1966 of the shifted error token must take it into account. */
1967 yyGLRState
*yys
= yystack
->yytops
.yystates
[0];
1968 yyGLRStackItem yyerror_range
[3];
1969 yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;
1970 yyerror_range
[2].yystate
.yyloc
= *yyllocp
;
1971 YYLLOC_DEFAULT (yys
->yyloc
, yyerror_range
, 2);]])[
1972 yydestruct ("Error: discarding",
1973 *yytokenp
, yylvalp
]b4_location_if([, yyllocp
])[]b4_user_args
[);
1975 YYDPRINTF ((stderr
, "Reading a token: "));
1977 *yytokenp
= YYTRANSLATE (yychar
);
1978 YY_SYMBOL_PRINT ("Next token is", *yytokenp
, yylvalp
, yyllocp
);
1979 yyj
= yypact
[yystack
->yytops
.yystates
[0]->yylrState
];
1980 if (yyis_pact_ninf (yyj
))
1983 if (yyj
< 0 || YYLAST
< yyj
|| yycheck
[yyj
] != *yytokenp
)
1985 if (yydefact
[yystack
->yytops
.yystates
[0]->yylrState
] != 0)
1988 else if (yytable
[yyj
] != 0 && ! yyis_table_ninf (yytable
[yyj
]))
1992 /* Reduce to one stack. */
1993 for (yyk
= 0; yyk
< yystack
->yytops
.yysize
; yyk
+= 1)
1994 if (yystack
->yytops
.yystates
[yyk
] != NULL
)
1996 if (yyk
>= yystack
->yytops
.yysize
)
1997 yyFail (yystack
][]b4_lpure_args
[, NULL
);
1998 for (yyk
+= 1; yyk
< yystack
->yytops
.yysize
; yyk
+= 1)
1999 yymarkStackDeleted (yystack
, yyk
);
2000 yyremoveDeletes (yystack
);
2001 yycompressStack (yystack
);
2003 /* Now pop stack until we find a state that shifts the error token. */
2004 yystack
->yyerrState
= 3;
2005 while (yystack
->yytops
.yystates
[0] != NULL
)
2007 yyGLRState
*yys
= yystack
->yytops
.yystates
[0];
2008 yyj
= yypact
[yys
->yylrState
];
2009 if (! yyis_pact_ninf (yyj
))
2012 if (0 <= yyj
&& yyj
<= YYLAST
&& yycheck
[yyj
] == YYTERROR
2013 && yyisShiftAction (yytable
[yyj
]))
2015 /* Shift the error token having adjusted its location. */
2016 YYLTYPE yyerrloc
;]b4_location_if([[
2017 yystack
->yyerror_range
[2].yystate
.yyloc
= *yyllocp
;
2018 YYLLOC_DEFAULT (yyerrloc
, yystack
->yyerror_range
, 2);]])[
2019 YY_SYMBOL_PRINT ("Shifting", yystos
[yytable
[yyj
]],
2020 yylvalp
, &yyerrloc
);
2021 yyglrShift (yystack
, 0, yytable
[yyj
],
2022 yys
->yyposn
, *yylvalp
, &yyerrloc
);
2023 yys
= yystack
->yytops
.yystates
[0];
2027 ]b4_location_if([[ yystack
->yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]])[
2028 yydestroyGLRState ("Error: popping", yys
]b4_user_args
[);
2029 yystack
->yytops
.yystates
[0] = yys
->yypred
;
2030 yystack
->yynextFree
-= 1;
2031 yystack
->yyspaceLeft
+= 1;
2033 if (yystack
->yytops
.yystates
[0] == NULL
)
2034 yyFail (yystack
][]b4_lpure_args
[, NULL
);
2037 #define YYCHK1(YYE) \
2047 goto yyuser_error; \
2051 } while (/*CONSTCOND*/ 0)
2058 ]b4_c_ansi_function_def([yyparse
], [int], b4_parse_param
)[
2069 #define yychar (yystack.yyrawchar)
2072 YYSTYPE
* const yylvalp
= &yylval
;
2073 YYLTYPE
* const yyllocp
= &yylloc
;
2075 YYDPRINTF ((stderr
, "Starting parse\n"));
2078 yylval
= yyval_default
;
2080 #if YYLTYPE_IS_TRIVIAL
2081 yylloc
.first_line
= yylloc
.last_line
= 1;
2082 yylloc
.first_column
= yylloc
.last_column
= 0;
2085 m4_ifdef([b4_initial_action
], [
2086 m4_pushdef([b4_at_dollar
], [yylloc
])dnl
2087 m4_pushdef([b4_dollar_dollar
], [yylval
])dnl
2088 /* User initialization code. */
2090 m4_popdef([b4_dollar_dollar
])dnl
2091 m4_popdef([b4_at_dollar
])dnl
2092 /* Line __line__ of glr.c. */
2093 b4_syncline([@oline@
], [@ofile@
])])dnl
2095 if (! yyinitGLRStack (&yystack
, YYINITDEPTH
))
2096 goto yyexhaustedlab
;
2097 switch (YYSETJMP (yystack
.yyexception_buffer
))
2100 case 1: goto yyabortlab
;
2101 case 2: goto yyexhaustedlab
;
2102 default: goto yybuglab
;
2104 yystack
.yytokenp
= &yytoken
;
2105 yyglrShift (&yystack
, 0, 0, 0, yylval
, &yylloc
);
2110 /* For efficiency, we have two loops, the first of which is
2111 specialized to deterministic operation (single stack, no
2112 potential ambiguity). */
2118 const short int* yyconflicts
;
2120 yyStateNum yystate
= yystack
.yytops
.yystates
[0]->yylrState
;
2121 YYDPRINTF ((stderr
, "Entering state %d\n", yystate
));
2122 if (yystate
== YYFINAL
)
2124 if (yyisDefaultedState (yystate
))
2126 yyrule
= yydefaultAction (yystate
);
2129 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2130 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2133 YYCHK1 (yyglrReduce (&yystack
, 0, yyrule
, yytrue
]b4_user_args
[));
2137 if (yytoken
== YYEMPTY
)
2139 YYDPRINTF ((stderr
, "Reading a token: "));
2141 yytoken
= YYTRANSLATE (yychar
);
2142 YY_SYMBOL_PRINT ("Next token is", yytoken
, yylvalp
, yyllocp
);
2144 yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
);
2145 if (*yyconflicts
!= 0)
2147 if (yyisShiftAction (yyaction
))
2149 YY_SYMBOL_PRINT ("Shifting", yytoken
, yylvalp
, yyllocp
);
2150 if (yytoken
!= YYEOF
)
2153 yyglrShift (&yystack
, 0, yyaction
, yyposn
, yylval
, yyllocp
);
2154 if (0 < yystack
.yyerrState
)
2155 yystack
.yyerrState
-= 1;
2157 else if (yyisErrorAction (yyaction
))
2159 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2160 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2164 YYCHK1 (yyglrReduce (&yystack
, 0, -yyaction
, yytrue
]b4_user_args
[));
2171 size_t yyn
= yystack
.yytops
.yysize
;
2172 for (yys
= 0; yys
< yyn
; yys
+= 1)
2173 YYCHK1 (yyprocessOneStack (&yystack
, yys
, yyposn
,
2174 yylvalp
, yyllocp
]b4_lpure_args
[));
2177 yyremoveDeletes (&yystack
);
2178 if (yystack
.yytops
.yysize
== 0)
2180 yyundeleteLastStack (&yystack
);
2181 if (yystack
.yytops
.yysize
== 0)
2182 yyFail (&yystack
][]b4_lpure_args
[, YY_("syntax error"));
2183 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2184 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2185 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= *yyllocp
;]])[
2186 yyreportSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2189 else if (yystack
.yytops
.yysize
== 1)
2191 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2192 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2193 yycompressStack (&yystack
);
2199 yyrecoverSyntaxError (&yystack
, yylvalp
, yyllocp
]b4_user_args
[);
2200 yyposn
= yystack
.yytops
.yystates
[0]->yyposn
;
2216 yyerror (]b4_lyyerror_args
[YY_("memory exhausted"));
2221 if (yytoken
!= YYEOF
&& yytoken
!= YYEMPTY
)
2222 yydestruct ("Cleanup: discarding lookahead",
2223 yytoken
, yylvalp
]b4_location_if([, yyllocp
])[]b4_user_args
[);
2225 /* If the stack is well-formed, pop the stack until it is empty,
2226 destroying its entries as we go. But free the stack regardless
2227 of whether it is well-formed. */
2228 if (yystack
.yyitems
)
2230 yyGLRState
** yystates
= yystack
.yytops
.yystates
;
2234 yyGLRState
*yys
= yystates
[0];
2235 ]b4_location_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]]
2236 )[ yydestroyGLRState ("Cleanup: popping", yys
]b4_user_args
[);
2237 yystates
[0] = yys
->yypred
;
2238 yystack
.yynextFree
-= 1;
2239 yystack
.yyspaceLeft
+= 1;
2241 yyfreeGLRStack (&yystack
);
2247 /* DEBUGGING ONLY */
2249 static void yypstack (yyGLRStack
* yystack
, size_t yyk
)
2250 __attribute__ ((__unused__
));
2251 static void yypdumpstack (yyGLRStack
* yystack
) __attribute__ ((__unused__
));
2254 yy_yypstack (yyGLRState
* yys
)
2258 yy_yypstack (yys
->yypred
);
2259 fprintf (stderr
, " -> ");
2261 fprintf (stderr
, "%d@@%lu", yys
->yylrState
, (unsigned long int) yys
->yyposn
);
2265 yypstates (yyGLRState
* yyst
)
2268 fprintf (stderr
, "<null>");
2271 fprintf (stderr
, "\n");
2275 yypstack (yyGLRStack
* yystack
, size_t yyk
)
2277 yypstates (yystack
->yytops
.yystates
[yyk
]);
2280 #define YYINDEX(YYX) \
2281 ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystack->yyitems)
2285 yypdumpstack (yyGLRStack
* yystack
)
2287 yyGLRStackItem
* yyp
;
2289 for (yyp
= yystack
->yyitems
; yyp
< yystack
->yynextFree
; yyp
+= 1)
2291 fprintf (stderr
, "%3lu. ", (unsigned long int) (yyp
- yystack
->yyitems
));
2292 if (*(yybool
*) yyp
)
2294 fprintf (stderr
, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
2295 yyp
->yystate
.yyresolved
, yyp
->yystate
.yylrState
,
2296 (unsigned long int) yyp
->yystate
.yyposn
,
2297 (long int) YYINDEX (yyp
->yystate
.yypred
));
2298 if (! yyp
->yystate
.yyresolved
)
2299 fprintf (stderr
, ", firstVal: %ld",
2300 (long int) YYINDEX (yyp
->yystate
.yysemantics
.yyfirstVal
));
2304 fprintf (stderr
, "Option. rule: %d, state: %ld, next: %ld",
2305 yyp
->yyoption
.yyrule
,
2306 (long int) YYINDEX (yyp
->yyoption
.yystate
),
2307 (long int) YYINDEX (yyp
->yyoption
.yynext
));
2309 fprintf (stderr
, "\n");
2311 fprintf (stderr
, "Tops:");
2312 for (yyi
= 0; yyi
< yystack
->yytops
.yysize
; yyi
+= 1)
2313 fprintf (stderr
, "%lu: %ld; ", (unsigned long int) yyi
,
2314 (long int) YYINDEX (yystack
->yytops
.yystates
[yyi
]));
2315 fprintf (stderr
, "\n");
2321 m4_if(b4_defines_flag
, 0, [],
2322 [@output @output_header_name@
2323 b4_copyright([Skeleton parser
for GLR parsing with Bison
],
2324 [2002, 2003, 2004, 2005])
2326 b4_token_enums(b4_tokens
)
2328 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
2329 m4_ifdef([b4_stype
],
2330 [b4_syncline([b4_stype_line
], [b4_file_name
])
2331 typedef union m4_bregexp(b4_stype
, [^{], [YYSTYPE
])b4_stype YYSTYPE
;
2332 /* Line __line__ of glr.c. */
2333 b4_syncline([@oline@
], [@ofile@
])],
2334 [typedef int YYSTYPE
;])
2335 # define YYSTYPE_IS_DECLARED 1
2336 # define YYSTYPE_IS_TRIVIAL 1
2340 [extern YYSTYPE b4_prefix
[]lval
;])
2342 #if ! defined (YYLTYPE) && ! defined (YYLTYPE_IS_DECLARED)
2343 typedef struct YYLTYPE
2354 # define YYLTYPE_IS_DECLARED 1
2355 # define YYLTYPE_IS_TRIVIAL 1
2358 b4_location_if([b4_pure_if([],
2359 [extern YYLTYPE b4_prefix
[]lloc
;])