3 # GLR skeleton for Bison
4 # Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software
7 # This program is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
21 m4_include(b4_pkgdatadir
/[c
.m4
])
23 ## ---------------- ##
25 ## ---------------- ##
28 m4_define_default([b4_stack_depth_max
], [10000])
29 m4_define_default([b4_stack_depth_init
], [200])
33 ## ------------------------ ##
34 ## Pure/impure interfaces. ##
35 ## ------------------------ ##
37 b4_define_flag_if([pure
])
38 # If glr.cc is including this file and thus has already set b4_pure_flag, don't
39 # change the value of b4_pure_flag, and don't record a use of api.pure.
40 m4_ifndef([b4_pure_flag
],
41 [b4_percent_define_default([[api
.pure
]], [[false]])
42 m4_define([b4_pure_flag
],
43 [b4_percent_define_flag_if([[api
.pure
]], [[1]], [[0]])])])
47 # The possible parse-params formal arguments preceded by a comma.
49 # This is not shared with yacc.c in c.m4 because GLR relies on ISO C
50 # formal argument declarations.
51 m4_define([b4_user_formals
],
52 [m4_ifset([b4_parse_param
], [, b4_c_ansi_formals(b4_parse_param
)])])
57 # Accumule in b4_lex_param all the yylex arguments.
58 # Yes, this is quite ugly...
59 m4_define([b4_lex_param
],
60 m4_dquote(b4_pure_if([[[[YYSTYPE
*]], [[&yylval
]]][]dnl
61 b4_locations_if([, [[YYLTYPE
*], [&yylloc
]]])])dnl
62 m4_ifdef([b4_lex_param
], [, ]b4_lex_param
)))
67 # Optional effective arguments passed to yyerror: user args plus yylloc, and
69 m4_define([b4_yyerror_args
],
70 [b4_pure_if([b4_locations_if([yylocp
, ])])dnl
71 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])])
76 # Same as above, but on the lookahead, hence &yylloc instead of yylocp.
77 m4_define([b4_lyyerror_args
],
78 [b4_pure_if([b4_locations_if([&yylloc
, ])])dnl
79 m4_ifset([b4_parse_param
], [b4_c_args(b4_parse_param
), ])])
84 # Same as b4_yyerror_args, but with a leading comma.
85 m4_define([b4_pure_args
],
86 [b4_pure_if([b4_locations_if([, yylocp
])])[]b4_user_args
])
91 # Same as above, but on the lookahead, hence &yylloc instead of yylocp.
92 m4_define([b4_lpure_args
],
93 [b4_pure_if([b4_locations_if([, &yylloc
])])[]b4_user_args
])
98 # Arguments passed to yyerror: user formals plus yylocp.
99 m4_define([b4_pure_formals
],
100 [b4_pure_if([b4_locations_if([, YYLTYPE
*yylocp
])])[]b4_user_formals
])
103 ## ----------------- ##
104 ## Semantic Values. ##
105 ## ----------------- ##
108 # b4_lhs_value([TYPE])
109 # --------------------
110 # Expansion of $<TYPE>$.
111 m4_define([b4_lhs_value
],
112 [b4_symbol_value([(*yyvalp
)], [$
1])])
115 # b4_rhs_data(RULE-LENGTH, NUM)
116 # -----------------------------
117 # Expand to the semantic stack place that contains value and location
118 # of symbol number NUM in a rule of length RULE-LENGTH.
119 m4_define([b4_rhs_data
],
120 [((yyGLRStackItem
const *)yyvsp
)@
{YYFILL (b4_subtract([$
2], [$
1]))@
}.yystate
])
123 # b4_rhs_value(RULE-LENGTH, NUM, [TYPE])
124 # --------------------------------------
125 # Expansion of $<TYPE>NUM, where the current rule has RULE-LENGTH
127 m4_define([b4_rhs_value
],
128 [b4_symbol_value([b4_rhs_data([$
1], [$
2]).yysemantics
.yysval
], [$
3])])
139 m4_define([b4_lhs_location
],
143 # b4_rhs_location(RULE-LENGTH, NUM)
144 # ---------------------------------
145 # Expansion of @NUM, where the current rule has RULE-LENGTH symbols
147 m4_define([b4_rhs_location
],
148 [(b4_rhs_data([$
1], [$
2]).yyloc
)])
156 # We do want M4 expansion after # for CPP macros.
159 @
output(b4_parser_file_name@
)@
160 b4_copyright([Skeleton implementation
for Bison GLR parsers in C
],
161 [2002, 2003, 2004, 2005, 2006, 2007, 2008])
163 /* C GLR parser skeleton written by Paul Hilfinger. */
167 b4_percent_code_get([[top]])[]dnl
168 m4_if(b4_prefix
, [yy
], [],
169 [/* Substitute the variable and function names. */
170 #define yyparse b4_prefix[]parse
171 #define yylex b4_prefix[]lex
172 #define yyerror b4_prefix[]error
173 #define yylval b4_prefix[]lval
174 #define yychar b4_prefix[]char
175 #define yydebug b4_prefix[]debug
176 #define yynerrs b4_prefix[]nerrs
177 #define yylloc b4_prefix[]lloc])[
179 /* Copy the first part of user declarations. */
180 ]b4_user_pre_prologue
182 dnl
# b4_shared_declarations
183 dnl
# ----------------------
184 dnl
# Declaration that might either go into the header (if --defines)
185 dnl
# or open coded in the parser body.
186 m4_define([b4_shared_declarations
],
187 [b4_percent_code_get([[requires]])[]dnl
189 b4_token_enums(b4_tokens
)
192 ]m4_ifdef([b4_stype
],
193 [[typedef union ]b4_union_name
[
197 # define YYSTYPE_IS_TRIVIAL 1]],
198 [m4_if(b4_tag_seen_flag
, 0,
199 [[typedef int YYSTYPE
;
200 # define YYSTYPE_IS_TRIVIAL 1]])])[
203 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
204 typedef struct YYLTYPE
215 # define YYLTYPE_IS_DECLARED 1
216 # define YYLTYPE_IS_TRIVIAL 1
219 ]b4_percent_code_get([[provides]])[]dnl
222 b4_defines_if([[#include "@basename(]b4_spec_defines_file[@)"]],
223 [b4_shared_declarations
])[
225 /* Enabling traces. */
227 # define YYDEBUG ]b4_debug_flag[
230 /* Enabling verbose error messages. */
231 #ifdef YYERROR_VERBOSE
232 # undef YYERROR_VERBOSE
233 # define YYERROR_VERBOSE 1
235 # define YYERROR_VERBOSE ]b4_error_verbose_flag[
238 /* Enabling the token table. */
239 #ifndef YYTOKEN_TABLE
240 # define YYTOKEN_TABLE ]b4_token_table[
243 /* Default (constant) value used for initialization for null
244 right-hand sides. Unlike the standard yacc.c template,
245 here we set the default value of $$ to a zeroed-out value.
246 Since the default value is undefined, this behavior is
247 technically correct. */
248 static YYSTYPE yyval_default
;
250 /* Copy the second part of user declarations. */
251 ]b4_user_post_prologue
252 b4_percent_code_get
[]dnl
261 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
262 # define YY_(msgid) dgettext ("bison-runtime", msgid)
266 # define YY_(msgid) msgid
270 /* Suppress unused-variable warnings by "using" E. */
271 #if ! defined lint || defined __GNUC__
272 # define YYUSE(e) ((void) (e))
274 # define YYUSE(e) /* empty */
277 /* Identity function, used to suppress warnings about constant conditions. */
281 ]b4_c_function_def([YYID
], [static int], [[int i
], [i
]])[
291 # define YYMALLOC malloc
294 # define YYREALLOC realloc
297 #define YYSIZEMAX ((size_t) -1)
302 typedef unsigned char yybool
;
309 # define YYJMP_BUF jmp_buf
310 # define YYSETJMP(env) setjmp (env)
311 # define YYLONGJMP(env, val) longjmp (env, val)
318 #ifndef __attribute__
319 /* This feature is available in gcc versions 2.5 and later. */
320 # if (! defined __GNUC__ || __GNUC__ < 2 \
321 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__)
322 # define __attribute__(Spec) /* empty */
326 ]b4_locations_if([#define YYOPTIONAL_LOC(Name) Name],[
328 # define YYOPTIONAL_LOC(Name) /* empty */
330 # define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__))
334 # define YYASSERT(condition) ((void) ((condition) || (abort (), 0)))
337 /* YYFINAL -- State number of the termination state. */
338 #define YYFINAL ]b4_final_state_number[
339 /* YYLAST -- Last index in YYTABLE. */
340 #define YYLAST ]b4_last[
342 /* YYNTOKENS -- Number of terminals. */
343 #define YYNTOKENS ]b4_tokens_number[
344 /* YYNNTS -- Number of nonterminals. */
345 #define YYNNTS ]b4_nterms_number[
346 /* YYNRULES -- Number of rules. */
347 #define YYNRULES ]b4_rules_number[
348 /* YYNRULES -- Number of states. */
349 #define YYNSTATES ]b4_states_number[
350 /* YYMAXRHS -- Maximum number of symbols on right-hand side of rule. */
351 #define YYMAXRHS ]b4_r2_max[
352 /* YYMAXLEFT -- Maximum number of symbols to the left of a handle
353 accessed by $0, $-1, etc., in any rule. */
354 #define YYMAXLEFT ]b4_max_left_semantic_context[
356 /* YYTRANSLATE(X) -- Bison symbol number corresponding to X. */
357 #define YYUNDEFTOK ]b4_undef_token_number[
358 #define YYMAXUTOK ]b4_user_token_number_max[
360 #define YYTRANSLATE(YYX) \
361 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
363 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
364 static const ]b4_int_type_for([b4_translate
])[ yytranslate
[] =
370 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
371 static const ]b4_int_type_for([b4_rline
])[ yyrline
[] =
377 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
378 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
379 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
380 static const char *const yytname
[] =
386 #define YYPACT_NINF ]b4_pact_ninf[
387 #define YYTABLE_NINF ]b4_table_ninf[
389 ]b4_parser_tables_define
[
391 /* YYDPREC[RULE-NUM] -- Dynamic precedence of rule #RULE-NUM (0 if none). */
392 static const ]b4_int_type_for([b4_dprec
])[ yydprec
[] =
397 /* YYMERGER[RULE-NUM] -- Index of merging function for rule #RULE-NUM. */
398 static const ]b4_int_type_for([b4_merger
])[ yymerger
[] =
403 /* YYCONFLP[YYPACT[STATE-NUM]] -- Pointer into YYCONFL of start of
404 list of conflicting reductions corresponding to action entry for
405 state STATE-NUM in yytable. 0 means no conflicts. The list in
406 yyconfl is terminated by a rule number of 0. */
407 static const ]b4_int_type_for([b4_conflict_list_heads
])[ yyconflp
[] =
409 ]b4_conflict_list_heads
[
412 /* YYCONFL[I] -- lists of conflicting rule numbers, each terminated by
413 0, pointed into by YYCONFLP. */
414 ]dnl Do
not use b4_int_type_for here
, since there are places where
415 dnl pointers onto yyconfl are taken
, which type is
"short int *".
416 dnl We probably ought to introduce a type
for confl
.
417 [static const short int yyconfl
[] =
419 ]b4_conflicting_rules
[
422 /* Prevent warning if -Wmissing-prototypes. */
423 ]b4_c_ansi_function_decl([yyparse
], [int], b4_parse_param
)[
425 /* Error token number */
428 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
429 If N is 0, then set CURRENT to the empty location which ends
430 the previous symbol: RHS[0] (always defined). */
433 #define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
434 #ifndef YYLLOC_DEFAULT
435 # define YYLLOC_DEFAULT(Current, Rhs, N) \
439 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
440 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
441 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
442 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
446 (Current).first_line = (Current).last_line = \
447 YYRHSLOC (Rhs, 0).last_line; \
448 (Current).first_column = (Current).last_column = \
449 YYRHSLOC (Rhs, 0).last_column; \
453 /* YY_LOCATION_PRINT -- Print the location on the stream.
454 This macro was not mandated originally: define only if we know
455 we won't break user code: when these are the locations we know. */
457 # define YY_LOCATION_PRINT(File, Loc) \
458 fprintf (File, "%d.%d-%d.%d", \
459 (Loc).first_line, (Loc).first_column, \
460 (Loc).last_line, (Loc).last_column)
463 #ifndef YYLLOC_DEFAULT
464 # define YYLLOC_DEFAULT(Current, Rhs, N) ((void) 0)
468 #ifndef YY_LOCATION_PRINT
469 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
473 /* YYLEX -- calling `yylex' with the right arguments. */
474 #define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
479 #define yynerrs (yystackp->yyerrcnt)
481 #define yychar (yystackp->yyrawchar)
483 #define yylval (yystackp->yyval)
485 #define yylloc (yystackp->yyloc)
486 m4_if(b4_prefix
[], [yy
], [],
487 [#define b4_prefix[]nerrs yynerrs
488 #define b4_prefix[]char yychar
489 #define b4_prefix[]lval yylval
490 #define b4_prefix[]lloc yylloc])],
498 static const int YYEOF
= 0;
499 static const int YYEMPTY
= -2;
501 typedef enum { yyok
, yyaccept
, yyabort
, yyerr
} YYRESULTTAG
;
505 YYRESULTTAG yyflag = YYE; \
506 if (yyflag != yyok) \
513 # define YYFPRINTF fprintf
516 # define YYDPRINTF(Args) \
522 ]b4_yy_symbol_print_generate([b4_c_ansi_function_def
])[
524 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
528 YYFPRINTF (stderr, "%s ", Title); \
529 yy_symbol_print (stderr, Type, \
530 Value]b4_locations_if([, Location])[]b4_user_args[); \
531 YYFPRINTF (stderr, "\n"); \
535 /* Nonzero means print parse trace. It is left uninitialized so that
536 multiple parsers can coexist. */
541 # define YYDPRINTF(Args)
542 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
544 #endif /* !YYDEBUG */
546 /* YYINITDEPTH -- initial size of the parser's stacks. */
548 # define YYINITDEPTH ]b4_stack_depth_init[
551 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
552 if the built-in stack extension method is used).
554 Do not make this value too large; the results are undefined if
555 SIZE_MAX < YYMAXDEPTH * sizeof (GLRStackItem)
556 evaluated with infinite-precision integer arithmetic. */
559 # define YYMAXDEPTH ]b4_stack_depth_max[
562 /* Minimum number of free items on the stack allowed after an
563 allocation. This is to allow allocation and initialization
564 to be completed by functions that call yyexpandGLRStack before the
565 stack is expanded, thus insuring that all necessary pointers get
566 properly redirected to new data. */
569 #ifndef YYSTACKEXPANDABLE
570 # if (! defined __cplusplus \
571 || (]b4_locations_if([[defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
572 && ]])[defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))
573 # define YYSTACKEXPANDABLE 1
575 # define YYSTACKEXPANDABLE 0
579 #if YYSTACKEXPANDABLE
580 # define YY_RESERVE_GLRSTACK(Yystack) \
582 if (Yystack->yyspaceLeft < YYHEADROOM) \
583 yyexpandGLRStack (Yystack); \
586 # define YY_RESERVE_GLRSTACK(Yystack) \
588 if (Yystack->yyspaceLeft < YYHEADROOM) \
589 yyMemoryExhausted (Yystack); \
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 yyGLRStateSet yyGLRStateSet
;
680 typedef struct yySemanticOption yySemanticOption
;
681 typedef union yyGLRStackItem yyGLRStackItem
;
682 typedef struct yyGLRStack yyGLRStack
;
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 /** During nondeterministic operation, yylookaheadNeeds tracks which
711 * stacks have actually needed the current lookahead. During deterministic
712 * operation, yylookaheadNeeds[0] is not maintained since it would merely
713 * duplicate yychar != YYEMPTY. */
714 yybool
* yylookaheadNeeds
;
715 size_t yysize
, yycapacity
;
718 struct yySemanticOption
{
719 /** Type tag: always false. */
721 /** Rule number for this reduction */
723 /** The last RHS state in the list of states to be reduced. */
725 /** The lookahead for this reduction. */
729 /** Next sibling in chain of options. To facilitate merging,
730 * options are chained in decreasing order by address. */
731 yySemanticOption
* yynext
;
734 /** Type of the items in the GLR stack. The yyisState field
735 * indicates which item of the union is valid. */
736 union yyGLRStackItem
{
738 yySemanticOption yyoption
;
743 ]b4_locations_if([[ /* To compute the location of the error token. */
744 yyGLRStackItem yyerror_range
[3];]])[
752 YYJMP_BUF yyexception_buffer
;
753 yyGLRStackItem
* yyitems
;
754 yyGLRStackItem
* yynextFree
;
756 yyGLRState
* yysplitPoint
;
757 yyGLRState
* yylastDeleted
;
758 yyGLRStateSet yytops
;
761 #if YYSTACKEXPANDABLE
762 static void yyexpandGLRStack (yyGLRStack
* yystackp
);
765 static void yyFail (yyGLRStack
* yystackp
]b4_pure_formals
[, const char* yymsg
)
766 __attribute__ ((__noreturn__
));
768 yyFail (yyGLRStack
* yystackp
]b4_pure_formals
[, const char* yymsg
)
771 yyerror (]b4_yyerror_args
[yymsg
);
772 YYLONGJMP (yystackp
->yyexception_buffer
, 1);
775 static void yyMemoryExhausted (yyGLRStack
* yystackp
)
776 __attribute__ ((__noreturn__
));
778 yyMemoryExhausted (yyGLRStack
* yystackp
)
780 YYLONGJMP (yystackp
->yyexception_buffer
, 2);
783 #if YYDEBUG || YYERROR_VERBOSE
784 /** A printable representation of TOKEN. */
785 static inline const char*
786 yytokenName (yySymbol yytoken
)
788 if (yytoken
== YYEMPTY
)
791 return yytname
[yytoken
];
795 /** Fill in YYVSP[YYLOW1 .. YYLOW0-1] from the chain of states starting
796 * at YYVSP[YYLOW0].yystate.yypred. Leaves YYVSP[YYLOW1].yystate.yypred
797 * containing the pointer to the next state in the chain. */
798 static void yyfillin (yyGLRStackItem
*, int, int) __attribute__ ((__unused__
));
800 yyfillin (yyGLRStackItem
*yyvsp
, int yylow0
, int yylow1
)
804 s
= yyvsp
[yylow0
].yystate
.yypred
;
805 for (i
= yylow0
-1; i
>= yylow1
; i
-= 1)
807 YYASSERT (s
->yyresolved
);
808 yyvsp
[i
].yystate
.yyresolved
= yytrue
;
809 yyvsp
[i
].yystate
.yysemantics
.yysval
= s
->yysemantics
.yysval
;
810 yyvsp
[i
].yystate
.yyloc
= s
->yyloc
;
811 s
= yyvsp
[i
].yystate
.yypred
= s
->yypred
;
815 /* Do nothing if YYNORMAL or if *YYLOW <= YYLOW1. Otherwise, fill in
816 * YYVSP[YYLOW1 .. *YYLOW-1] as in yyfillin and set *YYLOW = YYLOW1.
817 * For convenience, always return YYLOW1. */
818 static inline int yyfill (yyGLRStackItem
*, int *, int, yybool
)
819 __attribute__ ((__unused__
));
821 yyfill (yyGLRStackItem
*yyvsp
, int *yylow
, int yylow1
, yybool yynormal
)
823 if (!yynormal
&& yylow1
< *yylow
)
825 yyfillin (yyvsp
, *yylow
, yylow1
);
831 /** Perform user action for rule number YYN, with RHS length YYRHSLEN,
832 * and top stack item YYVSP. YYLVALP points to place to put semantic
833 * value ($$), and yylocp points to place for location information
834 * (@@$). Returns yyok for normal return, yyaccept for YYACCEPT,
835 * yyerr for YYERROR, yyabort for YYABORT. */
836 /*ARGSUSED*/ static YYRESULTTAG
837 yyuserAction (yyRuleNum yyn
, int yyrhslen
, yyGLRStackItem
* yyvsp
,
839 YYLTYPE
* YYOPTIONAL_LOC (yylocp
),
843 yybool yynormal
__attribute__ ((__unused__
)) =
844 (yystackp
->yysplitPoint
== NULL
);
846 ]b4_parse_param_use
[]dnl
848 # define yyerrok (yystackp->yyerrState = 0)
850 # define YYACCEPT return yyaccept
852 # define YYABORT return yyabort
854 # define YYERROR return yyerrok, yyerr
856 # define YYRECOVERING() (yystackp->yyerrState != 0)
858 # define yyclearin (yychar = YYEMPTY)
860 # define YYFILL(N) yyfill (yyvsp, &yylow, N, yynormal)
862 # define YYBACKUP(Token, Value) \
863 return yyerror (]b4_yyerror_args[YY_("syntax error: cannot back up")), \
868 *yyvalp
= yyval_default
;
870 *yyvalp
= yyvsp
[YYFILL (1-yyrhslen
)].yystate
.yysemantics
.yysval
;
871 YYLLOC_DEFAULT ((*yylocp
), (yyvsp
- yyrhslen
), yyrhslen
);
872 ]b4_locations_if([[ yystackp
->yyerror_range
[1].yystate
.yyloc
= *yylocp
;
891 /*ARGSUSED*/ static void
892 yyuserMerge (int yyn
, YYSTYPE
* yy0
, YYSTYPE
* yy1
)
904 /* Bison grammar-table manipulation. */
906 ]b4_yydestruct_generate([b4_c_ansi_function_def
])[
908 /** Number of symbols composing the right hand side of rule #RULE. */
910 yyrhsLength (yyRuleNum yyrule
)
916 yydestroyGLRState (char const *yymsg
, yyGLRState
*yys
]b4_user_formals
[)
919 yydestruct (yymsg
, yystos
[yys
->yylrState
],
920 &yys
->yysemantics
.yysval
]b4_locations_if([, &yys
->yyloc
])[]b4_user_args
[);
926 if (yys
->yysemantics
.yyfirstVal
)
927 YYFPRINTF (stderr
, "%s unresolved ", yymsg
);
929 YYFPRINTF (stderr
, "%s incomplete ", yymsg
);
930 yy_symbol_print (stderr
, yystos
[yys
->yylrState
],
931 NULL
]b4_locations_if([, &yys
->yyloc
])[]b4_user_args
[);
932 YYFPRINTF (stderr
, "\n");
936 if (yys
->yysemantics
.yyfirstVal
)
938 yySemanticOption
*yyoption
= yys
->yysemantics
.yyfirstVal
;
941 for (yyrh
= yyoption
->yystate
, yyn
= yyrhsLength (yyoption
->yyrule
);
943 yyrh
= yyrh
->yypred
, yyn
-= 1)
944 yydestroyGLRState (yymsg
, yyrh
]b4_user_args
[);
949 /** Left-hand-side symbol for rule #RULE. */
950 static inline yySymbol
951 yylhsNonterm (yyRuleNum yyrule
)
956 #define yyis_pact_ninf(yystate) \
957 ]m4_if(m4_eval(b4_pact_ninf < b4_pact_min), [1],
959 [((yystate
) == YYPACT_NINF
)])[
961 /** True iff LR state STATE has only a default reduction (regardless
964 yyisDefaultedState (yyStateNum yystate
)
966 return yyis_pact_ninf (yypact
[yystate
]);
969 /** The default reduction for STATE, assuming it has one. */
970 static inline yyRuleNum
971 yydefaultAction (yyStateNum yystate
)
973 return yydefact
[yystate
];
976 #define yyis_table_ninf(yytable_value) \
977 ]m4_if(m4_eval(b4_table_ninf < b4_table_min), [1],
979 [((yytable_value
) == YYTABLE_NINF
)])[
981 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
983 * R < 0: Reduce on rule -R.
985 * R > 0: Shift to state R.
986 * Set *CONFLICTS to a pointer into yyconfl to 0-terminated list of
987 * conflicting reductions.
990 yygetLRActions (yyStateNum yystate
, int yytoken
,
991 int* yyaction
, const short int** yyconflicts
)
993 int yyindex
= yypact
[yystate
] + yytoken
;
994 if (yyindex
< 0 || YYLAST
< yyindex
|| yycheck
[yyindex
] != yytoken
)
996 *yyaction
= -yydefact
[yystate
];
997 *yyconflicts
= yyconfl
;
999 else if (! yyis_table_ninf (yytable
[yyindex
]))
1001 *yyaction
= yytable
[yyindex
];
1002 *yyconflicts
= yyconfl
+ yyconflp
[yyindex
];
1007 *yyconflicts
= yyconfl
+ yyconflp
[yyindex
];
1011 static inline yyStateNum
1012 yyLRgotoState (yyStateNum yystate
, yySymbol yylhs
)
1015 yyr
= yypgoto
[yylhs
- YYNTOKENS
] + yystate
;
1016 if (0 <= yyr
&& yyr
<= YYLAST
&& yycheck
[yyr
] == yystate
)
1017 return yytable
[yyr
];
1019 return yydefgoto
[yylhs
- YYNTOKENS
];
1022 static inline yybool
1023 yyisShiftAction (int yyaction
)
1025 return 0 < yyaction
;
1028 static inline yybool
1029 yyisErrorAction (int yyaction
)
1031 return yyaction
== 0;
1036 /** Return a fresh GLRStackItem. Callers should call
1037 * YY_RESERVE_GLRSTACK afterwards to make sure there is sufficient
1040 static inline yyGLRStackItem
*
1041 yynewGLRStackItem (yyGLRStack
* yystackp
, yybool yyisState
)
1043 yyGLRStackItem
* yynewItem
= yystackp
->yynextFree
;
1044 yystackp
->yyspaceLeft
-= 1;
1045 yystackp
->yynextFree
+= 1;
1046 yynewItem
->yystate
.yyisState
= yyisState
;
1050 /** Add a new semantic action that will execute the action for rule
1051 * RULENUM on the semantic values in RHS to the list of
1052 * alternative actions for STATE. Assumes that RHS comes from
1053 * stack #K of *STACKP. */
1055 yyaddDeferredAction (yyGLRStack
* yystackp
, size_t yyk
, yyGLRState
* yystate
,
1056 yyGLRState
* yyrhs
, yyRuleNum yyrule
)
1058 yySemanticOption
* yynewOption
=
1059 &yynewGLRStackItem (yystackp
, yyfalse
)->yyoption
;
1060 yynewOption
->yystate
= yyrhs
;
1061 yynewOption
->yyrule
= yyrule
;
1062 if (yystackp
->yytops
.yylookaheadNeeds
[yyk
])
1064 yynewOption
->yyrawchar
= yychar
;
1065 yynewOption
->yyval
= yylval
;
1066 yynewOption
->yyloc
= yylloc
;
1069 yynewOption
->yyrawchar
= YYEMPTY
;
1070 yynewOption
->yynext
= yystate
->yysemantics
.yyfirstVal
;
1071 yystate
->yysemantics
.yyfirstVal
= yynewOption
;
1073 YY_RESERVE_GLRSTACK (yystackp
);
1078 /** Initialize SET to a singleton set containing an empty stack. */
1080 yyinitStateSet (yyGLRStateSet
* yyset
)
1083 yyset
->yycapacity
= 16;
1084 yyset
->yystates
= (yyGLRState
**) YYMALLOC (16 * sizeof yyset
->yystates
[0]);
1085 if (! yyset
->yystates
)
1087 yyset
->yystates
[0] = NULL
;
1088 yyset
->yylookaheadNeeds
=
1089 (yybool
*) YYMALLOC (16 * sizeof yyset
->yylookaheadNeeds
[0]);
1090 if (! yyset
->yylookaheadNeeds
)
1092 YYFREE (yyset
->yystates
);
1098 static void yyfreeStateSet (yyGLRStateSet
* yyset
)
1100 YYFREE (yyset
->yystates
);
1101 YYFREE (yyset
->yylookaheadNeeds
);
1104 /** Initialize STACK to a single empty stack, with total maximum
1105 * capacity for all stacks of SIZE. */
1107 yyinitGLRStack (yyGLRStack
* yystackp
, size_t yysize
)
1109 yystackp
->yyerrState
= 0;
1111 yystackp
->yyspaceLeft
= yysize
;
1113 (yyGLRStackItem
*) YYMALLOC (yysize
* sizeof yystackp
->yynextFree
[0]);
1114 if (!yystackp
->yyitems
)
1116 yystackp
->yynextFree
= yystackp
->yyitems
;
1117 yystackp
->yysplitPoint
= NULL
;
1118 yystackp
->yylastDeleted
= NULL
;
1119 return yyinitStateSet (&yystackp
->yytops
);
1123 #if YYSTACKEXPANDABLE
1124 # define YYRELOC(YYFROMITEMS,YYTOITEMS,YYX,YYTYPE) \
1125 &((YYTOITEMS) - ((YYFROMITEMS) - (yyGLRStackItem*) (YYX)))->YYTYPE
1127 /** If STACK is expandable, extend it. WARNING: Pointers into the
1128 stack from outside should be considered invalid after this call.
1129 We always expand when there are 1 or fewer items left AFTER an
1130 allocation, so that we can avoid having external pointers exist
1131 across an allocation. */
1133 yyexpandGLRStack (yyGLRStack
* yystackp
)
1135 yyGLRStackItem
* yynewItems
;
1136 yyGLRStackItem
* yyp0
, *yyp1
;
1137 size_t yysize
, yynewSize
;
1139 yysize
= yystackp
->yynextFree
- yystackp
->yyitems
;
1140 if (YYMAXDEPTH
- YYHEADROOM
< yysize
)
1141 yyMemoryExhausted (yystackp
);
1142 yynewSize
= 2*yysize
;
1143 if (YYMAXDEPTH
< yynewSize
)
1144 yynewSize
= YYMAXDEPTH
;
1145 yynewItems
= (yyGLRStackItem
*) YYMALLOC (yynewSize
* sizeof yynewItems
[0]);
1147 yyMemoryExhausted (yystackp
);
1148 for (yyp0
= yystackp
->yyitems
, yyp1
= yynewItems
, yyn
= yysize
;
1150 yyn
-= 1, yyp0
+= 1, yyp1
+= 1)
1153 if (*(yybool
*) yyp0
)
1155 yyGLRState
* yys0
= &yyp0
->yystate
;
1156 yyGLRState
* yys1
= &yyp1
->yystate
;
1157 if (yys0
->yypred
!= NULL
)
1159 YYRELOC (yyp0
, yyp1
, yys0
->yypred
, yystate
);
1160 if (! yys0
->yyresolved
&& yys0
->yysemantics
.yyfirstVal
!= NULL
)
1161 yys1
->yysemantics
.yyfirstVal
=
1162 YYRELOC(yyp0
, yyp1
, yys0
->yysemantics
.yyfirstVal
, yyoption
);
1166 yySemanticOption
* yyv0
= &yyp0
->yyoption
;
1167 yySemanticOption
* yyv1
= &yyp1
->yyoption
;
1168 if (yyv0
->yystate
!= NULL
)
1169 yyv1
->yystate
= YYRELOC (yyp0
, yyp1
, yyv0
->yystate
, yystate
);
1170 if (yyv0
->yynext
!= NULL
)
1171 yyv1
->yynext
= YYRELOC (yyp0
, yyp1
, yyv0
->yynext
, yyoption
);
1174 if (yystackp
->yysplitPoint
!= NULL
)
1175 yystackp
->yysplitPoint
= YYRELOC (yystackp
->yyitems
, yynewItems
,
1176 yystackp
->yysplitPoint
, yystate
);
1178 for (yyn
= 0; yyn
< yystackp
->yytops
.yysize
; yyn
+= 1)
1179 if (yystackp
->yytops
.yystates
[yyn
] != NULL
)
1180 yystackp
->yytops
.yystates
[yyn
] =
1181 YYRELOC (yystackp
->yyitems
, yynewItems
,
1182 yystackp
->yytops
.yystates
[yyn
], yystate
);
1183 YYFREE (yystackp
->yyitems
);
1184 yystackp
->yyitems
= yynewItems
;
1185 yystackp
->yynextFree
= yynewItems
+ yysize
;
1186 yystackp
->yyspaceLeft
= yynewSize
- yysize
;
1191 yyfreeGLRStack (yyGLRStack
* yystackp
)
1193 YYFREE (yystackp
->yyitems
);
1194 yyfreeStateSet (&yystackp
->yytops
);
1197 /** Assuming that S is a GLRState somewhere on STACK, update the
1198 * splitpoint of STACK, if needed, so that it is at least as deep as
1201 yyupdateSplit (yyGLRStack
* yystackp
, yyGLRState
* yys
)
1203 if (yystackp
->yysplitPoint
!= NULL
&& yystackp
->yysplitPoint
> yys
)
1204 yystackp
->yysplitPoint
= yys
;
1207 /** Invalidate stack #K in STACK. */
1209 yymarkStackDeleted (yyGLRStack
* yystackp
, size_t yyk
)
1211 if (yystackp
->yytops
.yystates
[yyk
] != NULL
)
1212 yystackp
->yylastDeleted
= yystackp
->yytops
.yystates
[yyk
];
1213 yystackp
->yytops
.yystates
[yyk
] = NULL
;
1216 /** Undelete the last stack that was marked as deleted. Can only be
1217 done once after a deletion, and only when all other stacks have
1220 yyundeleteLastStack (yyGLRStack
* yystackp
)
1222 if (yystackp
->yylastDeleted
== NULL
|| yystackp
->yytops
.yysize
!= 0)
1224 yystackp
->yytops
.yystates
[0] = yystackp
->yylastDeleted
;
1225 yystackp
->yytops
.yysize
= 1;
1226 YYDPRINTF ((stderr
, "Restoring last deleted stack as stack #0.\n"));
1227 yystackp
->yylastDeleted
= NULL
;
1231 yyremoveDeletes (yyGLRStack
* yystackp
)
1235 while (yyj
< yystackp
->yytops
.yysize
)
1237 if (yystackp
->yytops
.yystates
[yyi
] == NULL
)
1241 YYDPRINTF ((stderr
, "Removing dead stacks.\n"));
1243 yystackp
->yytops
.yysize
-= 1;
1247 yystackp
->yytops
.yystates
[yyj
] = yystackp
->yytops
.yystates
[yyi
];
1248 /* In the current implementation, it's unnecessary to copy
1249 yystackp->yytops.yylookaheadNeeds[yyi] since, after
1250 yyremoveDeletes returns, the parser immediately either enters
1251 deterministic operation or shifts a token. However, it doesn't
1252 hurt, and the code might evolve to need it. */
1253 yystackp
->yytops
.yylookaheadNeeds
[yyj
] =
1254 yystackp
->yytops
.yylookaheadNeeds
[yyi
];
1257 YYDPRINTF ((stderr
, "Rename stack %lu -> %lu.\n",
1258 (unsigned long int) yyi
, (unsigned long int) yyj
));
1266 /** Shift to a new state on stack #K of STACK, corresponding to LR state
1267 * LRSTATE, at input position POSN, with (resolved) semantic value SVAL. */
1269 yyglrShift (yyGLRStack
* yystackp
, size_t yyk
, yyStateNum yylrState
,
1271 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
)
1273 yyGLRState
* yynewState
= &yynewGLRStackItem (yystackp
, yytrue
)->yystate
;
1275 yynewState
->yylrState
= yylrState
;
1276 yynewState
->yyposn
= yyposn
;
1277 yynewState
->yyresolved
= yytrue
;
1278 yynewState
->yypred
= yystackp
->yytops
.yystates
[yyk
];
1279 yynewState
->yysemantics
.yysval
= *yyvalp
;
1280 yynewState
->yyloc
= *yylocp
;
1281 yystackp
->yytops
.yystates
[yyk
] = yynewState
;
1283 YY_RESERVE_GLRSTACK (yystackp
);
1286 /** Shift stack #K of YYSTACK, to a new state corresponding to LR
1287 * state YYLRSTATE, at input position YYPOSN, with the (unresolved)
1288 * semantic value of YYRHS under the action for YYRULE. */
1290 yyglrShiftDefer (yyGLRStack
* yystackp
, size_t yyk
, yyStateNum yylrState
,
1291 size_t yyposn
, yyGLRState
* yyrhs
, yyRuleNum yyrule
)
1293 yyGLRState
* yynewState
= &yynewGLRStackItem (yystackp
, yytrue
)->yystate
;
1295 yynewState
->yylrState
= yylrState
;
1296 yynewState
->yyposn
= yyposn
;
1297 yynewState
->yyresolved
= yyfalse
;
1298 yynewState
->yypred
= yystackp
->yytops
.yystates
[yyk
];
1299 yynewState
->yysemantics
.yyfirstVal
= NULL
;
1300 yystackp
->yytops
.yystates
[yyk
] = yynewState
;
1302 /* Invokes YY_RESERVE_GLRSTACK. */
1303 yyaddDeferredAction (yystackp
, yyk
, yynewState
, yyrhs
, yyrule
);
1306 /** Pop the symbols consumed by reduction #RULE from the top of stack
1307 * #K of STACK, and perform the appropriate semantic action on their
1308 * semantic values. Assumes that all ambiguities in semantic values
1309 * have been previously resolved. Set *VALP to the resulting value,
1310 * and *LOCP to the computed location (if any). Return value is as
1311 * for userAction. */
1312 static inline YYRESULTTAG
1313 yydoAction (yyGLRStack
* yystackp
, size_t yyk
, yyRuleNum yyrule
,
1314 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1316 int yynrhs
= yyrhsLength (yyrule
);
1318 if (yystackp
->yysplitPoint
== NULL
)
1320 /* Standard special case: single stack. */
1321 yyGLRStackItem
* yyrhs
= (yyGLRStackItem
*) yystackp
->yytops
.yystates
[yyk
];
1322 YYASSERT (yyk
== 0);
1323 yystackp
->yynextFree
-= yynrhs
;
1324 yystackp
->yyspaceLeft
+= yynrhs
;
1325 yystackp
->yytops
.yystates
[0] = & yystackp
->yynextFree
[-1].yystate
;
1326 return yyuserAction (yyrule
, yynrhs
, yyrhs
,
1327 yyvalp
, yylocp
, yystackp
]b4_user_args
[);
1331 /* At present, doAction is never called in nondeterministic
1332 * mode, so this branch is never taken. It is here in
1333 * anticipation of a future feature that will allow immediate
1334 * evaluation of selected actions in nondeterministic mode. */
1337 yyGLRStackItem yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
+ 1];
1338 yys
= yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
].yystate
.yypred
1339 = yystackp
->yytops
.yystates
[yyk
];]b4_locations_if([[
1341 /* Set default location. */
1342 yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
- 1].yystate
.yyloc
= yys
->yyloc
;]])[
1343 for (yyi
= 0; yyi
< yynrhs
; yyi
+= 1)
1348 yyupdateSplit (yystackp
, yys
);
1349 yystackp
->yytops
.yystates
[yyk
] = yys
;
1350 return yyuserAction (yyrule
, yynrhs
, yyrhsVals
+ YYMAXRHS
+ YYMAXLEFT
- 1,
1351 yyvalp
, yylocp
, yystackp
]b4_user_args
[);
1356 # define YY_REDUCE_PRINT(Args)
1358 # define YY_REDUCE_PRINT(Args) \
1361 yy_reduce_print Args; \
1364 /*----------------------------------------------------------.
1365 | Report that the RULE is going to be reduced on stack #K. |
1366 `----------------------------------------------------------*/
1368 /*ARGSUSED*/ static inline void
1369 yy_reduce_print (yyGLRStack
* yystackp
, size_t yyk
, yyRuleNum yyrule
,
1370 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1372 int yynrhs
= yyrhsLength (yyrule
);
1373 yybool yynormal
__attribute__ ((__unused__
)) =
1374 (yystackp
->yysplitPoint
== NULL
);
1375 yyGLRStackItem
* yyvsp
= (yyGLRStackItem
*) yystackp
->yytops
.yystates
[yyk
];
1380 ]b4_parse_param_use
[]dnl
1381 [ YYFPRINTF (stderr
, "Reducing stack %lu by rule %d (line %lu):\n",
1382 (unsigned long int) yyk
, yyrule
- 1,
1383 (unsigned long int) yyrline
[yyrule
]);
1384 /* The symbols being reduced. */
1385 for (yyi
= 0; yyi
< yynrhs
; yyi
++)
1387 YYFPRINTF (stderr
, " $%d = ", yyi
+ 1);
1388 yy_symbol_print (stderr
,
1389 ]yystos@
{b4_rhs_data(yynrhs
, yyi
+ 1).yylrState@
}[,
1390 &]b4_rhs_value(yynrhs
, yyi
+ 1)[
1391 ]b4_locations_if([, &]b4_rhs_location(yynrhs
, yyi
+ 1))[]dnl
1393 YYFPRINTF (stderr
, "\n");
1398 /** Pop items off stack #K of STACK according to grammar rule RULE,
1399 * and push back on the resulting nonterminal symbol. Perform the
1400 * semantic action associated with RULE and store its value with the
1401 * newly pushed state, if FORCEEVAL or if STACK is currently
1402 * unambiguous. Otherwise, store the deferred semantic action with
1403 * the new state. If the new state would have an identical input
1404 * position, LR state, and predecessor to an existing state on the stack,
1405 * it is identified with that existing state, eliminating stack #K from
1406 * the STACK. In this case, the (necessarily deferred) semantic value is
1407 * added to the options for the existing state's semantic value.
1409 static inline YYRESULTTAG
1410 yyglrReduce (yyGLRStack
* yystackp
, size_t yyk
, yyRuleNum yyrule
,
1411 yybool yyforceEval
]b4_user_formals
[)
1413 size_t yyposn
= yystackp
->yytops
.yystates
[yyk
]->yyposn
;
1415 if (yyforceEval
|| yystackp
->yysplitPoint
== NULL
)
1420 YY_REDUCE_PRINT ((yystackp
, yyk
, yyrule
, &yysval
, &yyloc
]b4_user_args
[));
1421 YYCHK (yydoAction (yystackp
, yyk
, yyrule
, &yysval
,
1422 &yyloc
]b4_user_args
[));
1423 YY_SYMBOL_PRINT ("-> $$ =", yyr1
[yyrule
], &yysval
, &yyloc
);
1424 yyglrShift (yystackp
, yyk
,
1425 yyLRgotoState (yystackp
->yytops
.yystates
[yyk
]->yylrState
,
1426 yylhsNonterm (yyrule
)),
1427 yyposn
, &yysval
, &yyloc
);
1433 yyGLRState
* yys
, *yys0
= yystackp
->yytops
.yystates
[yyk
];
1434 yyStateNum yynewLRState
;
1436 for (yys
= yystackp
->yytops
.yystates
[yyk
], yyn
= yyrhsLength (yyrule
);
1442 yyupdateSplit (yystackp
, yys
);
1443 yynewLRState
= yyLRgotoState (yys
->yylrState
, yylhsNonterm (yyrule
));
1445 "Reduced stack %lu by rule #%d; action deferred. Now in state %d.\n",
1446 (unsigned long int) yyk
, yyrule
- 1, yynewLRState
));
1447 for (yyi
= 0; yyi
< yystackp
->yytops
.yysize
; yyi
+= 1)
1448 if (yyi
!= yyk
&& yystackp
->yytops
.yystates
[yyi
] != NULL
)
1450 yyGLRState
* yyp
, *yysplit
= yystackp
->yysplitPoint
;
1451 yyp
= yystackp
->yytops
.yystates
[yyi
];
1452 while (yyp
!= yys
&& yyp
!= yysplit
&& yyp
->yyposn
>= yyposn
)
1454 if (yyp
->yylrState
== yynewLRState
&& yyp
->yypred
== yys
)
1456 yyaddDeferredAction (yystackp
, yyk
, yyp
, yys0
, yyrule
);
1457 yymarkStackDeleted (yystackp
, yyk
);
1458 YYDPRINTF ((stderr
, "Merging stack %lu into stack %lu.\n",
1459 (unsigned long int) yyk
,
1460 (unsigned long int) yyi
));
1466 yystackp
->yytops
.yystates
[yyk
] = yys
;
1467 yyglrShiftDefer (yystackp
, yyk
, yynewLRState
, yyposn
, yys0
, yyrule
);
1473 yysplitStack (yyGLRStack
* yystackp
, size_t yyk
)
1475 if (yystackp
->yysplitPoint
== NULL
)
1477 YYASSERT (yyk
== 0);
1478 yystackp
->yysplitPoint
= yystackp
->yytops
.yystates
[yyk
];
1480 if (yystackp
->yytops
.yysize
>= yystackp
->yytops
.yycapacity
)
1482 yyGLRState
** yynewStates
;
1483 yybool
* yynewLookaheadNeeds
;
1487 if (yystackp
->yytops
.yycapacity
1488 > (YYSIZEMAX
/ (2 * sizeof yynewStates
[0])))
1489 yyMemoryExhausted (yystackp
);
1490 yystackp
->yytops
.yycapacity
*= 2;
1493 (yyGLRState
**) YYREALLOC (yystackp
->yytops
.yystates
,
1494 (yystackp
->yytops
.yycapacity
1495 * sizeof yynewStates
[0]));
1496 if (yynewStates
== NULL
)
1497 yyMemoryExhausted (yystackp
);
1498 yystackp
->yytops
.yystates
= yynewStates
;
1500 yynewLookaheadNeeds
=
1501 (yybool
*) YYREALLOC (yystackp
->yytops
.yylookaheadNeeds
,
1502 (yystackp
->yytops
.yycapacity
1503 * sizeof yynewLookaheadNeeds
[0]));
1504 if (yynewLookaheadNeeds
== NULL
)
1505 yyMemoryExhausted (yystackp
);
1506 yystackp
->yytops
.yylookaheadNeeds
= yynewLookaheadNeeds
;
1508 yystackp
->yytops
.yystates
[yystackp
->yytops
.yysize
]
1509 = yystackp
->yytops
.yystates
[yyk
];
1510 yystackp
->yytops
.yylookaheadNeeds
[yystackp
->yytops
.yysize
]
1511 = yystackp
->yytops
.yylookaheadNeeds
[yyk
];
1512 yystackp
->yytops
.yysize
+= 1;
1513 return yystackp
->yytops
.yysize
-1;
1516 /** True iff Y0 and Y1 represent identical options at the top level.
1517 * That is, they represent the same rule applied to RHS symbols
1518 * that produce the same terminal symbols. */
1520 yyidenticalOptions (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
)
1522 if (yyy0
->yyrule
== yyy1
->yyrule
)
1524 yyGLRState
*yys0
, *yys1
;
1526 for (yys0
= yyy0
->yystate
, yys1
= yyy1
->yystate
,
1527 yyn
= yyrhsLength (yyy0
->yyrule
);
1529 yys0
= yys0
->yypred
, yys1
= yys1
->yypred
, yyn
-= 1)
1530 if (yys0
->yyposn
!= yys1
->yyposn
)
1538 /** Assuming identicalOptions (Y0,Y1), destructively merge the
1539 * alternative semantic values for the RHS-symbols of Y1 and Y0. */
1541 yymergeOptionSets (yySemanticOption
* yyy0
, yySemanticOption
* yyy1
)
1543 yyGLRState
*yys0
, *yys1
;
1545 for (yys0
= yyy0
->yystate
, yys1
= yyy1
->yystate
,
1546 yyn
= yyrhsLength (yyy0
->yyrule
);
1548 yys0
= yys0
->yypred
, yys1
= yys1
->yypred
, yyn
-= 1)
1552 else if (yys0
->yyresolved
)
1554 yys1
->yyresolved
= yytrue
;
1555 yys1
->yysemantics
.yysval
= yys0
->yysemantics
.yysval
;
1557 else if (yys1
->yyresolved
)
1559 yys0
->yyresolved
= yytrue
;
1560 yys0
->yysemantics
.yysval
= yys1
->yysemantics
.yysval
;
1564 yySemanticOption
** yyz0p
;
1565 yySemanticOption
* yyz1
;
1566 yyz0p
= &yys0
->yysemantics
.yyfirstVal
;
1567 yyz1
= yys1
->yysemantics
.yyfirstVal
;
1568 while (YYID (yytrue
))
1570 if (yyz1
== *yyz0p
|| yyz1
== NULL
)
1572 else if (*yyz0p
== NULL
)
1577 else if (*yyz0p
< yyz1
)
1579 yySemanticOption
* yyz
= *yyz0p
;
1581 yyz1
= yyz1
->yynext
;
1582 (*yyz0p
)->yynext
= yyz
;
1584 yyz0p
= &(*yyz0p
)->yynext
;
1586 yys1
->yysemantics
.yyfirstVal
= yys0
->yysemantics
.yyfirstVal
;
1591 /** Y0 and Y1 represent two possible actions to take in a given
1592 * parsing state; return 0 if no combination is possible,
1593 * 1 if user-mergeable, 2 if Y0 is preferred, 3 if Y1 is preferred. */
1595 yypreference (yySemanticOption
* y0
, yySemanticOption
* y1
)
1597 yyRuleNum r0
= y0
->yyrule
, r1
= y1
->yyrule
;
1598 int p0
= yydprec
[r0
], p1
= yydprec
[r1
];
1602 if (yymerger
[r0
] == 0 || yymerger
[r0
] != yymerger
[r1
])
1607 if (p0
== 0 || p1
== 0)
1616 static YYRESULTTAG
yyresolveValue (yyGLRState
* yys
,
1617 yyGLRStack
* yystackp
]b4_user_formals
[);
1620 /** Resolve the previous N states starting at and including state S. If result
1621 * != yyok, some states may have been left unresolved possibly with empty
1622 * semantic option chains. Regardless of whether result = yyok, each state
1623 * has been left with consistent data so that yydestroyGLRState can be invoked
1626 yyresolveStates (yyGLRState
* yys
, int yyn
,
1627 yyGLRStack
* yystackp
]b4_user_formals
[)
1631 YYASSERT (yys
->yypred
);
1632 YYCHK (yyresolveStates (yys
->yypred
, yyn
-1, yystackp
]b4_user_args
[));
1633 if (! yys
->yyresolved
)
1634 YYCHK (yyresolveValue (yys
, yystackp
]b4_user_args
[));
1639 /** Resolve the states for the RHS of OPT, perform its user action, and return
1640 * the semantic value and location. Regardless of whether result = yyok, all
1641 * RHS states have been destroyed (assuming the user action destroys all RHS
1642 * semantic values if invoked). */
1644 yyresolveAction (yySemanticOption
* yyopt
, yyGLRStack
* yystackp
,
1645 YYSTYPE
* yyvalp
, YYLTYPE
* yylocp
]b4_user_formals
[)
1647 yyGLRStackItem yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
+ 1];
1650 YYSTYPE yylval_current
;
1651 YYLTYPE yylloc_current
;
1654 yynrhs
= yyrhsLength (yyopt
->yyrule
);
1655 yyflag
= yyresolveStates (yyopt
->yystate
, yynrhs
, yystackp
]b4_user_args
[);
1659 for (yys
= yyopt
->yystate
; yynrhs
> 0; yys
= yys
->yypred
, yynrhs
-= 1)
1660 yydestroyGLRState ("Cleanup: popping", yys
]b4_user_args
[);
1664 yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
].yystate
.yypred
= yyopt
->yystate
;]b4_locations_if([[
1666 /* Set default location. */
1667 yyrhsVals
[YYMAXRHS
+ YYMAXLEFT
- 1].yystate
.yyloc
= yyopt
->yystate
->yyloc
;]])[
1668 yychar_current
= yychar
;
1669 yylval_current
= yylval
;
1670 yylloc_current
= yylloc
;
1671 yychar
= yyopt
->yyrawchar
;
1672 yylval
= yyopt
->yyval
;
1673 yylloc
= yyopt
->yyloc
;
1674 yyflag
= yyuserAction (yyopt
->yyrule
, yynrhs
,
1675 yyrhsVals
+ YYMAXRHS
+ YYMAXLEFT
- 1,
1676 yyvalp
, yylocp
, yystackp
]b4_user_args
[);
1677 yychar
= yychar_current
;
1678 yylval
= yylval_current
;
1679 yylloc
= yylloc_current
;
1685 yyreportTree (yySemanticOption
* yyx
, int yyindent
)
1687 int yynrhs
= yyrhsLength (yyx
->yyrule
);
1690 yyGLRState
* yystates
[1 + YYMAXRHS
];
1691 yyGLRState yyleftmost_state
;
1693 for (yyi
= yynrhs
, yys
= yyx
->yystate
; 0 < yyi
; yyi
-= 1, yys
= yys
->yypred
)
1694 yystates
[yyi
] = yys
;
1697 yyleftmost_state
.yyposn
= 0;
1698 yystates
[0] = &yyleftmost_state
;
1703 if (yyx
->yystate
->yyposn
< yys
->yyposn
+ 1)
1704 YYFPRINTF (stderr
, "%*s%s -> <Rule %d, empty>\n",
1705 yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)),
1708 YYFPRINTF (stderr
, "%*s%s -> <Rule %d, tokens %lu .. %lu>\n",
1709 yyindent
, "", yytokenName (yylhsNonterm (yyx
->yyrule
)),
1710 yyx
->yyrule
- 1, (unsigned long int) (yys
->yyposn
+ 1),
1711 (unsigned long int) yyx
->yystate
->yyposn
);
1712 for (yyi
= 1; yyi
<= yynrhs
; yyi
+= 1)
1714 if (yystates
[yyi
]->yyresolved
)
1716 if (yystates
[yyi
-1]->yyposn
+1 > yystates
[yyi
]->yyposn
)
1717 YYFPRINTF (stderr
, "%*s%s <empty>\n", yyindent
+2, "",
1718 yytokenName (yystos
[yystates
[yyi
-1]->yylrState
]));
1720 YYFPRINTF (stderr
, "%*s%s <tokens %lu .. %lu>\n", yyindent
+2, "",
1721 yytokenName (yystos
[yystates
[yyi
-1]->yylrState
]),
1722 (unsigned long int) (yystates
[yyi
-1]->yyposn
+ 1),
1723 (unsigned long int) yystates
[yyi
]->yyposn
);
1726 yyreportTree (yystates
[yyi
]->yysemantics
.yyfirstVal
, yyindent
+2);
1731 /*ARGSUSED*/ static YYRESULTTAG
1732 yyreportAmbiguity (yySemanticOption
* yyx0
,
1733 yySemanticOption
* yyx1
]b4_pure_formals
[)
1739 YYFPRINTF (stderr
, "Ambiguity detected.\n");
1740 YYFPRINTF (stderr
, "Option 1,\n");
1741 yyreportTree (yyx0
, 2);
1742 YYFPRINTF (stderr
, "\nOption 2,\n");
1743 yyreportTree (yyx1
, 2);
1744 YYFPRINTF (stderr
, "\n");
1747 yyerror (]b4_yyerror_args
[YY_("syntax is ambiguous"));
1751 /** Starting at and including state S1, resolve the location for each of the
1752 * previous N1 states that is unresolved. The first semantic option of a state
1753 * is always chosen. */
1755 yyresolveLocations (yyGLRState
* yys1
, int yyn1
,
1756 yyGLRStack
*yystackp
]b4_user_formals
[)
1760 yyresolveLocations (yys1
->yypred
, yyn1
- 1, yystackp
]b4_user_args
[);
1761 if (!yys1
->yyresolved
)
1763 yySemanticOption
*yyoption
;
1764 yyGLRStackItem yyrhsloc
[1 + YYMAXRHS
];
1767 YYSTYPE yylval_current
;
1768 YYLTYPE yylloc_current
;
1769 yyoption
= yys1
->yysemantics
.yyfirstVal
;
1770 YYASSERT (yyoption
!= NULL
);
1771 yynrhs
= yyrhsLength (yyoption
->yyrule
);
1776 yyresolveLocations (yyoption
->yystate
, yynrhs
,
1777 yystackp
]b4_user_args
[);
1778 for (yys
= yyoption
->yystate
, yyn
= yynrhs
;
1780 yys
= yys
->yypred
, yyn
-= 1)
1781 yyrhsloc
[yyn
].yystate
.yyloc
= yys
->yyloc
;
1785 /* Both yyresolveAction and yyresolveLocations traverse the GSS
1786 in reverse rightmost order. It is only necessary to invoke
1787 yyresolveLocations on a subforest for which yyresolveAction
1788 would have been invoked next had an ambiguity not been
1789 detected. Thus the location of the previous state (but not
1790 necessarily the previous state itself) is guaranteed to be
1791 resolved already. */
1792 yyGLRState
*yyprevious
= yyoption
->yystate
;
1793 yyrhsloc
[0].yystate
.yyloc
= yyprevious
->yyloc
;
1795 yychar_current
= yychar
;
1796 yylval_current
= yylval
;
1797 yylloc_current
= yylloc
;
1798 yychar
= yyoption
->yyrawchar
;
1799 yylval
= yyoption
->yyval
;
1800 yylloc
= yyoption
->yyloc
;
1801 YYLLOC_DEFAULT ((yys1
->yyloc
), yyrhsloc
, yynrhs
);
1802 yychar
= yychar_current
;
1803 yylval
= yylval_current
;
1804 yylloc
= yylloc_current
;
1809 /** Resolve the ambiguity represented in state S, perform the indicated
1810 * actions, and set the semantic value of S. If result != yyok, the chain of
1811 * semantic options in S has been cleared instead or it has been left
1812 * unmodified except that redundant options may have been removed. Regardless
1813 * of whether result = yyok, S has been left with consistent data so that
1814 * yydestroyGLRState can be invoked if necessary. */
1816 yyresolveValue (yyGLRState
* yys
, yyGLRStack
* yystackp
]b4_user_formals
[)
1818 yySemanticOption
* yyoptionList
= yys
->yysemantics
.yyfirstVal
;
1819 yySemanticOption
* yybest
;
1820 yySemanticOption
** yypp
;
1824 YYLTYPE
*yylocp
= &yys
->yyloc
;
1826 yybest
= yyoptionList
;
1828 for (yypp
= &yyoptionList
->yynext
; *yypp
!= NULL
; )
1830 yySemanticOption
* yyp
= *yypp
;
1832 if (yyidenticalOptions (yybest
, yyp
))
1834 yymergeOptionSets (yybest
, yyp
);
1835 *yypp
= yyp
->yynext
;
1839 switch (yypreference (yybest
, yyp
))
1842 yyresolveLocations (yys
, 1, yystackp
]b4_user_args
[);
1843 return yyreportAmbiguity (yybest
, yyp
]b4_pure_args
[);
1855 /* This cannot happen so it is not worth a YYASSERT (yyfalse),
1856 but some compilers complain if the default case is
1860 yypp
= &yyp
->yynext
;
1866 yySemanticOption
* yyp
;
1867 int yyprec
= yydprec
[yybest
->yyrule
];
1868 yyflag
= yyresolveAction (yybest
, yystackp
, &yysval
,
1869 yylocp
]b4_user_args
[);
1871 for (yyp
= yybest
->yynext
; yyp
!= NULL
; yyp
= yyp
->yynext
)
1873 if (yyprec
== yydprec
[yyp
->yyrule
])
1875 YYSTYPE yysval_other
;
1877 yyflag
= yyresolveAction (yyp
, yystackp
, &yysval_other
,
1878 &yydummy
]b4_user_args
[);
1881 yydestruct ("Cleanup: discarding incompletely merged value for",
1882 yystos
[yys
->yylrState
],
1883 &yysval
]b4_locations_if([, yylocp
])[]b4_user_args
[);
1886 yyuserMerge (yymerger
[yyp
->yyrule
], &yysval
, &yysval_other
);
1891 yyflag
= yyresolveAction (yybest
, yystackp
, &yysval
, yylocp
]b4_user_args
[);
1895 yys
->yyresolved
= yytrue
;
1896 yys
->yysemantics
.yysval
= yysval
;
1899 yys
->yysemantics
.yyfirstVal
= NULL
;
1904 yyresolveStack (yyGLRStack
* yystackp
]b4_user_formals
[)
1906 if (yystackp
->yysplitPoint
!= NULL
)
1911 for (yyn
= 0, yys
= yystackp
->yytops
.yystates
[0];
1912 yys
!= yystackp
->yysplitPoint
;
1913 yys
= yys
->yypred
, yyn
+= 1)
1915 YYCHK (yyresolveStates (yystackp
->yytops
.yystates
[0], yyn
, yystackp
1922 yycompressStack (yyGLRStack
* yystackp
)
1924 yyGLRState
* yyp
, *yyq
, *yyr
;
1926 if (yystackp
->yytops
.yysize
!= 1 || yystackp
->yysplitPoint
== NULL
)
1929 for (yyp
= yystackp
->yytops
.yystates
[0], yyq
= yyp
->yypred
, yyr
= NULL
;
1930 yyp
!= yystackp
->yysplitPoint
;
1931 yyr
= yyp
, yyp
= yyq
, yyq
= yyp
->yypred
)
1934 yystackp
->yyspaceLeft
+= yystackp
->yynextFree
- yystackp
->yyitems
;
1935 yystackp
->yynextFree
= ((yyGLRStackItem
*) yystackp
->yysplitPoint
) + 1;
1936 yystackp
->yyspaceLeft
-= yystackp
->yynextFree
- yystackp
->yyitems
;
1937 yystackp
->yysplitPoint
= NULL
;
1938 yystackp
->yylastDeleted
= NULL
;
1942 yystackp
->yynextFree
->yystate
= *yyr
;
1944 yystackp
->yynextFree
->yystate
.yypred
= &yystackp
->yynextFree
[-1].yystate
;
1945 yystackp
->yytops
.yystates
[0] = &yystackp
->yynextFree
->yystate
;
1946 yystackp
->yynextFree
+= 1;
1947 yystackp
->yyspaceLeft
-= 1;
1952 yyprocessOneStack (yyGLRStack
* yystackp
, size_t yyk
,
1953 size_t yyposn
]b4_pure_formals
[)
1956 const short int* yyconflicts
;
1959 while (yystackp
->yytops
.yystates
[yyk
] != NULL
)
1961 yyStateNum yystate
= yystackp
->yytops
.yystates
[yyk
]->yylrState
;
1962 YYDPRINTF ((stderr
, "Stack %lu Entering state %d\n",
1963 (unsigned long int) yyk
, yystate
));
1965 YYASSERT (yystate
!= YYFINAL
);
1967 if (yyisDefaultedState (yystate
))
1969 yyrule
= yydefaultAction (yystate
);
1972 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
1973 (unsigned long int) yyk
));
1974 yymarkStackDeleted (yystackp
, yyk
);
1977 YYCHK (yyglrReduce (yystackp
, yyk
, yyrule
, yyfalse
]b4_user_args
[));
1982 yystackp
->yytops
.yylookaheadNeeds
[yyk
] = yytrue
;
1983 if (yychar
== YYEMPTY
)
1985 YYDPRINTF ((stderr
, "Reading a token: "));
1989 if (yychar
<= YYEOF
)
1991 yychar
= yytoken
= YYEOF
;
1992 YYDPRINTF ((stderr
, "Now at end of input.\n"));
1996 yytoken
= YYTRANSLATE (yychar
);
1997 YY_SYMBOL_PRINT ("Next token is", yytoken
, &yylval
, &yylloc
);
2000 yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
);
2002 while (*yyconflicts
!= 0)
2004 size_t yynewStack
= yysplitStack (yystackp
, yyk
);
2005 YYDPRINTF ((stderr
, "Splitting off stack %lu from %lu.\n",
2006 (unsigned long int) yynewStack
,
2007 (unsigned long int) yyk
));
2008 YYCHK (yyglrReduce (yystackp
, yynewStack
,
2009 *yyconflicts
, yyfalse
]b4_user_args
[));
2010 YYCHK (yyprocessOneStack (yystackp
, yynewStack
,
2011 yyposn
]b4_pure_args
[));
2015 if (yyisShiftAction (yyaction
))
2017 else if (yyisErrorAction (yyaction
))
2019 YYDPRINTF ((stderr
, "Stack %lu dies.\n",
2020 (unsigned long int) yyk
));
2021 yymarkStackDeleted (yystackp
, yyk
);
2025 YYCHK (yyglrReduce (yystackp
, yyk
, -yyaction
,
2026 yyfalse
]b4_user_args
[));
2032 /*ARGSUSED*/ static void
2033 yyreportSyntaxError (yyGLRStack
* yystackp
]b4_user_formals
[)
2035 if (yystackp
->yyerrState
== 0)
2039 yyn
= yypact
[yystackp
->yytops
.yystates
[0]->yylrState
];
2040 if (YYPACT_NINF
< yyn
&& yyn
<= YYLAST
)
2042 yySymbol yytoken
= YYTRANSLATE (yychar
);
2043 size_t yysize0
= yytnamerr (NULL
, yytokenName (yytoken
));
2044 size_t yysize
= yysize0
;
2046 yybool yysize_overflow
= yyfalse
;
2048 enum { YYERROR_VERBOSE_ARGS_MAXIMUM
= 5 };
2049 /* Internationalized format string. */
2050 const char *yyformat
= 0;
2051 /* Arguments of yyformat. */
2052 char const *yyarg
[YYERROR_VERBOSE_ARGS_MAXIMUM
];
2054 /* Start YYX at -YYN if negative to avoid negative indexes in
2056 int yyxbegin
= yyn
< 0 ? -yyn
: 0;
2058 /* Stay within bounds of both yycheck and yytname. */
2059 int yychecklim
= YYLAST
- yyn
+ 1;
2060 int yyxend
= yychecklim
< YYNTOKENS
? yychecklim
: YYNTOKENS
;
2062 /* Number of reported tokens (one for the "unexpected", one per
2067 yyarg
[yycount
++] = yytokenName (yytoken
);
2069 for (yyx
= yyxbegin
; yyx
< yyxend
; ++yyx
)
2070 if (yycheck
[yyx
+ yyn
] == yyx
&& yyx
!= YYTERROR
)
2072 if (yycount
== YYERROR_VERBOSE_ARGS_MAXIMUM
)
2078 yyarg
[yycount
++] = yytokenName (yyx
);
2079 yysize1
= yysize
+ yytnamerr (NULL
, yytokenName (yyx
));
2080 yysize_overflow
|= yysize1
< yysize
;
2086 #define YYCASE_(N, S) \
2090 YYCASE_(1, YY_("syntax error, unexpected %s"));
2091 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2092 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2093 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2094 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2098 yysize1
= yysize
+ strlen (yyformat
);
2099 yysize_overflow
|= yysize1
< yysize
;
2102 if (!yysize_overflow
)
2103 yymsg
= (char *) YYMALLOC (yysize
);
2109 while ((*yyp
= *yyformat
))
2111 if (*yyp
== '%' && yyformat
[1] == 's' && yyi
< yycount
)
2113 yyp
+= yytnamerr (yyp
, yyarg
[yyi
++]);
2122 yyerror (]b4_lyyerror_args
[yymsg
);
2127 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
2128 yyMemoryExhausted (yystackp
);
2132 #endif /* YYERROR_VERBOSE */
2133 yyerror (]b4_lyyerror_args
[YY_("syntax error"));
2138 /* Recover from a syntax error on *YYSTACKP, assuming that *YYSTACKP->YYTOKENP,
2139 yylval, and yylloc are the syntactic category, semantic value, and location
2140 of the lookahead. */
2141 /*ARGSUSED*/ static void
2142 yyrecoverSyntaxError (yyGLRStack
* yystackp
]b4_user_formals
[)
2147 if (yystackp
->yyerrState
== 3)
2148 /* We just shifted the error token and (perhaps) took some
2149 reductions. Skip tokens until we can proceed. */
2150 while (YYID (yytrue
))
2153 if (yychar
== YYEOF
)
2154 yyFail (yystackp
][]b4_lpure_args
[, NULL
);
2155 if (yychar
!= YYEMPTY
)
2156 {]b4_locations_if([[
2157 /* We throw away the lookahead, but the error range
2158 of the shifted error token must take it into account. */
2159 yyGLRState
*yys
= yystackp
->yytops
.yystates
[0];
2160 yyGLRStackItem yyerror_range
[3];
2161 yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;
2162 yyerror_range
[2].yystate
.yyloc
= yylloc
;
2163 YYLLOC_DEFAULT ((yys
->yyloc
), yyerror_range
, 2);]])[
2164 yytoken
= YYTRANSLATE (yychar
);
2165 yydestruct ("Error: discarding",
2166 yytoken
, &yylval
]b4_locations_if([, &yylloc
])[]b4_user_args
[);
2168 YYDPRINTF ((stderr
, "Reading a token: "));
2170 if (yychar
<= YYEOF
)
2172 yychar
= yytoken
= YYEOF
;
2173 YYDPRINTF ((stderr
, "Now at end of input.\n"));
2177 yytoken
= YYTRANSLATE (yychar
);
2178 YY_SYMBOL_PRINT ("Next token is", yytoken
, &yylval
, &yylloc
);
2180 yyj
= yypact
[yystackp
->yytops
.yystates
[0]->yylrState
];
2181 if (yyis_pact_ninf (yyj
))
2184 if (yyj
< 0 || YYLAST
< yyj
|| yycheck
[yyj
] != yytoken
)
2186 if (yydefact
[yystackp
->yytops
.yystates
[0]->yylrState
] != 0)
2189 else if (yytable
[yyj
] != 0 && ! yyis_table_ninf (yytable
[yyj
]))
2193 /* Reduce to one stack. */
2194 for (yyk
= 0; yyk
< yystackp
->yytops
.yysize
; yyk
+= 1)
2195 if (yystackp
->yytops
.yystates
[yyk
] != NULL
)
2197 if (yyk
>= yystackp
->yytops
.yysize
)
2198 yyFail (yystackp
][]b4_lpure_args
[, NULL
);
2199 for (yyk
+= 1; yyk
< yystackp
->yytops
.yysize
; yyk
+= 1)
2200 yymarkStackDeleted (yystackp
, yyk
);
2201 yyremoveDeletes (yystackp
);
2202 yycompressStack (yystackp
);
2204 /* Now pop stack until we find a state that shifts the error token. */
2205 yystackp
->yyerrState
= 3;
2206 while (yystackp
->yytops
.yystates
[0] != NULL
)
2208 yyGLRState
*yys
= yystackp
->yytops
.yystates
[0];
2209 yyj
= yypact
[yys
->yylrState
];
2210 if (! yyis_pact_ninf (yyj
))
2213 if (0 <= yyj
&& yyj
<= YYLAST
&& yycheck
[yyj
] == YYTERROR
2214 && yyisShiftAction (yytable
[yyj
]))
2216 /* Shift the error token having adjusted its location. */
2217 YYLTYPE yyerrloc
;]b4_locations_if([[
2218 yystackp
->yyerror_range
[2].yystate
.yyloc
= yylloc
;
2219 YYLLOC_DEFAULT (yyerrloc
, (yystackp
->yyerror_range
), 2);]])[
2220 YY_SYMBOL_PRINT ("Shifting", yystos
[yytable
[yyj
]],
2221 &yylval
, &yyerrloc
);
2222 yyglrShift (yystackp
, 0, yytable
[yyj
],
2223 yys
->yyposn
, &yylval
, &yyerrloc
);
2224 yys
= yystackp
->yytops
.yystates
[0];
2228 ]b4_locations_if([[ yystackp
->yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]])[
2229 if (yys
->yypred
!= NULL
)
2230 yydestroyGLRState ("Error: popping", yys
]b4_user_args
[);
2231 yystackp
->yytops
.yystates
[0] = yys
->yypred
;
2232 yystackp
->yynextFree
-= 1;
2233 yystackp
->yyspaceLeft
+= 1;
2235 if (yystackp
->yytops
.yystates
[0] == NULL
)
2236 yyFail (yystackp
][]b4_lpure_args
[, NULL
);
2239 #define YYCHK1(YYE) \
2249 goto yyuser_error; \
2260 ]b4_c_ansi_function_def([yyparse
], [int], b4_parse_param
)[
2264 yyGLRStack
* const yystackp
= &yystack
;
2267 YYDPRINTF ((stderr
, "Starting parse\n"));
2270 yylval
= yyval_default
;
2272 #if YYLTYPE_IS_TRIVIAL
2273 yylloc
.first_line
= yylloc
.last_line
= ]b4_location_initial_line
[;
2274 yylloc
.first_column
= yylloc
.last_column
= ]b4_location_initial_column
[;
2277 m4_ifdef([b4_initial_action
], [
2278 m4_pushdef([b4_at_dollar
], [yylloc
])dnl
2279 m4_pushdef([b4_dollar_dollar
], [yylval
])dnl
2280 /* User initialization code. */
2281 b4_user_initial_action
2282 m4_popdef([b4_dollar_dollar
])dnl
2283 m4_popdef([b4_at_dollar
])])dnl
2285 if (! yyinitGLRStack (yystackp
, YYINITDEPTH
))
2286 goto yyexhaustedlab
;
2287 switch (YYSETJMP (yystack
.yyexception_buffer
))
2290 case 1: goto yyabortlab
;
2291 case 2: goto yyexhaustedlab
;
2292 default: goto yybuglab
;
2294 yyglrShift (&yystack
, 0, 0, 0, &yylval
, &yylloc
);
2297 while (YYID (yytrue
))
2299 /* For efficiency, we have two loops, the first of which is
2300 specialized to deterministic operation (single stack, no
2301 potential ambiguity). */
2303 while (YYID (yytrue
))
2307 const short int* yyconflicts
;
2309 yyStateNum yystate
= yystack
.yytops
.yystates
[0]->yylrState
;
2310 YYDPRINTF ((stderr
, "Entering state %d\n", yystate
));
2311 if (yystate
== YYFINAL
)
2313 if (yyisDefaultedState (yystate
))
2315 yyrule
= yydefaultAction (yystate
);
2318 ]b4_locations_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= yylloc
;]])[
2319 yyreportSyntaxError (&yystack
]b4_user_args
[);
2322 YYCHK1 (yyglrReduce (&yystack
, 0, yyrule
, yytrue
]b4_user_args
[));
2327 if (yychar
== YYEMPTY
)
2329 YYDPRINTF ((stderr
, "Reading a token: "));
2333 if (yychar
<= YYEOF
)
2335 yychar
= yytoken
= YYEOF
;
2336 YYDPRINTF ((stderr
, "Now at end of input.\n"));
2340 yytoken
= YYTRANSLATE (yychar
);
2341 YY_SYMBOL_PRINT ("Next token is", yytoken
, &yylval
, &yylloc
);
2344 yygetLRActions (yystate
, yytoken
, &yyaction
, &yyconflicts
);
2345 if (*yyconflicts
!= 0)
2347 if (yyisShiftAction (yyaction
))
2349 YY_SYMBOL_PRINT ("Shifting", yytoken
, &yylval
, &yylloc
);
2352 yyglrShift (&yystack
, 0, yyaction
, yyposn
, &yylval
, &yylloc
);
2353 if (0 < yystack
.yyerrState
)
2354 yystack
.yyerrState
-= 1;
2356 else if (yyisErrorAction (yyaction
))
2358 ]b4_locations_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= yylloc
;]])[
2359 yyreportSyntaxError (&yystack
]b4_user_args
[);
2363 YYCHK1 (yyglrReduce (&yystack
, 0, -yyaction
, yytrue
]b4_user_args
[));
2367 while (YYID (yytrue
))
2369 yySymbol yytoken_to_shift
;
2372 for (yys
= 0; yys
< yystack
.yytops
.yysize
; yys
+= 1)
2373 yystackp
->yytops
.yylookaheadNeeds
[yys
] = yychar
!= YYEMPTY
;
2375 /* yyprocessOneStack returns one of three things:
2377 - An error flag. If the caller is yyprocessOneStack, it
2378 immediately returns as well. When the caller is finally
2379 yyparse, it jumps to an error label via YYCHK1.
2381 - yyok, but yyprocessOneStack has invoked yymarkStackDeleted
2382 (&yystack, yys), which sets the top state of yys to NULL. Thus,
2383 yyparse's following invocation of yyremoveDeletes will remove
2386 - yyok, when ready to shift a token.
2388 Except in the first case, yyparse will invoke yyremoveDeletes and
2389 then shift the next token onto all remaining stacks. This
2390 synchronization of the shift (that is, after all preceding
2391 reductions on all stacks) helps prevent double destructor calls
2392 on yylval in the event of memory exhaustion. */
2394 for (yys
= 0; yys
< yystack
.yytops
.yysize
; yys
+= 1)
2395 YYCHK1 (yyprocessOneStack (&yystack
, yys
, yyposn
]b4_lpure_args
[));
2396 yyremoveDeletes (&yystack
);
2397 if (yystack
.yytops
.yysize
== 0)
2399 yyundeleteLastStack (&yystack
);
2400 if (yystack
.yytops
.yysize
== 0)
2401 yyFail (&yystack
][]b4_lpure_args
[, YY_("syntax error"));
2402 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2403 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2404 ]b4_locations_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= yylloc
;]])[
2405 yyreportSyntaxError (&yystack
]b4_user_args
[);
2409 /* If any yyglrShift call fails, it will fail after shifting. Thus,
2410 a copy of yylval will already be on stack 0 in the event of a
2411 failure in the following loop. Thus, yychar is set to YYEMPTY
2412 before the loop to make sure the user destructor for yylval isn't
2414 yytoken_to_shift
= YYTRANSLATE (yychar
);
2417 for (yys
= 0; yys
< yystack
.yytops
.yysize
; yys
+= 1)
2420 const short int* yyconflicts
;
2421 yyStateNum yystate
= yystack
.yytops
.yystates
[yys
]->yylrState
;
2422 yygetLRActions (yystate
, yytoken_to_shift
, &yyaction
,
2424 /* Note that yyconflicts were handled by yyprocessOneStack. */
2425 YYDPRINTF ((stderr
, "On stack %lu, ", (unsigned long int) yys
));
2426 YY_SYMBOL_PRINT ("shifting", yytoken_to_shift
, &yylval
, &yylloc
);
2427 yyglrShift (&yystack
, yys
, yyaction
, yyposn
,
2429 YYDPRINTF ((stderr
, "Stack %lu now in state #%d\n",
2430 (unsigned long int) yys
,
2431 yystack
.yytops
.yystates
[yys
]->yylrState
));
2434 if (yystack
.yytops
.yysize
== 1)
2436 YYCHK1 (yyresolveStack (&yystack
]b4_user_args
[));
2437 YYDPRINTF ((stderr
, "Returning to deterministic operation.\n"));
2438 yycompressStack (&yystack
);
2444 yyrecoverSyntaxError (&yystack
]b4_user_args
[);
2445 yyposn
= yystack
.yytops
.yystates
[0]->yyposn
;
2461 yyerror (]b4_lyyerror_args
[YY_("memory exhausted"));
2466 if (yychar
!= YYEMPTY
)
2467 yydestruct ("Cleanup: discarding lookahead",
2468 YYTRANSLATE (yychar
),
2469 &yylval
]b4_locations_if([, &yylloc
])[]b4_user_args
[);
2471 /* If the stack is well-formed, pop the stack until it is empty,
2472 destroying its entries as we go. But free the stack regardless
2473 of whether it is well-formed. */
2474 if (yystack
.yyitems
)
2476 yyGLRState
** yystates
= yystack
.yytops
.yystates
;
2479 size_t yysize
= yystack
.yytops
.yysize
;
2481 for (yyk
= 0; yyk
< yysize
; yyk
+= 1)
2484 while (yystates
[yyk
])
2486 yyGLRState
*yys
= yystates
[yyk
];
2487 ]b4_locations_if([[ yystack
.yyerror_range
[1].yystate
.yyloc
= yys
->yyloc
;]]
2488 )[ if (yys
->yypred
!= NULL
)
2489 yydestroyGLRState ("Cleanup: popping", yys
]b4_user_args
[);
2490 yystates
[yyk
] = yys
->yypred
;
2491 yystack
.yynextFree
-= 1;
2492 yystack
.yyspaceLeft
+= 1;
2497 yyfreeGLRStack (&yystack
);
2500 /* Make sure YYID is used. */
2501 return YYID (yyresult
);
2504 /* DEBUGGING ONLY */
2506 static void yypstack (yyGLRStack
* yystackp
, size_t yyk
)
2507 __attribute__ ((__unused__
));
2508 static void yypdumpstack (yyGLRStack
* yystackp
) __attribute__ ((__unused__
));
2511 yy_yypstack (yyGLRState
* yys
)
2515 yy_yypstack (yys
->yypred
);
2516 YYFPRINTF (stderr
, " -> ");
2518 YYFPRINTF (stderr
, "%d@@%lu", yys
->yylrState
,
2519 (unsigned long int) yys
->yyposn
);
2523 yypstates (yyGLRState
* yyst
)
2526 YYFPRINTF (stderr
, "<null>");
2529 YYFPRINTF (stderr
, "\n");
2533 yypstack (yyGLRStack
* yystackp
, size_t yyk
)
2535 yypstates (yystackp
->yytops
.yystates
[yyk
]);
2538 #define YYINDEX(YYX) \
2539 ((YYX) == NULL ? -1 : (yyGLRStackItem*) (YYX) - yystackp->yyitems)
2543 yypdumpstack (yyGLRStack
* yystackp
)
2545 yyGLRStackItem
* yyp
;
2547 for (yyp
= yystackp
->yyitems
; yyp
< yystackp
->yynextFree
; yyp
+= 1)
2549 YYFPRINTF (stderr
, "%3lu. ",
2550 (unsigned long int) (yyp
- yystackp
->yyitems
));
2551 if (*(yybool
*) yyp
)
2553 YYFPRINTF (stderr
, "Res: %d, LR State: %d, posn: %lu, pred: %ld",
2554 yyp
->yystate
.yyresolved
, yyp
->yystate
.yylrState
,
2555 (unsigned long int) yyp
->yystate
.yyposn
,
2556 (long int) YYINDEX (yyp
->yystate
.yypred
));
2557 if (! yyp
->yystate
.yyresolved
)
2558 YYFPRINTF (stderr
, ", firstVal: %ld",
2559 (long int) YYINDEX (yyp
->yystate
2560 .yysemantics
.yyfirstVal
));
2564 YYFPRINTF (stderr
, "Option. rule: %d, state: %ld, next: %ld",
2565 yyp
->yyoption
.yyrule
- 1,
2566 (long int) YYINDEX (yyp
->yyoption
.yystate
),
2567 (long int) YYINDEX (yyp
->yyoption
.yynext
));
2569 YYFPRINTF (stderr
, "\n");
2571 YYFPRINTF (stderr
, "Tops:");
2572 for (yyi
= 0; yyi
< yystackp
->yytops
.yysize
; yyi
+= 1)
2573 YYFPRINTF (stderr
, "%lu: %ld; ", (unsigned long int) yyi
,
2574 (long int) YYINDEX (yystackp
->yytops
.yystates
[yyi
]));
2575 YYFPRINTF (stderr
, "\n");
2580 dnl glr
.cc produces its own header
.
2582 m4_if(b4_skeleton
, ["glr.c"],
2584 [@
output(b4_spec_defines_file@
)@
2585 b4_copyright([Skeleton interface
for Bison GLR parsers in C
],
2586 [2002, 2003, 2004, 2005, 2006, 2007, 2008])
2588 b4_shared_declarations
2591 [[extern YYSTYPE
]b4_prefix
[lval
;]])
2593 b4_locations_if([b4_pure_if([],
2594 [extern YYLTYPE
]b4_prefix
[lloc
;])